From b34f15bf5a10ec31ce9000aafa848324a4b52061 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Sun, 10 May 2015 22:37:44 +0200 Subject: [PATCH 001/504] Refactor RaceLogTrackingDeviceMappingsDialog --- ...stractLogTrackingDeviceMappingsDialog.java | 223 ++++++++++ .../RaceLogTrackingDeviceMappingsDialog.java | 410 +++++------------- .../RaceLogTrackingEventManagementPanel.java | 3 + 3 files changed, 344 insertions(+), 292 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogTrackingDeviceMappingsDialog.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogTrackingDeviceMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogTrackingDeviceMappingsDialog.java new file mode 100644 index 00000000000..75eb78cfbf4 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogTrackingDeviceMappingsDialog.java @@ -0,0 +1,223 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.moxieapps.gwt.highcharts.client.Axis; +import org.moxieapps.gwt.highcharts.client.AxisTitle; +import org.moxieapps.gwt.highcharts.client.Chart; +import org.moxieapps.gwt.highcharts.client.Global; +import org.moxieapps.gwt.highcharts.client.Highcharts; +import org.moxieapps.gwt.highcharts.client.Legend; +import org.moxieapps.gwt.highcharts.client.Point; +import org.moxieapps.gwt.highcharts.client.Series; +import org.moxieapps.gwt.highcharts.client.ToolTip; +import org.moxieapps.gwt.highcharts.client.ToolTipData; +import org.moxieapps.gwt.highcharts.client.ToolTipFormatter; +import org.moxieapps.gwt.highcharts.client.events.PointMouseOverEvent; +import org.moxieapps.gwt.highcharts.client.events.PointMouseOverEventHandler; +import org.moxieapps.gwt.highcharts.client.plotOptions.SeriesPlotOptions; + +import com.google.gwt.cell.client.FieldUpdater; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.json.client.JSONObject; +import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Panel; +import com.google.gwt.view.client.CellPreviewEvent; +import com.sap.sailing.gwt.ui.adminconsole.DeviceMappingTableWrapper.FilterChangedHandler; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; +import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO; +import com.sap.sailing.gwt.ui.shared.MarkDTO; +import com.sap.sse.gwt.client.ErrorReporter; + +public abstract class AbstractLogTrackingDeviceMappingsDialog extends AbstractSaveDialog { + public static final double PERCENTAGE_OF_TIMESPAN_TO_EXTEND_OPEN_ENDS = 0.1; + public static final String FIELD_INDEX = "index"; + public static final int CHART_WIDTH = 500; + public static final String SERIES_COLOR = "#fcb913"; + + List mappings = new ArrayList(); + DeviceMappingTableWrapper deviceMappingTable; + + private Point[] data; + + private Date latest; + private Date earliest; + + private Chart chart; + + public AbstractLogTrackingDeviceMappingsDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages, + final ErrorReporter errorReporter) { + super(sailingService, stringMessages, errorReporter, false); + setupUi(); + + deviceMappingTable = new DeviceMappingTableWrapper(sailingService, stringMessages, errorReporter); + + deviceMappingTable.addFilterChangedHandler(new FilterChangedHandler() { + @Override + public void onFilterChanged(List filteredList) { + mappings = filteredList; + updateChart(); + } + }); + deviceMappingTable.getTable().addCellPreviewHandler(new CellPreviewEvent.Handler() { + @Override + public void onCellPreview(CellPreviewEvent event) { + int i = mappings.indexOf(event.getValue()); + chart.getSeries()[0].getPoints()[i].select(true, false); + } + }); + ImagesBarColumn actionCol = + new ImagesBarColumn( + new RaceLogTrackingDeviceMappingsImagesBarCell(stringMessages)); + actionCol.setFieldUpdater(getActionColFieldUpdater()); + deviceMappingTable.getTable().addColumn(actionCol, stringMessages.actions()); + + HorizontalPanel panel = new HorizontalPanel(); + mainPanel.add(panel); + + chart = new Chart() + .setType(Series.Type.COLUMN_RANGE) + .setChartTitleText(stringMessages.deviceMappings()) + .setLegend(new Legend().setEnabled(false)) + .setInverted(true); + + chart.setSeriesPlotOptions(new SeriesPlotOptions().setPointMouseOverEventHandler(new PointMouseOverEventHandler() { + @Override + public boolean onMouseOver(PointMouseOverEvent pointMouseOverEvent) { + int i = (int) pointMouseOverEvent.getXAsLong(); + deviceMappingTable.getSelectionModel().setSelected(mappings.get(i), true); + chart.getSeries()[0].getPoints()[i].select(true, false); + return true; + } + }).setColor(SERIES_COLOR)); + + Highcharts.setOptions( + new Highcharts.Options().setGlobal( + new Global() + .setUseUTC(false) + )); + + chart.getXAxis().setOption("labels/enabled", false) + .setGridLineWidth(0) + .setMinorGridLineWidth(0); + + chart.getYAxis() + .setAxisTitle(new AxisTitle().setText(stringMessages.time())) + .setType(Axis.Type.DATE_TIME) + .setGridLineWidth(0) + .setMinorGridLineWidth(0); + + chart.setWidth(CHART_WIDTH + "px"); + chart.setHeight("400px"); + + chart.setToolTip(new ToolTip().setFormatter(new ToolTipFormatter() { + @Override + public String format(ToolTipData toolTipData) { + int index = (int) toolTipData.getXAsLong(); + DeviceMappingDTO mapping = mappings.get(index); + String itemType = mapping.mappedTo instanceof MarkDTO ? stringMessages.mark() : stringMessages.competitor(); + + return "" + stringMessages.device() + ": " + mapping.deviceIdentifier.deviceType + " - " + mapping.deviceIdentifier.deviceId + "
" + + "" + stringMessages.mappedTo() + ": " + itemType + " - " + mapping.mappedTo + "
" + + "" + stringMessages.from() + ": " + DateAndTimeFormatterUtil.formatDateAndTime(mapping.from) + "
" + + "" + stringMessages.to() + ": " + DateAndTimeFormatterUtil.formatDateAndTime(mapping.to); + } + })); + + panel.add(chart); + panel.add(deviceMappingTable); + + center(); + } + + protected abstract FieldUpdater getActionColFieldUpdater(); + + @Override + protected void addButtons(Panel buttonPanel) { + Button addCompetitorButton = new Button(stringMessages.add()); + addCompetitorButton.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + addMapping(); + } + }); + buttonPanel.add(addCompetitorButton); + + Button importBtn = new Button(stringMessages.importFixes()); + importBtn.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + importFixes(); + } + }); + buttonPanel.add(importBtn); + + super.addButtons(buttonPanel); + } + + @Override + protected void save() { + // TODO Auto-generated method stub + + } + + void updateChart() { + earliest = new Date(Long.MAX_VALUE); + latest = new Date(Long.MIN_VALUE); + for (DeviceMappingDTO mapping : mappings) { + updateExtremes(mapping); + } + + data = new Point[mappings.size()]; + long earliestMillis = earliest.getTime(); + long latestMillis = latest.getTime(); + long range = latestMillis - earliestMillis; + long extension = (long) (range * PERCENTAGE_OF_TIMESPAN_TO_EXTEND_OPEN_ENDS); + long yMin = earliestMillis - extension; + long yMax = latestMillis + extension; + + int i = 0; + for (DeviceMappingDTO mapping : mappings) { + JSONObject userData = new JSONObject(); + userData.put(FIELD_INDEX, userData); + + long from = mapping.from == null ? yMin - range : mapping.from.getTime(); + long to = mapping.to == null ? yMax + range : mapping.to.getTime(); + + data[i] = new Point(i, from, to); + + i++; + } + + chart.removeAllSeries(false); + + chart.addSeries(chart.createSeries() + .setName(stringMessages.deviceMappings()) + .setPoints(data)); + + chart.getYAxis().setExtremes(yMin, yMax); + } + + private void updateExtremes(DeviceMappingDTO mapping) { + if (mapping.from != null && earliest.after(mapping.from)) earliest = mapping.from; + if (mapping.to != null && latest.before(mapping.to)) latest = mapping.to; + if (mapping.to != null && earliest.after(mapping.to)) earliest = mapping.to; + if (mapping.from != null && latest.before(mapping.from)) latest = mapping.from; + } + + protected abstract void refresh(); + + protected abstract void showAddMappingDialog(DeviceMappingDTO mapping); + + private void addMapping() { + showAddMappingDialog(null); + } + + protected abstract void importFixes(); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java index b7253e36eb9..fecce20cbbb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java @@ -1,112 +1,143 @@ package com.sap.sailing.gwt.ui.adminconsole; -import java.util.ArrayList; import java.util.Collection; -import java.util.Date; import java.util.List; -import org.moxieapps.gwt.highcharts.client.Axis; -import org.moxieapps.gwt.highcharts.client.AxisTitle; -import org.moxieapps.gwt.highcharts.client.Chart; -import org.moxieapps.gwt.highcharts.client.Global; -import org.moxieapps.gwt.highcharts.client.Highcharts; -import org.moxieapps.gwt.highcharts.client.Legend; -import org.moxieapps.gwt.highcharts.client.Point; -import org.moxieapps.gwt.highcharts.client.Series; -import org.moxieapps.gwt.highcharts.client.ToolTip; -import org.moxieapps.gwt.highcharts.client.ToolTipData; -import org.moxieapps.gwt.highcharts.client.ToolTipFormatter; -import org.moxieapps.gwt.highcharts.client.events.PointMouseOverEvent; -import org.moxieapps.gwt.highcharts.client.events.PointMouseOverEventHandler; -import org.moxieapps.gwt.highcharts.client.plotOptions.SeriesPlotOptions; - import com.google.gwt.cell.client.FieldUpdater; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.json.client.JSONObject; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.HorizontalPanel; -import com.google.gwt.user.client.ui.Panel; -import com.google.gwt.view.client.CellPreviewEvent; -import com.sap.sailing.gwt.ui.adminconsole.DeviceMappingTableWrapper.FilterChangedHandler; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO; -import com.sap.sailing.gwt.ui.shared.MarkDTO; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog; -public class RaceLogTrackingDeviceMappingsDialog extends RaceLogTrackingDialog { - public static final double PERCENTAGE_OF_TIMESPAN_TO_EXTEND_OPEN_ENDS = 0.1; - public static final String FIELD_INDEX = "index"; - public static final int CHART_WIDTH = 500; - public static final String SERIES_COLOR = "#fcb913"; - - private List mappings = new ArrayList(); - - private DeviceMappingTableWrapper deviceMappingTable; - - private Point[] data; - - private Date latest; - private Date earliest; - - private Chart chart; - - public RaceLogTrackingDeviceMappingsDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages, - final ErrorReporter errorReporter, final String leaderboardName, +public class RaceLogTrackingDeviceMappingsDialog extends AbstractLogTrackingDeviceMappingsDialog { + protected String leaderboardName; + protected String raceColumnName; + protected String fleetName; + + public RaceLogTrackingDeviceMappingsDialog(final SailingServiceAsync sailingService, + final StringMessages stringMessages, final ErrorReporter errorReporter, final String leaderboardName, final String raceColumnName, final String fleetName) { - super(sailingService, stringMessages, errorReporter, leaderboardName, raceColumnName, fleetName, false); - setupUi(); + + super(sailingService, stringMessages, errorReporter); + this.leaderboardName = leaderboardName; + this.raceColumnName = raceColumnName; + this.fleetName = fleetName; - deviceMappingTable = new DeviceMappingTableWrapper(sailingService, stringMessages, errorReporter); - - deviceMappingTable.addFilterChangedHandler(new FilterChangedHandler() { - @Override - public void onFilterChanged(List filteredList) { - mappings = filteredList; - updateChart(); - } - }); - deviceMappingTable.getTable().addCellPreviewHandler(new CellPreviewEvent.Handler() { - @Override - public void onCellPreview(CellPreviewEvent event) { - int i = mappings.indexOf(event.getValue()); - chart.getSeries()[0].getPoints()[i].select(true, false); - } - }); - ImagesBarColumn actionCol = - new ImagesBarColumn( - new RaceLogTrackingDeviceMappingsImagesBarCell(stringMessages)); - actionCol.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, final DeviceMappingDTO dto, String value) { - if (RaceLogTrackingDeviceMappingsImagesBarCell.ACTION_CLOSE.equals(value)) { - new SetTimePointDialog(stringMessages, stringMessages.setClosingTimePoint(), new DataEntryDialog.DialogCallback() { - @Override - public void ok(Date editedObject) { - sailingService.closeOpenEndedDeviceMapping(leaderboardName, raceColumnName, fleetName, - dto, editedObject, new AsyncCallback() { + refresh(); + } + + @Override + protected void refresh() { + sailingService.getDeviceMappingsFromLogHierarchy(leaderboardName, raceColumnName, fleetName, + new AsyncCallback>() { + @Override + public void onSuccess(List result) { + mappings = result; + + updateChart(); + deviceMappingTable.refresh(mappings); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not load mappings for marks: " + caught.getMessage()); + } + }); + } + + @Override + protected void showAddMappingDialog(DeviceMappingDTO mapping) { + new AddDeviceMappingToRaceLogDialog(sailingService, errorReporter, stringMessages, leaderboardName, + raceColumnName, fleetName, new DataEntryDialog.DialogCallback() { + @Override + public void ok(final DeviceMappingDTO mapping) { + sailingService.addDeviceMappingToRaceLog(leaderboardName, raceColumnName, fleetName, mapping, + new AsyncCallback() { + @Override + public void onSuccess(Void result) { + refresh(); + } + + @Override + public void onFailure(Throwable caught) { + showAddMappingDialog(mapping); + errorReporter.reportError("Could not add mapping: " + caught.getMessage()); + } + }); + } + + @Override + public void cancel() { + refresh(); + } + }, mapping).show(); + } + + @Override + protected void importFixes() { + new ImportFixesAndAddMappingsDialog(sailingService, errorReporter, stringMessages, leaderboardName, + raceColumnName, fleetName, new DataEntryDialog.DialogCallback>() { + + @Override + public void ok(Collection editedObject) { + for (DeviceMappingDTO mapping : editedObject) { + sailingService.addDeviceMappingToRaceLog(leaderboardName, raceColumnName, fleetName, + mapping, new AsyncCallback() { @Override public void onSuccess(Void result) { refresh(); } - + @Override public void onFailure(Throwable caught) { - errorReporter.reportError("Could not close open ended mapping: " + caught.getMessage()); + errorReporter.reportError(caught.getMessage()); } }); } + } - @Override - public void cancel() {} - }).show(); + @Override + public void cancel() { + } + }).show(); + } + + @Override + protected FieldUpdater getActionColFieldUpdater() { + + return new FieldUpdater() { + + @Override + public void update(int index, final DeviceMappingDTO dto, String value) { + if (RaceLogTrackingDeviceMappingsImagesBarCell.ACTION_CLOSE.equals(value)) { + new SetTimePointDialog(stringMessages, stringMessages.setClosingTimePoint(), + new DataEntryDialog.DialogCallback() { + @Override + public void ok(java.util.Date editedObject) { + sailingService.closeOpenEndedDeviceMapping(leaderboardName, raceColumnName, + fleetName, dto, editedObject, new AsyncCallback() { + @Override + public void onSuccess(Void result) { + refresh(); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not close open ended mapping: " + + caught.getMessage()); + } + }); + } + + @Override + public void cancel() { + } + }).show(); } else if (RaceLogTrackingDeviceMappingsImagesBarCell.ACTION_REMOVE.equals(value)) { - sailingService.revokeRaceAndRegattaLogEvents(leaderboardName, raceColumnName, fleetName, dto.originalRaceLogEventIds, - new AsyncCallback() { + sailingService.revokeRaceAndRegattaLogEvents(leaderboardName, raceColumnName, fleetName, + dto.originalRaceLogEventIds, new AsyncCallback() { @Override public void onFailure(Throwable caught) { errorReporter.reportError("Could not remove mappings: " + caught.getMessage()); @@ -116,216 +147,11 @@ public class RaceLogTrackingDeviceMappingsDialog extends RaceLogTrackingDialog { public void onSuccess(Void result) { refresh(); } - - }); + + }); } - } - }); - deviceMappingTable.getTable().addColumn(actionCol, stringMessages.actions()); - - HorizontalPanel panel = new HorizontalPanel(); - mainPanel.add(panel); - - chart = new Chart() - .setType(Series.Type.COLUMN_RANGE) - .setChartTitleText(stringMessages.deviceMappings()) - .setLegend(new Legend().setEnabled(false)) - .setInverted(true); - - chart.setSeriesPlotOptions(new SeriesPlotOptions().setPointMouseOverEventHandler(new PointMouseOverEventHandler() { - @Override - public boolean onMouseOver(PointMouseOverEvent pointMouseOverEvent) { - int i = (int) pointMouseOverEvent.getXAsLong(); - deviceMappingTable.getSelectionModel().setSelected(mappings.get(i), true); - chart.getSeries()[0].getPoints()[i].select(true, false); - return true; - } - }).setColor(SERIES_COLOR)); - - Highcharts.setOptions( - new Highcharts.Options().setGlobal( - new Global() - .setUseUTC(false) - )); - - chart.getXAxis().setOption("labels/enabled", false) - .setGridLineWidth(0) - .setMinorGridLineWidth(0); - - chart.getYAxis() - .setAxisTitle(new AxisTitle().setText(stringMessages.time())) - .setType(Axis.Type.DATE_TIME) - .setGridLineWidth(0) - .setMinorGridLineWidth(0); - chart.setWidth(CHART_WIDTH + "px"); - chart.setHeight("400px"); - - chart.setToolTip(new ToolTip().setFormatter(new ToolTipFormatter() { - @Override - public String format(ToolTipData toolTipData) { - int index = (int) toolTipData.getXAsLong(); - DeviceMappingDTO mapping = mappings.get(index); - String itemType = mapping.mappedTo instanceof MarkDTO ? stringMessages.mark() : stringMessages.competitor(); - - return "" + stringMessages.device() + ": " + mapping.deviceIdentifier.deviceType + " - " + mapping.deviceIdentifier.deviceId + "
" + - "" + stringMessages.mappedTo() + ": " + itemType + " - " + mapping.mappedTo + "
" + - "" + stringMessages.from() + ": " + DateAndTimeFormatterUtil.formatDateAndTime(mapping.from) + "
" + - "" + stringMessages.to() + ": " + DateAndTimeFormatterUtil.formatDateAndTime(mapping.to); } - })); - - panel.add(chart); - panel.add(deviceMappingTable); - - refresh(); - center(); + }; } - - @Override - protected void addButtons(Panel buttonPanel) { - Button addCompetitorButton = new Button(stringMessages.add()); - addCompetitorButton.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - addMapping(); - } - }); - buttonPanel.add(addCompetitorButton); - - Button importBtn = new Button(stringMessages.importFixes()); - importBtn.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - importFixes(); - } - }); - buttonPanel.add(importBtn); - - super.addButtons(buttonPanel); - } - - @Override - protected void save() { - // TODO Auto-generated method stub - - } - - private void updateChart() { - earliest = new Date(Long.MAX_VALUE); - latest = new Date(Long.MIN_VALUE); - for (DeviceMappingDTO mapping : mappings) { - updateExtremes(mapping); - } - - data = new Point[mappings.size()]; - long earliestMillis = earliest.getTime(); - long latestMillis = latest.getTime(); - long range = latestMillis - earliestMillis; - long extension = (long) (range * PERCENTAGE_OF_TIMESPAN_TO_EXTEND_OPEN_ENDS); - long yMin = earliestMillis - extension; - long yMax = latestMillis + extension; - - int i = 0; - for (DeviceMappingDTO mapping : mappings) { - JSONObject userData = new JSONObject(); - userData.put(FIELD_INDEX, userData); - - long from = mapping.from == null ? yMin - range : mapping.from.getTime(); - long to = mapping.to == null ? yMax + range : mapping.to.getTime(); - - data[i] = new Point(i, from, to); - - i++; - } - - chart.removeAllSeries(false); - - chart.addSeries(chart.createSeries() - .setName(stringMessages.deviceMappings()) - .setPoints(data)); - - chart.getYAxis().setExtremes(yMin, yMax); - } - - private void updateExtremes(DeviceMappingDTO mapping) { - if (mapping.from != null && earliest.after(mapping.from)) earliest = mapping.from; - if (mapping.to != null && latest.before(mapping.to)) latest = mapping.to; - if (mapping.to != null && earliest.after(mapping.to)) earliest = mapping.to; - if (mapping.from != null && latest.before(mapping.from)) latest = mapping.from; - } - - private void refresh() { - sailingService.getDeviceMappingsFromLogHierarchy(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { - @Override - public void onSuccess(List result) { - mappings = result; - - updateChart(); - deviceMappingTable.refresh(mappings); - } - - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not load mappings for marks: " + caught.getMessage()); - } - }); - } - - private void showAddMappingDialog(DeviceMappingDTO mapping) { - new AddDeviceMappingToRaceLogDialog(sailingService, errorReporter, stringMessages, - leaderboardName, raceColumnName, fleetName, new DataEntryDialog.DialogCallback() { - @Override - public void ok(final DeviceMappingDTO mapping) { - sailingService.addDeviceMappingToRaceLog(leaderboardName, raceColumnName, fleetName, mapping, new AsyncCallback() { - @Override - public void onSuccess(Void result) { - refresh(); - } - - @Override - public void onFailure(Throwable caught) { - showAddMappingDialog(mapping); - errorReporter.reportError("Could not add mapping: " + caught.getMessage()); - } - }); - } - - @Override - public void cancel() { - refresh(); - } - }, mapping).show(); - } - - private void addMapping() { - showAddMappingDialog(null); - } - - private void importFixes() { - new ImportFixesAndAddMappingsDialog(sailingService, errorReporter, stringMessages, - leaderboardName, raceColumnName, fleetName, new DataEntryDialog.DialogCallback>() { - - @Override - public void ok(Collection editedObject) { - for (DeviceMappingDTO mapping : editedObject) { - sailingService.addDeviceMappingToRaceLog(leaderboardName, raceColumnName, fleetName, mapping, - new AsyncCallback() { - @Override - public void onSuccess(Void result) { - refresh(); - } - - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError(caught.getMessage()); - } - }); - } - } - - @Override - public void cancel() {} - }).show(); - } -} +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java index 704a8fab902..23b6c1769af 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java @@ -136,8 +136,11 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf } }).show(); } else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_MAP_DEVICES.equals(value)) { + + new AddDeviceMappingToRegattaLogDialog(sailingService, errorReporter, stringMessages, leaderboardName).show(); + //new RaceLogTrackingDeviceMappingsDialog(sailingService, stringMessages, errorReporter, leaderboardName, raceColumnName, fleetName).show(); } else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_INVITE_BUOY_TENDERS.equals(value)) { openChooseEventDialogAndSendMails(leaderboardName); } else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_SHOW_REGATTA_LOG.equals(value)) { From 0c28ee73a200be43efb3326a696ff8f92d8d8dea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Sat, 16 May 2015 13:01:13 +0200 Subject: [PATCH 002/504] Add editor for device mappings in Leaderboardcolumn --- ...der.java => RaceLogDefinedMarkFinder.java} | 4 +- .../shared/events/DeviceMappingEvent.java | 4 +- ...ctLogImportFixesAndAddMappingsDialog.java} | 37 +---- ...aceLogImportFixesAndAddMappingsDialog.java | 62 ++++++++ .../RaceLogTrackingDeviceMappingsDialog.java | 2 +- .../RaceLogTrackingEventManagementPanel.java | 6 +- ...ttaLogImportFixesAndAddMappingsDialog.java | 57 +++++++ ...egattaLogTrackingDeviceMappingsDialog.java | 127 ++++++++++++++++ .../sailing/gwt/ui/client/SailingService.java | 13 ++ .../gwt/ui/client/SailingServiceAsync.java | 14 ++ .../gwt/ui/server/SailingServiceImpl.java | 141 +++++++++++++++++- .../jaxrs/api/LeaderboardsResource.java | 6 +- 12 files changed, 425 insertions(+), 48 deletions(-) rename java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/{DefinedMarkFinder.java => RaceLogDefinedMarkFinder.java} (86%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/{ImportFixesAndAddMappingsDialog.java => AbstractLogImportFixesAndAddMappingsDialog.java} (81%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogImportFixesAndAddMappingsDialog.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/DefinedMarkFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/RaceLogDefinedMarkFinder.java similarity index 86% rename from java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/DefinedMarkFinder.java rename to java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/RaceLogDefinedMarkFinder.java index 7e2ea5a69d7..2f9af6875d0 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/DefinedMarkFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/RaceLogDefinedMarkFinder.java @@ -9,8 +9,8 @@ import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogAnalyzer; import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogDefineMarkEvent; import com.sap.sailing.domain.base.Mark; -public class DefinedMarkFinder extends RaceLogAnalyzer> { - public DefinedMarkFinder(RaceLog raceLog) { +public class RaceLogDefinedMarkFinder extends RaceLogAnalyzer> { + public RaceLogDefinedMarkFinder(RaceLog raceLog) { super(raceLog); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/events/DeviceMappingEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/events/DeviceMappingEvent.java index 2a31b71140e..ed69b2cb35d 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/events/DeviceMappingEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/events/DeviceMappingEvent.java @@ -2,7 +2,7 @@ package com.sap.sailing.domain.abstractlog.shared.events; import com.sap.sailing.domain.abstractlog.AbstractLogEvent; import com.sap.sailing.domain.abstractlog.Revokable; -import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.DefinedMarkFinder; +import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogDefinedMarkFinder; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.racelogtracking.DeviceIdentifier; @@ -19,7 +19,7 @@ import com.sap.sse.common.WithID; * If one end of the time range enclosed by {@link #getFrom()} and {@link #getTo()} is open, this can be closed * by a {@link CloseOpenEndedDeviceMappingEvent}. * - * @see DefinedMarkFinder for rules by which {@link DeviceMapping}s are derived from these events. + * @see RaceLogDefinedMarkFinder for rules by which {@link DeviceMapping}s are derived from these events. * @author Fredrik Teschke */ public interface DeviceMappingEvent extends AbstractLogEvent, Revokable { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImportFixesAndAddMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogImportFixesAndAddMappingsDialog.java similarity index 81% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImportFixesAndAddMappingsDialog.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogImportFixesAndAddMappingsDialog.java index 00f7705b45e..5ddaf3893a3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImportFixesAndAddMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogImportFixesAndAddMappingsDialog.java @@ -6,7 +6,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.CaptionPanel; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.VerticalPanel; @@ -24,11 +23,11 @@ import com.sap.sailing.gwt.ui.shared.TrackFileImportDeviceIdentifierDTO; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog; -public class ImportFixesAndAddMappingsDialog extends DataEntryDialog> { +public abstract class AbstractLogImportFixesAndAddMappingsDialog extends DataEntryDialog> { TrackFileImportWidget importWidget; private TrackFileImportDeviceIdentifierTableWrapper deviceIdTable; - private final CompetitorTableWrapper> competitorTable; - private final MarkTableWrapper> markTable; + protected final CompetitorTableWrapper> competitorTable; + protected final MarkTableWrapper> markTable; private final StringMessages stringMessages; private final Map mappings = new HashMap<>(); @@ -38,9 +37,8 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog> callback) { + public AbstractLogImportFixesAndAddMappingsDialog(SailingServiceAsync sailingService, final ErrorReporter errorReporter, + final StringMessages stringMessages, DialogCallback> callback) { super(stringMessages.add(stringMessages.deviceMappings()), stringMessages.add(stringMessages.deviceMappings()), stringMessages.add(), stringMessages.cancel(), new DataEntryDialog.Validator>() { @Override @@ -73,29 +71,10 @@ public class ImportFixesAndAddMappingsDialog extends DataEntryDialog>() { - @Override - public void onSuccess(Collection result) { - competitorTable.refreshCompetitorList(result); - } - - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not load competitors: " + caught.getMessage()); - } - }); - sailingService.getMarksInRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { - @Override - public void onSuccess(Iterable result) { - markTable.refresh(result); - } - - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not load marks: " + caught.getMessage()); - } - }); } + + abstract void getMarks(SailingServiceAsync sailingService, final ErrorReporter errorReporter); + abstract void getCompetitorRegistrations(SailingServiceAsync sailingService, final ErrorReporter errorReporter); private static void selectOrClear(SingleSelectionModel selectionModel, T object) { if (object == null) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java new file mode 100644 index 00000000000..b1dfb2a363a --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java @@ -0,0 +1,62 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import java.util.Collection; + +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.sap.sailing.domain.common.dto.CompetitorDTO; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO; +import com.sap.sailing.gwt.ui.shared.MarkDTO; +import com.sap.sse.gwt.client.ErrorReporter; + +public class RaceLogImportFixesAndAddMappingsDialog extends AbstractLogImportFixesAndAddMappingsDialog { + private String leaderboardName; + private String raceColumnName; + private String fleetName; + + + public RaceLogImportFixesAndAddMappingsDialog(SailingServiceAsync sailingService, final ErrorReporter errorReporter, + final StringMessages stringMessages, String leaderboardName, String raceColumnName, String fleetName, + DialogCallback> callback) { + super(sailingService,errorReporter, stringMessages, callback); + + this.leaderboardName = leaderboardName; + this.raceColumnName = raceColumnName; + this.fleetName = fleetName; + + getCompetitorRegistrations(sailingService, errorReporter); + getMarks(sailingService, errorReporter); + } + + @Override + void getMarks(SailingServiceAsync sailingService, final ErrorReporter errorReporter) { + sailingService.getMarksInRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { + @Override + public void onSuccess(Iterable result) { + markTable.refresh(result); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not load marks: " + caught.getMessage()); + } + }); + } + + @Override + void getCompetitorRegistrations(SailingServiceAsync sailingService, final ErrorReporter errorReporter) { + sailingService.getCompetitorRegistrations(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { + @Override + public void onSuccess(Collection result) { + competitorTable.refreshCompetitorList(result); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not load competitors: " + caught.getMessage()); + } + }); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java index fecce20cbbb..8101497db86 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java @@ -77,7 +77,7 @@ public class RaceLogTrackingDeviceMappingsDialog extends AbstractLogTrackingDevi @Override protected void importFixes() { - new ImportFixesAndAddMappingsDialog(sailingService, errorReporter, stringMessages, leaderboardName, + new RaceLogImportFixesAndAddMappingsDialog(sailingService, errorReporter, stringMessages, leaderboardName, raceColumnName, fleetName, new DataEntryDialog.DialogCallback>() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java index 23b6c1769af..9dbbc6f8647 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java @@ -136,11 +136,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf } }).show(); } else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_MAP_DEVICES.equals(value)) { - - - new AddDeviceMappingToRegattaLogDialog(sailingService, errorReporter, stringMessages, - leaderboardName).show(); - //new RaceLogTrackingDeviceMappingsDialog(sailingService, stringMessages, errorReporter, leaderboardName, raceColumnName, fleetName).show(); + new RegattaLogTrackingDeviceMappingsDialog(sailingService, stringMessages, errorReporter, leaderboardName).show(); } else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_INVITE_BUOY_TENDERS.equals(value)) { openChooseEventDialogAndSendMails(leaderboardName); } else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_SHOW_REGATTA_LOG.equals(value)) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogImportFixesAndAddMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogImportFixesAndAddMappingsDialog.java new file mode 100644 index 00000000000..cc6801e4650 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogImportFixesAndAddMappingsDialog.java @@ -0,0 +1,57 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import java.util.Collection; + +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.sap.sailing.domain.common.dto.CompetitorDTO; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO; +import com.sap.sailing.gwt.ui.shared.MarkDTO; +import com.sap.sse.gwt.client.ErrorReporter; + +public class RegattaLogImportFixesAndAddMappingsDialog extends AbstractLogImportFixesAndAddMappingsDialog { + private String leaderboardName; + + public RegattaLogImportFixesAndAddMappingsDialog(SailingServiceAsync sailingService, final ErrorReporter errorReporter, + final StringMessages stringMessages, String leaderboardName, + DialogCallback> callback) { + super(sailingService,errorReporter, stringMessages, callback); + + this.leaderboardName = leaderboardName; + + getCompetitorRegistrations(sailingService, errorReporter); + getMarks(sailingService, errorReporter); + } + + @Override + void getMarks(SailingServiceAsync sailingService, final ErrorReporter errorReporter) { + sailingService.getMarksInRegattaLog(leaderboardName, new AsyncCallback>() { + @Override + public void onSuccess(Iterable result) { + markTable.refresh(result); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not load marks: " + caught.getMessage()); + } + }); + } + + @Override + void getCompetitorRegistrations(SailingServiceAsync sailingService, final ErrorReporter errorReporter) { + sailingService.getCompetitorRegistrationsInRegattaLog(leaderboardName, new AsyncCallback>() { + @Override + public void onSuccess(Collection result) { + competitorTable.refreshCompetitorList(result); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not load competitors: " + caught.getMessage()); + } + }); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java new file mode 100644 index 00000000000..32230142be6 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java @@ -0,0 +1,127 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import java.util.Collection; +import java.util.List; + +import com.google.gwt.cell.client.FieldUpdater; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO; +import com.sap.sse.gwt.client.ErrorReporter; +import com.sap.sse.gwt.client.dialog.DataEntryDialog; + +public class RegattaLogTrackingDeviceMappingsDialog extends AbstractLogTrackingDeviceMappingsDialog { + protected String leaderboardName; + + public RegattaLogTrackingDeviceMappingsDialog(final SailingServiceAsync sailingService, + final StringMessages stringMessages, final ErrorReporter errorReporter, final String leaderboardName) { + + super(sailingService, stringMessages, errorReporter); + this.leaderboardName = leaderboardName; + + refresh(); + } + + @Override + protected void refresh() { + sailingService.getDeviceMappingsFromLogHierarchy(leaderboardName, + new AsyncCallback>() { + @Override + public void onSuccess(List result) { + mappings = result; + + updateChart(); + deviceMappingTable.refresh(mappings); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not load mappings for marks: " + caught.getMessage()); + } + }); + } + + @Override + protected void showAddMappingDialog(DeviceMappingDTO mapping) { + new AddDeviceMappingToRegattaLogDialog(sailingService, errorReporter, stringMessages, leaderboardName).show(); + } + + @Override + protected void importFixes() { + new RegattaLogImportFixesAndAddMappingsDialog(sailingService, errorReporter, stringMessages, leaderboardName, new DataEntryDialog.DialogCallback>() { + + @Override + public void ok(Collection editedObject) { + for (DeviceMappingDTO mapping : editedObject) { + sailingService.addDeviceMappingToRegattaLog(leaderboardName, + mapping, new AsyncCallback() { + @Override + public void onSuccess(Void result) { + refresh(); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError(caught.getMessage()); + } + }); + } + } + + @Override + public void cancel() { + } + }).show(); + } + + @Override + protected FieldUpdater getActionColFieldUpdater() { + + return new FieldUpdater() { + + @Override + public void update(int index, final DeviceMappingDTO dto, String value) { + if (RaceLogTrackingDeviceMappingsImagesBarCell.ACTION_CLOSE.equals(value)) { + new SetTimePointDialog(stringMessages, stringMessages.setClosingTimePoint(), + new DataEntryDialog.DialogCallback() { + @Override + public void ok(java.util.Date editedObject) { + sailingService.closeOpenEndedDeviceMapping(leaderboardName, dto, editedObject, new AsyncCallback() { + @Override + public void onSuccess(Void result) { + refresh(); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not close open ended mapping: " + + caught.getMessage()); + } + }); + } + + @Override + public void cancel() { + } + }).show(); + } else if (RaceLogTrackingDeviceMappingsImagesBarCell.ACTION_REMOVE.equals(value)) { + sailingService.revokeRaceAndRegattaLogEvents(leaderboardName, + dto.originalRaceLogEventIds, new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not remove mappings: " + caught.getMessage()); + } + + @Override + public void onSuccess(Void result) { + refresh(); + } + + }); + } + + } + }; + } +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index dd22e5d6de5..2c6d58c77ea 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -610,4 +610,17 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS String emails, String localeInfoName) throws MailException; ArrayList getLeaderboardGroupsByEventId(UUID id); + + Iterable getMarksInRegattaLog(String leaderboardName); + + List getDeviceMappingsFromLogHierarchy(String leaderboardName) throws TransformationException; + + Collection getCompetitorRegistrationsInRegattaLog(String leaderboardName) throws DoesNotHaveRegattaLogException; + + void revokeRaceAndRegattaLogEvents(String leaderboardName, List eventIds) throws NotRevokableException, DoesNotHaveRegattaLogException; + + void closeOpenEndedDeviceMapping(String leaderboardName, DeviceMappingDTO mappingDto, Date closingTimePoint) throws TransformationException; + + void addDeviceMappingToRegattaLog(String leaderboardName, DeviceMappingDTO dto) + throws NoCorrespondingServiceRegisteredException, TransformationException, DoesNotHaveRegattaLogException; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index 6df85a35d1b..4a4169b94a8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -714,4 +714,18 @@ public interface SailingServiceAsync extends BuildVersionRetriever, FileStorageM String emails, String localeInfoName, AsyncCallback callback); void getLeaderboardGroupsByEventId(UUID id, AsyncCallback> callback); + + void getMarksInRegattaLog(String leaderboardName, AsyncCallback> callback); + + void getDeviceMappingsFromLogHierarchy(String leaderboardName, AsyncCallback> asyncCallback); + + void getCompetitorRegistrationsInRegattaLog(String leaderboardName, + AsyncCallback> asyncCallback); + + void revokeRaceAndRegattaLogEvents(String leaderboardName, List eventIds, AsyncCallback callback); + + void closeOpenEndedDeviceMapping(String leaderboardName, DeviceMappingDTO mappingDto, Date closingTimePoint, + AsyncCallback asyncCallback); + + void addDeviceMappingToRegattaLog(String leaderboardName, DeviceMappingDTO dto, AsyncCallback callback); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index fe9aad10beb..47aba1341a6 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -76,12 +76,14 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.FlagPoleSta import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.ReadonlyGateStartRacingProcedure; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.ReadonlyRRS26RacingProcedure; import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogCloseOpenEndedDeviceMappingEvent; -import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.DefinedMarkFinder; +import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogDefinedMarkFinder; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogOpenEndedDeviceMappingCloser; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogTrackingStateAnalyzer; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogCloseOpenEndedDeviceMappingEvent; +import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogDeviceCompetitorMappingEventImpl; +import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogDeviceMarkMappingEventImpl; import com.sap.sailing.domain.abstractlog.regatta.tracking.analyzing.impl.RegattaLogOpenEndedDeviceMappingCloser; import com.sap.sailing.domain.abstractlog.shared.analyzing.DeviceCompetitorMappingFinder; import com.sap.sailing.domain.abstractlog.shared.analyzing.DeviceMarkMappingFinder; @@ -236,6 +238,7 @@ import com.sap.sailing.domain.racelogtracking.RaceLogTrackingAdapter; import com.sap.sailing.domain.racelogtracking.RaceLogTrackingAdapterFactory; import com.sap.sailing.domain.racelogtracking.impl.DeviceMappingImpl; import com.sap.sailing.domain.regattalike.HasRegattaLike; +import com.sap.sailing.domain.regattalike.IsRegattaLike; import com.sap.sailing.domain.regattalike.LeaderboardThatHasRegattaLike; import com.sap.sailing.domain.regattalog.RegattaLogStore; import com.sap.sailing.domain.swisstimingadapter.StartList; @@ -4909,7 +4912,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S @Override public Iterable getMarksInRaceLog(String leaderboardName, String raceColumnName, String fleetName) { RaceLog raceLog = getRaceLog(leaderboardName, raceColumnName, fleetName); - Iterable marks = new DefinedMarkFinder(raceLog).analyze(); + Iterable marks = new RaceLogDefinedMarkFinder(raceLog).analyze(); return convertToMarkDTOs((LeaderboardThatHasRegattaLike) getService().getLeaderboardByName(leaderboardName), raceLog, marks); } @@ -4926,7 +4929,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S for (Fleet fleet : raceColumn.getFleets()) { RaceLog raceLog = raceColumn.getRaceLog(fleet); TrackedRace trackedRace = raceColumn.getTrackedRace(fleet); //might not yet be attached - for (Mark markDefinitionFromRaceLog : new DefinedMarkFinder(raceLog).analyze()) { + for (Mark markDefinitionFromRaceLog : new RaceLogDefinedMarkFinder(raceLog).analyze()) { marksById.put(markDefinitionFromRaceLog.getId(), markDefinitionFromRaceLog); } if (trackedRace != null) { @@ -5081,7 +5084,11 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S String fleetName) { List> result = new ArrayList<>(); RaceLog raceLog = getRaceLog(leaderboardName, raceColumnName, fleetName); - result.add(raceLog); + + if (raceLog != null){ + result.add(raceLog); + } + Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName); if (leaderboard instanceof HasRegattaLike) { result.add(((HasRegattaLike) leaderboard).getRegattaLike().getRegattaLog()); @@ -5148,6 +5155,30 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S raceLog.add(event); } + @Override + public void addDeviceMappingToRegattaLog(String leaderboardName, + DeviceMappingDTO dto) throws NoCorrespondingServiceRegisteredException, TransformationException, DoesNotHaveRegattaLogException { + RegattaLog regattaLog = getRegattaLogInternal(leaderboardName); + DeviceMapping mapping = convertToDeviceMapping(dto); + TimePoint now = MillisecondsTimePoint.now(); + RegattaLogEvent event = null; + TimePoint from = mapping.getTimeRange().hasOpenBeginning() ? null : mapping.getTimeRange().from(); + TimePoint to = mapping.getTimeRange().hasOpenEnd() ? null : mapping.getTimeRange().to(); + if (dto.mappedTo instanceof MarkDTO) { + Mark mark = convertToMark(((MarkDTO) dto.mappedTo), true); + event = new RegattaLogDeviceMarkMappingEventImpl(now, getService().getServerAuthor(), now, UUID.randomUUID(), + mark, mapping.getDevice(), from, to); + } else if (dto.mappedTo instanceof CompetitorDTO) { + Competitor competitor = getService().getCompetitorStore().getExistingCompetitorByIdAsString( + ((CompetitorDTO) dto.mappedTo).getIdAsString()); + event = new RegattaLogDeviceCompetitorMappingEventImpl(now, getService().getServerAuthor(), now, UUID.randomUUID(), + competitor, mapping.getDevice(), from, to); + } else { + throw new RuntimeException("Can only map devices to competitors or marks"); + } + regattaLog.add(event); + } + @Override public List getDeserializableDeviceIdentifierTypes() { List result = new ArrayList(); @@ -5180,6 +5211,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S public void closeOpenEndedDeviceMapping(String leaderboardName, String raceColumnName, String fleetName, DeviceMappingDTO mappingDTO, Date closingTimePoint) throws NoCorrespondingServiceRegisteredException, TransformationException { List> logHierarchy = getLogHierarchy(leaderboardName, raceColumnName, fleetName); + closeOpenEndedDeviceMapping(logHierarchy, mappingDTO, closingTimePoint); + } + + private void closeOpenEndedDeviceMapping(List> logHierarchy, DeviceMappingDTO mappingDTO, Date closingTimePoint) throws TransformationException { for (AbstractLog abstractLog : logHierarchy) { //check if abstractLog is the correct log for the closingEvent final AbstractLogEvent event; @@ -5215,11 +5250,22 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S @Override public void revokeRaceAndRegattaLogEvents(String leaderboardName, String raceColumnName, String fleetName, List eventIds) throws NotRevokableException { - List> logHierarchy = getLogHierarchy(leaderboardName, raceColumnName, fleetName); + List> logs = getLogHierarchy(leaderboardName, raceColumnName, fleetName); + revokeEventsFromLogs(logs, eventIds); + } + + @Override + public void revokeRaceAndRegattaLogEvents(String leaderboardName, + List eventIds) throws NotRevokableException, DoesNotHaveRegattaLogException { + List> logs = getLogHierarchy(leaderboardName); + revokeEventsFromLogs(logs, eventIds); + } + + private void revokeEventsFromLogs(List> logs, List eventIds) throws NotRevokableException{ boolean eventRevoked = false; for (Serializable idToRevoke : eventIds) { eventRevoked = false; - for (AbstractLog abstractLog : logHierarchy) { + for (AbstractLog abstractLog : logs) { eventRevoked = revokeEvent(eventRevoked, idToRevoke, abstractLog); } if (!eventRevoked){ @@ -5631,4 +5677,87 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } return result; } + + @Override + public List getDeviceMappingsFromLogHierarchy(String leaderboardName) throws TransformationException { + List> logs = getLogHierarchy(leaderboardName); + return getDeviceMappingsFromLogs(logs); + } + + /** + * Gets all Marks defined in the RaceLogs of the RaceColumns corresponding to the leaderboard leaderboardName + */ + @Override + public Iterable getMarksInRegattaLog(String leaderboardName) { + Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName); + if (leaderboard == null) { + // TODO: implement proper Exception Handling + return null; + } + + if (!(leaderboard instanceof IsRegattaLike)){ + return null; + } + + Set markDTOs = new HashSet<>(); + + Map marksById = new HashMap<>(); + for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { + for (Fleet fleet : raceColumn.getFleets()) { + RaceLog raceLog = raceColumn.getRaceLog(fleet); + TrackedRace trackedRace = raceColumn.getTrackedRace(fleet); //might not yet be attached + + if (trackedRace != null) { + for (Mark markFromTrackedRace : trackedRace.getMarks()) { + marksById.put(markFromTrackedRace.getId(), markFromTrackedRace); + } + } + Util.addAll(convertToMarkDTOs( + (LeaderboardThatHasRegattaLike) getService().getLeaderboardByName(leaderboardName), + raceLog, marksById.values()), markDTOs); + } + } + return markDTOs; + } + + @Override + public Collection getCompetitorRegistrationsInRegattaLog(String leaderboardName) throws DoesNotHaveRegattaLogException { + return convertToCompetitorDTOs( + new RegisteredCompetitorsAnalyzer<>( + getRegattaLogInternal(leaderboardName)).analyze()); + } + + @Override + public void closeOpenEndedDeviceMapping(String leaderboardName, DeviceMappingDTO mappingDTO, Date closingTimePoint) throws TransformationException { + List> logs = getLogHierarchy(leaderboardName); + closeOpenEndedDeviceMapping(logs, mappingDTO, closingTimePoint); + } + + + /** + * Gets all the logs corresponding to a leaderboard. This includes all the RaceLogs of the leaderBoard's raceColumns + * @param leaderboardName + * @return + */ + private List> getLogHierarchy(String leaderboardName) { + List> result = new ArrayList<>(); + + Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName); + if (leaderboard == null) { + return null; + } + + if (leaderboard instanceof HasRegattaLike) { + result.add(((HasRegattaLike) leaderboard).getRegattaLike().getRegattaLog()); + } + + for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { + for (Fleet fleet : raceColumn.getFleets()) { + RaceLog raceLog = raceColumn.getRaceLog(fleet); + result.add(raceLog); + } + } + + return result; + } } diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardsResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardsResource.java index dbef3735dcc..25e19395d61 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardsResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/LeaderboardsResource.java @@ -36,7 +36,7 @@ import org.json.simple.parser.ParseException; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl; import com.sap.sailing.domain.abstractlog.race.RaceLog; -import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.DefinedMarkFinder; +import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogDefinedMarkFinder; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogCloseOpenEndedDeviceMappingEventImpl; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogDeviceCompetitorMappingEventImpl; @@ -559,7 +559,7 @@ public class LeaderboardsResource extends AbstractSailingServerResource { for (Fleet fleet : raceColumn.getFleets()) { RaceLog raceLog = raceColumn.getRaceLog(fleet); TrackedRace trackedRace = raceColumn.getTrackedRace(fleet); // might not yet be attached - Util.addAll(new DefinedMarkFinder(raceLog).analyze(), marks); + Util.addAll(new RaceLogDefinedMarkFinder(raceLog).analyze(), marks); if (trackedRace != null) { Util.addAll(trackedRace.getMarks(), marks); } @@ -608,7 +608,7 @@ public class LeaderboardsResource extends AbstractSailingServerResource { RaceLog raceLog = raceColumn.getRaceLog(fleet); TrackedRace trackedRace = raceColumn.getTrackedRace(fleet); // might not yet be attached Set marks = new HashSet<>(); - Util.addAll(new DefinedMarkFinder(raceLog).analyze(), marks); + Util.addAll(new RaceLogDefinedMarkFinder(raceLog).analyze(), marks); if (trackedRace != null) { Util.addAll(trackedRace.getMarks(), marks); } From 85a32a4e7868ebf3157b6013e056e1cdd6424d00 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 21 Jul 2015 16:09:09 +0200 Subject: [PATCH 003/504] Competition Format - Added navigation to switch between sortable list format and competition format(empty content - work in progress) in race list --- .../event/partials/listNavigation/RegattaNavigation.gss | 1 + .../place/event/regatta/tabs/RegattaRacesTabView.java | 5 ++--- .../place/event/regatta/tabs/RegattaRacesTabView.ui.xml | 8 +++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RegattaNavigation.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RegattaNavigation.gss index 83c96c74862..583c5fa15da 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RegattaNavigation.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RegattaNavigation.gss @@ -125,6 +125,7 @@ font-weight: 700; line-height: 0.666666666666667em; border: 1px solid #008fcc; + text-transform: capitalize; } .regattanavigation_legend_itemtracked { color: #fff; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index 842dc760560..3d16c104bb0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -125,9 +125,8 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml index 74710f4a010..1c5e4bbf484 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml @@ -19,6 +19,10 @@ right: 0; top: -0.25em; } + .temp { + font-weight: bold; + font-style: italic; + }
@@ -37,7 +41,9 @@
- + + +
From c4ec4bc5815ad2a3dd190799d6f502c1a8f79d4c Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 21 Jul 2015 18:13:16 +0200 Subject: [PATCH 004/504] Competition Format - Refactored RaceDTOs to have a lightweight DTO for competition format --- .../RegattaCompetitionFleet.java | 4 +- .../RegattaCompetitionFleetRace.java | 8 +- .../RegattaCompetitionSeries.java | 8 +- .../racelist/RaceListColumnFactory.java | 4 +- .../regattaStatus/RegattaStatusRace.java | 2 +- .../dispatch/event/LiveRaceCalculator.java | 2 +- .../shared/dispatch/event/NextRaceFinder.java | 2 +- .../event/OverallRacesStateCalculator.java | 2 +- .../ui/shared/dispatch/event/RaceContext.java | 4 +- .../dispatch/event/RaceListFleetDTO.java | 11 +- .../dispatch/event/RaceListSeriesDTO.java | 10 +- .../dispatch/event/RaceRefreshCalculator.java | 2 +- .../gwt/ui/shared/race/RaceMetadataDTO.java | 155 ++---------------- .../ui/shared/race/SimpleRaceMetadataDTO.java | 119 ++++++++++++++ 14 files changed, 162 insertions(+), 171 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/SimpleRaceMetadataDTO.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java index f33e9247121..d8ec86f91e8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java @@ -7,7 +7,7 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListFleetDTO; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListRaceDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; public class RegattaCompetitionFleet extends Widget { @@ -30,7 +30,7 @@ public class RegattaCompetitionFleet extends Widget { } } - public void addRace(RaceListRaceDTO race, String raceViewerURL) { + public void addRace(SimpleRaceMetadataDTO race, String raceViewerURL) { RegattaCompetitionFleetRace competitionRace = new RegattaCompetitionFleetRace(race, raceViewerURL); racesContainerUi.appendChild(competitionRace.getElement()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.java index 8bbe4ce4aad..6ba77fd3f8a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.java @@ -7,9 +7,9 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.UIObject; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListRaceDTO; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceTrackingState; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceViewState; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingState; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceViewState; public class RegattaCompetitionFleetRace extends UIObject { @@ -23,7 +23,7 @@ public class RegattaCompetitionFleetRace extends UIObject { @UiField DivElement raceDateUi; private final AnchorElement anchor; - public RegattaCompetitionFleetRace(RaceListRaceDTO race, String raceViewerUrl) { + public RegattaCompetitionFleetRace(SimpleRaceMetadataDTO race, String raceViewerUrl) { anchor = uiBinder.createAndBindUi(this); anchor.setHref(raceViewerUrl); local_res.css().ensureInjected(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java index 367122d1810..d3ab4e1dac4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java @@ -8,9 +8,9 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListFleetDTO; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListRaceDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListSeriesDTO; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceTrackingState; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingState; public class RegattaCompetitionSeries extends Composite { @@ -36,9 +36,9 @@ public class RegattaCompetitionSeries extends Composite { public void addFleet(Presenter presenter, RaceListFleetDTO fleet) { RegattaCompetitionFleet competitionFleet = new RegattaCompetitionFleet(fleet); - for (RaceListRaceDTO race : fleet.getRaces()) { + for (SimpleRaceMetadataDTO race : fleet.getRaces()) { boolean tracked = race.getTrackingState() == RaceTrackingState.TRACKED_VALID_DATA; - String raceViewerUrl = tracked ? presenter.getRaceViewerURL(race.getRegattaName(), race.getRegattaAndRaceIdentifier()) : null; + String raceViewerUrl = tracked ? presenter.getRaceViewerURL(race.getLeaderboardName(), race.getRegattaAndRaceIdentifier()) : null; competitionFleet.addRace(race, raceViewerUrl); } containerUi.add(competitionFleet); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java index a5b441aeba5..ba05e230c10 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java @@ -40,9 +40,9 @@ import com.sap.sailing.gwt.ui.shared.dispatch.event.SimpleCompetitorDTO; import com.sap.sailing.gwt.ui.shared.race.FlagStateDTO; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceTrackingState; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceViewState; import com.sap.sailing.gwt.ui.shared.race.RaceProgressDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingState; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceViewState; import com.sap.sailing.gwt.ui.shared.race.wind.AbstractWindDTO; import com.sap.sailing.gwt.ui.shared.race.wind.WindStatisticsDTO; import com.sap.sailing.gwt.ui.shared.util.NullSafeComparableComparator; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatusRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatusRace.java index 40adadf37ed..af58dec11c4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatusRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatusRace.java @@ -15,8 +15,8 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRaceDTO; import com.sap.sailing.gwt.ui.shared.race.FlagStateDTO; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceViewState; import com.sap.sailing.gwt.ui.shared.race.RaceProgressDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceViewState; import com.sap.sse.common.impl.MillisecondsTimePoint; public class RegattaStatusRace extends Composite { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/LiveRaceCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/LiveRaceCalculator.java index 3fe48bdb6cf..5ebf37f82a3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/LiveRaceCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/LiveRaceCalculator.java @@ -4,7 +4,7 @@ import com.google.gwt.core.shared.GwtIncompatible; import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL; import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.RaceCallback; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceViewState; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceViewState; import com.sap.sse.common.impl.MillisecondsTimePoint; @GwtIncompatible diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/NextRaceFinder.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/NextRaceFinder.java index 1189238e675..a651026dddf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/NextRaceFinder.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/NextRaceFinder.java @@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; import com.google.gwt.core.shared.GwtIncompatible; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.RaceCallback; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceTrackingState; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingState; import com.sap.sse.common.TimePoint; import com.sap.sse.common.impl.MillisecondsTimePoint; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/OverallRacesStateCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/OverallRacesStateCalculator.java index 1736d239940..e8e443bd54f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/OverallRacesStateCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/OverallRacesStateCalculator.java @@ -1,7 +1,7 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.RaceCallback; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceViewState; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceViewState; public class OverallRacesStateCalculator implements RaceCallback { private boolean hasLiveRace = false; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceContext.java index ecf8050f2b3..280bb55e7aa 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceContext.java @@ -49,9 +49,9 @@ import com.sap.sailing.gwt.server.HomeServiceUtil; import com.sap.sailing.gwt.ui.shared.race.FlagStateDTO; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceTrackingState; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceViewState; import com.sap.sailing.gwt.ui.shared.race.RaceProgressDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingState; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceViewState; import com.sap.sailing.gwt.ui.shared.race.wind.SimpleWindDTO; import com.sap.sailing.gwt.ui.shared.race.wind.WindStatisticsDTO; import com.sap.sailing.server.RacingEventService; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListFleetDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListFleetDTO.java index 89c205b4742..dfd48475e41 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListFleetDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListFleetDTO.java @@ -1,16 +1,17 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; -import java.util.ArrayList; -import java.util.List; +import java.util.Collection; +import java.util.TreeSet; import com.google.gwt.user.client.rpc.IsSerializable; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; public class RaceListFleetDTO implements IsSerializable { private FleetMetadataDTO fleet; private int competitorCount = (int) (Math.random() * 10); // TODO - private ArrayList races = new ArrayList<>(); + private TreeSet races = new TreeSet<>(); @SuppressWarnings("unused") private RaceListFleetDTO() { @@ -20,7 +21,7 @@ public class RaceListFleetDTO implements IsSerializable { this.fleet = fleet; } - public void addRace(RaceListRaceDTO race) { + public void addRace(SimpleRaceMetadataDTO race) { // TODO insert sorted races.add(race); } @@ -33,7 +34,7 @@ public class RaceListFleetDTO implements IsSerializable { return competitorCount; } - public List getRaces() { + public Collection getRaces() { return races; } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListSeriesDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListSeriesDTO.java index 12d1c0e1f8a..5ff3bcb8c3f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListSeriesDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListSeriesDTO.java @@ -1,8 +1,7 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; import java.util.Collection; -import java.util.HashMap; -import java.util.Map; +import java.util.TreeMap; import com.google.gwt.user.client.rpc.IsSerializable; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; @@ -12,7 +11,7 @@ public class RaceListSeriesDTO implements IsSerializable { private String seriesName; private int raceCount = 0; private int competitorCount = (int) (Math.random() * 10); // TODO - private Map fleets = new HashMap<>(); + private TreeMap fleets = new TreeMap<>(); @SuppressWarnings("unused") private RaceListSeriesDTO() { @@ -29,10 +28,9 @@ public class RaceListSeriesDTO implements IsSerializable { } private RaceListFleetDTO ensureFleet(FleetMetadataDTO fleetData) { - String fleetName = fleetData == null ? null : fleetData.getFleetName(); - RaceListFleetDTO fleet = fleets.get(fleetName); + RaceListFleetDTO fleet = fleets.get(fleetData); if (fleet == null) { - fleets.put(fleetName, fleet = new RaceListFleetDTO(fleetData)); + fleets.put(fleetData, fleet = new RaceListFleetDTO(fleetData)); } return fleet; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceRefreshCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceRefreshCalculator.java index 35a845fe1cc..37549d018df 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceRefreshCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceRefreshCalculator.java @@ -2,7 +2,7 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; import com.google.gwt.core.shared.GwtIncompatible; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.RaceCallback; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceViewState; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceViewState; import com.sap.sse.common.impl.MillisecondsTimePoint; @GwtIncompatible diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/RaceMetadataDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/RaceMetadataDTO.java index 6bb5935b2e4..7c2a9e40dcc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/RaceMetadataDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/RaceMetadataDTO.java @@ -1,98 +1,31 @@ package com.sap.sailing.gwt.ui.shared.race; -import java.util.Date; - import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.shared.dispatch.DTO; import com.sap.sailing.gwt.ui.shared.race.wind.AbstractWindDTO; import com.sap.sse.common.Util; -public abstract class RaceMetadataDTO implements DTO, Comparable> { +public abstract class RaceMetadataDTO extends SimpleRaceMetadataDTO { - public enum RaceViewState { - PLANNED { // no start time set - @Override - public String getLabel() { - return StringMessages.INSTANCE.raceIsPlanned(); - } - }, - SCHEDULED { // the start time is set and in the future - @Override - public String getLabel() { - return StringMessages.INSTANCE.raceIsScheduled(); // fallback representation - } - }, - RUNNING { // start time is the past and end time is not set or in the future - @Override - public String getLabel() { - return StringMessages.INSTANCE.raceIsRunning(); // fallback representation - } - }, - FINISHED { // the end time is set and is in the past - @Override - public String getLabel() { - return StringMessages.INSTANCE.raceIsFinished(); - } - }, - POSTPONED { // the start has been postponed - @Override - public String getLabel() { - return StringMessages.INSTANCE.raceIsPostponed(); - } - }, - ABANDONED { // the running racing has been abandoned - @Override - public String getLabel() { - return StringMessages.INSTANCE.raceIsCanceled(); - } - }; - - public abstract String getLabel(); - } - - public enum RaceTrackingState { - NOT_TRACKED, // No tracking data -> probably just managed by race committee app - TRACKED_NO_VALID_DATA, // tracking is connected but the required data for displaying the race viewer is not available - TRACKED_VALID_DATA // tracking is connected and all required data for displaying the race viewer is available - } - - private String leaderboardName; - private RegattaAndRaceIdentifier regattaAndRaceIdentifier; private String regattaName; private String regattaDisplayName; - private String raceName; private FleetMetadataDTO fleet; - private Date start; private String courseArea; private String course; private String boatClass; - private RaceViewState state; - private RaceTrackingState trackingState; private WIND wind; protected RaceMetadataDTO() { } public RaceMetadataDTO(String leaderboardName, RegattaAndRaceIdentifier regattaAndRaceIdentifier, String raceName) { - this.leaderboardName = leaderboardName; - this.regattaAndRaceIdentifier = regattaAndRaceIdentifier; + super(leaderboardName, regattaAndRaceIdentifier, raceName); this.regattaName = leaderboardName; - this.raceName = raceName; } public String getRegattaName() { return regattaName; } - public String getLeaderboardName() { - return leaderboardName; - } - - public String getRaceName() { - return raceName; - } - public FleetMetadataDTO getFleet() { return fleet; } @@ -101,14 +34,6 @@ public abstract class RaceMetadataDTO implements D this.fleet = fleet; } - public Date getStart() { - return start; - } - - public void setStart(Date start) { - this.start = start; - } - public String getCourseArea() { return courseArea; } @@ -133,22 +58,6 @@ public abstract class RaceMetadataDTO implements D this.boatClass = boatClass; } - public RaceViewState getViewState() { - return state; - } - - public void setViewState(RaceViewState state) { - this.state = state; - } - - public RaceTrackingState getTrackingState() { - return trackingState; - } - - public void setTrackingState(RaceTrackingState trackingState) { - this.trackingState = trackingState; - } - public WIND getWind() { return wind; } @@ -165,60 +74,24 @@ public abstract class RaceMetadataDTO implements D this.regattaDisplayName = regattaDisplayName; } - public RegattaAndRaceIdentifier getRegattaAndRaceIdentifier() { - return regattaAndRaceIdentifier; - } - @Override - public int compareTo(RaceMetadataDTO o) { - Date thisStart = getStart(); - Date otherStart = o.getStart(); - if(Util.equalsWithNull(thisStart, otherStart)) { - // cases where both start times are == null or equal - return compareBySecondaryCriteria(o); - } - if(thisStart == null) { - return 1; - } - if(otherStart == null) { - return -1; - } - return -thisStart.compareTo(otherStart); - } - - private int compareBySecondaryCriteria(RaceMetadataDTO o) { - String thisRegattaName = getRegattaName(); - String otherRegattaName = o.getRegattaName(); - if(thisRegattaName != otherRegattaName) { - if(thisRegattaName == null) { - return 1; + protected int compareBySecondaryCriteria(T o) { + if (o instanceof RaceMetadataDTO) { + RaceMetadataDTO other = (RaceMetadataDTO) o; + int compareByRegattaName = Util.compareToWithNull(getRegattaName(), other.getRegattaName(), true); + if(compareByRegattaName != 0) { + return compareByRegattaName; } - if(otherRegattaName == null) { - return -1; + int compareByRaceName = getRaceName().compareTo(o.getRaceName()); + if(compareByRaceName != 0) { + return compareByRaceName; } - int compareByRegatta = thisRegattaName.compareTo(otherRegattaName); - if(compareByRegatta != 0) { - return compareByRegatta; - } - } - int compareByRace = getRaceName().compareTo(o.getRaceName()); - if(compareByRace != 0) { - return compareByRace; - } - FleetMetadataDTO thisFleet = getFleet(); - FleetMetadataDTO otherFleet = o.getFleet(); - if(thisFleet != otherFleet) { - if(thisFleet == null) { - return 1; - } - if(otherFleet == null) { - return -1; - } - int compareByFleet = thisFleet.compareTo(otherFleet); + int compareByFleet = Util.compareToWithNull(getFleet(), other.getFleet(), true); if(compareByFleet != 0) { return compareByFleet; } + return getViewState().compareTo(o.getViewState()); } - return getViewState().compareTo(o.getViewState()); + return super.compareBySecondaryCriteria(o); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/SimpleRaceMetadataDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/SimpleRaceMetadataDTO.java new file mode 100644 index 00000000000..68d1302c5be --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/SimpleRaceMetadataDTO.java @@ -0,0 +1,119 @@ +package com.sap.sailing.gwt.ui.shared.race; + +import java.util.Date; + +import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.dispatch.DTO; +import com.sap.sse.common.Util; + +public class SimpleRaceMetadataDTO implements DTO, Comparable { + public enum RaceViewState { + PLANNED { // no start time set + @Override + public String getLabel() { + return StringMessages.INSTANCE.raceIsPlanned(); + } + }, + SCHEDULED { // the start time is set and in the future + @Override + public String getLabel() { + return StringMessages.INSTANCE.raceIsScheduled(); // fallback representation + } + }, + RUNNING { // start time is the past and end time is not set or in the future + @Override + public String getLabel() { + return StringMessages.INSTANCE.raceIsRunning(); // fallback representation + } + }, + FINISHED { // the end time is set and is in the past + @Override + public String getLabel() { + return StringMessages.INSTANCE.raceIsFinished(); + } + }, + POSTPONED { // the start has been postponed + @Override + public String getLabel() { + return StringMessages.INSTANCE.raceIsPostponed(); + } + }, + ABANDONED { // the running racing has been abandoned + @Override + public String getLabel() { + return StringMessages.INSTANCE.raceIsCanceled(); + } + }; + + public abstract String getLabel(); + } + + public enum RaceTrackingState { + NOT_TRACKED, // No tracking data -> probably just managed by race committee app + TRACKED_NO_VALID_DATA, // tracking is connected but the required data for displaying the race viewer is not available + TRACKED_VALID_DATA // tracking is connected and all required data for displaying the race viewer is available + } + + private String leaderboardName; + private RegattaAndRaceIdentifier regattaAndRaceIdentifier; + private String raceName; + private Date start; + private RaceViewState state; + private RaceTrackingState trackingState; + + protected SimpleRaceMetadataDTO() { + } + + public SimpleRaceMetadataDTO(String leaderboardName, RegattaAndRaceIdentifier regattaAndRaceIdentifier, String raceName) { + this.leaderboardName = leaderboardName; + this.regattaAndRaceIdentifier = regattaAndRaceIdentifier; + this.raceName = raceName; + } + + public String getLeaderboardName() { + return leaderboardName; + } + + public RegattaAndRaceIdentifier getRegattaAndRaceIdentifier() { + return regattaAndRaceIdentifier; + } + + public String getRaceName() { + return raceName; + } + + public Date getStart() { + return start; + } + + public void setStart(Date start) { + this.start = start; + } + + public RaceViewState getViewState() { + return state; + } + + public void setViewState(RaceViewState state) { + this.state = state; + } + + public RaceTrackingState getTrackingState() { + return trackingState; + } + + public void setTrackingState(RaceTrackingState trackingState) { + this.trackingState = trackingState; + } + + @Override + public int compareTo(SimpleRaceMetadataDTO o) { + final int compareByStart = Util.compareToWithNull(getStart(), o.getStart(), true); + return compareByStart != 0 ? compareByStart : compareBySecondaryCriteria(o); + } + + protected int compareBySecondaryCriteria(T o) { + return getRaceName().compareTo(o.getRaceName()); + } +} From 410bf063a713dd2091f88793a0096a2a16cff920 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 22 Jul 2015 09:44:40 +0200 Subject: [PATCH 005/504] Competition Format - Renamed DTOs used for competition format view --- .../RegattaCompetitionFleet.java | 4 +-- .../RegattaCompetitionSeries.java | 10 +++--- ...ava => RaceCompetitionFormatFleetDTO.java} | 8 ++--- ...va => RaceCompetitionFormatSeriesDTO.java} | 35 +++++++++---------- 4 files changed, 27 insertions(+), 30 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/{RaceListFleetDTO.java => RaceCompetitionFormatFleetDTO.java} (80%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/{RaceListSeriesDTO.java => RaceCompetitionFormatSeriesDTO.java} (53%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java index d8ec86f91e8..21f40e8e7cf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java @@ -6,7 +6,7 @@ import com.google.gwt.dom.client.Element; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListFleetDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; public class RegattaCompetitionFleet extends Widget { @@ -21,7 +21,7 @@ public class RegattaCompetitionFleet extends Widget { @UiField DivElement competitorCountUi; @UiField DivElement racesContainerUi; - public RegattaCompetitionFleet(RaceListFleetDTO fleet) { + public RegattaCompetitionFleet(RaceCompetitionFormatFleetDTO fleet) { setElement(uiBinder.createAndBindUi(this)); this.competitorCountUi.setInnerText(fleet.getCompetitorCount() + " Comp. TODO"); if (fleet.getFleet() != null) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java index d3ab4e1dac4..368df4787a1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java @@ -7,8 +7,8 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListFleetDTO; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListSeriesDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatSeriesDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingState; @@ -24,17 +24,17 @@ public class RegattaCompetitionSeries extends Composite { @UiField DivElement raceCountUi; private final HTMLPanel containerUi; - public RegattaCompetitionSeries(Presenter presenter, RaceListSeriesDTO series) { + public RegattaCompetitionSeries(Presenter presenter, RaceCompetitionFormatSeriesDTO series) { initWidget(containerUi = uiBinder.createAndBindUi(this)); this.seriesNameUi.setInnerText(series.getSeriesName()); this.competitorCountUi.setInnerText(series.getCompetitorCount() + " Comp. TODO"); this.raceCountUi.setInnerText(series.getRaceCount() + " Races TODO"); - for (RaceListFleetDTO fleet : series.getFleets()) { + for (RaceCompetitionFormatFleetDTO fleet : series.getFleets()) { addFleet(presenter, fleet); } } - public void addFleet(Presenter presenter, RaceListFleetDTO fleet) { + public void addFleet(Presenter presenter, RaceCompetitionFormatFleetDTO fleet) { RegattaCompetitionFleet competitionFleet = new RegattaCompetitionFleet(fleet); for (SimpleRaceMetadataDTO race : fleet.getRaces()) { boolean tracked = race.getTrackingState() == RaceTrackingState.TRACKED_VALID_DATA; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListFleetDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatFleetDTO.java similarity index 80% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListFleetDTO.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatFleetDTO.java index dfd48475e41..5899dbc2580 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListFleetDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatFleetDTO.java @@ -7,22 +7,20 @@ import com.google.gwt.user.client.rpc.IsSerializable; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; -public class RaceListFleetDTO implements IsSerializable { +public class RaceCompetitionFormatFleetDTO implements IsSerializable { private FleetMetadataDTO fleet; private int competitorCount = (int) (Math.random() * 10); // TODO private TreeSet races = new TreeSet<>(); - @SuppressWarnings("unused") - private RaceListFleetDTO() { + protected RaceCompetitionFormatFleetDTO() { } - public RaceListFleetDTO(FleetMetadataDTO fleet) { + public RaceCompetitionFormatFleetDTO(FleetMetadataDTO fleet) { this.fleet = fleet; } public void addRace(SimpleRaceMetadataDTO race) { - // TODO insert sorted races.add(race); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListSeriesDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java similarity index 53% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListSeriesDTO.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java index 5ff3bcb8c3f..7757144d0d8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceListSeriesDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java @@ -4,52 +4,51 @@ import java.util.Collection; import java.util.TreeMap; import com.google.gwt.user.client.rpc.IsSerializable; +import com.sap.sailing.gwt.ui.shared.dispatch.DTO; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; -public class RaceListSeriesDTO implements IsSerializable { - +public class RaceCompetitionFormatSeriesDTO implements DTO, IsSerializable { + private String seriesName; private int raceCount = 0; private int competitorCount = (int) (Math.random() * 10); // TODO - private TreeMap fleets = new TreeMap<>(); + private TreeMap fleets = new TreeMap<>(); - @SuppressWarnings("unused") - private RaceListSeriesDTO() { + protected RaceCompetitionFormatSeriesDTO() { } - - public RaceListSeriesDTO(String seriesName) { + + public RaceCompetitionFormatSeriesDTO(String seriesName) { this.seriesName = seriesName; } public void addRace(RaceListRaceDTO race) { - RaceListFleetDTO fleet = ensureFleet(race.getFleet()); + RaceCompetitionFormatFleetDTO fleet = ensureFleet(race.getFleet()); fleet.addRace(race); raceCount++; } - - private RaceListFleetDTO ensureFleet(FleetMetadataDTO fleetData) { - RaceListFleetDTO fleet = fleets.get(fleetData); + + private RaceCompetitionFormatFleetDTO ensureFleet(FleetMetadataDTO fleetData) { + RaceCompetitionFormatFleetDTO fleet = fleets.get(fleetData); if (fleet == null) { - fleets.put(fleetData, fleet = new RaceListFleetDTO(fleetData)); + fleets.put(fleetData, fleet = new RaceCompetitionFormatFleetDTO(fleetData)); } return fleet; } - + public String getSeriesName() { return seriesName; } - + public int getRaceCount() { return raceCount; } - + public int getCompetitorCount() { return competitorCount; } - - public Collection getFleets() { + + public Collection getFleets() { return fleets.values(); } - } From 521a8132646f44b17739f153793f3c13368b3d7b Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 22 Jul 2015 12:32:13 +0200 Subject: [PATCH 006/504] Competition Format - Adjustment of UI components for competition format view --- .../images/home/skip-forward.png | Bin 0 -> 1069 bytes .../raceCompetition/RegattaCompetition.gss | 4 ++-- .../RegattaCompetitionFleetRace.java | 17 ++++++++++------- 3 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/images/home/skip-forward.png diff --git a/java/com.sap.sailing.gwt.ui/images/home/skip-forward.png b/java/com.sap.sailing.gwt.ui/images/home/skip-forward.png new file mode 100644 index 0000000000000000000000000000000000000000..4567a8846223adb85d73d36f2ca5d90cb84537bf GIT binary patch literal 1069 zcmbVLJ8#oa6n0cZQPrXjFu-)>EJ!r=y^a$<)U-|Fqzxh^N>jBGuR8W^W2Jsz-;y*8 z1g2K11Pm;Qr7WmRe*i_ILm4Xg0f>LV1Oo#T;X04PP<6nPea}5U-*?{IrTN*hk*gyN z!;BT?v@$)1={tJiJpJy!d^=8$D;V%So}{4?eKKGE?kQq6mv#7T2t~mX8-& z^A)32Hx!edo&u9il@i#P=%8t@JAv9vv0Yx3%AuNPLDz)TQ*1A&&-&|G8TE6d#-coFh5Kra#Mx((s;+*TR z@kmh=9tyl5#Hd9q*mQ{Aj5$Gcz@Xv4@GXy6t^-0wz3Og|6iXxRrC@u-;t8=6^b18x z#y543M;zpBJIt$V9gs5q8^)>DL1oj!d>IGshHub*tVRc5TD!9yg@!a5^_FkZrs(UM zYi!uqAq6eP(m$MOnJSFS5Ftr~k^qx3Lb9Aq=0%vzy!wTv?NKn1XSXJ(9K+lOSw48Wzw01Eaz$F zJ*@dZRpV(ed^jHejLSepXD}2`hM!(e)(1OuXMDOGyOrNHx>&ahTDsEwTK(1ObRuAC z^ytmZ=k`we=(scPUA`OHdfvXVa;?3WSprWcwihEqucF$EORx3n;kn1VKlwZFN;@CF uf%o^6XV=GPF1Ch`X4_vPTlb>}qu`L)e)Qv0eJ{EgE^r|?ukB}6p8f& Date: Wed, 22 Jul 2015 12:34:11 +0200 Subject: [PATCH 007/504] Competition Format - Implemented first version of data calculation for competition format view --- .../RaceCompetitionFormatDataCalculator.java | 31 ++++++++++++++++ .../event/RaceCompetitionFormatSeriesDTO.java | 13 ++++--- .../ui/shared/dispatch/event/RaceContext.java | 35 ++++++++++++------- .../ui/shared/race/SimpleRaceMetadataDTO.java | 2 +- 4 files changed, 64 insertions(+), 17 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java new file mode 100644 index 00000000000..64406ec9430 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java @@ -0,0 +1,31 @@ +package com.sap.sailing.gwt.ui.shared.dispatch.event; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.RaceCallback; + +public class RaceCompetitionFormatDataCalculator implements RaceCallback { + + private final Map seriesMap = new HashMap<>(); + + @Override + public void doForRace(RaceContext context) { + RaceCompetitionFormatSeriesDTO series = ensureSeries(context.getSeriesName()); + series.addRace(context.getFleetMetadata(), context.getRaceCompetitionFormat()); + } + + private RaceCompetitionFormatSeriesDTO ensureSeries(String seriesName) { + RaceCompetitionFormatSeriesDTO series = seriesMap.get(seriesName); + if (series == null) { + seriesMap.put(seriesName, series = new RaceCompetitionFormatSeriesDTO(seriesName)); + } + return series; + } + + public Collection getResult() { + return seriesMap.values(); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java index 7757144d0d8..812894fa8fb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java @@ -3,11 +3,11 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; import java.util.Collection; import java.util.TreeMap; -import com.google.gwt.user.client.rpc.IsSerializable; import com.sap.sailing.gwt.ui.shared.dispatch.DTO; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; -public class RaceCompetitionFormatSeriesDTO implements DTO, IsSerializable { +public class RaceCompetitionFormatSeriesDTO implements DTO, Comparable { private String seriesName; private int raceCount = 0; @@ -21,8 +21,8 @@ public class RaceCompetitionFormatSeriesDTO implements DTO, IsSerializable { this.seriesName = seriesName; } - public void addRace(RaceListRaceDTO race) { - RaceCompetitionFormatFleetDTO fleet = ensureFleet(race.getFleet()); + public void addRace(FleetMetadataDTO fleetMetadata, SimpleRaceMetadataDTO race) { + RaceCompetitionFormatFleetDTO fleet = ensureFleet(fleetMetadata); fleet.addRace(race); raceCount++; } @@ -50,5 +50,10 @@ public class RaceCompetitionFormatSeriesDTO implements DTO, IsSerializable { public Collection getFleets() { return fleets.values(); } + + @Override + public int compareTo(RaceCompetitionFormatSeriesDTO o) { + return seriesName.compareTo(o.seriesName); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceContext.java index 280bb55e7aa..c7e24aedc91 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceContext.java @@ -50,6 +50,7 @@ import com.sap.sailing.gwt.ui.shared.race.FlagStateDTO; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.RaceProgressDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingState; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceViewState; import com.sap.sailing.gwt.ui.shared.race.wind.SimpleWindDTO; @@ -337,8 +338,8 @@ public class RaceContext { // and special flags states indicating how the postponed/canceled races will be continued if (isLiveOrOfPublicInterest()) { // the start time is always given for live races - LiveRaceDTO liveRaceDTO = new LiveRaceDTO(getLeaderboardName(), trackedRace != null ? trackedRace.getRaceIdentifier(): null, raceColumn.getName()); - fillRaceData(liveRaceDTO); + LiveRaceDTO liveRaceDTO = new LiveRaceDTO(getLeaderboardName(), getRaceIdentifierOrNull(), getRaceName()); + fillRaceMetadata(liveRaceDTO); liveRaceDTO.setFlagState(getFlagStateOrNull()); liveRaceDTO.setProgress(getProgressOrNull()); liveRaceDTO.setWind(getWindOrNull()); @@ -352,8 +353,8 @@ public class RaceContext { // and special flags states indicating how the postponed/canceled races will be continued if (getLiveRaceViewState() == RaceViewState.FINISHED) { // the start time is always given for live races - RaceListRaceDTO liveRaceDTO = new RaceListRaceDTO(getLeaderboardName(), trackedRace != null ? trackedRace.getRaceIdentifier(): null, raceColumn.getName()); - fillRaceData(liveRaceDTO); + RaceListRaceDTO liveRaceDTO = new RaceListRaceDTO(getLeaderboardName(), getRaceIdentifierOrNull(), getRaceName()); + fillRaceMetadata(liveRaceDTO); liveRaceDTO.setDuration(getDurationOrNull()); liveRaceDTO.setWinner(getWinnerOrNull()); liveRaceDTO.setWindSourcesCount(getWindSourceCount()); @@ -364,6 +365,12 @@ public class RaceContext { } return null; } + + public SimpleRaceMetadataDTO getRaceCompetitionFormat() { + SimpleRaceMetadataDTO raceDTO = new SimpleRaceMetadataDTO(getLeaderboardName(), getRaceIdentifierOrNull(), getRaceName()); + fillSimpleRaceMetadata(raceDTO); + return raceDTO; + } private int getAudioCount() { return getMediaCount(MediaType.audio); @@ -436,13 +443,17 @@ public class RaceContext { } return null; } - - private void fillRaceData(RaceMetadataDTO dto) { - dto.setViewState(getLiveRaceViewState()); - dto.setRegattaDisplayName(getRegattaDisplayName()); - dto.setTrackingState(getRaceTrackingState()); - dto.setFleet(getFleetMetadataOrNull()); + + private void fillSimpleRaceMetadata(SimpleRaceMetadataDTO dto) { dto.setStart(getStartTimeAsDate()); + dto.setViewState(getLiveRaceViewState()); + dto.setTrackingState(getRaceTrackingState()); + } + + private void fillRaceMetadata(RaceMetadataDTO dto) { + fillSimpleRaceMetadata(dto); + dto.setRegattaDisplayName(getRegattaDisplayName()); + dto.setFleet(getFleetMetadataOrNull()); dto.setBoatClass(HomeServiceUtil.getBoatClassName(leaderboard)); dto.setCourseArea(getCourseAreaOrNull()); dto.setCourse(getCourseNameOrNull()); @@ -560,8 +571,8 @@ public class RaceContext { return getRegattaDisplayName() + " - " + raceColumn.getName(); } - public RegattaAndRaceIdentifier getRaceIdentifier() { - return trackedRace.getRaceIdentifier(); + public RegattaAndRaceIdentifier getRaceIdentifierOrNull() { + return trackedRace == null ? null : trackedRace.getRaceIdentifier(); } public String getSeriesName() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/SimpleRaceMetadataDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/SimpleRaceMetadataDTO.java index 68d1302c5be..b68899b74a9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/SimpleRaceMetadataDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/SimpleRaceMetadataDTO.java @@ -109,7 +109,7 @@ public class SimpleRaceMetadataDTO implements DTO, Comparable Date: Wed, 22 Jul 2015 12:34:47 +0200 Subject: [PATCH 008/504] Competition Format - Show competition format data in UI --- .../regatta/tabs/RegattaRacesTabView.java | 14 +++++++- .../GetCompetitionFormatRacesAction.java | 34 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetCompetitionFormatRacesAction.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index 3d16c104bb0..5fa5fbe8aaa 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -28,6 +28,7 @@ import com.sap.sailing.gwt.home.client.place.event.partials.listNavigation.ListN import com.sap.sailing.gwt.home.client.place.event.partials.listNavigation.RaceStateLegend; import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListItem; import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListStepsLegend; +import com.sap.sailing.gwt.home.client.place.event.partials.raceCompetition.RegattaCompetitionSeries; import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLive; import com.sap.sailing.gwt.home.client.place.event.partials.racelist.AbstractRaceList; import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListColumnFactory; @@ -44,9 +45,12 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; import com.sap.sailing.gwt.ui.shared.RaceGroupDTO; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetCompetitionFormatRacesAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetFinishedRacesAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForRegattaAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaWithProgressAction; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatSeriesDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListRaceDTO; import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaWithProgressDTO; import com.sap.sse.common.Util.Triple; @@ -136,7 +140,15 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView>() { + @Override + public void setData(SortedSetResult data) { + compFormatContainerUi.clear(); + for (RaceCompetitionFormatSeriesDTO series : data.getValues()) { + compFormatContainerUi.add(new RegattaCompetitionSeries(currentPresenter, series)); + } + } + }, new GetCompetitionFormatRacesAction(myPlace.getCtx().getEventDTO().getId(), myPlace.getRegattaId())); oldContentContainer.removeFromParent(); } else { regattaProgressLegendUi.removeFromParent(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetCompetitionFormatRacesAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetCompetitionFormatRacesAction.java new file mode 100644 index 00000000000..2161584e24a --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetCompetitionFormatRacesAction.java @@ -0,0 +1,34 @@ +package com.sap.sailing.gwt.ui.shared.dispatch.event; + +import java.util.UUID; + +import com.google.gwt.core.shared.GwtIncompatible; +import com.sap.sailing.gwt.ui.shared.dispatch.Action; +import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext; +import com.sap.sailing.gwt.ui.shared.dispatch.DispatchException; +import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL; +import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult; + +public class GetCompetitionFormatRacesAction implements Action>> { + + private UUID eventId; + private String regattaId; + + protected GetCompetitionFormatRacesAction() { + } + + public GetCompetitionFormatRacesAction(UUID eventId, String regattaId) { + this.eventId = eventId; + this.regattaId = regattaId; + } + + @Override + @GwtIncompatible + public ResultWithTTL> execute(DispatchContext context) throws DispatchException { + RaceCompetitionFormatDataCalculator competitionFormatDataCalculator = new RaceCompetitionFormatDataCalculator(); + EventActionUtil.forRacesOfRegatta(context, eventId, regattaId, competitionFormatDataCalculator); + long timeToLive = EventActionUtil.getEventStateDependentTTL(context, eventId, 60 * 1000); + return new ResultWithTTL<>(timeToLive, new SortedSetResult<>(competitionFormatDataCalculator.getResult())); + } + +} From 9422cdd951fee873e9a149d7961780d705703f53 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 22 Jul 2015 13:04:56 +0200 Subject: [PATCH 009/504] Adjusted ListResult to work with any Collection subclass --- .../com/sap/sailing/gwt/ui/shared/dispatch/ListResult.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/ListResult.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/ListResult.java index 6df09bc8878..993c0526d71 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/ListResult.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/ListResult.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.ui.shared.dispatch; import java.util.ArrayList; +import java.util.Collection; import java.util.List; public class ListResult implements CollectionResult { @@ -10,7 +11,7 @@ public class ListResult implements CollectionResult { private ListResult() { } - public ListResult(List values) { + public ListResult(Collection values) { super(); this.values.addAll(values); } From b0e4c12895b504400181c3b35fb0ad7d6d6a60b0 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 22 Jul 2015 13:05:21 +0200 Subject: [PATCH 010/504] Competition Format - Adjusted ordering of competition format data --- .../place/event/regatta/tabs/RegattaRacesTabView.java | 6 +++--- .../dispatch/event/GetCompetitionFormatRacesAction.java | 8 ++++---- .../event/RaceCompetitionFormatDataCalculator.java | 4 ++-- .../dispatch/event/RaceCompetitionFormatSeriesDTO.java | 7 +------ 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index 5fa5fbe8aaa..cafd0a2ce6c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -45,7 +45,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; import com.sap.sailing.gwt.ui.shared.RaceGroupDTO; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; -import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult; +import com.sap.sailing.gwt.ui.shared.dispatch.ListResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetCompetitionFormatRacesAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetFinishedRacesAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForRegattaAction; @@ -140,9 +140,9 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView>() { + refreshManager.add(new RefreshableWidget>() { @Override - public void setData(SortedSetResult data) { + public void setData(ListResult data) { compFormatContainerUi.clear(); for (RaceCompetitionFormatSeriesDTO series : data.getValues()) { compFormatContainerUi.add(new RegattaCompetitionSeries(currentPresenter, series)); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetCompetitionFormatRacesAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetCompetitionFormatRacesAction.java index 2161584e24a..40304d551d6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetCompetitionFormatRacesAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetCompetitionFormatRacesAction.java @@ -6,10 +6,10 @@ import com.google.gwt.core.shared.GwtIncompatible; import com.sap.sailing.gwt.ui.shared.dispatch.Action; import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext; import com.sap.sailing.gwt.ui.shared.dispatch.DispatchException; +import com.sap.sailing.gwt.ui.shared.dispatch.ListResult; import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL; -import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult; -public class GetCompetitionFormatRacesAction implements Action>> { +public class GetCompetitionFormatRacesAction implements Action>> { private UUID eventId; private String regattaId; @@ -24,11 +24,11 @@ public class GetCompetitionFormatRacesAction implements Action> execute(DispatchContext context) throws DispatchException { + public ResultWithTTL> execute(DispatchContext context) throws DispatchException { RaceCompetitionFormatDataCalculator competitionFormatDataCalculator = new RaceCompetitionFormatDataCalculator(); EventActionUtil.forRacesOfRegatta(context, eventId, regattaId, competitionFormatDataCalculator); long timeToLive = EventActionUtil.getEventStateDependentTTL(context, eventId, 60 * 1000); - return new ResultWithTTL<>(timeToLive, new SortedSetResult<>(competitionFormatDataCalculator.getResult())); + return new ResultWithTTL<>(timeToLive, new ListResult<>(competitionFormatDataCalculator.getResult())); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java index 64406ec9430..9f0b62cefa6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java @@ -1,14 +1,14 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; import java.util.Collection; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.RaceCallback; public class RaceCompetitionFormatDataCalculator implements RaceCallback { - private final Map seriesMap = new HashMap<>(); + private final Map seriesMap = new LinkedHashMap<>(); @Override public void doForRace(RaceContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java index 812894fa8fb..b2907179818 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java @@ -7,7 +7,7 @@ import com.sap.sailing.gwt.ui.shared.dispatch.DTO; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; -public class RaceCompetitionFormatSeriesDTO implements DTO, Comparable { +public class RaceCompetitionFormatSeriesDTO implements DTO { private String seriesName; private int raceCount = 0; @@ -50,10 +50,5 @@ public class RaceCompetitionFormatSeriesDTO implements DTO, Comparable getFleets() { return fleets.values(); } - - @Override - public int compareTo(RaceCompetitionFormatSeriesDTO o) { - return seriesName.compareTo(o.seriesName); - } } From 51df18485a2b994c8cd7bb9a80fe4649e9e62ca1 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 22 Jul 2015 15:01:23 +0200 Subject: [PATCH 011/504] Competition Format - Did some I18n in competition format view --- .../raceCompetition/RegattaCompetitionFleet.java | 6 +++++- .../raceCompetition/RegattaCompetitionSeries.java | 9 +++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java index 21f40e8e7cf..833dc76329c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java @@ -3,14 +3,17 @@ package com.sap.sailing.gwt.home.client.place.event.partials.raceCompetition; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.Style.Display; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; public class RegattaCompetitionFleet extends Widget { + private static final StringMessages I18N = StringMessages.INSTANCE; private static RegattaCompetitionFleetUiBinder uiBinder = GWT.create(RegattaCompetitionFleetUiBinder.class); interface RegattaCompetitionFleetUiBinder extends UiBinder { @@ -23,7 +26,8 @@ public class RegattaCompetitionFleet extends Widget { public RegattaCompetitionFleet(RaceCompetitionFormatFleetDTO fleet) { setElement(uiBinder.createAndBindUi(this)); - this.competitorCountUi.setInnerText(fleet.getCompetitorCount() + " Comp. TODO"); + this.competitorCountUi.setInnerText(I18N.competitorsCount(fleet.getCompetitorCount())); + this.competitorCountUi.getStyle().setDisplay(fleet.getCompetitorCount() == 0 ? Display.NONE : Display.BLOCK); if (fleet.getFleet() != null) { fleetNameUi.setInnerText(fleet.getFleet().getFleetName()); fleetCornerUi.getStyle().setProperty("borderTopColor", fleet.getFleet().getFleetColor()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java index 368df4787a1..3e59a9eae29 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java @@ -7,6 +7,7 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; +import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatSeriesDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; @@ -14,6 +15,7 @@ import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingStat public class RegattaCompetitionSeries extends Composite { + private static final StringMessages I18N = StringMessages.INSTANCE; private static RegattaCompetitionSeriesUiBinder uiBinder = GWT.create(RegattaCompetitionSeriesUiBinder.class); interface RegattaCompetitionSeriesUiBinder extends UiBinder { @@ -27,8 +29,11 @@ public class RegattaCompetitionSeries extends Composite { public RegattaCompetitionSeries(Presenter presenter, RaceCompetitionFormatSeriesDTO series) { initWidget(containerUi = uiBinder.createAndBindUi(this)); this.seriesNameUi.setInnerText(series.getSeriesName()); - this.competitorCountUi.setInnerText(series.getCompetitorCount() + " Comp. TODO"); - this.raceCountUi.setInnerText(series.getRaceCount() + " Races TODO"); + this.competitorCountUi.setInnerText(I18N.competitorsCount(series.getCompetitorCount())); + if (series.getCompetitorCount() == 0) { + this.competitorCountUi.removeFromParent(); + } + this.raceCountUi.setInnerText(I18N.racesCount(series.getRaceCount())); for (RaceCompetitionFormatFleetDTO fleet : series.getFleets()) { addFleet(presenter, fleet); } From ca0862d0cf18a765adf3dfb4e61ba803973118a6 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 22 Jul 2015 15:01:55 +0200 Subject: [PATCH 012/504] Competition Format - Adjustment of UI components style for competition format view --- .../place/event/partials/raceCompetition/RegattaCompetition.gss | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetition.gss index cda497b5ae0..1acc5dc3c90 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetition.gss @@ -158,6 +158,7 @@ color: #999; background-color: #fff; border: 1px solid #999; + padding: 0.266666666666666em 0.266666666666666em; } .fleet_races_raceplanned:hover { background-color: #e6e6e6; From 26af0c71ed6779ee8eaa82ee469c6e5d00270e56 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 22 Jul 2015 16:00:29 +0200 Subject: [PATCH 013/504] Competition Format - Adjusted ordering of competition format data --- .../gwt/ui/shared/race/RaceMetadataDTO.java | 37 +++++++++++-------- .../ui/shared/race/SimpleRaceMetadataDTO.java | 9 ++--- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/RaceMetadataDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/RaceMetadataDTO.java index 7c2a9e40dcc..d45305e74d7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/RaceMetadataDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/RaceMetadataDTO.java @@ -73,25 +73,30 @@ public abstract class RaceMetadataDTO extends Simp public void setRegattaDisplayName(String regattaDisplayName) { this.regattaDisplayName = regattaDisplayName; } - + @Override - protected int compareBySecondaryCriteria(T o) { + public int compareTo(SimpleRaceMetadataDTO o) { if (o instanceof RaceMetadataDTO) { RaceMetadataDTO other = (RaceMetadataDTO) o; - int compareByRegattaName = Util.compareToWithNull(getRegattaName(), other.getRegattaName(), true); - if(compareByRegattaName != 0) { - return compareByRegattaName; - } - int compareByRaceName = getRaceName().compareTo(o.getRaceName()); - if(compareByRaceName != 0) { - return compareByRaceName; - } - int compareByFleet = Util.compareToWithNull(getFleet(), other.getFleet(), true); - if(compareByFleet != 0) { - return compareByFleet; - } - return getViewState().compareTo(o.getViewState()); + final int compareByStart = Util.compareToWithNull(getStart(), other.getStart(), false); + return compareByStart != 0 ? compareByStart : compareBySecondaryCriteria(other); } - return super.compareBySecondaryCriteria(o); + return super.compareTo(o); + } + + private int compareBySecondaryCriteria(RaceMetadataDTO other) { + int compareByRegattaName = Util.compareToWithNull(getRegattaName(), other.getRegattaName(), true); + if(compareByRegattaName != 0) { + return compareByRegattaName; + } + int compareByRaceName = getRaceName().compareTo(other.getRaceName()); + if(compareByRaceName != 0) { + return compareByRaceName; + } + int compareByFleet = Util.compareToWithNull(getFleet(), other.getFleet(), true); + if(compareByFleet != 0) { + return compareByFleet; + } + return getViewState().compareTo(other.getViewState()); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/SimpleRaceMetadataDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/SimpleRaceMetadataDTO.java index b68899b74a9..5a6d5d1b335 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/SimpleRaceMetadataDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/SimpleRaceMetadataDTO.java @@ -3,6 +3,7 @@ package com.sap.sailing.gwt.ui.shared.race; import java.util.Date; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; +import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.DTO; import com.sap.sse.common.Util; @@ -109,11 +110,7 @@ public class SimpleRaceMetadataDTO implements DTO, Comparable int compareBySecondaryCriteria(T o) { - return getRaceName().compareTo(o.getRaceName()); + final int compareByRaceName = new NaturalComparator().compare(getRaceName(), o.getRaceName()); + return compareByRaceName != 0 ? compareByRaceName : Util.compareToWithNull(getStart(), o.getStart(), true); } } From 4f97728253c805aa918fa153729cc8c8570f0d70 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 22 Jul 2015 18:11:07 +0200 Subject: [PATCH 014/504] Competition Format - Adjusted style injection pint for competition format view --- .../partials/raceCompetition/RegattaCompetitionFleetRace.java | 1 - .../event/partials/raceCompetition/RegattaCompetitionSeries.java | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.java index d1c1021de0a..7c59c882001 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.java @@ -29,7 +29,6 @@ public class RegattaCompetitionFleetRace extends UIObject { anchorUi.setTarget("_blank"); anchorUi.setHref(raceViewerUrl); } - local_res.css().ensureInjected(); setupRaceState(race.getTrackingState(), race.getViewState()); this.raceNameUi.setInnerText(race.getRaceName()); if (race.getStart() != null) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java index 3e59a9eae29..ec5dc2513d6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java @@ -27,6 +27,7 @@ public class RegattaCompetitionSeries extends Composite { private final HTMLPanel containerUi; public RegattaCompetitionSeries(Presenter presenter, RaceCompetitionFormatSeriesDTO series) { + RegattaCompetitionResources.INSTANCE.css().ensureInjected(); initWidget(containerUi = uiBinder.createAndBindUi(this)); this.seriesNameUi.setInnerText(series.getSeriesName()); this.competitorCountUi.setInnerText(I18N.competitorsCount(series.getCompetitorCount())); From c8570aeef52e35c12d6b30ad18ddbcc20b6f02c1 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 22 Jul 2015 18:12:18 +0200 Subject: [PATCH 015/504] Competition Format - Implemented calculation of cometitors per series and per fleet for competition format data --- .../RaceCompetitionFormatDataCalculator.java | 49 +++++++++++++++---- .../event/RaceCompetitionFormatFleetDTO.java | 11 +++-- .../event/RaceCompetitionFormatSeriesDTO.java | 29 +++++------ .../ui/shared/dispatch/event/RaceContext.java | 13 +++++ 4 files changed, 72 insertions(+), 30 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java index 9f0b62cefa6..66e87b8aa8c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java @@ -1,31 +1,62 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; import java.util.Collection; +import java.util.HashSet; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.TreeMap; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.RaceCallback; +import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; public class RaceCompetitionFormatDataCalculator implements RaceCallback { - private final Map seriesMap = new LinkedHashMap<>(); + private final Map> dataPerSeriesAndFleet = new LinkedHashMap<>(); @Override public void doForRace(RaceContext context) { - RaceCompetitionFormatSeriesDTO series = ensureSeries(context.getSeriesName()); - series.addRace(context.getFleetMetadata(), context.getRaceCompetitionFormat()); + SeriesFleetData seriesFleetData = getSeriesFleetData(context.getSeriesName(), context.getFleetMetadata()); + seriesFleetData.races.add(context.getRaceCompetitionFormat()); + seriesFleetData.competitors.addAll(context.getCompetitors()); } - private RaceCompetitionFormatSeriesDTO ensureSeries(String seriesName) { - RaceCompetitionFormatSeriesDTO series = seriesMap.get(seriesName); - if (series == null) { - seriesMap.put(seriesName, series = new RaceCompetitionFormatSeriesDTO(seriesName)); + private SeriesFleetData getSeriesFleetData(String seriesName, FleetMetadataDTO fleetMetadata) { + Map dataForSeriesPerFleet = dataPerSeriesAndFleet.get(seriesName); + if (dataForSeriesPerFleet == null) { + dataPerSeriesAndFleet.put(seriesName, dataForSeriesPerFleet = new TreeMap<>()); } - return series; + SeriesFleetData seriesFleetData = dataForSeriesPerFleet.get(fleetMetadata); + if (seriesFleetData == null) { + dataForSeriesPerFleet.put(fleetMetadata, seriesFleetData = new SeriesFleetData()); + } + return seriesFleetData; } public Collection getResult() { - return seriesMap.values(); + Set result = new LinkedHashSet<>(); + for (Entry> seriesData : dataPerSeriesAndFleet.entrySet()) { + RaceCompetitionFormatSeriesDTO series = new RaceCompetitionFormatSeriesDTO(seriesData.getKey()); + Set competitorsForSeries = new HashSet<>(); + for (Entry fleetData : seriesData.getValue().entrySet()) { + competitorsForSeries.addAll(fleetData.getValue().competitors); + int competitorCountForFleet = fleetData.getValue().competitors.size(); + RaceCompetitionFormatFleetDTO fleet = new RaceCompetitionFormatFleetDTO(fleetData.getKey(), competitorCountForFleet); + fleet.addRaces(fleetData.getValue().races); + series.addFleet(fleet); + } + series.setCompetitorCount(competitorsForSeries.size()); + result.add(series); + } + return result; + } + + private class SeriesFleetData { + private final Set races = new HashSet<>(); + private final Set competitors = new HashSet<>(); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatFleetDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatFleetDTO.java index 5899dbc2580..ffb3abb8776 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatFleetDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatFleetDTO.java @@ -10,18 +10,23 @@ import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; public class RaceCompetitionFormatFleetDTO implements IsSerializable { private FleetMetadataDTO fleet; - private int competitorCount = (int) (Math.random() * 10); // TODO + private int competitorCount = 0; private TreeSet races = new TreeSet<>(); protected RaceCompetitionFormatFleetDTO() { } - public RaceCompetitionFormatFleetDTO(FleetMetadataDTO fleet) { + public RaceCompetitionFormatFleetDTO(FleetMetadataDTO fleet, int competitorCount) { this.fleet = fleet; + this.competitorCount = competitorCount; } public void addRace(SimpleRaceMetadataDTO race) { - races.add(race); + this.races.add(race); + } + + public void addRaces(Collection races) { + this.races.addAll(races); } public FleetMetadataDTO getFleet() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java index b2907179818..71f4e1e07c1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java @@ -1,18 +1,16 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; +import java.util.ArrayList; import java.util.Collection; -import java.util.TreeMap; import com.sap.sailing.gwt.ui.shared.dispatch.DTO; -import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; -import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; public class RaceCompetitionFormatSeriesDTO implements DTO { private String seriesName; private int raceCount = 0; - private int competitorCount = (int) (Math.random() * 10); // TODO - private TreeMap fleets = new TreeMap<>(); + private int competitorCount = 0; + private ArrayList fleets = new ArrayList<>(); protected RaceCompetitionFormatSeriesDTO() { } @@ -20,19 +18,14 @@ public class RaceCompetitionFormatSeriesDTO implements DTO { public RaceCompetitionFormatSeriesDTO(String seriesName) { this.seriesName = seriesName; } - - public void addRace(FleetMetadataDTO fleetMetadata, SimpleRaceMetadataDTO race) { - RaceCompetitionFormatFleetDTO fleet = ensureFleet(fleetMetadata); - fleet.addRace(race); - raceCount++; + + public void addFleet(RaceCompetitionFormatFleetDTO fleet) { + fleets.add(fleet); + raceCount += fleet.getRaces().size(); } - - private RaceCompetitionFormatFleetDTO ensureFleet(FleetMetadataDTO fleetData) { - RaceCompetitionFormatFleetDTO fleet = fleets.get(fleetData); - if (fleet == null) { - fleets.put(fleetData, fleet = new RaceCompetitionFormatFleetDTO(fleetData)); - } - return fleet; + + public void setCompetitorCount(int competitorCount) { + this.competitorCount = competitorCount; } public String getSeriesName() { @@ -48,7 +41,7 @@ public class RaceCompetitionFormatSeriesDTO implements DTO { } public Collection getFleets() { - return fleets.values(); + return fleets; } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceContext.java index c7e24aedc91..a593444a6da 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceContext.java @@ -1,8 +1,11 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; import java.util.Arrays; +import java.util.Collection; import java.util.Date; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; @@ -597,4 +600,14 @@ public class RaceContext { public boolean isLive() { return getLiveRaceViewState() == RaceViewState.RUNNING; } + + public Collection getCompetitors() { + Set compotitorDTOs = new HashSet<>(); + if (raceDefinition != null) { + for (Competitor competitor : raceDefinition.getCompetitors()) { + compotitorDTOs.add(new SimpleCompetitorDTO(competitor)); + } + } + return compotitorDTOs; + } } From 38a1b59d7f69ea4d649520b900cfa0b97b7298b1 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 23 Jul 2015 17:48:58 +0200 Subject: [PATCH 016/504] Races - Added additional label for races view format navigation --- .../java/com/sap/sailing/gwt/ui/client/StringMessages.java | 2 ++ .../com/sap/sailing/gwt/ui/client/StringMessages.properties | 2 ++ .../sap/sailing/gwt/ui/client/StringMessages_de.properties | 2 ++ .../sap/sailing/gwt/ui/client/StringMessages_ru.properties | 2 ++ .../sap/sailing/gwt/ui/client/StringMessages_zh.properties | 4 +++- 5 files changed, 11 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 8ea867e7b6e..261ff50071e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1353,4 +1353,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String currentOfTotal(int current, int total); String noFinishedRaces(); String racesOverview(); + String listFormatLabel(); + String competitionFormatLabel(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 4061584d7f0..d2ef03d2fd9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1322,3 +1322,5 @@ miniLeeaderboardLegendText=Shows the points along with the number of races per c currentOfTotal={0,number}/{1,number} noFinishedRaces=There are no finished races yet racesOverview=Races overview +listFormatLabel=List format +competitionFormatLabel=Competition format \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index a665440aebb..4cb220f2e9c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1312,3 +1312,5 @@ miniLeeaderboardLegendText=Es werden die Punkte und die Anzahl Rennen je Team an currentOfTotal={0,number}/{1,number} noFinishedRaces=Es wurden noch keine Wettfahrten beendet. racesOverview=Wettfahrtübersicht +listFormatLabel=Listenansicht +competitionFormatLabel=Wettbewerbsansicht \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 68aa8d152bb..9b0189e2d1f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1259,3 +1259,5 @@ miniLeeaderboardLegendText=Shows points along with the number of races per compe currentOfTotal={0,number}/{1,number} noFinishedRaces=There are no finished races yet racesOverview=Races overview +listFormatLabel=List format +competitionFormatLabel=Competition format \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 7f984048f04..9945080940c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1305,4 +1305,6 @@ degreesToWind={0}° to wind miniLeeaderboardLegendText=Shows points along with the number of races per competitor currentOfTotal={0,number}/{1,number} noFinishedRaces=There are no finished races yet -racesOverview=Races overview \ No newline at end of file +racesOverview=Races overview +listFormatLabel=List format +competitionFormatLabel=Competition format \ No newline at end of file From ec27930b7ea40dd60d40614b1ee0c6b56620ec8d Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 23 Jul 2015 17:50:32 +0200 Subject: [PATCH 017/504] Races - Used new labels for races view format navigation --- .../client/place/event/regatta/tabs/RegattaRacesTabView.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index cafd0a2ce6c..8bb05f5adb7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -63,8 +63,8 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView Date: Thu, 23 Jul 2015 17:51:01 +0200 Subject: [PATCH 018/504] Competition Format - Replaced series label in case of default series --- .../partials/raceCompetition/RegattaCompetitionSeries.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java index ec5dc2513d6..5c11604c2ea 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java @@ -1,5 +1,7 @@ package com.sap.sailing.gwt.home.client.place.event.partials.raceCompetition; +import static com.sap.sailing.domain.common.LeaderboardNameConstants.DEFAULT_SERIES_NAME; + import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; import com.google.gwt.uibinder.client.UiBinder; @@ -29,7 +31,7 @@ public class RegattaCompetitionSeries extends Composite { public RegattaCompetitionSeries(Presenter presenter, RaceCompetitionFormatSeriesDTO series) { RegattaCompetitionResources.INSTANCE.css().ensureInjected(); initWidget(containerUi = uiBinder.createAndBindUi(this)); - this.seriesNameUi.setInnerText(series.getSeriesName()); + this.seriesNameUi.setInnerText(DEFAULT_SERIES_NAME.equals(series.getSeriesName()) ? I18N.races() : series.getSeriesName()); this.competitorCountUi.setInnerText(I18N.competitorsCount(series.getCompetitorCount())); if (series.getCompetitorCount() == 0) { this.competitorCountUi.removeFromParent(); From e46878d3011abe74c120a6b721c3bac0046d23d7 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 29 Jul 2015 11:22:00 +0200 Subject: [PATCH 019/504] Competition Format - Adjusted refresh behavior in RegattaRacesTabView --- .../regatta/tabs/RegattaRacesTabView.java | 47 +++++++++++++++---- .../regatta/tabs/reload/ActionProvider.java | 22 +++++++-- .../regatta/tabs/reload/RefreshManager.java | 7 ++- 3 files changed, 63 insertions(+), 13 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index 8bb05f5adb7..972f3367004 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -4,6 +4,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.AnchorElement; @@ -38,6 +39,7 @@ import com.sap.sailing.gwt.home.client.place.event.partials.racelist.SortableRac import com.sap.sailing.gwt.home.client.place.event.partials.regattaraces.EventRegattaRaces; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.ActionProvider.AbstractActionProvider; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; @@ -45,7 +47,10 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; import com.sap.sailing.gwt.ui.shared.RaceGroupDTO; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.Action; +import com.sap.sailing.gwt.ui.shared.dispatch.DTO; import com.sap.sailing.gwt.ui.shared.dispatch.ListResult; +import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetCompetitionFormatRacesAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetFinishedRacesAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForRegattaAction; @@ -101,7 +106,9 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView raceListContainerUi; @UiField AnchorElement regattaOverviewUi; - + private Navigation currentlySelectedTab = Navigation.SORT_LIST_FORMAT; + private RefreshManager refreshManager; + @Override public void setPresenter(Presenter currentPresenter) { this.currentPresenter = currentPresenter; @@ -126,21 +133,23 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView() { @Override public void setData(RegattaWithProgressDTO data) { regattaInfoContainerUi.setWidget(new MultiRegattaListItem(data, true)); } - }, new GetRegattaWithProgressAction(myPlace.getCtx().getEventDTO().getId(), myPlace.getRegattaId())); - refreshManager.add(raceListContainerUi, new GetFinishedRacesAction(myPlace.getCtx().getEventDTO().getId(), myPlace.getRegattaId())); - refreshManager.add(new RefreshableWidget>() { + }, new GetRegattaWithProgressAction(eventId, regattaId)); + addRacesAction(liveRacesListUi.getRefreshable(), new GetLiveRacesForRegattaAction(eventId, regattaId), Navigation.SORT_LIST_FORMAT); + addRacesAction(raceListContainerUi, new GetFinishedRacesAction(eventId, regattaId), Navigation.SORT_LIST_FORMAT); + addRacesAction(new RefreshableWidget>() { @Override public void setData(ListResult data) { compFormatContainerUi.clear(); @@ -148,7 +157,7 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView>> void addRacesAction( + RefreshableWidget widget, A action, Navigation assosiatedTab) { + refreshManager.add(widget, new RegattaRacesTabViewActionProvider<>(action, assosiatedTab)); + } + @Override public void stop() { } @@ -214,8 +228,11 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView { + @Override public void onSelectAction(Navigation action) { + RegattaRacesTabView.this.currentlySelectedTab = action; + RegattaRacesTabView.this.refreshManager.forceReschule(); showWidget(listFormatContainerUi, action == Navigation.SORT_LIST_FORMAT); showWidget(compFormatContainerUi, action == Navigation.COMPETITION_FORMAT); } @@ -229,6 +246,20 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView> extends AbstractActionProvider { + private final Navigation assosiatedTab; + + public RegattaRacesTabViewActionProvider(A action, Navigation assosiatedTab) { + super(action); + this.assosiatedTab = assosiatedTab; + } + + @Override + public boolean isActive() { + return assosiatedTab == currentlySelectedTab; + } + } + private class RaceListFinishedRaces extends AbstractRaceList { private final SortableRaceListColumn durationColumn = RaceListColumnFactory.getDurationColumn(); private final SortableRaceListColumn windSpeedColumn = RaceListColumnFactory.getWindRangeColumn(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/ActionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/ActionProvider.java index ca0a80cbf54..d667b048854 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/ActionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/ActionProvider.java @@ -5,11 +5,13 @@ import com.sap.sailing.gwt.ui.shared.dispatch.Action; public interface ActionProvider> { A getAction(); - - public class DefaultActionProvider> implements ActionProvider { + + boolean isActive(); + + public abstract class AbstractActionProvider> implements ActionProvider { private final A action; - - public DefaultActionProvider(A action) { + + public AbstractActionProvider(A action) { this.action = action; } @@ -18,4 +20,16 @@ public interface ActionProvider> { return action; } } + + public class DefaultActionProvider> extends AbstractActionProvider { + + public DefaultActionProvider(A action) { + super(action); + } + + @Override + public boolean isActive() { + return true; + } + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/RefreshManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/RefreshManager.java index 3740117e74b..072e7d5e30b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/RefreshManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/RefreshManager.java @@ -55,7 +55,7 @@ public class RefreshManager { for (final RefreshHolder>> refreshable : refreshables) { // Everything that needs refresh within the next 5000ms will be refreshed now. // This makes it possible to use batching resulting in less requests. - if (!refreshable.callRunning && refreshable.timeout < System.currentTimeMillis() + 5000) { + if (refreshable.provider.isActive() && !refreshable.callRunning && refreshable.timeout < System.currentTimeMillis() + 5000) { refreshable.callRunning = true; final Action> action = refreshable.provider.getAction(); actionExecutor.execute(action, new AsyncCallback>() { @@ -118,6 +118,11 @@ public class RefreshManager { } }); } + + public void forceReschule() { + timer.cancel(); + reschedule(); + } @SuppressWarnings({ "rawtypes", "unchecked" }) public >> void add(RefreshableWidget widget, From f50bcb12174f93de976ddb2538d3001d8601469e Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 7 Aug 2015 18:21:15 +0200 Subject: [PATCH 020/504] Fullscreen Competitor Chart - Added delegateability to competitor chart --- .../CompetitorChartsDelegate.java | 16 +++++ .../OldCompetitorCharts.java | 69 +++++++++++++++++-- .../OldCompetitorCharts.ui.xml | 62 +++++++++-------- .../MultiCompetitorLeaderboardChart.java | 12 ++++ 4 files changed, 125 insertions(+), 34 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/CompetitorChartsDelegate.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/CompetitorChartsDelegate.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/CompetitorChartsDelegate.java new file mode 100644 index 00000000000..1515da93f33 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/CompetitorChartsDelegate.java @@ -0,0 +1,16 @@ +package com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts; + +import com.google.gwt.event.logical.shared.CloseHandler; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.user.client.ui.ListBox; +import com.google.gwt.user.client.ui.PopupPanel; +import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart; + +public interface CompetitorChartsDelegate { + + void setCompetitorChart(MultiCompetitorLeaderboardChart competitorChart); + + ListBox getChartTypeSelectionControl(); + + HandlerRegistration addCloseHandler(CloseHandler handler); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.java index bb66418a237..fa05a1be5b8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.java @@ -7,17 +7,24 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Style.Visibility; import com.google.gwt.event.dom.client.ChangeEvent; +import com.google.gwt.event.dom.client.ChangeHandler; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.logical.shared.CloseEvent; +import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.ListBox; +import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources; import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; import com.sap.sailing.gwt.ui.client.DetailTypeFormatter; +import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart; import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChartSettings; import com.sap.sse.common.Util; @@ -30,20 +37,57 @@ public class OldCompetitorCharts extends Composite { @UiField HTMLPanel oldCompetitorChartsPanel; @UiField ListBox chartTypeSelectionListBox; + @UiField Anchor fullscreenAnchor; @UiField DivElement competitorSelectionStateUi; private final List availableDetailsTypes; private MultiCompetitorLeaderboardChart multiCompetitorChart; - + private final CompetitorChartsDelegate delegate; + public OldCompetitorCharts() { + this(null); + } + + public OldCompetitorCharts(CompetitorChartsDelegate delegate) { this.availableDetailsTypes = new ArrayList(); this.multiCompetitorChart = null; - EventRegattaLeaderboardResources.INSTANCE.css().ensureInjected(); - initWidget(uiBinder.createAndBindUi(this)); + fullscreenAnchor.setTitle(StringMessages.INSTANCE.openFullscreenView()); + this.delegate = delegate; + this.setupFullscreenDelegate(); } + private void setupFullscreenDelegate() { + if (delegate == null) { + fullscreenAnchor.removeFromParent(); + return; + } + delegate.addCloseHandler(new CloseHandler() { + @Override + public void onClose(CloseEvent event) { + if (multiCompetitorChart != null) { + multiCompetitorChart.removeFromParent(); + oldCompetitorChartsPanel.add(multiCompetitorChart); + multiCompetitorChart.forceChartToClientHeight(); + } + } + }); + delegate.getChartTypeSelectionControl().addChangeHandler(new ChangeHandler() { + @Override + public void onChange(ChangeEvent event) { + synchronizeChartTypeSelection(delegate.getChartTypeSelectionControl(), chartTypeSelectionListBox); + OldCompetitorCharts.this.updateChartType(); + multiCompetitorChart.forceMaximumChartSize(); + } + }); + } + + private void synchronizeChartTypeSelection(ListBox from, ListBox to) { + int selectedIndex = from.getSelectedIndex(); + to.setSelectedIndex(selectedIndex); + } + public void setChart(MultiCompetitorLeaderboardChart multiCompetitorChart, List availableDetailsTypes, DetailType initialDetailType) { this.multiCompetitorChart = multiCompetitorChart; this.availableDetailsTypes.clear(); @@ -56,11 +100,15 @@ public class OldCompetitorCharts extends Composite { private void fillChartTypeSelectionBox(DetailType initialDetailType) { chartTypeSelectionListBox.clear(); + if (delegate != null) delegate.getChartTypeSelectionControl().clear(); int i = 0; for (DetailType detailType : availableDetailsTypes) { - chartTypeSelectionListBox.addItem(DetailTypeFormatter.format(detailType), detailType.name()); + String formattedDetailType = DetailTypeFormatter.format(detailType); + chartTypeSelectionListBox.addItem(formattedDetailType, detailType.name()); + if (delegate != null) delegate.getChartTypeSelectionControl().addItem(formattedDetailType, detailType.name()); if (detailType == initialDetailType) { chartTypeSelectionListBox.setSelectedIndex(i); + if (delegate != null) delegate.getChartTypeSelectionControl().setSelectedIndex(i); } i++; } @@ -68,10 +116,23 @@ public class OldCompetitorCharts extends Composite { @UiHandler("chartTypeSelectionListBox") void chartTypeSelectionChanged(ChangeEvent event) { + if (delegate != null) synchronizeChartTypeSelection(chartTypeSelectionListBox, delegate.getChartTypeSelectionControl()); + updateChartType(); + } + + private void updateChartType() { DetailType selectedChartDetailType = getSelectedChartDetailType(); multiCompetitorChart.updateSettings(new MultiCompetitorLeaderboardChartSettings(selectedChartDetailType)); } + @UiHandler("fullscreenAnchor") + void fullscreenClicked(ClickEvent event) { + if(multiCompetitorChart != null && delegate != null) { + multiCompetitorChart.removeFromParent(); + delegate.setCompetitorChart(multiCompetitorChart); + } + } + public DetailType getSelectedChartDetailType() { DetailType result = null; int selectedIndex = chartTypeSelectionListBox.getSelectedIndex(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml index 4fc8dd3f63d..dd6f72b0be9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml @@ -1,36 +1,38 @@ - - + + - + .marginFix { margin-top: 2rem; - } - - - - -
-
-

-
-
- - -
-
- -
-
-
-
- - -
-
-
-
+ .toolbar { + white-space: nowrap; + } + .toolbarButton { + display: inline; + } + + +
+
+

+
+
+ + + +
+
+ +
+
+
+ +
+
+
+
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/MultiCompetitorLeaderboardChart.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/MultiCompetitorLeaderboardChart.java index 1affca24da1..49edb6c4d0a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/MultiCompetitorLeaderboardChart.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/MultiCompetitorLeaderboardChart.java @@ -1,5 +1,6 @@ package com.sap.sailing.gwt.ui.client.shared.charts; +import com.google.gwt.user.client.Window; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; @@ -50,4 +51,15 @@ public class MultiCompetitorLeaderboardChart extends AbstractCompetitorLeaderboa public String getLocalizedShortName() { return stringMessages.showCharts(); } + + public void forceMaximumChartSize() { + chart.setWidth100(); + chart.setHeight100(); + chart.redraw(); + } + + public void forceChartToClientHeight() { + chart.setSize(chart.getOffsetWidth(), Window.getClientHeight()); + chart.redraw(); + } } From 7832ac91d4447b0809c91265b7d27d14d4443eee Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 7 Aug 2015 18:21:56 +0200 Subject: [PATCH 021/504] Fullscreen Competitor Chart - Added fullscreen view to regatta competitor analytics tab --- ...petitorChartsDelegateFullscreenViewer.java | 63 +++++++++++++++++++ .../RegattaCompetitorAnalyticsTabView.java | 5 +- 2 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorChartsDelegateFullscreenViewer.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorChartsDelegateFullscreenViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorChartsDelegateFullscreenViewer.java new file mode 100644 index 00000000000..8aedb524e69 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorChartsDelegateFullscreenViewer.java @@ -0,0 +1,63 @@ +package com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts; + +import com.google.gwt.dom.client.Style.Display; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.ListBox; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.common.client.i18n.TextMessages; +import com.sap.sailing.gwt.home.shared.partials.fullscreen.FullscreenContainer; +import com.sap.sailing.gwt.ui.client.shared.charts.MultiCompetitorLeaderboardChart; +import com.sap.sse.common.Color; + +public class OldCompetitorChartsDelegateFullscreenViewer extends FullscreenContainer + implements CompetitorChartsDelegate { + + private final ListBox chartTypeSelection = new ListBox(); + + public OldCompetitorChartsDelegateFullscreenViewer() { + showLogo(); + showBorder(); + addToolbarInfo(createLabeledChartTypeSelectionControl()); + } + + @Override + protected void onShow() { + getContentWidget().forceMaximumChartSize(); + getContentWidget().onResize(); + } + + @Override + public void setCompetitorChart(MultiCompetitorLeaderboardChart competitorChart) { + showContent(competitorChart); + } + + @Override + public ListBox getChartTypeSelectionControl() { + return chartTypeSelection; + } + + private Widget createLabeledChartTypeSelectionControl() { + FlowPanel panel = getWidgetWithMarginTop(new FlowPanel(), -30, Unit.PX); + panel.add(getWidgetWitDisplay(new Label(TextMessages.INSTANCE.chooseChart() + " "), Display.INLINE)); + panel.add(getWidgetWithColor(chartTypeSelection, Color.BLACK)); + return panel; + } + + private T getWidgetWithMarginTop(T widget, double value, Unit unit) { + widget.getElement().getStyle().setMarginTop(value, unit); + return widget; + } + + private T getWidgetWithColor(T widget, Color color) { + widget.getElement().getStyle().setColor(color.getAsHtml()); + return widget; + } + + private T getWidgetWitDisplay(T widget, Display display) { + widget.getElement().getStyle().setDisplay(display); + return widget; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java index c1fee41b07f..e3f3fd5d2c1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java @@ -17,6 +17,7 @@ import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorCharts; +import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorChartsDelegateFullscreenViewer; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager; @@ -42,8 +43,8 @@ public class RegattaCompetitorAnalyticsTabView extends SharedLeaderboardRegattaT super(); } - @UiField - protected OldCompetitorCharts competitorCharts; + @UiField(provided = true) + protected OldCompetitorCharts competitorCharts = new OldCompetitorCharts(new OldCompetitorChartsDelegateFullscreenViewer()); @Override public Class getPlaceClassForActivation() { From 06cb827bd14859bdde31f0db2755c958a10f26d7 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 10 Aug 2015 14:43:59 +0200 Subject: [PATCH 022/504] Implemented calculator considering only the lastest not upcoming series event --- .../gwt/server/EventListDataCalculator.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java new file mode 100644 index 00000000000..745ce516187 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java @@ -0,0 +1,54 @@ +package com.sap.sailing.gwt.server; + +import java.net.URL; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.Map; + +import com.sap.sailing.domain.base.EventBase; +import com.sap.sailing.gwt.server.HomeServiceUtil.EventVisitor; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO; +import com.sap.sailing.gwt.ui.shared.general.EventState; +import com.sap.sailing.server.RacingEventService; + +public class EventListDataCalculator implements EventVisitor { + + private final Map lastestEventPerSeries = new HashMap<>(); + private final EventListViewDTO result = new EventListViewDTO(); + private final RacingEventService service; + + public EventListDataCalculator(RacingEventService service) { + this.service = service; + } + + @Override + public void visit(EventBase event, boolean onRemoteServer, URL baseURL) { + EventListEventDTO eventDTO = HomeServiceUtil.convertToEventListDTO(event, baseURL, onRemoteServer, service); + if (HomeServiceUtil.calculateEventState(event) != EventState.UPCOMING && HomeServiceUtil.isFakeSeries(event)) { + String seriesName = HomeServiceUtil.getSeriesName(event); + EventListEventDTO latestEvent = lastestEventPerSeries.get(seriesName); + if (latestEvent == null || latestEvent.getStartDate().before(eventDTO.getStartDate())) { + lastestEventPerSeries.put(seriesName, eventDTO); + } + } else { + result.addEvent(eventDTO, getYear(eventDTO.getStartDate())); + } + } + + public EventListViewDTO getResult() { + for (EventListEventDTO eventDTO : lastestEventPerSeries.values()) { + result.addEvent(eventDTO, getYear(eventDTO.getStartDate())); + } + return result; + } + + private int getYear(Date date) { + Calendar cal = GregorianCalendar.getInstance(); + cal.setTime(date); + return cal.get(Calendar.YEAR); + } + +} From 37bae1bc8e7649b58aec2de1489e7a07e6eaee54 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 10 Aug 2015 14:45:03 +0200 Subject: [PATCH 023/504] Integrated calculator (considering only the lastest not upcoming series event) into event list view service method --- .../sailing/gwt/server/HomeServiceImpl.java | 25 +++---------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java index 550ed2649cd..ef98509eb7c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java @@ -1,13 +1,9 @@ package com.sap.sailing.gwt.server; import java.net.MalformedURLException; -import java.net.URL; import java.util.ArrayList; -import java.util.Calendar; import java.util.Collections; import java.util.Comparator; -import java.util.Date; -import java.util.GregorianCalendar; import java.util.HashSet; import java.util.List; import java.util.Random; @@ -20,11 +16,9 @@ import org.osgi.util.tracker.ServiceTracker; import com.sap.sailing.domain.base.Event; import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; -import com.sap.sailing.gwt.server.HomeServiceUtil.EventVisitor; import com.sap.sailing.gwt.ui.client.HomeService; import com.sap.sailing.gwt.ui.server.Activator; import com.sap.sailing.gwt.ui.server.ProxiedRemoteServiceServlet; -import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO.EventSeriesState; @@ -262,21 +256,8 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home @Override public EventListViewDTO getEventListView() throws MalformedURLException { - // TODO fill stats of years - final EventListViewDTO result = new EventListViewDTO(); - HomeServiceUtil.forAllPublicEvents(getService(), getThreadLocalRequest(), new EventVisitor() { - @Override - public void visit(EventBase event, boolean onRemoteServer, URL baseURL) { - EventListEventDTO eventDTO = HomeServiceUtil.convertToEventListDTO(event, baseURL, onRemoteServer, getService()); - result.addEvent(eventDTO, getYear(eventDTO.getStartDate())); - } - }); - return result; - } - - private int getYear(Date date) { - Calendar cal = GregorianCalendar.getInstance(); - cal.setTime(date); - return cal.get(Calendar.YEAR); + EventListDataCalculator eventListDataCalculator = new EventListDataCalculator(getService()); + HomeServiceUtil.forAllPublicEvents(getService(), getThreadLocalRequest(), eventListDataCalculator); + return eventListDataCalculator.getResult(); } } From 7d5946449b62d887fa8b5e3736d9d365b17b9fdd Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 11 Aug 2015 14:27:03 +0200 Subject: [PATCH 024/504] Mobile Races - Added initial version of regatta competition partial --- .../regattacompetition/RegattaCompetition.gss | 129 ++++++++++++++++++ .../RegattaCompetition.java | 30 ++++ .../RegattaCompetition.ui.xml | 11 ++ .../RegattaCompetitionFleet.java | 38 ++++++ .../RegattaCompetitionFleet.ui.xml | 11 ++ .../RegattaCompetitionFleetRace.java | 25 ++++ .../RegattaCompetitionFleetRace.ui.xml | 14 ++ .../RegattaCompetitionResources.java | 34 +++++ .../RegattaCompetitionSeries.java | 25 ++++ .../RegattaCompetitionSeries.ui.xml | 13 ++ 10 files changed, 330 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.ui.xml create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.ui.xml create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionResources.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss new file mode 100644 index 00000000000..a9021a1e6d0 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss @@ -0,0 +1,129 @@ +.accordion { + font-size: 1rem; +} +.accordion_trigger { + font-size: inherit; +} +.accordion_content { + font-size: inherit; +} +.regattacompetition { + font-size: 1rem; + padding: 0; +} +.regattacompetition .grid { + margin: 0; +} +.regattacompetition_phase { + font-size: 0; +} +.regattacompetition_phase.accordioncollapsed .sectionheader_item_togglearrow { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + transform: rotate(0deg); +} +.regattacompetition_phase .sectionheader_item_togglearrow { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); + -webkit-transition: -webkit-transform 0.4s; + -moz-transition: -moz-transform 0.4s; + transition: transform 0.4s; +} +.regattacompetition_phase_fleet { + font-size: 1rem; + display: inline-block; + position: relative; + padding: 1.333333333333333em 0.333333333333333em 0.333333333333333em 0.333333333333333em; + vertical-align: top; +} +.regattacompetition_phase_fleet:first-child { + padding-left: 0.666666666666667em; +} +.regattacompetition_phase_fleet:last-child { + padding-right: 0.666666666666667em; +} +.regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_race_title { + position: absolute; + top: 50%; + left: 1em; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); +} +.regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_race_title:after { + display: none; +} +.regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_race_subtitle { + font-size: 0.866666666666667em; +} +.regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_race_arrow { + display: block; +} +.regattacompetition_phase_fleet a { + color: #f6f9fc; +} +.regattacompetition_phase_fleet_title { + font-size: 1.066666666666667em; + font-weight: 700; + min-height: 2.8125em; + padding-left: 0.9375em; + margin-bottom: 0.9375em; +} +.regattacompetition_phase_fleet_race { + position: relative; + background: #008fcc; + margin-bottom: 0.666666666666667em; + text-align: center; + padding: 1.066666666666667em 0; + border-radius: 0.333333333333333em; + color: #f6f9fc; +} +.regattacompetition_phase_fleet_racetracked { + background: #008fcc; +} +.regattacompetition_phase_fleet_raceuntracked { + background: #666; +} +.regattacompetition_phase_fleet_raceuntracked .regattacompetition_phase_fleet_race_title:after { + display: none; +} +.regattacompetition_phase_fleet_racelive { + background: #e94a1b; +} +.regattacompetition_phase_fleet_raceplanned { + background: #f6f9fc; + color: #999; + border: 1px solid #999; +} +.regattacompetition_phase_fleet_raceplanned .regattacompetition_phase_fleet_race_title:after { + display: none; +} +.regattacompetition_phase_fleet_race_title { + font-size: 1.066666666666667em; + font-weight: 700; +} +.regattacompetition_phase_fleet_race_title:after { + content: ''; + display: inline-block; + width: 0.75em; + height: 0.75em; + background: url("../images/home/skip-forward.png") no-repeat center center; +} +.regattacompetition_phase_fleet_race_subtitle { + font-size: 0.666666666666667em; + text-transform: capitalize; +} +.regattacompetition_phase_fleet_race_arrow { + display: none; + position: absolute; + top: 50%; + right: 1em; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + transform: translateY(-50%); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java new file mode 100644 index 00000000000..dcc95640a44 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java @@ -0,0 +1,30 @@ +package com.sap.sailing.gwt.home.mobile.partials.regattacompetition; + +import java.util.Collection; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListSeriesDTO; + +public class RegattaCompetition extends Composite { + + private static RegattaCompetitionUiBinder uiBinder = GWT.create(RegattaCompetitionUiBinder.class); + + interface RegattaCompetitionUiBinder extends UiBinder { + } + + @UiField FlowPanel regattaSeriesContainerUi; + + public RegattaCompetition() { + initWidget(uiBinder.createAndBindUi(this)); + } + + public void showRaces(Collection series) { + // TODO + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.ui.xml new file mode 100644 index 00000000000..a154e496822 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.ui.xml @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java new file mode 100644 index 00000000000..6744b54998b --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java @@ -0,0 +1,38 @@ +package com.sap.sailing.gwt.home.mobile.partials.regattacompetition; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.HTMLPanel; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.mobile.partials.regattacompetition.RegattaCompetitionResources.LocalCss; + +public class RegattaCompetitionFleet extends Composite { + + private static RegattaCompetitionFleetUiBinder uiBinder = GWT.create(RegattaCompetitionFleetUiBinder.class); + + interface RegattaCompetitionFleetUiBinder extends UiBinder { + } + + private static final LocalCss CSS = RegattaCompetitionResources.INSTANCE.css(); + + @UiField HTMLPanel raceContainerUi; + @UiField DivElement fleetCornerUi; + @UiField DivElement fleetNameUi; + + public RegattaCompetitionFleet() { + initWidget(uiBinder.createAndBindUi(this)); + + raceContainerUi.getElement().getStyle().setBackgroundColor("rgba("+ "" + ", .1)"); + raceContainerUi.getElement().getStyle().setWidth(1337, Unit.PCT); + // if count < 2 + raceContainerUi.addStyleName(CSS.regattacompetition_phase_fleetfullwidth()); + + fleetCornerUi.getStyle().setProperty("borderTopColor", ""); + fleetNameUi.setInnerText("Name"); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.ui.xml new file mode 100644 index 00000000000..3f4c3516190 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.ui.xml @@ -0,0 +1,11 @@ + + + + + + +
+
+
+
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java new file mode 100644 index 00000000000..5c723f09a26 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java @@ -0,0 +1,25 @@ +package com.sap.sailing.gwt.home.mobile.partials.regattacompetition; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.dom.client.Element; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.UIObject; + +public class RegattaCompetitionFleetRace extends UIObject { + + private static RegattaCompetitionFleetRaceUiBinder uiBinder = GWT.create(RegattaCompetitionFleetRaceUiBinder.class); + + interface RegattaCompetitionFleetRaceUiBinder extends UiBinder { + } + + @UiField RegattaCompetitionResources local_res; + @UiField DivElement raceNameUi; + @UiField DivElement raceDateUi; + + public RegattaCompetitionFleetRace() { + setElement(uiBinder.createAndBindUi(this)); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml new file mode 100644 index 00000000000..2134d0b6e4a --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml @@ -0,0 +1,14 @@ + + + + + +
+ \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionResources.java new file mode 100644 index 00000000000..fe73b2874ac --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionResources.java @@ -0,0 +1,34 @@ +package com.sap.sailing.gwt.home.mobile.partials.regattacompetition; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; + +public interface RegattaCompetitionResources extends ClientBundle { + public static final RegattaCompetitionResources INSTANCE = GWT.create(RegattaCompetitionResources.class); + + @Source("RegattaCompetition.gss") + LocalCss css(); + + public interface LocalCss extends CssResource { + String accordion(); + String accordion_trigger(); + String accordion_content(); + String regattacompetition(); + String grid(); + String regattacompetition_phase(); + String accordioncollapsed(); + String sectionheader_item_togglearrow(); + String regattacompetition_phase_fleet(); + String regattacompetition_phase_fleetfullwidth(); + String regattacompetition_phase_fleet_race_title(); + String regattacompetition_phase_fleet_race_subtitle(); + String regattacompetition_phase_fleet_race_arrow(); + String regattacompetition_phase_fleet_title(); + String regattacompetition_phase_fleet_race(); + String regattacompetition_phase_fleet_racetracked(); + String regattacompetition_phase_fleet_raceuntracked(); + String regattacompetition_phase_fleet_racelive(); + String regattacompetition_phase_fleet_raceplanned(); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java new file mode 100644 index 00000000000..2b828ca2db3 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java @@ -0,0 +1,25 @@ +package com.sap.sailing.gwt.home.mobile.partials.regattacompetition; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; + +public class RegattaCompetitionSeries extends Composite { + + private static RegattaCompetitionSeriesUiBinder uiBinder = GWT.create(RegattaCompetitionSeriesUiBinder.class); + + interface RegattaCompetitionSeriesUiBinder extends UiBinder { + } + + @UiField MobileSection sectionHeaderUi; + @UiField DivElement fleetContainerUi; + + public RegattaCompetitionSeries() { + initWidget(uiBinder.createAndBindUi(this)); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml new file mode 100644 index 00000000000..733585bf48b --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml @@ -0,0 +1,13 @@ + + + + + + +
+ +
+
+
+
\ No newline at end of file From 525e36ce7bd068e0e827626faf4753cafa371986 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 11 Aug 2015 16:38:09 +0200 Subject: [PATCH 025/504] Mobile Races - Extended regatta competition partials --- .../regattacompetition/RegattaCompetition.gss | 2 +- .../RegattaCompetition.java | 13 +++- .../RegattaCompetitionFleet.java | 33 +++++----- .../RegattaCompetitionFleet.ui.xml | 4 +- .../RegattaCompetitionFleetRace.java | 31 ++++++++-- .../RegattaCompetitionFleetRace.ui.xml | 11 ++-- .../RegattaCompetitionSeries.java | 60 +++++++++++++++++-- .../RegattaCompetitionSeries.ui.xml | 6 +- 8 files changed, 120 insertions(+), 40 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss index a9021a1e6d0..67735002d45 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss @@ -111,7 +111,7 @@ display: inline-block; width: 0.75em; height: 0.75em; - background: url("../images/home/skip-forward.png") no-repeat center center; + background: url("images/home/skip-forward.png") no-repeat center center; } .regattacompetition_phase_fleet_race_subtitle { font-size: 0.666666666666667em; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java index dcc95640a44..ab8acacce17 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java @@ -8,6 +8,8 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListFleetDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListSeriesDTO; public class RegattaCompetition extends Composite { @@ -23,8 +25,15 @@ public class RegattaCompetition extends Composite { initWidget(uiBinder.createAndBindUi(this)); } - public void showRaces(Collection series) { - // TODO + public void showRaces(Presenter presenter, Collection seriesList) { + for (RaceListSeriesDTO series : seriesList) { + RegattaCompetitionSeries regattaCompetitionSeries = new RegattaCompetitionSeries(series); + int fleetCount = series.getFleets().size(); + for (RaceListFleetDTO fleet : series.getFleets()) { + regattaCompetitionSeries.addFleet(presenter, fleet, fleetCount); + } + regattaSeriesContainerUi.add(regattaCompetitionSeries); + } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java index 6744b54998b..879fb3d73dc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java @@ -2,37 +2,40 @@ package com.sap.sailing.gwt.home.mobile.partials.regattacompetition; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; +import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.mobile.partials.regattacompetition.RegattaCompetitionResources.LocalCss; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListFleetDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListRaceDTO; -public class RegattaCompetitionFleet extends Composite { +public class RegattaCompetitionFleet extends Widget { private static RegattaCompetitionFleetUiBinder uiBinder = GWT.create(RegattaCompetitionFleetUiBinder.class); - interface RegattaCompetitionFleetUiBinder extends UiBinder { + interface RegattaCompetitionFleetUiBinder extends UiBinder { } private static final LocalCss CSS = RegattaCompetitionResources.INSTANCE.css(); - @UiField HTMLPanel raceContainerUi; + @UiField DivElement raceContainerUi; @UiField DivElement fleetCornerUi; @UiField DivElement fleetNameUi; - public RegattaCompetitionFleet() { - initWidget(uiBinder.createAndBindUi(this)); - - raceContainerUi.getElement().getStyle().setBackgroundColor("rgba("+ "" + ", .1)"); - raceContainerUi.getElement().getStyle().setWidth(1337, Unit.PCT); - // if count < 2 - raceContainerUi.addStyleName(CSS.regattacompetition_phase_fleetfullwidth()); - - fleetCornerUi.getStyle().setProperty("borderTopColor", ""); - fleetNameUi.setInnerText("Name"); + public RegattaCompetitionFleet(RaceListFleetDTO fleet, int fleetCount) { + setElement(uiBinder.createAndBindUi(this)); + raceContainerUi.getStyle().setBackgroundColor("rgba("+ fleet.getFleet().getFleetColor() + ", .1)"); + raceContainerUi.getStyle().setWidth(100.0 / fleetCount, Unit.PCT); + if (fleetCount < 2) raceContainerUi.addClassName(CSS.regattacompetition_phase_fleetfullwidth()); + fleetCornerUi.getStyle().setProperty("borderTopColor", fleet.getFleet().getFleetColor()); + fleetNameUi.setInnerText(fleet.getFleet().getFleetName()); + } + + public void addRace(RaceListRaceDTO race, String raceViewerUrl) { + RegattaCompetitionFleetRace fleetRace = new RegattaCompetitionFleetRace(race, raceViewerUrl); + raceContainerUi.appendChild(fleetRace.getElement()); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.ui.xml index 3f4c3516190..0b7558dfef5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.ui.xml @@ -4,8 +4,8 @@ - +
- +
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java index 5c723f09a26..1739ff014b4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java @@ -1,25 +1,48 @@ package com.sap.sailing.gwt.home.mobile.partials.regattacompetition; import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.AnchorElement; import com.google.gwt.dom.client.DivElement; -import com.google.gwt.dom.client.Element; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.UIObject; +import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListRaceDTO; +import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceTrackingState; +import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceViewState; public class RegattaCompetitionFleetRace extends UIObject { private static RegattaCompetitionFleetRaceUiBinder uiBinder = GWT.create(RegattaCompetitionFleetRaceUiBinder.class); - interface RegattaCompetitionFleetRaceUiBinder extends UiBinder { + interface RegattaCompetitionFleetRaceUiBinder extends UiBinder { } @UiField RegattaCompetitionResources local_res; @UiField DivElement raceNameUi; @UiField DivElement raceDateUi; + private final AnchorElement anchor; - public RegattaCompetitionFleetRace() { - setElement(uiBinder.createAndBindUi(this)); + public RegattaCompetitionFleetRace(RaceListRaceDTO race, String raceViewerUrl) { + setElement(anchor = uiBinder.createAndBindUi(this)); + anchor.setHref(raceViewerUrl); + local_res.css().ensureInjected(); + setupRaceState(race.getTrackingState(), race.getViewState()); + this.raceNameUi.setInnerText(race.getRaceName()); + if (race.getStart() != null) { + this.raceDateUi.setInnerText(DateAndTimeFormatterUtil.defaultDateFormatter.render(race.getStart())); + } + } + + private void setupRaceState(RaceTrackingState trackingState, RaceViewState viewState) { + if (viewState == RaceViewState.RUNNING) { + anchor.addClassName(local_res.css().regattacompetition_phase_fleet_racelive()); + } else if (viewState == RaceViewState.PLANNED || viewState == RaceViewState.SCHEDULED) { + anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceplanned()); + } + if (trackingState != RaceTrackingState.TRACKED_VALID_DATA) { + anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceuntracked()); + } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml index 2134d0b6e4a..5e843f11521 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml @@ -4,11 +4,8 @@ - + +
+
+
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java index 2b828ca2db3..89e2c1b8454 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java @@ -1,12 +1,23 @@ package com.sap.sailing.gwt.home.mobile.partials.regattacompetition; +import static com.sap.sailing.domain.common.LeaderboardNameConstants.DEFAULT_SERIES_NAME; + import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.DivElement; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; +import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; +import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; +import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListFleetDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListRaceDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListSeriesDTO; +import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceTrackingState; public class RegattaCompetitionSeries extends Composite { @@ -15,11 +26,50 @@ public class RegattaCompetitionSeries extends Composite { interface RegattaCompetitionSeriesUiBinder extends UiBinder { } - @UiField MobileSection sectionHeaderUi; - @UiField DivElement fleetContainerUi; + private static final String ACCORDION_COLLAPSED_STYLE = RegattaCompetitionResources.INSTANCE.css().accordioncollapsed(); + private static final StringMessages I18N = StringMessages.INSTANCE; + + + @UiField SectionHeaderContent sectionHeaderUi; + @UiField FlowPanel fleetContainerUi; - public RegattaCompetitionSeries() { + public RegattaCompetitionSeries(RaceListSeriesDTO series) { initWidget(uiBinder.createAndBindUi(this)); + sectionHeaderUi.setSectionTitle(DEFAULT_SERIES_NAME.equals(series.getSeriesName()) ? I18N.races() : series.getSeriesName()); + initSubtitle(series.getCompetitorCount(), series.getRaceCount()); + initAnimation(sectionHeaderUi, fleetContainerUi, true); + } + + private void initSubtitle(int competitorCount, int raceCount) { + if (competitorCount > 0 || raceCount > 0) { + String competitors = competitorCount > 0 ? I18N.competitorsCount(competitorCount) : ""; + String separator = competitorCount > 0 && raceCount > 0 ? " | " : ""; + String races = raceCount > 0 ? I18N.racesCount(raceCount) : ""; + sectionHeaderUi.setSubtitle(competitors + separator + races); + } + } + + private void initAnimation(Widget trigger, final Widget content, boolean showInitial) { + final CollapseAnimation animation = new CollapseAnimation(content.getElement(), showInitial); + content.setStyleName(ACCORDION_COLLAPSED_STYLE, !showInitial); + trigger.addDomHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + boolean collapsed = content.getElement().hasClassName(ACCORDION_COLLAPSED_STYLE); + content.setStyleName(ACCORDION_COLLAPSED_STYLE, !collapsed); + animation.animate(collapsed); + } + }, ClickEvent.getType()); + } + + public void addFleet(Presenter presenter, RaceListFleetDTO fleet, int fleetCount) { + RegattaCompetitionFleet competitionFleet = new RegattaCompetitionFleet(fleet, fleetCount); + for (RaceListRaceDTO race : fleet.getRaces()) { + boolean tracked = race.getTrackingState() == RaceTrackingState.TRACKED_VALID_DATA; + String raceViewerUrl = tracked ? null : null; // TODO No mobile "RaceViewer implemented yet + competitionFleet.addRace(race, raceViewerUrl); + } + fleetContainerUi.add(competitionFleet); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml index 733585bf48b..27101adc7be 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml @@ -5,9 +5,7 @@ -
- -
-
+ +
\ No newline at end of file From 187f7f0c968bd38afce919096146b0f6e23a5c76 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 11 Aug 2015 17:32:22 +0200 Subject: [PATCH 026/504] Mobile Races - Added stub implementation for mobile race view --- .../event/regatta/tabs/RegattaRacesPlace.java | 3 +- .../mobile/places/races/RacesActivity.java | 110 ++++++++++++++++++ .../places/races/RacesActivityProxy.java | 27 +++++ .../home/mobile/places/races/RacesView.java | 32 +++++ .../mobile/places/races/RacesViewImpl.java | 49 ++++++++ .../mobile/places/races/RacesViewImpl.ui.xml | 26 +++++ 6 files changed, 246 insertions(+), 1 deletion(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivityProxy.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java index b044d7b6aaa..aa63614b0a9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java @@ -5,8 +5,9 @@ import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; -public class RegattaRacesPlace extends AbstractEventRegattaPlace { +public class RegattaRacesPlace extends AbstractEventRegattaPlace implements HasMobileVersion { public RegattaRacesPlace(String id, String leaderboardName) { super(id, leaderboardName); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java new file mode 100644 index 00000000000..d32350d0835 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java @@ -0,0 +1,110 @@ +package com.sap.sailing.gwt.home.mobile.places.races; + +import java.util.UUID; + +import com.google.gwt.activity.shared.AbstractActivity; +import com.google.gwt.event.shared.EventBus; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.AcceptsOneWidget; +import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; +import com.sap.sailing.gwt.home.client.place.event.EventContext; +import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; +import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; +import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; +import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; +import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; +import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; +import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; +import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; +import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; + +public class RacesActivity extends AbstractActivity implements Presenter { + private final MobileApplicationClientFactory clientFactory; + private final RegattaRacesPlace place; + + public RacesActivity(RegattaRacesPlace place, MobileApplicationClientFactory clientFactory) { + this.clientFactory = clientFactory; + this.place = place; + } + + @Override + public void start(final AcceptsOneWidget panel, final EventBus eventBus) { + if (place.getCtx().getEventDTO() == null) { + UUID currentEventUUId = UUID.fromString(place.getCtx().getEventId()); + clientFactory.getDispatch().execute(new GetEventViewAction(currentEventUUId), + new AsyncCallback() { + @Override + public void onSuccess(final EventViewDTO event) { + place.getCtx().updateContext(event); + initUi(panel, eventBus); + } + + @Override + public void onFailure(Throwable caught) { + // TODO @FM: extract text? + ErrorPlace errorPlace = new ErrorPlace( + "Error while loading the event with service getEventViewById()"); + // TODO @FM: reload sinnvoll hier? + errorPlace.setComingFrom(place); + clientFactory.getPlaceController().goTo(errorPlace); + } + }); + } else { + initUi(panel, eventBus); + } + } + + private void initUi(AcceptsOneWidget panel, EventBus eventBus) { + final RacesView view = new RacesViewImpl(this); + EventViewDTO event = place.getCtx().getEventDTO(); + if(event.getType() == EventType.MULTI_REGATTA) { + view.setQuickFinderValues(event.getRegattas()); + } else if(event.getType() == EventType.SERIES_EVENT) { + view.setQuickFinderValues(event.getSeriesName(), event.getEventsOfSeries()); + } else { + view.hideQuickfinder(); + } + panel.setWidget(view.asWidget()); + } + + @Override + public EventContext getCtx() { + return place.getCtx(); + } + + @Override + public PlaceNavigation getRegattaLeaderboardNavigation(String leaderboardName) { + EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); + return clientFactory.getNavigator().getEventNavigation(new RegattaLeaderboardPlace(ctx), null, false); + } + + @Override + public DispatchSystem getDispatch() { + return clientFactory.getDispatch(); + } + + @Override + public PlaceNavigation getRegattaMiniLeaderboardNavigation(String leaderboardName) { + EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); + return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(ctx), null, false); + } + + @Override + public PlaceNavigation getMiniOverallLeaderboardNavigation() { + return clientFactory.getNavigator().getSeriesNavigation(new SeriesMiniOverallLeaderboardPlace(new SeriesContext().withId(getCtx().getEventId())), null, false); + } + + @Override + public PlaceNavigation getMiniLeaderboardNavigation(UUID eventId) { + return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(eventId.toString(), null), null, false); + } + + @Override + public PlaceNavigation getEventNavigation() { + return clientFactory.getNavigator().getEventNavigation(new EventDefaultPlace(getCtx()), null, false); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivityProxy.java new file mode 100644 index 00000000000..64e8f3b3dc8 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivityProxy.java @@ -0,0 +1,27 @@ +package com.sap.sailing.gwt.home.mobile.places.races; + +import com.google.gwt.core.client.GWT; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; +import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; +import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; + +public class RacesActivityProxy extends AbstractActivityProxy { + + private final MobileApplicationClientFactory clientFactory; + private final RegattaRacesPlace currentPlace; + + public RacesActivityProxy(RegattaRacesPlace place, MobileApplicationClientFactory clientFactory) { + this.currentPlace = place; + this.clientFactory = clientFactory; + } + + @Override + protected void startAsync() { + GWT.runAsync(new AbstractRunAsyncCallback() { + @Override + public void onSuccess() { + super.onSuccess(new RacesActivity(currentPlace, clientFactory)); + } + }); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java new file mode 100644 index 00000000000..e80072b8e7b --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java @@ -0,0 +1,32 @@ +package com.sap.sailing.gwt.home.mobile.places.races; + +import java.util.Collection; + +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.client.place.event.EventContext; +import com.sap.sailing.gwt.home.mobile.places.RegattaLeaderboardNavigationProvider; +import com.sap.sailing.gwt.home.mobile.places.SeriesLeaderboardNavigationProvider; +import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; +import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; + +public interface RacesView { + + public interface Presenter extends RegattaLeaderboardNavigationProvider, SeriesLeaderboardNavigationProvider { + + PlaceNavigation getEventNavigation(); + + DispatchSystem getDispatch(); + + EventContext getCtx(); + } + + Widget asWidget(); + + void setQuickFinderValues(Collection regattas); + + void setQuickFinderValues(String seriesName, Collection eventsOfSeries); + + void hideQuickfinder(); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java new file mode 100644 index 00000000000..7ed3b204e6a --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java @@ -0,0 +1,49 @@ +package com.sap.sailing.gwt.home.mobile.places.races; + +import java.util.Collection; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.mobile.partials.eventheader.EventHeader; +import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; +import com.sap.sailing.gwt.home.mobile.partials.regattacompetition.RegattaCompetition; +import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; +import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; +import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; + +public class RacesViewImpl extends Composite implements RacesView { + + private static RacesViewImplUiBinder uiBinder = GWT.create(RacesViewImplUiBinder.class); + + interface RacesViewImplUiBinder extends UiBinder { + } + + private Presenter currentPresenter; + @UiField(provided = true) EventHeader eventHeaderUi; + @UiField RegattaCompetition regattaCompetitionUi; + @UiField Quickfinder quickFinderUi; + + public RacesViewImpl(Presenter presenter) { + currentPresenter = presenter; + initWidget(uiBinder.createAndBindUi(this)); + } + + @Override + public void setQuickFinderValues(Collection regattaMetadatas) { + new QuickfinderPresenter(quickFinderUi, currentPresenter, regattaMetadatas); + } + + @Override + public void setQuickFinderValues(String seriesName, Collection eventsOfSeries) { + new QuickfinderPresenter(quickFinderUi, currentPresenter, seriesName, eventsOfSeries); + } + + @Override + public void hideQuickfinder() { + quickFinderUi.removeFromParent(); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml new file mode 100644 index 00000000000..c6365ebfeaf --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml @@ -0,0 +1,26 @@ + + + + > + + .headerWrapper { + background-color: #f2f2f2; + padding-bottom: 10px; + } + + +
+ + + + +
+
+ + +
+
\ No newline at end of file From 8d92eac8db3107351430ab0f115307112d09b616 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 12 Aug 2015 11:57:59 +0200 Subject: [PATCH 027/504] Added DTO structure for EventSeries --- .../eventlist/EventListEventSeriesDTO.java | 26 +++++++++++++++++ .../general/EventSeriesReferenceDTO.java | 28 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventSeriesDTO.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventSeriesReferenceDTO.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventSeriesDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventSeriesDTO.java new file mode 100644 index 00000000000..7143370b8ef --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventSeriesDTO.java @@ -0,0 +1,26 @@ +package com.sap.sailing.gwt.ui.shared.eventlist; + +import java.util.UUID; + +import com.sap.sailing.gwt.ui.shared.general.EventSeriesReferenceDTO; + +public class EventListEventSeriesDTO extends EventSeriesReferenceDTO { + + private int eventsCount; + + protected EventListEventSeriesDTO() { + } + + public EventListEventSeriesDTO(UUID id, String displayName) { + super(id, displayName); + } + + public int getEventsCount() { + return eventsCount; + } + + public void setEventsCount(int eventsCount) { + this.eventsCount = eventsCount; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventSeriesReferenceDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventSeriesReferenceDTO.java new file mode 100644 index 00000000000..c870505b7a1 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventSeriesReferenceDTO.java @@ -0,0 +1,28 @@ +package com.sap.sailing.gwt.ui.shared.general; + +import java.util.UUID; + +import com.sap.sailing.gwt.ui.shared.dispatch.DTO; + +public class EventSeriesReferenceDTO implements DTO { + + private UUID id; + private String displayName; + + protected EventSeriesReferenceDTO() { + } + + public EventSeriesReferenceDTO(UUID id, String displayName) { + this.id = id; + this.displayName = displayName; + } + + public UUID getId() { + return id; + } + + public String getDisplayName() { + return displayName; + } + +} From 421d5ca0aebf7b9ebc7349092636c6d3fe17bb34 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 12 Aug 2015 12:14:00 +0200 Subject: [PATCH 028/504] Refactored EventDTO structure --- .../shared/eventlist/EventListEventDTO.java | 25 +++++++------------ .../general/EventLinkAndMetadataDTO.java | 24 ++++++++++++++++++ .../gwt/ui/shared/start/EventStageDTO.java | 22 ++-------------- 3 files changed, 35 insertions(+), 36 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventLinkAndMetadataDTO.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java index bf230060052..87219a3f686 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java @@ -1,24 +1,17 @@ package com.sap.sailing.gwt.ui.shared.eventlist; -import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; +import com.sap.sailing.gwt.ui.shared.general.EventLinkAndMetadataDTO; -public class EventListEventDTO extends EventMetadataDTO { - private String baseURL; - private boolean isOnRemoteServer; +public class EventListEventDTO extends EventLinkAndMetadataDTO { + + private EventListEventSeriesDTO eventSeries; - public String getBaseURL() { - return baseURL; + public EventListEventSeriesDTO getEventSeries() { + return eventSeries; } - public void setBaseURL(String baseURL) { - this.baseURL = baseURL; - } - - public boolean isOnRemoteServer() { - return isOnRemoteServer; - } - - public void setOnRemoteServer(boolean isOnRemoteServer) { - this.isOnRemoteServer = isOnRemoteServer; + public void setEventSeries(EventListEventSeriesDTO eventSeries) { + this.eventSeries = eventSeries; } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventLinkAndMetadataDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventLinkAndMetadataDTO.java new file mode 100644 index 00000000000..a0d4c0a3005 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventLinkAndMetadataDTO.java @@ -0,0 +1,24 @@ +package com.sap.sailing.gwt.ui.shared.general; + +public class EventLinkAndMetadataDTO extends EventMetadataDTO { + + private String baseURL; + private boolean isOnRemoteServer; + + public String getBaseURL() { + return baseURL; + } + + public void setBaseURL(String baseURL) { + this.baseURL = baseURL; + } + + public boolean isOnRemoteServer() { + return isOnRemoteServer; + } + + public void setOnRemoteServer(boolean isOnRemoteServer) { + this.isOnRemoteServer = isOnRemoteServer; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/start/EventStageDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/start/EventStageDTO.java index cfe5edee279..6c656526860 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/start/EventStageDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/start/EventStageDTO.java @@ -1,30 +1,12 @@ package com.sap.sailing.gwt.ui.shared.start; -import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; +import com.sap.sailing.gwt.ui.shared.general.EventLinkAndMetadataDTO; -public class EventStageDTO extends EventMetadataDTO { +public class EventStageDTO extends EventLinkAndMetadataDTO { private StageEventType stageType; - private String baseURL; - private boolean isOnRemoteServer; private String stageImageURL; - public String getBaseURL() { - return baseURL; - } - - public void setBaseURL(String baseURL) { - this.baseURL = baseURL; - } - - public boolean isOnRemoteServer() { - return isOnRemoteServer; - } - - public void setOnRemoteServer(boolean isOnRemoteServer) { - this.isOnRemoteServer = isOnRemoteServer; - } - public StageEventType getStageType() { return stageType; } From ec974ddf525ce7d471ccc6c0338b49d3e1abd296 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 12 Aug 2015 13:52:34 +0200 Subject: [PATCH 029/504] Added calculation of event series metadata for event list --- .../gwt/server/EventListDataCalculator.java | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java index 745ce516187..e43c08aa9bb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventListDataCalculator.java @@ -2,14 +2,15 @@ package com.sap.sailing.gwt.server; import java.net.URL; import java.util.Calendar; -import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Map; +import java.util.Map.Entry; import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.gwt.server.HomeServiceUtil.EventVisitor; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO; import com.sap.sailing.gwt.ui.shared.general.EventState; import com.sap.sailing.server.RacingEventService; @@ -17,6 +18,7 @@ import com.sap.sailing.server.RacingEventService; public class EventListDataCalculator implements EventVisitor { private final Map lastestEventPerSeries = new HashMap<>(); + private final Map numberOfEventsPerSeries = new HashMap<>(); private final EventListViewDTO result = new EventListViewDTO(); private final RacingEventService service; @@ -33,22 +35,33 @@ public class EventListDataCalculator implements EventVisitor { if (latestEvent == null || latestEvent.getStartDate().before(eventDTO.getStartDate())) { lastestEventPerSeries.put(seriesName, eventDTO); } + increaseNumberOfEvents(seriesName); } else { - result.addEvent(eventDTO, getYear(eventDTO.getStartDate())); + addEventToResults(eventDTO); } } + private void increaseNumberOfEvents(String seriesName) { + Integer currentValue = numberOfEventsPerSeries.get(seriesName); + currentValue = currentValue == null ? 0 : currentValue; + numberOfEventsPerSeries.put(seriesName, ++currentValue); + } + public EventListViewDTO getResult() { - for (EventListEventDTO eventDTO : lastestEventPerSeries.values()) { - result.addEvent(eventDTO, getYear(eventDTO.getStartDate())); + for (Entry latestEventInSeries : lastestEventPerSeries.entrySet()) { + String seriesName = latestEventInSeries.getKey(); + EventListEventDTO latestEvent = latestEventInSeries.getValue(); + latestEvent.setEventSeries(new EventListEventSeriesDTO(latestEvent.getId(), seriesName)); + latestEvent.getEventSeries().setEventsCount(numberOfEventsPerSeries.get(seriesName)); + addEventToResults(latestEvent); } return result; } - private int getYear(Date date) { + private void addEventToResults(EventListEventDTO eventDTO) { Calendar cal = GregorianCalendar.getInstance(); - cal.setTime(date); - return cal.get(Calendar.YEAR); + cal.setTime(eventDTO.getStartDate()); + result.addEvent(eventDTO, cal.get(Calendar.YEAR)); } } From 946f2eff946232c5f6d7bbd84d4b653881fccdbe Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 10:20:19 +0200 Subject: [PATCH 030/504] Added partial for series info corner --- .../home/client/shared/event/EventTeaser.gss | 29 +++++++++++++++++ .../shared/event/EventTeaserResources.java | 3 ++ .../event/EventTeaserSeriesInfoCorner.java | 31 +++++++++++++++++++ .../event/EventTeaserSeriesInfoCorner.ui.xml | 10 ++++++ 4 files changed, 73 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.gss index 2a272b8db69..7222a76b944 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.gss @@ -1,6 +1,7 @@ /** * A event teaser with image */ + @def SERIES_CORNER_SIZE 6em; .eventteasercontainer { font-size: 1rem; text-align: center; @@ -40,6 +41,34 @@ position: absolute; bottom: 0; right: 0; + width: SERIES_CORNER_SIZE; + height: SERIES_CORNER_SIZE; + overflow: hidden; +} +.eventteaser_series .eventteaser_series_corner { + position: absolute; + border-style: solid; + border-color: rgba(240, 171, 0, 0.75) transparent; + border-width: 0 0 SERIES_CORNER_SIZE SERIES_CORNER_SIZE; +} +.eventteaser_series .eventteaser_series_text { + display: block; + text-align: center; + color: white; + font-weight: 600; + font-size: 120%; + width: 7em; + height: 3.5em; + transform: rotate(315deg) translate(-1.25em, 1.6em); +} +.eventteaser_series .eventteaser_series_eventcount { + position: absolute; + bottom: 0.5em; + right: 0.5em; + text-align: right; + font-weight: 600; + color: white; + font-size: 120%; } .eventteaser_name { width: 100%; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserResources.java index 96927122486..edc67be513c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserResources.java @@ -18,6 +18,9 @@ public interface EventTeaserResources extends ClientBundle { String eventteaser_title_name(); String eventteaser_image(); String eventteaser_series(); + String eventteaser_series_corner(); + String eventteaser_series_text(); + String eventteaser_series_eventcount(); String eventteaser_name(); String eventteaser_title_name_label(); String label(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java new file mode 100644 index 00000000000..79a0fb5e6c2 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java @@ -0,0 +1,31 @@ +package com.sap.sailing.gwt.home.client.shared.event; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.AnchorElement; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.UIObject; +import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; + +public class EventTeaserSeriesInfoCorner extends UIObject { + + private static EventTeaserSeriesInfoCornerUiBinder uiBinder = GWT.create(EventTeaserSeriesInfoCornerUiBinder.class); + + interface EventTeaserSeriesInfoCornerUiBinder extends UiBinder { + } + + @UiField DivElement seriesEventsCountUi; + @UiField AnchorElement seriesInfoTextUi; + + public EventTeaserSeriesInfoCorner(PlaceNavigation seriesNavigation, EventListEventSeriesDTO eventSeries) { + setElement(uiBinder.createAndBindUi(this)); + int eventCount = eventSeries.getEventsCount(); + seriesInfoTextUi.setTitle(eventSeries.getDisplayName() + " - " + StringMessages.INSTANCE.eventsCount(eventSeries.getEventsCount())); + seriesNavigation.configureAnchorElement(seriesInfoTextUi); + seriesEventsCountUi.setInnerText(String.valueOf(eventCount)); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.ui.xml new file mode 100644 index 00000000000..2f0b8c4585e --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.ui.xml @@ -0,0 +1,10 @@ + + + + +
+
+ +
+
+
\ No newline at end of file From 39b9f1036862a1e8b80f36d7d317f058fe4fb8f0 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 11:26:58 +0200 Subject: [PATCH 031/504] Extended EventTeaser to use series info corner --- .../events/recent/RecentEventTeaser.java | 5 ++++ .../home/client/shared/event/EventTeaser.java | 26 +++++++++---------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java index 1799af3ad45..3c5ff5384fa 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java @@ -7,6 +7,7 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.shared.event.EventTeaser; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.LabelType; @@ -23,6 +24,10 @@ public class RecentEventTeaser extends Composite { eventTeaser = new EventTeaser(placeNavigation, event, labelType); initWidget(uiBinder.createAndBindUi(this)); } + + public void setSeriesInformation(PlaceNavigation seriesNavigation, EventListEventSeriesDTO eventSeries) { + eventTeaser.setSeriesInformation(seriesNavigation, eventSeries); + } public void hideImage(boolean hide) { eventTeaser.hideImage(hide); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.java index 7d7d3b3df34..1a1bd8edd4c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaser.java @@ -17,23 +17,18 @@ import com.sap.sailing.gwt.home.client.shared.EventDatesFormatterUtil; import com.sap.sailing.gwt.home.client.shared.LabelTypeUtil; import com.sap.sailing.gwt.home.client.shared.LongNamesUtil; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.LabelType; public class EventTeaser extends Composite { - @UiField - SpanElement eventName; - @UiField - SpanElement venue; - @UiField - SpanElement eventDate; - @UiField - AnchorElement eventLink; - @UiField - DivElement eventImage; - @UiField - DivElement eventState; + @UiField SpanElement eventName; + @UiField SpanElement venue; + @UiField SpanElement eventDate; + @UiField AnchorElement eventLink; + @UiField DivElement eventImage; + @UiField DivElement eventState; private final EventMetadataDTO event; @@ -77,7 +72,6 @@ public class EventTeaser extends Composite { eventDate.setInnerText(EventDatesFormatterUtil.formatDateRangeWithoutYear(event.getStartDate(), event.getEndDate())); final StringBuilder thumbnailUrlBuilder = new StringBuilder("url('"); - final String thumbnailImageUrl = event.getThumbnailImageURL(); if (thumbnailImageUrl == null || thumbnailImageUrl.isEmpty()) { thumbnailUrlBuilder.append(EventTeaserResources.INSTANCE.defaultEventPhotoImage().getSafeUri().asString()); @@ -87,7 +81,11 @@ public class EventTeaser extends Composite { thumbnailUrlBuilder.append("')"); eventImage.getStyle().setBackgroundImage(thumbnailUrlBuilder.toString()); } - + + public void setSeriesInformation(PlaceNavigation seriesNavigation, EventListEventSeriesDTO eventSeries) { + eventImage.appendChild(new EventTeaserSeriesInfoCorner(seriesNavigation, eventSeries).getElement()); + } + public void hideImage(boolean hide) { if (hide) { eventImage.getStyle().setDisplay(Display.NONE); From 02e8f64ebf643e7fcd642b1edc0ece0c3f261fc4 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 11:29:22 +0200 Subject: [PATCH 032/504] Refactored EventDTO structure --- .../gwt/ui/shared/eventlist/EventListEventDTO.java | 1 + .../sailing/gwt/ui/shared/general/EventMetadataDTO.java | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java index 87219a3f686..b2e566af76a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java @@ -6,6 +6,7 @@ public class EventListEventDTO extends EventLinkAndMetadataDTO { private EventListEventSeriesDTO eventSeries; + @Override public EventListEventSeriesDTO getEventSeries() { return eventSeries; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventMetadataDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventMetadataDTO.java index 912e7914477..ed5ce2780a5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventMetadataDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/general/EventMetadataDTO.java @@ -2,6 +2,8 @@ package com.sap.sailing.gwt.ui.shared.general; import java.util.Date; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; + public class EventMetadataDTO extends EventReferenceDTO { private EventState state; @@ -41,8 +43,6 @@ public class EventMetadataDTO extends EventReferenceDTO { return state; } - - public void setState(EventState state) { this.state = state; } @@ -107,4 +107,8 @@ public class EventMetadataDTO extends EventReferenceDTO { } return venue; } + + public EventListEventSeriesDTO getEventSeries() { + return null; + } } From 01734587b47a46662f38223d74f93af0fe196682 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 11:41:26 +0200 Subject: [PATCH 033/504] Integrated series info corner in event list --- .../client/place/events/recent/EventsOverviewRecentYear.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.java index 5c9984bac3e..32024a813e8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.java @@ -72,6 +72,11 @@ public class EventsOverviewRecentYear extends Composite { for (EventListEventDTO eventDTO : events) { PlaceNavigation eventNavigation = navigator.getEventNavigation(eventDTO.getId().toString(), eventDTO.getBaseURL(), eventDTO.isOnRemoteServer()); RecentEventTeaser recentEvent = new RecentEventTeaser(eventNavigation, eventDTO, eventDTO.getState().getListStateMarker()); + if (eventDTO.getEventSeries() != null) { + String seriesId = eventDTO.getEventSeries().getId().toString(), baseUrl = eventDTO.getBaseURL(); + PlaceNavigation seriesNavigation = navigator.getEventSeriesNavigation(seriesId, baseUrl, eventDTO.isOnRemoteServer()); + recentEvent.setSeriesInformation(seriesNavigation, eventDTO.getEventSeries()); + } recentEventsTeaserPanel.add(recentEvent); } headerDiv.addDomHandler(new ClickHandler() { From f9cfaba0322d97be67eccc153fbf348910d45df3 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 11:57:23 +0200 Subject: [PATCH 034/504] Added String messages for series event info --- .../home/client/shared/event/EventTeaserSeriesInfoCorner.java | 3 ++- .../java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages.properties | 4 +++- .../sap/sailing/gwt/ui/client/StringMessages_de.properties | 4 +++- .../sap/sailing/gwt/ui/client/StringMessages_ru.properties | 4 +++- .../sap/sailing/gwt/ui/client/StringMessages_zh.properties | 4 +++- 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java index 79a0fb5e6c2..0f2ec1f1fd1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/event/EventTeaserSeriesInfoCorner.java @@ -23,7 +23,8 @@ public class EventTeaserSeriesInfoCorner extends UIObject { public EventTeaserSeriesInfoCorner(PlaceNavigation seriesNavigation, EventListEventSeriesDTO eventSeries) { setElement(uiBinder.createAndBindUi(this)); int eventCount = eventSeries.getEventsCount(); - seriesInfoTextUi.setTitle(eventSeries.getDisplayName() + " - " + StringMessages.INSTANCE.eventsCount(eventSeries.getEventsCount())); + seriesInfoTextUi.setTitle(eventSeries.getDisplayName() + " - " + + StringMessages.INSTANCE.eventsHaveTakenPlace(eventSeries.getEventsCount())); seriesNavigation.configureAnchorElement(seriesInfoTextUi); seriesEventsCountUi.setInnerText(String.valueOf(eventCount)); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 13ba3e6fcb0..1ca4b77b5ab 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1360,4 +1360,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String choosePresentation(); String openFullscreenView(); String closeFullscreenView(); + String eventsHaveTakenPlace(@PluralCount(DefaultRule_1_0n.class) int eventCount); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 038f39f4920..062f795097d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1328,4 +1328,6 @@ plainText=Plain Text columnChart=Column Chart choosePresentation=Choose Presentation openFullscreenView=Open fullscreen view -closeFullscreenView=Close fullscreen view \ No newline at end of file +closeFullscreenView=Close fullscreen view +eventsHaveTakenPlace={0} events have taken place +eventsHaveTakenPlace[one]= One event has taken place \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index ba041c0fe9e..2aefd2da20e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1318,4 +1318,6 @@ plainText=Einfacher Text columnChart=Säulendiagramm choosePresentation=Wähle Präsentation openFullscreenView=Vollbildansicht öffnen -closeFullscreenView=Vollbildansicht schließen \ No newline at end of file +closeFullscreenView=Vollbildansicht schließen +eventsHaveTakenPlace={0} Veranstaltungen haben stattgefunden +eventsHaveTakenPlace[one]= Eine Veranstaltung hat stattgefunden \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 9b56d586742..593ea1f5c08 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1265,4 +1265,6 @@ plainText=Plain Text columnChart=Column Chart choosePresentation=Choose Presentation openFullscreenView=Open fullscreen view -closeFullscreenView=Close fullscreen view \ No newline at end of file +closeFullscreenView=Close fullscreen view +eventsHaveTakenPlace={0} events have taken place +eventsHaveTakenPlace[one]= One event has taken place \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 0ec69e1e57d..3fdb6e8ffed 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1307,4 +1307,6 @@ noFinishedRaces=There are no finished races yet racesOverview=Races overview latestRegattaStandings=Latest Regatta Standings openFullscreenView=Open fullscreen view -closeFullscreenView=Close fullscreen view \ No newline at end of file +closeFullscreenView=Close fullscreen view +eventsHaveTakenPlace={0} events have taken place +eventsHaveTakenPlace[one]= One event has taken place \ No newline at end of file From bfe631d33830e5b908123b9d0bc9b7de864e8b56 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 12:06:29 +0200 Subject: [PATCH 035/504] Adjusted browser event consumption in PlaceNavigation --- .../com/sap/sailing/gwt/home/shared/app/PlaceNavigation.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/PlaceNavigation.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/PlaceNavigation.java index 8fb8143b90b..f0a5538edab 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/PlaceNavigation.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/PlaceNavigation.java @@ -102,6 +102,7 @@ public class PlaceNavigation { public void onBrowserEvent(Event event) { if (LinkUtil.handleLinkClick(event)) { event.preventDefault(); + event.stopPropagation(); goToPlace(); } } From b64bd5c563eb7ca5cbb3f809e726d8fc5e97cff7 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 16:37:58 +0200 Subject: [PATCH 036/504] Added partial for mobile series info --- .../EventOverviewRecentSeriesInfo.java | 32 +++++++++++++++++++ .../EventOverviewRecentSeriesInfo.ui.xml | 15 +++++++++ .../partials/recents/EventsOverviewRecent.gss | 11 +++++++ .../EventsOverviewRecentResources.java | 1 + 4 files changed, 59 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.java new file mode 100644 index 00000000000..bd0f0174647 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.java @@ -0,0 +1,32 @@ +package com.sap.sailing.gwt.home.mobile.partials.recents; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.AnchorElement; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.UIObject; +import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; + +public class EventOverviewRecentSeriesInfo extends UIObject { + + private static EventOverviewRecentSeriesInfoUiBinder uiBinder = GWT + .create(EventOverviewRecentSeriesInfoUiBinder.class); + + interface EventOverviewRecentSeriesInfoUiBinder extends UiBinder { + } + + @UiField DivElement seriesNameUi; + @UiField DivElement seriesInfoUi; + private final AnchorElement seriesUi; + + public EventOverviewRecentSeriesInfo(PlaceNavigation seriesNavigation, EventListEventSeriesDTO eventSeries) { + setElement(seriesUi = uiBinder.createAndBindUi(this)); + seriesNameUi.setInnerText(eventSeries.getDisplayName()); + seriesInfoUi.setInnerText(StringMessages.INSTANCE.eventsHaveTakenPlace(eventSeries.getEventsCount())); + seriesNavigation.configureAnchorElement(seriesUi); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.ui.xml new file mode 100644 index 00000000000..3661c9f72ad --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventOverviewRecentSeriesInfo.ui.xml @@ -0,0 +1,15 @@ + + + + + + +
+
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.gss index e09c41ae214..9ab603590ee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.gss @@ -197,3 +197,14 @@ .togglecontainerhidden { display: none; } +.seriesInfo { + display: block; + padding: 0.5rem; + padding-left: 3em; +} +.seriesInfo .eventteaser_title { + font-size: 93.3333333333%; +} +.seriesInfo .eventteaser_title_name { + color: #bcbcbc; +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentResources.java index 805a841fcc4..68448729b12 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentResources.java @@ -46,6 +46,7 @@ public interface EventsOverviewRecentResources extends ClientBundle { String eventsoverviewrecent_event_arrow(); String eventsoverviewrecent_event_arrow_image(); String togglecontainerhidden(); + String seriesInfo(); } @Source("com/sap/sailing/gwt/home/images/default_event_photo.jpg") From 494db9a8a4b2f0cee8d80f437cb9ad90615be751 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 13 Aug 2015 16:40:52 +0200 Subject: [PATCH 037/504] Integrated series info in mobile event list --- .../recents/EventsOverviewRecentYear.java | 6 +++- .../EventsOverviewRecentYearEvent.java | 8 ++++- .../EventsOverviewRecentYearEvent.ui.xml | 35 ++++++++++--------- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java index 4b2d4800058..28626eb5bd6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java @@ -49,11 +49,15 @@ public class EventsOverviewRecentYear extends Composite { this.eventsCount.setInnerText(i18n.eventsCount(events.size())); boolean first = true; for (EventListEventDTO eventDTO : events) { - PlaceNavigation eventNavigation = navigator.getEventNavigation(eventDTO.getId() .toString(), eventDTO.getBaseURL(), eventDTO.isOnRemoteServer()); EventsOverviewRecentYearEvent recentEvent = new EventsOverviewRecentYearEvent(eventNavigation, eventDTO, eventDTO.getState().getListStateMarker(), first || eventDTO.isRunning()); + if (eventDTO.getEventSeries() != null) { + String seriesId = eventDTO.getEventSeries().getId().toString(), baseUrl = eventDTO.getBaseURL(); + PlaceNavigation seriesNavigation = navigator.getEventSeriesNavigation(seriesId, baseUrl, eventDTO.isOnRemoteServer()); + recentEvent.setSeriesInformation(seriesNavigation, eventDTO.getEventSeries()); + } recentEventsTeaserPanel.add(recentEvent); if (first) { first = false; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java index 796e3576111..ef9427674c4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java @@ -13,6 +13,7 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.shared.EventDatesFormatterUtil; import com.sap.sailing.gwt.home.client.shared.LabelTypeUtil; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventSeriesDTO; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.LabelType; @@ -35,11 +36,13 @@ public class EventsOverviewRecentYearEvent extends Widget { SpanElement eventDateUi; @UiField SpanElement eventNameUi; + + private final Element eventContainerUi; public EventsOverviewRecentYearEvent(final PlaceNavigation placeNavigation, final EventMetadataDTO event, LabelType labelType, boolean isTeaserEvent) { EventsOverviewRecentResources.INSTANCE.css().ensureInjected(); - setElement(uiBinder.createAndBindUi(this)); + setElement(eventContainerUi = uiBinder.createAndBindUi(this)); eventNameUi.setInnerText(event.getDisplayName()); if (isTeaserEvent) { eventImageUi.getStyle().setDisplay(Display.BLOCK); @@ -61,5 +64,8 @@ public class EventsOverviewRecentYearEvent extends Widget { event.getEndDate())); } + public void setSeriesInformation(PlaceNavigation seriesNavigation, EventListEventSeriesDTO eventSeries) { + eventContainerUi.appendChild(new EventOverviewRecentSeriesInfo(seriesNavigation, eventSeries).getElement()); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.ui.xml index d5a4c3a7dbe..fede092e9cb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.ui.xml @@ -7,24 +7,25 @@ type="com.sap.sailing.gwt.home.mobile.resources.SharedResources" /> - - - -
-
-
- -
+
+ + + \ No newline at end of file From 64ff6d802f3fad03d3ddf03f9a2bee978e72215c Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 14 Aug 2015 11:10:08 +0200 Subject: [PATCH 038/504] Competition Format - Disabled races competition format view via experimental features flag --- .../regatta/tabs/RegattaRacesTabView.java | 27 +++++++++++-------- .../gwt/home/shared/ExperimentalFeatures.java | 7 +++-- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index dcbe38632cb..2894c6861ed 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -137,9 +137,6 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView() { @@ -150,15 +147,23 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView>() { - @Override - public void setData(ListResult data) { - compFormatContainerUi.clear(); - for (RaceCompetitionFormatSeriesDTO series : data.getValues()) { - compFormatContainerUi.add(new RegattaCompetitionSeries(currentPresenter, series)); + + if (ExperimentalFeatures.SHOW_RACES_COMPETITION_FORMAT) { + listNavigationPanelUi.addAction(Navigation.SORT_LIST_FORMAT, true); + listNavigationPanelUi.addAction(Navigation.COMPETITION_FORMAT, false); + addRacesAction(new RefreshableWidget>() { + @Override + public void setData(ListResult data) { + compFormatContainerUi.clear(); + for (RaceCompetitionFormatSeriesDTO series : data.getValues()) { + compFormatContainerUi.add(new RegattaCompetitionSeries(currentPresenter, series)); + } } - } - }, new GetCompetitionFormatRacesAction(eventId, regattaId), Navigation.COMPETITION_FORMAT); + }, new GetCompetitionFormatRacesAction(eventId, regattaId), Navigation.COMPETITION_FORMAT); + } else { + listNavigationPanelUi.removeFromParent(); + } + oldContentContainer.removeFromParent(); } else { regattaProgressLegendUi.removeFromParent(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java index f1cae94b323..4092f328f7b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java @@ -17,6 +17,9 @@ public class ExperimentalFeatures { * Show overview tab for single-regatta events and series events. */ public static final boolean SHOW_SINGLE_REGATTA_OVERVIEW = true; - - + /** + * Provide option to show races in competition format + */ + public static final boolean SHOW_RACES_COMPETITION_FORMAT = false; + } From 981f68ba75d4ec2c51ea03f28515c176dba97191 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 14 Aug 2015 14:13:14 +0200 Subject: [PATCH 039/504] Mobile Races - Fixed UiBinder errrors --- .../regattacompetition/RegattaCompetition.ui.xml | 4 ++-- .../RegattaCompetitionFleet.ui.xml | 2 +- .../RegattaCompetitionFleetRace.ui.xml | 2 +- .../RegattaCompetitionSeries.ui.xml | 6 +++--- .../home/mobile/places/races/RacesViewImpl.ui.xml | 14 ++++++-------- 5 files changed, 13 insertions(+), 15 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.ui.xml index a154e496822..cc58550dec1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.ui.xml @@ -1,11 +1,11 @@ + xmlns:mp="urn:import:com.sap.sailing.gwt.home.mobile.partials" xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared"> - \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.ui.xml index 0b7558dfef5..64fc15b586c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.ui.xml @@ -1,6 +1,6 @@ + xmlns:mp="urn:import:com.sap.sailing.gwt.home.mobile.partials" xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared"> diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml index 5e843f11521..09e0c04da28 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml @@ -1,6 +1,6 @@ + xmlns:mp="urn:import:com.sap.sailing.gwt.home.mobile.partials" xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared"> diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml index 27101adc7be..10a40af3865 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml @@ -1,11 +1,11 @@ + xmlns:mp="urn:import:com.sap.sailing.gwt.home.mobile.partials" xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared"> - - + + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml index c6365ebfeaf..0a815535337 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml @@ -1,9 +1,9 @@ - + - > + .headerWrapper { background-color: #f2f2f2; @@ -15,12 +15,10 @@ - +
- + \ No newline at end of file From 30ea5d47f6c99cbc528c4527f53b290cac0019e1 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 14 Aug 2015 14:14:49 +0200 Subject: [PATCH 040/504] Mobile Races - Adjusted UI classes to work with modified DTOs --- .../regattacompetition/RegattaCompetition.java | 10 +++++----- .../RegattaCompetitionFleet.java | 8 ++++---- .../RegattaCompetitionFleetRace.java | 8 ++++---- .../RegattaCompetitionSeries.java | 14 +++++++------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java index ab8acacce17..8b150c991ce 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java @@ -9,8 +9,8 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListFleetDTO; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListSeriesDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatSeriesDTO; public class RegattaCompetition extends Composite { @@ -25,11 +25,11 @@ public class RegattaCompetition extends Composite { initWidget(uiBinder.createAndBindUi(this)); } - public void showRaces(Presenter presenter, Collection seriesList) { - for (RaceListSeriesDTO series : seriesList) { + public void showRaces(Presenter presenter, Collection seriesList) { + for (RaceCompetitionFormatSeriesDTO series : seriesList) { RegattaCompetitionSeries regattaCompetitionSeries = new RegattaCompetitionSeries(series); int fleetCount = series.getFleets().size(); - for (RaceListFleetDTO fleet : series.getFleets()) { + for (RaceCompetitionFormatFleetDTO fleet : series.getFleets()) { regattaCompetitionSeries.addFleet(presenter, fleet, fleetCount); } regattaSeriesContainerUi.add(regattaCompetitionSeries); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java index 879fb3d73dc..e1d22355b53 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java @@ -8,8 +8,8 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.mobile.partials.regattacompetition.RegattaCompetitionResources.LocalCss; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListFleetDTO; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListRaceDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; public class RegattaCompetitionFleet extends Widget { @@ -24,7 +24,7 @@ public class RegattaCompetitionFleet extends Widget { @UiField DivElement fleetCornerUi; @UiField DivElement fleetNameUi; - public RegattaCompetitionFleet(RaceListFleetDTO fleet, int fleetCount) { + public RegattaCompetitionFleet(RaceCompetitionFormatFleetDTO fleet, int fleetCount) { setElement(uiBinder.createAndBindUi(this)); raceContainerUi.getStyle().setBackgroundColor("rgba("+ fleet.getFleet().getFleetColor() + ", .1)"); raceContainerUi.getStyle().setWidth(100.0 / fleetCount, Unit.PCT); @@ -33,7 +33,7 @@ public class RegattaCompetitionFleet extends Widget { fleetNameUi.setInnerText(fleet.getFleet().getFleetName()); } - public void addRace(RaceListRaceDTO race, String raceViewerUrl) { + public void addRace(SimpleRaceMetadataDTO race, String raceViewerUrl) { RegattaCompetitionFleetRace fleetRace = new RegattaCompetitionFleetRace(race, raceViewerUrl); raceContainerUi.appendChild(fleetRace.getElement()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java index 1739ff014b4..d4430745a70 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java @@ -7,9 +7,9 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.UIObject; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListRaceDTO; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceTrackingState; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceViewState; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingState; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceViewState; public class RegattaCompetitionFleetRace extends UIObject { @@ -23,7 +23,7 @@ public class RegattaCompetitionFleetRace extends UIObject { @UiField DivElement raceDateUi; private final AnchorElement anchor; - public RegattaCompetitionFleetRace(RaceListRaceDTO race, String raceViewerUrl) { + public RegattaCompetitionFleetRace(SimpleRaceMetadataDTO race, String raceViewerUrl) { setElement(anchor = uiBinder.createAndBindUi(this)); anchor.setHref(raceViewerUrl); local_res.css().ensureInjected(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java index 89e2c1b8454..6045d7c7f1a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java @@ -14,10 +14,10 @@ import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListFleetDTO; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListRaceDTO; -import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListSeriesDTO; -import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceTrackingState; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatSeriesDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; +import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingState; public class RegattaCompetitionSeries extends Composite { @@ -33,7 +33,7 @@ public class RegattaCompetitionSeries extends Composite { @UiField SectionHeaderContent sectionHeaderUi; @UiField FlowPanel fleetContainerUi; - public RegattaCompetitionSeries(RaceListSeriesDTO series) { + public RegattaCompetitionSeries(RaceCompetitionFormatSeriesDTO series) { initWidget(uiBinder.createAndBindUi(this)); sectionHeaderUi.setSectionTitle(DEFAULT_SERIES_NAME.equals(series.getSeriesName()) ? I18N.races() : series.getSeriesName()); initSubtitle(series.getCompetitorCount(), series.getRaceCount()); @@ -62,9 +62,9 @@ public class RegattaCompetitionSeries extends Composite { }, ClickEvent.getType()); } - public void addFleet(Presenter presenter, RaceListFleetDTO fleet, int fleetCount) { + public void addFleet(Presenter presenter, RaceCompetitionFormatFleetDTO fleet, int fleetCount) { RegattaCompetitionFleet competitionFleet = new RegattaCompetitionFleet(fleet, fleetCount); - for (RaceListRaceDTO race : fleet.getRaces()) { + for (SimpleRaceMetadataDTO race : fleet.getRaces()) { boolean tracked = race.getTrackingState() == RaceTrackingState.TRACKED_VALID_DATA; String raceViewerUrl = tracked ? null : null; // TODO No mobile "RaceViewer implemented yet competitionFleet.addRace(race, raceViewerUrl); From 6a2c7c7e22d2b3235bcdd76eaba55be52092f50d Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 17 Aug 2015 11:34:42 +0200 Subject: [PATCH 041/504] Mobile Races - Adjusted UI styles --- .../regattacompetition/RegattaCompetitionFleetRace.java | 8 ++++---- .../regattacompetition/RegattaCompetitionFleetRace.ui.xml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java index d4430745a70..d55ba377cb4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java @@ -25,7 +25,7 @@ public class RegattaCompetitionFleetRace extends UIObject { public RegattaCompetitionFleetRace(SimpleRaceMetadataDTO race, String raceViewerUrl) { setElement(anchor = uiBinder.createAndBindUi(this)); - anchor.setHref(raceViewerUrl); + if (raceViewerUrl != null) this.anchor.setHref(raceViewerUrl); local_res.css().ensureInjected(); setupRaceState(race.getTrackingState(), race.getViewState()); this.raceNameUi.setInnerText(race.getRaceName()); @@ -36,12 +36,12 @@ public class RegattaCompetitionFleetRace extends UIObject { private void setupRaceState(RaceTrackingState trackingState, RaceViewState viewState) { if (viewState == RaceViewState.RUNNING) { - anchor.addClassName(local_res.css().regattacompetition_phase_fleet_racelive()); + anchor.addClassName(local_res.css().regattacompetition_phase_fleet_racelive()); } else if (viewState == RaceViewState.PLANNED || viewState == RaceViewState.SCHEDULED) { - anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceplanned()); + anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceplanned()); } if (trackingState != RaceTrackingState.TRACKED_VALID_DATA) { - anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceuntracked()); + anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceuntracked()); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml index 09e0c04da28..52ef001d3ad 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml @@ -4,7 +4,7 @@ - +
From 99afd149ebb0afd105735242fa308cbb30b11775 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 17 Aug 2015 11:35:07 +0200 Subject: [PATCH 042/504] Mobile Races - Adjusted fleet background color calculation --- .../regattacompetition/RegattaCompetitionFleet.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java index e1d22355b53..027bcb5b2e5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java @@ -9,7 +9,10 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.mobile.partials.regattacompetition.RegattaCompetitionResources.LocalCss; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; +import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; +import com.sap.sse.common.Util.Triple; +import com.sap.sse.common.impl.RGBColor; public class RegattaCompetitionFleet extends Widget { @@ -26,7 +29,7 @@ public class RegattaCompetitionFleet extends Widget { public RegattaCompetitionFleet(RaceCompetitionFormatFleetDTO fleet, int fleetCount) { setElement(uiBinder.createAndBindUi(this)); - raceContainerUi.getStyle().setBackgroundColor("rgba("+ fleet.getFleet().getFleetColor() + ", .1)"); + raceContainerUi.getStyle().setBackgroundColor(getBackgroundColor(fleet.getFleet())); raceContainerUi.getStyle().setWidth(100.0 / fleetCount, Unit.PCT); if (fleetCount < 2) raceContainerUi.addClassName(CSS.regattacompetition_phase_fleetfullwidth()); fleetCornerUi.getStyle().setProperty("borderTopColor", fleet.getFleet().getFleetColor()); @@ -38,4 +41,9 @@ public class RegattaCompetitionFleet extends Widget { raceContainerUi.appendChild(fleetRace.getElement()); } + private String getBackgroundColor(FleetMetadataDTO fleet) { + Triple rgbValues = new RGBColor(fleet.getFleetColor()).getAsRGB(); + return "rgba(" + rgbValues.getA() + "," + rgbValues.getB() + "," + rgbValues.getC() + ", 0.1)"; + } + } From a195ea45106eb63a91c25f481c2e2403fb9e3566 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 17 Aug 2015 11:35:52 +0200 Subject: [PATCH 043/504] Mobile Races - Added mobile section header style --- .../partials/regattacompetition/RegattaCompetitionSeries.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java index 6045d7c7f1a..521edfcdbab 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java @@ -11,6 +11,7 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; +import com.sap.sailing.gwt.home.mobile.partials.section.MobileSectionResources; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -34,10 +35,12 @@ public class RegattaCompetitionSeries extends Composite { @UiField FlowPanel fleetContainerUi; public RegattaCompetitionSeries(RaceCompetitionFormatSeriesDTO series) { + MobileSectionResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); sectionHeaderUi.setSectionTitle(DEFAULT_SERIES_NAME.equals(series.getSeriesName()) ? I18N.races() : series.getSeriesName()); initSubtitle(series.getCompetitorCount(), series.getRaceCount()); initAnimation(sectionHeaderUi, fleetContainerUi, true); + addStyleName(MobileSectionResources.INSTANCE.css().sectionHeader()); } private void initSubtitle(int competitorCount, int raceCount) { From afd71be2b71ac711896b77713cb6deb0fcd4a8be Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 17 Aug 2015 11:36:34 +0200 Subject: [PATCH 044/504] Mobile Races - Added races page styles --- .../home/mobile/places/races/RacesViewImpl.ui.xml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml index 0a815535337..e9319480c65 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml @@ -9,6 +9,15 @@ background-color: #f2f2f2; padding-bottom: 10px; } + .pageTitle { + font-size: 1.066666666666667em; + font-weight: 700; + margin-top: 0.666666666666667em; + } + .legend { + margin-top: 0.666666666666667em; + margin-bottom: 0.666666666666667em; + }
@@ -17,8 +26,10 @@
-
- +
+
+ +
\ No newline at end of file From 742a1b10592e3c061844d5e9bf6f874bee83d6e1 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 17 Aug 2015 11:38:43 +0200 Subject: [PATCH 045/504] Mobile Races - Loading data for races page --- .../regattacompetition/RegattaCompetition.java | 16 ++++++++++------ .../home/mobile/places/races/RacesViewImpl.java | 12 +++++++++++- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java index 8b150c991ce..a3dce38b999 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java @@ -1,18 +1,18 @@ package com.sap.sailing.gwt.home.mobile.partials.regattacompetition; -import java.util.Collection; - import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; +import com.sap.sailing.gwt.ui.shared.dispatch.ListResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatSeriesDTO; -public class RegattaCompetition extends Composite { +public class RegattaCompetition extends Composite implements RefreshableWidget> { private static RegattaCompetitionUiBinder uiBinder = GWT.create(RegattaCompetitionUiBinder.class); @@ -20,13 +20,17 @@ public class RegattaCompetition extends Composite { } @UiField FlowPanel regattaSeriesContainerUi; + private final Presenter presenter; - public RegattaCompetition() { + public RegattaCompetition(Presenter presenter) { + this.presenter = presenter; + RegattaCompetitionResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); } - public void showRaces(Presenter presenter, Collection seriesList) { - for (RaceCompetitionFormatSeriesDTO series : seriesList) { + @Override + public void setData(ListResult data) { + for (RaceCompetitionFormatSeriesDTO series : data.getValues()) { RegattaCompetitionSeries regattaCompetitionSeries = new RegattaCompetitionSeries(series); int fleetCount = series.getFleets().size(); for (RaceCompetitionFormatFleetDTO fleet : series.getFleets()) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java index 7ed3b204e6a..3ee71ba24d7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java @@ -1,16 +1,20 @@ package com.sap.sailing.gwt.home.mobile.places.races; import java.util.Collection; +import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.client.place.event.partials.listNavigation.RegattaNavigationResources; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.mobile.partials.eventheader.EventHeader; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.regattacompetition.RegattaCompetition; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetCompetitionFormatRacesAction; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; @@ -23,12 +27,18 @@ public class RacesViewImpl extends Composite implements RacesView { private Presenter currentPresenter; @UiField(provided = true) EventHeader eventHeaderUi; - @UiField RegattaCompetition regattaCompetitionUi; + @UiField(provided = true) RegattaCompetition regattaCompetitionUi; @UiField Quickfinder quickFinderUi; public RacesViewImpl(Presenter presenter) { currentPresenter = presenter; + eventHeaderUi = new EventHeader(presenter.getCtx().getEventDTO(), presenter.getEventNavigation()); + RegattaNavigationResources.INSTANCE.css().ensureInjected(); + regattaCompetitionUi = new RegattaCompetition(presenter); initWidget(uiBinder.createAndBindUi(this)); + RefreshManager refreshManager = new RefreshManager(this, presenter.getDispatch()); + UUID eventId = presenter.getCtx().getEventDTO().getId(); + refreshManager.add(regattaCompetitionUi, new GetCompetitionFormatRacesAction(eventId, presenter.getCtx().getRegattaId())); } @Override From 986a85a6910ae96e20c9c914b2be6ed930eaffdd Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 17 Aug 2015 11:56:09 +0200 Subject: [PATCH 046/504] Mobile Races - Made new races page accessable --- .../sailing/gwt/home/mobile/app/MobileActivityMapper.java | 4 ++++ .../mobile/places/RegattaRacesNavigationProvider.java | 8 ++++++++ .../gwt/home/mobile/places/event/EventActivity.java | 7 +++++++ .../sailing/gwt/home/mobile/places/event/EventView.java | 4 +++- 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/RegattaRacesNavigationProvider.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java index 2a79e58e5d6..6ca1cd3fa2b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java @@ -5,6 +5,7 @@ import com.google.gwt.activity.shared.ActivityMapper; import com.google.gwt.core.client.GWT; import com.google.gwt.place.shared.Place; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; @@ -15,6 +16,7 @@ import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsActivityProxy import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardActivityProxy; import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; +import com.sap.sailing.gwt.home.mobile.places.races.RacesActivityProxy; import com.sap.sailing.gwt.home.mobile.places.series.SeriesActivityProxy; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardActivityProxy; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; @@ -45,6 +47,8 @@ public class MobileActivityMapper implements ActivityMapper { return new StartActivityProxy((StartPlace) place, clientFactory); } else if (place instanceof EventsPlace) { return new EventsActivityProxy((EventsPlace) place, clientFactory); + } else if (place instanceof RegattaRacesPlace) { + return new RacesActivityProxy((RegattaRacesPlace) place, clientFactory); } else if (place instanceof MiniLeaderboardPlace) { return new MiniLeaderboardActivityProxy((MiniLeaderboardPlace) place, clientFactory); } else if (place instanceof LatestNewsPlace) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/RegattaRacesNavigationProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/RegattaRacesNavigationProvider.java new file mode 100644 index 00000000000..d4f921b1a54 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/RegattaRacesNavigationProvider.java @@ -0,0 +1,8 @@ +package com.sap.sailing.gwt.home.mobile.places; + +import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; + +public interface RegattaRacesNavigationProvider { + + PlaceNavigation getRegattaRacesNavigation(String regattaId); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java index e2afa1206ad..40fb483374c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java @@ -18,6 +18,7 @@ import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.EventView.Presenter; @@ -178,4 +179,10 @@ public class EventActivity extends AbstractActivity implements Presenter { public PlaceNavigation getMiniLeaderboardNavigation(UUID eventId) { return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(eventId.toString(), null), null, false); } + + @Override + public PlaceNavigation getRegattaRacesNavigation(String regattaId) { + EventContext ctx = new EventContext(getCtx()).withRegattaId(regattaId).withRegattaAnalyticsManager(null); + return clientFactory.getNavigator().getEventNavigation(new RegattaRacesPlace(ctx), null, false); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java index 5ad62c6abae..0ed3de6c7d1 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java @@ -6,6 +6,7 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.NewsItemLinkProvider; import com.sap.sailing.gwt.home.mobile.places.RegattaLeaderboardNavigationProvider; +import com.sap.sailing.gwt.home.mobile.places.RegattaRacesNavigationProvider; import com.sap.sailing.gwt.home.mobile.places.SeriesLeaderboardNavigationProvider; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; @@ -29,7 +30,8 @@ public interface EventView { void setMediaForImpressions(int nrOfImages, int nrOfVideos, Collection images); - public interface Presenter extends NewsItemLinkProvider, RegattaLeaderboardNavigationProvider, SeriesLeaderboardNavigationProvider { + public interface Presenter extends NewsItemLinkProvider, RegattaLeaderboardNavigationProvider, + RegattaRacesNavigationProvider, SeriesLeaderboardNavigationProvider { EventContext getCtx(); DispatchSystem getDispatch(); String getRaceViewerURL(String regattaName, String trackedRaceName); From 6f983ee820c97b3d12b696ef88d840a17f5e6984 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 17 Aug 2015 13:19:50 +0200 Subject: [PATCH 047/504] Mobile Races - Refactored series partial to use MobileSection --- .../RegattaCompetitionSeries.java | 3 --- .../RegattaCompetitionSeries.ui.xml | 13 +++++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java index 521edfcdbab..6045d7c7f1a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java @@ -11,7 +11,6 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; -import com.sap.sailing.gwt.home.mobile.partials.section.MobileSectionResources; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -35,12 +34,10 @@ public class RegattaCompetitionSeries extends Composite { @UiField FlowPanel fleetContainerUi; public RegattaCompetitionSeries(RaceCompetitionFormatSeriesDTO series) { - MobileSectionResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); sectionHeaderUi.setSectionTitle(DEFAULT_SERIES_NAME.equals(series.getSeriesName()) ? I18N.races() : series.getSeriesName()); initSubtitle(series.getCompetitorCount(), series.getRaceCount()); initAnimation(sectionHeaderUi, fleetContainerUi, true); - addStyleName(MobileSectionResources.INSTANCE.css().sectionHeader()); } private void initSubtitle(int competitorCount, int raceCount) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml index 10a40af3865..839a341f654 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml @@ -4,8 +4,13 @@ - - - - + + + + + + + + \ No newline at end of file From 5ac5512266cda9233dc589b7855abf60693aae2a Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 17 Aug 2015 14:13:10 +0200 Subject: [PATCH 048/504] Fixed broken css assignment in MobileSection partial --- .../gwt/home/mobile/partials/section/MobileSection.ui.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/section/MobileSection.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/section/MobileSection.ui.xml index 7545b3df779..3ad3f4cc9ff 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/section/MobileSection.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/section/MobileSection.ui.xml @@ -4,7 +4,7 @@ - +
Date: Mon, 17 Aug 2015 14:17:18 +0200 Subject: [PATCH 049/504] Mobile Races - Adjusted UI styles --- .../regattacompetition/RegattaCompetitionSeries.java | 7 +++++-- .../regattacompetition/RegattaCompetitionSeries.ui.xml | 5 ++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java index 6045d7c7f1a..9a8abc145c5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java @@ -11,6 +11,7 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; +import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -23,7 +24,7 @@ public class RegattaCompetitionSeries extends Composite { private static RegattaCompetitionSeriesUiBinder uiBinder = GWT.create(RegattaCompetitionSeriesUiBinder.class); - interface RegattaCompetitionSeriesUiBinder extends UiBinder { + interface RegattaCompetitionSeriesUiBinder extends UiBinder { } private static final String ACCORDION_COLLAPSED_STYLE = RegattaCompetitionResources.INSTANCE.css().accordioncollapsed(); @@ -32,9 +33,11 @@ public class RegattaCompetitionSeries extends Composite { @UiField SectionHeaderContent sectionHeaderUi; @UiField FlowPanel fleetContainerUi; + private final MobileSection seriesUi; public RegattaCompetitionSeries(RaceCompetitionFormatSeriesDTO series) { - initWidget(uiBinder.createAndBindUi(this)); + initWidget(seriesUi = uiBinder.createAndBindUi(this)); + seriesUi.setEdgeToEdgeContent(true); sectionHeaderUi.setSectionTitle(DEFAULT_SERIES_NAME.equals(series.getSeriesName()) ? I18N.races() : series.getSeriesName()); initSubtitle(series.getCompetitorCount(), series.getRaceCount()); initAnimation(sectionHeaderUi, fleetContainerUi, true); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml index 839a341f654..ddf38c500ee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.ui.xml @@ -4,10 +4,9 @@ - + - + From c2789819da8363e883c343e421bcfd39393c6fc2 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 17 Aug 2015 15:40:00 +0200 Subject: [PATCH 050/504] Made SectionHeaderContent optionally collapsable --- .../partials/sectionHeader/SectionHeader.gss | 15 ++++++++++++ .../sectionHeader/SectionHeaderContent.java | 24 +++++++++++++++++++ .../sectionHeader/SectionHeaderResources.java | 2 ++ 3 files changed, 41 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeader.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeader.gss index f9854757a6e..e44a3b9ea85 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeader.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeader.gss @@ -75,6 +75,21 @@ img.sectionheader_item_arrow { margin-left: 1em; height: 0.8em; } +img.sectionheader_item_arrow.accordion { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); + webkit-transition: -webkit-transform 0.4s; + -moz-transition: -moz-transform 0.4s; + transition: transform 0.4s; +} +img.sectionheader_item_arrow.accordion.collapsed { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + transform: rotate(0deg); +} .sectionheader_item_adjust_title { margin-left: 4em; margin-right: 2.5em; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeaderContent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeaderContent.java index be9a103aaf7..9f945396dc1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeaderContent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeaderContent.java @@ -15,12 +15,14 @@ import com.google.gwt.user.client.EventListener; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.LinkUtil; +import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; import com.sap.sailing.gwt.home.client.shared.LabelTypeUtil; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.general.LabelType; public class SectionHeaderContent extends Widget { + protected static final String ACCORDION_COLLAPSED_STYLE = SectionHeaderResources.INSTANCE.css().collapsed(); private static MyBinder uiBinder = GWT.create(MyBinder.class); interface MyBinder extends UiBinder { @@ -73,6 +75,23 @@ public class SectionHeaderContent extends Widget { infoTextUi.setInnerText(infoText); } + public void initCollapsibility(Element content, boolean showInitial) { + final CollapseAnimation animation = new CollapseAnimation(content, showInitial); + setClassName(actionArrowUi, ACCORDION_COLLAPSED_STYLE, !showInitial); + LinkUtil.configureForAction(headerMainUi, new Runnable() { + @Override + public void run() { + boolean collapsed = actionArrowUi.hasClassName(ACCORDION_COLLAPSED_STYLE); + setClassName(actionArrowUi, ACCORDION_COLLAPSED_STYLE, !collapsed); + animation.animate(collapsed); + } + }); + actionArrowUi.setSrc("images/mobile/arrow-down-grey.png"); + actionArrowUi.addClassName(SectionHeaderResources.INSTANCE.css().accordion()); + actionArrowUi.getStyle().clearDisplay(); + headerRightUi.getStyle().clearDisplay(); + } + public void setClickAction(final PlaceNavigation placeNavigation) { placeNavigation.configureAnchorElement(headerMainUi); headerRightUi.getStyle().clearDisplay(); @@ -97,4 +116,9 @@ public class SectionHeaderContent extends Widget { LinkUtil.configureForAction(headerMainUi, commandToExecute); } + private void setClassName(Element element, String className, boolean set) { + if (set) element.addClassName(className); + else element.removeClassName(className); + } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeaderResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeaderResources.java index 1b8298d899c..fc9eb33855a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeaderResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeaderResources.java @@ -24,5 +24,7 @@ public interface SectionHeaderResources extends ClientBundle { String sectionheader_item_infotext(); String sectionheader_item_arrow(); String sectionheader_item_adjust_title(); + String accordion(); + String collapsed(); } } From e5d18b47e4f77e3a064c5b800df93f95ff73ffa9 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 17 Aug 2015 15:40:37 +0200 Subject: [PATCH 051/504] Mobile Races - Refactored to use SectionHeaderContents collapsibility --- .../RegattaCompetitionSeries.java | 21 +------------------ 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java index 9a8abc145c5..40f612bf440 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java @@ -3,14 +3,10 @@ package com.sap.sailing.gwt.home.mobile.partials.regattacompetition; import static com.sap.sailing.domain.common.LeaderboardNameConstants.DEFAULT_SERIES_NAME; import com.google.gwt.core.client.GWT; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; @@ -27,10 +23,8 @@ public class RegattaCompetitionSeries extends Composite { interface RegattaCompetitionSeriesUiBinder extends UiBinder { } - private static final String ACCORDION_COLLAPSED_STYLE = RegattaCompetitionResources.INSTANCE.css().accordioncollapsed(); private static final StringMessages I18N = StringMessages.INSTANCE; - @UiField SectionHeaderContent sectionHeaderUi; @UiField FlowPanel fleetContainerUi; private final MobileSection seriesUi; @@ -40,7 +34,7 @@ public class RegattaCompetitionSeries extends Composite { seriesUi.setEdgeToEdgeContent(true); sectionHeaderUi.setSectionTitle(DEFAULT_SERIES_NAME.equals(series.getSeriesName()) ? I18N.races() : series.getSeriesName()); initSubtitle(series.getCompetitorCount(), series.getRaceCount()); - initAnimation(sectionHeaderUi, fleetContainerUi, true); + sectionHeaderUi.initCollapsibility(fleetContainerUi.getElement(), true); } private void initSubtitle(int competitorCount, int raceCount) { @@ -52,19 +46,6 @@ public class RegattaCompetitionSeries extends Composite { } } - private void initAnimation(Widget trigger, final Widget content, boolean showInitial) { - final CollapseAnimation animation = new CollapseAnimation(content.getElement(), showInitial); - content.setStyleName(ACCORDION_COLLAPSED_STYLE, !showInitial); - trigger.addDomHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - boolean collapsed = content.getElement().hasClassName(ACCORDION_COLLAPSED_STYLE); - content.setStyleName(ACCORDION_COLLAPSED_STYLE, !collapsed); - animation.animate(collapsed); - } - }, ClickEvent.getType()); - } - public void addFleet(Presenter presenter, RaceCompetitionFormatFleetDTO fleet, int fleetCount) { RegattaCompetitionFleet competitionFleet = new RegattaCompetitionFleet(fleet, fleetCount); for (SimpleRaceMetadataDTO race : fleet.getRaces()) { From d48469b27129c92f3204f6ba0472cc0ab949be81 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 17 Aug 2015 17:25:37 +0200 Subject: [PATCH 052/504] Mobile Races - Added additional StringMessages --- .../main/java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 + .../java/com/sap/sailing/gwt/ui/client/StringMessages.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_de.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_ru.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_zh.properties | 1 + 5 files changed, 5 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index a6b57e6f2cb..b30eb2546ae 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1317,6 +1317,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String sailorInfo(); String sailorInfoLongText(); String resultsQuickfinder(); + String racesQuickfinder(); String statistics(); String impressions(); String notAvailableOnMobileMessage(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 0f413d292a6..3dc971a281f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1287,6 +1287,7 @@ raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Ca sailorInfo=Sailor Info sailorInfoLongText=Official Results, Protests,\nNotice Board, Sailor weather: resultsQuickfinder=Results Quickfinder +racesQuickfinder=Races Quickfinder statistics=Statistics impressions=Impressions notAvailableOnMobileMessage=This content is not available on mobile.\nSwitch to the desktop version? diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 029892f132c..a5c086edb2f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1277,6 +1277,7 @@ raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Be sailorInfo=Segler Infos sailorInfoLongText=Offizielle Ergebnisse, Proteste,\nNotice Board, Segler-Wetter: resultsQuickfinder=Ergebnis-Schnellauswahl +racesQuickfinder=Wettfahrt-Schnellauswahl statistics=Statistiken impressions=Eindrücke notAvailableOnMobileMessage=Diese Ansicht ist noch nicht für die Mobile bzw. Smartphone Ansicht umgesetzt.\nWollen Sie die Desktop Ansicht besuchen? diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index b6de9b952c8..9ea50f5a0fa 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1225,6 +1225,7 @@ raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Ca sailorInfo=Моряки информация sailorInfoLongText=Official Results, Protests,\nNotice Board, Sailor weather: resultsQuickfinder=Results Quickfinder +racesQuickfinder=Races Quickfinder statistics=Statistics impressions=Impressions notAvailableOnMobileMessage=This content is not available on mobile.\nSwitch to the desktop version? diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 23c5982ff68..d4664556460 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1278,6 +1278,7 @@ winner=Winner durationPlain=Duration finishedRaces=Finished Races resultsQuickfinder=Results Quickfinder +racesQuickfinder=Races Quickfinder statistics=Statistics impressions=Impressions notAvailableOnMobileMessage=This content is not available on mobile.\nSwitch to the desktop version? From 14614d3a83f2f8c2542c0a1843f53791697dd6cf Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 17 Aug 2015 17:31:00 +0200 Subject: [PATCH 053/504] Mobile Races - Enabled quickfinder to navigate through regatta races pages --- .../mobile/places/QuickfinderPresenter.java | 50 ++++++++++++++----- .../mobile/places/event/EventViewImpl.java | 2 +- .../MiniLeaderboardViewImpl.java | 4 +- .../mobile/places/races/RacesActivity.java | 6 +++ .../home/mobile/places/races/RacesView.java | 4 +- .../mobile/places/races/RacesViewImpl.java | 2 +- 6 files changed, 51 insertions(+), 17 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java index c92197e195b..43ae13c98b1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java @@ -3,6 +3,7 @@ package com.sap.sailing.gwt.home.mobile.places; import java.util.Collection; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; +import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; @@ -11,19 +12,24 @@ import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; public class QuickfinderPresenter { private static final StringMessages MSG = StringMessages.INSTANCE; - public QuickfinderPresenter(Quickfinder quickfinder, RegattaLeaderboardNavigationProvider navigator, Collection regattaMetadatas) { - if (regattaMetadatas == null) { - quickfinder.removeFromParent(); - return; - } - quickfinder.addPlaceholderItem(MSG.resultsQuickfinder()); - for (RegattaMetadataDTO regattaMetadata : regattaMetadatas) { - String boatCategory = regattaMetadata.getBoatCategory(); - if(boatCategory == null || boatCategory.isEmpty()) { - boatCategory = MSG.regattas(); + public static QuickfinderPresenter getRegattaLeaderboardsQuickfinder(Quickfinder quickfinder, + final RegattaLeaderboardNavigationProvider navigator, Collection regattaMetadatas) { + return new QuickfinderPresenter(quickfinder, MSG.resultsQuickfinder(), new RegattaPlaceNaviationProvider() { + @Override + public PlaceNavigation getPlaceNavigation(String regattaId) { + return navigator.getRegattaMiniLeaderboardNavigation(regattaId); } - quickfinder.addItemToGroup(boatCategory, regattaMetadata.getDisplayName(), navigator.getRegattaMiniLeaderboardNavigation(regattaMetadata.getId())); - } + }, regattaMetadatas); + } + + public static QuickfinderPresenter getRegattaRacesQuickfinder(Quickfinder quickfinder, + final RegattaRacesNavigationProvider navigator, Collection regattaMetadatas) { + return new QuickfinderPresenter(quickfinder, MSG.racesQuickfinder(), new RegattaPlaceNaviationProvider() { + @Override + public PlaceNavigation getPlaceNavigation(String regattaId) { + return navigator.getRegattaRacesNavigation(regattaId); + } + }, regattaMetadatas); } public QuickfinderPresenter(Quickfinder quickfinder, SeriesLeaderboardNavigationProvider navigator, String seriesName, Collection eventsOfSeries) { @@ -41,4 +47,24 @@ public class QuickfinderPresenter { quickfinder.addItemToGroup(seriesName, displayName, navigator.getMiniLeaderboardNavigation(eventOfSeries.getId())); } } + + private QuickfinderPresenter(Quickfinder quickfinder, String placeholder, RegattaPlaceNaviationProvider provider, + Collection regattaMetadatas) { + if (regattaMetadatas == null) { + quickfinder.removeFromParent(); + return; + } + quickfinder.addPlaceholderItem(placeholder); + for (RegattaMetadataDTO regattaMetadata : regattaMetadatas) { + String boatCategory = regattaMetadata.getBoatCategory(); + if(boatCategory == null || boatCategory.isEmpty()) { + boatCategory = MSG.regattas(); + } + quickfinder.addItemToGroup(boatCategory, regattaMetadata.getDisplayName(), provider.getPlaceNavigation(regattaMetadata.getId())); + } + } + + private interface RegattaPlaceNaviationProvider { + PlaceNavigation getPlaceNavigation(String regattaId); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java index 31dfc09cf96..079a29ca0f8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java @@ -114,7 +114,7 @@ public class EventViewImpl extends Composite implements EventView { @Override public void setQuickFinderValues(Collection regattaMetadatas) { - new QuickfinderPresenter(quickFinderUi, currentPresenter, regattaMetadatas); + QuickfinderPresenter.getRegattaLeaderboardsQuickfinder(quickFinderUi, currentPresenter, regattaMetadatas); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java index 5fb161f8ee2..d4f5277ee16 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java @@ -16,8 +16,8 @@ import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; -import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; +import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; public class MiniLeaderboardViewImpl extends Composite implements MiniLeaderboardView { @@ -53,7 +53,7 @@ public class MiniLeaderboardViewImpl extends Composite implements MiniLeaderboar @Override public void setQuickFinderValues(Collection regattaMetadatas) { - new QuickfinderPresenter(quickFinderUi, currentPresenter, regattaMetadatas); + QuickfinderPresenter.getRegattaLeaderboardsQuickfinder(quickFinderUi, currentPresenter, regattaMetadatas); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java index d32350d0835..ce4ac347a3a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java @@ -107,4 +107,10 @@ public class RacesActivity extends AbstractActivity implements Presenter { public PlaceNavigation getEventNavigation() { return clientFactory.getNavigator().getEventNavigation(new EventDefaultPlace(getCtx()), null, false); } + + @Override + public PlaceNavigation getRegattaRacesNavigation(String regattaId) { + EventContext ctx = new EventContext(getCtx()).withRegattaId(regattaId).withRegattaAnalyticsManager(null); + return clientFactory.getNavigator().getEventNavigation(new RegattaRacesPlace(ctx), null, false); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java index e80072b8e7b..295a846d8de 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java @@ -5,6 +5,7 @@ import java.util.Collection; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.mobile.places.RegattaLeaderboardNavigationProvider; +import com.sap.sailing.gwt.home.mobile.places.RegattaRacesNavigationProvider; import com.sap.sailing.gwt.home.mobile.places.SeriesLeaderboardNavigationProvider; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; @@ -13,7 +14,8 @@ import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; public interface RacesView { - public interface Presenter extends RegattaLeaderboardNavigationProvider, SeriesLeaderboardNavigationProvider { + public interface Presenter extends RegattaLeaderboardNavigationProvider, SeriesLeaderboardNavigationProvider, + RegattaRacesNavigationProvider { PlaceNavigation getEventNavigation(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java index 3ee71ba24d7..cc95cec3602 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java @@ -43,7 +43,7 @@ public class RacesViewImpl extends Composite implements RacesView { @Override public void setQuickFinderValues(Collection regattaMetadatas) { - new QuickfinderPresenter(quickFinderUi, currentPresenter, regattaMetadatas); + QuickfinderPresenter.getRegattaRacesQuickfinder(quickFinderUi, currentPresenter, regattaMetadatas); } @Override From 8d1c7955238f28467f6a7d2c1fbf5c7c392de1aa Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 18 Aug 2015 10:26:28 +0200 Subject: [PATCH 054/504] Introduced interface to configure mobile version support by flag --- .../home/desktop/app/DesktopActivityMapper.java | 3 +-- .../home/mobile/app/MobileActivityMapper.java | 3 +-- .../gwt/home/shared/SwitchingEntryPoint.java | 17 ++++++++++++++++- .../gwt/home/shared/app/MobileSupport.java | 7 +++++++ 4 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/MobileSupport.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java index 9c53af2757f..b2eec9b0376 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java @@ -26,7 +26,6 @@ import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewActivityProxy; import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint; import com.sap.sailing.gwt.home.shared.app.ApplicationPlaceUpdater; -import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; public class DesktopActivityMapper implements ActivityMapper { private final DesktopClientFactory clientFactory; @@ -42,7 +41,7 @@ public class DesktopActivityMapper implements ActivityMapper { Place place = placeUpdater.getRealPlace(rawPlace); if (SwitchingEntryPoint.isMobile() // && !SwitchingEntryPoint.viewIsLockedToDesktop() - && place instanceof HasMobileVersion) { + && SwitchingEntryPoint.hasMobileVersion(place)) { SwitchingEntryPoint.reloadApp(); return null; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java index 6ca1cd3fa2b..ceaafc1c3db 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java @@ -24,7 +24,6 @@ import com.sap.sailing.gwt.home.mobile.places.solutions.SolutionsActivityProxy; import com.sap.sailing.gwt.home.mobile.places.start.StartActivityProxy; import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint; import com.sap.sailing.gwt.home.shared.app.ApplicationPlaceUpdater; -import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; public class MobileActivityMapper implements ActivityMapper { private final MobileApplicationClientFactory clientFactory; @@ -38,7 +37,7 @@ public class MobileActivityMapper implements ActivityMapper { @Override public Activity getActivity(Place rawPlace) { Place place = placeUpdater.getRealPlace(rawPlace); - if (!(place instanceof HasMobileVersion)) { + if (!SwitchingEntryPoint.hasMobileVersion(place)) { GWT.log("Place has no mobile view: " + place.getClass().getName()); SwitchingEntryPoint.reloadApp(); return null; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/SwitchingEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/SwitchingEntryPoint.java index 0706e896f4b..2cd82245d69 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/SwitchingEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/SwitchingEntryPoint.java @@ -22,6 +22,7 @@ import com.sap.sailing.gwt.home.mobile.MobileEntryPoint; import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper; import com.sap.sailing.gwt.home.shared.app.ApplicationPlaceUpdater; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; +import com.sap.sailing.gwt.home.shared.app.MobileSupport; public class SwitchingEntryPoint implements EntryPoint { private static Logger LOG = Logger.getLogger(SwitchingEntryPoint.class.getName()); @@ -41,7 +42,7 @@ public class SwitchingEntryPoint implements EntryPoint { Place rawPlace = hisMap.getPlace(hash); Place place = placeUpdater.getRealPlace(rawPlace); String userWantsMobileUi = Cookies.getCookie(SAPSAILING_MOBILE); - if (place != null && !(place instanceof HasMobileVersion)) { + if (place != null && !hasMobileVersion(place)) { LOG.info("We have a dedicated desktop place: " + hash); startDesktop(); } else if (userWantsMobileUi != null) { @@ -64,6 +65,20 @@ public class SwitchingEntryPoint implements EntryPoint { } } + /** + * Checks if the given {@link Place} has a mobile view which is indicated either by the {@link HasMobileVersion} + * interface or the {@link MobileSupport#hasMobileVersion()} method. + * + * @param place + * {@link Place} to check + * @return true if the given {@link Place} implements {@link HasMobileVersion} interface or the implemented + * {@link MobileSupport#hasMobileVersion()} method returns true, false otherwise + */ + public static boolean hasMobileVersion(Place place) { + return place instanceof HasMobileVersion + || (place instanceof MobileSupport && ((MobileSupport) place).hasMobileVersion()); + } + /** * Uses regular expression and user agent to detect mobile device. * diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/MobileSupport.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/MobileSupport.java new file mode 100644 index 00000000000..90eb7e158d4 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/MobileSupport.java @@ -0,0 +1,7 @@ +package com.sap.sailing.gwt.home.shared.app; + +public interface MobileSupport { + + boolean hasMobileVersion(); + +} From 2165fff888150cd6f3f28f6ab6e232af9d76bbe6 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 18 Aug 2015 10:28:36 +0200 Subject: [PATCH 055/504] Mobile Races - Added experimental feature flag for mobile races page --- .../place/event/regatta/tabs/RegattaRacesPlace.java | 10 ++++++++-- .../mobile/partials/regattaStatus/RegattaStatus.java | 4 +++- .../sailing/gwt/home/shared/ExperimentalFeatures.java | 4 ++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java index aa63614b0a9..7cbe5acdf16 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java @@ -5,9 +5,10 @@ import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; -import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; +import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; +import com.sap.sailing.gwt.home.shared.app.MobileSupport; -public class RegattaRacesPlace extends AbstractEventRegattaPlace implements HasMobileVersion { +public class RegattaRacesPlace extends AbstractEventRegattaPlace implements MobileSupport { public RegattaRacesPlace(String id, String leaderboardName) { super(id, leaderboardName); } @@ -28,4 +29,9 @@ public class RegattaRacesPlace extends AbstractEventRegattaPlace implements HasM return new RegattaRacesPlace(context); } } + + @Override + public boolean hasMobileVersion() { + return ExperimentalFeatures.SHOW_RACES_ON_MOBILE; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java index 4ec892025c1..e3af0ac31e4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java @@ -13,6 +13,7 @@ import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton; import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton.ToggleButtonCommand; import com.sap.sailing.gwt.home.mobile.places.event.EventView.Presenter; +import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRaceDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RegattasAndLiveRacesDTO; @@ -60,7 +61,8 @@ public class RegattaStatus extends Composite implements RefreshableWidget placeNavigation = presenter.getRegattaMiniLeaderboardNavigation(regatta.getId()); + PlaceNavigation placeNavigation = ExperimentalFeatures.SHOW_RACES_ON_MOBILE ? + presenter.getRegattaRacesNavigation(regatta.getId()) : presenter.getRegattaMiniLeaderboardNavigation(regatta.getId()); RegattaStatusRegatta regattaWidget = new RegattaStatusRegatta(regatta, placeNavigation); container.addContent(regattaWidget); return regattaWidget; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java index 4092f328f7b..0605d3b66b7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java @@ -21,5 +21,9 @@ public class ExperimentalFeatures { * Provide option to show races in competition format */ public static final boolean SHOW_RACES_COMPETITION_FORMAT = false; + /** + * Provide option to show races (competition format) on mobile devices + */ + public static final boolean SHOW_RACES_ON_MOBILE = false; } From 3bed04418e4e350f620043ec3ea02de94f16edf1 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Tue, 18 Aug 2015 13:39:32 +0200 Subject: [PATCH 056/504] Formatting only!!! Formatted polar bundle code. Seems I didn't have the right formatter on my last machine or something like that. --- .../sailing/polars/PolarDataOperation.java | 2 +- .../PolarFixAggregationWorker.java | 41 +- .../aggregation/PolarFixAggregator.java | 11 +- .../SimplePolarFixRaceInterval.java | 1 - .../polars/clusters/SpeedClusterGroup.java | 6 +- .../data/BoatAndWindSpeedWithOriginInfo.java | 8 +- .../impl/DataPointWithOriginInfoImpl.java | 6 +- .../polars/data/impl/PolarFixImpl.java | 18 +- .../generation/PolarSheetGenerator.java | 26 +- .../PolarSheetHistogramBuilder.java | 1 - .../sap/sailing/polars/impl/Activator.java | 4 +- .../sailing/polars/impl/CubicEquation.java | 23 +- .../polars/impl/PolarDataServiceImpl.java | 82 +-- .../mining/AbstractEnrichingProcessor.java | 3 +- .../mining/AngleAndSpeedRegression.java | 29 +- .../mining/AngleClusterPolarClusterKey.java | 2 +- .../polars/mining/AverageAngleContainer.java | 1 - .../polars/mining/BasePolarClusterKey.java | 2 +- .../polars/mining/BearingClusterGroup.java | 9 +- .../CubicRegressionPerCourseProcessor.java | 24 +- .../mining/GPSFixMovingWithPolarContext.java | 14 +- .../polars/mining/LegTypePolarClusterKey.java | 2 +- .../polars/mining/MovingAverageProcessor.java | 8 +- .../mining/MovingAverageProcessorImpl.java | 26 +- .../PolarDataDimensionCollectionFactory.java | 29 +- .../sailing/polars/mining/PolarDataMiner.java | 158 +++--- .../polars/mining/PolarFixFilterCriteria.java | 34 +- ...edClusterGroupFromWindSteppingCreator.java | 4 +- ...eedRegressionPerAngleClusterProcessor.java | 65 ++- .../sailing/polars/mining/WindSpeedLevel.java | 1 - .../regression/IncrementalLeastSquares.java | 12 +- .../MovingAverageBoatSpeedEstimator.java | 14 +- .../IncrementalAnyOrderLeastSquaresImpl.java | 89 ++-- .../impl/WindSpeedAndAngleEstimator.java | 30 +- .../ManeuverBasedWindEstimationTrackImpl.java | 480 ++++++++++-------- ...onToHasConfidenceAndIsScalableAdapter.java | 15 +- .../ScalableBearingAndScalableDouble.java | 20 +- 37 files changed, 696 insertions(+), 604 deletions(-) diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/PolarDataOperation.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/PolarDataOperation.java index 4504ec6fe35..0c73e8ca736 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/PolarDataOperation.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/PolarDataOperation.java @@ -3,6 +3,6 @@ package com.sap.sailing.polars; import com.sap.sailing.polars.impl.PolarDataServiceImpl; import com.sap.sse.replication.OperationWithResult; -public interface PolarDataOperation extends OperationWithResult{ +public interface PolarDataOperation extends OperationWithResult { } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregationWorker.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregationWorker.java index 1a0535bb671..1878d65ca0f 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregationWorker.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregationWorker.java @@ -24,8 +24,8 @@ import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Pair; /** - * Iterates through the fixes of one competitor in one tracked race and fills the {@link PolarFixAggregator} - * with datapoints that are found for the speed of the boat and its angle to the wind + * Iterates through the fixes of one competitor in one tracked race and fills the {@link PolarFixAggregator} with + * datapoints that are found for the speed of the boat and its angle to the wind * * @author D054528 Frederik Petersen * @@ -41,11 +41,11 @@ public class PolarFixAggregationWorker implements Runnable { private TimePoint endTime; private final Competitor competitor; - + private boolean noConfidence = false; private boolean done = false; - + private int finishedEarlyAtWaypoint = -1; private PolarSheetGenerationSettings settings; @@ -168,30 +168,27 @@ public class PolarFixAggregationWorker implements Runnable { if (settings.splitByWindgauges()) { windWithConfidenceList.addAll(addAllWindsOfWindGaugesSplitOneByOne(fix)); } else { - windWithConfidenceList -.add(new Pair>>( - createWindGaugesString(race), race.getWindWithConfidence( - fix.getPosition(), fix.getTimePoint(), - collectWindSourcesToIgnoreForSpeed()))); + windWithConfidenceList.add(new Pair>>( + createWindGaugesString(race), race.getWindWithConfidence(fix.getPosition(), + fix.getTimePoint(), collectWindSourcesToIgnoreForSpeed()))); } } else { - windWithConfidenceList.add(new Pair>>( - "Combined", race.getWindWithConfidence(fix.getPosition(), fix.getTimePoint()))); + windWithConfidenceList.add(new Pair>>("Combined", + race.getWindWithConfidence(fix.getPosition(), fix.getTimePoint()))); } for (Pair>> windWithSourceIdStringPair : windWithConfidenceList) { - WindWithConfidence> windWithConfidence = windWithSourceIdStringPair - .getB(); + WindWithConfidence> windWithConfidence = windWithSourceIdStringPair.getB(); if (windWithConfidence != null && windWithConfidence.useSpeed() && windWithConfidence.getConfidence() >= settings.getMinimumWindConfidence()) { - PolarFix polarFix = new PolarFixImpl(fix, race, track, windWithConfidence.getObject(), - settings, windWithSourceIdStringPair.getA()); + PolarFix polarFix = new PolarFixImpl(fix, race, track, windWithConfidence.getObject(), settings, + windWithSourceIdStringPair.getA()); polarSheetGenerationWorker.addPolarFix(race.getRaceIdentifier(), polarFix); } } } } - + private Collection>>> addAllWindsOfWindGaugesSplitOneByOne( GPSFixMoving fix) { Iterable windGaugeSources = race.getWindSources(WindSourceType.EXPEDITION); @@ -204,13 +201,13 @@ public class PolarFixAggregationWorker implements Runnable { allSourcesButTheSingleWindGaugeSource.add(windSource); } } - windWithConfidenceList.add(new Pair>>( - windGaugeSource.getId().toString(), race.getWindWithConfidence(fix.getPosition(), fix.getTimePoint(), - allSourcesButTheSingleWindGaugeSource))); + windWithConfidenceList.add(new Pair>>(windGaugeSource + .getId().toString(), race.getWindWithConfidence(fix.getPosition(), fix.getTimePoint(), + allSourcesButTheSingleWindGaugeSource))); } return windWithConfidenceList; } - + private String createWindGaugesString(TrackedRace race) { Iterable gaugeWindSources = race.getWindSources(WindSourceType.EXPEDITION); String gaugeIdString = ""; @@ -218,7 +215,7 @@ public class PolarFixAggregationWorker implements Runnable { if (gaugeIdString.isEmpty()) { gaugeIdString = "" + source.getId(); } else { - gaugeIdString = gaugeIdString + "+" + source.getId(); + gaugeIdString = gaugeIdString + "+" + source.getId(); } } return gaugeIdString; @@ -227,7 +224,7 @@ public class PolarFixAggregationWorker implements Runnable { public boolean isDone() { return done; } - + private Set collectWindSourcesToIgnoreForSpeed() { Set windSourcesToExclude = new HashSet(); Iterable combinedSources = race.getWindSources(WindSourceType.COMBINED); diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregator.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregator.java index 543a350f0d6..ab1e99e2bd4 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregator.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregator.java @@ -93,9 +93,8 @@ public class PolarFixAggregator implements Future> get(long timeout, TimeUnit unit) throws InterruptedException, - ExecutionException, - TimeoutException { + ExecutionException, TimeoutException { long timeRun = 0; long timeoutInMillis = unit.toMillis(timeout); while (!isDone() && timeRun < timeoutInMillis) { @@ -158,8 +156,7 @@ public class PolarFixAggregator implements Future getAggregationResultAsSingleList() throws InterruptedException, - ExecutionException { + public Set getAggregationResultAsSingleList() throws InterruptedException, ExecutionException { Set fixes = new HashSet(); Map> aggregationResult = get(); for (List list : aggregationResult.values()) { diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/SimplePolarFixRaceInterval.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/SimplePolarFixRaceInterval.java index 7912fc3504e..6f99bdff331 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/SimplePolarFixRaceInterval.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/SimplePolarFixRaceInterval.java @@ -11,7 +11,6 @@ import com.sap.sse.common.Util.Pair; public class SimplePolarFixRaceInterval implements PolarFixRaceInterval { - private final Map>> intervalMap; public SimplePolarFixRaceInterval(Set races) { diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/clusters/SpeedClusterGroup.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/clusters/SpeedClusterGroup.java index e91da829a9b..d03f3bee0a8 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/clusters/SpeedClusterGroup.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/clusters/SpeedClusterGroup.java @@ -13,7 +13,7 @@ import com.sap.sse.datamining.impl.data.ComparisonStrategy; import com.sap.sse.datamining.impl.data.FixClusterGroup; public class SpeedClusterGroup extends FixClusterGroup { - + private static final long serialVersionUID = -3428022721991223921L; /** @@ -38,8 +38,8 @@ public class SpeedClusterGroup extends FixClusterGroup { for (int index = 0; index < levelMidsInKnots.length; index++) { ClusterBoundary lowerBoundary = createLowerBoundary(levelMidsInKnots, maxDistanceInKnots, index); ClusterBoundary upperBoundary = createUpperBoundary(levelMidsInKnots, maxDistanceInKnots, index); - Cluster cluster = new ClusterWithLowerAndUpperBoundaries(levelMidsInKnots[index] + "kn", lowerBoundary, - upperBoundary); + Cluster cluster = new ClusterWithLowerAndUpperBoundaries(levelMidsInKnots[index] + "kn", + lowerBoundary, upperBoundary); clusterList.add(cluster); } return clusterList; diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/BoatAndWindSpeedWithOriginInfo.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/BoatAndWindSpeedWithOriginInfo.java index 7e10cb89af0..8293414e4f8 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/BoatAndWindSpeedWithOriginInfo.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/BoatAndWindSpeedWithOriginInfo.java @@ -3,13 +3,13 @@ package com.sap.sailing.polars.data; import com.sap.sailing.domain.common.Speed; public interface BoatAndWindSpeedWithOriginInfo { - + public Speed getBoatSpeed(); - + public Speed getWindSpeed(); - + public String getWindGaugesIdString(); - + public String getDayString(); } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/DataPointWithOriginInfoImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/DataPointWithOriginInfoImpl.java index a0fbe3af361..680b667fdaf 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/DataPointWithOriginInfoImpl.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/DataPointWithOriginInfoImpl.java @@ -5,7 +5,7 @@ import com.sap.sailing.polars.data.DataPointWithOriginInfo; public class DataPointWithOriginInfoImpl implements DataPointWithOriginInfo { private Double rawData; - + private String windGaugeIdString; private String dayString; @@ -25,7 +25,7 @@ public class DataPointWithOriginInfoImpl implements DataPointWithOriginInfo { public String getWindGaugeIdString() { return windGaugeIdString; } - + @Override public String getDayString() { return dayString; @@ -35,5 +35,5 @@ public class DataPointWithOriginInfoImpl implements DataPointWithOriginInfo { public int compareTo(DataPointWithOriginInfo o) { return getRawData().compareTo(o.getRawData()); } - + } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/PolarFixImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/PolarFixImpl.java index 6ea76a1d327..7b874d4e920 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/PolarFixImpl.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/PolarFixImpl.java @@ -27,26 +27,26 @@ public class PolarFixImpl implements PolarFix { private String gaugeIdString; private String dayString; - public PolarFixImpl(GPSFixMoving fix, TrackedRace race, GPSFixTrack track, Wind windSpeed, - PolarSheetGenerationSettings settings, String gaugeIdString) { + public PolarFixImpl(GPSFixMoving fix, TrackedRace race, GPSFixTrack track, + Wind windSpeed, PolarSheetGenerationSettings settings, String gaugeIdString) { boatSpeed = track.getEstimatedSpeed(fix.getTimePoint()); Bearing bearing = boatSpeed.getBearing(); - + Position position = fix.getPosition(); this.gaugeIdString = gaugeIdString; dayString = createDayString(race); this.windSpeed = windSpeed; Set windSourcesToExclude; if (settings.useOnlyEstimatedForWindDirection()) { - windSourcesToExclude = collectWindSourcesToIgnoreForBearing(race, /* exclude course based */ true); + windSourcesToExclude = collectWindSourcesToIgnoreForBearing(race, /* exclude course based */true); } else { windSourcesToExclude = new HashSet(); } - + Wind windEstimated = race.getWind(position, fix.getTimePoint(), windSourcesToExclude); if (windEstimated == null) { // no estimated wind; try to include course layout - windSourcesToExclude = collectWindSourcesToIgnoreForBearing(race, /* exclude course based */ false); + windSourcesToExclude = collectWindSourcesToIgnoreForBearing(race, /* exclude course based */false); windEstimated = race.getWind(position, fix.getTimePoint(), windSourcesToExclude); } if (windEstimated == null) { @@ -63,7 +63,7 @@ public class PolarFixImpl implements PolarFix { SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd"); resultDateString = fmt.format(startTimePoint.asDate()); } - + return resultDateString; } @@ -112,8 +112,8 @@ public class PolarFixImpl implements PolarFix { @Override public String getGaugeIdString() { return gaugeIdString; - } - + } + @Override public String getDayString() { return dayString; diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetGenerator.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetGenerator.java index 3ad651d8833..a227cbf7212 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetGenerator.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetGenerator.java @@ -44,7 +44,6 @@ public class PolarSheetGenerator { return container; } - private void addPolarFix(PolarFix polarFix) { long roundedAngleDeg = Math.round(polarFix.getTrueWindAngleDeg()); Speed boatSpeed = polarFix.getBoatSpeed(); @@ -148,8 +147,8 @@ public class PolarSheetGenerator { List withoutOutliers = new ArrayList(); Collections.sort(dataSetForWindLevel.get(levelIndex)); if (dataCountPerWindSpeed[levelIndex] > /* Minimum data count for outlier detection */10) { - performOutlierExclusion(sumsPerWindSpeed, dataCountPerWindSpeed, dataSetForWindLevel, - levelIndex, withoutOutliers); + performOutlierExclusion(sumsPerWindSpeed, dataCountPerWindSpeed, dataSetForWindLevel, levelIndex, + withoutOutliers); } } @@ -177,8 +176,8 @@ public class PolarSheetGenerator { if (rawData == null || rawData.size() <= 0) { continue; } - PolarSheetsHistogramData histogramData = histogramBuilder.build(rawData, angleIndex, - coefficiantOfVariation); + PolarSheetsHistogramData histogramData = histogramBuilder + .build(rawData, angleIndex, coefficiantOfVariation); histogramDataMap.get(levelIndex).put(angleIndex, histogramData); } @@ -189,8 +188,8 @@ public class PolarSheetGenerator { List withoutOutliers) { for (int dataIndex = 0; dataIndex < dataSetForWindLevel.get(levelIndex).size(); dataIndex++) { DataPointWithOriginInfo dataPoint = dataSetForWindLevel.get(levelIndex).get(dataIndex); - double pct = getNeighboorhoodSizePercentage(dataCountPerWindSpeed, dataSetForWindLevel, - levelIndex, dataIndex, dataPoint, settings); + double pct = getNeighboorhoodSizePercentage(dataCountPerWindSpeed, dataSetForWindLevel, levelIndex, + dataIndex, dataPoint, settings); if (pct >= settings.getOutlierMinimumNeighborhoodPct()) { withoutOutliers.add(dataPoint); } else { @@ -202,13 +201,13 @@ public class PolarSheetGenerator { } /** - * This method calculates the pct of the points neighborhoods based on a distance (in the settings) compared - * to the complete dataset. + * This method calculates the pct of the points neighborhoods based on a distance (in the settings) compared to the + * complete dataset. */ public static double getNeighboorhoodSizePercentage(int[] dataCountPerWindSpeed, Map> valuesInMap, int levelIndex, int dataIndex, DataPointWithOriginInfo dataPoint, PolarSheetGenerationSettings settings) { - int neighborCount = 0; + int neighborCount = 0; double pct = .0; int index = dataIndex; @@ -219,8 +218,7 @@ public class PolarSheetGenerator { if (index < 0) { done = true; } else { - Double dataPointToCheckForNeighborStatus = valuesInMap.get(levelIndex).get( - index).getRawData(); + Double dataPointToCheckForNeighborStatus = valuesInMap.get(levelIndex).get(index).getRawData(); if (dataPoint.getRawData() - dataPointToCheckForNeighborStatus <= settings .getOutlierDetectionNeighborhoodRadius()) { neighborCount++; @@ -241,8 +239,7 @@ public class PolarSheetGenerator { if (index >= dataCountPerWindSpeed[levelIndex]) { done = true; } else { - Double dataPointToCheckForNeighborStatus = valuesInMap.get(levelIndex).get( - index).getRawData(); + Double dataPointToCheckForNeighborStatus = valuesInMap.get(levelIndex).get(index).getRawData(); if (dataPointToCheckForNeighborStatus - dataPoint.getRawData() <= settings .getOutlierDetectionNeighborhoodRadius()) { neighborCount++; @@ -259,7 +256,6 @@ public class PolarSheetGenerator { return pct; } - /** * Can be used to present more detailed data. * diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetHistogramBuilder.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetHistogramBuilder.java index fdbbe434675..b6af619266e 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetHistogramBuilder.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetHistogramBuilder.java @@ -59,7 +59,6 @@ public class PolarSheetHistogramBuilder { createHistogramDataForArrangeOption(numberOfColumns, yValuesByDayAndGaugeId, u, dayAndGaugeIdString); } - PolarSheetsHistogramData histogramData = new PolarSheetsHistogramDataImpl(angleIndex, xValues, yValues, yValuesByGaugeIds, yValuesByDay, yValuesByDayAndGaugeId, rawData.size(), coefficiantOfVariation); diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/Activator.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/Activator.java index c5357d21292..d7227786ca2 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/Activator.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/Activator.java @@ -14,9 +14,9 @@ import com.sap.sailing.domain.polars.PolarDataService; import com.sap.sse.replication.Replicable; public class Activator implements BundleActivator { - + private static final Logger logger = Logger.getLogger(Activator.class.getName()); - + private final Set> registrations = new HashSet<>(); @Override diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/CubicEquation.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/CubicEquation.java index 65c26cb42dc..0047627ba28 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/CubicEquation.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/CubicEquation.java @@ -15,39 +15,38 @@ public class CubicEquation { } /** - * Following: http://www.1728.org/cubic2.htm - * !The complex roots are not returned! + * Following: http://www.1728.org/cubic2.htm !The complex roots are not returned! */ public double[] solve() { double f = ((3 * c) / a - (b * b) / (a * a)) / 3; double g = ((2 * b * b * b) / (a * a * a) - (9 * b * c) / (a * a) + (27 * d) / a) / 27; - double h = (g*g) / 4 + (f*f*f) / 27; - + double h = (g * g) / 4 + (f * f * f) / 27; + double[] result; - + if (f == 0 && g == 0 && h == 0) { // All roots equal and real result = new double[1]; - result[0] = - Math.cbrt(d/a); + result[0] = -Math.cbrt(d / a); } else if (h > 0) { // Only one root is real - double r = -(g/2) + Math.sqrt(h); + double r = -(g / 2) + Math.sqrt(h); double s = Math.cbrt(r); - double t = -(g/2) - Math.sqrt(h); + double t = -(g / 2) - Math.sqrt(h); double u = Math.cbrt(t); result = new double[1]; result[0] = (s + u) - (b / (3 * a)); - //!!The complex roots are not returned + // !!The complex roots are not returned } else { // All three roots are real and not equal double i = Math.sqrt((g * g) / 4 - h); double j = Math.cbrt(i); - double k = Math.acos(-(g/(2*i))); + double k = Math.acos(-(g / (2 * i))); double l = -1 * j; double m = Math.cos(k / 3); - double n = Math.sqrt(3) * Math.sin(k/3); - double p = - (b/(3*a)); + double n = Math.sqrt(3) * Math.sin(k / 3); + double p = -(b / (3 * a)); result = new double[3]; result[0] = 2 * j * Math.cos(k / 3) - b / (3 * a); result[1] = l * (m + n) + p; diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java index c4892903732..7b521a09a87 100755 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java @@ -64,14 +64,15 @@ import com.sap.sse.util.SmartFutureCache; * @author Frederik Petersen (D054528) * */ -public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObjectInputStream>{ +public class PolarDataServiceImpl implements PolarDataService, + ReplicableWithObjectInputStream> { private static final Logger logger = Logger.getLogger(PolarDataServiceImpl.class.getSimpleName()); - + private PolarDataMiner polarDataMiner; - + private final ConcurrentHashMap, OperationExecutionListener> operationExecutionListeners; - + /** * The master from which this replicable is currently replicating, or null if this replicable is not * currently replicated from any master. @@ -79,12 +80,12 @@ public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObj private ReplicationMasterDescriptor replicatingFromMaster; private final Set> operationsSentToMasterForReplication; - + private ThreadLocal currentlyFillingFromInitialLoadOrApplyingOperationReceivedFromMaster = ThreadLocal .withInitial(() -> false); private DomainFactory domainFactory; - + public PolarDataServiceImpl() { PolarSheetGenerationSettings settings = PolarSheetGenerationSettingsImpl.createBackendPolarSettings(); ClusterGroup angleClusterGroup = createAngleClusterGroup(); @@ -102,9 +103,11 @@ public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObj } @Override - public SpeedWithConfidence getSpeed(BoatClass boatClass, Speed windSpeed, Bearing trueWindAngle) throws NotEnoughDataHasBeenAddedException { + public SpeedWithConfidence getSpeed(BoatClass boatClass, Speed windSpeed, Bearing trueWindAngle) + throws NotEnoughDataHasBeenAddedException { if (polarDataMiner == null) { - throw new NotEnoughDataHasBeenAddedException("Polar Data Miner is currently unavailable. Maybe we are in the process of replication initial load?"); + throw new NotEnoughDataHasBeenAddedException( + "Polar Data Miner is currently unavailable. Maybe we are in the process of replication initial load?"); } return polarDataMiner.estimateBoatSpeed(boatClass, windSpeed, trueWindAngle); } @@ -119,12 +122,13 @@ public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObj public SpeedWithBearingWithConfidence getAverageSpeedWithBearing(BoatClass boatClass, Speed windSpeed, LegType legType, Tack tack) throws NotEnoughDataHasBeenAddedException { if (polarDataMiner == null) { - throw new NotEnoughDataHasBeenAddedException("Polar Data Miner is currently unavailable. Maybe we are in the process of replication initial load?"); + throw new NotEnoughDataHasBeenAddedException( + "Polar Data Miner is currently unavailable. Maybe we are in the process of replication initial load?"); } SpeedWithBearingWithConfidence averageSpeedAndCourseOverGround = polarDataMiner .getAverageSpeedAndCourseOverGround(boatClass, windSpeed, legType); if (tack == Tack.PORT) { - //Negative twa + // Negative twa DegreeBearingImpl bearing = new DegreeBearingImpl(-averageSpeedAndCourseOverGround.getObject().getBearing() .getDegrees()); KnotSpeedWithBearingImpl speed = new KnotSpeedWithBearingImpl(averageSpeedAndCourseOverGround.getObject() @@ -135,7 +139,6 @@ public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObj return averageSpeedAndCourseOverGround; } - @Override public PolarSheetsData generatePolarSheet(Set trackedRaces, PolarSheetGenerationSettings settings, Executor executor) throws InterruptedException, ExecutionException { @@ -165,20 +168,22 @@ public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObj } @Override - public int[] getDataCountsForWindSpeed(BoatClass boatClass, Speed windSpeed, int startAngleInclusive, int endAngleExclusive) { + public int[] getDataCountsForWindSpeed(BoatClass boatClass, Speed windSpeed, int startAngleInclusive, + int endAngleExclusive) { return polarDataMiner.getDataCountsForWindSpeed(boatClass, windSpeed, startAngleInclusive, endAngleExclusive); } @Override public double getConfidenceForTackJibeSpeedRatio(Speed intoTackSpeed, Speed intoJibeSpeed, BoatClass boatClass) { - return Math.min(1., 0.5*intoJibeSpeed.getKnots()/intoTackSpeed.getKnots()); + return Math.min(1., 0.5 * intoJibeSpeed.getKnots() / intoTackSpeed.getKnots()); } @Override - public Pair> getManeuverLikelihoodAndTwsTwa(BoatClass boatClass, Speed speedAtManeuverStart, double courseChangeDeg, - ManeuverType maneuverType) { + public Pair> getManeuverLikelihoodAndTwsTwa(BoatClass boatClass, + Speed speedAtManeuverStart, double courseChangeDeg, ManeuverType maneuverType) { assert maneuverType == ManeuverType.TACK || maneuverType == ManeuverType.JIBE; - SpeedWithBearingWithConfidence closestTwsTwa = getClosestTwaTws(maneuverType, speedAtManeuverStart, courseChangeDeg, boatClass); + SpeedWithBearingWithConfidence closestTwsTwa = getClosestTwaTws(maneuverType, speedAtManeuverStart, + courseChangeDeg, boatClass); final Pair> result; if (closestTwsTwa == null) { result = new Pair<>(0.0, null); @@ -190,16 +195,17 @@ public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObj return result; } - private SpeedWithBearingWithConfidence getClosestTwaTws(ManeuverType type, Speed speedAtManeuverStart, double courseChangeDeg, BoatClass boatClass) { + private SpeedWithBearingWithConfidence getClosestTwaTws(ManeuverType type, Speed speedAtManeuverStart, + double courseChangeDeg, BoatClass boatClass) { assert type == ManeuverType.TACK || type == ManeuverType.JIBE; double minDiff = Double.MAX_VALUE; SpeedWithBearingWithConfidence closestTwsTwa = null; for (SpeedWithBearingWithConfidence trueWindSpeedAndAngle : getAverageTrueWindSpeedAndAngleCandidates( - boatClass, speedAtManeuverStart, - type == ManeuverType.TACK ? LegType.UPWIND : LegType.DOWNWIND, + boatClass, speedAtManeuverStart, type == ManeuverType.TACK ? LegType.UPWIND : LegType.DOWNWIND, type == ManeuverType.TACK ? courseChangeDeg >= 0 ? Tack.PORT : Tack.STARBOARD - : courseChangeDeg >= 0 ? Tack.STARBOARD : Tack.PORT)) { - double diff = Math.abs(trueWindSpeedAndAngle.getObject().getBearing().getDegrees()*2)-Math.abs(courseChangeDeg); + : courseChangeDeg >= 0 ? Tack.STARBOARD : Tack.PORT)) { + double diff = Math.abs(trueWindSpeedAndAngle.getObject().getBearing().getDegrees() * 2) + - Math.abs(courseChangeDeg); if (diff < minDiff) { minDiff = diff; closestTwsTwa = trueWindSpeedAndAngle; @@ -213,13 +219,13 @@ public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObj throws NotEnoughDataHasBeenAddedException { return polarDataMiner.getSpeedRegressionFunction(boatClass, legType); } - + @Override public PolynomialFunction getAngleRegressionFunction(BoatClass boatClass, LegType legType) throws NotEnoughDataHasBeenAddedException { return polarDataMiner.getAngleRegressionFunction(boatClass, legType); } - + @Override public PolynomialFunction getSpeedRegressionFunction(BoatClass boatClass, double trueWindAngle) throws NotEnoughDataHasBeenAddedException { @@ -242,12 +248,14 @@ public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObj throw new IllegalArgumentException("Boatclass and windspeed cannot be null."); } if (polarDataMiner == null) { - throw new NotEnoughDataHasBeenAddedException("Polar Data Miner is currently unavailable. Maybe we are in the process of replication initial load?"); + throw new NotEnoughDataHasBeenAddedException( + "Polar Data Miner is currently unavailable. Maybe we are in the process of replication initial load?"); } - SpeedWithBearingWithConfidence speed = polarDataMiner.getAverageSpeedAndCourseOverGround(boatClass, windSpeed, legType); + SpeedWithBearingWithConfidence speed = polarDataMiner.getAverageSpeedAndCourseOverGround(boatClass, + windSpeed, legType); Bearing bearing = new DegreeBearingImpl(speed.getObject().getBearing().getDegrees() * 2); - BearingWithConfidence bearingWithConfidence = new BearingWithConfidenceImpl(bearing, speed.getConfidence(), - null); + BearingWithConfidence bearingWithConfidence = new BearingWithConfidenceImpl(bearing, + speed.getConfidence(), null); return bearingWithConfidence; } @@ -284,7 +292,7 @@ public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObj public void clearReplicaState() throws MalformedURLException, IOException, InterruptedException { polarDataMiner = null; } - + @Override public boolean isCurrentlyFillingFromInitialLoadOrApplyingOperationReceivedFromMaster() { return currentlyFillingFromInitialLoadOrApplyingOperationReceivedFromMaster.get(); @@ -293,7 +301,7 @@ public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObj @Override public void setCurrentlyFillingFromInitialLoadOrApplyingOperationReceivedFromMaster(boolean b) { currentlyFillingFromInitialLoadOrApplyingOperationReceivedFromMaster.set(b); - + } @Override @@ -318,19 +326,20 @@ public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObj public void initiallyFillFromInternal(ObjectInputStream is) throws IOException, ClassNotFoundException, InterruptedException { PolarSheetGenerationSettings backendPolarSettings = (PolarSheetGenerationSettings) is.readObject(); - - CubicRegressionPerCourseProcessor cubicRegressionPerCourseProcessor = (CubicRegressionPerCourseProcessor) is.readObject(); - SpeedRegressionPerAngleClusterProcessor speedRegressionPerAngleClusterProcessor = (SpeedRegressionPerAngleClusterProcessor) is.readObject(); - polarDataMiner = new PolarDataMiner(backendPolarSettings, - cubicRegressionPerCourseProcessor, speedRegressionPerAngleClusterProcessor, - speedRegressionPerAngleClusterProcessor.getAngleCluster()); + CubicRegressionPerCourseProcessor cubicRegressionPerCourseProcessor = (CubicRegressionPerCourseProcessor) is + .readObject(); + SpeedRegressionPerAngleClusterProcessor speedRegressionPerAngleClusterProcessor = (SpeedRegressionPerAngleClusterProcessor) is + .readObject(); + + polarDataMiner = new PolarDataMiner(backendPolarSettings, cubicRegressionPerCourseProcessor, + speedRegressionPerAngleClusterProcessor, speedRegressionPerAngleClusterProcessor.getAngleCluster()); } @Override public void serializeForInitialReplicationInternal(ObjectOutputStream objectOutputStream) throws IOException { objectOutputStream.writeObject(polarDataMiner.getPolarSheetGenerationSettings()); - //objectOutputStream.writeObject(polarDataMiner.getMovingAverageProcessor()); + // objectOutputStream.writeObject(polarDataMiner.getMovingAverageProcessor()); objectOutputStream.writeObject(polarDataMiner.getCubicRegressionPerCourseProcessor()); objectOutputStream.writeObject(polarDataMiner.getSpeedRegressionPerAngleClusterProcessor()); } @@ -360,7 +369,6 @@ public class PolarDataServiceImpl implements PolarDataService, ReplicableWithObj return this.operationsSentToMasterForReplication.contains(operation); } - @Override public void addOperationSentToMasterForReplication( OperationWithResultWithIdWrapper operation) { diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java index 0f0068ac13c..2b0999df9b7 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java @@ -9,7 +9,8 @@ import com.sap.sse.datamining.components.ProcessorInstruction; import com.sap.sse.datamining.impl.components.AbstractParallelProcessor; import com.sap.sse.datamining.impl.components.AbstractProcessorInstruction; -public abstract class AbstractEnrichingProcessor extends AbstractParallelProcessor { +public abstract class AbstractEnrichingProcessor extends + AbstractParallelProcessor { public AbstractEnrichingProcessor(Class inputType, Class resultType, ExecutorService executor, Collection> resultReceivers) { diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleAndSpeedRegression.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleAndSpeedRegression.java index e7a1ddd884d..d681f31ea7a 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleAndSpeedRegression.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleAndSpeedRegression.java @@ -26,11 +26,11 @@ import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Pair; public class AngleAndSpeedRegression implements Serializable { - + private static final long serialVersionUID = 6343595388753945979L; private final IncrementalLeastSquares speedRegression = new IncrementalAnyOrderLeastSquaresImpl(3, false); private final IncrementalLeastSquares angleRegression = new IncrementalAnyOrderLeastSquaresImpl(3); - + private double maxWindSpeedInKnots = -1; public void addData(WindWithConfidence> windSpeed, @@ -40,10 +40,11 @@ public class AngleAndSpeedRegression implements Serializable { maxWindSpeedInKnots = windSpeedInKnots; } speedRegression.addData(windSpeedInKnots, boatSpeed.getObject().getKnots()); - angleRegression.addData(windSpeedInKnots, angleToTheWind.getObject().getDegrees()); + angleRegression.addData(windSpeedInKnots, angleToTheWind.getObject().getDegrees()); } - public SpeedWithBearingWithConfidence estimateSpeedAndAngle(Speed windSpeed) throws NotEnoughDataHasBeenAddedException { + public SpeedWithBearingWithConfidence estimateSpeedAndAngle(Speed windSpeed) + throws NotEnoughDataHasBeenAddedException { double windSpeedInKnots = windSpeed.getKnots(); if (windSpeedInKnots > maxWindSpeedInKnots) { throw new NotEnoughDataHasBeenAddedException(); @@ -52,13 +53,16 @@ public class AngleAndSpeedRegression implements Serializable { double estimatedAngle = angleRegression.getOrCreatePolynomialFunction().value(windSpeedInKnots); Bearing bearing = new DegreeBearingImpl(estimatedAngle); SpeedWithBearing speedWithBearing = new KnotSpeedWithBearingImpl(estimatedSpeed, bearing); - return new SpeedWithBearingWithConfidenceImpl(speedWithBearing, Math.min(1, speedRegression.getNumberOfAddedPoints() / 100.0), null); + return new SpeedWithBearingWithConfidenceImpl(speedWithBearing, Math.min(1, + speedRegression.getNumberOfAddedPoints() / 100.0), null); } - public Set> estimateTrueWindSpeedAndAngleCandidates(Speed speedOverGround, LegType legType, Tack tack) throws NotEnoughDataHasBeenAddedException { + public Set> estimateTrueWindSpeedAndAngleCandidates(Speed speedOverGround, + LegType legType, Tack tack) throws NotEnoughDataHasBeenAddedException { double[] coefficiants = speedRegression.getOrCreatePolynomialFunction().getCoefficients(); - CubicEquation equation = new CubicEquation(coefficiants[2], coefficiants[1], coefficiants[0], -speedOverGround.getKnots()); - + CubicEquation equation = new CubicEquation(coefficiants[2], coefficiants[1], coefficiants[0], + -speedOverGround.getKnots()); + double[] windSpeedCandidates = equation.solve(); Set> result = new HashSet<>(); for (int i = 0; i < windSpeedCandidates.length; i++) { @@ -68,20 +72,21 @@ public class AngleAndSpeedRegression implements Serializable { boolean angleFound; try { angle = angleRegression.getOrCreatePolynomialFunction().value(windSpeedCandidateInKnots); - if ((tack == Tack.PORT && legType == LegType.UPWIND) || (tack == Tack.STARBOARD && legType == LegType.DOWNWIND)) { + if ((tack == Tack.PORT && legType == LegType.UPWIND) + || (tack == Tack.STARBOARD && legType == LegType.DOWNWIND)) { angle = -angle; } angleFound = true; - } catch(NotEnoughDataHasBeenAddedException e) { + } catch (NotEnoughDataHasBeenAddedException e) { angleFound = false; } if (angleFound) { result.add(new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl( - windSpeedCandidateInKnots, new DegreeBearingImpl(angle)), 0.5 /*FIXME*/, null)); + windSpeedCandidateInKnots, new DegreeBearingImpl(angle)), 0.5 /* FIXME */, null)); } } } - + return result; } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleClusterPolarClusterKey.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleClusterPolarClusterKey.java index 48826f625bc..aace77f0f0a 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleClusterPolarClusterKey.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleClusterPolarClusterKey.java @@ -5,7 +5,7 @@ import com.sap.sse.datamining.data.Cluster; import com.sap.sse.datamining.shared.annotations.Dimension; public interface AngleClusterPolarClusterKey extends BasePolarClusterKey { - + @Dimension(messageKey = "angleCluster") Cluster getAngleCluster(); diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AverageAngleContainer.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AverageAngleContainer.java index 5b6e73031e9..c9c9f738e37 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AverageAngleContainer.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AverageAngleContainer.java @@ -2,7 +2,6 @@ package com.sap.sailing.polars.mining; import java.io.Serializable; - public class AverageAngleContainer implements Serializable { private static final long serialVersionUID = -6370647955050312847L; private int dataCount = 0; diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BasePolarClusterKey.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BasePolarClusterKey.java index 86f1fc2432b..d8fac8ff3a8 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BasePolarClusterKey.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BasePolarClusterKey.java @@ -7,5 +7,5 @@ public interface BasePolarClusterKey { @Dimension(messageKey = "boatClass") BoatClass getBoatClass(); - + } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BearingClusterGroup.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BearingClusterGroup.java index 918b1db3086..a18b055a20e 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BearingClusterGroup.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BearingClusterGroup.java @@ -17,7 +17,7 @@ import com.sap.sse.datamining.impl.data.ComparisonStrategy; import com.sap.sse.datamining.impl.data.FixClusterGroup; import com.sap.sse.i18n.ResourceBundleStringMessages; -public class BearingClusterGroup extends FixClusterGroup{ +public class BearingClusterGroup extends FixClusterGroup { private static final long serialVersionUID = -3810975212669767738L; @@ -30,8 +30,8 @@ public class BearingClusterGroup extends FixClusterGroup{ List> clusters = new ArrayList>(); for (int i = 0; i < numberOfClusters; i++) { clusters.add(new ClusterWithLowerAndUpperBoundaries("", createBoundary(startAngle + i - * clusterSize, ComparisonStrategy.GREATER_THAN), createBoundary(startAngle + (i + 1) - * clusterSize, ComparisonStrategy.LOWER_EQUALS_THAN))); + * clusterSize, ComparisonStrategy.GREATER_THAN), createBoundary(startAngle + (i + 1) * clusterSize, + ComparisonStrategy.LOWER_EQUALS_THAN))); } return clusters; } @@ -46,7 +46,7 @@ public class BearingClusterGroup extends FixClusterGroup{ public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages) { return ""; } - + private static class BearingComparator implements Comparator, Serializable { private static final long serialVersionUID = 8166601046140275541L; @@ -57,5 +57,4 @@ public class BearingClusterGroup extends FixClusterGroup{ } }; - } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/CubicRegressionPerCourseProcessor.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/CubicRegressionPerCourseProcessor.java index 599c5ed5505..2fe4f5f7985 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/CubicRegressionPerCourseProcessor.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/CubicRegressionPerCourseProcessor.java @@ -29,7 +29,7 @@ public class CubicRegressionPerCourseProcessor implements private static final long serialVersionUID = 3059764273262382648L; private static final Logger logger = Logger.getLogger(CubicRegressionPerCourseProcessor.class.getName()); - + private final Map regressions = new HashMap<>(); /** @@ -65,7 +65,7 @@ public class CubicRegressionPerCourseProcessor implements } } } - + public SpeedWithBearingWithConfidence getAverageSpeedAndCourseOverGround(BoatClass boatClass, Speed windSpeed, LegType legType) throws NotEnoughDataHasBeenAddedException { GroupKey key = createGroupKey(boatClass, legType); @@ -77,7 +77,7 @@ public class CubicRegressionPerCourseProcessor implements } return estimatedSpeedAndAngle; } - + public Set> estimateTrueWindSpeedAndAngleCandidates(BoatClass boatClass, Speed speedOverGround, LegType legType, Tack tack) { GroupKey key = createGroupKey(boatClass, legType); @@ -93,7 +93,7 @@ public class CubicRegressionPerCourseProcessor implements } return result; } - + private GroupKey createGroupKey(final BoatClass boatClass, final LegType legType) { LegTypePolarClusterKey key = new LegTypePolarClusterKey() { @@ -117,7 +117,7 @@ public class CubicRegressionPerCourseProcessor implements } return compoundKey; } - + public PolynomialFunction getSpeedRegressionFunction(BoatClass boatClass, LegType legType) throws NotEnoughDataHasBeenAddedException { GroupKey key = createGroupKey(boatClass, legType); @@ -129,7 +129,7 @@ public class CubicRegressionPerCourseProcessor implements } return polynomialFunction; } - + public PolynomialFunction getAngleRegressionFunction(BoatClass boatClass, LegType legType) throws NotEnoughDataHasBeenAddedException { GroupKey key = createGroupKey(boatClass, legType); @@ -148,15 +148,14 @@ public class CubicRegressionPerCourseProcessor implements logger.severe("Polar Data Mining Pipe failed. Cause: " + failure.getMessage()); throw new RuntimeException("Polar Data Miner failed.", failure); } - + public void setListeners(ConcurrentHashMap> listeners) { this.listeners = listeners; } - @Override public Class> getInputType() { - // TODO Auto-generated method stub + // TODO Auto-generated method stub return null; } @@ -166,12 +165,11 @@ public class CubicRegressionPerCourseProcessor implements return null; } - @Override public void finish() throws InterruptedException { // Nothing to do here } - + @Override public boolean isFinished() { return false; @@ -181,7 +179,7 @@ public class CubicRegressionPerCourseProcessor implements public void abort() { // TODO Auto-generated method stub } - + @Override public boolean isAborted() { // TODO Auto-generated method stub @@ -194,6 +192,4 @@ public class CubicRegressionPerCourseProcessor implements return null; } - - } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/GPSFixMovingWithPolarContext.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/GPSFixMovingWithPolarContext.java index 4283c45aa93..0d02bd8ae7c 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/GPSFixMovingWithPolarContext.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/GPSFixMovingWithPolarContext.java @@ -79,7 +79,8 @@ public class GPSFixMovingWithPolarContext implements LegTypePolarClusterKey, Ang } catch (NoWindException e) { bearing = null; } - WindWithConfidence> wind = race.getWindWithConfidence(fix.getPosition(), fix.getTimePoint()); + WindWithConfidence> wind = race.getWindWithConfidence(fix.getPosition(), + fix.getTimePoint()); if (bearing != null && wind != null) { result = new BearingWithConfidenceImpl(bearing, wind.getConfidence(), null); } @@ -90,17 +91,18 @@ public class GPSFixMovingWithPolarContext implements LegTypePolarClusterKey, Ang return wind; } - public SpeedWithBearingWithConfidence getBoatSpeed() { + public SpeedWithBearingWithConfidence getBoatSpeed() { return boatSpeed; } - + private SpeedWithBearingWithConfidence computeBoatSpeed() { GPSFixTrack track = race.getTrack(competitor); - return track.getEstimatedSpeed(fix.getTimePoint(), ConfidenceFactory.INSTANCE.createExponentialTimeDifferenceWeigher( + return track.getEstimatedSpeed(fix.getTimePoint(), + ConfidenceFactory.INSTANCE.createExponentialTimeDifferenceWeigher( // use a minimum confidence to avoid the bearing to flip to 270deg in case all is zero - track.getMillisecondsOverWhichToAverageSpeed()/2, /* minimumConfidence */ 0.00000001)); + track.getMillisecondsOverWhichToAverageSpeed() / 2, /* minimumConfidence */0.00000001)); } - + private Set collectWindSourcesToIgnoreForSpeed() { Set windSourcesToExclude = new HashSet(); Iterable combinedSources = race.getWindSources(WindSourceType.COMBINED); diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/LegTypePolarClusterKey.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/LegTypePolarClusterKey.java index 4a60733b411..2cdd0876cbb 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/LegTypePolarClusterKey.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/LegTypePolarClusterKey.java @@ -4,7 +4,7 @@ import com.sap.sailing.domain.common.LegType; import com.sap.sse.datamining.shared.annotations.Dimension; public interface LegTypePolarClusterKey extends BasePolarClusterKey { - + @Dimension(messageKey = "legType") LegType getLegType(); diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessor.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessor.java index f27023e1274..896c3f6aace 100755 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessor.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessor.java @@ -11,8 +11,10 @@ import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.data.ClusterGroup; import com.sap.sse.datamining.impl.components.GroupedDataEntry; -public interface MovingAverageProcessor extends Processor, Void>, Serializable { - SpeedWithBearingWithConfidence getAverageSpeedAndCourseOverGround(BoatClass boatClass, - Speed windSpeed, LegType legType) throws NotEnoughDataHasBeenAddedException; +public interface MovingAverageProcessor extends Processor, Void>, + Serializable { + SpeedWithBearingWithConfidence getAverageSpeedAndCourseOverGround(BoatClass boatClass, Speed windSpeed, + LegType legType) throws NotEnoughDataHasBeenAddedException; + ClusterGroup getSpeedCluster(); } \ No newline at end of file diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessorImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessorImpl.java index dcc7a30fe0a..e48a36ebaaa 100755 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessorImpl.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessorImpl.java @@ -36,7 +36,7 @@ public class MovingAverageProcessorImpl implements MovingAverageProcessor { private static final Logger logger = Logger.getLogger(MovingAverageProcessorImpl.class.getName()); private final Map boatSpeedEstimators = new HashMap<>(); - + private final Map averageAngleContainers = new HashMap<>(); private final ClusterGroup speedClusterGroup; @@ -44,7 +44,7 @@ public class MovingAverageProcessorImpl implements MovingAverageProcessor { public MovingAverageProcessorImpl(ClusterGroup speedClusterGroup) { this.speedClusterGroup = speedClusterGroup; } - + @Override public boolean canProcessElements() { // TODO Auto-generated method stub @@ -89,7 +89,7 @@ public class MovingAverageProcessorImpl implements MovingAverageProcessor { public void finish() throws InterruptedException { // Nothing to do here } - + @Override public boolean isFinished() { return false; @@ -99,7 +99,7 @@ public class MovingAverageProcessorImpl implements MovingAverageProcessor { public void abort() { // TODO Auto-generated method stub } - + @Override public boolean isAborted() { // TODO Auto-generated method stub @@ -115,19 +115,22 @@ public class MovingAverageProcessorImpl implements MovingAverageProcessor { public static class SpeedWithConfidenceAndDataCount { private final SpeedWithConfidence speedWithConfidence; private final int dataCount; + protected SpeedWithConfidenceAndDataCount(SpeedWithConfidence speedWithConfidence, int dataCount) { super(); this.speedWithConfidence = speedWithConfidence; this.dataCount = dataCount; } + public SpeedWithConfidence getSpeedWithConfidence() { return speedWithConfidence; } + public int getDataCount() { return dataCount; } } - + private SpeedWithConfidenceAndDataCount estimateBoatSpeed(GroupKey key) throws NotEnoughDataHasBeenAddedException { MovingAverageBoatSpeedEstimator boatSpeedEstimator = boatSpeedEstimators.get(key); if (boatSpeedEstimator == null) { @@ -136,9 +139,10 @@ public class MovingAverageProcessorImpl implements MovingAverageProcessor { Speed speedWithoutConfidence = boatSpeedEstimator.estimateSpeed(); final int dataCount = boatSpeedEstimator.getDataCount(); double confidence = boatSpeedEstimator.getConfidence(); - return new SpeedWithConfidenceAndDataCount(new SpeedWithConfidenceImpl(speedWithoutConfidence, confidence, null), dataCount); + return new SpeedWithConfidenceAndDataCount(new SpeedWithConfidenceImpl(speedWithoutConfidence, + confidence, null), dataCount); } - + private Bearing estimateAngle(GroupKey key) throws NotEnoughDataHasBeenAddedException { AverageAngleContainer averageAngleContainer = averageAngleContainers.get(key); if (averageAngleContainer == null) { @@ -172,14 +176,16 @@ public class MovingAverageProcessorImpl implements MovingAverageProcessor { return result; } - private SpeedWithBearingWithConfidence estimateSpeedAndAngle(BoatClass boatClass, Speed windSpeed, LegType legType) throws NotEnoughDataHasBeenAddedException { + private SpeedWithBearingWithConfidence estimateSpeedAndAngle(BoatClass boatClass, Speed windSpeed, + LegType legType) throws NotEnoughDataHasBeenAddedException { GroupKey key = createGroupKey(boatClass, windSpeed, legType); Bearing angleDiffTrueWindToBoat = estimateAngle(key); SpeedWithConfidence estimatedSpeed = estimateBoatSpeed(key).getSpeedWithConfidence(); - SpeedWithBearing speedWithBearing = new KnotSpeedWithBearingImpl(estimatedSpeed.getObject().getKnots(), angleDiffTrueWindToBoat); + SpeedWithBearing speedWithBearing = new KnotSpeedWithBearingImpl(estimatedSpeed.getObject().getKnots(), + angleDiffTrueWindToBoat); return new SpeedWithBearingWithConfidenceImpl(speedWithBearing, estimatedSpeed.getConfidence(), null); } - + private GroupKey createGroupKey(final BoatClass boatClass, final Speed windSpeed, final LegType legType) { MovingAveragePolarClusterKey key = new MovingAveragePolarClusterKey() { diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataDimensionCollectionFactory.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataDimensionCollectionFactory.java index daed33d8c9d..497a4ecc277 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataDimensionCollectionFactory.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataDimensionCollectionFactory.java @@ -19,10 +19,9 @@ public class PolarDataDimensionCollectionFactory { addPolarBaseDimension(dimensions, functionFactory); - - - Function windSpeedFunction = functionFactory.createMethodWrappingFunction(MovingAveragePolarClusterKey.class - .getMethod("getWindSpeedCluster", new Class[0])); + Function windSpeedFunction = functionFactory + .createMethodWrappingFunction(MovingAveragePolarClusterKey.class.getMethod("getWindSpeedCluster", + new Class[0])); dimensions.add(windSpeedFunction); return dimensions; } @@ -37,12 +36,14 @@ public class PolarDataDimensionCollectionFactory { private static void addPolarBaseDimension(Collection> dimensions, FunctionFactory functionFactory) throws NoSuchMethodException { - Function boatClassFunction = functionFactory.createMethodWrappingFunction(MovingAveragePolarClusterKey.class - .getMethod("getBoatClass", new Class[0])); + Function boatClassFunction = functionFactory + .createMethodWrappingFunction(MovingAveragePolarClusterKey.class.getMethod("getBoatClass", + new Class[0])); dimensions.add(boatClassFunction); } - public static Collection> getCubicRegressionPerCourseClusterKeyDimensions() throws NoSuchMethodException { + public static Collection> getCubicRegressionPerCourseClusterKeyDimensions() + throws NoSuchMethodException { Collection> dimensions = new ArrayList<>(); FunctionFactory functionFactory = new FunctionFactory(); addTackAndLegTypeDimensions(dimensions, functionFactory); @@ -50,17 +51,19 @@ public class PolarDataDimensionCollectionFactory { addPolarBaseDimension(dimensions, functionFactory); return dimensions; } - - public static Collection> getSpeedRegressionPerAngleClusterClusterKeyDimensions() throws NoSuchMethodException { + + public static Collection> getSpeedRegressionPerAngleClusterClusterKeyDimensions() + throws NoSuchMethodException { Collection> dimensions = new ArrayList<>(); FunctionFactory functionFactory = new FunctionFactory(); addPolarBaseDimension(dimensions, functionFactory); - - Function> angleDiffTrueWindToBoatFunction = functionFactory.createMethodWrappingFunction(AngleClusterPolarClusterKey.class - .getMethod("getAngleCluster", new Class[0])); + + Function> angleDiffTrueWindToBoatFunction = functionFactory + .createMethodWrappingFunction(AngleClusterPolarClusterKey.class.getMethod("getAngleCluster", + new Class[0])); dimensions.add(angleDiffTrueWindToBoatFunction); - + return dimensions; } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataMiner.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataMiner.java index 5a498911c64..70d317cf6ee 100755 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataMiner.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataMiner.java @@ -58,33 +58,34 @@ import com.sap.sse.util.impl.ThreadFactoryWithPriority; public class PolarDataMiner { private static final int EXECUTOR_QUEUE_SIZE = 100; - private static final int THREAD_POOL_SIZE = Math.max((int) (Runtime.getRuntime().availableProcessors() * (3.0/4.0)), 3); + private static final int THREAD_POOL_SIZE = Math.max( + (int) (Runtime.getRuntime().availableProcessors() * (3.0 / 4.0)), 3); private final ThreadPoolExecutor executor = createExecutor(); private final ConcurrentHashMap> fixesForRacesWhichAreStillLoading = new ConcurrentHashMap<>(); - + private final Queue fixQueue = new ConcurrentLinkedQueue(); - + private static final Logger logger = Logger.getLogger(PolarDataMiner.class.getSimpleName()); - + private final ConcurrentHashMap> listeners = new ConcurrentHashMap<>(); - + private ParallelFilteringProcessor preFilteringProcessor; private final PolarSheetGenerationSettings backendPolarSheetGenerationSettings; - + /** - * This processor uses two cubic regressions angle to the true wind over windspeed and boatspeed over windspeed for each - * course (legtype tack combination) + * This processor uses two cubic regressions angle to the true wind over windspeed and boatspeed over windspeed for + * each course (legtype tack combination) */ private final CubicRegressionPerCourseProcessor cubicRegressionPerCourseProcessor; - + private final SpeedRegressionPerAngleClusterProcessor speedRegressionPerAngleClusterProcessor; private final ClusterGroup angleClusterGroup; private ThreadPoolExecutor createExecutor() { return new ThreadPoolExecutor(THREAD_POOL_SIZE, THREAD_POOL_SIZE, 60l, TimeUnit.SECONDS, - new LinkedBlockingQueue(EXECUTOR_QUEUE_SIZE), new ThreadFactoryWithPriority(Thread.NORM_PRIORITY, /* daemon */ true), - new RejectedExecutionHandler() { + new LinkedBlockingQueue(EXECUTOR_QUEUE_SIZE), new ThreadFactoryWithPriority( + Thread.NORM_PRIORITY, /* daemon */true), new RejectedExecutionHandler() { @Override public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { logger.warning("Polar Data Miner Executor rejected execution. Running sequentially."); @@ -103,9 +104,9 @@ public class PolarDataMiner { } }; } - - public PolarDataMiner(PolarSheetGenerationSettings backendPolarSettings, - CubicRegressionPerCourseProcessor cubicRegressionPerCourseProcessor, + + public PolarDataMiner(PolarSheetGenerationSettings backendPolarSettings, + CubicRegressionPerCourseProcessor cubicRegressionPerCourseProcessor, SpeedRegressionPerAngleClusterProcessor speedRegressionPerAngleClusterProcessor, ClusterGroup angleClusterGroup) { cubicRegressionPerCourseProcessor.setListeners(listeners); @@ -122,41 +123,45 @@ public class PolarDataMiner { } } - private void setUpWorkflow() throws ClassCastException, NoSuchMethodException, - SecurityException { + private void setUpWorkflow() throws ClassCastException, NoSuchMethodException, SecurityException { Collection, ?>> regressionPerCourseGrouperResultReceivers = new ArrayList, ?>>(); regressionPerCourseGrouperResultReceivers.add(cubicRegressionPerCourseProcessor); Collection> parameterizedDimensionsForCubicRegression = new ArrayList<>(); - for (Function function : PolarDataDimensionCollectionFactory.getCubicRegressionPerCourseClusterKeyDimensions()) { - parameterizedDimensionsForCubicRegression.add(new SimpleParameterizedFunction<>(function, ParameterProvider.NULL)); + for (Function function : PolarDataDimensionCollectionFactory + .getCubicRegressionPerCourseClusterKeyDimensions()) { + parameterizedDimensionsForCubicRegression.add(new SimpleParameterizedFunction<>(function, + ParameterProvider.NULL)); } Processor> cubicRegressionPerCourseGroupingProcessor = new ParallelMultiDimensionsValueNestingGroupingProcessor( - GPSFixMovingWithPolarContext.class, executor, regressionPerCourseGrouperResultReceivers, parameterizedDimensionsForCubicRegression); - + GPSFixMovingWithPolarContext.class, executor, regressionPerCourseGrouperResultReceivers, + parameterizedDimensionsForCubicRegression); + Collection, ?>> regressionPerAngleClusterGrouperResultReceivers = new ArrayList, ?>>(); regressionPerAngleClusterGrouperResultReceivers.add(speedRegressionPerAngleClusterProcessor); Collection> parameterizedDimensionsForRegressionPerAngleCluster = new ArrayList<>(); - for (Function function : PolarDataDimensionCollectionFactory.getSpeedRegressionPerAngleClusterClusterKeyDimensions()) { - parameterizedDimensionsForRegressionPerAngleCluster.add(new SimpleParameterizedFunction<>(function, ParameterProvider.NULL)); + for (Function function : PolarDataDimensionCollectionFactory + .getSpeedRegressionPerAngleClusterClusterKeyDimensions()) { + parameterizedDimensionsForRegressionPerAngleCluster.add(new SimpleParameterizedFunction<>(function, + ParameterProvider.NULL)); } - - Processor> regressionPerAngleClusterGroupingProcessor = new ParallelMultiDimensionsValueNestingGroupingProcessor( - GPSFixMovingWithPolarContext.class, executor, regressionPerAngleClusterGrouperResultReceivers, parameterizedDimensionsForRegressionPerAngleCluster); - + Processor> regressionPerAngleClusterGroupingProcessor = new ParallelMultiDimensionsValueNestingGroupingProcessor( + GPSFixMovingWithPolarContext.class, executor, regressionPerAngleClusterGrouperResultReceivers, + parameterizedDimensionsForRegressionPerAngleCluster); + Collection> filteringResultReceivers = new ArrayList<>(); filteringResultReceivers.add(cubicRegressionPerCourseGroupingProcessor); filteringResultReceivers.add(regressionPerAngleClusterGroupingProcessor); - + Processor filteringProcessor = new ParallelFilteringProcessor( - GPSFixMovingWithPolarContext.class, executor, filteringResultReceivers, new PolarFixFilterCriteria(backendPolarSheetGenerationSettings.getPctOfLeadingCompetitorsToInclude())); + GPSFixMovingWithPolarContext.class, executor, filteringResultReceivers, new PolarFixFilterCriteria( + backendPolarSheetGenerationSettings.getPctOfLeadingCompetitorsToInclude())); Collection> enrichingResultReceivers = Arrays .asList(filteringProcessor); - AbstractEnrichingProcessor enrichingProcessor = new AbstractEnrichingProcessor( GPSFixMovingWithOriginInfo.class, GPSFixMovingWithPolarContext.class, executor, enrichingResultReceivers) { @@ -169,17 +174,19 @@ public class PolarDataMiner { return result; } }; - + Collection> preFilterResultReceivers = Arrays .asList(enrichingProcessor); - + preFilteringProcessor = new ParallelFilteringProcessor( - GPSFixMovingWithOriginInfo.class, executor, preFilterResultReceivers, new FilterCriterion() { + GPSFixMovingWithOriginInfo.class, executor, preFilterResultReceivers, + new FilterCriterion() { @Override public boolean matches(GPSFixMovingWithOriginInfo element) { boolean result = false; - if (PolarFixFilterCriteria.isInLeadingCompetitors(element.getTrackedRace(), element.getCompetitor(), + if (PolarFixFilterCriteria.isInLeadingCompetitors(element.getTrackedRace(), + element.getCompetitor(), backendPolarSheetGenerationSettings.getPctOfLeadingCompetitorsToInclude())) { result = true; } @@ -192,10 +199,8 @@ public class PolarDataMiner { } }); - } - public void addFix(GPSFixMoving fix, Competitor competitor, TrackedRace trackedRace) { GPSFixMovingWithOriginInfo fixWithOriginInfo = new GPSFixMovingWithOriginInfo(fix, trackedRace, competitor); if (trackedRace.getStatus().getStatus() == TrackedRaceStatusEnum.LOADING) { @@ -240,7 +245,8 @@ public class PolarDataMiner { * @param boatClass * @param windSpeed * @param trueWindAngle - * @param useLinearRegression if true uses lin. regression in the wind interval, otherwise arithm. mean + * @param useLinearRegression + * if true uses lin. regression in the wind interval, otherwise arithm. mean * @return * @throws NotEnoughDataHasBeenAddedException */ @@ -248,38 +254,44 @@ public class PolarDataMiner { throws NotEnoughDataHasBeenAddedException { return speedRegressionPerAngleClusterProcessor.estimateBoatSpeed(boatClass, windSpeed, trueWindAngle); } - + public Set> estimateTrueWindSpeedAndAngleCandidates(BoatClass boatClass, Speed speedOverGround, LegType legType, Tack tack) { - Set> resultSet = cubicRegressionPerCourseProcessor.estimateTrueWindSpeedAndAngleCandidates(boatClass, speedOverGround, legType, tack); + Set> resultSet = cubicRegressionPerCourseProcessor + .estimateTrueWindSpeedAndAngleCandidates(boatClass, speedOverGround, legType, tack); if (resultSet.isEmpty()) { // FALLBACK function if no data was available - resultSet = getAverageTrueWindSpeedAndAngleCandidatesWithFallbackFunction(boatClass, speedOverGround, legType, tack); + resultSet = getAverageTrueWindSpeedAndAngleCandidatesWithFallbackFunction(boatClass, speedOverGround, + legType, tack); } return resultSet; } - - private Set> getAverageTrueWindSpeedAndAngleCandidatesWithFallbackFunction(BoatClass boatClass, - Speed speedOverGround, LegType legType, Tack tack) { - - // The following is an estimation function. It only serves as a fallback. It's the same for all boatclasses and returns + + private Set> getAverageTrueWindSpeedAndAngleCandidatesWithFallbackFunction( + BoatClass boatClass, Speed speedOverGround, LegType legType, Tack tack) { + + // The following is an estimation function. It only serves as a fallback. It's the same for all boatclasses and + // returns // default maneuver angles. - // The function is able to return boat speed values for windspeed values between 5kn and 25kn , which are some kind of realistic + // The function is able to return boat speed values for windspeed values between 5kn and 25kn , which are some + // kind of realistic // for sailing boats. They are taken from the 505 polars we gathered in the races until now. Set> resultSet = new HashSet<>(); final int tackFactor = (tack.equals(Tack.PORT)) ? -1 : 1; if (legType.equals(LegType.UPWIND)) { - CubicEquation upWindEquation = new CubicEquation(0.0002, -0.0245, 0.7602, -0.0463-speedOverGround.getKnots()); + CubicEquation upWindEquation = new CubicEquation(0.0002, -0.0245, 0.7602, -0.0463 + - speedOverGround.getKnots()); int angle = 49 * tackFactor; solveAndAddResults(resultSet, upWindEquation, angle); } else if (legType.equals(LegType.DOWNWIND)) { - CubicEquation downWindEquation = new CubicEquation(0.0003, -0.0373, 1.5213, -2.1309-speedOverGround.getKnots()); + CubicEquation downWindEquation = new CubicEquation(0.0003, -0.0373, 1.5213, -2.1309 + - speedOverGround.getKnots()); int angle = 30 * tackFactor; solveAndAddResults(resultSet, downWindEquation, angle); } return resultSet; - //return polarDataMiner.estimateTrueWindSpeedAndAngleCandidates(boatClass, speedOverGround, legType, tack); + // return polarDataMiner.estimateTrueWindSpeedAndAngleCandidates(boatClass, speedOverGround, legType, tack); } private void solveAndAddResults(Set> result, CubicEquation equation, int angle) { @@ -296,12 +308,12 @@ public class PolarDataMiner { public PolarSheetsData createFullSheetForBoatClass(BoatClass boatClass) { double[] defaultWindSpeeds = backendPolarSheetGenerationSettings.getWindSpeedStepping().getRawStepping(); Number[][] averagedPolarDataByWindSpeed = new Number[defaultWindSpeeds.length][360]; - + Map dataCountPerAngleForWindspeed = new HashMap<>(); Map> histogramDataMap = new HashMap<>(); - + int totalDataCount = 0; - + for (int windIndex = 0; windIndex < defaultWindSpeeds.length; windIndex++) { Double windSpeed = defaultWindSpeeds[windIndex]; Integer[] perAngle = new Integer[360]; @@ -310,27 +322,29 @@ public class PolarDataMiner { SpeedWithConfidence speedWithConfidence; try { int convertedAngle = convertAngleIfNecessary(angle); - SpeedWithConfidence regressionResult = speedRegressionPerAngleClusterProcessor.estimateBoatSpeed(boatClass, - new KnotSpeedImpl(windSpeed), new DegreeBearingImpl(convertedAngle)); + SpeedWithConfidence regressionResult = speedRegressionPerAngleClusterProcessor + .estimateBoatSpeed(boatClass, new KnotSpeedImpl(windSpeed), new DegreeBearingImpl( + convertedAngle)); if (regressionResult.getConfidence() > 0.1) { speedWithConfidence = regressionResult; } else { // Low confidence. So put in 0 speed for chart - speedWithConfidence = new SpeedWithConfidenceImpl(new KnotSpeedImpl(0), regressionResult.getConfidence(), null); + speedWithConfidence = new SpeedWithConfidenceImpl(new KnotSpeedImpl(0), + regressionResult.getConfidence(), null); } } catch (NotEnoughDataHasBeenAddedException e) { // No data so put in a 0 speed with 0 confidence speedWithConfidence = new SpeedWithConfidenceImpl(new KnotSpeedImpl(0), 0, null); } - + averagedPolarDataByWindSpeed[windIndex][angle] = speedWithConfidence.getObject().getKnots(); - int dataCount = 200; /*FIXME*/ - + int dataCount = 200; /* FIXME */ + totalDataCount = totalDataCount + dataCount; // FIXME hard coded double coefficiantOfVariation = 0.8; double confidenceMeasure = 0.5; - + PolarSheetsHistogramDataImpl polarSheetsHistogramDataImpl = createEmptyHistogramData(perAngle, angle, dataCount, coefficiantOfVariation, confidenceMeasure); perWindSpeed.put(angle, polarSheetsHistogramDataImpl); @@ -339,7 +353,8 @@ public class PolarDataMiner { dataCountPerAngleForWindspeed.put(windIndex, perAngle); } PolarSheetsData data = new PolarSheetsDataImpl(averagedPolarDataByWindSpeed, totalDataCount, - dataCountPerAngleForWindspeed, backendPolarSheetGenerationSettings.getWindSpeedStepping(), histogramDataMap); + dataCountPerAngleForWindspeed, backendPolarSheetGenerationSettings.getWindSpeedStepping(), + histogramDataMap); return data; } @@ -355,12 +370,13 @@ public class PolarDataMiner { double coefficiantOfVariation, double confidenceMeasure) { perAngle[angle] = dataCount; Number[] xValues = {}; - Number[] yValues = {};; + Number[] yValues = {}; + ; Map yValuesByGaugeIds = new HashMap<>(); Map yValuesByDay = new HashMap<>(); Map yValuesByDayAndGaugeId = new HashMap<>(); - PolarSheetsHistogramDataImpl polarSheetsHistogramDataImpl = new PolarSheetsHistogramDataImpl(angle, xValues, yValues, yValuesByGaugeIds, - yValuesByDay, yValuesByDayAndGaugeId, dataCount, coefficiantOfVariation); + PolarSheetsHistogramDataImpl polarSheetsHistogramDataImpl = new PolarSheetsHistogramDataImpl(angle, xValues, + yValues, yValuesByGaugeIds, yValuesByDay, yValuesByDayAndGaugeId, dataCount, coefficiantOfVariation); polarSheetsHistogramDataImpl.setConfidenceMeasure(confidenceMeasure); return polarSheetsHistogramDataImpl; } @@ -369,11 +385,12 @@ public class PolarDataMiner { return speedRegressionPerAngleClusterProcessor.getAvailableBoatClasses(); } - public int[] getDataCountsForWindSpeed(BoatClass boatClass, Speed windSpeed, int startAngleInclusive, int endAngleExclusive) { + public int[] getDataCountsForWindSpeed(BoatClass boatClass, Speed windSpeed, int startAngleInclusive, + int endAngleExclusive) { int[] dataCounts = new int[360]; for (int angle = 0; angle < 360; angle++) { if (angle >= startAngleInclusive && angle < endAngleExclusive) { - dataCounts[angle] = 0; /*FIXME*/ + dataCounts[angle] = 0; /* FIXME */ } else { dataCounts[angle] = -1; } @@ -382,9 +399,10 @@ public class PolarDataMiner { } public SpeedWithBearingWithConfidence getAverageSpeedAndCourseOverGround(BoatClass boatClass, - Speed windSpeed, LegType legType) throws NotEnoughDataHasBeenAddedException { - SpeedWithBearingWithConfidence averageSpeedAndCourseOverGround = null; - averageSpeedAndCourseOverGround = cubicRegressionPerCourseProcessor.getAverageSpeedAndCourseOverGround(boatClass, windSpeed, legType); + Speed windSpeed, LegType legType) throws NotEnoughDataHasBeenAddedException { + SpeedWithBearingWithConfidence averageSpeedAndCourseOverGround = null; + averageSpeedAndCourseOverGround = cubicRegressionPerCourseProcessor.getAverageSpeedAndCourseOverGround( + boatClass, windSpeed, legType); return averageSpeedAndCourseOverGround; } @@ -397,7 +415,7 @@ public class PolarDataMiner { throws NotEnoughDataHasBeenAddedException { return cubicRegressionPerCourseProcessor.getAngleRegressionFunction(boatClass, legType); } - + public PolynomialFunction getSpeedRegressionFunction(BoatClass boatClass, double trueWindAngle) throws NotEnoughDataHasBeenAddedException { return speedRegressionPerAngleClusterProcessor.getSpeedRegressionFunction(boatClass, trueWindAngle); @@ -409,8 +427,8 @@ public class PolarDataMiner { fixes = fixesForRacesWhichAreStillLoading.remove(race); } if (fixes != null) { - logger.info("All queued fixes for newly loaded race will process now. " + (race.getRace() != null ? race - .getRace().getName() : race.getRaceIdentifier().getRaceName())); + logger.info("All queued fixes for newly loaded race will process now. " + + (race.getRace() != null ? race.getRace().getName() : race.getRaceIdentifier().getRaceName())); for (GPSFixMovingWithOriginInfo fix : fixes) { processFix(race, fix); } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarFixFilterCriteria.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarFixFilterCriteria.java index ac8fa458c92..88141f445ae 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarFixFilterCriteria.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarFixFilterCriteria.java @@ -23,26 +23,24 @@ import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.datamining.components.FilterCriterion; public class PolarFixFilterCriteria implements FilterCriterion { - + private static final Logger logger = Logger.getLogger(PolarFixFilterCriteria.class.getName()); - + /** - * 0 if every competitor should be included. - * 1 if only the leading competitor should be included and so on. + * 0 if every competitor should be included. 1 if only the leading competitor should be included and so on. */ private final double pctOfLeadingCompetitorsToInclude; /** * - * @param pctOfLeadingCompetitorsToInclude - * 0 if only first competitor should be included.
- * 0.1 if the best 10% should be included - * 1 if every competitor should be included + * @param pctOfLeadingCompetitorsToInclude + * 0 if only first competitor should be included.
+ * 0.1 if the best 10% should be included 1 if every competitor should be included */ public PolarFixFilterCriteria(double pctOfLeadingCompetitorsToInclude) { this.pctOfLeadingCompetitorsToInclude = pctOfLeadingCompetitorsToInclude; } - + public PolarFixFilterCriteria() { this.pctOfLeadingCompetitorsToInclude = 0; } @@ -61,8 +59,9 @@ public class PolarFixFilterCriteria implements FilterCriterion createSpeedClusterGroupFrom(WindSpeedSteppingWithMaxDistance windStepping) { double maxDistance = windStepping.getMaxDistance(); double[] rawIntegerStepping = windStepping.getRawStepping(); @@ -14,7 +14,7 @@ public class SpeedClusterGroupFromWindSteppingCreator { for (int i = 0; i < rawIntegerStepping.length; i++) { rawDoubleLevelMids[i] = rawIntegerStepping[i]; } - + return new SpeedClusterGroup("SpeedClusterGroup", rawDoubleLevelMids, maxDistance); } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/SpeedRegressionPerAngleClusterProcessor.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/SpeedRegressionPerAngleClusterProcessor.java index d2bba87e1ff..9bd8d9f4f24 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/SpeedRegressionPerAngleClusterProcessor.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/SpeedRegressionPerAngleClusterProcessor.java @@ -31,13 +31,13 @@ import com.sap.sse.datamining.shared.GroupKey; public class SpeedRegressionPerAngleClusterProcessor implements Processor, Void>, Serializable { - + private static final long serialVersionUID = 3279917556091599077L; private static final Logger logger = Logger.getLogger(CubicRegressionPerCourseProcessor.class.getName()); - + private final Map regressions = new HashMap<>(); - + private final Map fixCountPerBoatClass = new HashMap<>(); private final ClusterGroup angleClusterGroup; @@ -48,16 +48,16 @@ public class SpeedRegressionPerAngleClusterProcessor implements private transient ConcurrentHashMap> listeners; private final Set availableBoatClasses = new HashSet(); - + public SpeedRegressionPerAngleClusterProcessor(ClusterGroup angleClusterGroup) { this.angleClusterGroup = angleClusterGroup; } - + @Override - public boolean canProcessElements() { - // TODO Auto-generated method stub - return true; - } + public boolean canProcessElements() { + // TODO Auto-generated method stub + return true; + } @Override public void processElement(GroupedDataEntry element) { @@ -87,14 +87,14 @@ public class SpeedRegressionPerAngleClusterProcessor implements } } } - + /** - * There are angle clusters (size defined in the data mining pipeline construction), which each have their own - * regression for boatspeed over windspeed. - * We don't know the thresholds or centers of the angle clusters here, so we roughly interpolate by taking 10 - * values from angle-5 deg to angle+5 deg and average the speeds. + * There are angle clusters (size defined in the data mining pipeline construction), which each have their own + * regression for boatspeed over windspeed. We don't know the thresholds or centers of the angle clusters here, so + * we roughly interpolate by taking 10 values from angle-5 deg to angle+5 deg and average the speeds. */ - public SpeedWithConfidence estimateBoatSpeed(BoatClass boatClass, Speed windSpeed, Bearing trueWindAngle) throws NotEnoughDataHasBeenAddedException { + public SpeedWithConfidence estimateBoatSpeed(BoatClass boatClass, Speed windSpeed, Bearing trueWindAngle) + throws NotEnoughDataHasBeenAddedException { double speedSum = 0; double numberOfSpeeds = 0; long fixCount = 0; @@ -107,7 +107,7 @@ public class SpeedRegressionPerAngleClusterProcessor implements speedSum += incrementalLeastSquares.getOrCreatePolynomialFunction().value(windSpeed.getKnots()); numberOfSpeeds++; } - } + } } fixCount = (long) (fixCount / numberOfSpeeds); long fixCountOverall = 0; @@ -116,12 +116,12 @@ public class SpeedRegressionPerAngleClusterProcessor implements } else { synchronized (fixCountPerBoatClass) { fixCountOverall = fixCountPerBoatClass.get(boatClass); - } + } } Speed speed = new KnotSpeedImpl(speedSum / numberOfSpeeds); return new SpeedWithConfidenceImpl(speed, Math.min(1, 5.0 * ((double) fixCount / fixCountOverall)), null); } - + private GroupKey createGroupKey(final BoatClass boatClass, final Bearing angle) { AngleClusterPolarClusterKey key = new AngleClusterPolarClusterKey() { @@ -152,7 +152,7 @@ public class SpeedRegressionPerAngleClusterProcessor implements logger.severe("Polar Data Mining Pipe failed."); throw new RuntimeException("Polar Data Miner failed.", failure); } - + public PolynomialFunction getSpeedRegressionFunction(BoatClass boatClass, double trueWindAngle) throws NotEnoughDataHasBeenAddedException { GroupKey key = createGroupKey(boatClass, new DegreeBearingImpl(trueWindAngle)); @@ -164,18 +164,18 @@ public class SpeedRegressionPerAngleClusterProcessor implements } return polynomialFunction; } - + public void setListeners(ConcurrentHashMap> listeners) { this.listeners = listeners; } - + Set getAvailableBoatClasses() { return availableBoatClasses; } - + @Override public Class> getInputType() { - // TODO Auto-generated method stub + // TODO Auto-generated method stub return null; } @@ -185,27 +185,26 @@ public class SpeedRegressionPerAngleClusterProcessor implements return null; } - @Override public void finish() throws InterruptedException { // Nothing to do here } - + @Override - public boolean isFinished() { - return false; - } + public boolean isFinished() { + return false; + } @Override public void abort() { // TODO Auto-generated method stub } - + @Override - public boolean isAborted() { - // TODO Auto-generated method stub - return false; - } + public boolean isAborted() { + // TODO Auto-generated method stub + return false; + } @Override public AdditionalResultDataBuilder getAdditionalResultData(AdditionalResultDataBuilder additionalDataBuilder) { diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/WindSpeedLevel.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/WindSpeedLevel.java index 35fd09e862e..07cbaac083c 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/WindSpeedLevel.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/WindSpeedLevel.java @@ -51,5 +51,4 @@ public class WindSpeedLevel implements Serializable { return true; } - } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/IncrementalLeastSquares.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/IncrementalLeastSquares.java index ad45495bb03..94ad3a68062 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/IncrementalLeastSquares.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/IncrementalLeastSquares.java @@ -15,8 +15,9 @@ import com.sap.sailing.domain.polars.NotEnoughDataHasBeenAddedException; public interface IncrementalLeastSquares extends Serializable { /** - * Adds data to the least squares regression. This only updates the internal matrix and vector and will not trigger the - * actual least square solving. See {@link #getOrCreatePolynomialFunction()}. + * Adds data to the least squares regression. This only updates the internal matrix and vector and will not trigger + * the actual least square solving. See {@link #getOrCreatePolynomialFunction()}. + * * @param x * @param y */ @@ -24,11 +25,12 @@ public interface IncrementalLeastSquares extends Serializable { /** * The polynomial function is cached and will be returned immediately if no data has been added since the last call. - * Otherwise the calculation is performed and the polynomial function is returned. It has a complexity of O(order) where - * order is the requested order of the polynomial. + * Otherwise the calculation is performed and the polynomial function is returned. It has a complexity of O(order) + * where order is the requested order of the polynomial. * * @return polynomial function estimating the data. Can be constant when only one data point has been added. - * @throws NotEnoughDataHasBeenAddedException Will be returned if no data has been added to the regression. + * @throws NotEnoughDataHasBeenAddedException + * Will be returned if no data has been added to the regression. */ public abstract PolynomialFunction getOrCreatePolynomialFunction() throws NotEnoughDataHasBeenAddedException; diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/MovingAverageBoatSpeedEstimator.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/MovingAverageBoatSpeedEstimator.java index e80d9982355..e71db7a76f5 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/MovingAverageBoatSpeedEstimator.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/MovingAverageBoatSpeedEstimator.java @@ -18,8 +18,8 @@ import com.sap.sse.concurrent.NamedReentrantReadWriteLock; *

* * Note that this class should only be used for a small wind interval on a polar sheet. The - * {@link MovingAverageProcessorImpl} is one example for that. It has one instance of the {@link MovingAverageBoatSpeedEstimator} - * for each wind boatclass, speed level and rounded angle combination. + * {@link MovingAverageProcessorImpl} is one example for that. It has one instance of the + * {@link MovingAverageBoatSpeedEstimator} for each wind boatclass, speed level and rounded angle combination. * * @author Frederik Petersen (D054528) * @@ -31,9 +31,9 @@ public class MovingAverageBoatSpeedEstimator implements Serializable { private double speedSumInKnots = 0; private transient NamedReentrantReadWriteLock lock = createLock(); - + private double confidenceSum = 0; - + private int dataCount = 0; public Speed estimateSpeed() throws NotEnoughDataHasBeenAddedException { @@ -53,7 +53,7 @@ public class MovingAverageBoatSpeedEstimator implements Serializable { try { speedSumInKnots = speedSumInKnots + boatSpeed.getKnots(); dataCount++; - confidenceSum = confidenceSum + confidence; + confidenceSum = confidenceSum + confidence; } finally { LockUtil.unlockAfterWrite(lock); } @@ -76,11 +76,11 @@ public class MovingAverageBoatSpeedEstimator implements Serializable { LockUtil.unlockAfterRead(lock); } } - + private void readObject(ObjectInputStream ois) { lock = createLock(); } - + private NamedReentrantReadWriteLock createLock() { return new NamedReentrantReadWriteLock(getClass().getName(), true); } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/IncrementalAnyOrderLeastSquaresImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/IncrementalAnyOrderLeastSquaresImpl.java index 150441aca97..b46250afafe 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/IncrementalAnyOrderLeastSquaresImpl.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/IncrementalAnyOrderLeastSquaresImpl.java @@ -21,19 +21,21 @@ import com.sap.sse.concurrent.NamedReentrantReadWriteLock; /** * This class implements the incremental polynomial regression approach described here: * - * - * http://erikerlandson.github.io/blog/2012/07/05/deriving-an-incremental-form-of-the-polynomial-regression-equations/ + * http://erikerlandson.github.io/blog/2012/07/05/deriving-an-incremental-form-of-the-polynomial-regression-equations/ + * * * * @author Frederik Petersen D054528 * */ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSquares { - + private static final long serialVersionUID = -5282614133220702724L; private class NaNCheckerVisitor implements RealMatrixPreservingVisitor { - + private boolean hasNaNEntry = false; @Override @@ -44,7 +46,8 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua } @Override - public void start(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) {} + public void start(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) { + } @Override public double end() { @@ -56,29 +59,30 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua } } - + private double[][] matrixOfXSums; private double[] vectorOfXYMultSums; private int polynomialOrder; - + private AtomicLong numberOfPointsAdded = new AtomicLong(0); - + private AtomicBoolean functionNeedsUpdate = new AtomicBoolean(true); private transient NamedReentrantReadWriteLock lock = new NamedReentrantReadWriteLock("IncrementalLeastSquaresLock", false); - - private transient NamedReentrantReadWriteLock cacheLock = new NamedReentrantReadWriteLock("IncrementalLeastSquaresCacheLock", - true); + + private transient NamedReentrantReadWriteLock cacheLock = new NamedReentrantReadWriteLock( + "IncrementalLeastSquaresCacheLock", true); private PolynomialFunction cachedFunction; - + private final boolean hasIntercept; private final boolean useSymbollicInversionIfPossible; - - public IncrementalAnyOrderLeastSquaresImpl(int polynomialOrder, boolean hasIntercept, boolean useSymbollicInversionIfPossible) { + + public IncrementalAnyOrderLeastSquaresImpl(int polynomialOrder, boolean hasIntercept, + boolean useSymbollicInversionIfPossible) { this.hasIntercept = hasIntercept; this.polynomialOrder = polynomialOrder; this.useSymbollicInversionIfPossible = useSymbollicInversionIfPossible; @@ -90,15 +94,15 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua vectorOfXYMultSums = new double[polynomialOrder]; } } - - public IncrementalAnyOrderLeastSquaresImpl(int polynomialOrder) { + + public IncrementalAnyOrderLeastSquaresImpl(int polynomialOrder) { this(polynomialOrder, true, true); } - - public IncrementalAnyOrderLeastSquaresImpl(int polynomialOrder, boolean hasIntercept) { + + public IncrementalAnyOrderLeastSquaresImpl(int polynomialOrder, boolean hasIntercept) { this(polynomialOrder, hasIntercept, true); } - + @Override public void addData(double x, double y) { LockUtil.lockForWrite(lock); @@ -106,14 +110,14 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua numberOfPointsAdded.incrementAndGet(); functionNeedsUpdate.set(true); for (int i = 0; hasIntercept ? i <= polynomialOrder : i < polynomialOrder; i++) { - int powerI = hasIntercept ? i : i+1; + int powerI = hasIntercept ? i : i + 1; vectorOfXYMultSums[i] += y * Math.pow(x, powerI); for (int j = 0; hasIntercept ? j <= polynomialOrder : j < polynomialOrder; j++) { - int powerJ = hasIntercept ? j : j+1; + int powerJ = hasIntercept ? j : j + 1; if (powerI == 0 && powerJ == 0) { matrixOfXSums[i][j] += 1; } else { - matrixOfXSums[i][j] += Math.pow(x, powerI+powerJ); + matrixOfXSums[i][j] += Math.pow(x, powerI + powerJ); } } } @@ -121,7 +125,7 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua LockUtil.unlockAfterWrite(lock); } } - + @Override public PolynomialFunction getOrCreatePolynomialFunction() throws NotEnoughDataHasBeenAddedException { @@ -173,7 +177,8 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua try { inversedMatrix = new LUDecompositionImpl(matrixOfXSumsCopy).getSolver().getInverse(); } catch (SingularMatrixException singularMatrixException) { - throw new NotEnoughDataHasBeenAddedException("Matrix singular, all x input equal?", singularMatrixException); + throw new NotEnoughDataHasBeenAddedException("Matrix singular, all x input equal?", + singularMatrixException); } } else { NaNCheckerVisitor nanChecker = new NaNCheckerVisitor(); @@ -181,7 +186,7 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua if (nanChecker.hasNaNEntry()) { throw new NotEnoughDataHasBeenAddedException("Matrix singular, all x input equal?"); } - + } RealVector coeffs = inversedMatrix.operate(vectorOfXYMultSumsCopy); if (!hasIntercept) { @@ -198,7 +203,7 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua double[] coeffsWithZeroIntercept = new double[coeffsNoIntercept.length + 1]; coeffsWithZeroIntercept[0] = 0; for (int i = 1; i < coeffsWithZeroIntercept.length; i++) { - coeffsWithZeroIntercept[i] = coeffsNoIntercept[i-1]; + coeffsWithZeroIntercept[i] = coeffsNoIntercept[i - 1]; } resultFunction = new PolynomialFunction(coeffsWithZeroIntercept); return resultFunction; @@ -214,16 +219,15 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua } return new PolynomialFunction(coeff); } - + private enum LeastSquaresInversionHelperType { - CUBIC, - CUBIC_NO_INTERCEPT; - - + CUBIC, CUBIC_NO_INTERCEPT; + /** * - * @param realMatrix matrix to inverse + * @param realMatrix + * matrix to inverse * @return Inversed matrix if symbolic inversion was found. Else null */ private RealMatrix inverseMatrix(RealMatrix realMatrix) { @@ -240,7 +244,7 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua { b * e - c * d, c * c - a * e, a * d - b * c }, { c * c - b * d, a * d - b * c, b * b - a * c } }; RealMatrix intermediateMatrixCNI = MatrixUtils.createRealMatrix(matrixDataCNI); - double factorCNI = (1.0 / (-a*c*e + a*d*d + b*b*e-2*b*c*d+c*c*c)); + double factorCNI = (1.0 / (-a * c * e + a * d * d + b * b * e - 2 * b * c * d + c * c * c)); result = intermediateMatrixCNI.scalarMultiply(factorCNI); break; case CUBIC: @@ -281,11 +285,13 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua } return result; } - + /** * - * @param order Order of the polynomial - * @param hasIntercept If the least squares is set to no intercept + * @param order + * Order of the polynomial + * @param hasIntercept + * If the least squares is set to no intercept * @return type of the polynomial or null if it doesn't exist in this implementation */ private static LeastSquaresInversionHelperType getType(int order, boolean hasIntercept) { @@ -299,14 +305,11 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua } } - - private void readObject(java.io.ObjectInputStream stream) - throws IOException, ClassNotFoundException { + + private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); - lock = new NamedReentrantReadWriteLock("IncrementalLeastSquaresLock", - false); - cacheLock = new NamedReentrantReadWriteLock("IncrementalLeastSquaresCacheLock", - true); + lock = new NamedReentrantReadWriteLock("IncrementalLeastSquaresLock", false); + cacheLock = new NamedReentrantReadWriteLock("IncrementalLeastSquaresCacheLock", true); } @Override diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/WindSpeedAndAngleEstimator.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/WindSpeedAndAngleEstimator.java index 99a5da6472d..796a87da9b9 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/WindSpeedAndAngleEstimator.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/WindSpeedAndAngleEstimator.java @@ -57,7 +57,7 @@ public class WindSpeedAndAngleEstimator { */ public SpeedWithBearingWithConfidence getAverageTrueWindSpeedAndAngle(Speed boatSpeed) { Set> resultCandidates = getAverageTrueWindSpeedAndAngleCandidates(boatSpeed); - + SpeedWithBearingWithConfidence resultCandidateWithHighestConfidence = null; for (SpeedWithBearingWithConfidence resultCandidate : resultCandidates) { if (resultCandidateWithHighestConfidence == null @@ -68,14 +68,13 @@ public class WindSpeedAndAngleEstimator { return resultCandidateWithHighestConfidence; } - /** * Uses the constructor-supplied sampling points to find wind and course candidates for the supplied boatSpeed. * - * @return empty set if the underlying data was not sufficient to estimate wind. Otherwise a set of candidates - * with windspeed course of the boat relative to the wind and a confidence which was derived from the - * confidences of underlying fixes, the amount of underlying fixes and the distance between the input - * boatSpeed and the sampling points supplied by the gathered polar data. + * @return empty set if the underlying data was not sufficient to estimate wind. Otherwise a set of candidates with + * windspeed course of the boat relative to the wind and a confidence which was derived from the confidences + * of underlying fixes, the amount of underlying fixes and the distance between the input boatSpeed and the + * sampling points supplied by the gathered polar data. */ public Set> getAverageTrueWindSpeedAndAngleCandidates(Speed boatSpeed) { double requestedBoatSpeedInKnots = boatSpeed.getKnots(); @@ -88,7 +87,7 @@ public class WindSpeedAndAngleEstimator { double currentBoatSpeedInKnots = averageBoatSpeedWithCourse.getObject().getKnots(); if (last != null) { double lastBoatSpeedInKnots = last.getB().getObject().getKnots(); - + if (lastBoatSpeedInKnots <= requestedBoatSpeedInKnots && currentBoatSpeedInKnots >= requestedBoatSpeedInKnots) { SpeedWithBearingWithConfidenceImpl resultCandidate = createWeightedResultCandidateForLowerLast( @@ -148,19 +147,19 @@ public class WindSpeedAndAngleEstimator { double differenceBetweenBothSpeedsInKnots = lastBoatSpeedInKnots - currentBoatSpeedInKnots; double ratio; if (differenceBetweenBothSpeedsInKnots < 0.00001) { - //Both sampling points have the same ratio. Use confidence to determine the ratio - ratio = last.getB().getConfidence() / (averageBoatSpeedWithCourse.getConfidence() + last.getB().getConfidence()); + // Both sampling points have the same ratio. Use confidence to determine the ratio + ratio = last.getB().getConfidence() + / (averageBoatSpeedWithCourse.getConfidence() + last.getB().getConfidence()); } else { double differenceBetweenRequestedAndLower = requestedBoatSpeedInKnots - currentBoatSpeedInKnots; ratio = differenceBetweenRequestedAndLower / differenceBetweenBothSpeedsInKnots; } - double weightedAverageWindSpeedInKnots = (( 1 - ratio) * windSpeed.getKnots()) + double weightedAverageWindSpeedInKnots = ((1 - ratio) * windSpeed.getKnots()) + (ratio * last.getA().getKnots()); - double currentCourseInDeg = averageBoatSpeedWithCourse.getObject().getBearing() - .getDegrees(); + double currentCourseInDeg = averageBoatSpeedWithCourse.getObject().getBearing().getDegrees(); double lastCourseInDeg = last.getB().getObject().getBearing().getDegrees(); - double weightedAverageAngleInDeg = (( 1 - ratio) * currentCourseInDeg) + (ratio * lastCourseInDeg); - double weightedAverageConfidence = (( 1 - ratio) * averageBoatSpeedWithCourse.getConfidence()) + double weightedAverageAngleInDeg = ((1 - ratio) * currentCourseInDeg) + (ratio * lastCourseInDeg); + double weightedAverageConfidence = ((1 - ratio) * averageBoatSpeedWithCourse.getConfidence()) + (ratio * last.getB().getConfidence()); SpeedWithBearingWithConfidenceImpl resultCandidate = new SpeedWithBearingWithConfidenceImpl( new KnotSpeedWithBearingImpl(weightedAverageWindSpeedInKnots, new DegreeBearingImpl( @@ -184,8 +183,7 @@ public class WindSpeedAndAngleEstimator { } double weightedAverageWindSpeedInKnots = (ratio * windSpeed.getKnots()) + ((1 - ratio) * last.getA().getKnots()); - double currentCourseInDeg = averageBoatSpeedWithCourse.getObject().getBearing() - .getDegrees(); + double currentCourseInDeg = averageBoatSpeedWithCourse.getObject().getBearing().getDegrees(); double lastCourseInDeg = last.getB().getObject().getBearing().getDegrees(); double weightedAverageAngleInDeg = (ratio * currentCourseInDeg) + ((1 - ratio) * lastCourseInDeg); double weightedAverageConfidence = (ratio * averageBoatSpeedWithCourse.getConfidence()) diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/windestimation/ManeuverBasedWindEstimationTrackImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/windestimation/ManeuverBasedWindEstimationTrackImpl.java index 11365d9da90..bf20e72e5fc 100755 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/windestimation/ManeuverBasedWindEstimationTrackImpl.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/windestimation/ManeuverBasedWindEstimationTrackImpl.java @@ -56,30 +56,30 @@ import com.sap.sse.util.kmeans.KMeansMappingClusterer; */ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { private static final long serialVersionUID = -764156498143531475L; - + private static final Logger logger = Logger.getLogger(ManeuverBasedWindEstimationTrackImpl.class.getName()); - + /** - * Using a fairly low base confidence for this estimation wind track. It shall only serve as a - * default and should be superseded by other wind sources easily. + * Using a fairly low base confidence for this estimation wind track. It shall only serve as a default and should be + * superseded by other wind sources easily. */ private static final double DEFAULT_BASE_CONFIDENCE = 0.01; /** * Trying to find the two tack clusters, for each cluster the opposite tack cluster is looked for. The likelihood * for another cluster to be a cluster's opposite tack cluster is determined by first computing the - * {@link #getClusterDistanceBasedOnAverageManeuverLikelihoodAndWeightedAverageMiddleCOG(Cluster, double, Bearing) angular - * distance}. For each so many degrees of distance as specified by this constant, the likelihood of the cluster to be the - * opposite tack cluster is halved. This constant can also be used to assign likelihoods for other cluster types - * based on their distance from an expected configuration of maneuver angle and middle COG. + * {@link #getClusterDistanceBasedOnAverageManeuverLikelihoodAndWeightedAverageMiddleCOG(Cluster, double, Bearing) + * angular distance}. For each so many degrees of distance as specified by this constant, the likelihood of the + * cluster to be the opposite tack cluster is halved. This constant can also be used to assign likelihoods for other + * cluster types based on their distance from an expected configuration of maneuver angle and middle COG. */ private static final double ANGULAR_DISTANCE_FOR_HALF_CONFIDENCE_FOR_OPPOSITE_TACK_CLUSTER_DEG = 20.; /** * When one or two jibe clusters have been found whose - * {@link #getLikelihoodOfBeingJibeCluster(Speed, Stream, BoatClass, Set) likelihood of being a jibe cluster} is 100%, - * this is the boost factor by which the base likelihood for the tack cluster candidate will be increased (up to a - * maximum of 1.0). + * {@link #getLikelihoodOfBeingJibeCluster(Speed, Stream, BoatClass, Set) likelihood of being a jibe cluster} is + * 100%, this is the boost factor by which the base likelihood for the tack cluster candidate will be increased (up + * to a maximum of 1.0). */ private static final double BOOST_FACTOR_FOR_FULL_JIBE_CLUSTER_LIKELIHOOD = 0.2; @@ -98,36 +98,37 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { * and the other with negative maneuver angles of somewhere between 10-20deg, typically. */ private static final double EXPECTED_AVERAGE_HEAD_UP_AND_BEAR_AWAY_MANEUVER_ANGLE_DEG = 10.; - + /** - * We're trying to find the jibe cluster based on a candidate for the tack cluster. This constant tells how many degrees - * the jibe cluster may be off from the reversed tack cluster's centroid in order to be accepted as jibe cluster candidate. + * We're trying to find the jibe cluster based on a candidate for the tack cluster. This constant tells how many + * degrees the jibe cluster may be off from the reversed tack cluster's centroid in order to be accepted as jibe + * cluster candidate. */ private static final double THRESHOLD_JIBE_CLUSTER_DIFFERENCE_DEGREES = 20; /** * For judging the likelihood of a cluster being a speed cluster, the speed ratio of the tack cluster candidate and - * the jibe cluster candidate is computed and compared to what the polar service predicts. The basic likelihood of the - * jibe cluster candidate (based on the maneuver angles relative to their speeds) is boosted by this factor for a perfect - * speed ratio match. + * the jibe cluster candidate is computed and compared to what the polar service predicts. The basic likelihood of + * the jibe cluster candidate (based on the maneuver angles relative to their speeds) is boosted by this factor for + * a perfect speed ratio match. */ private static final double BOOST_FACTOR_FOR_JIBE_TACK_SPEED_RATIO_LIKELIHOOD = 0; - + private final PolarDataService polarService; private final TrackedRace trackedRace; - - /** - * Caches the {@link #getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(Cluster, ManeuverType)} results because these values are required several times to - * determine the likelihood with which a cluster is a cluster of tacks or a cluster of jibes. Note that the un-weighted averages can simply be obtained - * by asking the cluster for its {@link Cluster#getCentroid() centroid}. - */ - private final Map, Pair, ScalableBearingAndScalableDouble>, ManeuverType>, Pair> - weightedAverageMiddleCOGForManeuverType; /** - * Keeps the clusters that were used during the last {@link #analyzeRace(boolean)} run; this is for debugging, mostly, - * and could be removed/commented again when this class works as expected. + * Caches the {@link #getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(Cluster, ManeuverType)} results + * because these values are required several times to determine the likelihood with which a cluster is a cluster of + * tacks or a cluster of jibes. Note that the un-weighted averages can simply be obtained by asking the cluster for + * its {@link Cluster#getCentroid() centroid}. + */ + private final Map, Pair, ScalableBearingAndScalableDouble>, ManeuverType>, Pair> weightedAverageMiddleCOGForManeuverType; + + /** + * Keeps the clusters that were used during the last {@link #analyzeRace(boolean)} run; this is for debugging, + * mostly, and could be removed/commented again when this class works as expected. */ private final Set, Pair, ScalableBearingAndScalableDouble>> clusters; @@ -142,28 +143,26 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { * and could be removed/commented again when this class works as expected. */ private final List, Pair, ScalableBearingAndScalableDouble>> jibeClusters; - - public ManeuverBasedWindEstimationTrackImpl(PolarDataService polarService, TrackedRace trackedRace, long millisecondsOverWhichToAverage, boolean waitForLatest) - throws NotEnoughDataHasBeenAddedException { - super(millisecondsOverWhichToAverage, DEFAULT_BASE_CONFIDENCE, /* useSpeed */ false, - /* nameForReadWriteLock */ ManeuverBasedWindEstimationTrackImpl.class.getName()); + + public ManeuverBasedWindEstimationTrackImpl(PolarDataService polarService, TrackedRace trackedRace, + long millisecondsOverWhichToAverage, boolean waitForLatest) throws NotEnoughDataHasBeenAddedException { + super(millisecondsOverWhichToAverage, DEFAULT_BASE_CONFIDENCE, /* useSpeed */false, + /* nameForReadWriteLock */ManeuverBasedWindEstimationTrackImpl.class.getName()); this.polarService = polarService; this.trackedRace = trackedRace; this.weightedAverageMiddleCOGForManeuverType = new HashMap<>(); long start = System.currentTimeMillis(); - Triple, Pair, ScalableBearingAndScalableDouble>>, - List, Pair, ScalableBearingAndScalableDouble>>, - List, Pair, ScalableBearingAndScalableDouble>>> clusterStructure = - analyzeRace(waitForLatest); - logger.fine("Computed virtual wind fixes from maneuvers for race "+trackedRace.getRace().getName()+" in "+(System.currentTimeMillis()-start)+"ms"); + Triple, Pair, ScalableBearingAndScalableDouble>>, List, Pair, ScalableBearingAndScalableDouble>>, List, Pair, ScalableBearingAndScalableDouble>>> clusterStructure = analyzeRace(waitForLatest); + logger.fine("Computed virtual wind fixes from maneuvers for race " + trackedRace.getRace().getName() + " in " + + (System.currentTimeMillis() - start) + "ms"); clusters = clusterStructure.getA(); tackClusters = clusterStructure.getB(); jibeClusters = clusterStructure.getC(); } /** - * Collects data about a maneuver that will be used to assign probabilities for maneuver types such as tack or - * jibe, looking at a larger set of such objects and finding the most probable overall solution. + * Collects data about a maneuver that will be used to assign probabilities for maneuver types such as tack or jibe, + * looking at a larger set of such objects and finding the most probable overall solution. * * @author Axel Uhl (D043530) * @@ -181,7 +180,7 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { private final Distance maneuverLoss; private Pair>[] likelihoodAndTWSBasedOnSpeedAndAngleCache; private ScalableBearingAndScalableDouble scalableMiddleManeuverCourseAndManeuverAngleDegCache; - + protected ManeuverClassification(Competitor competitor, Maneuver maneuver) { super(); this.competitor = competitor; @@ -189,13 +188,15 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { this.position = maneuver.getPosition(); this.maneuverAngleDeg = maneuver.getDirectionChangeInDegrees(); this.speedAtManeuverStart = maneuver.getSpeedWithBearingBefore(); - this.middleManeuverCourse = maneuver.getSpeedWithBearingBefore().getBearing().middle(maneuver.getSpeedWithBearingAfter().getBearing()); + this.middleManeuverCourse = maneuver.getSpeedWithBearingBefore().getBearing() + .middle(maneuver.getSpeedWithBearingAfter().getBearing()); this.maneuverLoss = maneuver.getManeuverLoss(); @SuppressWarnings("unchecked") - Pair>[] myLikelihoodAndTWSBasedOnSpeedAndAngleCache = (Pair>[]) new Pair[ManeuverType.values().length]; + Pair>[] myLikelihoodAndTWSBasedOnSpeedAndAngleCache = (Pair>[]) new Pair[ManeuverType + .values().length]; this.likelihoodAndTWSBasedOnSpeedAndAngleCache = myLikelihoodAndTWSBasedOnSpeedAndAngleCache; } - + public Competitor getCompetitor() { return competitor; } @@ -219,7 +220,7 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { public Bearing getMiddleManeuverCourse() { return middleManeuverCourse; } - + public ScalableBearingAndScalableDouble getScalableMiddleManeuverCourseAndManeuverAngleDeg() { if (scalableMiddleManeuverCourseAndManeuverAngleDegCache == null) { scalableMiddleManeuverCourseAndManeuverAngleDegCache = new ScalableBearingAndScalableDouble( @@ -229,8 +230,9 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { } public SpeedWithBearingWithConfidence getEstimatedWindSpeedAndBearing(ManeuverType maneuverType) { - Pair> likelihoodAndTWSBasedOnSpeedAndAngle = polarService.getManeuverLikelihoodAndTwsTwa( - getCompetitor().getBoat().getBoatClass(), getSpeedAtManeuverStart(), getManeuverAngleDeg(), maneuverType); + Pair> likelihoodAndTWSBasedOnSpeedAndAngle = polarService + .getManeuverLikelihoodAndTwsTwa(getCompetitor().getBoat().getBoatClass(), + getSpeedAtManeuverStart(), getManeuverAngleDeg(), maneuverType); final SpeedWithBearingWithConfidenceImpl result; // if no reasonable wind speed was found for the maneuver speed, return null if (likelihoodAndTWSBasedOnSpeedAndAngle.getB() == null) { @@ -257,34 +259,37 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { } return result; } - + public Distance getManeuverLoss() { return maneuverLoss; } /** - * Computes the likelihood that the maneuver represented by this object is of the type requested. The polar - * service may offer more than one possible wind condition for the given speed. In this case, the true wind angle that - * fits the actual {@link #getManeuverAngleDeg() maneuver angle} better is chosen to judge how close the maneuver is to - * the expected angle. The likelihood as well as the estimated true wind speed are returned. + * Computes the likelihood that the maneuver represented by this object is of the type requested. + * The polar service may offer more than one possible wind condition for the given speed. In this case, the true + * wind angle that fits the actual {@link #getManeuverAngleDeg() maneuver angle} better is chosen to judge how + * close the maneuver is to the expected angle. The likelihood as well as the estimated true wind speed are + * returned. * * @return a value between 0 and 1 */ - public Pair> getLikelihoodAndTWSBasedOnSpeedAndAngle(final ManeuverType maneuverType) { + public Pair> getLikelihoodAndTWSBasedOnSpeedAndAngle( + final ManeuverType maneuverType) { if (likelihoodAndTWSBasedOnSpeedAndAngleCache[maneuverType.ordinal()] == null) { - likelihoodAndTWSBasedOnSpeedAndAngleCache[maneuverType.ordinal()] = polarService.getManeuverLikelihoodAndTwsTwa(getCompetitor().getBoat().getBoatClass(), - getSpeedAtManeuverStart(), getManeuverAngleDeg(), maneuverType); + likelihoodAndTWSBasedOnSpeedAndAngleCache[maneuverType.ordinal()] = polarService + .getManeuverLikelihoodAndTwsTwa(getCompetitor().getBoat().getBoatClass(), + getSpeedAtManeuverStart(), getManeuverAngleDeg(), maneuverType); } return likelihoodAndTWSBasedOnSpeedAndAngleCache[maneuverType.ordinal()]; } - + @Override public String toString() { - return format(this, /* id */ null); + return format(this, /* id */null); } } - + public String getManeuverClassificationColumnHeaders() { return "datapoint\tcompetitor\ttimePoint\tangleDeg\tboatSpeedKn\tcogDeg\tmiddleManeuverCourse\tlossM\ttackLikelihood\tjibeLikelihood"; } @@ -295,8 +300,8 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { public String format(ManeuverClassification mc, String id) { DateFormat df = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); - final String prefix = mc.getCompetitor().getName() + "\t" + df.format(mc.getTimePoint().asDate()) + "\t" + mc.getManeuverAngleDeg() - + "\t" + mc.getSpeedAtManeuverStart().getKnots() + "\t" + final String prefix = mc.getCompetitor().getName() + "\t" + df.format(mc.getTimePoint().asDate()) + "\t" + + mc.getManeuverAngleDeg() + "\t" + mc.getSpeedAtManeuverStart().getKnots() + "\t" + mc.getSpeedAtManeuverStart().getBearing().getDegrees(); final StringBuilder result = new StringBuilder(); if (id != null) { @@ -315,7 +320,7 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { result.append(mc.getLikelihoodAndTWSBasedOnSpeedAndAngle(ManeuverType.JIBE).getA()); return result.toString(); } - + /** * Fetches all the race's maneuvers and tries to find the tacks and jibes. For each such maneuver identified, a wind * fix will be created based on the average COG into and out of the maneuver. @@ -345,12 +350,12 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { * for that maneuver being a tack, solely based on its speed and maneuver angle, as * {@link PolarDataService#getManeuverLikelihoodAndTwsTwa(BoatClass, Speed, double, ManeuverType) judged by the * polar service}. If a cluster exists that has approximately the opposite average middle COG (the jibe cluster - * candidate), the {@link #getLikelihoodOfBeingJibeCluster(Speed, Stream, BoatClass, Set) likelihood for its maneuvers - * being jibes} are determined and may result in a "boost" for the basic probability of up to 20%. Finally, the - * resulting likelihood is multiplied by how likely the speed ratio between the tack and jibe cluster candidates is, - * based on the polar diagram. For this task, the cluster's maneuvers' average speed (weighted by each maneuver's - * likelihood of being a tack) is divided by that of the jibe cluster's maneuvers' average speed (weighted by each - * maneuver's likelihood of being a jibe) and assigned a likelihood by the polar service. + * candidate), the {@link #getLikelihoodOfBeingJibeCluster(Speed, Stream, BoatClass, Set) likelihood for its + * maneuvers being jibes} are determined and may result in a "boost" for the basic probability of up to 20%. + * Finally, the resulting likelihood is multiplied by how likely the speed ratio between the tack and jibe cluster + * candidates is, based on the polar diagram. For this task, the cluster's maneuvers' average speed (weighted by + * each maneuver's likelihood of being a tack) is divided by that of the jibe cluster's maneuvers' average speed + * (weighted by each maneuver's likelihood of being a jibe) and assigned a likelihood by the polar service. *

* * The cluster that has the highest likelihood of being the tack cluster is selected. The confidence of the choice @@ -368,50 +373,57 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { * maneuver angle dimension that show low variance each, compared to all other clusters. *

* - * TODO with enough candidates at hand, apply temporal and spatial segmentation to account for heterogeneous wind fields + * TODO with enough candidates at hand, apply temporal and spatial segmentation to account for heterogeneous wind + * fields */ - private Triple, Pair, ScalableBearingAndScalableDouble>>, - List, Pair, ScalableBearingAndScalableDouble>>, - List, Pair, ScalableBearingAndScalableDouble>>> analyzeRace( - boolean waitForLatest) throws NotEnoughDataHasBeenAddedException { + private Triple, Pair, ScalableBearingAndScalableDouble>>, List, Pair, ScalableBearingAndScalableDouble>>, List, Pair, ScalableBearingAndScalableDouble>>> analyzeRace( + boolean waitForLatest) throws NotEnoughDataHasBeenAddedException { final Map maneuvers = getAllManeuvers(waitForLatest); - // cluster into eight clusters by middle COG first, then aggregate tack likelihoods for each, and jibe likelihoods for opposite cluster + // cluster into eight clusters by middle COG first, then aggregate tack likelihoods for each, and jibe + // likelihoods for opposite cluster final int numberOfClusters = 16; - KMeansMappingClusterer, Pair, ScalableBearingAndScalableDouble> clusterer = - new KMeansMappingClusterer<>(numberOfClusters, - getManeuverClassifications(maneuvers), - (mc)->mc.getScalableMiddleManeuverCourseAndManeuverAngleDeg(), // maps maneuver classification to cluster metric - // use an evenly distributed set of cluster seeds for clustering wind direction estimations - Stream.concat(IntStream.range(0, numberOfClusters/2).mapToObj((i)-> - new Pair<>(new DegreeBearingImpl(((double) i)*360./(double) numberOfClusters/2), 45.)), - IntStream.range(0, numberOfClusters/2).mapToObj((i)-> - new Pair<>(new DegreeBearingImpl(((double) i)*360./(double) numberOfClusters/2), -45.)))); - logger.fine("K-Means maneuver clusterer for wind estimation took "+clusterer.getNumberOfIterations()+" iterations"); - final Set, Pair, ScalableBearingAndScalableDouble>> clusters = clusterer.getClusters(); - assert maneuvers.size() == clusters.stream().map((c)->c.size()).reduce((s1, s2)->s1+s2).get(); + KMeansMappingClusterer, Pair, ScalableBearingAndScalableDouble> clusterer = new KMeansMappingClusterer<>( + numberOfClusters, getManeuverClassifications(maneuvers), + (mc) -> mc.getScalableMiddleManeuverCourseAndManeuverAngleDeg(), // maps maneuver classification to + // cluster metric + // use an evenly distributed set of cluster seeds for clustering wind direction estimations + Stream.concat( + IntStream.range(0, numberOfClusters / 2).mapToObj( + (i) -> new Pair<>(new DegreeBearingImpl(((double) i) * 360. / (double) numberOfClusters + / 2), 45.)), + IntStream.range(0, numberOfClusters / 2).mapToObj( + (i) -> new Pair<>(new DegreeBearingImpl(((double) i) * 360. / (double) numberOfClusters + / 2), -45.)))); + logger.fine("K-Means maneuver clusterer for wind estimation took " + clusterer.getNumberOfIterations() + + " iterations"); + final Set, Pair, ScalableBearingAndScalableDouble>> clusters = clusterer + .getClusters(); + assert maneuvers.size() == clusters.stream().map((c) -> c.size()).reduce((s1, s2) -> s1 + s2).get(); // Now work towards identifying the two tack clusters - final Map, Pair, ScalableBearingAndScalableDouble>, Double> - likelihoodOfBeingTackCluster = new HashMap<>(); + final Map, Pair, ScalableBearingAndScalableDouble>, Double> likelihoodOfBeingTackCluster = new HashMap<>(); for (Cluster, Pair, ScalableBearingAndScalableDouble> c : clusters) { - likelihoodOfBeingTackCluster.put(c, - getLikelihoodOfBeingTackCluster(c, clusters)); + likelihoodOfBeingTackCluster.put(c, getLikelihoodOfBeingTackCluster(c, clusters)); } - // The first two clusters in the resulting list are now our best bet for the tack clusters, assuming that the likelihood for the third element - // in the list is already much lower. Should there be a significant degradation of likelihood between the first and the second cluster, we - // will only use the first, particularly if the average middle COGs of the first two clusters differ significantly. - final List, Pair, ScalableBearingAndScalableDouble>> tackClusters = - clusters.stream() + // The first two clusters in the resulting list are now our best bet for the tack clusters, assuming that the + // likelihood for the third element + // in the list is already much lower. Should there be a significant degradation of likelihood between the first + // and the second cluster, we + // will only use the first, particularly if the average middle COGs of the first two clusters differ + // significantly. + final List, Pair, ScalableBearingAndScalableDouble>> tackClusters = clusters + .stream() .sorted((c1, c2) -> (int) -Math.signum(likelihoodOfBeingTackCluster.get(c1) - likelihoodOfBeingTackCluster.get(c2))).limit(2).collect(Collectors.toList()); addWindFixes(tackClusters.stream(), ManeuverType.TACK); - Bearing estimatedJibeMiddleCOG = - tackClusters.isEmpty() ? null - : (tackClusters.size() == 1 ? getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(tackClusters.get(0), ManeuverType.TACK).getA() - : new ScalableBearing(getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(tackClusters.get(0), ManeuverType.TACK).getA()).add( - new ScalableBearing(getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(tackClusters.get(1), ManeuverType.TACK).getA())). - divide(2)).reverse(); - final List, Pair, ScalableBearingAndScalableDouble>> jibeClusters = - getJibeClusters(estimatedJibeMiddleCOG, clusters).collect(Collectors.toList()); + Bearing estimatedJibeMiddleCOG = tackClusters.isEmpty() ? null + : (tackClusters.size() == 1 ? getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg( + tackClusters.get(0), ManeuverType.TACK).getA() : new ScalableBearing( + getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(tackClusters.get(0), + ManeuverType.TACK).getA()).add( + new ScalableBearing(getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg( + tackClusters.get(1), ManeuverType.TACK).getA())).divide(2)).reverse(); + final List, Pair, ScalableBearingAndScalableDouble>> jibeClusters = getJibeClusters( + estimatedJibeMiddleCOG, clusters).collect(Collectors.toList()); addWindFixes(jibeClusters.stream(), ManeuverType.JIBE); return new Triple<>(clusters, tackClusters, jibeClusters); } @@ -419,10 +431,12 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { private void addWindFixes( Stream, Pair, ScalableBearingAndScalableDouble>> clusters, final ManeuverType maneuverType) { - // TODO see bug 1562 comment #8: use WindWithConfidenceImpl internally and implement WindTrack.getAveragedWindWithConfidence + // TODO see bug 1562 comment #8: use WindWithConfidenceImpl internally and implement + // WindTrack.getAveragedWindWithConfidence clusters.forEach((cluster) -> { for (ManeuverClassification mc : cluster) { - final SpeedWithBearingWithConfidence estimatedWindSpeedAndBearing = mc.getEstimatedWindSpeedAndBearing(maneuverType); + final SpeedWithBearingWithConfidence estimatedWindSpeedAndBearing = mc + .getEstimatedWindSpeedAndBearing(maneuverType); if (estimatedWindSpeedAndBearing != null) { Wind windFromTack = new WindImpl(mc.getPosition(), mc.getTimePoint(), estimatedWindSpeedAndBearing .getObject()); @@ -431,7 +445,7 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { } }); } - + /** * Determines the likelihood of cluster being a cluster of tacks, based on the average likelihood of * the maneuver classifications in cluster to be maneuvers of type {@link ManeuverType#TACK TACK}, in @@ -475,55 +489,77 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { Set, Pair, ScalableBearingAndScalableDouble>> clusters) { // start with the average of all of the cluster's maneuvers' likelihood to be a tack double averageTackLikelihood = getAverageLikelihoodOfBeingManeuver(ManeuverType.TACK, cluster.stream()); - final Bearing approximateMiddleCOG = getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(cluster, ManeuverType.TACK).getA(); - // search for the opposite tack cluster by finding the one that has the smallest angular distance to the expected - // middle COG (same as for the candidate cluster) and expected maneuver angle (the cluster's average maneuver angle with inverted sign) - final Cluster, Pair, ScalableBearingAndScalableDouble> oppositeTackCluster = - clusters.stream().filter((c)->c!=cluster).min((a, b)->(int) Math.signum( - getClusterDistanceBasedOnAverageManeuverLikelihoodAndWeightedAverageMiddleCOG(a, -cluster.getCentroid().getB(), approximateMiddleCOG)- - getClusterDistanceBasedOnAverageManeuverLikelihoodAndWeightedAverageMiddleCOG(b, -cluster.getCentroid().getB(), approximateMiddleCOG))). - orElse(null); - // if the opposite tack cluster is empty, it's pretty unlikely that it's a tack cluster; assign a low default probability of 10% - final double likelihoodOfOppositeCluster = oppositeTackCluster.isEmpty() ? 0.1 : - getLikelihoodOfClusterBasedOnDistanceFromExpected(-cluster.getCentroid().getB(), approximateMiddleCOG, oppositeTackCluster); - // compute weighted averages across the current candidate cluster and its supposed opposite tack cluster where the latter - // is weighted by the likelihoodOfOppositeCluster whereas the candidate cluster is always weighed as 1.0 for this purpose - final double averageTackingAngleDeg = (Math.abs(getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(cluster, ManeuverType.TACK).getB()) + - likelihoodOfOppositeCluster*Math.abs(getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(oppositeTackCluster, ManeuverType.TACK).getB())) - / (1+likelihoodOfOppositeCluster); - final Bearing averageUpwindCOG = new ScalableBearing( - getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(cluster, ManeuverType.TACK).getA()).add(new ScalableBearing( - getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(oppositeTackCluster, ManeuverType.TACK).getA()). - multiply(likelihoodOfOppositeCluster)).divide(1+likelihoodOfOppositeCluster); + final Bearing approximateMiddleCOG = getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(cluster, + ManeuverType.TACK).getA(); + // search for the opposite tack cluster by finding the one that has the smallest angular distance to the + // expected + // middle COG (same as for the candidate cluster) and expected maneuver angle (the cluster's average maneuver + // angle with inverted sign) + final Cluster, Pair, ScalableBearingAndScalableDouble> oppositeTackCluster = clusters + .stream() + .filter((c) -> c != cluster) + .min((a, b) -> (int) Math + .signum(getClusterDistanceBasedOnAverageManeuverLikelihoodAndWeightedAverageMiddleCOG(a, + -cluster.getCentroid().getB(), approximateMiddleCOG) + - getClusterDistanceBasedOnAverageManeuverLikelihoodAndWeightedAverageMiddleCOG(b, + -cluster.getCentroid().getB(), approximateMiddleCOG))).orElse(null); + // if the opposite tack cluster is empty, it's pretty unlikely that it's a tack cluster; assign a low default + // probability of 10% + final double likelihoodOfOppositeCluster = oppositeTackCluster.isEmpty() ? 0.1 + : getLikelihoodOfClusterBasedOnDistanceFromExpected(-cluster.getCentroid().getB(), + approximateMiddleCOG, oppositeTackCluster); + // compute weighted averages across the current candidate cluster and its supposed opposite tack cluster where + // the latter + // is weighted by the likelihoodOfOppositeCluster whereas the candidate cluster is always weighed as 1.0 for + // this purpose + final double averageTackingAngleDeg = (Math.abs(getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg( + cluster, ManeuverType.TACK).getB()) + likelihoodOfOppositeCluster + * Math.abs(getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(oppositeTackCluster, + ManeuverType.TACK).getB())) + / (1 + likelihoodOfOppositeCluster); + final Bearing averageUpwindCOG = new ScalableBearing(getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg( + cluster, ManeuverType.TACK).getA()).add( + new ScalableBearing(getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(oppositeTackCluster, + ManeuverType.TACK).getA()).multiply(likelihoodOfOppositeCluster)).divide( + 1 + likelihoodOfOppositeCluster); // Now search for head-up/bear-away cluster(s) to port and to starboard of cluster's weighted middle COG - final Bearing expectedUpwindStarboardTackCOG = averageUpwindCOG.add(new DegreeBearingImpl(-averageTackingAngleDeg/2.)); - double starboardHeadUpBearAwayClusterLikelihood = getLikelihoodOfBestFittingHeadUpBearAwayCluster( - clusters.stream().filter(c->c!=cluster), expectedUpwindStarboardTackCOG); - final Bearing expectedUpwindPortTackCOG = averageUpwindCOG.add(new DegreeBearingImpl(averageTackingAngleDeg/2.)); - double portHeadUpBearAwayClusterLikelihood = getLikelihoodOfBestFittingHeadUpBearAwayCluster( - clusters.stream().filter(c->c!=cluster), expectedUpwindPortTackCOG); + final Bearing expectedUpwindStarboardTackCOG = averageUpwindCOG.add(new DegreeBearingImpl( + -averageTackingAngleDeg / 2.)); + double starboardHeadUpBearAwayClusterLikelihood = getLikelihoodOfBestFittingHeadUpBearAwayCluster(clusters + .stream().filter(c -> c != cluster), expectedUpwindStarboardTackCOG); + final Bearing expectedUpwindPortTackCOG = averageUpwindCOG.add(new DegreeBearingImpl( + averageTackingAngleDeg / 2.)); + double portHeadUpBearAwayClusterLikelihood = getLikelihoodOfBestFittingHeadUpBearAwayCluster(clusters.stream() + .filter(c -> c != cluster), expectedUpwindPortTackCOG); // under the assumption that cluster holds tacks, find the clusters that then most likely hold the jibes final Bearing approximateMiddleCOGForJibes = averageUpwindCOG.reverse(); - Stream, Pair, ScalableBearingAndScalableDouble>> jibeClusters = - getJibeClusters(approximateMiddleCOGForJibes, clusters); - // increase cluster's score if "good" jibe clusters are found; quality is defined by how well the angle matches and how well the speed ratio fits + Stream, Pair, ScalableBearingAndScalableDouble>> jibeClusters = getJibeClusters( + approximateMiddleCOGForJibes, clusters); + // increase cluster's score if "good" jibe clusters are found; quality is defined by how well the angle matches + // and how well the speed ratio fits Speed tackClusterWeightedAverageSpeed = getWeightedAverageSpeed(cluster.stream(), ManeuverType.TACK); final double result; if (tackClusterWeightedAverageSpeed != null) { // find out how likely the speed ratio is between the candidate tack cluster and the corresponding // hypothetical jibe clusters - double jibeClusterLikelihood = getLikelihoodOfBeingJibeCluster( - tackClusterWeightedAverageSpeed, jibeClusters.map((jc) -> jc.stream()).reduce(Stream::concat) - .orElse(Stream.empty()), getBoatClass(), clusters); - // Likely jibe clusters may raise the general likelihood by up to 20% of the value so far, but not to over 1.0 - result = Math.min(1.0, averageTackLikelihood * likelihoodOfOppositeCluster * - (1.0 + BOOST_FACTOR_FOR_FULL_JIBE_CLUSTER_LIKELIHOOD * jibeClusterLikelihood + - BOOST_FACTOR_FOR_FULL_HEAD_UP_BEAR_AWAY_CLUSTER_LIKELIHOOD * starboardHeadUpBearAwayClusterLikelihood + - BOOST_FACTOR_FOR_FULL_HEAD_UP_BEAR_AWAY_CLUSTER_LIKELIHOOD * portHeadUpBearAwayClusterLikelihood)); + double jibeClusterLikelihood = getLikelihoodOfBeingJibeCluster(tackClusterWeightedAverageSpeed, + jibeClusters.map((jc) -> jc.stream()).reduce(Stream::concat).orElse(Stream.empty()), + getBoatClass(), clusters); + // Likely jibe clusters may raise the general likelihood by up to 20% of the value so far, but not to over + // 1.0 + result = Math + .min(1.0, + averageTackLikelihood + * likelihoodOfOppositeCluster + * (1.0 + BOOST_FACTOR_FOR_FULL_JIBE_CLUSTER_LIKELIHOOD * jibeClusterLikelihood + + BOOST_FACTOR_FOR_FULL_HEAD_UP_BEAR_AWAY_CLUSTER_LIKELIHOOD + * starboardHeadUpBearAwayClusterLikelihood + BOOST_FACTOR_FOR_FULL_HEAD_UP_BEAR_AWAY_CLUSTER_LIKELIHOOD + * portHeadUpBearAwayClusterLikelihood)); } else { - result = .1; // no elements in the cluster, therefore no average speed; low propability that this would be a tack cluster + result = .1; // no elements in the cluster, therefore no average speed; low propability that this would be a + // tack cluster } return result; } @@ -538,32 +574,36 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { private double getLikelihoodOfBestFittingHeadUpBearAwayCluster( Stream, Pair, ScalableBearingAndScalableDouble>> clusters, final Bearing expectedAverageMiddleCOG) { - final Cluster, Pair, ScalableBearingAndScalableDouble> starboardTackHeadUpAndBearAwayCluster = - clusters.max((a, b)->(int) Math.signum( - getLikelihoodOfClusterBasedOnDistanceFromExpected(EXPECTED_AVERAGE_HEAD_UP_AND_BEAR_AWAY_MANEUVER_ANGLE_DEG, expectedAverageMiddleCOG, a)- - getLikelihoodOfClusterBasedOnDistanceFromExpected(EXPECTED_AVERAGE_HEAD_UP_AND_BEAR_AWAY_MANEUVER_ANGLE_DEG, expectedAverageMiddleCOG, b))). - orElse(null); - double starboardHeadUpBearAwayClusterLikelihood = starboardTackHeadUpAndBearAwayCluster == null ? 0.0 : - getLikelihoodOfClusterBasedOnDistanceFromExpected( - EXPECTED_AVERAGE_HEAD_UP_AND_BEAR_AWAY_MANEUVER_ANGLE_DEG, expectedAverageMiddleCOG, starboardTackHeadUpAndBearAwayCluster); + final Cluster, Pair, ScalableBearingAndScalableDouble> starboardTackHeadUpAndBearAwayCluster = clusters + .max((a, b) -> (int) Math + .signum(getLikelihoodOfClusterBasedOnDistanceFromExpected( + EXPECTED_AVERAGE_HEAD_UP_AND_BEAR_AWAY_MANEUVER_ANGLE_DEG, expectedAverageMiddleCOG, a) + - getLikelihoodOfClusterBasedOnDistanceFromExpected( + EXPECTED_AVERAGE_HEAD_UP_AND_BEAR_AWAY_MANEUVER_ANGLE_DEG, + expectedAverageMiddleCOG, b))).orElse(null); + double starboardHeadUpBearAwayClusterLikelihood = starboardTackHeadUpAndBearAwayCluster == null ? 0.0 + : getLikelihoodOfClusterBasedOnDistanceFromExpected( + EXPECTED_AVERAGE_HEAD_UP_AND_BEAR_AWAY_MANEUVER_ANGLE_DEG, expectedAverageMiddleCOG, + starboardTackHeadUpAndBearAwayCluster); return starboardHeadUpBearAwayClusterLikelihood; } /** * Assigns a likelihood to a cluster based on its * {@link #getClusterDistanceBasedOnAverageManeuverLikelihoodAndWeightedAverageMiddleCOG(Cluster, double, Bearing) - * "angular distance"} from an expected average middle COG and Tells how likely it is that the two clusters are opposite tack clusters. This is determined - * by looking at the + * "angular distance"} from an expected average middle COG and Tells how likely it is that the two clusters are + * opposite tack clusters. This is determined by looking at the * {@link #getClusterDistanceBasedOnAverageManeuverLikelihoodAndWeightedAverageMiddleCOG(Cluster, double, Bearing) * angular distance} between the two clusters regarding their middle COG and their average maneuver angles. The * likelihood decreases exponentially with increasing angle differences. It is 1.0 for an exact match and reaches * 0.5 for an angular distance of 20deg. */ private double getLikelihoodOfClusterBasedOnDistanceFromExpected( - double expectedManeuverAngleDeg, Bearing expectedApproximateMiddleCOG, + double expectedManeuverAngleDeg, + Bearing expectedApproximateMiddleCOG, Cluster, Pair, ScalableBearingAndScalableDouble> oppositeTackCluster) { final double clusterDistanceFromExpected = getClusterDistanceBasedOnAverageManeuverLikelihoodAndWeightedAverageMiddleCOG( - oppositeTackCluster, expectedManeuverAngleDeg, expectedApproximateMiddleCOG); + oppositeTackCluster, expectedManeuverAngleDeg, expectedApproximateMiddleCOG); return getLikelihoodOfClusterBasedOnDistanceFromExpected(clusterDistanceFromExpected); } @@ -584,32 +624,35 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { * . */ private double getLikelihoodOfClusterBasedOnDistanceFromExpected(final double clusterDistanceFromExpected) { - return Math.exp(Math.log(0.5) * (clusterDistanceFromExpected / ANGULAR_DISTANCE_FOR_HALF_CONFIDENCE_FOR_OPPOSITE_TACK_CLUSTER_DEG)); + return Math.exp(Math.log(0.5) + * (clusterDistanceFromExpected / ANGULAR_DISTANCE_FOR_HALF_CONFIDENCE_FOR_OPPOSITE_TACK_CLUSTER_DEG)); } /** - * A euklidian degree distance based on the two degree distances between the maneuver angles and the - * middle COGs. The expected pair is passed as expcetedManeuverAngleDeg and expectedApproximateMiddleCOG whereas - * the actuals are determined by computing the {@link ManeuverType#TACK}-weighted average for those values from cluster. + * A euklidian degree distance based on the two degree distances between the maneuver angles and the middle COGs. + * The expected pair is passed as expcetedManeuverAngleDeg and + * expectedApproximateMiddleCOG whereas the actuals are determined by computing the + * {@link ManeuverType#TACK}-weighted average for those values from cluster. */ private double getClusterDistanceBasedOnAverageManeuverLikelihoodAndWeightedAverageMiddleCOG( Cluster, Pair, ScalableBearingAndScalableDouble> cluster, double expectedManeuverAngleDeg, Bearing expectedApproximateMiddleCOG) { - final Pair weightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg = getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(cluster, ManeuverType.TACK); + final Pair weightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg = getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg( + cluster, ManeuverType.TACK); final Bearing weightedAverageMiddleCOG = weightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg.getA(); final Double weightedAverageManeuverAngle = weightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg.getB(); - return getClusterDistance(expectedManeuverAngleDeg, expectedApproximateMiddleCOG, weightedAverageManeuverAngle, weightedAverageMiddleCOG); + return getClusterDistance(expectedManeuverAngleDeg, expectedApproximateMiddleCOG, weightedAverageManeuverAngle, + weightedAverageMiddleCOG); } /** - * A euklidian degree distance based on the two degree distances between the maneuver angles and the - * middle COGs. + * A euklidian degree distance based on the two degree distances between the maneuver angles and the middle COGs. */ private double getClusterDistance(double expectedManeuverAngleDeg, Bearing expectedApproximateMiddleCOG, final double weightedAverageManeuverAngle, final Bearing weightedAverageMiddleCOG) { double middleCOGDiff = weightedAverageMiddleCOG.getDifferenceTo(expectedApproximateMiddleCOG).getDegrees(); double maneuverAngleDiff = weightedAverageManeuverAngle - expectedManeuverAngleDeg; - return Math.sqrt(middleCOGDiff*middleCOGDiff + maneuverAngleDiff*maneuverAngleDiff); + return Math.sqrt(middleCOGDiff * middleCOGDiff + maneuverAngleDiff * maneuverAngleDiff); } /** @@ -618,31 +661,33 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { private double getAverageLikelihoodOfBeingManeuver(ManeuverType maneuverType, Stream maneuverClassifications) { return maneuverClassifications - .mapToDouble((mc)->mc.getLikelihoodAndTWSBasedOnSpeedAndAngle(maneuverType).getA()).average().orElse(0.0); + .mapToDouble((mc) -> mc.getLikelihoodAndTWSBasedOnSpeedAndAngle(maneuverType).getA()).average() + .orElse(0.0); } - + private BoatClass getBoatClass() { return trackedRace.getRace().getBoatClass(); } /** * Returns at most two clusters that hold maneuvers with the highest average probability of being a jibe and whose - * {@link #getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(Cluster, ManeuverType) weighted average middle COG} fits that of - * the expected value (approximateMiddleCOGForJibes) within + * {@link #getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(Cluster, ManeuverType) weighted average middle + * COG} fits that of the expected value (approximateMiddleCOGForJibes) within * {@link #THRESHOLD_JIBE_CLUSTER_DIFFERENCE_DEGREES} degrees. */ private Stream, Pair, ScalableBearingAndScalableDouble>> getJibeClusters( final Bearing approximateMiddleCOGForJibes, Set, Pair, ScalableBearingAndScalableDouble>> clusters) { // TODO the result of getAverageLikelihoodOfBeingManeuver(ManeuverType.JIBE, a.stream()) should be cached - return clusters.stream().sorted((a, b)-> - (int) -Math.signum(getAverageLikelihoodOfBeingManeuver(ManeuverType.JIBE, a.stream()) - - getAverageLikelihoodOfBeingManeuver(ManeuverType.JIBE, b.stream()))).filter( - (jibeClusterCandidate)->Math.abs(getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg(jibeClusterCandidate, ManeuverType.JIBE).getA(). - getDifferenceTo(approximateMiddleCOGForJibes).getDegrees()) < THRESHOLD_JIBE_CLUSTER_DIFFERENCE_DEGREES). - limit(2); + return clusters + .stream() + .sorted((a, b) -> (int) -Math.signum(getAverageLikelihoodOfBeingManeuver(ManeuverType.JIBE, a.stream()) + - getAverageLikelihoodOfBeingManeuver(ManeuverType.JIBE, b.stream()))) + .filter((jibeClusterCandidate) -> Math.abs(getWeightedAverageMiddleManeuverCOGDegAndManeuverAngleDeg( + jibeClusterCandidate, ManeuverType.JIBE).getA().getDifferenceTo(approximateMiddleCOGForJibes) + .getDegrees()) < THRESHOLD_JIBE_CLUSTER_DIFFERENCE_DEGREES).limit(2); } - + /** * By looking at the weighted speeds over ground averages, and based on the {@link #polarService} determines how * {@link PolarDataService#getManeuverLikelihoodAndTwsTwa(BoatClass, Speed, double, ManeuverType) likely} it is that @@ -658,12 +703,13 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { private double getLikelihoodOfBeingJibeCluster( Speed tackClusterWeightedAverageSpeed, Stream jibeClustersContent, - BoatClass boatClass, Set, Pair, ScalableBearingAndScalableDouble>> clusters) { + BoatClass boatClass, + Set, Pair, ScalableBearingAndScalableDouble>> clusters) { final int[] count = new int[1]; final double[] likelihoodSum = new double[1]; final ScalableBearing[] scaledAverageDownwindCOG = new ScalableBearing[1]; final double[] scaledAbsJibingAngleSum = new double[1]; - Stream jibeClustersContentPeeker = jibeClustersContent.peek((mc)->{ + Stream jibeClustersContentPeeker = jibeClustersContent.peek((mc) -> { count[0]++; final double likelihood = mc.getLikelihoodAndTWSBasedOnSpeedAndAngle(ManeuverType.JIBE).getA(); likelihoodSum[0] += likelihood; @@ -676,7 +722,8 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { scaledAbsJibingAngleSum[0] += likelihood * Math.abs(mc.getManeuverAngleDeg()); }); Speed jibeClusterWeightedAverageSpeed = getWeightedAverageSpeed(jibeClustersContentPeeker, ManeuverType.JIBE); - Bearing averageDownwindCOG = scaledAverageDownwindCOG[0] == null ? null : scaledAverageDownwindCOG[0].divide(likelihoodSum[0]); + Bearing averageDownwindCOG = scaledAverageDownwindCOG[0] == null ? null : scaledAverageDownwindCOG[0] + .divide(likelihoodSum[0]); double absWeightedAverageJibingAbgle = scaledAbsJibingAngleSum[0] / likelihoodSum[0]; final double result; if (jibeClusterWeightedAverageSpeed != null) { @@ -685,18 +732,26 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { if (count[0] > 0) { double averageJibeLikelihood = likelihoodSum[0] / count[0]; // Now search for head-up/bear-away cluster(s) to port and to starboard of cluster's weighted middle COG - final Bearing expectedDownwindStarboardTackCOG = averageDownwindCOG.add(new DegreeBearingImpl(+absWeightedAverageJibingAbgle/2.)); + final Bearing expectedDownwindStarboardTackCOG = averageDownwindCOG.add(new DegreeBearingImpl( + +absWeightedAverageJibingAbgle / 2.)); double starboardHeadUpBearAwayClusterLikelihood = getLikelihoodOfBestFittingHeadUpBearAwayCluster( clusters.stream(), expectedDownwindStarboardTackCOG); - final Bearing expectedDownwindPortTackCOG = averageDownwindCOG.add(new DegreeBearingImpl(-absWeightedAverageJibingAbgle/2.)); + final Bearing expectedDownwindPortTackCOG = averageDownwindCOG.add(new DegreeBearingImpl( + -absWeightedAverageJibingAbgle / 2.)); double portHeadUpBearAwayClusterLikelihood = getLikelihoodOfBestFittingHeadUpBearAwayCluster( clusters.stream(), expectedDownwindPortTackCOG); - result = Math.min(1.0, averageJibeLikelihood - * (1.0 + BOOST_FACTOR_FOR_JIBE_TACK_SPEED_RATIO_LIKELIHOOD * tackJibeSpeedRatioLikelihood + - BOOST_FACTOR_FOR_FULL_HEAD_UP_BEAR_AWAY_CLUSTER_LIKELIHOOD * starboardHeadUpBearAwayClusterLikelihood + - BOOST_FACTOR_FOR_FULL_HEAD_UP_BEAR_AWAY_CLUSTER_LIKELIHOOD * portHeadUpBearAwayClusterLikelihood)); + result = Math + .min(1.0, + averageJibeLikelihood + * (1.0 + BOOST_FACTOR_FOR_JIBE_TACK_SPEED_RATIO_LIKELIHOOD + * tackJibeSpeedRatioLikelihood + + BOOST_FACTOR_FOR_FULL_HEAD_UP_BEAR_AWAY_CLUSTER_LIKELIHOOD + * starboardHeadUpBearAwayClusterLikelihood + BOOST_FACTOR_FOR_FULL_HEAD_UP_BEAR_AWAY_CLUSTER_LIKELIHOOD + * portHeadUpBearAwayClusterLikelihood)); } else { - throw new RuntimeException("Internal error: no maneuvers in jibe cluster candidate but still a valid weighted average speed "+jibeClusterWeightedAverageSpeed); + throw new RuntimeException( + "Internal error: no maneuvers in jibe cluster candidate but still a valid weighted average speed " + + jibeClusterWeightedAverageSpeed); } } else { result = 0.1; // no maneuvers in the jibe clusters; could be but may also not be a jibe cluster @@ -704,14 +759,14 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { return result; } - private Speed getWeightedAverageSpeed( - Stream cluster, - ManeuverType maneuverType) { - ConfidenceBasedAverager averager = ConfidenceFactory.INSTANCE.createAverager(/* weigher */ null); + private Speed getWeightedAverageSpeed(Stream cluster, ManeuverType maneuverType) { + ConfidenceBasedAverager averager = ConfidenceFactory.INSTANCE + .createAverager(/* weigher */null); HasConfidence average = averager.getAverage( - cluster.map(new ManeuverClassificationToHasConfidenceAndIsScalableAdapter(maneuverType, - (mc)->new ScalableSpeed(mc.getSpeedAtManeuverStart()), - polarService)).iterator(), /* at */ null); + cluster.map( + new ManeuverClassificationToHasConfidenceAndIsScalableAdapter(maneuverType, + (mc) -> new ScalableSpeed(mc.getSpeedAtManeuverStart()), polarService)).iterator(), /* at */ + null); return average == null ? null : average.getObject(); } @@ -719,8 +774,11 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { * For each maneuver from maneuvers, a {@link ManeuverClassification object} is created. */ Stream getManeuverClassifications(final Map maneuvers) { - return maneuvers.entrySet().stream().map((maneuverAndCompetitor)-> - new ManeuverClassification(maneuverAndCompetitor.getValue(), maneuverAndCompetitor.getKey())); + return maneuvers + .entrySet() + .stream() + .map((maneuverAndCompetitor) -> new ManeuverClassification(maneuverAndCompetitor.getValue(), + maneuverAndCompetitor.getKey())); } /** @@ -732,23 +790,25 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { final Waypoint lastWaypoint = trackedRace.getRace().getCourse().getLastWaypoint(); for (Competitor competitor : trackedRace.getRace().getCompetitors()) { final TimePoint from = Util.getFirstNonNull( - firstWaypoint == null ? null : trackedRace.getMarkPassing(competitor, firstWaypoint) == null ? null : trackedRace.getMarkPassing(competitor, firstWaypoint).getTimePoint(), - trackedRace.getStartOfRace(), trackedRace.getStartOfTracking()); + firstWaypoint == null ? null : trackedRace.getMarkPassing(competitor, firstWaypoint) == null ? null + : trackedRace.getMarkPassing(competitor, firstWaypoint).getTimePoint(), trackedRace + .getStartOfRace(), trackedRace.getStartOfTracking()); final TimePoint to = Util.getFirstNonNull( - lastWaypoint == null ? null : trackedRace.getMarkPassing(competitor, lastWaypoint) == null ? null : trackedRace.getMarkPassing(competitor, lastWaypoint).getTimePoint(), - trackedRace.getEndOfRace(), trackedRace.getEndOfTracking(), - MillisecondsTimePoint.now()); + lastWaypoint == null ? null : trackedRace.getMarkPassing(competitor, lastWaypoint) == null ? null + : trackedRace.getMarkPassing(competitor, lastWaypoint).getTimePoint(), trackedRace + .getEndOfRace(), trackedRace.getEndOfTracking(), MillisecondsTimePoint.now()); for (Maneuver maneuver : trackedRace.getManeuvers(competitor, from, to, waitForLatest)) { maneuvers.put(maneuver, competitor); } } return Collections.unmodifiableMap(maneuvers); } - + /** - * For a cluster of maneuver classifications, clustered two-dimensionally by middle COG and maneuver angle, computes the - * weighted average of the middle COG and maneuver angle where as the weight of each maneuver the likelihood that the maneuver was of type - * maneuverType is used.

+ * For a cluster of maneuver classifications, clustered two-dimensionally by middle COG and maneuver angle, computes + * the weighted average of the middle COG and maneuver angle where as the weight of each maneuver the likelihood + * that the maneuver was of type maneuverType is used. + *

* * The method has default package scope to allow tests in the same package in the test fragment to use it. * @@ -773,8 +833,8 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { HasConfidence maneuverAngleAverageDeg = maneuverAngleAverager.getAverage( cluster.stream() .map(new ManeuverClassificationToHasConfidenceAndIsScalableAdapter( - maneuverType, (mc) -> new ScalableDouble(mc.getManeuverAngleDeg()), - polarService)).iterator(), /* at */null); + maneuverType, (mc) -> new ScalableDouble(mc.getManeuverAngleDeg()), polarService)) + .iterator(), /* at */null); result = new Pair<>(average.getObject(), maneuverAngleAverageDeg.getObject()); weightedAverageMiddleCOGForManeuverType.put(key, result); } @@ -784,7 +844,7 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { public Set, Pair, ScalableBearingAndScalableDouble>> getClusters() { return clusters; } - + public List, Pair, ScalableBearingAndScalableDouble>> getTackClusters() { return tackClusters; } @@ -792,11 +852,11 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { public List, Pair, ScalableBearingAndScalableDouble>> getJibeClusters() { return jibeClusters; } - + public String getStringRepresentation(boolean waitForLatest) { return getStringRepresentation(getClusters().stream(), waitForLatest); } - + public String getStringRepresentation( Stream, Pair, ScalableBearingAndScalableDouble>> clusters, boolean waitForLatest) { @@ -809,8 +869,8 @@ public class ManeuverBasedWindEstimationTrackImpl extends WindTrackImpl { stringRepresentation.append(getManeuverClassificationColumnHeaders()); stringRepresentation.append('\n'); final int[] id = new int[1]; - clusters.map((c)->c.stream()).reduce(Stream::concat).get().forEach((i)->{ - stringRepresentation.append(format(i, ""+id[0]++)); + clusters.map((c) -> c.stream()).reduce(Stream::concat).get().forEach((i) -> { + stringRepresentation.append(format(i, "" + id[0]++)); stringRepresentation.append('\n'); }); return stringRepresentation.toString(); diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/windestimation/ManeuverClassificationToHasConfidenceAndIsScalableAdapter.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/windestimation/ManeuverClassificationToHasConfidenceAndIsScalableAdapter.java index 5aac1389ce2..9191820a9b3 100755 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/windestimation/ManeuverClassificationToHasConfidenceAndIsScalableAdapter.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/windestimation/ManeuverClassificationToHasConfidenceAndIsScalableAdapter.java @@ -10,13 +10,14 @@ import com.sap.sailing.polars.windestimation.ManeuverBasedWindEstimationTrackImp import com.sap.sse.common.scalablevalue.ScalableValue; /** - * {@link ManeuverClassification}s need to be aggregated for different figures based on their confidence - * of being a maneuver of a specific {@link ManeuverType type}. This can conveniently be done using a - * {@link ConfidenceBasedAverager} and by adapting the {@link ManeuverClassification} objects to - * what the averaged needs: a {@link HasConfidenceAndIsScalable} implementation.

+ * {@link ManeuverClassification}s need to be aggregated for different figures based on their confidence of being a + * maneuver of a specific {@link ManeuverType type}. This can conveniently be done using a + * {@link ConfidenceBasedAverager} and by adapting the {@link ManeuverClassification} objects to what the averaged + * needs: a {@link HasConfidenceAndIsScalable} implementation. + *

* - * This abstract class only contributes determining the confidence based on the likelihood for the - * maneuver to be of the type specified. Subclasses need to add the logic for extracting the + * This abstract class only contributes determining the confidence based on the likelihood for the maneuver to be of the + * type specified. Subclasses need to add the logic for extracting the * * @author Axel Uhl (D043530) * @@ -42,7 +43,7 @@ public class ManeuverClassificationToHasConfidenceAndIsScalableAdapter apply(final ManeuverClassification t) { return new HasConfidenceAndIsScalable() { diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/windestimation/ScalableBearingAndScalableDouble.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/windestimation/ScalableBearingAndScalableDouble.java index 5a80594a032..55df0cc95ad 100755 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/windestimation/ScalableBearingAndScalableDouble.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/windestimation/ScalableBearingAndScalableDouble.java @@ -11,12 +11,13 @@ import com.sap.sse.common.scalablevalue.ScalableValueWithDistance; * Two {@link Bearings} combined in one scalable object, like a vector of two bearings. {@link #add(ScalableValue) * Addition} works component wise, and so does {@link #multiply(double) multiplication} and {@link #divide(double) * division}. The {@link #getDistance(Pair) distance} is calculated as the Euklidian two-dimensional distance between - * the two bearing pairs, with "degrees" as conceptual unit. For example, another object of this type that is 2 and 3 degrees - * apart from this object will have a distance of {@link Math#sqrt(double) Math.sqrt(13)}.

+ * the two bearing pairs, with "degrees" as conceptual unit. For example, another object of this type that is 2 and 3 + * degrees apart from this object will have a distance of {@link Math#sqrt(double) Math.sqrt(13)}. + *

* * The {@link #getDistance(Pair)} implementation uses {@link ScalableBearing#getApproximateDegreeDistanceTo(Bearing)} on - * the scalable bearing part of this object. This is only an approximation but works a lot faster and is still monotonous. - * It works well for small angles. + * the scalable bearing part of this object. This is only an approximation but works a lot faster and is still + * monotonous. It works well for small angles. * * @author Axel Uhl (D043530) * @@ -24,12 +25,12 @@ import com.sap.sse.common.scalablevalue.ScalableValueWithDistance; public class ScalableBearingAndScalableDouble implements ScalableValueWithDistance, Pair> { private final ScalableBearing b1; - private final ScalableDouble b2; + private final ScalableDouble b2; public ScalableBearingAndScalableDouble(Bearing b1, double b2) { this(new ScalableBearing(b1), new ScalableDouble(b2)); } - + private ScalableBearingAndScalableDouble(ScalableBearing b1, ScalableDouble b2) { super(); this.b1 = b1; @@ -49,12 +50,13 @@ public class ScalableBearingAndScalableDouble implements @Override public double getDistance(Pair other) { final double b1DiffDeg = b1.getApproximateDegreeDistanceTo(other.getA()); - final double b2DiffDeg = Math.abs(b2.divide(1)-other.getB()); - return Math.sqrt(b1DiffDeg*b1DiffDeg + b2DiffDeg*b2DiffDeg); + final double b2DiffDeg = Math.abs(b2.divide(1) - other.getB()); + return Math.sqrt(b1DiffDeg * b1DiffDeg + b2DiffDeg * b2DiffDeg); } @Override - public ScalableBearingAndScalableDouble add(ScalableValue, Pair> t) { + public ScalableBearingAndScalableDouble add( + ScalableValue, Pair> t) { return new ScalableBearingAndScalableDouble(b1.add(t.getValue().getA()), b2.add(t.getValue().getB())); } From 8dba89109c2a1d7393def2649fe4133542b75d83 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 18 Aug 2015 16:50:00 +0200 Subject: [PATCH 057/504] Mobile Event Overview - Use teaser image instead of stage image --- .../client/place/event/overview/EventOverviewStage.java | 2 +- .../gwt/home/mobile/places/event/EventViewImpl.java | 2 +- .../dispatch/event/GetEventOverviewStageAction.java | 9 +++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.java index 92fe518ef0b..e00ab4d3030 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.java @@ -70,7 +70,7 @@ public class EventOverviewStage extends Composite { public void setupRefresh(RefreshManager refreshManager) { this.refreshManager = refreshManager; - refreshManager.add(refreshable, new GetEventOverviewStageAction(presenter.getCtx().getEventDTO().getId())); + refreshManager.add(refreshable, new GetEventOverviewStageAction(presenter.getCtx().getEventDTO().getId(), false)); if(presenter.getCtx().getEventDTO().getState() == EventState.RUNNING) { refreshManager.add(newsRefreshable, new GetEventOverviewNewsAction(presenter.getCtx().getEventDTO().getId(), 15)); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java index 31dfc09cf96..17e64593cc1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java @@ -70,7 +70,7 @@ public class EventViewImpl extends Composite implements EventView { private void setupOverviewStage(UUID eventId) { overviewStageUi = new EventOverviewStage(currentPresenter); - refreshManager.add(overviewStageUi, new GetEventOverviewStageAction(eventId)); + refreshManager.add(overviewStageUi, new GetEventOverviewStageAction(eventId, true)); } private void setupListContent(EventViewDTO event) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java index bcbd0921395..78e28f34706 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java @@ -1,5 +1,8 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; +import static com.sap.sailing.gwt.server.HomeServiceUtil.findEventThumbnailImageUrlAsString; +import static com.sap.sailing.gwt.server.HomeServiceUtil.getStageImageURLAsString; + import java.util.Arrays; import java.util.Collection; import java.util.UUID; @@ -23,13 +26,15 @@ public class GetEventOverviewStageAction implements Action rankedTagsFinished = Arrays.asList(MediaTagConstants.STAGE, MediaTagConstants.FEATURED, MediaTagConstants.HIGHLIGHT); private UUID eventId; + private boolean useTeaserImage; @SuppressWarnings("unused") private GetEventOverviewStageAction() { } - public GetEventOverviewStageAction(UUID eventId) { + public GetEventOverviewStageAction(UUID eventId, boolean useTeaserImage) { this.eventId = eventId; + this.useTeaserImage = useTeaserImage; } @Override @@ -63,7 +68,7 @@ public class GetEventOverviewStageAction implements Action Date: Wed, 19 Aug 2015 10:02:57 +0200 Subject: [PATCH 058/504] Refactored QuickfinderPresenter access to static getter methods --- .../gwt/home/mobile/places/QuickfinderPresenter.java | 11 ++++++++--- .../gwt/home/mobile/places/event/EventViewImpl.java | 4 ++-- .../minileaderboard/MiniLeaderboardViewImpl.java | 4 ++-- .../gwt/home/mobile/places/races/RacesViewImpl.java | 4 ++-- .../gwt/home/mobile/places/series/SeriesViewImpl.java | 2 +- .../SeriesMiniOverallLeaderboardViewImpl.java | 2 +- 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java index 43ae13c98b1..7e33236a8ee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java @@ -12,7 +12,7 @@ import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; public class QuickfinderPresenter { private static final StringMessages MSG = StringMessages.INSTANCE; - public static QuickfinderPresenter getRegattaLeaderboardsQuickfinder(Quickfinder quickfinder, + public static QuickfinderPresenter getForRegattaLeaderboards(Quickfinder quickfinder, final RegattaLeaderboardNavigationProvider navigator, Collection regattaMetadatas) { return new QuickfinderPresenter(quickfinder, MSG.resultsQuickfinder(), new RegattaPlaceNaviationProvider() { @Override @@ -22,7 +22,7 @@ public class QuickfinderPresenter { }, regattaMetadatas); } - public static QuickfinderPresenter getRegattaRacesQuickfinder(Quickfinder quickfinder, + public static QuickfinderPresenter getForRegattaRaces(Quickfinder quickfinder, final RegattaRacesNavigationProvider navigator, Collection regattaMetadatas) { return new QuickfinderPresenter(quickfinder, MSG.racesQuickfinder(), new RegattaPlaceNaviationProvider() { @Override @@ -32,7 +32,12 @@ public class QuickfinderPresenter { }, regattaMetadatas); } - public QuickfinderPresenter(Quickfinder quickfinder, SeriesLeaderboardNavigationProvider navigator, String seriesName, Collection eventsOfSeries) { + public static QuickfinderPresenter getForSeriesLeaderboards(Quickfinder quickfinder, String seriesName, + SeriesLeaderboardNavigationProvider navigator, Collection eventsOfSeries) { + return new QuickfinderPresenter(quickfinder, navigator, seriesName, eventsOfSeries); + } + + private QuickfinderPresenter(Quickfinder quickfinder, SeriesLeaderboardNavigationProvider navigator, String seriesName, Collection eventsOfSeries) { if (eventsOfSeries == null) { quickfinder.removeFromParent(); return; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java index 079a29ca0f8..e19f65fa9b8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java @@ -114,12 +114,12 @@ public class EventViewImpl extends Composite implements EventView { @Override public void setQuickFinderValues(Collection regattaMetadatas) { - QuickfinderPresenter.getRegattaLeaderboardsQuickfinder(quickFinderUi, currentPresenter, regattaMetadatas); + QuickfinderPresenter.getForRegattaLeaderboards(quickFinderUi, currentPresenter, regattaMetadatas); } @Override public void setQuickFinderValues(String seriesName, Collection eventsOfSeries) { - new QuickfinderPresenter(quickFinderUi, currentPresenter, seriesName, eventsOfSeries); + QuickfinderPresenter.getForSeriesLeaderboards(quickFinderUi, seriesName, currentPresenter, eventsOfSeries); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java index d4f5277ee16..8ae35319879 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java @@ -53,12 +53,12 @@ public class MiniLeaderboardViewImpl extends Composite implements MiniLeaderboar @Override public void setQuickFinderValues(Collection regattaMetadatas) { - QuickfinderPresenter.getRegattaLeaderboardsQuickfinder(quickFinderUi, currentPresenter, regattaMetadatas); + QuickfinderPresenter.getForRegattaLeaderboards(quickFinderUi, currentPresenter, regattaMetadatas); } @Override public void setQuickFinderValues(String seriesName, Collection eventsOfSeries) { - new QuickfinderPresenter(quickFinderUi, currentPresenter, seriesName, eventsOfSeries); + QuickfinderPresenter.getForSeriesLeaderboards(quickFinderUi, seriesName, currentPresenter, eventsOfSeries); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java index cc95cec3602..f599f538dde 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java @@ -43,12 +43,12 @@ public class RacesViewImpl extends Composite implements RacesView { @Override public void setQuickFinderValues(Collection regattaMetadatas) { - QuickfinderPresenter.getRegattaRacesQuickfinder(quickFinderUi, currentPresenter, regattaMetadatas); + QuickfinderPresenter.getForRegattaRaces(quickFinderUi, currentPresenter, regattaMetadatas); } @Override public void setQuickFinderValues(String seriesName, Collection eventsOfSeries) { - new QuickfinderPresenter(quickFinderUi, currentPresenter, seriesName, eventsOfSeries); + QuickfinderPresenter.getForSeriesLeaderboards(quickFinderUi, seriesName, currentPresenter, eventsOfSeries); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java index 0fa620f2377..d399a60ec65 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java @@ -65,7 +65,7 @@ public class SeriesViewImpl extends Composite implements SeriesView { @Override public void setQuickFinderValues(String seriesName, Collection eventsOfSeries) { - new QuickfinderPresenter(quickFinderUi, currentPresenter, seriesName, eventsOfSeries); + QuickfinderPresenter.getForSeriesLeaderboards(quickFinderUi, seriesName, currentPresenter, eventsOfSeries); } private void setupListContent(EventSeriesViewDTO event) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java index d96fd09bd23..c4d8796d4be 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java @@ -45,6 +45,6 @@ public class SeriesMiniOverallLeaderboardViewImpl extends Composite implements S @Override public void setQuickFinderValues(String seriesName, Collection eventsOfSeries) { - new QuickfinderPresenter(quickFinderUi, currentPresenter, seriesName, eventsOfSeries); + QuickfinderPresenter.getForSeriesLeaderboards(quickFinderUi, seriesName, currentPresenter, eventsOfSeries); } } From c8c40def4ec891ca21b0150a31a4e86d2ae010b7 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 19 Aug 2015 10:15:54 +0200 Subject: [PATCH 059/504] Added new datamining bundle for user-driven polar datamining --- java/com.sap.sailing.feature/feature.xml | 13 ++- .../.classpath | 8 ++ .../.project | 28 +++++ .../.settings/org.eclipse.jdt.core.prefs | 7 ++ .../META-INF/MANIFEST.MF | 17 +++ .../build.properties | 4 + .../com.sap.sailing.polars.datamining/pom.xml | 13 +++ .../Polars_StringMessages_de.properties | 0 .../Polars_StringMessages_en.properties | 0 .../sailing/polars/datamining/Activator.java | 103 ++++++++++++++++++ .../PolarsDataRetrievalChainDefinitions.java | 21 ++++ .../data/HasLeaderboardGroupPolarContext.java | 9 ++ .../data/HasLeaderboardPolarContext.java | 9 ++ .../data/HasRaceColumnPolarContext.java | 9 ++ .../LeaderboardGroupWithPolarContext.java | 19 ++++ .../impl/LeaderboardWithPolarContext.java | 19 ++++ .../data/impl/RaceColumnWithPolarContext.java | 19 ++++ java/pom.xml | 1 + 18 files changed, 296 insertions(+), 3 deletions(-) create mode 100644 java/com.sap.sailing.polars.datamining/.classpath create mode 100644 java/com.sap.sailing.polars.datamining/.project create mode 100644 java/com.sap.sailing.polars.datamining/.settings/org.eclipse.jdt.core.prefs create mode 100644 java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF create mode 100644 java/com.sap.sailing.polars.datamining/build.properties create mode 100644 java/com.sap.sailing.polars.datamining/pom.xml create mode 100644 java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties create mode 100644 java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardGroupPolarContext.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardPolarContext.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasRaceColumnPolarContext.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LeaderboardGroupWithPolarContext.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LeaderboardWithPolarContext.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/RaceColumnWithPolarContext.java diff --git a/java/com.sap.sailing.feature/feature.xml b/java/com.sap.sailing.feature/feature.xml index 1218b2db96c..e0aae64afed 100755 --- a/java/com.sap.sailing.feature/feature.xml +++ b/java/com.sap.sailing.feature/feature.xml @@ -6,9 +6,9 @@ provider-name="SAP"> - The SAP Sailing Server. - -Provides connectivity to a TracTrac live GPS feed as well as a live feed from an Expedition system. + The SAP Sailing Server. + +Provides connectivity to a TracTrac live GPS feed as well as a live feed from an Expedition system. Computes leaderboard information for sailing races and offers RESTful APIs to all of this. @@ -456,4 +456,11 @@ Computes leaderboard information for sailing races and offers RESTful APIs to al version="0.0.0" unpack="false"/> + + diff --git a/java/com.sap.sailing.polars.datamining/.classpath b/java/com.sap.sailing.polars.datamining/.classpath new file mode 100644 index 00000000000..110168ffa19 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/java/com.sap.sailing.polars.datamining/.project b/java/com.sap.sailing.polars.datamining/.project new file mode 100644 index 00000000000..a217a17527e --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/.project @@ -0,0 +1,28 @@ + + + com.sap.sailing.polars.datamining + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/java/com.sap.sailing.polars.datamining/.settings/org.eclipse.jdt.core.prefs b/java/com.sap.sailing.polars.datamining/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000000..0c68a61dca8 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF b/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF new file mode 100644 index 00000000000..ea501f09578 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF @@ -0,0 +1,17 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Datamining +Bundle-SymbolicName: com.sap.sailing.polars.datamining +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: com.sap.sailing.polars.datamining.Activator +Bundle-Vendor: SAP +Require-Bundle: org.eclipse.osgi;bundle-version="3.10.1", + com.sap.sse;bundle-version="1.0.0", + com.sap.sse.datamining;bundle-version="1.0.0", + com.sap.sse.datamining.shared;bundle-version="1.0.0", + com.sap.sailing.datamining, + com.sap.sailing.server;bundle-version="1.0.0", + com.sap.sse.common;bundle-version="1.0.0", + com.sap.sailing.domain;bundle-version="1.0.0" +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-ActivationPolicy: lazy diff --git a/java/com.sap.sailing.polars.datamining/build.properties b/java/com.sap.sailing.polars.datamining/build.properties new file mode 100644 index 00000000000..34d2e4d2dad --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/java/com.sap.sailing.polars.datamining/pom.xml b/java/com.sap.sailing.polars.datamining/pom.xml new file mode 100644 index 00000000000..0afc8f0383b --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + root + com.sap.sailing + 1.0.0-SNAPSHOT + + com.sap.sailing.polars.datamining + eclipse-plugin + diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties new file mode 100644 index 00000000000..e69de29bb2d diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties new file mode 100644 index 00000000000..e69de29bb2d diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java new file mode 100644 index 00000000000..38cebd5a277 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java @@ -0,0 +1,103 @@ +package com.sap.sailing.polars.datamining; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +import org.osgi.framework.BundleContext; + +import com.sap.sailing.datamining.RacingEventServiceProvider; +import com.sap.sse.datamining.DataMiningBundleService; +import com.sap.sse.datamining.DataSourceProvider; +import com.sap.sse.datamining.components.AggregationProcessorDefinition; +import com.sap.sse.datamining.components.DataRetrieverChainDefinition; +import com.sap.sse.datamining.impl.AbstractDataMiningActivator; +import com.sap.sse.i18n.ResourceBundleStringMessages; +import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl; + +public class Activator extends AbstractDataMiningActivator implements DataMiningBundleService { + + private static final String STRING_MESSAGES_BASE_NAME = "stringmessages/Polars_StringMessages"; + + private static Activator INSTANCE; + + private BundleContext context = null; + + private final ResourceBundleStringMessages sailingServerStringMessages; + private final PolarsDataRetrievalChainDefinitions dataRetrieverChainDefinitions; + private Collection> dataSourceProviders; + private boolean dataSourceProvidersHaveBeenInitialized; + + public Activator() { + dataRetrieverChainDefinitions = new PolarsDataRetrievalChainDefinitions(); + sailingServerStringMessages = new ResourceBundleStringMessagesImpl(STRING_MESSAGES_BASE_NAME, getClass().getClassLoader()); + } + + @Override + public void start(BundleContext context) throws Exception { + INSTANCE = this; + this.context = context; + dataSourceProvidersHaveBeenInitialized = false; + super.start(context); + } + + @Override + public void stop(BundleContext context) throws Exception { + this.context = null; + INSTANCE = null; + super.stop(context); + } + + @Override + protected DataMiningBundleService getDataMiningBundleService() { + return this; + } + + @Override + public ResourceBundleStringMessages getStringMessages() { + return sailingServerStringMessages; + } + + @Override + public Iterable> getClassesWithMarkedMethods() { + Set> internalClasses = new HashSet<>(); + //internalClasses.add(HasTrackedRaceContext.class); + return internalClasses; + } + + @Override + public Iterable> getDataRetrieverChainDefinitions() { + return dataRetrieverChainDefinitions.getDataRetrieverChainDefinitions(); + } + + @Override + public Iterable> getDataSourceProviders() { + if (!dataSourceProvidersHaveBeenInitialized) { + initializeDataSourceProviders(); + dataSourceProvidersHaveBeenInitialized = true; + } + return dataSourceProviders; + } + + @Override + public Iterable> getAggregationProcessorDefinitions() { + HashSet> aggregators = new HashSet<>(); + //aggregators.add(ParallelTrueSumAggregationProcessor.getDefinition()); + return aggregators; + } + + private void initializeDataSourceProviders() { + dataSourceProviders = new HashSet<>(); + dataSourceProviders.add(new RacingEventServiceProvider(context)); + } + + public static Activator getDefault() { + if (INSTANCE == null) { + INSTANCE = new Activator(); // probably non-OSGi case, as in test execution + } + + return INSTANCE; + } + + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java new file mode 100644 index 00000000000..4cec1695899 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java @@ -0,0 +1,21 @@ +package com.sap.sailing.polars.datamining; + +import java.util.ArrayList; +import java.util.Collection; + +import com.sap.sse.datamining.components.DataRetrieverChainDefinition; + +public class PolarsDataRetrievalChainDefinitions { + + private final Collection> dataRetrieverChainDefinitions; + + public PolarsDataRetrievalChainDefinitions() { + dataRetrieverChainDefinitions = new ArrayList<>(); + //dataRetrieverChainDefinitions.add(e) + } + + public Iterable> getDataRetrieverChainDefinitions() { + return dataRetrieverChainDefinitions; + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardGroupPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardGroupPolarContext.java new file mode 100644 index 00000000000..b24b9c3a252 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardGroupPolarContext.java @@ -0,0 +1,9 @@ +package com.sap.sailing.polars.datamining.data; + +import com.sap.sailing.domain.leaderboard.LeaderboardGroup; + +public interface HasLeaderboardGroupPolarContext { + + LeaderboardGroup getLeaderboardGroup(); + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardPolarContext.java new file mode 100644 index 00000000000..d9d5c0cabd9 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardPolarContext.java @@ -0,0 +1,9 @@ +package com.sap.sailing.polars.datamining.data; + +import com.sap.sailing.domain.leaderboard.Leaderboard; + +public interface HasLeaderboardPolarContext { + + Leaderboard getLeaderboard(); + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasRaceColumnPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasRaceColumnPolarContext.java new file mode 100644 index 00000000000..8073f428a63 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasRaceColumnPolarContext.java @@ -0,0 +1,9 @@ +package com.sap.sailing.polars.datamining.data; + +import com.sap.sailing.domain.base.RaceColumn; + +public interface HasRaceColumnPolarContext { + + RaceColumn getRaceColumn(); + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LeaderboardGroupWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LeaderboardGroupWithPolarContext.java new file mode 100644 index 00000000000..ddfd4a87a3f --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LeaderboardGroupWithPolarContext.java @@ -0,0 +1,19 @@ +package com.sap.sailing.polars.datamining.data.impl; + +import com.sap.sailing.domain.leaderboard.LeaderboardGroup; +import com.sap.sailing.polars.datamining.data.HasLeaderboardGroupPolarContext; + +public class LeaderboardGroupWithPolarContext implements HasLeaderboardGroupPolarContext { + + private final LeaderboardGroup leaderboardGroup; + + public LeaderboardGroupWithPolarContext(LeaderboardGroup leaderboardGroup) { + this.leaderboardGroup = leaderboardGroup; + } + + @Override + public LeaderboardGroup getLeaderboardGroup() { + return leaderboardGroup; + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LeaderboardWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LeaderboardWithPolarContext.java new file mode 100644 index 00000000000..2af10c5969f --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LeaderboardWithPolarContext.java @@ -0,0 +1,19 @@ +package com.sap.sailing.polars.datamining.data.impl; + +import com.sap.sailing.domain.leaderboard.Leaderboard; +import com.sap.sailing.polars.datamining.data.HasLeaderboardPolarContext; + +public class LeaderboardWithPolarContext implements HasLeaderboardPolarContext { + + private final Leaderboard leaderboard; + + public LeaderboardWithPolarContext(Leaderboard leaderboard) { + this.leaderboard = leaderboard; + } + + @Override + public Leaderboard getLeaderboard() { + return leaderboard; + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/RaceColumnWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/RaceColumnWithPolarContext.java new file mode 100644 index 00000000000..07d20191db4 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/RaceColumnWithPolarContext.java @@ -0,0 +1,19 @@ +package com.sap.sailing.polars.datamining.data.impl; + +import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.polars.datamining.data.HasRaceColumnPolarContext; + +public class RaceColumnWithPolarContext implements HasRaceColumnPolarContext { + + private final RaceColumn raceColumn; + + public RaceColumnWithPolarContext(RaceColumn raceColumn) { + this.raceColumn = raceColumn; + } + + @Override + public RaceColumn getRaceColumn() { + return raceColumn; + } + +} diff --git a/java/pom.xml b/java/pom.xml index efe12a6d59c..5fcbde69d97 100755 --- a/java/pom.xml +++ b/java/pom.xml @@ -133,6 +133,7 @@ com.sap.sailing.autoload com.sap.sailing.feature.p2build com.sap.sailing.polars + com.sap.sailing.polars.datamining com.sap.sailing.polars.test - -

From 07f91f41f6eaa102437098fcff540c0ca96eeedb Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 19 Aug 2015 12:30:46 +0200 Subject: [PATCH 064/504] Optional regatta name in mobile event view abstraction header --- .../gwt/home/mobile/places/event/AbstractEventView.java | 9 +++++---- .../gwt/home/mobile/places/races/RacesViewImpl.java | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java index fd6ffff169c..6e55ab3072b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java @@ -32,8 +32,8 @@ public abstract class AbstractEventView

exten @UiField SimpleInfoBlock simpleInfoUi; @UiField SimplePanel viewContentUi; - private AbstractEventViewLayout(EventViewDTO event, PlaceNavigation logoNavigation) { - this.eventHeaderUi = new EventHeader(event, logoNavigation); + private AbstractEventViewLayout(EventViewDTO event, String regattaName, PlaceNavigation logoNavigation) { + this.eventHeaderUi = new EventHeader(event, regattaName, logoNavigation); } } @@ -41,11 +41,12 @@ public abstract class AbstractEventView

exten protected final RefreshManager refreshManager; private final AbstractEventViewLayout layout; - public AbstractEventView(P presenter, boolean enableLogoNavigation) { + public AbstractEventView(P presenter, boolean showRegattaName, boolean enableLogoNavigation) { this.currentPresenter = presenter; this.refreshManager = new RefreshManager(this, currentPresenter.getDispatch()); + String regattaName = showRegattaName ? currentPresenter.getCtx().getRegatta().getDisplayName() : null; PlaceNavigation logoNavigation = enableLogoNavigation ? currentPresenter.getEventNavigation() : null; - this.layout = new AbstractEventViewLayout(currentPresenter.getCtx().getEventDTO(), logoNavigation); + this.layout = new AbstractEventViewLayout(currentPresenter.getCtx().getEventDTO(), regattaName, logoNavigation); initWidget(uiBinder.createAndBindUi(this.layout)); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java index 64e8930d15c..3db531dd778 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java @@ -12,6 +12,7 @@ import com.sap.sailing.gwt.home.mobile.partials.regattacompetition.RegattaCompet import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetCompetitionFormatRacesAction; +import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; public class RacesViewImpl extends AbstractEventView implements RacesView { @@ -24,7 +25,7 @@ public class RacesViewImpl extends AbstractEventView implem @UiField(provided = true) RegattaCompetition regattaCompetitionUi; public RacesViewImpl(RacesView.Presenter presenter) { - super(presenter, true); + super(presenter, presenter.getCtx().getEventDTO().getType() == EventType.MULTI_REGATTA, true); RegattaNavigationResources.INSTANCE.css().ensureInjected(); regattaCompetitionUi = new RegattaCompetition(presenter); refreshManager.add(regattaCompetitionUi, new GetCompetitionFormatRacesAction(getEventId(), getRegattaId())); From b8453e4dd7b8224315445299b9bff7472dd77473 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 19 Aug 2015 12:31:35 +0200 Subject: [PATCH 065/504] Refactored MiniLeaderboardViewImpl to use mobile event view abstraction --- .../minileaderboard/MiniLeaderboardView.java | 27 +------- .../MiniLeaderboardViewImpl.java | 68 +++---------------- .../MiniLeaderboardViewImpl.ui.xml | 31 --------- 3 files changed, 14 insertions(+), 112 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardView.java index 471b7f7d6c8..036f474aaa0 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardView.java @@ -1,32 +1,11 @@ package com.sap.sailing.gwt.home.mobile.places.minileaderboard; -import java.util.Collection; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.mobile.places.RegattaLeaderboardNavigationProvider; -import com.sap.sailing.gwt.home.mobile.places.SeriesLeaderboardNavigationProvider; -import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; -import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; -import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; -import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; +public interface MiniLeaderboardView extends EventViewBase { -public interface MiniLeaderboardView { - - public interface Presenter extends RegattaLeaderboardNavigationProvider, SeriesLeaderboardNavigationProvider { + public interface Presenter extends EventViewBase.Presenter { - PlaceNavigation getEventNavigation(); - - DispatchSystem getDispatch(); - - EventContext getCtx(); } - Widget asWidget(); - - void setQuickFinderValues(Collection regattas); - - void setQuickFinderValues(String seriesName, Collection eventsOfSeries); - - void hideQuickfinder(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java index 8ae35319879..8b3bced1398 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java @@ -1,68 +1,22 @@ package com.sap.sailing.gwt.home.mobile.places.minileaderboard; -import java.util.Collection; -import java.util.UUID; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; -import com.sap.sailing.gwt.home.mobile.partials.eventheader.EventHeader; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; -import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; -import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; +import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; -import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; -import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; -public class MiniLeaderboardViewImpl extends Composite implements MiniLeaderboardView { +public class MiniLeaderboardViewImpl extends AbstractEventView implements MiniLeaderboardView { + private static final StringMessages MSG = StringMessages.INSTANCE; - private static MyBinder uiBinder = GWT.create(MyBinder.class); - - interface MyBinder extends UiBinder { - } - - private Presenter currentPresenter; - @UiField(provided = true) - EventHeader eventHeaderUi; - @UiField(provided = true) - MinileaderboardBox minileaderboardUi; - @UiField - Quickfinder quickFinderUi; - - public MiniLeaderboardViewImpl(Presenter presenter) { - this.currentPresenter = presenter; - String regattaDisplayName = null; - if(presenter.getCtx().getEventDTO().getType() == EventType.MULTI_REGATTA) { - regattaDisplayName = presenter.getCtx().getRegatta().getDisplayName(); - } - minileaderboardUi = new MinileaderboardBox(false); - eventHeaderUi = new EventHeader(presenter.getCtx().getEventDTO(), regattaDisplayName, presenter.getEventNavigation()); - initWidget(uiBinder.createAndBindUi(this)); - RefreshManager refreshManager = new RefreshManager(this, currentPresenter.getDispatch()); - EventContext ctx = presenter.getCtx(); - UUID uuid = UUID.fromString(ctx.getEventId()); - refreshManager.add(minileaderboardUi, new GetMiniLeaderbordAction(uuid, presenter.getCtx().getRegattaId())); - minileaderboardUi.setAction(MSG.details(), presenter.getRegattaLeaderboardNavigation(presenter.getCtx().getRegattaId())); - } - - @Override - public void setQuickFinderValues(Collection regattaMetadatas) { - QuickfinderPresenter.getForRegattaLeaderboards(quickFinderUi, currentPresenter, regattaMetadatas); - } - @Override - public void setQuickFinderValues(String seriesName, Collection eventsOfSeries) { - QuickfinderPresenter.getForSeriesLeaderboards(quickFinderUi, seriesName, currentPresenter, eventsOfSeries); - } - - @Override - public void hideQuickfinder() { - quickFinderUi.removeFromParent(); + private final MinileaderboardBox minileaderboard; + + public MiniLeaderboardViewImpl(MiniLeaderboardView.Presenter presenter) { + super(presenter, presenter.getCtx().getEventDTO().getType() == EventType.MULTI_REGATTA, true); + setViewContent(minileaderboard = new MinileaderboardBox(false)); + refreshManager.add(minileaderboard, new GetMiniLeaderbordAction(getEventId(), getRegattaId())); + minileaderboard.setAction(MSG.details(), presenter.getRegattaLeaderboardNavigation(getRegattaId())); } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.ui.xml deleted file mode 100644 index 9bf99f4f8da..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.ui.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - .headerWrapper { - background-color: #f2f2f2; - padding-bottom: 10px; - } - - -

- - - - -
- - - From 5287a8c73b6abf673f72a2f6e4aefec61eb253ff Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 19 Aug 2015 12:48:23 +0200 Subject: [PATCH 066/504] Refactored LatestNewsView to use mobile event view abstraction --- .../places/latestnews/LatestNewsActivity.java | 27 +++++++++---- .../places/latestnews/LatestNewsView.java | 17 ++------ .../places/latestnews/LatestNewsViewImpl.java | 39 +++++-------------- .../latestnews/LatestNewsViewImpl.ui.xml | 21 ---------- 4 files changed, 32 insertions(+), 72 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsViewImpl.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java index ee8bfd9f4f6..66e252a39c3 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java @@ -11,10 +11,12 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; +import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.NewsItemLinkProvider; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsView.Presenter; import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; +import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; @@ -60,17 +62,10 @@ public class LatestNewsActivity extends AbstractActivity implements Presenter, N final LatestNewsView view = new LatestNewsViewImpl(this); panel.setWidget(view.asWidget()); Window.setTitle(place.getTitle()); + view.hideQuickfinder(); view.showNews(place.getNews()); } - @Override - public void gotoEvents() { - clientFactory // - .getNavigator() // - .getEventsNavigation()// - .goToPlace(); - } - @Override public PlaceNavigation getNewsEntryPlaceNavigation(NewsEntryDTO entry) { if (entry instanceof LeaderboardNewsEntryDTO) { @@ -104,4 +99,20 @@ public class LatestNewsActivity extends AbstractActivity implements Presenter, N public DispatchSystem getDispatch() { return clientFactory.getDispatch(); } + + @Override + public PlaceNavigation getRegattaMiniLeaderboardNavigation(String leaderboardName) { + EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); + return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(ctx), null, false); + } + + @Override + public PlaceNavigation getMiniOverallLeaderboardNavigation() { + return clientFactory.getNavigator().getSeriesNavigation(new SeriesMiniOverallLeaderboardPlace(new SeriesContext().withId(getCtx().getEventId())), null, false); + } + + @Override + public PlaceNavigation getMiniLeaderboardNavigation(UUID eventId) { + return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(eventId.toString(), null), null, false); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsView.java index f745eba3c57..ff5356cf659 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsView.java @@ -2,26 +2,15 @@ package com.sap.sailing.gwt.home.mobile.places.latestnews; import java.util.List; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.NewsItemLinkProvider; -import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; -import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; -public interface LatestNewsView { +public interface LatestNewsView extends EventViewBase { - public interface Presenter extends NewsItemLinkProvider { - PlaceNavigation getEventNavigation(); + public interface Presenter extends EventViewBase.Presenter, NewsItemLinkProvider { - void gotoEvents(); - - DispatchSystem getDispatch(); - - EventContext getCtx(); } - Widget asWidget(); - void showNews(List news); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsViewImpl.java index eb33bc1493b..a0d62fc0f57 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsViewImpl.java @@ -1,45 +1,26 @@ package com.sap.sailing.gwt.home.mobile.places.latestnews; import java.util.List; -import java.util.UUID; -import com.google.gwt.core.client.GWT; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; -import com.sap.sailing.gwt.home.mobile.partials.eventheader.EventHeader; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.UpdatesBox; +import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewNewsAction; import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; -public class LatestNewsViewImpl extends Composite implements LatestNewsView { - private static StartPageViewUiBinder uiBinder = GWT.create(StartPageViewUiBinder.class); +public class LatestNewsViewImpl extends AbstractEventView implements LatestNewsView { - interface StartPageViewUiBinder extends UiBinder { - } - - private Presenter currentPresenter; - - @UiField(provided = true) - protected UpdatesBox updatesBoxUi; - @UiField(provided = true) - protected EventHeader eventHeaderUi; - - public LatestNewsViewImpl(Presenter presenter) { - this.currentPresenter = presenter; - RefreshManager refreshManager = new RefreshManager(this, currentPresenter.getDispatch()); - eventHeaderUi = new EventHeader(presenter.getCtx().getEventDTO(), presenter.getEventNavigation()); - updatesBoxUi = new UpdatesBox(presenter, refreshManager); - initWidget(uiBinder.createAndBindUi(this)); - UUID uuid = UUID.fromString(presenter.getCtx().getEventId()); - refreshManager.add(updatesBoxUi, new GetEventOverviewNewsAction(uuid)); + private final UpdatesBox updatesBox; + public LatestNewsViewImpl(LatestNewsView.Presenter presenter) { + super(presenter, false, true); + setViewContent(updatesBox = new UpdatesBox(presenter, refreshManager)); + updatesBox.setDontHide(true); + updatesBox.setDontDrillDown(true); + refreshManager.add(updatesBox, new GetEventOverviewNewsAction(getEventId())); } @Override public void showNews(List news) { - updatesBoxUi.setData(news); + updatesBox.setData(news); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsViewImpl.ui.xml deleted file mode 100644 index 96f41873894..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsViewImpl.ui.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - .headerWrapper { - background-color: #f2f2f2; - padding-bottom: 10px; - } - - -
- -
- -
-
From 3247f73afcb0c9c225f69f1a6e828d87b7fa3334 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 19 Aug 2015 13:35:26 +0200 Subject: [PATCH 067/504] Finished first polar retrieval chain --- .../Polars_StringMessages_de.properties | 3 ++ .../Polars_StringMessages_en.properties | 3 ++ .../sailing/polars/datamining/Activator.java | 13 +++++- .../PolarsDataRetrievalChainDefinitions.java | 30 +++++++++++++- .../PolarCompetitorRetrievalProcessor.java | 33 +++++++++++++++ .../PolarFleetRetrievalProcessor.java | 33 +++++++++++++++ ...larLeaderboardGroupRetrievalProcessor.java | 29 +++++++++++++ .../PolarLeaderboardRetrievalProcessor.java | 31 ++++++++++++++ .../PolarLegRetrievalProcessor.java | 39 ++++++++++++++++++ .../PolarRaceColumnRetrievalProcessor.java | 33 +++++++++++++++ .../data/HasCompetitorPolarContext.java | 18 ++++++++ .../datamining/data/HasFleetPolarContext.java | 20 +++++++++ .../data/HasLeaderboardPolarContext.java | 2 + .../datamining/data/HasLegPolarContext.java | 12 ++++++ .../data/impl/CompetitorWithPolarContext.java | 41 +++++++++++++++++++ .../data/impl/FleetWithPolarContext.java | 39 ++++++++++++++++++ .../data/impl/LegWithPolarContext.java | 27 ++++++++++++ .../SailingServer (No Proxy).launch | 4 +- 18 files changed, 406 insertions(+), 4 deletions(-) create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarCompetitorRetrievalProcessor.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarFleetRetrievalProcessor.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLeaderboardGroupRetrievalProcessor.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLeaderboardRetrievalProcessor.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLegRetrievalProcessor.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarRaceColumnRetrievalProcessor.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasFleetPolarContext.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLegPolarContext.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/FleetWithPolarContext.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LegWithPolarContext.java diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties index e69de29bb2d..506d5e72c3d 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties @@ -0,0 +1,3 @@ +PolarChain1=Polar Sammler 1 +RaceColumn=Rennen +Fleet=Flotte \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties index e69de29bb2d..7e071f9d682 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties @@ -0,0 +1,3 @@ +PolarChain1=Polar Creator 1 +RaceColumn=RaceColumn +Fleet=Fleet \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java index 38cebd5a277..16526326bc6 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java @@ -7,6 +7,12 @@ import java.util.Set; import org.osgi.framework.BundleContext; import com.sap.sailing.datamining.RacingEventServiceProvider; +import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; +import com.sap.sailing.polars.datamining.data.HasFleetPolarContext; +import com.sap.sailing.polars.datamining.data.HasLeaderboardGroupPolarContext; +import com.sap.sailing.polars.datamining.data.HasLeaderboardPolarContext; +import com.sap.sailing.polars.datamining.data.HasLegPolarContext; +import com.sap.sailing.polars.datamining.data.HasRaceColumnPolarContext; import com.sap.sse.datamining.DataMiningBundleService; import com.sap.sse.datamining.DataSourceProvider; import com.sap.sse.datamining.components.AggregationProcessorDefinition; @@ -61,7 +67,12 @@ public class Activator extends AbstractDataMiningActivator implements DataMining @Override public Iterable> getClassesWithMarkedMethods() { Set> internalClasses = new HashSet<>(); - //internalClasses.add(HasTrackedRaceContext.class); + internalClasses.add(HasLeaderboardGroupPolarContext.class); + internalClasses.add(HasLeaderboardPolarContext.class); + internalClasses.add(HasRaceColumnPolarContext.class); + internalClasses.add(HasFleetPolarContext.class); + internalClasses.add(HasCompetitorPolarContext.class); + internalClasses.add(HasLegPolarContext.class); return internalClasses; } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java index 4cec1695899..7cbec8f2c79 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java @@ -3,7 +3,21 @@ package com.sap.sailing.polars.datamining; import java.util.ArrayList; import java.util.Collection; +import com.sap.sailing.polars.datamining.components.PolarCompetitorRetrievalProcessor; +import com.sap.sailing.polars.datamining.components.PolarFleetRetrievalProcessor; +import com.sap.sailing.polars.datamining.components.PolarLeaderboardGroupRetrievalProcessor; +import com.sap.sailing.polars.datamining.components.PolarLeaderboardRetrievalProcessor; +import com.sap.sailing.polars.datamining.components.PolarLegRetrievalProcessor; +import com.sap.sailing.polars.datamining.components.PolarRaceColumnRetrievalProcessor; +import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; +import com.sap.sailing.polars.datamining.data.HasFleetPolarContext; +import com.sap.sailing.polars.datamining.data.HasLeaderboardGroupPolarContext; +import com.sap.sailing.polars.datamining.data.HasLeaderboardPolarContext; +import com.sap.sailing.polars.datamining.data.HasLegPolarContext; +import com.sap.sailing.polars.datamining.data.HasRaceColumnPolarContext; +import com.sap.sailing.server.RacingEventService; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; +import com.sap.sse.datamining.impl.components.SimpleDataRetrieverChainDefinition; public class PolarsDataRetrievalChainDefinitions { @@ -11,7 +25,21 @@ public class PolarsDataRetrievalChainDefinitions { public PolarsDataRetrievalChainDefinitions() { dataRetrieverChainDefinitions = new ArrayList<>(); - //dataRetrieverChainDefinitions.add(e) + DataRetrieverChainDefinition definition1 = new SimpleDataRetrieverChainDefinition( + RacingEventService.class, HasCompetitorPolarContext.class, "PolarChain1"); + definition1.startWith(PolarLeaderboardGroupRetrievalProcessor.class, HasLeaderboardGroupPolarContext.class, + "LeaderboardGroup"); + definition1.addAfter(PolarLeaderboardGroupRetrievalProcessor.class, PolarLeaderboardRetrievalProcessor.class, + HasLeaderboardPolarContext.class, "Leaderboard"); + definition1.addAfter(PolarLeaderboardRetrievalProcessor.class, PolarRaceColumnRetrievalProcessor.class, + HasRaceColumnPolarContext.class, "RaceColumn"); + definition1.addAfter(PolarRaceColumnRetrievalProcessor.class, PolarFleetRetrievalProcessor.class, + HasFleetPolarContext.class, "Fleet"); + definition1.addAfter(PolarFleetRetrievalProcessor.class, PolarLegRetrievalProcessor.class, + HasLegPolarContext.class, "Leg"); + definition1.endWith(PolarLegRetrievalProcessor.class, PolarCompetitorRetrievalProcessor.class, + HasCompetitorPolarContext.class, "Competitor"); + dataRetrieverChainDefinitions.add(definition1); } public Iterable> getDataRetrieverChainDefinitions() { diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarCompetitorRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarCompetitorRetrievalProcessor.java new file mode 100644 index 00000000000..6a280a9762c --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarCompetitorRetrievalProcessor.java @@ -0,0 +1,33 @@ +package com.sap.sailing.polars.datamining.components; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; +import com.sap.sailing.polars.datamining.data.HasLegPolarContext; +import com.sap.sailing.polars.datamining.data.impl.CompetitorWithPolarContext; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; + +public class PolarCompetitorRetrievalProcessor extends AbstractRetrievalProcessor { + + public PolarCompetitorRetrievalProcessor(ExecutorService executor, + Collection> resultReceivers, int retrievalLevel) { + super(HasLegPolarContext.class, HasCompetitorPolarContext.class, executor, resultReceivers, retrievalLevel); + } + + @Override + protected Iterable retrieveData(HasLegPolarContext element) { + TrackedRace trackedRace = element.getTrackedRace(); + Set competitorWithContext = new HashSet<>(); + for (Competitor competitor : trackedRace.getRace().getCompetitors()) { + competitorWithContext.add(new CompetitorWithPolarContext(competitor, trackedRace, element.getLeg())); + } + return competitorWithContext; + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarFleetRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarFleetRetrievalProcessor.java new file mode 100644 index 00000000000..2ba5dc46cac --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarFleetRetrievalProcessor.java @@ -0,0 +1,33 @@ +package com.sap.sailing.polars.datamining.components; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.polars.datamining.data.HasFleetPolarContext; +import com.sap.sailing.polars.datamining.data.HasRaceColumnPolarContext; +import com.sap.sailing.polars.datamining.data.impl.FleetWithPolarContext; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; + +public class PolarFleetRetrievalProcessor extends AbstractRetrievalProcessor { + + public PolarFleetRetrievalProcessor(ExecutorService executor, + Collection> resultReceivers, int retrievalLevel) { + super(HasRaceColumnPolarContext.class, HasFleetPolarContext.class, executor, resultReceivers, retrievalLevel); + } + + @Override + protected Iterable retrieveData(HasRaceColumnPolarContext element) { + Set fleetWithContext = new HashSet<>(); + RaceColumn raceColumn = element.getRaceColumn(); + for (Fleet fleet : raceColumn.getFleets()) { + fleetWithContext.add(new FleetWithPolarContext(fleet, raceColumn)); + } + return fleetWithContext; + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLeaderboardGroupRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLeaderboardGroupRetrievalProcessor.java new file mode 100644 index 00000000000..f825b0c536d --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLeaderboardGroupRetrievalProcessor.java @@ -0,0 +1,29 @@ +package com.sap.sailing.polars.datamining.components; + +import java.util.Collection; +import java.util.concurrent.ExecutorService; +import java.util.stream.Collectors; + +import com.sap.sailing.polars.datamining.data.HasLeaderboardGroupPolarContext; +import com.sap.sailing.polars.datamining.data.impl.LeaderboardGroupWithPolarContext; +import com.sap.sailing.server.RacingEventService; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; + +public class PolarLeaderboardGroupRetrievalProcessor extends AbstractRetrievalProcessor { + + public PolarLeaderboardGroupRetrievalProcessor(ExecutorService executor, + Collection> resultReceivers, int retrievalLevel) { + super(RacingEventService.class, HasLeaderboardGroupPolarContext.class, executor, resultReceivers, retrievalLevel); + } + + @Override + protected Iterable retrieveData(RacingEventService element) { + return element.getLeaderboardGroups() + .values() + .stream() + .map(lg -> new LeaderboardGroupWithPolarContext(lg)) + .collect(Collectors.toSet()); + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLeaderboardRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLeaderboardRetrievalProcessor.java new file mode 100644 index 00000000000..ca97dd87af8 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLeaderboardRetrievalProcessor.java @@ -0,0 +1,31 @@ +package com.sap.sailing.polars.datamining.components; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.domain.leaderboard.Leaderboard; +import com.sap.sailing.polars.datamining.data.HasLeaderboardGroupPolarContext; +import com.sap.sailing.polars.datamining.data.HasLeaderboardPolarContext; +import com.sap.sailing.polars.datamining.data.impl.LeaderboardWithPolarContext; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; + +public class PolarLeaderboardRetrievalProcessor extends AbstractRetrievalProcessor { + + public PolarLeaderboardRetrievalProcessor(ExecutorService executor, + Collection> resultReceivers, int retrievalLevel) { + super(HasLeaderboardGroupPolarContext.class, HasLeaderboardPolarContext.class, executor, resultReceivers, retrievalLevel); + } + + @Override + protected Iterable retrieveData(HasLeaderboardGroupPolarContext element) { + Set leaderboardsWithContext = new HashSet<>(); + for (Leaderboard leaderboard : element.getLeaderboardGroup().getLeaderboards()) { + leaderboardsWithContext.add(new LeaderboardWithPolarContext(leaderboard)); + } + return leaderboardsWithContext; + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLegRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLegRetrievalProcessor.java new file mode 100644 index 00000000000..3de80b6be88 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLegRetrievalProcessor.java @@ -0,0 +1,39 @@ +package com.sap.sailing.polars.datamining.components; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.domain.base.Course; +import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.Leg; +import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.polars.datamining.data.HasFleetPolarContext; +import com.sap.sailing.polars.datamining.data.HasLegPolarContext; +import com.sap.sailing.polars.datamining.data.impl.LegWithPolarContext; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; + +public class PolarLegRetrievalProcessor extends AbstractRetrievalProcessor { + + public PolarLegRetrievalProcessor(ExecutorService executor, + Collection> resultReceivers, int retrievalLevel) { + super(HasFleetPolarContext.class, HasLegPolarContext.class, executor, resultReceivers, retrievalLevel); + } + + @Override + protected Iterable retrieveData(HasFleetPolarContext element) { + TrackedRace trackedRace = element.getTrackedRace(); + Set legWithContext = new HashSet<>(); + Fleet fleet = element.getFleet(); + RaceColumn raceColumn = element.getRaceColumn(); + Course course = raceColumn.getRaceDefinition(fleet).getCourse(); + for (Leg leg : course.getLegs()) { + legWithContext.add(new LegWithPolarContext(leg, trackedRace)); + } + return legWithContext; + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarRaceColumnRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarRaceColumnRetrievalProcessor.java new file mode 100644 index 00000000000..42a071fe075 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarRaceColumnRetrievalProcessor.java @@ -0,0 +1,33 @@ +package com.sap.sailing.polars.datamining.components; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.domain.leaderboard.Leaderboard; +import com.sap.sailing.polars.datamining.data.HasLeaderboardPolarContext; +import com.sap.sailing.polars.datamining.data.HasRaceColumnPolarContext; +import com.sap.sailing.polars.datamining.data.impl.RaceColumnWithPolarContext; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; + +public class PolarRaceColumnRetrievalProcessor extends AbstractRetrievalProcessor { + + public PolarRaceColumnRetrievalProcessor(ExecutorService executor, + Collection> resultReceivers, int retrievalLevel) { + super(HasLeaderboardPolarContext.class, HasRaceColumnPolarContext.class, executor, resultReceivers, retrievalLevel); + } + + @Override + protected Iterable retrieveData(HasLeaderboardPolarContext element) { + Set raceColumnWithContext = new HashSet<>(); + Leaderboard leaderboard = element.getLeaderboard(); + for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { + raceColumnWithContext.add(new RaceColumnWithPolarContext(raceColumn)); + } + return raceColumnWithContext; + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java new file mode 100644 index 00000000000..e09804693cd --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java @@ -0,0 +1,18 @@ +package com.sap.sailing.polars.datamining.data; + +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.Leg; +import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; +import com.sap.sailing.domain.tracking.TrackedRace; + +public interface HasCompetitorPolarContext { + + Competitor getCompetitor(); + + TrackedRace getTrackedRace(); + + Leg getLeg(); + + TrackedLegOfCompetitor getTrackedLegOfCompetitor(); + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasFleetPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasFleetPolarContext.java new file mode 100644 index 00000000000..3ae3306d959 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasFleetPolarContext.java @@ -0,0 +1,20 @@ +package com.sap.sailing.polars.datamining.data; + +import com.sap.sailing.domain.base.BoatClass; +import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.datamining.shared.annotations.Connector; + +public interface HasFleetPolarContext { + + Fleet getFleet(); + + RaceColumn getRaceColumn(); + + TrackedRace getTrackedRace(); + + @Connector(messageKey="BoatClass") + BoatClass getBoatClass(); + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardPolarContext.java index d9d5c0cabd9..62836c38b31 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardPolarContext.java @@ -1,9 +1,11 @@ package com.sap.sailing.polars.datamining.data; import com.sap.sailing.domain.leaderboard.Leaderboard; +import com.sap.sse.datamining.shared.annotations.Connector; public interface HasLeaderboardPolarContext { + @Connector(messageKey="Leaderboard") Leaderboard getLeaderboard(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLegPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLegPolarContext.java new file mode 100644 index 00000000000..8944b08f143 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLegPolarContext.java @@ -0,0 +1,12 @@ +package com.sap.sailing.polars.datamining.data; + +import com.sap.sailing.domain.base.Leg; +import com.sap.sailing.domain.tracking.TrackedRace; + +public interface HasLegPolarContext { + + Leg getLeg(); + + TrackedRace getTrackedRace(); + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java new file mode 100644 index 00000000000..261b18c76a7 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java @@ -0,0 +1,41 @@ +package com.sap.sailing.polars.datamining.data.impl; + +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.Leg; +import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; + +public class CompetitorWithPolarContext implements HasCompetitorPolarContext { + + private final Competitor competitor; + private final TrackedRace trackedRace; + private final Leg leg; + + public CompetitorWithPolarContext(Competitor competitor, TrackedRace trackedRace, Leg leg) { + this.competitor = competitor; + this.trackedRace = trackedRace; + this.leg = leg; + } + + @Override + public Competitor getCompetitor() { + return competitor; + } + + @Override + public TrackedRace getTrackedRace() { + return trackedRace; + } + + @Override + public Leg getLeg() { + return leg; + } + + @Override + public TrackedLegOfCompetitor getTrackedLegOfCompetitor() { + return trackedRace.getTrackedLeg(competitor, leg); + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/FleetWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/FleetWithPolarContext.java new file mode 100644 index 00000000000..2cf7d8895ee --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/FleetWithPolarContext.java @@ -0,0 +1,39 @@ +package com.sap.sailing.polars.datamining.data.impl; + +import com.sap.sailing.domain.base.BoatClass; +import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.polars.datamining.data.HasFleetPolarContext; + +public class FleetWithPolarContext implements HasFleetPolarContext { + + private final Fleet fleet; + private final RaceColumn raceColumn; + + public FleetWithPolarContext(Fleet fleet, RaceColumn raceColumn) { + this.fleet = fleet; + this.raceColumn = raceColumn; + } + + @Override + public Fleet getFleet() { + return fleet; + } + + @Override + public RaceColumn getRaceColumn() { + return raceColumn; + } + + @Override + public TrackedRace getTrackedRace() { + return raceColumn.getTrackedRace(fleet); + } + + @Override + public BoatClass getBoatClass() { + return getTrackedRace().getRace().getBoatClass(); + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LegWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LegWithPolarContext.java new file mode 100644 index 00000000000..937a067783d --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LegWithPolarContext.java @@ -0,0 +1,27 @@ +package com.sap.sailing.polars.datamining.data.impl; + +import com.sap.sailing.domain.base.Leg; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.polars.datamining.data.HasLegPolarContext; + +public class LegWithPolarContext implements HasLegPolarContext { + + private final Leg leg; + private final TrackedRace trackedRace; + + public LegWithPolarContext(Leg leg, TrackedRace trackedRace) { + this.leg = leg; + this.trackedRace = trackedRace; + } + + @Override + public Leg getLeg() { + return leg; + } + + @Override + public TrackedRace getTrackedRace() { + return trackedRace; + } + +} diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy).launch b/java/com.sap.sailing.server/SailingServer (No Proxy).launch index 930ad11ccae..a826e010490 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy).launch @@ -30,9 +30,9 @@ - + - + From a7ea12b32a86e398991f4459c444f530a42ca7e7 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 19 Aug 2015 13:53:40 +0200 Subject: [PATCH 068/504] Added more dimensions --- .../stringmessages/Polars_StringMessages_de.properties | 2 +- .../stringmessages/Polars_StringMessages_en.properties | 2 +- .../polars/datamining/data/HasCompetitorPolarContext.java | 2 ++ .../sailing/polars/datamining/data/HasFleetPolarContext.java | 1 + .../datamining/data/HasLeaderboardGroupPolarContext.java | 2 ++ .../sailing/polars/datamining/data/HasLegPolarContext.java | 4 ++++ .../polars/datamining/data/HasRaceColumnPolarContext.java | 2 ++ .../polars/datamining/data/impl/LegWithPolarContext.java | 5 +++++ 8 files changed, 18 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties index 506d5e72c3d..f0e349c1ce8 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties @@ -1,3 +1,3 @@ PolarChain1=Polar Sammler 1 RaceColumn=Rennen -Fleet=Flotte \ No newline at end of file +LegIndex=Schenkel Index \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties index 7e071f9d682..28263fd7dda 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties @@ -1,3 +1,3 @@ PolarChain1=Polar Creator 1 RaceColumn=RaceColumn -Fleet=Fleet \ No newline at end of file +LegIndex=Leg Index \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java index e09804693cd..2e93db4a541 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java @@ -4,9 +4,11 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.datamining.shared.annotations.Connector; public interface HasCompetitorPolarContext { + @Connector(messageKey="Competitor") Competitor getCompetitor(); TrackedRace getTrackedRace(); diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasFleetPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasFleetPolarContext.java index 3ae3306d959..a0032fd31f7 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasFleetPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasFleetPolarContext.java @@ -8,6 +8,7 @@ import com.sap.sse.datamining.shared.annotations.Connector; public interface HasFleetPolarContext { + @Connector(messageKey="Fleet") Fleet getFleet(); RaceColumn getRaceColumn(); diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardGroupPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardGroupPolarContext.java index b24b9c3a252..a35cbc9da0e 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardGroupPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardGroupPolarContext.java @@ -1,9 +1,11 @@ package com.sap.sailing.polars.datamining.data; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; +import com.sap.sse.datamining.shared.annotations.Connector; public interface HasLeaderboardGroupPolarContext { + @Connector(messageKey="LeaderboardGroup") LeaderboardGroup getLeaderboardGroup(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLegPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLegPolarContext.java index 8944b08f143..40114722a07 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLegPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLegPolarContext.java @@ -2,11 +2,15 @@ package com.sap.sailing.polars.datamining.data; import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.datamining.shared.annotations.Dimension; public interface HasLegPolarContext { Leg getLeg(); TrackedRace getTrackedRace(); + + @Dimension(messageKey="LegIndex") + Integer getLegIndex(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasRaceColumnPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasRaceColumnPolarContext.java index 8073f428a63..d324ffdb814 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasRaceColumnPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasRaceColumnPolarContext.java @@ -1,9 +1,11 @@ package com.sap.sailing.polars.datamining.data; import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sse.datamining.shared.annotations.Connector; public interface HasRaceColumnPolarContext { + @Connector(messageKey="RaceColumn") RaceColumn getRaceColumn(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LegWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LegWithPolarContext.java index 937a067783d..311670cb633 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LegWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LegWithPolarContext.java @@ -24,4 +24,9 @@ public class LegWithPolarContext implements HasLegPolarContext { return trackedRace; } + @Override + public Integer getLegIndex() { + return leg.getZeroBasedIndexOfStartWaypoint(); + } + } From 7e93605fdb5cfab3d62a14acf3527573b2157809 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 19 Aug 2015 14:47:09 +0200 Subject: [PATCH 069/504] Added example aggregator in polar data mining bundle --- .../META-INF/MANIFEST.MF | 4 +- .../Polars_StringMessages_de.properties | 4 +- .../Polars_StringMessages_en.properties | 4 +- .../sailing/polars/datamining/Activator.java | 3 +- .../PolarLegRetrievalProcessor.java | 13 +++-- .../PolarDataAggregationProcessor.java | 50 +++++++++++++++++++ .../data/HasCompetitorPolarContext.java | 5 +- .../datamining/data/PolarStatistic.java | 7 +++ .../data/impl/CompetitorWithPolarContext.java | 6 +-- .../data/impl/PolarStatisticImpl.java | 48 ++++++++++++++++++ 10 files changed, 131 insertions(+), 13 deletions(-) create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/PolarStatistic.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/PolarStatisticImpl.java diff --git a/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF b/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF index ea501f09578..a6706cc0692 100644 --- a/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF @@ -12,6 +12,8 @@ Require-Bundle: org.eclipse.osgi;bundle-version="3.10.1", com.sap.sailing.datamining, com.sap.sailing.server;bundle-version="1.0.0", com.sap.sse.common;bundle-version="1.0.0", - com.sap.sailing.domain;bundle-version="1.0.0" + com.sap.sailing.domain;bundle-version="1.0.0", + com.sap.sailing.domain.shared.android, + com.sap.sailing.domain.common;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties index f0e349c1ce8..a5e42c3a60d 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties @@ -1,3 +1,5 @@ PolarChain1=Polar Sammler 1 RaceColumn=Rennen -LegIndex=Schenkel Index \ No newline at end of file +LegIndex=Schenkel Index +PolarData=Polardaten +Polars=Polare \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties index 28263fd7dda..f9c436296a4 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties @@ -1,3 +1,5 @@ PolarChain1=Polar Creator 1 RaceColumn=RaceColumn -LegIndex=Leg Index \ No newline at end of file +LegIndex=Leg Index +PolarData=Polar Data +Polars=Polars \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java index 16526326bc6..662fbf6ee2b 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java @@ -7,6 +7,7 @@ import java.util.Set; import org.osgi.framework.BundleContext; import com.sap.sailing.datamining.RacingEventServiceProvider; +import com.sap.sailing.polars.datamining.components.aggregators.PolarDataAggregationProcessor; import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; import com.sap.sailing.polars.datamining.data.HasFleetPolarContext; import com.sap.sailing.polars.datamining.data.HasLeaderboardGroupPolarContext; @@ -93,7 +94,7 @@ public class Activator extends AbstractDataMiningActivator implements DataMining @Override public Iterable> getAggregationProcessorDefinitions() { HashSet> aggregators = new HashSet<>(); - //aggregators.add(ParallelTrueSumAggregationProcessor.getDefinition()); + aggregators.add(PolarDataAggregationProcessor.getDefinition()); return aggregators; } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLegRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLegRetrievalProcessor.java index 3de80b6be88..01ced1a7cf2 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLegRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLegRetrievalProcessor.java @@ -9,6 +9,7 @@ import com.sap.sailing.domain.base.Course; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.polars.datamining.data.HasFleetPolarContext; import com.sap.sailing.polars.datamining.data.HasLegPolarContext; @@ -29,10 +30,14 @@ public class PolarLegRetrievalProcessor extends AbstractRetrievalProcessor legWithContext = new HashSet<>(); Fleet fleet = element.getFleet(); RaceColumn raceColumn = element.getRaceColumn(); - Course course = raceColumn.getRaceDefinition(fleet).getCourse(); - for (Leg leg : course.getLegs()) { - legWithContext.add(new LegWithPolarContext(leg, trackedRace)); - } + + RaceDefinition raceDefinition = raceColumn.getRaceDefinition(fleet); + if (raceDefinition != null) { + Course course = raceDefinition.getCourse(); + for (Leg leg : course.getLegs()) { + legWithContext.add(new LegWithPolarContext(leg, trackedRace)); + } + } return legWithContext; } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java new file mode 100644 index 00000000000..e8ae83a4291 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java @@ -0,0 +1,50 @@ +package com.sap.sailing.polars.datamining.components.aggregators; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.polars.datamining.data.PolarStatistic; +import com.sap.sse.datamining.components.AggregationProcessorDefinition; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.GroupedDataEntry; +import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefinition; +import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelGroupedDataStoringAggregationProcessor; +import com.sap.sse.datamining.shared.GroupKey; + +public class PolarDataAggregationProcessor extends AbstractParallelGroupedDataStoringAggregationProcessor { + + private static final String POLARS_MESSAGE_KEY = "Polars"; + //FIXME!!! Replace Integer with actual result data type + private final Map countMap = new HashMap<>(); + + public PolarDataAggregationProcessor(ExecutorService executor, + Collection, ?>> resultReceivers) { + super(executor, resultReceivers, POLARS_MESSAGE_KEY); + } + + private static final AggregationProcessorDefinition DEFINITION = + new SimpleAggregationProcessorDefinition<>(PolarStatistic.class, Integer.class, POLARS_MESSAGE_KEY, PolarDataAggregationProcessor.class); + + public static AggregationProcessorDefinition getDefinition() { + return DEFINITION; + } + + @Override + protected void storeElement(GroupedDataEntry element) { + //FIXME do actual polar regression here + int count = element.getDataEntry().getFixCount(); + Integer currentCount = countMap.get(element.getKey()); + if (currentCount == null) { + currentCount = 0; + } + countMap.put(element.getKey(), currentCount + count); + } + + @Override + protected Map aggregateResult() { + return countMap; + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java index 2e93db4a541..8a2cf9d2dac 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java @@ -2,9 +2,9 @@ package com.sap.sailing.polars.datamining.data; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Leg; -import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.datamining.shared.annotations.Connector; +import com.sap.sse.datamining.shared.annotations.Statistic; public interface HasCompetitorPolarContext { @@ -15,6 +15,7 @@ public interface HasCompetitorPolarContext { Leg getLeg(); - TrackedLegOfCompetitor getTrackedLegOfCompetitor(); + @Statistic(messageKey="PolarData") + PolarStatistic getPolarStatistics(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/PolarStatistic.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/PolarStatistic.java new file mode 100644 index 00000000000..354830b6938 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/PolarStatistic.java @@ -0,0 +1,7 @@ +package com.sap.sailing.polars.datamining.data; + +public interface PolarStatistic { + + int getFixCount(); + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java index 261b18c76a7..0f8f12d16b2 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java @@ -2,9 +2,9 @@ package com.sap.sailing.polars.datamining.data.impl; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Leg; -import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; +import com.sap.sailing.polars.datamining.data.PolarStatistic; public class CompetitorWithPolarContext implements HasCompetitorPolarContext { @@ -34,8 +34,8 @@ public class CompetitorWithPolarContext implements HasCompetitorPolarContext { } @Override - public TrackedLegOfCompetitor getTrackedLegOfCompetitor() { - return trackedRace.getTrackedLeg(competitor, leg); + public PolarStatistic getPolarStatistics() { + return new PolarStatisticImpl(trackedRace, competitor, leg); } } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/PolarStatisticImpl.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/PolarStatisticImpl.java new file mode 100644 index 00000000000..3cfce782c36 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/PolarStatisticImpl.java @@ -0,0 +1,48 @@ +package com.sap.sailing.polars.datamining.data.impl; + +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.Leg; +import com.sap.sailing.domain.common.tracking.GPSFixMoving; +import com.sap.sailing.domain.tracking.GPSFixTrack; +import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.polars.datamining.data.PolarStatistic; +import com.sap.sse.common.TimePoint; + +public class PolarStatisticImpl implements PolarStatistic { + + private final TrackedRace trackedRace; + private final Competitor competitor; + private final Leg leg; + + public PolarStatisticImpl(TrackedRace trackedRace, Competitor competitor, Leg leg) { + this.trackedRace = trackedRace; + this.competitor = competitor; + this.leg = leg; + } + + @Override + public int getFixCount() { + GPSFixTrack track = trackedRace.getTrack(competitor); + TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(competitor, leg); + TimePoint startTime = trackedLeg.getStartTime(); + TimePoint finishTime = trackedLeg.getFinishTime(); + int count = 0; + if (startTime != null && finishTime != null) { + track.lockForRead(); + + // FIXME just return the fixes + try { + Iterable fixes = track.getFixes(startTime, true, finishTime, false); + + for (GPSFixMoving fix : fixes) { + count++; + } + } finally { + track.unlockAfterRead(); + } + } + return count; + } + +} From 28cbd183bfbe429433041ee1252ec06bae12c136 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 19 Aug 2015 15:29:30 +0200 Subject: [PATCH 070/504] Now using more non-data storing abstract aggregation processor --- .../aggregators/PolarDataAggregationProcessor.java | 8 ++++---- .../polars/mining/AngleClusterPolarClusterKey.java | 2 -- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java index e8ae83a4291..b85bce2ccda 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java @@ -10,10 +10,10 @@ import com.sap.sse.datamining.components.AggregationProcessorDefinition; import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.impl.components.GroupedDataEntry; import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefinition; -import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelGroupedDataStoringAggregationProcessor; +import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelGroupedDataAggregationProcessor; import com.sap.sse.datamining.shared.GroupKey; -public class PolarDataAggregationProcessor extends AbstractParallelGroupedDataStoringAggregationProcessor { +public class PolarDataAggregationProcessor extends AbstractParallelGroupedDataAggregationProcessor { private static final String POLARS_MESSAGE_KEY = "Polars"; //FIXME!!! Replace Integer with actual result data type @@ -32,7 +32,7 @@ public class PolarDataAggregationProcessor extends AbstractParallelGroupedDataSt } @Override - protected void storeElement(GroupedDataEntry element) { + protected void handleElement(GroupedDataEntry element) { //FIXME do actual polar regression here int count = element.getDataEntry().getFixCount(); Integer currentCount = countMap.get(element.getKey()); @@ -43,7 +43,7 @@ public class PolarDataAggregationProcessor extends AbstractParallelGroupedDataSt } @Override - protected Map aggregateResult() { + protected Map getResult() { return countMap; } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleClusterPolarClusterKey.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleClusterPolarClusterKey.java index aace77f0f0a..f94e02116bc 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleClusterPolarClusterKey.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleClusterPolarClusterKey.java @@ -2,11 +2,9 @@ package com.sap.sailing.polars.mining; import com.sap.sailing.domain.common.Bearing; import com.sap.sse.datamining.data.Cluster; -import com.sap.sse.datamining.shared.annotations.Dimension; public interface AngleClusterPolarClusterKey extends BasePolarClusterKey { - @Dimension(messageKey = "angleCluster") Cluster getAngleCluster(); } From d6dd620a79f95b2acc93526e41bf0b0dd1eae34c Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 19 Aug 2015 17:16:36 +0200 Subject: [PATCH 071/504] Extended features of abstraction for mobile event views --- .../mobile/places/event/AbstractEventView.java | 17 +++++++++++++++++ .../places/event/AbstractEventView.ui.xml | 3 +-- .../home/mobile/places/event/EventViewBase.java | 4 ++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java index 6e55ab3072b..99bbed793b3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java @@ -4,6 +4,7 @@ import java.util.Collection; import java.util.UUID; import com.google.gwt.core.client.GWT; +import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; @@ -16,6 +17,7 @@ import com.sap.sailing.gwt.home.mobile.partials.simpleinfoblock.SimpleInfoBlock; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; +import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; @@ -62,6 +64,10 @@ public abstract class AbstractEventView

exten return currentPresenter.getCtx().getRegattaId(); } + protected boolean isMultiRegattaEvent() { + return currentPresenter.getCtx().getEventDTO().getType() == EventType.MULTI_REGATTA; + } + protected void setQuickFinderValues(Quickfinder quickfinder, Collection regattaMetadatas) { QuickfinderPresenter.getForRegattaLeaderboards(quickfinder, currentPresenter, regattaMetadatas); } @@ -81,4 +87,15 @@ public abstract class AbstractEventView

exten layout.quickFinderUi.removeFromParent(); } + @Override + public void setSailorInfos(String description, String buttonLabel, String url) { + layout.simpleInfoUi.setDescription(SafeHtmlUtils.fromString(description.replace("\n", " "))); + layout.simpleInfoUi.setAction(buttonLabel, url); + } + + @Override + public void setSeriesNavigation(String buttonLabel, PlaceNavigation placeNavigation) { + layout.simpleInfoUi.setAction(buttonLabel, placeNavigation); + } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.ui.xml index 0e5330c01f4..3e1ee552c1a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.ui.xml @@ -1,7 +1,6 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" xmlns:mp="urn:import:com.sap.sailing.gwt.home.mobile.partials"> .headerWrapper { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java index 398ed38d815..27fb0231c3b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java @@ -18,6 +18,10 @@ public interface EventViewBase extends IsWidget { void setQuickFinderValues(String seriesName, Collection eventsOfSeries); void hideQuickfinder(); + + void setSailorInfos(String description, String buttonLabel, String url); + + void setSeriesNavigation(String buttonLabel, PlaceNavigation placeNavigation); public interface Presenter extends RegattaLeaderboardNavigationProvider, SeriesLeaderboardNavigationProvider { From 01b81ba892708ad60668765d0aea8bf0450b8b43 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 19 Aug 2015 17:19:15 +0200 Subject: [PATCH 072/504] Refactored EventViewImpl to use mobile event view abstraction --- .../mobile/places/event/EventActivity.java | 6 ++ .../home/mobile/places/event/EventView.java | 26 +----- .../mobile/places/event/EventViewImpl.java | 90 +++++-------------- .../mobile/places/event/EventViewImpl.ui.xml | 26 +----- 4 files changed, 33 insertions(+), 115 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java index 40fb483374c..b2b4e820172 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java @@ -15,6 +15,7 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; +import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; @@ -185,4 +186,9 @@ public class EventActivity extends AbstractActivity implements Presenter { EventContext ctx = new EventContext(getCtx()).withRegattaId(regattaId).withRegattaAnalyticsManager(null); return clientFactory.getNavigator().getEventNavigation(new RegattaRacesPlace(ctx), null, false); } + + @Override + public PlaceNavigation getEventNavigation() { + return clientFactory.getNavigator().getEventNavigation(new EventDefaultPlace(getCtx()), null, false); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java index 0ed3de6c7d1..721f99d00bc 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java @@ -2,38 +2,16 @@ package com.sap.sailing.gwt.home.mobile.places.event; import java.util.Collection; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.NewsItemLinkProvider; -import com.sap.sailing.gwt.home.mobile.places.RegattaLeaderboardNavigationProvider; import com.sap.sailing.gwt.home.mobile.places.RegattaRacesNavigationProvider; -import com.sap.sailing.gwt.home.mobile.places.SeriesLeaderboardNavigationProvider; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; -import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; -import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; -import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; -public interface EventView { - - Widget asWidget(); - - void setSailorInfos(String description, String buttonLabel, String url); - - void setSeriesNavigation(String buttonLabel, PlaceNavigation placeNavigation); - - void setQuickFinderValues(Collection regattaMetadatas); - - void setQuickFinderValues(String seriesName, Collection eventsOfSeries); - - void hideQuickfinder(); +public interface EventView extends EventViewBase { void setMediaForImpressions(int nrOfImages, int nrOfVideos, Collection images); - public interface Presenter extends NewsItemLinkProvider, RegattaLeaderboardNavigationProvider, - RegattaRacesNavigationProvider, SeriesLeaderboardNavigationProvider { - EventContext getCtx(); - DispatchSystem getDispatch(); + public interface Presenter extends EventViewBase .Presenter, NewsItemLinkProvider, RegattaRacesNavigationProvider { String getRaceViewerURL(String regattaName, String trackedRaceName); PlaceNavigation getMediaPageNavigation(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java index e19f65fa9b8..fe241ed2273 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java @@ -1,132 +1,84 @@ package com.sap.sailing.gwt.home.mobile.places.event; import java.util.Collection; -import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Display; -import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; -import com.sap.sailing.gwt.home.mobile.partials.eventheader.EventHeader; import com.sap.sailing.gwt.home.mobile.partials.impressions.Impressions; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; -import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatus; -import com.sap.sailing.gwt.home.mobile.partials.simpleinfoblock.SimpleInfoBlock; import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBox; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.UpdatesBox; -import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; import com.sap.sailing.gwt.home.mobile.places.event.overview.EventOverviewStage; -import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewNewsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewStageAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventStatisticsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattasAndLiveRacesForEventAction; -import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; -import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; -import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; -import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; import com.sap.sailing.gwt.ui.shared.general.EventState; import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; -public class EventViewImpl extends Composite implements EventView { +public class EventViewImpl extends AbstractEventView implements EventView { + private static final StringMessages MSG = StringMessages.INSTANCE; private static StartPageViewUiBinder uiBinder = GWT.create(StartPageViewUiBinder.class); interface StartPageViewUiBinder extends UiBinder { } - @UiField(provided = true) EventHeader eventHeaderUi; - @UiField Quickfinder quickFinderUi; - @UiField SimpleInfoBlock simpleInfoUi; @UiField(provided = true) EventOverviewStage overviewStageUi; @UiField SimplePanel listContentUi; @UiField Impressions impressionsUi; @UiField(provided = true) StatisticsBox statisticsBoxUi; @UiField(provided = true) UpdatesBox updatesBoxUi; - private final Presenter currentPresenter; - private final RefreshManager refreshManager; - - public EventViewImpl(Presenter presenter) { - this.currentPresenter = presenter; - this.refreshManager = new RefreshManager(this, currentPresenter.getDispatch()); - EventViewDTO event = currentPresenter.getCtx().getEventDTO(); - eventHeaderUi = new EventHeader(event); - this.setupOverviewStage(event.getId()); - this.setupUpdateBox(event.getId()); - this.setupStatisticsBox(event); - initWidget(uiBinder.createAndBindUi(this)); - this.setupListContent(event); + public EventViewImpl(EventView.Presenter presenter) { + super(presenter, false, false); + this.setupOverviewStage(); + this.setupUpdateBox(); + this.setupStatisticsBox(); + setViewContent(uiBinder.createAndBindUi(this)); + this.setupListContent(); impressionsUi.getElement().getStyle().setDisplay(Display.NONE); } - private void setupOverviewStage(UUID eventId) { + private void setupOverviewStage() { overviewStageUi = new EventOverviewStage(currentPresenter); - refreshManager.add(overviewStageUi, new GetEventOverviewStageAction(eventId)); + refreshManager.add(overviewStageUi, new GetEventOverviewStageAction(getEventId())); } - private void setupListContent(EventViewDTO event) { - String regattaId = currentPresenter.getCtx().getRegattaId(); - if (event.getType() == EventType.MULTI_REGATTA) { + private void setupListContent() { + if (isMultiRegattaEvent()) { RegattaStatus regattaStatus = new RegattaStatus(currentPresenter); listContentUi.add(regattaStatus); - refreshManager.add(regattaStatus, new GetRegattasAndLiveRacesForEventAction(event.getId())); + refreshManager.add(regattaStatus, new GetRegattasAndLiveRacesForEventAction(getEventId())); } else { MinileaderboardBox miniLeaderboard = new MinileaderboardBox(false); - miniLeaderboard.setAction(MSG.showAll(), currentPresenter.getRegattaMiniLeaderboardNavigation(regattaId)); + miniLeaderboard.setAction(MSG.showAll(), currentPresenter.getRegattaMiniLeaderboardNavigation(getRegattaId())); listContentUi.add(miniLeaderboard); - refreshManager.add(miniLeaderboard, new GetMiniLeaderbordAction(event.getId(), regattaId, 3)); + refreshManager.add(miniLeaderboard, new GetMiniLeaderbordAction(getEventId(), getRegattaId(), 3)); } } - private void setupUpdateBox(UUID eventId) { + private void setupUpdateBox() { updatesBoxUi = new UpdatesBox(currentPresenter, refreshManager); if (currentPresenter.getCtx().getEventDTO().getState() == EventState.RUNNING) { - refreshManager.add(updatesBoxUi, new GetEventOverviewNewsAction(eventId, 2)); + refreshManager.add(updatesBoxUi, new GetEventOverviewNewsAction(getEventId(), 2)); } else { updatesBoxUi.removeFromParent(); } } - private void setupStatisticsBox(EventViewDTO event) { - statisticsBoxUi = new StatisticsBox(event.getType() == EventType.MULTI_REGATTA); - refreshManager.add(statisticsBoxUi, new GetEventStatisticsAction(event.getId())); + private void setupStatisticsBox() { + statisticsBoxUi = new StatisticsBox(isMultiRegattaEvent()); + refreshManager.add(statisticsBoxUi, new GetEventStatisticsAction(getEventId())); } - @Override - public void setSailorInfos(String description, String buttonLabel, String url) { - simpleInfoUi.setDescription(SafeHtmlUtils.fromString(description.replace("\n", " "))); - simpleInfoUi.setAction(buttonLabel, url); - } - - @Override - public void setSeriesNavigation(String buttonLabel, PlaceNavigation placeNavigation) { - simpleInfoUi.setAction(buttonLabel, placeNavigation); - } - - @Override - public void setQuickFinderValues(Collection regattaMetadatas) { - QuickfinderPresenter.getForRegattaLeaderboards(quickFinderUi, currentPresenter, regattaMetadatas); - } - - @Override - public void setQuickFinderValues(String seriesName, Collection eventsOfSeries) { - QuickfinderPresenter.getForSeriesLeaderboards(quickFinderUi, seriesName, currentPresenter, eventsOfSeries); - } - - @Override - public void hideQuickfinder() { - quickFinderUi.removeFromParent(); - } - @Override public void setMediaForImpressions(int nrOfImages, int nrOfVideos, Collection images) { impressionsUi.getElement().getStyle().setDisplay(Display.BLOCK); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.ui.xml index ae1c4c1d005..4eb6d751cbd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.ui.xml @@ -1,27 +1,9 @@ - - - - .headerWrapper { - background-color: #f2f2f2; - padding-bottom: 10px; - } - + + -

- - - -
- + From 41de994a5c008e8dfefe20d3dc7e1696973181f5 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 19 Aug 2015 18:09:46 +0200 Subject: [PATCH 073/504] Merged abstracted event views activity proxies in to one --- .../home/mobile/app/MobileActivityMapper.java | 12 ----- .../mobile/places/event/EventActivity.java | 27 ----------- .../places/event/EventActivityProxy.java | 47 ++++++++++++++++++- .../places/latestnews/LatestNewsActivity.java | 28 ----------- .../latestnews/LatestNewsActivityProxy.java | 26 ---------- .../MiniLeaderboardActivity.java | 29 ------------ .../MiniLeaderboardActivityProxy.java | 26 ---------- .../mobile/places/races/RacesActivity.java | 29 ------------ .../places/races/RacesActivityProxy.java | 27 ----------- 9 files changed, 46 insertions(+), 205 deletions(-) delete mode 100755 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivityProxy.java delete mode 100755 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivityProxy.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivityProxy.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java index ceaafc1c3db..609fbcd8c74 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java @@ -5,18 +5,12 @@ import com.google.gwt.activity.shared.ActivityMapper; import com.google.gwt.core.client.GWT; import com.google.gwt.place.shared.Place; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; import com.sap.sailing.gwt.home.mobile.places.event.EventActivityProxy; import com.sap.sailing.gwt.home.mobile.places.events.EventsActivityProxy; -import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsActivityProxy; -import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardActivityProxy; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; -import com.sap.sailing.gwt.home.mobile.places.races.RacesActivityProxy; import com.sap.sailing.gwt.home.mobile.places.series.SeriesActivityProxy; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardActivityProxy; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; @@ -46,12 +40,6 @@ public class MobileActivityMapper implements ActivityMapper { return new StartActivityProxy((StartPlace) place, clientFactory); } else if (place instanceof EventsPlace) { return new EventsActivityProxy((EventsPlace) place, clientFactory); - } else if (place instanceof RegattaRacesPlace) { - return new RacesActivityProxy((RegattaRacesPlace) place, clientFactory); - } else if (place instanceof MiniLeaderboardPlace) { - return new MiniLeaderboardActivityProxy((MiniLeaderboardPlace) place, clientFactory); - } else if (place instanceof LatestNewsPlace) { - return new LatestNewsActivityProxy((LatestNewsPlace) place, clientFactory); } else if (place instanceof AbstractEventPlace) { return new EventActivityProxy((AbstractEventPlace) place, clientFactory); } else if (place instanceof SeriesMiniOverallLeaderboardPlace) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java index b2b4e820172..fb527a67de4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java @@ -12,7 +12,6 @@ import com.google.gwt.core.shared.GWT; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; @@ -28,7 +27,6 @@ import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniO import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; import com.sap.sailing.gwt.ui.shared.dispatch.news.LeaderboardNewsEntryDTO; import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; @@ -49,31 +47,6 @@ public class EventActivity extends AbstractActivity implements Presenter { @Override public void start(final AcceptsOneWidget panel, final EventBus eventBus) { - if(place.getCtx().getEventDTO() == null) { - currentEventUUId = UUID.fromString(place.getCtx().getEventId()); - - clientFactory.getDispatch().execute(new GetEventViewAction(currentEventUUId), new AsyncCallback() { - @Override - public void onSuccess(final EventViewDTO event) { - place.getCtx().updateContext(event); - initUi(panel, eventBus); - } - - @Override - public void onFailure(Throwable caught) { - // TODO @FM: extract text? - ErrorPlace errorPlace = new ErrorPlace("Error while loading the event with service getEventViewById()"); - // TODO @FM: reload sinnvoll hier? - errorPlace.setComingFrom(place); - clientFactory.getPlaceController().goTo(errorPlace); - } - }); - } else { - initUi(panel, eventBus); - } - } - - private void initUi(final AcceptsOneWidget panel, EventBus eventBus) { final EventView view = new EventViewImpl(this); panel.setWidget(view.asWidget()); EventViewDTO event = getCtx().getEventDTO(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java index d360ae8ed87..66dde3319cb 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java @@ -1,8 +1,21 @@ package com.sap.sailing.gwt.home.mobile.places.event; +import java.util.UUID; + import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; +import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsActivity; +import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; +import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardActivity; +import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; +import com.sap.sailing.gwt.home.mobile.places.races.RacesActivity; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; +import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; public class EventActivityProxy extends AbstractActivityProxy { @@ -17,10 +30,42 @@ public class EventActivityProxy extends AbstractActivityProxy { @Override protected void startAsync() { + if(currentPlace.getCtx().getEventDTO() != null) { + afterEventLoad(); + return; + } + UUID eventId = UUID.fromString(currentPlace.getCtx().getEventId()); + clientFactory.getDispatch().execute(new GetEventViewAction(eventId), new AsyncCallback() { + @Override + public void onSuccess(final EventViewDTO event) { + currentPlace.getCtx().updateContext(event); + afterEventLoad(); + } + + @Override + public void onFailure(Throwable caught) { + // TODO @FM: extract text? + ErrorPlace errorPlace = new ErrorPlace("Error while loading the event with service getEventViewById()"); + // TODO @FM: reload sinnvoll hier? + errorPlace.setComingFrom(currentPlace); + clientFactory.getPlaceController().goTo(errorPlace); + } + }); + } + + private void afterEventLoad() { GWT.runAsync(new AbstractRunAsyncCallback() { @Override public void onSuccess() { - super.onSuccess(new EventActivity(currentPlace, clientFactory)); + if (currentPlace instanceof EventDefaultPlace) { + super.onSuccess(new EventActivity(currentPlace, clientFactory)); + } else if (currentPlace instanceof RegattaRacesPlace) { + super.onSuccess(new RacesActivity((RegattaRacesPlace) currentPlace, clientFactory)); + } else if (currentPlace instanceof MiniLeaderboardPlace) { + super.onSuccess(new MiniLeaderboardActivity((MiniLeaderboardPlace) currentPlace, clientFactory)); + } else if (currentPlace instanceof LatestNewsPlace) { + super.onSuccess(new LatestNewsActivity((LatestNewsPlace) currentPlace, clientFactory)); + } } }); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java index 66e252a39c3..d34a4fb716c 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java @@ -6,9 +6,7 @@ import java.util.UUID; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; @@ -19,10 +17,8 @@ import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPla import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; -import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; import com.sap.sailing.gwt.ui.shared.dispatch.news.LeaderboardNewsEntryDTO; import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; -import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; public class LatestNewsActivity extends AbstractActivity implements Presenter, NewsItemLinkProvider { private final MobileApplicationClientFactory clientFactory; @@ -35,30 +31,6 @@ public class LatestNewsActivity extends AbstractActivity implements Presenter, N @Override public void start(final AcceptsOneWidget panel, final EventBus eventBus) { - if(place.getCtx().getEventDTO() == null) { - UUID currentEventUUId = UUID.fromString(place.getCtx().getEventId()); - clientFactory.getDispatch().execute(new GetEventViewAction(currentEventUUId), new AsyncCallback() { - @Override - public void onSuccess(final EventViewDTO event) { - place.getCtx().updateContext(event); - initUi(panel, eventBus); - } - - @Override - public void onFailure(Throwable caught) { - // TODO @FM: extract text? - ErrorPlace errorPlace = new ErrorPlace("Error while loading the event with service getEventViewById()"); - // TODO @FM: reload sinnvoll hier? - errorPlace.setComingFrom(place); - clientFactory.getPlaceController().goTo(errorPlace); - } - }); - } else { - initUi(panel, eventBus); - } - } - - private void initUi(AcceptsOneWidget panel, EventBus eventBus) { final LatestNewsView view = new LatestNewsViewImpl(this); panel.setWidget(view.asWidget()); Window.setTitle(place.getTitle()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivityProxy.java deleted file mode 100755 index f4a7a0485f4..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivityProxy.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.sap.sailing.gwt.home.mobile.places.latestnews; - -import com.google.gwt.core.client.GWT; -import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; -import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; - -public class LatestNewsActivityProxy extends AbstractActivityProxy { - - private final MobileApplicationClientFactory clientFactory; - private final LatestNewsPlace currentPlace; - - public LatestNewsActivityProxy(LatestNewsPlace place, MobileApplicationClientFactory clientFactory) { - this.currentPlace = place; - this.clientFactory = clientFactory; - } - - @Override - protected void startAsync() { - GWT.runAsync(new AbstractRunAsyncCallback() { - @Override - public void onSuccess() { - super.onSuccess(new LatestNewsActivity(currentPlace, clientFactory)); - } - }); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivity.java index f87ec043364..aa9eecb678d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivity.java @@ -4,9 +4,7 @@ import java.util.UUID; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; -import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; @@ -16,7 +14,6 @@ import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardVie import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; -import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; @@ -31,32 +28,6 @@ public class MiniLeaderboardActivity extends AbstractActivity implements Present @Override public void start(final AcceptsOneWidget panel, final EventBus eventBus) { - if (place.getCtx().getEventDTO() == null) { - UUID currentEventUUId = UUID.fromString(place.getCtx().getEventId()); - clientFactory.getDispatch().execute(new GetEventViewAction(currentEventUUId), - new AsyncCallback() { - @Override - public void onSuccess(final EventViewDTO event) { - place.getCtx().updateContext(event); - initUi(panel, eventBus); - } - - @Override - public void onFailure(Throwable caught) { - // TODO @FM: extract text? - ErrorPlace errorPlace = new ErrorPlace( - "Error while loading the event with service getEventViewById()"); - // TODO @FM: reload sinnvoll hier? - errorPlace.setComingFrom(place); - clientFactory.getPlaceController().goTo(errorPlace); - } - }); - } else { - initUi(panel, eventBus); - } - } - - private void initUi(AcceptsOneWidget panel, EventBus eventBus) { final MiniLeaderboardView view = new MiniLeaderboardViewImpl(this); EventViewDTO event = place.getCtx().getEventDTO(); if(event.getType() == EventType.MULTI_REGATTA) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivityProxy.java deleted file mode 100755 index a3d8e912c97..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivityProxy.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.sap.sailing.gwt.home.mobile.places.minileaderboard; - -import com.google.gwt.core.client.GWT; -import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; -import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; - -public class MiniLeaderboardActivityProxy extends AbstractActivityProxy { - - private final MobileApplicationClientFactory clientFactory; - private final MiniLeaderboardPlace currentPlace; - - public MiniLeaderboardActivityProxy(MiniLeaderboardPlace place, MobileApplicationClientFactory clientFactory) { - this.currentPlace = place; - this.clientFactory = clientFactory; - } - - @Override - protected void startAsync() { - GWT.runAsync(new AbstractRunAsyncCallback() { - @Override - public void onSuccess() { - super.onSuccess(new MiniLeaderboardActivity(currentPlace, clientFactory)); - } - }); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java index ce4ac347a3a..6b3690acae8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java @@ -4,9 +4,7 @@ import java.util.UUID; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; -import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; @@ -18,7 +16,6 @@ import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; -import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; @@ -33,32 +30,6 @@ public class RacesActivity extends AbstractActivity implements Presenter { @Override public void start(final AcceptsOneWidget panel, final EventBus eventBus) { - if (place.getCtx().getEventDTO() == null) { - UUID currentEventUUId = UUID.fromString(place.getCtx().getEventId()); - clientFactory.getDispatch().execute(new GetEventViewAction(currentEventUUId), - new AsyncCallback() { - @Override - public void onSuccess(final EventViewDTO event) { - place.getCtx().updateContext(event); - initUi(panel, eventBus); - } - - @Override - public void onFailure(Throwable caught) { - // TODO @FM: extract text? - ErrorPlace errorPlace = new ErrorPlace( - "Error while loading the event with service getEventViewById()"); - // TODO @FM: reload sinnvoll hier? - errorPlace.setComingFrom(place); - clientFactory.getPlaceController().goTo(errorPlace); - } - }); - } else { - initUi(panel, eventBus); - } - } - - private void initUi(AcceptsOneWidget panel, EventBus eventBus) { final RacesView view = new RacesViewImpl(this); EventViewDTO event = place.getCtx().getEventDTO(); if(event.getType() == EventType.MULTI_REGATTA) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivityProxy.java deleted file mode 100644 index 64e8f3b3dc8..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivityProxy.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.sap.sailing.gwt.home.mobile.places.races; - -import com.google.gwt.core.client.GWT; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; -import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; -import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; - -public class RacesActivityProxy extends AbstractActivityProxy { - - private final MobileApplicationClientFactory clientFactory; - private final RegattaRacesPlace currentPlace; - - public RacesActivityProxy(RegattaRacesPlace place, MobileApplicationClientFactory clientFactory) { - this.currentPlace = place; - this.clientFactory = clientFactory; - } - - @Override - protected void startAsync() { - GWT.runAsync(new AbstractRunAsyncCallback() { - @Override - public void onSuccess() { - super.onSuccess(new RacesActivity(currentPlace, clientFactory)); - } - }); - } -} From 55456a6d6157ccb5c54ec75e300205a80c0fb79c Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Wed, 19 Aug 2015 18:35:55 +0200 Subject: [PATCH 074/504] Repaired the wiki links --- wiki/typical-data-mining-scenarios.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/wiki/typical-data-mining-scenarios.md b/wiki/typical-data-mining-scenarios.md index ea6404a2e2f..282577d3530 100644 --- a/wiki/typical-data-mining-scenarios.md +++ b/wiki/typical-data-mining-scenarios.md @@ -4,12 +4,12 @@ ## Adding a new Data Mining Bundle -* Add a new java project bundle according to the [Typical Development Scenarios](wiki/typical-development-scenarios#Adding-a-Java-Project-Bundle) +* Add a new java project bundle according to the [Typical Development Scenarios](typical-development-scenarios#Adding-a-Java-Project-Bundle) * Add the necessary dependencies to the `MANIFEST.MF` * `com.sap.sse` (for the string messages) * `com.sap.sse.datamining` * `com.sap.sse.datamining.shared` -* Create an `Activator` for the new data mining bundle and provide a `DataMiningBundleService` to the OSGi-Context (see [Registration and Deregistration of Data Mining Bundles](wiki/data-mining-architecture#Registration-and-Deregistration-of-Data-Mining-Bundles) for detailed information) +* Create an `Activator` for the new data mining bundle and provide a `DataMiningBundleService` to the OSGi-Context (see [Registration and Deregistration of Data Mining Bundles](data-mining-architecture#Registration-and-Deregistration-of-Data-Mining-Bundles) for detailed information) * This can be done by extending the `AbstractDataMiningActivator` and implementing it's abstract methods * Or by implementing your own `DataMiningBundleService` and register it as OSGi-Service * Prepare the string messages @@ -19,13 +19,13 @@ * Create a `ResourceBundleStringMessages` in the `DataMiningBundleService` * The `ResourceBundleStringMessages` needs the resource base name, which should be `/` * A reference to this `ResourceBundleStringMessages` should be returned by the method `getStringMessages()` -* **[Optional]** It may be necessary to implement GWT specific components for the new Data Mining Bundle, like DTOs or a [Serialization Dummy](wiki/typical-data-mining-scenarios#Include-a-Type-forcefully-in-the-GWT-Serialization-Policy). +* **[Optional]** It may be necessary to implement GWT specific components for the new Data Mining Bundle, like DTOs or a [Serialization Dummy](typical-data-mining-scenarios#Include-a-Type-forcefully-in-the-GWT-Serialization-Policy). * This should be done in a separate bundle. - * See [Typical Development Scenarios](wiki/typical-development-scenarios#Adding-a-shared-GWT-library-bundle) for instructions, how to add a shared GWT bundle. + * See [Typical Development Scenarios](typical-development-scenarios#Adding-a-shared-GWT-library-bundle) for instructions, how to add a shared GWT bundle. ## Adding an absolute new Data Type -A data type is an atomic unit on which the processing components operate. A data type is normally based on a domain element (like `GPSFixMoving` or `TrackedLegOfCompetitor`) and provides contextual information about it (like the name of the regatta or race) via [Functions](wiki/data-mining-architecture#Data-Mining-Functions). +A data type is an atomic unit on which the processing components operate. A data type is normally based on a domain element (like `GPSFixMoving` or `TrackedLegOfCompetitor`) and provides contextual information about it (like the name of the regatta or race) via [Functions](data-mining-architecture#Data-Mining-Functions). ### Create the necessary Data Types @@ -45,7 +45,7 @@ A data type is an atomic unit on which the processing components operate. A data * To get the contextual data of a higher level data type interface annotate the getter for this interface with `@Connector(scanForStatistics=false)`. * There's currently no parameter support for functions, except for signatures exactly like `(Locale, ResourceBundleStringMessages)`. * Cycles in the graph of annotated methods aren't supported and would result in an infinite loop during the function registration. - * See [Data Mining Functions](wiki/data-mining-architecture#Data-Mining-Functions) for detailed information about the annotations. + * See [Data Mining Functions](data-mining-architecture#Data-Mining-Functions) for detailed information about the annotations. * Create implementations for the data type interfaces. The naming convention for data type classes is `WithContext`. * If `TrackedLegOfCompetitor` would be the domain element, then the name of the data type class should be `TrackedLegOfCompetitorWithContext`. @@ -62,7 +62,7 @@ A data type is an atomic unit on which the processing components operate. A data * Each method has a parameter for a message key, that is needed for the internationalization of the chain. * The call order of these methods has to match `startWith addAfter* endWith` or an exception will be thrown. * Every retrieval processor needs a constructor with the signature `(ExecutorService, Collection>, int)` or an exception will be thrown. - * See [Defining and building a Data Retriever Chain](wiki/data-mining-architecture#Defining-and-building-a-Data-Retriever-Chain) for examples and more detailed information. + * See [Defining and building a Data Retriever Chain](data-mining-architecture#Defining-and-building-a-Data-Retriever-Chain) for examples and more detailed information. ## Adding a new Data Type with a reusable Retriever Chain From 840c6c0bee725668d1ec92a9cdedc1ad51103305 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 20 Aug 2015 10:26:35 +0200 Subject: [PATCH 075/504] Added abstraction for mobile event activities --- .../places/event/AbstractEventActivity.java | 153 ++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java new file mode 100644 index 00000000000..6948354013e --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -0,0 +1,153 @@ +package com.sap.sailing.gwt.home.mobile.places.event; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.UUID; + +import com.google.gwt.activity.shared.AbstractActivity; +import com.google.gwt.event.shared.EventBus; +import com.google.gwt.user.client.ui.AcceptsOneWidget; +import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.client.place.event.EventContext; +import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; +import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; +import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; +import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; +import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; +import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; +import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.dispatch.news.LeaderboardNewsEntryDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; +import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; +import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; +import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; +import com.sap.sailing.gwt.ui.shared.util.NullSafeComparableComparator; + +public abstract class AbstractEventActivity extends AbstractActivity implements Presenter { + private final MobileApplicationClientFactory clientFactory; + private final PLACE place; + + protected AbstractEventActivity(PLACE place, MobileApplicationClientFactory clientFactory) { + this.clientFactory = clientFactory; + this.place = place; + } + + @Override + public void start(final AcceptsOneWidget panel, final EventBus eventBus) { + final EventViewBase view = initView(); + panel.setWidget(view.asWidget()); + } + + protected abstract VIEW initView(); + + protected void initSailorInfoOrSeriesNavigation(EventViewBase view) { + EventViewDTO event = getCtx().getEventDTO(); + String sailorInfoUrl = event.getSailorsInfoWebsiteURL(); + if (sailorInfoUrl != null && !sailorInfoUrl.isEmpty()) { + view.setSailorInfos(StringMessages.INSTANCE.sailorInfoLongText(), StringMessages.INSTANCE.sailorInfo(), sailorInfoUrl); + } else if (event.getType() == EventType.SERIES_EVENT) { + String seriesIdAsString = event.getSeriesIdAsString(); + PlaceNavigation navigation = clientFactory.getNavigator().getEventSeriesNavigation(seriesIdAsString, null, false); + view.setSeriesNavigation(event.getSeriesName(), navigation); + } + } + + protected void initQuickfinder(EventViewBase view, boolean showQuickfinder) { + EventViewDTO event = getCtx().getEventDTO(); + if(showQuickfinder && event.getType() == EventType.MULTI_REGATTA) { + view.setQuickFinderValues(getSortedQuickFinderValues()); + } else if(showQuickfinder && event.getType() == EventType.SERIES_EVENT) { + view.setQuickFinderValues(event.getSeriesName(), event.getEventsOfSeries()); + } else { + view.hideQuickfinder(); + } + } + + private Collection getSortedQuickFinderValues() { + Collection regattas = place.getCtx().getEventDTO().getRegattas(); + List sortedRegattas = new ArrayList(regattas); + Collections.sort(sortedRegattas, new Comparator() { + private Comparator bootCatComparator = new NullSafeComparableComparator(); + @Override + public int compare(RegattaMetadataDTO o1, RegattaMetadataDTO o2) { + int bootCategoryComparison = bootCatComparator.compare(o1.getBoatCategory(), o2.getBoatCategory()); + return bootCategoryComparison == 0 ? o1.compareTo(o2) : bootCategoryComparison; + } + }); + return sortedRegattas; + } + + @Override + public EventContext getCtx() { + return place.getCtx(); + } + + public DispatchSystem getDispatch() { + return clientFactory.getDispatch(); + } + + @Override + public PlaceNavigation getRegattaLeaderboardNavigation(String leaderboardName) { + EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); + return clientFactory.getNavigator().getEventNavigation(new RegattaLeaderboardPlace(ctx), null, false); + } + + @Override + public PlaceNavigation getRegattaMiniLeaderboardNavigation(String leaderboardName) { + EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); + return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(ctx), null, false); + } + + @Override + public PlaceNavigation getMiniOverallLeaderboardNavigation() { + return clientFactory.getNavigator().getSeriesNavigation(new SeriesMiniOverallLeaderboardPlace(new SeriesContext().withId(getCtx().getEventId())), null, false); + } + + @Override + public PlaceNavigation getMiniLeaderboardNavigation(UUID eventId) { + return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(eventId.toString(), null), null, false); + } + + @Override + public PlaceNavigation getEventNavigation() { + return clientFactory.getNavigator().getEventNavigation(new EventDefaultPlace(getCtx()), null, false); + } + + public PlaceNavigation getMediaPageNavigation() { + if (getCtx().getEventDTO().getType() == EventType.MULTI_REGATTA) { + return clientFactory.getNavigator().getEventNavigation(new MultiregattaMediaPlace(getCtx()), null, false); + } else { + return clientFactory.getNavigator().getEventNavigation(new RegattaMediaPlace(getCtx()), null, false); + } + } + + public PlaceNavigation getNewsPlaceNavigation(List values) { + return clientFactory.getNavigator().getEventLastestNewsNavigation(getCtx(), values, null, false); + } + + public PlaceNavigation getNewsEntryPlaceNavigation(NewsEntryDTO entry) { + if(entry instanceof LeaderboardNewsEntryDTO) { + final LeaderboardNewsEntryDTO dto = (LeaderboardNewsEntryDTO) entry; + return getRegattaMiniLeaderboardNavigation(dto.getLeaderboardName()); + } + return null; + } + + public PlaceNavigation getRegattaRacesNavigation(String regattaId) { + EventContext ctx = new EventContext(getCtx()).withRegattaId(regattaId).withRegattaAnalyticsManager(null); + return clientFactory.getNavigator().getEventNavigation(new RegattaRacesPlace(ctx), null, false); + } + + public String getRaceViewerURL(String regattaName, String trackedRaceName) { + return null; + } +} From cbd50476f0c51c58c5cd1d885f12f143c5d9fa42 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 10 Aug 2015 16:48:29 +0200 Subject: [PATCH 076/504] Refactored EventDTO structure --- .../shared/eventlist/EventListEventDTO.java | 6 +++++ .../gwt/ui/shared/start/EventStageDTO.java | 23 +++---------------- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java index bf230060052..9038d2c53ac 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/eventlist/EventListEventDTO.java @@ -1,10 +1,16 @@ package com.sap.sailing.gwt.ui.shared.eventlist; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; +import com.sap.sailing.gwt.ui.shared.general.EventState; +import com.sap.sailing.gwt.ui.shared.start.StageEventType; public class EventListEventDTO extends EventMetadataDTO { private String baseURL; private boolean isOnRemoteServer; + + public StageEventType getStageType() { + return getState() == EventState.RUNNING ? StageEventType.RUNNING : StageEventType.POPULAR; + } public String getBaseURL() { return baseURL; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/start/EventStageDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/start/EventStageDTO.java index cfe5edee279..fab735262d0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/start/EventStageDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/start/EventStageDTO.java @@ -1,30 +1,13 @@ package com.sap.sailing.gwt.ui.shared.start; -import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; -public class EventStageDTO extends EventMetadataDTO { +public class EventStageDTO extends EventListEventDTO { private StageEventType stageType; - private String baseURL; - private boolean isOnRemoteServer; private String stageImageURL; - public String getBaseURL() { - return baseURL; - } - - public void setBaseURL(String baseURL) { - this.baseURL = baseURL; - } - - public boolean isOnRemoteServer() { - return isOnRemoteServer; - } - - public void setOnRemoteServer(boolean isOnRemoteServer) { - this.isOnRemoteServer = isOnRemoteServer; - } - + @Override public StageEventType getStageType() { return stageType; } From c15f2b6d1ff2b3adb887e733b667ef552e1599d4 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 10 Aug 2015 17:10:57 +0200 Subject: [PATCH 077/504] Adjusted UI components to work with new EventDTO structure --- .../partials/recents/EventsOverviewRecent.java | 8 +++++++- .../partials/recents/EventsOverviewRecent.ui.xml | 9 ++++----- .../mobile/partials/stage/LiveEventStageTeaser.java | 4 ++-- .../mobile/partials/stage/LiveStageTeaserBand.java | 4 ++-- .../partials/stage/PopularEventStageTeaser.java | 4 ++-- .../partials/stage/PopularEventStageTeaserBand.java | 4 ++-- .../gwt/home/mobile/partials/stage/Stage.java | 7 +++---- .../gwt/home/mobile/partials/stage/StageTeaser.java | 13 +++++-------- .../home/mobile/partials/stage/StageTeaserBand.java | 8 ++++---- .../partials/stage/UpcomingEventStageTeaser.java | 4 ++-- .../stage/UpcomingEventStageTeaserBand.java | 4 ++-- .../gwt/home/mobile/places/start/StartActivity.java | 2 +- .../gwt/home/mobile/places/start/StartView.java | 4 ++-- .../gwt/home/mobile/places/start/StartViewImpl.java | 4 ++-- 14 files changed, 40 insertions(+), 39 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.java index 914c6084c17..f0b7174c605 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.java @@ -1,5 +1,6 @@ package com.sap.sailing.gwt.home.mobile.partials.recents; +import java.util.LinkedList; import java.util.List; import com.google.gwt.core.client.GWT; @@ -9,6 +10,8 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; +import com.sap.sailing.gwt.home.mobile.partials.stage.Stage; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; import com.sap.sailing.gwt.ui.shared.eventlist.EventListYearDTO; public class EventsOverviewRecent extends Composite { @@ -21,6 +24,7 @@ public class EventsOverviewRecent extends Composite { private final MobilePlacesNavigator navigator; @UiField FlowPanel year; + @UiField Stage eventStage; public EventsOverviewRecent(MobilePlacesNavigator navigator) { this.navigator = navigator; @@ -33,12 +37,14 @@ public class EventsOverviewRecent extends Composite { // remove old widgets year.clear(); + List allEvents = new LinkedList(); boolean oneYearIsExpanded = false; for (EventListYearDTO yearDTO : years) { EventsOverviewRecentYear recentEventsOfOneYear = new EventsOverviewRecentYear(yearDTO, navigator, !oneYearIsExpanded); year.add(recentEventsOfOneYear); - oneYearIsExpanded = true; + allEvents.addAll(yearDTO.getEvents()); } + eventStage.setFeaturedEvents(allEvents); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.ui.xml index b2f62ac0fd0..17e287e060d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.ui.xml @@ -1,10 +1,9 @@ - + - - + + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/LiveEventStageTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/LiveEventStageTeaser.java index be743a3e718..ffc32c7ed1b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/LiveEventStageTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/LiveEventStageTeaser.java @@ -1,13 +1,13 @@ package com.sap.sailing.gwt.home.mobile.partials.stage; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; -import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; public class LiveEventStageTeaser extends StageTeaser { private final LiveStageTeaserBand teaserBand; - public LiveEventStageTeaser(EventStageDTO event, MobilePlacesNavigator placeNavigator) { + public LiveEventStageTeaser(EventListEventDTO event, MobilePlacesNavigator placeNavigator) { super(event); title.setInnerText(event.getDisplayName()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/LiveStageTeaserBand.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/LiveStageTeaserBand.java index 27ad680b41b..7b1d5626199 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/LiveStageTeaserBand.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/LiveStageTeaserBand.java @@ -4,7 +4,7 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.sap.sailing.gwt.common.client.i18n.TextMessages; import com.sap.sailing.gwt.home.client.shared.EventDatesFormatterUtil; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; -import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; /** * Teaser band for a live event on the homepage stage @@ -13,7 +13,7 @@ import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; */ public class LiveStageTeaserBand extends StageTeaserBand { - public LiveStageTeaserBand(EventStageDTO event, MobilePlacesNavigator placeNavigator) { + public LiveStageTeaserBand(EventListEventDTO event, MobilePlacesNavigator placeNavigator) { super(event, placeNavigator); bandTitle.setInnerText(event.getDisplayName()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/PopularEventStageTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/PopularEventStageTeaser.java index c39db293bb9..8067e0dc7b0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/PopularEventStageTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/PopularEventStageTeaser.java @@ -1,13 +1,13 @@ package com.sap.sailing.gwt.home.mobile.partials.stage; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; -import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; public class PopularEventStageTeaser extends StageTeaser { private final PopularEventStageTeaserBand teaserBand; - public PopularEventStageTeaser(EventStageDTO event, MobilePlacesNavigator placeNavigator) { + public PopularEventStageTeaser(EventListEventDTO event, MobilePlacesNavigator placeNavigator) { super(event); title.setInnerText(event.getDisplayName()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/PopularEventStageTeaserBand.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/PopularEventStageTeaserBand.java index d21f05c498c..41323acc3d6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/PopularEventStageTeaserBand.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/PopularEventStageTeaserBand.java @@ -4,7 +4,7 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.sap.sailing.gwt.common.client.i18n.TextMessages; import com.sap.sailing.gwt.home.client.shared.EventDatesFormatterUtil; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; -import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; /** * Teaser band for a popular but finished event on the homepage stage @@ -13,7 +13,7 @@ import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; */ public class PopularEventStageTeaserBand extends StageTeaserBand { - public PopularEventStageTeaserBand(EventStageDTO event, MobilePlacesNavigator placeNavigator) { + public PopularEventStageTeaserBand(EventListEventDTO event, MobilePlacesNavigator placeNavigator) { super(event, placeNavigator); bandTitle.setInnerText(event.getDisplayName()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/Stage.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/Stage.java index 523184fddb2..a3548049ab4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/Stage.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/Stage.java @@ -9,7 +9,7 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; -import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; import com.sap.sse.gwt.client.controls.carousel.WidgetCarousel; public class Stage extends Composite { @@ -37,9 +37,8 @@ public class Stage extends Composite { stageTeaserComposites = new ArrayList(); } - public void setFeaturedEvents(List list) { - - for (EventStageDTO event : list) { + public void setFeaturedEvents(List list) { + for (EventListEventDTO event : list) { switch (event.getStageType()) { case POPULAR: stageTeaser = new PopularEventStageTeaser(event, placeNavigator); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaser.java index 781906741bf..cb402d8419e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaser.java @@ -13,12 +13,13 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.mobile.partials.countdown.CountdownTicker; -import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; import com.sap.sse.common.TimePoint; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.gwt.client.controls.carousel.LazyLoadable; public abstract class StageTeaser extends Composite implements LazyLoadable { + @UiField DivElement bandCount; @UiField @@ -36,22 +37,20 @@ public abstract class StageTeaser extends Composite implements LazyLoadable { } private static StageTeaserUiBinder uiBinder = GWT.create(StageTeaserUiBinder.class); - private final EventStageDTO event; + private final EventListEventDTO event; @Override public void doInitializeLazyComponents() { - String stageImageUrl = event.getStageImageURL() != null ? event.getStageImageURL() : StageResources.INSTANCE + String stageImageUrl = event.getThumbnailImageURL() != null ? event.getThumbnailImageURL() : StageResources.INSTANCE .defaultStageEventTeaserImage().getSafeUri().asString(); String backgroundImage = "url(" + stageImageUrl + ")"; teaserImage.getStyle().setBackgroundImage(backgroundImage); - } protected void handleUserAction() { - } - public StageTeaser(EventStageDTO event) { + public StageTeaser(EventListEventDTO event) { this.event = event; StageResources.INSTANCE.css().ensureInjected(); @@ -76,10 +75,8 @@ public abstract class StageTeaser extends Composite implements LazyLoadable { return; } handleUserAction(); - } }, ClickEvent.getType()); } - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaserBand.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaserBand.java index 01e49856b07..a427d3888f3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaserBand.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaserBand.java @@ -13,7 +13,7 @@ import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.app.PlaceNavigator; -import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; public abstract class StageTeaserBand extends Composite { @@ -29,10 +29,10 @@ public abstract class StageTeaserBand extends Composite { @UiField Anchor actionLink; private final MobilePlacesNavigator placeNavigator; - private final EventStageDTO event; + private final EventListEventDTO event; private final PlaceNavigation eventNavigation; - public StageTeaserBand(EventStageDTO event, MobilePlacesNavigator placeNavigator) { + public StageTeaserBand(EventListEventDTO event, MobilePlacesNavigator placeNavigator) { this.event = event; this.placeNavigator = placeNavigator; @@ -51,7 +51,7 @@ public abstract class StageTeaserBand extends Composite { return placeNavigator; } - public EventStageDTO getEvent() { + public EventListEventDTO getEvent() { return event; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaser.java index 1bfca51bb73..cf0306d6de0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaser.java @@ -1,13 +1,13 @@ package com.sap.sailing.gwt.home.mobile.partials.stage; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; -import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; public class UpcomingEventStageTeaser extends StageTeaser { private final UpcomingEventStageTeaserBand teaserBand; - public UpcomingEventStageTeaser(EventStageDTO event, MobilePlacesNavigator placeNavigator) { + public UpcomingEventStageTeaser(EventListEventDTO event, MobilePlacesNavigator placeNavigator) { super(event); title.setInnerText(event.getDisplayName()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaserBand.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaserBand.java index 4a1b5dca7c1..c0a6cc5f322 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaserBand.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaserBand.java @@ -4,7 +4,7 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.sap.sailing.gwt.common.client.i18n.TextMessages; import com.sap.sailing.gwt.home.client.shared.EventDatesFormatterUtil; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; -import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; /** * Teaser band for an upcoming event on the homepage stage @@ -13,7 +13,7 @@ import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; */ public class UpcomingEventStageTeaserBand extends StageTeaserBand { - public UpcomingEventStageTeaserBand(EventStageDTO event, MobilePlacesNavigator placeNavigator) { + public UpcomingEventStageTeaserBand(EventListEventDTO event, MobilePlacesNavigator placeNavigator) { super(event, placeNavigator); bandTitle.setInnerText(event.getDisplayName()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java index f1eb9460352..177e0426260 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java @@ -29,7 +29,7 @@ public class StartActivity extends AbstractActivity implements Presenter { public void start(final AcceptsOneWidget panel, EventBus eventBus) { Window.setTitle(place.getTitle()); final StartView view = new StartViewImpl(StartActivity.this); - clientFactory.getDispatch().execute(new GetStagedEventsAction(true), new AsyncCallback>() { + clientFactory.getDispatch().execute(new GetStagedEventsAction(), new AsyncCallback>() { @Override public void onFailure(Throwable caught) { // TODO Auto-generated method stub diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartView.java index a2521bafe1e..465b79fd004 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartView.java @@ -7,7 +7,7 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.dispatch.start.EventQuickfinderDTO; -import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; public interface StartView { @@ -21,6 +21,6 @@ public interface StartView { PlaceNavigation getEventNavigation(EventQuickfinderDTO event); } - void setFeaturedEvents(List list); + void setFeaturedEvents(List list); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartViewImpl.java index ae25dded1f3..65ee70c8b5d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartViewImpl.java @@ -15,8 +15,8 @@ import com.sap.sailing.gwt.home.mobile.partials.stage.Stage; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.start.EventQuickfinderDTO; +import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; import com.sap.sailing.gwt.ui.shared.general.EventState; -import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; public class StartViewImpl extends Composite implements StartView { private static StartPageViewUiBinder uiBinder = GWT.create(StartPageViewUiBinder.class); @@ -43,7 +43,7 @@ public class StartViewImpl extends Composite implements StartView { } @Override - public void setFeaturedEvents(List list) { + public void setFeaturedEvents(List list) { stage.setFeaturedEvents(list); } From c3a75707c123d585c0ac31521a5512e8b43ef0bf Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 10 Aug 2015 17:11:40 +0200 Subject: [PATCH 078/504] Adjusted server side code to deliver new EventDTO structure --- .../sap/sailing/gwt/server/HomeServiceImpl.java | 2 +- .../sap/sailing/gwt/server/HomeServiceUtil.java | 6 +++--- .../dispatch/start/GetStagedEventsAction.java | 15 +-------------- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java index 550ed2649cd..b4b4dc9d823 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java @@ -85,7 +85,7 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home StageEventType stageType = pair.getA(); EventHolder holder = pair.getB(); - result.addStageEvent(HomeServiceUtil.convertToEventStageDTO(holder.event, holder.baseURL, holder.onRemoteServer, stageType, getService(), false)); + result.addStageEvent(HomeServiceUtil.convertToEventStageDTO(holder.event, holder.baseURL, holder.onRemoteServer, stageType, getService())); EventReferenceDTO eventRef = new EventReferenceDTO(holder.event); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java index c243cbf921e..8497527c144 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java @@ -9,9 +9,9 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Locale; +import java.util.Map.Entry; import java.util.Random; import java.util.UUID; -import java.util.Map.Entry; import javax.servlet.http.HttpServletRequest; @@ -346,13 +346,13 @@ public final class HomeServiceUtil { return LocaleMatch.NO_MATCH; } - public static EventStageDTO convertToEventStageDTO(EventBase event, URL baseURL, boolean onRemoteServer, StageEventType stageType, RacingEventService service, boolean useTeaserImage) { + public static EventStageDTO convertToEventStageDTO(EventBase event, URL baseURL, boolean onRemoteServer, StageEventType stageType, RacingEventService service) { EventStageDTO dto = new EventStageDTO(); mapToMetadataDTO(event, dto, service); dto.setBaseURL(baseURL.toString()); dto.setOnRemoteServer(onRemoteServer); dto.setStageType(stageType); - dto.setStageImageURL(useTeaserImage ? findEventThumbnailImageUrlAsString(event) : getStageImageURLAsString(event)); + dto.setStageImageURL(getStageImageURLAsString(event)); return dto; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/start/GetStagedEventsAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/start/GetStagedEventsAction.java index 0f69c06dbef..a6b1c4a5cfa 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/start/GetStagedEventsAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/start/GetStagedEventsAction.java @@ -16,33 +16,20 @@ import com.sap.sse.common.Util.Pair; public class GetStagedEventsAction implements Action> { - private boolean useTeaserImage; - - protected GetStagedEventsAction() { - } - - public GetStagedEventsAction(boolean useTeaserImage) { - this.useTeaserImage = useTeaserImage; - } - @GwtIncompatible public ListResult execute(final DispatchContext context) throws MalformedURLException { EventStageCandidateCalculator stageCandidateCalculator = new EventStageCandidateCalculator(); - HomeServiceUtil.forAllPublicEvents(context.getRacingEventService(), context.getRequest(), stageCandidateCalculator); - ListResult result = new ListResult<>(); - int count = 0; for(Pair pair : stageCandidateCalculator.getFeaturedEvents()) { count++; if(count > HomeServiceImpl.MAX_STAGE_EVENTS) { break; } - StageEventType stageType = pair.getA(); EventHolder holder = pair.getB(); - result.addValue(HomeServiceUtil.convertToEventStageDTO(holder.event, holder.baseURL, holder.onRemoteServer, stageType, context.getRacingEventService(), useTeaserImage)); + result.addValue(HomeServiceUtil.convertToEventStageDTO(holder.event, holder.baseURL, holder.onRemoteServer, stageType, context.getRacingEventService())); } return result; } From 3ee8a38c86facb01ae7362576d7a0367767e4eb8 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 11 Aug 2015 10:09:54 +0200 Subject: [PATCH 079/504] Adjusted UI to show event slider in events overview --- .../recents/EventsOverviewRecent.java | 4 ++-- .../recents/EventsOverviewRecent.ui.xml | 6 +++-- .../EventsOverviewRecentYearEvent.java | 24 +++++++++---------- .../gwt/home/mobile/partials/stage/Stage.java | 23 +++++++++--------- .../home/mobile/partials/stage/Stage.ui.xml | 2 +- .../mobile/places/start/StartViewImpl.java | 2 +- 6 files changed, 32 insertions(+), 29 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.java index f0b7174c605..b5c9f57e38c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.java @@ -24,11 +24,11 @@ public class EventsOverviewRecent extends Composite { private final MobilePlacesNavigator navigator; @UiField FlowPanel year; - @UiField Stage eventStage; + @UiField (provided = true) Stage eventStage; public EventsOverviewRecent(MobilePlacesNavigator navigator) { this.navigator = navigator; - + this.eventStage= new Stage(navigator, false); EventsOverviewRecentResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.ui.xml index 17e287e060d..b962a5200df 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.ui.xml @@ -4,6 +4,8 @@ - - + + + + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java index 796e3576111..ea1286b5ac4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java @@ -6,7 +6,6 @@ import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.ImageElement; import com.google.gwt.dom.client.SpanElement; -import com.google.gwt.dom.client.Style.Display; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; @@ -41,17 +40,18 @@ public class EventsOverviewRecentYearEvent extends Widget { EventsOverviewRecentResources.INSTANCE.css().ensureInjected(); setElement(uiBinder.createAndBindUi(this)); eventNameUi.setInnerText(event.getDisplayName()); - if (isTeaserEvent) { - eventImageUi.getStyle().setDisplay(Display.BLOCK); - if(event.getThumbnailImageURL() == null || event.getThumbnailImageURL().isEmpty()) { - eventImageUi.setSrc(EventsOverviewRecentResources.INSTANCE.defaultEventPhotoImage().getSafeUri().asString()); - - }else { - eventImageUi.setSrc(event.getThumbnailImageURL()); - } - } else { - eventImageUi.getStyle().setDisplay(Display.NONE); - } +// if (isTeaserEvent) { +// eventImageUi.getStyle().setDisplay(Display.BLOCK); +// if(event.getThumbnailImageURL() == null || event.getThumbnailImageURL().isEmpty()) { +// eventImageUi.setSrc(EventsOverviewRecentResources.INSTANCE.defaultEventPhotoImage().getSafeUri().asString()); +// +// }else { +// eventImageUi.setSrc(event.getThumbnailImageURL()); +// } +// } else { +// eventImageUi.getStyle().setDisplay(Display.NONE); +// } + eventImageUi.removeFromParent(); eventLinkUi.setTitle(event.getDisplayName()); eventLinkUi.setHref(placeNavigation.getTargetUrl()); placeNavigation.configureAnchorElement(eventLinkUi); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/Stage.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/Stage.java index a3548049ab4..aa1d676d5ee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/Stage.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/Stage.java @@ -4,6 +4,8 @@ import java.util.ArrayList; import java.util.List; import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; @@ -13,27 +15,27 @@ import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; import com.sap.sse.gwt.client.controls.carousel.WidgetCarousel; public class Stage extends Composite { + + interface StageUiBinder extends UiBinder { + } + + private static StageUiBinder uiBinder = GWT.create(StageUiBinder.class); private List stageTeaserComposites; - @UiField - WidgetCarousel widgetCarousel; + @UiField DivElement stageContainer; + @UiField WidgetCarousel widgetCarousel; private StageTeaser stageTeaser; - private final MobilePlacesNavigator placeNavigator; - interface StageUiBinder extends UiBinder { - } - - private static StageUiBinder uiBinder = GWT.create(StageUiBinder.class); - - public Stage(MobilePlacesNavigator placeNavigator) { + public Stage(MobilePlacesNavigator placeNavigator, boolean showDots) { this.placeNavigator = placeNavigator; - StageResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); widgetCarousel.setShowArrows(false); + if (!showDots) stageContainer.getStyle().setHeight(100, Unit.PCT); + widgetCarousel.setShowDots(showDots); stageTeaserComposites = new ArrayList(); } @@ -53,6 +55,5 @@ public class Stage extends Composite { widgetCarousel.addWidget(stageTeaser); stageTeaserComposites.add(stageTeaser); } - } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/Stage.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/Stage.ui.xml index bb10e93046b..b9201584cf5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/Stage.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/Stage.ui.xml @@ -11,7 +11,7 @@
-
+
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartViewImpl.java index 65ee70c8b5d..df329a66a16 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartViewImpl.java @@ -36,7 +36,7 @@ public class StartViewImpl extends Composite implements StartView { public StartViewImpl(Presenter presenter) { this.currentPresenter = presenter; - stage = new Stage(presenter.getNavigator()); + stage = new Stage(presenter.getNavigator(), true); initWidget(uiBinder.createAndBindUi(this)); presenter.getNavigator().getEventsNavigation().configureAnchorElement(showAllEventsUi); From 7701ca817ab2a5e70e606cf61aee98bf75f1fb0a Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 20 Aug 2015 12:33:44 +0200 Subject: [PATCH 080/504] Added Event slider by year in mobile event list --- .../mobile/partials/recents/EventsOverviewRecent.java | 7 ++----- .../partials/recents/EventsOverviewRecent.ui.xml | 5 +---- .../partials/recents/EventsOverviewRecentYear.java | 10 +++++++--- .../partials/recents/EventsOverviewRecentYear.ui.xml | 5 +++-- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.java index b5c9f57e38c..2d7cebf2f0c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.java @@ -10,7 +10,6 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; -import com.sap.sailing.gwt.home.mobile.partials.stage.Stage; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; import com.sap.sailing.gwt.ui.shared.eventlist.EventListYearDTO; @@ -24,11 +23,9 @@ public class EventsOverviewRecent extends Composite { private final MobilePlacesNavigator navigator; @UiField FlowPanel year; - @UiField (provided = true) Stage eventStage; public EventsOverviewRecent(MobilePlacesNavigator navigator) { this.navigator = navigator; - this.eventStage= new Stage(navigator, false); EventsOverviewRecentResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); } @@ -40,11 +37,11 @@ public class EventsOverviewRecent extends Composite { List allEvents = new LinkedList(); boolean oneYearIsExpanded = false; for (EventListYearDTO yearDTO : years) { - EventsOverviewRecentYear recentEventsOfOneYear = new EventsOverviewRecentYear(yearDTO, navigator, !oneYearIsExpanded); + EventsOverviewRecentYear recentEventsOfOneYear = new EventsOverviewRecentYear(yearDTO, navigator, true); year.add(recentEventsOfOneYear); + if (oneYearIsExpanded) recentEventsOfOneYear.onHeaderClicked(); oneYearIsExpanded = true; allEvents.addAll(yearDTO.getEvents()); } - eventStage.setFeaturedEvents(allEvents); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.ui.xml index b962a5200df..eabd41f6a39 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecent.ui.xml @@ -4,8 +4,5 @@ - - - - + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java index 4b2d4800058..ca3d8c84db9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java @@ -16,6 +16,7 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; +import com.sap.sailing.gwt.home.mobile.partials.stage.Stage; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; @@ -31,6 +32,7 @@ public class EventsOverviewRecentYear extends Composite { @UiField SpanElement year; @UiField SpanElement eventsCount; @UiField FlowPanel recentEventsTeaserPanel; + @UiField (provided = true) Stage eventStage; @UiField DivElement contentDiv; @UiField HTMLPanel headerDiv; @UiField StringMessages i18n; @@ -41,7 +43,7 @@ public class EventsOverviewRecentYear extends Composite { public EventsOverviewRecentYear(EventListYearDTO yearDTO, MobilePlacesNavigator navigator, boolean showInitial) { List events = yearDTO.getEvents(); - + eventStage = new Stage(navigator, false); EventsOverviewRecentResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); @@ -59,10 +61,12 @@ public class EventsOverviewRecentYear extends Composite { first = false; } } + eventStage.setFeaturedEvents(events); +// eventStage.removeFromParent(); headerDiv.addDomHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { - onHeaderCicked(); + onHeaderClicked(); } }, ClickEvent.getType()); @@ -71,7 +75,7 @@ public class EventsOverviewRecentYear extends Composite { updateAccordionState(); } - private void onHeaderCicked() { + void onHeaderClicked() { isContentVisible = !isContentVisible; updateContentVisibility(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.ui.xml index 86bb4e333ad..6a722f710aa 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.ui.xml @@ -1,6 +1,6 @@ - + @@ -33,6 +33,7 @@
+
From f7caed51e83cf1f232f9a1ae5babd64ab7492a48 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 20 Aug 2015 12:36:24 +0200 Subject: [PATCH 081/504] Removed no longer used code fragments --- .../EventsOverviewRecentYearEvent.java | 36 ++++--------------- .../EventsOverviewRecentYearEvent.ui.xml | 1 - 2 files changed, 7 insertions(+), 30 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java index ea1286b5ac4..f943d55c886 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.java @@ -4,7 +4,6 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.AnchorElement; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Element; -import com.google.gwt.dom.client.ImageElement; import com.google.gwt.dom.client.SpanElement; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; @@ -21,45 +20,24 @@ public class EventsOverviewRecentYearEvent extends Widget { interface RecentEventTeaserUiBinder extends UiBinder { } - - @UiField - ImageElement eventImageUi; - @UiField - AnchorElement eventLinkUi; - @UiField - DivElement eventStateUi; - @UiField - SpanElement venueUi; - @UiField - SpanElement eventDateUi; - @UiField - SpanElement eventNameUi; + + @UiField AnchorElement eventLinkUi; + @UiField DivElement eventStateUi; + @UiField SpanElement venueUi; + @UiField SpanElement eventDateUi; + @UiField SpanElement eventNameUi; public EventsOverviewRecentYearEvent(final PlaceNavigation placeNavigation, final EventMetadataDTO event, LabelType labelType, boolean isTeaserEvent) { EventsOverviewRecentResources.INSTANCE.css().ensureInjected(); setElement(uiBinder.createAndBindUi(this)); eventNameUi.setInnerText(event.getDisplayName()); -// if (isTeaserEvent) { -// eventImageUi.getStyle().setDisplay(Display.BLOCK); -// if(event.getThumbnailImageURL() == null || event.getThumbnailImageURL().isEmpty()) { -// eventImageUi.setSrc(EventsOverviewRecentResources.INSTANCE.defaultEventPhotoImage().getSafeUri().asString()); -// -// }else { -// eventImageUi.setSrc(event.getThumbnailImageURL()); -// } -// } else { -// eventImageUi.getStyle().setDisplay(Display.NONE); -// } - eventImageUi.removeFromParent(); eventLinkUi.setTitle(event.getDisplayName()); eventLinkUi.setHref(placeNavigation.getTargetUrl()); placeNavigation.configureAnchorElement(eventLinkUi); LabelTypeUtil.renderLabelType(eventStateUi, event.getState().getListStateMarker()); venueUi.setInnerText(event.getLocationOrVenue()); - eventDateUi.setInnerText(EventDatesFormatterUtil.formatDateRangeWithoutYear(event.getStartDate(), - event.getEndDate())); + eventDateUi.setInnerText(EventDatesFormatterUtil.formatDateRangeWithoutYear(event.getStartDate(), event.getEndDate())); } - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.ui.xml index d5a4c3a7dbe..603107f0cc2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYearEvent.ui.xml @@ -9,7 +9,6 @@ type="com.sap.sailing.gwt.home.mobile.partials.recents.EventsOverviewRecentResources" /> -
From d36d7d48e23ddb2f30375b374d8c0f1f5d52690d Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 20 Aug 2015 16:03:07 +0200 Subject: [PATCH 082/504] Added features to abstraction for mobile event activities --- .../places/event/AbstractEventActivity.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java index 6948354013e..781c542f360 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -42,14 +42,14 @@ public abstract class AbstractEventActivity ex } @Override - public void start(final AcceptsOneWidget panel, final EventBus eventBus) { + public final void start(final AcceptsOneWidget panel, final EventBus eventBus) { final EventViewBase view = initView(); panel.setWidget(view.asWidget()); } - protected abstract VIEW initView(); + protected abstract EventViewBase initView(); - protected void initSailorInfoOrSeriesNavigation(EventViewBase view) { + protected final void initSailorInfoOrSeriesNavigation(EventViewBase view) { EventViewDTO event = getCtx().getEventDTO(); String sailorInfoUrl = event.getSailorsInfoWebsiteURL(); if (sailorInfoUrl != null && !sailorInfoUrl.isEmpty()) { @@ -61,7 +61,7 @@ public abstract class AbstractEventActivity ex } } - protected void initQuickfinder(EventViewBase view, boolean showQuickfinder) { + protected final void initQuickfinder(EventViewBase view, boolean showQuickfinder) { EventViewDTO event = getCtx().getEventDTO(); if(showQuickfinder && event.getType() == EventType.MULTI_REGATTA) { view.setQuickFinderValues(getSortedQuickFinderValues()); @@ -86,9 +86,13 @@ public abstract class AbstractEventActivity ex return sortedRegattas; } + protected final PLACE getPlace() { + return place; + } + @Override public EventContext getCtx() { - return place.getCtx(); + return getPlace().getCtx(); } public DispatchSystem getDispatch() { @@ -148,6 +152,6 @@ public abstract class AbstractEventActivity ex } public String getRaceViewerURL(String regattaName, String trackedRaceName) { - return null; + return null; // TODO No mobile "RaceViewer implemented yet } } From c751e8e68d61c874a19916c3d83bd0f9402997cc Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 20 Aug 2015 16:10:03 +0200 Subject: [PATCH 083/504] Refactored LatestNewsActivity to use mobile event activities abstraction --- .../places/latestnews/LatestNewsActivity.java | 84 ++----------------- 1 file changed, 9 insertions(+), 75 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java index d34a4fb716c..b5327feabda 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java @@ -1,90 +1,24 @@ package com.sap.sailing.gwt.home.mobile.places.latestnews; -import java.util.List; -import java.util.UUID; - -import com.google.gwt.activity.shared.AbstractActivity; -import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; -import com.sap.sailing.gwt.home.mobile.partials.updatesBox.NewsItemLinkProvider; +import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsView.Presenter; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; -import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; -import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; -import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; -import com.sap.sailing.gwt.ui.shared.dispatch.news.LeaderboardNewsEntryDTO; -import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; -public class LatestNewsActivity extends AbstractActivity implements Presenter, NewsItemLinkProvider { - private final MobileApplicationClientFactory clientFactory; - private final LatestNewsPlace place; +public class LatestNewsActivity extends AbstractEventActivity implements Presenter { public LatestNewsActivity(LatestNewsPlace place, MobileApplicationClientFactory clientFactory) { - this.clientFactory = clientFactory; - this.place = place; + super(place, clientFactory); } @Override - public void start(final AcceptsOneWidget panel, final EventBus eventBus) { + protected EventViewBase initView() { final LatestNewsView view = new LatestNewsViewImpl(this); - panel.setWidget(view.asWidget()); - Window.setTitle(place.getTitle()); - view.hideQuickfinder(); - view.showNews(place.getNews()); + Window.setTitle(getPlace().getTitle()); + initQuickfinder(view, false); + view.showNews(getPlace().getNews()); + return view; } - @Override - public PlaceNavigation getNewsEntryPlaceNavigation(NewsEntryDTO entry) { - if (entry instanceof LeaderboardNewsEntryDTO) { - final LeaderboardNewsEntryDTO dto = (LeaderboardNewsEntryDTO) entry; - return getRegattaLeaderboardNavigation(dto.getLeaderboardName()); - } - return null; - } - - public PlaceNavigation getRegattaLeaderboardNavigation(String leaderboardName) { - EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); - return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(ctx), null, false); - } - - @Override - public PlaceNavigation getNewsPlaceNavigation(List values) { - return clientFactory.getNavigator().getEventLastestNewsNavigation(getCtx(), values, null, false); - } - - @Override - public PlaceNavigation getEventNavigation() { - return clientFactory.getNavigator().getEventNavigation(new EventDefaultPlace(getCtx()), null, false); - } - - @Override - public EventContext getCtx() { - return place.getCtx(); - } - - @Override - public DispatchSystem getDispatch() { - return clientFactory.getDispatch(); - } - - @Override - public PlaceNavigation getRegattaMiniLeaderboardNavigation(String leaderboardName) { - EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); - return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(ctx), null, false); - } - - @Override - public PlaceNavigation getMiniOverallLeaderboardNavigation() { - return clientFactory.getNavigator().getSeriesNavigation(new SeriesMiniOverallLeaderboardPlace(new SeriesContext().withId(getCtx().getEventId())), null, false); - } - - @Override - public PlaceNavigation getMiniLeaderboardNavigation(UUID eventId) { - return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(eventId.toString(), null), null, false); - } } From d70c534b4a1926892716dee9a23cae5ab2fa0dd6 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 20 Aug 2015 16:28:19 +0200 Subject: [PATCH 084/504] Refactored RacesActivity to use mobile event activities abstraction --- .../mobile/places/races/RacesActivity.java | 82 ++----------------- 1 file changed, 8 insertions(+), 74 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java index 6b3690acae8..f3fa3cb9158 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java @@ -1,87 +1,21 @@ package com.sap.sailing.gwt.home.mobile.places.races; -import java.util.UUID; - -import com.google.gwt.activity.shared.AbstractActivity; -import com.google.gwt.event.shared.EventBus; -import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; +import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; -import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; -import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; -import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; -import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; -import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; -public class RacesActivity extends AbstractActivity implements Presenter { - private final MobileApplicationClientFactory clientFactory; - private final RegattaRacesPlace place; +public class RacesActivity extends AbstractEventActivity implements Presenter { public RacesActivity(RegattaRacesPlace place, MobileApplicationClientFactory clientFactory) { - this.clientFactory = clientFactory; - this.place = place; + super(place, clientFactory); } - + @Override - public void start(final AcceptsOneWidget panel, final EventBus eventBus) { + protected EventViewBase initView() { final RacesView view = new RacesViewImpl(this); - EventViewDTO event = place.getCtx().getEventDTO(); - if(event.getType() == EventType.MULTI_REGATTA) { - view.setQuickFinderValues(event.getRegattas()); - } else if(event.getType() == EventType.SERIES_EVENT) { - view.setQuickFinderValues(event.getSeriesName(), event.getEventsOfSeries()); - } else { - view.hideQuickfinder(); - } - panel.setWidget(view.asWidget()); - } - - @Override - public EventContext getCtx() { - return place.getCtx(); - } - - @Override - public PlaceNavigation getRegattaLeaderboardNavigation(String leaderboardName) { - EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); - return clientFactory.getNavigator().getEventNavigation(new RegattaLeaderboardPlace(ctx), null, false); - } - - @Override - public DispatchSystem getDispatch() { - return clientFactory.getDispatch(); - } - - @Override - public PlaceNavigation getRegattaMiniLeaderboardNavigation(String leaderboardName) { - EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); - return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(ctx), null, false); - } - - @Override - public PlaceNavigation getMiniOverallLeaderboardNavigation() { - return clientFactory.getNavigator().getSeriesNavigation(new SeriesMiniOverallLeaderboardPlace(new SeriesContext().withId(getCtx().getEventId())), null, false); - } - - @Override - public PlaceNavigation getMiniLeaderboardNavigation(UUID eventId) { - return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(eventId.toString(), null), null, false); - } - - @Override - public PlaceNavigation getEventNavigation() { - return clientFactory.getNavigator().getEventNavigation(new EventDefaultPlace(getCtx()), null, false); - } - - @Override - public PlaceNavigation getRegattaRacesNavigation(String regattaId) { - EventContext ctx = new EventContext(getCtx()).withRegattaId(regattaId).withRegattaAnalyticsManager(null); - return clientFactory.getNavigator().getEventNavigation(new RegattaRacesPlace(ctx), null, false); + initQuickfinder(view, true); + return view; } } From 75f81212b7709455b116e60d1b082d79f3144648 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 20 Aug 2015 15:01:39 +0200 Subject: [PATCH 085/504] Fixed navigation to events on remote servers --- .../sailing/gwt/home/desktop/app/AbstractPlaceNavigator.java | 2 +- .../sap/sailing/gwt/home/mobile/app/AbstractPlaceNavigator.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractPlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractPlaceNavigator.java index 8b878fb0f34..dd59d4e6241 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractPlaceNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractPlaceNavigator.java @@ -26,7 +26,7 @@ public abstract class AbstractPlaceNavigator implements PlaceNavigator { if(placeNavigation.isRemotePlace()) { String destinationUrl = placeNavigation.getTargetUrl(); History.newItem(History.getToken(), false); - Window.Location.replace(destinationUrl); + Window.Location.assign(destinationUrl); } else { placeController.goTo(placeNavigation.getPlace()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/AbstractPlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/AbstractPlaceNavigator.java index 35424ece899..c594f8267f0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/AbstractPlaceNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/AbstractPlaceNavigator.java @@ -26,7 +26,7 @@ public abstract class AbstractPlaceNavigator implements PlaceNavigator { if(placeNavigation.isRemotePlace()) { String destinationUrl = placeNavigation.getTargetUrl(); History.newItem(History.getToken(), false); - Window.Location.replace(destinationUrl); + Window.Location.assign(destinationUrl); } else { placeController.goTo(placeNavigation.getPlace()); } From f6cb376e3ab0abff6b8a8024ce7a1121e1bc85a4 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 20 Aug 2015 15:02:08 +0200 Subject: [PATCH 086/504] Fixed potential NPE in UpcomingEventStageTeaserBand classes --- .../client/shared/stage/UpcomingEventStageTeaserBand.java | 4 +++- .../mobile/partials/stage/UpcomingEventStageTeaserBand.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/stage/UpcomingEventStageTeaserBand.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/stage/UpcomingEventStageTeaserBand.java index 3ab75d6ec48..c14c1009dcf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/stage/UpcomingEventStageTeaserBand.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/stage/UpcomingEventStageTeaserBand.java @@ -27,6 +27,8 @@ public class UpcomingEventStageTeaserBand extends StageTeaserBand { @Override public void actionLinkClicked(ClickEvent e) { getPlaceNavigator().goToPlace(getEventNavigation()); - e.preventDefault(); + if (e != null) { + e.preventDefault(); + } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaserBand.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaserBand.java index 4a1b5dca7c1..322fc6879a0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaserBand.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/UpcomingEventStageTeaserBand.java @@ -27,6 +27,8 @@ public class UpcomingEventStageTeaserBand extends StageTeaserBand { @Override public void actionLinkClicked(ClickEvent e) { getPlaceNavigator().goToPlace(getEventNavigation()); - e.preventDefault(); + if (e != null) { + e.preventDefault(); + } } } From 60fa2d74ab86a2e200358abb8a714e1532d51ce0 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Fri, 21 Aug 2015 08:39:46 +0200 Subject: [PATCH 087/504] Fixed the calculation of the location of series events if there are FlexibleLeaderboards part of the series --- .../java/com/sap/sailing/gwt/server/HomeServiceUtil.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java index c243cbf921e..2c2155273db 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java @@ -412,11 +412,10 @@ public final class HomeServiceUtil { Event event = (Event) eventBase; for (Leaderboard leaderboard : event.getLeaderboardGroups().iterator().next().getLeaderboards()) { if(leaderboard instanceof RegattaLeaderboard) { - if(!HomeServiceUtil.isPartOfEvent(event, leaderboard)) { - continue; + if(HomeServiceUtil.isPartOfEvent(event, leaderboard)) { + return leaderboard.getDisplayName() != null ? leaderboard.getDisplayName() : leaderboard.getName(); } } - return leaderboard.getDisplayName() != null ? leaderboard.getDisplayName() : leaderboard.getName(); } return null; } From 6cf91f47253e3407252da5f3fcc5aca1abf7b94a Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 21 Aug 2015 10:26:41 +0200 Subject: [PATCH 088/504] Fixed style in series event list --- .../gwt/home/client/place/events/recent/RecentEventTeaser.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java index 3c5ff5384fa..7948dabb03d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java @@ -21,6 +21,7 @@ public class RecentEventTeaser extends Composite { @UiField(provided = true) EventTeaser eventTeaser; public RecentEventTeaser(final PlaceNavigation placeNavigation, final EventMetadataDTO event, LabelType labelType) { + EventsOverviewRecentResources.INSTANCE.css().ensureInjected(); eventTeaser = new EventTeaser(placeNavigation, event, labelType); initWidget(uiBinder.createAndBindUi(this)); } From 4198bdcf437db856eed0e166856329a526d39017 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 21 Aug 2015 15:00:09 +0200 Subject: [PATCH 089/504] Refactored MiniLeaderboardActivity to use mobile event activities abstraction --- .../MiniLeaderboardActivity.java | 73 ++----------------- 1 file changed, 7 insertions(+), 66 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivity.java index aa9eecb678d..b65208384e3 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivity.java @@ -1,79 +1,20 @@ package com.sap.sailing.gwt.home.mobile.places.minileaderboard; -import java.util.UUID; - -import com.google.gwt.activity.shared.AbstractActivity; -import com.google.gwt.event.shared.EventBus; -import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; +import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardView.Presenter; -import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; -import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; -import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; -import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; -import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; -public class MiniLeaderboardActivity extends AbstractActivity implements Presenter { - private final MobileApplicationClientFactory clientFactory; - private final MiniLeaderboardPlace place; +public class MiniLeaderboardActivity extends AbstractEventActivity implements Presenter { public MiniLeaderboardActivity(MiniLeaderboardPlace place, MobileApplicationClientFactory clientFactory) { - this.clientFactory = clientFactory; - this.place = place; + super(place, clientFactory); } @Override - public void start(final AcceptsOneWidget panel, final EventBus eventBus) { + protected EventViewBase initView() { final MiniLeaderboardView view = new MiniLeaderboardViewImpl(this); - EventViewDTO event = place.getCtx().getEventDTO(); - if(event.getType() == EventType.MULTI_REGATTA) { - view.setQuickFinderValues(event.getRegattas()); - } else if(event.getType() == EventType.SERIES_EVENT) { - view.setQuickFinderValues(event.getSeriesName(), event.getEventsOfSeries()); - } else { - view.hideQuickfinder(); - } - panel.setWidget(view.asWidget()); - } - - @Override - public EventContext getCtx() { - return place.getCtx(); - } - - @Override - public PlaceNavigation getRegattaLeaderboardNavigation(String leaderboardName) { - EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); - return clientFactory.getNavigator().getEventNavigation(new RegattaLeaderboardPlace(ctx), null, false); - } - - @Override - public DispatchSystem getDispatch() { - return clientFactory.getDispatch(); - } - - @Override - public PlaceNavigation getRegattaMiniLeaderboardNavigation(String leaderboardName) { - EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); - return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(ctx), null, false); - } - - @Override - public PlaceNavigation getMiniOverallLeaderboardNavigation() { - return clientFactory.getNavigator().getSeriesNavigation(new SeriesMiniOverallLeaderboardPlace(new SeriesContext().withId(getCtx().getEventId())), null, false); - } - - @Override - public PlaceNavigation getMiniLeaderboardNavigation(UUID eventId) { - return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(eventId.toString(), null), null, false); - } - - @Override - public PlaceNavigation getEventNavigation() { - return clientFactory.getNavigator().getEventNavigation(new EventDefaultPlace(getCtx()), null, false); + initQuickfinder(view, true); + return view; } } From 1081f9fa2f8961469bd0a4c178d36fd1d5440db2 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 21 Aug 2015 15:08:56 +0200 Subject: [PATCH 090/504] Fixed missing contents on media page --- .../gwt/ui/shared/media/SailingImageDTO.java | 22 ++++++++++++++++++ .../gwt/ui/shared/media/SailingVideoDTO.java | 23 ++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingImageDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingImageDTO.java index cd501f548cf..8073004d049 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingImageDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingImageDTO.java @@ -3,6 +3,7 @@ package com.sap.sailing.gwt.ui.shared.media; import java.util.Date; import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; +import com.sap.sse.gwt.client.media.AbstractMediaDTO; import com.sap.sse.gwt.client.media.ImageDTO; public class SailingImageDTO extends ImageDTO { @@ -21,4 +22,25 @@ public class SailingImageDTO extends ImageDTO { public EventReferenceDTO getEventRef() { return eventRef; } + + // TODO Move to {@link AbstractMediaDTO} --- + @Override + public int compareTo(AbstractMediaDTO o) { + int createdAtDateComp = compareToByCreatedAtDate(o); + return createdAtDateComp == 0 ? getSourceRef().compareTo(o.getSourceRef()) : createdAtDateComp; + } + + private int compareToByCreatedAtDate(AbstractMediaDTO o) { + if(getCreatedAtDate() == o.getCreatedAtDate()) { + return 0; + } + if(getCreatedAtDate() == null) { + return 1; + } + if(o.getCreatedAtDate() == null) { + return -1; + } + return -getCreatedAtDate().compareTo(o.getCreatedAtDate()); + } + // TODO END --- } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingVideoDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingVideoDTO.java index d4270438627..fede6eea00b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingVideoDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/SailingVideoDTO.java @@ -4,6 +4,7 @@ import java.util.Date; import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; import com.sap.sse.common.media.MimeType; +import com.sap.sse.gwt.client.media.AbstractMediaDTO; import com.sap.sse.gwt.client.media.VideoDTO; public class SailingVideoDTO extends VideoDTO { @@ -23,5 +24,25 @@ public class SailingVideoDTO extends VideoDTO { public EventReferenceDTO getEventRef() { return eventRef; } - + + // TODO Move to {@link AbstractMediaDTO} --- + @Override + public int compareTo(AbstractMediaDTO o) { + int createdAtDateComp = compareToByCreatedAtDate(o); + return createdAtDateComp == 0 ? getSourceRef().compareTo(o.getSourceRef()) : createdAtDateComp; + } + + private int compareToByCreatedAtDate(AbstractMediaDTO o) { + if(getCreatedAtDate() == o.getCreatedAtDate()) { + return 0; + } + if(getCreatedAtDate() == null) { + return 1; + } + if(o.getCreatedAtDate() == null) { + return -1; + } + return -getCreatedAtDate().compareTo(o.getCreatedAtDate()); + } + // TODO END --- } From a0d227256a0f120ba2e9b3a1233c5c12363c72bf Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Fri, 21 Aug 2015 15:52:23 +0200 Subject: [PATCH 091/504] Minor changes after data mining meeting --- .../src/com/sap/sailing/datamining/Activator.java | 4 ++++ .../data/HasLeaderboardGroupContext.java | 4 +++- .../sse/datamining/impl/TestProcessorQuery.java | 14 +++++++------- .../sap/sse/datamining/factories/QueryFactory.java | 4 ++-- .../sap/sse/datamining/impl/ProcessorQuery.java | 4 ++-- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java index edc5d846312..18fad54f587 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java @@ -7,6 +7,8 @@ import java.util.Set; import org.osgi.framework.BundleContext; import com.sap.sailing.datamining.data.HasGPSFixContext; +import com.sap.sailing.datamining.data.HasLeaderboardContext; +import com.sap.sailing.datamining.data.HasLeaderboardGroupContext; import com.sap.sailing.datamining.data.HasMarkPassingContext; import com.sap.sailing.datamining.data.HasRaceOfCompetitorContext; import com.sap.sailing.datamining.data.HasRaceResultOfCompetitorContext; @@ -79,6 +81,8 @@ public class Activator extends AbstractDataMiningActivator implements DataMining internalClasses.add(HasGPSFixContext.class); internalClasses.add(HasMarkPassingContext.class); internalClasses.add(HasRaceOfCompetitorContext.class); + internalClasses.add(HasLeaderboardGroupContext.class); + internalClasses.add(HasLeaderboardContext.class); return internalClasses; } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasLeaderboardGroupContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasLeaderboardGroupContext.java index e8fff6c3914..ac3d093ce81 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasLeaderboardGroupContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasLeaderboardGroupContext.java @@ -2,11 +2,13 @@ package com.sap.sailing.datamining.data; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.polars.PolarDataService; +import com.sap.sse.datamining.shared.annotations.Connector; public interface HasLeaderboardGroupContext { + @Connector(messageKey="LeaderboardGroup", ordinal=0) LeaderboardGroup getLeaderboardGroup(); - PolarDataService getPolarDataService(); + PolarDataService getPolarDataService(); } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java index 0c83420aa8f..089db94f331 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java @@ -60,7 +60,7 @@ public class TestProcessorQuery { dataSource, stringMessages, Locale.ENGLISH, Double.class, AdditionalQueryData.NULL_INSTANCE) { @SuppressWarnings("unchecked") @Override - protected Processor, ?> createFirstProcessor() { + protected Processor, ?> createChainAndReturnFirstProcessor() { Collection> resultReceivers = new ArrayList<>(); resultReceivers.add(new AbortResultReceiver(this.getResultReceiver())); return new BlockingProcessor, Double>((Class>)(Class) Iterable.class, Double.class, @@ -98,7 +98,7 @@ public class TestProcessorQuery { dataSource, stringMessages, Locale.ENGLISH, Double.class, AdditionalQueryData.NULL_INSTANCE) { @SuppressWarnings("unchecked") @Override - protected Processor, ?> createFirstProcessor() { + protected Processor, ?> createChainAndReturnFirstProcessor() { Collection> resultReceivers = new ArrayList<>(); resultReceivers.add(new AbortResultReceiver(this.getResultReceiver())); return new BlockingProcessor, Double>((Class>)(Class) Iterable.class, Double.class, @@ -164,7 +164,7 @@ public class TestProcessorQuery { createDataSource(), stringMessages, Locale.ENGLISH, Double.class, AdditionalQueryData.NULL_INSTANCE) { @SuppressWarnings("unchecked") @Override - protected Processor, ?> createFirstProcessor() { + protected Processor, ?> createChainAndReturnFirstProcessor() { Collection, ?>> resultReceivers = new ArrayList<>(); resultReceivers.add(this.getResultReceiver()); return new AbstractParallelProcessor, Map>((Class>)(Class) Iterable.class, @@ -238,7 +238,7 @@ public class TestProcessorQuery { Query query = new ProcessorQuery(0.0, Double.class) { @SuppressWarnings("unchecked") @Override - protected Processor createFirstProcessor() { + protected Processor createChainAndReturnFirstProcessor() { Collection, ?>> resultReceivers = new ArrayList<>(); resultReceivers.add(this.getResultReceiver()); return new AbstractParallelProcessor>(Double.class, @@ -278,7 +278,7 @@ public class TestProcessorQuery { Query query = new ProcessorQuery(0.0, Double.class) { @SuppressWarnings("unchecked") @Override - protected Processor createFirstProcessor() { + protected Processor createChainAndReturnFirstProcessor() { Collection, ?>> resultReceivers = new ArrayList<>(); resultReceivers.add(this.getResultReceiver()); return new AbstractParallelProcessor>(Double.class, @@ -309,7 +309,7 @@ public class TestProcessorQuery { AdditionalQueryData additionalData = new AdditionalStatisticQueryData(UUID.randomUUID()); Query query = new ProcessorQuery(0.0, Double.class, additionalData) { @Override - protected Processor createFirstProcessor() { + protected Processor createChainAndReturnFirstProcessor() { return null; } }; @@ -320,7 +320,7 @@ public class TestProcessorQuery { additionalData = new AdditionalDimensionValuesQueryData(UUID.randomUUID(), new ArrayList>()); query = new ProcessorQuery(0.0, Double.class, additionalData) { @Override - protected Processor createFirstProcessor() { + protected Processor createChainAndReturnFirstProcessor() { return null; } }; diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/QueryFactory.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/QueryFactory.java index 16c6d40732b..6ea0eface60 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/QueryFactory.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/QueryFactory.java @@ -37,7 +37,7 @@ public class QueryFactory { ResourceBundleStringMessages stringMessages, ExecutorService executor) { return new ProcessorQuery(dataSource, stringMessages, queryDefinition.getLocale(), queryDefinition.getResultType(), new AdditionalStatisticQueryData(queryDefinition.getDataRetrieverChainDefinition().getID())) { @Override - protected Processor createFirstProcessor() { + protected Processor createChainAndReturnFirstProcessor() { ProcessorFactory processorFactory = new ProcessorFactory(executor); Function extractionFunction = queryDefinition.getStatisticToCalculate(); @@ -125,7 +125,7 @@ public class QueryFactory { Class> resultType = (Class>)(Class) Set.class; return new ProcessorQuery, DataSource>(dataSource, stringMessages, locale, resultType, new AdditionalDimensionValuesQueryData(dataRetrieverChainDefinition.getID(), dimensions)) { @Override - protected Processor createFirstProcessor() { + protected Processor createChainAndReturnFirstProcessor() { ProcessorFactory processorFactory = new ProcessorFactory(executor); Processor, Map>> valueCollector = processorFactory.createGroupedDataCollectingAsSetProcessor(/*query*/ this); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/ProcessorQuery.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/ProcessorQuery.java index 120af96b3bc..2fd15c3df3b 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/ProcessorQuery.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/ProcessorQuery.java @@ -78,10 +78,10 @@ public abstract class ProcessorQuery implements Quer this.additionalData = additionalData; resultReceiver = new ProcessResultReceiver(); - firstProcessor = createFirstProcessor(); + firstProcessor = createChainAndReturnFirstProcessor(); } - protected abstract Processor createFirstProcessor(); + protected abstract Processor createChainAndReturnFirstProcessor(); @Override public QueryState getState() { From fb166e40cdf1de11a69d0f986c5f3b2b62212ac9 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 24 Aug 2015 12:22:43 +0200 Subject: [PATCH 092/504] Refactored EventActivity to use mobile event activities abstraction --- .../places/event/AbstractEventActivity.java | 19 +++ .../mobile/places/event/EventActivity.java | 161 +----------------- 2 files changed, 27 insertions(+), 153 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java index 781c542f360..ed190653d82 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -8,7 +8,9 @@ import java.util.List; import java.util.UUID; import com.google.gwt.activity.shared.AbstractActivity; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.shared.EventBus; +import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; @@ -30,6 +32,7 @@ import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; +import com.sap.sailing.gwt.ui.shared.media.MediaDTO; import com.sap.sailing.gwt.ui.shared.util.NullSafeComparableComparator; public abstract class AbstractEventActivity extends AbstractActivity implements Presenter { @@ -86,6 +89,22 @@ public abstract class AbstractEventActivity ex return sortedRegattas; } + protected final void initMedia(final EventView view) { + if (getCtx().getEventDTO().isHasMedia()) { + clientFactory.getHomeService().getMediaForEvent(getCtx().getEventDTO().getId(), new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + GWT.log("Failed to load media"); + } + + @Override + public void onSuccess(MediaDTO result) { + view.setMediaForImpressions(result.getPhotos().size(), result.getVideos().size(), result.getPhotos()); + } + }); + } + } + protected final PLACE getPlace() { return place; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java index fb527a67de4..f9991a7629a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java @@ -1,167 +1,22 @@ package com.sap.sailing.gwt.home.mobile.places.event; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.UUID; - -import com.google.gwt.activity.shared.AbstractActivity; -import com.google.gwt.core.shared.GWT; -import com.google.gwt.event.shared.EventBus; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.EventView.Presenter; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; -import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; -import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; -import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; -import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.shared.dispatch.news.LeaderboardNewsEntryDTO; -import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; -import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; -import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; -import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; -import com.sap.sailing.gwt.ui.shared.media.MediaDTO; -import com.sap.sailing.gwt.ui.shared.util.NullSafeComparableComparator; -public class EventActivity extends AbstractActivity implements Presenter { - private final MobileApplicationClientFactory clientFactory; - private final AbstractEventPlace place; - private UUID currentEventUUId; +public class EventActivity extends AbstractEventActivity implements Presenter { public EventActivity(AbstractEventPlace place, MobileApplicationClientFactory clientFactory) { - this.clientFactory = clientFactory; - this.place = place; + super(place, clientFactory); } - + @Override - public void start(final AcceptsOneWidget panel, final EventBus eventBus) { + protected EventViewBase initView() { final EventView view = new EventViewImpl(this); - panel.setWidget(view.asWidget()); - EventViewDTO event = getCtx().getEventDTO(); - String sailorInfoUrl = event.getSailorsInfoWebsiteURL(); - if (sailorInfoUrl != null && !sailorInfoUrl.isEmpty()) { - view.setSailorInfos(StringMessages.INSTANCE.sailorInfoLongText(), StringMessages.INSTANCE.sailorInfo(), sailorInfoUrl); - } else if (event.getType() == EventType.SERIES_EVENT) { - view.setSeriesNavigation(event.getSeriesName(), - clientFactory.getNavigator().getEventSeriesNavigation(event.getSeriesIdAsString(), null, false)); - } - if(event.getType() == EventType.MULTI_REGATTA) { - view.setQuickFinderValues(getSortedQuickFinderValues()); - } else if(event.getType() == EventType.SERIES_EVENT) { - view.setQuickFinderValues(event.getSeriesName(), event.getEventsOfSeries()); - } else { - view.hideQuickfinder(); - } - if (getCtx().getEventDTO().isHasMedia()) { - clientFactory.getHomeService().getMediaForEvent(currentEventUUId, new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - GWT.log("Failed to load media"); - } - - @Override - public void onSuccess(MediaDTO result) { - view.setMediaForImpressions(result.getPhotos().size(), result.getVideos().size(), result.getPhotos()); - } - }); - } - } - - private Collection getSortedQuickFinderValues() { - Collection regattas = place.getCtx().getEventDTO().getRegattas(); - List sortedRegattas = new ArrayList(regattas); - Collections.sort(sortedRegattas, new Comparator() { - private Comparator bootCatComparator = new NullSafeComparableComparator(); - @Override - public int compare(RegattaMetadataDTO o1, RegattaMetadataDTO o2) { - int bootCategoryComparison = bootCatComparator.compare(o1.getBoatCategory(), o2.getBoatCategory()); - return bootCategoryComparison == 0 ? o1.compareTo(o2) : bootCategoryComparison; - } - }); - return sortedRegattas; - } - - @Override - public EventContext getCtx() { - return place.getCtx(); + initSailorInfoOrSeriesNavigation(view); + initQuickfinder(view, true); + initMedia(view); + return view; } - public DispatchSystem getDispatch() { - return clientFactory.getDispatch(); - } - - - - @Override - public PlaceNavigation getMediaPageNavigation() { - if (getCtx().getEventDTO().getType() == EventType.MULTI_REGATTA) { - return clientFactory.getNavigator().getEventNavigation(new MultiregattaMediaPlace(getCtx()), null, false); - } else { - return clientFactory.getNavigator().getEventNavigation(new RegattaMediaPlace(getCtx()), null, false); - } - } - - @Override - public PlaceNavigation getNewsEntryPlaceNavigation(NewsEntryDTO entry) { - if(entry instanceof LeaderboardNewsEntryDTO) { - final LeaderboardNewsEntryDTO dto = (LeaderboardNewsEntryDTO) entry; - return getRegattaMiniLeaderboardNavigation(dto.getLeaderboardName()); - } - return null; - } - - @Override - public String getRaceViewerURL(String regattaName, String trackedRaceName) { - return null; - } - - @Override - public PlaceNavigation getRegattaLeaderboardNavigation(String leaderboardName) { - EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); - return clientFactory.getNavigator().getEventNavigation(new RegattaLeaderboardPlace(ctx), null, false); - } - - @Override - public PlaceNavigation getRegattaMiniLeaderboardNavigation(String leaderboardName) { - EventContext ctx = new EventContext(getCtx()).withRegattaId(leaderboardName).withRegattaAnalyticsManager(null); - return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(ctx), null, false); - } - - @Override - public PlaceNavigation getNewsPlaceNavigation(List values) { - return clientFactory.getNavigator().getEventLastestNewsNavigation(getCtx(), values, null, false); - } - - @Override - public PlaceNavigation getMiniOverallLeaderboardNavigation() { - return clientFactory.getNavigator().getSeriesNavigation(new SeriesMiniOverallLeaderboardPlace(new SeriesContext().withId(getCtx().getEventId())), null, false); - } - - @Override - public PlaceNavigation getMiniLeaderboardNavigation(UUID eventId) { - return clientFactory.getNavigator().getEventNavigation(new MiniLeaderboardPlace(eventId.toString(), null), null, false); - } - - @Override - public PlaceNavigation getRegattaRacesNavigation(String regattaId) { - EventContext ctx = new EventContext(getCtx()).withRegattaId(regattaId).withRegattaAnalyticsManager(null); - return clientFactory.getNavigator().getEventNavigation(new RegattaRacesPlace(ctx), null, false); - } - - @Override - public PlaceNavigation getEventNavigation() { - return clientFactory.getNavigator().getEventNavigation(new EventDefaultPlace(getCtx()), null, false); - } } From d519601bad8fc22e2f39e7dc60fe4d08a9fe8dbb Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 24 Aug 2015 15:59:48 +0200 Subject: [PATCH 093/504] Fullscreen mode for competitor analysis (work in progress) can be enabled/disalbed via experimental features flag --- .../regatta/tabs/RegattaCompetitorAnalyticsTabView.java | 4 +++- .../tabs/EventSeriesCompetitorAnalyticsTabView.java | 7 +++++-- .../sap/sailing/gwt/home/shared/ExperimentalFeatures.java | 5 ++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java index e3f3fd5d2c1..cad101520ef 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java @@ -22,6 +22,7 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager; import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder; +import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; import com.sap.sse.common.Util; @@ -44,7 +45,8 @@ public class RegattaCompetitorAnalyticsTabView extends SharedLeaderboardRegattaT } @UiField(provided = true) - protected OldCompetitorCharts competitorCharts = new OldCompetitorCharts(new OldCompetitorChartsDelegateFullscreenViewer()); + protected OldCompetitorCharts competitorCharts = new OldCompetitorCharts( + ExperimentalFeatures.SHOW_COMPETITOR_ANALYTICS_FULLSCREEN_VIEWER ? new OldCompetitorChartsDelegateFullscreenViewer() : null); @Override public Class getPlaceClassForActivation() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java index c537f0c6a49..1238f078bde 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java @@ -16,9 +16,11 @@ import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorCharts; +import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorChartsDelegateFullscreenViewer; import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView; import com.sap.sailing.gwt.home.client.shared.placeholder.Placeholder; +import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; import com.sap.sailing.gwt.ui.client.CompetitorSelectionModel; import com.sap.sse.common.Util; @@ -33,8 +35,9 @@ public class EventSeriesCompetitorAnalyticsTabView extends SharedLeaderboardEven private static MyBinder ourUiBinder = GWT.create(MyBinder.class); private SeriesView.Presenter currentPresenter; - @UiField - protected OldCompetitorCharts competitorCharts; + @UiField(provided = true) + protected OldCompetitorCharts competitorCharts = new OldCompetitorCharts( + ExperimentalFeatures.SHOW_COMPETITOR_ANALYTICS_FULLSCREEN_VIEWER ? new OldCompetitorChartsDelegateFullscreenViewer() : null); private final int MAX_COMPETITORS_IN_CHART = 30; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java index 0605d3b66b7..a95f7919496 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java @@ -25,5 +25,8 @@ public class ExperimentalFeatures { * Provide option to show races (competition format) on mobile devices */ public static final boolean SHOW_RACES_ON_MOBILE = false; - + /** + * Provide button to show the competitor analytics in fullscreen view (work in progress) + */ + public static final boolean SHOW_COMPETITOR_ANALYTICS_FULLSCREEN_VIEWER = false; } From 837e8bcd4cd38e2aba85237314f24eaf26ee1b55 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 24 Aug 2015 17:32:11 +0200 Subject: [PATCH 094/504] Added addtional String message --- .../main/java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 + .../java/com/sap/sailing/gwt/ui/client/StringMessages.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_de.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_ru.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_zh.properties | 1 + 5 files changed, 5 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 07f9dedcb86..5bfdae4f11d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1367,4 +1367,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String choosePresentation(); String openFullscreenView(); String closeFullscreenView(); + String progress(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 12a7120b8c1..d0f00985c09 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1336,3 +1336,4 @@ columnChart=Column Chart choosePresentation=Choose Presentation openFullscreenView=Open fullscreen view closeFullscreenView=Close fullscreen view +progress=Progress \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index c9cc4f78c6b..491900c6422 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1325,3 +1325,4 @@ columnChart=Säulendiagramm choosePresentation=Wähle Präsentation openFullscreenView=Vollbildansicht öffnen closeFullscreenView=Vollbildansicht schließen +progress=Fortschritt \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index ef6bf8e3247..59a14d9f8bf 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1272,3 +1272,4 @@ columnChart=Column Chart choosePresentation=Choose Presentation openFullscreenView=Open fullscreen view closeFullscreenView=Close fullscreen view +progress=Progress \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 3685346b410..6aadebf7a81 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1314,3 +1314,4 @@ openFullscreenView=Open fullscreen view closeFullscreenView=Close fullscreen view listFormatLabel=List format competitionFormatLabel=Competition format +progress=Progress \ No newline at end of file From edb2b055e20cac959a7a532bbf3e47e464fe90ad Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 24 Aug 2015 17:32:53 +0200 Subject: [PATCH 095/504] Added partials for mobile regatta progress --- .../mobile/partials/eventsteps/EventSteps.gss | 64 +++++++++++++++++++ .../partials/eventsteps/EventSteps.java | 31 +++++++++ .../partials/eventsteps/EventSteps.ui.xml | 12 ++++ .../partials/eventsteps/EventStepsPhase.java | 63 ++++++++++++++++++ .../eventsteps/EventStepsPhase.ui.xml | 18 ++++++ .../eventsteps/EventStepsPhaseFleet.java | 30 +++++++++ .../eventsteps/EventStepsPhaseFleet.ui.xml | 11 ++++ .../eventsteps/EventStepsResources.java | 27 ++++++++ 8 files changed, 256 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.ui.xml create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.ui.xml create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhaseFleet.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhaseFleet.ui.xml create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsResources.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss new file mode 100644 index 00000000000..9d126a3f358 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss @@ -0,0 +1,64 @@ +.eventsteps { + font-size: 0; + padding: 0; +} +.eventsteps .grid { + margin: 0; +} +.eventsteps_phases { + padding: 0 1rem 1rem 1rem; +} +.eventsteps_phases_phase { + font-size: 1rem; + width: 50%; + display: inline-block; + padding: 0 0.333333333333333em; + vertical-align: top; +} +.eventsteps_phases_phaseinactive { + color: #999; +} +.eventsteps_phases_phase:first-child { + padding-left: 0; +} +.eventsteps_phases_phase:last-child { + padding-right: 0; +} +.eventsteps_phases_phase_name { + font-size: 0.866666666666667em; + font-weight: 600; + text-transform: uppercase; + text-align: center; + padding: 1.153846153846154em 0; +} +.eventsteps_phases_phase_progressbar { + height: 1em; + width: 100%; + border: 1px solid #dedede; +} +.eventsteps_phases_phase_progressbar_fleet { + font-size: inherit; + border-bottom: 1px solid #dedede; +} +.eventsteps_phases_phase_progressbar_fleet:last-child { + border-bottom: none; +} +.eventsteps_phases_phase_progressbar_fleet_progress { + height: 100%; +} +.eventsteps_phases_phase_progress { + text-align: center; + margin-top: 0.666666666666667em; +} +img.eventsteps_phases_phase_progress_icon { + display: inline-block; + vertical-align: middle; + height: 1.133333333333333em; + width: 1.133333333333333em; + margin-right: 0.666666666666667em; +} +.eventsteps_phases_phase_progress_text { + font-size: 0.866666666666667em; + display: inline-block; + vertical-align: middle; +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java new file mode 100644 index 00000000000..1f6f555442a --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java @@ -0,0 +1,31 @@ +package com.sap.sailing.gwt.home.mobile.partials.eventsteps; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; +import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressSeriesDTO; + +public class EventSteps extends Composite { + + private static EventStepsUiBinder uiBinder = GWT.create(EventStepsUiBinder.class); + + interface EventStepsUiBinder extends UiBinder { + } + + @UiField SectionHeaderContent sectionHeaderUi; + private final MobileSection regattaProgessUi; + + public EventSteps(RegattaProgressDTO regattaProgress) { + initWidget(regattaProgessUi = uiBinder.createAndBindUi(this)); + sectionHeaderUi.setTitle(StringMessages.INSTANCE.progress()); + for (RegattaProgressSeriesDTO seriesProgress : regattaProgress.getSeries()) { + regattaProgessUi.addContent(new EventStepsPhase(seriesProgress)); + } + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.ui.xml new file mode 100644 index 00000000000..290326c7adc --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.ui.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java new file mode 100644 index 00000000000..0850588594a --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java @@ -0,0 +1,63 @@ +package com.sap.sailing.gwt.home.mobile.partials.eventsteps; + +import static com.sap.sailing.domain.common.LeaderboardNameConstants.DEFAULT_SERIES_NAME; + +import java.util.Map; +import java.util.Map.Entry; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.dom.client.ImageElement; +import com.google.gwt.dom.client.SpanElement; +import com.google.gwt.dom.client.Style.Display; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressFleetDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressSeriesDTO; +import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; + +public class EventStepsPhase extends Composite { + + private static final StringMessages I18N = StringMessages.INSTANCE; + private static EventStepsPhaseUiBinder uiBinder = GWT.create(EventStepsPhaseUiBinder.class); + + interface EventStepsPhaseUiBinder extends UiBinder { + } + + @UiField DivElement seriesContainerUi; + @UiField DivElement nameUi; + @UiField ImageElement checkUi; + @UiField SpanElement progressUi; + @UiField DivElement fleetsContainerUi; + + public EventStepsPhase(RegattaProgressSeriesDTO seriesProgress) { + initWidget(uiBinder.createAndBindUi(this)); + nameUi.setInnerText(DEFAULT_SERIES_NAME.equals(seriesProgress.getName()) ? I18N.races() : seriesProgress.getName()); + if (seriesProgress.isCompleted()) { + progressUi.setInnerText(String.valueOf(seriesProgress.getTotalRaceCount())); + } else { + checkUi.getStyle().setDisplay(Display.NONE); + int current = seriesProgress.getProgressRaceCount(), total = seriesProgress.getTotalRaceCount(); + progressUi.setInnerText(I18N.currentOfTotal(current, total)); + } + if (seriesProgress.getProgressRaceCount() == 0) { + seriesContainerUi.addClassName(EventStepsResources.INSTANCE.css().eventsteps_phases_phaseinactive()); + } + addFleetProgresses(seriesProgress.getFleetState(), seriesProgress.getTotalRaceCount()); + } + + private void addFleetProgresses(Map fleetStates, int totalRaceCount) { + double height = fleetStates.isEmpty() ? 100.0 : 100.0 / fleetStates.size(); + for (Entry fleetState : fleetStates.entrySet()) { + double finishedWidth = (fleetState.getValue().getFinishedRaceCount() * 100.0) / totalRaceCount; + double liveWidth = (fleetState.getValue().getFinishedAndLiveRaceCount() * 100.0) / totalRaceCount; + String fleetColor = fleetState.getKey().getFleetColor(); + EventStepsPhaseFleet fleet = new EventStepsPhaseFleet(finishedWidth, liveWidth, height, fleetColor); + fleetsContainerUi.appendChild(fleet.getElement()); + } + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.ui.xml new file mode 100644 index 00000000000..433605751b9 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.ui.xml @@ -0,0 +1,18 @@ + + + + + + + +
+
+
+
+ + +
+
+
+
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhaseFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhaseFleet.java new file mode 100644 index 00000000000..e352f389139 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhaseFleet.java @@ -0,0 +1,30 @@ +package com.sap.sailing.gwt.home.mobile.partials.eventsteps; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.UIObject; + +public class EventStepsPhaseFleet extends UIObject { + + private static EventStepsPhaseFleetUiBinder uiBinder = GWT.create(EventStepsPhaseFleetUiBinder.class); + + interface EventStepsPhaseFleetUiBinder extends UiBinder { + } + + @UiField DivElement progressLiveUi; + @UiField DivElement progressUi; + + public EventStepsPhaseFleet(double finishedWidth, double liveWidth, double height, String color) { + setElement(uiBinder.createAndBindUi(this)); + getElement().getStyle().setHeight(height, Unit.PCT); + progressUi.getStyle().setWidth(finishedWidth, Unit.PCT); + progressUi.getStyle().setBackgroundColor(color); + progressLiveUi.getStyle().setWidth(liveWidth, Unit.PCT); + progressLiveUi.getStyle().setBackgroundColor("#ff4040"); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhaseFleet.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhaseFleet.ui.xml new file mode 100644 index 00000000000..926017b3027 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhaseFleet.ui.xml @@ -0,0 +1,11 @@ + + + + + +
+
+
+
+
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsResources.java new file mode 100644 index 00000000000..1bc6a0dfbd2 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsResources.java @@ -0,0 +1,27 @@ +package com.sap.sailing.gwt.home.mobile.partials.eventsteps; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; + +public interface EventStepsResources extends ClientBundle { + public static final EventStepsResources INSTANCE = GWT.create(EventStepsResources.class); + + @Source("EventSteps.gss") + LocalCss css(); + + public interface LocalCss extends CssResource { + String eventsteps(); + String grid(); + String eventsteps_phases(); + String eventsteps_phases_phase(); + String eventsteps_phases_phaseinactive(); + String eventsteps_phases_phase_name(); + String eventsteps_phases_phase_progressbar(); + String eventsteps_phases_phase_progressbar_fleet(); + String eventsteps_phases_phase_progressbar_fleet_progress(); + String eventsteps_phases_phase_progress(); + String eventsteps_phases_phase_progress_icon(); + String eventsteps_phases_phase_progress_text(); + } +} From 87baaa12f780305f7536217b5e9f96499d7d71c0 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 24 Aug 2015 18:02:51 +0200 Subject: [PATCH 096/504] Adjusted partials for mobile regatta progress --- .../mobile/partials/eventsteps/EventSteps.gss | 2 +- .../mobile/partials/eventsteps/EventSteps.java | 17 ++++++++++++----- .../partials/eventsteps/EventStepsPhase.java | 3 +-- .../partials/eventsteps/EventStepsPhase.ui.xml | 15 ++++++--------- .../eventsteps/EventStepsPhaseFleet.ui.xml | 6 +++--- 5 files changed, 23 insertions(+), 20 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss index 9d126a3f358..f606a009c9d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss @@ -48,7 +48,7 @@ } .eventsteps_phases_phase_progress { text-align: center; - margin-top: 0.666666666666667em; + margin: 0.666666666666667em 0; } img.eventsteps_phases_phase_progress_icon { display: inline-block; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java index 1f6f555442a..11eb8c1a6f0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java @@ -4,13 +4,14 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressDTO; import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressSeriesDTO; +import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaWithProgressDTO; -public class EventSteps extends Composite { +public class EventSteps extends Composite implements RefreshableWidget { private static EventStepsUiBinder uiBinder = GWT.create(EventStepsUiBinder.class); @@ -20,10 +21,16 @@ public class EventSteps extends Composite { @UiField SectionHeaderContent sectionHeaderUi; private final MobileSection regattaProgessUi; - public EventSteps(RegattaProgressDTO regattaProgress) { + public EventSteps() { + EventStepsResources.INSTANCE.css().ensureInjected(); initWidget(regattaProgessUi = uiBinder.createAndBindUi(this)); - sectionHeaderUi.setTitle(StringMessages.INSTANCE.progress()); - for (RegattaProgressSeriesDTO seriesProgress : regattaProgress.getSeries()) { + sectionHeaderUi.setSectionTitle(StringMessages.INSTANCE.progress()); + } + + @Override + public void setData(RegattaWithProgressDTO data) { + regattaProgessUi.clearContent(); + for (RegattaProgressSeriesDTO seriesProgress : data.getProgress().getSeries()) { regattaProgessUi.addContent(new EventStepsPhase(seriesProgress)); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java index 0850588594a..ed2f315dbf6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java @@ -27,7 +27,6 @@ public class EventStepsPhase extends Composite { interface EventStepsPhaseUiBinder extends UiBinder { } - @UiField DivElement seriesContainerUi; @UiField DivElement nameUi; @UiField ImageElement checkUi; @UiField SpanElement progressUi; @@ -44,7 +43,7 @@ public class EventStepsPhase extends Composite { progressUi.setInnerText(I18N.currentOfTotal(current, total)); } if (seriesProgress.getProgressRaceCount() == 0) { - seriesContainerUi.addClassName(EventStepsResources.INSTANCE.css().eventsteps_phases_phaseinactive()); + addStyleName(EventStepsResources.INSTANCE.css().eventsteps_phases_phaseinactive()); } addFleetProgresses(seriesProgress.getFleetState(), seriesProgress.getTotalRaceCount()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.ui.xml index 433605751b9..03cc9fbe001 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.ui.xml @@ -4,15 +4,12 @@ - - -
-
-
-
- - -
+ +
+
+
+ +
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhaseFleet.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhaseFleet.ui.xml index 926017b3027..b60b3f3153c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhaseFleet.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhaseFleet.ui.xml @@ -4,8 +4,8 @@ -
-
-
+
+
+
\ No newline at end of file From a4bd0b5157529a6900b6bc60ecd36784ef5c5ab4 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 24 Aug 2015 18:14:59 +0200 Subject: [PATCH 097/504] Fixed behavior when refreshing mobile races view --- .../mobile/partials/regattacompetition/RegattaCompetition.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java index a3dce38b999..96128927259 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java @@ -30,6 +30,7 @@ public class RegattaCompetition extends Composite implements RefreshableWidget data) { + regattaSeriesContainerUi.clear(); for (RaceCompetitionFormatSeriesDTO series : data.getValues()) { RegattaCompetitionSeries regattaCompetitionSeries = new RegattaCompetitionSeries(series); int fleetCount = series.getFleets().size(); From 35a950689e92741ecd3579907d67524f047f2d55 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 09:52:33 +0200 Subject: [PATCH 098/504] Fixed css style for mobile races view --- .../mobile/partials/regattacompetition/RegattaCompetition.gss | 3 --- 1 file changed, 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss index 67735002d45..01a26e9bc85 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss @@ -63,9 +63,6 @@ .regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_race_arrow { display: block; } -.regattacompetition_phase_fleet a { - color: #f6f9fc; -} .regattacompetition_phase_fleet_title { font-size: 1.066666666666667em; font-weight: 700; From 5a324597288ad26887d75ae7b4c86f3ec745c665 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 10:25:32 +0200 Subject: [PATCH 099/504] Fixed css style for mobile regatta progress --- .../mobile/partials/eventsteps/EventSteps.gss | 19 ++++++++----------- .../partials/eventsteps/EventSteps.java | 1 + 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss index f606a009c9d..8ca5f79a5b2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss @@ -12,36 +12,33 @@ font-size: 1rem; width: 50%; display: inline-block; - padding: 0 0.333333333333333em; + padding: 0 0.666666666666666em; vertical-align: top; } .eventsteps_phases_phaseinactive { color: #999; } -.eventsteps_phases_phase:first-child { - padding-left: 0; +.eventsteps_phases_phase:nth-child(2n-1) { + padding-right: 0.333333333333333em; } -.eventsteps_phases_phase:last-child { - padding-right: 0; +.eventsteps_phases_phase:nth-child(2n) { + padding-left: 0.333333333333333em; } .eventsteps_phases_phase_name { font-size: 0.866666666666667em; font-weight: 600; text-transform: uppercase; text-align: center; - padding: 1.153846153846154em 0; + padding: .666666666666667em 0; } .eventsteps_phases_phase_progressbar { - height: 1em; + height: 1.266666666666667em; width: 100%; border: 1px solid #dedede; + padding: 1px; } .eventsteps_phases_phase_progressbar_fleet { font-size: inherit; - border-bottom: 1px solid #dedede; -} -.eventsteps_phases_phase_progressbar_fleet:last-child { - border-bottom: none; } .eventsteps_phases_phase_progressbar_fleet_progress { height: 100%; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java index 11eb8c1a6f0..7fdb2c1160a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java @@ -25,6 +25,7 @@ public class EventSteps extends Composite implements RefreshableWidget Date: Tue, 25 Aug 2015 11:36:16 +0200 Subject: [PATCH 100/504] Fixed unnecessarry shown text in races list --- .../client/place/event/regatta/tabs/RegattaRacesTabView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index 2894c6861ed..51d6f2c6143 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -162,8 +162,8 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView Date: Tue, 25 Aug 2015 13:06:37 +0200 Subject: [PATCH 101/504] Refactored mobile event view and added regatta progress for single regatta and series events --- .../mobile/places/event/EventViewImpl.java | 68 +++++++++++-------- .../mobile/places/event/EventViewImpl.ui.xml | 12 ---- 2 files changed, 40 insertions(+), 40 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java index fe241ed2273..14e9be0fd15 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java @@ -2,12 +2,10 @@ package com.sap.sailing.gwt.home.mobile.places.event; import java.util.Collection; -import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Display; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.SimplePanel; -import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.Panel; +import com.sap.sailing.gwt.home.mobile.partials.eventsteps.EventSteps; import com.sap.sailing.gwt.home.mobile.partials.impressions.Impressions; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatus; @@ -19,6 +17,7 @@ import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewNewsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewStageAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventStatisticsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaWithProgressAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattasAndLiveRacesForEventAction; import com.sap.sailing.gwt.ui.shared.general.EventState; import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; @@ -26,57 +25,70 @@ import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; public class EventViewImpl extends AbstractEventView implements EventView { private static final StringMessages MSG = StringMessages.INSTANCE; - private static StartPageViewUiBinder uiBinder = GWT.create(StartPageViewUiBinder.class); - interface StartPageViewUiBinder extends UiBinder { - } - - @UiField(provided = true) EventOverviewStage overviewStageUi; - @UiField SimplePanel listContentUi; - @UiField Impressions impressionsUi; - @UiField(provided = true) StatisticsBox statisticsBoxUi; - @UiField(provided = true) UpdatesBox updatesBoxUi; + private EventOverviewStage overviewStageUi; + private EventSteps eventStepsUi; + private Impressions impressionsUi; + private StatisticsBox statisticsBoxUi; + private UpdatesBox updatesBoxUi; public EventViewImpl(EventView.Presenter presenter) { super(presenter, false, false); - this.setupOverviewStage(); - this.setupUpdateBox(); - this.setupStatisticsBox(); - setViewContent(uiBinder.createAndBindUi(this)); - this.setupListContent(); - impressionsUi.getElement().getStyle().setDisplay(Display.NONE); + FlowPanel container = new FlowPanel(); + this.setupOverviewStage(container); + this.setupProgress(container); + this.setupListContent(container); + this.setupUpdateBox(container); + this.setupImpressions(container); + this.setupStatisticsBox(container); + setViewContent(container); } - private void setupOverviewStage() { + private void setupProgress(Panel container) { + eventStepsUi = new EventSteps(); + if (!isMultiRegattaEvent()) { + refreshManager.add(eventStepsUi, new GetRegattaWithProgressAction(getEventId(), getRegattaId())); + container.add(eventStepsUi); + } + } + + private void setupOverviewStage(Panel container) { overviewStageUi = new EventOverviewStage(currentPresenter); refreshManager.add(overviewStageUi, new GetEventOverviewStageAction(getEventId())); + container.add(overviewStageUi); } - private void setupListContent() { + private void setupListContent(Panel container) { if (isMultiRegattaEvent()) { RegattaStatus regattaStatus = new RegattaStatus(currentPresenter); - listContentUi.add(regattaStatus); + container.add(regattaStatus); refreshManager.add(regattaStatus, new GetRegattasAndLiveRacesForEventAction(getEventId())); } else { MinileaderboardBox miniLeaderboard = new MinileaderboardBox(false); miniLeaderboard.setAction(MSG.showAll(), currentPresenter.getRegattaMiniLeaderboardNavigation(getRegattaId())); - listContentUi.add(miniLeaderboard); + container.add(miniLeaderboard); refreshManager.add(miniLeaderboard, new GetMiniLeaderbordAction(getEventId(), getRegattaId(), 3)); } } - private void setupUpdateBox() { + private void setupUpdateBox(Panel container) { updatesBoxUi = new UpdatesBox(currentPresenter, refreshManager); if (currentPresenter.getCtx().getEventDTO().getState() == EventState.RUNNING) { refreshManager.add(updatesBoxUi, new GetEventOverviewNewsAction(getEventId(), 2)); - } else { - updatesBoxUi.removeFromParent(); + container.add(updatesBoxUi); } } - private void setupStatisticsBox() { + private void setupImpressions(Panel container) { + impressionsUi = new Impressions(); + impressionsUi.getElement().getStyle().setDisplay(Display.NONE); + container.add(impressionsUi); + } + + private void setupStatisticsBox(Panel container) { statisticsBoxUi = new StatisticsBox(isMultiRegattaEvent()); refreshManager.add(statisticsBoxUi, new GetEventStatisticsAction(getEventId())); + container.add(statisticsBoxUi); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.ui.xml deleted file mode 100644 index 4eb6d751cbd..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.ui.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - From 2f33b6a8cf3a3a5f506b3d5de7e0159afa9ddcc3 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 13:15:17 +0200 Subject: [PATCH 102/504] Regatta progress on mobile event view can be enabled/disalbed via experimental features flag --- .../sailing/gwt/home/mobile/places/event/EventViewImpl.java | 4 +++- .../com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java index 14e9be0fd15..86e8426af6f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java @@ -12,6 +12,7 @@ import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatus; import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBox; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.UpdatesBox; import com.sap.sailing.gwt.home.mobile.places.event.overview.EventOverviewStage; +import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewNewsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewStageAction; @@ -46,7 +47,8 @@ public class EventViewImpl extends AbstractEventView implem private void setupProgress(Panel container) { eventStepsUi = new EventSteps(); - if (!isMultiRegattaEvent()) { + boolean showRegattaProgress = !isMultiRegattaEvent() && ExperimentalFeatures.SHOW_REGATTA_PROGRESS_ON_MOBILE; + if (showRegattaProgress) { refreshManager.add(eventStepsUi, new GetRegattaWithProgressAction(getEventId(), getRegattaId())); container.add(eventStepsUi); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java index a95f7919496..00667cd8eb1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java @@ -25,6 +25,10 @@ public class ExperimentalFeatures { * Provide option to show races (competition format) on mobile devices */ public static final boolean SHOW_RACES_ON_MOBILE = false; + /** + * Provide option to show the regatta progress for single regatta and series event on mobile devices + */ + public static final boolean SHOW_REGATTA_PROGRESS_ON_MOBILE = false; /** * Provide button to show the competitor analytics in fullscreen view (work in progress) */ From 653a2f606c72ae9737b3860b4146c676c15d30ce Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 15:16:36 +0200 Subject: [PATCH 103/504] Added addtional String message --- .../main/java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 + .../java/com/sap/sailing/gwt/ui/client/StringMessages.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_de.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_ru.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_zh.properties | 1 + 5 files changed, 5 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 5bfdae4f11d..6e5142075e5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1320,6 +1320,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip(); String sailorInfo(); String sailorInfoLongText(); + String regattaQuickfinder(); String resultsQuickfinder(); String racesQuickfinder(); String statistics(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index d0f00985c09..38d94bd93c2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1290,6 +1290,7 @@ raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Calc.Time raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Calculated time at estimated arrival at the competitor that is currently farthest ahead in the race;\nestimation based on average VMG in current leg and equal (calculated) performance to fastest boat in all subsequent legs sailorInfo=Sailor Info sailorInfoLongText=Official Results, Protests,\nNotice Board, Sailor weather: +regattaQuickfinder=Regatta Quickfinder resultsQuickfinder=Results Quickfinder racesQuickfinder=Races Quickfinder statistics=Statistics diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 491900c6422..dd63a8034da 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1279,6 +1279,7 @@ raceCalcluatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Ber.Zeit@ raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Berechnete Zeit bei erwarteter Ankunft am derzeit absolut in Führung liegenden Teilnehmers;\nSchätzung basierend auf durchschnittlichem VMG im aktuellen Bahnschenkel und gleicher verrechneter Geschwindigket wie der absolut in Führung liegende Teilnehmer\nfür alle nachfolgenden Bahnschenkel sailorInfo=Segler Infos sailorInfoLongText=Offizielle Ergebnisse, Proteste,\nNotice Board, Segler-Wetter: +regattaQuickfinder=Regatta-Schnellauswahl resultsQuickfinder=Ergebnis-Schnellauswahl racesQuickfinder=Wettfahrt-Schnellauswahl statistics=Statistiken diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 59a14d9f8bf..30d41fe1ed8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1224,6 +1224,7 @@ raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Calc.Time raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Calculated time at estimated arrival at the competitor that is currently farthest ahead in the race;\nestimation based on average VMG in current leg and equal (calculated) performance to fastest boat in all subsequent legs sailorInfo=Моряки информация sailorInfoLongText=Official Results, Protests,\nNotice Board, Sailor weather: +regattaQuickfinder=Regatta Quickfinder resultsQuickfinder=Results Quickfinder racesQuickfinder=Races Quickfinder statistics=Statistics diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 6aadebf7a81..3be502a4d97 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1280,6 +1280,7 @@ sailorInfoLongText=Find here Notice Board,\nProtests, Sailor weather: winner=Winner durationPlain=Duration finishedRaces=Finished Races +regattaQuickfinder=Regatta Quickfinder resultsQuickfinder=Results Quickfinder racesQuickfinder=Races Quickfinder statistics=Statistics From 5d3a451d732848ccd403f0428d460da6b346ec1b Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 15:18:12 +0200 Subject: [PATCH 104/504] Extended QuickfinderPresenter to be able to navigate between regatta overviews --- .../gwt/home/mobile/places/QuickfinderPresenter.java | 10 ++++++++++ .../places/RegattaOverviewNavigationProvider.java | 9 +++++++++ 2 files changed, 19 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/RegattaOverviewNavigationProvider.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java index 7e33236a8ee..1827c4d5399 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java @@ -32,6 +32,16 @@ public class QuickfinderPresenter { }, regattaMetadatas); } + public static QuickfinderPresenter getForRegattaOverview(Quickfinder quickfinder, + final RegattaOverviewNavigationProvider navigator, Collection regattaMetadatas) { + return new QuickfinderPresenter(quickfinder, MSG.regattaQuickfinder(), new RegattaPlaceNaviationProvider() { + @Override + public PlaceNavigation getPlaceNavigation(String regattaId) { + return navigator.getRegattaOverviewNavigation(regattaId); + } + }, regattaMetadatas); + } + public static QuickfinderPresenter getForSeriesLeaderboards(Quickfinder quickfinder, String seriesName, SeriesLeaderboardNavigationProvider navigator, Collection eventsOfSeries) { return new QuickfinderPresenter(quickfinder, navigator, seriesName, eventsOfSeries); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/RegattaOverviewNavigationProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/RegattaOverviewNavigationProvider.java new file mode 100644 index 00000000000..82d17a49f12 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/RegattaOverviewNavigationProvider.java @@ -0,0 +1,9 @@ +package com.sap.sailing.gwt.home.mobile.places; + +import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; + +public interface RegattaOverviewNavigationProvider { + + PlaceNavigation getRegattaOverviewNavigation(String regattaId); + +} From 6fde74c71bc0db47466b022f7953abbcdeca5cf3 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 15:39:22 +0200 Subject: [PATCH 105/504] Added mobile overview for regattas in multi regatta events --- .../places/regatta/RegattaActivity.java | 21 +++++ .../mobile/places/regatta/RegattaView.java | 12 +++ .../places/regatta/RegattaViewImpl.java | 85 +++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaActivity.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaView.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaViewImpl.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaActivity.java new file mode 100644 index 00000000000..9f8cc958236 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaActivity.java @@ -0,0 +1,21 @@ +package com.sap.sailing.gwt.home.mobile.places.regatta; + +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; +import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; +import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; + +public class RegattaActivity extends AbstractEventActivity implements RegattaView.Presenter { + + public RegattaActivity(RegattaOverviewPlace place, MobileApplicationClientFactory clientFactory) { + super(place, clientFactory); + } + + @Override + protected EventViewBase initView() { + final RegattaView view = new RegattaViewImpl(this); + initQuickfinder(view, true); + return view; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaView.java new file mode 100644 index 00000000000..fabab53fb7a --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaView.java @@ -0,0 +1,12 @@ +package com.sap.sailing.gwt.home.mobile.places.regatta; + +import com.sap.sailing.gwt.home.mobile.partials.updatesBox.NewsItemLinkProvider; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; + +public interface RegattaView extends EventViewBase { + + public interface Presenter extends EventViewBase.Presenter, NewsItemLinkProvider { + + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaViewImpl.java new file mode 100644 index 00000000000..b0044ed7c0c --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaViewImpl.java @@ -0,0 +1,85 @@ +package com.sap.sailing.gwt.home.mobile.places.regatta; + +import java.util.Collection; + +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.Panel; +import com.sap.sailing.gwt.home.mobile.partials.eventsteps.EventSteps; +import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; +import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; +import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; +import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; +import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBox; +import com.sap.sailing.gwt.home.mobile.partials.updatesBox.UpdatesBox; +import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; +import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewNewsAction; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventStatisticsAction; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaWithProgressAction; +import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; +import com.sap.sailing.gwt.ui.shared.general.EventState; + +public class RegattaViewImpl extends AbstractEventView implements RegattaView { + + private EventSteps regattaProgressUi; + private MinileaderboardBox leaderboardUi; + private UpdatesBox latestNewsUi; + private StatisticsBox statisticsUi; + + public RegattaViewImpl(RegattaView.Presenter presenter) { + super(presenter, true, true); + Panel container = new FlowPanel(); + this.initRegattaProgressUi(container); + this.initLeaderboardUi(container); + this.initLatestNewsUi(container); + this.initRacesNavigation(container); + this.initStatisticsUi(container); + setViewContent(container); + } + + private void initRegattaProgressUi(Panel container) { + regattaProgressUi = new EventSteps(); + refreshManager.add(regattaProgressUi, new GetRegattaWithProgressAction(getEventId(), getRegattaId())); + container.add(regattaProgressUi); + } + + private void initLeaderboardUi(Panel container) { + leaderboardUi = new MinileaderboardBox(false); + leaderboardUi.setAction(StringMessages.INSTANCE.showAll(), currentPresenter.getRegattaMiniLeaderboardNavigation(getRegattaId())); + refreshManager.add(leaderboardUi, new GetMiniLeaderbordAction(getEventId(), getRegattaId(), 3)); + container.add(leaderboardUi); + } + + private void initLatestNewsUi(Panel container) { + latestNewsUi = new UpdatesBox(currentPresenter, refreshManager); + if (currentPresenter.getCtx().getEventDTO().getState() == EventState.RUNNING) { + refreshManager.add(latestNewsUi, new GetEventOverviewNewsAction(getEventId(), 2)); + container.add(latestNewsUi); + } + } + + private void initRacesNavigation(Panel container) { + MobileSection mobileSection = new MobileSection(); + SectionHeaderContent header = new SectionHeaderContent(); + header.setSectionTitle(StringMessages.INSTANCE.racesCount(currentPresenter.getCtx().getRegatta().getRaceCount())); + header.setInfoText(StringMessages.INSTANCE.showAll()); + header.setClickAction(currentPresenter.getRegattaRacesNavigation(getRegattaId())); + mobileSection.addHeader(header); + container.add(mobileSection); + } + + private void initStatisticsUi(Panel container) { + statisticsUi = new StatisticsBox(false); + // FIXME only show statistics of the regatta + refreshManager.add(statisticsUi, new GetEventStatisticsAction(getEventId(), true)); + container.add(statisticsUi); + } + + @Override + protected void setQuickFinderValues(Quickfinder quickfinder, Collection regattaMetadatas) { + QuickfinderPresenter.getForRegattaOverview(quickfinder, currentPresenter, regattaMetadatas); + } + +} From 7ea1aec358da236a7d70e22b4eadac683491e068 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 15:40:49 +0200 Subject: [PATCH 106/504] Regatta overview integration which can be enabled/disabled via experimental features flag --- .../mobile/partials/regattaStatus/RegattaStatus.java | 4 ++-- .../mobile/places/event/AbstractEventActivity.java | 6 ++++++ .../home/mobile/places/event/EventActivityProxy.java | 4 ++++ .../gwt/home/mobile/places/event/EventView.java | 3 +-- .../gwt/home/mobile/places/event/EventViewBase.java | 12 ++++++++---- .../gwt/home/mobile/places/races/RacesView.java | 3 +-- .../gwt/home/shared/ExperimentalFeatures.java | 6 +++++- 7 files changed, 27 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java index e3af0ac31e4..d9cd236707c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java @@ -61,8 +61,8 @@ public class RegattaStatus extends Composite implements RefreshableWidget placeNavigation = ExperimentalFeatures.SHOW_RACES_ON_MOBILE ? - presenter.getRegattaRacesNavigation(regatta.getId()) : presenter.getRegattaMiniLeaderboardNavigation(regatta.getId()); + PlaceNavigation placeNavigation = ExperimentalFeatures.SHOW_REGATTA_OVERVIEW_ON_MOBILE ? + presenter.getRegattaOverviewNavigation(regatta.getId()) : presenter.getRegattaMiniLeaderboardNavigation(regatta.getId()); RegattaStatusRegatta regattaWidget = new RegattaStatusRegatta(regatta, placeNavigation); container.addContent(regattaWidget); return regattaWidget; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java index ed190653d82..518bc4179b2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -18,6 +18,7 @@ import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; @@ -165,6 +166,11 @@ public abstract class AbstractEventActivity ex return null; } + public PlaceNavigation getRegattaOverviewNavigation(String regattaId) { + EventContext ctx = new EventContext(getCtx()).withRegattaId(regattaId).withRegattaAnalyticsManager(null); + return clientFactory.getNavigator().getEventNavigation(new RegattaOverviewPlace(ctx), null, false); + } + public PlaceNavigation getRegattaRacesNavigation(String regattaId) { EventContext ctx = new EventContext(getCtx()).withRegattaId(regattaId).withRegattaAnalyticsManager(null); return clientFactory.getNavigator().getEventNavigation(new RegattaRacesPlace(ctx), null, false); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java index 66dde3319cb..b6ad9acb766 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java @@ -7,6 +7,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback; import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsActivity; @@ -14,6 +15,7 @@ import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardActivity; import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.races.RacesActivity; +import com.sap.sailing.gwt.home.mobile.places.regatta.RegattaActivity; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; @@ -59,6 +61,8 @@ public class EventActivityProxy extends AbstractActivityProxy { public void onSuccess() { if (currentPlace instanceof EventDefaultPlace) { super.onSuccess(new EventActivity(currentPlace, clientFactory)); + } else if (currentPlace instanceof RegattaOverviewPlace) { + super.onSuccess(new RegattaActivity((RegattaOverviewPlace) currentPlace, clientFactory)); } else if (currentPlace instanceof RegattaRacesPlace) { super.onSuccess(new RacesActivity((RegattaRacesPlace) currentPlace, clientFactory)); } else if (currentPlace instanceof MiniLeaderboardPlace) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java index 721f99d00bc..6eb33966ab3 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java @@ -3,7 +3,6 @@ package com.sap.sailing.gwt.home.mobile.places.event; import java.util.Collection; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.NewsItemLinkProvider; -import com.sap.sailing.gwt.home.mobile.places.RegattaRacesNavigationProvider; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; @@ -11,7 +10,7 @@ public interface EventView extends EventViewBase { void setMediaForImpressions(int nrOfImages, int nrOfVideos, Collection images); - public interface Presenter extends EventViewBase .Presenter, NewsItemLinkProvider, RegattaRacesNavigationProvider { + public interface Presenter extends EventViewBase.Presenter, NewsItemLinkProvider { String getRaceViewerURL(String regattaName, String trackedRaceName); PlaceNavigation getMediaPageNavigation(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java index 27fb0231c3b..663431134f0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java @@ -5,6 +5,8 @@ import java.util.Collection; import com.google.gwt.user.client.ui.IsWidget; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.mobile.places.RegattaLeaderboardNavigationProvider; +import com.sap.sailing.gwt.home.mobile.places.RegattaOverviewNavigationProvider; +import com.sap.sailing.gwt.home.mobile.places.RegattaRacesNavigationProvider; import com.sap.sailing.gwt.home.mobile.places.SeriesLeaderboardNavigationProvider; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; @@ -23,12 +25,14 @@ public interface EventViewBase extends IsWidget { void setSeriesNavigation(String buttonLabel, PlaceNavigation placeNavigation); - public interface Presenter extends RegattaLeaderboardNavigationProvider, SeriesLeaderboardNavigationProvider { + public interface Presenter extends RegattaLeaderboardNavigationProvider, SeriesLeaderboardNavigationProvider, + RegattaRacesNavigationProvider, RegattaOverviewNavigationProvider { + + EventContext getCtx(); + + DispatchSystem getDispatch(); PlaceNavigation getEventNavigation(); - DispatchSystem getDispatch(); - - EventContext getCtx(); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java index 5a2744226bd..ec66675a7b4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java @@ -1,11 +1,10 @@ package com.sap.sailing.gwt.home.mobile.places.races; -import com.sap.sailing.gwt.home.mobile.places.RegattaRacesNavigationProvider; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; public interface RacesView extends EventViewBase { - public interface Presenter extends EventViewBase.Presenter, RegattaRacesNavigationProvider { + public interface Presenter extends EventViewBase.Presenter { } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java index 00667cd8eb1..c2ef2b0a98d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java @@ -24,7 +24,11 @@ public class ExperimentalFeatures { /** * Provide option to show races (competition format) on mobile devices */ - public static final boolean SHOW_RACES_ON_MOBILE = false; + public static final boolean SHOW_RACES_ON_MOBILE = true; + /** + * Provide option to show the overview for regattas in multi regatta events on mobile devices + */ + public static final boolean SHOW_REGATTA_OVERVIEW_ON_MOBILE = false; /** * Provide option to show the regatta progress for single regatta and series event on mobile devices */ From 21efae1fc8783cae9080bdfff15f7585127586fe Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 15:58:39 +0200 Subject: [PATCH 107/504] Refactoring - Updated references --- .../gwt/home/mobile/partials/countdown/Countdown.java | 6 +++--- .../home/mobile/partials/regattaStatus/RegattaStatus.java | 2 +- .../mobile/places/event/overview/EventOverviewStage.java | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/countdown/Countdown.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/countdown/Countdown.java index b10a4a32244..9f4a43bd461 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/countdown/Countdown.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/countdown/Countdown.java @@ -19,7 +19,7 @@ import com.sap.sailing.gwt.common.client.SharedResources.MainCss; import com.sap.sailing.gwt.common.client.i18n.TextMessages; import com.sap.sailing.gwt.home.client.shared.stage.StageResources; import com.sap.sailing.gwt.home.mobile.partials.countdown.CountdownResources.LocalCss; -import com.sap.sailing.gwt.home.mobile.places.event.EventView; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewRaceTickerStageDTO; @@ -44,7 +44,7 @@ public class Countdown extends Composite { @UiField(provided = true) NavigationAnchor navigationButton; @UiField DivElement image; - public Countdown(EventView.Presenter presenter) { + public Countdown(EventViewBase.Presenter presenter) { CSS.ensureInjected(); this.navigationButton = new NavigationAnchor(presenter); initWidget(uiBinder.createAndBindUi(this)); @@ -89,7 +89,7 @@ public class Countdown extends Composite { private PlaceNavigation currentPlaceNavigation; - private NavigationAnchor(EventView.Presenter presenter) { + private NavigationAnchor(EventViewBase.Presenter presenter) { // we don't use it yet, commented out to avoid warning // this.presenter = presenter; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java index d9cd236707c..3be44397347 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java @@ -12,7 +12,7 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.Refreshab import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton; import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton.ToggleButtonCommand; -import com.sap.sailing.gwt.home.mobile.places.event.EventView.Presenter; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRaceDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java index ae1c6c0b80c..eecadd92580 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java @@ -10,7 +10,7 @@ import com.sap.sailing.gwt.home.client.place.event.partials.message.Message; import com.sap.sailing.gwt.home.client.place.event.partials.video.Video; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.countdown.Countdown; -import com.sap.sailing.gwt.home.mobile.places.event.EventView; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewStageContentDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewStageDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewTickerStageDTO; @@ -28,7 +28,7 @@ public class EventOverviewStage extends Composite implements RefreshableWidget Date: Tue, 25 Aug 2015 16:02:20 +0200 Subject: [PATCH 108/504] Refactoring - Moved mobile event overview in subpackage --- .../gwt/home/mobile/places/event/AbstractEventActivity.java | 1 + .../gwt/home/mobile/places/event/EventActivityProxy.java | 1 + .../mobile/places/event/{ => overview}/EventActivity.java | 6 ++++-- .../home/mobile/places/event/{ => overview}/EventView.java | 4 +++- .../mobile/places/event/{ => overview}/EventViewImpl.java | 4 ++-- 5 files changed, 11 insertions(+), 5 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/{ => overview}/EventActivity.java (69%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/{ => overview}/EventView.java (74%) mode change 100755 => 100644 rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/{ => overview}/EventViewImpl.java (97%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java index 518bc4179b2..ca6bfaa259a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -23,6 +23,7 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlac import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; +import com.sap.sailing.gwt.home.mobile.places.event.overview.EventView; import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java index b6ad9acb766..7523eb53c7a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java @@ -10,6 +10,7 @@ import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; +import com.sap.sailing.gwt.home.mobile.places.event.overview.EventActivity; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsActivity; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardActivity; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventActivity.java similarity index 69% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventActivity.java index f9991a7629a..6adc9225f86 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventActivity.java @@ -1,8 +1,10 @@ -package com.sap.sailing.gwt.home.mobile.places.event; +package com.sap.sailing.gwt.home.mobile.places.event.overview; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; -import com.sap.sailing.gwt.home.mobile.places.event.EventView.Presenter; +import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; +import com.sap.sailing.gwt.home.mobile.places.event.overview.EventView.Presenter; public class EventActivity extends AbstractEventActivity implements Presenter { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventView.java old mode 100755 new mode 100644 similarity index 74% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventView.java index 6eb33966ab3..33059db7123 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventView.java @@ -1,8 +1,10 @@ -package com.sap.sailing.gwt.home.mobile.places.event; +package com.sap.sailing.gwt.home.mobile.places.event.overview; import java.util.Collection; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.NewsItemLinkProvider; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java index 86e8426af6f..6655f907eae 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places.event; +package com.sap.sailing.gwt.home.mobile.places.event.overview; import java.util.Collection; @@ -11,7 +11,7 @@ import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardB import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatus; import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBox; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.UpdatesBox; -import com.sap.sailing.gwt.home.mobile.places.event.overview.EventOverviewStage; +import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewNewsAction; From a29e4b81ce98ea215c62fa7a8e637ff61bdda19d Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 16:22:18 +0200 Subject: [PATCH 109/504] Refactoring - Moved mobile mini leaderboard in subpackage --- .../gwt/home/client/place/event/EventActivityProxy.java | 2 +- .../gwt/home/mobile/places/event/AbstractEventActivity.java | 2 +- .../gwt/home/mobile/places/event/EventActivityProxy.java | 4 ++-- .../{ => event}/minileaderboard/MiniLeaderboardActivity.java | 4 ++-- .../{ => event}/minileaderboard/MiniLeaderboardPlace.java | 2 +- .../{ => event}/minileaderboard/MiniLeaderboardView.java | 2 +- .../{ => event}/minileaderboard/MiniLeaderboardViewImpl.java | 2 +- .../sailing/gwt/home/mobile/places/series/SeriesActivity.java | 2 +- .../minileaderboard/SeriesMiniOverallLeaderboardActivity.java | 2 +- .../sailing/gwt/home/shared/app/ApplicationHistoryMapper.java | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/minileaderboard/MiniLeaderboardActivity.java (80%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/minileaderboard/MiniLeaderboardPlace.java (94%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/minileaderboard/MiniLeaderboardView.java (75%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/minileaderboard/MiniLeaderboardViewImpl.java (93%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java index d3b5c5449b0..61208f155f9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java @@ -17,8 +17,8 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlac import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java index ca6bfaa259a..01435502172 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -23,8 +23,8 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlac import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; +import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.event.overview.EventView; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java index 7523eb53c7a..2b0d701397d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java @@ -10,11 +10,11 @@ import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; +import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardActivity; +import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.event.overview.EventActivity; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsActivity; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardActivity; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.races.RacesActivity; import com.sap.sailing.gwt.home.mobile.places.regatta.RegattaActivity; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardActivity.java similarity index 80% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardActivity.java index b65208384e3..e2763755b42 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardActivity.java @@ -1,9 +1,9 @@ -package com.sap.sailing.gwt.home.mobile.places.minileaderboard; +package com.sap.sailing.gwt.home.mobile.places.event.minileaderboard; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardView.Presenter; +import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardView.Presenter; public class MiniLeaderboardActivity extends AbstractEventActivity implements Presenter { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java similarity index 94% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java index f24b5add026..73a176f6e43 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places.minileaderboard; +package com.sap.sailing.gwt.home.mobile.places.event.minileaderboard; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardView.java similarity index 75% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardView.java index 036f474aaa0..49f7d747448 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places.minileaderboard; +package com.sap.sailing.gwt.home.mobile.places.event.minileaderboard; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardViewImpl.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardViewImpl.java index 8b3bced1398..5a72f51b8f0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/minileaderboard/MiniLeaderboardViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardViewImpl.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places.minileaderboard; +package com.sap.sailing.gwt.home.mobile.places.event.minileaderboard; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java index aba63272bee..1da51d08b92 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java @@ -11,7 +11,7 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; +import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java index d938c5057b9..5922c137637 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java @@ -11,7 +11,7 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; +import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java index 58896b9f51b..d0127d1de4e 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java @@ -28,8 +28,8 @@ import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace; +import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; -import com.sap.sailing.gwt.home.mobile.places.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; @WithTokenizers({ AboutUsPlace.Tokenizer.class, ContactPlace.Tokenizer.class, EventPlace.Tokenizer.class, From 3ced13e17e1bc24de50bab315a88fee43e781731 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 16:25:21 +0200 Subject: [PATCH 110/504] Refactoring - Moved mobile races view in subpackage --- .../partials/regattacompetition/RegattaCompetition.java | 2 +- .../partials/regattacompetition/RegattaCompetitionSeries.java | 2 +- .../gwt/home/mobile/places/event/EventActivityProxy.java | 2 +- .../home/mobile/places/{ => event}/races/RacesActivity.java | 4 ++-- .../gwt/home/mobile/places/{ => event}/races/RacesView.java | 2 +- .../home/mobile/places/{ => event}/races/RacesViewImpl.java | 2 +- .../home/mobile/places/{ => event}/races/RacesViewImpl.ui.xml | 0 7 files changed, 7 insertions(+), 7 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/races/RacesActivity.java (83%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/races/RacesView.java (77%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/races/RacesViewImpl.java (96%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/races/RacesViewImpl.ui.xml (100%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java index 96128927259..6459caf131f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java @@ -7,7 +7,7 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; -import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; +import com.sap.sailing.gwt.home.mobile.places.event.races.RacesView.Presenter; import com.sap.sailing.gwt.ui.shared.dispatch.ListResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatSeriesDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java index 40f612bf440..5309fae515b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java @@ -9,7 +9,7 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; -import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; +import com.sap.sailing.gwt.home.mobile.places.event.races.RacesView.Presenter; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatSeriesDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java index 2b0d701397d..ee6937145a4 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java @@ -13,9 +13,9 @@ import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardActivity; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.event.overview.EventActivity; +import com.sap.sailing.gwt.home.mobile.places.event.races.RacesActivity; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsActivity; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; -import com.sap.sailing.gwt.home.mobile.places.races.RacesActivity; import com.sap.sailing.gwt.home.mobile.places.regatta.RegattaActivity; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesActivity.java similarity index 83% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesActivity.java index f3fa3cb9158..250b8b3513f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesActivity.java @@ -1,10 +1,10 @@ -package com.sap.sailing.gwt.home.mobile.places.races; +package com.sap.sailing.gwt.home.mobile.places.event.races; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; -import com.sap.sailing.gwt.home.mobile.places.races.RacesView.Presenter; +import com.sap.sailing.gwt.home.mobile.places.event.races.RacesView.Presenter; public class RacesActivity extends AbstractEventActivity implements Presenter { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesView.java similarity index 77% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesView.java index ec66675a7b4..a7c0c19c532 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places.races; +package com.sap.sailing.gwt.home.mobile.places.event.races; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java index 3db531dd778..d6bb0e8ed5b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places.races; +package com.sap.sailing.gwt.home.mobile.places.event.races; import java.util.Collection; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/races/RacesViewImpl.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml From f762c48d618d85591c0c86dab9e704dcdb6eb51d Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 16:28:38 +0200 Subject: [PATCH 111/504] Refactoring - Moved mobile regatta overview in subpackage --- .../gwt/home/mobile/places/event/EventActivityProxy.java | 2 +- .../home/mobile/places/{ => event}/regatta/RegattaActivity.java | 2 +- .../gwt/home/mobile/places/{ => event}/regatta/RegattaView.java | 2 +- .../home/mobile/places/{ => event}/regatta/RegattaViewImpl.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/regatta/RegattaActivity.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/regatta/RegattaView.java (83%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/regatta/RegattaViewImpl.java (98%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java index ee6937145a4..750e6f26e97 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java @@ -14,9 +14,9 @@ import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderbo import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.event.overview.EventActivity; import com.sap.sailing.gwt.home.mobile.places.event.races.RacesActivity; +import com.sap.sailing.gwt.home.mobile.places.event.regatta.RegattaActivity; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsActivity; import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; -import com.sap.sailing.gwt.home.mobile.places.regatta.RegattaActivity; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaActivity.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaActivity.java index 9f8cc958236..90eace1646e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaActivity.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places.regatta; +package com.sap.sailing.gwt.home.mobile.places.event.regatta; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaView.java similarity index 83% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaView.java index fabab53fb7a..e75056b8bfc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places.regatta; +package com.sap.sailing.gwt.home.mobile.places.event.regatta; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.NewsItemLinkProvider; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaViewImpl.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java index b0044ed7c0c..b26f52d5228 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/regatta/RegattaViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places.regatta; +package com.sap.sailing.gwt.home.mobile.places.event.regatta; import java.util.Collection; From 06fdce3505ed81179f3514c95e88e711da450a5f Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 16:32:44 +0200 Subject: [PATCH 112/504] Refactoring - Moved mobile latest news view in subpackage --- .../gwt/home/client/place/event/EventActivityProxy.java | 2 +- .../sailing/gwt/home/mobile/app/MobilePlacesNavigator.java | 2 +- .../gwt/home/mobile/places/event/EventActivityProxy.java | 4 ++-- .../places/{ => event}/latestnews/LatestNewsActivity.java | 4 ++-- .../mobile/places/{ => event}/latestnews/LatestNewsPlace.java | 2 +- .../mobile/places/{ => event}/latestnews/LatestNewsView.java | 2 +- .../places/{ => event}/latestnews/LatestNewsViewImpl.java | 2 +- .../sailing/gwt/home/shared/app/ApplicationHistoryMapper.java | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/latestnews/LatestNewsActivity.java (83%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/latestnews/LatestNewsPlace.java (95%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/latestnews/LatestNewsView.java (87%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/{ => event}/latestnews/LatestNewsViewImpl.java (93%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java index 61208f155f9..f56c7fd0f79 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java @@ -17,8 +17,8 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlac import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; -import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java index 0a74eac6aac..913c42c1152 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java @@ -17,7 +17,7 @@ import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsN import com.sap.sailing.gwt.home.client.place.start.StartPlace; import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; -import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; +import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java index 750e6f26e97..3e3b85029da 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java @@ -10,13 +10,13 @@ import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; +import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsActivity; +import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardActivity; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.event.overview.EventActivity; import com.sap.sailing.gwt.home.mobile.places.event.races.RacesActivity; import com.sap.sailing.gwt.home.mobile.places.event.regatta.RegattaActivity; -import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsActivity; -import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsActivity.java similarity index 83% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsActivity.java index b5327feabda..fa804acba03 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsActivity.java @@ -1,10 +1,10 @@ -package com.sap.sailing.gwt.home.mobile.places.latestnews; +package com.sap.sailing.gwt.home.mobile.places.event.latestnews; import com.google.gwt.user.client.Window; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; -import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsView.Presenter; +import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsView.Presenter; public class LatestNewsActivity extends AbstractEventActivity implements Presenter { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsPlace.java similarity index 95% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsPlace.java index 7a39a3ba5ec..dcad4d21e5e 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places.latestnews; +package com.sap.sailing.gwt.home.mobile.places.event.latestnews; import java.util.Collection; import java.util.LinkedList; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsView.java similarity index 87% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsView.java index ff5356cf659..1f56266103b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places.latestnews; +package com.sap.sailing.gwt.home.mobile.places.event.latestnews; import java.util.List; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsViewImpl.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsViewImpl.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsViewImpl.java index a0d62fc0f57..783326c5dc4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/latestnews/LatestNewsViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsViewImpl.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places.latestnews; +package com.sap.sailing.gwt.home.mobile.places.event.latestnews; import java.util.List; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java index d0127d1de4e..97fafb50a3d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java @@ -28,8 +28,8 @@ import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace; +import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; -import com.sap.sailing.gwt.home.mobile.places.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; @WithTokenizers({ AboutUsPlace.Tokenizer.class, ContactPlace.Tokenizer.class, EventPlace.Tokenizer.class, From d4cb686e84aa4a2f188f1cfcf471491397f598c6 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 25 Aug 2015 17:16:22 +0200 Subject: [PATCH 113/504] Integrated link to races view for single regatta and series events which can be enabled/disabled via experimental features flag --- .../event/regatta/tabs/RegattaRacesPlace.java | 2 +- .../partials/regattaStatus/RegattaStatus.java | 2 +- .../mobile/places/event/AbstractEventView.java | 14 ++++++++++++++ .../places/event/overview/EventViewImpl.java | 3 +++ .../places/event/regatta/RegattaViewImpl.java | 12 ------------ .../gwt/home/shared/ExperimentalFeatures.java | 9 +++------ 6 files changed, 22 insertions(+), 20 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java index 7cbe5acdf16..5021ebeb835 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java @@ -32,6 +32,6 @@ public class RegattaRacesPlace extends AbstractEventRegattaPlace implements Mobi @Override public boolean hasMobileVersion() { - return ExperimentalFeatures.SHOW_RACES_ON_MOBILE; + return ExperimentalFeatures.SHOW_REGATTA_OVERVIEW_AND_RACES_ON_MOBILE; } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java index 3be44397347..e646e6a3809 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java @@ -61,7 +61,7 @@ public class RegattaStatus extends Composite implements RefreshableWidget placeNavigation = ExperimentalFeatures.SHOW_REGATTA_OVERVIEW_ON_MOBILE ? + PlaceNavigation placeNavigation = ExperimentalFeatures.SHOW_REGATTA_OVERVIEW_AND_RACES_ON_MOBILE ? presenter.getRegattaOverviewNavigation(regatta.getId()) : presenter.getRegattaMiniLeaderboardNavigation(regatta.getId()); RegattaStatusRegatta regattaWidget = new RegattaStatusRegatta(regatta, placeNavigation); container.addContent(regattaWidget); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java index 99bbed793b3..7bbdb82ea64 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java @@ -8,14 +8,18 @@ import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.mobile.partials.eventheader.EventHeader; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; +import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; +import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.home.mobile.partials.simpleinfoblock.SimpleInfoBlock; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; @@ -71,6 +75,16 @@ public abstract class AbstractEventView

exten protected void setQuickFinderValues(Quickfinder quickfinder, Collection regattaMetadatas) { QuickfinderPresenter.getForRegattaLeaderboards(quickfinder, currentPresenter, regattaMetadatas); } + + protected void initRacesNavigation(Panel container) { + MobileSection mobileSection = new MobileSection(); + SectionHeaderContent header = new SectionHeaderContent(); + header.setSectionTitle(StringMessages.INSTANCE.racesCount(currentPresenter.getCtx().getRegatta().getRaceCount())); + header.setInfoText(StringMessages.INSTANCE.showAll()); + header.setClickAction(currentPresenter.getRegattaRacesNavigation(getRegattaId())); + mobileSection.addHeader(header); + container.add(mobileSection); + } @Override public final void setQuickFinderValues(Collection regattaMetadatas) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java index 6655f907eae..aed909ff3da 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java @@ -70,6 +70,9 @@ public class EventViewImpl extends AbstractEventView implem miniLeaderboard.setAction(MSG.showAll(), currentPresenter.getRegattaMiniLeaderboardNavigation(getRegattaId())); container.add(miniLeaderboard); refreshManager.add(miniLeaderboard, new GetMiniLeaderbordAction(getEventId(), getRegattaId(), 3)); + if (ExperimentalFeatures.SHOW_REGATTA_OVERVIEW_AND_RACES_ON_MOBILE) { + initRacesNavigation(container); + } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java index b26f52d5228..e0294ac6e7d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java @@ -7,8 +7,6 @@ import com.google.gwt.user.client.ui.Panel; import com.sap.sailing.gwt.home.mobile.partials.eventsteps.EventSteps; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; -import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; -import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBox; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.UpdatesBox; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; @@ -60,16 +58,6 @@ public class RegattaViewImpl extends AbstractEventView im } } - private void initRacesNavigation(Panel container) { - MobileSection mobileSection = new MobileSection(); - SectionHeaderContent header = new SectionHeaderContent(); - header.setSectionTitle(StringMessages.INSTANCE.racesCount(currentPresenter.getCtx().getRegatta().getRaceCount())); - header.setInfoText(StringMessages.INSTANCE.showAll()); - header.setClickAction(currentPresenter.getRegattaRacesNavigation(getRegattaId())); - mobileSection.addHeader(header); - container.add(mobileSection); - } - private void initStatisticsUi(Panel container) { statisticsUi = new StatisticsBox(false); // FIXME only show statistics of the regatta diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java index c2ef2b0a98d..12a1d9ecdb6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java @@ -22,13 +22,10 @@ public class ExperimentalFeatures { */ public static final boolean SHOW_RACES_COMPETITION_FORMAT = false; /** - * Provide option to show races (competition format) on mobile devices + * Provide option to show the overview for regattas in multi regatta events and a navigation + * to the races view (competition format) for single regatta and series events on mobile devices */ - public static final boolean SHOW_RACES_ON_MOBILE = true; - /** - * Provide option to show the overview for regattas in multi regatta events on mobile devices - */ - public static final boolean SHOW_REGATTA_OVERVIEW_ON_MOBILE = false; + public static final boolean SHOW_REGATTA_OVERVIEW_AND_RACES_ON_MOBILE = false; /** * Provide option to show the regatta progress for single regatta and series event on mobile devices */ From f076406ee0f4cec0473c99da8f8e0c89ef1b6124 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 26 Aug 2015 11:23:43 +0200 Subject: [PATCH 114/504] Integrated animation to mobile regatta list --- .../home/mobile/partials/regattaStatus/RegattaStatus.java | 7 +++++-- .../mobile/partials/regattaStatus/RegattaStatus.ui.xml | 3 +-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java index e646e6a3809..bf798db837d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java @@ -9,6 +9,7 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton; import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton.ToggleButtonCommand; @@ -31,6 +32,7 @@ public class RegattaStatus extends Composite implements RefreshableWidget - + From 68996330ca7919364b40c3026c25649b9a172074 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 26 Aug 2015 14:39:18 +0200 Subject: [PATCH 115/504] Added partials to show regatta live races on mobile --- .../partials/liveraces/RegattaLiveRaces.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java new file mode 100644 index 00000000000..5c9daffd036 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java @@ -0,0 +1,35 @@ +package com.sap.sailing.gwt.home.mobile.partials.liveraces; + +import com.google.gwt.user.client.ui.Composite; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatusRace; +import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatusResources; +import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; +import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult; +import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRaceDTO; + +public class RegattaLiveRaces extends Composite implements RefreshableWidget> { + + private final MobileSection mobileSection = new MobileSection(); + private final SectionHeaderContent header = new SectionHeaderContent(); + + public RegattaLiveRaces() { + RegattaStatusResources.INSTANCE.css().ensureInjected(); + header.setSectionTitle(StringMessages.INSTANCE.liveNow()); + mobileSection.addHeader(header); + initWidget(mobileSection); + setVisible(false); + } + + @Override + public void setData(SortedSetResult data) { + setVisible(!data.isEmpty()); + mobileSection.clearContent(); + for (LiveRaceDTO liveRace : data.getValues()) { + mobileSection.addContent(new RegattaStatusRace(liveRace)); + } + } + +} From 9b3ccec36fb4d08a6a37b3c0a69203ff6c404aee Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 26 Aug 2015 14:41:01 +0200 Subject: [PATCH 116/504] Integrated regatta live race in regatta overview of a multi regatta event on mobile --- .../mobile/places/event/regatta/RegattaViewImpl.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java index e0294ac6e7d..1edbbe183f4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java @@ -5,6 +5,7 @@ import java.util.Collection; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Panel; import com.sap.sailing.gwt.home.mobile.partials.eventsteps.EventSteps; +import com.sap.sailing.gwt.home.mobile.partials.liveraces.RegattaLiveRaces; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBox; @@ -14,6 +15,7 @@ import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewNewsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventStatisticsAction; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForRegattaAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaWithProgressAction; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; @@ -22,6 +24,7 @@ import com.sap.sailing.gwt.ui.shared.general.EventState; public class RegattaViewImpl extends AbstractEventView implements RegattaView { private EventSteps regattaProgressUi; + private RegattaLiveRaces liveRacesUi; private MinileaderboardBox leaderboardUi; private UpdatesBox latestNewsUi; private StatisticsBox statisticsUi; @@ -30,6 +33,7 @@ public class RegattaViewImpl extends AbstractEventView im super(presenter, true, true); Panel container = new FlowPanel(); this.initRegattaProgressUi(container); + this.initLiveRaces(container); this.initLeaderboardUi(container); this.initLatestNewsUi(container); this.initRacesNavigation(container); @@ -43,6 +47,12 @@ public class RegattaViewImpl extends AbstractEventView im container.add(regattaProgressUi); } + private void initLiveRaces(Panel container) { + liveRacesUi = new RegattaLiveRaces(); + refreshManager.add(liveRacesUi, new GetLiveRacesForRegattaAction(getEventId(), getRegattaId())); + container.add(liveRacesUi); + } + private void initLeaderboardUi(Panel container) { leaderboardUi = new MinileaderboardBox(false); leaderboardUi.setAction(StringMessages.INSTANCE.showAll(), currentPresenter.getRegattaMiniLeaderboardNavigation(getRegattaId())); From c3477896f26ca59cf87fb464dbdd4989018c568b Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 26 Aug 2015 14:43:54 +0200 Subject: [PATCH 117/504] Integrated live races in single regatta and series event overview which can be enabled/disabled via experimental features flag --- .../mobile/places/event/overview/EventViewImpl.java | 10 +++++++++- .../sailing/gwt/home/shared/ExperimentalFeatures.java | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java index aed909ff3da..1d6a894df44 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java @@ -7,6 +7,7 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Panel; import com.sap.sailing.gwt.home.mobile.partials.eventsteps.EventSteps; import com.sap.sailing.gwt.home.mobile.partials.impressions.Impressions; +import com.sap.sailing.gwt.home.mobile.partials.liveraces.RegattaLiveRaces; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatus; import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBox; @@ -17,6 +18,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewNewsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewStageAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventStatisticsAction; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForRegattaAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaWithProgressAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattasAndLiveRacesForEventAction; @@ -29,6 +31,7 @@ public class EventViewImpl extends AbstractEventView implem private EventOverviewStage overviewStageUi; private EventSteps eventStepsUi; + private RegattaLiveRaces liveRacesUi; private Impressions impressionsUi; private StatisticsBox statisticsBoxUi; private UpdatesBox updatesBoxUi; @@ -66,10 +69,15 @@ public class EventViewImpl extends AbstractEventView implem container.add(regattaStatus); refreshManager.add(regattaStatus, new GetRegattasAndLiveRacesForEventAction(getEventId())); } else { + if (ExperimentalFeatures.SHOW_REGATTA_LIVE_RACES_ON_MOBILE) { + liveRacesUi = new RegattaLiveRaces(); + refreshManager.add(liveRacesUi, new GetLiveRacesForRegattaAction(getEventId(), getRegattaId())); + container.add(liveRacesUi); + } MinileaderboardBox miniLeaderboard = new MinileaderboardBox(false); miniLeaderboard.setAction(MSG.showAll(), currentPresenter.getRegattaMiniLeaderboardNavigation(getRegattaId())); - container.add(miniLeaderboard); refreshManager.add(miniLeaderboard, new GetMiniLeaderbordAction(getEventId(), getRegattaId(), 3)); + container.add(miniLeaderboard); if (ExperimentalFeatures.SHOW_REGATTA_OVERVIEW_AND_RACES_ON_MOBILE) { initRacesNavigation(container); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java index 12a1d9ecdb6..1c18d8dd558 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java @@ -30,6 +30,10 @@ public class ExperimentalFeatures { * Provide option to show the regatta progress for single regatta and series event on mobile devices */ public static final boolean SHOW_REGATTA_PROGRESS_ON_MOBILE = false; + /** + * Provide option to show the regattas live races for single regatta and series event on mobile devices + */ + public static final boolean SHOW_REGATTA_LIVE_RACES_ON_MOBILE = false; /** * Provide button to show the competitor analytics in fullscreen view (work in progress) */ From 3a83f7393da271a413b9aee4a25a933a4003d804 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 26 Aug 2015 16:24:20 +0200 Subject: [PATCH 118/504] Removed lastest news from overview of a regatta in a multi regattas event --- .../mobile/places/event/regatta/RegattaView.java | 3 +-- .../places/event/regatta/RegattaViewImpl.java | 13 ------------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaView.java index e75056b8bfc..e6eb2d511e7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaView.java @@ -1,11 +1,10 @@ package com.sap.sailing.gwt.home.mobile.places.event.regatta; -import com.sap.sailing.gwt.home.mobile.partials.updatesBox.NewsItemLinkProvider; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; public interface RegattaView extends EventViewBase { - public interface Presenter extends EventViewBase.Presenter, NewsItemLinkProvider { + public interface Presenter extends EventViewBase.Presenter { } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java index 1edbbe183f4..a62a414f6c3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java @@ -9,24 +9,20 @@ import com.sap.sailing.gwt.home.mobile.partials.liveraces.RegattaLiveRaces; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBox; -import com.sap.sailing.gwt.home.mobile.partials.updatesBox.UpdatesBox; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewNewsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventStatisticsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForRegattaAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaWithProgressAction; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; -import com.sap.sailing.gwt.ui.shared.general.EventState; public class RegattaViewImpl extends AbstractEventView implements RegattaView { private EventSteps regattaProgressUi; private RegattaLiveRaces liveRacesUi; private MinileaderboardBox leaderboardUi; - private UpdatesBox latestNewsUi; private StatisticsBox statisticsUi; public RegattaViewImpl(RegattaView.Presenter presenter) { @@ -35,7 +31,6 @@ public class RegattaViewImpl extends AbstractEventView im this.initRegattaProgressUi(container); this.initLiveRaces(container); this.initLeaderboardUi(container); - this.initLatestNewsUi(container); this.initRacesNavigation(container); this.initStatisticsUi(container); setViewContent(container); @@ -60,14 +55,6 @@ public class RegattaViewImpl extends AbstractEventView im container.add(leaderboardUi); } - private void initLatestNewsUi(Panel container) { - latestNewsUi = new UpdatesBox(currentPresenter, refreshManager); - if (currentPresenter.getCtx().getEventDTO().getState() == EventState.RUNNING) { - refreshManager.add(latestNewsUi, new GetEventOverviewNewsAction(getEventId(), 2)); - container.add(latestNewsUi); - } - } - private void initStatisticsUi(Panel container) { statisticsUi = new StatisticsBox(false); // FIXME only show statistics of the regatta From 55ee4c096e82ddfd12fa2a01f0e3f339c91a0722 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 09:15:53 +0200 Subject: [PATCH 119/504] Refactored partial to show regatta live races on mobile --- .../partials/liveraces/RegattaLiveRaces.java | 17 ++++++++++++----- .../partials/liveraces/RegattaLiveRaces.ui.xml | 11 +++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java index 5c9daffd036..0586f4b8621 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java @@ -1,5 +1,8 @@ package com.sap.sailing.gwt.home.mobile.partials.liveraces; +import com.google.gwt.core.shared.GWT; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatusRace; @@ -12,14 +15,18 @@ import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRaceDTO; public class RegattaLiveRaces extends Composite implements RefreshableWidget> { - private final MobileSection mobileSection = new MobileSection(); - private final SectionHeaderContent header = new SectionHeaderContent(); + private static RegattaLiveRacesUiBinder uiBinder = GWT.create(RegattaLiveRacesUiBinder.class); + + interface RegattaLiveRacesUiBinder extends UiBinder { + } + + @UiField SectionHeaderContent sectionHeaderUi; + private final MobileSection mobileSection; public RegattaLiveRaces() { RegattaStatusResources.INSTANCE.css().ensureInjected(); - header.setSectionTitle(StringMessages.INSTANCE.liveNow()); - mobileSection.addHeader(header); - initWidget(mobileSection); + initWidget(mobileSection = uiBinder.createAndBindUi(this)); + sectionHeaderUi.setSectionTitle(StringMessages.INSTANCE.liveNow()); setVisible(false); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.ui.xml new file mode 100644 index 00000000000..4d4c4a0e0a4 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.ui.xml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file From 8cdc000972801eca23fc405dc82c1e646fe4146d Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 10:15:35 +0200 Subject: [PATCH 120/504] Added additional String messages for mobile media page --- .../com/sap/sailing/gwt/ui/client/StringMessages.java | 4 ++++ .../sap/sailing/gwt/ui/client/StringMessages.properties | 8 +++++++- .../sailing/gwt/ui/client/StringMessages_de.properties | 8 +++++++- .../sailing/gwt/ui/client/StringMessages_ru.properties | 8 +++++++- .../sailing/gwt/ui/client/StringMessages_zh.properties | 8 +++++++- 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 6e5142075e5..45f14680d86 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1369,4 +1369,8 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String openFullscreenView(); String closeFullscreenView(); String progress(); + String videosCount(@PluralCount(DefaultRule_1_0n.class) int count); + String noVideos(); + String imagesCount(@PluralCount(DefaultRule_1_0n.class) int count); + String noImages(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 38d94bd93c2..48cf305cbaa 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1337,4 +1337,10 @@ columnChart=Column Chart choosePresentation=Choose Presentation openFullscreenView=Open fullscreen view closeFullscreenView=Close fullscreen view -progress=Progress \ No newline at end of file +progress=Progress +videosCount={0,number} videos +videosCount[one]={0,number} video +noVideos=There are no videos available. +imagesCount={0,number} videos +imagesCount[one]={0,number} video +noImages=There are no videos available. \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index dd63a8034da..0f0d041aa97 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1326,4 +1326,10 @@ columnChart=Säulendiagramm choosePresentation=Wähle Präsentation openFullscreenView=Vollbildansicht öffnen closeFullscreenView=Vollbildansicht schließen -progress=Fortschritt \ No newline at end of file +progress=Fortschritt +videosCount={0,number} Videos +videosCount[one]={0,number} Video +noVideos=Leider gibt es keine Videos. +imageCount={0,number} Bilder +imagesCount[one]={0,number} Bild +noImages=Leider gibt es keine Bilder. \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 30d41fe1ed8..bebdf93bd07 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1273,4 +1273,10 @@ columnChart=Column Chart choosePresentation=Choose Presentation openFullscreenView=Open fullscreen view closeFullscreenView=Close fullscreen view -progress=Progress \ No newline at end of file +progress=Progress +videosCount={0,number} videos +videosCount[one]={0,number} video +noVideos=There are no videos available. +imagesCount={0,number} videos +imagesCount[one]={0,number} video +noImages=There are no videos available. \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 3be502a4d97..d3221be0378 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1315,4 +1315,10 @@ openFullscreenView=Open fullscreen view closeFullscreenView=Close fullscreen view listFormatLabel=List format competitionFormatLabel=Competition format -progress=Progress \ No newline at end of file +progress=Progress +videosCount={0,number} videos +videosCount[one]={0,number} video +noVideos=There are no videos available. +imagesCount={0,number} videos +imagesCount[one]={0,number} video +noImages=There are no videos available. \ No newline at end of file From e12c78adc72ef6cd84837631f38f1465d9130d72 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 10:57:27 +0200 Subject: [PATCH 121/504] Added partials for mobile video gallery --- .../partials/videogallery/VideoGallery.gss | 90 +++++++++++++++++++ .../partials/videogallery/VideoGallery.java | 55 ++++++++++++ .../partials/videogallery/VideoGallery.ui.xml | 12 +++ .../videogallery/VideoGalleryResources.java | 32 +++++++ .../videogallery/VideoGalleryVideo.java | 38 ++++++++ .../videogallery/VideoGalleryVideo.ui.xml | 16 ++++ 6 files changed, 243 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.gss create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.ui.xml create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryResources.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.gss new file mode 100644 index 00000000000..a7a07165871 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.gss @@ -0,0 +1,90 @@ +/** + * A video gallery + */ +.videoitem { + font-size: inherit; +} +.videoitem .playbutton { + font-size: inherit; +} +.videoitem .info { + font-size: inherit; +} +.videoitem .playicon { + position: absolute; + cursor: pointer; + width: 100%; + height: 100%; + background: url("../images/home/play-icon.svg") no-repeat; + background-size: 2.333333333333333em 2.333333333333333em; + background-position: center; +} +.videoitem .videoplaceholder { + height: 100%; +} +.videoitem .videoplaceholder_image { + width: 100%; + height: 100%; + background-size: cover; + background-position: center; +} +.videoitem iframe { + width: 100%; +} +.video { + font-size: 1rem; + height: 13.333333333333334em; + position: relative; + border-top: 1px solid #ccc; + padding: 0; +} +.videohideinfo .video_info { + display: none; +} +.video_play { + font-size: inherit; +} +.video_info { + position: absolute; + bottom: 0; + left: 0; + right: 0; + color: #f6f9fc; + padding: 1em; + background: rgba(0,0,0,0.6); +} +.video_info_text { + display: inline-block; +} +.video_info_text h3 { + margin: 0; + padding: 0; + font-size: 1.066666666666667em; +} +.videogallery { + font-size: 1rem; +} +.videogallery_video { + padding: 0; + margin-bottom: 1.333333333333333em; +} +.videogallery_video .grid { + margin: 0; +} +.videogallery_video_info { + padding: 0; + margin-top: 1em; +} +.videogallery_video_info_title { + padding: 0 40% 0 0.9375em; + font-size: 1.066666666666667em; + line-height: 1.125em; + font-weight: 700; + color: #0a0a0a; +} +.videogallery_video_info_subtitle { + padding: 0 40% 0 1.153846153846154em; + font-size: 0.866666666666667em; + line-height: 1.384615384615385em; + color: #0a0a0a; +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.java new file mode 100644 index 00000000000..1af414e88b5 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.java @@ -0,0 +1,55 @@ +package com.sap.sailing.gwt.home.mobile.partials.videogallery; + +import java.util.Collection; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Style.FontStyle; +import com.google.gwt.dom.client.Style.FontWeight; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; +import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.gwt.client.media.VideoDTO; + +public class VideoGallery extends Composite { + + private static VideoGalleryUiBinder uiBinder = GWT.create(VideoGalleryUiBinder.class); + + interface VideoGalleryUiBinder extends UiBinder { + } + + @UiField SectionHeaderContent sectionHeaderUi; + private final MobileSection mobileSection; + + public VideoGallery() { + VideoGalleryResources.INSTANCE.css().ensureInjected(); + initWidget(mobileSection = uiBinder.createAndBindUi(this)); + sectionHeaderUi.setSectionTitle(StringMessages.INSTANCE.videos()); + } + + public void setVideos(Collection videos) { + sectionHeaderUi.setInfoText(StringMessages.INSTANCE.videosCount(videos.size())); + mobileSection.clearContent(); + if (videos.isEmpty()) { + mobileSection.addContent(getNoVideosInfoWidget()); + } else { + for (VideoDTO video : videos) { + mobileSection.addContent(new VideoGalleryVideo(video)); + } + } + } + + private Widget getNoVideosInfoWidget() { + Label label = new Label(StringMessages.INSTANCE.noVideos()); + label.getElement().getStyle().setPadding(1, Unit.EM); + label.getElement().getStyle().setFontWeight(FontWeight.BOLD); + label.getElement().getStyle().setFontStyle(FontStyle.ITALIC); + return label; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.ui.xml new file mode 100644 index 00000000000..cb091314055 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.ui.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryResources.java new file mode 100644 index 00000000000..40a9853d96e --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryResources.java @@ -0,0 +1,32 @@ +package com.sap.sailing.gwt.home.mobile.partials.videogallery; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; + +public interface VideoGalleryResources extends ClientBundle { + public static final VideoGalleryResources INSTANCE = GWT.create(VideoGalleryResources.class); + + @Source("VideoGallery.gss") + LocalCss css(); + + public interface LocalCss extends CssResource { + String videoitem(); + String playbutton(); + String info(); + String playicon(); + String videoplaceholder(); + String videoplaceholder_image(); + String video(); + String videohideinfo(); + String video_info(); + String video_play(); + String video_info_text(); + String videogallery(); + String videogallery_video(); + String grid(); + String videogallery_video_info(); + String videogallery_video_info_title(); + String videogallery_video_info_subtitle(); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.java new file mode 100644 index 00000000000..30b9b7c143c --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.java @@ -0,0 +1,38 @@ +package com.sap.sailing.gwt.home.mobile.partials.videogallery; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.client.shared.videoPlayer.VideoPlayer; +import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; +import com.sap.sse.gwt.client.media.VideoDTO; + +public class VideoGalleryVideo extends Composite { + + private static VideoGalleryVideoUiBinder uiBinder = GWT.create(VideoGalleryVideoUiBinder.class); + + interface VideoGalleryVideoUiBinder extends UiBinder { + } + + @UiField(provided = true) VideoPlayer videoPlayerUi = new VideoPlayer(false, false); + @UiField DivElement videoTitleUi; + @UiField DivElement videoCreateDateUi; + + public VideoGalleryVideo(VideoDTO video) { + initWidget(uiBinder.createAndBindUi(this)); + videoPlayerUi.setVideo(video); + setTextOrRemove(videoTitleUi, video.getTitle()); + setTextOrRemove(videoCreateDateUi, DateAndTimeFormatterUtil.formatDateAndTime(video.getCreatedAtDate())); + } + + private void setTextOrRemove(DivElement element, String text) { + if (text == null || text.isEmpty()) { + element.removeFromParent(); + } else { + element.setInnerText(text); + } + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.ui.xml new file mode 100644 index 00000000000..1e6046686a4 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.ui.xml @@ -0,0 +1,16 @@ + + + + + + +

+ +
+
+
+
+
+ + \ No newline at end of file From c440b26365ff3591de9894134e666ebb92650090 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 11:28:50 +0200 Subject: [PATCH 122/504] Added partials for mobile image gallery --- .../partials/imagegallery/ImageGallery.gss | 25 ++++++++ .../partials/imagegallery/ImageGallery.java | 60 +++++++++++++++++++ .../partials/imagegallery/ImageGallery.ui.xml | 18 ++++++ .../imagegallery/ImageGalleryItem.java | 25 ++++++++ .../imagegallery/ImageGalleryItem.ui.xml | 10 ++++ .../imagegallery/ImageGalleryResources.java | 20 +++++++ 6 files changed, 158 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.gss create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.ui.xml create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.ui.xml create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryResources.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.gss new file mode 100644 index 00000000000..08ffceae8fc --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.gss @@ -0,0 +1,25 @@ +/** +* An image gallery +*/ +.imagegallery { + font-size: 1rem; +} +.imagegallery_column { + padding: 0; + margin: 0; +} +.imagegallery_columnfirst { + padding-right: 0.333333333333333em; +} +.imagegallery_columnsecond { + padding-left: 0.333333333333333em; +} +.imagegallery_column_item { + cursor: pointer; + margin-bottom: 0.666666666666667em; +} +.imagegallery_column_item img { + width: 100%; + height: auto; + vertical-align: bottom; +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java new file mode 100644 index 00000000000..d90998083b0 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java @@ -0,0 +1,60 @@ +package com.sap.sailing.gwt.home.mobile.partials.imagegallery; + +import java.util.Collection; + +import com.google.gwt.core.shared.GWT; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.dom.client.Style.FontStyle; +import com.google.gwt.dom.client.Style.FontWeight; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; +import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.gwt.client.media.ImageDTO; + +public class ImageGallery extends Composite { + + private static ImageGalleryUiBinder uiBinder = GWT.create(ImageGalleryUiBinder.class); + + interface ImageGalleryUiBinder extends UiBinder { + } + + @UiField SectionHeaderContent sectionHeaderUi; + @UiField DivElement firstColumnUi; + @UiField DivElement secondColumnUi; + private final MobileSection mobileSection; + + public ImageGallery() { + ImageGalleryResources.INSTANCE.css().ensureInjected(); + initWidget(mobileSection = uiBinder.createAndBindUi(this)); + sectionHeaderUi.setSectionTitle(StringMessages.INSTANCE.images()); + } + + public void setImages(Collection images) { + sectionHeaderUi.setInfoText(StringMessages.INSTANCE.imagesCount(images.size())); + mobileSection.clearContent(); + if (images.isEmpty()) { + mobileSection.addContent(getNoImagesInfoWidget()); + } else { + int imageCount = 0; + for (ImageDTO image : images) { + DivElement container = ++imageCount % 2 != 0 ? firstColumnUi : secondColumnUi; + container.appendChild(new ImageGalleryItem(image).getElement()); + } + } + } + + private Widget getNoImagesInfoWidget() { + Label label = new Label(StringMessages.INSTANCE.noImages()); + label.getElement().getStyle().setPadding(1, Unit.EM); + label.getElement().getStyle().setFontWeight(FontWeight.BOLD); + label.getElement().getStyle().setFontStyle(FontStyle.ITALIC); + return label; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.ui.xml new file mode 100644 index 00000000000..1fe6a9076e9 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.ui.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.java new file mode 100644 index 00000000000..9c3979acca9 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.java @@ -0,0 +1,25 @@ +package com.sap.sailing.gwt.home.mobile.partials.imagegallery; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.ImageElement; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.UIObject; +import com.sap.sse.gwt.client.media.ImageDTO; + +public class ImageGalleryItem extends UIObject { + + private static ImageGalleryItemUiBinder uiBinder = GWT.create(ImageGalleryItemUiBinder.class); + + interface ImageGalleryItemUiBinder extends UiBinder { + } + + @UiField ImageElement imageUi; + + public ImageGalleryItem(ImageDTO image) { + setElement(uiBinder.createAndBindUi(this)); + imageUi.setSrc(image.getSourceRef()); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.ui.xml new file mode 100644 index 00000000000..664fa530c7b --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.ui.xml @@ -0,0 +1,10 @@ + + + + + +
+ +
+
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryResources.java new file mode 100644 index 00000000000..10bd2370eac --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryResources.java @@ -0,0 +1,20 @@ +package com.sap.sailing.gwt.home.mobile.partials.imagegallery; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; + +public interface ImageGalleryResources extends ClientBundle { + public static final ImageGalleryResources INSTANCE = GWT.create(ImageGalleryResources.class); + + @Source("ImageGallery.gss") + LocalCss css(); + + public interface LocalCss extends CssResource { + String imagegallery(); + String imagegallery_column(); + String imagegallery_columnfirst(); + String imagegallery_columnsecond(); + String imagegallery_column_item(); + } +} From 4ad1b51fb1684ac8eb10648d38900475d08b3b83 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 12:29:42 +0200 Subject: [PATCH 123/504] Fixed String messages for mobile media page --- .../com/sap/sailing/gwt/ui/client/StringMessages.properties | 6 +++--- .../sap/sailing/gwt/ui/client/StringMessages_ru.properties | 6 +++--- .../sap/sailing/gwt/ui/client/StringMessages_zh.properties | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 48cf305cbaa..5b9d8efc0cb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1341,6 +1341,6 @@ progress=Progress videosCount={0,number} videos videosCount[one]={0,number} video noVideos=There are no videos available. -imagesCount={0,number} videos -imagesCount[one]={0,number} video -noImages=There are no videos available. \ No newline at end of file +imagesCount={0,number} images +imagesCount[one]={0,number} image +noImages=There are no images available. \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index bebdf93bd07..0f678b8067b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1277,6 +1277,6 @@ progress=Progress videosCount={0,number} videos videosCount[one]={0,number} video noVideos=There are no videos available. -imagesCount={0,number} videos -imagesCount[one]={0,number} video -noImages=There are no videos available. \ No newline at end of file +imagesCount={0,number} images +imagesCount[one]={0,number} image +noImages=There are no images available. \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index d3221be0378..8557b0dd71c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1319,6 +1319,6 @@ progress=Progress videosCount={0,number} videos videosCount[one]={0,number} video noVideos=There are no videos available. -imagesCount={0,number} videos -imagesCount[one]={0,number} video -noImages=There are no videos available. \ No newline at end of file +imagesCount={0,number} images +imagesCount[one]={0,number} image +noImages=There are no images available. \ No newline at end of file From 62703f4af4903cbb412f6480829d9353eb87bcd3 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 15:02:15 +0200 Subject: [PATCH 124/504] Adjusted String messages for mobile media page --- .../com/sap/sailing/gwt/ui/client/StringMessages.java | 4 +--- .../sap/sailing/gwt/ui/client/StringMessages.properties | 6 ++---- .../sailing/gwt/ui/client/StringMessages_de.properties | 8 +++----- .../sailing/gwt/ui/client/StringMessages_ru.properties | 6 ++---- .../sailing/gwt/ui/client/StringMessages_zh.properties | 6 ++---- 5 files changed, 10 insertions(+), 20 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 45f14680d86..844b1f8dc07 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1370,7 +1370,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String closeFullscreenView(); String progress(); String videosCount(@PluralCount(DefaultRule_1_0n.class) int count); - String noVideos(); - String imagesCount(@PluralCount(DefaultRule_1_0n.class) int count); - String noImages(); + String photosCount(@PluralCount(DefaultRule_1_0n.class) int count); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 5b9d8efc0cb..d6892c65d0b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1340,7 +1340,5 @@ closeFullscreenView=Close fullscreen view progress=Progress videosCount={0,number} videos videosCount[one]={0,number} video -noVideos=There are no videos available. -imagesCount={0,number} images -imagesCount[one]={0,number} image -noImages=There are no images available. \ No newline at end of file +photosCount={0,number} photos +photosCount[one]={0,number} photo \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 0f0d041aa97..18026e96161 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1051,7 +1051,7 @@ seriesSharingLongText=Schau mal auf {0}. Details: {1} #String seriesSharingShortText(String seriesName); seriesSharingShortText={0} competitorsAnalytics=Teilnehmeranalysen -mediaNoContent=Zur Zeit sind keine Videos oder Photos vorhanden. +mediaNoContent=Zur Zeit sind keine Videos oder Fotos vorhanden. media=Medien photos=Fotos videos=Videos @@ -1329,7 +1329,5 @@ closeFullscreenView=Vollbildansicht schließen progress=Fortschritt videosCount={0,number} Videos videosCount[one]={0,number} Video -noVideos=Leider gibt es keine Videos. -imageCount={0,number} Bilder -imagesCount[one]={0,number} Bild -noImages=Leider gibt es keine Bilder. \ No newline at end of file +photosCount={0,number} Bilder +photosCount[one]={0,number} Bild \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 0f678b8067b..ae4786cfa31 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1276,7 +1276,5 @@ closeFullscreenView=Close fullscreen view progress=Progress videosCount={0,number} videos videosCount[one]={0,number} video -noVideos=There are no videos available. -imagesCount={0,number} images -imagesCount[one]={0,number} image -noImages=There are no images available. \ No newline at end of file +photosCount={0,number} photos +photosCount[one]={0,number} photo \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 8557b0dd71c..51b76a4f034 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1318,7 +1318,5 @@ competitionFormatLabel=Competition format progress=Progress videosCount={0,number} videos videosCount[one]={0,number} video -noVideos=There are no videos available. -imagesCount={0,number} images -imagesCount[one]={0,number} image -noImages=There are no images available. \ No newline at end of file +photosCount={0,number} photos +photosCount[one]={0,number} photo \ No newline at end of file From 0c3bb32fa5e7d7838079d3d047d8e66d53a82caa Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 15:03:31 +0200 Subject: [PATCH 125/504] Extendend AbstractEventActivity functionalities --- .../places/event/AbstractEventActivity.java | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java index 01435502172..da88162b112 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -24,7 +24,6 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; -import com.sap.sailing.gwt.home.mobile.places.event.overview.EventView; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; @@ -91,19 +90,16 @@ public abstract class AbstractEventActivity ex return sortedRegattas; } - protected final void initMedia(final EventView view) { + protected final void initMedia(AsyncMediaCallback callback) { if (getCtx().getEventDTO().isHasMedia()) { - clientFactory.getHomeService().getMediaForEvent(getCtx().getEventDTO().getId(), new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - GWT.log("Failed to load media"); - } - - @Override - public void onSuccess(MediaDTO result) { - view.setMediaForImpressions(result.getPhotos().size(), result.getVideos().size(), result.getPhotos()); - } - }); + clientFactory.getHomeService().getMediaForEvent(getCtx().getEventDTO().getId(), callback); + } + } + + protected abstract class AsyncMediaCallback implements AsyncCallback { + @Override + public void onFailure(Throwable caught) { + GWT.log("Failed to load media"); } } From d7a0445be52025e32cb45b4f43fe50ea4ce3476f Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 15:03:58 +0200 Subject: [PATCH 126/504] Adjusted partials for mobile video gallery --- .../partials/videogallery/VideoGallery.java | 23 +++---------------- .../partials/videogallery/VideoGallery.ui.xml | 2 +- .../videogallery/VideoGalleryVideo.java | 2 +- .../videogallery/VideoGalleryVideo.ui.xml | 12 +++++----- 4 files changed, 11 insertions(+), 28 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.java index 1af414e88b5..bb01d55b4fe 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.java @@ -3,14 +3,9 @@ package com.sap.sailing.gwt.home.mobile.partials.videogallery; import java.util.Collection; import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.Style.FontStyle; -import com.google.gwt.dom.client.Style.FontWeight; -import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.Label; -import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -32,24 +27,12 @@ public class VideoGallery extends Composite { sectionHeaderUi.setSectionTitle(StringMessages.INSTANCE.videos()); } - public void setVideos(Collection videos) { + public void setVideos(Collection videos) { sectionHeaderUi.setInfoText(StringMessages.INSTANCE.videosCount(videos.size())); mobileSection.clearContent(); - if (videos.isEmpty()) { - mobileSection.addContent(getNoVideosInfoWidget()); - } else { - for (VideoDTO video : videos) { - mobileSection.addContent(new VideoGalleryVideo(video)); - } + for (VideoDTO video : videos) { + mobileSection.addContent(new VideoGalleryVideo(video)); } } - private Widget getNoVideosInfoWidget() { - Label label = new Label(StringMessages.INSTANCE.noVideos()); - label.getElement().getStyle().setPadding(1, Unit.EM); - label.getElement().getStyle().setFontWeight(FontWeight.BOLD); - label.getElement().getStyle().setFontStyle(FontStyle.ITALIC); - return label; - } - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.ui.xml index cb091314055..e999381548b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.ui.xml @@ -4,7 +4,7 @@ - + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.java index 30b9b7c143c..17b4fa1d354 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.java @@ -17,7 +17,7 @@ public class VideoGalleryVideo extends Composite { interface VideoGalleryVideoUiBinder extends UiBinder { } - @UiField(provided = true) VideoPlayer videoPlayerUi = new VideoPlayer(false, false); + @UiField(provided = true) VideoPlayer videoPlayerUi = new VideoPlayer(true, false); @UiField DivElement videoTitleUi; @UiField DivElement videoCreateDateUi; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.ui.xml index 1e6046686a4..5218a51c4b4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGalleryVideo.ui.xml @@ -4,13 +4,13 @@ - -
+ +
-
-
-
-
+
+
+
+
\ No newline at end of file From ff77b547b951ae830ec5f7cf8c2ebc0f08463486 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 15:04:10 +0200 Subject: [PATCH 127/504] Adjusted partials for mobile image gallery --- .../partials/imagegallery/ImageGallery.java | 35 +++++-------------- .../partials/imagegallery/ImageGallery.ui.xml | 2 +- 2 files changed, 10 insertions(+), 27 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java index d90998083b0..b2cd71a4670 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java @@ -4,14 +4,9 @@ import java.util.Collection; import com.google.gwt.core.shared.GWT; import com.google.gwt.dom.client.DivElement; -import com.google.gwt.dom.client.Style.FontStyle; -import com.google.gwt.dom.client.Style.FontWeight; -import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.Label; -import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -27,34 +22,22 @@ public class ImageGallery extends Composite { @UiField SectionHeaderContent sectionHeaderUi; @UiField DivElement firstColumnUi; @UiField DivElement secondColumnUi; - private final MobileSection mobileSection; public ImageGallery() { ImageGalleryResources.INSTANCE.css().ensureInjected(); - initWidget(mobileSection = uiBinder.createAndBindUi(this)); + initWidget(uiBinder.createAndBindUi(this)); sectionHeaderUi.setSectionTitle(StringMessages.INSTANCE.images()); } - public void setImages(Collection images) { - sectionHeaderUi.setInfoText(StringMessages.INSTANCE.imagesCount(images.size())); - mobileSection.clearContent(); - if (images.isEmpty()) { - mobileSection.addContent(getNoImagesInfoWidget()); - } else { - int imageCount = 0; - for (ImageDTO image : images) { - DivElement container = ++imageCount % 2 != 0 ? firstColumnUi : secondColumnUi; - container.appendChild(new ImageGalleryItem(image).getElement()); - } + public void setImages(Collection images) { + sectionHeaderUi.setInfoText(StringMessages.INSTANCE.photosCount(images.size())); + firstColumnUi.removeAllChildren(); + secondColumnUi.removeAllChildren(); + int imageCount = 0; + for (ImageDTO image : images) { + DivElement container = ++imageCount % 2 != 0 ? firstColumnUi : secondColumnUi; + container.appendChild(new ImageGalleryItem(image).getElement()); } } - private Widget getNoImagesInfoWidget() { - Label label = new Label(StringMessages.INSTANCE.noImages()); - label.getElement().getStyle().setPadding(1, Unit.EM); - label.getElement().getStyle().setFontWeight(FontWeight.BOLD); - label.getElement().getStyle().setFontStyle(FontStyle.ITALIC); - return label; - } - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.ui.xml index 1fe6a9076e9..395e4274f37 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.ui.xml @@ -4,7 +4,7 @@ - + From 4bfcaf3bf7fcd5755fbcff40acd6aeddd4b0fef9 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 15:04:53 +0200 Subject: [PATCH 128/504] Implemented mobile media page --- .../places/event/media/MediaActivity.java | 28 +++++++++++++ .../mobile/places/event/media/MediaView.java | 17 ++++++++ .../places/event/media/MediaViewImpl.java | 41 +++++++++++++++++++ .../places/event/media/MediaViewImpl.ui.xml | 29 +++++++++++++ 4 files changed, 115 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaActivity.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaView.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaViewImpl.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaViewImpl.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaActivity.java new file mode 100644 index 00000000000..55d21b3aa9e --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaActivity.java @@ -0,0 +1,28 @@ +package com.sap.sailing.gwt.home.mobile.places.event.media; + +import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; +import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; +import com.sap.sailing.gwt.home.mobile.places.event.media.MediaView.Presenter; +import com.sap.sailing.gwt.ui.shared.media.MediaDTO; + +public class MediaActivity extends AbstractEventActivity implements Presenter { + + public MediaActivity(AbstractEventPlace place, MobileApplicationClientFactory clientFactory) { + super(place, clientFactory); + } + + @Override + protected EventViewBase initView() { + final MediaView view = new MediaViewImpl(this); + initQuickfinder(view, false); + initMedia(new AsyncMediaCallback() { + @Override + public void onSuccess(MediaDTO result) { + view.setMedia(result.getVideos(), result.getPhotos()); + } + }); + return view; + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaView.java new file mode 100644 index 00000000000..b078d544857 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaView.java @@ -0,0 +1,17 @@ +package com.sap.sailing.gwt.home.mobile.places.event.media; + +import java.util.Collection; + +import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; +import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; +import com.sap.sailing.gwt.ui.shared.media.SailingVideoDTO; + +public interface MediaView extends EventViewBase { + + void setMedia(Collection videos, Collection images); + + public interface Presenter extends EventViewBase.Presenter { + + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaViewImpl.java new file mode 100644 index 00000000000..4f2ade890dd --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaViewImpl.java @@ -0,0 +1,41 @@ +package com.sap.sailing.gwt.home.mobile.places.event.media; + +import java.util.Collection; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.mobile.partials.imagegallery.ImageGallery; +import com.sap.sailing.gwt.home.mobile.partials.videogallery.VideoGallery; +import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView; +import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; +import com.sap.sailing.gwt.ui.shared.media.SailingVideoDTO; + +public class MediaViewImpl extends AbstractEventView implements MediaView { + + private static MediaViewImplUiBinder uiBinder = GWT.create(MediaViewImplUiBinder.class); + + interface MediaViewImplUiBinder extends UiBinder { + } + + @UiField Label noContentInfoUi; + @UiField VideoGallery videoGalleryUi; + @UiField ImageGallery imageGalleryUi; + + public MediaViewImpl(MediaView.Presenter presenter) { + super(presenter, false, true); + setViewContent(uiBinder.createAndBindUi(this)); + } + + @Override + public void setMedia(Collection videos, Collection images) { + noContentInfoUi.setVisible(videos.isEmpty() && images.isEmpty()); + videoGalleryUi.setVideos(videos); + videoGalleryUi.setVisible(!videos.isEmpty()); + imageGalleryUi.setImages(images); + imageGalleryUi.setVisible(!images.isEmpty()); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaViewImpl.ui.xml new file mode 100644 index 00000000000..00519e1ca81 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaViewImpl.ui.xml @@ -0,0 +1,29 @@ + + + + + + .pageTitle { + font-size: 1.066666666666667em; + font-weight: 700; + margin: 0.666666666666667em 0; + } + .infoLabel { + padding: 1em; + font-weight: bold; + font-style: italic; + } + + +
+
+
+ + + + + +
+
\ No newline at end of file From 9c9ae35e3980bd8285b687e2efe843746285b1bf Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 15:05:44 +0200 Subject: [PATCH 129/504] Adjusted event overview to extendend AbstractEventActivity functionalities --- .../home/mobile/places/event/overview/EventActivity.java | 8 +++++++- .../gwt/home/mobile/places/event/overview/EventView.java | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventActivity.java index 6adc9225f86..65b198dc88a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventActivity.java @@ -5,6 +5,7 @@ import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; import com.sap.sailing.gwt.home.mobile.places.event.overview.EventView.Presenter; +import com.sap.sailing.gwt.ui.shared.media.MediaDTO; public class EventActivity extends AbstractEventActivity implements Presenter { @@ -17,7 +18,12 @@ public class EventActivity extends AbstractEventActivity imp final EventView view = new EventViewImpl(this); initSailorInfoOrSeriesNavigation(view); initQuickfinder(view, true); - initMedia(view); + initMedia(new AsyncMediaCallback() { + @Override + public void onSuccess(MediaDTO result) { + view.setMediaForImpressions(result.getPhotos().size(), result.getVideos().size(), result.getPhotos()); + } + }); return view; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventView.java index 33059db7123..ba950916737 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventView.java @@ -4,7 +4,6 @@ import java.util.Collection; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.NewsItemLinkProvider; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; -import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; From fc4d26a19771d167032adbbfbe507a1f17e56178 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 15:07:37 +0200 Subject: [PATCH 130/504] Mobile media page integration which can be enabled/disabled via experimental feature flag --- .../event/multiregatta/tabs/MultiregattaMediaPlace.java | 9 ++++++++- .../place/event/regatta/tabs/RegattaMediaPlace.java | 9 ++++++++- .../gwt/home/mobile/places/event/EventActivityProxy.java | 5 +++++ .../sailing/gwt/home/shared/ExperimentalFeatures.java | 4 ++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java index ec467b32afe..c25c9b343ed 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java @@ -5,8 +5,10 @@ import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.multiregatta.AbstractMultiregattaEventPlace; +import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; +import com.sap.sailing.gwt.home.shared.app.MobileSupport; -public class MultiregattaMediaPlace extends AbstractMultiregattaEventPlace { +public class MultiregattaMediaPlace extends AbstractMultiregattaEventPlace implements MobileSupport { public MultiregattaMediaPlace(String id) { super(id); } @@ -22,4 +24,9 @@ public class MultiregattaMediaPlace extends AbstractMultiregattaEventPlace { return new MultiregattaMediaPlace(context); } } + + @Override + public boolean hasMobileVersion() { + return ExperimentalFeatures.SHOW_MEDIA_PAGE_ON_MOBILE; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java index 37849df2791..2131e5ef157 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java @@ -5,8 +5,10 @@ import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; +import com.sap.sailing.gwt.home.shared.app.MobileSupport; -public class RegattaMediaPlace extends AbstractEventRegattaPlace { +public class RegattaMediaPlace extends AbstractEventRegattaPlace implements MobileSupport { public RegattaMediaPlace(String id, String regattaId) { super(id, regattaId); } @@ -28,4 +30,9 @@ public class RegattaMediaPlace extends AbstractEventRegattaPlace { return new RegattaMediaPlace(context); } } + + @Override + public boolean hasMobileVersion() { + return ExperimentalFeatures.SHOW_MEDIA_PAGE_ON_MOBILE; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java index 3e3b85029da..e250d5a2f88 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java @@ -7,11 +7,14 @@ import com.google.gwt.user.client.rpc.AsyncCallback; import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; +import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; +import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsActivity; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; +import com.sap.sailing.gwt.home.mobile.places.event.media.MediaActivity; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardActivity; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.event.overview.EventActivity; @@ -70,6 +73,8 @@ public class EventActivityProxy extends AbstractActivityProxy { super.onSuccess(new MiniLeaderboardActivity((MiniLeaderboardPlace) currentPlace, clientFactory)); } else if (currentPlace instanceof LatestNewsPlace) { super.onSuccess(new LatestNewsActivity((LatestNewsPlace) currentPlace, clientFactory)); + } else if (currentPlace instanceof RegattaMediaPlace || currentPlace instanceof MultiregattaMediaPlace) { + super.onSuccess(new MediaActivity(currentPlace, clientFactory)); } } }); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java index 1c18d8dd558..56b5e69879b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java @@ -34,6 +34,10 @@ public class ExperimentalFeatures { * Provide option to show the regattas live races for single regatta and series event on mobile devices */ public static final boolean SHOW_REGATTA_LIVE_RACES_ON_MOBILE = false; + /** + * Provide option to show the media page for mobile devices + */ + public static final boolean SHOW_MEDIA_PAGE_ON_MOBILE = false; /** * Provide button to show the competitor analytics in fullscreen view (work in progress) */ From e34e17f91297bf7e1babbb9553315b2e00f7e639 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 17:07:00 +0200 Subject: [PATCH 131/504] Fixed potetial NPE rendering live races on mobile --- .../home/mobile/partials/liveraces/RegattaLiveRaces.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java index 0586f4b8621..4e798cba0df 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java @@ -32,10 +32,12 @@ public class RegattaLiveRaces extends Composite implements RefreshableWidget data) { - setVisible(!data.isEmpty()); + setVisible(data != null && !data.isEmpty()); mobileSection.clearContent(); - for (LiveRaceDTO liveRace : data.getValues()) { - mobileSection.addContent(new RegattaStatusRace(liveRace)); + if (data != null) { + for (LiveRaceDTO liveRace : data.getValues()) { + mobileSection.addContent(new RegattaStatusRace(liveRace)); + } } } From 22831b203544eb2c160d1a6153c547aa3dfe57f5 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 17:07:41 +0200 Subject: [PATCH 132/504] ImageGallery and VideoGallery on mobiel media page are now collapsable --- .../gwt/home/mobile/partials/imagegallery/ImageGallery.java | 4 +++- .../gwt/home/mobile/partials/section/MobileSection.java | 5 +++++ .../gwt/home/mobile/partials/videogallery/VideoGallery.java | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java index b2cd71a4670..3c30c29e154 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java @@ -22,11 +22,13 @@ public class ImageGallery extends Composite { @UiField SectionHeaderContent sectionHeaderUi; @UiField DivElement firstColumnUi; @UiField DivElement secondColumnUi; + private final MobileSection mobileSection; public ImageGallery() { ImageGalleryResources.INSTANCE.css().ensureInjected(); - initWidget(uiBinder.createAndBindUi(this)); + initWidget(mobileSection = uiBinder.createAndBindUi(this)); sectionHeaderUi.setSectionTitle(StringMessages.INSTANCE.images()); + sectionHeaderUi.initCollapsibility(mobileSection.getContentContainerElement(), true); } public void setImages(Collection images) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/section/MobileSection.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/section/MobileSection.java index 07a413046e6..51dc784cd4a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/section/MobileSection.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/section/MobileSection.java @@ -2,6 +2,7 @@ package com.sap.sailing.gwt.home.mobile.partials.section; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; +import com.google.gwt.dom.client.Element; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiChild; import com.google.gwt.uibinder.client.UiField; @@ -63,4 +64,8 @@ public class MobileSection extends Composite { sectionContentHolderUi.removeClassName(local_res.css().edgeToEdgeSectionContentHolder()); } } + + public Element getContentContainerElement() { + return sectionContentHolderUi; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.java index bb01d55b4fe..329e2699cc1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/videogallery/VideoGallery.java @@ -25,6 +25,7 @@ public class VideoGallery extends Composite { VideoGalleryResources.INSTANCE.css().ensureInjected(); initWidget(mobileSection = uiBinder.createAndBindUi(this)); sectionHeaderUi.setSectionTitle(StringMessages.INSTANCE.videos()); + sectionHeaderUi.initCollapsibility(mobileSection.getContentContainerElement(), true); } public void setVideos(Collection videos) { From 97c59cae5618c25f6990e57835b0ef461c03c04f Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 27 Aug 2015 17:11:44 +0200 Subject: [PATCH 133/504] Fixed plural form texts in Impressions header --- .../home/mobile/partials/impressions/Impressions.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/impressions/Impressions.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/impressions/Impressions.java index f01e4a9ea59..8f948b05d10 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/impressions/Impressions.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/impressions/Impressions.java @@ -40,18 +40,14 @@ public class Impressions extends Composite { public void setStatistis(int nrOfImages, int nrOfVideos) { StringBuilder sb = new StringBuilder(); - if (nrOfImages >0) { - sb.append(nrOfImages); - sb.append(" "); - sb.append(i18n.photos()); + if (nrOfImages > 0) { + sb.append(i18n.photosCount(nrOfImages)); if (nrOfVideos > 0) { sb.append(" | "); } } if (nrOfVideos > 0) { - sb.append(nrOfVideos); - sb.append(" "); - sb.append(i18n.videos()); + sb.append(i18n.videosCount(nrOfVideos)); } headerUi.setSubtitle(sb.toString()); From c006c813f322709fd256ba3c8888c2d1b9b28875 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 31 Aug 2015 12:31:33 +0200 Subject: [PATCH 134/504] Avoid carry forward races to be counted in statistics and regatta metadata --- .../java/com/sap/sailing/gwt/server/HomeServiceUtil.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java index c243cbf921e..b12aee08b35 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java @@ -9,9 +9,9 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Locale; +import java.util.Map.Entry; import java.util.Random; import java.util.UUID; -import java.util.Map.Entry; import javax.servlet.http.HttpServletRequest; @@ -178,7 +178,11 @@ public final class HomeServiceUtil { } public static int calculateRaceColumnCount(Leaderboard sl) { - return Util.size(sl.getRaceColumns()); + int nonCarryForwardRacesCount = 0; + for (RaceColumn rc : sl.getRaceColumns()) { + nonCarryForwardRacesCount += rc.isCarryForward() ? 0 : 1; + } + return nonCarryForwardRacesCount; } public static int calculateTrackedRaceCount(Leaderboard sl) { From 7e46be248e99c65afe1b5f097edc363e75701c42 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 1 Sep 2015 10:27:43 +0200 Subject: [PATCH 135/504] Added partials for a mobile fullscreen image gallery --- .../imagegallery/MobileFullscreenGallery.java | 123 ++++++++++++++++++ .../MobileFullscreenGallery.ui.xml | 37 ++++++ .../imagegallery/MobileGalleryPlayer.java | 86 ++++++++++++ .../imagegallery/MobileGalleryPlayer.ui.xml | 21 +++ 4 files changed, 267 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileFullscreenGallery.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileFullscreenGallery.ui.xml create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileGalleryPlayer.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileGalleryPlayer.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileFullscreenGallery.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileFullscreenGallery.java new file mode 100644 index 00000000000..d6021e09f51 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileFullscreenGallery.java @@ -0,0 +1,123 @@ +package com.sap.sailing.gwt.home.mobile.partials.imagegallery; + +import java.util.Collection; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Style.Overflow; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.KeyCodes; +import com.google.gwt.event.logical.shared.CloseEvent; +import com.google.gwt.event.logical.shared.CloseHandler; +import com.google.gwt.event.logical.shared.ResizeEvent; +import com.google.gwt.event.logical.shared.ResizeHandler; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.resources.client.CssResource; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.Event.NativePreviewEvent; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.ui.LayoutPanel; +import com.google.gwt.user.client.ui.PopupPanel; +import com.google.gwt.user.client.ui.RootPanel; +import com.google.gwt.user.client.ui.SimpleLayoutPanel; +import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; +import com.sap.sse.gwt.client.controls.carousel.ImageCarousel.FullscreenViewer; + +public class MobileFullscreenGallery implements FullscreenViewer{ + + private static MobileFullscreenGalleryUiBinder uiBinder = GWT.create(MobileFullscreenGalleryUiBinder.class); + + interface MobileFullscreenGalleryUiBinder extends UiBinder { + } + + interface Style extends CssResource { + String popup(); + String content(); + } + + @UiField Style style; + @UiField(provided=true) SimpleLayoutPanel contentUi = new FullscreenContentPanel(); + + private final FullscreenPopupPanel popup = new FullscreenPopupPanel(); + private final LayoutPanel mainPanel; + + public MobileFullscreenGallery() { + popup.setWidget(mainPanel = uiBinder.createAndBindUi(this)); + popup.addStyleName(style.popup()); + } + + @UiHandler("closeActionUi") + void onCloseActionClicked(ClickEvent event) { + popup.hide(); + } + + public HandlerRegistration addCloseHandler(CloseHandler handler) { + return popup.addCloseHandler(handler); + } + + @Override + public void show(SailingImageDTO selectedImage, Collection imageList) { + contentUi.setWidget(new MobileGalleryPlayer(selectedImage, imageList)); + contentUi.getWidget().getElement().addClassName(style.content()); + mainPanel.onResize(); + popup.showPopupPanel(); + } + + private class FullscreenPopupPanel extends PopupPanel { + private FullscreenPopupPanel() { + super(false, true); + this.addCloseHandler(new CloseHandler() { + @Override + public void onClose(CloseEvent event) { + RootPanel.get().getElement().getStyle().setOverflow(Overflow.AUTO); + contentUi.getWidget().getElement().removeClassName(style.content()); + } + }); + } + + protected void onPreviewNativeEvent(NativePreviewEvent event) { + if (event.getTypeInt() == Event.ONKEYDOWN && event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) { + FullscreenPopupPanel.this.hide(); + event.cancel(); + return; + } + event.consume(); + }; + + private void showPopupPanel() { + RootPanel.get().getElement().getStyle().setOverflow(Overflow.HIDDEN); + FullscreenPopupPanel.this.show(); + } + } + + private class FullscreenContentPanel extends SimpleLayoutPanel { + private HandlerRegistration windowResizeHandler; + + @Override + public void onResize() { + popup.getWidget().getElement().getStyle().setWidth(Window.getClientWidth(), Unit.PX); + popup.getWidget().getElement().getStyle().setHeight(Window.getClientHeight(), Unit.PX); + super.onResize(); + } + + @Override + protected void onLoad() { + windowResizeHandler = Window.addResizeHandler(new ResizeHandler() { + @Override + public void onResize(ResizeEvent event) { + mainPanel.onResize(); + } + }); + } + + @Override + protected void onUnload() { + if (windowResizeHandler != null) { + windowResizeHandler.removeHandler(); + } + } + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileFullscreenGallery.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileFullscreenGallery.ui.xml new file mode 100644 index 00000000000..c2ceccc15b7 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileFullscreenGallery.ui.xml @@ -0,0 +1,37 @@ + + + + + + .popup { + position: fixed !important; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(0,0,0,0.9); + z-index: 5; + } + .closeAction { + height: 50px; + width: auto; + cursor: pointer; + padding: 10px; + } + .container { + width: 100%; + height: 100%; + } + .content { + overflow: auto !important; + } + + + + + + + + + + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileGalleryPlayer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileGalleryPlayer.java new file mode 100644 index 00000000000..1a10fcb7d72 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileGalleryPlayer.java @@ -0,0 +1,86 @@ +package com.sap.sailing.gwt.home.mobile.partials.imagegallery; + +import java.util.Collection; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.core.client.Scheduler; +import com.google.gwt.core.client.Scheduler.ScheduledCommand; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.dom.client.Document; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.ResizeComposite; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sse.common.Util; +import com.sap.sse.gwt.client.media.ImageDTO; + +public class MobileGalleryPlayer extends ResizeComposite { + + private static MyBinder uiBinder = GWT.create(MyBinder.class); + + interface MyBinder extends UiBinder { + } + + @UiField DivElement mainSliderUi; + + private int selectedIdx; + + public MobileGalleryPlayer(ImageDTO selected, Collection images) { + initWidget(uiBinder.createAndBindUi(this)); + selectedIdx = Math.max(selectedIdx, Util.indexOf(images, selected)); + for (ImageDTO i : images) { + mainSliderUi.appendChild(createMainImgElement(i)); + } + } + + private DivElement createMainImgElement(ImageDTO i) { + DivElement img = Document.get().createDivElement(); + img.getStyle().setBackgroundImage("url(\"" + i.getSourceRef() + "\")"); + img.getStyle().setProperty("backgroundSize", "contain"); + img.getStyle().setProperty("backgroundRepeat", "no-repeat"); + img.getStyle().setProperty("backgroundPosition", "center"); + return img; + } + + @Override + protected void onLoad() { + _onLoad(); + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override + public void execute() { + gotoSlider(selectedIdx); + } + }); + } + + @Override + public void onResize() { + refreshSlider(); + } + + native void gotoSlider(int index) /*-{ + $wnd.$('.mainSlider').slick('slickGoTo', index, true); + $wnd.$('.mainSlider').slick('setPosition'); + }-*/; + + native void refreshSlider() /*-{ + $wnd.$('.mainSlider').slick('setOption', null, null, true); + }-*/; + + /** + * JSNI wrapper that does setup the sliders + * + * @param uniqueId + */ + native void _onLoad() /*-{ + $wnd.$('.mainSlider').slick({ + lazyLoad : 'ondemand', + slidesToShow : 1, + slidesToScroll : 1, + arrows : false, + centerMode : false, + variableWidth : false, + adaptiveHeight : false, + }); + }-*/; +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileGalleryPlayer.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileGalleryPlayer.ui.xml new file mode 100644 index 00000000000..13911f2ea13 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/MobileGalleryPlayer.ui.xml @@ -0,0 +1,21 @@ + + + + @external slick-active; + .mainSlider { + height: 100%; + } + .mainSlider div { + height: 100%; + } + .content { + width: 100%; + height: 100%; + } + + + +
+
+
+
\ No newline at end of file From 38c531695bacbcb54ce3878a489e26d06c66272a Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 1 Sep 2015 10:28:11 +0200 Subject: [PATCH 136/504] Integrated mobile fullscreen image gallery into mobile media page --- .../partials/imagegallery/ImageGallery.java | 29 ++++++++++++------- .../partials/imagegallery/ImageGallery.ui.xml | 8 ++--- .../imagegallery/ImageGalleryItem.java | 13 +++++++-- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java index 3c30c29e154..a6cf64e8ba7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.java @@ -3,14 +3,16 @@ package com.sap.sailing.gwt.home.mobile.partials.imagegallery; import java.util.Collection; import com.google.gwt.core.shared.GWT; -import com.google.gwt.dom.client.DivElement; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.FlowPanel; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sse.gwt.client.media.ImageDTO; +import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; public class ImageGallery extends Composite { @@ -20,8 +22,8 @@ public class ImageGallery extends Composite { } @UiField SectionHeaderContent sectionHeaderUi; - @UiField DivElement firstColumnUi; - @UiField DivElement secondColumnUi; + @UiField FlowPanel firstColumnUi; + @UiField FlowPanel secondColumnUi; private final MobileSection mobileSection; public ImageGallery() { @@ -31,14 +33,21 @@ public class ImageGallery extends Composite { sectionHeaderUi.initCollapsibility(mobileSection.getContentContainerElement(), true); } - public void setImages(Collection images) { + public void setImages(final Collection images) { sectionHeaderUi.setInfoText(StringMessages.INSTANCE.photosCount(images.size())); - firstColumnUi.removeAllChildren(); - secondColumnUi.removeAllChildren(); + firstColumnUi.clear(); + secondColumnUi.clear(); int imageCount = 0; - for (ImageDTO image : images) { - DivElement container = ++imageCount % 2 != 0 ? firstColumnUi : secondColumnUi; - container.appendChild(new ImageGalleryItem(image).getElement()); + for (final SailingImageDTO image : images) { + FlowPanel container = ++imageCount % 2 != 0 ? firstColumnUi : secondColumnUi; + ImageGalleryItem imageGalleryItem = new ImageGalleryItem(image); + imageGalleryItem.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + new MobileFullscreenGallery().show(image, images); + } + }); + container.add(imageGalleryItem); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.ui.xml index 395e4274f37..d6a9176f972 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.ui.xml @@ -9,10 +9,10 @@ - -
-
-
+ +
+ +
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.java index 9c3979acca9..e05cd2ba919 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.java @@ -3,12 +3,16 @@ package com.sap.sailing.gwt.home.mobile.partials.imagegallery; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.ImageElement; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.HasClickHandlers; +import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.UIObject; +import com.google.gwt.user.client.ui.Widget; import com.sap.sse.gwt.client.media.ImageDTO; -public class ImageGalleryItem extends UIObject { +public class ImageGalleryItem extends Widget implements HasClickHandlers { private static ImageGalleryItemUiBinder uiBinder = GWT.create(ImageGalleryItemUiBinder.class); @@ -21,5 +25,10 @@ public class ImageGalleryItem extends UIObject { setElement(uiBinder.createAndBindUi(this)); imageUi.setSrc(image.getSourceRef()); } + + @Override + public HandlerRegistration addClickHandler(ClickHandler handler) { + return addDomHandler(handler, ClickEvent.getType()); + } } From 2564459286fba13176c4608235cbfd1dcc27e5d1 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 1 Sep 2015 10:28:43 +0200 Subject: [PATCH 137/504] Integrated mobile fullscreen image gallery into impressions preview on event overview page --- .../gwt/home/mobile/partials/impressions/Impressions.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/impressions/Impressions.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/impressions/Impressions.java index 8f948b05d10..fe1735fa120 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/impressions/Impressions.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/impressions/Impressions.java @@ -7,6 +7,7 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.mobile.partials.imagegallery.MobileFullscreenGallery; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBoxResources; @@ -14,7 +15,6 @@ import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; import com.sap.sse.gwt.client.controls.carousel.ImageCarousel; -import com.sap.sse.gwt.client.media.ImageDTO; public class Impressions extends Composite { private static MyBinder uiBinder = GWT.create(MyBinder.class); @@ -58,7 +58,8 @@ public class Impressions extends Composite { return; } GWT.log("Got " + images.size() + " images"); - ImageCarousel imageCarousel = new ImageCarousel(); + ImageCarousel imageCarousel = new ImageCarousel(); + imageCarousel.registerFullscreenViewer(new MobileFullscreenGallery()); int count = 0; for (SailingImageDTO imageDTO : images) { if (imageDTO.getHeightInPx() == null || imageDTO.getWidthInPx() == null) { From 0daa85b359a1bb6692184935b1e17653751e2506 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 1 Sep 2015 12:44:29 +0200 Subject: [PATCH 138/504] Fixed fullscreen image gallery not working, when containing an image without width and/or height set --- .../gwt/home/client/shared/media/SailingGalleryPlayer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/media/SailingGalleryPlayer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/media/SailingGalleryPlayer.java index 5be069d2680..5d173029c57 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/media/SailingGalleryPlayer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/media/SailingGalleryPlayer.java @@ -8,6 +8,7 @@ import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.ImageElement; +import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.ResizeComposite; @@ -43,8 +44,7 @@ public class SailingGalleryPlayer extends ResizeComposite { private ImageElement createThumbImgElement(SailingImageDTO i ) { ImageElement img = Document.get().createImageElement(); img.setAttribute("src", i.getSourceRef()); - img.setHeight(100); - img.setWidth(i.getWidthInPx() * 100 / i.getHeightInPx()); + img.getStyle().setHeight(103, Unit.PX); return img; } From cfc3d5b41a95faf07268292f73b9f8bc3e58a6a1 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 1 Sep 2015 13:58:21 +0200 Subject: [PATCH 139/504] Hide mini leaderboard on overview pages if there are no results yet --- .../partials/minileaderboard/MinileaderboardBox.java | 11 +++++++++-- .../minileaderboard/MiniLeaderboardViewImpl.java | 1 + .../SeriesMiniOverallLeaderboardViewImpl.java | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/minileaderboard/MinileaderboardBox.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/minileaderboard/MinileaderboardBox.java index e9729ae7241..1a1831f3e59 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/minileaderboard/MinileaderboardBox.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/minileaderboard/MinileaderboardBox.java @@ -30,29 +30,36 @@ public class MinileaderboardBox extends Composite implements RefreshableWidget placeNavigation) { headerUi.setInfoText(infoText); headerUi.setClickAction(placeNavigation); } + + public void setShowIfEmpty(boolean showIfEmpty) { + this.showIfEmpty = showIfEmpty; + } @Override public void setData(final GetMiniLeaderboardDTO data) { itemContainerUi.clearContent(); if(data.getItems().isEmpty()) { + setVisible(showIfEmpty); itemContainerUi.addContent(getNoResultsInfoWidget()); return; } + setVisible(true); headerUi.setLabelType(data.isLive() ? LabelType.LIVE : LabelType.NONE); if(data.getScoreCorrectionText() != null || data.getLastScoreUpdate() != null) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardViewImpl.java index 5a72f51b8f0..974efc80749 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardViewImpl.java @@ -15,6 +15,7 @@ public class MiniLeaderboardViewImpl extends AbstractEventView Date: Wed, 2 Sep 2015 13:40:57 +0200 Subject: [PATCH 140/504] Fixed calculatition of event stage candidates --- .../server/EventStageCandidateCalculator.java | 2 +- .../gwt/server/FeaturedEventsComparator.java | 28 ++++++++++++++----- .../sailing/gwt/server/HomeServiceImpl.java | 7 +++-- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventStageCandidateCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventStageCandidateCalculator.java index dbba6e86a69..41f36011c12 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventStageCandidateCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventStageCandidateCalculator.java @@ -15,7 +15,7 @@ import com.sap.sse.common.impl.MillisecondsTimePoint; public class EventStageCandidateCalculator implements EventVisitor { private final TimePoint now = MillisecondsTimePoint.now(); - private final SortedSet> featuredEvents = new TreeSet<>(FeaturedEventsComparator.INSTANCE); + private final SortedSet> featuredEvents = new TreeSet<>(new FeaturedEventsComparator()); @Override public void visit(EventBase event, boolean onRemoteServer, URL baseURL) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/FeaturedEventsComparator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/FeaturedEventsComparator.java index bd475ee6fa8..655503bdfbe 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/FeaturedEventsComparator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/FeaturedEventsComparator.java @@ -1,7 +1,11 @@ package com.sap.sailing.gwt.server; import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.gwt.ui.shared.start.StageEventType; import com.sap.sse.common.TimePoint; import com.sap.sse.common.TimeRange; @@ -10,15 +14,25 @@ import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.common.impl.TimeRangeImpl; public class FeaturedEventsComparator implements Comparator> { - public static final Comparator> INSTANCE = new FeaturedEventsComparator(); + + private final TimePoint now = MillisecondsTimePoint.now(); + private final Random randomizer = new Random(); + private final Map randomizedEvents = new HashMap<>(); @Override public int compare(Pair eventAndStageType1, Pair eventAndStageType2) { - TimePoint now = MillisecondsTimePoint.now(); - TimeRange event1Range = new TimeRangeImpl(eventAndStageType1.getB().event.getStartDate(), - eventAndStageType1.getB().event.getEndDate()); - TimeRange event2Range = new TimeRangeImpl(eventAndStageType2.getB().event.getStartDate(), - eventAndStageType2.getB().event.getEndDate()); - return event1Range.timeDifference(now).compareTo(event2Range.timeDifference(now)); + EventBase event1 = eventAndStageType1.getB().event, event2 = eventAndStageType2.getB().event; + TimeRange event1Range = new TimeRangeImpl(event1.getStartDate(), event1.getEndDate()); + TimeRange event2Range = new TimeRangeImpl(event2.getStartDate(), event2.getEndDate()); + int timeDiffComp = event1Range.timeDifference(now).compareTo(event2Range.timeDifference(now)); + return timeDiffComp == 0 ? getRandomValue(event1) - getRandomValue(event2) : timeDiffComp; + } + + private int getRandomValue(EventBase event) { + Integer randomValue = randomizedEvents.get(event); + if (randomValue == null) { + randomizedEvents.put(event, randomValue = randomizer.nextInt()); + } + return randomValue; } } \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java index 550ed2649cd..cd7e9c91698 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java @@ -78,13 +78,14 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home int count = 0; for(Pair pair : stageCandidateCalculator.getFeaturedEvents()) { + StageEventType stageType = pair.getA(); + EventHolder holder = pair.getB(); + count++; - if(count > MAX_STAGE_EVENTS) { + if(count > MAX_STAGE_EVENTS && stageType != StageEventType.RUNNING) { break; } - StageEventType stageType = pair.getA(); - EventHolder holder = pair.getB(); result.addStageEvent(HomeServiceUtil.convertToEventStageDTO(holder.event, holder.baseURL, holder.onRemoteServer, stageType, getService(), false)); EventReferenceDTO eventRef = new EventReferenceDTO(holder.event); From db5d991b59a3cf73056a0275676d349a60cd4ffb Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 3 Sep 2015 09:56:04 +0200 Subject: [PATCH 141/504] Adjusted styles for mobile races pages --- .../mobile/partials/regattacompetition/RegattaCompetition.gss | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss index 01a26e9bc85..c665333c581 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss @@ -78,6 +78,7 @@ padding: 1.066666666666667em 0; border-radius: 0.333333333333333em; color: #f6f9fc; + min-height: 4.4em; } .regattacompetition_phase_fleet_racetracked { background: #008fcc; From 6a72e564fcb3a9705d056860a116934a902b4f55 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 3 Sep 2015 11:39:47 +0200 Subject: [PATCH 142/504] Hide mini leaderboard on overview pages if there are no results yet --- .../desktop/partials/standings/StandingsList.java | 11 ++--------- .../desktop/partials/standings/StandingsList.ui.xml | 1 - 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/standings/StandingsList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/standings/StandingsList.java index f9c500c415d..9198690bbf8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/standings/StandingsList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/standings/StandingsList.java @@ -31,13 +31,12 @@ public class StandingsList extends Widget implements RefreshableWidget headerNavigation) { StandingsResources.INSTANCE.css().ensureInjected(); setElement(uiBinder.createAndBindUi(this)); - + setVisible(false); headerTitleUi.setInnerText(finished ? i18n.results() : i18n.latestRegattaStandings()); if(headerNavigation == null) { headerArrowUi.removeFromParent(); @@ -54,13 +53,7 @@ public class StandingsList extends Widget implements RefreshableWidget
-
From ef1841faf4fa5116bb4f0ba80dbe9f573318bc94 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 3 Sep 2015 14:19:19 +0200 Subject: [PATCH 143/504] Always show start date and time in finished races list --- .../place/event/regatta/tabs/RegattaRacesTabView.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index 51d6f2c6143..f60b256f7e9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -283,7 +283,11 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView Date: Thu, 3 Sep 2015 17:44:06 +0200 Subject: [PATCH 144/504] Live races in single regatta and series evnents are now shown to the top of the stage area --- .../place/event/regatta/tabs/RegattaOverviewTabView.ui.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.ui.xml index f86c796b10b..70e763c1f90 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.ui.xml @@ -14,12 +14,12 @@
- + +
-
From 1ae93709963f1dadad581f131fd9035df6124e51 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Fri, 4 Sep 2015 10:31:51 +0200 Subject: [PATCH 145/504] Ensure correct location calculation for flexible leaderboards --- .../java/com/sap/sailing/gwt/server/HomeServiceUtil.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java index 2c2155273db..adedf6ac3ea 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java @@ -9,9 +9,9 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Locale; +import java.util.Map.Entry; import java.util.Random; import java.util.UUID; -import java.util.Map.Entry; import javax.servlet.http.HttpServletRequest; @@ -411,10 +411,8 @@ public final class HomeServiceUtil { } Event event = (Event) eventBase; for (Leaderboard leaderboard : event.getLeaderboardGroups().iterator().next().getLeaderboards()) { - if(leaderboard instanceof RegattaLeaderboard) { - if(HomeServiceUtil.isPartOfEvent(event, leaderboard)) { - return leaderboard.getDisplayName() != null ? leaderboard.getDisplayName() : leaderboard.getName(); - } + if(HomeServiceUtil.isPartOfEvent(event, leaderboard)) { + return leaderboard.getDisplayName() != null ? leaderboard.getDisplayName() : leaderboard.getName(); } } return null; From 955c5138a9ba23fec2c4694264af8bb36a88fe3e Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Mon, 7 Sep 2015 10:28:40 +0200 Subject: [PATCH 146/504] Improved the FunctionManager and the retriever chain meta data --- .../gwt/ui/datamining/DataMiningService.java | 8 +- .../ui/datamining/DataMiningServiceAsync.java | 9 +- .../PlainFilterSelectionPresenter.java | 12 +- ...RetrieverChainFilterSelectionProvider.java | 115 +++++------------- ...RetrieverLevelFilterSelectionProvider.java | 11 +- .../gwt/ui/server/DataMiningServiceImpl.java | 70 ++++++----- .../dto/DataRetrieverChainDefinitionDTO.java | 28 ++--- .../impl/dto/DataRetrieverLevelDTO.java | 70 +++++++++++ .../TestDataRetrieverChainCreation.java | 6 +- ...TestFunctionManagerAsFunctionProvider.java | 2 +- .../sap/sse/datamining/DataMiningServer.java | 6 +- .../DataRetrieverChainDefinition.java | 8 +- .../factories/DataMiningDTOFactory.java | 28 +++++ .../sse/datamining/functions/Function.java | 12 ++ .../functions/FunctionProvider.java | 7 +- .../functions/FunctionRegistry.java | 1 + .../datamining/impl/DataMiningServerImpl.java | 11 +- ...formation.java => DataRetrieverLevel.java} | 19 ++- .../SimpleDataRetrieverChainBuilder.java | 10 +- .../SimpleDataRetrieverChainDefinition.java | 15 ++- .../ConcatenatingCompoundFunction.java | 23 ++++ .../impl/functions/FunctionManager.java | 51 +++++++- .../functions/MethodWrappingFunction.java | 23 ++++ 23 files changed, 370 insertions(+), 175 deletions(-) create mode 100644 java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/DataRetrieverLevelDTO.java rename java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/{DataRetrieverTypeWithInformation.java => DataRetrieverLevel.java} (79%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningService.java index 4735ff6df18..c373e831984 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningService.java @@ -2,6 +2,8 @@ package com.sap.sailing.gwt.ui.datamining; import java.util.Collection; import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -11,6 +13,7 @@ import com.sap.sse.datamining.shared.SerializationDummy; import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.AggregationProcessorDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO; +import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO; import com.sap.sse.datamining.shared.impl.dto.FunctionDTO; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; @@ -24,7 +27,10 @@ public interface DataMiningService extends RemoteService { Iterable getAggregatorDefinitionsFor(FunctionDTO extractionFunction, String localeInfoName); Iterable getDimensionsFor(FunctionDTO statisticToCalculate, String localeInfoName); - Iterable getDimensionsFor(DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, String localeInfoName); + HashMap> getDimensionsMappedByLevelFor( + DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, String localeInfoName); + HashMap> getReducedDimensionsMappedByLevelFor( + DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, String localeInfoName); Iterable getDataRetrieverChainDefinitions(String localeName); Iterable getDataRetrieverChainDefinitionsFor(FunctionDTO statisticToCalculate, String localeInfoName); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningServiceAsync.java index 639569f48b4..c3049ca444f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningServiceAsync.java @@ -2,6 +2,8 @@ package com.sap.sailing.gwt.ui.datamining; import java.util.Collection; import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -12,6 +14,7 @@ import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO; import com.sap.sse.datamining.shared.impl.GenericGroupKey; import com.sap.sse.datamining.shared.impl.dto.AggregationProcessorDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO; +import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO; import com.sap.sse.datamining.shared.impl.dto.FunctionDTO; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; @@ -27,8 +30,10 @@ public interface DataMiningServiceAsync { AsyncCallback> asyncCallback); void getDimensionsFor(FunctionDTO statisticToCalculate, String localeInfoName, AsyncCallback> callback); - void getDimensionsFor(DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, String localeInfoName, - AsyncCallback> callback); + void getDimensionsMappedByLevelFor(DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, String localeInfoName, + AsyncCallback>> callback); + public void getReducedDimensionsMappedByLevelFor(DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, String localeInfoName, + AsyncCallback>> callback); void getDataRetrieverChainDefinitions(String localeInfoName, AsyncCallback> asyncCallback); void getDataRetrieverChainDefinitionsFor(FunctionDTO statisticToCalculate, String localeInfoName, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainFilterSelectionPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainFilterSelectionPresenter.java index 828ca1faadd..6991ef607c2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainFilterSelectionPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainFilterSelectionPresenter.java @@ -17,13 +17,13 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.datamining.DataRetrieverChainDefinitionChangedListener; import com.sap.sailing.gwt.ui.datamining.DataRetrieverChainDefinitionProvider; +import com.sap.sailing.gwt.ui.datamining.FilterSelectionChangedListener; import com.sap.sailing.gwt.ui.datamining.FilterSelectionPresenter; import com.sap.sailing.gwt.ui.datamining.FilterSelectionProvider; -import com.sap.sailing.gwt.ui.datamining.FilterSelectionChangedListener; import com.sap.sse.common.settings.AbstractSettings; import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO; +import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO; import com.sap.sse.datamining.shared.impl.dto.FunctionDTO; -import com.sap.sse.datamining.shared.impl.dto.LocalizedTypeDTO; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; public class PlainFilterSelectionPresenter implements FilterSelectionPresenter, FilterSelectionChangedListener, @@ -69,8 +69,8 @@ public class PlainFilterSelectionPresenter implements FilterSelectionPresenter, boolean first = true; for (Integer levelIndex : sortedLevels) { Map> levelSelection = selection.get(levelIndex); - LocalizedTypeDTO level = retrieverChain.getRetrievedDataType(levelIndex); - RetrieverLevelFilterSelectionPresenter levelSelectionPresenter = new RetrieverLevelFilterSelectionPresenter(level, levelSelection); + DataRetrieverLevelDTO retrieverLevel = retrieverChain.getRetrieverLevel(levelIndex); + RetrieverLevelFilterSelectionPresenter levelSelectionPresenter = new RetrieverLevelFilterSelectionPresenter(retrieverLevel, levelSelection); if (!first) { levelSelectionPresenter.getEntryWidget().getElement().getStyle().setMarginTop(5, Unit.PX); } @@ -83,10 +83,10 @@ public class PlainFilterSelectionPresenter implements FilterSelectionPresenter, private final HorizontalPanel mainPanel; - public RetrieverLevelFilterSelectionPresenter(LocalizedTypeDTO level, + public RetrieverLevelFilterSelectionPresenter(DataRetrieverLevelDTO retrieverLevel, Map> levelSelection) { - Label levelLabel = new Label(level.getDisplayName()); + Label levelLabel = new Label(retrieverLevel.getRetrievedDataType().getDisplayName()); levelLabel.getElement().getStyle().setFontWeight(FontWeight.BOLD); levelLabel.setWidth("75px"); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/ListRetrieverChainFilterSelectionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/ListRetrieverChainFilterSelectionProvider.java index 0c9bffb1f73..600245f4d92 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/ListRetrieverChainFilterSelectionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/ListRetrieverChainFilterSelectionProvider.java @@ -35,8 +35,8 @@ import com.sap.sse.common.settings.AbstractSettings; import com.sap.sse.datamining.shared.DataMiningSession; import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO; +import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO; import com.sap.sse.datamining.shared.impl.dto.FunctionDTO; -import com.sap.sse.datamining.shared.impl.dto.LocalizedTypeDTO; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; @@ -51,12 +51,12 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio private boolean isAwaitingReload; private boolean blockDataUpdates; private DataRetrieverChainDefinitionDTO retrieverChain; - private final Map selectionProvidersMappedByRetrievedDataType; + private final Map selectionProvidersMappedByRetrievedDataType; private final DockLayoutPanel mainPanel; - private final CellList retrieverLevelList; - private final SingleSelectionModel retrieverLevelSelectionModel; - private final ListDataProvider retrieverLevelDataProvider; + private final CellList retrieverLevelList; + private final SingleSelectionModel retrieverLevelSelectionModel; + private final ListDataProvider retrieverLevelDataProvider; private final ScrollPanel selectionPanel; private final FilterSelectionPresenter selectionPresenter; private final ScrollPanel selectionPresenterScrollPanel; @@ -76,7 +76,7 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio retrieverChain = null; selectionProvidersMappedByRetrievedDataType = new HashMap<>(); - retrieverLevelList = new CellList(new RetrieverLevelCell()); + retrieverLevelList = new CellList<>(new RetrieverLevelCell()); retrieverLevelSelectionModel = new RetrieverLevelSelectionModel(); retrieverLevelList.setSelectionModel(retrieverLevelSelectionModel); retrieverLevelDataProvider = new ListDataProvider<>(); @@ -129,34 +129,33 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio private void updateRetrievalLevels() { clearContent(); - retrieverLevelDataProvider.getList().addAll(retrieverChain.getRetrievedDataTypesChain()); + retrieverLevelDataProvider.getList().addAll(retrieverChain.getRetrieverLevels()); retrieverLevelList.setPageSize(retrieverLevelDataProvider.getList().size()); - dataMiningService.getDimensionsFor(retrieverChain, LocaleInfo.getCurrentLocale().getLocaleName(), new AsyncCallback>() { + dataMiningService.getReducedDimensionsMappedByLevelFor(retrieverChain, LocaleInfo.getCurrentLocale().getLocaleName(), new AsyncCallback>>() { @Override public void onFailure(Throwable caught) { errorReporter.reportError("Error fetching the dimensions of the retrieval chain from the server: " + caught.getMessage()); } @Override - public void onSuccess(Iterable dimensions) { - Map> dimensionsMappedBySourceType = mapBySourceType(dimensions); - Map> reducedDimensionsMappedByRetrieverLevel = reduceAndMapByRetrieverLevel(dimensionsMappedBySourceType); + public void onSuccess(HashMap> dimensionsMappedByLevel) { int firstFilterableRetrieverLevel = Integer.MAX_VALUE; - for (Entry> dimensionsEntry : reducedDimensionsMappedByRetrieverLevel.entrySet()) { + for (Entry> dimensionsEntry : dimensionsMappedByLevel.entrySet()) { if (!dimensionsEntry.getValue().isEmpty()) { - int retrieverLevel = dimensionsEntry.getKey(); - LocalizedTypeDTO retrievedDataType = retrieverChain.getRetrievedDataType(retrieverLevel); + DataRetrieverLevelDTO retrieverLevel = dimensionsEntry.getKey(); RetrieverLevelFilterSelectionProvider selectionProvider = - new RetrieverLevelFilterSelectionProvider(session, dataMiningService, errorReporter, ListRetrieverChainFilterSelectionProvider.this, retrieverChain, - retrievedDataType, retrieverLevel); + new RetrieverLevelFilterSelectionProvider(session, dataMiningService, errorReporter, + ListRetrieverChainFilterSelectionProvider.this, + retrieverChain,retrieverLevel); selectionProvider.setAvailableDimensions(dimensionsEntry.getValue()); - selectionProvidersMappedByRetrievedDataType.put(retrievedDataType, selectionProvider); + selectionProvidersMappedByRetrievedDataType.put(retrieverLevel, selectionProvider); - firstFilterableRetrieverLevel = retrieverLevel < firstFilterableRetrieverLevel ? retrieverLevel : firstFilterableRetrieverLevel; + firstFilterableRetrieverLevel = retrieverLevel.getLevel() < firstFilterableRetrieverLevel ? + retrieverLevel.getLevel() : firstFilterableRetrieverLevel; } } - retrieverLevelSelectionModel.setSelected(retrieverChain.getRetrievedDataType(firstFilterableRetrieverLevel), true); + retrieverLevelSelectionModel.setSelected(retrieverChain.getRetrieverLevel(firstFilterableRetrieverLevel), true); } }); } @@ -171,58 +170,6 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio blockDataUpdates = false; forwardSelectionChanged(); } - - private Map> mapBySourceType(Iterable dimensions) { - Map> dimensionsMappedBySourceType = new HashMap<>(); - for (FunctionDTO dimension : dimensions) { - if (!dimensionsMappedBySourceType.containsKey(dimension.getSourceTypeName())) { - dimensionsMappedBySourceType.put(dimension.getSourceTypeName(), new HashSet()); - } - dimensionsMappedBySourceType.get(dimension.getSourceTypeName()).add(dimension); - } - return dimensionsMappedBySourceType; - } - - private Map> reduceAndMapByRetrieverLevel(Map> dimensionsMappedBySourceType) { - Map> reducedDimensionsMappedBySourceType = new HashMap<>(); - for (int retrieverLevel = 0; retrieverLevel < retrieverChain.size(); retrieverLevel++) { - LocalizedTypeDTO retrievedDataType = retrieverChain.getRetrievedDataType(retrieverLevel); - Collection dimensions = dimensionsMappedBySourceType.get(retrievedDataType.getTypeName()); - Collection previousDimensions = - retrieverLevel > 0 ? dimensionsMappedBySourceType.get(retrieverChain.getRetrievedDataType(retrieverLevel - 1).getTypeName()) : null; - if (dimensions != null && !dimensions.isEmpty()) { - if (reducedDimensionsMappedBySourceType.isEmpty() || previousDimensions == null || previousDimensions.isEmpty()) { - reducedDimensionsMappedBySourceType.put(retrieverLevel, dimensions); - } else { - reducedDimensionsMappedBySourceType.put(retrieverLevel, reduce(dimensions, previousDimensions)); - } - } - } - return reducedDimensionsMappedBySourceType; - } - - private Collection reduce(Collection dimensionsToReduce, Collection byDimensions) { - Collection reducedDimensions = new HashSet<>(); - for (FunctionDTO dimension : dimensionsToReduce) { - boolean isDimensionAllowed = true; - for (FunctionDTO forbiddenDimension : byDimensions) { - if (areDimensionsLogicalEqual(dimension, forbiddenDimension)) { - isDimensionAllowed = false; - break; - } - } - if (isDimensionAllowed) { - reducedDimensions.add(dimension); - } - } - return reducedDimensions; - } - - private boolean areDimensionsLogicalEqual(FunctionDTO dimension1, FunctionDTO dimension2) { - return dimension1.getDisplayName().equals(dimension2.getDisplayName()) && - dimension1.getParameterTypeNames().equals(dimension2.getParameterTypeNames()) && - dimension1.getReturnTypeName().equals(dimension2.getReturnTypeName()); - } void retrieverLevelFilterSelectionChanged(RetrieverLevelFilterSelectionProvider retrieverLevelFilterSelectionProvider, DimensionFilterSelectionProvider dimensionFilterSelectionProvider) { if (!blockDataUpdates) { @@ -232,17 +179,17 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio } void updateFilterSelectionProviders(int beginningWithLevel, final FunctionDTO exceptForDimension) { - LocalizedTypeDTO retrievedDataType = null; - for (int retrieverLevel = beginningWithLevel; retrieverLevel < retrieverChain.size(); retrieverLevel++) { - LocalizedTypeDTO levelRetrievedDataType = retrieverChain.getRetrievedDataType(retrieverLevel); - if (selectionProvidersMappedByRetrievedDataType.containsKey(levelRetrievedDataType)) { - retrievedDataType = levelRetrievedDataType; + DataRetrieverLevelDTO retrieverLevelToUpdate = null; + for (int retrieverLevelIndex = beginningWithLevel; retrieverLevelIndex < retrieverChain.size(); retrieverLevelIndex++) { + DataRetrieverLevelDTO retrieverLevel = retrieverChain.getRetrieverLevel(retrieverLevelIndex); + if (selectionProvidersMappedByRetrievedDataType.containsKey(retrieverLevel)) { + retrieverLevelToUpdate = retrieverLevel; break; } } - if (retrievedDataType != null) { - selectionProvidersMappedByRetrievedDataType.get(retrievedDataType).updateAvailableData(exceptForDimension); + if (retrieverLevelToUpdate != null) { + selectionProvidersMappedByRetrievedDataType.get(retrieverLevelToUpdate).updateAvailableData(exceptForDimension); } else { //The update of the whole retriever chain is completed. Notify the listeners. forwardSelectionChanged(); @@ -296,17 +243,17 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio } } - private class RetrieverLevelCell extends AbstractCell { + private class RetrieverLevelCell extends AbstractCell { @Override - public void render(Cell.Context context, LocalizedTypeDTO value, SafeHtmlBuilder sb) { + public void render(Cell.Context context, DataRetrieverLevelDTO value, SafeHtmlBuilder sb) { if (value == null) { return; } sb.appendHtmlConstant(""); - sb.appendHtmlConstant(""); + sb.appendHtmlConstant(""); - List dataList = retrieverLevelDataProvider.getList(); + List dataList = retrieverLevelDataProvider.getList(); if (!dataList.get(dataList.size() - 1).equals(value)) { sb.appendHtmlConstant(""); } @@ -315,7 +262,7 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio } } - private class RetrieverLevelSelectionModel extends SingleSelectionModel { + private class RetrieverLevelSelectionModel extends SingleSelectionModel { public RetrieverLevelSelectionModel() { super(); addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @@ -327,7 +274,7 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio } @Override - public void setSelected(LocalizedTypeDTO item, boolean selected) { + public void setSelected(DataRetrieverLevelDTO item, boolean selected) { if (!selected || !selectionProvidersMappedByRetrievedDataType.containsKey(item)) { //Prevents the selection of retriever levels, that don't have any dimensions and can't filter return; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/RetrieverLevelFilterSelectionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/RetrieverLevelFilterSelectionProvider.java index ead202ac6be..db6ab023820 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/RetrieverLevelFilterSelectionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/RetrieverLevelFilterSelectionProvider.java @@ -16,6 +16,7 @@ import com.sap.sailing.gwt.ui.datamining.DataMiningServiceAsync; import com.sap.sse.common.settings.AbstractSettings; import com.sap.sse.datamining.shared.DataMiningSession; import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO; +import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO; import com.sap.sse.datamining.shared.impl.dto.FunctionDTO; import com.sap.sse.datamining.shared.impl.dto.LocalizedTypeDTO; import com.sap.sse.gwt.client.ErrorReporter; @@ -30,8 +31,7 @@ public class RetrieverLevelFilterSelectionProvider implements Component availableDimensions; private final HorizontalPanel mainPanel; @@ -39,14 +39,13 @@ public class RetrieverLevelFilterSelectionProvider implements Component(); @@ -194,11 +193,11 @@ public class RetrieverLevelFilterSelectionProvider implements Component getAllStatistics(String localeInfoName) { Iterable> statistics = getDataMiningServer().getAllStatistics(); - return functionsAsFunctionDTOs(statistics, localeInfoName); + return functionsAsDTOs(statistics, localeInfoName); } @Override public Iterable getStatisticsFor(DataRetrieverChainDefinitionDTO retrieverChainDefinition, String localeInfoName) { Class retrievedDataType = getDataMiningServer().getDataRetrieverChainDefinition(retrieverChainDefinition.getId()).getRetrievedDataType(); Iterable> statistics = getDataMiningServer().getStatisticsFor(retrievedDataType); - return functionsAsFunctionDTOs(statistics, localeInfoName); + return functionsAsDTOs(statistics, localeInfoName); } @Override @@ -109,14 +110,7 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM public Iterable getDimensionsFor(FunctionDTO statisticToCalculate, String localeInfoName) { Class baseDataType = getBaseDataType(statisticToCalculate); Iterable> dimensions = getDataMiningServer().getDimensionsFor(baseDataType); - return functionsAsFunctionDTOs(dimensions, localeInfoName); - } - - @Override - public Iterable getDimensionsFor(DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, String localeInfoName) { - DataRetrieverChainDefinition dataRetrieverChainDefinition = getDataMiningServer().getDataRetrieverChainDefinition(dataRetrieverChainDefinitionDTO.getId()); - Iterable> dimensions = getDataMiningServer().getDimensionsFor(dataRetrieverChainDefinition); - return functionsAsFunctionDTOs(dimensions, localeInfoName); + return functionsAsDTOs(dimensions, localeInfoName); } private Class getBaseDataType(FunctionDTO statisticToCalculate) { @@ -124,13 +118,42 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM return function.getDeclaringType(); } - private Collection functionsAsFunctionDTOs(Iterable> functions, String localeInfoName) { + @Override + public HashMap> getDimensionsMappedByLevelFor(DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, String localeInfoName) { + DataRetrieverChainDefinition dataRetrieverChainDefinition = getDataMiningServer().getDataRetrieverChainDefinition(dataRetrieverChainDefinitionDTO.getId()); + Map, Iterable>> dimensions = getDataMiningServer() + .getDimensionsMappedByLevelFor(dataRetrieverChainDefinition); + return dimensionsMappedByLevelAsDTOs(dimensions, localeInfoName); + } + + @Override + public HashMap> getReducedDimensionsMappedByLevelFor( + DataRetrieverChainDefinitionDTO dataRetrieverChainDefinitionDTO, String localeInfoName) { + DataRetrieverChainDefinition dataRetrieverChainDefinition = getDataMiningServer().getDataRetrieverChainDefinition(dataRetrieverChainDefinitionDTO.getId()); + Map, Iterable>> reducedDimensions = getDataMiningServer() + .getReducedDimensionsMappedByLevelFor(dataRetrieverChainDefinition); + return dimensionsMappedByLevelAsDTOs(reducedDimensions, localeInfoName); + } + + private HashMap> dimensionsMappedByLevelAsDTOs( + Map, Iterable>> dimensions, String localeInfoName) { + HashMap> dimensionDTOs = new HashMap<>(); + ResourceBundleStringMessages stringMessages = getDataMiningServer().getStringMessages(); Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName); - ResourceBundleStringMessages ServerStringMessages = getDataMiningServer().getStringMessages(); + for (Entry, Iterable>> dimensionsEntry : dimensions.entrySet()) { + dimensionDTOs.put(dtoFactory.createDataRetrieverLevelDTO(dimensionsEntry.getKey(), stringMessages, locale), + functionsAsDTOs(dimensionsEntry.getValue(), localeInfoName)); + } + return dimensionDTOs; + } + + private HashSet functionsAsDTOs(Iterable> functions, String localeInfoName) { + Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName); + ResourceBundleStringMessages stringMessages = getDataMiningServer().getStringMessages(); - Collection functionDTOs = new ArrayList(); + HashSet functionDTOs = new HashSet(); for (Function function : functions) { - functionDTOs.add(dtoFactory.createFunctionDTO(function, ServerStringMessages, locale)); + functionDTOs.add(dtoFactory.createFunctionDTO(function, stringMessages, locale)); } return functionDTOs; } @@ -151,22 +174,13 @@ public class DataMiningServiceImpl extends RemoteServiceServlet implements DataM private Collection dataRetrieverChainDefinitionsAsDTOs( Iterable> dataRetrieverChainDefinitions, String localeInfoName) { - Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName); ResourceBundleStringMessages serverStringMessages = getDataMiningServer().getStringMessages(); + Locale locale = ResourceBundleStringMessages.Util.getLocaleFor(localeInfoName); Collection DTOs = new ArrayList<>(); for (DataRetrieverChainDefinition dataRetrieverChainDefinition : dataRetrieverChainDefinitions) { - Collection retrievedDataTypesChain = new ArrayList<>(); - for (DataRetrieverTypeWithInformation retrieverTypeWithInformation : dataRetrieverChainDefinition.getDataRetrieverTypesWithInformation()) { - String typeName = retrieverTypeWithInformation.getRetrievedDataType().getSimpleName(); - String displayName = retrieverTypeWithInformation.getRetrievedDataTypeMessageKey() != null && !retrieverTypeWithInformation.getRetrievedDataTypeMessageKey().isEmpty() ? - serverStringMessages.get(locale, retrieverTypeWithInformation.getRetrievedDataTypeMessageKey()) : - typeName; - LocalizedTypeDTO localizedRetrievedDataType = new LocalizedTypeDTO(typeName, displayName); - retrievedDataTypesChain.add(localizedRetrievedDataType); - } - DTOs.add(new DataRetrieverChainDefinitionDTO(dataRetrieverChainDefinition.getID(), dataRetrieverChainDefinition.getLocalizedName(locale, serverStringMessages), - dataRetrieverChainDefinition.getDataSourceType().getSimpleName(), retrievedDataTypesChain)); + DTOs.add(dtoFactory.createDataRetrieverChainDefinitionDTO(dataRetrieverChainDefinition, + serverStringMessages, locale)); } return DTOs; } diff --git a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/DataRetrieverChainDefinitionDTO.java b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/DataRetrieverChainDefinitionDTO.java index 421555fbff8..97ff06bebe1 100644 --- a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/DataRetrieverChainDefinitionDTO.java +++ b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/DataRetrieverChainDefinitionDTO.java @@ -2,8 +2,6 @@ package com.sap.sse.datamining.shared.impl.dto; import java.io.Serializable; import java.util.ArrayList; -import java.util.Collection; -import java.util.List; import java.util.UUID; public class DataRetrieverChainDefinitionDTO implements Serializable, Comparable { @@ -13,7 +11,7 @@ public class DataRetrieverChainDefinitionDTO implements Serializable, Comparable private String name; private String dataSourceTypeName; - private List retrievedDataTypesChain; + private ArrayList retrieverLevels; /** * Constructor for the GWT-Serialization. Don't use this! @@ -21,12 +19,12 @@ public class DataRetrieverChainDefinitionDTO implements Serializable, Comparable @Deprecated DataRetrieverChainDefinitionDTO() { } - public DataRetrieverChainDefinitionDTO(UUID id, String name, String dataSourceTypeName, Collection retrievedDataTypesChain) { + public DataRetrieverChainDefinitionDTO(UUID id, String name, String dataSourceTypeName, ArrayList retrieverLevels) { this.id = id; this.name = name; this.dataSourceTypeName = dataSourceTypeName; - this.retrievedDataTypesChain = new ArrayList<>(retrievedDataTypesChain); + this.retrieverLevels = new ArrayList<>(retrieverLevels); } public UUID getId() { @@ -42,19 +40,19 @@ public class DataRetrieverChainDefinitionDTO implements Serializable, Comparable } public String getRetrievedDataTypeName() { - return retrievedDataTypesChain.get(retrievedDataTypesChain.size() - 1).getTypeName(); + return retrieverLevels.get(retrieverLevels.size() - 1).getRetrievedDataType().getTypeName(); } - public Collection getRetrievedDataTypesChain() { - return retrievedDataTypesChain; + public ArrayList getRetrieverLevels() { + return retrieverLevels; } public int size() { - return retrievedDataTypesChain.size(); + return retrieverLevels.size(); } - public LocalizedTypeDTO getRetrievedDataType(int retrieverLevel) { - return retrievedDataTypesChain.get(retrieverLevel); + public DataRetrieverLevelDTO getRetrieverLevel(int retrieverLevel) { + return retrieverLevels.get(retrieverLevel); } @Override @@ -69,7 +67,7 @@ public class DataRetrieverChainDefinitionDTO implements Serializable, Comparable result = prime * result + ((dataSourceTypeName == null) ? 0 : dataSourceTypeName.hashCode()); result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); - result = prime * result + ((retrievedDataTypesChain == null) ? 0 : retrievedDataTypesChain.hashCode()); + result = prime * result + ((retrieverLevels == null) ? 0 : retrieverLevels.hashCode()); return result; } @@ -97,10 +95,10 @@ public class DataRetrieverChainDefinitionDTO implements Serializable, Comparable return false; } else if (!name.equals(other.name)) return false; - if (retrievedDataTypesChain == null) { - if (other.retrievedDataTypesChain != null) + if (retrieverLevels == null) { + if (other.retrieverLevels != null) return false; - } else if (!retrievedDataTypesChain.equals(other.retrievedDataTypesChain)) + } else if (!retrieverLevels.equals(other.retrieverLevels)) return false; return true; } diff --git a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/DataRetrieverLevelDTO.java b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/DataRetrieverLevelDTO.java new file mode 100644 index 00000000000..767023bce69 --- /dev/null +++ b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/DataRetrieverLevelDTO.java @@ -0,0 +1,70 @@ +package com.sap.sse.datamining.shared.impl.dto; + +import java.io.Serializable; + +public class DataRetrieverLevelDTO implements Serializable { + private static final long serialVersionUID = 6911713148350359643L; + + private int retrieverLevel; + private String retrieverTypeName; + private LocalizedTypeDTO retrievedDataType; + + /** + * Constructor for the GWT-Serialization. Don't use this! + */ + @Deprecated + DataRetrieverLevelDTO() { } + + public DataRetrieverLevelDTO(int retrieverLevel, String retrieverTypeName, LocalizedTypeDTO retrievedDataType) { + this.retrieverLevel = retrieverLevel; + this.retrieverTypeName = retrieverTypeName; + this.retrievedDataType = retrievedDataType; + } + + public int getLevel() { + return retrieverLevel; + } + + public String getRetrieverTypeName() { + return retrieverTypeName; + } + + public LocalizedTypeDTO getRetrievedDataType() { + return retrievedDataType; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((retrievedDataType == null) ? 0 : retrievedDataType.hashCode()); + result = prime * result + retrieverLevel; + result = prime * result + ((retrieverTypeName == null) ? 0 : retrieverTypeName.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + DataRetrieverLevelDTO other = (DataRetrieverLevelDTO) obj; + if (retrievedDataType == null) { + if (other.retrievedDataType != null) + return false; + } else if (!retrievedDataType.equals(other.retrievedDataType)) + return false; + if (retrieverLevel != other.retrieverLevel) + return false; + if (retrieverTypeName == null) { + if (other.retrieverTypeName != null) + return false; + } else if (!retrieverTypeName.equals(other.retrieverTypeName)) + return false; + return true; + } + +} diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestDataRetrieverChainCreation.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestDataRetrieverChainCreation.java index 8dac1b915bd..859293b6fd1 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestDataRetrieverChainCreation.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestDataRetrieverChainCreation.java @@ -14,7 +14,7 @@ import com.sap.sse.datamining.components.DataRetrieverChainBuilder; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; import com.sap.sse.datamining.components.FilterCriterion; import com.sap.sse.datamining.components.Processor; -import com.sap.sse.datamining.impl.components.DataRetrieverTypeWithInformation; +import com.sap.sse.datamining.impl.components.DataRetrieverLevel; import com.sap.sse.datamining.impl.components.SimpleDataRetrieverChainDefinition; import com.sap.sse.datamining.impl.criterias.AbstractFilterCriterion; import com.sap.sse.datamining.test.data.Test_HasLegOfCompetitorContext; @@ -82,8 +82,8 @@ public class TestDataRetrieverChainCreation { DataRetrieverChainDefinition, ?> chainClone = new SimpleDataRetrieverChainDefinition<>(dataRetrieverChainDefinition, Void.class, "TestRetrieverChain"); assertThat(chainClone.getDataSourceType().equals(dataRetrieverChainDefinition.getDataSourceType()), is(true)); - List> cloneDataRetrieverTypesWithInformation = (List>) chainClone.getDataRetrieverTypesWithInformation(); - assertThat(cloneDataRetrieverTypesWithInformation, is(dataRetrieverChainDefinition.getDataRetrieverTypesWithInformation())); + List> cloneDataRetrieverTypesWithInformation = (List>) chainClone.getDataRetrieverLevels(); + assertThat(cloneDataRetrieverTypesWithInformation, is(dataRetrieverChainDefinition.getDataRetrieverLevels())); assertThat(chainClone.getID(), not(dataRetrieverChainDefinition.getID())); diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java index 2526786b6e9..bd35f8027b6 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java @@ -82,7 +82,7 @@ public class TestFunctionManagerAsFunctionProvider { Collection> expectedDimensions = functionRegistryUtil.getExpectedDimensionsFor(Test_HasRaceContext.class); expectedDimensions.addAll(functionRegistryUtil.getExpectedDimensionsFor(Test_HasLegOfCompetitorContext.class)); - assertThat(server.getDimensionsFor(dataRetrieverChainDefinition), is(expectedDimensions)); + assertThat(server.getDimensionsMappedByLevelFor(dataRetrieverChainDefinition), is(expectedDimensions)); } @SuppressWarnings("unchecked") diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/DataMiningServer.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/DataMiningServer.java index 45153de495e..ea14094408f 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/DataMiningServer.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/DataMiningServer.java @@ -15,6 +15,7 @@ import com.sap.sse.datamining.components.management.DataRetrieverChainDefinition import com.sap.sse.datamining.data.QueryResult; import com.sap.sse.datamining.functions.Function; import com.sap.sse.datamining.functions.FunctionProvider; +import com.sap.sse.datamining.impl.components.DataRetrieverLevel; import com.sap.sse.datamining.shared.DataMiningSession; import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.AggregationProcessorDefinitionDTO; @@ -35,7 +36,10 @@ public interface DataMiningServer { public Iterable> getFunctionsFor(Class sourceType); public Iterable> getStatisticsFor(Class sourceType); public Iterable> getDimensionsFor(Class sourceType); - public Iterable> getDimensionsFor(DataRetrieverChainDefinition dataRetrieverChainDefinition); + public Map, Iterable>> getDimensionsMappedByLevelFor( + DataRetrieverChainDefinition dataRetrieverChainDefinition); + public Map, Iterable>> getReducedDimensionsMappedByLevelFor( + DataRetrieverChainDefinition dataRetrieverChainDefinition); /** * @return The first function, that matches the given DTO or null */ diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainDefinition.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainDefinition.java index ec2424adc2a..24b56cd306d 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainDefinition.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainDefinition.java @@ -7,7 +7,7 @@ import java.util.UUID; import java.util.concurrent.ExecutorService; import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; -import com.sap.sse.datamining.impl.components.DataRetrieverTypeWithInformation; +import com.sap.sse.datamining.impl.components.DataRetrieverLevel; import com.sap.sse.i18n.ResourceBundleStringMessages; /** @@ -103,10 +103,10 @@ public interface DataRetrieverChainDefinition { Class retrievedDataType, String retrievedDataTypeMessageKey); /** - * @return The chain represented as list of the retriever types with additional informations like their - * ResultType or message key + * @return The chain represented as list of the retriever levels with additional informations like their + * RetrieverType, ResultType or message key */ - public List> getDataRetrieverTypesWithInformation(); + public List> getDataRetrieverLevels(); /** * Returns a {@link DataRetrieverChainBuilder}, that is used to construct the chain. {@link #endWith(Class, Class, Class, String)} diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/DataMiningDTOFactory.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/DataMiningDTOFactory.java index 07e9228db5b..5e94db79d93 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/DataMiningDTOFactory.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/DataMiningDTOFactory.java @@ -5,11 +5,16 @@ import java.util.List; import java.util.Locale; import com.sap.sse.datamining.components.AggregationProcessorDefinition; +import com.sap.sse.datamining.components.DataRetrieverChainDefinition; import com.sap.sse.datamining.functions.Function; +import com.sap.sse.datamining.impl.components.DataRetrieverLevel; import com.sap.sse.datamining.shared.annotations.Connector; import com.sap.sse.datamining.shared.annotations.Dimension; import com.sap.sse.datamining.shared.impl.dto.AggregationProcessorDefinitionDTO; +import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO; +import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO; import com.sap.sse.datamining.shared.impl.dto.FunctionDTO; +import com.sap.sse.datamining.shared.impl.dto.LocalizedTypeDTO; import com.sap.sse.i18n.ResourceBundleStringMessages; public class DataMiningDTOFactory { @@ -72,4 +77,27 @@ public class DataMiningDTOFactory { displayName); } + public DataRetrieverChainDefinitionDTO createDataRetrieverChainDefinitionDTO(DataRetrieverChainDefinition dataRetrieverChainDefinition, + ResourceBundleStringMessages stringMessages, Locale locale) { + ArrayList retrieverLevels = new ArrayList<>(); + for (DataRetrieverLevel retrieverLevel : dataRetrieverChainDefinition.getDataRetrieverLevels()) { + retrieverLevels.add(createDataRetrieverLevelDTO(retrieverLevel, stringMessages, locale)); + } + return new DataRetrieverChainDefinitionDTO(dataRetrieverChainDefinition.getID(), + dataRetrieverChainDefinition.getLocalizedName(locale, stringMessages), + dataRetrieverChainDefinition.getDataSourceType().getSimpleName(), retrieverLevels); + } + + public DataRetrieverLevelDTO createDataRetrieverLevelDTO(DataRetrieverLevel retrieverLevel, + ResourceBundleStringMessages stringMessages, Locale locale) { + String typeName = retrieverLevel.getRetrievedDataType().getSimpleName(); + String displayName = retrieverLevel.getRetrievedDataTypeMessageKey() != null + && !retrieverLevel.getRetrievedDataTypeMessageKey().isEmpty() ? stringMessages + .get(locale, retrieverLevel.getRetrievedDataTypeMessageKey()) : typeName; + LocalizedTypeDTO localizedRetrievedDataType = new LocalizedTypeDTO(typeName, displayName); + return new DataRetrieverLevelDTO(retrieverLevel.getLevel(), + retrieverLevel.getRetrieverType().getName(), + localizedRetrievedDataType); + } + } diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java index 736609bb84e..3e95bf96dc6 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java @@ -3,6 +3,8 @@ package com.sap.sse.datamining.functions; import java.lang.reflect.InvocationTargetException; import java.util.Locale; +import com.sap.sse.datamining.shared.annotations.Connector; +import com.sap.sse.datamining.shared.annotations.Dimension; import com.sap.sse.datamining.shared.data.Unit; import com.sap.sse.i18n.ResourceBundleStringMessages; @@ -11,6 +13,16 @@ public interface Function { public Class getDeclaringType(); public Iterable> getParameters(); public Class getReturnType(); + + /** + * Checks if this function and the given function would return the same result or if they are {@link #equals(Object)}. + * This can be the case, if the only difference between the two functions is a {@link Connector} to a Data Type + * to inherit its {@link Dimension Dimensions}. + * + * @param function The function to compare. + * @return true, if this function and the given function would return the same result. + */ + public boolean isLogicalEqualTo(Function function); public boolean isDimension(); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/FunctionProvider.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/FunctionProvider.java index 8ee0b245680..aa413a2542d 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/FunctionProvider.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/FunctionProvider.java @@ -1,8 +1,10 @@ package com.sap.sse.datamining.functions; import java.util.Collection; +import java.util.Map; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; +import com.sap.sse.datamining.impl.components.DataRetrieverLevel; import com.sap.sse.datamining.shared.impl.dto.FunctionDTO; public interface FunctionProvider { @@ -15,7 +17,10 @@ public interface FunctionProvider { public Collection> getDimensionsFor(Class sourceType); - public Collection> getDimensionsFor(DataRetrieverChainDefinition dataRetrieverChainDefinition); + public Map, Iterable>> getDimensionsMappedByLevelFor( + DataRetrieverChainDefinition dataRetrieverChainDefinition); + public Map, Iterable>> getReducedDimensionsMappedByLevelFor( + DataRetrieverChainDefinition dataRetrieverChainDefinition); /** * @return The first function, that matches the given DTO or null diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/FunctionRegistry.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/FunctionRegistry.java index 7cec4f238b8..3648a0a907a 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/FunctionRegistry.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/FunctionRegistry.java @@ -1,5 +1,6 @@ package com.sap.sse.datamining.functions; + public interface FunctionRegistry extends FunctionProvider { public boolean registerAllClasses(Iterable> classesToScan); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningServerImpl.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningServerImpl.java index 50d34f77f4c..7b5d806ee44 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningServerImpl.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningServerImpl.java @@ -27,6 +27,7 @@ import com.sap.sse.datamining.factories.QueryFactory; import com.sap.sse.datamining.functions.Function; import com.sap.sse.datamining.functions.FunctionProvider; import com.sap.sse.datamining.functions.FunctionRegistry; +import com.sap.sse.datamining.impl.components.DataRetrieverLevel; import com.sap.sse.datamining.impl.components.management.StrategyPerQueryTypeManager; import com.sap.sse.datamining.shared.DataMiningSession; import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO; @@ -154,8 +155,14 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer { } @Override - public Iterable> getDimensionsFor(DataRetrieverChainDefinition dataRetrieverChainDefinition) { - return functionRegistry.getDimensionsFor(dataRetrieverChainDefinition); + public Map, Iterable>> getDimensionsMappedByLevelFor(DataRetrieverChainDefinition dataRetrieverChainDefinition) { + return functionRegistry.getDimensionsMappedByLevelFor(dataRetrieverChainDefinition); + } + + @Override + public Map, Iterable>> getReducedDimensionsMappedByLevelFor( + DataRetrieverChainDefinition dataRetrieverChainDefinition) { + return functionRegistry.getReducedDimensionsMappedByLevelFor(dataRetrieverChainDefinition); } @Override diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/DataRetrieverTypeWithInformation.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/DataRetrieverLevel.java similarity index 79% rename from java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/DataRetrieverTypeWithInformation.java rename to java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/DataRetrieverLevel.java index ee318cc5fd6..d5804353082 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/DataRetrieverTypeWithInformation.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/DataRetrieverLevel.java @@ -2,19 +2,25 @@ package com.sap.sse.datamining.impl.components; import com.sap.sse.datamining.components.Processor; -public class DataRetrieverTypeWithInformation { +public class DataRetrieverLevel { + private final int retrieverLevel; private final Class> retrieverType; private final Class retrievedDataType; private final String retrievedDataTypeMessageKey; - public DataRetrieverTypeWithInformation(Class> retrieverType, - Class retrievedDataType, - String retrievedDataTypeMessageKey) { + public DataRetrieverLevel(int retrieverLevel, + Class> retrieverType, + Class retrievedDataType, String retrievedDataTypeMessageKey) { + this.retrieverLevel = retrieverLevel; this.retrieverType = retrieverType; this.retrievedDataType = retrievedDataType; this.retrievedDataTypeMessageKey = retrievedDataTypeMessageKey; } + + public int getLevel() { + return retrieverLevel; + } public Class> getRetrieverType() { return retrieverType; @@ -33,6 +39,7 @@ public class DataRetrieverTypeWithInformation { int result = 1; result = prime * result + ((retrievedDataType == null) ? 0 : retrievedDataType.hashCode()); result = prime * result + ((retrievedDataTypeMessageKey == null) ? 0 : retrievedDataTypeMessageKey.hashCode()); + result = prime * result + retrieverLevel; result = prime * result + ((retrieverType == null) ? 0 : retrieverType.hashCode()); return result; } @@ -45,7 +52,7 @@ public class DataRetrieverTypeWithInformation { return false; if (getClass() != obj.getClass()) return false; - DataRetrieverTypeWithInformation other = (DataRetrieverTypeWithInformation) obj; + DataRetrieverLevel other = (DataRetrieverLevel) obj; if (retrievedDataType == null) { if (other.retrievedDataType != null) return false; @@ -56,6 +63,8 @@ public class DataRetrieverTypeWithInformation { return false; } else if (!retrievedDataTypeMessageKey.equals(other.retrievedDataTypeMessageKey)) return false; + if (retrieverLevel != other.retrieverLevel) + return false; if (retrieverType == null) { if (other.retrieverType != null) return false; diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SimpleDataRetrieverChainBuilder.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SimpleDataRetrieverChainBuilder.java index 1bbb510f90e..9aa34788b21 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SimpleDataRetrieverChainBuilder.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SimpleDataRetrieverChainBuilder.java @@ -19,14 +19,14 @@ import com.sap.sse.datamining.components.Processor; public class SimpleDataRetrieverChainBuilder implements DataRetrieverChainBuilder { private final ExecutorService executor; - private final List> dataRetrieverTypesWithInformation; + private final List> dataRetrieverTypesWithInformation; private final Map> filters; private final Map>> receivers; private int currentRetrieverTypeIndex; /** - * Creates a data retriever chain builder for the given list of {@link DataRetrieverTypeWithInformation}.
+ * Creates a data retriever chain builder for the given list of {@link DataRetrieverLevel}.
* The list has to match the following conditions to build a valid data retriever chain: *
    *
  • The first data retriever type has the DataSourceType as InputType.
  • @@ -42,7 +42,7 @@ public class SimpleDataRetrieverChainBuilder implements DataRetr * @param dataRetrieverTypesWithInformation */ SimpleDataRetrieverChainBuilder(ExecutorService executor, - List> dataRetrieverTypesWithInformation) { + List> dataRetrieverTypesWithInformation) { this.executor = executor; this.dataRetrieverTypesWithInformation = new ArrayList<>(dataRetrieverTypesWithInformation); @@ -122,7 +122,7 @@ public class SimpleDataRetrieverChainBuilder implements DataRetr Processor firstRetriever = null; for (int retrieverTypeIndex = currentRetrieverTypeIndex; retrieverTypeIndex >= 0; retrieverTypeIndex--) { - DataRetrieverTypeWithInformation dataRetrieverTypeWithInformation = dataRetrieverTypesWithInformation.get(retrieverTypeIndex); + DataRetrieverLevel dataRetrieverTypeWithInformation = dataRetrieverTypesWithInformation.get(retrieverTypeIndex); firstRetriever = createRetriever(dataRetrieverTypeWithInformation, firstRetriever, retrieverTypeIndex); } @@ -134,7 +134,7 @@ public class SimpleDataRetrieverChainBuilder implements DataRetr } @SuppressWarnings("unchecked") - private Processor createRetriever(DataRetrieverTypeWithInformation dataRetrieverTypeWithInformation, Processor previousRetriever, int retrieverTypeIndex) { + private Processor createRetriever(DataRetrieverLevel dataRetrieverTypeWithInformation, Processor previousRetriever, int retrieverTypeIndex) { Class retrievedDataType = (Class) dataRetrieverTypeWithInformation.getRetrievedDataType(); Collection storedResultReceivers = receivers.get(retrieverTypeIndex); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SimpleDataRetrieverChainDefinition.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SimpleDataRetrieverChainDefinition.java index 880ec07ba12..20b775097d9 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SimpleDataRetrieverChainDefinition.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SimpleDataRetrieverChainDefinition.java @@ -20,7 +20,7 @@ public class SimpleDataRetrieverChainDefinition implem private final Class dataSourceType; private final Class retrievedDataType; - private final List> dataRetrieverTypesWithInformation; + private final List> dataRetrieverTypesWithInformation; protected boolean isComplete; @@ -37,7 +37,7 @@ public class SimpleDataRetrieverChainDefinition implem public SimpleDataRetrieverChainDefinition(DataRetrieverChainDefinition dataRetrieverChainDefinition, Class retrievedDataType, String nameMessageKey) { this(dataRetrieverChainDefinition.getDataSourceType(), retrievedDataType, nameMessageKey); - dataRetrieverTypesWithInformation.addAll(dataRetrieverChainDefinition.getDataRetrieverTypesWithInformation()); + dataRetrieverTypesWithInformation.addAll(dataRetrieverChainDefinition.getDataRetrieverLevels()); } @Override @@ -69,7 +69,8 @@ public class SimpleDataRetrieverChainDefinition implem } checkThatRetrieverHasUsableConstructor(retrieverType); - DataRetrieverTypeWithInformation retrieverTypeWithInformation = new DataRetrieverTypeWithInformation<>(retrieverType, retrievedDataType, retrievedDataTypeMessageKey); + DataRetrieverLevel retrieverTypeWithInformation = new DataRetrieverLevel<>( + dataRetrieverTypesWithInformation.size(), retrieverType, retrievedDataType, retrievedDataTypeMessageKey); dataRetrieverTypesWithInformation.add(retrieverTypeWithInformation); } @@ -88,7 +89,7 @@ public class SimpleDataRetrieverChainDefinition implem if (isComplete) { throw new IllegalStateException("This retriever chain definition is already complete"); } - DataRetrieverTypeWithInformation dataRetrieverTypeWithInformation = dataRetrieverTypesWithInformation.get(dataRetrieverTypesWithInformation.size() - 1); + DataRetrieverLevel dataRetrieverTypeWithInformation = dataRetrieverTypesWithInformation.get(dataRetrieverTypesWithInformation.size() - 1); @SuppressWarnings("unchecked") Class> lastRetrieverInList = (Class>)(Class) dataRetrieverTypeWithInformation.getRetrieverType(); if (!lastRetrieverInList.equals(previousRetrieverType)) { @@ -98,7 +99,9 @@ public class SimpleDataRetrieverChainDefinition implem } checkThatRetrieverHasUsableConstructor(nextRetrieverType); - DataRetrieverTypeWithInformation retrieverTypeWithInformation = new DataRetrieverTypeWithInformation<>(nextRetrieverType, retrievedDataType, retrievedDataTypeMessageKey); + DataRetrieverLevel retrieverTypeWithInformation = new DataRetrieverLevel<>( + dataRetrieverTypesWithInformation.size(), nextRetrieverType, retrievedDataType, + retrievedDataTypeMessageKey); dataRetrieverTypesWithInformation.add(retrieverTypeWithInformation); } @@ -122,7 +125,7 @@ public class SimpleDataRetrieverChainDefinition implem } @Override - public List> getDataRetrieverTypesWithInformation() { + public List> getDataRetrieverLevels() { return dataRetrieverTypesWithInformation; } diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java index 918074c9080..cf152617315 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java @@ -169,6 +169,29 @@ public class ConcatenatingCompoundFunction extends AbstractFunction< public String toString() { return getSimpleName(); } + + @Override + public boolean isLogicalEqualTo(Function function) { + if (function.getClass().equals(MethodWrappingFunction.class)) { + MethodWrappingFunction methodWrappingFunction = (MethodWrappingFunction) function; + if (getFunctions().size() == 1) { + return isLogicalEqualTo(methodWrappingFunction); + } else if (getFunctions().size() == 2) { + return getFunctions().get(1).getClass().equals(MethodWrappingFunction.class) && + equals(methodWrappingFunction); + } else { + return false; + } + } + if (function.getClass().equals(ConcatenatingCompoundFunction.class)) { + ConcatenatingCompoundFunction concatenatingCompoundFunction = (ConcatenatingCompoundFunction) function; + return getParameters().equals(function.getParameters()) && + (getFunctions().equals(concatenatingCompoundFunction.getFunctions().subList(1, concatenatingCompoundFunction.getFunctions().size())) || + getFunctions().subList(1, getFunctions().size()).equals(concatenatingCompoundFunction.getFunctions())); + } + throw new IllegalArgumentException("Can't compare " + MethodWrappingFunction.class.getSimpleName() + + " with " + function.getClass().getSimpleName()); + } @Override public int hashCode() { diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/FunctionManager.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/FunctionManager.java index e97b2a9b88c..88300fa970f 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/FunctionManager.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/FunctionManager.java @@ -3,6 +3,7 @@ package com.sap.sse.datamining.impl.functions; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -12,6 +13,7 @@ import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; +import com.sap.sse.common.Util; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; import com.sap.sse.datamining.components.FilterCriterion; import com.sap.sse.datamining.factories.DataMiningDTOFactory; @@ -19,7 +21,7 @@ import com.sap.sse.datamining.factories.FunctionFactory; import com.sap.sse.datamining.functions.Function; import com.sap.sse.datamining.functions.FunctionProvider; import com.sap.sse.datamining.functions.FunctionRegistry; -import com.sap.sse.datamining.impl.components.DataRetrieverTypeWithInformation; +import com.sap.sse.datamining.impl.components.DataRetrieverLevel; import com.sap.sse.datamining.impl.functions.criterias.FunctionMatchesDTOFilterCriterion; import com.sap.sse.datamining.impl.functions.criterias.MethodIsValidConnectorFilterCriterion; import com.sap.sse.datamining.impl.functions.criterias.MethodIsValidDimensionFilterCriterion; @@ -235,14 +237,53 @@ public class FunctionManager implements FunctionRegistry, FunctionProvider { } @Override - public Collection> getDimensionsFor(DataRetrieverChainDefinition dataRetrieverChainDefinition) { - Collection> dimensions = new HashSet<>(); - for (DataRetrieverTypeWithInformation dataRetrieverTypeWithInformation : dataRetrieverChainDefinition.getDataRetrieverTypesWithInformation()) { - dimensions.addAll(getDimensionsFor(dataRetrieverTypeWithInformation.getRetrievedDataType())); + public Map, Iterable>> getDimensionsMappedByLevelFor(DataRetrieverChainDefinition dataRetrieverChainDefinition) { + Map, Iterable>> dimensions = new HashMap<>(); + List> dataRetrieverLevels = dataRetrieverChainDefinition.getDataRetrieverLevels(); + for (DataRetrieverLevel dataRetrieverLevel : dataRetrieverLevels) { + dimensions.put(dataRetrieverLevel, getDimensionsFor(dataRetrieverLevel.getRetrievedDataType())); } return dimensions; } + @Override + public Map, Iterable>> getReducedDimensionsMappedByLevelFor( + DataRetrieverChainDefinition dataRetrieverChainDefinition) { + Map, Iterable>> dimensionsMappedByLevel = getDimensionsMappedByLevelFor(dataRetrieverChainDefinition); + Map, Iterable>> reducedDimensions = new HashMap<>(); + List> retrieverLevels = dataRetrieverChainDefinition.getDataRetrieverLevels(); + for (Entry, Iterable>> entry : dimensionsMappedByLevel.entrySet()) { + DataRetrieverLevel retrieverLevel = entry.getKey(); + Iterable> dimensions = entry.getValue(); + Iterable> previousDimensions = retrieverLevel.getLevel() > 0 ? + dimensionsMappedByLevel.get(retrieverLevels.get(retrieverLevel.getLevel() - 1)) : + Collections.emptySet(); + if (reducedDimensions.isEmpty() || Util.isEmpty(previousDimensions)) { + reducedDimensions.put(retrieverLevel, dimensions); + } else { + reducedDimensions.put(retrieverLevel, reduce(dimensions, previousDimensions)); + } + } + return reducedDimensions; + } + + private Iterable> reduce(Iterable> dimensionsToReduce, Iterable> byDimensions) { + Collection> reducedDimensions = new HashSet<>(); + for (Function dimension : dimensionsToReduce) { + boolean isDimensionAllowed = true; + for (Function forbiddenDimension : byDimensions) { + if (dimension.isLogicalEqualTo(forbiddenDimension)) { + isDimensionAllowed = false; + break; + } + } + if (isDimensionAllowed) { + reducedDimensions.add(dimension); + } + } + return reducedDimensions; + } + @Override public Collection> getStatisticsFor(Class sourceType) { return getFunctionsFor(sourceType, FunctionRetrievalStrategies.Statistics); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java index 992a44312df..25bcbbeb2be 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java @@ -3,9 +3,11 @@ package com.sap.sse.datamining.impl.functions; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; +import java.util.List; import java.util.Locale; import java.util.logging.Level; +import com.sap.sse.datamining.functions.Function; import com.sap.sse.datamining.functions.ParameterProvider; import com.sap.sse.datamining.shared.annotations.Connector; import com.sap.sse.datamining.shared.annotations.Dimension; @@ -164,6 +166,27 @@ public class MethodWrappingFunction extends AbstractFunction function) { + if (function.getClass().equals(MethodWrappingFunction.class)) { + return equals(function); + } + if (function.getClass().equals(ConcatenatingCompoundFunction.class)) { + ConcatenatingCompoundFunction concatenatingCompoundFunction = (ConcatenatingCompoundFunction) function; + List> functions = concatenatingCompoundFunction.getFunctions(); + if (functions.size() == 1) { + return isLogicalEqualTo(functions.get(0)); + } else if (functions.size() == 2) { + return functions.get(1).getClass().equals(MethodWrappingFunction.class) && + equals(functions.get(1)); + } else { + return false; + } + } + throw new IllegalArgumentException("Can't compare " + MethodWrappingFunction.class.getSimpleName() + + " with " + function.getClass().getSimpleName()); + } @Override public int hashCode() { From 22ecae22cb3c423618026841f698a8f7ad7cf163 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 2 Sep 2015 13:40:57 +0200 Subject: [PATCH 147/504] Fixed calculatition of event stage candidates --- .../server/EventStageCandidateCalculator.java | 2 +- .../gwt/server/FeaturedEventsComparator.java | 28 ++++++++++++++----- .../sailing/gwt/server/HomeServiceImpl.java | 7 +++-- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventStageCandidateCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventStageCandidateCalculator.java index dbba6e86a69..41f36011c12 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventStageCandidateCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/EventStageCandidateCalculator.java @@ -15,7 +15,7 @@ import com.sap.sse.common.impl.MillisecondsTimePoint; public class EventStageCandidateCalculator implements EventVisitor { private final TimePoint now = MillisecondsTimePoint.now(); - private final SortedSet> featuredEvents = new TreeSet<>(FeaturedEventsComparator.INSTANCE); + private final SortedSet> featuredEvents = new TreeSet<>(new FeaturedEventsComparator()); @Override public void visit(EventBase event, boolean onRemoteServer, URL baseURL) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/FeaturedEventsComparator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/FeaturedEventsComparator.java index bd475ee6fa8..655503bdfbe 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/FeaturedEventsComparator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/FeaturedEventsComparator.java @@ -1,7 +1,11 @@ package com.sap.sailing.gwt.server; import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.gwt.ui.shared.start.StageEventType; import com.sap.sse.common.TimePoint; import com.sap.sse.common.TimeRange; @@ -10,15 +14,25 @@ import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.common.impl.TimeRangeImpl; public class FeaturedEventsComparator implements Comparator> { - public static final Comparator> INSTANCE = new FeaturedEventsComparator(); + + private final TimePoint now = MillisecondsTimePoint.now(); + private final Random randomizer = new Random(); + private final Map randomizedEvents = new HashMap<>(); @Override public int compare(Pair eventAndStageType1, Pair eventAndStageType2) { - TimePoint now = MillisecondsTimePoint.now(); - TimeRange event1Range = new TimeRangeImpl(eventAndStageType1.getB().event.getStartDate(), - eventAndStageType1.getB().event.getEndDate()); - TimeRange event2Range = new TimeRangeImpl(eventAndStageType2.getB().event.getStartDate(), - eventAndStageType2.getB().event.getEndDate()); - return event1Range.timeDifference(now).compareTo(event2Range.timeDifference(now)); + EventBase event1 = eventAndStageType1.getB().event, event2 = eventAndStageType2.getB().event; + TimeRange event1Range = new TimeRangeImpl(event1.getStartDate(), event1.getEndDate()); + TimeRange event2Range = new TimeRangeImpl(event2.getStartDate(), event2.getEndDate()); + int timeDiffComp = event1Range.timeDifference(now).compareTo(event2Range.timeDifference(now)); + return timeDiffComp == 0 ? getRandomValue(event1) - getRandomValue(event2) : timeDiffComp; + } + + private int getRandomValue(EventBase event) { + Integer randomValue = randomizedEvents.get(event); + if (randomValue == null) { + randomizedEvents.put(event, randomValue = randomizer.nextInt()); + } + return randomValue; } } \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java index ef98509eb7c..bd8d0a9779f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceImpl.java @@ -72,13 +72,14 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home int count = 0; for(Pair pair : stageCandidateCalculator.getFeaturedEvents()) { + StageEventType stageType = pair.getA(); + EventHolder holder = pair.getB(); + count++; - if(count > MAX_STAGE_EVENTS) { + if(count > MAX_STAGE_EVENTS && stageType != StageEventType.RUNNING) { break; } - StageEventType stageType = pair.getA(); - EventHolder holder = pair.getB(); result.addStageEvent(HomeServiceUtil.convertToEventStageDTO(holder.event, holder.baseURL, holder.onRemoteServer, stageType, getService(), false)); EventReferenceDTO eventRef = new EventReferenceDTO(holder.event); From 91625fe121ba617ca1dd815a95e0577fa0e36930 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 7 Sep 2015 15:22:44 +0200 Subject: [PATCH 148/504] Fixed broken classes - related to teaser image usage on mobile devices --- .../gwt/home/mobile/places/start/StartActivity.java | 2 +- .../shared/dispatch/start/GetStagedEventsAction.java | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java index 177e0426260..f1eb9460352 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java @@ -29,7 +29,7 @@ public class StartActivity extends AbstractActivity implements Presenter { public void start(final AcceptsOneWidget panel, EventBus eventBus) { Window.setTitle(place.getTitle()); final StartView view = new StartViewImpl(StartActivity.this); - clientFactory.getDispatch().execute(new GetStagedEventsAction(), new AsyncCallback>() { + clientFactory.getDispatch().execute(new GetStagedEventsAction(true), new AsyncCallback>() { @Override public void onFailure(Throwable caught) { // TODO Auto-generated method stub diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/start/GetStagedEventsAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/start/GetStagedEventsAction.java index a6b1c4a5cfa..1b558f8dcf4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/start/GetStagedEventsAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/start/GetStagedEventsAction.java @@ -16,6 +16,15 @@ import com.sap.sse.common.Util.Pair; public class GetStagedEventsAction implements Action> { + private boolean useTeaserImage; + + protected GetStagedEventsAction() { + } + + public GetStagedEventsAction(boolean useTeaserImage) { + this.useTeaserImage = useTeaserImage; + } + @GwtIncompatible public ListResult execute(final DispatchContext context) throws MalformedURLException { EventStageCandidateCalculator stageCandidateCalculator = new EventStageCandidateCalculator(); @@ -29,7 +38,7 @@ public class GetStagedEventsAction implements Action> } StageEventType stageType = pair.getA(); EventHolder holder = pair.getB(); - result.addValue(HomeServiceUtil.convertToEventStageDTO(holder.event, holder.baseURL, holder.onRemoteServer, stageType, context.getRacingEventService())); + result.addValue(HomeServiceUtil.convertToEventStageDTO(holder.event, holder.baseURL, holder.onRemoteServer, stageType, context.getRacingEventService(), useTeaserImage)); } return result; } From 72710f5eb27f3725bcd4a4db4411127c216520ea Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 7 Sep 2015 15:24:04 +0200 Subject: [PATCH 149/504] Fixed broken back navigation when navigating to remote servers --- .../sap/sailing/gwt/home/shared/app/AbstractPlaceNavigator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/AbstractPlaceNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/AbstractPlaceNavigator.java index ff86bbd7d30..3abf1f75cae 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/AbstractPlaceNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/AbstractPlaceNavigator.java @@ -25,7 +25,7 @@ public abstract class AbstractPlaceNavigator implements PlaceNavigator { if (placeNavigation.isRemotePlace()) { String destinationUrl = placeNavigation.getTargetUrl(); History.newItem(History.getToken(), false); - Window.Location.replace(destinationUrl); + Window.Location.assign(destinationUrl); } else { placeController.goTo(placeNavigation.getPlace()); } From 864685683e98970822352b244ecbbf47ff0fb817 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 7 Sep 2015 15:25:17 +0200 Subject: [PATCH 150/504] Fixed run configs, which get broken during merge --- .../SailingDashboardsGWT sdm.launch | 2 +- java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch | 2 +- .../SailingGWT Remote Profiling (Run-Mode only).launch | 2 +- java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch | 2 +- java/com.sap.sailing.gwt.ui/SailingGWT.launch | 2 +- java/com.sap.sse.gwt.theme/SSETheme_GWT sdm.launch | 2 +- java/com.sap.sse.gwt.theme/SSETheme_GWT.launch | 2 +- java/com.sap.sse.security.ui/Security UI sdm.launch | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch index aefd1e3ffb6..3df14c0b671 100755 --- a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch +++ b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch @@ -43,5 +43,5 @@ - + diff --git a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch index f9b334a695d..c49dae6c86c 100755 --- a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch +++ b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch @@ -43,5 +43,5 @@ - + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch index 4e32ff66b23..6bc5adc7656 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch @@ -56,5 +56,5 @@ - + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch index 5b26a593d23..d73c14c31f1 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch @@ -74,5 +74,5 @@ - + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index 8aa1cb40295..1690e01f416 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -72,5 +72,5 @@ - + diff --git a/java/com.sap.sse.gwt.theme/SSETheme_GWT sdm.launch b/java/com.sap.sse.gwt.theme/SSETheme_GWT sdm.launch index 2523720b3c5..e61889df28b 100644 --- a/java/com.sap.sse.gwt.theme/SSETheme_GWT sdm.launch +++ b/java/com.sap.sse.gwt.theme/SSETheme_GWT sdm.launch @@ -23,5 +23,5 @@ - + diff --git a/java/com.sap.sse.gwt.theme/SSETheme_GWT.launch b/java/com.sap.sse.gwt.theme/SSETheme_GWT.launch index b592dd92581..497ba323966 100644 --- a/java/com.sap.sse.gwt.theme/SSETheme_GWT.launch +++ b/java/com.sap.sse.gwt.theme/SSETheme_GWT.launch @@ -22,5 +22,5 @@ - + diff --git a/java/com.sap.sse.security.ui/Security UI sdm.launch b/java/com.sap.sse.security.ui/Security UI sdm.launch index e15e8f7ab9e..7ff5e9979c7 100755 --- a/java/com.sap.sse.security.ui/Security UI sdm.launch +++ b/java/com.sap.sse.security.ui/Security UI sdm.launch @@ -44,5 +44,5 @@ - + From 62c2da83970ca23e98b6d8d87f510b5288a6bd4d Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Mon, 7 Sep 2015 17:47:48 +0200 Subject: [PATCH 151/504] Replaced the custom DistanceDTO with Distance from domain.common --- .../SailingDataMiningSerializationDummy.java | 10 +++- .../data/HasRaceOfCompetitorContext.java | 4 +- ...rallelDistanceSumAggregationProcessor.java | 31 ++++-------- .../data/RaceOfCompetitorWithContext.java | 9 +--- ...alAngleDistance_CustomFieldSerializer.java | 48 +++++++++++++++++++ .../MeterDistance_CustomFieldSerializer.java | 48 +++++++++++++++++++ ...calMileDistance_CustomFieldSerializer.java | 48 +++++++++++++++++++ .../AbstractResultsPresenter.java | 6 +-- .../dataproviders/DistanceDataProvider.java | 12 ++--- 9 files changed, 175 insertions(+), 41 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/google/gwt/user/client/rpc/core/com/sap/sailing/domain/common/impl/CentralAngleDistance_CustomFieldSerializer.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/google/gwt/user/client/rpc/core/com/sap/sailing/domain/common/impl/MeterDistance_CustomFieldSerializer.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/google/gwt/user/client/rpc/core/com/sap/sailing/domain/common/impl/NauticalMileDistance_CustomFieldSerializer.java diff --git a/java/com.sap.sailing.datamining.shared/src/com/sap/sailing/datamining/shared/SailingDataMiningSerializationDummy.java b/java/com.sap.sailing.datamining.shared/src/com/sap/sailing/datamining/shared/SailingDataMiningSerializationDummy.java index 7b3d5effe8a..b75cfd020b1 100644 --- a/java/com.sap.sailing.datamining.shared/src/com/sap/sailing/datamining/shared/SailingDataMiningSerializationDummy.java +++ b/java/com.sap.sailing.datamining.shared/src/com/sap/sailing/datamining/shared/SailingDataMiningSerializationDummy.java @@ -1,7 +1,10 @@ package com.sap.sailing.datamining.shared; -import com.sap.sailing.datamining.shared.dto.DistanceDTO; +import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.LegType; +import com.sap.sailing.domain.common.impl.CentralAngleDistance; +import com.sap.sailing.domain.common.impl.MeterDistance; +import com.sap.sailing.domain.common.impl.NauticalMileDistance; import com.sap.sse.datamining.shared.SerializationDummy; @SuppressWarnings("unused") @@ -9,7 +12,10 @@ public final class SailingDataMiningSerializationDummy implements SerializationD private static final long serialVersionUID = 2L; private LegType legType; - private DistanceDTO distance; + private Distance distance; + private CentralAngleDistance centralAngleDistance; + private MeterDistance meterDistance; + private NauticalMileDistance nauticalMileDistance; private SailingDataMiningSerializationDummy() { } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java index 11cfeb0d2fb..9ed6f305816 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java @@ -1,7 +1,7 @@ package com.sap.sailing.datamining.data; -import com.sap.sailing.datamining.shared.dto.DistanceDTO; import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Speed; import com.sap.sse.datamining.shared.annotations.Connector; import com.sap.sse.datamining.shared.annotations.Statistic; @@ -16,7 +16,7 @@ public interface HasRaceOfCompetitorContext { public Competitor getCompetitor(); @Statistic(messageKey="DistanceAtStart", resultUnit=Unit.None, resultDecimals=2, ordinal=0) - public DistanceDTO getDistanceToStartLineAtStart(); + public Distance getDistanceToStartLineAtStart(); @Statistic(messageKey="DistanceToStarboardSideAtStart", resultDecimals=2, ordinal=1) public Double getNormalizedDistanceToStarboardSideAtStart(); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceSumAggregationProcessor.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceSumAggregationProcessor.java index daecf7c6b8e..336aa6a59de 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceSumAggregationProcessor.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceSumAggregationProcessor.java @@ -5,7 +5,7 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; -import com.sap.sailing.datamining.shared.dto.DistanceDTO; +import com.sap.sailing.domain.common.Distance; import com.sap.sse.datamining.components.AggregationProcessorDefinition; import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.impl.components.GroupedDataEntry; @@ -14,45 +14,34 @@ import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelGroupe import com.sap.sse.datamining.shared.GroupKey; public class ParallelDistanceSumAggregationProcessor extends - AbstractParallelGroupedDataAggregationProcessor { + AbstractParallelGroupedDataAggregationProcessor { - private static final AggregationProcessorDefinition DEFINITION = - new SimpleAggregationProcessorDefinition<>(DistanceDTO.class, DistanceDTO.class, "Sum", ParallelDistanceSumAggregationProcessor.class); + private static final AggregationProcessorDefinition DEFINITION = + new SimpleAggregationProcessorDefinition<>(Distance.class, Distance.class, "Sum", ParallelDistanceSumAggregationProcessor.class); - public static AggregationProcessorDefinition getDefinition() { + public static AggregationProcessorDefinition getDefinition() { return DEFINITION; } - private final Map results; + private final Map results; - public ParallelDistanceSumAggregationProcessor(ExecutorService executor, Collection, ?>> resultReceivers) { + public ParallelDistanceSumAggregationProcessor(ExecutorService executor, Collection, ?>> resultReceivers) { super(executor, resultReceivers, "Sum"); results = new HashMap<>(); } @Override - protected void handleElement(GroupedDataEntry element) { + protected void handleElement(GroupedDataEntry element) { GroupKey key = element.getKey(); if (!results.containsKey(key)) { results.put(key, element.getDataEntry()); } else { - results.put(key, add(results.get(key), element.getDataEntry())); + results.put(key, results.get(key).add(element.getDataEntry())); } } - private DistanceDTO add(DistanceDTO distance1, DistanceDTO distance2) { - double geographicalMiles = distance1.getGeographicalMiles() + distance2.getGeographicalMiles(); - double seaMiles = distance1.getSeaMiles() + distance2.getSeaMiles(); - double nauticalMiles = distance1.getNauticalMiles() + distance2.getNauticalMiles(); - double meters = distance1.getMeters() + distance2.getMeters(); - double kilometers = distance1.getKilometers() + distance2.getKilometers(); - double centralAngleDegree = distance1.getCentralAngleDegree() + distance2.getCentralAngleDegree(); - double centralAngleRadian = distance1.getCentralAngleRadian() + distance2.getCentralAngleRadian(); - return new DistanceDTO(geographicalMiles, seaMiles, nauticalMiles, meters, kilometers, centralAngleDegree, centralAngleRadian); - } - @Override - protected Map getResult() { + protected Map getResult() { return results; } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/RaceOfCompetitorWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/RaceOfCompetitorWithContext.java index fe90bfc2ad7..97ed7ffe5e7 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/RaceOfCompetitorWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/RaceOfCompetitorWithContext.java @@ -4,7 +4,6 @@ import java.util.concurrent.TimeUnit; import com.sap.sailing.datamining.data.HasRaceOfCompetitorContext; import com.sap.sailing.datamining.data.HasTrackedRaceContext; -import com.sap.sailing.datamining.shared.dto.DistanceDTO; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Course; import com.sap.sailing.domain.base.Waypoint; @@ -41,12 +40,8 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext { } @Override - public DistanceDTO getDistanceToStartLineAtStart() { - Distance distance = getTrackedRace().getDistanceToStartLine(getCompetitor(), 0); - return new DistanceDTO(distance.getGeographicalMiles(), distance.getSeaMiles(), - distance.getNauticalMiles(), distance.getMeters(), - distance.getKilometers(), distance.getCentralAngleDeg(), - distance.getCentralAngleRad()); + public Distance getDistanceToStartLineAtStart() { + return getTrackedRace().getDistanceToStartLine(getCompetitor(), 0); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/google/gwt/user/client/rpc/core/com/sap/sailing/domain/common/impl/CentralAngleDistance_CustomFieldSerializer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/google/gwt/user/client/rpc/core/com/sap/sailing/domain/common/impl/CentralAngleDistance_CustomFieldSerializer.java new file mode 100644 index 00000000000..acc6a483014 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/google/gwt/user/client/rpc/core/com/sap/sailing/domain/common/impl/CentralAngleDistance_CustomFieldSerializer.java @@ -0,0 +1,48 @@ +package com.google.gwt.user.client.rpc.core.com.sap.sailing.domain.common.impl; + +import com.google.gwt.user.client.rpc.CustomFieldSerializer; +import com.google.gwt.user.client.rpc.SerializationException; +import com.google.gwt.user.client.rpc.SerializationStreamReader; +import com.google.gwt.user.client.rpc.SerializationStreamWriter; +import com.sap.sailing.domain.common.impl.CentralAngleDistance; + +public class CentralAngleDistance_CustomFieldSerializer extends CustomFieldSerializer { + + @Override + public void serializeInstance(SerializationStreamWriter streamWriter, CentralAngleDistance instance) + throws SerializationException { + serialize(streamWriter, instance); + } + + public static void serialize(SerializationStreamWriter streamWriter, CentralAngleDistance instance) + throws SerializationException { + streamWriter.writeDouble(instance.getCentralAngleRad()); + } + + @Override + public boolean hasCustomInstantiateInstance() { + return true; + } + + @Override + public CentralAngleDistance instantiateInstance(SerializationStreamReader streamReader) + throws SerializationException { + return instantiate(streamReader); + } + + public static CentralAngleDistance instantiate(SerializationStreamReader streamReader) + throws SerializationException { + return new CentralAngleDistance(streamReader.readDouble()); + } + + @Override + public void deserializeInstance(SerializationStreamReader streamReader, CentralAngleDistance instance) + throws SerializationException { + deserialize(streamReader, instance); + } + + public static void deserialize(SerializationStreamReader streamReader, CentralAngleDistance instance) { + // Done by instantiateInstance + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/google/gwt/user/client/rpc/core/com/sap/sailing/domain/common/impl/MeterDistance_CustomFieldSerializer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/google/gwt/user/client/rpc/core/com/sap/sailing/domain/common/impl/MeterDistance_CustomFieldSerializer.java new file mode 100644 index 00000000000..2eff00885c7 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/google/gwt/user/client/rpc/core/com/sap/sailing/domain/common/impl/MeterDistance_CustomFieldSerializer.java @@ -0,0 +1,48 @@ +package com.google.gwt.user.client.rpc.core.com.sap.sailing.domain.common.impl; + +import com.google.gwt.user.client.rpc.CustomFieldSerializer; +import com.google.gwt.user.client.rpc.SerializationException; +import com.google.gwt.user.client.rpc.SerializationStreamReader; +import com.google.gwt.user.client.rpc.SerializationStreamWriter; +import com.sap.sailing.domain.common.impl.MeterDistance; + +public class MeterDistance_CustomFieldSerializer extends CustomFieldSerializer { + + @Override + public void serializeInstance(SerializationStreamWriter streamWriter, MeterDistance instance) + throws SerializationException { + serialize(streamWriter, instance); + } + + public static void serialize(SerializationStreamWriter streamWriter, MeterDistance instance) + throws SerializationException { + streamWriter.writeDouble(instance.getMeters()); + } + + @Override + public boolean hasCustomInstantiateInstance() { + return true; + } + + @Override + public MeterDistance instantiateInstance(SerializationStreamReader streamReader) + throws SerializationException { + return instantiate(streamReader); + } + + public static MeterDistance instantiate(SerializationStreamReader streamReader) + throws SerializationException { + return new MeterDistance(streamReader.readDouble()); + } + + @Override + public void deserializeInstance(SerializationStreamReader streamReader, MeterDistance instance) + throws SerializationException { + deserialize(streamReader, instance); + } + + public static void deserialize(SerializationStreamReader streamReader, MeterDistance instance) { + // Done by instantiateInstance + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/google/gwt/user/client/rpc/core/com/sap/sailing/domain/common/impl/NauticalMileDistance_CustomFieldSerializer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/google/gwt/user/client/rpc/core/com/sap/sailing/domain/common/impl/NauticalMileDistance_CustomFieldSerializer.java new file mode 100644 index 00000000000..94c88693d3c --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/google/gwt/user/client/rpc/core/com/sap/sailing/domain/common/impl/NauticalMileDistance_CustomFieldSerializer.java @@ -0,0 +1,48 @@ +package com.google.gwt.user.client.rpc.core.com.sap.sailing.domain.common.impl; + +import com.google.gwt.user.client.rpc.CustomFieldSerializer; +import com.google.gwt.user.client.rpc.SerializationException; +import com.google.gwt.user.client.rpc.SerializationStreamReader; +import com.google.gwt.user.client.rpc.SerializationStreamWriter; +import com.sap.sailing.domain.common.impl.NauticalMileDistance; + +public class NauticalMileDistance_CustomFieldSerializer extends CustomFieldSerializer { + + @Override + public void serializeInstance(SerializationStreamWriter streamWriter, NauticalMileDistance instance) + throws SerializationException { + serialize(streamWriter, instance); + } + + public static void serialize(SerializationStreamWriter streamWriter, NauticalMileDistance instance) + throws SerializationException { + streamWriter.writeDouble(instance.getNauticalMiles()); + } + + @Override + public boolean hasCustomInstantiateInstance() { + return true; + } + + @Override + public NauticalMileDistance instantiateInstance(SerializationStreamReader streamReader) + throws SerializationException { + return instantiate(streamReader); + } + + public static NauticalMileDistance instantiate(SerializationStreamReader streamReader) + throws SerializationException { + return new NauticalMileDistance(streamReader.readDouble()); + } + + @Override + public void deserializeInstance(SerializationStreamReader streamReader, NauticalMileDistance instance) + throws SerializationException { + deserialize(streamReader, instance); + } + + public static void deserialize(SerializationStreamReader streamReader, NauticalMileDistance instance) { + // Done by instantiateInstance + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java index 74c84ebc2db..27669ae7e1c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java @@ -19,7 +19,7 @@ import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.ValueListBox; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.datamining.shared.dto.DistanceDTO; +import com.sap.sailing.domain.common.Distance; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.controls.AbstractObjectRenderer; import com.sap.sailing.gwt.ui.datamining.ResultsPresenterWithControls; @@ -55,7 +55,7 @@ public abstract class AbstractResultsPresenter implements ResultsPresenterWithCo numberDataProvider = new NumberDataProvider(); dataProviders = new HashMap<>(); - AbstractResultDataProvider distanceDataProvider = new DistanceDataProvider(); + AbstractResultDataProvider distanceDataProvider = new DistanceDataProvider(); dataProviders.put(distanceDataProvider.getResultType().getName(), distanceDataProvider); controlsPanel = new HorizontalPanel(); @@ -72,7 +72,7 @@ public abstract class AbstractResultsPresenter implements ResultsPresenterWithCo // Call a servlet to download the previously pushed result as json file } }); - addControl(exportButton); +// addControl(exportButton); dataSelectionListBox = new ValueListBox<>(new AbstractObjectRenderer() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/DistanceDataProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/DistanceDataProvider.java index 44107a579df..cff11b0f2fa 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/DistanceDataProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/dataproviders/DistanceDataProvider.java @@ -4,15 +4,15 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import com.sap.sailing.datamining.shared.dto.DistanceDTO; +import com.sap.sailing.domain.common.Distance; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; -public class DistanceDataProvider extends AbstractResultDataProvider { +public class DistanceDataProvider extends AbstractResultDataProvider { private final List dataKeys; public DistanceDataProvider() { - super(DistanceDTO.class); + super(Distance.class); dataKeys = new ArrayList<>(); dataKeys.add("Geographical Miles"); dataKeys.add("Sea Miles"); @@ -34,7 +34,7 @@ public class DistanceDataProvider extends AbstractResultDataProvider Date: Mon, 7 Sep 2015 23:40:40 +0200 Subject: [PATCH 152/504] Improved aggregation processors and added new ones for Distance --- .../com/sap/sailing/datamining/Activator.java | 8 ++ ...elDistanceAverageAggregationProcessor.java | 64 +++++++++++++++ ...rallelDistanceMaxAggregationProcessor.java | 35 ++++++++ ...lelDistanceMedianAggregationProcessor.java | 79 +++++++++++++++++++ ...rallelDistanceMinAggregationProcessor.java | 35 ++++++++ ...TestFunctionManagerAsFunctionProvider.java | 14 +++- ...ingleGroupedValueAggregationProcessor.java | 47 +++++++++++ ...upedNumberDataMaxAggregationProcessor.java | 20 +---- ...upedNumberDataMinAggregationProcessor.java | 18 +---- 9 files changed, 285 insertions(+), 35 deletions(-) create mode 100644 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceAverageAggregationProcessor.java create mode 100644 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceMaxAggregationProcessor.java create mode 100644 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceMedianAggregationProcessor.java create mode 100644 java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceMinAggregationProcessor.java create mode 100644 java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelSingleGroupedValueAggregationProcessor.java diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java index 18fad54f587..0d36246b0e1 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java @@ -16,6 +16,10 @@ import com.sap.sailing.datamining.data.HasTrackedLegContext; import com.sap.sailing.datamining.data.HasTrackedLegOfCompetitorContext; import com.sap.sailing.datamining.data.HasTrackedRaceContext; import com.sap.sailing.datamining.impl.components.aggregators.ParallelBoolSumAggregationProcessor; +import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceAverageAggregationProcessor; +import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceMaxAggregationProcessor; +import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceMedianAggregationProcessor; +import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceMinAggregationProcessor; import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceSumAggregationProcessor; import com.sap.sailing.domain.common.Speed; import com.sap.sse.datamining.DataMiningBundleService; @@ -105,6 +109,10 @@ public class Activator extends AbstractDataMiningActivator implements DataMining HashSet> aggregators = new HashSet<>(); aggregators.add(ParallelBoolSumAggregationProcessor.getDefinition()); aggregators.add(ParallelDistanceSumAggregationProcessor.getDefinition()); + aggregators.add(ParallelDistanceAverageAggregationProcessor.getDefinition()); + aggregators.add(ParallelDistanceMaxAggregationProcessor.getDefinition()); + aggregators.add(ParallelDistanceMinAggregationProcessor.getDefinition()); + aggregators.add(ParallelDistanceMedianAggregationProcessor.getDefinition()); return aggregators; } diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceAverageAggregationProcessor.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceAverageAggregationProcessor.java new file mode 100644 index 00000000000..0f2e531e15d --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceAverageAggregationProcessor.java @@ -0,0 +1,64 @@ +package com.sap.sailing.datamining.impl.components.aggregators; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.domain.common.Distance; +import com.sap.sailing.domain.common.impl.MeterDistance; +import com.sap.sse.datamining.components.AggregationProcessorDefinition; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.GroupedDataEntry; +import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefinition; +import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelGroupedDataStoringAggregationProcessor; +import com.sap.sse.datamining.shared.GroupKey; + +public class ParallelDistanceAverageAggregationProcessor + extends AbstractParallelGroupedDataStoringAggregationProcessor { + + private static final AggregationProcessorDefinition DEFINITION = + new SimpleAggregationProcessorDefinition<>(Distance.class, Distance.class, "Average", ParallelDistanceAverageAggregationProcessor.class); + + public static AggregationProcessorDefinition getDefinition() { + return DEFINITION; + } + + private final ParallelDistanceSumAggregationProcessor sumAggregationProcessor; + private final Map elementAmountPerKey; + + public ParallelDistanceAverageAggregationProcessor(ExecutorService executor, + Collection, ?>> resultReceivers) { + super(executor, resultReceivers, "Average"); + elementAmountPerKey = new HashMap<>(); + sumAggregationProcessor = new ParallelDistanceSumAggregationProcessor(executor, resultReceivers); + } + + @Override + protected void storeElement(GroupedDataEntry element) { + incrementElementAmount(element); + sumAggregationProcessor.handleElement(element); + } + + private void incrementElementAmount(GroupedDataEntry element) { + GroupKey key = element.getKey(); + if (!elementAmountPerKey.containsKey(key)) { + elementAmountPerKey.put(key, 0); + } + Integer currentAmount = elementAmountPerKey.get(key); + elementAmountPerKey.put(key, currentAmount + 1); + } + + @Override + protected Map aggregateResult() { + Map result = new HashMap<>(); + Map sumAggregation = sumAggregationProcessor.getResult(); + for (Entry sumAggregationEntry : sumAggregation.entrySet()) { + GroupKey key = sumAggregationEntry.getKey(); + result.put(key, new MeterDistance(sumAggregationEntry.getValue().getMeters() / elementAmountPerKey.get(key).doubleValue())); + } + return result; + } + +} diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceMaxAggregationProcessor.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceMaxAggregationProcessor.java new file mode 100644 index 00000000000..56117fd72cb --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceMaxAggregationProcessor.java @@ -0,0 +1,35 @@ +package com.sap.sailing.datamining.impl.components.aggregators; + +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.domain.common.Distance; +import com.sap.sse.datamining.components.AggregationProcessorDefinition; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefinition; +import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelSingleGroupedValueAggregationProcessor; +import com.sap.sse.datamining.shared.GroupKey; + +public class ParallelDistanceMaxAggregationProcessor extends + AbstractParallelSingleGroupedValueAggregationProcessor { + + private static final AggregationProcessorDefinition DEFINITION = + new SimpleAggregationProcessorDefinition<>(Distance.class, Distance.class, "Minimum", ParallelDistanceMaxAggregationProcessor.class); + + public static AggregationProcessorDefinition getDefinition() { + return DEFINITION; + } + + + public ParallelDistanceMaxAggregationProcessor(ExecutorService executor, + Collection, ?>> resultReceivers) { + super(executor, resultReceivers, "Minimum"); + } + + @Override + protected Distance compareValuesAndReturnNewValue(Distance previousValue, Distance newValue) { + return previousValue.getMeters() >= newValue.getMeters() ? previousValue : newValue; + } + +} diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceMedianAggregationProcessor.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceMedianAggregationProcessor.java new file mode 100644 index 00000000000..2c108deb5d8 --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceMedianAggregationProcessor.java @@ -0,0 +1,79 @@ +package com.sap.sailing.datamining.impl.components.aggregators; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.domain.common.Distance; +import com.sap.sailing.domain.common.impl.MeterDistance; +import com.sap.sse.datamining.components.AggregationProcessorDefinition; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.GroupedDataEntry; +import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefinition; +import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelGroupedDataStoringAggregationProcessor; +import com.sap.sse.datamining.shared.GroupKey; + +public class ParallelDistanceMedianAggregationProcessor + extends AbstractParallelGroupedDataStoringAggregationProcessor { + + private static final AggregationProcessorDefinition DEFINITION = + new SimpleAggregationProcessorDefinition<>(Distance.class, Distance.class, "Median", ParallelDistanceMedianAggregationProcessor.class); + + public static AggregationProcessorDefinition getDefinition() { + return DEFINITION; + } + + private Map> groupedValues; + + public ParallelDistanceMedianAggregationProcessor(ExecutorService executor, + Collection, ?>> resultReceivers) { + super(executor, resultReceivers, "Median"); + groupedValues = new HashMap<>(); + } + + @Override + protected void storeElement(GroupedDataEntry element) { + GroupKey key = element.getKey(); + if (!groupedValues.containsKey(key)) { + groupedValues.put(key, new ArrayList()); + } + groupedValues.get(key).add(element.getDataEntry()); + } + + @Override + protected Map aggregateResult() { + Map result = new HashMap<>(); + for (Entry> groupedValuesEntry : groupedValues.entrySet()) { + result.put(groupedValuesEntry.getKey(), getMedianOf(groupedValuesEntry.getValue())); + } + return result; + } + + private Distance getMedianOf(List values) { + Collections.sort(values, new Comparator() { + @Override + public int compare(Distance d1, Distance d2) { + return d1.compareTo(d2); + } + }); + if (listSizeIsEven(values)) { + int index1 = (values.size() / 2) - 1; + int index2 = index1 + 1; + return new MeterDistance((values.get(index1).getMeters() + values.get(index2).getMeters()) / 2); + } else { + int index = ((values.size() + 1) / 2) - 1; + return values.get(index); + } + } + + private boolean listSizeIsEven(List values) { + return values.size() % 2 == 0; + } + +} diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceMinAggregationProcessor.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceMinAggregationProcessor.java new file mode 100644 index 00000000000..f1c39eb31fb --- /dev/null +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/components/aggregators/ParallelDistanceMinAggregationProcessor.java @@ -0,0 +1,35 @@ +package com.sap.sailing.datamining.impl.components.aggregators; + +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.ExecutorService; + +import com.sap.sailing.domain.common.Distance; +import com.sap.sse.datamining.components.AggregationProcessorDefinition; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefinition; +import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelSingleGroupedValueAggregationProcessor; +import com.sap.sse.datamining.shared.GroupKey; + +public class ParallelDistanceMinAggregationProcessor extends + AbstractParallelSingleGroupedValueAggregationProcessor { + + private static final AggregationProcessorDefinition DEFINITION = + new SimpleAggregationProcessorDefinition<>(Distance.class, Distance.class, "Minimum", ParallelDistanceMinAggregationProcessor.class); + + public static AggregationProcessorDefinition getDefinition() { + return DEFINITION; + } + + + public ParallelDistanceMinAggregationProcessor(ExecutorService executor, + Collection, ?>> resultReceivers) { + super(executor, resultReceivers, "Minimum"); + } + + @Override + protected Distance compareValuesAndReturnNewValue(Distance previousValue, Distance newValue) { + return previousValue.getMeters() <= newValue.getMeters() ? previousValue : newValue; + } + +} diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java index bd35f8027b6..9c835b66ac1 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java @@ -7,8 +7,11 @@ import static org.junit.Assert.assertThat; import java.lang.reflect.Method; import java.util.Arrays; import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Locale; +import java.util.Map; import org.junit.Before; import org.junit.Test; @@ -17,6 +20,7 @@ import com.sap.sse.datamining.ModifiableDataMiningServer; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.functions.Function; +import com.sap.sse.datamining.impl.components.DataRetrieverLevel; import com.sap.sse.datamining.impl.components.SimpleDataRetrieverChainDefinition; import com.sap.sse.datamining.shared.impl.dto.FunctionDTO; import com.sap.sse.datamining.test.data.Test_HasLegOfCompetitorContext; @@ -80,9 +84,13 @@ public class TestFunctionManagerAsFunctionProvider { public void testGetDimensionsForDataRetrieverChainDefinition() { DataRetrieverChainDefinition, Test_HasLegOfCompetitorContext> dataRetrieverChainDefinition = createDataRetrieverChainDefinition(); - Collection> expectedDimensions = functionRegistryUtil.getExpectedDimensionsFor(Test_HasRaceContext.class); - expectedDimensions.addAll(functionRegistryUtil.getExpectedDimensionsFor(Test_HasLegOfCompetitorContext.class)); - assertThat(server.getDimensionsMappedByLevelFor(dataRetrieverChainDefinition), is(expectedDimensions)); + List> dataRetrieverLevels = dataRetrieverChainDefinition.getDataRetrieverLevels(); + Map, Iterable>> expectedDimensions = new HashMap<>(); + for (DataRetrieverLevel dataRetrieverLevel : dataRetrieverLevels) { + expectedDimensions.put(dataRetrieverLevel, functionRegistryUtil.getExpectedDimensionsFor(dataRetrieverLevel.getRetrievedDataType())); + } + final Map, Iterable>> dimensionsMappedByLevel = server.getDimensionsMappedByLevelFor(dataRetrieverChainDefinition); + assertThat(dimensionsMappedByLevel, is(expectedDimensions)); } @SuppressWarnings("unchecked") diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelSingleGroupedValueAggregationProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelSingleGroupedValueAggregationProcessor.java new file mode 100644 index 00000000000..14c93d8a6cd --- /dev/null +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelSingleGroupedValueAggregationProcessor.java @@ -0,0 +1,47 @@ +package com.sap.sse.datamining.impl.components.aggregators; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutorService; + +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.GroupedDataEntry; +import com.sap.sse.datamining.shared.GroupKey; + +/** + * This aggregation processor aggregates a single value per group key.
    + * Concrete implementations are for example {@link ParallelGroupedNumberDataMaxAggregationProcessor} + * and {@link ParallelGroupedNumberDataMinAggregationProcessor}. + * @author Lennart Hensler (D054527) + */ +public abstract class AbstractParallelSingleGroupedValueAggregationProcessor + extends AbstractParallelGroupedDataAggregationProcessor { + + private Map valueMap; + + public AbstractParallelSingleGroupedValueAggregationProcessor(ExecutorService executor, + Collection, ?>> resultReceivers, String aggregationNameMessageKey) { + super(executor, resultReceivers, aggregationNameMessageKey); + valueMap = new HashMap<>(); + } + + @Override + protected void handleElement(GroupedDataEntry element) { + GroupKey key = element.getKey(); + ValueType value = element.getDataEntry(); + if (!valueMap.containsKey(key)) { + valueMap.put(key, value); + } else { + valueMap.put(key, compareValuesAndReturnNewValue(valueMap.get(key), value)); + } + } + + protected abstract ValueType compareValuesAndReturnNewValue(ValueType previousValue, ValueType newValue); + + @Override + protected Map getResult() { + return valueMap; + } + +} diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedNumberDataMaxAggregationProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedNumberDataMaxAggregationProcessor.java index fab472527fb..f6654c5f6d9 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedNumberDataMaxAggregationProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedNumberDataMaxAggregationProcessor.java @@ -1,18 +1,16 @@ package com.sap.sse.datamining.impl.components.aggregators; import java.util.Collection; -import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import com.sap.sse.datamining.components.AggregationProcessorDefinition; import com.sap.sse.datamining.components.Processor; -import com.sap.sse.datamining.impl.components.GroupedDataEntry; import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefinition; import com.sap.sse.datamining.shared.GroupKey; public class ParallelGroupedNumberDataMaxAggregationProcessor - extends AbstractParallelGroupedDataAggregationProcessor { + extends AbstractParallelSingleGroupedValueAggregationProcessor { private static final AggregationProcessorDefinition DEFINITION = new SimpleAggregationProcessorDefinition<>(Number.class, Number.class, "Maximum", ParallelGroupedNumberDataMaxAggregationProcessor.class); @@ -21,26 +19,14 @@ public class ParallelGroupedNumberDataMaxAggregationProcessor return DEFINITION; } - private Map maxMap; - public ParallelGroupedNumberDataMaxAggregationProcessor(ExecutorService executor, Collection, ?>> resultReceivers) { super(executor, resultReceivers, "Maximum"); - maxMap = new HashMap<>(); } @Override - protected void handleElement(GroupedDataEntry element) { - GroupKey key = element.getKey(); - Number value = element.getDataEntry(); - if (!maxMap.containsKey(key) || value.doubleValue() > maxMap.get(key).doubleValue()) { - maxMap.put(key, value); - } - } - - @Override - protected Map getResult() { - return maxMap; + protected Number compareValuesAndReturnNewValue(Number previousValue, Number newValue) { + return previousValue.doubleValue() >= newValue.doubleValue() ? previousValue : newValue; } } diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedNumberDataMinAggregationProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedNumberDataMinAggregationProcessor.java index 7f23c08d727..c5e15b904d3 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedNumberDataMinAggregationProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedNumberDataMinAggregationProcessor.java @@ -1,18 +1,16 @@ package com.sap.sse.datamining.impl.components.aggregators; import java.util.Collection; -import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import com.sap.sse.datamining.components.AggregationProcessorDefinition; import com.sap.sse.datamining.components.Processor; -import com.sap.sse.datamining.impl.components.GroupedDataEntry; import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefinition; import com.sap.sse.datamining.shared.GroupKey; public class ParallelGroupedNumberDataMinAggregationProcessor - extends AbstractParallelGroupedDataAggregationProcessor { + extends AbstractParallelSingleGroupedValueAggregationProcessor { private static final AggregationProcessorDefinition DEFINITION = new SimpleAggregationProcessorDefinition<>(Number.class, Number.class, "Minimum", ParallelGroupedNumberDataMinAggregationProcessor.class); @@ -21,26 +19,16 @@ public class ParallelGroupedNumberDataMinAggregationProcessor return DEFINITION; } - private Map minMap; public ParallelGroupedNumberDataMinAggregationProcessor(ExecutorService executor, Collection, ?>> resultReceivers) { super(executor, resultReceivers, "Minimum"); - minMap = new HashMap<>(); } - @Override - protected void handleElement(GroupedDataEntry element) { - GroupKey key = element.getKey(); - Number value = element.getDataEntry(); - if (!minMap.containsKey(key) || value.doubleValue() < minMap.get(key).doubleValue()) { - minMap.put(key, value); - } - } @Override - protected Map getResult() { - return minMap; + protected Number compareValuesAndReturnNewValue(Number previousValue, Number newValue) { + return previousValue.doubleValue() <= newValue.doubleValue() ? previousValue : newValue; } } From 98f60953c6b34aa0d60c3aefe07a9e245ffacd4b Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 8 Sep 2015 09:24:30 +0200 Subject: [PATCH 153/504] Added the resultReceiver as parameter to createChainAndReturnFirstProcessor of ProcessorQuery --- .../datamining/impl/TestProcessorQuery.java | 36 +++++++++---------- .../datamining/factories/QueryFactory.java | 8 ++--- .../sse/datamining/impl/ProcessorQuery.java | 4 +-- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java index 089db94f331..52513021af5 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java @@ -60,9 +60,9 @@ public class TestProcessorQuery { dataSource, stringMessages, Locale.ENGLISH, Double.class, AdditionalQueryData.NULL_INSTANCE) { @SuppressWarnings("unchecked") @Override - protected Processor, ?> createChainAndReturnFirstProcessor() { + protected Processor, ?> createChainAndReturnFirstProcessor(Processor, Void> resultReceiver) { Collection> resultReceivers = new ArrayList<>(); - resultReceivers.add(new AbortResultReceiver(this.getResultReceiver())); + resultReceivers.add(new AbortResultReceiver(resultReceiver)); return new BlockingProcessor, Double>((Class>)(Class) Iterable.class, Double.class, ConcurrencyTestsUtil.getExecutor(), resultReceivers, 1000) { @Override @@ -98,9 +98,9 @@ public class TestProcessorQuery { dataSource, stringMessages, Locale.ENGLISH, Double.class, AdditionalQueryData.NULL_INSTANCE) { @SuppressWarnings("unchecked") @Override - protected Processor, ?> createChainAndReturnFirstProcessor() { + protected Processor, ?> createChainAndReturnFirstProcessor(Processor, Void> resultReceiver) { Collection> resultReceivers = new ArrayList<>(); - resultReceivers.add(new AbortResultReceiver(this.getResultReceiver())); + resultReceivers.add(new AbortResultReceiver(resultReceiver)); return new BlockingProcessor, Double>((Class>)(Class) Iterable.class, Double.class, ConcurrencyTestsUtil.getExecutor(), resultReceivers, 1000) { @Override @@ -164,9 +164,9 @@ public class TestProcessorQuery { createDataSource(), stringMessages, Locale.ENGLISH, Double.class, AdditionalQueryData.NULL_INSTANCE) { @SuppressWarnings("unchecked") @Override - protected Processor, ?> createChainAndReturnFirstProcessor() { + protected Processor, ?> createChainAndReturnFirstProcessor(Processor, Void> resultReceiver) { Collection, ?>> resultReceivers = new ArrayList<>(); - resultReceivers.add(this.getResultReceiver()); + resultReceivers.add(resultReceiver); return new AbstractParallelProcessor, Map>((Class>)(Class) Iterable.class, (Class>)(Class) Map.class, ConcurrencyTestsUtil.getExecutor(), @@ -238,13 +238,13 @@ public class TestProcessorQuery { Query query = new ProcessorQuery(0.0, Double.class) { @SuppressWarnings("unchecked") @Override - protected Processor createChainAndReturnFirstProcessor() { + protected Processor createChainAndReturnFirstProcessor(Processor, Void> resultReceiver) { Collection, ?>> resultReceivers = new ArrayList<>(); - resultReceivers.add(this.getResultReceiver()); + resultReceivers.add(resultReceiver); return new AbstractParallelProcessor>(Double.class, - (Class>)(Class) Map.class, - ConcurrencyTestsUtil.getExecutor(), - resultReceivers) { + (Class>)(Class) Map.class, + ConcurrencyTestsUtil.getExecutor(), + resultReceivers) { @Override protected ProcessorInstruction> createInstruction(Double element) { return new AbstractProcessorInstruction>(this) { @@ -278,13 +278,13 @@ public class TestProcessorQuery { Query query = new ProcessorQuery(0.0, Double.class) { @SuppressWarnings("unchecked") @Override - protected Processor createChainAndReturnFirstProcessor() { + protected Processor createChainAndReturnFirstProcessor(Processor, Void> resultReceiver) { Collection, ?>> resultReceivers = new ArrayList<>(); - resultReceivers.add(this.getResultReceiver()); + resultReceivers.add(resultReceiver); return new AbstractParallelProcessor>(Double.class, - (Class>)(Class) Map.class, - ConcurrencyTestsUtil.getExecutor(), - resultReceivers) { + (Class>)(Class) Map.class, + ConcurrencyTestsUtil.getExecutor(), + resultReceivers) { @Override protected ProcessorInstruction> createInstruction(Double element) { return new AbstractProcessorInstruction>(this) { @@ -309,7 +309,7 @@ public class TestProcessorQuery { AdditionalQueryData additionalData = new AdditionalStatisticQueryData(UUID.randomUUID()); Query query = new ProcessorQuery(0.0, Double.class, additionalData) { @Override - protected Processor createChainAndReturnFirstProcessor() { + protected Processor createChainAndReturnFirstProcessor(Processor, Void> resultReceiver) { return null; } }; @@ -320,7 +320,7 @@ public class TestProcessorQuery { additionalData = new AdditionalDimensionValuesQueryData(UUID.randomUUID(), new ArrayList>()); query = new ProcessorQuery(0.0, Double.class, additionalData) { @Override - protected Processor createChainAndReturnFirstProcessor() { + protected Processor createChainAndReturnFirstProcessor(Processor, Void> resultReceiver) { return null; } }; diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/QueryFactory.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/QueryFactory.java index 6ea0eface60..5ecc1a599b6 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/QueryFactory.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/QueryFactory.java @@ -37,7 +37,7 @@ public class QueryFactory { ResourceBundleStringMessages stringMessages, ExecutorService executor) { return new ProcessorQuery(dataSource, stringMessages, queryDefinition.getLocale(), queryDefinition.getResultType(), new AdditionalStatisticQueryData(queryDefinition.getDataRetrieverChainDefinition().getID())) { @Override - protected Processor createChainAndReturnFirstProcessor() { + protected Processor createChainAndReturnFirstProcessor(Processor, Void> resultReceiver) { ProcessorFactory processorFactory = new ProcessorFactory(executor); Function extractionFunction = queryDefinition.getStatisticToCalculate(); @@ -125,7 +125,7 @@ public class QueryFactory { Class> resultType = (Class>)(Class) Set.class; return new ProcessorQuery, DataSource>(dataSource, stringMessages, locale, resultType, new AdditionalDimensionValuesQueryData(dataRetrieverChainDefinition.getID(), dimensions)) { @Override - protected Processor createChainAndReturnFirstProcessor() { + protected Processor createChainAndReturnFirstProcessor(Processor>, Void> resultReceiver) { ProcessorFactory processorFactory = new ProcessorFactory(executor); Processor, Map>> valueCollector = processorFactory.createGroupedDataCollectingAsSetProcessor(/*query*/ this); @@ -139,9 +139,9 @@ public class QueryFactory { chainBuilder.setFilter(criteriaMappedByRetrieverLevel.get(chainBuilder.getCurrentRetrieverLevel())); } } - for (Processor resultReceiver : processorFactory.createGroupingExtractorsForDimensions( + for (Processor groupingExtractor : processorFactory.createGroupingExtractorsForDimensions( chainBuilder.getCurrentRetrievedDataType(), valueCollector, getParameterProvidersFor(dimensions, stringMessages, locale), stringMessages, locale)) { - chainBuilder.addResultReceiver(resultReceiver); + chainBuilder.addResultReceiver(groupingExtractor); } return chainBuilder.build(); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/ProcessorQuery.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/ProcessorQuery.java index 2fd15c3df3b..38b098193c2 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/ProcessorQuery.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/ProcessorQuery.java @@ -78,10 +78,10 @@ public abstract class ProcessorQuery implements Quer this.additionalData = additionalData; resultReceiver = new ProcessResultReceiver(); - firstProcessor = createChainAndReturnFirstProcessor(); + firstProcessor = createChainAndReturnFirstProcessor(resultReceiver); } - protected abstract Processor createChainAndReturnFirstProcessor(); + protected abstract Processor createChainAndReturnFirstProcessor(Processor, Void> resultReceiver); @Override public QueryState getState() { From 19dcc4bf03cac96bcfbce8585f2558c93e745696 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 8 Sep 2015 09:32:53 +0200 Subject: [PATCH 154/504] Fixed testGetDimensionsForDataRetrieverChainDefinition --- .../functions/TestFunctionManagerAsFunctionProvider.java | 4 ++-- .../sse/datamining/impl/components/DataRetrieverLevel.java | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java index 9c835b66ac1..8951de1ec80 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java @@ -53,8 +53,8 @@ public class TestFunctionManagerAsFunctionProvider { server.addStringMessages(TestsUtil.getTestStringMessages()); Collection> internalClassesToScan = new HashSet<>(); - internalClassesToScan.add(Test_HasLegOfCompetitorContext.class); internalClassesToScan.add(Test_HasRaceContext.class); + internalClassesToScan.add(Test_HasLegOfCompetitorContext.class); server.registerAllClasses(internalClassesToScan); Collection> externalClassesToScan = new HashSet<>(); @@ -87,7 +87,7 @@ public class TestFunctionManagerAsFunctionProvider { List> dataRetrieverLevels = dataRetrieverChainDefinition.getDataRetrieverLevels(); Map, Iterable>> expectedDimensions = new HashMap<>(); for (DataRetrieverLevel dataRetrieverLevel : dataRetrieverLevels) { - expectedDimensions.put(dataRetrieverLevel, functionRegistryUtil.getExpectedDimensionsFor(dataRetrieverLevel.getRetrievedDataType())); + expectedDimensions.put(dataRetrieverLevel, server.getDimensionsFor(dataRetrieverLevel.getRetrievedDataType())); } final Map, Iterable>> dimensionsMappedByLevel = server.getDimensionsMappedByLevelFor(dataRetrieverChainDefinition); assertThat(dimensionsMappedByLevel, is(expectedDimensions)); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/DataRetrieverLevel.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/DataRetrieverLevel.java index d5804353082..005e2f5029c 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/DataRetrieverLevel.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/DataRetrieverLevel.java @@ -32,6 +32,13 @@ public class DataRetrieverLevel { public String getRetrievedDataTypeMessageKey() { return retrievedDataTypeMessageKey; } + + @Override + public String toString() { + return "Level " + retrieverLevel + " [retrieverType: " + retrieverType.getSimpleName() + + ", retrievedDataType: " + retrievedDataType.getSimpleName() + + ", messageKey: " + retrievedDataTypeMessageKey + "]"; + } @Override public int hashCode() { From d707d83e58ffaaba3aa7309800367c354e3e4314 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 8 Sep 2015 09:39:52 +0200 Subject: [PATCH 155/504] Refactoring - Moved desktop EventHeader partial to right package --- .../TabletAndDesktopEventView.java | 22 +++---- .../TabletAndDesktopEventView.ui.xml | 61 ++++++++--------- .../event/partials/header/EventHeader.ui.xml | 65 ------------------ .../regatta/TabletAndDesktopEventView.java | 28 +++----- .../regatta/TabletAndDesktopEventView.ui.xml | 66 ++++++++----------- .../partials/eventheader}/DropdownItem.java | 2 +- .../partials/eventheader}/DropdownItem.ui.xml | 2 +- .../partials/eventheader}/EventHeader.gss | 0 .../partials/eventheader}/EventHeader.java | 11 +--- .../partials/eventheader/EventHeader.ui.xml | 64 ++++++++++++++++++ .../eventheader}/EventHeaderResources.java | 2 +- .../gwt/home/shared/utils/LogoUtil.java | 2 +- 12 files changed, 144 insertions(+), 181 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeader.ui.xml rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/header => desktop/partials/eventheader}/DropdownItem.java (93%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/header => desktop/partials/eventheader}/DropdownItem.ui.xml (84%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/header => desktop/partials/eventheader}/EventHeader.gss (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/header => desktop/partials/eventheader}/EventHeader.java (98%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.ui.xml rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/header => desktop/partials/eventheader}/EventHeaderResources.java (97%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.java index e33c3d6044b..e9f636ca0d2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.java @@ -20,29 +20,26 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanel; import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanelPlaceSelectionEvent; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.common.client.i18n.TextMessages; -import com.sap.sailing.gwt.home.client.place.event.partials.header.EventHeader; +import com.sap.sailing.gwt.home.desktop.partials.eventheader.EventHeader; import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.client.StringMessages; public class TabletAndDesktopEventView extends Composite implements EventMultiregattaView { - private static final ApplicationHistoryMapper historyMapper = GWT - . create(ApplicationHistoryMapper.class); - - private static MyBinder uiBinder = GWT.create(MyBinder.class); - - private Presenter currentPresenter; + + private static final ApplicationHistoryMapper historyMapper = GWT. create(ApplicationHistoryMapper.class); interface MyBinder extends UiBinder { } + + private static MyBinder uiBinder = GWT.create(MyBinder.class); @UiField StringMessages i18n; - @UiField(provided = true) - TabPanel tabPanelUi; + @UiField(provided = true) TabPanel tabPanelUi; + @UiField(provided = true) EventHeader eventHeader; - @UiField(provided = true) - EventHeader eventHeader; + private Presenter currentPresenter; public TabletAndDesktopEventView() { } @@ -51,11 +48,8 @@ public class TabletAndDesktopEventView extends Composite implements EventMultire public void registerPresenter(final Presenter currentPresenter) { this.currentPresenter = currentPresenter; tabPanelUi = new TabPanel<>(currentPresenter, historyMapper); - eventHeader = new EventHeader(currentPresenter); - initWidget(uiBinder.createAndBindUi(this)); - initBreadCrumbs(); String sailorsInfoURL = currentPresenter.getCtx().getEventDTO().getSailorsInfoWebsiteURL(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.ui.xml index 60df643a019..ef1bcf9317a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.ui.xml @@ -1,62 +1,55 @@ - + .header { - position: relative; - width: 100%; - margin: 0; - padding: 0; + position: relative; + width: 100%; + margin: 0; + padding: 0; } - .mainHeader { - width: 66.6666666666667%; + width: 66.6666666666667%; } - .sharingHeader { - width: 33.3333333333333%; - float: right; - padding: 0 1rem; - position: - relative; - padding: 1.333333333333333em 0; - text-align: right; - - background-color: maroon; - height: 2rem; + width: 33.3333333333333%; + float: right; + padding: 0 1rem; + position: + relative; + padding: 1.333333333333333em 0; + text-align: right; + background-color: maroon; + height: 2rem; } - .breadcrumb, .intro { - box-sizing: border-box; - -moz-box-sizing: border-box; + box-sizing: border-box; + -moz-box-sizing: border-box; } - .breadcrumb { - font-size: 0.866666666666667em; - font-weight: 600; + font-size: 0.866666666666667em; + font-weight: 600; } - .intro { - height: 5em; + height: 5em; } - + - + - + - + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeader.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeader.ui.xml deleted file mode 100644 index cace4b3e63f..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeader.ui.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - -
    -
    -
    -
    -
    - -
    - - - - - - -
    - -

    - - -
    -
    - -

    -
    - -
    -
    -
    - - -
    - - - -
    -
    -
    -
    - -
    -
    -
    -
    - -
    - - \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.java index 5920afbbc91..efde3168898 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.java @@ -20,32 +20,28 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanel; import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanelPlaceSelectionEvent; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.common.client.i18n.TextMessages; -import com.sap.sailing.gwt.home.client.place.event.partials.header.EventHeader; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; +import com.sap.sailing.gwt.home.desktop.partials.eventheader.EventHeader; import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; public class TabletAndDesktopEventView extends Composite implements EventRegattaView { - private static final ApplicationHistoryMapper historyMapper = GWT - . create(ApplicationHistoryMapper.class); - - private static MyBinder uiBinder = GWT.create(MyBinder.class); - - private Presenter currentPresenter; + + private static final ApplicationHistoryMapper historyMapper = GWT. create(ApplicationHistoryMapper.class); interface MyBinder extends UiBinder { } + + private static MyBinder uiBinder = GWT.create(MyBinder.class); - @UiField - StringMessages i18n; + @UiField StringMessages i18n; - @UiField(provided = true) - TabPanel tabPanelUi; - - @UiField(provided = true) - EventHeader eventHeader; + @UiField(provided = true) TabPanel tabPanelUi; + @UiField(provided = true) EventHeader eventHeader; + + private Presenter currentPresenter; public TabletAndDesktopEventView() { } @@ -54,11 +50,8 @@ public class TabletAndDesktopEventView extends Composite implements EventRegatta public void registerPresenter(final Presenter currentPresenter) { this.currentPresenter = currentPresenter; tabPanelUi = new TabPanel<>(currentPresenter, historyMapper); - eventHeader = new EventHeader(currentPresenter); - initWidget(uiBinder.createAndBindUi(this)); - initBreadCrumbs(); if(currentPresenter.getCtx().getEventDTO().getType() == EventType.SERIES_EVENT) { @@ -66,7 +59,6 @@ public class TabletAndDesktopEventView extends Composite implements EventRegatta Anchor seriesAnchor = new Anchor(currentPresenter.getCtx().getEventDTO().getSeriesName()); seriesAnchor.setHref(currentEventSeriesNavigation.getTargetUrl()); seriesAnchor.addClickHandler(new ClickHandler() { - @Override public void onClick(ClickEvent event) { if (LinkUtil.handleLinkClick(event.getNativeEvent().cast())) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.ui.xml index 733602b111c..51c620d7475 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.ui.xml @@ -1,69 +1,61 @@ - + .header { - position: relative; - width: 100%; - margin: 0; - padding: 0; + position: relative; + width: 100%; + margin: 0; + padding: 0; } - .mainHeader { - width: 66.6666666666667%; + width: 66.6666666666667%; } - .sharingHeader { - width: 33.3333333333333%; - float: right; - padding: 0 1rem; - position: - relative; - padding: 1.333333333333333em 0; - text-align: right; - - background-color: maroon; - height: 2rem; + width: 33.3333333333333%; + float: right; + padding: 0 1rem; + position: + relative; + padding: 1.333333333333333em 0; + text-align: right; + background-color: maroon; + height: 2rem; } - .breadcrumb, .intro { - box-sizing: border-box; - -moz-box-sizing: border-box; + box-sizing: border-box; + -moz-box-sizing: border-box; } - .breadcrumb { - font-size: 0.866666666666667em; - font-weight: 600; + font-size: 0.866666666666667em; + font-weight: 600; } - .intro { - height: 5em; + height: 5em; } - - + - + - + - + - + - + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/DropdownItem.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/DropdownItem.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/DropdownItem.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/DropdownItem.java index d832e2791ac..9d1e9a4fd7f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/DropdownItem.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/DropdownItem.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.header; +package com.sap.sailing.gwt.home.desktop.partials.eventheader; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.AnchorElement; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/DropdownItem.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/DropdownItem.ui.xml similarity index 84% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/DropdownItem.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/DropdownItem.ui.xml index 90758db8881..076b9ba44f0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/DropdownItem.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/DropdownItem.ui.xml @@ -2,7 +2,7 @@ - + .important { font-weight: bold; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeader.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.gss similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeader.gss rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.gss diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeader.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.java index ab80651d3d5..9e1dc4a7b45 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.header; +package com.sap.sailing.gwt.home.desktop.partials.eventheader; import java.util.Date; @@ -41,8 +41,7 @@ public class EventHeader extends Composite { @UiField StringMessages i18n; @UiField DivElement eventLogo; - @UiField - AnchorElement eventLogoAnchorUi; + @UiField AnchorElement eventLogoAnchorUi; @UiField HeadingElement staticTitle; @UiField SpanElement eventName; @UiField DivElement eventState; @@ -58,22 +57,17 @@ public class EventHeader extends Composite { @UiField DivElement races; @UiField DivElement eventCategory; @UiField DivElement courseAreaUi; - @UiField FlowPanel dropdownContent; - @UiField SharingButtons sharing; private EventViewDTO event; - private Presenter presenter; public EventHeader(EventView.Presenter presenter) { this.event = presenter.getCtx().getEventDTO(); this.presenter = presenter; - EventHeaderResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); - initFields(); initSharing(); } @@ -168,7 +162,6 @@ public class EventHeader extends Composite { dropdownEventName.setInnerText(nameToShow); LabelTypeUtil.renderLabelType(dropdownEventState, presenter.showRegattaMetadata() ? presenter.getRegattaMetadata().getState().getStateMarker() : event.getState().getStateMarker()); hide(staticTitle); - initDropdown(); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.ui.xml new file mode 100644 index 00000000000..ed9cb7b087e --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.ui.xml @@ -0,0 +1,64 @@ + + + + + + +
    +
    +
    +
    +
    + +
    + + + + + + +
    + +

    + + +
    +
    + +

    +
    + +
    +
    +
    + + +
    + + + +
    +
    +
    +
    + +
    +
    +
    +
    + +
    + + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeaderResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeaderResources.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeaderResources.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeaderResources.java index e4d95969fd1..325ece5637e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/header/EventHeaderResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeaderResources.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.header; +package com.sap.sailing.gwt.home.desktop.partials.eventheader; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/utils/LogoUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/utils/LogoUtil.java index e7b50233e17..84600497dca 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/utils/LogoUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/utils/LogoUtil.java @@ -2,7 +2,7 @@ package com.sap.sailing.gwt.home.shared.utils; import com.google.gwt.dom.client.Element; import com.google.gwt.safehtml.shared.SafeUri; -import com.sap.sailing.gwt.home.client.place.event.partials.header.EventHeaderResources; +import com.sap.sailing.gwt.home.desktop.partials.eventheader.EventHeaderResources; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sailing.gwt.ui.shared.general.HasLogo; From 8e81a0058a56245b2576104901fa0190ac5c0e23 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 8 Sep 2015 10:25:33 +0200 Subject: [PATCH 156/504] Refactoring - Moved desktop EventHeader partial to right package --- .../place/event/multiregatta/TabletAndDesktopEventView.ui.xml | 4 ++-- .../place/event/regatta/TabletAndDesktopEventView.ui.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.ui.xml index ef1bcf9317a..ba01e7ad8e1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.ui.xml @@ -1,7 +1,7 @@ @@ -40,7 +40,7 @@ - + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.ui.xml index 51c620d7475..57c60a67f27 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.ui.xml @@ -1,7 +1,7 @@ @@ -40,7 +40,7 @@ - + From 3b7621ce4604cc53c5665cc7fbc4495582e5fc2b Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 8 Sep 2015 11:10:17 +0200 Subject: [PATCH 157/504] Refactoring - Moved desktop RegattaNavigation partials to respective package --- .../tabs/MultiregattaOverviewTabView.java | 6 +++--- .../tabs/MultiregattaOverviewTabView.ui.xml | 11 +++++------ .../tabs/MultiregattaRegattasTabView.java | 4 ++-- .../tabs/MultiregattaRegattasTabView.ui.xml | 5 +++-- .../place/event/regatta/tabs/RegattaRacesTabView.java | 8 ++++---- .../event/regatta/tabs/RegattaRacesTabView.ui.xml | 5 +++-- .../partials/regattanavigation}/DropdownFilter.java | 8 ++++---- .../partials/regattanavigation}/DropdownFilter.ui.xml | 2 +- .../regattanavigation}/ListNavigationPanel.java | 6 +++--- .../regattanavigation}/ListNavigationPanel.ui.xml | 2 +- .../partials/regattanavigation}/RaceStateLegend.java | 2 +- .../regattanavigation}/RaceStateLegend.ui.xml | 2 +- .../partials/regattanavigation}/RegattaNavigation.gss | 0 .../RegattaNavigationResources.java | 2 +- .../home/mobile/places/event/races/RacesViewImpl.java | 2 +- .../mobile/places/event/races/RacesViewImpl.ui.xml | 7 ++++--- 16 files changed, 37 insertions(+), 35 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/listNavigation => desktop/partials/regattanavigation}/DropdownFilter.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/listNavigation => desktop/partials/regattanavigation}/DropdownFilter.ui.xml (88%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/listNavigation => desktop/partials/regattanavigation}/ListNavigationPanel.java (90%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/listNavigation => desktop/partials/regattanavigation}/ListNavigationPanel.ui.xml (88%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/listNavigation => desktop/partials/regattanavigation}/RaceStateLegend.java (86%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/listNavigation => desktop/partials/regattanavigation}/RaceStateLegend.ui.xml (90%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/listNavigation => desktop/partials/regattanavigation}/RegattaNavigation.gss (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/listNavigation => desktop/partials/regattanavigation}/RegattaNavigationResources.java (94%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java index 7ef53ebd364..0fb07c5d88d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java @@ -24,13 +24,13 @@ import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregatt import com.sap.sailing.gwt.home.client.place.event.multiregatta.MultiregattaTabView; import com.sap.sailing.gwt.home.client.place.event.overview.EventOverviewStage; import com.sap.sailing.gwt.home.client.place.event.partials.eventregatta.EventRegattaList; -import com.sap.sailing.gwt.home.client.place.event.partials.listNavigation.DropdownFilter; -import com.sap.sailing.gwt.home.client.place.event.partials.listNavigation.DropdownFilter.DropdownFilterList; import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaList; import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListStepsLegend; import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLive; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter; +import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter.DropdownFilterList; import com.sap.sailing.gwt.home.desktop.partials.statistics.StatisticsBox; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -153,8 +153,8 @@ public class MultiregattaOverviewTabView extends Composite implements Multiregat @Override public void stop() { - } + @Override public MultiregattaOverviewPlace placeToFire() { return new MultiregattaOverviewPlace(currentPresenter.getCtx()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml index 74e5192b8c5..b2e6e3dc65e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml @@ -1,7 +1,6 @@ - @@ -22,14 +21,14 @@ - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java index b8bbbe0dcad..acb0c629f5e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java @@ -23,13 +23,13 @@ import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregatt import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.multiregatta.MultiregattaTabView; import com.sap.sailing.gwt.home.client.place.event.partials.eventregatta.EventRegattaList; -import com.sap.sailing.gwt.home.client.place.event.partials.listNavigation.DropdownFilter; -import com.sap.sailing.gwt.home.client.place.event.partials.listNavigation.DropdownFilter.DropdownFilterList; import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaList; import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListStepsLegend; import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLive; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter; +import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter.DropdownFilterList; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.ui.xml index 6bd7cebe1d7..15e25f57744 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.ui.xml @@ -1,5 +1,6 @@ + xmlns:p='urn:import:com.sap.sailing.gwt.home.client.place.event.partials' + xmlns:dp="urn:import:com.sap.sailing.gwt.home.desktop.partials"> @@ -18,7 +19,7 @@ - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/DropdownFilter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/DropdownFilter.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/DropdownFilter.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/DropdownFilter.java index 725499053f8..39974d609d2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/DropdownFilter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/DropdownFilter.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.listNavigation; +package com.sap.sailing.gwt.home.desktop.partials.regattanavigation; import java.util.Collection; @@ -14,15 +14,15 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.LinkUtil; -import com.sap.sailing.gwt.home.client.place.event.partials.listNavigation.RegattaNavigationResources.LocalCss; import com.sap.sailing.gwt.home.client.shared.DropdownHandler; +import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.RegattaNavigationResources.LocalCss; public class DropdownFilter extends Composite { private static final LocalCss CSS = RegattaNavigationResources.INSTANCE.css(); - private static ListDropdownFilterUiBinder uiBinder = GWT.create(ListDropdownFilterUiBinder.class); + private static DropdownFilterUiBinder uiBinder = GWT.create(DropdownFilterUiBinder.class); - interface ListDropdownFilterUiBinder extends UiBinder> { + interface DropdownFilterUiBinder extends UiBinder> { } @UiField DivElement dropdownContainerUi; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/DropdownFilter.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/DropdownFilter.ui.xml similarity index 88% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/DropdownFilter.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/DropdownFilter.ui.xml index e188cd37436..e988d2d93b8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/DropdownFilter.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/DropdownFilter.ui.xml @@ -3,7 +3,7 @@ - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/ListNavigationPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/ListNavigationPanel.java similarity index 90% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/ListNavigationPanel.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/ListNavigationPanel.java index db818343b55..99d7183f90d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/ListNavigationPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/ListNavigationPanel.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.listNavigation; +package com.sap.sailing.gwt.home.desktop.partials.regattanavigation; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Display; @@ -11,8 +11,8 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.partials.listNavigation.ListNavigationPanel.ListNavigationAction; -import com.sap.sailing.gwt.home.client.place.event.partials.listNavigation.RegattaNavigationResources.LocalCss; +import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.ListNavigationAction; +import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.RegattaNavigationResources.LocalCss; public class ListNavigationPanel extends Composite { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/ListNavigationPanel.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/ListNavigationPanel.ui.xml similarity index 88% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/ListNavigationPanel.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/ListNavigationPanel.ui.xml index b9c111a77e6..50d72ba7a8c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/ListNavigationPanel.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/ListNavigationPanel.ui.xml @@ -3,7 +3,7 @@ - + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RaceStateLegend.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RaceStateLegend.java similarity index 86% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RaceStateLegend.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RaceStateLegend.java index 50cae03813c..df1644e7786 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RaceStateLegend.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RaceStateLegend.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.listNavigation; +package com.sap.sailing.gwt.home.desktop.partials.regattanavigation; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RaceStateLegend.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RaceStateLegend.ui.xml similarity index 90% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RaceStateLegend.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RaceStateLegend.ui.xml index e5449e23890..69961d57737 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RaceStateLegend.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RaceStateLegend.ui.xml @@ -3,7 +3,7 @@ - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RegattaNavigation.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigation.gss similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RegattaNavigation.gss rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigation.gss diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RegattaNavigationResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigationResources.java similarity index 94% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RegattaNavigationResources.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigationResources.java index f4aa7eb4748..6733e7830c3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/listNavigation/RegattaNavigationResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigationResources.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.listNavigation; +package com.sap.sailing.gwt.home.desktop.partials.regattanavigation; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java index d6bb0e8ed5b..a81914abe6d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java @@ -6,7 +6,7 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.partials.listNavigation.RegattaNavigationResources; +import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.RegattaNavigationResources; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.regattacompetition.RegattaCompetition; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml index 955e35d25f2..f56e90a936c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml @@ -1,7 +1,8 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" + xmlns:mp="urn:import:com.sap.sailing.gwt.home.mobile.partials" + xmlns:dp="urn:import:com.sap.sailing.gwt.home.desktop.partials"> @@ -18,7 +19,7 @@
    - +
    From 4a090d25f8b32464fee5951c5c35175c64ebd9d5 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 8 Sep 2015 11:30:52 +0200 Subject: [PATCH 158/504] Refactoring - Moved shared RegattaNavigation partials to respective package --- .../regatta/tabs/RegattaRacesTabView.java | 2 +- .../regattanavigation/RegattaNavigation.gss | 47 +------------------ .../RegattaNavigationResources.java | 6 --- .../places/event/races/RacesViewImpl.java | 2 - .../places/event/races/RacesViewImpl.ui.xml | 6 +-- .../regattanavigation/RaceStateLegend.java | 3 +- .../regattanavigation/RaceStateLegend.ui.xml | 2 +- .../regattanavigation/RegattaNavigation.gss | 45 ++++++++++++++++++ .../RegattaNavigationResources.java | 21 +++++++++ 9 files changed, 74 insertions(+), 60 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{desktop => shared}/partials/regattanavigation/RaceStateLegend.java (78%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{desktop => shared}/partials/regattanavigation/RaceStateLegend.ui.xml (90%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RegattaNavigation.gss create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RegattaNavigationResources.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index a5d1929bfb5..93b0cd1f51f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -40,10 +40,10 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.ActionPro import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel; -import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.RaceStateLegend; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.ListNavigationAction; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.SelectionCallback; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; +import com.sap.sailing.gwt.home.shared.partials.regattanavigation.RaceStateLegend; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; import com.sap.sailing.gwt.ui.shared.RaceGroupDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigation.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigation.gss index 583c5fa15da..d9df9a92ee9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigation.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigation.gss @@ -101,49 +101,4 @@ background: url("images/home/dropdown__check@2x.png") no-repeat; background-position: 95%; background-size: 1.2em 0.933333333333333em; -} -.regattanavigation_legend { - font-size: 1rem; - width: 100%; - margin-top: 1.333333333333333em; -} -@media (min-width: 61em) { - .regattanavigation_legend { - text-align: right; - margin-top: 0; - } - .regattanavigation_legend_item { - margin-right: 0; - margin-left: 0.666666666666667em; - } -} -.regattanavigation_legend_item { - display: inline-block; - padding: 0.4em 0.666666666666667em; - margin: 0.333333333333333em 0.666666666666667em 0.333333333333333em 0; - font-size: 0.666em; - font-weight: 700; - line-height: 0.666666666666667em; - border: 1px solid #008fcc; - text-transform: capitalize; -} -.regattanavigation_legend_itemtracked { - color: #fff; - border-color: #008fcc; - background-color: #008fcc; -} -.regattanavigation_legend_itemuntracked { - color: #fff; - border-color: #ccc; - background-color: #666; -} -.regattanavigation_legend_itemlive { - color: #fff; - border-color: #e94a1b; - background-color: #e94a1b; -} -.regattanavigation_legend_itemplanned { - color: #ccc; - border-color: #ccc; - background-color: #fff; -} +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigationResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigationResources.java index 6733e7830c3..03f153c1b43 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigationResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RegattaNavigationResources.java @@ -25,11 +25,5 @@ public interface RegattaNavigationResources extends ClientBundle { String regattanavigation_filter_current(); String regattanavigation_filter_dropdown_link(); String regattanavigation_filter_dropdown_linkactive(); - String regattanavigation_legend(); - String regattanavigation_legend_item(); - String regattanavigation_legend_itemtracked(); - String regattanavigation_legend_itemuntracked(); - String regattanavigation_legend_itemlive(); - String regattanavigation_legend_itemplanned(); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java index a81914abe6d..cddc97e722e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java @@ -6,7 +6,6 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.RegattaNavigationResources; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.regattacompetition.RegattaCompetition; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; @@ -26,7 +25,6 @@ public class RacesViewImpl extends AbstractEventView implem public RacesViewImpl(RacesView.Presenter presenter) { super(presenter, presenter.getCtx().getEventDTO().getType() == EventType.MULTI_REGATTA, true); - RegattaNavigationResources.INSTANCE.css().ensureInjected(); regattaCompetitionUi = new RegattaCompetition(presenter); refreshManager.add(regattaCompetitionUi, new GetCompetitionFormatRacesAction(getEventId(), getRegattaId())); setViewContent(uiBinder.createAndBindUi(this)); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml index f56e90a936c..b26e899bd5b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml @@ -2,7 +2,7 @@ + xmlns:sp="urn:import:com.sap.sailing.gwt.home.shared.partials"> @@ -11,7 +11,7 @@ font-weight: 700; margin-top: 0.666666666666667em; } - .legend { + div.legend { margin-top: 0.666666666666667em; margin-bottom: 0.666666666666667em; } @@ -19,7 +19,7 @@
    - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RaceStateLegend.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RaceStateLegend.java similarity index 78% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RaceStateLegend.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RaceStateLegend.java index df1644e7786..4bbb2fbff4d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RaceStateLegend.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RaceStateLegend.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.desktop.partials.regattanavigation; +package com.sap.sailing.gwt.home.shared.partials.regattanavigation; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; @@ -13,6 +13,7 @@ public class RaceStateLegend extends Widget { } public RaceStateLegend() { + RegattaNavigationResources.INSTANCE.css().ensureInjected(); setElement(uiBinder.createAndBindUi(this)); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RaceStateLegend.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RaceStateLegend.ui.xml similarity index 90% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RaceStateLegend.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RaceStateLegend.ui.xml index 69961d57737..fa5563a01d0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/RaceStateLegend.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RaceStateLegend.ui.xml @@ -3,7 +3,7 @@ - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RegattaNavigation.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RegattaNavigation.gss new file mode 100644 index 00000000000..0bfa33bf69b --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RegattaNavigation.gss @@ -0,0 +1,45 @@ +.regattanavigation_legend { + font-size: 1rem; + width: 100%; + margin-top: 1.333333333333333em; +} +@media (min-width: 61em) { + .regattanavigation_legend { + text-align: right; + margin-top: 0; + } + .regattanavigation_legend_item { + margin-right: 0; + margin-left: 0.666666666666667em; + } +} +.regattanavigation_legend_item { + display: inline-block; + padding: 0.4em 0.666666666666667em; + margin: 0.333333333333333em 0.666666666666667em 0.333333333333333em 0; + font-size: 0.666em; + font-weight: 700; + line-height: 0.666666666666667em; + border: 1px solid #008fcc; + text-transform: capitalize; +} +.regattanavigation_legend_itemtracked { + color: #fff; + border-color: #008fcc; + background-color: #008fcc; +} +.regattanavigation_legend_itemuntracked { + color: #fff; + border-color: #ccc; + background-color: #666; +} +.regattanavigation_legend_itemlive { + color: #fff; + border-color: #e94a1b; + background-color: #e94a1b; +} +.regattanavigation_legend_itemplanned { + color: #ccc; + border-color: #ccc; + background-color: #fff; +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RegattaNavigationResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RegattaNavigationResources.java new file mode 100644 index 00000000000..cad2a2842e6 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/regattanavigation/RegattaNavigationResources.java @@ -0,0 +1,21 @@ +package com.sap.sailing.gwt.home.shared.partials.regattanavigation; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; + +public interface RegattaNavigationResources extends ClientBundle { + public static final RegattaNavigationResources INSTANCE = GWT.create(RegattaNavigationResources.class); + + @Source("RegattaNavigation.gss") + LocalCss css(); + + public interface LocalCss extends CssResource { + String regattanavigation_legend(); + String regattanavigation_legend_item(); + String regattanavigation_legend_itemtracked(); + String regattanavigation_legend_itemuntracked(); + String regattanavigation_legend_itemlive(); + String regattanavigation_legend_itemplanned(); + } +} From 2911bfd5c8a2ce4da4e830e51390659f59b3e1ad Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 8 Sep 2015 11:52:24 +0200 Subject: [PATCH 159/504] Refactoring - Moved shared Message partials to respective package --- .../event/overview/EventOverviewStage.java | 2 +- .../event/overview/EventOverviewStage.ui.xml | 27 ++++++++++--------- .../event/partials/message/Message.ui.xml | 17 ------------ .../event/overview/EventOverviewStage.java | 2 +- .../event/overview/EventOverviewStage.ui.xml | 26 +++++++++--------- .../partials/message/Message.gss | 0 .../partials/message/Message.java | 2 +- .../shared/partials/message/Message.ui.xml | 16 +++++++++++ .../partials/message/MessageResources.java | 2 +- 9 files changed, 47 insertions(+), 47 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/message/Message.ui.xml rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event => shared}/partials/message/Message.gss (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event => shared}/partials/message/Message.java (93%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/message/Message.ui.xml rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event => shared}/partials/message/MessageResources.java (88%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.java index e00ab4d3030..a328be37371 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.java @@ -14,11 +14,11 @@ import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.common.client.SharedResources.MediaCss; import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.client.place.event.partials.countdown.Countdown; -import com.sap.sailing.gwt.home.client.place.event.partials.message.Message; import com.sap.sailing.gwt.home.client.place.event.partials.updatesBox.UpdatesBox; import com.sap.sailing.gwt.home.client.place.event.partials.video.Video; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.shared.partials.message.Message; import com.sap.sailing.gwt.ui.shared.dispatch.ListResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewStageContentDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewStageDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.ui.xml index 7902ce2899d..ed35961961f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/overview/EventOverviewStage.ui.xml @@ -1,16 +1,19 @@ - - + + - -
    - -
    - - -
    -
    + +
    + +
    + + +
    +
    \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/message/Message.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/message/Message.ui.xml deleted file mode 100644 index b33293ab932..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/message/Message.ui.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java index eecadd92580..c3c78df2c49 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java @@ -6,11 +6,11 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.partials.message.Message; import com.sap.sailing.gwt.home.client.place.event.partials.video.Video; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.countdown.Countdown; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; +import com.sap.sailing.gwt.home.shared.partials.message.Message; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewStageContentDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewStageDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewTickerStageDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.ui.xml index d59c621d64d..af17fee3a1a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.ui.xml @@ -1,17 +1,15 @@ - - - + + + - -
    - -
    - -
    -
    + +
    + +
    + +
    +
    \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/message/Message.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/message/Message.gss similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/message/Message.gss rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/message/Message.gss diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/message/Message.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/message/Message.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/message/Message.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/message/Message.java index 6d54f93c739..fe78f2a2715 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/message/Message.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/message/Message.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.message; +package com.sap.sailing.gwt.home.shared.partials.message; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/message/Message.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/message/Message.ui.xml new file mode 100644 index 00000000000..5e484309a8b --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/message/Message.ui.xml @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/message/MessageResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/message/MessageResources.java similarity index 88% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/message/MessageResources.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/message/MessageResources.java index 8fcbede258e..c19c54e6a6a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/message/MessageResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/message/MessageResources.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.message; +package com.sap.sailing.gwt.home.shared.partials.message; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; From af96cc72108e15d8eb700c5127ebb46a07469eeb Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 8 Sep 2015 12:22:51 +0200 Subject: [PATCH 160/504] Refactoring - Moved desktop MultiRegattaList partials to respective package --- .../tabs/MultiregattaOverviewTabView.java | 4 ++-- .../tabs/MultiregattaOverviewTabView.ui.xml | 4 ++-- .../tabs/MultiregattaRegattasTabView.java | 4 ++-- .../tabs/MultiregattaRegattasTabView.ui.xml | 4 ++-- .../MultiRegattaListItem.ui.xml | 18 ----------------- .../regatta/tabs/RegattaOverviewTabView.java | 4 ++-- .../tabs/RegattaOverviewTabView.ui.xml | 2 +- .../regatta/tabs/RegattaRacesTabView.java | 4 ++-- .../regatta/tabs/RegattaRacesTabView.ui.xml | 2 +- .../multiregattalist}/MultiRegattaList.gss | 0 .../multiregattalist}/MultiRegattaList.java | 2 +- .../multiregattalist}/MultiRegattaList.ui.xml | 5 +++-- .../MultiRegattaListItem.java | 2 +- .../MultiRegattaListItem.ui.xml | 20 +++++++++++++++++++ .../MultiRegattaListResources.java | 2 +- .../MultiRegattaListSteps.java | 2 +- .../MultiRegattaListSteps.ui.xml | 5 +++-- .../MultiRegattaListStepsBody.java | 2 +- .../MultiRegattaListStepsBody.ui.xml | 5 +++-- .../MultiRegattaListStepsBodyFleet.java | 2 +- .../MultiRegattaListStepsBodyFleet.ui.xml | 5 +++-- .../MultiRegattaListStepsLegend.java | 2 +- .../MultiRegattaListStepsLegend.ui.xml | 0 23 files changed, 53 insertions(+), 47 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListItem.ui.xml rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaList.gss (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaList.java (97%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaList.ui.xml (60%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaListItem.java (96%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListItem.ui.xml rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaListResources.java (96%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaListSteps.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaListSteps.ui.xml (78%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaListStepsBody.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaListStepsBody.ui.xml (76%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaListStepsBodyFleet.java (94%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaListStepsBodyFleet.ui.xml (73%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaListStepsLegend.java (87%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/multiRegattaList => desktop/partials/multiregattalist}/MultiRegattaListStepsLegend.ui.xml (100%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java index 0fb07c5d88d..867f4bf3677 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java @@ -24,11 +24,11 @@ import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregatt import com.sap.sailing.gwt.home.client.place.event.multiregatta.MultiregattaTabView; import com.sap.sailing.gwt.home.client.place.event.overview.EventOverviewStage; import com.sap.sailing.gwt.home.client.place.event.partials.eventregatta.EventRegattaList; -import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaList; -import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListStepsLegend; import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLive; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaList; +import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListStepsLegend; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter.DropdownFilterList; import com.sap.sailing.gwt.home.desktop.partials.statistics.StatisticsBox; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml index b2e6e3dc65e..bca0380c3e8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml @@ -20,14 +20,14 @@
    - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java index acb0c629f5e..d14aa250df1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java @@ -23,11 +23,11 @@ import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregatt import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.multiregatta.MultiregattaTabView; import com.sap.sailing.gwt.home.client.place.event.partials.eventregatta.EventRegattaList; -import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaList; -import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListStepsLegend; import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLive; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaList; +import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListStepsLegend; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter.DropdownFilterList; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.ui.xml index 15e25f57744..54f3c8624b6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.ui.xml @@ -18,14 +18,14 @@
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListItem.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListItem.ui.xml deleted file mode 100644 index 0b6bf8c1799..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListItem.ui.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - -
    - - - -
    -
    -
    \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java index 164494dca22..933f9689900 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java @@ -9,14 +9,14 @@ import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.overview.EventOverviewStage; -import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListItem; -import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListStepsLegend; import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLive; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListItem; +import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListStepsLegend; import com.sap.sailing.gwt.home.desktop.partials.standings.StandingsList; import com.sap.sailing.gwt.home.desktop.partials.statistics.StatisticsBox; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.ui.xml index 70e763c1f90..4d67b550259 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.ui.xml @@ -13,7 +13,7 @@
    - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index 93b0cd1f51f..46b0cc497f2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -23,8 +23,6 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListItem; -import com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList.MultiRegattaListStepsLegend; import com.sap.sailing.gwt.home.client.place.event.partials.raceCompetition.RegattaCompetitionSeries; import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLive; import com.sap.sailing.gwt.home.client.place.event.partials.racelist.AbstractRaceList; @@ -39,6 +37,8 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.ActionProvider.AbstractActionProvider; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListItem; +import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListStepsLegend; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.ListNavigationAction; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.SelectionCallback; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml index 2c3be09d983..4e5fa9fe1b8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml @@ -27,7 +27,7 @@
    - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaList.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.gss similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaList.gss rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.gss diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaList.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java index f7221341737..aac2593c8cb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList; +package com.sap.sailing.gwt.home.desktop.partials.multiregattalist; import java.util.Collection; import java.util.Collections; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaList.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.ui.xml similarity index 60% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaList.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.ui.xml index 89467cba98b..2ff1061cca7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaList.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.ui.xml @@ -1,9 +1,10 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" + xmlns:dp="urn:import:com.sap.sailing.gwt.home.desktop.partials"> - + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListItem.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListItem.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListItem.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListItem.java index a12777fb2f1..8c8b7e82742 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListItem.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListItem.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList; +package com.sap.sailing.gwt.home.desktop.partials.multiregattalist; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListItem.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListItem.ui.xml new file mode 100644 index 00000000000..73fb3b9fbff --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListItem.ui.xml @@ -0,0 +1,20 @@ + + + + + + +
    + + + +
    +
    +
    \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListResources.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListResources.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListResources.java index 80198633cab..de5fb9330cf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListResources.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList; +package com.sap.sailing.gwt.home.desktop.partials.multiregattalist; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListSteps.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListSteps.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.java index 7ad113dea33..82c9d590fab 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListSteps.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList; +package com.sap.sailing.gwt.home.desktop.partials.multiregattalist; import java.util.ArrayList; import java.util.List; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListSteps.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.ui.xml similarity index 78% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListSteps.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.ui.xml index 40465f5ca94..a15c4e07014 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListSteps.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.ui.xml @@ -1,9 +1,10 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" + xmlns:dp="urn:import:com.sap.sailing.gwt.home.desktop.partials"> - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsBody.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsBody.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.java index c0773a10dba..e6e68e96b27 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsBody.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList; +package com.sap.sailing.gwt.home.desktop.partials.multiregattalist; import static com.sap.sailing.domain.common.LeaderboardNameConstants.DEFAULT_SERIES_NAME; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsBody.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.ui.xml similarity index 76% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsBody.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.ui.xml index a908b6e1ddf..3374a3d05b6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsBody.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.ui.xml @@ -1,9 +1,10 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" + xmlns:dp="urn:import:com.sap.sailing.gwt.home.desktop.partials"> - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsBodyFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBodyFleet.java similarity index 94% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsBodyFleet.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBodyFleet.java index 94474e460a1..9c7f9743a1c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsBodyFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBodyFleet.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList; +package com.sap.sailing.gwt.home.desktop.partials.multiregattalist; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsBodyFleet.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBodyFleet.ui.xml similarity index 73% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsBodyFleet.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBodyFleet.ui.xml index fe69964d172..abc63c36ae2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsBodyFleet.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBodyFleet.ui.xml @@ -1,9 +1,10 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" + xmlns:dp="urn:import:com.sap.sailing.gwt.home.desktop.partials"> - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsLegend.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsLegend.java similarity index 87% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsLegend.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsLegend.java index 8fd14b1c925..937301d52b5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsLegend.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsLegend.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.multiRegattaList; +package com.sap.sailing.gwt.home.desktop.partials.multiregattalist; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsLegend.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsLegend.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/multiRegattaList/MultiRegattaListStepsLegend.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsLegend.ui.xml From 5160ce8c4513ad51aa9fa18a6b3ca1a0b88f0771 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 8 Sep 2015 13:15:07 +0200 Subject: [PATCH 161/504] Improved the data mining tests --- ...TestFunctionManagerAsFunctionProvider.java | 29 ++++++++++-- .../data/Test_HasLegOfCompetitorContext.java | 5 +- .../Test_HasLegOfCompetitorContextImpl.java | 16 ++++--- .../util/ExpectedFunctionRegistryUtil.java | 20 ++++++-- ...mpetitorWithContextRetrievalProcessor.java | 3 +- .../datamining/factories/FunctionFactory.java | 6 +-- .../sse/datamining/functions/Function.java | 12 ----- .../ConcatenatingCompoundFunction.java | 46 +++++++++---------- .../impl/functions/FunctionManager.java | 38 ++++++++------- .../functions/MethodWrappingFunction.java | 23 ---------- 10 files changed, 100 insertions(+), 98 deletions(-) diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java index 8951de1ec80..4b74c35b3c0 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestFunctionManagerAsFunctionProvider.java @@ -70,12 +70,11 @@ public class TestFunctionManagerAsFunctionProvider { @Test public void testGetDimensionsForType() { - Collection> expectedDimensions = functionRegistryUtil.getExpectedDimensionsFor(Test_HasRaceContext.class); assertThat(server.getDimensionsFor(Test_HasRaceContext.class), is(expectedDimensions)); assertThat(server.getDimensionsFor(Test_HasRaceContextImpl.class), is(expectedDimensions)); - expectedDimensions.addAll(functionRegistryUtil.getExpectedDimensionsFor(Test_HasLegOfCompetitorContext.class)); + expectedDimensions = functionRegistryUtil.getExpectedDimensionsFor(Test_HasLegOfCompetitorContext.class); assertThat(server.getDimensionsFor(Test_HasLegOfCompetitorContext.class), is(expectedDimensions)); assertThat(server.getDimensionsFor(Test_HasLegOfCompetitorContextImpl.class), is(expectedDimensions)); } @@ -93,6 +92,28 @@ public class TestFunctionManagerAsFunctionProvider { assertThat(dimensionsMappedByLevel, is(expectedDimensions)); } + @Test + public void testGetReducedDimensionsForDataRetrieverChainDefinition() { + DataRetrieverChainDefinition, Test_HasLegOfCompetitorContext> retrieverChain = createDataRetrieverChainDefinition(); + + Map, Iterable>> expectedDimensions = server.getDimensionsMappedByLevelFor(retrieverChain); + for (DataRetrieverLevel retrieverLevel : expectedDimensions.keySet()) { + if (retrieverLevel.getRetrievedDataType().equals(Test_HasLegOfCompetitorContext.class)) { + Collection> reducedLegDimensions = new HashSet<>(); + for (Function dimension : expectedDimensions.get(retrieverLevel)) { + if (!(dimension instanceof ConcatenatingCompoundFunction) || + !((ConcatenatingCompoundFunction) dimension).getSimpleFunctions().get(0).getReturnType().equals(Test_HasRaceContext.class)) { + reducedLegDimensions.add(dimension); + } + } + expectedDimensions.put(retrieverLevel, reducedLegDimensions); + break; + } + } + final Map, Iterable>> reducedDimensionsMappedByLevel = server.getReducedDimensionsMappedByLevelFor(retrieverChain); + assertThat(reducedDimensionsMappedByLevel, is(expectedDimensions)); + } + @SuppressWarnings("unchecked") public DataRetrieverChainDefinition, Test_HasLegOfCompetitorContext> createDataRetrieverChainDefinition() { DataRetrieverChainDefinition, Test_HasLegOfCompetitorContext> dataRetrieverChainDefinition = new SimpleDataRetrieverChainDefinition<>((Class>)(Class) Collection.class, Test_HasLegOfCompetitorContext.class, "TestRetrieverChain"); @@ -123,9 +144,7 @@ public class TestFunctionManagerAsFunctionProvider { @Test public void testGetAllFunctionsForType() { - Collection> expectedFunctions = functionRegistryUtil.getExpectedDimensionsFor(Test_HasRaceContext.class); - expectedFunctions.addAll(functionRegistryUtil.getExpectedDimensionsFor(Test_HasLegOfCompetitorContext.class)); - expectedFunctions.addAll(functionRegistryUtil.getExpectedStatisticsFor(Test_HasLegOfCompetitorContext.class)); + Collection> expectedFunctions = functionRegistryUtil.getExpectedFunctionsFor(Test_HasLegOfCompetitorContext.class); assertThat(server.getFunctionsFor(Test_HasLegOfCompetitorContext.class), is(expectedFunctions)); assertThat(server.getFunctionsFor(Test_HasLegOfCompetitorContextImpl.class), is(expectedFunctions)); } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/Test_HasLegOfCompetitorContext.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/Test_HasLegOfCompetitorContext.java index cb826766eb8..bbeb20aed65 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/Test_HasLegOfCompetitorContext.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/Test_HasLegOfCompetitorContext.java @@ -5,7 +5,10 @@ import com.sap.sse.datamining.shared.annotations.Dimension; import com.sap.sse.datamining.test.domain.Test_Competitor; import com.sap.sse.datamining.test.domain.Test_Leg; -public interface Test_HasLegOfCompetitorContext extends Test_HasRaceContext { +public interface Test_HasLegOfCompetitorContext { + + @Connector(scanForStatistics=false) + public Test_HasRaceContext getRaceContext(); @Connector public Test_Leg getLeg(); diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/Test_HasLegOfCompetitorContextImpl.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/Test_HasLegOfCompetitorContextImpl.java index 573667553ae..6e388df182b 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/Test_HasLegOfCompetitorContextImpl.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/Test_HasLegOfCompetitorContextImpl.java @@ -1,24 +1,26 @@ package com.sap.sse.datamining.test.data; -import com.sap.sse.datamining.test.domain.Test_BoatClass; import com.sap.sse.datamining.test.domain.Test_Competitor; import com.sap.sse.datamining.test.domain.Test_Leg; -import com.sap.sse.datamining.test.domain.Test_Race; -import com.sap.sse.datamining.test.domain.Test_Regatta; -public class Test_HasLegOfCompetitorContextImpl extends Test_HasRaceContextImpl implements Test_HasLegOfCompetitorContext { +public class Test_HasLegOfCompetitorContextImpl implements Test_HasLegOfCompetitorContext { + private Test_HasRaceContext raceContext; private Test_Leg leg; private int legNumber; private Test_Competitor competitor; - public Test_HasLegOfCompetitorContextImpl(Test_Regatta regatta, Test_Race race, Test_BoatClass boatClass, int year, - Test_Leg leg, int legNumber, Test_Competitor competitor) { - super(regatta, race, boatClass, year); + public Test_HasLegOfCompetitorContextImpl(Test_HasRaceContext raceContext, Test_Leg leg, int legNumber, Test_Competitor competitor) { + this.raceContext = raceContext; this.leg = leg; this.legNumber = legNumber; this.competitor = competitor; } + + @Override + public Test_HasRaceContext getRaceContext() { + return raceContext; + } @Override public Test_Leg getLeg() { diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/ExpectedFunctionRegistryUtil.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/ExpectedFunctionRegistryUtil.java index 43cca40fb0d..fa3f4156c75 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/ExpectedFunctionRegistryUtil.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/ExpectedFunctionRegistryUtil.java @@ -9,6 +9,7 @@ import java.util.HashSet; import java.util.Set; import com.sap.sse.datamining.functions.Function; +import com.sap.sse.datamining.impl.functions.MethodWrappingFunction; import com.sap.sse.datamining.test.data.Test_HasLegOfCompetitorContext; import com.sap.sse.datamining.test.data.Test_HasRaceContext; import com.sap.sse.datamining.test.data.impl.Test_ExternalLibraryClass; @@ -43,18 +44,29 @@ public class ExpectedFunctionRegistryUtil { Method getRegattaMethod = Test_HasRaceContext.class.getMethod("getRegatta", new Class[0]); Function getRegatta = FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(getRegattaMethod); - addExpectedDimension(FunctionTestsUtil.getFunctionFactory().createCompoundFunction(Arrays.asList(getRegatta, getName))); + Function raceContextGetRegattaName = FunctionTestsUtil.getFunctionFactory().createCompoundFunction(Arrays.asList(getRegatta, getName)); + addExpectedDimension(raceContextGetRegattaName); Method getRaceMethod = Test_HasRaceContext.class.getMethod("getRace", new Class[0]); Function getRace = FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(getRaceMethod); - addExpectedDimension(FunctionTestsUtil.getFunctionFactory().createCompoundFunction(Arrays.asList(getRace, getName))); + Function raceContextGetRaceName = FunctionTestsUtil.getFunctionFactory().createCompoundFunction(Arrays.asList(getRace, getName)); + addExpectedDimension(raceContextGetRaceName); Method getBoatClassMethod = Test_HasRaceContext.class.getMethod("getBoatClass", new Class[0]); Function getBoatClass = FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(getBoatClassMethod); - addExpectedDimension(FunctionTestsUtil.getFunctionFactory().createCompoundFunction( Arrays.asList(getBoatClass, getName))); + Function raceContextGetBoatClassName = FunctionTestsUtil.getFunctionFactory().createCompoundFunction( Arrays.asList(getBoatClass, getName)); + addExpectedDimension(raceContextGetBoatClassName); Method getYearMethod = Test_HasRaceContext.class.getMethod("getYear", new Class[0]); - addExpectedDimension(FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(getYearMethod)); + MethodWrappingFunction raceContextGetYear = FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(getYearMethod); + addExpectedDimension(raceContextGetYear); + + Method getRaceContextMethod = Test_HasLegOfCompetitorContext.class.getMethod("getRaceContext", new Class[0]); + Function getRaceContext = FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(getRaceContextMethod); + addExpectedDimension(FunctionTestsUtil.getFunctionFactory().createCompoundFunction(Arrays.asList(getRaceContext, raceContextGetRegattaName))); + addExpectedDimension(FunctionTestsUtil.getFunctionFactory().createCompoundFunction(Arrays.asList(getRaceContext, raceContextGetRaceName))); + addExpectedDimension(FunctionTestsUtil.getFunctionFactory().createCompoundFunction(Arrays.asList(getRaceContext, raceContextGetBoatClassName))); + addExpectedDimension(FunctionTestsUtil.getFunctionFactory().createCompoundFunction(Arrays.asList(getRaceContext, raceContextGetYear))); Method getLegNumberMethod = Test_HasLegOfCompetitorContext.class.getMethod("getLegNumber", new Class[0]); addExpectedDimension(FunctionTestsUtil.getFunctionFactory().createMethodWrappingFunction(getLegNumberMethod)); diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/TestLegOfCompetitorWithContextRetrievalProcessor.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/TestLegOfCompetitorWithContextRetrievalProcessor.java index 572c553eee6..5155f230876 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/TestLegOfCompetitorWithContextRetrievalProcessor.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/TestLegOfCompetitorWithContextRetrievalProcessor.java @@ -25,8 +25,7 @@ public class TestLegOfCompetitorWithContextRetrievalProcessor extends AbstractRe for (Test_Leg leg : raceWithContext.getRace().getLegs()) { legNumber++; for (Test_Competitor competitor : raceWithContext.getRace().getCompetitors()) { - legsWithContext.add(new Test_HasLegOfCompetitorContextImpl(raceWithContext.getRegatta(), raceWithContext.getRace(), raceWithContext.getBoatClass(), - raceWithContext.getYear(), leg, legNumber, competitor)); + legsWithContext.add(new Test_HasLegOfCompetitorContextImpl(raceWithContext, leg, legNumber, competitor)); } } return legsWithContext; diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/FunctionFactory.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/FunctionFactory.java index dd1877eb99e..b1f6def0b74 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/FunctionFactory.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/factories/FunctionFactory.java @@ -28,11 +28,11 @@ public class FunctionFactory { * @throws ClassCastException */ @SuppressWarnings("unchecked") - public Function createCompoundFunction(List> functions) throws ClassCastException { - return new ConcatenatingCompoundFunction(functions, (Class) functions.get(functions.size() - 1).getReturnType()); + public Function createCompoundFunction(List> functions) throws ClassCastException { + return new ConcatenatingCompoundFunction(new ArrayList<>(functions), (Class) functions.get(functions.size() - 1).getReturnType()); } - public Function createCompoundFunction(List> previousFunctions, Function lastFunction) { + public Function createCompoundFunction(List> previousFunctions, Function lastFunction) { List> functions = new ArrayList<>(previousFunctions); functions.add(lastFunction); return createCompoundFunction(functions); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java index 3e95bf96dc6..736609bb84e 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java @@ -3,8 +3,6 @@ package com.sap.sse.datamining.functions; import java.lang.reflect.InvocationTargetException; import java.util.Locale; -import com.sap.sse.datamining.shared.annotations.Connector; -import com.sap.sse.datamining.shared.annotations.Dimension; import com.sap.sse.datamining.shared.data.Unit; import com.sap.sse.i18n.ResourceBundleStringMessages; @@ -13,16 +11,6 @@ public interface Function { public Class getDeclaringType(); public Iterable> getParameters(); public Class getReturnType(); - - /** - * Checks if this function and the given function would return the same result or if they are {@link #equals(Object)}. - * This can be the case, if the only difference between the two functions is a {@link Connector} to a Data Type - * to inherit its {@link Dimension Dimensions}. - * - * @param function The function to compare. - * @return true, if this function and the given function would return the same result. - */ - public boolean isLogicalEqualTo(Function function); public boolean isDimension(); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java index cf152617315..ca0125db764 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java @@ -157,6 +157,25 @@ public class ConcatenatingCompoundFunction extends AbstractFunction< return functions; } + /** + * @return The list of functions as simple functions (like {@link MethodWrappingFunction}). + */ + public List> getSimpleFunctions() { + List> simpleFunctions = new ArrayList<>(); + for (Function function : functions) { + if (function.getClass().equals(MethodWrappingFunction.class)) { + simpleFunctions.add((MethodWrappingFunction) function); + continue; + } + if (function.getClass().equals(ConcatenatingCompoundFunction.class)) { + simpleFunctions.addAll(((ConcatenatingCompoundFunction) function).getSimpleFunctions()); + continue; + } + throw new IllegalArgumentException("Can't simplify functions of type " + function.getClass().getSimpleName()); + } + return simpleFunctions; + } + private Function getFirstFunction() { return functions.get(0); } @@ -169,35 +188,12 @@ public class ConcatenatingCompoundFunction extends AbstractFunction< public String toString() { return getSimpleName(); } - - @Override - public boolean isLogicalEqualTo(Function function) { - if (function.getClass().equals(MethodWrappingFunction.class)) { - MethodWrappingFunction methodWrappingFunction = (MethodWrappingFunction) function; - if (getFunctions().size() == 1) { - return isLogicalEqualTo(methodWrappingFunction); - } else if (getFunctions().size() == 2) { - return getFunctions().get(1).getClass().equals(MethodWrappingFunction.class) && - equals(methodWrappingFunction); - } else { - return false; - } - } - if (function.getClass().equals(ConcatenatingCompoundFunction.class)) { - ConcatenatingCompoundFunction concatenatingCompoundFunction = (ConcatenatingCompoundFunction) function; - return getParameters().equals(function.getParameters()) && - (getFunctions().equals(concatenatingCompoundFunction.getFunctions().subList(1, concatenatingCompoundFunction.getFunctions().size())) || - getFunctions().subList(1, getFunctions().size()).equals(concatenatingCompoundFunction.getFunctions())); - } - throw new IllegalArgumentException("Can't compare " + MethodWrappingFunction.class.getSimpleName() + - " with " + function.getClass().getSimpleName()); - } @Override public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((functions == null) ? 0 : functions.hashCode()); + result = prime * result + ((functions == null) ? 0 : getSimpleFunctions().hashCode()); return result; } @@ -213,7 +209,7 @@ public class ConcatenatingCompoundFunction extends AbstractFunction< if (functions == null) { if (other.functions != null) return false; - } else if (!functions.equals(other.functions)) + } else if (!getSimpleFunctions().equals(other.getSimpleFunctions())) return false; return true; } diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/FunctionManager.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/FunctionManager.java index 88300fa970f..e2f70f3fee3 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/FunctionManager.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/FunctionManager.java @@ -3,7 +3,6 @@ package com.sap.sse.datamining.impl.functions; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -252,32 +251,39 @@ public class FunctionManager implements FunctionRegistry, FunctionProvider { Map, Iterable>> dimensionsMappedByLevel = getDimensionsMappedByLevelFor(dataRetrieverChainDefinition); Map, Iterable>> reducedDimensions = new HashMap<>(); List> retrieverLevels = dataRetrieverChainDefinition.getDataRetrieverLevels(); - for (Entry, Iterable>> entry : dimensionsMappedByLevel.entrySet()) { - DataRetrieverLevel retrieverLevel = entry.getKey(); - Iterable> dimensions = entry.getValue(); - Iterable> previousDimensions = retrieverLevel.getLevel() > 0 ? - dimensionsMappedByLevel.get(retrieverLevels.get(retrieverLevel.getLevel() - 1)) : - Collections.emptySet(); - if (reducedDimensions.isEmpty() || Util.isEmpty(previousDimensions)) { + for (DataRetrieverLevel retrieverLevel : retrieverLevels) { + Iterable> dimensions = dimensionsMappedByLevel.get(retrieverLevel); + DataRetrieverLevel previousRetrieverLevel = retrieverLevel.getLevel() > 0 ? retrieverLevels.get(retrieverLevel.getLevel() - 1) : null; + if (reducedDimensions.isEmpty() || previousRetrieverLevel == null) { reducedDimensions.put(retrieverLevel, dimensions); } else { - reducedDimensions.put(retrieverLevel, reduce(dimensions, previousDimensions)); + reducedDimensions.put(retrieverLevel, reduce(dimensions, previousRetrieverLevel, dimensionsMappedByLevel.get(previousRetrieverLevel))); } } return reducedDimensions; } - private Iterable> reduce(Iterable> dimensionsToReduce, Iterable> byDimensions) { + private Iterable> reduce(Iterable> dimensionsToReduce, DataRetrieverLevel previousRetrieverLevel, Iterable> previousDimensions) { + if (Util.isEmpty(previousDimensions)) { + return dimensionsToReduce; + } + Collection> reducedDimensions = new HashSet<>(); for (Function dimension : dimensionsToReduce) { - boolean isDimensionAllowed = true; - for (Function forbiddenDimension : byDimensions) { - if (dimension.isLogicalEqualTo(forbiddenDimension)) { - isDimensionAllowed = false; - break; + boolean isAllowed = true; + if (ConcatenatingCompoundFunction.class.isAssignableFrom(dimension.getClass())) { + ConcatenatingCompoundFunction compoundDimension = (ConcatenatingCompoundFunction) dimension; + List> simpleFunctions = compoundDimension.getSimpleFunctions(); + if (previousRetrieverLevel.getRetrievedDataType().isAssignableFrom(simpleFunctions.get(0).getReturnType())) { + List> subList = simpleFunctions.subList(1, compoundDimension.getSimpleFunctions().size()); + Function subFunction = subList.size() == 1 ? subList.get(0) + : functionFactory.createCompoundFunction(subList); + if (Util.contains(previousDimensions, subFunction)) { + isAllowed = false; + } } } - if (isDimensionAllowed) { + if (isAllowed) { reducedDimensions.add(dimension); } } diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java index 25bcbbeb2be..992a44312df 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java @@ -3,11 +3,9 @@ package com.sap.sse.datamining.impl.functions; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; -import java.util.List; import java.util.Locale; import java.util.logging.Level; -import com.sap.sse.datamining.functions.Function; import com.sap.sse.datamining.functions.ParameterProvider; import com.sap.sse.datamining.shared.annotations.Connector; import com.sap.sse.datamining.shared.annotations.Dimension; @@ -166,27 +164,6 @@ public class MethodWrappingFunction extends AbstractFunction function) { - if (function.getClass().equals(MethodWrappingFunction.class)) { - return equals(function); - } - if (function.getClass().equals(ConcatenatingCompoundFunction.class)) { - ConcatenatingCompoundFunction concatenatingCompoundFunction = (ConcatenatingCompoundFunction) function; - List> functions = concatenatingCompoundFunction.getFunctions(); - if (functions.size() == 1) { - return isLogicalEqualTo(functions.get(0)); - } else if (functions.size() == 2) { - return functions.get(1).getClass().equals(MethodWrappingFunction.class) && - equals(functions.get(1)); - } else { - return false; - } - } - throw new IllegalArgumentException("Can't compare " + MethodWrappingFunction.class.getSimpleName() + - " with " + function.getClass().getSimpleName()); - } @Override public int hashCode() { From 13be8dbf0c7c94609a1b5dfdf95c1bf6ca2132ea Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 8 Sep 2015 13:43:05 +0200 Subject: [PATCH 162/504] Refactoring - Moved desktop RegattaCompetition partials to respective package --- .../client/place/event/regatta/tabs/RegattaRacesTabView.java | 2 +- .../partials/regattacompetition}/RegattaCompetition.gss | 0 .../regattacompetition}/RegattaCompetitionFleet.java | 2 +- .../regattacompetition}/RegattaCompetitionFleet.ui.xml | 5 +++-- .../regattacompetition}/RegattaCompetitionFleetRace.java | 2 +- .../regattacompetition}/RegattaCompetitionFleetRace.ui.xml | 5 +++-- .../regattacompetition}/RegattaCompetitionResources.java | 2 +- .../regattacompetition}/RegattaCompetitionSeries.java | 2 +- .../regattacompetition}/RegattaCompetitionSeries.ui.xml | 5 +++-- 9 files changed, 14 insertions(+), 11 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/raceCompetition => desktop/partials/regattacompetition}/RegattaCompetition.gss (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/raceCompetition => desktop/partials/regattacompetition}/RegattaCompetitionFleet.java (95%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/raceCompetition => desktop/partials/regattacompetition}/RegattaCompetitionFleet.ui.xml (72%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/raceCompetition => desktop/partials/regattacompetition}/RegattaCompetitionFleetRace.java (96%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/raceCompetition => desktop/partials/regattacompetition}/RegattaCompetitionFleetRace.ui.xml (66%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/raceCompetition => desktop/partials/regattacompetition}/RegattaCompetitionResources.java (93%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/raceCompetition => desktop/partials/regattacompetition}/RegattaCompetitionSeries.java (97%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/raceCompetition => desktop/partials/regattacompetition}/RegattaCompetitionSeries.ui.xml (72%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index 46b0cc497f2..ff5c2845bee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -23,7 +23,6 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.partials.raceCompetition.RegattaCompetitionSeries; import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLive; import com.sap.sailing.gwt.home.client.place.event.partials.racelist.AbstractRaceList; import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListColumnFactory; @@ -39,6 +38,7 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshMa import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListItem; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListStepsLegend; +import com.sap.sailing.gwt.home.desktop.partials.regattacompetition.RegattaCompetitionSeries; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.ListNavigationAction; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.SelectionCallback; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetition.gss rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java similarity index 95% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java index 833dc76329c..f870d17123e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.raceCompetition; +package com.sap.sailing.gwt.home.desktop.partials.regattacompetition; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.ui.xml similarity index 72% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.ui.xml index 2b07b75d6be..f49b75ad705 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleet.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.ui.xml @@ -1,8 +1,9 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" + xmlns:dp="urn:import:com.sap.sailing.gwt.home.desktop.partials"> - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java index 7c59c882001..0dc2184b43d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.raceCompetition; +package com.sap.sailing.gwt.home.desktop.partials.regattacompetition; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.AnchorElement; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml similarity index 66% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml index 081f37ebbec..4d56a7d82be 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionFleetRace.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml @@ -1,8 +1,9 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" + xmlns:dp="urn:import:com.sap.sailing.gwt.home.desktop.partials"> - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionResources.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionResources.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionResources.java index 467fb3802e2..e9ee8427ca9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionResources.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.raceCompetition; +package com.sap.sailing.gwt.home.desktop.partials.regattacompetition; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.java index 5c11604c2ea..328cab6d293 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.raceCompetition; +package com.sap.sailing.gwt.home.desktop.partials.regattacompetition; import static com.sap.sailing.domain.common.LeaderboardNameConstants.DEFAULT_SERIES_NAME; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.ui.xml similarity index 72% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.ui.xml index dcc326803c6..3495f690fea 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceCompetition/RegattaCompetitionSeries.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.ui.xml @@ -1,8 +1,9 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" + xmlns:dp="urn:import:com.sap.sailing.gwt.home.desktop.partials"> - +
    From 2797bd9d5f25a8c5c260d53c952bc579a4fbb74a Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 8 Sep 2015 14:06:44 +0200 Subject: [PATCH 163/504] Refactoring - Moved desktop RaceList styles partials to respective package --- .../event/partials/racelist/AbstractRaceList.java | 6 +++--- .../partials/racelist/RaceListColumnFactory.java | 6 +++--- .../partials/racelist/RaceListContainer.java | 4 ++-- .../partials/racelist/RaceListContainer.ui.xml | 15 ++++++++------- .../partials/racelist/SortableRaceListColumn.java | 4 ++-- .../partials/racelist/RaceList.gss} | 0 .../partials/racelist/RaceListResources.java} | 8 ++++---- 7 files changed, 22 insertions(+), 21 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/raceListLive/RacesListLive.gss => desktop/partials/racelist/RaceList.gss} (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/raceListLive/RacesListLiveResources.java => desktop/partials/racelist/RaceListResources.java} (85%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/AbstractRaceList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/AbstractRaceList.java index 1e22538b0bf..d6a8c27f73c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/AbstractRaceList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/AbstractRaceList.java @@ -14,9 +14,9 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.SimplePanel; import com.sap.sailing.domain.common.InvertibleComparator; import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLiveResources; -import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLiveResources.LocalCss; import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListColumnFactory.SortableRaceListStartTimeColumn; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources.LocalCss; import com.sap.sailing.gwt.ui.leaderboard.SortedCellTable; import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.wind.AbstractWindDTO; @@ -25,7 +25,7 @@ import com.sap.sse.gwt.theme.client.component.celltable.StyledHeaderOrFooterBuil public abstract class AbstractRaceList> extends Composite { - private static final LocalCss CSS = RacesListLiveResources.INSTANCE.css(); + private static final LocalCss CSS = RaceListResources.INSTANCE.css(); private final SimplePanel cellTableContainer = new SimplePanel(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java index 6767e6eb6c4..5b90d8e73bc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java @@ -29,8 +29,8 @@ import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.common.client.SharedResources.MainCss; import com.sap.sailing.gwt.common.client.i18n.TextMessages; import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLiveResources; -import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLiveResources.LocalCss; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources.LocalCss; import com.sap.sailing.gwt.regattaoverview.client.FlagsMeaningExplanator; import com.sap.sailing.gwt.regattaoverview.client.SailingFlagsBuilder; import com.sap.sailing.gwt.ui.client.FlagImageResolver; @@ -55,7 +55,7 @@ import com.sap.sse.common.impl.MillisecondsTimePoint; public class RaceListColumnFactory { - private static final LocalCss CSS = RacesListLiveResources.INSTANCE.css(); + private static final LocalCss CSS = RaceListResources.INSTANCE.css(); private static final MainCss MAIN_CSS = SharedResources.INSTANCE.mainCss(); private static final StringMessages I18N = StringMessages.INSTANCE; private static final TextMessages I18N_UBI = TextMessages.INSTANCE; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.java index a9dd1e35a51..8af33f74b36 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.java @@ -11,8 +11,8 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLiveResources; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources; import com.sap.sailing.gwt.ui.shared.dispatch.CollectionResult; import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO; @@ -35,7 +35,7 @@ public class RaceListContainer> extends Composite i public RaceListContainer(String title, String noContentPlaceholderText, AbstractRaceList raceList) { this.noContentPlaceholderText = noContentPlaceholderText; - RacesListLiveResources.INSTANCE.css().ensureInjected(); + RaceListResources.INSTANCE.css().ensureInjected(); this.raceListUi = raceList; initWidget(uiBinder.createAndBindUi(this)); this.titleUi.setInnerText(title); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.ui.xml index d2319f51abe..3f14a07392d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.ui.xml @@ -1,14 +1,15 @@ + xmlns:r="urn:import:com.sap.sailing.gwt.home.client.place.event.partials.racelist" + xmlns:dp="urn:import:com.sap.sailing.gwt.home.desktop.partials"> - + -

    -
    -
    - -
    +

    +
    +
    + +
    \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/SortableRaceListColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/SortableRaceListColumn.java index bd7b5fde625..462ea0917df 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/SortableRaceListColumn.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/SortableRaceListColumn.java @@ -7,7 +7,7 @@ import com.google.gwt.user.cellview.client.SafeHtmlHeader; import com.sap.sailing.domain.common.InvertibleComparator; import com.sap.sailing.domain.common.SortingOrder; import com.sap.sailing.gwt.common.client.SharedResources; -import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLiveResources; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources; import com.sap.sailing.gwt.ui.client.shared.controls.SortableColumn; import com.sap.sse.common.Util; @@ -91,7 +91,7 @@ public abstract class SortableRaceListColumn extends SortableColumn private String getCurrentStyle(String baseStyle) { return getStyleNamesString(baseStyle, isShowDetails() ? columnVisibility.getAdditionalStyle() - : RacesListLiveResources.INSTANCE.css().racesListHideColumn()); + : RaceListResources.INSTANCE.css().racesListHideColumn()); } private static class WrappedTextHeader extends SafeHtmlHeader { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceListLive/RacesListLive.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceList.gss similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceListLive/RacesListLive.gss rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceList.gss diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceListLive/RacesListLiveResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListResources.java similarity index 85% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceListLive/RacesListLiveResources.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListResources.java index 82ccd503eff..2570e15c311 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceListLive/RacesListLiveResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListResources.java @@ -1,13 +1,13 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.raceListLive; +package com.sap.sailing.gwt.home.desktop.partials.racelist; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.CssResource; -public interface RacesListLiveResources extends ClientBundle { - public static final RacesListLiveResources INSTANCE = GWT.create(RacesListLiveResources.class); +public interface RaceListResources extends ClientBundle { + public static final RaceListResources INSTANCE = GWT.create(RaceListResources.class); - @Source("RacesListLive.gss") + @Source("RaceList.gss") LocalCss css(); public interface LocalCss extends CssResource { From 42f53774480deb83d430c652a37da3e451da92d7 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 8 Sep 2015 14:36:08 +0200 Subject: [PATCH 164/504] Refactoring - Moved desktop AbstractRaceList partials to respective package --- .../event/partials/raceListLive/RacesListLive.java | 12 ++++++------ .../event/regatta/tabs/RegattaRacesTabView.java | 12 ++++++------ .../event/regatta/tabs/RegattaRacesTabView.ui.xml | 2 +- .../partials/racelist/AbstractRaceList.java | 5 ++--- .../racelist/InvertibleComparatorWrapper.java | 2 +- .../partials/racelist/RaceListColumnFactory.java | 3 +-- .../partials/racelist/RaceListColumnSet.java | 10 +++++----- .../partials/racelist/RaceListContainer.java | 3 +-- .../partials/racelist/RaceListContainer.ui.xml | 3 +-- .../partials/racelist/RaceListDataUtil.java | 2 +- .../partials/racelist/SortableRaceListColumn.java | 3 +-- 11 files changed, 26 insertions(+), 31 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event => desktop}/partials/racelist/AbstractRaceList.java (96%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event => desktop}/partials/racelist/InvertibleComparatorWrapper.java (89%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event => desktop}/partials/racelist/RaceListColumnFactory.java (99%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event => desktop}/partials/racelist/RaceListColumnSet.java (66%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event => desktop}/partials/racelist/RaceListContainer.java (94%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event => desktop}/partials/racelist/RaceListContainer.ui.xml (86%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event => desktop}/partials/racelist/RaceListDataUtil.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event => desktop}/partials/racelist/SortableRaceListColumn.java (96%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceListLive/RacesListLive.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceListLive/RacesListLive.java index 928934f777f..7d6107a3d3e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceListLive/RacesListLive.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/raceListLive/RacesListLive.java @@ -5,13 +5,13 @@ import java.util.Collection; import com.google.gwt.dom.client.Style.Display; import com.google.gwt.user.client.ui.Composite; import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.AbstractRaceList; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListColumnFactory; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListColumnSet; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListContainer; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListDataUtil; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.SortableRaceListColumn; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.desktop.partials.racelist.AbstractRaceList; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListColumnFactory; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListColumnSet; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListContainer; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListDataUtil; +import com.sap.sailing.gwt.home.desktop.partials.racelist.SortableRaceListColumn; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.CollectionResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRaceDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index ff5c2845bee..8c92a3f665b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -24,12 +24,6 @@ import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLive; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.AbstractRaceList; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListColumnFactory; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListColumnSet; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListContainer; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListDataUtil; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.SortableRaceListColumn; import com.sap.sailing.gwt.home.client.place.event.partials.regattaraces.EventRegattaRaces; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; @@ -38,6 +32,12 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshMa import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListItem; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListStepsLegend; +import com.sap.sailing.gwt.home.desktop.partials.racelist.AbstractRaceList; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListColumnFactory; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListColumnSet; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListContainer; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListDataUtil; +import com.sap.sailing.gwt.home.desktop.partials.racelist.SortableRaceListColumn; import com.sap.sailing.gwt.home.desktop.partials.regattacompetition.RegattaCompetitionSeries; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.ListNavigationAction; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml index 4e5fa9fe1b8..c549dbc471f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml @@ -40,7 +40,7 @@
    - +
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/AbstractRaceList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/AbstractRaceList.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/AbstractRaceList.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/AbstractRaceList.java index d6a8c27f73c..9622d04470d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/AbstractRaceList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/AbstractRaceList.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.racelist; +package com.sap.sailing.gwt.home.desktop.partials.racelist; import java.util.ArrayList; import java.util.Collection; @@ -14,8 +14,7 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.SimplePanel; import com.sap.sailing.domain.common.InvertibleComparator; import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListColumnFactory.SortableRaceListStartTimeColumn; -import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources; +import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListColumnFactory.SortableRaceListStartTimeColumn; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources.LocalCss; import com.sap.sailing.gwt.ui.leaderboard.SortedCellTable; import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/InvertibleComparatorWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/InvertibleComparatorWrapper.java similarity index 89% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/InvertibleComparatorWrapper.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/InvertibleComparatorWrapper.java index 1f4606c54fa..492509c6a3f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/InvertibleComparatorWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/InvertibleComparatorWrapper.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.racelist; +package com.sap.sailing.gwt.home.desktop.partials.racelist; import java.util.Comparator; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListColumnFactory.java similarity index 99% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListColumnFactory.java index 5b90d8e73bc..f4fd7640757 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListColumnFactory.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.racelist; +package com.sap.sailing.gwt.home.desktop.partials.racelist; import static com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingState.TRACKED_VALID_DATA; @@ -29,7 +29,6 @@ import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.common.client.SharedResources.MainCss; import com.sap.sailing.gwt.common.client.i18n.TextMessages; import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources.LocalCss; import com.sap.sailing.gwt.regattaoverview.client.FlagsMeaningExplanator; import com.sap.sailing.gwt.regattaoverview.client.SailingFlagsBuilder; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnSet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListColumnSet.java similarity index 66% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnSet.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListColumnSet.java index dd6d1091120..dca3e69b907 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnSet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListColumnSet.java @@ -1,13 +1,13 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.racelist; +package com.sap.sailing.gwt.home.desktop.partials.racelist; -import static com.sap.sailing.gwt.home.client.place.event.partials.racelist.SortableRaceListColumn.ColumnVisibility.ALWAYS; -import static com.sap.sailing.gwt.home.client.place.event.partials.racelist.SortableRaceListColumn.ColumnVisibility.LARGE; -import static com.sap.sailing.gwt.home.client.place.event.partials.racelist.SortableRaceListColumn.ColumnVisibility.MEDIUM; +import static com.sap.sailing.gwt.home.desktop.partials.racelist.SortableRaceListColumn.ColumnVisibility.ALWAYS; +import static com.sap.sailing.gwt.home.desktop.partials.racelist.SortableRaceListColumn.ColumnVisibility.LARGE; +import static com.sap.sailing.gwt.home.desktop.partials.racelist.SortableRaceListColumn.ColumnVisibility.MEDIUM; import java.util.LinkedHashSet; import java.util.Set; -import com.sap.sailing.gwt.home.client.place.event.partials.racelist.SortableRaceListColumn.ColumnVisibility; +import com.sap.sailing.gwt.home.desktop.partials.racelist.SortableRaceListColumn.ColumnVisibility; public class RaceListColumnSet { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.java similarity index 94% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.java index 8af33f74b36..5bd11b42645 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.racelist; +package com.sap.sailing.gwt.home.desktop.partials.racelist; import java.util.Collection; @@ -12,7 +12,6 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; -import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources; import com.sap.sailing.gwt.ui.shared.dispatch.CollectionResult; import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.ui.xml similarity index 86% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.ui.xml index 3f14a07392d..1a0f640c7dc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListContainer.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.ui.xml @@ -1,7 +1,6 @@ @@ -10,6 +9,6 @@

    - +
    \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListDataUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListDataUtil.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListDataUtil.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListDataUtil.java index 15ec8411943..b0c34824ce9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListDataUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListDataUtil.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.racelist; +package com.sap.sailing.gwt.home.desktop.partials.racelist; import java.util.Collection; import java.util.Date; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/SortableRaceListColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/SortableRaceListColumn.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/SortableRaceListColumn.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/SortableRaceListColumn.java index 462ea0917df..891e84ddb15 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/SortableRaceListColumn.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/SortableRaceListColumn.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.racelist; +package com.sap.sailing.gwt.home.desktop.partials.racelist; import com.google.gwt.cell.client.Cell; import com.google.gwt.safehtml.shared.SafeHtmlUtils; @@ -7,7 +7,6 @@ import com.google.gwt.user.cellview.client.SafeHtmlHeader; import com.sap.sailing.domain.common.InvertibleComparator; import com.sap.sailing.domain.common.SortingOrder; import com.sap.sailing.gwt.common.client.SharedResources; -import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources; import com.sap.sailing.gwt.ui.client.shared.controls.SortableColumn; import com.sap.sse.common.Util; From 973d4f38b2207673e17f0123fdec170385d29f19 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 8 Sep 2015 14:48:49 +0200 Subject: [PATCH 165/504] Refactoring - Moved desktop LiveRacesList partials to respective package --- .../tabs/MultiregattaOverviewTabView.java | 14 +++++++------- .../tabs/MultiregattaOverviewTabView.ui.xml | 5 ++--- .../tabs/MultiregattaRegattasTabView.java | 8 ++++---- .../tabs/MultiregattaRegattasTabView.ui.xml | 3 +-- .../regatta/tabs/RegattaOverviewTabView.java | 15 +++++++-------- .../regatta/tabs/RegattaOverviewTabView.ui.xml | 13 +++++-------- .../event/regatta/tabs/RegattaRacesTabView.java | 6 +++--- .../event/regatta/tabs/RegattaRacesTabView.ui.xml | 3 +-- .../partials/liveraces/LiveRacesList.java} | 6 +++--- 9 files changed, 33 insertions(+), 40 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/partials/raceListLive/RacesListLive.java => desktop/partials/liveraces/LiveRacesList.java} (95%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java index 867f4bf3677..bd7c84ca5a3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java @@ -24,9 +24,9 @@ import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregatt import com.sap.sailing.gwt.home.client.place.event.multiregatta.MultiregattaTabView; import com.sap.sailing.gwt.home.client.place.event.overview.EventOverviewStage; import com.sap.sailing.gwt.home.client.place.event.partials.eventregatta.EventRegattaList; -import com.sap.sailing.gwt.home.client.place.event.partials.raceListLive.RacesListLive; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListStepsLegend; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter; @@ -57,8 +57,8 @@ public class MultiregattaOverviewTabView extends Composite implements Multiregat private static MyBinder ourUiBinder = GWT.create(MyBinder.class); @UiField SimplePanel content; - @UiField(provided = true) EventOverviewStage stage; - @UiField(provided = true) RacesListLive racesListLive; + @UiField(provided = true) EventOverviewStage stageUi; + @UiField(provided = true) LiveRacesList liveRacesListUi; @UiField DivElement newContentContainerUi; @UiField DivElement legendAndFilterUi; @UiField(provided = true) DropdownFilter boatCategoryFilterUi; @@ -85,8 +85,8 @@ public class MultiregattaOverviewTabView extends Composite implements Multiregat @Override public void start(MultiregattaOverviewPlace myPlace, AcceptsOneWidget contentArea) { - stage = new EventOverviewStage(currentPresenter); - racesListLive = new RacesListLive(currentPresenter, true); + stageUi = new EventOverviewStage(currentPresenter); + liveRacesListUi = new LiveRacesList(currentPresenter, true); MultiregattaOverviewRegattasTabViewRegattaFilterList regattaFilterList = new MultiregattaOverviewRegattasTabViewRegattaFilterList(); boatCategoryFilterUi = new DropdownFilter(StringMessages.INSTANCE.allBoatClasses(), regattaFilterList); regattaListUi = new MultiRegattaList(currentPresenter, false); @@ -95,8 +95,8 @@ public class MultiregattaOverviewTabView extends Composite implements Multiregat regattaOverviewLinkUi.setHref(currentPresenter.getRegattaOverviewLink()); regattaOverviewLinkUi.addClassName(currentPresenter.isEventOrRegattaLive() ? MAIN_CSS.buttonred() : MAIN_CSS.buttonprimary()); RefreshManager refreshManager = new RefreshManager(this, currentPresenter.getDispatch()); - stage.setupRefresh(refreshManager); - refreshManager.add(racesListLive.getRefreshable(), new GetLiveRacesForEventAction(currentPresenter.getCtx().getEventDTO().getId())); + stageUi.setupRefresh(refreshManager); + refreshManager.add(liveRacesListUi.getRefreshable(), new GetLiveRacesForEventAction(currentPresenter.getCtx().getEventDTO().getId())); if (ExperimentalFeatures.SHOW_NEW_REGATTA_LIST) { refreshManager.add(regattaFilterList, new GetRegattaListViewAction(currentPresenter.getCtx().getEventDTO().getId())); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml index bca0380c3e8..5d8938ff543 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml @@ -1,5 +1,4 @@ @@ -15,10 +14,10 @@ } - +
    - +
" + value.getDisplayName() + "
" + value.getRetrievedDataType().getDisplayName() + "
|
- - - - -
-
- -
-
-
- -
-
-
- -
- - - - - - diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcomingEvent.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcomingEvent.ui.xml deleted file mode 100644 index b70d82b55d4..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcomingEvent.ui.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - -
-
- , - -
-
starts in days
- - - diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcoming.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcoming.gss similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcoming.gss rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcoming.gss diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcoming.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcoming.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcoming.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcoming.java index 3d22706aca3..46ce5f5087b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcoming.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcoming.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.events.upcoming; +package com.sap.sailing.gwt.home.desktop.partials.eventsupcoming; import java.util.ArrayList; import java.util.List; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcoming.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcoming.ui.xml new file mode 100644 index 00000000000..8bcbcd52241 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcoming.ui.xml @@ -0,0 +1,47 @@ + + + + + + + + + +
+
+ + + +

+ + : +

+ + +
+ +
+ + + + + +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + +
+
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcomingEvent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcomingEvent.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.java index b15479a6544..f2729b26a98 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcomingEvent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.events.upcoming; +package com.sap.sailing.gwt.home.desktop.partials.eventsupcoming; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.ui.xml new file mode 100644 index 00000000000..a584e23138c --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.ui.xml @@ -0,0 +1,16 @@ + + + + + + + +
+
+ , + +
+
starts in days
+ + + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcomingResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingResources.java similarity index 90% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcomingResources.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingResources.java index 824c4b236e0..26e871d5cee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcomingResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingResources.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.events.upcoming; +package com.sap.sailing.gwt.home.desktop.partials.eventsupcoming; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; @@ -7,7 +7,7 @@ import com.google.gwt.resources.client.CssResource; public interface EventsOverviewUpcomingResources extends ClientBundle { public static final EventsOverviewUpcomingResources INSTANCE = GWT.create(EventsOverviewUpcomingResources.class); - @Source("com/sap/sailing/gwt/home/client/place/events/upcoming/EventsOverviewUpcoming.gss") + @Source("EventsOverviewUpcoming.gss") LocalCss css(); public interface LocalCss extends CssResource { From ee1cae0e5203ac2b173ae9d374671de9c5bf85eb Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 14 Sep 2015 15:14:15 +0200 Subject: [PATCH 215/504] Refactoring - Moved desktop EventsOverviewRecent partials to respective package --- .../events/TabletAndDesktopEventsView.java | 2 +- .../events/TabletAndDesktopEventsView.ui.xml | 45 +++++++++---------- .../events/recent/EventsOverviewRecent.ui.xml | 10 ----- .../fakeseries/tabs/SeriesEventsTabView.java | 2 +- .../tabs/SeriesEventsTabView.ui.xml | 23 +++++----- .../eventsrecent}/EventsOverviewRecent.gss | 0 .../eventsrecent}/EventsOverviewRecent.java | 2 +- .../eventsrecent/EventsOverviewRecent.ui.xml | 7 +++ .../EventsOverviewRecentResources.java | 4 +- .../EventsOverviewRecentYear.java | 2 +- .../EventsOverviewRecentYear.ui.xml | 11 ++--- .../eventsrecent}/RecentEventTeaser.java | 2 +- .../eventsrecent}/RecentEventTeaser.ui.xml | 2 +- .../partials/mainevents/MainEvents.java | 2 +- 14 files changed, 53 insertions(+), 61 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecent.ui.xml rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/events/recent => desktop/partials/eventsrecent}/EventsOverviewRecent.gss (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/events/recent => desktop/partials/eventsrecent}/EventsOverviewRecent.java (95%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecent.ui.xml rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/events/recent => desktop/partials/eventsrecent}/EventsOverviewRecentResources.java (89%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/events/recent => desktop/partials/eventsrecent}/EventsOverviewRecentYear.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/events/recent => desktop/partials/eventsrecent}/EventsOverviewRecentYear.ui.xml (87%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/events/recent => desktop/partials/eventsrecent}/RecentEventTeaser.java (95%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/events/recent => desktop/partials/eventsrecent}/RecentEventTeaser.ui.xml (84%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.java index 0fa96ccf4d1..f1c920c9126 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.java @@ -5,9 +5,9 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.controls.tabbar.BreadcrumbPane; -import com.sap.sailing.gwt.home.client.place.events.recent.EventsOverviewRecent; import com.sap.sailing.gwt.home.client.place.start.StartPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.partials.eventsrecent.EventsOverviewRecent; import com.sap.sailing.gwt.home.desktop.partials.eventsupcoming.EventsOverviewUpcoming; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.client.StringMessages; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.ui.xml index 41c9aeec773..f8affc2b4a2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.ui.xml @@ -1,26 +1,25 @@ - - - - .events-overview-navigation { - font-size: 1rem; - } - .breadcrumb { - font-size: 1rem; - /* @alternate */ font-size: 0.866666666666667em; - font-weight: 600; - padding: 0.666666666666667em 0; - } - - -
- - - -
-
+ xmlns:c="urn:import:com.sap.sailing.gwt.common.client.controls.tabbar" + xmlns:dp="urn:import:com.sap.sailing.gwt.home.desktop.partials"> + + + + .events-overview-navigation { + font-size: 1rem; + } + .breadcrumb { + font-size: 1rem; + /* @alternate */ font-size: 0.866666666666667em; + font-weight: 600; + padding: 0.666666666666667em 0; + } + + +
+ + + +
+
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecent.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecent.ui.xml deleted file mode 100644 index 52cff6db9ff..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecent.ui.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.java index 2862fd6cdd9..d87f0db3bea 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.java @@ -9,9 +9,9 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; -import com.sap.sailing.gwt.home.client.place.events.recent.RecentEventTeaser; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesTabView; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView; +import com.sap.sailing.gwt.home.desktop.partials.eventsrecent.RecentEventTeaser; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.EventState; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.ui.xml index 318fb58ea5e..c058e6e80d2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.ui.xml @@ -1,13 +1,12 @@ - - - - - .container { - padding-top: 3em; - padding-bottom: 3em; - } - - - + + + + + .container { + padding-top: 3em; + padding-bottom: 3em; + } + + + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecent.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecent.gss similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecent.gss rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecent.gss diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecent.java similarity index 95% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecent.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecent.java index f7abda7d92b..924c8bdf0c1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecent.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.events.recent; +package com.sap.sailing.gwt.home.desktop.partials.eventsrecent; import java.util.List; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecent.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecent.ui.xml new file mode 100644 index 00000000000..758bfd1b00e --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecent.ui.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentResources.java similarity index 89% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentResources.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentResources.java index b48dae53416..c1d9f8c86e2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentResources.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.events.recent; +package com.sap.sailing.gwt.home.desktop.partials.eventsrecent; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; @@ -7,7 +7,7 @@ import com.google.gwt.resources.client.CssResource; public interface EventsOverviewRecentResources extends ClientBundle { public static final EventsOverviewRecentResources INSTANCE = GWT.create(EventsOverviewRecentResources.class); - @Source("com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecent.gss") + @Source("EventsOverviewRecent.gss") LocalCss css(); public interface LocalCss extends CssResource { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.java index 32024a813e8..72f471e604d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.events.recent; +package com.sap.sailing.gwt.home.desktop.partials.eventsrecent; import java.util.List; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.ui.xml similarity index 87% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.ui.xml index bda511001da..38a996f7cd4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/EventsOverviewRecentYear.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.ui.xml @@ -1,14 +1,11 @@ - + - + .quickFix { padding: 0px 10px 10px 10px; - } @@ -55,8 +52,8 @@
- - + +
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/RecentEventTeaser.java similarity index 95% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/RecentEventTeaser.java index 5a8ef50b9ef..b351939a73b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/RecentEventTeaser.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.events.recent; +package com.sap.sailing.gwt.home.desktop.partials.eventsrecent; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/RecentEventTeaser.ui.xml similarity index 84% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/RecentEventTeaser.ui.xml index 25c99fc0ded..0285e87d9c7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/recent/RecentEventTeaser.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/RecentEventTeaser.ui.xml @@ -3,6 +3,6 @@ xmlns:dp="urn:import:com.sap.sailing.gwt.home.desktop.partials"> - +
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java index c23ed21edbf..15a50ba59ca 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java @@ -13,8 +13,8 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; -import com.sap.sailing.gwt.home.client.place.events.recent.RecentEventTeaser; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.partials.eventsrecent.RecentEventTeaser; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; From 24db0df6000ad04dba40068f7aa1ce32706c0009 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 14 Sep 2015 15:43:10 +0200 Subject: [PATCH 216/504] Refactoring - Moved shared CollapseAnimation util to respective package --- .../desktop/partials/eventsrecent/EventsOverviewRecentYear.java | 2 +- .../desktop/partials/eventsupcoming/EventsOverviewUpcoming.java | 2 +- .../home/mobile/partials/recents/EventsOverviewRecentYear.java | 2 +- .../gwt/home/mobile/partials/regattaStatus/RegattaStatus.java | 2 +- .../mobile/partials/sectionHeader/SectionHeaderContent.java | 2 +- .../sailing/gwt/home/mobile/partials/solutions/Solutions.java | 2 +- .../home/mobile/partials/upcoming/EventsOverviewUpcoming.java | 2 +- .../place/events => shared/utils}/CollapseAnimation.java | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/events => shared/utils}/CollapseAnimation.java (97%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.java index 72f471e604d..ff93fe923f4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.java @@ -15,9 +15,9 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; -import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.utils.CollapseAnimation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; import com.sap.sailing.gwt.ui.shared.eventlist.EventListYearDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcoming.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcoming.java index 46ce5f5087b..1aeb4405d70 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcoming.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcoming.java @@ -15,8 +15,8 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.shared.utils.CollapseAnimation; import com.sap.sailing.gwt.home.shared.utils.EventDatesFormatterUtil; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java index 705074a6a59..98be683a97c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java @@ -14,10 +14,10 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; -import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; import com.sap.sailing.gwt.home.mobile.partials.stage.Stage; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.utils.CollapseAnimation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; import com.sap.sailing.gwt.ui.shared.eventlist.EventListYearDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java index bf798db837d..c0b6e23aa0a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java @@ -9,13 +9,13 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; -import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton; import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton.ToggleButtonCommand; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.utils.CollapseAnimation; import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRaceDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RegattasAndLiveRacesDTO; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeaderContent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeaderContent.java index adf7918ad0b..67238584333 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeaderContent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/sectionHeader/SectionHeaderContent.java @@ -15,8 +15,8 @@ import com.google.gwt.user.client.EventListener; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.LinkUtil; -import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.utils.CollapseAnimation; import com.sap.sailing.gwt.home.shared.utils.LabelTypeUtil; import com.sap.sailing.gwt.ui.shared.general.LabelType; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/solutions/Solutions.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/solutions/Solutions.java index ae32c4684b1..96d06af51b7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/solutions/Solutions.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/solutions/Solutions.java @@ -10,7 +10,7 @@ import com.google.gwt.user.client.Event; import com.google.gwt.user.client.EventListener; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; +import com.sap.sailing.gwt.home.shared.utils.CollapseAnimation; public class Solutions extends Composite { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/upcoming/EventsOverviewUpcoming.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/upcoming/EventsOverviewUpcoming.java index a66f3d291fc..b0e28622f6c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/upcoming/EventsOverviewUpcoming.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/upcoming/EventsOverviewUpcoming.java @@ -12,8 +12,8 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.events.CollapseAnimation; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; +import com.sap.sailing.gwt.home.shared.utils.CollapseAnimation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/CollapseAnimation.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/utils/CollapseAnimation.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/CollapseAnimation.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/utils/CollapseAnimation.java index bb6510092f0..55e9e88d82c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/CollapseAnimation.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/utils/CollapseAnimation.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.events; +package com.sap.sailing.gwt.home.shared.utils; import com.google.gwt.animation.client.Animation; import com.google.gwt.core.client.Scheduler; From 3e4db137fdb2b11107b82d5cb82a5fab1fa54570 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Mon, 14 Sep 2015 15:58:21 +0200 Subject: [PATCH 217/504] ProcessorInstructions are now Callables and not Runnables This decouples processors and instructions and reduces the size of the call stack during the processing --- .../mining/AbstractEnrichingProcessor.java | 2 +- .../datamining/impl/TestProcessorQuery.java | 6 +-- ...estAbstractParallelProcessorFinishing.java | 2 +- ...elProcessorWithManySimpleInstructions.java | 2 +- .../TestProcessorInstructionOrdering.java | 12 ++--- .../util/components/BlockingProcessor.java | 2 +- .../components/NullProcessorInstruction.java | 6 +-- .../components/ProcessorInstruction.java | 4 +- ...tiDimensionalNestingGroupingProcessor.java | 2 +- .../components/AbstractParallelProcessor.java | 48 ++++++++++--------- .../AbstractProcessorInstruction.java | 30 ++++-------- .../AbstractRetrievalProcessor.java | 2 +- .../ParallelFilteringProcessor.java | 2 +- ...oupedElementsValueExtractionProcessor.java | 2 +- .../ProcessorInstructionFutureTask.java | 21 ++++++++ .../AbstractParallelAggregationProcessor.java | 2 +- 16 files changed, 79 insertions(+), 66 deletions(-) create mode 100644 java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ProcessorInstructionFutureTask.java diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java index 0f0068ac13c..47cd95e09e6 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java @@ -18,7 +18,7 @@ public abstract class AbstractEnrichingProcessor extends @Override protected ProcessorInstruction createInstruction(final InputType element) { - return new AbstractProcessorInstruction(this) { + return new AbstractProcessorInstruction() { @Override public ResultType computeResult() { diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java index 52513021af5..57caf80933c 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java @@ -173,7 +173,7 @@ public class TestProcessorQuery { resultReceivers) { @Override protected ProcessorInstruction> createInstruction(final Iterable element) { - return new AbstractProcessorInstruction>(this) { + return new AbstractProcessorInstruction>() { @Override public Map computeResult() { Map result = new HashMap<>(); @@ -247,7 +247,7 @@ public class TestProcessorQuery { resultReceivers) { @Override protected ProcessorInstruction> createInstruction(Double element) { - return new AbstractProcessorInstruction>(this) { + return new AbstractProcessorInstruction>() { @Override protected Map computeResult() throws Exception { throw new RejectedExecutionException("This should cause an error during the query processing"); @@ -287,7 +287,7 @@ public class TestProcessorQuery { resultReceivers) { @Override protected ProcessorInstruction> createInstruction(Double element) { - return new AbstractProcessorInstruction>(this) { + return new AbstractProcessorInstruction>() { @Override protected Map computeResult() throws Exception { throw new NullPointerException("This should cause a failure during the query processing"); diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorFinishing.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorFinishing.java index 686d2645408..2ca9ad6cc77 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorFinishing.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorFinishing.java @@ -71,7 +71,7 @@ public class TestAbstractParallelProcessorFinishing { return new AbstractParallelProcessor(Integer.class, Integer.class, ConcurrencyTestsUtil.getExecutor(), receivers) { @Override protected ProcessorInstruction createInstruction(Integer partialElement) { - return new AbstractProcessorInstruction(this) { + return new AbstractProcessorInstruction() { @Override public Integer computeResult() { while (instructionIsWorking) { diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorWithManySimpleInstructions.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorWithManySimpleInstructions.java index 90d99ebac39..bcc451dbec9 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorWithManySimpleInstructions.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorWithManySimpleInstructions.java @@ -40,7 +40,7 @@ public class TestAbstractParallelProcessorWithManySimpleInstructions { processor = new AbstractParallelProcessor(Integer.class, Integer.class, ConcurrencyTestsUtil.getExecutor(), receivers) { @Override protected ProcessorInstruction createInstruction(final Integer element) { - return new AbstractProcessorInstruction(this) { + return new AbstractProcessorInstruction() { @Override public Integer computeResult() { return element; diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestProcessorInstructionOrdering.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestProcessorInstructionOrdering.java index 1c82a50f93c..458a52a6702 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestProcessorInstructionOrdering.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestProcessorInstructionOrdering.java @@ -16,12 +16,12 @@ public class TestProcessorInstructionOrdering { public void testOrderInPriorityQueue() { Queue> priorityQueue = new PriorityQueue<>(); - priorityQueue.add(new NullProcessorInstruction<>(null, ProcessorInstructionPriority.createRetrievalPriority(0))); - priorityQueue.add(new NullProcessorInstruction<>(null, ProcessorInstructionPriority.createRetrievalPriority(1))); - priorityQueue.add(new NullProcessorInstruction<>(null, ProcessorInstructionPriority.Grouping)); - priorityQueue.add(new NullProcessorInstruction<>(null, ProcessorInstructionPriority.Extraction)); - priorityQueue.add(new NullProcessorInstruction<>(null, ProcessorInstructionPriority.Filtration)); - priorityQueue.add(new NullProcessorInstruction<>(null, ProcessorInstructionPriority.Aggregation)); + priorityQueue.add(new NullProcessorInstruction<>(ProcessorInstructionPriority.createRetrievalPriority(0))); + priorityQueue.add(new NullProcessorInstruction<>(ProcessorInstructionPriority.createRetrievalPriority(1))); + priorityQueue.add(new NullProcessorInstruction<>(ProcessorInstructionPriority.Grouping)); + priorityQueue.add(new NullProcessorInstruction<>(ProcessorInstructionPriority.Extraction)); + priorityQueue.add(new NullProcessorInstruction<>(ProcessorInstructionPriority.Filtration)); + priorityQueue.add(new NullProcessorInstruction<>(ProcessorInstructionPriority.Aggregation)); assertThat(priorityQueue.poll().getPriority(), is(0)); assertThat(priorityQueue.poll().getPriority(), is(1)); diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/BlockingProcessor.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/BlockingProcessor.java index 390880631e3..4a12f932a70 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/BlockingProcessor.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/BlockingProcessor.java @@ -21,7 +21,7 @@ public abstract class BlockingProcessor extends AbstractP @Override protected ProcessorInstruction createInstruction(InputType element) { - return new AbstractProcessorInstruction(this) { + return new AbstractProcessorInstruction() { @Override public ResultType computeResult() throws Exception { Thread.sleep(timeToBlockInMillis); diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/NullProcessorInstruction.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/NullProcessorInstruction.java index 9cdcb5e90a9..1d6254008d1 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/NullProcessorInstruction.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/NullProcessorInstruction.java @@ -1,14 +1,12 @@ package com.sap.sse.datamining.test.util.components; -import com.sap.sse.datamining.impl.components.AbstractParallelProcessor; import com.sap.sse.datamining.impl.components.AbstractProcessorInstruction; import com.sap.sse.datamining.impl.components.ProcessorInstructionPriority; public class NullProcessorInstruction extends AbstractProcessorInstruction { - public NullProcessorInstruction(AbstractParallelProcessor processor, - ProcessorInstructionPriority priority) { - super(processor, priority); + public NullProcessorInstruction(ProcessorInstructionPriority priority) { + super(priority); } @Override diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/ProcessorInstruction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/ProcessorInstruction.java index e2c6db3fdcf..a9acace9c9d 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/ProcessorInstruction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/ProcessorInstruction.java @@ -1,6 +1,8 @@ package com.sap.sse.datamining.components; -public interface ProcessorInstruction extends Runnable, Comparable> { +import java.util.concurrent.Callable; + +public interface ProcessorInstruction extends Callable, Comparable> { public int getPriority(); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java index db8d00840e8..f2e2d79d390 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java @@ -48,7 +48,7 @@ public abstract class AbstractParallelMultiDimensionalNestingGroupingProcessor> createInstruction(final DataType element) { - return new AbstractProcessorInstruction>(this, ProcessorInstructionPriority.Grouping) { + return new AbstractProcessorInstruction>(ProcessorInstructionPriority.Grouping) { @Override public GroupedDataEntry computeResult() { return new GroupedDataEntry(createCompoundKeyFor(element, parameterizedDimensions.iterator()), element); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java index 30c1a6b3f40..ad55ecff8d6 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java @@ -3,7 +3,9 @@ package com.sap.sse.datamining.impl.components; import java.util.Collection; import java.util.HashSet; import java.util.Set; +import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; +import java.util.concurrent.FutureTask; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; @@ -12,10 +14,8 @@ import java.util.logging.Logger; import com.sap.sse.datamining.components.AdditionalResultDataBuilder; import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.components.ProcessorInstruction; -import com.sap.sse.datamining.components.ProcessorInstructionHandler; -public abstract class AbstractParallelProcessor extends AbstractProcessor - implements ProcessorInstructionHandler { +public abstract class AbstractParallelProcessor extends AbstractProcessor { private static final Logger LOGGER = Logger.getLogger(AbstractParallelProcessor.class.getName()); private static final int SLEEP_TIME_DURING_FINISHING = 100; @@ -45,12 +45,30 @@ public abstract class AbstractParallelProcessor extends A final ProcessorInstruction instruction = createInstruction(element); if (isInstructionValid(instruction)) { unfinishedInstructionsCounter.getAndIncrement(); + ResultType result; try { - executor.execute(instruction); - } catch (RejectedExecutionException exc) { - LOGGER.log(Level.WARNING, "A " + RejectedExecutionException.class.getSimpleName() - + " appeared during the processing."); - instruction.run(); + try { + FutureTask task = new ProcessorInstructionFutureTask<>(instruction); + executor.execute(task); + result = task.get(); + } catch (RejectedExecutionException exc) { + LOGGER.log(Level.WARNING, "A " + RejectedExecutionException.class.getSimpleName() + + " appeared during the processing."); + result = instruction.call(); + } + forwardResultToReceivers(result); + } catch (Exception e) { + if (!isAborted) { + Throwable failure; + if (ExecutionException.class.isAssignableFrom(e.getClass())) { + failure = ((ExecutionException) e).getCause(); + } else { + failure = e; + } + onFailure(failure); + } + } finally { + unfinishedInstructionsCounter.getAndDecrement(); } } } @@ -60,20 +78,6 @@ public abstract class AbstractParallelProcessor extends A return instruction != null; } - public void instructionSucceeded(ResultType result) { - forwardResultToReceivers(result); - } - - public void instructionFailed(Exception e) { - if (!isAborted() || !(e instanceof InterruptedException)) { - onFailure(e); - } - } - - public void afterInstructionFinished() { - unfinishedInstructionsCounter.getAndDecrement(); - } - /** * Forwards the given result to the result receivers, if it's {@link #isResultValid(Object) valid} * and if the processor hasn't been {@link #abort() aborted}. diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractProcessorInstruction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractProcessorInstruction.java index 87f65a799ec..394f7c23800 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractProcessorInstruction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractProcessorInstruction.java @@ -1,11 +1,9 @@ package com.sap.sse.datamining.impl.components; import com.sap.sse.datamining.components.ProcessorInstruction; -import com.sap.sse.datamining.components.ProcessorInstructionHandler; public abstract class AbstractProcessorInstruction implements ProcessorInstruction { - private final ProcessorInstructionHandler handler; private final int priority; /** @@ -18,8 +16,8 @@ public abstract class AbstractProcessorInstruction implements Proces * @param handler The handler, that handles the result of the instruction. * In most cases the processor, that processes the instruction. */ - public AbstractProcessorInstruction(ProcessorInstructionHandler handler) { - this(handler, 0); + public AbstractProcessorInstruction() { + this(0); } /** @@ -28,9 +26,8 @@ public abstract class AbstractProcessorInstruction implements Proces * @param handler The processor, that processes this instruction * @param priority The priority of this instruction */ - public AbstractProcessorInstruction(ProcessorInstructionHandler handler, - ProcessorInstructionPriority priority) { - this(handler, priority.asIntValue()); + public AbstractProcessorInstruction(ProcessorInstructionPriority priority) { + this(priority.asIntValue()); } /** @@ -43,22 +40,13 @@ public abstract class AbstractProcessorInstruction implements Proces * @param processor The processor, that processes this instruction * @param priority The priority of this instruction. 0 is the highest priority. */ - public AbstractProcessorInstruction(ProcessorInstructionHandler processor, - int priority) { - this.handler = processor; + public AbstractProcessorInstruction(int priority) { this.priority = priority; } - + @Override - public void run() { - try { - ResultType result = computeResult(); - handler.instructionSucceeded(result); - } catch (Exception e) { - handler.instructionFailed(e); - } finally { - handler.afterInstructionFinished(); - } + public ResultType call() throws Exception { + return computeResult(); } protected abstract ResultType computeResult() throws Exception; @@ -70,7 +58,7 @@ public abstract class AbstractProcessorInstruction implements Proces @Override public int compareTo(ProcessorInstruction instruction) { - return Integer.compare(getPriority(), instruction.getPriority()); + return Integer.compare(priority, instruction.getPriority()); } } diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractRetrievalProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractRetrievalProcessor.java index 9cfad19b9b0..2ed44897a03 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractRetrievalProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractRetrievalProcessor.java @@ -30,7 +30,7 @@ public abstract class AbstractRetrievalProcessor extends @Override protected ProcessorInstruction createInstruction(final InputType element) { - return new AbstractProcessorInstruction(this, ProcessorInstructionPriority.createRetrievalPriority(retrievalLevel)) { + return new AbstractProcessorInstruction(ProcessorInstructionPriority.createRetrievalPriority(retrievalLevel)) { @Override public ResultType computeResult() { for (ResultType retrievedElement : retrieveData(element)) { diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelFilteringProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelFilteringProcessor.java index 2d4e02aa46a..f24544318d6 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelFilteringProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelFilteringProcessor.java @@ -22,7 +22,7 @@ public class ParallelFilteringProcessor extends AbstractParallelProce @Override protected ProcessorInstruction createInstruction(final InputType element) { - return new AbstractProcessorInstruction(this, ProcessorInstructionPriority.Filtration) { + return new AbstractProcessorInstruction(ProcessorInstructionPriority.Filtration) { @Override public InputType computeResult() { if (filterCriterion.matches(element)) { diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelGroupedElementsValueExtractionProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelGroupedElementsValueExtractionProcessor.java index f26c992383e..44c7bd7e396 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelGroupedElementsValueExtractionProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelGroupedElementsValueExtractionProcessor.java @@ -32,7 +32,7 @@ public class ParallelGroupedElementsValueExtractionProcessor> createInstruction(final GroupedDataEntry element) { - return new AbstractProcessorInstruction>(this, ProcessorInstructionPriority.Extraction) { + return new AbstractProcessorInstruction>(ProcessorInstructionPriority.Extraction) { @Override public GroupedDataEntry computeResult() { FunctionReturnType value = extractionFunction.tryToInvoke(element.getDataEntry(), parameterProvider); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ProcessorInstructionFutureTask.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ProcessorInstructionFutureTask.java new file mode 100644 index 00000000000..0b914cd7904 --- /dev/null +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ProcessorInstructionFutureTask.java @@ -0,0 +1,21 @@ +package com.sap.sse.datamining.impl.components; + +import java.util.concurrent.FutureTask; + +import com.sap.sse.datamining.components.ProcessorInstruction; + +public class ProcessorInstructionFutureTask extends FutureTask implements Comparable> { + + private final ProcessorInstruction instruction; + + public ProcessorInstructionFutureTask(ProcessorInstruction instruction) { + super(instruction); + this.instruction = instruction; + } + + @Override + public int compareTo(ProcessorInstructionFutureTask other) { + return instruction.compareTo(other.instruction); + } + +} diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java index f8856b641ba..5bdf264f85c 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java @@ -29,7 +29,7 @@ public abstract class AbstractParallelAggregationProcessor createInstruction(final InputType element) { - return new AbstractProcessorInstruction(this, ProcessorInstructionPriority.Aggregation) { + return new AbstractProcessorInstruction(ProcessorInstructionPriority.Aggregation) { @Override public AggregatedType computeResult() { writeLock.lock(); From ec3f52cf4a4442f28b9685418d0bbec3a19bdfdb Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 14 Sep 2015 16:16:34 +0200 Subject: [PATCH 218/504] Refactoring - Removed unused UiBinder widget EventsTable --- .../home/client/place/events/EventsTable.java | 135 ------------------ .../client/place/events/EventsTable.ui.xml | 29 ---- 2 files changed, 164 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsTable.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsTable.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsTable.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsTable.java deleted file mode 100644 index 3e0e34dec0a..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsTable.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.events; - -import java.util.Comparator; -import java.util.UUID; - -import com.google.gwt.cell.client.CheckboxCell; -import com.google.gwt.cell.client.FieldUpdater; -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.Style.Unit; -import com.google.gwt.safehtml.shared.SafeHtml; -import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.google.gwt.safehtml.shared.SafeHtmlUtils; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.cellview.client.CellTable; -import com.google.gwt.user.cellview.client.Column; -import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler; -import com.google.gwt.user.cellview.client.SimplePager; -import com.google.gwt.user.cellview.client.SimplePager.TextLocation; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.Widget; -import com.google.gwt.view.client.DefaultSelectionEventManager; -import com.google.gwt.view.client.ListDataProvider; -import com.google.gwt.view.client.ProvidesKey; -import com.google.gwt.view.client.SelectionModel; -import com.google.gwt.view.client.SingleSelectionModel; -import com.sap.sailing.gwt.ui.shared.ClickableSafeHtmlCell; -import com.sap.sailing.gwt.ui.shared.EventDTO; -import com.sap.sse.common.Util; - -public class EventsTable extends Composite { - private static EventsTableUiBinder uiBinder = GWT.create(EventsTableUiBinder.class); - - interface EventsTableUiBinder extends UiBinder { - } - - private ListDataProvider dataProvider = new ListDataProvider(); - - @UiField(provided = true) - CellTable cellTable; - - /** - * The pager used to change the range of data. - */ - @UiField(provided = true) - SimplePager pager; - - /** - * Constructor. - * - * @param constants - * the constants - */ - public EventsTable(EventsActivity activity) { - initTable(); - initWidget(uiBinder.createAndBindUi(this)); - } - - public static final ProvidesKey KEY_PROVIDER = new ProvidesKey() { - public UUID getKey(EventDTO item) { - return item == null ? null : item.id; - } - }; - - public void initTable() { - cellTable = new CellTable(KEY_PROVIDER); - cellTable.setWidth("100%", true); - - ListHandler sortHandler = new ListHandler(dataProvider.getList()); - cellTable.addColumnSortHandler(sortHandler); - - // Create a Pager to control the table. - SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class); - pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true); - pager.setDisplay(cellTable); - - // Add a selection model so we can select cells. - final SelectionModel selectionModel = new SingleSelectionModel(KEY_PROVIDER); - cellTable.setSelectionModel(selectionModel, DefaultSelectionEventManager. createCheckboxManager()); - - // Initialize the columns. - initTableColumns(selectionModel, sortHandler); - - // Add the CellList to the adapter in the database. - dataProvider.addDataDisplay(cellTable); - } - - public void setEvents(Iterable events) { - dataProvider.getList().clear(); - Util.addAll(events, dataProvider.getList()); - } - - /** - * Add the columns to the table. - */ - private void initTableColumns(final SelectionModel selectionModel, ListHandler sortHandler) { - // Checkbox column. This table will uses a checkbox column for selection. - // Alternatively, you can call cellTable.setSelectionEnabled(true) to enable mouse selection. - Column checkColumn = new Column(new CheckboxCell(true, false)) { - @Override - public Boolean getValue(EventDTO object) { - // Get the value from the selection model. - return selectionModel.isSelected(object); - } - }; - cellTable.addColumn(checkColumn, SafeHtmlUtils.fromSafeConstant("
")); - cellTable.setColumnWidth(checkColumn, 40, Unit.PX); - - // name. - Column nameColumn = new Column(new ClickableSafeHtmlCell()) { - @Override - public SafeHtml getValue(EventDTO event) { - final SafeHtmlBuilder safeHtmlBuilder = new SafeHtmlBuilder(); - safeHtmlBuilder.appendHtmlConstant(""); - safeHtmlBuilder.appendEscaped(event.getName()); - safeHtmlBuilder.appendHtmlConstant(""); - return safeHtmlBuilder.toSafeHtml(); - } - }; - nameColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, EventDTO object, SafeHtml value) { - // activity.goTo(new EventPlace(object.id.toString())); - } - }); - nameColumn.setSortable(true); - sortHandler.setComparator(nameColumn, new Comparator() { - public int compare(EventDTO o1, EventDTO o2) { - return o1.getName().compareTo(o2.getName()); - } - }); - cellTable.addColumn(nameColumn, "name"); - cellTable.setColumnWidth(nameColumn, 20, Unit.PCT); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsTable.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsTable.ui.xml deleted file mode 100644 index 9c7d9557968..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsTable.ui.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - .cellTable { - border-bottom: 1px solid #ccc; - text-align: left; - margin-bottom: 4px; - } - - - - - - - - - - -
- -
- -
-
-
From 219d9ee335153fe2a402b5c03c2f860834c15072 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Mon, 14 Sep 2015 16:32:57 +0200 Subject: [PATCH 219/504] Revert "ProcessorInstructions are now Callables and not Runnables" This reverts commit 3e4db137fdb2b11107b82d5cb82a5fab1fa54570. --- .../mining/AbstractEnrichingProcessor.java | 2 +- .../datamining/impl/TestProcessorQuery.java | 6 +-- ...estAbstractParallelProcessorFinishing.java | 2 +- ...elProcessorWithManySimpleInstructions.java | 2 +- .../TestProcessorInstructionOrdering.java | 12 ++--- .../util/components/BlockingProcessor.java | 2 +- .../components/NullProcessorInstruction.java | 6 ++- .../components/ProcessorInstruction.java | 4 +- ...tiDimensionalNestingGroupingProcessor.java | 2 +- .../components/AbstractParallelProcessor.java | 48 +++++++++---------- .../AbstractProcessorInstruction.java | 30 ++++++++---- .../AbstractRetrievalProcessor.java | 2 +- .../ParallelFilteringProcessor.java | 2 +- ...oupedElementsValueExtractionProcessor.java | 2 +- .../ProcessorInstructionFutureTask.java | 21 -------- .../AbstractParallelAggregationProcessor.java | 2 +- 16 files changed, 66 insertions(+), 79 deletions(-) delete mode 100644 java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ProcessorInstructionFutureTask.java diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java index 47cd95e09e6..0f0068ac13c 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java @@ -18,7 +18,7 @@ public abstract class AbstractEnrichingProcessor extends @Override protected ProcessorInstruction createInstruction(final InputType element) { - return new AbstractProcessorInstruction() { + return new AbstractProcessorInstruction(this) { @Override public ResultType computeResult() { diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java index 57caf80933c..52513021af5 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestProcessorQuery.java @@ -173,7 +173,7 @@ public class TestProcessorQuery { resultReceivers) { @Override protected ProcessorInstruction> createInstruction(final Iterable element) { - return new AbstractProcessorInstruction>() { + return new AbstractProcessorInstruction>(this) { @Override public Map computeResult() { Map result = new HashMap<>(); @@ -247,7 +247,7 @@ public class TestProcessorQuery { resultReceivers) { @Override protected ProcessorInstruction> createInstruction(Double element) { - return new AbstractProcessorInstruction>() { + return new AbstractProcessorInstruction>(this) { @Override protected Map computeResult() throws Exception { throw new RejectedExecutionException("This should cause an error during the query processing"); @@ -287,7 +287,7 @@ public class TestProcessorQuery { resultReceivers) { @Override protected ProcessorInstruction> createInstruction(Double element) { - return new AbstractProcessorInstruction>() { + return new AbstractProcessorInstruction>(this) { @Override protected Map computeResult() throws Exception { throw new NullPointerException("This should cause a failure during the query processing"); diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorFinishing.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorFinishing.java index 2ca9ad6cc77..686d2645408 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorFinishing.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorFinishing.java @@ -71,7 +71,7 @@ public class TestAbstractParallelProcessorFinishing { return new AbstractParallelProcessor(Integer.class, Integer.class, ConcurrencyTestsUtil.getExecutor(), receivers) { @Override protected ProcessorInstruction createInstruction(Integer partialElement) { - return new AbstractProcessorInstruction() { + return new AbstractProcessorInstruction(this) { @Override public Integer computeResult() { while (instructionIsWorking) { diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorWithManySimpleInstructions.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorWithManySimpleInstructions.java index bcc451dbec9..90d99ebac39 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorWithManySimpleInstructions.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestAbstractParallelProcessorWithManySimpleInstructions.java @@ -40,7 +40,7 @@ public class TestAbstractParallelProcessorWithManySimpleInstructions { processor = new AbstractParallelProcessor(Integer.class, Integer.class, ConcurrencyTestsUtil.getExecutor(), receivers) { @Override protected ProcessorInstruction createInstruction(final Integer element) { - return new AbstractProcessorInstruction() { + return new AbstractProcessorInstruction(this) { @Override public Integer computeResult() { return element; diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestProcessorInstructionOrdering.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestProcessorInstructionOrdering.java index 458a52a6702..1c82a50f93c 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestProcessorInstructionOrdering.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestProcessorInstructionOrdering.java @@ -16,12 +16,12 @@ public class TestProcessorInstructionOrdering { public void testOrderInPriorityQueue() { Queue> priorityQueue = new PriorityQueue<>(); - priorityQueue.add(new NullProcessorInstruction<>(ProcessorInstructionPriority.createRetrievalPriority(0))); - priorityQueue.add(new NullProcessorInstruction<>(ProcessorInstructionPriority.createRetrievalPriority(1))); - priorityQueue.add(new NullProcessorInstruction<>(ProcessorInstructionPriority.Grouping)); - priorityQueue.add(new NullProcessorInstruction<>(ProcessorInstructionPriority.Extraction)); - priorityQueue.add(new NullProcessorInstruction<>(ProcessorInstructionPriority.Filtration)); - priorityQueue.add(new NullProcessorInstruction<>(ProcessorInstructionPriority.Aggregation)); + priorityQueue.add(new NullProcessorInstruction<>(null, ProcessorInstructionPriority.createRetrievalPriority(0))); + priorityQueue.add(new NullProcessorInstruction<>(null, ProcessorInstructionPriority.createRetrievalPriority(1))); + priorityQueue.add(new NullProcessorInstruction<>(null, ProcessorInstructionPriority.Grouping)); + priorityQueue.add(new NullProcessorInstruction<>(null, ProcessorInstructionPriority.Extraction)); + priorityQueue.add(new NullProcessorInstruction<>(null, ProcessorInstructionPriority.Filtration)); + priorityQueue.add(new NullProcessorInstruction<>(null, ProcessorInstructionPriority.Aggregation)); assertThat(priorityQueue.poll().getPriority(), is(0)); assertThat(priorityQueue.poll().getPriority(), is(1)); diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/BlockingProcessor.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/BlockingProcessor.java index 4a12f932a70..390880631e3 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/BlockingProcessor.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/BlockingProcessor.java @@ -21,7 +21,7 @@ public abstract class BlockingProcessor extends AbstractP @Override protected ProcessorInstruction createInstruction(InputType element) { - return new AbstractProcessorInstruction() { + return new AbstractProcessorInstruction(this) { @Override public ResultType computeResult() throws Exception { Thread.sleep(timeToBlockInMillis); diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/NullProcessorInstruction.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/NullProcessorInstruction.java index 1d6254008d1..9cdcb5e90a9 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/NullProcessorInstruction.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/NullProcessorInstruction.java @@ -1,12 +1,14 @@ package com.sap.sse.datamining.test.util.components; +import com.sap.sse.datamining.impl.components.AbstractParallelProcessor; import com.sap.sse.datamining.impl.components.AbstractProcessorInstruction; import com.sap.sse.datamining.impl.components.ProcessorInstructionPriority; public class NullProcessorInstruction extends AbstractProcessorInstruction { - public NullProcessorInstruction(ProcessorInstructionPriority priority) { - super(priority); + public NullProcessorInstruction(AbstractParallelProcessor processor, + ProcessorInstructionPriority priority) { + super(processor, priority); } @Override diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/ProcessorInstruction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/ProcessorInstruction.java index a9acace9c9d..e2c6db3fdcf 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/ProcessorInstruction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/ProcessorInstruction.java @@ -1,8 +1,6 @@ package com.sap.sse.datamining.components; -import java.util.concurrent.Callable; - -public interface ProcessorInstruction extends Callable, Comparable> { +public interface ProcessorInstruction extends Runnable, Comparable> { public int getPriority(); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java index f2e2d79d390..db8d00840e8 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java @@ -48,7 +48,7 @@ public abstract class AbstractParallelMultiDimensionalNestingGroupingProcessor> createInstruction(final DataType element) { - return new AbstractProcessorInstruction>(ProcessorInstructionPriority.Grouping) { + return new AbstractProcessorInstruction>(this, ProcessorInstructionPriority.Grouping) { @Override public GroupedDataEntry computeResult() { return new GroupedDataEntry(createCompoundKeyFor(element, parameterizedDimensions.iterator()), element); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java index ad55ecff8d6..30c1a6b3f40 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java @@ -3,9 +3,7 @@ package com.sap.sse.datamining.impl.components; import java.util.Collection; import java.util.HashSet; import java.util.Set; -import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; -import java.util.concurrent.FutureTask; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Level; @@ -14,8 +12,10 @@ import java.util.logging.Logger; import com.sap.sse.datamining.components.AdditionalResultDataBuilder; import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.components.ProcessorInstruction; +import com.sap.sse.datamining.components.ProcessorInstructionHandler; -public abstract class AbstractParallelProcessor extends AbstractProcessor { +public abstract class AbstractParallelProcessor extends AbstractProcessor + implements ProcessorInstructionHandler { private static final Logger LOGGER = Logger.getLogger(AbstractParallelProcessor.class.getName()); private static final int SLEEP_TIME_DURING_FINISHING = 100; @@ -45,30 +45,12 @@ public abstract class AbstractParallelProcessor extends A final ProcessorInstruction instruction = createInstruction(element); if (isInstructionValid(instruction)) { unfinishedInstructionsCounter.getAndIncrement(); - ResultType result; try { - try { - FutureTask task = new ProcessorInstructionFutureTask<>(instruction); - executor.execute(task); - result = task.get(); - } catch (RejectedExecutionException exc) { - LOGGER.log(Level.WARNING, "A " + RejectedExecutionException.class.getSimpleName() - + " appeared during the processing."); - result = instruction.call(); - } - forwardResultToReceivers(result); - } catch (Exception e) { - if (!isAborted) { - Throwable failure; - if (ExecutionException.class.isAssignableFrom(e.getClass())) { - failure = ((ExecutionException) e).getCause(); - } else { - failure = e; - } - onFailure(failure); - } - } finally { - unfinishedInstructionsCounter.getAndDecrement(); + executor.execute(instruction); + } catch (RejectedExecutionException exc) { + LOGGER.log(Level.WARNING, "A " + RejectedExecutionException.class.getSimpleName() + + " appeared during the processing."); + instruction.run(); } } } @@ -78,6 +60,20 @@ public abstract class AbstractParallelProcessor extends A return instruction != null; } + public void instructionSucceeded(ResultType result) { + forwardResultToReceivers(result); + } + + public void instructionFailed(Exception e) { + if (!isAborted() || !(e instanceof InterruptedException)) { + onFailure(e); + } + } + + public void afterInstructionFinished() { + unfinishedInstructionsCounter.getAndDecrement(); + } + /** * Forwards the given result to the result receivers, if it's {@link #isResultValid(Object) valid} * and if the processor hasn't been {@link #abort() aborted}. diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractProcessorInstruction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractProcessorInstruction.java index 394f7c23800..87f65a799ec 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractProcessorInstruction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractProcessorInstruction.java @@ -1,9 +1,11 @@ package com.sap.sse.datamining.impl.components; import com.sap.sse.datamining.components.ProcessorInstruction; +import com.sap.sse.datamining.components.ProcessorInstructionHandler; public abstract class AbstractProcessorInstruction implements ProcessorInstruction { + private final ProcessorInstructionHandler handler; private final int priority; /** @@ -16,8 +18,8 @@ public abstract class AbstractProcessorInstruction implements Proces * @param handler The handler, that handles the result of the instruction. * In most cases the processor, that processes the instruction. */ - public AbstractProcessorInstruction() { - this(0); + public AbstractProcessorInstruction(ProcessorInstructionHandler handler) { + this(handler, 0); } /** @@ -26,8 +28,9 @@ public abstract class AbstractProcessorInstruction implements Proces * @param handler The processor, that processes this instruction * @param priority The priority of this instruction */ - public AbstractProcessorInstruction(ProcessorInstructionPriority priority) { - this(priority.asIntValue()); + public AbstractProcessorInstruction(ProcessorInstructionHandler handler, + ProcessorInstructionPriority priority) { + this(handler, priority.asIntValue()); } /** @@ -40,13 +43,22 @@ public abstract class AbstractProcessorInstruction implements Proces * @param processor The processor, that processes this instruction * @param priority The priority of this instruction. 0 is the highest priority. */ - public AbstractProcessorInstruction(int priority) { + public AbstractProcessorInstruction(ProcessorInstructionHandler processor, + int priority) { + this.handler = processor; this.priority = priority; } - + @Override - public ResultType call() throws Exception { - return computeResult(); + public void run() { + try { + ResultType result = computeResult(); + handler.instructionSucceeded(result); + } catch (Exception e) { + handler.instructionFailed(e); + } finally { + handler.afterInstructionFinished(); + } } protected abstract ResultType computeResult() throws Exception; @@ -58,7 +70,7 @@ public abstract class AbstractProcessorInstruction implements Proces @Override public int compareTo(ProcessorInstruction instruction) { - return Integer.compare(priority, instruction.getPriority()); + return Integer.compare(getPriority(), instruction.getPriority()); } } diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractRetrievalProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractRetrievalProcessor.java index 2ed44897a03..9cfad19b9b0 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractRetrievalProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractRetrievalProcessor.java @@ -30,7 +30,7 @@ public abstract class AbstractRetrievalProcessor extends @Override protected ProcessorInstruction createInstruction(final InputType element) { - return new AbstractProcessorInstruction(ProcessorInstructionPriority.createRetrievalPriority(retrievalLevel)) { + return new AbstractProcessorInstruction(this, ProcessorInstructionPriority.createRetrievalPriority(retrievalLevel)) { @Override public ResultType computeResult() { for (ResultType retrievedElement : retrieveData(element)) { diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelFilteringProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelFilteringProcessor.java index f24544318d6..2d4e02aa46a 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelFilteringProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelFilteringProcessor.java @@ -22,7 +22,7 @@ public class ParallelFilteringProcessor extends AbstractParallelProce @Override protected ProcessorInstruction createInstruction(final InputType element) { - return new AbstractProcessorInstruction(ProcessorInstructionPriority.Filtration) { + return new AbstractProcessorInstruction(this, ProcessorInstructionPriority.Filtration) { @Override public InputType computeResult() { if (filterCriterion.matches(element)) { diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelGroupedElementsValueExtractionProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelGroupedElementsValueExtractionProcessor.java index 44c7bd7e396..f26c992383e 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelGroupedElementsValueExtractionProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelGroupedElementsValueExtractionProcessor.java @@ -32,7 +32,7 @@ public class ParallelGroupedElementsValueExtractionProcessor> createInstruction(final GroupedDataEntry element) { - return new AbstractProcessorInstruction>(ProcessorInstructionPriority.Extraction) { + return new AbstractProcessorInstruction>(this, ProcessorInstructionPriority.Extraction) { @Override public GroupedDataEntry computeResult() { FunctionReturnType value = extractionFunction.tryToInvoke(element.getDataEntry(), parameterProvider); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ProcessorInstructionFutureTask.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ProcessorInstructionFutureTask.java deleted file mode 100644 index 0b914cd7904..00000000000 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ProcessorInstructionFutureTask.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.sap.sse.datamining.impl.components; - -import java.util.concurrent.FutureTask; - -import com.sap.sse.datamining.components.ProcessorInstruction; - -public class ProcessorInstructionFutureTask extends FutureTask implements Comparable> { - - private final ProcessorInstruction instruction; - - public ProcessorInstructionFutureTask(ProcessorInstruction instruction) { - super(instruction); - this.instruction = instruction; - } - - @Override - public int compareTo(ProcessorInstructionFutureTask other) { - return instruction.compareTo(other.instruction); - } - -} diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java index 5bdf264f85c..f8856b641ba 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java @@ -29,7 +29,7 @@ public abstract class AbstractParallelAggregationProcessor createInstruction(final InputType element) { - return new AbstractProcessorInstruction(ProcessorInstructionPriority.Aggregation) { + return new AbstractProcessorInstruction(this, ProcessorInstructionPriority.Aggregation) { @Override public AggregatedType computeResult() { writeLock.lock(); From c76f2f801a99c810192adfb7a77dfbb36835807a Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 14 Sep 2015 16:48:54 +0200 Subject: [PATCH 220/504] Refactoring - Moved shared refresh related classes to respective package --- .../multiregatta/tabs/MultiregattaOverviewTabView.java | 4 ++-- .../multiregatta/tabs/MultiregattaRegattasTabView.java | 4 ++-- .../place/event/regatta/tabs/RegattaOverviewTabView.java | 4 ++-- .../place/event/regatta/tabs/RegattaRacesTabView.java | 6 +++--- .../tabs/reload => shared/refresh}/ActionProvider.java | 2 +- .../tabs/reload => shared/refresh}/RefreshManager.java | 4 ++-- .../tabs/reload => shared/refresh}/RefreshableWidget.java | 2 +- .../desktop/partials/eventstage/EventOverviewStage.java | 4 ++-- .../gwt/home/desktop/partials/liveraces/LiveRacesList.java | 2 +- .../desktop/partials/multiregattalist/MultiRegattaList.java | 2 +- .../home/desktop/partials/racelist/RaceListContainer.java | 2 +- .../gwt/home/desktop/partials/standings/StandingsList.java | 2 +- .../gwt/home/mobile/partials/eventsteps/EventSteps.java | 2 +- .../home/mobile/partials/liveraces/RegattaLiveRaces.java | 2 +- .../mobile/partials/minileaderboard/MinileaderboardBox.java | 2 +- .../home/mobile/partials/regattaStatus/RegattaStatus.java | 2 +- .../partials/regattacompetition/RegattaCompetition.java | 2 +- .../gwt/home/mobile/partials/updatesBox/UpdatesBox.java | 4 ++-- .../gwt/home/mobile/places/event/AbstractEventView.java | 2 +- .../mobile/places/event/overview/EventOverviewStage.java | 2 +- .../gwt/home/mobile/places/series/SeriesViewImpl.java | 2 +- .../SeriesMiniOverallLeaderboardViewImpl.java | 2 +- .../shared/partials/statistics/AbstractStatisticsBox.java | 2 +- 23 files changed, 31 insertions(+), 31 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/{place/event/regatta/tabs/reload => shared/refresh}/ActionProvider.java (91%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/{place/event/regatta/tabs/reload => shared/refresh}/RefreshManager.java (96%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/{place/event/regatta/tabs/reload => shared/refresh}/RefreshableWidget.java (64%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java index 22806883a98..96f890c3394 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java @@ -19,8 +19,8 @@ import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregatt import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.multiregatta.MultiregattaTabView; import com.sap.sailing.gwt.home.client.place.event.partials.eventregatta.EventRegattaList; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.eventstage.EventOverviewStage; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaList; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java index a756ce5990d..d3dd36000f5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java @@ -19,8 +19,8 @@ import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregatt import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.multiregatta.MultiregattaTabView; import com.sap.sailing.gwt.home.client.place.event.partials.eventregatta.EventRegattaList; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaList; import com.sap.sailing.gwt.home.desktop.partials.raceoffice.RaceOfficeSection; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java index 706a3524eeb..e1172d4bfdd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java @@ -11,8 +11,8 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.eventstage.EventOverviewStage; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListItem; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index b505b9f7adc..b36406ba521 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -23,9 +23,9 @@ import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.client.place.event.partials.regattaraces.EventRegattaRaces; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.ActionProvider.AbstractActionProvider; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.ActionProvider.AbstractActionProvider; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListItem; import com.sap.sailing.gwt.home.desktop.partials.racelist.AbstractRaceList; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/ActionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/ActionProvider.java similarity index 91% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/ActionProvider.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/ActionProvider.java index d667b048854..d7e711a42e8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/ActionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/ActionProvider.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload; +package com.sap.sailing.gwt.home.client.shared.refresh; import com.sap.sailing.gwt.ui.shared.dispatch.Action; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/RefreshManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/RefreshManager.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/RefreshManager.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/RefreshManager.java index 072e7d5e30b..123316b85a2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/RefreshManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/RefreshManager.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload; +package com.sap.sailing.gwt.home.client.shared.refresh; import java.util.ArrayList; import java.util.List; @@ -12,7 +12,7 @@ import com.google.gwt.event.logical.shared.AttachEvent.Handler; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.ActionProvider.DefaultActionProvider; +import com.sap.sailing.gwt.home.client.shared.refresh.ActionProvider.DefaultActionProvider; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; import com.sap.sailing.gwt.ui.shared.dispatch.Action; import com.sap.sailing.gwt.ui.shared.dispatch.DTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/RefreshableWidget.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/RefreshableWidget.java similarity index 64% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/RefreshableWidget.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/RefreshableWidget.java index ede6dc7c2fb..cac3bff5f89 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/reload/RefreshableWidget.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/RefreshableWidget.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload; +package com.sap.sailing.gwt.home.client.shared.refresh; import com.sap.sailing.gwt.ui.shared.dispatch.DTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventstage/EventOverviewStage.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventstage/EventOverviewStage.java index 55cb141a8c0..b390b60b380 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventstage/EventOverviewStage.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventstage/EventOverviewStage.java @@ -13,8 +13,8 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.common.client.SharedResources.MediaCss; import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.updates.UpdatesBox; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.partials.countdown.Countdown; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/liveraces/LiveRacesList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/liveraces/LiveRacesList.java index f07b24243f1..e8584d17093 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/liveraces/LiveRacesList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/liveraces/LiveRacesList.java @@ -5,7 +5,7 @@ import java.util.Collection; import com.google.gwt.dom.client.Style.Display; import com.google.gwt.user.client.ui.Composite; import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.racelist.AbstractRaceList; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListColumnFactory; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListColumnSet; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java index aac2593c8cb..6e1f7b45762 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java @@ -14,7 +14,7 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult; import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaWithProgressDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.java index 5bd11b42645..74f4301f747 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.java @@ -11,7 +11,7 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.shared.dispatch.CollectionResult; import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/standings/StandingsList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/standings/StandingsList.java index c538eb2d0f9..51e3c2d93c3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/standings/StandingsList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/standings/StandingsList.java @@ -10,7 +10,7 @@ import com.google.gwt.dom.client.Style.Display; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.utils.LabelTypeUtil; import com.sap.sailing.gwt.ui.client.StringMessages; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java index 7fdb2c1160a..353236406d3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java @@ -4,7 +4,7 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.ui.client.StringMessages; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java index 4e798cba0df..7f7a9592f4e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java @@ -4,7 +4,7 @@ import com.google.gwt.core.shared.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatusRace; import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatusResources; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/minileaderboard/MinileaderboardBox.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/minileaderboard/MinileaderboardBox.java index 1a1831f3e59..e2b8f177115 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/minileaderboard/MinileaderboardBox.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/minileaderboard/MinileaderboardBox.java @@ -10,7 +10,7 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java index c0b6e23aa0a..3fa5d12f4ab 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java @@ -8,7 +8,7 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton; import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton.ToggleButtonCommand; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java index 6459caf131f..4eb56c1394b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java @@ -6,7 +6,7 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.places.event.races.RacesView.Presenter; import com.sap.sailing.gwt.ui.shared.dispatch.ListResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/updatesBox/UpdatesBox.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/updatesBox/UpdatesBox.java index ba164e6b02b..fa6ac85e100 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/updatesBox/UpdatesBox.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/updatesBox/UpdatesBox.java @@ -12,8 +12,8 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.ui.client.StringMessages; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java index 7bbdb82ea64..f08e1576c05 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java @@ -11,7 +11,7 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; import com.sap.sailing.gwt.home.mobile.partials.eventheader.EventHeader; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java index af6f5905d39..63eb1fd8fd0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java @@ -6,7 +6,7 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java index d399a60ec65..b2b6f1c1a7a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java @@ -8,7 +8,7 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.recents.EventsOverviewRecentYearEvent; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java index bb2e74e99d1..b2818589866 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java @@ -8,8 +8,8 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshManager; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.seriesheader.SeriesHeader; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/statistics/AbstractStatisticsBox.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/statistics/AbstractStatisticsBox.java index 4fb85d6ba65..2d7fddb0504 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/statistics/AbstractStatisticsBox.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/statistics/AbstractStatisticsBox.java @@ -2,7 +2,7 @@ package com.sap.sailing.gwt.home.shared.partials.statistics; import com.google.gwt.i18n.client.NumberFormat; import com.google.gwt.user.client.ui.Composite; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget; +import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventStatisticsDTO; From 7b5b8bde585bd5cc35a14f70249118d20a24b9df Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 14 Sep 2015 17:06:53 +0200 Subject: [PATCH 221/504] Refactoring - Moved common parts of old desktop partials for leaderboard and competitor chartss to respective package --- .../OldCompetitorCharts.java | 2 +- .../OldCompetitorCharts.ui.xml | 5 +- .../event/oldleaderboard/OldLeaderboard.java | 4 +- .../oldleaderboard/OldLeaderboard.ui.xml | 57 +++++++++--------- ...ldLeaderboardDelegateFullscreenViewer.java | 2 +- .../OldMultiLeaderboard.java | 4 +- .../OldMultiLeaderboard.ui.xml | 59 +++++++++---------- ...tiLeaderboardDelegateFullscreenViewer.java | 2 +- .../AbstractLeaderboardFullscreenViewer.java | 2 +- .../partials/old}/EventRegattaLeaderboard.gss | 0 .../EventRegattaLeaderboardResources.java | 2 +- .../partials/old}/LeaderboardDelegate.java | 2 +- 12 files changed, 67 insertions(+), 74 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/oldleaderboards => desktop/partials/old}/AbstractLeaderboardFullscreenViewer.java (97%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regattaleaderboard => desktop/partials/old}/EventRegattaLeaderboard.gss (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regattaleaderboard => desktop/partials/old}/EventRegattaLeaderboardResources.java (97%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/oldleaderboards => desktop/partials/old}/LeaderboardDelegate.java (90%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.java index fa05a1be5b8..741167da5eb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.java @@ -21,7 +21,7 @@ import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.DetailType; -import com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources; +import com.sap.sailing.gwt.home.desktop.partials.old.EventRegattaLeaderboardResources; import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; import com.sap.sailing.gwt.ui.client.DetailTypeFormatter; import com.sap.sailing.gwt.ui.client.StringMessages; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml index dd6f72b0be9..e8e37c40256 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml @@ -1,9 +1,8 @@ - + - + .marginFix { margin-top: 2rem; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.java index 227fd62a64f..2012c0d21c6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.java @@ -23,8 +23,8 @@ import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.gwt.common.client.i18n.TextMessages; -import com.sap.sailing.gwt.home.client.place.event.oldleaderboards.LeaderboardDelegate; -import com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources; +import com.sap.sailing.gwt.home.desktop.partials.old.EventRegattaLeaderboardResources; +import com.sap.sailing.gwt.home.desktop.partials.old.LeaderboardDelegate; import com.sap.sailing.gwt.ui.client.DebugIdHelper; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.ui.xml index 8ad9126c597..766197c42e4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.ui.xml @@ -1,39 +1,36 @@ - + - - -
-
-
-
+ + +
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
- -
-
- - - - -
- - -
-
-
-
+
+ +
+
+ + + + +
+ +
+
+
+ diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboardDelegateFullscreenViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboardDelegateFullscreenViewer.java index 571214a20ec..6df024eee68 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboardDelegateFullscreenViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboardDelegateFullscreenViewer.java @@ -3,7 +3,7 @@ package com.sap.sailing.gwt.home.client.place.event.oldleaderboard; import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.ui.Label; import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard.OldLeaderboardDelegate; -import com.sap.sailing.gwt.home.client.place.event.oldleaderboards.AbstractLeaderboardFullscreenViewer; +import com.sap.sailing.gwt.home.desktop.partials.old.AbstractLeaderboardFullscreenViewer; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; public class OldLeaderboardDelegateFullscreenViewer extends AbstractLeaderboardFullscreenViewer diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.java index 5e3914f5069..6d3765dca71 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.java @@ -22,8 +22,8 @@ import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.gwt.common.client.i18n.TextMessages; -import com.sap.sailing.gwt.home.client.place.event.oldleaderboards.LeaderboardDelegate; -import com.sap.sailing.gwt.home.client.place.event.regattaleaderboard.EventRegattaLeaderboardResources; +import com.sap.sailing.gwt.home.desktop.partials.old.EventRegattaLeaderboardResources; +import com.sap.sailing.gwt.home.desktop.partials.old.LeaderboardDelegate; import com.sap.sailing.gwt.ui.client.DebugIdHelper; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.ui.xml index 1c6353daa1f..25126e05c93 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.ui.xml @@ -1,39 +1,36 @@ - + - + - -
-
-

-

-
-
-
-

-

-
- - - -
+ +
+
+

+

+
+
+
+

+

+
+ + + +
-
-
- - - - -
- - -
-
-
+
+
+ + + + +
+ +
+
+
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboardDelegateFullscreenViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboardDelegateFullscreenViewer.java index 51bebceb478..85bb18514f0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboardDelegateFullscreenViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboardDelegateFullscreenViewer.java @@ -1,7 +1,7 @@ package com.sap.sailing.gwt.home.client.place.event.oldmultileaderboard; -import com.sap.sailing.gwt.home.client.place.event.oldleaderboards.AbstractLeaderboardFullscreenViewer; import com.sap.sailing.gwt.home.client.place.event.oldmultileaderboard.OldMultiLeaderboard.OldMultiLeaderboardDelegate; +import com.sap.sailing.gwt.home.desktop.partials.old.AbstractLeaderboardFullscreenViewer; import com.sap.sailing.gwt.ui.leaderboard.MultiLeaderboardPanel; public class OldMultiLeaderboardDelegateFullscreenViewer extends diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboards/AbstractLeaderboardFullscreenViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/AbstractLeaderboardFullscreenViewer.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboards/AbstractLeaderboardFullscreenViewer.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/AbstractLeaderboardFullscreenViewer.java index b1704d341f7..6e1baf957dd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboards/AbstractLeaderboardFullscreenViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/AbstractLeaderboardFullscreenViewer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.oldleaderboards; +package com.sap.sailing.gwt.home.desktop.partials.old; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style.Unit; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaleaderboard/EventRegattaLeaderboard.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/EventRegattaLeaderboard.gss similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaleaderboard/EventRegattaLeaderboard.gss rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/EventRegattaLeaderboard.gss diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaleaderboard/EventRegattaLeaderboardResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/EventRegattaLeaderboardResources.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaleaderboard/EventRegattaLeaderboardResources.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/EventRegattaLeaderboardResources.java index 4cca8c6382a..fee597cac95 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regattaleaderboard/EventRegattaLeaderboardResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/EventRegattaLeaderboardResources.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regattaleaderboard; +package com.sap.sailing.gwt.home.desktop.partials.old; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboards/LeaderboardDelegate.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/LeaderboardDelegate.java similarity index 90% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboards/LeaderboardDelegate.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/LeaderboardDelegate.java index 1a3ff6fb283..c1523e63036 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboards/LeaderboardDelegate.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/LeaderboardDelegate.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.oldleaderboards; +package com.sap.sailing.gwt.home.desktop.partials.old; import com.google.gwt.dom.client.Element; import com.google.gwt.event.logical.shared.CloseHandler; From c797635f2d585ac5d3d7b1503611a7febcb8280b Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 14 Sep 2015 17:15:10 +0200 Subject: [PATCH 222/504] Refactoring - Moved desktop OldLeaderboard partials to respective package --- .../regatta/tabs/RegattaLeaderboardTabView.java | 4 ++-- .../tabs/RegattaLeaderboardTabView.ui.xml | 16 ++++++---------- .../tabs/EventSeriesLeaderboardTabView.java | 4 ++-- .../tabs/EventSeriesLeaderboardTabView.ui.xml | 11 +++-------- .../old/leaderboard}/OldLeaderboard.java | 2 +- .../old/leaderboard}/OldLeaderboard.ui.xml | 0 .../OldLeaderboardDelegateFullscreenViewer.java | 4 ++-- 7 files changed, 16 insertions(+), 25 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/oldleaderboard => desktop/partials/old/leaderboard}/OldLeaderboard.java (99%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/oldleaderboard => desktop/partials/old/leaderboard}/OldLeaderboard.ui.xml (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/oldleaderboard => desktop/partials/old/leaderboard}/OldLeaderboardDelegateFullscreenViewer.java (80%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.java index d2e63f61d3d..13d8796184a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.java @@ -10,11 +10,11 @@ import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboardDelegateFullscreenViewer; -import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager; +import com.sap.sailing.gwt.home.desktop.partials.old.leaderboard.OldLeaderboard; +import com.sap.sailing.gwt.home.desktop.partials.old.leaderboard.OldLeaderboardDelegateFullscreenViewer; import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sailing.gwt.ui.shared.general.EventState; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.ui.xml index 56023e89c66..7c60482959d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.ui.xml @@ -1,15 +1,11 @@ - + - - .outerBox { - padding-top: 10px; - - } - + .outerBox { + padding-top: 10px; + } - + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.java index 6255f6a80d7..3b3fffb6485 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.java @@ -10,10 +10,10 @@ import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboardDelegateFullscreenViewer; -import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard; import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView; +import com.sap.sailing.gwt.home.desktop.partials.old.leaderboard.OldLeaderboard; +import com.sap.sailing.gwt.home.desktop.partials.old.leaderboard.OldLeaderboardDelegateFullscreenViewer; import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.ui.xml index c6cc403a7a8..8483fc6f912 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.ui.xml @@ -1,11 +1,6 @@ - - - - - + - + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java similarity index 99% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java index 2012c0d21c6..cc8fecd8c30 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.oldleaderboard; +package com.sap.sailing.gwt.home.desktop.partials.old.leaderboard; import java.util.Date; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboard.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboard.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboardDelegateFullscreenViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboardDelegateFullscreenViewer.java similarity index 80% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboardDelegateFullscreenViewer.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboardDelegateFullscreenViewer.java index 6df024eee68..c8fa7123c11 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldleaderboard/OldLeaderboardDelegateFullscreenViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/leaderboard/OldLeaderboardDelegateFullscreenViewer.java @@ -1,9 +1,9 @@ -package com.sap.sailing.gwt.home.client.place.event.oldleaderboard; +package com.sap.sailing.gwt.home.desktop.partials.old.leaderboard; import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.ui.Label; -import com.sap.sailing.gwt.home.client.place.event.oldleaderboard.OldLeaderboard.OldLeaderboardDelegate; import com.sap.sailing.gwt.home.desktop.partials.old.AbstractLeaderboardFullscreenViewer; +import com.sap.sailing.gwt.home.desktop.partials.old.leaderboard.OldLeaderboard.OldLeaderboardDelegate; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; public class OldLeaderboardDelegateFullscreenViewer extends AbstractLeaderboardFullscreenViewer From 35618accb92b906185a814473dc590d96a11939d Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 14 Sep 2015 17:20:24 +0200 Subject: [PATCH 223/504] Refactoring - Moved desktop OldMultiLeaderboard partials to respective package --- .../oldmultileaderboard/OldMultiLeaderboard.css | 2 -- .../OldMultiLeaderboardResources.java | 16 ---------------- .../tabs/EventSeriesLeaderboardsTabView.java | 4 ++-- .../tabs/EventSeriesLeaderboardsTabView.ui.xml | 9 +++------ .../multileaderboard}/OldMultiLeaderboard.java | 3 +-- .../multileaderboard}/OldMultiLeaderboard.ui.xml | 3 +-- ...MultiLeaderboardDelegateFullscreenViewer.java | 4 ++-- 7 files changed, 9 insertions(+), 32 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.css delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboardResources.java rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/oldmultileaderboard => desktop/partials/old/multileaderboard}/OldMultiLeaderboard.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/oldmultileaderboard => desktop/partials/old/multileaderboard}/OldMultiLeaderboard.ui.xml (88%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/oldmultileaderboard => desktop/partials/old/multileaderboard}/OldMultiLeaderboardDelegateFullscreenViewer.java (71%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.css b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.css deleted file mode 100644 index 03187bbfe5a..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.css +++ /dev/null @@ -1,2 +0,0 @@ -.oldMultiLeaderboardPanel { -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboardResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboardResources.java deleted file mode 100644 index dbeb53f3bb5..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboardResources.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.oldmultileaderboard; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.resources.client.ClientBundle; -import com.google.gwt.resources.client.CssResource; - -public interface OldMultiLeaderboardResources extends ClientBundle { - public static final OldMultiLeaderboardResources INSTANCE = GWT.create(OldMultiLeaderboardResources.class); - - @Source("com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.css") - LocalCss css(); - - public interface LocalCss extends CssResource { - String oldMultiLeaderboardPanel(); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.java index 9dfe296c8d3..79dfc6aae84 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.java @@ -12,11 +12,11 @@ import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.oldmultileaderboard.OldMultiLeaderboardDelegateFullscreenViewer; -import com.sap.sailing.gwt.home.client.place.event.oldmultileaderboard.OldMultiLeaderboard; import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesTabView; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView; +import com.sap.sailing.gwt.home.desktop.partials.old.multileaderboard.OldMultiLeaderboard; +import com.sap.sailing.gwt.home.desktop.partials.old.multileaderboard.OldMultiLeaderboardDelegateFullscreenViewer; import com.sap.sailing.gwt.home.desktop.utils.EventParamUtils; import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.ui.xml index 2d66bf4a8da..cf719ab2066 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.ui.xml @@ -1,9 +1,6 @@ - - - + - + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java index 6d3765dca71..0d822d22293 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.oldmultileaderboard; +package com.sap.sailing.gwt.home.desktop.partials.old.multileaderboard; import java.util.Date; @@ -63,7 +63,6 @@ public class OldMultiLeaderboard extends Composite { public OldMultiLeaderboard(OldMultiLeaderboardDelegate delegate) { this.multiLeaderboardPanel = null; EventRegattaLeaderboardResources.INSTANCE.css().ensureInjected(); - OldMultiLeaderboardResources.INSTANCE.css().ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); settingsAnchor.setTitle(StringMessages.INSTANCE.settings()); autoRefreshAnchor.setTitle(StringMessages.INSTANCE.refresh()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.ui.xml similarity index 88% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.ui.xml index 25126e05c93..ecc88e15de0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboard.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboard.ui.xml @@ -3,7 +3,6 @@ -
@@ -26,7 +25,7 @@
- +
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboardDelegateFullscreenViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboardDelegateFullscreenViewer.java similarity index 71% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboardDelegateFullscreenViewer.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboardDelegateFullscreenViewer.java index 85bb18514f0..6064733f6b4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldmultileaderboard/OldMultiLeaderboardDelegateFullscreenViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/multileaderboard/OldMultiLeaderboardDelegateFullscreenViewer.java @@ -1,7 +1,7 @@ -package com.sap.sailing.gwt.home.client.place.event.oldmultileaderboard; +package com.sap.sailing.gwt.home.desktop.partials.old.multileaderboard; -import com.sap.sailing.gwt.home.client.place.event.oldmultileaderboard.OldMultiLeaderboard.OldMultiLeaderboardDelegate; import com.sap.sailing.gwt.home.desktop.partials.old.AbstractLeaderboardFullscreenViewer; +import com.sap.sailing.gwt.home.desktop.partials.old.multileaderboard.OldMultiLeaderboard.OldMultiLeaderboardDelegate; import com.sap.sailing.gwt.ui.leaderboard.MultiLeaderboardPanel; public class OldMultiLeaderboardDelegateFullscreenViewer extends From ae0a58a0613d918c1fb843a4299a302c663d9f08 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 14 Sep 2015 17:24:03 +0200 Subject: [PATCH 224/504] Refactoring - Moved desktop OldCompetitorCharts partials to respective package --- .../tabs/RegattaCompetitorAnalyticsTabView.java | 4 ++-- .../tabs/RegattaCompetitorAnalyticsTabView.ui.xml | 8 +++----- .../EventSeriesCompetitorAnalyticsTabView.java | 4 ++-- .../EventSeriesCompetitorAnalyticsTabView.ui.xml | 15 ++++++--------- .../CompetitorChartsDelegate.java | 2 +- .../competitorcharts}/OldCompetitorCharts.java | 2 +- .../competitorcharts}/OldCompetitorCharts.ui.xml | 0 ...dCompetitorChartsDelegateFullscreenViewer.java | 2 +- 8 files changed, 16 insertions(+), 21 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/oldcompetitorcharts => desktop/partials/old/competitorcharts}/CompetitorChartsDelegate.java (88%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/oldcompetitorcharts => desktop/partials/old/competitorcharts}/OldCompetitorCharts.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/oldcompetitorcharts => desktop/partials/old/competitorcharts}/OldCompetitorCharts.ui.xml (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/oldcompetitorcharts => desktop/partials/old/competitorcharts}/OldCompetitorChartsDelegateFullscreenViewer.java (96%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java index b4f5956a4d3..7b51db5c07f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java @@ -16,11 +16,11 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorCharts; -import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorChartsDelegateFullscreenViewer; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager; +import com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts.OldCompetitorCharts; +import com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts.OldCompetitorChartsDelegateFullscreenViewer; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.ui.xml index c4fb98c9694..7442367bca5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.ui.xml @@ -1,8 +1,6 @@ - - + - + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java index a437bbe3b57..9a83a47fe05 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java @@ -15,10 +15,10 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorCharts; -import com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts.OldCompetitorChartsDelegateFullscreenViewer; import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView; +import com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts.OldCompetitorCharts; +import com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts.OldCompetitorChartsDelegateFullscreenViewer; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.ui.xml index 8d2100385dd..c880827be91 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.ui.xml @@ -1,14 +1,11 @@ - + - .outerBox { - padding-top: 10px; - - } - + .outerBox { + padding-top: 10px; + } - + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/CompetitorChartsDelegate.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/competitorcharts/CompetitorChartsDelegate.java similarity index 88% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/CompetitorChartsDelegate.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/competitorcharts/CompetitorChartsDelegate.java index 1515da93f33..8a6addee28a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/CompetitorChartsDelegate.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/competitorcharts/CompetitorChartsDelegate.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts; +package com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts; import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.event.shared.HandlerRegistration; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/competitorcharts/OldCompetitorCharts.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/competitorcharts/OldCompetitorCharts.java index 741167da5eb..dd7b0129d4c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/competitorcharts/OldCompetitorCharts.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts; +package com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts; import java.util.ArrayList; import java.util.List; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/competitorcharts/OldCompetitorCharts.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorCharts.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/competitorcharts/OldCompetitorCharts.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorChartsDelegateFullscreenViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/competitorcharts/OldCompetitorChartsDelegateFullscreenViewer.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorChartsDelegateFullscreenViewer.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/competitorcharts/OldCompetitorChartsDelegateFullscreenViewer.java index 8aedb524e69..be579c2b3f2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/oldcompetitorcharts/OldCompetitorChartsDelegateFullscreenViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/old/competitorcharts/OldCompetitorChartsDelegateFullscreenViewer.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.oldcompetitorcharts; +package com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts; import com.google.gwt.dom.client.Style.Display; import com.google.gwt.dom.client.Style.Unit; From 9ae2bf87fa943a19ff2e5446af8cfbca7ee66e02 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 14 Sep 2015 17:39:24 +0200 Subject: [PATCH 225/504] Removed broken animation in regatta list on mobile multi regatta overview page --- .../mobile/partials/regattaStatus/RegattaStatus.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java index 3fa5d12f4ab..0463cf30f1c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java @@ -15,7 +15,6 @@ import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton.Toggle import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; -import com.sap.sailing.gwt.home.shared.utils.CollapseAnimation; import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRaceDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RegattasAndLiveRacesDTO; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; @@ -32,7 +31,7 @@ public class RegattaStatus extends Composite implements RefreshableWidget Date: Tue, 15 Sep 2015 09:38:46 +0200 Subject: [PATCH 226/504] added Leaderboard parameter to ScoringScheme.getScoreForRank to prepare for sophisticated surfing scoring scheme --- .../domain/leaderboard/ScoringScheme.java | 4 +- .../domain/leaderboard/impl/HighPoint.java | 6 +- .../HighPointExtremeSailingSeriesOverall.java | 4 +- ...ghPointFirstGets10Or8AndLastBreaksTie.java | 5 +- .../impl/HighPointFirstGetsFixedScore.java | 3 +- ...hPointWinnerGetsEightAndInterpolation.java | 3 +- .../domain/leaderboard/impl/LowPoint.java | 2 +- .../impl/LowPointWinnerGetsZero.java | 3 +- .../leaderboard/impl/ScoreCorrectionImpl.java | 8 +- ...WT Remote Profiling (Run-Mode only).launch | 120 +++++++------- .../SailingGWT sdm.launch | 156 +++++++++--------- java/com.sap.sailing.gwt.ui/SailingGWT.launch | 152 ++++++++--------- .../server/impl/RaceLogScoringReplicator.java | 4 +- 13 files changed, 237 insertions(+), 233 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoringScheme.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoringScheme.java index 3265f108ac5..ac3ea9608ca 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoringScheme.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoringScheme.java @@ -51,8 +51,8 @@ public interface ScoringScheme extends Serializable { * the competitor participated, null is returned, meaning the competitor has no score assigned for that * race. */ - Double getScoreForRank(RaceColumn raceColumn, Competitor competitor, int rank, - Callable numberOfCompetitorsInRaceFetcher, + Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, + int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher); /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java index 0ce6d2faeab..011075a564c 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java @@ -27,9 +27,9 @@ public class HighPoint extends AbstractScoringSchemeImpl { } @Override - public Double getScoreForRank(RaceColumn raceColumn, Competitor competitor, int rank, - Callable numberOfCompetitorsInRaceFetcher, - NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, + int rank, + Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { Double result; if (rank == 0) { result = null; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointExtremeSailingSeriesOverall.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointExtremeSailingSeriesOverall.java index e5ff8d0fff2..763c6774bee 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointExtremeSailingSeriesOverall.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointExtremeSailingSeriesOverall.java @@ -36,8 +36,8 @@ public class HighPointExtremeSailingSeriesOverall extends HighPoint { private static final int MIN_RACES_REQUIRED_TO_BE_SCORED = 5; @Override - public Double getScoreForRank(RaceColumn raceColumn, Competitor competitor, int rank, - Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, + int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { Double result; if (rank == 0) { result = null; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGets10Or8AndLastBreaksTie.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGets10Or8AndLastBreaksTie.java index 38991114d80..1b42856fe24 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGets10Or8AndLastBreaksTie.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGets10Or8AndLastBreaksTie.java @@ -11,6 +11,7 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.ScoringSchemeType; +import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; import com.sap.sse.common.Util; @@ -87,8 +88,8 @@ public class HighPointFirstGets10Or8AndLastBreaksTie extends HighPointFirstGetsF } @Override - public Double getScoreForRank(RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { - Double effectiveScore = super.getScoreForRank(raceColumn, competitor, rank, numberOfCompetitorsInRaceFetcher, numberOfCompetitorsInLeaderboardFetcher); + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + Double effectiveScore = super.getScoreForRank(leaderboard, raceColumn, competitor, rank, numberOfCompetitorsInRaceFetcher, numberOfCompetitorsInLeaderboardFetcher); return checkForOverwrittenScore(raceColumn, rank, effectiveScore); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGetsFixedScore.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGetsFixedScore.java index f9ef8bf135e..fc396010139 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGetsFixedScore.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGetsFixedScore.java @@ -5,6 +5,7 @@ import java.util.concurrent.Callable; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; @@ -41,7 +42,7 @@ public abstract class HighPointFirstGetsFixedScore extends HighPoint { } @Override - public Double getScoreForRank(RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { final int effectiveRank = getEffectiveRank(raceColumn, competitor, rank); final Double result; if (effectiveRank == 0) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointWinnerGetsEightAndInterpolation.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointWinnerGetsEightAndInterpolation.java index d964769e1e1..fc4bde418f5 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointWinnerGetsEightAndInterpolation.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointWinnerGetsEightAndInterpolation.java @@ -5,6 +5,7 @@ import java.util.concurrent.Callable; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.ScoringSchemeType; +import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; /** @@ -31,7 +32,7 @@ public class HighPointWinnerGetsEightAndInterpolation extends HighPointFirstGets } @Override - public Double getScoreForRank(RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { final int effectiveRank = getEffectiveRank(raceColumn, competitor, rank); final Double result; if (effectiveRank == 0) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java index 7ae14521751..4948bcbb713 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java @@ -27,7 +27,7 @@ public class LowPoint extends AbstractScoringSchemeImpl { } @Override - public Double getScoreForRank(RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { final int effectiveRank; final Double result; int competitorFleetOrdering; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWinnerGetsZero.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWinnerGetsZero.java index e042eed5c84..ae937639d03 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWinnerGetsZero.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWinnerGetsZero.java @@ -5,6 +5,7 @@ import java.util.concurrent.Callable; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.ScoringSchemeType; +import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; /** @@ -31,7 +32,7 @@ public class LowPointWinnerGetsZero extends LowPoint { private static final long serialVersionUID = 3405249102284162690L; @Override - public Double getScoreForRank(RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRacefetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRacefetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { return rank == 0 ? null : rank == 1 ? 0.0 : (double) rank; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ScoreCorrectionImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ScoreCorrectionImpl.java index a0891127129..2db051f163d 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ScoreCorrectionImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ScoreCorrectionImpl.java @@ -401,8 +401,8 @@ public class ScoreCorrectionImpl implements SettableScoreCorrection { public Double getUncorrectedScore() { Double resultUncorrected = 0.0; try { - resultUncorrected = scoringScheme.getScoreForRank(raceColumn, competitor, - trackedRankProvider.call(), new Callable() { + resultUncorrected = scoringScheme.getScoreForRank(leaderboard, raceColumn, + competitor, trackedRankProvider.call(), new Callable() { @Override public Integer call() { return getNumberOfCompetitorsInRace(raceColumn, competitor, numberOfCompetitorsInLeaderboardFetcher); @@ -448,8 +448,8 @@ public class ScoreCorrectionImpl implements SettableScoreCorrection { if (correctedNonMaxedScore == null || isCertainlyBeforeRaceFinish(timePoint, raceColumn, competitor)) { try { int trackedRank = trackedRankProvider.call(); - result = scoringScheme.getScoreForRank(raceColumn, competitor, trackedRank, - new Callable() { + result = scoringScheme.getScoreForRank(leaderboard, raceColumn, competitor, + trackedRank, new Callable() { @Override public Integer call() { return getNumberOfCompetitorsInRace(raceColumn, competitor, numberOfCompetitorsInLeaderboardFetcher); diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch index 4e32ff66b23..3ffcab00446 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch @@ -1,60 +1,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch index 5b26a593d23..19df6cdef27 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch @@ -1,78 +1,78 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index 8aa1cb40295..07ca62c8e6b 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -1,76 +1,76 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java index 8fb76bc3920..7c559568fae 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java @@ -176,8 +176,8 @@ public class RaceLogScoringReplicator implements RaceColumnListener { final int numberOfCompetitorsInRace, Competitor competitor, int rankByRaceCommittee) throws NoWindException { boolean scoreHasBeenCorrected = false; - Double scoreByRaceCommittee = leaderboard.getScoringScheme().getScoreForRank(raceColumn, competitor, rankByRaceCommittee, - new Callable() { + Double scoreByRaceCommittee = leaderboard.getScoringScheme().getScoreForRank(leaderboard, raceColumn, competitor, + rankByRaceCommittee, new Callable() { @Override public Integer call() { return numberOfCompetitorsInRace; From c7cc5ecb3f307f21302be10b325c0735f95d1fbb Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Tue, 15 Sep 2015 09:56:39 +0200 Subject: [PATCH 227/504] Fixed potential NoSuchElementException if a series isn't configured correctly --- .../sap/sailing/gwt/home/client/place/event/EventContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventContext.java index 634899b6b15..ad2ed4399dd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventContext.java @@ -76,7 +76,7 @@ public class EventContext { if(regattaId != null) { return regattaId; } - if(eventDTO != null && (eventDTO.getType() == EventType.SINGLE_REGATTA || eventDTO.getType() == EventType.SERIES_EVENT)) { + if(eventDTO != null && !eventDTO.getRegattas().isEmpty() && (eventDTO.getType() == EventType.SINGLE_REGATTA || eventDTO.getType() == EventType.SERIES_EVENT)) { return eventDTO.getRegattas().iterator().next().getId(); } return null; From a813515c48eb9630f4317ee999e8ede99e1a7493 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Tue, 15 Sep 2015 10:26:05 +0200 Subject: [PATCH 228/504] Added new shared gwt project for polar mining next step: resultspresenter --- .../com.google.gwt.eclipse.core.prefs | 2 +- .../META-INF/MANIFEST.MF | 4 +- .../SailingGWT sdm.launch | 1 + java/com.sap.sailing.gwt.ui/SailingGWT.launch | 1 + java/com.sap.sailing.gwt.ui/pom.xml | 6 + .../client/presentation/PolarChart.java | 102 --------------- .../ui/polarsheets/PolarResultsPresenter.java | 7 ++ .../com/sap/sailing/gwt/ui/DataMining.gwt.xml | 1 + .../.classpath | 8 ++ .../.gitignore | 3 + .../.project | 39 ++++++ .../.settings/org.eclipse.jdt.core.prefs | 12 ++ .../.settings/org.eclipse.pde.core.prefs | 3 + .../META-INF/MANIFEST.MF | 15 +++ .../build.properties | 4 + .../pom.xml | 31 +++++ .../datamining/DataMiningPolars.gwt.xml | 5 + .../datamining/shared/PolarAggregation.java | 11 ++ .../shared/PolarAggregationImpl.java | 32 +++++ .../datamining/shared/PolarStatistic.java | 14 +++ .../datamining/shared/PolarStatisticImpl.java | 119 ++++++++++++++++++ .../PolarsDataMiningSerializationDummy.java | 14 +++ .../META-INF/MANIFEST.MF | 7 +- .../PolarGPSFixRetrievalProcessor.java | 2 +- .../PolarDataAggregationProcessor.java | 31 ++--- .../data/HasCompetitorPolarContext.java | 4 - .../data/HasGPSFixPolarContext.java | 5 + .../datamining/data/PolarStatistic.java | 7 -- .../data/impl/CompetitorWithPolarContext.java | 6 - .../data/impl/GPSFixWithPolarContext.java | 16 ++- .../data/impl/PolarStatisticImpl.java | 48 ------- .../data/impl/SpeedClusterGroup.java | 2 +- .../META-INF/MANIFEST.MF | 1 + .../SailingServer (No Proxy).launch | 2 +- java/pom.xml | 1 + 35 files changed, 376 insertions(+), 190 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/client/presentation/PolarChart.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarResultsPresenter.java create mode 100644 java/com.sap.sailing.polars.datamining.shared/.classpath create mode 100644 java/com.sap.sailing.polars.datamining.shared/.gitignore create mode 100644 java/com.sap.sailing.polars.datamining.shared/.project create mode 100644 java/com.sap.sailing.polars.datamining.shared/.settings/org.eclipse.jdt.core.prefs create mode 100644 java/com.sap.sailing.polars.datamining.shared/.settings/org.eclipse.pde.core.prefs create mode 100644 java/com.sap.sailing.polars.datamining.shared/META-INF/MANIFEST.MF create mode 100644 java/com.sap.sailing.polars.datamining.shared/build.properties create mode 100644 java/com.sap.sailing.polars.datamining.shared/pom.xml create mode 100644 java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/DataMiningPolars.gwt.xml create mode 100644 java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java create mode 100644 java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java create mode 100644 java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatistic.java create mode 100644 java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java create mode 100644 java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java delete mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/PolarStatistic.java delete mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/PolarStatisticImpl.java diff --git a/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs b/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs index aad12768896..3c34989dcae 100755 --- a/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs +++ b/java/com.sap.sailing.gwt.ui/.settings/com.google.gwt.eclipse.core.prefs @@ -1,4 +1,4 @@ eclipse.preferences.version=1 entryPointModules= filesCopiedToWebInfLib=gwt-servlet.jar -gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBWy13YXIgLiAtbG9jYWxXb3JrZXJzIDQgLXN0cmljdCAtbG9nTGV2ZWwgVFJBQ0VdXT48L2V4dHJhLWFyZ3M+PHZtLWFyZ3M+PCFbQ0RBVEFbLVhteDIwMjRtIC1EZ3d0LnVzZWFyY2hpdmVzPWZhbHNlXV0+PC92bS1hcmdzPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC5yZWdhdHRhb3ZlcnZpZXcuUmVnYXR0YU92ZXJ2aWV3PC9lbnRyeS1wb2ludC1tb2R1bGU+PC9nd3QtY29tcGlsZS1zZXR0aW5ncz4\= +gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBWy13YXIgLiAtbG9jYWxXb3JrZXJzIDQgLXN0cmljdCAtbG9nTGV2ZWwgVFJBQ0VdXT48L2V4dHJhLWFyZ3M+PHZtLWFyZ3M+PCFbQ0RBVEFbLVhteDIwMjRtIC1EZ3d0LnVzZWFyY2hpdmVzPWZhbHNlXV0+PC92bS1hcmdzPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLnNhcC5zYWlsaW5nLmd3dC51aS5EYXRhTWluaW5nPC9lbnRyeS1wb2ludC1tb2R1bGU+PC9nd3QtY29tcGlsZS1zZXR0aW5ncz4\= diff --git a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF index 25fc0f04f4e..591be90aa8e 100644 --- a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF @@ -48,7 +48,9 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sse.filestorage, org.apache.shiro.core;bundle-version="1.2.2", com.sap.sse.gwt.theme, - com.sap.sailing.news + com.sap.sailing.news, + com.sap.sailing.polars.datamining.shared;bundle-version="1.0.0", + com.sap.sailing.polars.datamining Bundle-Activator: com.sap.sailing.gwt.ui.server.Activator Bundle-ActivationPolicy: lazy Import-Package: javax.servlet;version="3.1.0", diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch index d73c14c31f1..7d344e8dd8c 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch @@ -67,6 +67,7 @@ + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index 1690e01f416..e769c4dcdb9 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -45,6 +45,7 @@ + diff --git a/java/com.sap.sailing.gwt.ui/pom.xml b/java/com.sap.sailing.gwt.ui/pom.xml index 4e712905572..5a841b595e3 100755 --- a/java/com.sap.sailing.gwt.ui/pom.xml +++ b/java/com.sap.sailing.gwt.ui/pom.xml @@ -106,6 +106,12 @@ 1.0.0-SNAPSHOT sources + + com.sap.sailing + com.sap.sailing.polars.datamining.shared + 1.0.0-SNAPSHOT + sources + com.github.gwtbootstrap gwt-bootstrap diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/client/presentation/PolarChart.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/client/presentation/PolarChart.java deleted file mode 100644 index 27b4dfc091f..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/client/presentation/PolarChart.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.sap.sailing.gwt.ui.datamining.client.presentation; - -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; - -import org.moxieapps.gwt.highcharts.client.Chart; -import org.moxieapps.gwt.highcharts.client.Series; -import org.moxieapps.gwt.highcharts.client.plotOptions.LinePlotOptions; - -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.ui.datamining.ResultsPresenter; -import com.sap.sse.datamining.shared.GroupKey; -import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; - -/** - * Expects the inner key in the group key to be the angle for the polar chart. (x-value) Maybe the angle should be - * transfered as part of the result value in the future. But in the backend the angle is treated as a key (for polar - * sheets) for grouping all polar fixes with the same rounded angle - * - * @author Frederik Petersen D054528 - * - */ -public class PolarChart implements ResultsPresenter { - - private final Chart chart = createPolarChartWidget(); - - private final Map dataByKeyStringAndAngle = new HashMap(); - - @Override - public Widget getWidget() { - return chart; - } - - /** - * Creates a polar diagram chart of the Line type. - */ - private Chart createPolarChartWidget() { - Chart polarSheetChart = new Chart().setType(Series.Type.LINE) - .setLinePlotOptions(new LinePlotOptions().setLineWidth(1)) - .setPolar(true).setHeight100().setWidth100(); - polarSheetChart.getYAxis().setMin(0); - return polarSheetChart; - } - - @Override - public void showResult(QueryResultDTO result) { - resetChartData(); - @SuppressWarnings("unchecked") - Map results = (Map) result.getResults(); - if (!results.isEmpty()) { - for (Entry resultEntry : results.entrySet()) { - GroupKey key = resultEntry.getKey(); - StringBuilder keyStringBuilder = new StringBuilder(); - GroupKey currentKey = key; - while (currentKey.hasSubKey()) { - keyStringBuilder.append(currentKey.getMainKey()); - currentKey = currentKey.getSubKey(); - } - int angle = Integer.parseInt(currentKey.toString()); - String keyString = keyStringBuilder.toString(); - Series series = dataByKeyStringAndAngle.get(keyString); - if (series == null) { - series = chart.createSeries(); - dataByKeyStringAndAngle.put(keyString, series); - } - series.addPoint(angle, resultEntry.getValue()); - series.setName(keyString); - } - } - } - - private void resetChartData() { - dataByKeyStringAndAngle.clear(); - chart.removeAllSeries(); - } - - @Override - public void showError(String error) { - // TODO Auto-generated method stub - - } - - @Override - public void showError(String mainError, Iterable detailedErrors) { - // TODO Auto-generated method stub - - } - - @Override - public void showBusyIndicator() { - // TODO Auto-generated method stub - - } - - @Override - public QueryResultDTO getCurrentResult() { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarResultsPresenter.java new file mode 100644 index 00000000000..891eaf517d8 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarResultsPresenter.java @@ -0,0 +1,7 @@ +package com.sap.sailing.gwt.ui.polarsheets; + + +public class PolarResultsPresenter { + + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml index 67d8ad77dff..1e831a9ff5f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml @@ -23,6 +23,7 @@ + diff --git a/java/com.sap.sailing.polars.datamining.shared/.classpath b/java/com.sap.sailing.polars.datamining.shared/.classpath new file mode 100644 index 00000000000..c5578deadd1 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/java/com.sap.sailing.polars.datamining.shared/.gitignore b/java/com.sap.sailing.polars.datamining.shared/.gitignore new file mode 100644 index 00000000000..b76a9310907 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/.gitignore @@ -0,0 +1,3 @@ +/bin +/bin/ +/bin/ diff --git a/java/com.sap.sailing.polars.datamining.shared/.project b/java/com.sap.sailing.polars.datamining.shared/.project new file mode 100644 index 00000000000..b6b59d79740 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/.project @@ -0,0 +1,39 @@ + + + com.sap.sailing.polars.datamining.shared + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + com.google.gdt.eclipse.core.webAppProjectValidator + + + + + com.google.gwt.eclipse.core.gwtProjectValidator + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + com.google.gwt.eclipse.core.gwtNature + + diff --git a/java/com.sap.sailing.polars.datamining.shared/.settings/org.eclipse.jdt.core.prefs b/java/com.sap.sailing.polars.datamining.shared/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000000..a698e59674f --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/java/com.sap.sailing.polars.datamining.shared/.settings/org.eclipse.pde.core.prefs b/java/com.sap.sailing.polars.datamining.shared/.settings/org.eclipse.pde.core.prefs new file mode 100644 index 00000000000..f29e940a005 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/.settings/org.eclipse.pde.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +pluginProject.extensions=false +resolve.requirebundle=false diff --git a/java/com.sap.sailing.polars.datamining.shared/META-INF/MANIFEST.MF b/java/com.sap.sailing.polars.datamining.shared/META-INF/MANIFEST.MF new file mode 100644 index 00000000000..d0a52fdc80f --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/META-INF/MANIFEST.MF @@ -0,0 +1,15 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Datamining-Polars-Shared +Bundle-SymbolicName: com.sap.sailing.polars.datamining.shared +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: SAP +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-ActivationPolicy: lazy +Bundle-ClassPath: . +Require-Bundle: com.sap.sse.datamining.shared, + com.sap.sailing.domain.common, + com.sap.sailing.domain;bundle-version="1.0.0", + com.sap.sse;bundle-version="1.0.0", + com.sap.sse.common;bundle-version="1.0.0" +Export-Package: com.sap.sailing.polars.datamining.shared diff --git a/java/com.sap.sailing.polars.datamining.shared/build.properties b/java/com.sap.sailing.polars.datamining.shared/build.properties new file mode 100644 index 00000000000..5b359b5b78b --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining.shared/pom.xml b/java/com.sap.sailing.polars.datamining.shared/pom.xml new file mode 100644 index 00000000000..d9a6b25da3b --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + root + com.sap.sailing + 1.0.0-SNAPSHOT + + com.sap.sailing.polars.datamining.shared + eclipse-plugin + + + + org.eclipse.tycho + tycho-source-plugin + ${tycho-version} + + + plugin-source + generate-sources + + plugin-source + + + + + + + diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/DataMiningPolars.gwt.xml b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/DataMiningPolars.gwt.xml new file mode 100644 index 00000000000..f1215a9213d --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/DataMiningPolars.gwt.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java new file mode 100644 index 00000000000..03b392c0f9d --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java @@ -0,0 +1,11 @@ +package com.sap.sailing.polars.datamining.shared; + +import java.io.Serializable; + +public interface PolarAggregation extends Serializable { + + void addElement(PolarStatistic dataEntry); + + double[] getAverageSpeedsPerAngle(); + +} diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java new file mode 100644 index 00000000000..197ec5cd4f5 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java @@ -0,0 +1,32 @@ +package com.sap.sailing.polars.datamining.shared; + + +public class PolarAggregationImpl implements PolarAggregation { + + private static final long serialVersionUID = 9177124509619315748L; + private double[] sumSpeedsPerAngle = new double[360]; + private double[] countPerAngle = new double[360]; + + @Override + public void addElement(PolarStatistic dataEntry) { + long roundedAngleDeg = Math.round(dataEntry.getTrueWindAngleDeg()); + int angleDeg = (int) roundedAngleDeg; + if (angleDeg < 0) { + angleDeg = (360 + angleDeg); + } + sumSpeedsPerAngle[angleDeg] += dataEntry.getBoatSpeed().getKnots(); + countPerAngle[angleDeg]++; + } + + @Override + public double[] getAverageSpeedsPerAngle() { + double[] averages = new double[360]; + for (int i = 0; i < 360; i++) { + if (countPerAngle[i] > 0) { + averages[i] = sumSpeedsPerAngle[0] / countPerAngle[0]; + } + } + return averages; + } + +} diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatistic.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatistic.java new file mode 100644 index 00000000000..ffa74ed2d45 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatistic.java @@ -0,0 +1,14 @@ +package com.sap.sailing.polars.datamining.shared; + +import com.sap.sailing.domain.common.Speed; +import com.sap.sailing.domain.common.SpeedWithBearing; + +public interface PolarStatistic { + + public SpeedWithBearing getBoatSpeed(); + + public Speed getWindSpeed(); + + public double getTrueWindAngleDeg(); + +} diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java new file mode 100644 index 00000000000..92b265aa684 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java @@ -0,0 +1,119 @@ +package com.sap.sailing.polars.datamining.shared; + +import java.util.HashSet; +import java.util.Set; + +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.common.Bearing; +import com.sap.sailing.domain.common.PolarSheetGenerationSettings; +import com.sap.sailing.domain.common.Position; +import com.sap.sailing.domain.common.Speed; +import com.sap.sailing.domain.common.SpeedWithBearing; +import com.sap.sailing.domain.common.Wind; +import com.sap.sailing.domain.common.WindSource; +import com.sap.sailing.domain.common.WindSourceType; +import com.sap.sailing.domain.common.tracking.GPSFixMoving; +import com.sap.sailing.domain.tracking.GPSFixTrack; +import com.sap.sailing.domain.tracking.TrackedRace; + +public class PolarStatisticImpl implements PolarStatistic { + + private final SpeedWithBearing boatSpeed; + private final Wind windSpeed; + private final double trueWindAngleDeg; + + public PolarStatisticImpl(TrackedRace trackedRace, Competitor competitor, GPSFixMoving fix, PolarSheetGenerationSettings settings) { + GPSFixTrack track = trackedRace.getTrack(competitor); + boatSpeed = track.getEstimatedSpeed(fix.getTimePoint()); + Bearing bearing = boatSpeed.getBearing(); + + Position position = fix.getPosition(); + this.windSpeed = trackedRace.getWind(position, fix.getTimePoint(), collectWindSourcesToIgnoreForSpeed(trackedRace)); + Set windSourcesToExclude; + if (settings.useOnlyEstimatedForWindDirection()) { + windSourcesToExclude = collectWindSourcesToIgnoreForBearing(trackedRace, /* exclude course based */true); + } else { + windSourcesToExclude = new HashSet(); + } + + Wind windEstimated = trackedRace.getWind(position, fix.getTimePoint(), windSourcesToExclude); + if (windEstimated == null) { + // no estimated wind; try to include course layout + windSourcesToExclude = collectWindSourcesToIgnoreForBearing(trackedRace, /* exclude course based */false); + windEstimated = trackedRace.getWind(position, fix.getTimePoint(), windSourcesToExclude); + } + if (windEstimated == null) { + windEstimated = windSpeed; // maybe no upwind start; need to default to measured wind speed/direction + } + Bearing windBearing = windEstimated.getFrom(); + trueWindAngleDeg = bearing.getDifferenceTo(windBearing).getDegrees(); + } + + @Override + public SpeedWithBearing getBoatSpeed() { + return boatSpeed; + } + + @Override + public Speed getWindSpeed() { + return windSpeed; + } + + @Override + public double getTrueWindAngleDeg() { + return trueWindAngleDeg; + } + + private Set collectWindSourcesToIgnoreForBearing(TrackedRace race, boolean excludeCourseBased) { + Set windSourcesToExclude = new HashSet(); + Iterable combinedSources = race.getWindSources(WindSourceType.COMBINED); + for (WindSource combinedSource : combinedSources) { + windSourcesToExclude.add(combinedSource); + } + if (excludeCourseBased) { + Iterable courseSources = race.getWindSources(WindSourceType.COURSE_BASED); + for (WindSource courseSource : courseSources) { + windSourcesToExclude.add(courseSource); + } + } + Iterable expSources = race.getWindSources(WindSourceType.EXPEDITION); + for (WindSource expSource : expSources) { + windSourcesToExclude.add(expSource); + } + Iterable rcSources = race.getWindSources(WindSourceType.RACECOMMITTEE); + for (WindSource rcSource : rcSources) { + windSourcesToExclude.add(rcSource); + } + Iterable webSources = race.getWindSources(WindSourceType.WEB); + for (WindSource webSource : webSources) { + windSourcesToExclude.add(webSource); + } + return windSourcesToExclude; + } + + private Set collectWindSourcesToIgnoreForSpeed(TrackedRace race) { + Set windSourcesToExclude = new HashSet(); + Iterable combinedSources = race.getWindSources(WindSourceType.COMBINED); + for (WindSource combinedSource : combinedSources) { + windSourcesToExclude.add(combinedSource); + } + Iterable courseSources = race.getWindSources(WindSourceType.COURSE_BASED); + for (WindSource courseSource : courseSources) { + windSourcesToExclude.add(courseSource); + } + Iterable trackBasedSources = race.getWindSources(WindSourceType.TRACK_BASED_ESTIMATION); + for (WindSource trackBasedSource : trackBasedSources) { + windSourcesToExclude.add(trackBasedSource); + } + Iterable rcSources = race.getWindSources(WindSourceType.RACECOMMITTEE); + for (WindSource rcSource : rcSources) { + windSourcesToExclude.add(rcSource); + } + Iterable webSources = race.getWindSources(WindSourceType.WEB); + for (WindSource webSource : webSources) { + windSourcesToExclude.add(webSource); + } + return windSourcesToExclude; + } + +} diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java new file mode 100644 index 00000000000..c7c97be455f --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java @@ -0,0 +1,14 @@ +package com.sap.sailing.polars.datamining.shared; + +import com.sap.sse.datamining.shared.SerializationDummy; + +@SuppressWarnings("unused") +public final class PolarsDataMiningSerializationDummy implements SerializationDummy { + private static final long serialVersionUID = 2L; + + private PolarAggregation polarAggregation; + private PolarAggregationImpl polarAggregationImpl; + + private PolarsDataMiningSerializationDummy() { } + +} diff --git a/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF b/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF index f5f1b3039fb..6093ff99f80 100644 --- a/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF @@ -14,7 +14,10 @@ Require-Bundle: org.eclipse.osgi;bundle-version="3.10.1", com.sap.sse.common;bundle-version="1.0.0", com.sap.sailing.domain;bundle-version="1.0.0", com.sap.sailing.domain.shared.android, - com.sap.sailing.domain.common;bundle-version="1.0.0" + com.sap.sailing.domain.common;bundle-version="1.0.0", + com.sap.sailing.polars;bundle-version="1.0.0", + com.sap.sailing.polars.datamining.shared Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy -Export-Package: com.sap.sailing.polars.datamining.data.impl +Export-Package: com.sap.sailing.polars.datamining.data, + com.sap.sailing.polars.datamining.data.impl diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java index d6ee772060b..a1939d4d58e 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java @@ -49,7 +49,7 @@ public class PolarGPSFixRetrievalProcessor extends AbstractRetrievalProcessor fixes = track.getFixes(startTime, true, finishTime, false); for (GPSFixMoving fix : fixes) { - result.add(new GPSFixWithPolarContext(fix, trackedRace, windSpeedRangeGroup)); + result.add(new GPSFixWithPolarContext(fix, trackedRace, windSpeedRangeGroup, competitor, settings)); } } finally { track.unlockAfterRead(); diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java index b85bce2ccda..3d224048355 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java @@ -5,7 +5,9 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; -import com.sap.sailing.polars.datamining.data.PolarStatistic; +import com.sap.sailing.polars.datamining.shared.PolarAggregation; +import com.sap.sailing.polars.datamining.shared.PolarAggregationImpl; +import com.sap.sailing.polars.datamining.shared.PolarStatistic; import com.sap.sse.datamining.components.AggregationProcessorDefinition; import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.impl.components.GroupedDataEntry; @@ -13,38 +15,37 @@ import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefiniti import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelGroupedDataAggregationProcessor; import com.sap.sse.datamining.shared.GroupKey; -public class PolarDataAggregationProcessor extends AbstractParallelGroupedDataAggregationProcessor { +public class PolarDataAggregationProcessor extends AbstractParallelGroupedDataAggregationProcessor { private static final String POLARS_MESSAGE_KEY = "Polars"; //FIXME!!! Replace Integer with actual result data type - private final Map countMap = new HashMap<>(); + private final Map resultMap = new HashMap<>(); public PolarDataAggregationProcessor(ExecutorService executor, - Collection, ?>> resultReceivers) { + Collection, ?>> resultReceivers) { super(executor, resultReceivers, POLARS_MESSAGE_KEY); } - private static final AggregationProcessorDefinition DEFINITION = - new SimpleAggregationProcessorDefinition<>(PolarStatistic.class, Integer.class, POLARS_MESSAGE_KEY, PolarDataAggregationProcessor.class); + private static final AggregationProcessorDefinition DEFINITION = + new SimpleAggregationProcessorDefinition<>(PolarStatistic.class, PolarAggregation.class, POLARS_MESSAGE_KEY, PolarDataAggregationProcessor.class); - public static AggregationProcessorDefinition getDefinition() { + public static AggregationProcessorDefinition getDefinition() { return DEFINITION; } @Override protected void handleElement(GroupedDataEntry element) { - //FIXME do actual polar regression here - int count = element.getDataEntry().getFixCount(); - Integer currentCount = countMap.get(element.getKey()); - if (currentCount == null) { - currentCount = 0; + PolarAggregation polarAggregation = resultMap.get(element.getKey()); + if (polarAggregation == null) { + polarAggregation = new PolarAggregationImpl(); + resultMap.put(element.getKey(), polarAggregation); } - countMap.put(element.getKey(), currentCount + count); + polarAggregation.addElement(element.getDataEntry()); } @Override - protected Map getResult() { - return countMap; + protected Map getResult() { + return resultMap; } } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java index 8a2cf9d2dac..7e61f948091 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java @@ -4,7 +4,6 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.datamining.shared.annotations.Connector; -import com.sap.sse.datamining.shared.annotations.Statistic; public interface HasCompetitorPolarContext { @@ -14,8 +13,5 @@ public interface HasCompetitorPolarContext { TrackedRace getTrackedRace(); Leg getLeg(); - - @Statistic(messageKey="PolarData") - PolarStatistic getPolarStatistics(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java index 673701eb29d..9b90f3f39fc 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java @@ -1,11 +1,16 @@ package com.sap.sailing.polars.datamining.data; +import com.sap.sailing.polars.datamining.shared.PolarStatistic; import com.sap.sse.datamining.shared.annotations.Dimension; +import com.sap.sse.datamining.shared.annotations.Statistic; import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; public interface HasGPSFixPolarContext { @Dimension(messageKey="WindRange") ClusterDTO getWindSpeedRange(); + + @Statistic(messageKey="PolarData") + PolarStatistic getPolarStatistics(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/PolarStatistic.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/PolarStatistic.java deleted file mode 100644 index 354830b6938..00000000000 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/PolarStatistic.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.sap.sailing.polars.datamining.data; - -public interface PolarStatistic { - - int getFixCount(); - -} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java index 0f8f12d16b2..28f4f2e0cb5 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java @@ -4,7 +4,6 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; -import com.sap.sailing.polars.datamining.data.PolarStatistic; public class CompetitorWithPolarContext implements HasCompetitorPolarContext { @@ -33,9 +32,4 @@ public class CompetitorWithPolarContext implements HasCompetitorPolarContext { return leg; } - @Override - public PolarStatistic getPolarStatistics() { - return new PolarStatisticImpl(trackedRace, competitor, leg); - } - } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java index 4751684c447..d722eef4da6 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java @@ -1,10 +1,14 @@ package com.sap.sailing.polars.datamining.data.impl; +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.common.PolarSheetGenerationSettings; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.common.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.polars.datamining.data.HasGPSFixPolarContext; +import com.sap.sailing.polars.datamining.shared.PolarStatistic; +import com.sap.sailing.polars.datamining.shared.PolarStatisticImpl; import com.sap.sse.datamining.data.ClusterGroup; import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; @@ -13,11 +17,16 @@ public class GPSFixWithPolarContext implements HasGPSFixPolarContext { private final GPSFixMoving fix; private final TrackedRace trackedRace; private final ClusterGroup windSpeedRangeGroup; + private final Competitor competitor; + private final PolarSheetGenerationSettings settings; - public GPSFixWithPolarContext(GPSFixMoving fix, TrackedRace trackedRace, ClusterGroup windSpeedRangeGroup) { + public GPSFixWithPolarContext(GPSFixMoving fix, TrackedRace trackedRace, ClusterGroup windSpeedRangeGroup, Competitor competitor, + PolarSheetGenerationSettings settings) { this.fix = fix; this.trackedRace = trackedRace; this.windSpeedRangeGroup = windSpeedRangeGroup; + this.competitor = competitor; + this.settings = settings; } @Override @@ -27,4 +36,9 @@ public class GPSFixWithPolarContext implements HasGPSFixPolarContext { return new ClusterDTO(windSpeedRangeGroup.getClusterFor(wind).toString()); } + @Override + public PolarStatistic getPolarStatistics() { + return new PolarStatisticImpl(trackedRace, competitor, fix, settings); + } + } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/PolarStatisticImpl.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/PolarStatisticImpl.java deleted file mode 100644 index 3cfce782c36..00000000000 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/PolarStatisticImpl.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.sap.sailing.polars.datamining.data.impl; - -import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.Leg; -import com.sap.sailing.domain.common.tracking.GPSFixMoving; -import com.sap.sailing.domain.tracking.GPSFixTrack; -import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; -import com.sap.sailing.domain.tracking.TrackedRace; -import com.sap.sailing.polars.datamining.data.PolarStatistic; -import com.sap.sse.common.TimePoint; - -public class PolarStatisticImpl implements PolarStatistic { - - private final TrackedRace trackedRace; - private final Competitor competitor; - private final Leg leg; - - public PolarStatisticImpl(TrackedRace trackedRace, Competitor competitor, Leg leg) { - this.trackedRace = trackedRace; - this.competitor = competitor; - this.leg = leg; - } - - @Override - public int getFixCount() { - GPSFixTrack track = trackedRace.getTrack(competitor); - TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(competitor, leg); - TimePoint startTime = trackedLeg.getStartTime(); - TimePoint finishTime = trackedLeg.getFinishTime(); - int count = 0; - if (startTime != null && finishTime != null) { - track.lockForRead(); - - // FIXME just return the fixes - try { - Iterable fixes = track.getFixes(startTime, true, finishTime, false); - - for (GPSFixMoving fix : fixes) { - count++; - } - } finally { - track.unlockAfterRead(); - } - } - return count; - } - -} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/SpeedClusterGroup.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/SpeedClusterGroup.java index d20d8b191e5..88eb2d91f7c 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/SpeedClusterGroup.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/SpeedClusterGroup.java @@ -89,7 +89,7 @@ public class SpeedClusterGroup extends FixClusterGroup { rawDoubleLevelMids[i] = rawIntegerStepping[i]; } - return new SpeedClusterGroup("SpeedClusterGroup", rawDoubleLevelMids, maxDistance); + return new SpeedClusterGroup(rawDoubleLevelMids, maxDistance); } diff --git a/java/com.sap.sailing.polars/META-INF/MANIFEST.MF b/java/com.sap.sailing.polars/META-INF/MANIFEST.MF index c830735c4fd..1f581bfb7c5 100644 --- a/java/com.sap.sailing.polars/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.polars/META-INF/MANIFEST.MF @@ -8,6 +8,7 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ClassPath: . Export-Package: com.sap.sailing.polars.data, + com.sap.sailing.polars.mining, com.sap.sailing.polars.regression, com.sap.sailing.polars.windestimation Require-Bundle: diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy).launch b/java/com.sap.sailing.server/SailingServer (No Proxy).launch index a826e010490..c98155c16e9 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy).launch @@ -34,5 +34,5 @@ - + diff --git a/java/pom.xml b/java/pom.xml index 5fcbde69d97..a3272bc4c63 100755 --- a/java/pom.xml +++ b/java/pom.xml @@ -134,6 +134,7 @@ com.sap.sailing.feature.p2build com.sap.sailing.polars com.sap.sailing.polars.datamining + com.sap.sailing.polars.datamining.shared com.sap.sailing.polars.test -
-
-
-
- - - -
-
-
-

-
- -
-
-
-
 
-
 
-
 
-
-
-
-
-
-
-
-
-
- -
- -
-
-
-
- - diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaPhase.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaPhase.java deleted file mode 100644 index 9965b202503..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaPhase.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.AnchorElement; -import com.google.gwt.dom.client.DivElement; -import com.google.gwt.dom.client.SpanElement; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.Event; -import com.google.gwt.user.client.EventListener; -import com.google.gwt.user.client.ui.UIObject; -import com.sap.sailing.domain.common.LeaderboardNameConstants; -import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.gwt.common.client.LinkUtil; -import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; -import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; -import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; -import com.sap.sailing.gwt.ui.shared.RaceGroupDTO; -import com.sap.sailing.gwt.ui.shared.RaceGroupSeriesDTO; -import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; - -public class RegattaPhase extends UIObject { - private static RegattaPhaseUiBinder uiBinder = GWT.create(RegattaPhaseUiBinder.class); - - interface RegattaPhaseUiBinder extends UiBinder { - } - - @UiField SpanElement phaseName; - @UiField DivElement phaseRacesDiv; - @UiField AnchorElement phaseRacesAnchor; - - public RegattaPhase(RaceGroupSeriesDTO series, final LeaderboardGroupDTO leaderboardGroup, - final StrippedLeaderboardDTO leaderboard, final RaceGroupDTO raceGroup, final EventView.Presenter presenter) { - RegattaResources.INSTANCE.css().ensureInjected(); - setElement(uiBinder.createAndBindUi(this)); - - if(LeaderboardNameConstants.DEFAULT_SERIES_NAME.equals(series.getName())) { - phaseName.setInnerText("Races"); - } else { - phaseName.setInnerText(series.getName()); - } - - for(RaceColumnDTO raceColumn: series.getRaceColumns()) { - // the raceColumn from the RaceGroupSeriesDTO does not contain all required information for the race state. - // therefore we take it from the LeaderboardDTO - // TODO: try to have only one RaceColumnDTO - RaceColumnDTO raceColumn2 = leaderboard.getRaceColumnByName(raceColumn.getName()); - RegattaPhaseRace race = new RegattaPhaseRace(raceColumn2, presenter.getTimerForClientServerOffset()); - phaseRacesDiv.appendChild(race.getElement()); - - final PlaceNavigation racesPlaceNavigation = presenter.getRegattaRacesNavigation(leaderboard.regattaName); - phaseRacesAnchor.setHref(racesPlaceNavigation.getTargetUrl()); - Event.sinkEvents(phaseRacesAnchor, Event.ONCLICK); - Event.setEventListener(phaseRacesAnchor, new EventListener() { - @Override - public void onBrowserEvent(Event browserEvent) { - if(LinkUtil.handleLinkClick(browserEvent)) { - browserEvent.preventDefault(); - racesPlaceNavigation.goToPlace(); - } - } - }); - } - } - - public RegattaPhase() { - RegattaResources.INSTANCE.css().ensureInjected(); - setElement(uiBinder.createAndBindUi(this)); - - phaseName.setInnerText("No series defined yet."); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaPhase.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaPhase.ui.xml deleted file mode 100644 index 00f4a17d9d9..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaPhase.ui.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - -
-
- - - diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaPhaseRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaPhaseRace.java deleted file mode 100644 index c35bf551614..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaPhaseRace.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.DivElement; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.UIObject; -import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.domain.common.dto.RaceColumnDTO.RaceColumnLiveState; -import com.sap.sse.gwt.client.player.Timer; - -public class RegattaPhaseRace extends UIObject { - private static RegattaPhaseRaceUiBinder uiBinder = GWT.create(RegattaPhaseRaceUiBinder.class); - - interface RegattaPhaseRaceUiBinder extends UiBinder { - } - - @UiField DivElement raceColumnStatus; - - private enum DataStatusEnum { - FINISHED ("finished"), LIVE("live"), SCHEDULED("scheduled"); - - private final String attributeValue; - private static final String ATTRIBUTE_NAME = "data-status"; - - DataStatusEnum(String attributeValue) { - this.attributeValue = attributeValue; - } - } - - public RegattaPhaseRace(RaceColumnDTO raceColumn, Timer timerForClientServerOffset) { - RegattaResources.INSTANCE.css().ensureInjected(); - setElement(uiBinder.createAndBindUi(this)); - - DataStatusEnum dataStatus = DataStatusEnum.SCHEDULED; - RaceColumnLiveState liveState = raceColumn.getLiveState(timerForClientServerOffset.getLiveTimePointInMillis()); - - switch(liveState) { - case NOT_TRACKED: - dataStatus = DataStatusEnum.SCHEDULED; - break; - case TRACKED: - dataStatus = DataStatusEnum.FINISHED; - break; - case TRACKED_AND_LIVE: - dataStatus = DataStatusEnum.LIVE; - break; - } - raceColumnStatus.setAttribute(DataStatusEnum.ATTRIBUTE_NAME, dataStatus.attributeValue); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaPhaseRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaPhaseRace.ui.xml deleted file mode 100644 index b1f61997d16..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaPhaseRace.ui.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - -
-
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaResources.java deleted file mode 100644 index 195c9155fbc..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/RegattaResources.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.resources.client.ClientBundle; -import com.google.gwt.resources.client.CssResource; -import com.google.gwt.resources.client.CssResource.Shared; - -public interface RegattaResources extends ClientBundle { - public static final RegattaResources INSTANCE = GWT.create(RegattaResources.class); - - @Source("Regatta.gss") - LocalCss css(); - - @Shared - public interface LocalCss extends CssResource { - String regatta(); - String regatta_intro_details_itemhideoncompact(); - String regatta_intro(); - String regatta_intro_image(); - String regatta_intro_header(); - String regatta_intro_header_name(); - String regatta_intro_header_namelink(); - String regatta_intro_header_details(); - String regatta_intro_header_details_item(); - String regatta_intro_header_details_item_value(); - String regatta_intro_header_details_label(); - String regatta_intro_phases(); - String regatta_intro_phases_phase(); - String regatta_intro_phases_phase_name(); - String regatta_intro_phases_phase_races(); - String regatta_intro_phases_phase_races_race(); - String regatta_intro_phases_leaderboardlink(); - String regatta_intro_scheduled(); - String regatta_intro_results(); - String regatta_intro_results_competitor(); - String regatta_intro_results_competitor_name(); - String regatta_intro_fleets(); - String regatta_intro_fleets_fleet(); - String regatta_intro_fleets_fleet_item(); - String regatta_intro_fleets_fleet_itemfirst(); - String regatta_intro_fleets_fleet_item_value(); - String regatta_intro_fleets_fleet_item_flag(); - String regatta_intro_fleets_fleet_live(); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/eventregatta/EventRegattaList.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/eventregatta/EventRegattaList.gss deleted file mode 100644 index 0593339b6c4..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/eventregatta/EventRegattaList.gss +++ /dev/null @@ -1,35 +0,0 @@ -.eventregattalist { - font-size: 15px; - /* @alternate */ font-size: 1rem; -} - -.eventregattalist_navigation { - padding: 1.333333333333333em 0; - border-bottom: 1px solid #ccc; -} - -.item:before { - display: inline-block; - width: 15px; - content: " "; - text-align: left; -} - -.selectedItem:before { - content: "\2713"; -} - - -.item, .item:hover, .item:active, .item:focus { - font-weight: 700; - color: #aaa; - text-decoration: none; - margin-left: 10px; -} -.selectedItem, .selectedItem:focus { - color: #666; -} - -.regattaGroupsNavigationPanel { - text-align: right; -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/eventregatta/EventRegattaList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/eventregatta/EventRegattaList.java deleted file mode 100644 index 0fd6f0f92ba..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/eventregatta/EventRegattaList.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.eventregatta; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.AnchorElement; -import com.google.gwt.dom.client.DivElement; -import com.google.gwt.dom.client.Document; -import com.google.gwt.dom.client.Style.Display; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.DOM; -import com.google.gwt.user.client.Event; -import com.google.gwt.user.client.EventListener; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.HTMLPanel; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.EventView.Presenter; -import com.sap.sailing.gwt.home.client.place.event.partials.Regatta; -import com.sap.sailing.gwt.home.client.shared.LongNamesUtil; -import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; -import com.sap.sailing.gwt.ui.shared.RaceGroupDTO; -import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; -import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; -import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; -import com.sap.sse.common.Util.Triple; - -public class EventRegattaList extends Composite { - private static EventRegattaHeaderUiBinder uiBinder = GWT.create(EventRegattaHeaderUiBinder.class); - - interface EventRegattaHeaderUiBinder extends UiBinder { - } - -// @UiField DivElement seriesLeaderboardDiv; -// @UiField AnchorElement seriesLeaderboardAnchor; - - @UiField DivElement regattaGroupsNavigationPanel; - @UiField DivElement regattaListNavigationDiv; - @UiField HTMLPanel regattaListItemsPanel; - @UiField AnchorElement filterNoLeaderboardGroupsAnchor; - - private final Map> regattaElementsByLeaderboardGroup; - private final List leaderboardGroupFilterAnchors; - private final Presenter presenter; - - public EventRegattaList(Map> regattaStructure, - EventView.Presenter presenter) { - this.presenter = presenter; - - EventRegattaListResources.INSTANCE.css().ensureInjected(); - initWidget(uiBinder.createAndBindUi(this)); - - EventViewDTO event = presenter.getCtx().getEventDTO(); - - regattaElementsByLeaderboardGroup = new HashMap<>(); - leaderboardGroupFilterAnchors = new ArrayList(); - boolean hasMultipleLeaderboardGroups = presenter.getCtx().getLeaderboardGroups().size() > 1; - - if (event.getType() == EventType.SERIES_EVENT) { - regattaListNavigationDiv.getStyle().setDisplay(Display.NONE); - } else { - if (hasMultipleLeaderboardGroups) { - // fill the navigation panel - registerFilterLeaderboardGroupEvent(filterNoLeaderboardGroupsAnchor, null); - for (LeaderboardGroupDTO leaderboardGroup: presenter.getCtx().getLeaderboardGroups()) { - AnchorElement filterLeaderboardGroupAnchor = Document.get().createAnchorElement(); - filterLeaderboardGroupAnchor.addClassName(EventRegattaListResources.INSTANCE.css().item()); - filterLeaderboardGroupAnchor.setHref("javascript:;"); - - String leaderboardGroupName = LongNamesUtil.shortenLeaderboardGroupName(event.getDisplayName(), leaderboardGroup.getName()); - filterLeaderboardGroupAnchor.setInnerText(leaderboardGroupName); - regattaGroupsNavigationPanel.appendChild(filterLeaderboardGroupAnchor); - leaderboardGroupFilterAnchors.add(filterLeaderboardGroupAnchor); - - registerFilterLeaderboardGroupEvent(filterLeaderboardGroupAnchor, leaderboardGroup); - } - } else { - regattaListNavigationDiv.getStyle().setDisplay(Display.NONE); - } - } - - for (LeaderboardGroupDTO leaderboardGroup : presenter.getCtx().getLeaderboardGroups()) { - for (StrippedLeaderboardDTO leaderboard : leaderboardGroup.getLeaderboards()) { - Triple r = regattaStructure.get(leaderboard.name); - if (r != null) { - Regatta regatta = new Regatta(false, presenter); - regatta.setData(r.getC(), hasMultipleLeaderboardGroups, r.getB(), r.getA()); - regattaListItemsPanel.add(regatta); - List regattaElements = regattaElementsByLeaderboardGroup.get(leaderboardGroup.getName()); - if (regattaElements == null) { - regattaElements = new ArrayList(); - regattaElementsByLeaderboardGroup.put(leaderboardGroup.getName(), regattaElements); - } - regattaElements.add(regatta); - } - } - } - } - - private void registerFilterLeaderboardGroupEvent(final AnchorElement filterLeaderboardGroupAnchor, final LeaderboardGroupDTO leaderboardGroup) { - Event.sinkEvents(filterLeaderboardGroupAnchor, Event.ONCLICK); - Event.setEventListener(filterLeaderboardGroupAnchor, new EventListener() { - @Override - public void onBrowserEvent(Event event) { - switch (DOM.eventGetType(event)) { - case Event.ONCLICK: - filterRegattaListByLeaderboardGroup(leaderboardGroup); - for (AnchorElement anchor : leaderboardGroupFilterAnchors) { - anchor.removeClassName(EventRegattaListResources.INSTANCE.css().selectedItem()); - } - filterLeaderboardGroupAnchor.addClassName(EventRegattaListResources.INSTANCE.css().selectedItem()); - break; - } - } - }); - } - - private void filterRegattaListByLeaderboardGroup(LeaderboardGroupDTO leaderboardGroup) { - if (leaderboardGroup != null) { - filterNoLeaderboardGroupsAnchor.removeClassName(EventRegattaListResources.INSTANCE.css().selectedItem()); - // hide all regattas of the not selected leaderboardgroup - for (LeaderboardGroupDTO lg : presenter.getCtx().getLeaderboardGroups()) { - boolean isVisible = leaderboardGroup.getName().equals(lg.getName()); - List regattaElements = regattaElementsByLeaderboardGroup.get(lg.getName()); - if (regattaElements != null) { - for (Regatta regatta : regattaElements) { - regatta.setVisible(isVisible); - } - } - } - } else { - // make all regattas visible - filterNoLeaderboardGroupsAnchor.addClassName(EventRegattaListResources.INSTANCE.css().selectedItem()); - for (LeaderboardGroupDTO lg : presenter.getCtx().getLeaderboardGroups()) { - List regattaElements = regattaElementsByLeaderboardGroup.get(lg.getName()); - if (regattaElements != null) { - for (Regatta regatta : regattaElements) { - regatta.setVisible(true); - } - } - } - } - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/eventregatta/EventRegattaList.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/eventregatta/EventRegattaList.ui.xml deleted file mode 100644 index 2659fa1aa80..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/eventregatta/EventRegattaList.ui.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - -
-
-
-
-
-
-
- -
-
-
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/eventregatta/EventRegattaListResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/eventregatta/EventRegattaListResources.java deleted file mode 100644 index f73cab9acbb..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/eventregatta/EventRegattaListResources.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.eventregatta; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.resources.client.ClientBundle; -import com.google.gwt.resources.client.CssResource; - -public interface EventRegattaListResources extends ClientBundle { - public static final EventRegattaListResources INSTANCE = GWT.create(EventRegattaListResources.class); - - @Source("EventRegattaList.gss") - LocalCss css(); - - public interface LocalCss extends CssResource { - String item(); - String selectedItem(); - String eventregattalist(); - String eventregattalist_navigation(); - - String regattaGroupsNavigationPanel(); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRaces.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRaces.gss deleted file mode 100644 index f254cd7de05..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRaces.gss +++ /dev/null @@ -1,290 +0,0 @@ -.eventregattaraces { - font-size: 15px; - /* @alternate */ font-size: 1rem; -} -.eventregattaraces_phase { - margin: 2em 0; -} -.eventregattaraces_phase_name { - display: block; - margin: 0 0 1.666666666666667em 0; - padding-bottom: 0.416666666666667em; - border-bottom: 1px solid #ccc; -} -.eventregattaraces_phase_day { - font-weight: 600; - color: #333; - margin-bottom: 0.533333333333333em; -} -.eventregattaraces_phase_races { - margin-bottom: 2.666666666666667em; -} -.eventregattaraces_phase_fleets { - margin-bottom: 2.333333333333333em; -} -.eventregattaraces_phase_fleet { - display: inline-block; - margin-right: 1em; -} -.eventregattaraces_phase_fleet_name { - display: table-cell; - height: 2.5em; - padding: 0.533333333333333em; - border: 1px solid #ccc; - border-left: none; - color: #666; - text-transform: uppercase; - font-size: 1.066666666666667em; - font-weight: 600; -} -.eventregattaraces_phase_fleet_count { - display: table-cell; - width: 3.333333333333333em; - height: 3.333333333333333em; - padding: 0.333333333333333em; - background-color: #008fcc; - background-image: url("images/home/fleet-icon.png"); - background-position: center 4px; - background-repeat: no-repeat; - font-size: 12px; - color: #fff; - text-align: center; - vertical-align: bottom; -} -.eventregattaraces_legend { - position: absolute; - top: 2.333333333333333em; - right: 1.333333333333333em; -} -.eventregattaraces_legend_item { - position: relative; - display: inline-block; - margin-left: 0.666666666666667em; - padding-left: 3.333333333333333em; - border-left: 1px solid #ccc; -} -.eventregattaraces_legend_item:first-of-type { - border: none; -} -.eventregattaraces_legend_item:before { - content: ' '; - position: absolute; - top: -0.2em; - left: 0.666666666666667em; - width: 1.733333333333333em; - height: 1.733333333333333em; - background-image: url("images/home/race-features-icons.png"); - -webkit-background-size: auto 200%; - -moz-background-size: auto 200%; - background-size: auto 200%; -} -.eventregattaraces_legend_itemgps:before { - background-position: 0 0; -} -.eventregattaraces_legend_itemwind:before { - background-position: 33% 0; -} -.eventregattaraces_legend_itemvideo:before { - background-position: 66% 0; -} -.eventregattaraces_legend_itemaudio:before { - background-position: 100% 0; -} -.eventregattarace { - position: relative; - border-top: 1px solid #ccc; - padding: 0.666666666666667em 0; - zoom: 1; -} -.eventregattarace:before, -.eventregattarace:after { - content: ""; - display: table; -} -.eventregattarace:after { - clear: both; -} -.eventregattarace:last-of-type { - border-bottom: 1px solid #ccc; -} -.eventregattarace_fleetindicator { - position: absolute; - width: 0.333333333333333em; - top: 0.333333333333333em; - bottom: 0.333333333333333em; -} -.eventregattarace_details { - display: inline-block; - float: left; - min-height: 2.666666666666667em; - padding: 0 1.333333333333333em; - border-right: 1px solid #ccc; -} -.eventregattarace_details:last-of-type { - border-right: 1px solid #ccc; -} -.eventregattarace_name { - width: 22%; -} -.eventregattarace_nameshort { - display: block; - float: none; - margin-right: 0.555555555555556em; - margin-top: -0.194444444444444em; - font-size: 2.4em; - color: #ccc; - font-weight: 700; -} -.eventregattarace_racetime { - white-space: nowrap; -} -.eventregattarace_flag { - display: none; - width: 9%; - min-height: 0; - padding-top: 0.666666666666667em; -} -.eventregattarace_wind { - width: 14%; -} -.eventregattarace_wind_strength { - color: #008fcc; - font-weight: 600; -} -.eventregattarace_leader { - width: 24%; - border-right: none; - white-space: nowrap; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - overflow: hidden; -} -.eventregattarace_leader_name { - color: #008fcc; - font-weight: 600; -} -.eventregattarace_features, -.eventregattarace_legs { - width: 17%; - border-left: 1px solid #ccc; -} -.eventregattarace_features_list, -.eventregattarace_legs_list { - font-size: 15px; - /* @alternate */ font-size: 1rem; -} -.eventregattarace_features { - min-height: 0; - padding-top: 0.666666666666667em; - text-align: center; -} -.eventregattarace_legs_leg { - display: inline-block; - height: 10px; - width: 10px; - background-color: #ccc; -} -.eventregattarace_legs_leg[data-status*="finished"] { - background-color: #f0ab00; -} -.eventregattarace_legs_leg[data-status*="running"] { - background-color: #f00; -} -.eventregattarace_action { - float: right; - text-align: center; - text-transform: uppercase; - cursor: pointer; -} -.eventregattarace_action_watch, -.eventregattarace_action_analyze { - width: 10em; - padding-left: 10px; - padding-right: 10px; -} -.eventregattarace_action_watch { - background-color: #f00; -} -.eventregattarace_action_watch:hover { - background-color: #a71724; -} -.eventregattarace_actiondisabled { - background-color: transparent; - color: #666; - cursor: initial; -} -.eventregattarace_actiondisabled:hover { - background-color: transparent; -} -.eventregattarace_feature { - display: inline-block; - width: 1.733333333333333em; - height: 1.733333333333333em; - margin-right: 0.666666666666667em; - background-image: url("images/home/race-features-icons.png"); - -webkit-background-size: auto 200%; - -moz-background-size: auto 200%; - background-size: auto 200%; -} -.eventregattarace_feature:last-of-type { - margin-right: 0; -} -.eventregattarace_featuregps { - background-position: 0 0; -} -.eventregattarace_featuregps.eventregattarace_featureunavailable { - background-position: 0 100%; -} -.eventregattarace_featurewind { - background-position: 33% 0; -} -.eventregattarace_featurewind.eventregattarace_featureunavailable { - background-position: 33% 100%; -} -.eventregattarace_featurevideo { - background-position: 66% 0; -} -.eventregattarace_featurevideo.eventregattarace_featureunavailable { - background-position: 66% 100%; -} -.eventregattarace_featureaudio { - background-position: 100% 0; -} -.eventregattarace_featureaudio.eventregattarace_featureunavailable { - background-position: 100% 100%; -} -.regattanavigation { - font-size: 15px; - /* @alternate */ font-size: 1rem; - text-align: center; - border-bottom: 1px solid #ddd; -} -.regattanavigation_link { - display: inline-block; - margin-right: 2em; - padding: 1em 0 0.733333333333333em 0; - border-bottom: 0.266666666666667em solid transparent; - font-weight: 600; - color: #666; -} -.regattanavigation_link:hover, -.regattanavigation_link:focus { - border-bottom-color: #ddd; - text-decoration: none; - color: #333; -} -.regattanavigation_linkactive { - border-bottom-color: #f0ab00; -} -.regattanavigation_linkactive:hover, -.regattanavigation_linkactive:focus { - border-bottom-color: #d89a00; -} -@media (min-width: 25em) { - .eventregattarace_nameshort { - float: left; - } - .eventregattarace_flag { - display: inline-block; - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRaces.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRaces.java deleted file mode 100644 index da048888901..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRaces.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.regattaraces; - -import java.util.ArrayList; -import java.util.List; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.DivElement; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.HTMLPanel; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.EventView.Presenter; -import com.sap.sailing.gwt.home.client.place.event.partials.Regatta; -import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; -import com.sap.sailing.gwt.ui.shared.RaceGroupDTO; -import com.sap.sailing.gwt.ui.shared.RaceGroupSeriesDTO; -import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; - -public class EventRegattaRaces extends Composite { - private static EventRegattaRacesUiBinder uiBinder = GWT.create(EventRegattaRacesUiBinder.class); - - interface EventRegattaRacesUiBinder extends UiBinder { - } - - @UiField(provided=true) Regatta regatta; - @UiField HTMLPanel regattaPhasesNavigationPanel; - @UiField HTMLPanel regattaPhasesPanel; - @UiField HTMLPanel rootPanel; - @UiField DivElement racesUi; - - private final List phaseElements; - private final Presenter presenter; - - public EventRegattaRaces(EventView.Presenter presenter) { - this.presenter = presenter; - - phaseElements = new ArrayList(); - - regatta = new Regatta(true, presenter); - - EventRegattaRacesResources.INSTANCE.css().ensureInjected(); - initWidget(uiBinder.createAndBindUi(this)); - } - - public void setRaces(LeaderboardGroupDTO leaderboardGroup, boolean hasMultipleLeaderboardGroups, StrippedLeaderboardDTO leaderboard, RaceGroupDTO raceGroup) { - // clear all existing child elements first - regattaPhasesPanel.getElement().removeAllChildren(); - phaseElements.clear(); - - regatta.setData(leaderboardGroup, hasMultipleLeaderboardGroups, leaderboard, raceGroup); - - int regattaPhases = raceGroup.getSeries().size(); - if(regattaPhases > 1) { - for(RaceGroupSeriesDTO series: raceGroup.getSeries()) { - EventRegattaRacesPhase regattaPhase = new EventRegattaRacesPhase(leaderboard, series, presenter); - regattaPhasesPanel.getElement().appendChild(regattaPhase.getElement()); - phaseElements.add(regattaPhase); - } - } else if(regattaPhases == 1) { - RaceGroupSeriesDTO raceGroupSeriesDTO = raceGroup.getSeries().get(0); - EventRegattaRacesPhase regattaPhase = new EventRegattaRacesPhase(leaderboard, raceGroupSeriesDTO, presenter); - regattaPhasesPanel.getElement().appendChild(regattaPhase.getElement()); - phaseElements.add(regattaPhase); - } else { - regattaPhasesPanel.removeFromParent(); - racesUi.removeFromParent(); - } - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRaces.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRaces.ui.xml deleted file mode 100644 index 5f034715245..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRaces.ui.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - -
-
-
- -
-
-
-
-
-
-
-
-
-
- -
- -
-
-
-
-
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesFleet.java deleted file mode 100644 index 059e1e2c3fd..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesFleet.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.regattaraces; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.DivElement; -import com.google.gwt.dom.client.SpanElement; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.UIObject; -import com.sap.sailing.domain.common.dto.FleetDTO; - -public class EventRegattaRacesFleet extends UIObject { - private static EventRegattaRacesFleetUiBinder uiBinder = GWT.create(EventRegattaRacesFleetUiBinder.class); - - interface EventRegattaRacesFleetUiBinder extends UiBinder { - } - - @UiField SpanElement fleetName; - @UiField DivElement fleetCountAndColor; - - public EventRegattaRacesFleet(FleetDTO fleet, int maxNumberOfCompetitorsInFleetRace) { - EventRegattaRacesResources.INSTANCE.css().ensureInjected(); - setElement(uiBinder.createAndBindUi(this)); - - fleetName.setInnerText(fleet.getName()); - if(fleet.getColor() != null) { - fleetCountAndColor.getStyle().setBackgroundColor(fleet.getColor().getAsHtml()); - } - if(maxNumberOfCompetitorsInFleetRace > 0) { - fleetCountAndColor.setInnerText(String.valueOf(maxNumberOfCompetitorsInFleetRace)); - } - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesFleet.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesFleet.ui.xml deleted file mode 100644 index 030dd4ba815..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesFleet.ui.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - -
-
-
-
-
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesFleetGroup.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesFleetGroup.java deleted file mode 100644 index fb39ec0bdc0..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesFleetGroup.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.regattaraces; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.DivElement; -import com.google.gwt.dom.client.Style.Display; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.domain.common.dto.FleetDTO; -import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.shared.utils.EventDatesFormatterUtil; -import com.sap.sailing.gwt.ui.shared.RaceGroupSeriesDTO; -import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; - -public class EventRegattaRacesFleetGroup extends Composite { - private static EventRegattaRacesFleetGroupUiBinder uiBinder = GWT.create(EventRegattaRacesFleetGroupUiBinder.class); - - interface EventRegattaRacesFleetGroupUiBinder extends UiBinder { - } - - @UiField DivElement fleetsPanel; - @UiField DivElement racesFromToDate; - @UiField DivElement racesFleetPanel; - - public EventRegattaRacesFleetGroup(StrippedLeaderboardDTO leaderboard, RaceGroupSeriesDTO series, List fleetsToShow, EventView.Presenter presenter) { - EventRegattaRacesResources.INSTANCE.css().ensureInjected(); - initWidget(uiBinder.createAndBindUi(this)); - - for(FleetDTO fleet: fleetsToShow) { - EventRegattaRacesFleet eventRegattaRacesFleet = new EventRegattaRacesFleet(fleet, 0); - fleetsPanel.appendChild(eventRegattaRacesFleet.getElement()); - - updateFleetRacesUI(leaderboard, series, fleet, presenter); - } - } - - public EventRegattaRacesFleetGroup(StrippedLeaderboardDTO leaderboard, RaceGroupSeriesDTO series, EventView.Presenter presenter) { - EventRegattaRacesResources.INSTANCE.css().ensureInjected(); - initWidget(uiBinder.createAndBindUi(this)); - - fleetsPanel.getStyle().setDisplay(Display.NONE); - - FleetDTO defaultFleet = series.getFleets().get(0); - updateFleetRacesUI(leaderboard, series, defaultFleet, presenter); - } - - private void updateFleetRacesUI(StrippedLeaderboardDTO leaderboard, RaceGroupSeriesDTO series, FleetDTO fleet, EventView.Presenter presenter) { - Date fromDate = null; - Date toDate = null; - - List racesOfFleet = getRacesOfFleet(leaderboard, series, fleet); - for(RaceColumnDTO raceColumn: racesOfFleet) { - RaceColumnDTO raceColumnFromLeaderboard = leaderboard.getRaceColumnByName(raceColumn.getName()); - EventRegattaRacesRace race = new EventRegattaRacesRace(leaderboard, fleet, raceColumnFromLeaderboard, presenter); - racesFleetPanel.appendChild(race.getElement()); - - Date startDate = raceColumnFromLeaderboard.getStartDate(fleet); - if(startDate != null) { - if(fromDate == null || startDate.before(fromDate)) { - fromDate = startDate; - } - if(toDate == null || startDate.after(toDate)) { - toDate = startDate; - } - } - } - if(fromDate != null && toDate != null) { - racesFromToDate.setInnerText(EventDatesFormatterUtil.formatDateRangeWithYear(fromDate, toDate)); - } else { - // no single race with a date - racesFromToDate.getStyle().setDisplay(Display.NONE); - } - } - - private List getRacesOfFleet(StrippedLeaderboardDTO leaderboard, RaceGroupSeriesDTO series, FleetDTO fleet) { - List racesColumnsOfFleet = new ArrayList(); - for (RaceColumnDTO raceColumn : series.getRaceColumns()) { - for (FleetDTO fleetOfRaceColumn : series.getFleets()) { - if (fleet.equals(fleetOfRaceColumn)) { - // We have to get the race column from the leaderboard, because the race column of the series - // have no tracked race and would be displayed as inactive race. - racesColumnsOfFleet.add(leaderboard.getRaceColumnByName(raceColumn.getName())); - } - } - } - return racesColumnsOfFleet; - } - -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesFleetGroup.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesFleetGroup.ui.xml deleted file mode 100644 index a15ce58430f..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesFleetGroup.ui.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - -
-
-
-
-
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesNavigationLink.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesNavigationLink.java deleted file mode 100644 index cc18389a319..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesNavigationLink.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.regattaraces; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.SpanElement; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.ui.shared.RaceGroupSeriesDTO; - -public class EventRegattaRacesNavigationLink extends Composite { - private static EventRegattaRacesNavigationLinkUiBinder uiBinder = GWT.create(EventRegattaRacesNavigationLinkUiBinder.class); - - interface EventRegattaRacesNavigationLinkUiBinder extends UiBinder { - } - - @UiField SpanElement phaseName; - - public EventRegattaRacesNavigationLink(RaceGroupSeriesDTO series) { - EventRegattaRacesResources.INSTANCE.css().ensureInjected(); - initWidget(uiBinder.createAndBindUi(this)); - - phaseName.setInnerText(series.getName()); - } - -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesNavigationLink.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesNavigationLink.ui.xml deleted file mode 100644 index 4ae22638b26..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesNavigationLink.ui.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesPhase.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesPhase.java deleted file mode 100644 index 7903ea48185..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesPhase.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.regattaraces; - -import java.util.ArrayList; -import java.util.List; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.DivElement; -import com.google.gwt.dom.client.SpanElement; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.UIObject; -import com.sap.sailing.domain.common.LeaderboardNameConstants; -import com.sap.sailing.domain.common.dto.FleetDTO; -import com.sap.sailing.gwt.common.client.i18n.TextMessages; -import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.ui.shared.RaceGroupSeriesDTO; -import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; - -public class EventRegattaRacesPhase extends UIObject { - private static EventRegattaRacesPhaseUiBinder uiBinder = GWT.create(EventRegattaRacesPhaseUiBinder.class); - - interface EventRegattaRacesPhaseUiBinder extends UiBinder { - } - - @UiField SpanElement phaseName; - @UiField DivElement fleetGroupsPanel; - - public EventRegattaRacesPhase(StrippedLeaderboardDTO leaderboard, RaceGroupSeriesDTO series, EventView.Presenter presenter) { - EventRegattaRacesResources.INSTANCE.css().ensureInjected(); - setElement(uiBinder.createAndBindUi(this)); - - if(series.getName().equals(LeaderboardNameConstants.DEFAULT_SERIES_NAME)) { - phaseName.setInnerText(TextMessages.INSTANCE.races()); - } else { - phaseName.setInnerText(series.getName()); - } - - int numberOfFleets = series.getFleets().size(); - if(numberOfFleets > 1) { - if(series.hasOrderedFleets()) { - for(FleetDTO fleet: series.getFleets()) { - // ordered fleets are splitted into different fleet groups -> e.g. Gold Silver - List fleetsToShow = new ArrayList(); - fleetsToShow.add(fleet); - EventRegattaRacesFleetGroup fleetGroup = new EventRegattaRacesFleetGroup(leaderboard, series, fleetsToShow, presenter); - fleetGroupsPanel.appendChild(fleetGroup.getElement()); - } - } else { - // unordered fleets are NOT splitted into different fleet groups -> e.g. Blue, Yellow - List fleetsToShow = new ArrayList(series.getFleets()); - EventRegattaRacesFleetGroup fleetGroup = new EventRegattaRacesFleetGroup(leaderboard, series, fleetsToShow, presenter); - fleetGroupsPanel.appendChild(fleetGroup.getElement()); - } - } else { - // single fleet - EventRegattaRacesFleetGroup fleetGroup = new EventRegattaRacesFleetGroup(leaderboard, series, presenter); - fleetGroupsPanel.appendChild(fleetGroup.getElement()); - } - } - -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesPhase.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesPhase.ui.xml deleted file mode 100644 index 339e80cdcb0..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesPhase.ui.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - -
-

-
-
- diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRace.java deleted file mode 100755 index ac3ada811be..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRace.java +++ /dev/null @@ -1,188 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.regattaraces; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.DivElement; -import com.google.gwt.dom.client.Element; -import com.google.gwt.dom.client.SpanElement; -import com.google.gwt.dom.client.Style.Display; -import com.google.gwt.dom.client.Style.Visibility; -import com.google.gwt.i18n.shared.DateTimeFormat; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Anchor; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.domain.common.dto.CompetitorDTO; -import com.sap.sailing.domain.common.dto.FleetDTO; -import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.domain.common.dto.RaceDTO; -import com.sap.sailing.domain.common.dto.RaceDTO.RaceLiveState; -import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.EventView.Presenter; -import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; - -public class EventRegattaRacesRace extends Composite { - private static EventRegattaRacesRaceUiBinder uiBinder = GWT.create(EventRegattaRacesRaceUiBinder.class); - - interface EventRegattaRacesRaceUiBinder extends UiBinder { - } - - @UiField DivElement fleetColor; - @UiField DivElement raceName; - @UiField SpanElement raceName2; - @UiField DivElement raceTime; - @UiField SpanElement averageRaceWind; - - @UiField DivElement raceNotTrackedDiv; - @UiField DivElement raceNotScheduledDiv; - @UiField DivElement watchRaceDiv; - @UiField DivElement analyzeRaceDiv; - @UiField Anchor watchRaceLink; - @UiField Anchor analyzeRaceLink; - - @UiField DivElement raceWinnerDiv; - @UiField SpanElement raceWinner; - @UiField DivElement raceLeaderDiv; - @UiField SpanElement raceLeader; - - @UiField DivElement raceFeaturesDiv; - @UiField DivElement legProgressDiv; - @UiField DivElement legProgressPanel; - @UiField DivElement raceFlagDiv; - @UiField DivElement windStatusDiv; - - @UiField DivElement featureGPS; - @UiField DivElement featureWind; - // @UiField DivElement featureAudio; - @UiField DivElement featureVideo; - - @UiField SpanElement currentLegNo; - @UiField SpanElement totalLegsCount; - - private final DateTimeFormat raceTimeFormat = DateTimeFormat.getFormat("EEE, HH:mm"); - - private final RaceDTO race; - - private Element[] allConditionalElements; - private final Presenter presenter; - - public EventRegattaRacesRace(StrippedLeaderboardDTO leaderboard, FleetDTO fleet, RaceColumnDTO raceColumn, EventView.Presenter presenter) { - this.presenter = presenter; - race = raceColumn.getRace(fleet); - - EventRegattaRacesResources.INSTANCE.css().ensureInjected(); - initWidget(uiBinder.createAndBindUi(this)); - - allConditionalElements = new Element[] {raceWinnerDiv, raceLeaderDiv, watchRaceDiv, analyzeRaceDiv, raceNotTrackedDiv, raceNotScheduledDiv, - raceFeaturesDiv, legProgressDiv, raceFlagDiv, windStatusDiv }; - - if(fleet.getColor() != null) { - fleetColor.getStyle().setBackgroundColor(fleet.getColor().getAsHtml()); - } - - raceName.setInnerText(raceColumn.getName()); - raceName2.setInnerText(raceColumn.getName()); - - if(race != null && race.trackedRace != null) { - String raceViewerURL = presenter.getRaceViewerURL(leaderboard, race); - analyzeRaceLink.setHref(raceViewerURL); - watchRaceLink.setHref(raceViewerURL); - } - - updateUI(); - } - - private void updateUI() { - averageRaceWind.setInnerText("tbd."); - - for(Element el: allConditionalElements) { - hideElement(el); - } - - RaceLiveState liveState = race != null ? race.getLiveState(presenter.getTimerForClientServerOffset().getLiveTimePointInMillis()) : RaceLiveState.NOT_TRACKED; - switch(liveState) { - case NOT_TRACKED: - showElement(raceNotTrackedDiv); - break; - case TRACKED_BUT_NOT_SCHEDULED: - showElement(raceNotScheduledDiv); - break; - case TRACKED_AND_LIVE: - showElement(watchRaceDiv); - - if(race.startOfRace != null) { - raceTime.setInnerText(raceTimeFormat.format(race.startOfRace)); - } - if(race.trackedRaceStatistics.hasLegProgressData) { - showElement(legProgressDiv); - currentLegNo.setInnerText(String.valueOf(race.trackedRaceStatistics.currentLegNo)); - totalLegsCount.setInnerText(String.valueOf(race.trackedRaceStatistics.totalLegsCount)); - - for(int i = 0; i < race.trackedRaceStatistics.totalLegsCount; i++) { - boolean isLive = i <= race.trackedRaceStatistics.currentLegNo; - EventRegattaRacesRaceProgressItem item = new EventRegattaRacesRaceProgressItem(isLive); - legProgressPanel.appendChild(item.getElement()); - } - } - if(race.trackedRaceStatistics.hasLeaderOrWinnerData && race.trackedRaceStatistics.leaderOrWinner != null) { - showElement(raceLeaderDiv); - updateWinnerOrLeader(raceLeader, race.trackedRaceStatistics.leaderOrWinner); - } - - break; - case TRACKED: - showElement(analyzeRaceDiv); - - if(race.trackedRaceStatistics.hasLeaderOrWinnerData && race.trackedRaceStatistics.leaderOrWinner != null) { - showElement(raceWinnerDiv); - updateWinnerOrLeader(raceWinner, race.trackedRaceStatistics.leaderOrWinner); - } - if(race.startOfRace != null) { - raceTime.setInnerText(raceTimeFormat.format(race.startOfRace)); - } - showElement(raceFeaturesDiv); - updateRaceFeatures(); - - break; - } - } - - private void updateWinnerOrLeader(SpanElement winnerOrLeaderElement, CompetitorDTO winnerOrLeader) { - String winnerOrLeaderName = winnerOrLeader.getName(); - if(winnerOrLeader.getThreeLetterIocCountryCode() != null) { - winnerOrLeaderName += " (" + winnerOrLeader.getThreeLetterIocCountryCode() + ")"; - } - winnerOrLeaderElement.setInnerText(winnerOrLeaderName); - } - - private void updateRaceFeatures() { - if(!race.trackedRaceStatistics.hasGPSData) { - featureGPS.addClassName(EventRegattaRacesResources.INSTANCE.css().eventregattarace_featureunavailable()); - } - if(!race.trackedRaceStatistics.hasMeasuredWindData) { - featureWind.addClassName(EventRegattaRacesResources.INSTANCE.css().eventregattarace_featureunavailable()); - } - if(!race.trackedRaceStatistics.hasVideoData) { - featureVideo.addClassName(EventRegattaRacesResources.INSTANCE.css().eventregattarace_featureunavailable()); - } else { - featureVideo.setTitle(String.valueOf(race.trackedRaceStatistics.videoTracksCount)); - } - /* not used for now - if(!race.trackedRaceStatistics.hasAudioData) { - featureAudio.addClassName(EventRegattaRacesResources.INSTANCE.css().eventregattarace_featureunavailable()); - } else { - featureAudio.setTitle(String.valueOf(race.trackedRaceStatistics.audioTracksCount)); - } - */ - } - - private void hideElement(Element el) { - el.getStyle().setVisibility(Visibility.HIDDEN); - el.getStyle().setDisplay(Display.NONE); - } - - private void showElement(Element el) { - el.getStyle().setVisibility(Visibility.VISIBLE); - el.getStyle().setDisplay(Display.INLINE_BLOCK); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRace.ui.xml deleted file mode 100644 index 9b74b412647..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRace.ui.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - -
- -
-
-
-
 
-
-
-
- -
- -
-
-

- -
-
-

-
-
-

-
-
 / -
- -
-
-
-
-
-
- -
-
- -
-
- -
-
- -
-
- -
- - - diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRaceProgressItem.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRaceProgressItem.java deleted file mode 100644 index 7677469d8ea..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRaceProgressItem.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.regattaraces; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.DivElement; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.UIObject; -import com.sap.sailing.gwt.home.client.place.event.partials.RegattaResources; - -public class EventRegattaRacesRaceProgressItem extends UIObject { - private static EventRegattaRacesRaceProgressItemUiBinder uiBinder = GWT.create(EventRegattaRacesRaceProgressItemUiBinder.class); - - interface EventRegattaRacesRaceProgressItemUiBinder extends UiBinder { - } - - private enum DataStatusEnum { - FINISHED ("finished"), LIVE("running"); - - private final String attributeValue; - private static final String ATTRIBUTE_NAME = "data-status"; - - DataStatusEnum(String attributeValue) { - this.attributeValue = attributeValue; - } - } - - @UiField DivElement legProgressItem; - - public EventRegattaRacesRaceProgressItem(boolean isLive) { - RegattaResources.INSTANCE.css().ensureInjected(); - - setElement(uiBinder.createAndBindUi(this)); - - if(isLive) { - DataStatusEnum dataStatus = DataStatusEnum.LIVE; - legProgressItem.setAttribute(DataStatusEnum.ATTRIBUTE_NAME, dataStatus.attributeValue); - } - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRaceProgressItem.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRaceProgressItem.ui.xml deleted file mode 100644 index 9870e839e55..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRaceProgressItem.ui.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - -
-
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRaceday.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRaceday.java deleted file mode 100755 index 7e374044918..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRaceday.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.regattaraces; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.DivElement; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.HTMLPanel; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.ui.shared.RaceGroupSeriesDTO; - -/** - * Not used yet - * @author Frank - * - */ -public class EventRegattaRacesRaceday extends Composite { - private static EventRegattaRacesRacedayUiBinder uiBinder = GWT.create(EventRegattaRacesRacedayUiBinder.class); - - interface EventRegattaRacesRacedayUiBinder extends UiBinder { - } - - @UiField DivElement raceDayDate; - @UiField HTMLPanel racesPanel; - - public EventRegattaRacesRaceday(RaceGroupSeriesDTO series) { - EventRegattaRacesResources.INSTANCE.css().ensureInjected(); - initWidget(uiBinder.createAndBindUi(this)); - - raceDayDate.setInnerText("A date to fill in here"); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRaceday.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRaceday.ui.xml deleted file mode 100644 index 240383e279e..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesRaceday.ui.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - -
-
- -
-
-
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesResources.java deleted file mode 100644 index 474b001b7c1..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaraces/EventRegattaRacesResources.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.event.partials.regattaraces; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.resources.client.ClientBundle; -import com.google.gwt.resources.client.CssResource; -import com.google.gwt.resources.client.CssResource.Shared; - -public interface EventRegattaRacesResources extends ClientBundle { - public static final EventRegattaRacesResources INSTANCE = GWT.create(EventRegattaRacesResources.class); - - @Source("EventRegattaRaces.gss") - LocalCss css(); - - @Shared - public interface LocalCss extends CssResource { - String eventregattaraces(); - String eventregattaraces_phase(); - String eventregattaraces_phase_name(); - String eventregattaraces_phase_day(); - String eventregattaraces_phase_races(); - String eventregattaraces_phase_fleets(); - String eventregattaraces_phase_fleet(); - String eventregattaraces_phase_fleet_name(); - String eventregattaraces_phase_fleet_count(); - String eventregattaraces_legend(); - String eventregattaraces_legend_item(); - String eventregattaraces_legend_itemgps(); - String eventregattaraces_legend_itemwind(); - String eventregattaraces_legend_itemvideo(); - String eventregattaraces_legend_itemaudio(); - String eventregattarace(); - String eventregattarace_fleetindicator(); - String eventregattarace_details(); - String eventregattarace_name(); - String eventregattarace_nameshort(); - String eventregattarace_racetime(); - String eventregattarace_flag(); - String eventregattarace_wind(); - String eventregattarace_wind_strength(); - String eventregattarace_leader(); - String eventregattarace_leader_name(); - String eventregattarace_features(); - String eventregattarace_legs(); - String eventregattarace_features_list(); - String eventregattarace_legs_list(); - String eventregattarace_legs_leg(); - String eventregattarace_action(); - String eventregattarace_action_watch(); - String eventregattarace_action_analyze(); - String eventregattarace_actiondisabled(); - String eventregattarace_feature(); - String eventregattarace_featuregps(); - String eventregattarace_featurewind(); - String eventregattarace_featurevideo(); - String eventregattarace_featureaudio(); - String eventregattarace_featureunavailable(); - String regattanavigation(); - String regattanavigation_link(); - String regattanavigation_linkactive(); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index b36406ba521..5c0832aa66f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -1,9 +1,6 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; import java.util.UUID; import com.google.gwt.core.client.GWT; @@ -12,7 +9,6 @@ import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style.Display; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; @@ -20,12 +16,11 @@ import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.partials.regattaraces.EventRegattaRaces; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; +import com.sap.sailing.gwt.home.client.shared.refresh.ActionProvider.AbstractActionProvider; import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; -import com.sap.sailing.gwt.home.client.shared.refresh.ActionProvider.AbstractActionProvider; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListItem; import com.sap.sailing.gwt.home.desktop.partials.racelist.AbstractRaceList; @@ -42,9 +37,6 @@ import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigatio import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.partials.regattanavigation.RaceStateLegend; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; -import com.sap.sailing.gwt.ui.shared.RaceGroupDTO; -import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; import com.sap.sailing.gwt.ui.shared.dispatch.Action; import com.sap.sailing.gwt.ui.shared.dispatch.DTO; import com.sap.sailing.gwt.ui.shared.dispatch.ListResult; @@ -56,7 +48,6 @@ import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaWithProgressAction import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatSeriesDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceListRaceDTO; import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaWithProgressDTO; -import com.sap.sse.common.Util.Triple; /** * Created by pgtaboada on 25.11.14. @@ -99,7 +90,6 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView listNavigationPanelUi; @UiField DivElement listFormatContainerUi; @UiField FlowPanel compFormatContainerUi; - @UiField SimplePanel oldContentContainer; @UiField(provided = true) LiveRacesList liveRacesListUi; @UiField(provided = true) RaceListContainer raceListContainerUi; @UiField RaceOfficeSection raceOfficeSectionUi; @@ -126,62 +116,32 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView() { - @Override - public void setData(RegattaWithProgressDTO data) { - regattaInfoContainerUi.setWidget(new MultiRegattaListItem(data, true)); - } - }, new GetRegattaWithProgressAction(eventId, regattaId)); - addRacesAction(liveRacesListUi.getRefreshable(), new GetLiveRacesForRegattaAction(eventId, regattaId), Navigation.SORT_LIST_FORMAT); - addRacesAction(raceListContainerUi, new GetFinishedRacesAction(eventId, regattaId), Navigation.SORT_LIST_FORMAT); - - if (ExperimentalFeatures.SHOW_RACES_COMPETITION_FORMAT) { - listNavigationPanelUi.addAction(Navigation.SORT_LIST_FORMAT, true); - listNavigationPanelUi.addAction(Navigation.COMPETITION_FORMAT, false); - addRacesAction(new RefreshableWidget>() { - @Override - public void setData(ListResult data) { - compFormatContainerUi.clear(); - for (RaceCompetitionFormatSeriesDTO series : data.getValues()) { - compFormatContainerUi.add(new RegattaCompetitionSeries(currentPresenter, series)); - } - } - }, new GetCompetitionFormatRacesAction(eventId, regattaId), Navigation.COMPETITION_FORMAT); - } else { - listNavigationPanelUi.removeFromParent(); - compFormatContainerUi.removeFromParent(); + UUID eventId = myPlace.getCtx().getEventDTO().getId(); + String regattaId = myPlace.getRegattaId(); + refreshManager.add(new RefreshableWidget() { + @Override + public void setData(RegattaWithProgressDTO data) { + regattaInfoContainerUi.setWidget(new MultiRegattaListItem(data, true)); } - oldContentContainer.removeFromParent(); - } else { - regattaInfoContainerUi.removeFromParent(); - listFormatContainerUi.removeFromParent(); - compFormatContainerUi.removeFromParent(); - // TODO: understand, and than move this into appropiate place (probably context) - final String selectedRegattaId = myPlace.getCtx().getRegattaId(); - currentPresenter.ensureRegattaStructure(new AsyncCallback>() { + }, new GetRegattaWithProgressAction(eventId, regattaId)); + addRacesAction(liveRacesListUi.getRefreshable(), new GetLiveRacesForRegattaAction(eventId, regattaId), Navigation.SORT_LIST_FORMAT); + addRacesAction(raceListContainerUi, new GetFinishedRacesAction(eventId, regattaId), Navigation.SORT_LIST_FORMAT); + + if (ExperimentalFeatures.SHOW_RACES_COMPETITION_FORMAT) { + listNavigationPanelUi.addAction(Navigation.SORT_LIST_FORMAT, true); + listNavigationPanelUi.addAction(Navigation.COMPETITION_FORMAT, false); + addRacesAction(new RefreshableWidget>() { @Override - public void onSuccess(List raceGroups) { - if (raceGroups.size() > 0) { - Map> rs = getRegattaStructure(); - Triple selectedRegatta = rs .get(selectedRegattaId); - EventRegattaRaces regattaRaces = new EventRegattaRaces(currentPresenter); - oldContentContainer.setWidget(regattaRaces); - regattaRaces.setRaces(selectedRegatta.getC(), false, selectedRegatta.getB(), selectedRegatta.getA()); - } else { - // createEventWithoutRegattasView(event, panel); + public void setData(ListResult data) { + compFormatContainerUi.clear(); + for (RaceCompetitionFormatSeriesDTO series : data.getValues()) { + compFormatContainerUi.add(new RegattaCompetitionSeries(currentPresenter, series)); } } - - @Override - public void onFailure(Throwable caught) { - // createErrorView( - // "Error while loading the regatta structure with service getRegattaStructureOfEvent()", - // caught, panel); - } - }); + }, new GetCompetitionFormatRacesAction(eventId, regattaId), Navigation.COMPETITION_FORMAT); + } else { + listNavigationPanelUi.removeFromParent(); + compFormatContainerUi.removeFromParent(); } contentArea.setWidget(RegattaRacesTabView.this); } @@ -205,23 +165,6 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView> getRegattaStructure() { - Map> result = new HashMap<>(); - Map raceGroupsMap = new HashMap<>(); - for (RaceGroupDTO raceGroup : currentPresenter.getCtx().getRaceGroups()) { - raceGroupsMap.put(raceGroup.getName(), raceGroup); - } - - for (LeaderboardGroupDTO leaderboardGroup : currentPresenter.getCtx().getLeaderboardGroups()) { - for (StrippedLeaderboardDTO leaderboard : leaderboardGroup.getLeaderboards()) { - String leaderboardName = leaderboard.name; - result.put(leaderboardName, new Triple( - raceGroupsMap.get(leaderboardName), leaderboard, leaderboardGroup)); - } - } - return result; - } - private class RegattaRacesTabViewNavigationSelectionCallback implements SelectionCallback { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml index dba6db8d121..b685df85c7f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml @@ -25,7 +25,6 @@
-
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattaheader/RegattaHeader.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattaheader/RegattaHeader.ui.xml index 7ae49663bfd..eea06aea487 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattaheader/RegattaHeader.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattaheader/RegattaHeader.ui.xml @@ -1,6 +1,6 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared"> diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattaheader/RegattaHeaderBody.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattaheader/RegattaHeaderBody.ui.xml index 095e6865191..3d5a6cbbbbf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattaheader/RegattaHeaderBody.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattaheader/RegattaHeaderBody.ui.xml @@ -1,6 +1,6 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared"> diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaViewImpl.ui.xml index 00519e1ca81..6dce0efbb5f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaViewImpl.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaViewImpl.ui.xml @@ -1,7 +1,6 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.client.shared" xmlns:mp="urn:import:com.sap.sailing.gwt.home.mobile.partials"> diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java index 85354b35f57..f8e3e6a8c9b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java @@ -5,14 +5,6 @@ package com.sap.sailing.gwt.home.shared; */ public class ExperimentalFeatures { - /** - * Show new races list - */ - public static final boolean SHOW_NEW_RACES_LIST = true; - /** - * Show new regatta list - */ - public static final boolean SHOW_NEW_REGATTA_LIST = true; /** * Show overview tab for single-regatta events and series events. */ From ac23ea69e4842b4bb158b56c4023ffb9a30a139c Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Tue, 15 Sep 2015 14:26:08 +0200 Subject: [PATCH 237/504] Removed unused methods of SailingService --- .../sailing/gwt/ui/client/SailingService.java | 7 -- .../gwt/ui/client/SailingServiceAsync.java | 5 -- .../gwt/ui/server/SailingServiceImpl.java | 71 ------------------- 3 files changed, 83 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 8833ce8ad54..2514b7f0e09 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -1,6 +1,5 @@ package com.sap.sailing.gwt.ui.client; -import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; @@ -387,12 +386,8 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS Util.Pair checkLeaderboardName(String leaderboardName); - /** for backward compatibility with the regatta overview */ List getRegattaStructureForEvent(UUID eventId); - /** the replacement service for getRegattaStructureForEvent() */ - List getRegattaStructureOfEvent(UUID eventId); - List getRaceStateEntriesForRaceGroup(UUID eventId, List visibleCourseAreas, List visibleRegattas, boolean showOnlyCurrentlyRunningRaces, boolean showOnlyRacesOfSameDay) throws Exception; @@ -618,8 +613,6 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS void inviteBuoyTenderViaEmail(String serverUrlWithoutTrailingSlash, EventDTO eventDto, String leaderboardName, String emails, String localeInfoName) throws MailException; - - ArrayList getLeaderboardGroupsByEventId(UUID id); boolean doesRegattaLogContainCompetitors(String name) throws DoesNotHaveRegattaLogException; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index 62515ad3b60..c2a41850f5e 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -1,6 +1,5 @@ package com.sap.sailing.gwt.ui.client; -import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; @@ -500,8 +499,6 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void getRegattaStructureForEvent(UUID eventId, AsyncCallback> asyncCallback); - void getRegattaStructureOfEvent(UUID eventId, AsyncCallback> callback); - void getRaceStateEntriesForRaceGroup(UUID eventId, List visibleCourseAreas, List visibleRegattas, boolean showOnlyCurrentlyRunningRaces, boolean showOnlyRacesOfSameDay, AsyncCallback> markedAsyncCallback); @@ -720,8 +717,6 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void inviteBuoyTenderViaEmail(String serverUrlWithoutTrailingSlash, EventDTO eventDto, String leaderboardName, String emails, String localeInfoName, AsyncCallback callback); - void getLeaderboardGroupsByEventId(UUID id, AsyncCallback> callback); - void doesRegattaLogContainCompetitors(String name, AsyncCallback regattaLogCallBack); void getRaceIdentifier(String regattaLikeName, String raceColumnName, String fleetName, AsyncCallback asyncCallback); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index ff3f491a315..fc25c3528cd 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -3576,63 +3576,6 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } return raceGroups; } - - /** the replacement service for getRegattaStructureForEvent() */ - @Override - public List getRegattaStructureOfEvent(UUID eventId) { - List raceGroups = new ArrayList(); - Event event = getService().getEvent(eventId); - Map leaderboardWithLeaderboardGroups = new HashMap(); - for(LeaderboardGroup leaderboardGroup: event.getLeaderboardGroups()) { - for(Leaderboard leaderboard: leaderboardGroup.getLeaderboards()) { - leaderboardWithLeaderboardGroups.put(leaderboard, leaderboardGroup); - } - } - if (event != null) { - for(LeaderboardGroup leaderboardGroup: event.getLeaderboardGroups()) { - for(Leaderboard leaderboard: leaderboardGroup.getLeaderboards()) { - RaceGroupDTO raceGroup = new RaceGroupDTO(leaderboard.getName()); - for (CourseArea courseArea : event.getVenue().getCourseAreas()) { - if (leaderboard.getDefaultCourseArea() != null && leaderboard.getDefaultCourseArea() == courseArea) { - raceGroup.courseAreaIdAsString = courseArea.getId().toString(); - break; - } - } - raceGroup.displayName = getRegattaNameFromLeaderboard(leaderboard); - if(leaderboardWithLeaderboardGroups.containsKey(leaderboard)) { - raceGroup.leaderboardGroupName = leaderboardWithLeaderboardGroups.get(leaderboard).getName(); - } - if (leaderboard instanceof RegattaLeaderboard) { - RegattaLeaderboard regattaLeaderboard = (RegattaLeaderboard) leaderboard; - raceGroup.boatClass = regattaLeaderboard.getRegatta().getBoatClass().getDisplayName(); - for (Series series : regattaLeaderboard.getRegatta().getSeries()) { - RaceGroupSeriesDTO seriesDTO = new RaceGroupSeriesDTO(series.getName()); - raceGroup.getSeries().add(seriesDTO); - for (Fleet fleet : series.getFleets()) { - FleetDTO fleetDTO = new FleetDTO(fleet.getName(), fleet.getOrdering(), fleet.getColor()); - seriesDTO.getFleets().add(fleetDTO); - } - seriesDTO.getRaceColumns().addAll(convertToRaceColumnDTOs(series.getRaceColumns())); - } - } else { - RaceGroupSeriesDTO seriesDTO = new RaceGroupSeriesDTO(LeaderboardNameConstants.DEFAULT_SERIES_NAME); - raceGroup.getSeries().add(seriesDTO); - FleetDTO fleetDTO = new FleetDTO(LeaderboardNameConstants.DEFAULT_FLEET_NAME, 0, null); - seriesDTO.getFleets().add(fleetDTO); - seriesDTO.getRaceColumns().addAll(convertToRaceColumnDTOs(leaderboard.getRaceColumns())); - for(Competitor c: leaderboard.getCompetitors()) { - if(c.getBoat() != null && c.getBoat().getBoatClass() != null) { - raceGroup.boatClass = c.getBoat().getBoatClass().getDisplayName(); - } - } - } - raceGroups.add(raceGroup); - } - } - } - return raceGroups; - } - /** * The name of the regatta to be shown on the regatta overview webpage is retrieved from the name of the {@link Leaderboard}. Since regattas are @@ -5751,20 +5694,6 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S getRaceLogTrackingAdapter().inviteBuoyTenderViaEmail(event, leaderboard, serverUrlWithoutTrailingSlash, emails, getLocale(localeInfoName)); } - - @Override - public ArrayList getLeaderboardGroupsByEventId(UUID id) { - Event event = getService().getEvent(id); - if (event == null) { - throw new RuntimeException("Event not found"); - } - - ArrayList result = new ArrayList<>(); - for (LeaderboardGroup lg : event.getLeaderboardGroups()) { - result.add(convertToLeaderboardGroupDTO(lg, /* withGeoLocationData */false, true)); - } - return result; - } @Override public boolean doesRegattaLogContainCompetitors(String leaderboardName) throws DoesNotHaveRegattaLogException { From 08d242c01a066ce3d858b90559b956af2a521e0b Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Tue, 15 Sep 2015 14:51:18 +0200 Subject: [PATCH 238/504] Added hierarchy connectors for grouping dimension querying --- .../components/PolarCompetitorRetrievalProcessor.java | 2 +- .../components/PolarFleetRetrievalProcessor.java | 2 +- .../components/PolarGPSFixRetrievalProcessor.java | 2 +- .../PolarLeaderboardRetrievalProcessor.java | 2 +- .../components/PolarLegRetrievalProcessor.java | 2 +- .../components/PolarRaceColumnRetrievalProcessor.java | 2 +- .../datamining/data/HasCompetitorPolarContext.java | 3 +++ .../polars/datamining/data/HasFleetPolarContext.java | 3 +++ .../polars/datamining/data/HasGPSFixPolarContext.java | 4 ++++ .../datamining/data/HasLeaderboardPolarContext.java | 3 +++ .../polars/datamining/data/HasLegPolarContext.java | 4 ++++ .../datamining/data/HasRaceColumnPolarContext.java | 3 +++ .../data/impl/CompetitorWithPolarContext.java | 11 ++++++++++- .../datamining/data/impl/FleetWithPolarContext.java | 10 +++++++++- .../datamining/data/impl/GPSFixWithPolarContext.java | 10 +++++++++- .../data/impl/LeaderboardWithPolarContext.java | 10 +++++++++- .../datamining/data/impl/LegWithPolarContext.java | 10 +++++++++- .../data/impl/RaceColumnWithPolarContext.java | 10 +++++++++- 18 files changed, 81 insertions(+), 12 deletions(-) diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarCompetitorRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarCompetitorRetrievalProcessor.java index 6a280a9762c..76303f5dff1 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarCompetitorRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarCompetitorRetrievalProcessor.java @@ -25,7 +25,7 @@ public class PolarCompetitorRetrievalProcessor extends AbstractRetrievalProcesso TrackedRace trackedRace = element.getTrackedRace(); Set competitorWithContext = new HashSet<>(); for (Competitor competitor : trackedRace.getRace().getCompetitors()) { - competitorWithContext.add(new CompetitorWithPolarContext(competitor, trackedRace, element.getLeg())); + competitorWithContext.add(new CompetitorWithPolarContext(competitor, trackedRace, element.getLeg(), element)); } return competitorWithContext; } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarFleetRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarFleetRetrievalProcessor.java index 2ba5dc46cac..c0dda64feab 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarFleetRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarFleetRetrievalProcessor.java @@ -25,7 +25,7 @@ public class PolarFleetRetrievalProcessor extends AbstractRetrievalProcessor fleetWithContext = new HashSet<>(); RaceColumn raceColumn = element.getRaceColumn(); for (Fleet fleet : raceColumn.getFleets()) { - fleetWithContext.add(new FleetWithPolarContext(fleet, raceColumn)); + fleetWithContext.add(new FleetWithPolarContext(fleet, raceColumn, element)); } return fleetWithContext; } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java index a1939d4d58e..85e3772b98c 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java @@ -49,7 +49,7 @@ public class PolarGPSFixRetrievalProcessor extends AbstractRetrievalProcessor fixes = track.getFixes(startTime, true, finishTime, false); for (GPSFixMoving fix : fixes) { - result.add(new GPSFixWithPolarContext(fix, trackedRace, windSpeedRangeGroup, competitor, settings)); + result.add(new GPSFixWithPolarContext(fix, trackedRace, windSpeedRangeGroup, competitor, settings, element)); } } finally { track.unlockAfterRead(); diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLeaderboardRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLeaderboardRetrievalProcessor.java index ca97dd87af8..12e94917ff6 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLeaderboardRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLeaderboardRetrievalProcessor.java @@ -23,7 +23,7 @@ public class PolarLeaderboardRetrievalProcessor extends AbstractRetrievalProcess protected Iterable retrieveData(HasLeaderboardGroupPolarContext element) { Set leaderboardsWithContext = new HashSet<>(); for (Leaderboard leaderboard : element.getLeaderboardGroup().getLeaderboards()) { - leaderboardsWithContext.add(new LeaderboardWithPolarContext(leaderboard)); + leaderboardsWithContext.add(new LeaderboardWithPolarContext(leaderboard, element)); } return leaderboardsWithContext; } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLegRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLegRetrievalProcessor.java index 01ced1a7cf2..84350cc7c47 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLegRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarLegRetrievalProcessor.java @@ -35,7 +35,7 @@ public class PolarLegRetrievalProcessor extends AbstractRetrievalProcessor raceColumnWithContext = new HashSet<>(); Leaderboard leaderboard = element.getLeaderboard(); for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { - raceColumnWithContext.add(new RaceColumnWithPolarContext(raceColumn)); + raceColumnWithContext.add(new RaceColumnWithPolarContext(raceColumn, element)); } return raceColumnWithContext; } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java index 7e61f948091..c4d46c9f06f 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java @@ -13,5 +13,8 @@ public interface HasCompetitorPolarContext { TrackedRace getTrackedRace(); Leg getLeg(); + + @Connector(scanForStatistics=false) + HasLegPolarContext getLegPolarContext(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasFleetPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasFleetPolarContext.java index a0032fd31f7..130406ca0ce 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasFleetPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasFleetPolarContext.java @@ -18,4 +18,7 @@ public interface HasFleetPolarContext { @Connector(messageKey="BoatClass") BoatClass getBoatClass(); + @Connector(scanForStatistics=false) + HasRaceColumnPolarContext getRaceColumnPolarContext(); + } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java index 9b90f3f39fc..d7adaa6b9ee 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java @@ -1,6 +1,7 @@ package com.sap.sailing.polars.datamining.data; import com.sap.sailing.polars.datamining.shared.PolarStatistic; +import com.sap.sse.datamining.shared.annotations.Connector; import com.sap.sse.datamining.shared.annotations.Dimension; import com.sap.sse.datamining.shared.annotations.Statistic; import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; @@ -12,5 +13,8 @@ public interface HasGPSFixPolarContext { @Statistic(messageKey="PolarData") PolarStatistic getPolarStatistics(); + + @Connector(scanForStatistics=false) + HasCompetitorPolarContext getCompetitorPolarContext(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardPolarContext.java index 62836c38b31..779cbcc87fa 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLeaderboardPolarContext.java @@ -7,5 +7,8 @@ public interface HasLeaderboardPolarContext { @Connector(messageKey="Leaderboard") Leaderboard getLeaderboard(); + + @Connector(scanForStatistics=false) + HasLeaderboardGroupPolarContext getLeaderboardGroupPolarContext(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLegPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLegPolarContext.java index 40114722a07..b235a96ec5e 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLegPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasLegPolarContext.java @@ -2,6 +2,7 @@ package com.sap.sailing.polars.datamining.data; import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.datamining.shared.annotations.Connector; import com.sap.sse.datamining.shared.annotations.Dimension; public interface HasLegPolarContext { @@ -12,5 +13,8 @@ public interface HasLegPolarContext { @Dimension(messageKey="LegIndex") Integer getLegIndex(); + + @Connector(scanForStatistics=false) + HasFleetPolarContext getFleetPolarContext(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasRaceColumnPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasRaceColumnPolarContext.java index d324ffdb814..ff1d611138c 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasRaceColumnPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasRaceColumnPolarContext.java @@ -7,5 +7,8 @@ public interface HasRaceColumnPolarContext { @Connector(messageKey="RaceColumn") RaceColumn getRaceColumn(); + + @Connector(scanForStatistics=false) + HasLeaderboardPolarContext getLeaderboardPolarContext(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java index 28f4f2e0cb5..b7d1cacd416 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java @@ -4,17 +4,21 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; +import com.sap.sailing.polars.datamining.data.HasLegPolarContext; public class CompetitorWithPolarContext implements HasCompetitorPolarContext { private final Competitor competitor; private final TrackedRace trackedRace; private final Leg leg; + private final HasLegPolarContext legPolarContext; - public CompetitorWithPolarContext(Competitor competitor, TrackedRace trackedRace, Leg leg) { + public CompetitorWithPolarContext(Competitor competitor, TrackedRace trackedRace, Leg leg, + HasLegPolarContext legPolarContext) { this.competitor = competitor; this.trackedRace = trackedRace; this.leg = leg; + this.legPolarContext = legPolarContext; } @Override @@ -32,4 +36,9 @@ public class CompetitorWithPolarContext implements HasCompetitorPolarContext { return leg; } + @Override + public HasLegPolarContext getLegPolarContext() { + return legPolarContext; + } + } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/FleetWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/FleetWithPolarContext.java index 2cf7d8895ee..48dfdc6e74d 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/FleetWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/FleetWithPolarContext.java @@ -5,15 +5,18 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.polars.datamining.data.HasFleetPolarContext; +import com.sap.sailing.polars.datamining.data.HasRaceColumnPolarContext; public class FleetWithPolarContext implements HasFleetPolarContext { private final Fleet fleet; private final RaceColumn raceColumn; + private final HasRaceColumnPolarContext raceColumnPolarContext; - public FleetWithPolarContext(Fleet fleet, RaceColumn raceColumn) { + public FleetWithPolarContext(Fleet fleet, RaceColumn raceColumn, HasRaceColumnPolarContext raceColumnPolarContext) { this.fleet = fleet; this.raceColumn = raceColumn; + this.raceColumnPolarContext = raceColumnPolarContext; } @Override @@ -36,4 +39,9 @@ public class FleetWithPolarContext implements HasFleetPolarContext { return getTrackedRace().getRace().getBoatClass(); } + @Override + public HasRaceColumnPolarContext getRaceColumnPolarContext() { + return raceColumnPolarContext; + } + } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java index d722eef4da6..fb72203c6fe 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java @@ -6,6 +6,7 @@ import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.common.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; import com.sap.sailing.polars.datamining.data.HasGPSFixPolarContext; import com.sap.sailing.polars.datamining.shared.PolarStatistic; import com.sap.sailing.polars.datamining.shared.PolarStatisticImpl; @@ -19,14 +20,16 @@ public class GPSFixWithPolarContext implements HasGPSFixPolarContext { private final ClusterGroup windSpeedRangeGroup; private final Competitor competitor; private final PolarSheetGenerationSettings settings; + private final HasCompetitorPolarContext competitorPolarContext; public GPSFixWithPolarContext(GPSFixMoving fix, TrackedRace trackedRace, ClusterGroup windSpeedRangeGroup, Competitor competitor, - PolarSheetGenerationSettings settings) { + PolarSheetGenerationSettings settings, HasCompetitorPolarContext competitorPolarContext) { this.fix = fix; this.trackedRace = trackedRace; this.windSpeedRangeGroup = windSpeedRangeGroup; this.competitor = competitor; this.settings = settings; + this.competitorPolarContext = competitorPolarContext; } @Override @@ -41,4 +44,9 @@ public class GPSFixWithPolarContext implements HasGPSFixPolarContext { return new PolarStatisticImpl(trackedRace, competitor, fix, settings); } + @Override + public HasCompetitorPolarContext getCompetitorPolarContext() { + return competitorPolarContext; + } + } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LeaderboardWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LeaderboardWithPolarContext.java index 2af10c5969f..0a4c68760a3 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LeaderboardWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LeaderboardWithPolarContext.java @@ -1,14 +1,17 @@ package com.sap.sailing.polars.datamining.data.impl; import com.sap.sailing.domain.leaderboard.Leaderboard; +import com.sap.sailing.polars.datamining.data.HasLeaderboardGroupPolarContext; import com.sap.sailing.polars.datamining.data.HasLeaderboardPolarContext; public class LeaderboardWithPolarContext implements HasLeaderboardPolarContext { private final Leaderboard leaderboard; + private final HasLeaderboardGroupPolarContext leaderboardGroupPolarContext; - public LeaderboardWithPolarContext(Leaderboard leaderboard) { + public LeaderboardWithPolarContext(Leaderboard leaderboard, HasLeaderboardGroupPolarContext leaderboardGroupPolarContext) { this.leaderboard = leaderboard; + this.leaderboardGroupPolarContext = leaderboardGroupPolarContext; } @Override @@ -16,4 +19,9 @@ public class LeaderboardWithPolarContext implements HasLeaderboardPolarContext { return leaderboard; } + @Override + public HasLeaderboardGroupPolarContext getLeaderboardGroupPolarContext() { + return leaderboardGroupPolarContext; + } + } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LegWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LegWithPolarContext.java index 311670cb633..22c95270a37 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LegWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/LegWithPolarContext.java @@ -2,16 +2,19 @@ package com.sap.sailing.polars.datamining.data.impl; import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.polars.datamining.data.HasFleetPolarContext; import com.sap.sailing.polars.datamining.data.HasLegPolarContext; public class LegWithPolarContext implements HasLegPolarContext { private final Leg leg; private final TrackedRace trackedRace; + private final HasFleetPolarContext fleetPolarContext; - public LegWithPolarContext(Leg leg, TrackedRace trackedRace) { + public LegWithPolarContext(Leg leg, TrackedRace trackedRace, HasFleetPolarContext fleetPolarContext) { this.leg = leg; this.trackedRace = trackedRace; + this.fleetPolarContext = fleetPolarContext; } @Override @@ -29,4 +32,9 @@ public class LegWithPolarContext implements HasLegPolarContext { return leg.getZeroBasedIndexOfStartWaypoint(); } + @Override + public HasFleetPolarContext getFleetPolarContext() { + return fleetPolarContext; + } + } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/RaceColumnWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/RaceColumnWithPolarContext.java index 07d20191db4..66f4894b7ff 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/RaceColumnWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/RaceColumnWithPolarContext.java @@ -1,14 +1,17 @@ package com.sap.sailing.polars.datamining.data.impl; import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.polars.datamining.data.HasLeaderboardPolarContext; import com.sap.sailing.polars.datamining.data.HasRaceColumnPolarContext; public class RaceColumnWithPolarContext implements HasRaceColumnPolarContext { private final RaceColumn raceColumn; + private final HasLeaderboardPolarContext leaderboardPolarContext; - public RaceColumnWithPolarContext(RaceColumn raceColumn) { + public RaceColumnWithPolarContext(RaceColumn raceColumn, HasLeaderboardPolarContext leaderboardPolarContext) { this.raceColumn = raceColumn; + this.leaderboardPolarContext = leaderboardPolarContext; } @Override @@ -16,4 +19,9 @@ public class RaceColumnWithPolarContext implements HasRaceColumnPolarContext { return raceColumn; } + @Override + public HasLeaderboardPolarContext getLeaderboardPolarContext() { + return leaderboardPolarContext; + } + } From 054d72bfa0e40c447832679b13a0deb8d2c06dc0 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 15 Sep 2015 15:23:45 +0200 Subject: [PATCH 239/504] Adjusted logic for loading event stage content --- .../sailing/gwt/server/HomeServiceUtil.java | 9 +++++ .../event/GetEventOverviewStageAction.java | 37 ++++++++++--------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java index 41ff5524c95..4333c58e712 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java @@ -133,6 +133,15 @@ public final class HomeServiceUtil { return event.findImageWithTag(MediaTagConstants.TEASER); } + public static ImageDescriptor getFeaturedImage(EventBase event) { + return event.findImageWithTag(MediaTagConstants.FEATURED); + } + + public static String getFeaturedImageUrlAsString(EventBase event) { + ImageDescriptor image = getFeaturedImage(event); + return image == null ? null : image.getURL().toString(); + } + public static String getStageImageURLAsString(final EventBase event) { ImageDescriptor image = getStageImage(event); return image == null ? null : image.getURL().toString(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java index 78e28f34706..3caa25a42e0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventOverviewStageAction.java @@ -3,8 +3,8 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; import static com.sap.sailing.gwt.server.HomeServiceUtil.findEventThumbnailImageUrlAsString; import static com.sap.sailing.gwt.server.HomeServiceUtil.getStageImageURLAsString; -import java.util.Arrays; -import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.UUID; import com.google.gwt.core.shared.GwtIncompatible; @@ -13,6 +13,7 @@ import com.sap.sailing.gwt.server.HomeServiceUtil; import com.sap.sailing.gwt.ui.shared.dispatch.Action; import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext; import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL; +import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewVideoStageDTO.Type; import com.sap.sailing.gwt.ui.shared.general.EventState; import com.sap.sse.common.Duration; import com.sap.sse.common.TimePoint; @@ -22,8 +23,6 @@ import com.sap.sse.common.media.MediaTagConstants; import com.sap.sse.common.media.VideoDescriptor; public class GetEventOverviewStageAction implements Action> { - private static final Collection rankedTags = Arrays.asList(MediaTagConstants.STAGE, MediaTagConstants.LIVESTREAM, MediaTagConstants.FEATURED, MediaTagConstants.HIGHLIGHT); - private static final Collection rankedTagsFinished = Arrays.asList(MediaTagConstants.STAGE, MediaTagConstants.FEATURED, MediaTagConstants.HIGHLIGHT); private UUID eventId; private boolean useTeaserImage; @@ -58,23 +57,25 @@ public class GetEventOverviewStageAction implements Action tags = state == EventState.FINISHED ? rankedTagsFinished : rankedTags; - VideoDescriptor stageVideo = HomeServiceUtil.getStageVideo(event, context.getClientLocale(), tags, true); - if(stageVideo != null) { - return new EventOverviewVideoStageDTO(EventOverviewVideoStageDTO.Type.MEDIA, HomeServiceUtil.toVideoDTO(stageVideo)); + // P1: Featured video if available + List videoTags = Collections.singletonList(MediaTagConstants.FEATURED); + VideoDescriptor featuredVideo = HomeServiceUtil.getStageVideo(event, context.getClientLocale(), videoTags , false); + if (featuredVideo != null) { + return new EventOverviewVideoStageDTO(Type.MEDIA, HomeServiceUtil.toVideoDTO(featuredVideo)); } - String stageImageUrl = useTeaserImage ? findEventThumbnailImageUrlAsString(event) : getStageImageURLAsString(event); + + // P2: Featured image if available + String imageUrl = HomeServiceUtil.getFeaturedImageUrlAsString(event); + if (imageUrl == null) { + // P3: Show Teaser/Stage image + imageUrl = useTeaserImage ? findEventThumbnailImageUrlAsString(event) : getStageImageURLAsString(event); + } + + // Show countdown for planned or upcoming events if(state == EventState.UPCOMING || state == EventState.PLANNED) { - return new EventOverviewTickerStageDTO(event.getStartDate().asDate(), event.getName(), stageImageUrl); + return new EventOverviewTickerStageDTO(event.getStartDate().asDate(), event.getName(), imageUrl); } - return new EventOverviewTickerStageDTO(null, null, stageImageUrl); - - + return new EventOverviewTickerStageDTO(null, null, imageUrl); // TODO do the full implementation From dca01ab291656b76798feeca60c2c794322b037b Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 15 Sep 2015 15:45:09 +0200 Subject: [PATCH 240/504] Adjusted RaceOfficeSection link styles --- .../gwt/home/desktop/partials/raceoffice/RaceOfficeSection.gss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/raceoffice/RaceOfficeSection.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/raceoffice/RaceOfficeSection.gss index 351c44e0440..aa462c37b18 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/raceoffice/RaceOfficeSection.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/raceoffice/RaceOfficeSection.gss @@ -13,7 +13,7 @@ .raceoffice_links { } .raceoffice_link { - font-weight: 600; + font-weight: 700; text-decoration: none; color: #666666; margin-right: 1.5em; From ea774cb6a96fdaf6385440cb3b60c709b1d6d555 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 15 Sep 2015 16:17:05 +0200 Subject: [PATCH 241/504] Adjusted mobile ImageGallery layout --- .../gwt/home/mobile/partials/imagegallery/ImageGallery.gss | 3 +++ .../home/mobile/partials/imagegallery/ImageGalleryItem.java | 6 +++--- .../mobile/partials/imagegallery/ImageGalleryItem.ui.xml | 3 +-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.gss index 08ffceae8fc..8b2d6e67282 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGallery.gss @@ -17,6 +17,9 @@ .imagegallery_column_item { cursor: pointer; margin-bottom: 0.666666666666667em; + background-size: cover; + width: 100%; + padding-top: 100%; } .imagegallery_column_item img { width: 100%; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.java index e05cd2ba919..d0ca3ad3396 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.java @@ -1,8 +1,8 @@ package com.sap.sailing.gwt.home.mobile.partials.imagegallery; import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Element; -import com.google.gwt.dom.client.ImageElement; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.HasClickHandlers; @@ -19,11 +19,11 @@ public class ImageGalleryItem extends Widget implements HasClickHandlers { interface ImageGalleryItemUiBinder extends UiBinder { } - @UiField ImageElement imageUi; + @UiField DivElement imageUi; public ImageGalleryItem(ImageDTO image) { setElement(uiBinder.createAndBindUi(this)); - imageUi.setSrc(image.getSourceRef()); + imageUi.getStyle().setBackgroundImage("url('" + image.getSourceRef() + "')"); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.ui.xml index 664fa530c7b..28a55b5b3e8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/imagegallery/ImageGalleryItem.ui.xml @@ -4,7 +4,6 @@ -
- +
\ No newline at end of file From 3baee85d1d4478859d688a6cd280bfd0e97f1fe3 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 15 Sep 2015 17:04:32 +0200 Subject: [PATCH 242/504] Temporary adjusted mobile races overview - will be reverted when a mobile race viewer is introduced --- .../regattacompetition/RegattaCompetition.gss | 3 ++- .../RegattaCompetitionFleetRace.java | 8 ++++--- .../RegattaCompetitionFleetRace.ui.xml | 6 ++++-- .../TempMobileRaceStateLegend.java | 21 +++++++++++++++++++ .../TempMobileRaceStateLegend.ui.xml | 19 +++++++++++++++++ .../places/event/races/RacesViewImpl.ui.xml | 3 ++- 6 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss index c665333c581..7e28cfa979d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss @@ -84,7 +84,8 @@ background: #008fcc; } .regattacompetition_phase_fleet_raceuntracked { - background: #666; +/* background: #666; */ + background: #f0ab00; } .regattacompetition_phase_fleet_raceuntracked .regattacompetition_phase_fleet_race_title:after { display: none; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java index d55ba377cb4..013877f1e12 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java @@ -40,9 +40,11 @@ public class RegattaCompetitionFleetRace extends UIObject { } else if (viewState == RaceViewState.PLANNED || viewState == RaceViewState.SCHEDULED) { anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceplanned()); } - if (trackingState != RaceTrackingState.TRACKED_VALID_DATA) { - anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceuntracked()); - } + // TODO: As long as there is no mobile race viewer, show all races as untracked (with different background-color) + anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceuntracked()); + // if (trackingState != RaceTrackingState.TRACKED_VALID_DATA) { + // anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceuntracked()); + // } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml index 52ef001d3ad..93435c1d7c0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml @@ -5,7 +5,9 @@ -
-
+
+
+ +
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.java new file mode 100644 index 00000000000..2dbe860abbe --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.java @@ -0,0 +1,21 @@ +package com.sap.sailing.gwt.home.mobile.partials.regattacompetition; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Element; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.home.shared.partials.regattanavigation.RegattaNavigationResources; + +public class TempMobileRaceStateLegend extends Widget { + + private static RaceStateLegendUiBinder uiBinder = GWT.create(RaceStateLegendUiBinder.class); + + interface RaceStateLegendUiBinder extends UiBinder { + } + + public TempMobileRaceStateLegend() { + RegattaNavigationResources.INSTANCE.css().ensureInjected(); + setElement(uiBinder.createAndBindUi(this)); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.ui.xml new file mode 100644 index 00000000000..d5f66f23870 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.ui.xml @@ -0,0 +1,19 @@ + + + + + + +
+
+ +
+
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml index b26e899bd5b..b44db2ddc14 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml @@ -19,7 +19,8 @@
- + +
From e079fc8f203cd9c129d1caa65a32e695818dd32a Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 15 Sep 2015 17:45:29 +0200 Subject: [PATCH 243/504] Fixed mobile impressions if only two images available --- .../mobile/partials/impressions/Impressions.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/impressions/Impressions.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/impressions/Impressions.java index fe1735fa120..efa31402e6a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/impressions/Impressions.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/impressions/Impressions.java @@ -60,6 +60,15 @@ public class Impressions extends Composite { GWT.log("Got " + images.size() + " images"); ImageCarousel imageCarousel = new ImageCarousel(); imageCarousel.registerFullscreenViewer(new MobileFullscreenGallery()); + int count = addImages(imageCarousel, images); + if (count > 1) { + mobileSectionUi.clearContent(); + if (count == 2) addImages(imageCarousel, images); + mobileSectionUi.addContent(imageCarousel); + } + } + + private int addImages(ImageCarousel imageCarousel, Collection images) { int count = 0; for (SailingImageDTO imageDTO : images) { if (imageDTO.getHeightInPx() == null || imageDTO.getWidthInPx() == null) { @@ -70,10 +79,7 @@ public class Impressions extends Composite { count++; imageCarousel.addImage(imageDTO); } - if (count > 1) { - mobileSectionUi.clearContent(); - mobileSectionUi.addContent(imageCarousel); - } + return count; } } From c21cf258373295bd758330194c3ebc8cb524202b Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 16 Sep 2015 10:56:37 +0200 Subject: [PATCH 244/504] Applying some settings for polar datamining --- .../presentation/TabbedResultsPresenter.java | 2 ++ .../ui/polarsheets/PolarResultsPresenter.java | 23 +++++++++---- .../datamining/shared/PolarAggregation.java | 9 +++++- .../shared/PolarAggregationImpl.java | 32 ++++++++++++++++++- .../datamining/shared/PolarStatistic.java | 3 ++ .../datamining/shared/PolarStatisticImpl.java | 11 +++++-- .../PolarsDataMiningSerializationDummy.java | 1 + .../Polars_StringMessages_de.properties | 3 +- .../Polars_StringMessages_en.properties | 3 +- .../PolarGPSFixRetrievalProcessor.java | 13 +++++++- .../PolarDataAggregationProcessor.java | 3 +- .../data/HasGPSFixPolarContext.java | 3 ++ .../data/impl/GPSFixWithPolarContext.java | 18 ++++++++--- 13 files changed, 103 insertions(+), 21 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java index 4507ae0143b..a02d5c7bbf4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java @@ -66,7 +66,9 @@ public class TabbedResultsPresenter implements ResultsPresenter { @Override public void showResult(QueryResultDTO result) { if (result.getResultType().equals("com.sap.sailing.polars.datamining.shared.PolarAggregation")) { + CloseableTabHeader oldHeader = getSelectedHeader(); addPolarTabAndFocus(); + removeTab(oldHeader); } getSelectedHeader().setText(result.getResultSignifier()); getSelectedPresenter().showResult(result); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarResultsPresenter.java index 33f1fbe1eaf..52182668093 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarResultsPresenter.java @@ -4,12 +4,15 @@ import java.util.Map; import java.util.Map.Entry; import org.moxieapps.gwt.highcharts.client.Chart; +import org.moxieapps.gwt.highcharts.client.ChartSubtitle; +import org.moxieapps.gwt.highcharts.client.ChartTitle; import org.moxieapps.gwt.highcharts.client.Exporting; import org.moxieapps.gwt.highcharts.client.Series; import org.moxieapps.gwt.highcharts.client.plotOptions.LinePlotOptions; import com.google.gwt.user.client.ui.SimpleLayoutPanel; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.domain.common.PolarSheetGenerationSettings; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.datamining.presentation.AbstractResultsPresenter; import com.sap.sailing.polars.datamining.shared.PolarAggregation; @@ -39,6 +42,7 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { Chart polarSheetChart = new Chart().setType(Series.Type.LINE) .setLinePlotOptions(new LinePlotOptions().setLineWidth(1)) .setPolar(true).setHeight100().setWidth100(); + polarSheetChart.setTitle(new ChartTitle().setText(""), new ChartSubtitle().setText("")); polarSheetChart.getYAxis().setMin(0); polarSheetChart.getXAxis().setMin(-179).setMax(180).setTickInterval(45); polarSheetChart.setOption("/pane/startAngle", 180); @@ -61,17 +65,22 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { protected void internalShowResults(QueryResultDTO result) { Map results = result.getResults(); for (Entry entry : results.entrySet()) { - Series series = polarChart.createSeries(); PolarAggregation aggregation = (PolarAggregation) entry.getValue(); double[] speedsPerAngle = aggregation.getAverageSpeedsPerAngle(); - for (int i = 0; i < 360; i++) { - double speed = speedsPerAngle[i]; - if (speed > 0) { - series.addPoint(i - 179, speed, false, false, false); + int count = aggregation.getCount(); + int[] countPerAngle = aggregation.getCountPerAngle(); + PolarSheetGenerationSettings settings = aggregation.getSettings(); + if (settings.getMinimumDataCountPerGraph() < count) { + Series series = polarChart.createSeries(); + for (int i = 0; i < 360; i++) { + double speed = speedsPerAngle[i]; + if (countPerAngle[i] >= settings.getMinimumDataCountPerAngle() && speed > 0) { + series.addPoint(i - 179, speed, false, false, false); + } } + series.setName(entry.getKey().asString()); + polarChart.addSeries(series, false, false); } - series.setName(entry.getKey().asString()); - polarChart.addSeries(series); } wrapperPanel.onResize(); } diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java index 03b392c0f9d..27e1876eead 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java @@ -2,10 +2,17 @@ package com.sap.sailing.polars.datamining.shared; import java.io.Serializable; +import com.sap.sailing.domain.common.PolarSheetGenerationSettings; + public interface PolarAggregation extends Serializable { void addElement(PolarStatistic dataEntry); double[] getAverageSpeedsPerAngle(); - + + int[] getCountPerAngle(); + + int getCount(); + + PolarSheetGenerationSettings getSettings(); } diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java index 34bcaa6ea20..fd363248298 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java @@ -1,11 +1,23 @@ package com.sap.sailing.polars.datamining.shared; +import com.sap.sailing.domain.common.PolarSheetGenerationSettings; + public class PolarAggregationImpl implements PolarAggregation { private static final long serialVersionUID = 9177124509619315748L; private double[] sumSpeedsPerAngle = new double[360]; - private double[] countPerAngle = new double[360]; + private int[] countPerAngle = new int[360]; + private int count = 0; + private PolarSheetGenerationSettings settings; + + public PolarAggregationImpl() { + //GWT + } + + public PolarAggregationImpl(PolarSheetGenerationSettings settings) { + this.settings = settings; + } @Override public void addElement(PolarStatistic dataEntry) { @@ -16,6 +28,7 @@ public class PolarAggregationImpl implements PolarAggregation { } sumSpeedsPerAngle[angleDeg] += dataEntry.getBoatSpeed().getKnots(); countPerAngle[angleDeg]++; + count++; } @Override @@ -29,4 +42,21 @@ public class PolarAggregationImpl implements PolarAggregation { return averages; } + @Override + public int[] getCountPerAngle() { + return countPerAngle; + } + + @Override + public int getCount() { + return count; + } + + @Override + public PolarSheetGenerationSettings getSettings() { + return settings; + } + + + } diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatistic.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatistic.java index ffa74ed2d45..7d2ee615b28 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatistic.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatistic.java @@ -1,5 +1,6 @@ package com.sap.sailing.polars.datamining.shared; +import com.sap.sailing.domain.common.PolarSheetGenerationSettings; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; @@ -10,5 +11,7 @@ public interface PolarStatistic { public Speed getWindSpeed(); public double getTrueWindAngleDeg(); + + public PolarSheetGenerationSettings getSettings(); } diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java index 92b265aa684..52b09aab898 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java @@ -21,8 +21,10 @@ public class PolarStatisticImpl implements PolarStatistic { private final SpeedWithBearing boatSpeed; private final Wind windSpeed; private final double trueWindAngleDeg; + private final PolarSheetGenerationSettings settings; public PolarStatisticImpl(TrackedRace trackedRace, Competitor competitor, GPSFixMoving fix, PolarSheetGenerationSettings settings) { + this.settings = settings; GPSFixTrack track = trackedRace.getTrack(competitor); boatSpeed = track.getEstimatedSpeed(fix.getTimePoint()); Bearing bearing = boatSpeed.getBearing(); @@ -64,7 +66,7 @@ public class PolarStatisticImpl implements PolarStatistic { return trueWindAngleDeg; } - private Set collectWindSourcesToIgnoreForBearing(TrackedRace race, boolean excludeCourseBased) { + public static Set collectWindSourcesToIgnoreForBearing(TrackedRace race, boolean excludeCourseBased) { Set windSourcesToExclude = new HashSet(); Iterable combinedSources = race.getWindSources(WindSourceType.COMBINED); for (WindSource combinedSource : combinedSources) { @@ -91,7 +93,7 @@ public class PolarStatisticImpl implements PolarStatistic { return windSourcesToExclude; } - private Set collectWindSourcesToIgnoreForSpeed(TrackedRace race) { + public static Set collectWindSourcesToIgnoreForSpeed(TrackedRace race) { Set windSourcesToExclude = new HashSet(); Iterable combinedSources = race.getWindSources(WindSourceType.COMBINED); for (WindSource combinedSource : combinedSources) { @@ -116,4 +118,9 @@ public class PolarStatisticImpl implements PolarStatistic { return windSourcesToExclude; } + @Override + public PolarSheetGenerationSettings getSettings() { + return settings; + } + } diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java index c7c97be455f..b95c225e298 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java @@ -8,6 +8,7 @@ public final class PolarsDataMiningSerializationDummy implements SerializationDu private PolarAggregation polarAggregation; private PolarAggregationImpl polarAggregationImpl; + private Boolean itsABoolean; private PolarsDataMiningSerializationDummy() { } diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties index cab6849b875..f5384a2f7e3 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties @@ -4,4 +4,5 @@ LegIndex=Schenkel Index PolarData=Polardaten Polars=Polare GPSFix=GPS Fix -WindRange=Wind Bereich \ No newline at end of file +WindRange=Wind Bereich +WindIsConfident=konfidente Windmessung \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties index 7e0e7418251..887d1dc4ee6 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties @@ -4,4 +4,5 @@ LegIndex=Leg Index PolarData=Polar Data Polars=Polars GPSFix=GPS Fix -WindRange=Wind Range \ No newline at end of file +WindRange=Wind Range +WindIsConfident=Confident Wind Measurement \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java index 85e3772b98c..0a8284e8989 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java @@ -8,17 +8,21 @@ import java.util.concurrent.ExecutorService; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.common.PolarSheetGenerationSettings; +import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.impl.WindSpeedSteppingWithMaxDistance; import com.sap.sailing.domain.common.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; import com.sap.sailing.polars.datamining.data.HasGPSFixPolarContext; import com.sap.sailing.polars.datamining.data.impl.GPSFixWithPolarContext; import com.sap.sailing.polars.datamining.data.impl.SpeedClusterGroup; +import com.sap.sailing.polars.datamining.shared.PolarStatisticImpl; import com.sap.sse.common.TimePoint; +import com.sap.sse.common.Util.Pair; import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.data.ClusterGroup; import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; @@ -49,7 +53,14 @@ public class PolarGPSFixRetrievalProcessor extends AbstractRetrievalProcessor fixes = track.getFixes(startTime, true, finishTime, false); for (GPSFixMoving fix : fixes) { - result.add(new GPSFixWithPolarContext(fix, trackedRace, windSpeedRangeGroup, competitor, settings, element)); + WindWithConfidence> wind = trackedRace.getWindWithConfidence( + fix.getPosition(), + fix.getTimePoint(), + PolarStatisticImpl.collectWindSourcesToIgnoreForSpeed(trackedRace)); + if (wind != null) { + result.add(new GPSFixWithPolarContext(fix, trackedRace, windSpeedRangeGroup, competitor, + settings, wind, element)); + } } } finally { track.unlockAfterRead(); diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java index 3d224048355..5cbf7ec40d3 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java @@ -18,7 +18,6 @@ import com.sap.sse.datamining.shared.GroupKey; public class PolarDataAggregationProcessor extends AbstractParallelGroupedDataAggregationProcessor { private static final String POLARS_MESSAGE_KEY = "Polars"; - //FIXME!!! Replace Integer with actual result data type private final Map resultMap = new HashMap<>(); public PolarDataAggregationProcessor(ExecutorService executor, @@ -37,7 +36,7 @@ public class PolarDataAggregationProcessor extends AbstractParallelGroupedDataAg protected void handleElement(GroupedDataEntry element) { PolarAggregation polarAggregation = resultMap.get(element.getKey()); if (polarAggregation == null) { - polarAggregation = new PolarAggregationImpl(); + polarAggregation = new PolarAggregationImpl(element.getDataEntry().getSettings()); resultMap.put(element.getKey(), polarAggregation); } polarAggregation.addElement(element.getDataEntry()); diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java index d7adaa6b9ee..182130088ce 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java @@ -11,6 +11,9 @@ public interface HasGPSFixPolarContext { @Dimension(messageKey="WindRange") ClusterDTO getWindSpeedRange(); + @Dimension(messageKey="WindIsConfident") + Boolean windIsConfident(); + @Statistic(messageKey="PolarData") PolarStatistic getPolarStatistics(); diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java index fb72203c6fe..bb86d4a4a3a 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java @@ -2,14 +2,17 @@ package com.sap.sailing.polars.datamining.data.impl; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.PolarSheetGenerationSettings; +import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.Wind; import com.sap.sailing.domain.common.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; import com.sap.sailing.polars.datamining.data.HasGPSFixPolarContext; import com.sap.sailing.polars.datamining.shared.PolarStatistic; import com.sap.sailing.polars.datamining.shared.PolarStatisticImpl; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.Util.Pair; import com.sap.sse.datamining.data.ClusterGroup; import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; @@ -21,22 +24,22 @@ public class GPSFixWithPolarContext implements HasGPSFixPolarContext { private final Competitor competitor; private final PolarSheetGenerationSettings settings; private final HasCompetitorPolarContext competitorPolarContext; + private WindWithConfidence> wind; public GPSFixWithPolarContext(GPSFixMoving fix, TrackedRace trackedRace, ClusterGroup windSpeedRangeGroup, Competitor competitor, - PolarSheetGenerationSettings settings, HasCompetitorPolarContext competitorPolarContext) { + PolarSheetGenerationSettings settings, WindWithConfidence> wind, HasCompetitorPolarContext competitorPolarContext) { this.fix = fix; this.trackedRace = trackedRace; this.windSpeedRangeGroup = windSpeedRangeGroup; this.competitor = competitor; this.settings = settings; this.competitorPolarContext = competitorPolarContext; + this.wind = wind; } @Override public ClusterDTO getWindSpeedRange() { - //TODO exclude wind sources and stuff - Wind wind = trackedRace.getWind(fix.getPosition(), fix.getTimePoint()); - return new ClusterDTO(windSpeedRangeGroup.getClusterFor(wind).toString()); + return new ClusterDTO(windSpeedRangeGroup.getClusterFor(wind.getObject()).toString()); } @Override @@ -49,4 +52,9 @@ public class GPSFixWithPolarContext implements HasGPSFixPolarContext { return competitorPolarContext; } + @Override + public Boolean windIsConfident() { + return wind.getConfidence() >= settings.getMinimumWindConfidence(); + } + } From ca67e9c32adaa3d13fcefdebbbe19489cb7d306f Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 16 Sep 2015 11:28:00 +0200 Subject: [PATCH 245/504] Adjusted component ordering in mobile event overview for single regatta and series events --- .../partials/eventsteps/EventSteps.ui.xml | 2 +- .../places/event/overview/EventViewImpl.java | 54 +++++++++++-------- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.ui.xml index 290326c7adc..f8670cbae91 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.ui.xml @@ -4,7 +4,7 @@ - + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java index 608f744dd4f..00fa6a629ec 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java @@ -39,9 +39,18 @@ public class EventViewImpl extends AbstractEventView implem public EventViewImpl(EventView.Presenter presenter) { super(presenter, false, false); FlowPanel container = new FlowPanel(); - this.setupOverviewStage(container); - this.setupProgress(container); - this.setupListContent(container); + if (isMultiRegattaEvent()) { + this.setupOverviewStage(container); + this.setupRegattaStatusList(container); + } else { + this.setupProgress(container); + this.setupLiveRaces(container); + this.setupOverviewStage(container); + this.setupMiniLeaderboard(container); + if (ExperimentalFeatures.SHOW_REGATTA_OVERVIEW_AND_RACES_ON_MOBILE) { + initRacesNavigation(container); + } + } this.setupUpdateBox(container); this.setupImpressions(container); this.setupStatisticsBox(container); @@ -50,8 +59,7 @@ public class EventViewImpl extends AbstractEventView implem private void setupProgress(Panel container) { eventStepsUi = new EventSteps(); - boolean showRegattaProgress = !isMultiRegattaEvent() && ExperimentalFeatures.SHOW_REGATTA_PROGRESS_ON_MOBILE; - if (showRegattaProgress) { + if (ExperimentalFeatures.SHOW_REGATTA_PROGRESS_ON_MOBILE) { refreshManager.add(eventStepsUi, new GetRegattaWithProgressAction(getEventId(), getRegattaId())); container.add(eventStepsUi); } @@ -63,27 +71,27 @@ public class EventViewImpl extends AbstractEventView implem container.add(overviewStageUi); } - private void setupListContent(Panel container) { - if (isMultiRegattaEvent()) { - RegattaStatus regattaStatus = new RegattaStatus(currentPresenter); - container.add(regattaStatus); - refreshManager.add(regattaStatus, new GetRegattasAndLiveRacesForEventAction(getEventId())); - } else { - if (ExperimentalFeatures.SHOW_REGATTA_LIVE_RACES_ON_MOBILE) { - liveRacesUi = new RegattaLiveRaces(); - refreshManager.add(liveRacesUi, new GetLiveRacesForRegattaAction(getEventId(), getRegattaId())); - container.add(liveRacesUi); - } - MinileaderboardBox miniLeaderboard = new MinileaderboardBox(false); - miniLeaderboard.setAction(MSG.showAll(), currentPresenter.getRegattaMiniLeaderboardNavigation(getRegattaId())); - refreshManager.add(miniLeaderboard, new GetMiniLeaderbordAction(getEventId(), getRegattaId(), 3)); - container.add(miniLeaderboard); - if (ExperimentalFeatures.SHOW_REGATTA_OVERVIEW_AND_RACES_ON_MOBILE) { - initRacesNavigation(container); - } + private void setupRegattaStatusList(Panel container) { + RegattaStatus regattaStatus = new RegattaStatus(currentPresenter); + container.add(regattaStatus); + refreshManager.add(regattaStatus, new GetRegattasAndLiveRacesForEventAction(getEventId())); + } + + private void setupLiveRaces(Panel container) { + if (ExperimentalFeatures.SHOW_REGATTA_LIVE_RACES_ON_MOBILE) { + liveRacesUi = new RegattaLiveRaces(); + refreshManager.add(liveRacesUi, new GetLiveRacesForRegattaAction(getEventId(), getRegattaId())); + container.add(liveRacesUi); } } + private void setupMiniLeaderboard(Panel container) { + MinileaderboardBox miniLeaderboard = new MinileaderboardBox(false); + miniLeaderboard.setAction(MSG.showAll(), currentPresenter.getRegattaMiniLeaderboardNavigation(getRegattaId())); + refreshManager.add(miniLeaderboard, new GetMiniLeaderbordAction(getEventId(), getRegattaId(), 3)); + container.add(miniLeaderboard); + } + private void setupUpdateBox(Panel container) { updatesBoxUi = new UpdatesBox(currentPresenter, refreshManager); if (currentPresenter.getCtx().getEventDTO().getState() == EventState.RUNNING) { From 47be80b513558f1bb95dd9fd1d2c7db152070151 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 16 Sep 2015 13:13:56 +0200 Subject: [PATCH 246/504] Reduced number of getWind calls in polar datamining --- .../datamining/shared/PolarStatisticImpl.java | 47 ++++++++++--------- .../PolarGPSFixRetrievalProcessor.java | 2 +- .../data/impl/GPSFixWithPolarContext.java | 2 +- 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java index 52b09aab898..9914ba2b8a1 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java @@ -23,14 +23,15 @@ public class PolarStatisticImpl implements PolarStatistic { private final double trueWindAngleDeg; private final PolarSheetGenerationSettings settings; - public PolarStatisticImpl(TrackedRace trackedRace, Competitor competitor, GPSFixMoving fix, PolarSheetGenerationSettings settings) { + public PolarStatisticImpl(TrackedRace trackedRace, Competitor competitor, GPSFixMoving fix, PolarSheetGenerationSettings settings, + Wind windSpeed) { this.settings = settings; + this.windSpeed = windSpeed; GPSFixTrack track = trackedRace.getTrack(competitor); boatSpeed = track.getEstimatedSpeed(fix.getTimePoint()); Bearing bearing = boatSpeed.getBearing(); Position position = fix.getPosition(); - this.windSpeed = trackedRace.getWind(position, fix.getTimePoint(), collectWindSourcesToIgnoreForSpeed(trackedRace)); Set windSourcesToExclude; if (settings.useOnlyEstimatedForWindDirection()) { windSourcesToExclude = collectWindSourcesToIgnoreForBearing(trackedRace, /* exclude course based */true); @@ -93,27 +94,29 @@ public class PolarStatisticImpl implements PolarStatistic { return windSourcesToExclude; } - public static Set collectWindSourcesToIgnoreForSpeed(TrackedRace race) { + public static Set collectWindSourcesToIgnoreForSpeed(TrackedRace race, boolean useOnlyWindGaugesForWindSpeed) { Set windSourcesToExclude = new HashSet(); - Iterable combinedSources = race.getWindSources(WindSourceType.COMBINED); - for (WindSource combinedSource : combinedSources) { - windSourcesToExclude.add(combinedSource); - } - Iterable courseSources = race.getWindSources(WindSourceType.COURSE_BASED); - for (WindSource courseSource : courseSources) { - windSourcesToExclude.add(courseSource); - } - Iterable trackBasedSources = race.getWindSources(WindSourceType.TRACK_BASED_ESTIMATION); - for (WindSource trackBasedSource : trackBasedSources) { - windSourcesToExclude.add(trackBasedSource); - } - Iterable rcSources = race.getWindSources(WindSourceType.RACECOMMITTEE); - for (WindSource rcSource : rcSources) { - windSourcesToExclude.add(rcSource); - } - Iterable webSources = race.getWindSources(WindSourceType.WEB); - for (WindSource webSource : webSources) { - windSourcesToExclude.add(webSource); + if (useOnlyWindGaugesForWindSpeed) { + Iterable combinedSources = race.getWindSources(WindSourceType.COMBINED); + for (WindSource combinedSource : combinedSources) { + windSourcesToExclude.add(combinedSource); + } + Iterable courseSources = race.getWindSources(WindSourceType.COURSE_BASED); + for (WindSource courseSource : courseSources) { + windSourcesToExclude.add(courseSource); + } + Iterable trackBasedSources = race.getWindSources(WindSourceType.TRACK_BASED_ESTIMATION); + for (WindSource trackBasedSource : trackBasedSources) { + windSourcesToExclude.add(trackBasedSource); + } + Iterable rcSources = race.getWindSources(WindSourceType.RACECOMMITTEE); + for (WindSource rcSource : rcSources) { + windSourcesToExclude.add(rcSource); + } + Iterable webSources = race.getWindSources(WindSourceType.WEB); + for (WindSource webSource : webSources) { + windSourcesToExclude.add(webSource); + } } return windSourcesToExclude; } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java index 0a8284e8989..5d8bb13ac43 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java @@ -56,7 +56,7 @@ public class PolarGPSFixRetrievalProcessor extends AbstractRetrievalProcessor> wind = trackedRace.getWindWithConfidence( fix.getPosition(), fix.getTimePoint(), - PolarStatisticImpl.collectWindSourcesToIgnoreForSpeed(trackedRace)); + PolarStatisticImpl.collectWindSourcesToIgnoreForSpeed(trackedRace, settings.useOnlyWindGaugesForWindSpeed())); if (wind != null) { result.add(new GPSFixWithPolarContext(fix, trackedRace, windSpeedRangeGroup, competitor, settings, wind, element)); diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java index bb86d4a4a3a..841d028cd7e 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java @@ -44,7 +44,7 @@ public class GPSFixWithPolarContext implements HasGPSFixPolarContext { @Override public PolarStatistic getPolarStatistics() { - return new PolarStatisticImpl(trackedRace, competitor, fix, settings); + return new PolarStatisticImpl(trackedRace, competitor, fix, settings, wind.getObject()); } @Override From dc5993d411ad0763162f4569ad20e63d7198952e Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 16 Sep 2015 15:58:50 +0200 Subject: [PATCH 247/504] Changed minimum wind confidence default value for polars seems like most wind has a confidence between 0.1 and 0.01 now. 0.1 as a minimum filters out most of the data, which is not desirable. When the settings were first created, the confidences were distributed differently --- .../domain/common/impl/PolarSheetGenerationSettingsImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PolarSheetGenerationSettingsImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PolarSheetGenerationSettingsImpl.java index 87dc4f28105..57506e42047 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PolarSheetGenerationSettingsImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/PolarSheetGenerationSettingsImpl.java @@ -10,7 +10,7 @@ public class PolarSheetGenerationSettingsImpl extends PolarSheetGenerationSettin public static PolarSheetGenerationSettings createStandardPolarSettings() { double[] levels = { 4., 6., 8., 10., 12., 14., 16., 20., 25., 30. }; WindSpeedSteppingWithMaxDistance windStepping = new WindSpeedSteppingWithMaxDistance(levels, 2.5); - return new PolarSheetGenerationSettingsImpl(50, 0.1, 20, 20, 0.1, true, true, 2, 0.05, true, windStepping, + return new PolarSheetGenerationSettingsImpl(50, 0.01, 20, 20, 0.1, true, true, 2, 0.05, true, windStepping, false, 1); } From 3105c90febecc81389b5b76743d5b9bd1787eb44 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Wed, 16 Sep 2015 16:23:10 +0200 Subject: [PATCH 248/504] The new datamining.annotations is now a shared gwt bundle This is necessary, because the Unit is needed in the frontend and it can't be moved to the datamining.shared bundle --- java/com.sap.sailing.gwt.ui/SailingGWT.launch | 1 + java/com.sap.sailing.gwt.ui/pom.xml | 6 ++++++ .../resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml | 1 + .../com/sap/sse/datamining/DataMiningAnnotations.gwt.xml | 5 +++++ 4 files changed, 13 insertions(+) create mode 100644 java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/DataMiningAnnotations.gwt.xml diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch index e769c4dcdb9..c498593f424 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch @@ -66,6 +66,7 @@ + diff --git a/java/com.sap.sailing.gwt.ui/pom.xml b/java/com.sap.sailing.gwt.ui/pom.xml index 5a841b595e3..7585839ee56 100755 --- a/java/com.sap.sailing.gwt.ui/pom.xml +++ b/java/com.sap.sailing.gwt.ui/pom.xml @@ -106,6 +106,12 @@ 1.0.0-SNAPSHOT sources + + com.sap.sailing + com.sap.sse.datamining.annotations + 1.0.0-SNAPSHOT + sources + com.sap.sailing com.sap.sailing.polars.datamining.shared diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml index 1e831a9ff5f..4727377cef7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml @@ -19,6 +19,7 @@ + diff --git a/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/DataMiningAnnotations.gwt.xml b/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/DataMiningAnnotations.gwt.xml new file mode 100644 index 00000000000..2faa9062465 --- /dev/null +++ b/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/DataMiningAnnotations.gwt.xml @@ -0,0 +1,5 @@ + + + + + From 6262dfde26f4f8648866fe3e441e223b28575539 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 16 Sep 2015 16:59:21 +0200 Subject: [PATCH 249/504] Optimize dynamic regatta progress text information sizing --- .../multiregattalist/MultiRegattaList.gss | 39 +++++++----- .../MultiRegattaListResources.java | 2 + .../MultiRegattaListSteps.java | 3 + .../MultiRegattaListStepsBody.java | 62 ++++++++++++++----- .../MultiRegattaListStepsBody.ui.xml | 10 ++- 5 files changed, 82 insertions(+), 34 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.gss index fe4b81f38e9..5f3811930ee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.gss @@ -198,28 +198,39 @@ img.race_item_windflag { -moz-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); + overflow-x: visible; +} +.regattalistitem_steps_step_textwrapper { + display: inline-block; white-space: nowrap; } .regattalistitem_steps_step_name { font-weight: 600; display: inline-block; margin-right: 0.333333333333333em; - font-size: 0; +/* font-size: 0; */ + font-size: 0.866666666666667em; } -.regattalistitem_steps_step_name::first-letter { - font-size: 0.866666666666667rem; - margin-right: 0.333333333333333rem; -} -@media (min-width: 49.0625em) { - .regattalistitem_steps_step_name::first-letter { - margin-right: 0; - } -} -@media (min-width: 49.0625em) { - .regattalistitem_steps_step_name { - font-size: 0.866666666666667em; - } +.regattalistitem_steps_step_name_dummy { + font-weight: 600; + display: inline-block; + font-size: 0.866666666666667em; + position: absolute; } +/* .regattalistitem_steps_step_name::first-letter { */ +/* font-size: 0.866666666666667rem; */ +/* margin-right: 0.333333333333333rem; */ +/* } */ +/* @media (min-width: 49.0625em) { */ +/* .regattalistitem_steps_step_name::first-letter { */ +/* margin-right: 0; */ +/* } */ +/* } */ +/* @media (min-width: 49.0625em) { */ +/* .regattalistitem_steps_step_name { */ +/* font-size: 0.866666666666667em; */ +/* } */ +/* } */ .regattalistitem_steps_step_check { display: inline-block; vertical-align: middle; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListResources.java index de5fb9330cf..2bfec96bb05 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListResources.java @@ -49,7 +49,9 @@ public interface MultiRegattaListResources extends ClientBundle { String regattalistitem_steps_step(); String regattalistitem_steps_stepinactive(); String regattalistitem_steps_step_infowrapper(); + String regattalistitem_steps_step_textwrapper(); String regattalistitem_steps_step_name(); + String regattalistitem_steps_step_name_dummy(); String regattalistitem_steps_step_check(); String regattalistitem_steps_step_progress(); String regattalistitem_steps_step_fleets(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.java index 82c9d590fab..9d61b988bed 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.java @@ -65,6 +65,9 @@ public class MultiRegattaListSteps extends Composite { @Override protected void onLoad() { + for (MultiRegattaListStepsBody widget : allMultiregattaSteps) { + widget.init(); + } windowResizeHandlerRegistration = Window.addResizeHandler(new ResizeHandler() { @Override public void onResize(ResizeEvent event) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.java index e6e68e96b27..30ca0ce4cf7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.java @@ -30,18 +30,24 @@ public class MultiRegattaListStepsBody extends UIObject implements RequiresResiz interface MultiRegattaListStepsBodyUiBinder extends UiBinder { } + @UiField DivElement longNameDummyUi; + @UiField DivElement mediumNameDummyUi; + @UiField DivElement nameUi; @UiField DivElement checkUi; @UiField DivElement progressUi; @UiField DivElement fleetsContainerUi; + @UiField DivElement textContainerUi; - private final String seriesName; + private final String seriesName, seriesNameMedium, seriesNameShort; + private int seriesNameLength, seriesNameMediumLength; public MultiRegattaListStepsBody(RegattaProgressSeriesDTO seriesProgress) { setElement(uiBinder.createAndBindUi(this)); - nameUi.getStyle().setVisibility(Visibility.HIDDEN); - seriesName = DEFAULT_SERIES_NAME.equals(seriesProgress.getName()) ? I18N.races() : seriesProgress.getName(); - nameUi.setInnerText(seriesName); + textContainerUi.getStyle().setVisibility(Visibility.HIDDEN); + longNameDummyUi.setInnerText(seriesName = caculateSeriesName(seriesProgress)); + mediumNameDummyUi.setInnerText(seriesNameMedium = caculateSeriesNameMedium()); + seriesNameShort = caculateSeriesNameShort(); if (seriesProgress.isCompleted()) { progressUi.setInnerText(String.valueOf(seriesProgress.getTotalRaceCount())); } else { @@ -51,9 +57,18 @@ public class MultiRegattaListStepsBody extends UIObject implements RequiresResiz } addFleetProgresses(seriesProgress.getFleetState(), seriesProgress.getTotalRaceCount()); setFleetsTooltip(seriesProgress.getFleetNames()); + } + + void init() { Scheduler.get().scheduleDeferred(new ScheduledCommand() { @Override public void execute() { + int textContainerLength = textContainerUi.getOffsetWidth(); + seriesNameLength = longNameDummyUi.getOffsetWidth() + textContainerLength; + seriesNameMediumLength= mediumNameDummyUi.getOffsetWidth() + textContainerLength; + longNameDummyUi.removeFromParent(); + mediumNameDummyUi.removeFromParent(); + textContainerUi.getStyle().clearVisibility(); renderNames(); } }); @@ -78,20 +93,33 @@ public class MultiRegattaListStepsBody extends UIObject implements RequiresResiz } } - private void renderNames() { - if (getElement().getOffsetWidth() < nameUi.getOffsetWidth() + checkUi.getOffsetWidth() - + progressUi.getOffsetWidth()) { - String[] tokens = seriesName.split(" "); - StringBuilder initials = new StringBuilder(); - for (int i = 0; i < tokens.length; i++) { - initials.append(tokens[i].charAt(0)); - } - nameUi.setInnerText(initials.toString()); - } - nameUi.setTitle(seriesName); - nameUi.getStyle().setVisibility(Visibility.VISIBLE); + private String caculateSeriesName(RegattaProgressSeriesDTO seriesProgress) { + return DEFAULT_SERIES_NAME.equals(seriesProgress.getName()) ? I18N.races() : seriesProgress.getName(); } - + + private String caculateSeriesNameMedium() { + String[] tokens = seriesName.split(" "); + StringBuilder initials = new StringBuilder(); + for (int i = 0; i < tokens.length; i++) { + initials.append(tokens[i].charAt(0)); + } + return initials.toString(); + } + + private String caculateSeriesNameShort() { + return seriesName.substring(0, 1); + } + + private void renderNames() { + if (fleetsContainerUi.getOffsetWidth() >= seriesNameLength) { + nameUi.setInnerText(seriesName); + } else if (fleetsContainerUi.getOffsetWidth() >= seriesNameMediumLength) { + nameUi.setInnerText(seriesNameMedium); + } else { + nameUi.setInnerText(seriesNameShort); + } + } + @Override public void onResize() { renderNames(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.ui.xml index 3374a3d05b6..62bb58918c4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.ui.xml @@ -7,9 +7,13 @@
-
-
-
+
+
+
+
+
+
+
From 7fab9c81a9f2f1a946f89ccd72630b5d209ac0b4 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 16 Sep 2015 17:15:09 +0200 Subject: [PATCH 250/504] Adjusted regatta competition race if in planned state --- .../regattacompetition/RegattaCompetitionFleetRace.ui.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml index 4d56a7d82be..d0fb43d68d5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml @@ -1,11 +1,13 @@ +
-
+
+ +
\ No newline at end of file From c5c5d51a6421e336f0326399f23c0f3e517138af Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 16 Sep 2015 17:37:04 +0200 Subject: [PATCH 251/504] started with adding overrides for the two core methods of LowPoint scoring scheme --- ...WithEliminationsAndRoundsWinnerGets07.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java index cfa7746710c..bebb6a15977 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java @@ -1,6 +1,13 @@ package com.sap.sailing.domain.leaderboard.impl; +import java.util.concurrent.Callable; + +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.ScoringSchemeType; +import com.sap.sailing.domain.leaderboard.Leaderboard; +import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; +import com.sap.sse.common.TimePoint; /** * Implements an elimination scheme as used by surfing championships, based on a general low point scoring scheme. A @@ -46,4 +53,20 @@ public class LowPointWithEliminationsAndRoundsWinnerGets07 extends LowPoint { public ScoringSchemeType getType() { return ScoringSchemeType.LOW_POINT_WITH_ELIMINATIONS_AND_ROUNDS_WINNER_GETS_07; } + + @Override + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, + Callable numberOfCompetitorsInRaceFetcher, + NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + // TODO Auto-generated method stub + return super.getScoreForRank(leaderboard, raceColumn, competitor, rank, numberOfCompetitorsInRaceFetcher, + numberOfCompetitorsInLeaderboardFetcher); + } + + @Override + public boolean isValidInTotalScore(Leaderboard leaderboard, RaceColumn raceColumn, TimePoint at) { + // TODO Auto-generated method stub + return super.isValidInTotalScore(leaderboard, raceColumn, at); + } + } From 6d192b56a9e18de1e43f4bb7bf7b136afd6aa265 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 16 Sep 2015 18:12:59 +0200 Subject: [PATCH 252/504] fir step towards a fix for bug 3270: change API to handle multiple course areas for addition/removal at once --- .../ui/adminconsole/EventListComposite.java | 58 ++++++++++--------- .../sailing/gwt/ui/client/SailingService.java | 4 +- .../gwt/ui/client/SailingServiceAsync.java | 4 +- .../gwt/ui/server/SailingServiceImpl.java | 20 ++++--- .../test/EventReplicationTest.java | 2 +- .../test/RegattaReplicationTest.java | 12 ++-- .../server/test/MasterDataImportTest.java | 4 +- .../sailing/server/RacingEventService.java | 6 +- .../server/impl/RacingEventServiceImpl.java | 58 +++++++++++-------- ...AddCourseArea.java => AddCourseAreas.java} | 16 ++--- .../CreateEvent.java | 2 +- ...CourseArea.java => RemoveCourseAreas.java} | 10 ++-- 12 files changed, 105 insertions(+), 91 deletions(-) rename java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/{AddCourseArea.java => AddCourseAreas.java} (63%) rename java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/{RemoveCourseArea.java => RemoveCourseAreas.java} (82%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java index 9936282d511..b64b12b4ffa 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java @@ -517,36 +517,40 @@ public class EventListComposite extends Composite implements EventsRefresher, Le } } }); - for (CourseAreaDTO courseArea : courseAreasToAdd) { - sailingService.createCourseArea(oldEvent.id, courseArea.getName(), new AsyncCallback() { - - @Override - public void onFailure(Throwable t) { - errorReporter.reportError("Error trying to add course area to sailing event " + oldEvent.getName() - + ": " + t.getMessage()); - } - - @Override - public void onSuccess(Void result) { - fillEvents(); - } - - }); + final String[] namesOfCourseAreasToAdd = new String[courseAreasToAdd.size()]; + int i=0; + for (CourseAreaDTO courseAreaToAdd : courseAreasToAdd) { + namesOfCourseAreasToAdd[i++] = courseAreaToAdd.getName(); } - for (CourseAreaDTO courseArea : courseAreasToRemove) { - sailingService.removeCourseArea(oldEvent.id, courseArea.id, new AsyncCallback() { - @Override - public void onFailure(Throwable t) { - errorReporter.reportError("Error trying to remove course area from sailing event " + oldEvent.getName() - + ": " + t.getMessage()); - } + sailingService.createCourseAreas(oldEvent.id, namesOfCourseAreasToAdd, new AsyncCallback() { + @Override + public void onFailure(Throwable t) { + errorReporter.reportError("Error trying to add course area to sailing event " + oldEvent.getName() + + ": " + t.getMessage()); + } - @Override - public void onSuccess(Void result) { - fillEvents(); - } - }); + @Override + public void onSuccess(Void result) { + fillEvents(); + } + }); + final UUID[] idsOfCourseAreasToRemove = new UUID[courseAreasToRemove.size()]; + int j=0; + for (CourseAreaDTO courseAreaToRemove : courseAreasToRemove) { + idsOfCourseAreasToRemove[j++] = courseAreaToRemove.id; } + sailingService.removeCourseAreas(oldEvent.id, idsOfCourseAreasToRemove, new AsyncCallback() { + @Override + public void onFailure(Throwable t) { + errorReporter.reportError("Error trying to remove course area from sailing event " + oldEvent.getName() + + ": " + t.getMessage()); + } + + @Override + public void onSuccess(Void result) { + fillEvents(); + } + }); } private Pair, List> getCourseAreasToAdd(final EventDTO oldEvent, final EventDTO updatedEvent) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 8833ce8ad54..201deec463e 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -373,11 +373,11 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS PolarSheetGenerationResponse generatePolarSheetForRaces(List selectedRaces, PolarSheetGenerationSettings settings, String name) throws Exception; - void createCourseArea(UUID eventId, String courseAreaName); + void createCourseAreas(UUID eventId, String[] courseAreaNames); List getBoatClassNamesWithPolarSheetsAvailable(); - void removeCourseArea(UUID eventId, UUID courseAreaId); + void removeCourseAreas(UUID eventId, UUID[] courseAreaIds); List> getLeaderboardsNamesOfMetaLeaderboard(String metaLeaderboardName); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index 62515ad3b60..9272b313204 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -376,9 +376,9 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan VenueDTO venue, boolean isPublic, Iterable leaderboardGroupIds, String officialWebsiteURL, String sailorsInfoWebsiteURL, Iterable images, Iterable videos, AsyncCallback callback); - void createCourseArea(UUID eventId, String courseAreaName, AsyncCallback callback); + void createCourseAreas(UUID eventId, String[] courseAreaNames, AsyncCallback callback); - void removeCourseArea(UUID eventId, UUID courseAreaId, AsyncCallback callback); + void removeCourseAreas(UUID eventId, UUID[] idsOfCourseAreasToRemove, AsyncCallback callback); void removeRegatta(RegattaIdentifier regattaIdentifier, AsyncCallback callback); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index ff3f491a315..49af3900937 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -364,7 +364,7 @@ import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.masterdata.MasterDataImporter; import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard; import com.sap.sailing.server.operationaltransformation.AddColumnToSeries; -import com.sap.sailing.server.operationaltransformation.AddCourseArea; +import com.sap.sailing.server.operationaltransformation.AddCourseAreas; import com.sap.sailing.server.operationaltransformation.AddRemoteSailingServerReference; import com.sap.sailing.server.operationaltransformation.AddSpecificRegatta; import com.sap.sailing.server.operationaltransformation.AllowCompetitorResetToDefaults; @@ -380,7 +380,7 @@ import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnDow import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnUp; import com.sap.sailing.server.operationaltransformation.RemoveAndUntrackRace; import com.sap.sailing.server.operationaltransformation.RemoveColumnFromSeries; -import com.sap.sailing.server.operationaltransformation.RemoveCourseArea; +import com.sap.sailing.server.operationaltransformation.RemoveCourseAreas; import com.sap.sailing.server.operationaltransformation.RemoveEvent; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard; import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardColumn; @@ -3311,20 +3311,22 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S getService().apply( new CreateEvent(eventName, eventDescription, startTimePoint, endTimePoint, venue, isPublic, eventUuid, officialWebsiteURL, sailorsInfoWebsiteURL, eventImages, eventVideos)); - for (String courseAreaName : courseAreaNames) { - createCourseArea(eventUuid, courseAreaName); - } + createCourseAreas(eventUuid, courseAreaNames.toArray(new String[courseAreaNames.size()])); return getEventById(eventUuid, false); } @Override - public void createCourseArea(UUID eventId, String courseAreaName) { - getService().apply(new AddCourseArea(eventId, courseAreaName, UUID.randomUUID())); + public void createCourseAreas(UUID eventId, String[] courseAreaNames) { + final UUID[] courseAreaIDs = new UUID[courseAreaNames.length]; + for (int i=0; iemptyList(), /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), tvCourseAreaId, /* useStartTimeInference */ true, OneDesignRankingMetric::new); @@ -144,7 +144,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { final TimePoint eventEndDate = new MillisecondsTimePoint(new Date()); Event event = master.addEvent("Event", /* eventDescription */ null, eventStartDate, eventEndDate, "Venue", true, UUID.randomUUID()); - master.addCourseArea(event.getId(), "Alpha", alphaCourseAreaId); + master.addCourseAreas(event.getId(), new String[] {"Alpha"}, new UUID[] {alphaCourseAreaId}); UUID currentCourseAreaId = null; Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName("RR", "49er"), "49er", /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Collections.emptyList(), @@ -302,7 +302,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { final TimePoint eventStartDate = new MillisecondsTimePoint(new Date()); final TimePoint eventEndDate = new MillisecondsTimePoint(new Date()); Event masterEvent = master.addEvent(eventName, /* eventDescription */ null, eventStartDate, eventEndDate, venueName, isPublic, UUID.randomUUID()); - CourseArea masterCourseArea = master.addCourseArea(masterEvent.getId(), courseArea, UUID.randomUUID()); + CourseArea masterCourseArea = master.addCourseAreas(masterEvent.getId(), new String[] {courseArea}, new UUID[] {UUID.randomUUID()})[0]; Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(eventName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), series, /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), masterCourseArea.getId(), /* useStartTimeInference */ true, OneDesignRankingMetric::new); diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java index aab653cf336..ea4a2adaf5b 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java @@ -1344,7 +1344,7 @@ public class MasterDataImportTest { new MillisecondsTimePoint(0), new MillisecondsTimePoint(10), "testvenue", false, UUID.randomUUID(), /* officialWebsiteURL */ null, /* sailorsInfoWebsiteURL */ null, /* images */Collections. emptyList(), /* videos */Collections. emptyList()); - CourseArea defaultCourseArea = sourceService.addCourseArea(event.getId(), "ECHO", UUID.randomUUID()); + CourseArea defaultCourseArea = sourceService.addCourseAreas(event.getId(), new String[] {"ECHO"}, new UUID[] {UUID.randomUUID()})[0]; Regatta regatta = sourceService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /*startDate*/ null, /*endDate*/ null, @@ -1409,7 +1409,7 @@ public class MasterDataImportTest { new MillisecondsTimePoint(0), new MillisecondsTimePoint(10), "testvenue", false, UUID.randomUUID(), /* officialWebsiteURL */ null, /* sailorsInfoWebsiteURL */ null, /* images */Collections. emptyList(), /* videos */Collections. emptyList()); - CourseArea defaultCourseArea = sourceService.addCourseArea(event.getId(), "ECHO", UUID.randomUUID()); + CourseArea defaultCourseArea = sourceService.addCourseAreas(event.getId(), new String[] {"ECHO"}, new UUID[] {UUID.randomUUID()})[0]; List raceColumnNames = new ArrayList(); String raceColumnName = "T1"; diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java index 228c953985c..4621cda708a 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java @@ -400,7 +400,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch void removeRemoteSailingServerReference(String name); - CourseArea addCourseArea(UUID eventId, String courseAreaName, UUID courseAreaId); + CourseArea[] addCourseAreas(UUID eventId, String[] courseAreaNames, UUID[] courseAreaIds); com.sap.sailing.domain.base.DomainFactory getBaseDomainFactory(); @@ -473,9 +473,9 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch void setRegattaForRace(Regatta regatta, String raceIdAsString); - CourseArea addCourseAreaWithoutReplication(UUID eventId, UUID courseAreaId, String courseAreaName); + CourseArea[] addCourseAreasWithoutReplication(UUID eventId, UUID[] courseAreaIds, String[] courseAreaNames); - CourseArea removeCourseAreaWithoutReplication(UUID eventId, UUID courseAreaId); + CourseArea[] removeCourseAreaWithoutReplication(UUID eventId, UUID[] courseAreaIds); /** * Returns a mobile device's configuration. diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java index 5097687ee62..af83b8c7ead 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java @@ -171,7 +171,7 @@ import com.sap.sailing.server.gateway.deserialization.impl.LeaderboardGroupBaseJ import com.sap.sailing.server.gateway.deserialization.impl.LeaderboardSearchResultBaseJsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.VenueJsonDeserializer; import com.sap.sailing.server.masterdata.DataImportLockWithProgress; -import com.sap.sailing.server.operationaltransformation.AddCourseArea; +import com.sap.sailing.server.operationaltransformation.AddCourseAreas; import com.sap.sailing.server.operationaltransformation.AddDefaultRegatta; import com.sap.sailing.server.operationaltransformation.AddMediaTrackOperation; import com.sap.sailing.server.operationaltransformation.AddRaceDefinition; @@ -2771,38 +2771,46 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes } @Override - public CourseArea addCourseArea(UUID eventId, String courseAreaName, UUID courseAreaId) { - CourseArea courseArea = getBaseDomainFactory().getOrCreateCourseArea(courseAreaId, courseAreaName); - addCourseAreaWithoutReplication(eventId, courseAreaId, courseAreaName); - replicate(new AddCourseArea(eventId, courseAreaName, courseAreaId)); - return courseArea; + public CourseArea[] addCourseAreas(UUID eventId, String[] courseAreaNames, UUID[] courseAreaIds) { + final CourseArea[] courseAreas = addCourseAreasWithoutReplication(eventId, courseAreaIds, courseAreaNames); + replicate(new AddCourseAreas(eventId, courseAreaNames, courseAreaIds)); + return courseAreas; } @Override - public CourseArea addCourseAreaWithoutReplication(UUID eventId, UUID courseAreaId, String courseAreaName) { - final CourseArea courseArea = getBaseDomainFactory().getOrCreateCourseArea(courseAreaId, courseAreaName); + public CourseArea[] addCourseAreasWithoutReplication(UUID eventId, UUID[] courseAreaIds, String[] courseAreaNames) { + final CourseArea[] result = new CourseArea[courseAreaNames.length]; + for (int i=0; i { +public class AddCourseAreas extends AbstractRacingEventServiceOperation { private static final long serialVersionUID = -3650109848260363949L; - private final String courseAreaName; - private final UUID courseAreaId; + private final String[] courseAreaNames; + private final UUID[] courseAreaIds; private final UUID eventId; - public AddCourseArea(UUID eventId, String courseAreaName, UUID courseAreaId) { + public AddCourseAreas(UUID eventId, String[] courseAreaNames, UUID[] courseAreaIds) { super(); this.eventId = eventId; - this.courseAreaId = courseAreaId; - this.courseAreaName = courseAreaName; + this.courseAreaIds = courseAreaIds; + this.courseAreaNames = courseAreaNames; } @Override - public CourseArea internalApplyTo(RacingEventService toState) throws Exception { - return toState.addCourseAreaWithoutReplication(eventId, courseAreaId, courseAreaName); + public CourseArea[] internalApplyTo(RacingEventService toState) throws Exception { + return toState.addCourseAreasWithoutReplication(eventId, courseAreaIds, courseAreaNames); } @Override diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java index 3d1dc7a37ec..0eaa2c1dd2b 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateEvent.java @@ -12,7 +12,7 @@ import com.sap.sse.common.media.VideoDescriptor; /** * Creates an {@link Event} in the server, with a new venue and an empty course area list. - * See the {@link AddCourseArea} operation for adding course areas to the event's venue. + * See the {@link AddCourseAreas} operation for adding course areas to the event's venue. * * @author Axel Uhl (d043530) * diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseArea.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseAreas.java similarity index 82% rename from java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseArea.java rename to java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseAreas.java index 78059b7bcce..c103ea1ec74 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseArea.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RemoveCourseAreas.java @@ -13,20 +13,20 @@ import com.sap.sailing.server.RacingEventServiceOperation; * @author Axel Uhl (d043530) * */ -public class RemoveCourseArea extends AbstractRacingEventServiceOperation { +public class RemoveCourseAreas extends AbstractRacingEventServiceOperation { private static final long serialVersionUID = -3650109848260363949L; - private final UUID courseAreaId; + private final UUID[] courseAreaIds; private final UUID eventId; - public RemoveCourseArea(UUID eventId, UUID courseAreaId) { + public RemoveCourseAreas(UUID eventId, UUID[] courseAreaIds) { super(); this.eventId = eventId; - this.courseAreaId = courseAreaId; + this.courseAreaIds = courseAreaIds; } @Override public Void internalApplyTo(RacingEventService toState) throws Exception { - toState.removeCourseAreaWithoutReplication(eventId, courseAreaId); + toState.removeCourseAreaWithoutReplication(eventId, courseAreaIds); return null; } From 8b97e9d05ea96bde5091cd7431ac578e730f09a4 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 16 Sep 2015 18:17:49 +0200 Subject: [PATCH 253/504] second step towards solving bug 3270: serialize the GWT RPC requests that update the event in the DB --- .../ui/adminconsole/EventListComposite.java | 74 +++++++++---------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java index b64b12b4ffa..8e589c1d90a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java @@ -482,9 +482,9 @@ public class EventListComposite extends Composite implements EventsRefresher, Le private void updateEvent(final EventDTO oldEvent, final EventDTO updatedEvent) { Pair, List> courseAreasToAddAndRemove = getCourseAreasToAdd(oldEvent, updatedEvent); - List courseAreasToAdd = courseAreasToAddAndRemove.getA(); - List courseAreasToRemove = courseAreasToAddAndRemove.getB(); - List updatedEventLeaderboardGroupIds = new ArrayList<>(); + final List courseAreasToAdd = courseAreasToAddAndRemove.getA(); + final List courseAreasToRemove = courseAreasToAddAndRemove.getB(); + final List updatedEventLeaderboardGroupIds = new ArrayList<>(); for (LeaderboardGroupDTO leaderboardGroup : updatedEvent.getLeaderboardGroups()) { updatedEventLeaderboardGroupIds.add(leaderboardGroup.getId()); } @@ -506,7 +506,39 @@ public class EventListComposite extends Composite implements EventsRefresher, Le sailingService.renameEvent(oldEvent.id, updatedEvent.getName(), new AsyncCallback() { @Override public void onSuccess(Void result) { - fillEvents(); + final String[] namesOfCourseAreasToAdd = new String[courseAreasToAdd.size()]; + int i=0; + for (CourseAreaDTO courseAreaToAdd : courseAreasToAdd) { + namesOfCourseAreasToAdd[i++] = courseAreaToAdd.getName(); + } + sailingService.createCourseAreas(oldEvent.id, namesOfCourseAreasToAdd, new AsyncCallback() { + @Override + public void onFailure(Throwable t) { + errorReporter.reportError("Error trying to add course area to sailing event " + oldEvent.getName() + + ": " + t.getMessage()); + } + + @Override + public void onSuccess(Void result) { + final UUID[] idsOfCourseAreasToRemove = new UUID[courseAreasToRemove.size()]; + int j=0; + for (CourseAreaDTO courseAreaToRemove : courseAreasToRemove) { + idsOfCourseAreasToRemove[j++] = courseAreaToRemove.id; + } + sailingService.removeCourseAreas(oldEvent.id, idsOfCourseAreasToRemove, new AsyncCallback() { + @Override + public void onFailure(Throwable t) { + errorReporter.reportError("Error trying to remove course area from sailing event " + oldEvent.getName() + + ": " + t.getMessage()); + } + + @Override + public void onSuccess(Void result) { + fillEvents(); + } + }); + } + }); } @Override @@ -517,40 +549,6 @@ public class EventListComposite extends Composite implements EventsRefresher, Le } } }); - final String[] namesOfCourseAreasToAdd = new String[courseAreasToAdd.size()]; - int i=0; - for (CourseAreaDTO courseAreaToAdd : courseAreasToAdd) { - namesOfCourseAreasToAdd[i++] = courseAreaToAdd.getName(); - } - sailingService.createCourseAreas(oldEvent.id, namesOfCourseAreasToAdd, new AsyncCallback() { - @Override - public void onFailure(Throwable t) { - errorReporter.reportError("Error trying to add course area to sailing event " + oldEvent.getName() - + ": " + t.getMessage()); - } - - @Override - public void onSuccess(Void result) { - fillEvents(); - } - }); - final UUID[] idsOfCourseAreasToRemove = new UUID[courseAreasToRemove.size()]; - int j=0; - for (CourseAreaDTO courseAreaToRemove : courseAreasToRemove) { - idsOfCourseAreasToRemove[j++] = courseAreaToRemove.id; - } - sailingService.removeCourseAreas(oldEvent.id, idsOfCourseAreasToRemove, new AsyncCallback() { - @Override - public void onFailure(Throwable t) { - errorReporter.reportError("Error trying to remove course area from sailing event " + oldEvent.getName() - + ": " + t.getMessage()); - } - - @Override - public void onSuccess(Void result) { - fillEvents(); - } - }); } private Pair, List> getCourseAreasToAdd(final EventDTO oldEvent, final EventDTO updatedEvent) { From f441085c4db572c4a3639e139385024ca3981dd6 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 16 Sep 2015 18:33:44 +0200 Subject: [PATCH 254/504] dont' only do the course area update when the event name has changed --- .../ui/adminconsole/EventListComposite.java | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java index 8e589c1d90a..9d50c7080fe 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java @@ -502,51 +502,51 @@ public class EventListComposite extends Composite implements EventsRefresher, Le @Override public void onSuccess(EventDTO result) { fillEvents(); - if (!oldEvent.getName().equals(updatedEvent.getName())) { - sailingService.renameEvent(oldEvent.id, updatedEvent.getName(), new AsyncCallback() { - @Override - public void onSuccess(Void result) { - final String[] namesOfCourseAreasToAdd = new String[courseAreasToAdd.size()]; - int i=0; - for (CourseAreaDTO courseAreaToAdd : courseAreasToAdd) { - namesOfCourseAreasToAdd[i++] = courseAreaToAdd.getName(); - } - sailingService.createCourseAreas(oldEvent.id, namesOfCourseAreasToAdd, new AsyncCallback() { - @Override - public void onFailure(Throwable t) { - errorReporter.reportError("Error trying to add course area to sailing event " + oldEvent.getName() - + ": " + t.getMessage()); - } + final String[] namesOfCourseAreasToAdd = new String[courseAreasToAdd.size()]; + int i=0; + for (CourseAreaDTO courseAreaToAdd : courseAreasToAdd) { + namesOfCourseAreasToAdd[i++] = courseAreaToAdd.getName(); + } + sailingService.createCourseAreas(oldEvent.id, namesOfCourseAreasToAdd, new AsyncCallback() { + @Override + public void onFailure(Throwable t) { + errorReporter.reportError("Error trying to add course area to sailing event " + oldEvent.getName() + + ": " + t.getMessage()); + } - @Override - public void onSuccess(Void result) { - final UUID[] idsOfCourseAreasToRemove = new UUID[courseAreasToRemove.size()]; - int j=0; - for (CourseAreaDTO courseAreaToRemove : courseAreasToRemove) { - idsOfCourseAreasToRemove[j++] = courseAreaToRemove.id; - } - sailingService.removeCourseAreas(oldEvent.id, idsOfCourseAreasToRemove, new AsyncCallback() { + @Override + public void onSuccess(Void result) { + final UUID[] idsOfCourseAreasToRemove = new UUID[courseAreasToRemove.size()]; + int j=0; + for (CourseAreaDTO courseAreaToRemove : courseAreasToRemove) { + idsOfCourseAreasToRemove[j++] = courseAreaToRemove.id; + } + sailingService.removeCourseAreas(oldEvent.id, idsOfCourseAreasToRemove, new AsyncCallback() { + @Override + public void onFailure(Throwable t) { + errorReporter.reportError("Error trying to remove course area from sailing event " + oldEvent.getName() + + ": " + t.getMessage()); + } + + @Override + public void onSuccess(Void result) { + fillEvents(); + if (!oldEvent.getName().equals(updatedEvent.getName())) { + sailingService.renameEvent(oldEvent.id, updatedEvent.getName(), new AsyncCallback() { @Override - public void onFailure(Throwable t) { - errorReporter.reportError("Error trying to remove course area from sailing event " + oldEvent.getName() - + ": " + t.getMessage()); + public void onSuccess(Void result) { } @Override - public void onSuccess(Void result) { - fillEvents(); + public void onFailure(Throwable t) { + errorReporter.reportError("Error trying to rename sailing event " + oldEvent.getName() + ": " + t.getMessage()); } }); } - }); - } - - @Override - public void onFailure(Throwable t) { - errorReporter.reportError("Error trying to rename sailing event " + oldEvent.getName() + ": " + t.getMessage()); - } - }); - } + } + }); + } + }); } }); } From fea30197a9304125b2f70c44ec21f2df512cff4b Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 17 Sep 2015 10:53:51 +0200 Subject: [PATCH 255/504] Added package for polar data mining ui components also dedicated settings and fixed bug in resultspresenter --- .../presentation/TabbedResultsPresenter.java | 2 +- ...olarDataMiningSettingsDialogComponent.java | 107 ++++++++++++++ .../PolarDataMiningSettingsValidator.java | 72 ++++++++++ .../PolarResultsPresenter.java | 18 ++- .../shared/PolarDataMiningSettings.java | 26 ++++ .../shared/PolarDataMiningSettingsImpl.java | 134 ++++++++++++++++++ 6 files changed, 354 insertions(+), 5 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsValidator.java rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/{polarsheets => polarmining}/PolarResultsPresenter.java (85%) create mode 100644 java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettings.java create mode 100644 java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java index a02d5c7bbf4..511fa211c4e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java @@ -18,7 +18,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.controls.ScrolledTabLayoutPanel; import com.sap.sailing.gwt.ui.datamining.DataMiningResources; import com.sap.sailing.gwt.ui.datamining.ResultsPresenter; -import com.sap.sailing.gwt.ui.polarsheets.PolarResultsPresenter; +import com.sap.sailing.gwt.ui.polarmining.PolarResultsPresenter; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; public class TabbedResultsPresenter implements ResultsPresenter { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java new file mode 100644 index 00000000000..399de923568 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java @@ -0,0 +1,107 @@ +package com.sap.sailing.gwt.ui.polarmining; + +import com.google.gwt.user.client.ui.CheckBox; +import com.google.gwt.user.client.ui.DoubleBox; +import com.google.gwt.user.client.ui.FocusWidget; +import com.google.gwt.user.client.ui.Grid; +import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.VerticalPanel; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.polarsheets.WindSpeedSteppingConfiguratorPanel; +import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; +import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettingsImpl; +import com.sap.sse.gwt.client.controls.IntegerBox; +import com.sap.sse.gwt.client.dialog.DataEntryDialog; +import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; + +public class PolarDataMiningSettingsDialogComponent implements SettingsDialogComponent { + + private PolarDataMiningSettings settings; + private StringMessages stringMessages; + private IntegerBox minimumGraphDataSizeBox; + private DoubleBox minimumWindConfidenceBox; + private IntegerBox minimumDataCountPerAngleBox; + private IntegerBox numberOfHistogramColumnsBox; + private CheckBox useOnlyWindGaugesForWindSpeedBox; + private CheckBox useOnlyEstimationForWindDirectionBox; + private WindSpeedSteppingConfiguratorPanel windSteppingBox; + private DoubleBox windSteppingMaxDistanceBox; + + public PolarDataMiningSettingsDialogComponent(PolarDataMiningSettings settings) { + this.settings = settings; + this.stringMessages = StringMessages.INSTANCE; + } + + @Override + public Widget getAdditionalWidget(DataEntryDialog dialog) { + VerticalPanel vp = new VerticalPanel(); + Grid grid = new Grid(14, 2); + grid.setCellPadding(5); + vp.add(grid); + setupGrid(grid, dialog); + return vp; + } + + private void setupGrid(Grid grid, DataEntryDialog dialog) { + Label minimumGraphDataSizeLabel = new Label(stringMessages.polarSheetMinimumDataSizePerGraph() + ":"); + minimumGraphDataSizeLabel.setTitle(stringMessages.polarSheetMinimumDataSizePerGraphTooltip()); + grid.setWidget(0, 0, minimumGraphDataSizeLabel); + minimumGraphDataSizeBox = dialog.createIntegerBox(settings.getMinimumDataCountPerGraph(), 6); + grid.setWidget(0, 1, minimumGraphDataSizeBox); + Label minimumDataSizePerAngleLabel = new Label(stringMessages.polarSheetMinimumDataSizePerAngle() + ":"); + minimumDataSizePerAngleLabel.setTitle(stringMessages.polarSheetMinimumDataSizePerAngleTooltip()); + grid.setWidget(1, 0, minimumDataSizePerAngleLabel); + minimumDataCountPerAngleBox = dialog.createIntegerBox(settings.getMinimumDataCountPerAngle(), 6); + grid.setWidget(1, 1, minimumDataCountPerAngleBox); + Label minimumWindConfidenceLabel = new Label(stringMessages.polarSheetMinimumWindConfidence() + ":"); + minimumWindConfidenceLabel.setTitle(stringMessages.polarSheetMinimumWindConfidenceTooltip()); + grid.setWidget(2, 0, minimumWindConfidenceLabel); + minimumWindConfidenceBox = dialog.createDoubleBox(settings.getMinimumWindConfidence(), 6); + grid.setWidget(2, 1, minimumWindConfidenceBox); + Label useOnlyWindGaugesForWindSpeedLabel = new Label(stringMessages.polarSheetUseOnlyWindGaugeData() + ":"); + useOnlyWindGaugesForWindSpeedLabel.setTitle(stringMessages.polarSheetUseOnlyWindGaugeDataTooltip()); + grid.setWidget(4, 0, useOnlyWindGaugesForWindSpeedLabel); + useOnlyWindGaugesForWindSpeedBox = dialog.createCheckbox(""); + useOnlyWindGaugesForWindSpeedBox.setValue(settings.useOnlyWindGaugesForWindSpeed()); + grid.setWidget(4, 1, useOnlyWindGaugesForWindSpeedBox); + Label useOnlyEstimationForWindDirectionLabel = new Label(stringMessages.polarSheetUseOnlyEstimationData() + ":"); + useOnlyEstimationForWindDirectionLabel.setTitle(stringMessages.polarSheetUseOnlyEstimationDataTooltip()); + grid.setWidget(6, 0, useOnlyEstimationForWindDirectionLabel); + useOnlyEstimationForWindDirectionBox = dialog.createCheckbox(""); + useOnlyEstimationForWindDirectionBox.setValue(settings.useOnlyEstimatedForWindDirection()); + grid.setWidget(6, 1, useOnlyEstimationForWindDirectionBox); + grid.setWidget(10, 0, new Label(stringMessages.polarSheetNumberOfHistogramColumns() + ":")); + numberOfHistogramColumnsBox = dialog.createIntegerBox(settings.getNumberOfHistogramColumns(), 3); + grid.setWidget(10, 1, numberOfHistogramColumnsBox); + grid.setWidget(11, 0, new Label(stringMessages.polarSheetWindSteppingInKnots() + ":")); + windSteppingBox = new WindSpeedSteppingConfiguratorPanel(settings.getWindSpeedStepping()); + grid.setWidget(11, 1, windSteppingBox); + Label windSteppingMaxDistanceLabel = new Label(stringMessages.polarSheetWindSteppingMaxDistance() + ":"); + windSteppingMaxDistanceLabel.setTitle(stringMessages.polarSheetWindSteppingMaxDistanceTooltip()); + grid.setWidget(12, 0, windSteppingMaxDistanceLabel); + windSteppingMaxDistanceBox = dialog.createDoubleBox(settings.getWindSpeedStepping().getMaxDistance(), 6); + grid.setWidget(12, 1, windSteppingMaxDistanceBox); + grid.setWidget(13, 0, new Label(stringMessages.pleaseSeeToolTips())); + } + + @Override + public PolarDataMiningSettings getResult() { + return new PolarDataMiningSettingsImpl(minimumGraphDataSizeBox.getValue(), minimumWindConfidenceBox.getValue(), + minimumDataCountPerAngleBox.getValue(), numberOfHistogramColumnsBox.getValue(), + useOnlyWindGaugesForWindSpeedBox.getValue(), useOnlyEstimationForWindDirectionBox.getValue(), + windSteppingBox.getStepping(windSteppingMaxDistanceBox.getValue())); + } + + @Override + public FocusWidget getFocusWidget() { + return minimumGraphDataSizeBox; + } + + @Override + public Validator getValidator() { + return new PolarDataMiningSettingsValidator(stringMessages); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsValidator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsValidator.java new file mode 100644 index 00000000000..9e999055eb4 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsValidator.java @@ -0,0 +1,72 @@ +package com.sap.sailing.gwt.ui.polarmining; + +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; +import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; + +public class PolarDataMiningSettingsValidator implements Validator { + + private final StringMessages stringMessages; + + public PolarDataMiningSettingsValidator(StringMessages stringMessages) { + this.stringMessages = stringMessages; + } + + @Override + public String getErrorMessage(PolarDataMiningSettings valueToValidate) { + String errorMessage = null; + if (oneOrMoreParametersAreNull(valueToValidate)) { + errorMessage = stringMessages.oneOrMoreParametersAreEmpty(); + } else { + errorMessage = validateConfidenceValues(valueToValidate, errorMessage); + errorMessage = validateMinDataValues(valueToValidate, errorMessage); + errorMessage = validateNumberOfColumns(valueToValidate.getNumberOfHistogramColumns(), errorMessage); + } + return errorMessage; + } + + private boolean oneOrMoreParametersAreNull(PolarDataMiningSettings valueToValidate) { + boolean oneOrMoreParametersAreNull = false; + if (valueToValidate.getMinimumDataCountPerAngle() == null + || valueToValidate.getMinimumDataCountPerGraph() == null) { + oneOrMoreParametersAreNull = true; + } + return oneOrMoreParametersAreNull; + } + + private String validateNumberOfColumns(int numberOfHistogramColumns, String errorMessage) { + if (numberOfHistogramColumns < 2) { + String numberOfColumnsAtLeast2 = stringMessages.numberOfColumnsAtLeast2(); + if (errorMessage == null) { + errorMessage = numberOfColumnsAtLeast2; + } else { + errorMessage = errorMessage + "\n" + numberOfColumnsAtLeast2; + } + } + + return errorMessage; + } + + private String validateMinDataValues(PolarDataMiningSettings valueToValidate, String errorMessage) { + Integer minDataPerAngle = valueToValidate.getMinimumDataCountPerAngle(); + Integer minDataPerGraph = valueToValidate.getMinimumDataCountPerGraph(); + if (minDataPerAngle < 0 || minDataPerGraph < 0) { + String minDataValuesNeedToBeAtLeastZero = stringMessages.minDataValuesNeedToBeAtLeastZero(); + if (errorMessage == null) { + errorMessage = minDataValuesNeedToBeAtLeastZero; + } else { + errorMessage = errorMessage + "\n" + minDataValuesNeedToBeAtLeastZero; + } + } + return errorMessage; + } + + private String validateConfidenceValues(PolarDataMiningSettings valueToValidate, String errorMessage) { + double minimumWindConfidence = valueToValidate.getMinimumWindConfidence(); + if (minimumWindConfidence < 0 || minimumWindConfidence > 1) { + errorMessage = stringMessages.confidenceShouldBeBetween(); + } + return errorMessage; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java similarity index 85% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarResultsPresenter.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java index 52182668093..3acc30a7080 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.ui.polarsheets; +package com.sap.sailing.gwt.ui.polarmining; import java.util.Map; import java.util.Map.Entry; @@ -9,7 +9,9 @@ import org.moxieapps.gwt.highcharts.client.ChartTitle; import org.moxieapps.gwt.highcharts.client.Exporting; import org.moxieapps.gwt.highcharts.client.Series; import org.moxieapps.gwt.highcharts.client.plotOptions.LinePlotOptions; +import org.moxieapps.gwt.highcharts.client.plotOptions.Marker; +import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.SimpleLayoutPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.PolarSheetGenerationSettings; @@ -40,7 +42,7 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { private Chart createPolarChart() { Chart polarSheetChart = new Chart().setType(Series.Type.LINE) - .setLinePlotOptions(new LinePlotOptions().setLineWidth(1)) + .setLinePlotOptions(new LinePlotOptions().setLineWidth(1).setMarker(new Marker().setEnabled(false))) .setPolar(true).setHeight100().setWidth100(); polarSheetChart.setTitle(new ChartTitle().setText(""), new ChartSubtitle().setText("")); polarSheetChart.getYAxis().setMin(0); @@ -75,14 +77,22 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { for (int i = 0; i < 360; i++) { double speed = speedsPerAngle[i]; if (countPerAngle[i] >= settings.getMinimumDataCountPerAngle() && speed > 0) { - series.addPoint(i - 179, speed, false, false, false); + series.addPoint(i > 180 ? i - 360 : i, speed, false, false, false); } } series.setName(entry.getKey().asString()); polarChart.addSeries(series, false, false); } } - wrapperPanel.onResize(); + //Initially resize the chart. Otherwise it's too big. FIXME with a better solution + Timer timer = new Timer() { + + @Override + public void run() { + polarChart.setSizeToMatchContainer(); + } + }; + timer.schedule(200); } diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettings.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettings.java new file mode 100644 index 00000000000..47fafa8dc2b --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettings.java @@ -0,0 +1,26 @@ +package com.sap.sailing.polars.datamining.shared; + +import com.sap.sailing.domain.common.impl.WindSpeedSteppingWithMaxDistance; +import com.sap.sse.common.settings.SerializableSettings; + +public abstract class PolarDataMiningSettings extends SerializableSettings { + + private static final long serialVersionUID = 3670315004615987482L; + + public abstract Integer getMinimumDataCountPerGraph(); + + public abstract double getMinimumWindConfidence(); + + public abstract Integer getMinimumDataCountPerAngle(); + + public abstract int getNumberOfHistogramColumns(); + + public abstract boolean useOnlyWindGaugesForWindSpeed(); + + public abstract boolean useOnlyEstimatedForWindDirection(); + + public abstract WindSpeedSteppingWithMaxDistance getWindSpeedStepping(); + + public abstract boolean areDefault(); + +} diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java new file mode 100644 index 00000000000..5b62fc5bec1 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java @@ -0,0 +1,134 @@ +package com.sap.sailing.polars.datamining.shared; + +import com.sap.sailing.domain.common.impl.WindSpeedSteppingWithMaxDistance; + +public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings { + + public static PolarDataMiningSettingsImpl createStandardPolarSettings() { + double[] levels = { 4., 6., 8., 10., 12., 14., 16., 20., 25., 30. }; + WindSpeedSteppingWithMaxDistance windStepping = new WindSpeedSteppingWithMaxDistance(levels, 2.5); + return new PolarDataMiningSettingsImpl(50, 0.01, 20, 20, true, true, windStepping); + } + + private static final long serialVersionUID = 2731616509404813790L; + private Integer minimumDataCountPerGraph; + private double minimumWindConfidence; + private Integer minimumDataCountPerAngle; + private Integer numberOfHistogramColumns; + private boolean useOnlyWindGaugesForWindSpeed; + private boolean useOnlyEstimationForWindDirection; + private WindSpeedSteppingWithMaxDistance windStepping; + + //GWT + PolarDataMiningSettingsImpl() {}; + + public PolarDataMiningSettingsImpl(Integer minimumDataCountPerGraph, double minimumWindConfidence, + Integer minimumDataCountPerAngle, Integer numberOfHistogramColumns, + boolean useOnlyWindGaugesForWindSpeed, + boolean useOnlyEstimationForWindDirection, WindSpeedSteppingWithMaxDistance windStepping) { + this.minimumDataCountPerGraph = minimumDataCountPerGraph; + this.minimumWindConfidence = minimumWindConfidence; + this.minimumDataCountPerAngle = minimumDataCountPerAngle; + this.numberOfHistogramColumns = numberOfHistogramColumns; + this.useOnlyWindGaugesForWindSpeed = useOnlyWindGaugesForWindSpeed; + this.useOnlyEstimationForWindDirection = useOnlyEstimationForWindDirection; + this.windStepping = windStepping; + } + + @Override + public Integer getMinimumDataCountPerGraph() { + return minimumDataCountPerGraph; + } + + @Override + public double getMinimumWindConfidence() { + return minimumWindConfidence; + } + + @Override + public Integer getMinimumDataCountPerAngle() { + return minimumDataCountPerAngle; + } + + @Override + public int getNumberOfHistogramColumns() { + return numberOfHistogramColumns; + } + + @Override + public boolean useOnlyWindGaugesForWindSpeed() { + return useOnlyWindGaugesForWindSpeed; + } + + @Override + public boolean useOnlyEstimatedForWindDirection() { + return useOnlyEstimationForWindDirection; + } + + @Override + public WindSpeedSteppingWithMaxDistance getWindSpeedStepping() { + return windStepping; + } + + @Override + public boolean areDefault() { + return createStandardPolarSettings().equals(this); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((minimumDataCountPerAngle == null) ? 0 : minimumDataCountPerAngle.hashCode()); + result = prime * result + ((minimumDataCountPerGraph == null) ? 0 : minimumDataCountPerGraph.hashCode()); + long temp; + temp = Double.doubleToLongBits(minimumWindConfidence); + result = prime * result + (int) (temp ^ (temp >>> 32)); + result = prime * result + ((numberOfHistogramColumns == null) ? 0 : numberOfHistogramColumns.hashCode()); + result = prime * result + (useOnlyEstimationForWindDirection ? 1231 : 1237); + result = prime * result + (useOnlyWindGaugesForWindSpeed ? 1231 : 1237); + result = prime * result + ((windStepping == null) ? 0 : windStepping.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!super.equals(obj)) + return false; + if (getClass() != obj.getClass()) + return false; + PolarDataMiningSettingsImpl other = (PolarDataMiningSettingsImpl) obj; + if (minimumDataCountPerAngle == null) { + if (other.minimumDataCountPerAngle != null) + return false; + } else if (!minimumDataCountPerAngle.equals(other.minimumDataCountPerAngle)) + return false; + if (minimumDataCountPerGraph == null) { + if (other.minimumDataCountPerGraph != null) + return false; + } else if (!minimumDataCountPerGraph.equals(other.minimumDataCountPerGraph)) + return false; + if (Double.doubleToLongBits(minimumWindConfidence) != Double.doubleToLongBits(other.minimumWindConfidence)) + return false; + if (numberOfHistogramColumns == null) { + if (other.numberOfHistogramColumns != null) + return false; + } else if (!numberOfHistogramColumns.equals(other.numberOfHistogramColumns)) + return false; + if (useOnlyEstimationForWindDirection != other.useOnlyEstimationForWindDirection) + return false; + if (useOnlyWindGaugesForWindSpeed != other.useOnlyWindGaugesForWindSpeed) + return false; + if (windStepping == null) { + if (other.windStepping != null) + return false; + } else if (!windStepping.equals(other.windStepping)) + return false; + return true; + } + + + +} From 4fbd47033a90ef73ddde5a0dd9364060b2eff5b2 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 17 Sep 2015 11:07:06 +0200 Subject: [PATCH 256/504] Added new applyWindConfidencefilter setting for polar data mining --- .../sailing/gwt/ui/client/StringMessages.java | 2 ++ .../gwt/ui/client/StringMessages.properties | 2 ++ .../ui/client/StringMessages_de.properties | 2 ++ ...olarDataMiningSettingsDialogComponent.java | 34 ++++++++++++------- .../shared/PolarDataMiningSettings.java | 2 ++ .../shared/PolarDataMiningSettingsImpl.java | 19 ++++++++--- .../data/HasGPSFixPolarContext.java | 3 -- .../data/impl/GPSFixWithPolarContext.java | 5 --- 8 files changed, 43 insertions(+), 26 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index d633fe16b78..f1e7bfc7e95 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -561,6 +561,8 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String polarSheetWindSteppingMaxDistanceTooltip(); String polarSheetSplitByWindGauges(); String polarSheetSplitByWindGaugesTooltip(); + String applyMinimumWindConfidence(); + String applyMinimumWindConfidenceTooltip(); String pleaseSeeToolTips(); String numberOfManeuversInRaceTooltip(); String competitorColumnTooltip(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 59a6853088f..d07774e4cdd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -555,6 +555,8 @@ polarSheetWindSteppingMaxDistance=Max. distance to wind level polarSheetWindSteppingMaxDistanceTooltip=Sets a max radius for which fixes will be assigned to the wind levels. polarSheetSplitByWindGauges=Split Windsources polarSheetSplitByWindGaugesTooltip=Splitting Windsources allows a better search for bad wind gauges.\nThe statistical correctness cannot be guaranteed. The same fix can\ncount into the resulting polar sheet multiple times (for different wind gauges). +applyMinimumWindConfidence=Apply minimum wind confidence +applyMinimumWindConfidenceTooltip=If checked the value in the box above will be used as the minimum valid wind confidence during generation. pleaseSeeToolTips=Please hover over the options to view tooltips where available. competitorColumnTooltip=Names of the members of this competitor. sailIdColumnTooltip=Shows the flag of the country and the sail number of the competitor. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 423ec64b950..79539d242ee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -555,6 +555,8 @@ polarSheetWindSteppingMaxDistance=Max. Distanz zu den Windstufen polarSheetWindSteppingMaxDistanceTooltip=Stellt den maximales Radius um die Windstufen ein,\ndamit keine Fixes vollkommen entfernten Windgeschwindigkeiten\ndazugezogen werden. polarSheetSplitByWindGauges=Windquellen splitten polarSheetSplitByWindGaugesTooltip=Das Splitten der Windquellen erlaubt eine einfachere Suche nach Fehlern.\nEs werden für jeden Fix, für alle Windmesser, Daten zum Polardiagramm hinzugefügt.\nDiese Option garantiert keine statistische Aussagekraft. +applyMinimumWindConfidence=Minimale Windkonfidenz anwenden +applyMinimumWindConfidenceTooltip=Falls diese Box markiert ist, wird der Wert in der obigen Box als minimaler Windkonfidenzwert angewendet. pleaseSeeToolTips=Bitte den Mauszeiger über die Optionen halten um Tooltips zu sehen. competitorColumnTooltip=Namen der Segler dieses Teilnehmers sailIdColumnTooltip=Zeigt die Länderflagge und die Segelnummer des Teilnehmers diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java index 399de923568..ab2d9281191 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java @@ -28,6 +28,7 @@ public class PolarDataMiningSettingsDialogComponent implements SettingsDialogCom private CheckBox useOnlyEstimationForWindDirectionBox; private WindSpeedSteppingConfiguratorPanel windSteppingBox; private DoubleBox windSteppingMaxDistanceBox; + private CheckBox applyMinimumWindConfidenceBox; public PolarDataMiningSettingsDialogComponent(PolarDataMiningSettings settings) { this.settings = settings; @@ -37,7 +38,7 @@ public class PolarDataMiningSettingsDialogComponent implements SettingsDialogCom @Override public Widget getAdditionalWidget(DataEntryDialog dialog) { VerticalPanel vp = new VerticalPanel(); - Grid grid = new Grid(14, 2); + Grid grid = new Grid(10, 2); grid.setCellPadding(5); vp.add(grid); setupGrid(grid, dialog); @@ -60,6 +61,12 @@ public class PolarDataMiningSettingsDialogComponent implements SettingsDialogCom grid.setWidget(2, 0, minimumWindConfidenceLabel); minimumWindConfidenceBox = dialog.createDoubleBox(settings.getMinimumWindConfidence(), 6); grid.setWidget(2, 1, minimumWindConfidenceBox); + Label applyMinimumWindConfidenceLabel = new Label(stringMessages.applyMinimumWindConfidence() + ":"); + applyMinimumWindConfidenceLabel.setTitle(stringMessages.applyMinimumWindConfidenceTooltip()); + grid.setWidget(3, 0, applyMinimumWindConfidenceLabel); + applyMinimumWindConfidenceBox = dialog.createCheckbox(""); + applyMinimumWindConfidenceBox.setValue(settings.useOnlyEstimatedForWindDirection()); + grid.setWidget(3, 1, applyMinimumWindConfidenceBox); Label useOnlyWindGaugesForWindSpeedLabel = new Label(stringMessages.polarSheetUseOnlyWindGaugeData() + ":"); useOnlyWindGaugesForWindSpeedLabel.setTitle(stringMessages.polarSheetUseOnlyWindGaugeDataTooltip()); grid.setWidget(4, 0, useOnlyWindGaugesForWindSpeedLabel); @@ -68,30 +75,31 @@ public class PolarDataMiningSettingsDialogComponent implements SettingsDialogCom grid.setWidget(4, 1, useOnlyWindGaugesForWindSpeedBox); Label useOnlyEstimationForWindDirectionLabel = new Label(stringMessages.polarSheetUseOnlyEstimationData() + ":"); useOnlyEstimationForWindDirectionLabel.setTitle(stringMessages.polarSheetUseOnlyEstimationDataTooltip()); - grid.setWidget(6, 0, useOnlyEstimationForWindDirectionLabel); + grid.setWidget(5, 0, useOnlyEstimationForWindDirectionLabel); useOnlyEstimationForWindDirectionBox = dialog.createCheckbox(""); useOnlyEstimationForWindDirectionBox.setValue(settings.useOnlyEstimatedForWindDirection()); - grid.setWidget(6, 1, useOnlyEstimationForWindDirectionBox); - grid.setWidget(10, 0, new Label(stringMessages.polarSheetNumberOfHistogramColumns() + ":")); + grid.setWidget(5, 1, useOnlyEstimationForWindDirectionBox); + grid.setWidget(6, 0, new Label(stringMessages.polarSheetNumberOfHistogramColumns() + ":")); numberOfHistogramColumnsBox = dialog.createIntegerBox(settings.getNumberOfHistogramColumns(), 3); - grid.setWidget(10, 1, numberOfHistogramColumnsBox); - grid.setWidget(11, 0, new Label(stringMessages.polarSheetWindSteppingInKnots() + ":")); + grid.setWidget(6, 1, numberOfHistogramColumnsBox); + grid.setWidget(7, 0, new Label(stringMessages.polarSheetWindSteppingInKnots() + ":")); windSteppingBox = new WindSpeedSteppingConfiguratorPanel(settings.getWindSpeedStepping()); - grid.setWidget(11, 1, windSteppingBox); + grid.setWidget(7, 1, windSteppingBox); Label windSteppingMaxDistanceLabel = new Label(stringMessages.polarSheetWindSteppingMaxDistance() + ":"); windSteppingMaxDistanceLabel.setTitle(stringMessages.polarSheetWindSteppingMaxDistanceTooltip()); - grid.setWidget(12, 0, windSteppingMaxDistanceLabel); + grid.setWidget(8, 0, windSteppingMaxDistanceLabel); windSteppingMaxDistanceBox = dialog.createDoubleBox(settings.getWindSpeedStepping().getMaxDistance(), 6); - grid.setWidget(12, 1, windSteppingMaxDistanceBox); - grid.setWidget(13, 0, new Label(stringMessages.pleaseSeeToolTips())); + grid.setWidget(8, 1, windSteppingMaxDistanceBox); + grid.setWidget(9, 0, new Label(stringMessages.pleaseSeeToolTips())); } @Override public PolarDataMiningSettings getResult() { return new PolarDataMiningSettingsImpl(minimumGraphDataSizeBox.getValue(), minimumWindConfidenceBox.getValue(), - minimumDataCountPerAngleBox.getValue(), numberOfHistogramColumnsBox.getValue(), - useOnlyWindGaugesForWindSpeedBox.getValue(), useOnlyEstimationForWindDirectionBox.getValue(), - windSteppingBox.getStepping(windSteppingMaxDistanceBox.getValue())); + applyMinimumWindConfidenceBox.getValue(), minimumDataCountPerAngleBox.getValue(), + numberOfHistogramColumnsBox.getValue(), useOnlyWindGaugesForWindSpeedBox.getValue(), + useOnlyEstimationForWindDirectionBox.getValue(), windSteppingBox.getStepping(windSteppingMaxDistanceBox + .getValue())); } @Override diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettings.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettings.java index 47fafa8dc2b..d75a7dddcec 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettings.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettings.java @@ -10,6 +10,8 @@ public abstract class PolarDataMiningSettings extends SerializableSettings { public abstract Integer getMinimumDataCountPerGraph(); public abstract double getMinimumWindConfidence(); + + public abstract boolean applyMinimumWindConfidence(); public abstract Integer getMinimumDataCountPerAngle(); diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java index 5b62fc5bec1..3c4c9361d12 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java @@ -7,7 +7,7 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings { public static PolarDataMiningSettingsImpl createStandardPolarSettings() { double[] levels = { 4., 6., 8., 10., 12., 14., 16., 20., 25., 30. }; WindSpeedSteppingWithMaxDistance windStepping = new WindSpeedSteppingWithMaxDistance(levels, 2.5); - return new PolarDataMiningSettingsImpl(50, 0.01, 20, 20, true, true, windStepping); + return new PolarDataMiningSettingsImpl(50, 0.01, true, 20, 20, true, true, windStepping); } private static final long serialVersionUID = 2731616509404813790L; @@ -18,16 +18,18 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings { private boolean useOnlyWindGaugesForWindSpeed; private boolean useOnlyEstimationForWindDirection; private WindSpeedSteppingWithMaxDistance windStepping; + private boolean applyMinimumWindConfidence; //GWT PolarDataMiningSettingsImpl() {}; public PolarDataMiningSettingsImpl(Integer minimumDataCountPerGraph, double minimumWindConfidence, - Integer minimumDataCountPerAngle, Integer numberOfHistogramColumns, - boolean useOnlyWindGaugesForWindSpeed, - boolean useOnlyEstimationForWindDirection, WindSpeedSteppingWithMaxDistance windStepping) { + boolean applyMinimumWindConfidence, Integer minimumDataCountPerAngle, Integer numberOfHistogramColumns, + boolean useOnlyWindGaugesForWindSpeed, boolean useOnlyEstimationForWindDirection, + WindSpeedSteppingWithMaxDistance windStepping) { this.minimumDataCountPerGraph = minimumDataCountPerGraph; this.minimumWindConfidence = minimumWindConfidence; + this.applyMinimumWindConfidence = applyMinimumWindConfidence; this.minimumDataCountPerAngle = minimumDataCountPerAngle; this.numberOfHistogramColumns = numberOfHistogramColumns; this.useOnlyWindGaugesForWindSpeed = useOnlyWindGaugesForWindSpeed; @@ -69,6 +71,11 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings { public WindSpeedSteppingWithMaxDistance getWindSpeedStepping() { return windStepping; } + + @Override + public boolean applyMinimumWindConfidence() { + return applyMinimumWindConfidence; + } @Override public boolean areDefault() { @@ -79,6 +86,7 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings { public int hashCode() { final int prime = 31; int result = 1; + result = prime * result + (applyMinimumWindConfidence ? 1231 : 1237); result = prime * result + ((minimumDataCountPerAngle == null) ? 0 : minimumDataCountPerAngle.hashCode()); result = prime * result + ((minimumDataCountPerGraph == null) ? 0 : minimumDataCountPerGraph.hashCode()); long temp; @@ -100,6 +108,8 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings { if (getClass() != obj.getClass()) return false; PolarDataMiningSettingsImpl other = (PolarDataMiningSettingsImpl) obj; + if (applyMinimumWindConfidence != other.applyMinimumWindConfidence) + return false; if (minimumDataCountPerAngle == null) { if (other.minimumDataCountPerAngle != null) return false; @@ -129,6 +139,5 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings { return true; } - } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java index 182130088ce..d7adaa6b9ee 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasGPSFixPolarContext.java @@ -11,9 +11,6 @@ public interface HasGPSFixPolarContext { @Dimension(messageKey="WindRange") ClusterDTO getWindSpeedRange(); - @Dimension(messageKey="WindIsConfident") - Boolean windIsConfident(); - @Statistic(messageKey="PolarData") PolarStatistic getPolarStatistics(); diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java index 841d028cd7e..db52df28f1e 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java @@ -52,9 +52,4 @@ public class GPSFixWithPolarContext implements HasGPSFixPolarContext { return competitorPolarContext; } - @Override - public Boolean windIsConfident() { - return wind.getConfidence() >= settings.getMinimumWindConfidence(); - } - } From 6898fec3afd428451b68169527d799f0ce62dd53 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 17 Sep 2015 11:17:10 +0200 Subject: [PATCH 257/504] Use new polar data mining settings backend -> frontend --- .../gwt/ui/polarmining/PolarResultsPresenter.java | 4 ++-- .../polars/datamining/shared/PolarAggregation.java | 4 +--- .../polars/datamining/shared/PolarAggregationImpl.java | 9 ++++----- .../sailing/polars/datamining/shared/PolarStatistic.java | 3 +-- .../polars/datamining/shared/PolarStatisticImpl.java | 7 +++---- .../components/PolarGPSFixRetrievalProcessor.java | 6 +++--- .../datamining/data/impl/GPSFixWithPolarContext.java | 6 +++--- 7 files changed, 17 insertions(+), 22 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java index 3acc30a7080..221e5830f04 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java @@ -14,10 +14,10 @@ import org.moxieapps.gwt.highcharts.client.plotOptions.Marker; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.SimpleLayoutPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.domain.common.PolarSheetGenerationSettings; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.datamining.presentation.AbstractResultsPresenter; import com.sap.sailing.polars.datamining.shared.PolarAggregation; +import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; @@ -71,7 +71,7 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { double[] speedsPerAngle = aggregation.getAverageSpeedsPerAngle(); int count = aggregation.getCount(); int[] countPerAngle = aggregation.getCountPerAngle(); - PolarSheetGenerationSettings settings = aggregation.getSettings(); + PolarDataMiningSettings settings = aggregation.getSettings(); if (settings.getMinimumDataCountPerGraph() < count) { Series series = polarChart.createSeries(); for (int i = 0; i < 360; i++) { diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java index 27e1876eead..6a01491b74b 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java @@ -2,8 +2,6 @@ package com.sap.sailing.polars.datamining.shared; import java.io.Serializable; -import com.sap.sailing.domain.common.PolarSheetGenerationSettings; - public interface PolarAggregation extends Serializable { void addElement(PolarStatistic dataEntry); @@ -14,5 +12,5 @@ public interface PolarAggregation extends Serializable { int getCount(); - PolarSheetGenerationSettings getSettings(); + PolarDataMiningSettings getSettings(); } diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java index fd363248298..82438b7762f 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java @@ -1,6 +1,5 @@ package com.sap.sailing.polars.datamining.shared; -import com.sap.sailing.domain.common.PolarSheetGenerationSettings; public class PolarAggregationImpl implements PolarAggregation { @@ -9,14 +8,14 @@ public class PolarAggregationImpl implements PolarAggregation { private double[] sumSpeedsPerAngle = new double[360]; private int[] countPerAngle = new int[360]; private int count = 0; - private PolarSheetGenerationSettings settings; + private PolarDataMiningSettings settings; public PolarAggregationImpl() { //GWT } - public PolarAggregationImpl(PolarSheetGenerationSettings settings) { - this.settings = settings; + public PolarAggregationImpl(PolarDataMiningSettings polarDataMiningSettings) { + this.settings = polarDataMiningSettings; } @Override @@ -53,7 +52,7 @@ public class PolarAggregationImpl implements PolarAggregation { } @Override - public PolarSheetGenerationSettings getSettings() { + public PolarDataMiningSettings getSettings() { return settings; } diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatistic.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatistic.java index 7d2ee615b28..b42d4894227 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatistic.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatistic.java @@ -1,6 +1,5 @@ package com.sap.sailing.polars.datamining.shared; -import com.sap.sailing.domain.common.PolarSheetGenerationSettings; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; @@ -12,6 +11,6 @@ public interface PolarStatistic { public double getTrueWindAngleDeg(); - public PolarSheetGenerationSettings getSettings(); + public PolarDataMiningSettings getSettings(); } diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java index 9914ba2b8a1..ce9730da498 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java @@ -5,7 +5,6 @@ import java.util.Set; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.Bearing; -import com.sap.sailing.domain.common.PolarSheetGenerationSettings; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.SpeedWithBearing; @@ -21,9 +20,9 @@ public class PolarStatisticImpl implements PolarStatistic { private final SpeedWithBearing boatSpeed; private final Wind windSpeed; private final double trueWindAngleDeg; - private final PolarSheetGenerationSettings settings; + private final PolarDataMiningSettings settings; - public PolarStatisticImpl(TrackedRace trackedRace, Competitor competitor, GPSFixMoving fix, PolarSheetGenerationSettings settings, + public PolarStatisticImpl(TrackedRace trackedRace, Competitor competitor, GPSFixMoving fix, PolarDataMiningSettings settings, Wind windSpeed) { this.settings = settings; this.windSpeed = windSpeed; @@ -122,7 +121,7 @@ public class PolarStatisticImpl implements PolarStatistic { } @Override - public PolarSheetGenerationSettings getSettings() { + public PolarDataMiningSettings getSettings() { return settings; } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java index 5d8bb13ac43..5e1fccfc2af 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java @@ -7,7 +7,6 @@ import java.util.concurrent.ExecutorService; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Leg; -import com.sap.sailing.domain.common.PolarSheetGenerationSettings; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.impl.WindSpeedSteppingWithMaxDistance; @@ -20,6 +19,7 @@ import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; import com.sap.sailing.polars.datamining.data.HasGPSFixPolarContext; import com.sap.sailing.polars.datamining.data.impl.GPSFixWithPolarContext; import com.sap.sailing.polars.datamining.data.impl.SpeedClusterGroup; +import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; import com.sap.sailing.polars.datamining.shared.PolarStatisticImpl; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Pair; @@ -36,7 +36,7 @@ public class PolarGPSFixRetrievalProcessor extends AbstractRetrievalProcessor retrieveData(HasCompetitorPolarContext element) { - PolarSheetGenerationSettings settings = (PolarSheetGenerationSettings) getSettings(); + PolarDataMiningSettings settings = (PolarDataMiningSettings) getSettings(); ClusterGroup windSpeedRangeGroup = toClusterGroup(settings.getWindSpeedStepping()); TrackedRace trackedRace = element.getTrackedRace(); Competitor competitor = element.getCompetitor(); @@ -57,7 +57,7 @@ public class PolarGPSFixRetrievalProcessor extends AbstractRetrievalProcessor= settings.getMinimumWindConfidence()) { result.add(new GPSFixWithPolarContext(fix, trackedRace, windSpeedRangeGroup, competitor, settings, wind, element)); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java index db52df28f1e..4968eaa466b 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java @@ -1,7 +1,6 @@ package com.sap.sailing.polars.datamining.data.impl; import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.common.PolarSheetGenerationSettings; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Speed; import com.sap.sailing.domain.common.tracking.GPSFixMoving; @@ -9,6 +8,7 @@ import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; import com.sap.sailing.polars.datamining.data.HasGPSFixPolarContext; +import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; import com.sap.sailing.polars.datamining.shared.PolarStatistic; import com.sap.sailing.polars.datamining.shared.PolarStatisticImpl; import com.sap.sse.common.TimePoint; @@ -22,12 +22,12 @@ public class GPSFixWithPolarContext implements HasGPSFixPolarContext { private final TrackedRace trackedRace; private final ClusterGroup windSpeedRangeGroup; private final Competitor competitor; - private final PolarSheetGenerationSettings settings; + private final PolarDataMiningSettings settings; private final HasCompetitorPolarContext competitorPolarContext; private WindWithConfidence> wind; public GPSFixWithPolarContext(GPSFixMoving fix, TrackedRace trackedRace, ClusterGroup windSpeedRangeGroup, Competitor competitor, - PolarSheetGenerationSettings settings, WindWithConfidence> wind, HasCompetitorPolarContext competitorPolarContext) { + PolarDataMiningSettings settings, WindWithConfidence> wind, HasCompetitorPolarContext competitorPolarContext) { this.fix = fix; this.trackedRace = trackedRace; this.windSpeedRangeGroup = windSpeedRangeGroup; From f723d19c58f54f5fe2adb5c1cb123c004ecede8b Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 17 Sep 2015 12:07:01 +0200 Subject: [PATCH 258/504] Retrieval Processors with settings are now fully functional --- .../META-INF/MANIFEST.MF | 3 +- .../SSEDataMiningSerializationDummy.java | 2 + ...ModifiableStatisticQueryDefinitionDTO.java | 1 + .../TestDataRetrieverChainCreation.java | 44 +++++++++++++------ .../TestRegattaRetrievalProcessor.java | 5 +++ ...a => Test_RetrievalProcessorSettings.java} | 6 +-- ... Test_RetrievalProcessorWithSettings.java} | 15 ++++--- .../components/DataRetrieverChainBuilder.java | 3 +- .../datamining/impl/DataMiningServerImpl.java | 21 +++------ .../components/AbstractParallelProcessor.java | 4 ++ .../SimpleDataRetrieverChainBuilder.java | 12 ++--- 11 files changed, 72 insertions(+), 44 deletions(-) rename java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/{Test_NullRetrievalProcessorSettings.java => Test_RetrievalProcessorSettings.java} (68%) rename java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/{TestNullRetrievalProcessorWithSettings.java => Test_RetrievalProcessorWithSettings.java} (61%) diff --git a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF index 591be90aa8e..b7f5d9f3981 100644 --- a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF @@ -50,7 +50,8 @@ Require-Bundle: com.sap.sailing.domain, com.sap.sse.gwt.theme, com.sap.sailing.news, com.sap.sailing.polars.datamining.shared;bundle-version="1.0.0", - com.sap.sailing.polars.datamining + com.sap.sailing.polars.datamining, + com.sap.sse.datamining.annotations;bundle-version="1.0.0" Bundle-Activator: com.sap.sailing.gwt.ui.server.Activator Bundle-ActivationPolicy: lazy Import-Package: javax.servlet;version="3.1.0", diff --git a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/SSEDataMiningSerializationDummy.java b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/SSEDataMiningSerializationDummy.java index 548feb049f7..90830456318 100644 --- a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/SSEDataMiningSerializationDummy.java +++ b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/SSEDataMiningSerializationDummy.java @@ -2,6 +2,7 @@ package com.sap.sse.datamining.shared; import java.io.Serializable; +import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.shared.impl.GenericGroupKey; import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; @@ -12,6 +13,7 @@ public final class SSEDataMiningSerializationDummy implements SerializationDummy private GenericGroupKey groupKey; private ClusterDTO cluster; private Number n; + private Unit unit; private SSEDataMiningSerializationDummy() { } diff --git a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/ModifiableStatisticQueryDefinitionDTO.java b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/ModifiableStatisticQueryDefinitionDTO.java index ca7e6890cd8..de39ec26d39 100644 --- a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/ModifiableStatisticQueryDefinitionDTO.java +++ b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/ModifiableStatisticQueryDefinitionDTO.java @@ -30,6 +30,7 @@ public class ModifiableStatisticQueryDefinitionDTO implements StatisticQueryDefi this.statisticToCalculate = statisticToCalculate; this.aggregatorDefinition = aggregatorDefinition; this.dataRetrieverChainDefinition = dataRetrieverChainDefinition; + this.retrieverSettings = new HashMap<>(); this.filterSelection = new HashMap<>(); this.dimensionsToGroupBy = new ArrayList(); } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestDataRetrieverChainCreation.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestDataRetrieverChainCreation.java index 68484f3aefd..8eae2018411 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestDataRetrieverChainCreation.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestDataRetrieverChainCreation.java @@ -12,6 +12,8 @@ import java.util.List; import org.junit.Before; import org.junit.Test; +import com.sap.sse.common.Util; +import com.sap.sse.common.settings.SerializableSettings; import com.sap.sse.datamining.components.DataRetrieverChainBuilder; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; import com.sap.sse.datamining.components.FilterCriterion; @@ -24,10 +26,10 @@ import com.sap.sse.datamining.test.util.ComponentTestsUtil; import com.sap.sse.datamining.test.util.ConcurrencyTestsUtil; import com.sap.sse.datamining.test.util.components.NullProcessor; import com.sap.sse.datamining.test.util.components.TestLegOfCompetitorWithContextRetrievalProcessor; -import com.sap.sse.datamining.test.util.components.TestNullRetrievalProcessorWithSettings; import com.sap.sse.datamining.test.util.components.TestRaceWithContextRetrievalProcessor; import com.sap.sse.datamining.test.util.components.TestRegattaRetrievalProcessor; -import com.sap.sse.datamining.test.util.components.Test_NullRetrievalProcessorSettings; +import com.sap.sse.datamining.test.util.components.Test_RetrievalProcessorSettings; +import com.sap.sse.datamining.test.util.components.Test_RetrievalProcessorWithSettings; public class TestDataRetrieverChainCreation { @@ -268,49 +270,65 @@ public class TestDataRetrieverChainCreation { public void testRetrieverChainWithSettingsCreation() { DataRetrieverChainDefinition, Test_HasLegOfCompetitorContext> chainWithSettings = new SimpleDataRetrieverChainDefinition<>(dataRetrieverChainDefinition, Test_HasLegOfCompetitorContext.class, "TestRetrieverChain"); - chainWithSettings.endWith(TestLegOfCompetitorWithContextRetrievalProcessor.class, TestNullRetrievalProcessorWithSettings.class, Test_HasLegOfCompetitorContext.class, - Test_NullRetrievalProcessorSettings.class, new Test_NullRetrievalProcessorSettings("Default Settings"), "legOfCompetitor"); + chainWithSettings.endWith(TestLegOfCompetitorWithContextRetrievalProcessor.class, Test_RetrievalProcessorWithSettings.class, Test_HasLegOfCompetitorContext.class, + Test_RetrievalProcessorSettings.class, new Test_RetrievalProcessorSettings("Default Settings"), "legOfCompetitor"); DataRetrieverChainBuilder> chainBuilder = chainWithSettings.startBuilding(getExecutor()); while (chainBuilder.canStepFurther()) { chainBuilder.stepFurther(); } - chainBuilder.build(); + Processor, ?> firstRetriever = chainBuilder.build(); + Test_RetrievalProcessorWithSettings lastRetriever = getLastRetriever(firstRetriever); + assertThat(lastRetriever.getSettings().getValue(), is("Default Settings")); - Test_NullRetrievalProcessorSettings settings = new Test_NullRetrievalProcessorSettings("Settings Value"); + Test_RetrievalProcessorSettings settings = new Test_RetrievalProcessorSettings("Settings Value"); chainBuilder.setSettings(settings); - chainBuilder.build(); + firstRetriever = chainBuilder.build(); + lastRetriever = getLastRetriever(firstRetriever); + assertThat(lastRetriever.getSettings().getValue(), is("Settings Value")); } + private Test_RetrievalProcessorWithSettings getLastRetriever(Processor, ?> firstRetriever) { + TestRaceWithContextRetrievalProcessor raceRetriever = (TestRaceWithContextRetrievalProcessor) Util.get(((TestRegattaRetrievalProcessor) firstRetriever).getResultReceivers(), 0); + TestLegOfCompetitorWithContextRetrievalProcessor legRetriever = (TestLegOfCompetitorWithContextRetrievalProcessor) Util.get(raceRetriever.getResultReceivers(), 0); + Test_RetrievalProcessorWithSettings lastRetriever = (Test_RetrievalProcessorWithSettings) Util.get(legRetriever.getResultReceivers(), 0); + return lastRetriever; + } + @Test(expected=NullPointerException.class) public void testRetrieverChainDefinitionWithSettingsButWithoutDefaultSettings() { DataRetrieverChainDefinition, Test_HasLegOfCompetitorContext> chainWithSettings = new SimpleDataRetrieverChainDefinition<>(dataRetrieverChainDefinition, Test_HasLegOfCompetitorContext.class, "TestRetrieverChain"); - chainWithSettings.endWith(TestLegOfCompetitorWithContextRetrievalProcessor.class, TestNullRetrievalProcessorWithSettings.class, Test_HasLegOfCompetitorContext.class, - Test_NullRetrievalProcessorSettings.class, null, "legOfCompetitor"); + chainWithSettings.endWith(TestLegOfCompetitorWithContextRetrievalProcessor.class, Test_RetrievalProcessorWithSettings.class, Test_HasLegOfCompetitorContext.class, + Test_RetrievalProcessorSettings.class, null, "legOfCompetitor"); } @Test(expected=IllegalArgumentException.class) public void testRetrieverChainWithWrongSettingsCreation() { DataRetrieverChainDefinition, Test_HasLegOfCompetitorContext> chainWithSettings = new SimpleDataRetrieverChainDefinition<>(dataRetrieverChainDefinition, Test_HasLegOfCompetitorContext.class, "TestRetrieverChain"); - chainWithSettings.endWith(TestLegOfCompetitorWithContextRetrievalProcessor.class, TestNullRetrievalProcessorWithSettings.class, Test_HasLegOfCompetitorContext.class, - Test_NullRetrievalProcessorSettings.class, new Test_NullRetrievalProcessorSettings("Default Settings"), "legOfCompetitor"); + chainWithSettings.endWith(TestLegOfCompetitorWithContextRetrievalProcessor.class, Test_RetrievalProcessorWithSettings.class, Test_HasLegOfCompetitorContext.class, + Test_RetrievalProcessorSettings.class, new Test_RetrievalProcessorSettings("Default Settings"), "legOfCompetitor"); DataRetrieverChainBuilder> chainBuilder = chainWithSettings.startBuilding(getExecutor()); while (chainBuilder.canStepFurther()) { chainBuilder.stepFurther(); } - chainBuilder.setSettings("Error"); + chainBuilder.setSettings(new WrongSettings()); } @Test(expected=IllegalStateException.class) public void testRetrieverWithNoSettingsButSettedSettingsCreated() { DataRetrieverChainBuilder> chainBuilder = dataRetrieverChainDefinition.startBuilding(ConcurrencyTestsUtil.getExecutor()); chainBuilder.stepFurther(); // Initialization - chainBuilder.setSettings("Error"); + chainBuilder.setSettings(new WrongSettings()); + } + + public class WrongSettings extends SerializableSettings { + private static final long serialVersionUID = 8114560334614499761L; + } } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/TestRegattaRetrievalProcessor.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/TestRegattaRetrievalProcessor.java index add66772929..c2e8f6d6125 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/TestRegattaRetrievalProcessor.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/TestRegattaRetrievalProcessor.java @@ -18,5 +18,10 @@ public class TestRegattaRetrievalProcessor extends AbstractRetrievalProcessor retrieveData(Collection regattas) { return regattas; } + +// @Override +// public Iterable> getResultReceivers() { +// return super.getResultReceivers(); +// } } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/Test_NullRetrievalProcessorSettings.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/Test_RetrievalProcessorSettings.java similarity index 68% rename from java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/Test_NullRetrievalProcessorSettings.java rename to java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/Test_RetrievalProcessorSettings.java index f99f45df1cb..4bc4bd8f20d 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/Test_NullRetrievalProcessorSettings.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/Test_RetrievalProcessorSettings.java @@ -2,12 +2,12 @@ package com.sap.sse.datamining.test.util.components; import com.sap.sse.common.settings.SerializableSettings; -public class Test_NullRetrievalProcessorSettings extends SerializableSettings { +public class Test_RetrievalProcessorSettings extends SerializableSettings { private static final long serialVersionUID = -373296620115384430L; private final String value; - public Test_NullRetrievalProcessorSettings(String value) { + public Test_RetrievalProcessorSettings(String value) { this.value = value; } @@ -15,4 +15,4 @@ public class Test_NullRetrievalProcessorSettings extends SerializableSettings { return value; } -} +} \ No newline at end of file diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/TestNullRetrievalProcessorWithSettings.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/Test_RetrievalProcessorWithSettings.java similarity index 61% rename from java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/TestNullRetrievalProcessorWithSettings.java rename to java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/Test_RetrievalProcessorWithSettings.java index 3b2da4d178d..cde14e8188b 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/TestNullRetrievalProcessorWithSettings.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/Test_RetrievalProcessorWithSettings.java @@ -8,13 +8,12 @@ import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; import com.sap.sse.datamining.test.data.Test_HasLegOfCompetitorContext; -public class TestNullRetrievalProcessorWithSettings extends AbstractRetrievalProcessor{ +public class Test_RetrievalProcessorWithSettings extends AbstractRetrievalProcessor{ - @SuppressWarnings("unused") - private Test_NullRetrievalProcessorSettings settings; + private Test_RetrievalProcessorSettings settings; - public TestNullRetrievalProcessorWithSettings(ExecutorService executor, Collection> resultReceivers, - Test_NullRetrievalProcessorSettings settings, int retrievalLevel) { + public Test_RetrievalProcessorWithSettings(ExecutorService executor, Collection> resultReceivers, + Test_RetrievalProcessorSettings settings, int retrievalLevel) { super(Test_HasLegOfCompetitorContext.class, Test_HasLegOfCompetitorContext.class, executor, resultReceivers, retrievalLevel); this.settings = settings; } @@ -25,5 +24,9 @@ public class TestNullRetrievalProcessorWithSettings extends AbstractRetrievalPro legsWithContext.add(legWithContext); return legsWithContext; } + + public Test_RetrievalProcessorSettings getSettings() { + return settings; + } -} +} \ No newline at end of file diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainBuilder.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainBuilder.java index 476c19f0ea0..5064e67c283 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainBuilder.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainBuilder.java @@ -1,5 +1,6 @@ package com.sap.sse.datamining.components; +import com.sap.sse.common.settings.SerializableSettings; import com.sap.sse.datamining.impl.components.DataRetrieverLevel; @@ -57,7 +58,7 @@ public interface DataRetrieverChainBuilder { * @throws IllegalArgumentException if the SettingsType isn't applicable for the * {@link DataRetrieverLevel#getSettingsType() settings of the current retriever level}. */ - public DataRetrieverChainBuilder setSettings(SettingsType settings); + public DataRetrieverChainBuilder setSettings(SettingsType settings); /** * Adds a result receiver to the data retriever of the current level. diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningServerImpl.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningServerImpl.java index 854f6d664cd..586b0e1dc00 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningServerImpl.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningServerImpl.java @@ -345,29 +345,20 @@ public class DataMiningServerImpl implements ModifiableDataMiningServer { Map retrieverSettings = queryDefinitionDTO.getRetrieverSettings(); Map>> filterSelection = queryDefinitionDTO.getFilterSelection(); - for (DataRetrieverLevel retrieverLevel : retrieverChain.getDataRetrieverLevels()) { - if (retrieverSettings.containsKey(retrieverLevel)) { - queryDefinition.setRetrieverSettings(retrieverLevel, retrieverSettings.get(retrieverLevel)); + for (DataRetrieverLevelDTO retrieverLevelDTO : queryDefinitionDTO.getDataRetrieverChainDefinition().getRetrieverLevels()) { + if (retrieverSettings.containsKey(retrieverLevelDTO)) { + queryDefinition.setRetrieverSettings(retrieverChain.getDataRetrieverLevel(retrieverLevelDTO.getLevel()), retrieverSettings.get(retrieverLevelDTO)); } - if (filterSelection.containsKey(retrieverLevel)) { - for (Entry> levelSpecificFilterSelectionEntry : filterSelection.get(retrieverLevel).entrySet()) { + if (filterSelection.containsKey(retrieverLevelDTO)) { + for (Entry> levelSpecificFilterSelectionEntry : filterSelection.get(retrieverLevelDTO).entrySet()) { Function dimensionToFilterBy = getFunctionForDTO(levelSpecificFilterSelectionEntry.getKey()); if (dimensionToFilterBy != null) { - queryDefinition.setFilterSelection(retrieverLevel, dimensionToFilterBy, levelSpecificFilterSelectionEntry.getValue()); + queryDefinition.setFilterSelection(retrieverChain.getDataRetrieverLevel(retrieverLevelDTO.getLevel()), dimensionToFilterBy, levelSpecificFilterSelectionEntry.getValue()); } } } } - for (Entry>> levelSpecificFilterSelection : queryDefinitionDTO.getFilterSelection().entrySet()) { - DataRetrieverLevel retrieverLevel = retrieverChain.getDataRetrieverLevel(levelSpecificFilterSelection.getKey().getLevel()); - for (Entry> levelSpecificFilterSelectionEntry : levelSpecificFilterSelection.getValue().entrySet()) { - Function dimensionToFilterBy = getFunctionForDTO(levelSpecificFilterSelectionEntry.getKey()); - if (dimensionToFilterBy != null) { - queryDefinition.setFilterSelection(retrieverLevel, dimensionToFilterBy, levelSpecificFilterSelectionEntry.getValue()); - } - } - } for (FunctionDTO dimensionToGroupByDTO : queryDefinitionDTO.getDimensionsToGroupBy()) { Function dimensionToGroupBy = getFunctionForDTO(dimensionToGroupByDTO); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java index 30c1a6b3f40..bdef6e50e63 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java @@ -74,6 +74,10 @@ public abstract class AbstractParallelProcessor extends A unfinishedInstructionsCounter.getAndDecrement(); } + protected Iterable> getResultReceivers() { + return resultReceivers; + } + /** * Forwards the given result to the result receivers, if it's {@link #isResultValid(Object) valid} * and if the processor hasn't been {@link #abort() aborted}. diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SimpleDataRetrieverChainBuilder.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SimpleDataRetrieverChainBuilder.java index 7dadcf3d562..824bc986e21 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SimpleDataRetrieverChainBuilder.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SimpleDataRetrieverChainBuilder.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; +import com.sap.sse.common.settings.SerializableSettings; import com.sap.sse.datamining.components.DataRetrieverChainBuilder; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; import com.sap.sse.datamining.components.FilterCriterion; @@ -23,7 +24,7 @@ public class SimpleDataRetrieverChainBuilder implements DataRetr private final Map> filters; private final Map>> receivers; - private final Map settings; + private final Map settings; private int currentRetrieverLevelIndex; /** @@ -83,7 +84,7 @@ public class SimpleDataRetrieverChainBuilder implements DataRetr } @Override - public DataRetrieverChainBuilder setSettings(SettingsType settings) { + public DataRetrieverChainBuilder setSettings(SettingsType settings) { if (!hasBeenInitialized()) { throw new IllegalStateException("The builder hasn't been initialized"); } @@ -184,15 +185,16 @@ public class SimpleDataRetrieverChainBuilder implements DataRetr + retrieverType.getSimpleName() + "'", e); } - Object settings = null; + SerializableSettings settings = null; if (settingsType != null) { - this.settings.get(retrieverLevelIndex); + settings = this.settings.containsKey(retrieverLevelIndex) ? this.settings.get(retrieverLevelIndex) + : retrieverLevels.get(retrieverLevelIndex).getDefaultSettings(); } return constructRetriever(retrieverConstructor, retrievedDataType, resultReceivers, filter, settings, settingsType, retrieverLevelIndex); } private Processor constructRetriever(Constructor> retrieverConstructor, Class retrievedDataType, - Collection> resultReceivers, FilterCriterion filter, Object settings, Class settingsType, int retrieverLevelIndex) { + Collection> resultReceivers, FilterCriterion filter, SerializableSettings settings, Class settingsType, int retrieverLevelIndex) { try { Collection> retrievalResultReceivers = resultReceivers; if (filter != null) { From f0a35203bf8fbee67fc82c7320d3d2235db3c76d Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 17 Sep 2015 12:08:19 +0200 Subject: [PATCH 259/504] Changed source path to new polarmining package --- .../main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml index 1e831a9ff5f..a78993aceae 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml @@ -34,7 +34,7 @@ - + From ea0248dfdc74c7b625595ea6204a9f480c010618 Mon Sep 17 00:00:00 2001 From: Simon Pamies Date: Thu, 17 Sep 2015 12:31:01 +0200 Subject: [PATCH 260/504] Allowing more messages per device to be shown --- .../sap/sailing/server/gateway/impl/WindStatusServlet.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusServlet.java index 52da5612d55..6fb443229e8 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusServlet.java @@ -50,8 +50,8 @@ public class WindStatusServlet extends SailingServerHttpServlet implements Igtim protected static final String PARAM_RELOAD_WIND_RECEIVER="reloadWindReceiver"; - protected final int NUMBER_OF_MESSAGES_TO_SHOW=20; - protected final int NUMBER_OF_MESSAGES_PER_DEVICE_TO_SHOW=5; + protected final int NUMBER_OF_MESSAGES_TO_SHOW=100; + protected final int NUMBER_OF_MESSAGES_PER_DEVICE_TO_SHOW=10; protected static final DecimalFormat decimalFormatter2Digits = new DecimalFormat("#.##"); protected static final DecimalFormat decimalFormatter1Digit = new DecimalFormat("#.#"); From 7fde7a0c8e94b516375745b8564e627e82730306 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 17 Sep 2015 13:10:09 +0200 Subject: [PATCH 261/504] Fixed ui bug in TabbedResultsPresenter --- java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch | 1 + .../presentation/TabbedResultsPresenter.java | 6 ++++++ .../SimpleDataRetrieverChainDefinitionProvider.java | 13 +++++++------ .../com/sap/sailing/gwt/ui/DataMining.gwt.xml | 1 + .../PolarsDataRetrievalChainDefinitions.java | 6 +++--- .../components/PolarGPSFixRetrievalProcessor.java | 4 ++-- 6 files changed, 20 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch index 7d344e8dd8c..eae6162cfdb 100644 --- a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch @@ -68,6 +68,7 @@ + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java index 511fa211c4e..858ef1e000d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java @@ -69,6 +69,12 @@ public class TabbedResultsPresenter implements ResultsPresenter { CloseableTabHeader oldHeader = getSelectedHeader(); addPolarTabAndFocus(); removeTab(oldHeader); + } else { + if (!(getSelectedPresenter() instanceof MultiResultsPresenter)) { + CloseableTabHeader oldHeader = getSelectedHeader(); + addTabAndFocus(); + removeTab(oldHeader); + } } getSelectedHeader().setText(result.getResultSignifier()); getSelectedPresenter().showResult(result); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java index a2d3735b6d2..aa131cfcac2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java @@ -26,7 +26,8 @@ import com.sap.sailing.gwt.ui.datamining.DataMiningEntryPoint; import com.sap.sailing.gwt.ui.datamining.DataMiningServiceAsync; import com.sap.sailing.gwt.ui.datamining.DataRetrieverChainDefinitionChangedListener; import com.sap.sailing.gwt.ui.datamining.DataRetrieverChainDefinitionProvider; -import com.sap.sailing.gwt.ui.polarsheets.PolarSheetGenerationSettingsDialogComponent; +import com.sap.sailing.gwt.ui.polarmining.PolarDataMiningSettingsDialogComponent; +import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; import com.sap.sse.common.settings.SerializableSettings; import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO; @@ -49,7 +50,7 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever private Anchor settingsAnchor; // TODO FIXME This is currently the only use case for processors with settings. That's why it's hard coded. - private Map settingsMappedByRetrieverChain; + private Map settingsMappedByRetrieverChain; public SimpleDataRetrieverChainDefinitionProvider(final StringMessages stringMessages, DataMiningServiceAsync dataMiningService, ErrorReporter errorReporter) { this.stringMessages = stringMessages; @@ -153,8 +154,8 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever if (retrieverChain.hasSettings()) { // TODO FIXME This is currently the only use case for processors with settings. That's why it's hard coded. for (SerializableSettings settings : retrieverChain.getDefaultSettings().values()) { - if (settings instanceof PolarSheetGenerationSettings) { - settingsMappedByRetrieverChain.put(retrieverChain, (PolarSheetGenerationSettings) settings); + if (settings instanceof PolarDataMiningSettings) { + settingsMappedByRetrieverChain.put(retrieverChain, (PolarDataMiningSettings) settings); } } } @@ -235,7 +236,7 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever public SettingsDialogComponent getSettingsDialogComponent() { SettingsDialogComponent result = null; if (settingsMappedByRetrieverChain.containsKey(getDataRetrieverChainDefinition())) { - result = new PolarSheetGenerationSettingsDialogComponent(settingsMappedByRetrieverChain.get(getDataRetrieverChainDefinition())); + result = new PolarDataMiningSettingsDialogComponent(settingsMappedByRetrieverChain.get(getDataRetrieverChainDefinition())); } return (SettingsDialogComponent) result; } @@ -243,7 +244,7 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever @Override public void updateSettings(SerializableSettings newSettings) { // TODO FIXME This is currently the only use case for processors with settings. That's why it's hard coded. - settingsMappedByRetrieverChain.put(getDataRetrieverChainDefinition(), (PolarSheetGenerationSettings) newSettings); + settingsMappedByRetrieverChain.put(getDataRetrieverChainDefinition(), (PolarDataMiningSettings) newSettings); notifyListeners(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml index 45a9266d71a..b993ff55587 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/DataMining.gwt.xml @@ -35,6 +35,7 @@ + diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java index dd82d8f388d..aa5aaea1c89 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java @@ -3,8 +3,6 @@ package com.sap.sailing.polars.datamining; import java.util.ArrayList; import java.util.Collection; -import com.sap.sailing.domain.common.PolarSheetGenerationSettings; -import com.sap.sailing.domain.common.impl.PolarSheetGenerationSettingsImpl; import com.sap.sailing.polars.datamining.components.PolarCompetitorRetrievalProcessor; import com.sap.sailing.polars.datamining.components.PolarFleetRetrievalProcessor; import com.sap.sailing.polars.datamining.components.PolarGPSFixRetrievalProcessor; @@ -19,6 +17,8 @@ import com.sap.sailing.polars.datamining.data.HasLeaderboardGroupPolarContext; import com.sap.sailing.polars.datamining.data.HasLeaderboardPolarContext; import com.sap.sailing.polars.datamining.data.HasLegPolarContext; import com.sap.sailing.polars.datamining.data.HasRaceColumnPolarContext; +import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; +import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettingsImpl; import com.sap.sailing.server.RacingEventService; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; import com.sap.sse.datamining.impl.components.SimpleDataRetrieverChainDefinition; @@ -44,7 +44,7 @@ public class PolarsDataRetrievalChainDefinitions { definition1.addAfter(PolarLegRetrievalProcessor.class, PolarCompetitorRetrievalProcessor.class, HasCompetitorPolarContext.class, "Competitor"); definition1.endWith(PolarCompetitorRetrievalProcessor.class, PolarGPSFixRetrievalProcessor.class, - HasGPSFixPolarContext.class, PolarSheetGenerationSettings.class, PolarSheetGenerationSettingsImpl.createStandardPolarSettings(), "GPSFix"); + HasGPSFixPolarContext.class, PolarDataMiningSettings.class, PolarDataMiningSettingsImpl.createStandardPolarSettings(), "GPSFix"); dataRetrieverChainDefinitions.add(definition1); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java index dd53b86f081..07e84e27a2c 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java @@ -29,10 +29,10 @@ import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; public class PolarGPSFixRetrievalProcessor extends AbstractRetrievalProcessor { - private final PolarSheetGenerationSettings settings; + private final PolarDataMiningSettings settings; public PolarGPSFixRetrievalProcessor(ExecutorService executor, Collection> resultReceivers, - PolarSheetGenerationSettings settings, int retrievalLevel) { + PolarDataMiningSettings settings, int retrievalLevel) { super(HasCompetitorPolarContext.class, HasGPSFixPolarContext.class, executor, resultReceivers, retrievalLevel); this.settings = settings; } From 94010bb9fe5c6957301ac53b36ac24de90d2aed6 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 17 Sep 2015 13:16:58 +0200 Subject: [PATCH 262/504] Added new bundles in launch configs --- .../SailingDashboardsGWT.launch | 30 ++++----- ...WT Remote Profiling (Run-Mode only).launch | 62 ++++++++++--------- .../SailingServer (No Proxy OSX).launch | 4 +- ...ailingServer (No Proxy, Cached MTB).launch | 4 +- ...ingServer (No Proxy, Jetty on 8889).launch | 4 +- ...o Proxy, Jetty on 8889, Cached MTB).launch | 6 +- ... Jetty on 8889, auto-replicate dev).launch | 4 +- ...oxy, Jetty on 8889, auto-replicate).launch | 4 +- ...ingServer (No Proxy, Jetty on 8890).launch | 4 +- ...ver (No Proxy, Remote Debug SAP VM).launch | 4 +- ...ailingServer (No Proxy, winddbTest).launch | 4 +- .../SailingServer (Proxy).launch | 4 +- ...ailingServer (Proxy, Jetty on 8889).launch | 4 +- ...Server (Proxy, Remote Debug SAP VM).launch | 6 +- ...Proxy, SwissTiming Live Simulation).launch | 4 +- .../SailingServer (Proxy, winddbTest).launch | 4 +- 16 files changed, 77 insertions(+), 75 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch index c49dae6c86c..4d2ae11f9e2 100755 --- a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch +++ b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch @@ -21,21 +21,21 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch index 6bc5adc7656..a3aff4a0ab3 100755 --- a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch +++ b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch @@ -19,36 +19,38 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch b/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch index f26a44952df..da49a5ac2a5 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch @@ -30,9 +30,9 @@ - + - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch index 8cca97aab20..3c80de76501 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch @@ -29,9 +29,9 @@ - + - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch index c4110a6d1aa..c51c545b775 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch @@ -23,10 +23,10 @@ - + - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch index dde3872553e..6cd04a8f5aa 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch @@ -16,17 +16,17 @@ - + - + - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch index 4f01262c50a..e85a5de7d6c 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch @@ -23,10 +23,10 @@ - + - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch index f5743ad28fc..bff4ae661a9 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch @@ -23,10 +23,10 @@ - + - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch index d447783f775..152c41cf234 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch @@ -23,10 +23,10 @@ - + - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch index 0a79256e337..96a55c7cdc6 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch @@ -23,9 +23,9 @@ - + - + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch index 69500a6a8bf..bf194010bed 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch @@ -29,9 +29,9 @@ - + - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy).launch b/java/com.sap.sailing.server/SailingServer (Proxy).launch index 57c14abb44f..8ab47c85d0a 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy).launch @@ -30,10 +30,10 @@ - + - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch index a47fd09484a..f4fcdf7b61e 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch @@ -23,10 +23,10 @@ - + - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch index 4ea53aeb605..5ed887e487e 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch @@ -17,15 +17,15 @@ - + - + - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch b/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch index fc80705da1e..2d4dd9e8377 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch @@ -22,9 +22,9 @@ - + - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch b/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch index ef9d8fa2fca..8847288d23c 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, winddbTest).launch @@ -24,10 +24,10 @@ - + - + From fb5ac0235ab2e0899fc0f61250eabe0358f05e15 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 17 Sep 2015 13:24:24 +0200 Subject: [PATCH 263/504] Added new bundles to feature.xml --- .../ui/polarmining/PolarDataMiningSettingsDialogComponent.java | 2 +- .../datamining/components/PolarGPSFixRetrievalProcessor.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java index ab2d9281191..42cf6314501 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java @@ -65,7 +65,7 @@ public class PolarDataMiningSettingsDialogComponent implements SettingsDialogCom applyMinimumWindConfidenceLabel.setTitle(stringMessages.applyMinimumWindConfidenceTooltip()); grid.setWidget(3, 0, applyMinimumWindConfidenceLabel); applyMinimumWindConfidenceBox = dialog.createCheckbox(""); - applyMinimumWindConfidenceBox.setValue(settings.useOnlyEstimatedForWindDirection()); + applyMinimumWindConfidenceBox.setValue(settings.applyMinimumWindConfidence()); grid.setWidget(3, 1, applyMinimumWindConfidenceBox); Label useOnlyWindGaugesForWindSpeedLabel = new Label(stringMessages.polarSheetUseOnlyWindGaugeData() + ":"); useOnlyWindGaugesForWindSpeedLabel.setTitle(stringMessages.polarSheetUseOnlyWindGaugeDataTooltip()); diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java index 07e84e27a2c..4d2389acd44 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java @@ -59,7 +59,7 @@ public class PolarGPSFixRetrievalProcessor extends AbstractRetrievalProcessor= settings.getMinimumWindConfidence()) { + if (wind != null && (settings.applyMinimumWindConfidence() ? wind.getConfidence() >= settings.getMinimumWindConfidence() : true)) { result.add(new GPSFixWithPolarContext(fix, trackedRace, windSpeedRangeGroup, competitor, settings, wind, element)); } From 30a48497602599bef781690a216557761f546e61 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 17 Sep 2015 13:32:12 +0200 Subject: [PATCH 264/504] Changed the java version of the shared gwt bundle to 1.7 --- .../META-INF/MANIFEST.MF | 2 +- java/com.sap.sse.datamining.annotations/META-INF/MANIFEST.MF | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.polars.datamining.shared/META-INF/MANIFEST.MF b/java/com.sap.sailing.polars.datamining.shared/META-INF/MANIFEST.MF index d0a52fdc80f..db7f2544eb9 100644 --- a/java/com.sap.sailing.polars.datamining.shared/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.polars.datamining.shared/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: Datamining-Polars-Shared Bundle-SymbolicName: com.sap.sailing.polars.datamining.shared Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-ActivationPolicy: lazy Bundle-ClassPath: . Require-Bundle: com.sap.sse.datamining.shared, diff --git a/java/com.sap.sse.datamining.annotations/META-INF/MANIFEST.MF b/java/com.sap.sse.datamining.annotations/META-INF/MANIFEST.MF index d01fc009a89..847c1b84437 100644 --- a/java/com.sap.sse.datamining.annotations/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.datamining.annotations/META-INF/MANIFEST.MF @@ -4,6 +4,6 @@ Bundle-Name: Data Mining Annotations Bundle-SymbolicName: com.sap.sse.datamining.annotations Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP -Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Export-Package: com.sap.sse.datamining.annotations, com.sap.sse.datamining.annotations.data From 420ad6952be1ac9ed5654052551175d10e0e0cb4 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 17 Sep 2015 13:38:58 +0200 Subject: [PATCH 265/504] Forgot to change the build config to java 1.7 --- java/com.sap.sailing.polars.datamining.shared/.classpath | 2 +- .../.settings/org.eclipse.jdt.core.prefs | 6 +++--- java/com.sap.sse.datamining.annotations/.classpath | 2 +- .../.settings/org.eclipse.jdt.core.prefs | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/java/com.sap.sailing.polars.datamining.shared/.classpath b/java/com.sap.sailing.polars.datamining.shared/.classpath index c5578deadd1..94da51e9eed 100644 --- a/java/com.sap.sailing.polars.datamining.shared/.classpath +++ b/java/com.sap.sailing.polars.datamining.shared/.classpath @@ -1,8 +1,8 @@ - + diff --git a/java/com.sap.sailing.polars.datamining.shared/.settings/org.eclipse.jdt.core.prefs b/java/com.sap.sailing.polars.datamining.shared/.settings/org.eclipse.jdt.core.prefs index a698e59674f..d17b6724d17 100644 --- a/java/com.sap.sailing.polars.datamining.shared/.settings/org.eclipse.jdt.core.prefs +++ b/java/com.sap.sailing.polars.datamining.shared/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/java/com.sap.sse.datamining.annotations/.classpath b/java/com.sap.sse.datamining.annotations/.classpath index eca7bdba8f0..e8ea977a694 100644 --- a/java/com.sap.sse.datamining.annotations/.classpath +++ b/java/com.sap.sse.datamining.annotations/.classpath @@ -1,7 +1,7 @@ - + diff --git a/java/com.sap.sse.datamining.annotations/.settings/org.eclipse.jdt.core.prefs b/java/com.sap.sse.datamining.annotations/.settings/org.eclipse.jdt.core.prefs index 0c68a61dca8..f42de363afa 100644 --- a/java/com.sap.sse.datamining.annotations/.settings/org.eclipse.jdt.core.prefs +++ b/java/com.sap.sse.datamining.annotations/.settings/org.eclipse.jdt.core.prefs @@ -1,7 +1,7 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.compiler.source=1.7 From 5972e91e0040cd51ec5fd4c96d13b3d108b6c4ea Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 17 Sep 2015 13:49:41 +0200 Subject: [PATCH 266/504] Fixed instanceof... --- .../selection/SimpleDataRetrieverChainDefinitionProvider.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java index aa131cfcac2..d9802d474fb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java @@ -20,7 +20,6 @@ import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ValueListBox; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.domain.common.PolarSheetGenerationSettings; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.datamining.DataMiningEntryPoint; import com.sap.sailing.gwt.ui.datamining.DataMiningServiceAsync; @@ -218,7 +217,7 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever HashMap retrieverSettings = new HashMap<>(); if (settingsMappedByRetrieverChain.containsKey(getDataRetrieverChainDefinition())) { for (DataRetrieverLevelDTO retrieverLevel : getDataRetrieverChainDefinition().getRetrieverLevels()) { - if (retrieverLevel.getDefaultSettings() instanceof PolarSheetGenerationSettings) { + if (retrieverLevel.getDefaultSettings() instanceof PolarDataMiningSettings) { retrieverSettings.put(retrieverLevel, settingsMappedByRetrieverChain.get(getDataRetrieverChainDefinition())); } } From 4e3fbe1fe411c6cac0cf8cea14c6caaa27b1c4d8 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 17 Sep 2015 15:26:02 +0200 Subject: [PATCH 267/504] added failing test case for bug 3267: serialization of null time points in start/end of tracking race log events --- .../TrackingTimesEventSerializerTest.java | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/TrackingTimesEventSerializerTest.java diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/TrackingTimesEventSerializerTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/TrackingTimesEventSerializerTest.java new file mode 100644 index 00000000000..e8fe7e49813 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/TrackingTimesEventSerializerTest.java @@ -0,0 +1,76 @@ +package com.sap.sailing.server.gateway.serialization.test.racelog; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import java.util.UUID; + +import org.json.simple.JSONObject; +import org.junit.Test; + +import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl; +import com.sap.sailing.domain.abstractlog.race.RaceLogEndOfTrackingEvent; +import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; +import com.sap.sailing.domain.abstractlog.race.RaceLogEventRestoreFactory; +import com.sap.sailing.domain.abstractlog.race.RaceLogStartOfTrackingEvent; +import com.sap.sailing.server.gateway.serialization.JsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.BoatClassJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.BoatJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.NationalityJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.PersonJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.TeamJsonSerializer; +import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogEndOfTrackingEventSerializer; +import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartOfTrackingEventSerializer; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.impl.MillisecondsTimePoint; + +public class TrackingTimesEventSerializerTest { + private JsonSerializer createStartOfTrackingEventSerializer() { + return new RaceLogStartOfTrackingEventSerializer(createCompetitorSerializer()); + } + + private JsonSerializer createEndOfTrackingEventSerializer() { + return new RaceLogEndOfTrackingEventSerializer(createCompetitorSerializer()); + } + + private CompetitorJsonSerializer createCompetitorSerializer() { + return new CompetitorJsonSerializer(new TeamJsonSerializer( + new PersonJsonSerializer(new NationalityJsonSerializer())), new BoatJsonSerializer( + new BoatClassJsonSerializer())); + } + + @Test + public void testNullStartOfTrackingTimeAttribute() { + final RaceLogStartOfTrackingEvent event = RaceLogEventRestoreFactory.INSTANCE.createStartOfTrackingEvent(/* startOfTracking */null, + new LogEventAuthorImpl("Axel", 0), UUID.randomUUID(), /* competitors */null, /* passId */1); + JSONObject json = createStartOfTrackingEventSerializer().serialize(event); + assertNull(json.get(RaceLogStartOfTrackingEventSerializer.FIELD_TIMESTAMP)); + } + + @Test + public void testNullEndOfTrackingTimeAttribute() { + final RaceLogEndOfTrackingEvent event = RaceLogEventRestoreFactory.INSTANCE.createEndOfTrackingEvent(/* endOfTracking */null, + new LogEventAuthorImpl("Axel", 0), UUID.randomUUID(), /* competitors */null, /* passId */1); + JSONObject json = createEndOfTrackingEventSerializer().serialize(event); + assertNull(json.get(RaceLogEndOfTrackingEventSerializer.FIELD_TIMESTAMP)); + } + + @Test + public void testNonNullStartOfTrackingTimeAttribute() { + final TimePoint now = MillisecondsTimePoint.now(); + final RaceLogStartOfTrackingEvent event = RaceLogEventRestoreFactory.INSTANCE.createStartOfTrackingEvent(/* startOfTracking */now, + new LogEventAuthorImpl("Axel", 0), UUID.randomUUID(), /* competitors */null, /* passId */1); + JSONObject json = createStartOfTrackingEventSerializer().serialize(event); + assertEquals(now.asMillis(), json.get(RaceLogStartOfTrackingEventSerializer.FIELD_TIMESTAMP)); + } + + @Test + public void testNonNullEndOfTrackingTimeAttribute() { + final TimePoint now = MillisecondsTimePoint.now(); + final RaceLogEndOfTrackingEvent event = RaceLogEventRestoreFactory.INSTANCE.createEndOfTrackingEvent(/* endOfTracking */now, + new LogEventAuthorImpl("Axel", 0), UUID.randomUUID(), /* competitors */null, /* passId */1); + JSONObject json = createEndOfTrackingEventSerializer().serialize(event); + assertEquals(now.asMillis(), json.get(RaceLogEndOfTrackingEventSerializer.FIELD_TIMESTAMP)); + } +} From bbc9beeb990ac047e210d1b76d3d6431ea6e987c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 17 Sep 2015 15:30:09 +0200 Subject: [PATCH 268/504] fix for bug 3267: null values for logical time point of RaceLogEvent will be serialized as null --- .../racelog/impl/BaseRaceLogEventSerializer.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racelog/impl/BaseRaceLogEventSerializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racelog/impl/BaseRaceLogEventSerializer.java index 973db387446..104bd436c24 100644 --- a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racelog/impl/BaseRaceLogEventSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racelog/impl/BaseRaceLogEventSerializer.java @@ -6,6 +6,7 @@ import org.json.simple.JSONObject; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.server.gateway.serialization.JsonSerializer; +import com.sap.sse.common.TimePoint; public abstract class BaseRaceLogEventSerializer implements JsonSerializer { public static final String FIELD_CLASS = "@class"; @@ -31,7 +32,8 @@ public abstract class BaseRaceLogEventSerializer implements JsonSerializer Date: Thu, 17 Sep 2015 15:33:39 +0200 Subject: [PATCH 269/504] Fixed gradle build files for new datamining dependencies --- java/com.sap.sse.datamining.annotations/build.gradle | 7 +++++++ java/com.sap.sse.datamining.shared/build.gradle | 6 ++++++ 2 files changed, 13 insertions(+) create mode 100644 java/com.sap.sse.datamining.annotations/build.gradle diff --git a/java/com.sap.sse.datamining.annotations/build.gradle b/java/com.sap.sse.datamining.annotations/build.gradle new file mode 100644 index 00000000000..f0a8d88d703 --- /dev/null +++ b/java/com.sap.sse.datamining.annotations/build.gradle @@ -0,0 +1,7 @@ +apply plugin: "java" + +sourceSets { + main { + java.srcDirs = ["src"] + } +} diff --git a/java/com.sap.sse.datamining.shared/build.gradle b/java/com.sap.sse.datamining.shared/build.gradle index f0a8d88d703..26679215a67 100644 --- a/java/com.sap.sse.datamining.shared/build.gradle +++ b/java/com.sap.sse.datamining.shared/build.gradle @@ -5,3 +5,9 @@ sourceSets { java.srcDirs = ["src"] } } + +dependencies { + /* local dependencies */ + compile project(":java:com.sap.sse.datamining.shared") + compile project(":java:com.sap.sse.common") +} From 1bd07b3782841b7105f8fa5078524dcb03a10622 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 17 Sep 2015 16:00:00 +0200 Subject: [PATCH 270/504] The Composite Settings can now be used --- .../sailing/gwt/ui/client/StringMessages.java | 1 + .../gwt/ui/client/StringMessages.properties | 3 +- .../ui/client/StringMessages_de.properties | 3 +- .../ui/client/StringMessages_ru.properties | 3 +- .../ui/datamining/DataMiningEntryPoint.java | 11 +++-- .../execution/SimpleQueryRunner.java | 3 +- .../QueryRunnerSettingsDialogComponent.java | 12 +++--- .../gwt/client/dialog/DataEntryDialog.java | 2 +- .../shared/components/CompositeSettings.java | 3 +- .../CompositeSettingsDialogComponent.java | 38 +++++++++++++---- .../CompositeTabbedSettingsDialog.java | 42 +++++++++---------- .../shared/components/CompositeValidator.java | 17 ++++---- 12 files changed, 84 insertions(+), 54 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index f1e7bfc7e95..f4c9656e825 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1377,4 +1377,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String openFullscreenView(); String closeFullscreenView(); String analyze(); + String dataMiningSettings(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index d07774e4cdd..63b22c9f2c3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1344,4 +1344,5 @@ cantDisplayDataOfType=Can''t display data of type {0} shownDecimals=Shown Decimals openFullscreenView=Open fullscreen view closeFullscreenView=Close fullscreen view -analyze=Analyze \ No newline at end of file +analyze=Analyze +dataMiningSettings=Data Mining Settings \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 79539d242ee..5ceb175a266 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1333,4 +1333,5 @@ cantDisplayDataOfType=Daten des Typs {0} können nicht dargestellt werden shownDecimals=Angezeigte Nachkommastellen openFullscreenView=Vollbildansicht öffnen closeFullscreenView=Vollbildansicht schließen -analyze=Untersuche \ No newline at end of file +analyze=Untersuche +dataMiningSettings=Data Mining Einstellungen \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index ed643b70473..444cd584bbd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1281,4 +1281,5 @@ cantDisplayDataOfType=Can''t display data of type {0} shownDecimals=Shown Decimals openFullscreenView=Open fullscreen view closeFullscreenView=Close fullscreen view -analyze=Analyze \ No newline at end of file +analyze=Analyze +dataMiningSettings=Data Mining Settings \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java index c0d016298d9..cbdab4b6ab7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java @@ -1,5 +1,7 @@ package com.sap.sailing.gwt.ui.datamining; +import java.util.Collection; +import java.util.HashSet; import java.util.UUID; import com.google.gwt.core.client.GWT; @@ -20,12 +22,12 @@ import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants; import com.sap.sailing.gwt.ui.datamining.execution.SimpleQueryRunner; import com.sap.sailing.gwt.ui.datamining.presentation.TabbedResultsPresenter; import com.sap.sailing.gwt.ui.datamining.selection.BufferingQueryDefinitionProviderWithControls; -import com.sap.sailing.gwt.ui.datamining.settings.QueryRunnerSettings; import com.sap.sse.datamining.shared.DataMiningSession; import com.sap.sse.datamining.shared.impl.UUIDDataMiningSession; import com.sap.sse.gwt.client.EntryPointHelper; +import com.sap.sse.gwt.client.shared.components.Component; import com.sap.sse.gwt.client.shared.components.ComponentResources; -import com.sap.sse.gwt.client.shared.components.SettingsDialog; +import com.sap.sse.gwt.client.shared.components.CompositeTabbedSettingsDialog; import com.sap.sse.gwt.resources.Highcharts; public class DataMiningEntryPoint extends AbstractSailingEntryPoint { @@ -67,7 +69,10 @@ public class DataMiningEntryPoint extends AbstractSailingEntryPoint { settingsAnchor.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { - new SettingsDialog(queryRunner, getStringMessages()).show(); + Collection> components = new HashSet<>(); + components.add(queryRunner); + new CompositeTabbedSettingsDialog(getStringMessages(), components, getStringMessages().dataMiningSettings()).show(); +// new SettingsDialog(queryRunner, getStringMessages()).show(); } }); queryDefinitionProviderWithControls.addControl(settingsAnchor); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/execution/SimpleQueryRunner.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/execution/SimpleQueryRunner.java index 55277e389e4..b53c8aeb0ec 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/execution/SimpleQueryRunner.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/execution/SimpleQueryRunner.java @@ -123,8 +123,7 @@ public class SimpleQueryRunner implements QueryRunner { @Override public SettingsDialogComponent getSettingsDialogComponent() { - QueryRunnerSettings dataMiningSettings = new QueryRunnerSettings(settings); - return new QueryRunnerSettingsDialogComponent(dataMiningSettings, stringMessages); + return new QueryRunnerSettingsDialogComponent(settings, stringMessages); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/settings/QueryRunnerSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/settings/QueryRunnerSettingsDialogComponent.java index deedd29c73a..5938d55bd9d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/settings/QueryRunnerSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/settings/QueryRunnerSettingsDialogComponent.java @@ -14,7 +14,7 @@ public class QueryRunnerSettingsDialogComponent implements SettingsDialogCompone private QueryRunnerSettings initialSettings; private StringMessages stringMessages; - private CheckBox runAutimaticallyBox; + private CheckBox runAutomaticallyBox; public QueryRunnerSettingsDialogComponent(QueryRunnerSettings initialSettings, StringMessages stringMessages) { super(); @@ -26,17 +26,17 @@ public class QueryRunnerSettingsDialogComponent implements SettingsDialogCompone public Widget getAdditionalWidget(DataEntryDialog dialog) { FlowPanel additionalWidget = new FlowPanel(); - runAutimaticallyBox = dialog.createCheckbox(stringMessages.runAutomatically()); - runAutimaticallyBox.setTitle(stringMessages.runAutomaticallyTooltip()); - runAutimaticallyBox.setValue(initialSettings.isRunAutomatically()); - additionalWidget.add(runAutimaticallyBox); + runAutomaticallyBox = dialog.createCheckbox(stringMessages.runAutomatically()); + runAutomaticallyBox.setTitle(stringMessages.runAutomaticallyTooltip()); + runAutomaticallyBox.setValue(initialSettings.isRunAutomatically()); + additionalWidget.add(runAutomaticallyBox); return additionalWidget; } @Override public QueryRunnerSettings getResult() { - return new QueryRunnerSettings(runAutimaticallyBox.getValue()); + return new QueryRunnerSettings(runAutomaticallyBox.getValue()); } @Override diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/dialog/DataEntryDialog.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/dialog/DataEntryDialog.java index 4f72a25d7ff..f470a779705 100755 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/dialog/DataEntryDialog.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/dialog/DataEntryDialog.java @@ -145,7 +145,7 @@ public abstract class DataEntryDialog { if (validator != null) { errorMessage = validator.getErrorMessage(getResult()); } - if (errorMessage == null) { + if (errorMessage == null || errorMessage.isEmpty()) { getStatusLabel().setText(""); getOkButton().setEnabled(true); } else { diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettings.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettings.java index 15ff4ea5371..cf19df895d1 100755 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettings.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettings.java @@ -2,9 +2,10 @@ package com.sap.sse.gwt.client.shared.components; import com.sap.sse.common.Util; import com.sap.sse.common.settings.AbstractSettings; +import com.sap.sse.common.settings.Settings; public class CompositeSettings extends AbstractSettings { - public static class ComponentAndSettingsPair extends Util.Pair, SettingsType> { + public static class ComponentAndSettingsPair extends Util.Pair, SettingsType> { private static final long serialVersionUID = -569811233041583043L; public ComponentAndSettingsPair(Component a, SettingsType b) { diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsDialogComponent.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsDialogComponent.java index 26933e1b0b0..7db40f04b2a 100755 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsDialogComponent.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsDialogComponent.java @@ -1,44 +1,68 @@ package com.sap.sse.gwt.client.shared.components; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; + import com.google.gwt.user.client.ui.FocusWidget; import com.google.gwt.user.client.ui.TabPanel; import com.google.gwt.user.client.ui.Widget; +import com.sap.sse.common.settings.Settings; import com.sap.sse.gwt.client.dialog.DataEntryDialog; import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; +import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair; public class CompositeSettingsDialogComponent implements SettingsDialogComponent { - private final Component[] components; + private final Iterable> components; + private final Map, SettingsDialogComponent> dialogComponents; - public CompositeSettingsDialogComponent(Component... components) { + public CompositeSettingsDialogComponent(Iterable> components) { this.components = components; + dialogComponents = new HashMap<>(); } @Override public Widget getAdditionalWidget(DataEntryDialog dialog) { TabPanel result = new TabPanel(); for (Component component : components) { - Widget w = component.getSettingsDialogComponent().getAdditionalWidget((DataEntryDialog) dialog); + SettingsDialogComponent settingsDialogComponent = component.getSettingsDialogComponent(); + dialogComponents.put(component, settingsDialogComponent); + Widget w = settingsDialogComponent.getAdditionalWidget((DataEntryDialog) dialog); result.add(w, component.getLocalizedShortName()); } + result.selectTab(0); return result; } @Override public CompositeSettings getResult() { - - return null; + Collection> settings = new HashSet<>(); + for (Component component : components) { + settings.add(getComponentAndSettings(component)); + } + return new CompositeSettings(settings); + } + + private ComponentAndSettingsPair getComponentAndSettings(Component component) { + return new ComponentAndSettingsPair(component, getDialogComponent(component).getResult()); + } + + @SuppressWarnings("unchecked") + private SettingsDialogComponent getDialogComponent(Component component) { + return (SettingsDialogComponent) dialogComponents.get(component); } @Override public Validator getValidator() { - return new CompositeValidator(components); + return new CompositeValidator(dialogComponents.values()); } @Override public FocusWidget getFocusWidget() { for (Component component : components) { - FocusWidget fw = component.getSettingsDialogComponent().getFocusWidget(); + FocusWidget fw = getDialogComponent(component).getFocusWidget(); if (fw != null) { return fw; } diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialog.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialog.java index d2577f9e07c..8710010e1dc 100755 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialog.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialog.java @@ -1,10 +1,7 @@ package com.sap.sse.gwt.client.shared.components; -import java.util.HashMap; -import java.util.Map; - import com.google.gwt.user.client.ui.Widget; -import com.sap.sse.common.settings.AbstractSettings; +import com.sap.sse.common.settings.Settings; import com.sap.sse.gwt.client.StringMessages; import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair; @@ -16,9 +13,12 @@ import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSe * */ public class CompositeTabbedSettingsDialog extends SettingsDialog { - private final Map, SettingsDialogComponent> settingsDialogComponents; - public CompositeTabbedSettingsDialog(StringMessages stringConstants, final Component... components) { + public CompositeTabbedSettingsDialog(StringMessages stringConstants, final Iterable> components) { + this(stringConstants, components, null); + } + + public CompositeTabbedSettingsDialog(StringMessages stringConstants, final Iterable> components, final String title) { super(new Component() { @Override public boolean hasSettings() { @@ -42,23 +42,27 @@ public class CompositeTabbedSettingsDialog extends SettingsDialog void updateSettings(ComponentAndSettingsPair componentAndSettings) { + private void updateSettings(ComponentAndSettingsPair componentAndSettings) { componentAndSettings.getA().updateSettings(componentAndSettings.getB()); } @Override public String getLocalizedShortName() { - StringBuilder result = new StringBuilder(); - boolean first = true; - for (Component component : components) { - if (first) { - first = false; - } else { - result.append(" / "); + if (title != null && !title.isEmpty()) { + return title; + } else { + StringBuilder result = new StringBuilder(); + boolean first = true; + for (Component component : components) { + if (first) { + first = false; + } else { + result.append(" / "); + } + result.append(component.getLocalizedShortName()); } - result.append(component.getLocalizedShortName()); + return result.toString(); } - return result.toString(); } @Override @@ -81,12 +85,6 @@ public class CompositeTabbedSettingsDialog extends SettingsDialog, SettingsDialogComponent>(); - for (Component component : components) { - if (component.hasSettings()) { - settingsDialogComponents.put(component, component.getSettingsDialogComponent()); - } - } } } diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeValidator.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeValidator.java index 3fe9db3a7a5..d3ed7742fec 100755 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeValidator.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeValidator.java @@ -3,32 +3,31 @@ package com.sap.sse.gwt.client.shared.components; import java.util.ArrayList; import com.sap.sse.common.Util; -import com.sap.sse.common.settings.AbstractSettings; import com.sap.sse.common.settings.Settings; import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair; public class CompositeValidator implements Validator { - private static class ComponentAndValidator extends Util.Pair, Validator> { + private static class ComponentAndValidator extends Util.Pair, Validator> { private static final long serialVersionUID = -4190322565836849861L; - public ComponentAndValidator(Component a, Validator b) { + public ComponentAndValidator(SettingsDialogComponent a, Validator b) { super(a, b); } } private final Iterable> validators; - public CompositeValidator(Component[] components) { + public CompositeValidator(Iterable> dialogComponents) { ArrayList> v = new ArrayList>(); - for (Component component : components) { - v.add(getComponentAndValidator(component)); + for (SettingsDialogComponent dialogComponent : dialogComponents) { + v.add(getComponentAndValidator(dialogComponent)); } validators = v; } - private ComponentAndValidator getComponentAndValidator(Component component) { - return new ComponentAndValidator(component, component.getSettingsDialogComponent().getValidator()); + private ComponentAndValidator getComponentAndValidator(SettingsDialogComponent dialogComponents) { + return new ComponentAndValidator(dialogComponents, dialogComponents.getValidator()); } @Override @@ -44,7 +43,7 @@ public class CompositeValidator implements Validator { return result.toString(); } - private String getErrorMessage(ComponentAndSettingsPair componentAndSettings) { + private String getErrorMessage(ComponentAndSettingsPair componentAndSettings) { for (ComponentAndValidator componentAndValidator : validators) { if (componentAndValidator.getA() == componentAndSettings.getA()) { @SuppressWarnings("unchecked") From 7847722a4da0ea825528a192c11e58845d84e6f4 Mon Sep 17 00:00:00 2001 From: Simon Pamies Date: Thu, 17 Sep 2015 16:36:25 +0200 Subject: [PATCH 271/504] Introducing getStatuteMilesPerHour for Speed; also extended WindStatusJsonServlet to deliver statute miles per hour --- .../com/sap/sailing/domain/common/AbstractSpeedImpl.java | 5 +++++ .../src/com/sap/sailing/domain/common/Mile.java | 1 + .../src/com/sap/sailing/domain/common/Speed.java | 7 +++++++ .../sailing/server/gateway/impl/WindStatusJsonServlet.java | 4 ++++ 4 files changed, 17 insertions(+) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractSpeedImpl.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractSpeedImpl.java index a7dbc6751ed..90b3c7e5116 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractSpeedImpl.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractSpeedImpl.java @@ -33,6 +33,11 @@ public abstract class AbstractSpeedImpl implements Speed { public double getKilometersPerHour() { return getKnots() * Mile.METERS_PER_SEA_MILE / 1000; } + + @Override + public double getStatuteMilesPerHour() { + return getMetersPerSecond() * 2.2369; + } @Override public int compareTo(Speed speed) { diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Mile.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Mile.java index 1061de07dce..8cc6c183b4a 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Mile.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Mile.java @@ -4,4 +4,5 @@ public interface Mile { static double METERS_PER_SEA_MILE = 1852.3; static double METERS_PER_NAUTICAL_MILE = 1852; static double METERS_PER_GEOGRAPHICAL_MILE = 400080. / 216. /* = 40008000/360/60 */; + static double METERS_PER_STATUTE_MILE = 1609.344; } diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java index 4bc8528d1c4..79942866a89 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java @@ -56,6 +56,11 @@ public interface Speed extends Comparable, Serializable { public String toString() { return "0kn"; } + + @Override + public double getStatuteMilesPerHour() { + return 0; + } }; @Statistic(messageKey="", resultDecimals=2, resultUnit=Unit.Knots) @@ -66,6 +71,8 @@ public interface Speed extends Comparable, Serializable { double getKilometersPerHour(); double getBeaufort(); + + double getStatuteMilesPerHour(); /** * Traveling at this speed starting at time from until time to, how far have we traveled? diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusJsonServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusJsonServlet.java index e2f092179b8..856f1abb4b6 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusJsonServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/WindStatusJsonServlet.java @@ -71,6 +71,7 @@ public class WindStatusJsonServlet extends WindStatusServlet implements IgtimiWi windFix.put("windFromInDegrees", message.getWind().getFrom().getDegrees()); windFix.put("windToInDegrees", message.getWind().getFrom().reverse().getDegrees()); windFix.put("windSpeedInMetersPerSecond", message.getWind().getMetersPerSecond()); + windFix.put("windSpeedInStatuteMilesPerHour", message.getWind().getStatuteMilesPerHour()); windFix.put("windSpeedInKilometersPerHour", message.getWind().getKilometersPerHour()); windFix.put("windSpeedInKnots", message.getWind().getKnots()); windFix.put("measurementTimePointAsMillis", message.getWind().getTimePoint().asMillis()); @@ -95,6 +96,7 @@ public class WindStatusJsonServlet extends WindStatusServlet implements IgtimiWi put("windToInDegrees", 270.0); put("windSpeedInMetersPerSecond", 6.944444); put("windSpeedInKilometersPerHour", 25.0); + put("windSpeedInStatuteMilesPerHour", 15.43); put("windSpeedInKnots", 13.498920086); put("measurementTimePointAsMillis", MillisecondsTimePoint.now().minus(Duration.ONE_SECOND.times(4)).asMillis()); }}); @@ -106,6 +108,7 @@ public class WindStatusJsonServlet extends WindStatusServlet implements IgtimiWi put("windToInDegrees", 280.0); put("windSpeedInMetersPerSecond", 6.944444); put("windSpeedInKilometersPerHour", 25.0); + put("windSpeedInStatuteMilesPerHour", 15.43); put("windSpeedInKnots", 13.498920086); put("measurementTimePointAsMillis", MillisecondsTimePoint.now().minus(Duration.ONE_SECOND.times(5)).asMillis()); }}); @@ -117,6 +120,7 @@ public class WindStatusJsonServlet extends WindStatusServlet implements IgtimiWi put("windToInDegrees", 265.0); put("windSpeedInMetersPerSecond", 6.944444); put("windSpeedInKilometersPerHour", 25.0); + put("windSpeedInStatuteMilesPerHour", 15.43); put("windSpeedInKnots", 13.498920086); put("measurementTimePointAsMillis", MillisecondsTimePoint.now().minus(Duration.ONE_SECOND.times(6)).asMillis()); }}); From 3ed46076fb245f8f2ee4de8935048fdbb21b5c02 Mon Sep 17 00:00:00 2001 From: Simon Pamies Date: Thu, 17 Sep 2015 16:42:27 +0200 Subject: [PATCH 272/504] Added missing method to DummyWind --- .../com/sap/sailing/domain/tracking/impl/WindTrackImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/WindTrackImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/WindTrackImpl.java index 3cdcd290fb1..796f25602a5 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/WindTrackImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/WindTrackImpl.java @@ -389,6 +389,10 @@ public class WindTrackImpl extends TrackImpl implements WindTrack { public Speed projectTo(Position position, Bearing bearing) { return null; } + @Override + public double getStatuteMilesPerHour() { + return 0; + } } @Override From 4007ded1fd847556a1693a5772e4d07411453bd4 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 17 Sep 2015 16:42:47 +0200 Subject: [PATCH 273/504] Added SettingsType to ResultsPresenter --- .../sailing/gwt/ui/client/StringMessages.java | 5 ++ .../gwt/ui/client/StringMessages.properties | 7 +- .../ui/client/StringMessages_de.properties | 7 +- .../ui/client/StringMessages_ru.properties | 7 +- .../ui/datamining/DataMiningEntryPoint.java | 6 +- .../gwt/ui/datamining/ResultsPresenter.java | 7 +- .../ResultsPresenterWithControls.java | 4 +- .../execution/SimpleQueryRunner.java | 4 +- .../AbstractResultsPresenter.java | 15 ++++- ...ractResultsPresenterWithDataProviders.java | 3 +- .../presentation/MultiResultsPresenter.java | 62 +++++++++++++---- .../presentation/PlainResultsPresenter.java | 28 +++++++- .../datamining/presentation/ResultsChart.java | 28 +++++++- .../presentation/TabbedResultsPresenter.java | 66 ++++++++++++++----- .../ui/polarmining/PolarResultsPresenter.java | 27 +++++++- 15 files changed, 229 insertions(+), 47 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index f4c9656e825..4e68a360563 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1378,4 +1378,9 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String closeFullscreenView(); String analyze(); String dataMiningSettings(); + String multiResultsPresenter(); + String plainResultsPresenter(); + String resultsChart(); + String tabbedResultsPresenter(); + String polarResultsPresenter(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 63b22c9f2c3..ce5a4785f37 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1345,4 +1345,9 @@ shownDecimals=Shown Decimals openFullscreenView=Open fullscreen view closeFullscreenView=Close fullscreen view analyze=Analyze -dataMiningSettings=Data Mining Settings \ No newline at end of file +dataMiningSettings=Data Mining Settings +multiResultsPresenter=Multi Results Presenter +plainResultsPresenter=Plain Results Presenter +resultsChart=Results Chart +tabbedResultsPresenter=Tabbed Results Presenter +polarResultsPresenter=Polar Results Presenter \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 5ceb175a266..3a5e6c5b906 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1334,4 +1334,9 @@ shownDecimals=Angezeigte Nachkommastellen openFullscreenView=Vollbildansicht öffnen closeFullscreenView=Vollbildansicht schließen analyze=Untersuche -dataMiningSettings=Data Mining Einstellungen \ No newline at end of file +dataMiningSettings=Data Mining Einstellungen +multiResultsPresenter=Multi Ergebnis-Darsteller +plainResultsPresenter=Einfacher Ergebnis-Darsteller +resultsChart=Ergebnis-Diagramm +tabbedResultsPresenter=Tab Ergebnis-Darsteller +polarResultsPresenter=Polar Ergebnis-Darsteller \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 444cd584bbd..ef85e013cd4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1282,4 +1282,9 @@ shownDecimals=Shown Decimals openFullscreenView=Open fullscreen view closeFullscreenView=Close fullscreen view analyze=Analyze -dataMiningSettings=Data Mining Settings \ No newline at end of file +dataMiningSettings=Data Mining Settings +multiResultsPresenter=Multi Results Presenter +plainResultsPresenter=Plain Results Presenter +resultsChart=Results Chart +tabbedResultsPresenter=Tabbed Results Presenter +polarResultsPresenter=Polar Results Presenter \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java index cbdab4b6ab7..9bb2e821083 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java @@ -55,8 +55,8 @@ public class DataMiningEntryPoint extends AbstractSailingEntryPoint { queryDefinitionProviderWithControls.getEntryWidget().addStyleName("dataMiningPanel"); selectionDockPanel.add(queryDefinitionProviderWithControls.getEntryWidget()); - ResultsPresenter resultsPresenter = new TabbedResultsPresenter(getStringMessages()); - splitPanel.addSouth(resultsPresenter.getWidget(), 350); + final ResultsPresenter resultsPresenter = new TabbedResultsPresenter(getStringMessages()); + splitPanel.addSouth(resultsPresenter.getEntryWidget(), 350); splitPanel.add(selectionDockPanel); @@ -71,8 +71,8 @@ public class DataMiningEntryPoint extends AbstractSailingEntryPoint { public void onClick(ClickEvent event) { Collection> components = new HashSet<>(); components.add(queryRunner); + components.add(resultsPresenter); new CompositeTabbedSettingsDialog(getStringMessages(), components, getStringMessages().dataMiningSettings()).show(); -// new SettingsDialog(queryRunner, getStringMessages()).show(); } }); queryDefinitionProviderWithControls.addControl(settingsAnchor); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenter.java index 972a57c4937..0ca09699251 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenter.java @@ -1,12 +1,11 @@ package com.sap.sailing.gwt.ui.datamining; -import com.google.gwt.user.client.ui.Widget; +import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; +import com.sap.sse.gwt.client.shared.components.Component; -public interface ResultsPresenter { +public interface ResultsPresenter extends Component { - public Widget getWidget(); - public QueryResultDTO getCurrentResult(); public void showResult(QueryResultDTO result); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenterWithControls.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenterWithControls.java index 8c93975de0f..29271d05dc2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenterWithControls.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenterWithControls.java @@ -1,5 +1,7 @@ package com.sap.sailing.gwt.ui.datamining; -public interface ResultsPresenterWithControls extends ResultsPresenter, WithControls { +import com.sap.sse.common.settings.Settings; + +public interface ResultsPresenterWithControls extends ResultsPresenter, WithControls { } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/execution/SimpleQueryRunner.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/execution/SimpleQueryRunner.java index b53c8aeb0ec..5d50f51a5fe 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/execution/SimpleQueryRunner.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/execution/SimpleQueryRunner.java @@ -28,12 +28,12 @@ public class SimpleQueryRunner implements QueryRunner { private QueryRunnerSettings settings; private final QueryDefinitionProvider queryDefinitionProvider; - private final ResultsPresenter resultsPresenter; + private final ResultsPresenter resultsPresenter; private final Button runButton; public SimpleQueryRunner(DataMiningSession session, StringMessages stringMessages, DataMiningServiceAsync dataMiningService, ErrorReporter errorReporter, QueryDefinitionProvider queryDefinitionProvider, - ResultsPresenter resultsPresenter) { + ResultsPresenter resultsPresenter) { this.session = session; this.stringMessages = stringMessages; this.dataMiningService = dataMiningService; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java index b244f89447d..e00b77ab3be 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java @@ -15,9 +15,10 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.controls.AbstractObjectRenderer; import com.sap.sailing.gwt.ui.datamining.ResultsPresenterWithControls; +import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; -public abstract class AbstractResultsPresenter implements ResultsPresenterWithControls { +public abstract class AbstractResultsPresenter implements ResultsPresenterWithControls { private enum ResultsPresenterState { BUSY, ERROR, RESULT } @@ -153,8 +154,18 @@ public abstract class AbstractResultsPresenter implements ResultsPre } @Override - public Widget getWidget() { + public Widget getEntryWidget() { return mainPanel; } + @Override + public boolean isVisible() { + return mainPanel.isVisible(); + } + + @Override + public void setVisible(boolean visibility) { + mainPanel.setVisible(visibility); + } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenterWithDataProviders.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenterWithDataProviders.java index 1521963cc85..e837e10d40f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenterWithDataProviders.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenterWithDataProviders.java @@ -12,10 +12,11 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.datamining.presentation.dataproviders.AbstractResultDataProvider; import com.sap.sailing.gwt.ui.datamining.presentation.dataproviders.DistanceDataProvider; import com.sap.sailing.gwt.ui.datamining.presentation.dataproviders.NumberDataProvider; +import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; -public abstract class AbstractResultsPresenterWithDataProviders extends AbstractResultsPresenter { +public abstract class AbstractResultsPresenterWithDataProviders extends AbstractResultsPresenter { private final NumberDataProvider numberDataProvider; private final Map> dataProviders; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/MultiResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/MultiResultsPresenter.java index ccf7215e465..79e88036e35 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/MultiResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/MultiResultsPresenter.java @@ -16,16 +16,18 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.controls.AbstractObjectRenderer; import com.sap.sailing.gwt.ui.datamining.ResultsPresenter; import com.sap.sailing.gwt.ui.datamining.ResultsPresenterWithControls; +import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; -public class MultiResultsPresenter implements ResultsPresenter { +public class MultiResultsPresenter implements ResultsPresenter { private final StringMessages stringMessages; private final DeckLayoutPanel presenterPanel; private final HorizontalPanel controlsPanel; private final ValueListBox> presentersListBox; - private ResultsPresenter currentPresenter; + private ResultsPresenter currentPresenter; private List> availableDescriptors; @@ -59,12 +61,12 @@ public class MultiResultsPresenter implements ResultsPresenter { setCurrentPresenter(availableDescriptors.get(0).getPresenter()); } - private void setCurrentPresenter(ResultsPresenterWithControls presenter) { + private void setCurrentPresenter(ResultsPresenterWithControls presenter) { controlsPanel.removeFromParent(); presenter.addControl(controlsPanel); currentPresenter = presenter; - presenterPanel.setWidget(currentPresenter.getWidget()); + presenterPanel.setWidget(currentPresenter.getEntryWidget()); Scheduler.get().scheduleDeferred(new ScheduledCommand() { @Override public void execute() { @@ -73,11 +75,6 @@ public class MultiResultsPresenter implements ResultsPresenter { }); } - @Override - public Widget getWidget() { - return presenterPanel; - } - @Override public QueryResultDTO getCurrentResult() { return currentPresenter.getCurrentResult(); @@ -111,17 +108,56 @@ public class MultiResultsPresenter implements ResultsPresenter { } } + @Override + public String getLocalizedShortName() { + return stringMessages.multiResultsPresenter(); + } + + @Override + public Widget getEntryWidget() { + return presenterPanel; + } + + @Override + public boolean isVisible() { + return presenterPanel.isVisible(); + } + + @Override + public void setVisible(boolean visibility) { + presenterPanel.setVisible(visibility); + } + + @Override + public boolean hasSettings() { + return false; + } + + @Override + public SettingsDialogComponent getSettingsDialogComponent() { + return null; + } + + @Override + public void updateSettings(Settings newSettings) { + } + + @Override + public String getDependentCssClassName() { + return "multiResultsPresenter"; + } + private interface Descriptor { public String getName(); - public ResultsPresenterWithControls getPresenter(); + public ResultsPresenterWithControls getPresenter(); } private class PlainDescriptor implements Descriptor { - private final AbstractResultsPresenter presenter; + private final AbstractResultsPresenter presenter; public PlainDescriptor() { presenter = new PlainResultsPresenter(stringMessages); @@ -133,7 +169,7 @@ public class MultiResultsPresenter implements ResultsPresenter { } @Override - public AbstractResultsPresenter getPresenter() { + public AbstractResultsPresenter getPresenter() { return presenter; } @@ -153,7 +189,7 @@ public class MultiResultsPresenter implements ResultsPresenter { } @Override - public AbstractResultsPresenter getPresenter() { + public AbstractResultsPresenter getPresenter() { return presenter; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainResultsPresenter.java index fd4bc9163e4..310e27258f8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainResultsPresenter.java @@ -9,10 +9,12 @@ import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; -public class PlainResultsPresenter extends AbstractResultsPresenterWithDataProviders { +public class PlainResultsPresenter extends AbstractResultsPresenterWithDataProviders { private final ScrollPanel scrollPanel; private final HTML resultsLabel; @@ -51,5 +53,29 @@ public class PlainResultsPresenter extends AbstractResultsPresenterWithDataProvi protected Widget getPresentationWidget() { return scrollPanel; } + + @Override + public String getLocalizedShortName() { + return getStringMessages().plainResultsPresenter(); + } + + @Override + public boolean hasSettings() { + return false; + } + + @Override + public SettingsDialogComponent getSettingsDialogComponent() { + return null; + } + + @Override + public void updateSettings(Settings newSettings) { + } + + @Override + public String getDependentCssClassName() { + return "plainResultsPresenter"; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/ResultsChart.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/ResultsChart.java index 8ba4e8797f2..d9512c56a31 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/ResultsChart.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/ResultsChart.java @@ -34,10 +34,12 @@ import com.google.gwt.user.client.ui.ValueListBox; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.controls.SimpleObjectRenderer; +import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.impl.GenericGroupKey; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; -public class ResultsChart extends AbstractResultsPresenterWithDataProviders { +public class ResultsChart extends AbstractResultsPresenterWithDataProviders { private final Comparator standardKeyComparator = new Comparator() { @Override @@ -282,4 +284,28 @@ public class ResultsChart extends AbstractResultsPresenterWithDataProviders { return chart; } + @Override + public String getLocalizedShortName() { + return getStringMessages().resultsChart(); + } + + @Override + public boolean hasSettings() { + return false; + } + + @Override + public SettingsDialogComponent getSettingsDialogComponent() { + return null; + } + + @Override + public void updateSettings(Settings newSettings) { + } + + @Override + public String getDependentCssClassName() { + return "resultsChart"; + } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java index 858ef1e000d..0bcf90601a0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java @@ -19,16 +19,18 @@ import com.sap.sailing.gwt.ui.client.shared.controls.ScrolledTabLayoutPanel; import com.sap.sailing.gwt.ui.datamining.DataMiningResources; import com.sap.sailing.gwt.ui.datamining.ResultsPresenter; import com.sap.sailing.gwt.ui.polarmining.PolarResultsPresenter; +import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; -public class TabbedResultsPresenter implements ResultsPresenter { +public class TabbedResultsPresenter implements ResultsPresenter { private static final DataMiningResources resources = GWT.create(DataMiningResources.class); private final StringMessages stringMessages; private final ScrolledTabLayoutPanel tabPanel; - private final Map> presentersMappedByHeader; + private final Map> presentersMappedByHeader; public TabbedResultsPresenter(StringMessages stringMessages) { this.stringMessages = stringMessages; @@ -58,11 +60,6 @@ public class TabbedResultsPresenter implements ResultsPresenter { }); } - @Override - public Widget getWidget() { - return tabPanel; - } - @Override public void showResult(QueryResultDTO result) { if (result.getResultType().equals("com.sap.sailing.polars.datamining.shared.PolarAggregation")) { @@ -99,7 +96,7 @@ public class TabbedResultsPresenter implements ResultsPresenter { } @Override - public QueryResultDTO getCurrentResult() { + public QueryResultDTO getCurrentResult() { return getSelectedPresenter().getCurrentResult(); } @@ -107,28 +104,28 @@ public class TabbedResultsPresenter implements ResultsPresenter { return (CloseableTabHeader) tabPanel.getTabWidget(tabPanel.getSelectedIndex()); } - private ResultsPresenter getSelectedPresenter() { + private ResultsPresenter getSelectedPresenter() { return presentersMappedByHeader.get(getSelectedHeader()); } private void addTabAndFocus() { CloseableTabHeader tabHeader = new CloseableTabHeader(); - ResultsPresenter tabPresenter = new MultiResultsPresenter(stringMessages); + ResultsPresenter tabPresenter = new MultiResultsPresenter(stringMessages); presentersMappedByHeader.put(tabHeader, tabPresenter); - tabPanel.insert(tabPresenter.getWidget(), tabHeader, tabPanel.getWidgetCount() - 1); - int presenterIndex = tabPanel.getWidgetIndex(tabPresenter.getWidget()); + tabPanel.insert(tabPresenter.getEntryWidget(), tabHeader, tabPanel.getWidgetCount() - 1); + int presenterIndex = tabPanel.getWidgetIndex(tabPresenter.getEntryWidget()); tabPanel.selectTab(presenterIndex); tabPanel.scrollToTab(presenterIndex); } private void addPolarTabAndFocus() { CloseableTabHeader tabHeader = new CloseableTabHeader(); - ResultsPresenter tabPresenter = new PolarResultsPresenter(stringMessages); + ResultsPresenter tabPresenter = new PolarResultsPresenter(stringMessages); presentersMappedByHeader.put(tabHeader, tabPresenter); - tabPanel.insert(tabPresenter.getWidget(), tabHeader, tabPanel.getWidgetCount() - 1); - int presenterIndex = tabPanel.getWidgetIndex(tabPresenter.getWidget()); + tabPanel.insert(tabPresenter.getEntryWidget(), tabHeader, tabPanel.getWidgetCount() - 1); + int presenterIndex = tabPanel.getWidgetIndex(tabPresenter.getEntryWidget()); tabPanel.selectTab(presenterIndex); tabPanel.scrollToTab(presenterIndex); } @@ -137,6 +134,45 @@ public class TabbedResultsPresenter implements ResultsPresenter { header.removeFromParent(); presentersMappedByHeader.remove(header); } + + @Override + public String getLocalizedShortName() { + return stringMessages.tabbedResultsPresenter(); + } + + @Override + public Widget getEntryWidget() { + return tabPanel; + } + + @Override + public boolean isVisible() { + return tabPanel.isVisible(); + } + + @Override + public void setVisible(boolean visibility) { + tabPanel.setVisible(visibility); + } + + @Override + public boolean hasSettings() { + return false; + } + + @Override + public SettingsDialogComponent getSettingsDialogComponent() { + return null; + } + + @Override + public void updateSettings(Settings newSettings) { + } + + @Override + public String getDependentCssClassName() { + return "tabbedResultsPresenters"; + } private class CloseableTabHeader extends HorizontalPanel { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java index 221e5830f04..ffa1941be99 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java @@ -18,11 +18,13 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.datamining.presentation.AbstractResultsPresenter; import com.sap.sailing.polars.datamining.shared.PolarAggregation; import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; +import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; -public class PolarResultsPresenter extends AbstractResultsPresenter { +public class PolarResultsPresenter extends AbstractResultsPresenter { private final Chart polarChart; private final SimpleLayoutPanel wrapperPanel; @@ -95,5 +97,28 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { timer.schedule(200); } + @Override + public String getLocalizedShortName() { + return getStringMessages().polarResultsPresenter(); + } + + @Override + public boolean hasSettings() { + return false; + } + + @Override + public SettingsDialogComponent getSettingsDialogComponent() { + return null; + } + + @Override + public void updateSettings(Settings newSettings) { + } + + @Override + public String getDependentCssClassName() { + return "polarResultsPresenter"; + } } From ac778357829470310bd385ae30c9595d21d1a166 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 17 Sep 2015 16:43:08 +0200 Subject: [PATCH 274/504] Added preparation for second histograms --- .../AbstractResultsPresenter.java | 2 +- .../ui/polarmining/PolarResultsPresenter.java | 115 ++++++++++++++++-- .../shared/PolarAggregationImpl.java | 7 ++ 3 files changed, 113 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java index b244f89447d..f88d0fc590b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java @@ -21,7 +21,7 @@ public abstract class AbstractResultsPresenter implements ResultsPre private enum ResultsPresenterState { BUSY, ERROR, RESULT } - private final StringMessages stringMessages; + protected final StringMessages stringMessages; private ResultsPresenterState state; private final DockLayoutPanel mainPanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java index 221e5830f04..c2a5846fb74 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java @@ -1,17 +1,30 @@ package com.sap.sailing.gwt.ui.polarmining; +import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import org.moxieapps.gwt.highcharts.client.AxisTitle; import org.moxieapps.gwt.highcharts.client.Chart; import org.moxieapps.gwt.highcharts.client.ChartSubtitle; import org.moxieapps.gwt.highcharts.client.ChartTitle; import org.moxieapps.gwt.highcharts.client.Exporting; +import org.moxieapps.gwt.highcharts.client.Legend; import org.moxieapps.gwt.highcharts.client.Series; +import org.moxieapps.gwt.highcharts.client.Series.Type; +import org.moxieapps.gwt.highcharts.client.events.SeriesHideEvent; +import org.moxieapps.gwt.highcharts.client.events.SeriesHideEventHandler; +import org.moxieapps.gwt.highcharts.client.events.SeriesShowEvent; +import org.moxieapps.gwt.highcharts.client.events.SeriesShowEventHandler; +import org.moxieapps.gwt.highcharts.client.labels.XAxisLabels; +import org.moxieapps.gwt.highcharts.client.plotOptions.AreaPlotOptions; import org.moxieapps.gwt.highcharts.client.plotOptions.LinePlotOptions; import org.moxieapps.gwt.highcharts.client.plotOptions.Marker; +import org.moxieapps.gwt.highcharts.client.plotOptions.SeriesPlotOptions; +import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.Timer; +import com.google.gwt.user.client.ui.DockLayoutPanel; import com.google.gwt.user.client.ui.SimpleLayoutPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -24,25 +37,99 @@ import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; public class PolarResultsPresenter extends AbstractResultsPresenter { + private final DockLayoutPanel dockLayoutPanel; + private final Chart polarChart; - private final SimpleLayoutPanel wrapperPanel; + private final SimpleLayoutPanel polarChartWrapperPanel; + + private final Chart dataCountHistogramChart; + private final SimpleLayoutPanel dataCountHistogramChartWrapperPanel; + + private final Map histogramSeriesForPolarSeries= new HashMap<>(); public PolarResultsPresenter(StringMessages stringMessages) { super(stringMessages); + polarChart = createPolarChart(); - wrapperPanel = new SimpleLayoutPanel() { + polarChartWrapperPanel = new SimpleLayoutPanel() { @Override public void onResize() { polarChart.setSizeToMatchContainer(); polarChart.redraw(); } }; - wrapperPanel.add(polarChart); + polarChartWrapperPanel.add(polarChart); + + dataCountHistogramChart = createDataCountHistogramChart(); + dataCountHistogramChartWrapperPanel = new SimpleLayoutPanel() { + @Override + public void onResize() { + dataCountHistogramChart.setSizeToMatchContainer(); + dataCountHistogramChart.redraw(); + } + }; + dataCountHistogramChartWrapperPanel.add(dataCountHistogramChart); + + dockLayoutPanel = new DockLayoutPanel(Unit.PCT); + dockLayoutPanel.addWest(polarChartWrapperPanel, 40); + dockLayoutPanel.addEast(dataCountHistogramChart, 60); + + setSeriesShowAndHideHandler(); + } + + private void setSeriesShowAndHideHandler() { + + SeriesPlotOptions seriesPlotOptions = new SeriesPlotOptions(); + seriesPlotOptions.setSeriesShowEventHandler(createSeriesShowEventHandler()); + seriesPlotOptions.setSeriesHideEventHandler(createSeriesHideEventHandler()); + polarChart.setSeriesPlotOptions(seriesPlotOptions ); + } + + private SeriesShowEventHandler createSeriesShowEventHandler() { + return new SeriesShowEventHandler() { + + @Override + public boolean onShow(SeriesShowEvent seriesShowEvent) { + String id = seriesShowEvent.getSeriesId(); + Series shownSeries = polarChart.getSeries(id); + Series histogramSeries = histogramSeriesForPolarSeries.get(shownSeries); + histogramSeries.setVisible(true, true); + return true; + } + }; + } + + private SeriesHideEventHandler createSeriesHideEventHandler() { + return new SeriesHideEventHandler() { + + @Override + public boolean onHide(SeriesHideEvent seriesHideEvent) { + String id = seriesHideEvent.getSeriesId(); + Series hiddenSeries = polarChart.getSeries(id); + Series histogramSeries = histogramSeriesForPolarSeries.get(hiddenSeries); + histogramSeries.setVisible(false, true); + return true; + } + }; + } + + private Chart createDataCountHistogramChart() { + Chart histogramChart = new Chart().setType(Type.AREA).setHeight100().setWidth100(); + histogramChart.setTitle(new ChartTitle().setText(""), new ChartSubtitle().setText("")); + histogramChart.getYAxis().setMin(0).setAxisTitle(new AxisTitle().setText(stringMessages.numberOfDataPoints())); + histogramChart.getXAxis().setLabels(new XAxisLabels().setRotation(-90f).setY(30)) + .setAxisTitle(new AxisTitle().setText(stringMessages.beatAngle())); + histogramChart.setAreaPlotOptions(new AreaPlotOptions().setLineColor("#666666") + .setLineWidth(1).setMarker(new Marker().setLineWidth(1).setLineColor("#666666"))); + histogramChart.setLegend(new Legend().setEnabled(false)); + histogramChart.setExporting(new Exporting().setEnabled(false)); + return histogramChart; } private Chart createPolarChart() { + LinePlotOptions linePlotOptions = new LinePlotOptions().setLineWidth(1).setMarker(new Marker().setEnabled(false)); Chart polarSheetChart = new Chart().setType(Series.Type.LINE) - .setLinePlotOptions(new LinePlotOptions().setLineWidth(1).setMarker(new Marker().setEnabled(false))) + .setLinePlotOptions(linePlotOptions) .setPolar(true).setHeight100().setWidth100(); polarSheetChart.setTitle(new ChartTitle().setText(""), new ChartSubtitle().setText("")); polarSheetChart.getYAxis().setMin(0); @@ -54,7 +141,7 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { @Override protected Widget getPresentationWidget() { - return wrapperPanel; + return dockLayoutPanel; } @Override @@ -73,15 +160,22 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { int[] countPerAngle = aggregation.getCountPerAngle(); PolarDataMiningSettings settings = aggregation.getSettings(); if (settings.getMinimumDataCountPerGraph() < count) { - Series series = polarChart.createSeries(); + Series polarSeries = polarChart.createSeries(); + Series histogramSeries = dataCountHistogramChart.createSeries(); for (int i = 0; i < 360; i++) { + int convertedAngle = i > 180 ? i - 360 : i; double speed = speedsPerAngle[i]; if (countPerAngle[i] >= settings.getMinimumDataCountPerAngle() && speed > 0) { - series.addPoint(i > 180 ? i - 360 : i, speed, false, false, false); - } + polarSeries.addPoint(convertedAngle, speed, false, false, false); + } + histogramSeries.addPoint(convertedAngle, countPerAngle[i]); } - series.setName(entry.getKey().asString()); - polarChart.addSeries(series, false, false); + polarSeries.setName(entry.getKey().asString()); + histogramSeries.setName(entry.getKey().asString()); + polarChart.addSeries(polarSeries, false, false); + histogramSeries.setVisible(false, false); + histogramSeriesForPolarSeries.put(polarSeries, histogramSeries); + dataCountHistogramChart.addSeries(histogramSeries); } } //Initially resize the chart. Otherwise it's too big. FIXME with a better solution @@ -90,6 +184,7 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { @Override public void run() { polarChart.setSizeToMatchContainer(); + dataCountHistogramChart.setSizeToMatchContainer(); } }; timer.schedule(200); diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java index 82438b7762f..db80080b7cd 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java @@ -7,6 +7,7 @@ public class PolarAggregationImpl implements PolarAggregation { private static final long serialVersionUID = 9177124509619315748L; private double[] sumSpeedsPerAngle = new double[360]; private int[] countPerAngle = new int[360]; + private int[][] histogramData; private int count = 0; private PolarDataMiningSettings settings; @@ -16,6 +17,10 @@ public class PolarAggregationImpl implements PolarAggregation { public PolarAggregationImpl(PolarDataMiningSettings polarDataMiningSettings) { this.settings = polarDataMiningSettings; + histogramData = new int[360][]; + for (int i = 0; i < 360; i++) { + histogramData[i] = new int[settings.getNumberOfHistogramColumns()]; + } } @Override @@ -27,6 +32,8 @@ public class PolarAggregationImpl implements PolarAggregation { } sumSpeedsPerAngle[angleDeg] += dataEntry.getBoatSpeed().getKnots(); countPerAngle[angleDeg]++; + // TODO add 1 to correct histogram column, for that we need to know min and max + //histogramData[angleDeg][] count++; } From e868531b06a5970b36e47ea707cb1a2a1a4e3203 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 17 Sep 2015 17:00:32 +0200 Subject: [PATCH 275/504] Removed ResultType from ResultsPresenter --- .../gwt/ui/datamining/DataMiningEntryPoint.java | 2 +- .../gwt/ui/datamining/ResultsPresenter.java | 4 ++-- .../datamining/ResultsPresenterWithControls.java | 2 +- .../datamining/execution/SimpleQueryRunner.java | 4 ++-- .../presentation/AbstractResultsPresenter.java | 10 +++++----- ...bstractResultsPresenterWithDataProviders.java | 4 ++-- .../presentation/MultiResultsPresenter.java | 16 ++++++++-------- .../presentation/TabbedResultsPresenter.java | 12 ++++++------ .../ui/polarmining/PolarResultsPresenter.java | 8 ++++---- 9 files changed, 31 insertions(+), 31 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java index 9bb2e821083..5fc7d7fd5b4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java @@ -55,7 +55,7 @@ public class DataMiningEntryPoint extends AbstractSailingEntryPoint { queryDefinitionProviderWithControls.getEntryWidget().addStyleName("dataMiningPanel"); selectionDockPanel.add(queryDefinitionProviderWithControls.getEntryWidget()); - final ResultsPresenter resultsPresenter = new TabbedResultsPresenter(getStringMessages()); + final ResultsPresenter resultsPresenter = new TabbedResultsPresenter(getStringMessages()); splitPanel.addSouth(resultsPresenter.getEntryWidget(), 350); splitPanel.add(selectionDockPanel); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenter.java index 0ca09699251..db342168586 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenter.java @@ -4,11 +4,11 @@ import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; import com.sap.sse.gwt.client.shared.components.Component; -public interface ResultsPresenter extends Component { +public interface ResultsPresenter extends Component { public QueryResultDTO getCurrentResult(); - public void showResult(QueryResultDTO result); + public void showResult(QueryResultDTO result); public void showError(String error); public void showError(String mainError, Iterable detailedErrors); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenterWithControls.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenterWithControls.java index 29271d05dc2..af447090134 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenterWithControls.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/ResultsPresenterWithControls.java @@ -2,6 +2,6 @@ package com.sap.sailing.gwt.ui.datamining; import com.sap.sse.common.settings.Settings; -public interface ResultsPresenterWithControls extends ResultsPresenter, WithControls { +public interface ResultsPresenterWithControls extends ResultsPresenter, WithControls { } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/execution/SimpleQueryRunner.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/execution/SimpleQueryRunner.java index 5d50f51a5fe..77c8d2f180c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/execution/SimpleQueryRunner.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/execution/SimpleQueryRunner.java @@ -28,12 +28,12 @@ public class SimpleQueryRunner implements QueryRunner { private QueryRunnerSettings settings; private final QueryDefinitionProvider queryDefinitionProvider; - private final ResultsPresenter resultsPresenter; + private final ResultsPresenter resultsPresenter; private final Button runButton; public SimpleQueryRunner(DataMiningSession session, StringMessages stringMessages, DataMiningServiceAsync dataMiningService, ErrorReporter errorReporter, QueryDefinitionProvider queryDefinitionProvider, - ResultsPresenter resultsPresenter) { + ResultsPresenter resultsPresenter) { this.session = session; this.stringMessages = stringMessages; this.dataMiningService = dataMiningService; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java index 9ed089f34a9..727653b0f8b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenter.java @@ -18,7 +18,7 @@ import com.sap.sailing.gwt.ui.datamining.ResultsPresenterWithControls; import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; -public abstract class AbstractResultsPresenter implements ResultsPresenterWithControls { +public abstract class AbstractResultsPresenter implements ResultsPresenterWithControls { private enum ResultsPresenterState { BUSY, ERROR, RESULT } @@ -33,7 +33,7 @@ public abstract class AbstractResultsPresenter currentResult; + private QueryResultDTO currentResult; public AbstractResultsPresenter(StringMessages stringMessages) { this.stringMessages = stringMessages; @@ -90,7 +90,7 @@ public abstract class AbstractResultsPresenter result) { + public void showResult(QueryResultDTO result) { if (result != null && !result.isEmpty()) { if (state != ResultsPresenterState.RESULT) { mainPanel.setWidgetHidden(controlsPanel, false); @@ -108,7 +108,7 @@ public abstract class AbstractResultsPresenter result); + abstract protected void internalShowResults(QueryResultDTO result); protected abstract Widget getPresentationWidget(); @@ -149,7 +149,7 @@ public abstract class AbstractResultsPresenter getCurrentResult() { + public QueryResultDTO getCurrentResult() { return currentResult; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenterWithDataProviders.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenterWithDataProviders.java index e837e10d40f..de416823558 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenterWithDataProviders.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/AbstractResultsPresenterWithDataProviders.java @@ -16,7 +16,7 @@ import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; -public abstract class AbstractResultsPresenterWithDataProviders extends AbstractResultsPresenter { +public abstract class AbstractResultsPresenterWithDataProviders extends AbstractResultsPresenter { private final NumberDataProvider numberDataProvider; private final Map> dataProviders; @@ -30,7 +30,7 @@ public abstract class AbstractResultsPresenterWithDataProviders result) { + protected void internalShowResults(QueryResultDTO result) { currentDataProvider = selectCurrentDataProvider(); updateDataSelectionListBox(); if (currentDataProvider != null) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/MultiResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/MultiResultsPresenter.java index 79e88036e35..d1b3844f803 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/MultiResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/MultiResultsPresenter.java @@ -20,14 +20,14 @@ import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; -public class MultiResultsPresenter implements ResultsPresenter { +public class MultiResultsPresenter implements ResultsPresenter { private final StringMessages stringMessages; private final DeckLayoutPanel presenterPanel; private final HorizontalPanel controlsPanel; private final ValueListBox> presentersListBox; - private ResultsPresenter currentPresenter; + private ResultsPresenter currentPresenter; private List> availableDescriptors; @@ -61,7 +61,7 @@ public class MultiResultsPresenter implements ResultsPresenter setCurrentPresenter(availableDescriptors.get(0).getPresenter()); } - private void setCurrentPresenter(ResultsPresenterWithControls presenter) { + private void setCurrentPresenter(ResultsPresenterWithControls presenter) { controlsPanel.removeFromParent(); presenter.addControl(controlsPanel); @@ -81,7 +81,7 @@ public class MultiResultsPresenter implements ResultsPresenter } @Override - public void showResult(QueryResultDTO result) { + public void showResult(QueryResultDTO result) { for (Descriptor descriptor : availableDescriptors) { descriptor.getPresenter().showResult(result); } @@ -151,13 +151,13 @@ public class MultiResultsPresenter implements ResultsPresenter public String getName(); - public ResultsPresenterWithControls getPresenter(); + public ResultsPresenterWithControls getPresenter(); } private class PlainDescriptor implements Descriptor { - private final AbstractResultsPresenter presenter; + private final AbstractResultsPresenter presenter; public PlainDescriptor() { presenter = new PlainResultsPresenter(stringMessages); @@ -169,7 +169,7 @@ public class MultiResultsPresenter implements ResultsPresenter } @Override - public AbstractResultsPresenter getPresenter() { + public AbstractResultsPresenter getPresenter() { return presenter; } @@ -189,7 +189,7 @@ public class MultiResultsPresenter implements ResultsPresenter } @Override - public AbstractResultsPresenter getPresenter() { + public AbstractResultsPresenter getPresenter() { return presenter; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java index 0bcf90601a0..c24e4fe0d7c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java @@ -23,14 +23,14 @@ import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; -public class TabbedResultsPresenter implements ResultsPresenter { +public class TabbedResultsPresenter implements ResultsPresenter { private static final DataMiningResources resources = GWT.create(DataMiningResources.class); private final StringMessages stringMessages; private final ScrolledTabLayoutPanel tabPanel; - private final Map> presentersMappedByHeader; + private final Map> presentersMappedByHeader; public TabbedResultsPresenter(StringMessages stringMessages) { this.stringMessages = stringMessages; @@ -61,7 +61,7 @@ public class TabbedResultsPresenter implements ResultsPresenter result) { + public void showResult(QueryResultDTO result) { if (result.getResultType().equals("com.sap.sailing.polars.datamining.shared.PolarAggregation")) { CloseableTabHeader oldHeader = getSelectedHeader(); addPolarTabAndFocus(); @@ -104,13 +104,13 @@ public class TabbedResultsPresenter implements ResultsPresenter getSelectedPresenter() { + private ResultsPresenter getSelectedPresenter() { return presentersMappedByHeader.get(getSelectedHeader()); } private void addTabAndFocus() { CloseableTabHeader tabHeader = new CloseableTabHeader(); - ResultsPresenter tabPresenter = new MultiResultsPresenter(stringMessages); + ResultsPresenter tabPresenter = new MultiResultsPresenter(stringMessages); presentersMappedByHeader.put(tabHeader, tabPresenter); tabPanel.insert(tabPresenter.getEntryWidget(), tabHeader, tabPanel.getWidgetCount() - 1); @@ -121,7 +121,7 @@ public class TabbedResultsPresenter implements ResultsPresenter tabPresenter = new PolarResultsPresenter(stringMessages); + ResultsPresenter tabPresenter = new PolarResultsPresenter(stringMessages); presentersMappedByHeader.put(tabHeader, tabPresenter); tabPanel.insert(tabPresenter.getEntryWidget(), tabHeader, tabPanel.getWidgetCount() - 1); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java index 1ccedcc1453..7e267ddcc23 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java @@ -37,7 +37,7 @@ import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; -public class PolarResultsPresenter extends AbstractResultsPresenter { +public class PolarResultsPresenter extends AbstractResultsPresenter { private final DockLayoutPanel dockLayoutPanel; @@ -153,9 +153,9 @@ public class PolarResultsPresenter extends AbstractResultsPresenter result) { - Map results = result.getResults(); - for (Entry entry : results.entrySet()) { + protected void internalShowResults(QueryResultDTO result) { + Map results = result.getResults(); + for (Entry entry : results.entrySet()) { PolarAggregation aggregation = (PolarAggregation) entry.getValue(); double[] speedsPerAngle = aggregation.getAverageSpeedsPerAngle(); int count = aggregation.getCount(); From 6a397258885d001f47e47a8f841a9d24e2780ea6 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 17 Sep 2015 17:00:45 +0200 Subject: [PATCH 276/504] Fixed gradle script had selfreference --- java/com.sap.sse.datamining.shared/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.datamining.shared/build.gradle b/java/com.sap.sse.datamining.shared/build.gradle index 26679215a67..beaa13299a6 100644 --- a/java/com.sap.sse.datamining.shared/build.gradle +++ b/java/com.sap.sse.datamining.shared/build.gradle @@ -8,6 +8,6 @@ sourceSets { dependencies { /* local dependencies */ - compile project(":java:com.sap.sse.datamining.shared") + compile project(":java:com.sap.sse.datamining.shared.annotations") compile project(":java:com.sap.sse.common") } From f8478a2f71639a0822843a3efd99f8bbba7bd24a Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 17 Sep 2015 17:08:17 +0200 Subject: [PATCH 277/504] added a first (still failing, obviously) test case for elimination scoring --- .../LeaderboardScoringAndRankingTest.java | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java index b09baba3584..8706c7723ce 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java @@ -669,6 +669,57 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { assertTrue(rankedCompetitors.indexOf(c[0]) == rankedCompetitors.indexOf(c[1])-1); } + @Test + public void testBasicElminationScoringScheme() throws NoWindException { + Regatta regatta = createRegattaWithEliminations(1, new int[] { 8, 4, 2, 2 }, "testBasicElminationScoringScheme", + DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT)); + Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[0]); + Competitor[] c = createCompetitors(64).toArray(new Competitor[64]); + // first round with 64 competitors, eight per heat: + Competitor[][] competitorsForHeatsInRound1 = new Competitor[8][]; + TimePoint later = null; + for (int heat=0; heat<8; heat++) { + competitorsForHeatsInRound1[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + competitorsForHeatsInRound1[heat][i] = c[8*heat+i]; + } + later = createAndAttachTrackedRaces(series.get(0), "Heat "+(heat+1), competitorsForHeatsInRound1[heat]); + } + // quarter-finals has promoted top four competitors of first round in heats with eight competitors each: + Competitor[][] competitorsForHeatsInQuarterFinals = new Competitor[4][]; + for (int heat=0; heat<4; heat++) { + competitorsForHeatsInQuarterFinals[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + competitorsForHeatsInQuarterFinals[heat][i] = c[8*(2*heat+(i/4))+(i%4)]; + } + later = createAndAttachTrackedRaces(series.get(1), "Heat "+(heat+9), competitorsForHeatsInQuarterFinals[heat]); + } + // semi-finals has promoted top four competitors of quarter finals which are the top four of each other first-round heat: + Competitor[][] competitorsForHeatsInSemiFinals = new Competitor[2][]; + for (int heat=0; heat<2; heat++) { + competitorsForHeatsInSemiFinals[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + competitorsForHeatsInSemiFinals[heat][i] = c[8*(4*heat+2*(i/4))+(i%4)]; + } + later = createAndAttachTrackedRaces(series.get(2), "Heat "+(heat+13), competitorsForHeatsInSemiFinals[heat]); + } + // finals has promoted top four competitors of semi finals which are the top four of first and fifth first-round heats + // for the final, and the top four of the first round's third and seventh heat + Competitor[][] competitorsForHeatsInFinals = new Competitor[2][]; + for (int heat=0; heat<2; heat++) { + competitorsForHeatsInFinals[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + competitorsForHeatsInFinals[heat][i] = c[8*(2*heat+4*(i/4))+(i%4)]; + } + later = createAndAttachTrackedRaces(series.get(3), "Heat "+(heat+15), competitorsForHeatsInFinals[heat]); + } + List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); + assertSame(c[0], rankedCompetitors.get(0)); // should be the winner of the final round's Final heat and take the "crown" for the elimination + assertSame(c[1], rankedCompetitors.get(1)); // should be the winner of the final round's Final heat and take the "crown" for the elimination + assertEquals(0.7, leaderboard.getTotalPoints(c[0], later), 0.000000001); + assertEquals(2, leaderboard.getTotalPoints(c[1], later), 0.000000001); + } + @Test public void testScoringConsideringNotAllRaces() throws NoWindException { // one discard at four races @@ -1363,6 +1414,52 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { return regatta; } + private Regatta createRegattaWithEliminations(final int numberOfEliminations, final int[] numbersOfHeatsPerRound, + final String regattaBaseName, BoatClass boatClass, ScoringScheme scoringScheme) { + series = new ArrayList(); + // example for numbersOfHeatsPerRound: [8, 4, 2, 2] + int heatNumber = 1; + for (int elimination=1; elimination<=numberOfEliminations; elimination++) { + // create one elimination consisting of a number of rounds, each consisting of a number of heats + int roundNumber = 1; + for (int numberOfHeatsPerRound : numbersOfHeatsPerRound) { + final boolean isFinalRound = roundNumber == numbersOfHeatsPerRound.length; + // create one round as a series that has one fleet per heat + List fleetsInRound = new ArrayList(); + for (int heatInRound=1; heatInRound<=numberOfHeatsPerRound; heatInRound++) { + final int ordering = numbersOfHeatsPerRound.length-roundNumber+1+ + // in final round distinguish Final and Losers Final + (isFinalRound ? heatInRound-1 : 1); + fleetsInRound.add(new FleetImpl("Heat "+(heatNumber++), ordering)); + } + List raceColumnNameForRound = new ArrayList(); + raceColumnNameForRound.add("E"+elimination+"R"+roundNumber); + final String roundName; + if (numbersOfHeatsPerRound.length-roundNumber == 2) { + roundName = "Quarter-Final"; + } else if (numbersOfHeatsPerRound.length-roundNumber == 1) { + roundName = "Semi-Final"; + } else if (numbersOfHeatsPerRound.length-roundNumber == 0) { + roundName = "Final"; + } else { + roundName = "Round "+roundNumber; + } + Series seriesForRound = new SeriesImpl("E"+elimination+" "+roundName, /* isMedal */ false, fleetsInRound, + raceColumnNameForRound, /* trackedRegattaRegistry */null); + if (isFinalRound) { + // last "Final" round; here, the fleets are contiguously scored + seriesForRound.setSplitFleetContiguousScoring(true); + } + series.add(seriesForRound); + roundNumber++; + } + } + Regatta regatta = new RegattaImpl(RegattaImpl.getDefaultName(regattaBaseName, boatClass.getName()), boatClass, + /*startDate*/ null, /*endDate*/ null, series, /* persistent */ false, scoringScheme, + /* ID */ "123", /* course area */ null, OneDesignRankingMetric::new); + return regatta; + } + /** * See bug 1260. There must be a possibility to have ordered fleets that are scored such that the winner of the race of the best fleet * gets the best score in that column; and the winner of the second-best fleet gets the n-th best score in the column with n being the From c8d1d3f25b18fadc1173b636f4bdb21c8a9cbb6f Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 17 Sep 2015 17:13:20 +0200 Subject: [PATCH 278/504] Fixed naming error and added project to gradle settings --- java/com.sap.sse.datamining.shared/build.gradle | 2 +- settings.gradle | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sse.datamining.shared/build.gradle b/java/com.sap.sse.datamining.shared/build.gradle index beaa13299a6..a1b65954e11 100644 --- a/java/com.sap.sse.datamining.shared/build.gradle +++ b/java/com.sap.sse.datamining.shared/build.gradle @@ -8,6 +8,6 @@ sourceSets { dependencies { /* local dependencies */ - compile project(":java:com.sap.sse.datamining.shared.annotations") + compile project(":java:com.sap.sse.datamining.annotations") compile project(":java:com.sap.sse.common") } diff --git a/settings.gradle b/settings.gradle index ac2ef5a2e54..109592d12da 100644 --- a/settings.gradle +++ b/settings.gradle @@ -5,6 +5,7 @@ include ":java:com.sap.sailing.server.gateway.serialization.shared.android" include ":java:com.sap.sse.common" include ":java:com.sap.sse.security.common" include ":java:com.sap.sse.datamining.shared" +include ":java:com.sap.sse.datamining.annotations" include ":java:com.sap.sse.shared.android" include ":java:org.json.simple" From 9073f39a873c49cbd60aba5fe5b298fac9f5e824 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 17 Sep 2015 17:20:18 +0200 Subject: [PATCH 279/504] CompositeSettingsDialogComponent accepts now Components that don't have settings --- .../sailing/gwt/ui/datamining/DataMiningEntryPoint.java | 2 +- .../components/CompositeSettingsDialogComponent.java | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java index 5fc7d7fd5b4..797ca7ff269 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java @@ -72,7 +72,7 @@ public class DataMiningEntryPoint extends AbstractSailingEntryPoint { Collection> components = new HashSet<>(); components.add(queryRunner); components.add(resultsPresenter); - new CompositeTabbedSettingsDialog(getStringMessages(), components, getStringMessages().dataMiningSettings()).show(); + new CompositeTabbedSettingsDialog(getStringMessages(), components, getStringMessages().dataMining()).show(); } }); queryDefinitionProviderWithControls.addControl(settingsAnchor); diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsDialogComponent.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsDialogComponent.java index 7db40f04b2a..7d5f7f266d2 100755 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsDialogComponent.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsDialogComponent.java @@ -15,11 +15,16 @@ import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSe public class CompositeSettingsDialogComponent implements SettingsDialogComponent { - private final Iterable> components; + private final Collection> components; private final Map, SettingsDialogComponent> dialogComponents; public CompositeSettingsDialogComponent(Iterable> components) { - this.components = components; + this.components = new HashSet<>(); + for (Component component : components) { + if (component.hasSettings()) { + this.components.add(component); + } + } dialogComponents = new HashMap<>(); } From 082d3338301341cbb4dd5ccb79224607fa91662b Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 17 Sep 2015 17:22:40 +0200 Subject: [PATCH 280/504] datamining.shared was replaced by datamining.annotations for android dependencies --- java/com.sap.sailing.domain.common/build.gradle | 2 +- .../build.gradle | 2 +- java/com.sap.sse.common/build.gradle | 2 +- java/com.sap.sse.datamining.shared/build.gradle | 13 ------------- settings.gradle | 1 - 5 files changed, 3 insertions(+), 17 deletions(-) delete mode 100644 java/com.sap.sse.datamining.shared/build.gradle diff --git a/java/com.sap.sailing.domain.common/build.gradle b/java/com.sap.sailing.domain.common/build.gradle index 15527d8ed39..0c00487d4a6 100644 --- a/java/com.sap.sailing.domain.common/build.gradle +++ b/java/com.sap.sailing.domain.common/build.gradle @@ -10,5 +10,5 @@ dependencies { /* local dependencies */ compile project(":java:com.sap.sse.common") compile project(":java:com.sap.sse.security.common") - compile project(":java:com.sap.sse.datamining.shared") + compile project(":java:com.sap.sse.datamining.annotations") } diff --git a/java/com.sap.sailing.domain.shared.android/build.gradle b/java/com.sap.sailing.domain.shared.android/build.gradle index b75064f8383..2e51d9cecaf 100644 --- a/java/com.sap.sailing.domain.shared.android/build.gradle +++ b/java/com.sap.sailing.domain.shared.android/build.gradle @@ -10,6 +10,6 @@ dependencies { /* local dependencies */ compile project(":java:com.sap.sailing.domain.common") compile project(":java:com.sap.sse.common") - compile project(":java:com.sap.sse.datamining.shared") + compile project(":java:com.sap.sse.datamining.annotations") compile project(":java:com.sap.sse.shared.android") } diff --git a/java/com.sap.sse.common/build.gradle b/java/com.sap.sse.common/build.gradle index f7ab0d43848..e724f61f6ff 100644 --- a/java/com.sap.sse.common/build.gradle +++ b/java/com.sap.sse.common/build.gradle @@ -9,5 +9,5 @@ sourceSets { dependencies { /* local dependencies */ compile project(":java:org.json.simple") - compile project(":java:com.sap.sse.datamining.shared") + compile project(":java:com.sap.sse.datamining.annotations") } diff --git a/java/com.sap.sse.datamining.shared/build.gradle b/java/com.sap.sse.datamining.shared/build.gradle deleted file mode 100644 index a1b65954e11..00000000000 --- a/java/com.sap.sse.datamining.shared/build.gradle +++ /dev/null @@ -1,13 +0,0 @@ -apply plugin: "java" - -sourceSets { - main { - java.srcDirs = ["src"] - } -} - -dependencies { - /* local dependencies */ - compile project(":java:com.sap.sse.datamining.annotations") - compile project(":java:com.sap.sse.common") -} diff --git a/settings.gradle b/settings.gradle index 109592d12da..68c57c9d121 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,7 +4,6 @@ include ":java:com.sap.sailing.domain.shared.android" include ":java:com.sap.sailing.server.gateway.serialization.shared.android" include ":java:com.sap.sse.common" include ":java:com.sap.sse.security.common" -include ":java:com.sap.sse.datamining.shared" include ":java:com.sap.sse.datamining.annotations" include ":java:com.sap.sse.shared.android" include ":java:org.json.simple" From 67c823bba0796eae6e86ad35c3c67b514f318129 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 17 Sep 2015 17:27:00 +0200 Subject: [PATCH 281/504] Extracted a class for CompositeSettingsComponent --- .../CompositeSettingsComponent.java | 91 +++++++++++++++++++ .../CompositeTabbedSettingsDialog.java | 70 +------------- 2 files changed, 92 insertions(+), 69 deletions(-) create mode 100644 java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsComponent.java diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsComponent.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsComponent.java new file mode 100644 index 00000000000..d3cb3aadcec --- /dev/null +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsComponent.java @@ -0,0 +1,91 @@ +package com.sap.sse.gwt.client.shared.components; + +import com.google.gwt.user.client.ui.Widget; +import com.sap.sse.common.settings.Settings; +import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair; + +/** + * A component, that contains a collection of settings components in a tabbed panel. + * + * @author Axel Uhl (d043530), Lennart Hensler (D054527) + */ +public class CompositeSettingsComponent implements Component { + + private final Iterable> components; + private final String title; + + public CompositeSettingsComponent(Iterable> components) { + this(components, null); + } + + public CompositeSettingsComponent(Iterable> components, String title) { + this.components = components; + this.title = title; + } + + @Override + public boolean hasSettings() { + for (Component component : components) { + if (component.hasSettings()) { + return true; + } + } + return false; + } + + @Override + public SettingsDialogComponent getSettingsDialogComponent() { + return new CompositeSettingsDialogComponent(components); + } + + @Override + public void updateSettings(CompositeSettings newSettings) { + for (CompositeSettings.ComponentAndSettingsPair componentAndSettings : newSettings.getSettingsPerComponent()) { + updateSettings(componentAndSettings); + } + } + + private void updateSettings(ComponentAndSettingsPair componentAndSettings) { + componentAndSettings.getA().updateSettings(componentAndSettings.getB()); + } + + @Override + public String getLocalizedShortName() { + if (title != null && !title.isEmpty()) { + return title; + } else { + StringBuilder result = new StringBuilder(); + boolean first = true; + for (Component component : components) { + if (first) { + first = false; + } else { + result.append(" / "); + } + result.append(component.getLocalizedShortName()); + } + return result.toString(); + } + } + + @Override + public Widget getEntryWidget() { + throw new RuntimeException("Virtual composite component doesn't have a widget of its own"); + } + + @Override + public boolean isVisible() { + return false; + } + + @Override + public void setVisible(boolean visibility) { + throw new RuntimeException("Virtual composite component doesn't know how to make itself visible"); + } + + @Override + public String getDependentCssClassName() { + return null; + } + +} \ No newline at end of file diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialog.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialog.java index 8710010e1dc..1db4e9bcc1f 100755 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialog.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialog.java @@ -1,9 +1,6 @@ package com.sap.sse.gwt.client.shared.components; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sse.common.settings.Settings; import com.sap.sse.gwt.client.StringMessages; -import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair; /** * A composite settings dialog that combines the settings of several {@link Component}s, providing a tab @@ -19,72 +16,7 @@ public class CompositeTabbedSettingsDialog extends SettingsDialog> components, final String title) { - super(new Component() { - @Override - public boolean hasSettings() { - for (Component component : components) { - if (component.hasSettings()) { - return true; - } - } - return false; - } - - @Override - public SettingsDialogComponent getSettingsDialogComponent() { - return new CompositeSettingsDialogComponent(components); - } - - @Override - public void updateSettings(CompositeSettings newSettings) { - for (CompositeSettings.ComponentAndSettingsPair componentAndSettings : newSettings.getSettingsPerComponent()) { - updateSettings(componentAndSettings); - } - } - - private void updateSettings(ComponentAndSettingsPair componentAndSettings) { - componentAndSettings.getA().updateSettings(componentAndSettings.getB()); - } - - @Override - public String getLocalizedShortName() { - if (title != null && !title.isEmpty()) { - return title; - } else { - StringBuilder result = new StringBuilder(); - boolean first = true; - for (Component component : components) { - if (first) { - first = false; - } else { - result.append(" / "); - } - result.append(component.getLocalizedShortName()); - } - return result.toString(); - } - } - - @Override - public Widget getEntryWidget() { - throw new RuntimeException("Virtual composite component doesn't have a widget of its own"); - } - - @Override - public boolean isVisible() { - return false; - } - - @Override - public void setVisible(boolean visibility) { - throw new RuntimeException("Virtual composite component doesn't know how to make itself visible"); - } - - @Override - public String getDependentCssClassName() { - return null; - } - }, stringConstants); + super(new CompositeSettingsComponent(components, title), stringConstants); } } From 6def01ac640d13597142e0eb31e5392f8b010252 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 17 Sep 2015 22:00:01 +0200 Subject: [PATCH 282/504] implemented LowPointWithEliminationsAndRoundsWinnerGets07 scoring scheme; first tests look good --- .../LeaderboardScoringAndRankingTest.java | 7 +- .../domain/leaderboard/ScoringScheme.java | 3 +- .../domain/leaderboard/impl/HighPoint.java | 2 +- .../HighPointExtremeSailingSeriesOverall.java | 2 +- ...ghPointFirstGets10Or8AndLastBreaksTie.java | 5 +- .../impl/HighPointFirstGetsFixedScore.java | 3 +- ...hPointWinnerGetsEightAndInterpolation.java | 3 +- .../domain/leaderboard/impl/LowPoint.java | 17 +- .../impl/LowPointWinnerGetsZero.java | 3 +- ...WithEliminationsAndRoundsWinnerGets07.java | 161 ++++++++++++++++-- .../leaderboard/impl/ScoreCorrectionImpl.java | 4 +- .../server/impl/RaceLogScoringReplicator.java | 2 +- 12 files changed, 178 insertions(+), 34 deletions(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java index 8706c7723ce..64817680608 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java @@ -672,7 +672,8 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { @Test public void testBasicElminationScoringScheme() throws NoWindException { Regatta regatta = createRegattaWithEliminations(1, new int[] { 8, 4, 2, 2 }, "testBasicElminationScoringScheme", - DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT)); + DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), + DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT_WITH_ELIMINATIONS_AND_ROUNDS_WINNER_GETS_07)); Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[0]); Competitor[] c = createCompetitors(64).toArray(new Competitor[64]); // first round with 64 competitors, eight per heat: @@ -715,11 +716,13 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { } List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); assertSame(c[0], rankedCompetitors.get(0)); // should be the winner of the final round's Final heat and take the "crown" for the elimination - assertSame(c[1], rankedCompetitors.get(1)); // should be the winner of the final round's Final heat and take the "crown" for the elimination assertEquals(0.7, leaderboard.getTotalPoints(c[0], later), 0.000000001); + assertSame(c[1], rankedCompetitors.get(1)); // should be the winner of the final round's Final heat and take the "crown" for the elimination assertEquals(2, leaderboard.getTotalPoints(c[1], later), 0.000000001); } + // TODO add test case for multi-elimination case, testing that the races from the next elimination do not influence whether a competitor gets a score in the previous elimination + @Test public void testScoringConsideringNotAllRaces() throws NoWindException { // one discard at four races diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoringScheme.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoringScheme.java index ac3ea9608ca..a9b5cd73032 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoringScheme.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/ScoringScheme.java @@ -50,10 +50,11 @@ public interface ScoringScheme extends Serializable { * If the competitor has no {@link RaceColumn#getTrackedRace(Competitor) tracked race} in the column in which * the competitor participated, null is returned, meaning the competitor has no score assigned for that * race. + * @param timePoint TODO */ Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, - NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher); + NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher, TimePoint timePoint); /** * If a competitor is disqualified, a penalty score is attributed by this scoring scheme. Some schemes require to diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java index 011075a564c..9fdc7dd0629 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java @@ -29,7 +29,7 @@ public class HighPoint extends AbstractScoringSchemeImpl { @Override public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, - Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher, TimePoint timePoint) { Double result; if (rank == 0) { result = null; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointExtremeSailingSeriesOverall.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointExtremeSailingSeriesOverall.java index 763c6774bee..3474fe84072 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointExtremeSailingSeriesOverall.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointExtremeSailingSeriesOverall.java @@ -37,7 +37,7 @@ public class HighPointExtremeSailingSeriesOverall extends HighPoint { @Override public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, - int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher, TimePoint timePoint) { Double result; if (rank == 0) { result = null; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGets10Or8AndLastBreaksTie.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGets10Or8AndLastBreaksTie.java index 1b42856fe24..0ddf9dc3a0c 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGets10Or8AndLastBreaksTie.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGets10Or8AndLastBreaksTie.java @@ -13,6 +13,7 @@ import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.ScoringSchemeType; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; +import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; /** @@ -88,8 +89,8 @@ public class HighPointFirstGets10Or8AndLastBreaksTie extends HighPointFirstGetsF } @Override - public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { - Double effectiveScore = super.getScoreForRank(leaderboard, raceColumn, competitor, rank, numberOfCompetitorsInRaceFetcher, numberOfCompetitorsInLeaderboardFetcher); + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher, TimePoint timePoint) { + Double effectiveScore = super.getScoreForRank(leaderboard, raceColumn, competitor, rank, numberOfCompetitorsInRaceFetcher, numberOfCompetitorsInLeaderboardFetcher, timePoint); return checkForOverwrittenScore(raceColumn, rank, effectiveScore); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGetsFixedScore.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGetsFixedScore.java index fc396010139..e3b2c994bb5 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGetsFixedScore.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointFirstGetsFixedScore.java @@ -7,6 +7,7 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; +import com.sap.sse.common.TimePoint; /** @@ -42,7 +43,7 @@ public abstract class HighPointFirstGetsFixedScore extends HighPoint { } @Override - public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher, TimePoint timePoint) { final int effectiveRank = getEffectiveRank(raceColumn, competitor, rank); final Double result; if (effectiveRank == 0) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointWinnerGetsEightAndInterpolation.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointWinnerGetsEightAndInterpolation.java index fc4bde418f5..93328212933 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointWinnerGetsEightAndInterpolation.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPointWinnerGetsEightAndInterpolation.java @@ -7,6 +7,7 @@ import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.ScoringSchemeType; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; +import com.sap.sse.common.TimePoint; /** * High point system with a fixed 'highest score' (eight points) and @@ -32,7 +33,7 @@ public class HighPointWinnerGetsEightAndInterpolation extends HighPointFirstGets } @Override - public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher, TimePoint timePoint) { final int effectiveRank = getEffectiveRank(raceColumn, competitor, rank); final Double result; if (effectiveRank == 0) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java index 4948bcbb713..1c8045ca43b 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java @@ -27,10 +27,18 @@ public class LowPoint extends AbstractScoringSchemeImpl { } @Override - public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRaceFetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { - final int effectiveRank; + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, + Callable numberOfCompetitorsInRaceFetcher, + NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher, TimePoint timePoint) { final Double result; - int competitorFleetOrdering; + final int effectiveRank = getEffectiveRank(raceColumn, competitor, rank); + result = effectiveRank == 0 ? null : (double) effectiveRank; + return result; + } + + protected int getEffectiveRank(RaceColumn raceColumn, Competitor competitor, int rank) { + final int competitorFleetOrdering; + final int effectiveRank; if (rank == 0) { effectiveRank = 0; } else if (raceColumn.hasSplitFleetContiguousScoring() && (competitorFleetOrdering=raceColumn.getFleetOfCompetitor(competitor).getOrdering()) != 0) { @@ -39,8 +47,7 @@ public class LowPoint extends AbstractScoringSchemeImpl { } else { effectiveRank = rank; } - result = effectiveRank == 0 ? null : (double) effectiveRank; - return result; + return effectiveRank; } @Override diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWinnerGetsZero.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWinnerGetsZero.java index ae937639d03..e69ee506426 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWinnerGetsZero.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWinnerGetsZero.java @@ -7,6 +7,7 @@ import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.ScoringSchemeType; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; +import com.sap.sse.common.TimePoint; /** * As compared to the regular low-point scheme, the 2013 ISAF World Cup will score the winner of a race with @@ -32,7 +33,7 @@ public class LowPointWinnerGetsZero extends LowPoint { private static final long serialVersionUID = 3405249102284162690L; @Override - public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRacefetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { + public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, Callable numberOfCompetitorsInRacefetcher, NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher, TimePoint timePoint) { return rank == 0 ? null : rank == 1 ? 0.0 : (double) rank; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java index bebb6a15977..bbaf7105050 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java @@ -3,11 +3,17 @@ package com.sap.sailing.domain.leaderboard.impl; import java.util.concurrent.Callable; import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.domain.base.RaceColumnInSeries; +import com.sap.sailing.domain.base.Regatta; +import com.sap.sailing.domain.base.Series; import com.sap.sailing.domain.common.ScoringSchemeType; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.NumberOfCompetitorsInLeaderboardFetcher; +import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.common.TimePoint; +import com.sap.sse.common.Util; /** * Implements an elimination scheme as used by surfing championships, based on a general low point scoring scheme. A @@ -41,32 +47,155 @@ import com.sap.sse.common.TimePoint; * * Should a planned heat not be sailed then all competitors assigned to that heat will obtain equal points based on the * average of the ranks for which they would have sailed. For example, if the final heat cannot be sailed, all competitors - * who qualified for the final race obtain the average of 0.7, 2, 3, 4, 5, 6, 7 and 8 points (4.46 points). + * who qualified for the final race obtain the average of 0.7, 2, 3, 4, 5, 6, 7 and 8 points (4.46 points).

+ * + * The regatta is expected to be modeled such that fleet ordering numbers are used in a special way. Ordering 1 + * is to be used to identify the Final heat, 2 for the Losers Final heat. For each earlier round the + * ordering is increased by one and applied equally to all heats of that round. Therefore, the two semi-final heats + * use ordering 3, the four quarter-final heats use 4, and so on. * * @author Axel Uhl (d043530) * */ public class LowPointWithEliminationsAndRoundsWinnerGets07 extends LowPoint { private static final long serialVersionUID = -2318652113347853873L; + + private static int FINAL_FLEET_ORDERING = 1; + private static int LOSERS_FINAL_FLEET_ORDERING = 2; @Override public ScoringSchemeType getType() { return ScoringSchemeType.LOW_POINT_WITH_ELIMINATIONS_AND_ROUNDS_WINNER_GETS_07; } - - @Override - public Double getScoreForRank(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, int rank, - Callable numberOfCompetitorsInRaceFetcher, - NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher) { - // TODO Auto-generated method stub - return super.getScoreForRank(leaderboard, raceColumn, competitor, rank, numberOfCompetitorsInRaceFetcher, - numberOfCompetitorsInLeaderboardFetcher); - } - - @Override - public boolean isValidInTotalScore(Leaderboard leaderboard, RaceColumn raceColumn, TimePoint at) { - // TODO Auto-generated method stub - return super.isValidInTotalScore(leaderboard, raceColumn, at); - } + /** + * A competitor will obtain a score in a column if she has no score in any of the subsequent columns of the same + * elimination. Assuming that each series has a single race column only, the next column is identical to the single + * race column of the next series. If the raceColumn is the last column (representing the last round) + * of the elimination, the round is a final round, and all competitors participating in any of the races linked to + * any of the fleets in that column are eligible to receive a score in that column. + *

+ * + * The rationale behind this rule is that if a competitor got promoted to the next round of the elimination, no + * score will be assigned to that competitor in the round from which she got promoted unless the next heat that + * the competitor would have raced in is not sailed, in which case average points will be assigned to all competitors + * promoted to the heat that did not get sailed. + */ + private boolean competitorGetsScoreInColumn(Leaderboard leaderboard, RaceColumnInSeries raceColumn, Competitor competitor, TimePoint timePoint) { + final Series series = raceColumn.getSeries(); + final Regatta regatta = series.getRegatta(); + boolean foundColumn = false; + boolean result = true; + // remember the ordering of any heat in raceColumn; the next column that has a greater ordering + // belongs to the next elimination + final int heatOrdering = raceColumn.getFleets().iterator().next().getOrdering(); + for (Series seriesInRegatta : regatta.getSeries()) { + if (foundColumn && series.getFleets().iterator().next().getOrdering() > heatOrdering) { + // reached next elimination; abort + break; + } + if (!foundColumn && seriesInRegatta == series) { + foundColumn = true; + } else { + if (foundColumn && hasScoreInSeries(leaderboard, competitor, seriesInRegatta, timePoint)) { + result = false; + break; + } + } + } + return result; + } + + private boolean hasScoreInSeries(Leaderboard leaderboard, Competitor competitor, Series series, TimePoint timePoint) { + final RaceColumn singleRaceColumnInSeries = series.getRaceColumns().iterator().next(); + return leaderboard.getNetPoints(competitor, singleRaceColumnInSeries, timePoint) != null; + } + + @Override + public Double getScoreForRank(final Leaderboard leaderboard, final RaceColumn raceColumn, final Competitor competitor, final int rank, + final Callable numberOfCompetitorsInRaceFetcher, + final NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher, TimePoint timePoint) { + assert raceColumn instanceof RaceColumnInSeries; + final Double result; + if (rank == 0) { + result = null; + } else if (isFinalRound((RaceColumnInSeries) raceColumn)) { + final int effectiveRank = getEffectiveRank(raceColumn, competitor, rank); + result = effectiveRank == 0 ? null : effectiveRank == 1 ? 0.7 : (double) effectiveRank; + } else if (competitorGetsScoreInColumn(leaderboard, (RaceColumnInSeries) raceColumn, competitor, timePoint)) { + // calculate the average rank or all competitors with the same rank in their respective heat in the round + // to which raceColumn belongs: + final int numberOfCompetitorsWithSameRankInRound = getNumberOfCompetitorsWithSameRankInRound((RaceColumnInSeries) raceColumn, competitor, rank); + final int numberOfCompetitorsWithBetterScoresInRound = Util.size(((RaceColumnInSeries) raceColumn).getSeries().getFleets()) * (rank-1); + final int bestOverallRankForRank = numberOfCompetitorsWithBetterScoresInRound+1; + final int worstOverallRankForRank = numberOfCompetitorsWithBetterScoresInRound+numberOfCompetitorsWithSameRankInRound; + result = (double) bestOverallRankForRank + ((double) worstOverallRankForRank-(double) bestOverallRankForRank)/2.0; + } else { + result = null; // not in final round; competitor was promoted from raceColumn to the next round and has + // a non-null score in a subsequent round of the elimination + } + return result; + } + + /** + * Assumption: no fleet has a number of competitors exceeding that of any other fleet in the same round by two or + * more. + *

+ * + * Background: an additional competitor will always be added to the fleet with the fewest competitors, implying + * above rule. + *

+ * + * Reason for assumption: with this, we can infer that there will be as many competitors ranking one rank better + * than "rank" as there are fleets; were the assumption not fulfilled then there could be a fleet in the round that + * has no competitor ranking one rank better. With this assumption we easily infer the best possible rank for all + * competitors with "rank" which is the number of fleets in the round times "rank" plus 1. + *

+ * + * Example: If rank is 7 and we have eight fleets, the best rank for all competitors with this rank will be 7*8+1 = + * 57. The worst rank for all competitors with "rank" therefore can be calculated by the adding to the best rank the + * number of competitors with this rank. We have to assume that this number may not be equal to the number of heats + * in this round because with different heat sizes in a round the worst rank may be different for different heats + * (e.g., 7 in some, and 8 in others, therefore fewer 8th ranks than 7th ranks will exist). This "uneven" case can + * only apply if the competitor ranks last in the heat which is easy to exclude by looking at the tracked race, from + * there the RaceDefinition and for that the number of competitors in that race. + */ + private int getNumberOfCompetitorsWithSameRankInRound(final RaceColumnInSeries raceColumn, final Competitor competitor, final int rank) { + final int numberOfCompetitorsWithSameRankInRound; + final TrackedRace trackedRace = raceColumn.getTrackedRace(competitor); + if (trackedRace == null) { + // Can't determine number of competitors in heat; assuming equal fleet distribution + numberOfCompetitorsWithSameRankInRound = getNumberOfFleets(raceColumn); + } else { + final boolean isWorstRank = rank == Util.size(trackedRace.getRace().getCompetitors()); + if (!isWorstRank) { + numberOfCompetitorsWithSameRankInRound = getNumberOfFleets(raceColumn); + } else { + // for all other fleets in the round that have tracked races attached, we can count how many of them + // have fewer than "rank" competitors; for fleets with no tracked race attached we then again assume + // maximum competitor number + int count = 0; + for (final Fleet fleet : raceColumn.getSeries().getFleets()) { + final TrackedRace trackedRaceForFleet = raceColumn.getTrackedRace(fleet); + if (trackedRaceForFleet == null) { + count++; // by default assume that other race has at least as many competitors as the competitor's heat + } else { + if (Util.size(trackedRaceForFleet.getRace().getCompetitors()) >= rank) { + count++; + } + } + } + numberOfCompetitorsWithSameRankInRound = count; + } + } + return numberOfCompetitorsWithSameRankInRound; + } + + private int getNumberOfFleets(final RaceColumnInSeries raceColumn) { + return Util.size(raceColumn.getSeries().getFleets()); + } + + private boolean isFinalRound(RaceColumnInSeries raceColumn) { + return raceColumn.getFleets().iterator().next().getOrdering() <= LOSERS_FINAL_FLEET_ORDERING; + } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ScoreCorrectionImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ScoreCorrectionImpl.java index 2db051f163d..ee0aff0bcfe 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ScoreCorrectionImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/ScoreCorrectionImpl.java @@ -407,7 +407,7 @@ public class ScoreCorrectionImpl implements SettableScoreCorrection { public Integer call() { return getNumberOfCompetitorsInRace(raceColumn, competitor, numberOfCompetitorsInLeaderboardFetcher); } - }, numberOfCompetitorsInLeaderboardFetcher); + }, numberOfCompetitorsInLeaderboardFetcher, timePoint); } catch (Exception e) { throw new RuntimeException(e); } @@ -454,7 +454,7 @@ public class ScoreCorrectionImpl implements SettableScoreCorrection { public Integer call() { return getNumberOfCompetitorsInRace(raceColumn, competitor, numberOfCompetitorsInLeaderboardFetcher); } - }, numberOfCompetitorsInLeaderboardFetcher); + }, numberOfCompetitorsInLeaderboardFetcher, timePoint); } catch (Exception e) { logger.log(Level.SEVERE, "Exception while computing corrected non maxed score", e); throw new RuntimeException(e); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java index 7c559568fae..8a9b8b2a725 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RaceLogScoringReplicator.java @@ -182,7 +182,7 @@ public class RaceLogScoringReplicator implements RaceColumnListener { public Integer call() { return numberOfCompetitorsInRace; } - }, leaderboard.getNumberOfCompetitorsInLeaderboardFetcher()); + }, leaderboard.getNumberOfCompetitorsInLeaderboardFetcher(), timePoint); // Do ALWAYS apply score corrections from race committee applyScoreCorrectionOperation(leaderboard, raceColumn, competitor, scoreByRaceCommittee, timePoint); From e52b6334d84b17843a20831f34982aefeb5f7e15 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 17 Sep 2015 22:19:05 +0200 Subject: [PATCH 283/504] removed extra constant that was unused --- .../impl/LowPointWithEliminationsAndRoundsWinnerGets07.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java index bbaf7105050..7093969408e 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java @@ -60,7 +60,6 @@ import com.sap.sse.common.Util; public class LowPointWithEliminationsAndRoundsWinnerGets07 extends LowPoint { private static final long serialVersionUID = -2318652113347853873L; - private static int FINAL_FLEET_ORDERING = 1; private static int LOSERS_FINAL_FLEET_ORDERING = 2; @Override From 8d16f25bb7dcf0de1fc583e586c14a8f1da1c3a7 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 17 Sep 2015 23:55:09 +0200 Subject: [PATCH 284/504] added a failing test case for incomplete heat scoring; asked a question to the organizers for clarification --- .../LeaderboardScoringAndRankingTest.java | 102 +++++++++++++++++- ...WithEliminationsAndRoundsWinnerGets07.java | 5 +- .../Security UI sdm.launch | 96 ++++++++--------- 3 files changed, 153 insertions(+), 50 deletions(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java index 64817680608..aadc6d8b008 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java @@ -2,6 +2,7 @@ package com.sap.sailing.domain.test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; @@ -719,10 +720,109 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { assertEquals(0.7, leaderboard.getTotalPoints(c[0], later), 0.000000001); assertSame(c[1], rankedCompetitors.get(1)); // should be the winner of the final round's Final heat and take the "crown" for the elimination assertEquals(2, leaderboard.getTotalPoints(c[1], later), 0.000000001); + // first four of second heat get promoted to quarter final but lose their heat + assertNull(leaderboard.getTotalPoints(c[ 8], series.get(0).getRaceColumns().iterator().next(), later)); + assertNull(leaderboard.getTotalPoints(c[ 9], series.get(0).getRaceColumns().iterator().next(), later)); + assertNull(leaderboard.getTotalPoints(c[10], series.get(0).getRaceColumns().iterator().next(), later)); + assertNull(leaderboard.getTotalPoints(c[11], series.get(0).getRaceColumns().iterator().next(), later)); + assertEquals(18.5, leaderboard.getTotalPoints(c[ 8], later), 0.000000001); + assertEquals(22.5, leaderboard.getTotalPoints(c[ 9], later), 0.000000001); + assertEquals(26.5, leaderboard.getTotalPoints(c[10], later), 0.000000001); + assertEquals(30.5, leaderboard.getTotalPoints(c[11], later), 0.000000001); + // last four competitors in last heat of first round don't get promoted and have null scores in all other rounds but the first + assertEquals(36.5, leaderboard.getTotalPoints(c[60], later), 0.000000001); + assertEquals(44.5, leaderboard.getTotalPoints(c[61], later), 0.000000001); + assertEquals(52.5, leaderboard.getTotalPoints(c[62], later), 0.000000001); + assertEquals(60.5, leaderboard.getTotalPoints(c[63], later), 0.000000001); + for (int i=1; i<=3; i++) { + for (int j=60; j<=63; j++) { + assertNull(leaderboard.getTotalPoints(c[j], series.get(i).getRaceColumns().iterator().next(), later)); + } + } } // TODO add test case for multi-elimination case, testing that the races from the next elimination do not influence whether a competitor gets a score in the previous elimination - + // TODO add test case for elimination heats with different numbers of competitors + // TODO add test case for elimination based on score correction with no tracked race + + // TODO add test case for elimination that has no scores for the final round and therefore needs to score by averages, considering the .7 for the first place + @Test + public void testElminationScoringSchemeWithFinalNotSailed() throws NoWindException { + Regatta regatta = createRegattaWithEliminations(1, new int[] { 8, 4, 2, 2 }, "testBasicElminationScoringScheme", + DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), + DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT_WITH_ELIMINATIONS_AND_ROUNDS_WINNER_GETS_07)); + Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[0]); + Competitor[] c = createCompetitors(64).toArray(new Competitor[64]); + // first round with 64 competitors, eight per heat: + Competitor[][] competitorsForHeatsInRound1 = new Competitor[8][]; + TimePoint later = null; + for (int heat=0; heat<8; heat++) { + competitorsForHeatsInRound1[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + competitorsForHeatsInRound1[heat][i] = c[8*heat+i]; + } + later = createAndAttachTrackedRaces(series.get(0), "Heat "+(heat+1), competitorsForHeatsInRound1[heat]); + } + // quarter-finals has promoted top four competitors of first round in heats with eight competitors each: + Competitor[][] competitorsForHeatsInQuarterFinals = new Competitor[4][]; + for (int heat=0; heat<4; heat++) { + competitorsForHeatsInQuarterFinals[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + competitorsForHeatsInQuarterFinals[heat][i] = c[8*(2*heat+(i/4))+(i%4)]; + } + later = createAndAttachTrackedRaces(series.get(1), "Heat "+(heat+9), competitorsForHeatsInQuarterFinals[heat]); + } + // semi-finals has promoted top four competitors of quarter finals which are the top four of each other first-round heat: + Competitor[][] competitorsForHeatsInSemiFinals = new Competitor[2][]; + for (int heat=0; heat<2; heat++) { + competitorsForHeatsInSemiFinals[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + competitorsForHeatsInSemiFinals[heat][i] = c[8*(4*heat+2*(i/4))+(i%4)]; + } + later = createAndAttachTrackedRaces(series.get(2), "Heat "+(heat+13), competitorsForHeatsInSemiFinals[heat]); + } + List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); + // TODO is it this, or will the two first places in the two semi-final heats obtain (0.7+2)/2 points, and the two second places (3+4)/2? + final double expectedPointsForFirstEightBoats = (0.7 + 2 + 3 + 4 + 5 + 6 + 7 + 8) / 8; + for (int i=0; i<4; i++) { + assertEquals(expectedPointsForFirstEightBoats, leaderboard.getTotalPoints(c[i], later), 0.000000001); + } + for (int i=32; i<40; i++) { + assertEquals(expectedPointsForFirstEightBoats, leaderboard.getTotalPoints(c[i], later), 0.000000001); + } + } + + @Test + public void testElminationScoringSchemeWithOnlyFirstRoundSailed() throws NoWindException { + Regatta regatta = createRegattaWithEliminations(1, new int[] { 8, 4, 2, 2 }, "testBasicElminationScoringScheme", + DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), + DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT_WITH_ELIMINATIONS_AND_ROUNDS_WINNER_GETS_07)); + Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[0]); + Competitor[] c = createCompetitors(64).toArray(new Competitor[64]); + // first round with 64 competitors, eight per heat: + Competitor[][] competitorsForHeatsInRound1 = new Competitor[8][]; + TimePoint later = null; + for (int heat=0; heat<8; heat++) { + competitorsForHeatsInRound1[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + competitorsForHeatsInRound1[heat][i] = c[8*heat+i]; + } + later = createAndAttachTrackedRaces(series.get(0), "Heat "+(heat+1), competitorsForHeatsInRound1[heat]); + } + List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); + final double expectedPointsForFirstEightBoats = (0.7 + 2 + 3 + 4 + 5 + 6 + 7 + 8) / 8; + for (int i=0; i<8; i++) { + assertEquals(expectedPointsForFirstEightBoats, leaderboard.getTotalPoints(c[8*i], later), 0.0000001); + assertEquals("Competitor "+rankedCompetitors.get(i)+" not in list of best eight ", + 0, Arrays.asList(c).indexOf(rankedCompetitors.get(i))%8); // each first competitor in a heat ranks in the top 8 + } + for (int i=1; i<=3; i++) { + for (Competitor comp : c) { + assertNull(leaderboard.getTotalPoints(comp, series.get(i).getRaceColumns().iterator().next(), later)); + } + } + } + @Test public void testScoringConsideringNotAllRaces() throws NoWindException { // one discard at four races diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java index 7093969408e..b1835265c89 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java @@ -128,7 +128,10 @@ public class LowPointWithEliminationsAndRoundsWinnerGets07 extends LowPoint { final int numberOfCompetitorsWithBetterScoresInRound = Util.size(((RaceColumnInSeries) raceColumn).getSeries().getFleets()) * (rank-1); final int bestOverallRankForRank = numberOfCompetitorsWithBetterScoresInRound+1; final int worstOverallRankForRank = numberOfCompetitorsWithBetterScoresInRound+numberOfCompetitorsWithSameRankInRound; - result = (double) bestOverallRankForRank + ((double) worstOverallRankForRank-(double) bestOverallRankForRank)/2.0; + final int numberOfRanks = worstOverallRankForRank-bestOverallRankForRank+1; + result = (double) bestOverallRankForRank + ((double) numberOfRanks-1)/2.0 + // now subtract the difference between 1.0 and 0.7 in case the first place is contained: + - (bestOverallRankForRank==1 ? (1.0-0.7)/numberOfRanks : 0); } else { result = null; // not in final round; competitor was promoted from raceColumn to the next round and has // a non-null score in a subsequent round of the elimination diff --git a/java/com.sap.sse.security.ui/Security UI sdm.launch b/java/com.sap.sse.security.ui/Security UI sdm.launch index e15e8f7ab9e..63fc7dc7116 100755 --- a/java/com.sap.sse.security.ui/Security UI sdm.launch +++ b/java/com.sap.sse.security.ui/Security UI sdm.launch @@ -1,48 +1,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From a5cda4ce2fdeb8b69eb43b6c9ab6e800069484c6 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 18 Sep 2015 09:40:09 +0200 Subject: [PATCH 285/504] Fixing NPE when de-serializing start of tracking race log event with null start of tracking time --- .../sailing/domain/abstractlog/impl/LogEventComparator.java | 3 ++- .../abstractlog/race/analyzing/impl/LastFlagsFinder.java | 5 +++-- .../racelog/impl/BaseRaceLogEventDeserializer.java | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/LogEventComparator.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/LogEventComparator.java index 11ddcea67cb..b85f09054ac 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/LogEventComparator.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/LogEventComparator.java @@ -8,6 +8,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.tracking.impl.TimedComparator; import com.sap.sse.common.Timed; +import com.sap.sse.common.Util; /** * Comparator sorting by pass, then by {@link AbstractLogEventAuthor}, then by {@link RaceLogEvent#getCreatedAt()} @@ -43,7 +44,7 @@ public class LogEventComparator implements Comparator, Serializable { if (result != 0) return result; //compare logical timepoints - result = e1.getLogicalTimePoint().compareTo(e2.getLogicalTimePoint()); + result = Util.compareToWithNull(e1.getLogicalTimePoint(), e2.getLogicalTimePoint(), /* nullIsLess */ false); if (result != 0) return result; //compare ids diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/LastFlagsFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/LastFlagsFinder.java index 0d25623da77..eaaa81fb4d9 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/LastFlagsFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/LastFlagsFinder.java @@ -10,6 +10,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent; import com.sap.sse.common.TimePoint; +import com.sap.sse.common.Util; /** * Analysis returns the most recent {@link RaceLogFlagEvent}s. @@ -42,7 +43,7 @@ public class LastFlagsFinder extends RaceLogAnalyzer> { List result = new ArrayList(); TimePoint logicalTime = flagEvent.getLogicalTimePoint(); - while (flagEvent.getLogicalTimePoint().equals(logicalTime)) { + while (Util.compareToWithNull(flagEvent.getLogicalTimePoint(), logicalTime, /* nullIsLess */ false) == 0) { result.add(flagEvent); flagEvent = getNextFlagEvent(iterator); if (flagEvent == null) { @@ -84,7 +85,7 @@ public class LastFlagsFinder extends RaceLogAnalyzer> { Collections.sort(sortedEvents, new Comparator() { @Override public int compare(RaceLogFlagEvent left, RaceLogFlagEvent right) { - int result = right.getLogicalTimePoint().compareTo(left.getLogicalTimePoint()); + int result = Util.compareToWithNull(right.getLogicalTimePoint(), left.getLogicalTimePoint(), /* nullIsLess */ false); if (result == 0) { result = Boolean.valueOf(right.isDisplayed()).compareTo(left.isDisplayed()); if (result == 0) { diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/BaseRaceLogEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/BaseRaceLogEventDeserializer.java index cbd858b9e26..65a7436e45e 100644 --- a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/BaseRaceLogEventDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/BaseRaceLogEventDeserializer.java @@ -61,7 +61,7 @@ public abstract class BaseRaceLogEventDeserializer implements JsonDeserializer Date: Fri, 18 Sep 2015 09:45:29 +0200 Subject: [PATCH 286/504] added test case for de-serialization of null time points --- .../TrackingTimesEventSerializerTest.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/TrackingTimesEventSerializerTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/TrackingTimesEventSerializerTest.java index e8fe7e49813..a1549d3363d 100644 --- a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/TrackingTimesEventSerializerTest.java +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/TrackingTimesEventSerializerTest.java @@ -13,6 +13,13 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEndOfTrackingEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEventRestoreFactory; import com.sap.sailing.domain.abstractlog.race.RaceLogStartOfTrackingEvent; +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.DomainFactory; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.CompetitorJsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogEndOfTrackingEventDeserializer; +import com.sap.sailing.server.gateway.deserialization.racelog.impl.RaceLogStartOfTrackingEventDeserializer; import com.sap.sailing.server.gateway.serialization.JsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.BoatClassJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.BoatJsonSerializer; @@ -34,12 +41,42 @@ public class TrackingTimesEventSerializerTest { return new RaceLogEndOfTrackingEventSerializer(createCompetitorSerializer()); } + private JsonDeserializer createStartOfTrackingEventDeserializer() { + return new RaceLogStartOfTrackingEventDeserializer(createCompetitorDeserializer()); + } + + private JsonDeserializer createCompetitorDeserializer() { + return new CompetitorJsonDeserializer(DomainFactory.INSTANCE.getCompetitorStore()); + } + + private JsonDeserializer createEndOfTrackingEventDeserializer() { + return new RaceLogEndOfTrackingEventDeserializer(createCompetitorDeserializer()); + } + private CompetitorJsonSerializer createCompetitorSerializer() { return new CompetitorJsonSerializer(new TeamJsonSerializer( new PersonJsonSerializer(new NationalityJsonSerializer())), new BoatJsonSerializer( new BoatClassJsonSerializer())); } + @Test + public void testNullStartOfTrackingTimeAttributeDeserialization() throws JsonDeserializationException { + final RaceLogStartOfTrackingEvent event = RaceLogEventRestoreFactory.INSTANCE.createStartOfTrackingEvent(/* startOfTracking */null, + new LogEventAuthorImpl("Axel", 0), UUID.randomUUID(), /* competitors */null, /* passId */1); + JSONObject json = createStartOfTrackingEventSerializer().serialize(event); + RaceLogEvent deserialized = createStartOfTrackingEventDeserializer().deserialize(json); + assertNull(deserialized.getLogicalTimePoint()); + } + + @Test + public void testNullEndOfTrackingTimeAttributeDeserialization() throws JsonDeserializationException { + final RaceLogEndOfTrackingEvent event = RaceLogEventRestoreFactory.INSTANCE.createEndOfTrackingEvent(/* endOfTracking */null, + new LogEventAuthorImpl("Axel", 0), UUID.randomUUID(), /* competitors */null, /* passId */1); + JSONObject json = createStartOfTrackingEventSerializer().serialize(event); + RaceLogEvent deserialized = createEndOfTrackingEventDeserializer().deserialize(json); + assertNull(deserialized.getLogicalTimePoint()); + } + @Test public void testNullStartOfTrackingTimeAttribute() { final RaceLogStartOfTrackingEvent event = RaceLogEventRestoreFactory.INSTANCE.createStartOfTrackingEvent(/* startOfTracking */null, From 840962162817a4063b2345fc066af1fc0f22e493 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 18 Sep 2015 10:20:10 +0200 Subject: [PATCH 287/504] avoided "unused" warning in app --- .../com/sap/sailing/android/shared/util/BroadcastManager.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/BroadcastManager.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/BroadcastManager.java index 0d724ba4497..9c33986bfab 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/BroadcastManager.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/util/BroadcastManager.java @@ -9,9 +9,6 @@ import android.os.AsyncTask; import android.support.v4.content.LocalBroadcastManager; public class BroadcastManager { - - private final static String TAG = BroadcastManager.class.getName(); - private static BroadcastManager mInstance; private final Context mContext; private Queue mQueue; From 756ea16057968158c445e018942fd7923180438e Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 18 Sep 2015 13:02:00 +0200 Subject: [PATCH 288/504] preparing for more tests and implementation regarding uncompleted / not sailed races --- .../LeaderboardScoringAndRankingTest.java | 46 +++---- ...dTrackedRaceWithStartTimeAndZeroRanks.java | 40 ++++++ ...WithEliminationsAndRoundsWinnerGets07.java | 114 ++++++++++++------ 3 files changed, 140 insertions(+), 60 deletions(-) create mode 100644 java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndZeroRanks.java diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java index aadc6d8b008..4abace89c33 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java @@ -70,6 +70,7 @@ import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore; import com.sap.sailing.domain.ranking.OneDesignRankingMetric; import com.sap.sailing.domain.regattalog.impl.EmptyRegattaLogStore; import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithStartTimeAndRanks; +import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithStartTimeAndZeroRanks; import com.sap.sailing.domain.tracking.MarkPassing; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; @@ -645,7 +646,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { /* medal */ false, "testTieBreakWithTwoVersusOneWins", DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT)); Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[0]); - TimePoint later = createAndAttachTrackedRaces(series.get(1), "Default", f1, f2, f3); + TimePoint later = createAndAttachTrackedRaces(series.get(1), "Default", /* withScores */ true, f1, f2, f3); List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); assertEquals(leaderboard.getTotalPoints(c[0], later), leaderboard.getTotalPoints(c[1], later), 0.000000001); assertEquals(Arrays.asList(new Competitor[] { c[0], c[1], c[2] }), rankedCompetitors); @@ -664,7 +665,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { /* medal */ false, "testTieBreakWithTwoVersusOneSeconds", DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT)); Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[0]); - TimePoint later = createAndAttachTrackedRaces(series.get(1), "Default", f1, f2, f3, f4, f5, f6); + TimePoint later = createAndAttachTrackedRaces(series.get(1), "Default", /* withScores */ true, f1, f2, f3, f4, f5, f6); List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); assertEquals(leaderboard.getTotalPoints(c[0], later), leaderboard.getTotalPoints(c[1], later), 0.000000001); assertTrue(rankedCompetitors.indexOf(c[0]) == rankedCompetitors.indexOf(c[1])-1); @@ -685,7 +686,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { for (int i=0; i<8; i++) { competitorsForHeatsInRound1[heat][i] = c[8*heat+i]; } - later = createAndAttachTrackedRaces(series.get(0), "Heat "+(heat+1), competitorsForHeatsInRound1[heat]); + later = createAndAttachTrackedRaces(series.get(0), "Heat "+(heat+1), /* withScores */ true, competitorsForHeatsInRound1[heat]); } // quarter-finals has promoted top four competitors of first round in heats with eight competitors each: Competitor[][] competitorsForHeatsInQuarterFinals = new Competitor[4][]; @@ -694,7 +695,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { for (int i=0; i<8; i++) { competitorsForHeatsInQuarterFinals[heat][i] = c[8*(2*heat+(i/4))+(i%4)]; } - later = createAndAttachTrackedRaces(series.get(1), "Heat "+(heat+9), competitorsForHeatsInQuarterFinals[heat]); + later = createAndAttachTrackedRaces(series.get(1), "Heat "+(heat+9), /* withScores */ true, competitorsForHeatsInQuarterFinals[heat]); } // semi-finals has promoted top four competitors of quarter finals which are the top four of each other first-round heat: Competitor[][] competitorsForHeatsInSemiFinals = new Competitor[2][]; @@ -703,7 +704,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { for (int i=0; i<8; i++) { competitorsForHeatsInSemiFinals[heat][i] = c[8*(4*heat+2*(i/4))+(i%4)]; } - later = createAndAttachTrackedRaces(series.get(2), "Heat "+(heat+13), competitorsForHeatsInSemiFinals[heat]); + later = createAndAttachTrackedRaces(series.get(2), "Heat "+(heat+13), /* withScores */ true, competitorsForHeatsInSemiFinals[heat]); } // finals has promoted top four competitors of semi finals which are the top four of first and fifth first-round heats // for the final, and the top four of the first round's third and seventh heat @@ -713,7 +714,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { for (int i=0; i<8; i++) { competitorsForHeatsInFinals[heat][i] = c[8*(2*heat+4*(i/4))+(i%4)]; } - later = createAndAttachTrackedRaces(series.get(3), "Heat "+(heat+15), competitorsForHeatsInFinals[heat]); + later = createAndAttachTrackedRaces(series.get(3), "Heat "+(heat+15), /* withScores */ true, competitorsForHeatsInFinals[heat]); } List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); assertSame(c[0], rankedCompetitors.get(0)); // should be the winner of the final round's Final heat and take the "crown" for the elimination @@ -745,7 +746,6 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { // TODO add test case for elimination heats with different numbers of competitors // TODO add test case for elimination based on score correction with no tracked race - // TODO add test case for elimination that has no scores for the final round and therefore needs to score by averages, considering the .7 for the first place @Test public void testElminationScoringSchemeWithFinalNotSailed() throws NoWindException { Regatta regatta = createRegattaWithEliminations(1, new int[] { 8, 4, 2, 2 }, "testBasicElminationScoringScheme", @@ -761,7 +761,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { for (int i=0; i<8; i++) { competitorsForHeatsInRound1[heat][i] = c[8*heat+i]; } - later = createAndAttachTrackedRaces(series.get(0), "Heat "+(heat+1), competitorsForHeatsInRound1[heat]); + later = createAndAttachTrackedRaces(series.get(0), "Heat "+(heat+1), /* withScores */ true, competitorsForHeatsInRound1[heat]); } // quarter-finals has promoted top four competitors of first round in heats with eight competitors each: Competitor[][] competitorsForHeatsInQuarterFinals = new Competitor[4][]; @@ -770,7 +770,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { for (int i=0; i<8; i++) { competitorsForHeatsInQuarterFinals[heat][i] = c[8*(2*heat+(i/4))+(i%4)]; } - later = createAndAttachTrackedRaces(series.get(1), "Heat "+(heat+9), competitorsForHeatsInQuarterFinals[heat]); + later = createAndAttachTrackedRaces(series.get(1), "Heat "+(heat+9), /* withScores */ true, competitorsForHeatsInQuarterFinals[heat]); } // semi-finals has promoted top four competitors of quarter finals which are the top four of each other first-round heat: Competitor[][] competitorsForHeatsInSemiFinals = new Competitor[2][]; @@ -779,11 +779,10 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { for (int i=0; i<8; i++) { competitorsForHeatsInSemiFinals[heat][i] = c[8*(4*heat+2*(i/4))+(i%4)]; } - later = createAndAttachTrackedRaces(series.get(2), "Heat "+(heat+13), competitorsForHeatsInSemiFinals[heat]); + later = createAndAttachTrackedRaces(series.get(2), "Heat "+(heat+13), /* withScores */ true, competitorsForHeatsInSemiFinals[heat]); } - List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); - // TODO is it this, or will the two first places in the two semi-final heats obtain (0.7+2)/2 points, and the two second places (3+4)/2? - final double expectedPointsForFirstEightBoats = (0.7 + 2 + 3 + 4 + 5 + 6 + 7 + 8) / 8; + // 1 instead of 0.7 for a final that was not sailed; clarified with Juergen Bonne in an e-mail as of 18-09-2015T09:03:00Z + final double expectedPointsForFirstEightBoats = (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8) / 8; for (int i=0; i<4; i++) { assertEquals(expectedPointsForFirstEightBoats, leaderboard.getTotalPoints(c[i], later), 0.000000001); } @@ -807,7 +806,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { for (int i=0; i<8; i++) { competitorsForHeatsInRound1[heat][i] = c[8*heat+i]; } - later = createAndAttachTrackedRaces(series.get(0), "Heat "+(heat+1), competitorsForHeatsInRound1[heat]); + later = createAndAttachTrackedRaces(series.get(0), "Heat "+(heat+1), /* withScores */ true, competitorsForHeatsInRound1[heat]); } List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); final double expectedPointsForFirstEightBoats = (0.7 + 2 + 3 + 4 + 5 + 6 + 7 + 8) / 8; @@ -864,7 +863,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT)); Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[] { 4 }); - TimePoint later = createAndAttachTrackedRaces(series.get(1), "Default", f1, f2, f3, f4, f5, f6); + TimePoint later = createAndAttachTrackedRaces(series.get(1), "Default", /* withScores */ true, f1, f2, f3, f4, f5, f6); Map> rankedCompetitorsFromBestToWorstAfterEachRaceColumn = leaderboard.getRankedCompetitorsFromBestToWorstAfterEachRaceColumn(later); assertEquals(Arrays.asList(c[2], c[0], c[1], c[3]), @@ -917,8 +916,8 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { /* medal */ true, "testTieBreakWithTwoVersusOneSeconds", DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT)); Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[0]); - TimePoint later = createAndAttachTrackedRaces(series.get(1), "Default", f1, f2); - createAndAttachTrackedRaces(series.get(2), "Medal", m1); + TimePoint later = createAndAttachTrackedRaces(series.get(1), "Default", /* withScores */ true, f1, f2); + createAndAttachTrackedRaces(series.get(2), "Medal", /* withScores */ true, m1); List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); // assert that both have equal score assertEquals(leaderboard.getTotalPoints(c[0], later), leaderboard.getTotalPoints(c[1], later), 0.000000001); @@ -940,7 +939,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT)); Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[0]); - TimePoint later = createAndAttachTrackedRaces(series.get(1), "Default", f1, f2, f3, f4, f5, f6); + TimePoint later = createAndAttachTrackedRaces(series.get(1), "Default", /* withScores */ true, f1, f2, f3, f4, f5, f6); List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); assertEquals(leaderboard.getTotalPoints(c[0], later), leaderboard.getTotalPoints(c[1], later), 0.000000001); assertEquals(rankedCompetitors.indexOf(c[0]), rankedCompetitors.indexOf(c[1])-1); @@ -960,7 +959,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.HIGH_POINT)); Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[0]); - TimePoint later = createAndAttachTrackedRaces(series.get(1), "Default", f1, f2, f3, f4, f5, f6); + TimePoint later = createAndAttachTrackedRaces(series.get(1), "Default", /* withScores */ true, f1, f2, f3, f4, f5, f6); List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); assertEquals(leaderboard.getTotalPoints(c[0], later), leaderboard.getTotalPoints(c[1], later), 0.000000001); assertEquals(rankedCompetitors.indexOf(c[0]), rankedCompetitors.indexOf(c[1])-1); @@ -1422,13 +1421,18 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { assertEquals(0., leaderboard1.getTotalPoints(c[3], beforeStartOfR1), 0.00000001); // not even the R1 scores apply before the start time of R1 } - private TimePoint createAndAttachTrackedRaces(Series theSeries, String fleetName, Competitor[]... competitorLists) { + private TimePoint createAndAttachTrackedRaces(Series theSeries, String fleetName, boolean withScores, Competitor[]... competitorLists) { TimePoint now = MillisecondsTimePoint.now(); TimePoint later = new MillisecondsTimePoint(now.asMillis()+1000); Iterator columnIter = theSeries.getRaceColumns().iterator(); for (Competitor[] competitorList : competitorLists) { RaceColumn raceColumn = columnIter.next(); - TrackedRace trackedRace = new MockedTrackedRaceWithStartTimeAndRanks(now, Arrays.asList(competitorList)); + final TrackedRace trackedRace; + if (withScores) { + trackedRace = new MockedTrackedRaceWithStartTimeAndRanks(now, Arrays.asList(competitorList)); + } else { + trackedRace = new MockedTrackedRaceWithStartTimeAndZeroRanks(now, Arrays.asList(competitorList)); + } raceColumn.setTrackedRace(raceColumn.getFleetByName(fleetName), trackedRace); } return later; diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndZeroRanks.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndZeroRanks.java new file mode 100644 index 00000000000..9576f2badc4 --- /dev/null +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndZeroRanks.java @@ -0,0 +1,40 @@ +package com.sap.sailing.domain.test.mock; + +import java.util.List; + +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.Regatta; +import com.sap.sailing.domain.common.NoWindException; +import com.sap.sse.common.TimePoint; + +/** + * Returns 0 for {@link #getRank(Competitor)} and {@link #getRank(Competitor, TimePoint)} in all cases. Still, the competitor + * set participating in this race is maintained. This can be used, e.g., to mock a race that hasn't started yet and therefore + * the competitors have no rank yet. + * + * @author Axel Uhl (d043530) + * + */ +public class MockedTrackedRaceWithStartTimeAndZeroRanks extends MockedTrackedRaceWithStartTimeAndRanks { + private static final long serialVersionUID = 7726627832998127727L; + + protected MockedTrackedRaceWithStartTimeAndZeroRanks(TimePoint startTime, + List competitors, Regatta regatta) { + super(startTime, competitors, regatta); + } + + public MockedTrackedRaceWithStartTimeAndZeroRanks(TimePoint startTime, List competitors) { + super(startTime, competitors); + } + + @Override + public int getRank(Competitor competitor) throws NoWindException { + return 0; + } + + @Override + public int getRank(Competitor competitor, TimePoint timePoint) { + return 0; + } + +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java index b1835265c89..4394aa7f094 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java @@ -20,9 +20,9 @@ import com.sap.sse.common.Util; * regatta is divided into "eliminations" where each elimination consists of a sequence of "rounds." Each round is in * turn divided into a number of "heats" (races). The final round in an elimination consists of a "final" race and a * "losers final" race. They constitute, in our terminology, one series with contiguous scoring. The winner of the - * "losers final" gets one point more than the competitor ranking last in the "final" race. The winner of the final - * race obtains 0.7 points. All other ranks are assigned points equal to the rank or the average of the ranks attained - * by competitors ranking equal. + * "losers final" gets one point more than the competitor ranking last in the "final" race. The winner of the final race + * obtains 0.7 points. All other ranks are assigned points equal to the rank or the average of the ranks attained by + * competitors ranking equal. *

* * The semi-final has two heats, and the better half of the competitors in those heats get promoted to the "final," the @@ -30,15 +30,20 @@ import com.sap.sse.common.Util; * (exceptions for races not sailed see below). *

* - * In the quarter-final there are four heats. The competitors ranking in the top half of their heat are promoted to the - * semi-final and are not awarded points for the quarter-final round (exceptions for races not sailed see below). Those - * ranking in the bottom half of their heat are not promoted to the next round and are instead awarded points for the - * elimination based on their rank in their heat. Across all quarter-final heats, competitors not promoted and having - * the same rank obtain equal points regardless their heat. The number of points is calculated as the average of their - * rank in the elimination. Quarter-final participants rank better than those eliminated in earlier rounds. Eliminated - * competitors rank better in the elimination if they obtained a better rank in their heat than other competitors - * eliminated in the same round. For example, if each of the four quarter-final heat has eight competitors, the - * four competitors ranking last (8th) in their heat get the average points for ranks 29-32 (30.5 points), whereas + * In the quarter-final there are four heats. Usually, the competitors ranking in the top half of their heat are + * promoted to the semi-final and are not awarded points for the quarter-final round (exceptions for races not sailed + * see below). However, the race committee may decide how many competitors are promoted, also based on the number of + * participant and resulting number and set-up of heats. Therefore, successful promotion can only be detected by looking + * at the competitor assignments in the next round. + *

+ * + * Those competitors ranking in the bottom part of their heat are not promoted to the next round and are instead awarded + * points for the elimination based on their rank in their heat. Across all quarter-final heats, competitors not + * promoted and having the same rank obtain equal points regardless their heat. The number of points is calculated as + * the average of their rank in the elimination. Quarter-final participants rank better than those eliminated in earlier + * rounds. Eliminated competitors rank better in the elimination if they obtained a better rank in their heat than other + * competitors eliminated in the same round. For example, if each of the four quarter-final heat has eight competitors, + * the four competitors ranking last (8th) in their heat get the average points for ranks 29-32 (30.5 points), whereas * the four competitors ranking 7th in their heat get the average points for ranks 25-28 (26.5 points), and so on. *

* @@ -46,13 +51,24 @@ import com.sap.sse.common.Util; *

* * Should a planned heat not be sailed then all competitors assigned to that heat will obtain equal points based on the - * average of the ranks for which they would have sailed. For example, if the final heat cannot be sailed, all competitors - * who qualified for the final race obtain the average of 0.7, 2, 3, 4, 5, 6, 7 and 8 points (4.46 points).

+ * average of the ranks for which they would have sailed. For example, if the final heat cannot be sailed, all + * competitors who qualified for the final race obtain the average of 0.7, 2, 3, 4, 5, 6, 7 and 8 points (4.46 points). + *

* - * The regatta is expected to be modeled such that fleet ordering numbers are used in a special way. Ordering 1 - * is to be used to identify the Final heat, 2 for the Losers Final heat. For each earlier round the - * ordering is increased by one and applied equally to all heats of that round. Therefore, the two semi-final heats - * use ordering 3, the four quarter-final heats use 4, and so on. + * During live tracking promotions cannot generally be decided due to the race committee's decision authority. + * Therefore, also those competitors who ultimately will be promoted have to be given scores in their heat based on the + * average points obtained by all competitors taking the same rank in their respective heat in the same round. This will + * usually lead to a change in points awarded to the competitors promoted as soon as the promotion becomes "official" + * which technically needs to be expressed by assigning the competitors to their heat in the next round. As soon as this + * happens, the scores in the heat from which a competitor got promoted are set to null, and a score + * corresponding to the average points given to the competitors of the heat to which the competitor got promoted is + * inferred for that heat. Only when the race in that next heat produces non-zero ranks, the scoring rules for that + * heat are applied again normally.

+ * + * The regatta is expected to be modeled such that fleet ordering numbers are used in a special way. Ordering + * 1 is to be used to identify the Final heat, 2 for the Losers Final heat. For each earlier + * round the ordering is increased by one and applied equally to all heats of that round. Therefore, the two semi-final + * heats use ordering 3, the four quarter-final heats use 4, and so on. * * @author Axel Uhl (d043530) * @@ -68,38 +84,48 @@ public class LowPointWithEliminationsAndRoundsWinnerGets07 extends LowPoint { } /** - * A competitor will obtain a score in a column if she has no score in any of the subsequent columns of the same + * A competitor will obtain a score in a column if she obtained an explicit score correction for that column or if + * she is assigned to a race linked to that column and has no score in any of the subsequent columns of the same * elimination. Assuming that each series has a single race column only, the next column is identical to the single * race column of the next series. If the raceColumn is the last column (representing the last round) - * of the elimination, the round is a final round, and all competitors participating in any of the races linked to - * any of the fleets in that column are eligible to receive a score in that column. + * of the elimination (identified by being the last series in the regatta or having fleet ordering numbers less than + * the fleet ordering of the next column), the round is a final round, and all competitors participating in any of + * the races linked to any of the fleets in that column are eligible to receive a score in that column. *

* * The rationale behind this rule is that if a competitor got promoted to the next round of the elimination, no - * score will be assigned to that competitor in the round from which she got promoted unless the next heat that - * the competitor would have raced in is not sailed, in which case average points will be assigned to all competitors - * promoted to the heat that did not get sailed. + * score will be assigned to that competitor in the round from which she got promoted. */ private boolean competitorGetsScoreInColumn(Leaderboard leaderboard, RaceColumnInSeries raceColumn, Competitor competitor, TimePoint timePoint) { final Series series = raceColumn.getSeries(); final Regatta regatta = series.getRegatta(); - boolean foundColumn = false; - boolean result = true; - // remember the ordering of any heat in raceColumn; the next column that has a greater ordering - // belongs to the next elimination - final int heatOrdering = raceColumn.getFleets().iterator().next().getOrdering(); - for (Series seriesInRegatta : regatta.getSeries()) { - if (foundColumn && series.getFleets().iterator().next().getOrdering() > heatOrdering) { - // reached next elimination; abort - break; - } - if (!foundColumn && seriesInRegatta == series) { - foundColumn = true; - } else { - if (foundColumn && hasScoreInSeries(leaderboard, competitor, seriesInRegatta, timePoint)) { - result = false; + boolean result; + if (leaderboard.getScoreCorrection().isScoreCorrected(competitor, raceColumn, timePoint)) { + // explicit score provided for competitor in raceColumn; this overrules everything else + result = true; + } else if (raceColumn.getFleetOfCompetitor(competitor) == null) { + // competitor is not assigned to any race in this column; no points will be awarded unless explicitly corrected + // which is the case handled by the previous "if" statement + result = false; + } else { + result = true; + // remember the ordering of any heat in raceColumn; the next column that has a greater ordering + // belongs to the next elimination + final int heatOrdering = raceColumn.getFleets().iterator().next().getOrdering(); + boolean foundColumn = false; + for (Series seriesInRegatta : regatta.getSeries()) { + if (foundColumn && series.getFleets().iterator().next().getOrdering() > heatOrdering) { + // reached next elimination; abort break; } + if (!foundColumn && seriesInRegatta == series) { + foundColumn = true; + } else { + if (foundColumn && hasScoreInSeries(leaderboard, competitor, seriesInRegatta, timePoint)) { + result = false; + break; + } + } } } return result; @@ -117,9 +143,19 @@ public class LowPointWithEliminationsAndRoundsWinnerGets07 extends LowPoint { assert raceColumn instanceof RaceColumnInSeries; final Double result; if (rank == 0) { + // Note that 0 can mean the race hasn't started but can also mean that the competitor is not assigned to any TrackedRace in the raceColumn + // FIXME this is not correct in case the competitor is assigned to the heat, is not assigned to heats in subsequent rounds and the race has not started yet; then, average points are to be awarded to be consistent with the case that the race is not sailed at all result = null; } else if (isFinalRound((RaceColumnInSeries) raceColumn)) { final int effectiveRank = getEffectiveRank(raceColumn, competitor, rank); + // FIXME presumably assign 0.7 only if the final race has actually been raced; otherwise, assign average of 1..n for the n participants of the final race + + // Clarified with Juergen Bonne in an e-mail as of 18-09-2015T09:03:00Z that a final race's winner + // is scored with 0.7 only if the final race has actually been sailed. If the competitors are qualified + // for the final race but it's not sailed, average scores are to be assigned to all competitors qualified + // for the final race, but this average assumes 1.0 points for the first rank instead of the 0.7 assigned + // to the winner if the race is actually sailed. + result = effectiveRank == 0 ? null : effectiveRank == 1 ? 0.7 : (double) effectiveRank; } else if (competitorGetsScoreInColumn(leaderboard, (RaceColumnInSeries) raceColumn, competitor, timePoint)) { // calculate the average rank or all competitors with the same rank in their respective heat in the round From 745125e314b0cc2ed587503935dc5532ed9e5d3b Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Fri, 18 Sep 2015 15:08:23 +0200 Subject: [PATCH 289/504] The page size of filter selection tables is now unlimited (exactly Integer.MAX_VALUE) --- .../datamining/selection/filter/FilterableSelectionTable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/FilterableSelectionTable.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/FilterableSelectionTable.java index 7da3c0992ca..9d09fb0f5cc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/FilterableSelectionTable.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/FilterableSelectionTable.java @@ -35,7 +35,7 @@ public class FilterableSelectionTable { allData = new ArrayList(); - table = new CellTable<>(); + table = new CellTable<>(Integer.MAX_VALUE); table.setWidth("100%"); table.setAutoHeaderRefreshDisabled(true); table.setAutoFooterRefreshDisabled(true); From 340acd70b15d036eefd2ed88e12bc5ae085e3537 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Fri, 18 Sep 2015 16:23:48 +0200 Subject: [PATCH 290/504] Implemented a central control for the data mining UI settings --- .../AnchorDataMiningSettingsControl.java | 105 ++++++++++++++++++ .../ui/datamining/DataMiningEntryPoint.java | 28 +---- .../datamining/DataMiningSettingsControl.java | 11 ++ ...ngQueryDefinitionProviderWithControls.java | 84 +++++++------- ... => CompositeTabbedSettingsComponent.java} | 8 +- .../CompositeTabbedSettingsDialog.java | 2 +- ...mpositeTabbedSettingsDialogComponent.java} | 4 +- 7 files changed, 170 insertions(+), 72 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/AnchorDataMiningSettingsControl.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningSettingsControl.java rename java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/{CompositeSettingsComponent.java => CompositeTabbedSettingsComponent.java} (88%) rename java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/{CompositeSettingsDialogComponent.java => CompositeTabbedSettingsDialogComponent.java} (91%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/AnchorDataMiningSettingsControl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/AnchorDataMiningSettingsControl.java new file mode 100644 index 00000000000..2fce9abb3a4 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/AnchorDataMiningSettingsControl.java @@ -0,0 +1,105 @@ +package com.sap.sailing.gwt.ui.datamining; + +import java.util.HashSet; +import java.util.Set; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.ui.AbstractImagePrototype; +import com.google.gwt.user.client.ui.Anchor; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.common.settings.Settings; +import com.sap.sse.gwt.client.shared.components.Component; +import com.sap.sse.gwt.client.shared.components.ComponentResources; +import com.sap.sse.gwt.client.shared.components.CompositeSettings; +import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair; +import com.sap.sse.gwt.client.shared.components.CompositeTabbedSettingsDialogComponent; +import com.sap.sse.gwt.client.shared.components.SettingsDialog; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; + +public class AnchorDataMiningSettingsControl implements DataMiningSettingsControl { + public static final ComponentResources resources = GWT.create(ComponentResources.class); + + private final StringMessages stringMessages; + private final Set> components; + private final Anchor anchor; + + public AnchorDataMiningSettingsControl(final StringMessages stringMessages) { + this.stringMessages = stringMessages; + components = new HashSet<>(); + + anchor = new Anchor(AbstractImagePrototype.create(resources.darkSettingsIcon()).getSafeHtml()); + anchor.addStyleName("settingsAnchor"); + anchor.setTitle(stringMessages.dataMiningSettings()); + anchor.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + new SettingsDialog<>(AnchorDataMiningSettingsControl.this, stringMessages).show(); + } + }); + } + + @Override + public void addSettingsComponent(Component component) { + components.add(component); + } + + @Override + public void removeSettingsComponent(Component component) { + components.remove(component); + } + + @Override + public String getLocalizedShortName() { + return stringMessages.dataMiningSettings(); + } + + @Override + public Widget getEntryWidget() { + return anchor; + } + + @Override + public boolean isVisible() { + return anchor.isVisible(); + } + + @Override + public void setVisible(boolean visibility) { + anchor.setVisible(visibility); + } + + @Override + public boolean hasSettings() { + for (Component component : components) { + if (component.hasSettings()) { + return true; + } + } + return false; + } + + @Override + public SettingsDialogComponent getSettingsDialogComponent() { + return new CompositeTabbedSettingsDialogComponent(components); + } + + @Override + public void updateSettings(CompositeSettings newSettings) { + for (CompositeSettings.ComponentAndSettingsPair componentAndSettings : newSettings.getSettingsPerComponent()) { + updateSettings(componentAndSettings); + } + } + + private void updateSettings(ComponentAndSettingsPair componentAndSettings) { + componentAndSettings.getA().updateSettings(componentAndSettings.getB()); + } + + @Override + public String getDependentCssClassName() { + return "AnchorDataMiningSettingsControl"; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java index 797ca7ff269..5c9dc381bf3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningEntryPoint.java @@ -1,16 +1,10 @@ package com.sap.sailing.gwt.ui.datamining; -import java.util.Collection; -import java.util.HashSet; import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Unit; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.rpc.ServiceDefTarget; -import com.google.gwt.user.client.ui.AbstractImagePrototype; -import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.DockLayoutPanel; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.RootLayoutPanel; @@ -25,9 +19,7 @@ import com.sap.sailing.gwt.ui.datamining.selection.BufferingQueryDefinitionProvi import com.sap.sse.datamining.shared.DataMiningSession; import com.sap.sse.datamining.shared.impl.UUIDDataMiningSession; import com.sap.sse.gwt.client.EntryPointHelper; -import com.sap.sse.gwt.client.shared.components.Component; import com.sap.sse.gwt.client.shared.components.ComponentResources; -import com.sap.sse.gwt.client.shared.components.CompositeTabbedSettingsDialog; import com.sap.sse.gwt.resources.Highcharts; public class DataMiningEntryPoint extends AbstractSailingEntryPoint { @@ -48,10 +40,13 @@ public class DataMiningEntryPoint extends AbstractSailingEntryPoint { RootLayoutPanel rootPanel = RootLayoutPanel.get(); SplitLayoutPanel splitPanel = new SplitLayoutPanel(15); rootPanel.add(splitPanel); + + DataMiningSettingsControl settingsControl = new AnchorDataMiningSettingsControl(getStringMessages()); DockLayoutPanel selectionDockPanel = new DockLayoutPanel(Unit.PX); selectionDockPanel.addNorth(createLogoAndTitlePanel(), 68); - BufferingQueryDefinitionProviderWithControls queryDefinitionProviderWithControls = new BufferingQueryDefinitionProviderWithControls(session, getStringMessages(), dataMiningService, this); + BufferingQueryDefinitionProviderWithControls queryDefinitionProviderWithControls = + new BufferingQueryDefinitionProviderWithControls(session, getStringMessages(), dataMiningService, this, settingsControl); queryDefinitionProviderWithControls.getEntryWidget().addStyleName("dataMiningPanel"); selectionDockPanel.add(queryDefinitionProviderWithControls.getEntryWidget()); @@ -62,20 +57,7 @@ public class DataMiningEntryPoint extends AbstractSailingEntryPoint { final QueryRunner queryRunner = new SimpleQueryRunner(session, getStringMessages(), dataMiningService, this, queryDefinitionProviderWithControls, resultsPresenter); queryDefinitionProviderWithControls.addControl(queryRunner.getEntryWidget()); - - Anchor settingsAnchor = new Anchor(AbstractImagePrototype.create(resources.darkSettingsIcon()).getSafeHtml()); - settingsAnchor.addStyleName("settingsAnchor"); - settingsAnchor.setTitle(getStringMessages().settings()); - settingsAnchor.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - Collection> components = new HashSet<>(); - components.add(queryRunner); - components.add(resultsPresenter); - new CompositeTabbedSettingsDialog(getStringMessages(), components, getStringMessages().dataMining()).show(); - } - }); - queryDefinitionProviderWithControls.addControl(settingsAnchor); + settingsControl.addSettingsComponent(queryRunner); } private LogoAndTitlePanel createLogoAndTitlePanel() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningSettingsControl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningSettingsControl.java new file mode 100644 index 00000000000..83bae4c7cd0 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningSettingsControl.java @@ -0,0 +1,11 @@ +package com.sap.sailing.gwt.ui.datamining; + +import com.sap.sse.gwt.client.shared.components.Component; +import com.sap.sse.gwt.client.shared.components.CompositeSettings; + +public interface DataMiningSettingsControl extends Component { + + void addSettingsComponent(Component component); + void removeSettingsComponent(Component component); + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/BufferingQueryDefinitionProviderWithControls.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/BufferingQueryDefinitionProviderWithControls.java index cfdd5653d73..095ba2de703 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/BufferingQueryDefinitionProviderWithControls.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/BufferingQueryDefinitionProviderWithControls.java @@ -21,6 +21,7 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.datamining.DataMiningComponentProvider; import com.sap.sailing.gwt.ui.datamining.DataMiningServiceAsync; +import com.sap.sailing.gwt.ui.datamining.DataMiningSettingsControl; import com.sap.sailing.gwt.ui.datamining.DataRetrieverChainDefinitionChangedListener; import com.sap.sailing.gwt.ui.datamining.DataRetrieverChainDefinitionProvider; import com.sap.sailing.gwt.ui.datamining.FilterSelectionChangedListener; @@ -58,16 +59,18 @@ public class BufferingQueryDefinitionProviderWithControls extends AbstractQueryD private final Timer queryDefinitionReleaseTimer; private final DockLayoutPanel mainPanel; - private FlowPanel controlsPanel; + private final FlowPanel controlsPanel; + private final DataMiningSettingsControl settingsControl; private final ProviderListener providerListener; private final Collection providers; - private DataRetrieverChainDefinitionProvider retrieverChainProvider; - private StatisticProvider statisticProvider; - private GroupingProvider groupingProvider; - private FilterSelectionProvider filterSelectionProvider; + private final DataRetrieverChainDefinitionProvider retrieverChainProvider; + private final StatisticProvider statisticProvider; + private final GroupingProvider groupingProvider; + private final FilterSelectionProvider filterSelectionProvider; - public BufferingQueryDefinitionProviderWithControls(DataMiningSession session, StringMessages stringMessages, DataMiningServiceAsync dataMiningService, ErrorReporter errorReporter) { + public BufferingQueryDefinitionProviderWithControls(DataMiningSession session, StringMessages stringMessages, + DataMiningServiceAsync dataMiningService, ErrorReporter errorReporter, DataMiningSettingsControl settingsControl) { super(stringMessages, dataMiningService, errorReporter); providerListener = new ProviderListener(); queryDefinitionReleaseTimer = new Timer() { @@ -77,33 +80,12 @@ public class BufferingQueryDefinitionProviderWithControls extends AbstractQueryD } }; - // The header panel has to be created before the footer panel, because the component provider in the footer panel depend on - // the retriever chain provider. To be more exact: The retriever chain provider mustn't be null, when createFooterPanel() is called. - Widget headerPanel = createHeaderPanel(); - - SplitLayoutPanel filterSplitPanel = new SplitLayoutPanel(15); - filterSplitPanel.addSouth(createFooterPanel(), footerPanelHeight); - filterSelectionProvider = new ListRetrieverChainFilterSelectionProvider(session, stringMessages, dataMiningService, errorReporter, retrieverChainProvider); - filterSelectionProvider.addSelectionChangedListener(providerListener); - filterSplitPanel.add(filterSelectionProvider.getEntryWidget()); - - mainPanel = new DockLayoutPanel(Unit.PX); - mainPanel.addNorth(headerPanel, headerPanelHeight); - mainPanel.add(filterSplitPanel); - - providers = new ArrayList<>(); - providers.add(retrieverChainProvider); - providers.add(statisticProvider); - providers.add(groupingProvider); - providers.add(filterSelectionProvider); - } - - private Widget createHeaderPanel() { - retrieverChainProvider = new SimpleDataRetrieverChainDefinitionProvider(getStringMessages(), getDataMiningService(), getErrorReporter()); - retrieverChainProvider.addDataRetrieverChainDefinitionChangedListener(providerListener); - + // Creating the header panel, that contains the retriever chain provider and the controls controlsPanel = new FlowPanel(); controlsPanel.addStyleName("definitionProviderControls"); + + this.settingsControl = settingsControl; + addControl(this.settingsControl.getEntryWidget()); Button clearSelectionButton = new Button(this.getStringMessages().clearSelection()); clearSelectionButton.addClickHandler(new ClickHandler() { @@ -122,24 +104,42 @@ public class BufferingQueryDefinitionProviderWithControls extends AbstractQueryD } }); addControl(reloadButton); - - SplitLayoutPanel headerSplitPanel = new SplitLayoutPanel(15); - headerSplitPanel.addWest(retrieverChainProvider.getEntryWidget(), 600); - headerSplitPanel.add(controlsPanel); - return headerSplitPanel; - } - private Widget createFooterPanel() { + retrieverChainProvider = new SimpleDataRetrieverChainDefinitionProvider(getStringMessages(), getDataMiningService(), getErrorReporter()); + retrieverChainProvider.addDataRetrieverChainDefinitionChangedListener(providerListener); + + SplitLayoutPanel headerPanel = new SplitLayoutPanel(15); + headerPanel.addWest(retrieverChainProvider.getEntryWidget(), 600); + headerPanel.add(controlsPanel); + + // Creating the footer panel, that contains the statistic provider and the grouping provider statisticProvider = new SimpleStatisticProvider(getStringMessages(), getDataMiningService(), getErrorReporter(), retrieverChainProvider); statisticProvider.addStatisticChangedListener(providerListener); groupingProvider = new MultiDimensionalGroupingProvider(getStringMessages(), getDataMiningService(), getErrorReporter(), statisticProvider); groupingProvider.addGroupingChangedListener(providerListener); - SplitLayoutPanel controlsSplitPanel = new SplitLayoutPanel(15); - controlsSplitPanel.addEast(new ScrollPanel(statisticProvider.getEntryWidget()), 400); - controlsSplitPanel.add(new ScrollPanel(groupingProvider.getEntryWidget())); - return controlsSplitPanel; + SplitLayoutPanel footerPanel = new SplitLayoutPanel(15); + footerPanel.addEast(new ScrollPanel(statisticProvider.getEntryWidget()), 400); + footerPanel.add(new ScrollPanel(groupingProvider.getEntryWidget())); + + // Composing the different components + SplitLayoutPanel filterSplitPanel = new SplitLayoutPanel(15); + filterSplitPanel.addSouth(footerPanel, footerPanelHeight); + filterSelectionProvider = new ListRetrieverChainFilterSelectionProvider(session, stringMessages, dataMiningService, errorReporter, retrieverChainProvider); + filterSelectionProvider.addSelectionChangedListener(providerListener); + filterSplitPanel.add(filterSelectionProvider.getEntryWidget()); + + mainPanel = new DockLayoutPanel(Unit.PX); + mainPanel.addNorth(headerPanel, headerPanelHeight); + mainPanel.add(filterSplitPanel); + + // Storing the different component providers in a list + providers = new ArrayList<>(); + providers.add(retrieverChainProvider); + providers.add(statisticProvider); + providers.add(groupingProvider); + providers.add(filterSelectionProvider); } private void scheduleQueryDefinitionChanged() { diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsComponent.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsComponent.java similarity index 88% rename from java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsComponent.java rename to java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsComponent.java index d3cb3aadcec..b7383e21e9c 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsComponent.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsComponent.java @@ -9,16 +9,16 @@ import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSe * * @author Axel Uhl (d043530), Lennart Hensler (D054527) */ -public class CompositeSettingsComponent implements Component { +public class CompositeTabbedSettingsComponent implements Component { private final Iterable> components; private final String title; - public CompositeSettingsComponent(Iterable> components) { + public CompositeTabbedSettingsComponent(Iterable> components) { this(components, null); } - public CompositeSettingsComponent(Iterable> components, String title) { + public CompositeTabbedSettingsComponent(Iterable> components, String title) { this.components = components; this.title = title; } @@ -35,7 +35,7 @@ public class CompositeSettingsComponent implements Component @Override public SettingsDialogComponent getSettingsDialogComponent() { - return new CompositeSettingsDialogComponent(components); + return new CompositeTabbedSettingsDialogComponent(components); } @Override diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialog.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialog.java index 1db4e9bcc1f..91da528b900 100755 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialog.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialog.java @@ -16,7 +16,7 @@ public class CompositeTabbedSettingsDialog extends SettingsDialog> components, final String title) { - super(new CompositeSettingsComponent(components, title), stringConstants); + super(new CompositeTabbedSettingsComponent(components, title), stringConstants); } } diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsDialogComponent.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialogComponent.java similarity index 91% rename from java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsDialogComponent.java rename to java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialogComponent.java index 7d5f7f266d2..3d1598ca81d 100755 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeSettingsDialogComponent.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialogComponent.java @@ -13,12 +13,12 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog; import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair; -public class CompositeSettingsDialogComponent implements SettingsDialogComponent { +public class CompositeTabbedSettingsDialogComponent implements SettingsDialogComponent { private final Collection> components; private final Map, SettingsDialogComponent> dialogComponents; - public CompositeSettingsDialogComponent(Iterable> components) { + public CompositeTabbedSettingsDialogComponent(Iterable> components) { this.components = new HashSet<>(); for (Component component : components) { if (component.hasSettings()) { From f68ec50ff09820e88391ac9205374f93bd42d1ef Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Fri, 18 Sep 2015 17:11:53 +0200 Subject: [PATCH 291/504] Fixed a NPE during the filter selection provider update --- .../presentation/PlainFilterSelectionPresenter.java | 2 +- .../filter/ListRetrieverChainFilterSelectionProvider.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainFilterSelectionPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainFilterSelectionPresenter.java index 0af678fd269..53a50c53c49 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainFilterSelectionPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/PlainFilterSelectionPresenter.java @@ -89,7 +89,7 @@ public class PlainFilterSelectionPresenter implements FilterSelectionPresenter, Label levelLabel = new Label(retrieverLevel.getRetrievedDataType().getDisplayName()); levelLabel.getElement().getStyle().setFontWeight(FontWeight.BOLD); - levelLabel.setWidth("75px"); + levelLabel.setWidth("100px"); VerticalPanel presentationPanel = new VerticalPanel(); List sortedDimensions = new ArrayList<>(levelSelection.keySet()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/ListRetrieverChainFilterSelectionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/ListRetrieverChainFilterSelectionProvider.java index b313f2333fe..f2dd5cfe23a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/ListRetrieverChainFilterSelectionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/ListRetrieverChainFilterSelectionProvider.java @@ -186,13 +186,13 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio void updateFilterSelectionProviders(DataRetrieverLevelDTO beginningWithLevel, final FunctionDTO exceptForDimension) { DataRetrieverLevelDTO currentLevel = beginningWithLevel; DataRetrieverLevelDTO retrieverLevelToUpdate = null; - do { + while (currentLevel != null) { if (selectionProvidersMappedByRetrievedDataType.containsKey(currentLevel)) { retrieverLevelToUpdate = currentLevel; break; } currentLevel = retrieverChain.getNextRetrieverLevel(currentLevel); - } while (currentLevel != null); + } if (retrieverLevelToUpdate != null) { selectionProvidersMappedByRetrievedDataType.get(retrieverLevelToUpdate).updateAvailableData(exceptForDimension); From c29b409e6a2701397b957664c5b38b3ee965d106 Mon Sep 17 00:00:00 2001 From: Papick Garcia Taboada Date: Sat, 19 Sep 2015 17:34:54 +0200 Subject: [PATCH 292/504] Fixed UI for very long names (workaround) --- .../place/event/partials/regattaHeader/RegattaHeader.gss | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaHeader/RegattaHeader.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaHeader/RegattaHeader.gss index 52b6701c6da..51df4410465 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaHeader/RegattaHeader.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/regattaHeader/RegattaHeader.gss @@ -31,8 +31,10 @@ vertical-align: middle; } .regattaheader_content { - float: left; - width: 60%; +/* float: left; */ + display: inline-block; + width: calc(100% - 4em); + white-space: nowrap; overflow: hidden; border-left: 1px solid #ccc; margin-left: 0.666666666666667em; @@ -43,9 +45,12 @@ font-weight: 700; height: 1.363636363636364em; line-height: 1.363636363636364em; + overflow: hidden; } .regattaheader_content_details { height: 1.333333333333333em; + overflow: hidden; + white-space: nowrap; } .regattaheader_content_details_item { float: left; From 4fbedd3480f44bcc2778a28272bf0b24c1bcc939 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Sun, 20 Sep 2015 16:45:40 +0200 Subject: [PATCH 293/504] Implemented composite settings for the data mining --- .../DataMiningComponentProvider.java | 4 +- .../ui/datamining/DataMiningSettingsInfo.java | 13 ++ .../DataMiningSettingsInfoManager.java | 46 +++++++ .../DataRetrieverChainDefinitionProvider.java | 8 +- .../datamining/FilterSelectionProvider.java | 4 +- .../gwt/ui/datamining/GroupingProvider.java | 3 +- .../datamining/QueryDefinitionProvider.java | 3 +- .../gwt/ui/datamining/StatisticProvider.java | 3 +- ...ngQueryDefinitionProviderWithControls.java | 8 +- .../RetrieverLevelSettingsComponent.java | 52 ++++++++ ...eDataRetrieverChainDefinitionProvider.java | 113 +++++++++--------- ...RetrieverChainFilterSelectionProvider.java | 13 +- .../dto/DataRetrieverChainDefinitionDTO.java | 1 - 13 files changed, 190 insertions(+), 81 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningSettingsInfo.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningSettingsInfoManager.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/RetrieverLevelSettingsComponent.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningComponentProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningComponentProvider.java index 333054ffa18..633b80256c4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningComponentProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningComponentProvider.java @@ -1,9 +1,9 @@ package com.sap.sailing.gwt.ui.datamining; -import com.sap.sse.common.settings.SerializableSettings; +import com.sap.sse.common.settings.Settings; import com.sap.sse.gwt.client.shared.components.Component; -public interface DataMiningComponentProvider extends Component { +public interface DataMiningComponentProvider extends Component { /** * Tells the provider, that {@link #reloadComponents()} will be called in the future. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningSettingsInfo.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningSettingsInfo.java new file mode 100644 index 00000000000..2b3cfe885dd --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningSettingsInfo.java @@ -0,0 +1,13 @@ +package com.sap.sailing.gwt.ui.datamining; + +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.common.settings.SerializableSettings; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; + +public interface DataMiningSettingsInfo { + + SettingsDialogComponent createSettingsDialogComponent(SettingsType settings); + + String getLocalizedName(StringMessages stringMessages); + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningSettingsInfoManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningSettingsInfoManager.java new file mode 100644 index 00000000000..025a1f61d3b --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataMiningSettingsInfoManager.java @@ -0,0 +1,46 @@ +package com.sap.sailing.gwt.ui.datamining; + +import java.util.HashMap; +import java.util.Map; + +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.polarmining.PolarDataMiningSettingsDialogComponent; +import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; +import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettingsImpl; +import com.sap.sse.common.settings.SerializableSettings; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; + +public class DataMiningSettingsInfoManager { + + private final Map, DataMiningSettingsInfo> infosMappedBySettingsType; + + public DataMiningSettingsInfoManager() { + infosMappedBySettingsType = new HashMap<>(); + + // GWT doesn't support Class.isAssignableFrom and Class.getInterfaces. + // Adding every implementation of the desired type is necessary. + PolarDataMiningSettingsInfo polarDataMiningSettingsInfo = new PolarDataMiningSettingsInfo(); + infosMappedBySettingsType.put(PolarDataMiningSettings.class, polarDataMiningSettingsInfo); + infosMappedBySettingsType.put(PolarDataMiningSettingsImpl.class, polarDataMiningSettingsInfo); + } + + public DataMiningSettingsInfo getSettingsInfo(Class settingsType) { + return infosMappedBySettingsType.get(settingsType); + } + + private class PolarDataMiningSettingsInfo implements DataMiningSettingsInfo { + + @SuppressWarnings("unchecked") + @Override + public SettingsDialogComponent createSettingsDialogComponent(SettingsType settings) { + return (SettingsDialogComponent) new PolarDataMiningSettingsDialogComponent((PolarDataMiningSettings) settings); + } + + @Override + public String getLocalizedName(StringMessages stringMessages) { + return stringMessages.polars(); + } + + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataRetrieverChainDefinitionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataRetrieverChainDefinitionProvider.java index 8ff97dbef9a..35ea8eacda0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataRetrieverChainDefinitionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/DataRetrieverChainDefinitionProvider.java @@ -6,8 +6,9 @@ import com.sap.sse.common.settings.SerializableSettings; import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO; +import com.sap.sse.gwt.client.shared.components.CompositeSettings; -public interface DataRetrieverChainDefinitionProvider extends DataMiningComponentProvider { +public interface DataRetrieverChainDefinitionProvider extends DataMiningComponentProvider { public DataRetrieverChainDefinitionDTO getDataRetrieverChainDefinition(); @@ -15,7 +16,10 @@ public interface DataRetrieverChainDefinitionProvider extends DataMiningComponen public void applyQueryDefinition(StatisticQueryDefinitionDTO queryDefinition); - // TODO This is just a quick fix. Delete, after the settings have been improved. + /** + * @return The settings of the {@link #getDataRetrieverChainDefinition() current retriever definition} or an + * empty Map, if the retriever definition doesn't have any settings; + */ public HashMap getRetrieverSettings(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/FilterSelectionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/FilterSelectionProvider.java index 52c463af39d..5666f6ab74f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/FilterSelectionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/FilterSelectionProvider.java @@ -9,12 +9,10 @@ import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO; import com.sap.sse.datamining.shared.impl.dto.FunctionDTO; -public interface FilterSelectionProvider extends DataMiningComponentProvider, DataRetrieverChainDefinitionChangedListener { +public interface FilterSelectionProvider extends DataMiningComponentProvider, DataRetrieverChainDefinitionChangedListener { public void addSelectionChangedListener(FilterSelectionChangedListener listener); - public HashMap getRetrieverSettings(); - public HashMap>> getSelection(); public void applySelection(StatisticQueryDefinitionDTO queryDefinition); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/GroupingProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/GroupingProvider.java index e23dc9a842c..24f44cd4e42 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/GroupingProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/GroupingProvider.java @@ -2,10 +2,11 @@ package com.sap.sailing.gwt.ui.datamining; import java.util.Collection; +import com.sap.sse.common.settings.SerializableSettings; import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.FunctionDTO; -public interface GroupingProvider extends DataMiningComponentProvider, StatisticChangedListener{ +public interface GroupingProvider extends DataMiningComponentProvider, StatisticChangedListener{ public Collection getDimensionsToGroupBy(); public String getCustomGrouperScriptText(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/QueryDefinitionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/QueryDefinitionProvider.java index 5fea5555d79..18a89d35a05 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/QueryDefinitionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/QueryDefinitionProvider.java @@ -1,8 +1,9 @@ package com.sap.sailing.gwt.ui.datamining; +import com.sap.sse.common.settings.SerializableSettings; import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO; -public interface QueryDefinitionProvider extends DataMiningComponentProvider { +public interface QueryDefinitionProvider extends DataMiningComponentProvider { public Iterable validateQueryDefinition(StatisticQueryDefinitionDTO queryDefinition); public StatisticQueryDefinitionDTO getQueryDefinition(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/StatisticProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/StatisticProvider.java index c9c328955a8..e10772f1840 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/StatisticProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/StatisticProvider.java @@ -1,10 +1,11 @@ package com.sap.sailing.gwt.ui.datamining; +import com.sap.sse.common.settings.SerializableSettings; import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.AggregationProcessorDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.FunctionDTO; -public interface StatisticProvider extends DataMiningComponentProvider, DataRetrieverChainDefinitionChangedListener { +public interface StatisticProvider extends DataMiningComponentProvider, DataRetrieverChainDefinitionChangedListener { public FunctionDTO getStatisticToCalculate(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/BufferingQueryDefinitionProviderWithControls.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/BufferingQueryDefinitionProviderWithControls.java index 095ba2de703..1af8f7f2926 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/BufferingQueryDefinitionProviderWithControls.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/BufferingQueryDefinitionProviderWithControls.java @@ -63,7 +63,7 @@ public class BufferingQueryDefinitionProviderWithControls extends AbstractQueryD private final DataMiningSettingsControl settingsControl; private final ProviderListener providerListener; - private final Collection providers; + private final Collection> providers; private final DataRetrieverChainDefinitionProvider retrieverChainProvider; private final StatisticProvider statisticProvider; private final GroupingProvider groupingProvider; @@ -105,7 +105,7 @@ public class BufferingQueryDefinitionProviderWithControls extends AbstractQueryD }); addControl(reloadButton); - retrieverChainProvider = new SimpleDataRetrieverChainDefinitionProvider(getStringMessages(), getDataMiningService(), getErrorReporter()); + retrieverChainProvider = new SimpleDataRetrieverChainDefinitionProvider(getStringMessages(), getDataMiningService(), getErrorReporter(), settingsControl); retrieverChainProvider.addDataRetrieverChainDefinitionChangedListener(providerListener); SplitLayoutPanel headerPanel = new SplitLayoutPanel(15); @@ -153,7 +153,7 @@ public class BufferingQueryDefinitionProviderWithControls extends AbstractQueryD @Override public boolean isAwatingReload() { - for (DataMiningComponentProvider provider : providers) { + for (DataMiningComponentProvider provider : providers) { if (provider.isAwatingReload()) { return true; } @@ -179,7 +179,7 @@ public class BufferingQueryDefinitionProviderWithControls extends AbstractQueryD queryDTO.appendDimensionToGroupBy(dimension); } - for (Entry retrieverSettingsEntry : filterSelectionProvider.getRetrieverSettings().entrySet()) { + for (Entry retrieverSettingsEntry : retrieverChainProvider.getRetrieverSettings().entrySet()) { queryDTO.setRetrieverSettings(retrieverSettingsEntry.getKey(), retrieverSettingsEntry.getValue()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/RetrieverLevelSettingsComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/RetrieverLevelSettingsComponent.java new file mode 100644 index 00000000000..bf77cc6c680 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/RetrieverLevelSettingsComponent.java @@ -0,0 +1,52 @@ +package com.sap.sailing.gwt.ui.datamining.selection; + +import com.google.gwt.user.client.ui.Widget; +import com.sap.sse.common.settings.SerializableSettings; +import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO; +import com.sap.sse.gwt.client.shared.components.Component; + +public abstract class RetrieverLevelSettingsComponent implements Component { + + private final DataRetrieverLevelDTO retrieverLevel; + private final String localizedName; + + public RetrieverLevelSettingsComponent(DataRetrieverLevelDTO retrieverLevel, String localizedName) { + this.retrieverLevel = retrieverLevel; + this.localizedName = localizedName; + } + + public DataRetrieverLevelDTO getRetrieverLevel() { + return retrieverLevel; + } + + @Override + public String getLocalizedShortName() { + return localizedName; + } + + @Override + public Widget getEntryWidget() { + throw new RuntimeException("Virtual component doesn't have a widget of its own"); + } + + @Override + public boolean isVisible() { + return false; + } + + @Override + public void setVisible(boolean visibility) { + throw new RuntimeException("Virtual component doesn't know how to make itself visible"); + } + + @Override + public boolean hasSettings() { + return retrieverLevel.hasSettings(); + } + + @Override + public String getDependentCssClassName() { + return null; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java index d9802d474fb..0f44b21e1ca 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java @@ -1,39 +1,38 @@ package com.sap.sailing.gwt.ui.datamining.selection; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.i18n.client.LocaleInfo; import com.google.gwt.text.shared.AbstractRenderer; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.AbstractImagePrototype; -import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ValueListBox; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.datamining.DataMiningEntryPoint; import com.sap.sailing.gwt.ui.datamining.DataMiningServiceAsync; +import com.sap.sailing.gwt.ui.datamining.DataMiningSettingsControl; +import com.sap.sailing.gwt.ui.datamining.DataMiningSettingsInfoManager; import com.sap.sailing.gwt.ui.datamining.DataRetrieverChainDefinitionChangedListener; import com.sap.sailing.gwt.ui.datamining.DataRetrieverChainDefinitionProvider; -import com.sap.sailing.gwt.ui.polarmining.PolarDataMiningSettingsDialogComponent; -import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; import com.sap.sse.common.settings.SerializableSettings; -import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.dto.StatisticQueryDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.DataRetrieverChainDefinitionDTO; import com.sap.sse.datamining.shared.impl.dto.DataRetrieverLevelDTO; import com.sap.sse.gwt.client.ErrorReporter; -import com.sap.sse.gwt.client.shared.components.SettingsDialog; +import com.sap.sse.gwt.client.shared.components.Component; +import com.sap.sse.gwt.client.shared.components.CompositeSettings; +import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair; +import com.sap.sse.gwt.client.shared.components.CompositeTabbedSettingsDialogComponent; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; public class SimpleDataRetrieverChainDefinitionProvider implements DataRetrieverChainDefinitionProvider { @@ -46,18 +45,22 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever private final HorizontalPanel mainPanel; private final ValueListBox retrieverChainsListBox; - private Anchor settingsAnchor; - // TODO FIXME This is currently the only use case for processors with settings. That's why it's hard coded. - private Map settingsMappedByRetrieverChain; + private final DataMiningSettingsInfoManager settingsManager; + private final DataMiningSettingsControl settingsControl; + private final Map> settingsMap; - public SimpleDataRetrieverChainDefinitionProvider(final StringMessages stringMessages, DataMiningServiceAsync dataMiningService, ErrorReporter errorReporter) { + public SimpleDataRetrieverChainDefinitionProvider(final StringMessages stringMessages, DataMiningServiceAsync dataMiningService, + ErrorReporter errorReporter, DataMiningSettingsControl settingsControl) { this.stringMessages = stringMessages; this.dataMiningService = dataMiningService; this.errorReporter = errorReporter; listeners = new HashSet<>(); isAwaitingReload = false; - settingsMappedByRetrieverChain = new HashMap<>(); + settingsManager = new DataMiningSettingsInfoManager(); + this.settingsControl = settingsControl; + this.settingsControl.addSettingsComponent(this); + settingsMap = new HashMap<>(); mainPanel = new HorizontalPanel(); mainPanel.setSpacing(5); @@ -66,18 +69,6 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever retrieverChainsListBox = createRetrieverChainsListBox(); mainPanel.add(retrieverChainsListBox); - settingsAnchor = new Anchor(AbstractImagePrototype.create(DataMiningEntryPoint.resources.darkSettingsIcon()).getSafeHtml()); - settingsAnchor.addStyleName("settingsAnchor"); - settingsAnchor.setTitle(stringMessages.settings()); - settingsAnchor.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - SettingsDialog settingsDialog = new SettingsDialog(SimpleDataRetrieverChainDefinitionProvider.this, stringMessages); - settingsDialog.show(); - } - }); - mainPanel.add(settingsAnchor); - updateRetrieverChains(); } @@ -97,7 +88,7 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever }); return retrieverChainsListBox; } - + @Override public void awaitReloadComponents() { isAwaitingReload = true; @@ -118,9 +109,9 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever new AsyncCallback>() { @Override public void onSuccess(ArrayList dataRetrieverChainDefinitions) { - settingsMappedByRetrieverChain.clear(); + settingsMap.clear(); if (!dataRetrieverChainDefinitions.isEmpty()) { - fillSettings(dataRetrieverChainDefinitions); + fillSettingsMap(dataRetrieverChainDefinitions); Collections.sort(dataRetrieverChainDefinitions); DataRetrieverChainDefinitionDTO currentRetrieverChain = getDataRetrieverChainDefinition(); @@ -148,15 +139,10 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever }); } - private void fillSettings(ArrayList dataRetrieverChainDefinitions) { - for (DataRetrieverChainDefinitionDTO retrieverChain : dataRetrieverChainDefinitions) { + private void fillSettingsMap(ArrayList retrieverChains) { + for (DataRetrieverChainDefinitionDTO retrieverChain : retrieverChains) { if (retrieverChain.hasSettings()) { - // TODO FIXME This is currently the only use case for processors with settings. That's why it's hard coded. - for (SerializableSettings settings : retrieverChain.getDefaultSettings().values()) { - if (settings instanceof PolarDataMiningSettings) { - settingsMappedByRetrieverChain.put(retrieverChain, (PolarDataMiningSettings) settings); - } - } + settingsMap.put(retrieverChain, retrieverChain.getDefaultSettings()); } } } @@ -176,9 +162,6 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever for (DataRetrieverChainDefinitionChangedListener listener : listeners) { listener.dataRetrieverChainDefinitionChanged(dataRetrieverChainDefinition); } - if (dataRetrieverChainDefinition != null) { - settingsAnchor.setVisible(dataRetrieverChainDefinition.hasSettings()); - } } @Override @@ -211,18 +194,13 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever return "simpleDataRetrieverChainDefinition"; } - // TODO This is just a quick fix. Delete, after the settings have been improved. @Override public HashMap getRetrieverSettings() { - HashMap retrieverSettings = new HashMap<>(); - if (settingsMappedByRetrieverChain.containsKey(getDataRetrieverChainDefinition())) { - for (DataRetrieverLevelDTO retrieverLevel : getDataRetrieverChainDefinition().getRetrieverLevels()) { - if (retrieverLevel.getDefaultSettings() instanceof PolarDataMiningSettings) { - retrieverSettings.put(retrieverLevel, settingsMappedByRetrieverChain.get(getDataRetrieverChainDefinition())); - } - } + if (settingsMap.containsKey(getDataRetrieverChainDefinition())) { + return settingsMap.get(getDataRetrieverChainDefinition()); + } else { + return new HashMap<>(); } - return retrieverSettings; } @Override @@ -230,20 +208,39 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever return getDataRetrieverChainDefinition().hasSettings(); } - @SuppressWarnings("unchecked") @Override - public SettingsDialogComponent getSettingsDialogComponent() { - SettingsDialogComponent result = null; - if (settingsMappedByRetrieverChain.containsKey(getDataRetrieverChainDefinition())) { - result = new PolarDataMiningSettingsDialogComponent(settingsMappedByRetrieverChain.get(getDataRetrieverChainDefinition())); + public SettingsDialogComponent getSettingsDialogComponent() { + return new CompositeTabbedSettingsDialogComponent(createSettingsComponentsFor(getDataRetrieverChainDefinition())); + } + + private Iterable> createSettingsComponentsFor(final DataRetrieverChainDefinitionDTO retrieverChain) { + Collection> settingsComponents = new ArrayList<>(); + for (Entry retrieverLevelSettings : settingsMap.get(retrieverChain).entrySet()) { + final DataRetrieverLevelDTO retrieverLevel = retrieverLevelSettings.getKey(); + final Class settingsType = retrieverLevelSettings.getValue().getClass(); + settingsComponents.add(new RetrieverLevelSettingsComponent(retrieverLevel, settingsManager.getSettingsInfo(settingsType).getLocalizedName(stringMessages)) { + @Override + public SettingsDialogComponent getSettingsDialogComponent() { + return settingsManager.getSettingsInfo(settingsType).createSettingsDialogComponent(settingsMap.get(retrieverChain).get(retrieverLevel)); + } + @Override + public void updateSettings(SerializableSettings newSettings) { + settingsMap.get(retrieverChain).put(retrieverLevel, newSettings); + } + + }); } - return (SettingsDialogComponent) result; + return settingsComponents; } @Override - public void updateSettings(SerializableSettings newSettings) { - // TODO FIXME This is currently the only use case for processors with settings. That's why it's hard coded. - settingsMappedByRetrieverChain.put(getDataRetrieverChainDefinition(), (PolarDataMiningSettings) newSettings); + public void updateSettings(CompositeSettings newSettings) { + Map chainSettings = settingsMap.get(getDataRetrieverChainDefinition()); + for (ComponentAndSettingsPair settingsPerComponent : newSettings.getSettingsPerComponent()) { + RetrieverLevelSettingsComponent component = (RetrieverLevelSettingsComponent) settingsPerComponent.getA(); + SerializableSettings settings = (SerializableSettings) settingsPerComponent.getB(); + chainSettings.put(component.getRetrieverLevel(), settings); + } notifyListeners(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/ListRetrieverChainFilterSelectionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/ListRetrieverChainFilterSelectionProvider.java index f2dd5cfe23a..38172180ad9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/ListRetrieverChainFilterSelectionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/ListRetrieverChainFilterSelectionProvider.java @@ -45,6 +45,7 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio private final StringMessages stringMessages; private final DataMiningServiceAsync dataMiningService; private final ErrorReporter errorReporter; + private final DataRetrieverChainDefinitionProvider retrieverChainProvider; private final Set listeners; private boolean isAwaitingReload; @@ -59,9 +60,6 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio private final ScrollPanel selectionPanel; private final FilterSelectionPresenter selectionPresenter; private final ScrollPanel selectionPresenterScrollPanel; - - // TODO This is just a quick fix. Delete, after the settings have been improved. - private final DataRetrieverChainDefinitionProvider retrieverChainProvider; public ListRetrieverChainFilterSelectionProvider(DataMiningSession session, StringMessages stringMessages, DataMiningServiceAsync dataMiningService, ErrorReporter errorReporter, @@ -176,6 +174,10 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio forwardSelectionChanged(); } + HashMap getRetrieverSettings() { + return retrieverChainProvider.getRetrieverSettings(); + } + void retrieverLevelFilterSelectionChanged(RetrieverLevelFilterSelectionProvider retrieverLevelFilterSelectionProvider, DimensionFilterSelectionProvider dimensionFilterSelectionProvider) { if (!blockDataUpdates) { updateFilterSelectionProviders(retrieverLevelFilterSelectionProvider.getRetrieverLevel(), @@ -206,11 +208,6 @@ public class ListRetrieverChainFilterSelectionProvider implements FilterSelectio mainPanel.setWidgetHidden(selectionPresenterScrollPanel, getSelection().isEmpty()); notifyListeners(); } - - @Override - public HashMap getRetrieverSettings() { - return retrieverChainProvider.getRetrieverSettings(); - } @Override public HashMap>> getSelection() { diff --git a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/DataRetrieverChainDefinitionDTO.java b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/DataRetrieverChainDefinitionDTO.java index f5f323b54f2..1b795e5e41e 100644 --- a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/DataRetrieverChainDefinitionDTO.java +++ b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/dto/DataRetrieverChainDefinitionDTO.java @@ -93,7 +93,6 @@ public class DataRetrieverChainDefinitionDTO implements Serializable, Comparable } /** - * * @return the default settings mapped by the retriever levels or an empty map, if there are {@link #hasSettings() no settings}. */ public HashMap getDefaultSettings() { From 5222f0da0aa9d1bfa7902d43343e228334e5c685 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Sun, 20 Sep 2015 16:49:17 +0200 Subject: [PATCH 294/504] Added localized short name for SimpleDataRetrieverChainDefinitionProvider --- .../java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages.properties | 3 ++- .../com/sap/sailing/gwt/ui/client/StringMessages_de.properties | 3 ++- .../com/sap/sailing/gwt/ui/client/StringMessages_ru.properties | 3 ++- .../selection/SimpleDataRetrieverChainDefinitionProvider.java | 2 +- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 4e68a360563..0c967f041a3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1383,4 +1383,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String resultsChart(); String tabbedResultsPresenter(); String polarResultsPresenter(); + String dataMiningRetrieval(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index ce5a4785f37..4f5c41602f3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1350,4 +1350,5 @@ multiResultsPresenter=Multi Results Presenter plainResultsPresenter=Plain Results Presenter resultsChart=Results Chart tabbedResultsPresenter=Tabbed Results Presenter -polarResultsPresenter=Polar Results Presenter \ No newline at end of file +polarResultsPresenter=Polar Results Presenter +dataMiningRetrieval=Data Retrieval \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 3a5e6c5b906..067bef10378 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1339,4 +1339,5 @@ multiResultsPresenter=Multi Ergebnis-Darsteller plainResultsPresenter=Einfacher Ergebnis-Darsteller resultsChart=Ergebnis-Diagramm tabbedResultsPresenter=Tab Ergebnis-Darsteller -polarResultsPresenter=Polar Ergebnis-Darsteller \ No newline at end of file +polarResultsPresenter=Polar Ergebnis-Darsteller +dataMiningRetrieval=Datenbeschaffung \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index ef85e013cd4..a671d1e792a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1287,4 +1287,5 @@ multiResultsPresenter=Multi Results Presenter plainResultsPresenter=Plain Results Presenter resultsChart=Results Chart tabbedResultsPresenter=Tabbed Results Presenter -polarResultsPresenter=Polar Results Presenter \ No newline at end of file +polarResultsPresenter=Polar Results Presenter +dataMiningRetrieval=Data Retrieval \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java index 0f44b21e1ca..325147e838b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/SimpleDataRetrieverChainDefinitionProvider.java @@ -171,7 +171,7 @@ public class SimpleDataRetrieverChainDefinitionProvider implements DataRetriever @Override public String getLocalizedShortName() { - return SimpleDataRetrieverChainDefinitionProvider.class.getSimpleName(); + return stringMessages.dataMiningRetrieval(); } @Override From 85ac65d6a8ca10737d4ce4b51e3004d69364e7c9 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Mon, 21 Sep 2015 10:20:24 +0200 Subject: [PATCH 295/504] Added rank dimension to polar mining --- .../stringmessages/Polars_StringMessages_de.properties | 3 ++- .../stringmessages/Polars_StringMessages_en.properties | 3 ++- .../polars/datamining/data/HasCompetitorPolarContext.java | 4 ++++ .../datamining/data/impl/CompetitorWithPolarContext.java | 6 ++++++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties index f5384a2f7e3..2ce68e732c8 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties @@ -5,4 +5,5 @@ PolarData=Polardaten Polars=Polare GPSFix=GPS Fix WindRange=Wind Bereich -WindIsConfident=konfidente Windmessung \ No newline at end of file +WindIsConfident=konfidente Windmessung +Rank=Rang \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties index 887d1dc4ee6..2f47688f1c1 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties @@ -5,4 +5,5 @@ PolarData=Polar Data Polars=Polars GPSFix=GPS Fix WindRange=Wind Range -WindIsConfident=Confident Wind Measurement \ No newline at end of file +WindIsConfident=Confident Wind Measurement +Rank=Rank \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java index 7a9fa993d11..521d6fcd4ed 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasCompetitorPolarContext.java @@ -4,6 +4,7 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.datamining.annotations.Connector; +import com.sap.sse.datamining.annotations.Dimension; public interface HasCompetitorPolarContext { @@ -16,5 +17,8 @@ public interface HasCompetitorPolarContext { @Connector(scanForStatistics=false) HasLegPolarContext getLegPolarContext(); + + @Dimension(messageKey = "Rank") + int getRank(); } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java index b7d1cacd416..d031ae534c6 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/CompetitorWithPolarContext.java @@ -5,6 +5,7 @@ import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; import com.sap.sailing.polars.datamining.data.HasLegPolarContext; +import com.sap.sse.common.impl.MillisecondsTimePoint; public class CompetitorWithPolarContext implements HasCompetitorPolarContext { @@ -41,4 +42,9 @@ public class CompetitorWithPolarContext implements HasCompetitorPolarContext { return legPolarContext; } + @Override + public int getRank() { + return trackedRace.getRank(competitor, new MillisecondsTimePoint(System.currentTimeMillis())); + } + } From 2c05a66b2cf9cc429f4f1c49f43bfdbf3eb400f8 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Mon, 21 Sep 2015 10:45:15 +0200 Subject: [PATCH 296/504] Use natural comparator in datamining ui, also moved class --- .../sailing/domain/common/test/NaturalComparatorTest.java | 2 +- .../event/partials/racelist/RaceListColumnFactory.java | 2 +- .../regattaoverview/client/RegattaRaceStatesComponent.java | 2 +- .../sap/sailing/gwt/ui/adminconsole/AbstractLogDialog.java | 2 +- .../ui/adminconsole/AbstractTrackedRacesListComposite.java | 2 +- .../sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java | 2 +- .../sap/sailing/gwt/ui/adminconsole/EventListComposite.java | 2 +- .../sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java | 2 +- .../sailing/gwt/ui/adminconsole/ImagesListComposite.java | 2 +- .../sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java | 2 +- .../gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java | 2 +- .../ui/adminconsole/LeaderboardGroupSelectorComposite.java | 2 +- .../sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java | 2 +- .../sailing/gwt/ui/adminconsole/RegattaListComposite.java | 2 +- .../gwt/ui/adminconsole/StructureImportListComposite.java | 2 +- .../ui/adminconsole/SwissTimingEventManagementPanel.java | 2 +- .../ui/adminconsole/SwissTimingReplayConnectorPanel.java | 2 +- .../gwt/ui/adminconsole/TracTracEventManagementPanel.java | 2 +- .../sailing/gwt/ui/adminconsole/VideosListComposite.java | 2 +- .../selection/filter/DimensionFilterSelectionProvider.java | 4 +++- .../gwt/ui/spectator/LeaderboardGroupOverviewPanel.java | 2 +- .../src/com/sap/sse/common/util}/NaturalComparator.java | 2 +- .../com/sap/sse/datamining/shared/impl/GenericGroupKey.java | 6 ++++-- .../sse/security/ui/server/UserManagementServiceImpl.java | 2 +- 24 files changed, 29 insertions(+), 25 deletions(-) rename java/{com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl => com.sap.sse.common/src/com/sap/sse/common/util}/NaturalComparator.java (98%) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/NaturalComparatorTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/NaturalComparatorTest.java index 3e23aae89d9..b73f46c6058 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/NaturalComparatorTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/test/NaturalComparatorTest.java @@ -10,7 +10,7 @@ import java.util.List; import org.junit.Before; import org.junit.Test; -import com.sap.sailing.domain.common.impl.NaturalComparator; +import com.sap.sse.common.util.NaturalComparator; public class NaturalComparatorTest { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java index de2f047769d..2211b7aabd3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/partials/racelist/RaceListColumnFactory.java @@ -24,7 +24,6 @@ import com.google.gwt.user.cellview.client.SafeHtmlHeader; import com.sap.sailing.domain.common.InvertibleComparator; import com.sap.sailing.domain.common.SortingOrder; import com.sap.sailing.domain.common.impl.InvertibleComparatorAdapter; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.common.client.SharedResources.MainCss; import com.sap.sailing.gwt.common.client.i18n.TextMessages; @@ -52,6 +51,7 @@ import com.sap.sailing.gwt.ui.shared.util.NullSafeComparatorWrapper; import com.sap.sse.common.Duration; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.util.NaturalComparator; public class RaceListColumnFactory { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java index c1fde9e1ed6..a76860967a7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java @@ -51,7 +51,6 @@ import com.google.gwt.view.client.ListDataProvider; import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.dto.FleetDTO; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.gwt.ui.client.AnchorCell; import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory; @@ -67,6 +66,7 @@ import com.sap.sailing.gwt.ui.shared.RaceGroupSeriesDTO; import com.sap.sailing.gwt.ui.shared.RaceInfoDTO; import com.sap.sailing.gwt.ui.shared.RegattaOverviewEntryDTO; import com.sap.sailing.gwt.ui.shared.WaypointDTO; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.MarkedAsyncCallback; import com.sap.sse.gwt.client.player.Timer; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogDialog.java index 46cd06d6acf..8939d79de67 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogDialog.java @@ -13,11 +13,11 @@ import com.google.gwt.user.client.ui.Widget; import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.SelectionModel; import com.google.gwt.view.client.SingleSelectionModel; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; import com.sap.sailing.gwt.ui.shared.AbstractLogDTO; import com.sap.sailing.gwt.ui.shared.AbstractLogEventDTO; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.dialog.DataEntryDialog; public abstract class AbstractLogDialog, E extends AbstractLogEventDTO> extends DataEntryDialog { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractTrackedRacesListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractTrackedRacesListComposite.java index 2fe9d61f0fb..ba07f527a4f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractTrackedRacesListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractTrackedRacesListComposite.java @@ -33,7 +33,6 @@ import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.TrackedRaceStatusEnum; import com.sap.sailing.domain.common.dto.RaceDTO; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.RaceSelectionChangeListener; import com.sap.sailing.gwt.ui.client.RaceSelectionProvider; import com.sap.sailing.gwt.ui.client.RegattaRefresher; @@ -44,6 +43,7 @@ import com.sap.sailing.gwt.ui.client.shared.controls.SelectionCheckboxColumn; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sse.common.Util; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.MarkedAsyncCallback; import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java index 5785be5b38b..35387f78236 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java @@ -17,12 +17,12 @@ import com.google.gwt.user.client.ui.ImageResourceRenderer; import com.google.gwt.user.client.ui.Label; import com.google.gwt.view.client.SelectionModel; import com.sap.sailing.domain.common.dto.CompetitorDTO; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.adminconsole.ColorColumn.ColorRetriever; import com.sap.sailing.gwt.ui.client.FlagImageResolver; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sse.common.Color; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java index 9d50c7080fe..1872e58c2fd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventListComposite.java @@ -34,7 +34,6 @@ import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.MultiSelectionModel; import com.google.gwt.view.client.SelectionChangeEvent; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory; import com.sap.sailing.gwt.ui.client.EventSelectionProvider; import com.sap.sailing.gwt.ui.client.EventsRefresher; @@ -49,6 +48,7 @@ import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback; import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java index cfe7c437719..db01cb84507 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/IgtimiAccountsPanel.java @@ -30,10 +30,10 @@ import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.SelectionChangeEvent; import com.google.gwt.view.client.SelectionChangeEvent.Handler; import com.google.gwt.view.client.SingleSelectionModel; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.controls.ImagesBarCell; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.IconResources; import com.sap.sse.gwt.client.dialog.DataEntryDialog; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImagesListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImagesListComposite.java index 19c34d9bc26..43c8d95157e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImagesListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImagesListComposite.java @@ -25,10 +25,10 @@ import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.SelectionChangeEvent; import com.google.gwt.view.client.SingleSelectionModel; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; import com.sap.sse.common.media.MediaTagConstants; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback; import com.sap.sse.gwt.client.media.ImageDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java index b33f278cc43..aff17961513 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java @@ -36,7 +36,6 @@ import com.sap.sailing.domain.common.dto.AbstractLeaderboardDTO; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.adminconsole.DisablableCheckboxCell.IsEnabled; import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory; import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer; @@ -53,6 +52,7 @@ import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sailing.gwt.ui.shared.RaceLogSetStartTimeAndProcedureDTO; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; import com.sap.sse.common.Util; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.URLEncoder; import com.sap.sse.gwt.client.async.MarkedAsyncCallback; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java index df1ec5817ba..ddf2a0ad41e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupConfigPanel.java @@ -33,7 +33,6 @@ import com.google.gwt.view.client.MultiSelectionModel; import com.google.gwt.view.client.ProvidesKey; import com.google.gwt.view.client.SelectionChangeEvent; import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.adminconsole.LeaderboardConfigPanel.AnchorCell; import com.sap.sailing.gwt.ui.adminconsole.LeaderboardGroupDialog.LeaderboardGroupDescriptor; import com.sap.sailing.gwt.ui.client.AbstractRegattaPanel; @@ -51,6 +50,7 @@ import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; import com.sap.sse.common.Util; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.URLEncoder; import com.sap.sse.gwt.client.async.MarkedAsyncCallback; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupSelectorComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupSelectorComposite.java index f77c2dd0dce..2fa96d05d9b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupSelectorComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardGroupSelectorComposite.java @@ -31,10 +31,10 @@ import com.google.gwt.user.client.ui.Widget; import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.MultiSelectionModel; import com.google.gwt.view.client.SelectionChangeEvent; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel; public class LeaderboardGroupSelectorComposite extends Composite implements HasValueChangeHandlers> { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java index 3224e80c7c8..5d1eb5fdeb5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java @@ -11,13 +11,13 @@ import com.google.gwt.user.cellview.client.Column; import com.google.gwt.user.cellview.client.TextColumn; import com.google.gwt.view.client.SelectionModel; import com.sap.sailing.domain.common.RegattaNameAndRaceName; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality; import com.sap.sailing.gwt.ui.adminconsole.LeaderboardConfigPanel.AnchorCell; import com.sap.sailing.gwt.ui.adminconsole.LeaderboardConfigPanel.AnchorTemplates; import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; public class RaceTableWrapper> diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java index 869fd13bb26..3fdc955c691 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java @@ -26,7 +26,6 @@ import com.google.gwt.view.client.MultiSelectionModel; import com.google.gwt.view.client.SelectionChangeEvent; import com.sap.sailing.domain.common.RegattaIdentifier; import com.sap.sailing.domain.common.RegattaName; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.RegattaRefresher; import com.sap.sailing.gwt.ui.client.RegattaSelectionProvider; import com.sap.sailing.gwt.ui.client.RegattasDisplayer; @@ -39,6 +38,7 @@ import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sailing.gwt.ui.shared.SeriesDTO; import com.sap.sse.common.Util; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.MarkedAsyncCallback; import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/StructureImportListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/StructureImportListComposite.java index 50e38b167c3..427e9e40044 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/StructureImportListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/StructureImportListComposite.java @@ -6,7 +6,6 @@ import com.google.gwt.user.cellview.client.CellTable; import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler; import com.google.gwt.user.cellview.client.TextColumn; import com.google.gwt.view.client.ListDataProvider; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.RegattaRefresher; import com.sap.sailing.gwt.ui.client.RegattaSelectionProvider; import com.sap.sailing.gwt.ui.client.RegattasDisplayer; @@ -14,6 +13,7 @@ import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.controls.SelectionCheckboxColumn; import com.sap.sailing.gwt.ui.shared.RegattaDTO; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; public class StructureImportListComposite extends RegattaListComposite implements RegattasDisplayer { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingEventManagementPanel.java index a89967f3a83..06507532f71 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingEventManagementPanel.java @@ -33,7 +33,6 @@ import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.MultiSelectionModel; import com.sap.sailing.domain.common.RegattaIdentifier; import com.sap.sailing.domain.common.RegattaName; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.RaceSelectionModel; import com.sap.sailing.gwt.ui.client.RegattaRefresher; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; @@ -42,6 +41,7 @@ import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sailing.gwt.ui.shared.SwissTimingConfigurationDTO; import com.sap.sailing.gwt.ui.shared.SwissTimingEventRecordDTO; import com.sap.sailing.gwt.ui.shared.SwissTimingRaceRecordDTO; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java index d100e742d81..341e4c17ac1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SwissTimingReplayConnectorPanel.java @@ -33,7 +33,6 @@ import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.MultiSelectionModel; import com.sap.sailing.domain.common.RegattaIdentifier; import com.sap.sailing.domain.common.RegattaName; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.RaceSelectionModel; import com.sap.sailing.gwt.ui.client.RegattaRefresher; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; @@ -41,6 +40,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sailing.gwt.ui.shared.SwissTimingArchiveConfigurationDTO; import com.sap.sailing.gwt.ui.shared.SwissTimingReplayRaceDTO; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java index df7193689cf..040c531102c 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java @@ -36,7 +36,6 @@ import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.SelectionModel; import com.sap.sailing.domain.common.RegattaIdentifier; import com.sap.sailing.domain.common.RegattaName; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.RaceSelectionModel; import com.sap.sailing.gwt.ui.client.RegattaRefresher; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; @@ -45,6 +44,7 @@ import com.sap.sailing.gwt.ui.client.shared.controls.SelectionCheckboxColumn; import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sailing.gwt.ui.shared.TracTracConfigurationDTO; import com.sap.sailing.gwt.ui.shared.TracTracRaceRecordDTO; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.async.MarkedAsyncCallback; import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/VideosListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/VideosListComposite.java index c75a833b3ba..11cf8088f4b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/VideosListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/VideosListComposite.java @@ -25,10 +25,10 @@ import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.SelectionChangeEvent; import com.google.gwt.view.client.SingleSelectionModel; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; import com.sap.sse.common.media.MediaTagConstants; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback; import com.sap.sse.gwt.client.media.VideoDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/DimensionFilterSelectionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/DimensionFilterSelectionProvider.java index f9d5012a127..ae0aae40fde 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/DimensionFilterSelectionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/selection/filter/DimensionFilterSelectionProvider.java @@ -32,6 +32,7 @@ import com.sap.sailing.gwt.ui.datamining.ManagedDataMiningQueriesCounter; import com.sap.sailing.gwt.ui.datamining.execution.ManagedDataMiningQueryCallback; import com.sap.sailing.gwt.ui.datamining.execution.SimpleManagedDataMiningQueriesCounter; import com.sap.sse.common.settings.SerializableSettings; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.datamining.shared.DataMiningSession; import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.impl.GenericGroupKey; @@ -182,7 +183,8 @@ class DimensionFilterSelectionProvider { Collections.sort(content, new Comparator() { @Override public int compare(Object o1, Object o2) { - return o1.toString().compareTo(o2.toString()); + Comparator naturalComparator = new NaturalComparator(); + return naturalComparator.compare(o1.toString(), o2.toString()); } }); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/spectator/LeaderboardGroupOverviewPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/spectator/LeaderboardGroupOverviewPanel.java index df5c5c95488..e4b360966d5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/spectator/LeaderboardGroupOverviewPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/spectator/LeaderboardGroupOverviewPanel.java @@ -38,13 +38,13 @@ import com.sap.sailing.domain.common.RegattaNameAndRaceName; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.PlacemarkOrderDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.ui.adminconsole.LeaderboardConfigPanel.AnchorCell; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; import com.sap.sse.common.Util; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.URLEncoder; import com.sap.sse.gwt.client.player.Timer; diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/NaturalComparator.java b/java/com.sap.sse.common/src/com/sap/sse/common/util/NaturalComparator.java similarity index 98% rename from java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/NaturalComparator.java rename to java/com.sap.sse.common/src/com/sap/sse/common/util/NaturalComparator.java index 94a3d24cba4..d7c78e4e239 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/NaturalComparator.java +++ b/java/com.sap.sse.common/src/com/sap/sse/common/util/NaturalComparator.java @@ -1,4 +1,4 @@ -package com.sap.sailing.domain.common.impl; +package com.sap.sse.common.util; import java.util.Comparator; diff --git a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/GenericGroupKey.java b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/GenericGroupKey.java index 38098a7b26d..51ab252df60 100644 --- a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/GenericGroupKey.java +++ b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/GenericGroupKey.java @@ -1,7 +1,9 @@ package com.sap.sse.datamining.shared.impl; +import java.util.Comparator; + +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.datamining.shared.GroupKey; -import com.sap.sse.datamining.shared.util.AlphanumericalComparator; public class GenericGroupKey extends AbstractGroupKey { @@ -52,7 +54,7 @@ public class GenericGroupKey extends AbstractGroupKey { result = ((Enum) value).ordinal() - ((Enum) keyValue).ordinal(); } if (value instanceof String && keyValue instanceof String) { - AlphanumericalComparator comparator = new AlphanumericalComparator(); + Comparator comparator = new NaturalComparator(); result = comparator.compare((String) value, (String) keyValue); } } diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/server/UserManagementServiceImpl.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/server/UserManagementServiceImpl.java index c88046d4581..aaa2abe6dd9 100644 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/server/UserManagementServiceImpl.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/server/UserManagementServiceImpl.java @@ -25,9 +25,9 @@ import org.osgi.framework.BundleContext; import org.osgi.util.tracker.ServiceTracker; import com.google.gwt.user.server.rpc.RemoteServiceServlet; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sse.common.Util; import com.sap.sse.common.mail.MailException; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.security.Credential; import com.sap.sse.security.SecurityService; import com.sap.sse.security.Social; From 4f6875613a5595c470b2a7f208116aeb60630eaa Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Mon, 21 Sep 2015 10:54:32 +0200 Subject: [PATCH 297/504] Added natural sorting to polar result presenter in datamining ui --- .../ui/polarmining/PolarResultsPresenter.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java index 7e267ddcc23..ae0f4e42d6c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java @@ -1,8 +1,11 @@ package com.sap.sailing.gwt.ui.polarmining; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; +import java.util.List; import java.util.Map; -import java.util.Map.Entry; import org.moxieapps.gwt.highcharts.client.AxisTitle; import org.moxieapps.gwt.highcharts.client.Chart; @@ -32,6 +35,7 @@ import com.sap.sailing.gwt.ui.datamining.presentation.AbstractResultsPresenter; import com.sap.sailing.polars.datamining.shared.PolarAggregation; import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; import com.sap.sse.common.settings.Settings; +import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; @@ -155,8 +159,16 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { @Override protected void internalShowResults(QueryResultDTO result) { Map results = result.getResults(); - for (Entry entry : results.entrySet()) { - PolarAggregation aggregation = (PolarAggregation) entry.getValue(); + List sortedNaturally = new ArrayList(results.keySet()); + Collections.sort(sortedNaturally, new Comparator() { + @Override + public int compare(GroupKey o1, GroupKey o2) { + Comparator naturalComparator = new NaturalComparator(); + return naturalComparator.compare(o1.asString(), o2.asString()); + } + }); + for (GroupKey key : sortedNaturally) { + PolarAggregation aggregation = (PolarAggregation) results.get(key); double[] speedsPerAngle = aggregation.getAverageSpeedsPerAngle(); int count = aggregation.getCount(); int[] countPerAngle = aggregation.getCountPerAngle(); @@ -172,8 +184,8 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { } histogramSeries.addPoint(convertedAngle, countPerAngle[i]); } - polarSeries.setName(entry.getKey().asString()); - histogramSeries.setName(entry.getKey().asString()); + polarSeries.setName(key.asString()); + histogramSeries.setName(key.asString()); polarChart.addSeries(polarSeries, false, false); histogramSeries.setVisible(false, false); histogramSeriesForPolarSeries.put(polarSeries, histogramSeries); From 70693dc276ed8d74bc225288e6589d21189fb02d Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 21 Sep 2015 11:06:37 +0200 Subject: [PATCH 298/504] Added StatisticsCalculator for reusability purposes --- .../dispatch/event/LeaderboardContext.java | 4 + .../dispatch/event/StatisticsCalculator.java | 142 ++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/StatisticsCalculator.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/LeaderboardContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/LeaderboardContext.java index b4f5f7d354b..f93522c50ca 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/LeaderboardContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/LeaderboardContext.java @@ -229,4 +229,8 @@ public class LeaderboardContext { public boolean isPartOfEvent() { return HomeServiceUtil.isPartOfEvent(event, leaderboard); } + + public Leaderboard getLeaderboard() { + return leaderboard; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/StatisticsCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/StatisticsCalculator.java new file mode 100644 index 00000000000..3ed9bf8b613 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/StatisticsCalculator.java @@ -0,0 +1,142 @@ +package com.sap.sailing.gwt.ui.shared.dispatch.event; + +import java.util.Iterator; +import java.util.NavigableSet; +import java.util.logging.Level; +import java.util.logging.Logger; + +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.Mark; +import com.sap.sailing.domain.common.Distance; +import com.sap.sailing.domain.common.Speed; +import com.sap.sailing.domain.common.WindSource; +import com.sap.sailing.domain.common.WindSourceType; +import com.sap.sailing.domain.common.tracking.GPSFix; +import com.sap.sailing.domain.common.tracking.GPSFixMoving; +import com.sap.sailing.domain.tracking.GPSFixTrack; +import com.sap.sailing.domain.tracking.MarkPassing; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.domain.tracking.WindTrack; +import com.sap.sailing.gwt.server.HomeServiceUtil; +import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL; +import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.LeaderboardCallback; +import com.sap.sse.common.Duration; +import com.sap.sse.common.TimePoint; +import com.sap.sse.common.Util; +import com.sap.sse.common.Util.Pair; +import com.sap.sse.common.Util.Triple; +import com.sap.sse.common.impl.MillisecondsTimePoint; + +public class StatisticsCalculator implements LeaderboardCallback { + + private static final Logger logger = Logger.getLogger(StatisticsCalculator.class.getName()); + private static final boolean CALCULATE_MAX_SPEED = false; + private static final boolean CALCULATE_SAILED_MILES = true; + + private int competitors, races, trackedRaces, regattas; + private long numberOfGPSFixes, numberOfWindFixes; + private Distance totalDistanceTraveled = Distance.NULL; + private Triple maxSpeed = null; + private final TimePoint now = MillisecondsTimePoint.now(); + + @Override + public void doForLeaderboard(LeaderboardContext context) { + competitors += HomeServiceUtil.calculateCompetitorsCount(context.getLeaderboard()); + races += HomeServiceUtil.calculateRaceColumnCount(context.getLeaderboard()); + trackedRaces += HomeServiceUtil.calculateTrackedRaceCount(context.getLeaderboard()); + regattas++; + String disableStats = System.getenv("DISABLE_STATS"); + if (disableStats == null || "false".equals(disableStats)) { + try { + for (TrackedRace trackedRace : context.getLeaderboard().getTrackedRaces()) { + doForTrackedRace(trackedRace); + } + } catch (Exception e) { + logger.log(Level.WARNING, "Exception during calculation of event statistics", e); + } + } + } + + private void doForTrackedRace(TrackedRace trackedRace) { + for (Competitor competitor : trackedRace.getRace().getCompetitors()) { + doForCompetitor(trackedRace, competitor); + } + for (Mark mark : trackedRace.getMarks()) { + doForMark(trackedRace, mark); + } + for (WindSource windSource : trackedRace.getWindSources()) { + doForWindSource(trackedRace, windSource); + } + } + + private void doForCompetitor(TrackedRace trackedRace, Competitor competitor) { + GPSFixTrack competitorTrack = trackedRace.getTrack(competitor); + competitorTrack.lockForRead(); + try { + numberOfGPSFixes += Util.size(competitorTrack.getRawFixes()); + } finally { + competitorTrack.unlockAfterRead(); + } + if (trackedRace.hasStarted(now)) { + final NavigableSet competitorMarkPassings = trackedRace.getMarkPassings(competitor); + MarkPassing lastMarkPassingBeforeNow = null; + trackedRace.lockForRead(competitorMarkPassings); + try { + MarkPassing next = null; + Iterator i = competitorMarkPassings.descendingIterator(); + while (i.hasNext() && (next = i.next()).getTimePoint().after(now)); + if (next != null) { + lastMarkPassingBeforeNow = next; + } + } finally { + trackedRace.unlockAfterRead(competitorMarkPassings); + } + if (lastMarkPassingBeforeNow != null) { + // competitor has started and has at least one mark passing before now; compute distance traveled up to that + // mark passing, increasing likelihood of cache hits as compared to using "now" as the query time point + TimePoint from = trackedRace.getStartOfRace(), to = lastMarkPassingBeforeNow.getTimePoint(); + if (CALCULATE_SAILED_MILES) { + totalDistanceTraveled = totalDistanceTraveled.add(competitorTrack.getDistanceTraveled(from, to)); + } + if (CALCULATE_MAX_SPEED) { + Pair competitorMaxSpeed = competitorTrack.getMaximumSpeedOverGround(from, to); + if (competitorMaxSpeed != null && (maxSpeed == null || competitorMaxSpeed.getB().compareTo( maxSpeed.getB()) > 0) + // only accept "reasonable" max speeds + && competitorMaxSpeed.getB().compareTo( GPSFixTrack.DEFAULT_MAX_SPEED_FOR_SMOOTHING) <= 0) { + maxSpeed = new Triple<>(competitor, competitorMaxSpeed.getB(), competitorMaxSpeed.getA().getTimePoint()); + } + } + } + } + } + + private void doForMark(TrackedRace trackedRace, Mark mark) { + GPSFixTrack markTrack = trackedRace.getOrCreateTrack(mark); + markTrack.lockForRead(); + try { + numberOfGPSFixes += Util.size(markTrack.getRawFixes()); + } finally { + markTrack.unlockAfterRead(); + } + } + + private void doForWindSource(TrackedRace trackedRace, WindSource windSource) { + // don't count the "virtual" wind sources + if (windSource.canBeStored() || windSource.getType() == WindSourceType.RACECOMMITTEE) { + WindTrack windTrack = trackedRace.getOrCreateWindTrack(windSource); + windTrack.lockForRead(); + try { + numberOfWindFixes += Util.size(windTrack.getRawFixes()); + } finally { + windTrack.unlockAfterRead(); + } + } + } + + public ResultWithTTL getResult() { + totalDistanceTraveled = totalDistanceTraveled == Distance.NULL ? null : totalDistanceTraveled; + return new ResultWithTTL(Duration.ONE_MINUTE.times(5), new EventStatisticsDTO(regattas, + competitors, races, trackedRaces, numberOfGPSFixes, numberOfWindFixes, maxSpeed, totalDistanceTraveled)); + } + +} From de39835c49367960b71ca67e4d83d1c8593ab22a Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Mon, 21 Sep 2015 11:35:19 +0200 Subject: [PATCH 299/504] Fixed gradle dependency --- mobile/com.sap.sailing.racecommittee.app/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/mobile/com.sap.sailing.racecommittee.app/build.gradle b/mobile/com.sap.sailing.racecommittee.app/build.gradle index e1ae1f89c13..c0c4e20f1b2 100644 --- a/mobile/com.sap.sailing.racecommittee.app/build.gradle +++ b/mobile/com.sap.sailing.racecommittee.app/build.gradle @@ -83,6 +83,7 @@ dependencies { /* local dependencies */ compile project(":mobile:com.sap.sailing.android.shared") + compile project(":java:com.sap.sse.common") /* all local jar-libs */ compile fileTree(dir: "libs", include: ["*.jar"]) From 62c80a45e630ed7789c27d12a6e456042322ddea Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 21 Sep 2015 12:20:36 +0200 Subject: [PATCH 300/504] re-implemented LowPointWithEliminationsAndRoundsWinnerGets07 more or less from scratch and cleaned up; tests green --- .../LeaderboardScoringAndRankingTest.java | 30 ++- .../sailing/domain/base/impl/RegattaImpl.java | 4 +- .../domain/leaderboard/impl/LowPoint.java | 5 + ...WithEliminationsAndRoundsWinnerGets07.java | 243 +++++++++++------- 4 files changed, 183 insertions(+), 99 deletions(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java index 4abace89c33..a7ad47c7943 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java @@ -781,14 +781,32 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { } later = createAndAttachTrackedRaces(series.get(2), "Heat "+(heat+13), /* withScores */ true, competitorsForHeatsInSemiFinals[heat]); } + // finals has promoted top four competitors of semi finals which are the top four of first and fifth first-round heats + // for the final, and the top four of the first round's third and seventh heat; we assume here that the finals have not + // been sailed and therefore expect the scores to be obtained by interpolating, using 1.0 instead of 0.7 for averaging. + Competitor[][] competitorsForHeatsInFinals = new Competitor[2][]; + for (int heat=0; heat<2; heat++) { + competitorsForHeatsInFinals[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + competitorsForHeatsInFinals[heat][i] = c[8*(2*heat+4*(i/4))+(i%4)]; + } + later = createAndAttachTrackedRaces(series.get(3), "Heat "+(heat+15), /* withScores */ false, competitorsForHeatsInFinals[heat]); + } // 1 instead of 0.7 for a final that was not sailed; clarified with Juergen Bonne in an e-mail as of 18-09-2015T09:03:00Z - final double expectedPointsForFirstEightBoats = (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8) / 8; + final double expectedPointsForFirstEightBoats = (1.0 + 2.0 + 3.0 + 4.0 + 5.0 + 6.0 + 7.0 + 8.0) / 8.0; for (int i=0; i<4; i++) { assertEquals(expectedPointsForFirstEightBoats, leaderboard.getTotalPoints(c[i], later), 0.000000001); } - for (int i=32; i<40; i++) { + for (int i=32; i<36; i++) { assertEquals(expectedPointsForFirstEightBoats, leaderboard.getTotalPoints(c[i], later), 0.000000001); } + final double expectedPointsForLastEightBoats = (9.0 + 10.0 + 11.0 + 12.0 + 13.0 + 14.0 + 15.0 + 16.0) / 8.0; + for (int i=16; i<20; i++) { + assertEquals(expectedPointsForLastEightBoats, leaderboard.getTotalPoints(c[i], later), 0.000000001); + } + for (int i=48; i<52; i++) { + assertEquals(expectedPointsForLastEightBoats, leaderboard.getTotalPoints(c[i], later), 0.000000001); + } } @Test @@ -809,7 +827,13 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { later = createAndAttachTrackedRaces(series.get(0), "Heat "+(heat+1), /* withScores */ true, competitorsForHeatsInRound1[heat]); } List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); - final double expectedPointsForFirstEightBoats = (0.7 + 2 + 3 + 4 + 5 + 6 + 7 + 8) / 8; + // Clarified with Juergen Bonne in an e-mail as of 18-09-2015T09:03:00Z that a final race's winner + // is scored with 0.7 only if the final race has actually been sailed. If the competitors are qualified + // for the final race but it's not sailed, average scores are to be assigned to all competitors qualified + // for the final race, but this average assumes 1.0 points for the first rank instead of the 0.7 assigned + // to the winner if the race is actually sailed. Similarly, if not even the semi-finals have been sailed, + // score averaging uses 1.0 for the first rank. + final double expectedPointsForFirstEightBoats = (1.0 + 2.0 + 3.0 + 4.0 + 5.0 + 6.0 + 7.0 + 8.0) / 8.0; for (int i=0; i<8; i++) { assertEquals(expectedPointsForFirstEightBoats, leaderboard.getTotalPoints(c[8*i], later), 0.0000001); assertEquals("Competitor "+rankedCompetitors.get(i)+" not in list of best eight ", diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java index 32e5547549e..1a44cc0b251 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java @@ -272,8 +272,8 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene /** * {@link RaceColumnListeners} may not be de-serialized (yet) when the regatta - * is de-serialized. Do avoid re-registering empty objects most probably leading - * to null pointer exception one need to initialize all listeners after + * is de-serialized. To avoid re-registering empty objects most probably leading + * to null pointer exception one needs to initialize all listeners after * all objects have been read. */ public void initializeSeriesAfterDeserialize() { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java index 1c8045ca43b..2627339069c 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java @@ -36,6 +36,11 @@ public class LowPoint extends AbstractScoringSchemeImpl { return result; } + /** + * Considers contiguous scoring for split-fleet columns, finding out in which fleet the competitor races + * in the raceColumn and figuring out how many competitors race in better fleets. For non-contiguous + * scoring, the effective rank equals the rank in the competitor's fleet. + */ protected int getEffectiveRank(RaceColumn raceColumn, Competitor competitor, int rank) { final int competitorFleetOrdering; final int effectiveRank; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java index 4394aa7f094..b2372364c0b 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java @@ -1,5 +1,6 @@ package com.sap.sailing.domain.leaderboard.impl; +import java.util.Iterator; import java.util.concurrent.Callable; import com.sap.sailing.domain.base.Competitor; @@ -84,93 +85,125 @@ public class LowPointWithEliminationsAndRoundsWinnerGets07 extends LowPoint { } /** - * A competitor will obtain a score in a column if she obtained an explicit score correction for that column or if - * she is assigned to a race linked to that column and has no score in any of the subsequent columns of the same - * elimination. Assuming that each series has a single race column only, the next column is identical to the single - * race column of the next series. If the raceColumn is the last column (representing the last round) - * of the elimination (identified by being the last series in the regatta or having fleet ordering numbers less than - * the fleet ordering of the next column), the round is a final round, and all competitors participating in any of - * the races linked to any of the fleets in that column are eligible to receive a score in that column. + * The competitor gets a score in raceColumn if she does not participate in a race in the round that + * follows the round represented by raceColumn. If raceColumn represents the last round in + * the elimination, competitor can not participate in a next round and therefore obtains a score. This + * can either happen when raceColumn is a final round or if the elimination has been aborted and no + * further rounds exist in that elimination. The competitor is considered to participate in the next round if an + * explicit score correction exists for the competitor for the next round, or if a tracked race is + * attached to the race column following raceColumn that lists competitor as part of its + * competitors. *

* - * The rationale behind this rule is that if a competitor got promoted to the next round of the elimination, no - * score will be assigned to that competitor in the round from which she got promoted. + * If the competitor is to receive points for raceColumn, the following rules apply. For a + * 0 rank this method assumes that the race has not started yet (and it could happen that it is never + * started at all); in this case the number of points is calculated as the arithmetic mean of all points for which + * the participants of the heat would race, with the first rank counting as 1.0 for this average. If the + * rank is not 0 then the competitor receives the average of the points given to all + * competitors from all heats in this round that rank equal when sorting the competitors of that round in the + * leaderboard by their rank. For example, if there are two heats in the semi-final with eight competitors each, the + * two competitors ranking second in their heat will get the average of 3.0 and 4.0 points, so 3.5 points.

+ * + * In the exceptional case of the final round, 0.7 points are awarded to the first rank. This special rules only + * applies if a rank 1 is actually observed. It does not apply to the averaging process that occurs + * should the final not have been sailed (yet) such that the final participants receive the points average of + * 1.0, 2.0, ..., <number-of-final-participants>

*/ - private boolean competitorGetsScoreInColumn(Leaderboard leaderboard, RaceColumnInSeries raceColumn, Competitor competitor, TimePoint timePoint) { - final Series series = raceColumn.getSeries(); + @Override + public Double getScoreForRank(final Leaderboard leaderboard, final RaceColumn raceColumn, final Competitor competitor, final int rank, + final Callable numberOfCompetitorsInRaceFetcher, + final NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher, TimePoint timePoint) { + assert raceColumn instanceof RaceColumnInSeries; + // Clarified with Juergen Bonne in an e-mail as of 18-09-2015T09:03:00Z that a final race's winner + // is scored with 0.7 only if the final race has actually been sailed. If the competitors are qualified + // for the final race but it's not sailed, average scores are to be assigned to all competitors qualified + // for the final race, but this average assumes 1.0 points for the first rank instead of the 0.7 assigned + // to the winner if the race is actually sailed. + final RaceColumnInSeries raceColumnInSeries = (RaceColumnInSeries) raceColumn; + final Double result; + final Series series = ((RaceColumnInSeries) raceColumn).getSeries(); final Regatta regatta = series.getRegatta(); - boolean result; - if (leaderboard.getScoreCorrection().isScoreCorrected(competitor, raceColumn, timePoint)) { - // explicit score provided for competitor in raceColumn; this overrules everything else - result = true; - } else if (raceColumn.getFleetOfCompetitor(competitor) == null) { - // competitor is not assigned to any race in this column; no points will be awarded unless explicitly corrected - // which is the case handled by the previous "if" statement - result = false; + Iterator seriesInRegattaIter=regatta.getSeries().iterator(); + Series seriesInRegatta = null; + while (seriesInRegattaIter.hasNext() && (seriesInRegatta=seriesInRegattaIter.next()) != series) + ; + if (seriesInRegatta == null) { + throw new IllegalArgumentException("Race column "+raceColumn+" not found in its owning regatta"); + } + final Fleet fleetOfCompetitor = raceColumn.getFleetOfCompetitor(competitor); + if (fleetOfCompetitor == null || participatesInNextRound(leaderboard, raceColumnInSeries, competitor, timePoint, seriesInRegattaIter)) { + // the competitor does not participate in this round according to the set of tracked races + // attached to the raceColumn or obtains a score in the next round which means that the + // competitor will not get a score yet for the raceColumn passed + result = null; } else { - result = true; - // remember the ordering of any heat in raceColumn; the next column that has a greater ordering - // belongs to the next elimination - final int heatOrdering = raceColumn.getFleets().iterator().next().getOrdering(); - boolean foundColumn = false; - for (Series seriesInRegatta : regatta.getSeries()) { - if (foundColumn && series.getFleets().iterator().next().getOrdering() > heatOrdering) { - // reached next elimination; abort - break; - } - if (!foundColumn && seriesInRegatta == series) { - foundColumn = true; + assert fleetOfCompetitor != null; + if (rank == 0) { + // calculate the average rank of all competitors of the heat; for contiguous scoring across heats (final round) + // this is the average of the points (giving 1.0 for first rank in the final) in the single heat; for rounds + // with unordered heats (fleets all having equal ordering, non-contiguous series scoring) this is the average + // of all the points assigned to all the ranks occupied in the elimination by the participants of this round. + if (series.hasSplitFleetContiguousScoring()) { + // final round; check how many competitors are in better fleet; then average between (that number plus 1) + // and (that number plus the number of competitors in competitor's fleet) + final int competitorFleetOrdering = fleetOfCompetitor.getOrdering(); + final int numberOfCompetitorsInBetterFleet = getNumberOfCompetitorsInBetterFleets(raceColumnInSeries, competitorFleetOrdering); + final TrackedRace finalTrackedRaceOfCompetitor = raceColumn.getTrackedRace(competitor); // assumed to be != null because fleetOfCompetitor != null + final int numberOfCompetitorsInCompetitorsFleet = Util.size(finalTrackedRaceOfCompetitor.getRace().getCompetitors()); + result = ((double)numberOfCompetitorsInBetterFleet + 1.0 + // best score in competitor's fleet + (double)numberOfCompetitorsInBetterFleet + (double)numberOfCompetitorsInCompetitorsFleet) // worst score in competitor's fleet + /2.0; } else { - if (foundColumn && hasScoreInSeries(leaderboard, competitor, seriesInRegatta, timePoint)) { - result = false; - break; + // count competitors in this round and average the points, assuming that the participants that got promoted + // into this non-final round will race for scores 1.0 .. . + int numberOfCompetitorsInRound = 0; + for (final Fleet fleet : raceColumn.getFleets()) { + final TrackedRace trackedRaceInRound = raceColumn.getTrackedRace(fleet); + if (trackedRaceInRound != null) { + numberOfCompetitorsInRound += Util.size(trackedRaceInRound.getRace().getCompetitors()); + } } + result = ((double) numberOfCompetitorsInRound + 1.0) / 2.0; + } + } else { + // rank is non-zero; there is a tracked race that provides a valid score for the competitor + final int effectiveRank = getEffectiveRank(raceColumn, competitor, rank); + if (series.hasSplitFleetContiguousScoring()) { + result = effectiveRank == 1 ? 0.7 : effectiveRank; + } else { + final int numberOfCompetitorsInBetterFleets = getNumberOfCompetitorsInBetterFleets(raceColumnInSeries, fleetOfCompetitor.getOrdering()); + final int numberOfFleetsWithEqualOrder = getNumberOfFleetsWithOrdering(series, fleetOfCompetitor.getOrdering()); + final int numberOfCompetitorsWithSameRankInRound = getNumberOfCompetitorsWithSameRankInRound(raceColumnInSeries, competitor, effectiveRank); + final int bestOverallRankForAnyEqualRankingCompetitor = + numberOfCompetitorsInBetterFleets + 1 + // best possible score for any competitor in competitor's fleet + numberOfFleetsWithEqualOrder*(effectiveRank-1); // number of places assigned to better competitors in own and other equal fleets + final int worstOverallRankForAnyEqualRankingCompetitor = + bestOverallRankForAnyEqualRankingCompetitor + numberOfCompetitorsWithSameRankInRound - 1; + result = ((double) bestOverallRankForAnyEqualRankingCompetitor + (double) worstOverallRankForAnyEqualRankingCompetitor) / 2.0; } } } return result; } - private boolean hasScoreInSeries(Leaderboard leaderboard, Competitor competitor, Series series, TimePoint timePoint) { - final RaceColumn singleRaceColumnInSeries = series.getRaceColumns().iterator().next(); - return leaderboard.getNetPoints(competitor, singleRaceColumnInSeries, timePoint) != null; + private int getNumberOfFleetsWithOrdering(Series series, int ordering) { + int result = 0; + for (final Fleet fleet : series.getFleets()) { + if (fleet.getOrdering() == ordering) { + result++; + } + } + return result; } - @Override - public Double getScoreForRank(final Leaderboard leaderboard, final RaceColumn raceColumn, final Competitor competitor, final int rank, - final Callable numberOfCompetitorsInRaceFetcher, - final NumberOfCompetitorsInLeaderboardFetcher numberOfCompetitorsInLeaderboardFetcher, TimePoint timePoint) { - assert raceColumn instanceof RaceColumnInSeries; - final Double result; - if (rank == 0) { - // Note that 0 can mean the race hasn't started but can also mean that the competitor is not assigned to any TrackedRace in the raceColumn - // FIXME this is not correct in case the competitor is assigned to the heat, is not assigned to heats in subsequent rounds and the race has not started yet; then, average points are to be awarded to be consistent with the case that the race is not sailed at all - result = null; - } else if (isFinalRound((RaceColumnInSeries) raceColumn)) { - final int effectiveRank = getEffectiveRank(raceColumn, competitor, rank); - // FIXME presumably assign 0.7 only if the final race has actually been raced; otherwise, assign average of 1..n for the n participants of the final race - - // Clarified with Juergen Bonne in an e-mail as of 18-09-2015T09:03:00Z that a final race's winner - // is scored with 0.7 only if the final race has actually been sailed. If the competitors are qualified - // for the final race but it's not sailed, average scores are to be assigned to all competitors qualified - // for the final race, but this average assumes 1.0 points for the first rank instead of the 0.7 assigned - // to the winner if the race is actually sailed. - - result = effectiveRank == 0 ? null : effectiveRank == 1 ? 0.7 : (double) effectiveRank; - } else if (competitorGetsScoreInColumn(leaderboard, (RaceColumnInSeries) raceColumn, competitor, timePoint)) { - // calculate the average rank or all competitors with the same rank in their respective heat in the round - // to which raceColumn belongs: - final int numberOfCompetitorsWithSameRankInRound = getNumberOfCompetitorsWithSameRankInRound((RaceColumnInSeries) raceColumn, competitor, rank); - final int numberOfCompetitorsWithBetterScoresInRound = Util.size(((RaceColumnInSeries) raceColumn).getSeries().getFleets()) * (rank-1); - final int bestOverallRankForRank = numberOfCompetitorsWithBetterScoresInRound+1; - final int worstOverallRankForRank = numberOfCompetitorsWithBetterScoresInRound+numberOfCompetitorsWithSameRankInRound; - final int numberOfRanks = worstOverallRankForRank-bestOverallRankForRank+1; - result = (double) bestOverallRankForRank + ((double) numberOfRanks-1)/2.0 - // now subtract the difference between 1.0 and 0.7 in case the first place is contained: - - (bestOverallRankForRank==1 ? (1.0-0.7)/numberOfRanks : 0); + private boolean participatesInNextRound(Leaderboard leaderboard, RaceColumnInSeries raceColumnInSeries, Competitor competitor, TimePoint timePoint, Iterator seriesInRegattaIter) { + final boolean result; + if (isLastRoundInElimination(raceColumnInSeries, seriesInRegattaIter)) { + result = false; } else { - result = null; // not in final round; competitor was promoted from raceColumn to the next round and has - // a non-null score in a subsequent round of the elimination + final Series nextSeries = seriesInRegattaIter.next(); + result = leaderboard.getScoreCorrection().isScoreCorrected(competitor, raceColumnInSeries, timePoint) || + nextSeries.getRaceColumns().iterator().next().getFleetOfCompetitor(competitor) != null; } return result; } @@ -200,40 +233,62 @@ public class LowPointWithEliminationsAndRoundsWinnerGets07 extends LowPoint { */ private int getNumberOfCompetitorsWithSameRankInRound(final RaceColumnInSeries raceColumn, final Competitor competitor, final int rank) { final int numberOfCompetitorsWithSameRankInRound; - final TrackedRace trackedRace = raceColumn.getTrackedRace(competitor); - if (trackedRace == null) { - // Can't determine number of competitors in heat; assuming equal fleet distribution - numberOfCompetitorsWithSameRankInRound = getNumberOfFleets(raceColumn); + if (raceColumn.getSeries().hasSplitFleetContiguousScoring()) { + numberOfCompetitorsWithSameRankInRound = 1; } else { - final boolean isWorstRank = rank == Util.size(trackedRace.getRace().getCompetitors()); - if (!isWorstRank) { - numberOfCompetitorsWithSameRankInRound = getNumberOfFleets(raceColumn); + final Fleet fleet = raceColumn.getFleetOfCompetitor(competitor); + if (fleet == null) { + // Can't determine number of competitors in heat; assuming equal fleet distribution + numberOfCompetitorsWithSameRankInRound = Util.size(raceColumn.getSeries().getFleets()); } else { - // for all other fleets in the round that have tracked races attached, we can count how many of them - // have fewer than "rank" competitors; for fleets with no tracked race attached we then again assume - // maximum competitor number - int count = 0; - for (final Fleet fleet : raceColumn.getSeries().getFleets()) { - final TrackedRace trackedRaceForFleet = raceColumn.getTrackedRace(fleet); - if (trackedRaceForFleet == null) { - count++; // by default assume that other race has at least as many competitors as the competitor's heat - } else { - if (Util.size(trackedRaceForFleet.getRace().getCompetitors()) >= rank) { - count++; + final TrackedRace trackedRace = raceColumn.getTrackedRace(fleet); + final boolean isWorstRank = rank == Util.size(trackedRace.getRace().getCompetitors()); + if (!isWorstRank) { + numberOfCompetitorsWithSameRankInRound = getNumberOfFleetsWithSameOrderingAsCompetitor(raceColumn, competitor, fleet); + } else { + // for all other fleets in the round that have tracked races attached, we can count how many of them + // have fewer than "rank" competitors; for fleets with no tracked race attached we then again assume + // maximum competitor number + int count = 0; + for (final Fleet f : raceColumn.getSeries().getFleets()) { + if (f.getOrdering() == fleet.getOrdering()) { // only consider fleets with equal order to that of competitor's + final TrackedRace trackedRaceForFleet = raceColumn.getTrackedRace(f); + if (trackedRaceForFleet == null) { + count++; // by default assume that other race has at least as many competitors as the competitor's heat + } else { + if (Util.size(trackedRaceForFleet.getRace().getCompetitors()) >= rank) { + count++; + } + } } } + numberOfCompetitorsWithSameRankInRound = count; } - numberOfCompetitorsWithSameRankInRound = count; } } return numberOfCompetitorsWithSameRankInRound; } - private int getNumberOfFleets(final RaceColumnInSeries raceColumn) { - return Util.size(raceColumn.getSeries().getFleets()); + private int getNumberOfFleetsWithSameOrderingAsCompetitor(final RaceColumnInSeries raceColumn, Competitor competitor, Fleet fleetOfCompetitor) { + int result = 0; + final int orderingOfCompetitorsFleet = fleetOfCompetitor.getOrdering(); + for (final Fleet fleet : raceColumn.getFleets()) { + if (fleet.getOrdering() == orderingOfCompetitorsFleet) { + result++; + } + } + return result; } - private boolean isFinalRound(RaceColumnInSeries raceColumn) { - return raceColumn.getFleets().iterator().next().getOrdering() <= LOSERS_FINAL_FLEET_ORDERING; + private boolean isLastRoundInElimination(RaceColumnInSeries raceColumn, Iterator seriesInRegattaIter) { + final boolean result; + if (raceColumn.getFleets().iterator().next().getOrdering() <= LOSERS_FINAL_FLEET_ORDERING) { + // the fleet ordering indicates that raceColumn represents a final round in an elimination + result = true; + } else { + // check if there is a next column + result = !seriesInRegattaIter.hasNext(); + } + return result; } } From 632b78752aeb6de2538bd1ff716f3855341614ae Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Mon, 21 Sep 2015 12:21:44 +0200 Subject: [PATCH 301/504] Fixed resizing of histogram chart --- .../gwt/ui/polarmining/PolarResultsPresenter.java | 14 +++++--------- .../components/PolarGPSFixRetrievalProcessor.java | 7 +++++-- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java index ae0f4e42d6c..373c82f889e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java @@ -57,23 +57,19 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { super(stringMessages); polarChart = createPolarChart(); + dataCountHistogramChart = createDataCountHistogramChart(); polarChartWrapperPanel = new SimpleLayoutPanel() { @Override public void onResize() { polarChart.setSizeToMatchContainer(); polarChart.redraw(); - } - }; - polarChartWrapperPanel.add(polarChart); - - dataCountHistogramChart = createDataCountHistogramChart(); - dataCountHistogramChartWrapperPanel = new SimpleLayoutPanel() { - @Override - public void onResize() { dataCountHistogramChart.setSizeToMatchContainer(); dataCountHistogramChart.redraw(); } }; + polarChartWrapperPanel.add(polarChart); + + dataCountHistogramChartWrapperPanel = new SimpleLayoutPanel(); dataCountHistogramChartWrapperPanel.add(dataCountHistogramChart); dockLayoutPanel = new DockLayoutPanel(Unit.PCT); @@ -182,7 +178,7 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { if (countPerAngle[i] >= settings.getMinimumDataCountPerAngle() && speed > 0) { polarSeries.addPoint(convertedAngle, speed, false, false, false); } - histogramSeries.addPoint(convertedAngle, countPerAngle[i]); + histogramSeries.addPoint(convertedAngle, countPerAngle[i], false, false, false); } polarSeries.setName(key.asString()); histogramSeries.setName(key.asString()); diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java index 4d2389acd44..0882aef3f18 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java @@ -60,8 +60,11 @@ public class PolarGPSFixRetrievalProcessor extends AbstractRetrievalProcessor= settings.getMinimumWindConfidence() : true)) { - result.add(new GPSFixWithPolarContext(fix, trackedRace, windSpeedRangeGroup, competitor, - settings, wind, element)); + GPSFixWithPolarContext potentialResult = new GPSFixWithPolarContext(fix, trackedRace, windSpeedRangeGroup, competitor, + settings, wind, element); + if (!potentialResult.getWindSpeedRange().getSignifier().equals("null")) { + result.add(potentialResult); + } } } } finally { From 3e93e89b97ee1cf222eacc20c7b6c402a7b74ac0 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 21 Sep 2015 13:24:46 +0200 Subject: [PATCH 302/504] Adjusted loading of statistics for different event type --- .../tabs/MultiregattaOverviewTabView.java | 2 +- .../regatta/tabs/RegattaOverviewTabView.java | 4 +- .../places/event/overview/EventViewImpl.java | 4 +- .../places/event/regatta/RegattaViewImpl.java | 5 +- .../mobile/places/series/SeriesViewImpl.java | 4 +- .../dispatch/event/EventActionUtil.java | 3 + .../event/GetEventStatisticsAction.java | 159 +----------------- .../event/GetRegattaStatisticsAction.java | 31 ++++ .../event/GetSeriesStatisticsAction.java | 29 ++++ 9 files changed, 79 insertions(+), 162 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetRegattaStatisticsAction.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetSeriesStatisticsAction.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java index 3cfb9a287fe..71b5f036fcb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java @@ -76,7 +76,7 @@ public class MultiregattaOverviewTabView extends Composite implements Multiregat refreshManager.add(liveRacesListUi.getRefreshable(), new GetLiveRacesForEventAction(currentPresenter.getCtx().getEventDTO().getId())); refreshManager.add(regattaFilterList, new GetRegattaListViewAction(currentPresenter.getCtx().getEventDTO().getId())); - refreshManager.add(statisticsBoxUi, new GetEventStatisticsAction(currentPresenter.getCtx().getEventDTO().getId(), true)); + refreshManager.add(statisticsBoxUi, new GetEventStatisticsAction(currentPresenter.getCtx().getEventDTO().getId())); contentArea.setWidget(this); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java index e1172d4bfdd..e2c08e1aca7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java @@ -19,9 +19,9 @@ import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaLi import com.sap.sailing.gwt.home.desktop.partials.standings.StandingsList; import com.sap.sailing.gwt.home.desktop.partials.statistics.StatisticsBox; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; -import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventStatisticsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForRegattaAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaStatisticsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaWithProgressAction; import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaWithProgressDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; @@ -83,7 +83,7 @@ public class RegattaOverviewTabView extends Composite implements RegattaTabView< refreshManager.add(liveRacesListUi.getRefreshable(), new GetLiveRacesForRegattaAction(currentPresenter.getCtx().getEventDTO() .getId(), currentPresenter.getCtx().getRegattaId())); refreshManager.add(standingsUi, new GetMiniLeaderbordAction(myPlace.getCtx().getEventDTO().getId(), myPlace.getRegattaId(), 5)); - refreshManager.add(statisticsBoxUi, new GetEventStatisticsAction(myPlace.getCtx().getEventDTO().getId(), true)); + refreshManager.add(statisticsBoxUi, new GetRegattaStatisticsAction(myPlace.getCtx().getEventDTO().getId(), myPlace.getRegattaId())); contentArea.setWidget(this); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java index 00fa6a629ec..baee807c58c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java @@ -20,6 +20,7 @@ import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventOverviewStageAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventStatisticsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForRegattaAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaStatisticsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaWithProgressAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattasAndLiveRacesForEventAction; import com.sap.sailing.gwt.ui.shared.general.EventState; @@ -108,7 +109,8 @@ public class EventViewImpl extends AbstractEventView implem private void setupStatisticsBox(Panel container) { statisticsBoxUi = new StatisticsBox(isMultiRegattaEvent()); - refreshManager.add(statisticsBoxUi, new GetEventStatisticsAction(getEventId())); + refreshManager.add(statisticsBoxUi, isMultiRegattaEvent() ? new GetEventStatisticsAction(getEventId()) + : new GetRegattaStatisticsAction(getEventId(), getRegattaId())); container.add(statisticsBoxUi); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java index a62a414f6c3..13d11714235 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaViewImpl.java @@ -12,9 +12,9 @@ import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBox; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventStatisticsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForRegattaAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaStatisticsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaWithProgressAction; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; @@ -57,8 +57,7 @@ public class RegattaViewImpl extends AbstractEventView im private void initStatisticsUi(Panel container) { statisticsUi = new StatisticsBox(false); - // FIXME only show statistics of the regatta - refreshManager.add(statisticsUi, new GetEventStatisticsAction(getEventId(), true)); + refreshManager.add(statisticsUi, new GetRegattaStatisticsAction(getEventId(), getRegattaId())); container.add(statisticsUi); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java index b2b6f1c1a7a..97d772b8bbe 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java @@ -16,8 +16,8 @@ import com.sap.sailing.gwt.home.mobile.partials.seriesheader.SeriesHeader; import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBox; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventStatisticsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniOverallLeaderbordAction; +import com.sap.sailing.gwt.ui.shared.dispatch.event.GetSeriesStatisticsAction; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.EventState; @@ -75,6 +75,6 @@ public class SeriesViewImpl extends Composite implements SeriesView { private void setupStatisticsBox(EventSeriesViewDTO series) { statisticsBoxUi = new StatisticsBox(true); - refreshManager.add(statisticsBoxUi, new GetEventStatisticsAction(series.getId(), false)); + refreshManager.add(statisticsBoxUi, new GetSeriesStatisticsAction(series.getId())); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/EventActionUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/EventActionUtil.java index ca4db508a89..53d83fe4f4b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/EventActionUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/EventActionUtil.java @@ -106,6 +106,9 @@ public final class EventActionUtil { public static void forLeaderboardsOfEvent(DispatchContext context, UUID eventId, LeaderboardCallback callback) { RacingEventService service = context.getRacingEventService(); Event event = service.getEvent(eventId); + if (event == null) { + throw new RuntimeException("Event not found"); + } forLeaderboardsOfEvent(context, event, callback); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventStatisticsAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventStatisticsAction.java index eae15858d96..8cf6cb0005f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventStatisticsAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetEventStatisticsAction.java @@ -1,175 +1,28 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; -import java.util.HashSet; -import java.util.Iterator; -import java.util.NavigableSet; -import java.util.Set; import java.util.UUID; -import java.util.logging.Level; -import java.util.logging.Logger; import com.google.gwt.core.shared.GwtIncompatible; -import com.sap.sailing.domain.base.Competitor; -import com.sap.sailing.domain.base.Event; -import com.sap.sailing.domain.base.Mark; -import com.sap.sailing.domain.common.Distance; -import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.WindSource; -import com.sap.sailing.domain.common.WindSourceType; -import com.sap.sailing.domain.common.tracking.GPSFix; -import com.sap.sailing.domain.common.tracking.GPSFixMoving; -import com.sap.sailing.domain.leaderboard.Leaderboard; -import com.sap.sailing.domain.leaderboard.LeaderboardGroup; -import com.sap.sailing.domain.tracking.GPSFixTrack; -import com.sap.sailing.domain.tracking.MarkPassing; -import com.sap.sailing.domain.tracking.TrackedRace; -import com.sap.sailing.domain.tracking.WindTrack; -import com.sap.sailing.gwt.server.HomeServiceUtil; import com.sap.sailing.gwt.ui.shared.dispatch.Action; import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext; import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL; -import com.sap.sse.common.Duration; -import com.sap.sse.common.TimePoint; -import com.sap.sse.common.Util; -import com.sap.sse.common.Util.Pair; -import com.sap.sse.common.Util.Triple; -import com.sap.sse.common.impl.MillisecondsTimePoint; public class GetEventStatisticsAction implements Action> { - private static final Logger logger = Logger.getLogger(GetEventStatisticsAction.class.getName()); - private static boolean CALCULATE_MAX_SPEED = false; - private static boolean CALCULATE_SAILED_MILES = true; private UUID eventId; - private boolean onlyCurrentEvent; - @SuppressWarnings("unused") - private GetEventStatisticsAction() { + protected GetEventStatisticsAction() { } public GetEventStatisticsAction(UUID eventId) { - this(eventId, true); - } - - public GetEventStatisticsAction(UUID eventId, boolean onlyCurrentEvent) { this.eventId = eventId; - this.onlyCurrentEvent = onlyCurrentEvent; } + @Override @GwtIncompatible - public ResultWithTTL execute(DispatchContext context) { - Event event = context.getRacingEventService().getEvent(eventId); - if (event == null) { - throw new RuntimeException("Event not found"); - } - int competitors = 0; - int races = 0; - int trackedRaces = 0; - int regattas = 0; - long numberOfGPSFixes = 0; - long numberOfWindFixes = 0; - Distance totalDistanceTraveled = Distance.NULL; - Triple maxSpeed = null; - final TimePoint now = MillisecondsTimePoint.now(); - final Set leaderboards = new HashSet<>(); - final boolean filterLeaderboards = onlyCurrentEvent && HomeServiceUtil.isFakeSeries(event); - for (LeaderboardGroup lg : event.getLeaderboardGroups()) { - for (Leaderboard leaderboard : lg.getLeaderboards()) { - if(!filterLeaderboards || HomeServiceUtil.isPartOfEvent(event, leaderboard)) { - leaderboards.add(leaderboard); - } - } - } - for (Leaderboard leaderboard : leaderboards) { - competitors += HomeServiceUtil.calculateCompetitorsCount(leaderboard); - races += HomeServiceUtil.calculateRaceColumnCount(leaderboard); - trackedRaces += HomeServiceUtil.calculateTrackedRaceCount(leaderboard); - regattas++; - String disableStats = System.getenv("DISABLE_STATS"); - if (disableStats == null || "false".equals(disableStats)) { - try { - for (TrackedRace trackedRace : leaderboard.getTrackedRaces()) { - for (Competitor competitor : trackedRace.getRace().getCompetitors()) { - GPSFixTrack competitorTrack = trackedRace.getTrack(competitor); - competitorTrack.lockForRead(); - try { - numberOfGPSFixes += Util.size(competitorTrack.getRawFixes()); - } finally { - competitorTrack.unlockAfterRead(); - } - if (trackedRace.hasStarted(now)) { - final NavigableSet competitorMarkPassings = trackedRace - .getMarkPassings(competitor); - MarkPassing lastMarkPassingBeforeNow = null; - trackedRace.lockForRead(competitorMarkPassings); - try { - MarkPassing next = null; - Iterator i = competitorMarkPassings.descendingIterator(); - while (i.hasNext() && (next = i.next()).getTimePoint().after(now)) - ; - if (next != null) { - lastMarkPassingBeforeNow = next; - } - } finally { - trackedRace.unlockAfterRead(competitorMarkPassings); - } - if (lastMarkPassingBeforeNow != null) { - // competitor has started and has at least one mark passing before now; compute - // distance traveled up to that mark passing, increasing likelihood of cache hits as compared to - // using "now" as the query time point - if (CALCULATE_SAILED_MILES) { - totalDistanceTraveled = totalDistanceTraveled.add(competitorTrack - .getDistanceTraveled(trackedRace.getStartOfRace(), - lastMarkPassingBeforeNow.getTimePoint())); - } - if (CALCULATE_MAX_SPEED) { - Pair competitorMaxSpeed = competitorTrack - .getMaximumSpeedOverGround(trackedRace.getStartOfRace(), - lastMarkPassingBeforeNow.getTimePoint()); - if (competitorMaxSpeed != null - && (maxSpeed == null || competitorMaxSpeed.getB().compareTo( - maxSpeed.getB()) > 0) - // only accept "reasonable" max speeds - && competitorMaxSpeed.getB().compareTo( - GPSFixTrack.DEFAULT_MAX_SPEED_FOR_SMOOTHING) <= 0) { - maxSpeed = new Triple<>(competitor, competitorMaxSpeed.getB(), - competitorMaxSpeed.getA().getTimePoint()); - } - } - } - } - } - for (Mark mark : trackedRace.getMarks()) { - GPSFixTrack markTrack = trackedRace.getOrCreateTrack(mark); - markTrack.lockForRead(); - try { - numberOfGPSFixes += Util.size(markTrack.getRawFixes()); - } finally { - markTrack.unlockAfterRead(); - } - } - for (WindSource windSource : trackedRace.getWindSources()) { - // don't count the "virtual" wind sources - if (windSource.canBeStored() || windSource.getType() == WindSourceType.RACECOMMITTEE) { - WindTrack windTrack = trackedRace.getOrCreateWindTrack(windSource); - windTrack.lockForRead(); - try { - numberOfWindFixes += Util.size(windTrack.getRawFixes()); - } finally { - windTrack.unlockAfterRead(); - } - } - } - } - } catch (Exception e) { - logger.log(Level.WARNING, "Exception during calculation of event statistics", e); - } - } - } - if (totalDistanceTraveled == Distance.NULL) { - totalDistanceTraveled = null; - } - return new ResultWithTTL(Duration.ONE_MINUTE.times(5), new EventStatisticsDTO(regattas, - competitors, races, trackedRaces, numberOfGPSFixes, numberOfWindFixes, maxSpeed, totalDistanceTraveled)); + public ResultWithTTL execute(DispatchContext context) throws Exception { + StatisticsCalculator statisticsCalculator = new StatisticsCalculator(); + EventActionUtil.forLeaderboardsOfEvent(context, eventId, statisticsCalculator); + return statisticsCalculator.getResult(); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetRegattaStatisticsAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetRegattaStatisticsAction.java new file mode 100644 index 00000000000..6bfc23573b4 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetRegattaStatisticsAction.java @@ -0,0 +1,31 @@ +package com.sap.sailing.gwt.ui.shared.dispatch.event; + +import java.util.UUID; + +import com.google.gwt.core.shared.GwtIncompatible; +import com.sap.sailing.gwt.ui.shared.dispatch.Action; +import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext; +import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL; + +public class GetRegattaStatisticsAction implements Action>{ + + private UUID eventId; + private String regattaId; + + protected GetRegattaStatisticsAction() { + } + + public GetRegattaStatisticsAction(UUID eventId, String regattaId) { + this.eventId = eventId; + this.regattaId = regattaId; + } + + @Override + @GwtIncompatible + public ResultWithTTL execute(DispatchContext context) throws Exception { + StatisticsCalculator statisticsCalculator = new StatisticsCalculator(); + statisticsCalculator.doForLeaderboard(EventActionUtil.getLeaderboardContext(context, eventId, regattaId)); + return statisticsCalculator.getResult(); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetSeriesStatisticsAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetSeriesStatisticsAction.java new file mode 100644 index 00000000000..fc7cf3f05e3 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetSeriesStatisticsAction.java @@ -0,0 +1,29 @@ +package com.sap.sailing.gwt.ui.shared.dispatch.event; + +import java.util.UUID; + +import com.google.gwt.core.shared.GwtIncompatible; +import com.sap.sailing.gwt.ui.shared.dispatch.Action; +import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext; +import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL; + +public class GetSeriesStatisticsAction implements Action>{ + + private UUID seriesId; + + protected GetSeriesStatisticsAction() { + } + + public GetSeriesStatisticsAction(UUID seriesId) { + this.seriesId = seriesId; + } + + @Override + @GwtIncompatible + public ResultWithTTL execute(DispatchContext context) throws Exception { + StatisticsCalculator statisticsCalculator = new StatisticsCalculator(); + EventActionUtil.forLeaderboardsOfEvent(context, seriesId, statisticsCalculator); + return statisticsCalculator.getResult(); + } + +} From 78f28a336b4bbd60bfc4f14408dc017d1b69eed6 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Mon, 21 Sep 2015 13:53:53 +0200 Subject: [PATCH 303/504] The data mining settings are now fully functional --- java/com.sap.sailing.gwt.ui/DataMining.css | 8 +++ .../AnchorDataMiningSettingsControl.java | 8 +-- ...ompositeTabbedSettingsDialogComponent.java | 50 ++++++++++--------- .../shared/components/CompositeValidator.java | 44 +++++++--------- 4 files changed, 56 insertions(+), 54 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/DataMining.css b/java/com.sap.sailing.gwt.ui/DataMining.css index 3f627c3140a..94b50a617b5 100644 --- a/java/com.sap.sailing.gwt.ui/DataMining.css +++ b/java/com.sap.sailing.gwt.ui/DataMining.css @@ -46,6 +46,14 @@ table td,select,button { font-size: 14px; } +.gwt-DialogBox { + z-index: 20; +} + +.gwt-PopupPanelGlass { + z-index: 19; +} + .contentOuterPanel { background: #dddcdc; margin: 0 12px 0 12px; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/AnchorDataMiningSettingsControl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/AnchorDataMiningSettingsControl.java index 2fce9abb3a4..422f762d980 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/AnchorDataMiningSettingsControl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/AnchorDataMiningSettingsControl.java @@ -1,7 +1,7 @@ package com.sap.sailing.gwt.ui.datamining; -import java.util.HashSet; -import java.util.Set; +import java.util.Collection; +import java.util.LinkedHashSet; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; @@ -23,12 +23,12 @@ public class AnchorDataMiningSettingsControl implements DataMiningSettingsContro public static final ComponentResources resources = GWT.create(ComponentResources.class); private final StringMessages stringMessages; - private final Set> components; + private final Collection> components; private final Anchor anchor; public AnchorDataMiningSettingsControl(final StringMessages stringMessages) { this.stringMessages = stringMessages; - components = new HashSet<>(); + components = new LinkedHashSet<>(); anchor = new Anchor(AbstractImagePrototype.create(resources.darkSettingsIcon()).getSafeHtml()); anchor.addStyleName("settingsAnchor"); diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialogComponent.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialogComponent.java index 3d1598ca81d..902beae950d 100755 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialogComponent.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeTabbedSettingsDialogComponent.java @@ -1,13 +1,13 @@ package com.sap.sse.gwt.client.shared.components; +import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.HashSet; -import java.util.Map; import com.google.gwt.user.client.ui.FocusWidget; import com.google.gwt.user.client.ui.TabPanel; import com.google.gwt.user.client.ui.Widget; +import com.sap.sse.common.Util; import com.sap.sse.common.settings.Settings; import com.sap.sse.gwt.client.dialog.DataEntryDialog; import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; @@ -15,27 +15,36 @@ import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSe public class CompositeTabbedSettingsDialogComponent implements SettingsDialogComponent { - private final Collection> components; - private final Map, SettingsDialogComponent> dialogComponents; + public class ComponentAndDialogComponent extends Util.Pair, SettingsDialogComponent> { + private static final long serialVersionUID = -4342002423677523158L; + + public ComponentAndDialogComponent(Component a, SettingsDialogComponent b) { + super(a, b); + } + + } + + private final Collection> components; public CompositeTabbedSettingsDialogComponent(Iterable> components) { - this.components = new HashSet<>(); + this.components = new ArrayList<>(); for (Component component : components) { if (component.hasSettings()) { - this.components.add(component); + this.components.add(createComponentAndDialogComponent(component)); } } - dialogComponents = new HashMap<>(); + } + + private ComponentAndDialogComponent createComponentAndDialogComponent(Component component) { + return new ComponentAndDialogComponent(component, component.getSettingsDialogComponent()); } @Override public Widget getAdditionalWidget(DataEntryDialog dialog) { TabPanel result = new TabPanel(); - for (Component component : components) { - SettingsDialogComponent settingsDialogComponent = component.getSettingsDialogComponent(); - dialogComponents.put(component, settingsDialogComponent); - Widget w = settingsDialogComponent.getAdditionalWidget((DataEntryDialog) dialog); - result.add(w, component.getLocalizedShortName()); + for (ComponentAndDialogComponent component : components) { + Widget w = component.getB().getAdditionalWidget((DataEntryDialog) dialog); + result.add(w, component.getA().getLocalizedShortName()); } result.selectTab(0); return result; @@ -44,30 +53,25 @@ public class CompositeTabbedSettingsDialogComponent implements SettingsDialogCom @Override public CompositeSettings getResult() { Collection> settings = new HashSet<>(); - for (Component component : components) { + for (ComponentAndDialogComponent component : components) { settings.add(getComponentAndSettings(component)); } return new CompositeSettings(settings); } - private ComponentAndSettingsPair getComponentAndSettings(Component component) { - return new ComponentAndSettingsPair(component, getDialogComponent(component).getResult()); - } - - @SuppressWarnings("unchecked") - private SettingsDialogComponent getDialogComponent(Component component) { - return (SettingsDialogComponent) dialogComponents.get(component); + private ComponentAndSettingsPair getComponentAndSettings(ComponentAndDialogComponent component) { + return new ComponentAndSettingsPair(component.getA(), component.getB().getResult()); } @Override public Validator getValidator() { - return new CompositeValidator(dialogComponents.values()); + return new CompositeValidator(components); } @Override public FocusWidget getFocusWidget() { - for (Component component : components) { - FocusWidget fw = getDialogComponent(component).getFocusWidget(); + for (ComponentAndDialogComponent component : components) { + FocusWidget fw = component.getB().getFocusWidget(); if (fw != null) { return fw; } diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeValidator.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeValidator.java index d3ed7742fec..691249acca2 100755 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeValidator.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/shared/components/CompositeValidator.java @@ -1,33 +1,22 @@ package com.sap.sse.gwt.client.shared.components; -import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; -import com.sap.sse.common.Util; import com.sap.sse.common.settings.Settings; import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; import com.sap.sse.gwt.client.shared.components.CompositeSettings.ComponentAndSettingsPair; +import com.sap.sse.gwt.client.shared.components.CompositeTabbedSettingsDialogComponent.ComponentAndDialogComponent; public class CompositeValidator implements Validator { - private static class ComponentAndValidator extends Util.Pair, Validator> { - private static final long serialVersionUID = -4190322565836849861L; - - public ComponentAndValidator(SettingsDialogComponent a, Validator b) { - super(a, b); - } - } - private final Iterable> validators; + private final Map, Validator> validatorsMappedByComponent; - public CompositeValidator(Iterable> dialogComponents) { - ArrayList> v = new ArrayList>(); - for (SettingsDialogComponent dialogComponent : dialogComponents) { - v.add(getComponentAndValidator(dialogComponent)); + public CompositeValidator(Iterable> componentsAndDialogComponents) { + validatorsMappedByComponent = new HashMap<>(); + for (ComponentAndDialogComponent component : componentsAndDialogComponents) { + validatorsMappedByComponent.put(component.getA(), component.getB().getValidator()); } - validators = v; - } - - private ComponentAndValidator getComponentAndValidator(SettingsDialogComponent dialogComponents) { - return new ComponentAndValidator(dialogComponents, dialogComponents.getValidator()); } @Override @@ -35,23 +24,24 @@ public class CompositeValidator implements Validator { StringBuilder result = new StringBuilder(); for (ComponentAndSettingsPair componentAndSettings : valueToValidate.getSettingsPerComponent()) { final String errorMessage = getErrorMessage(componentAndSettings); - if (errorMessage != null) { + if (errorMessage != null && !errorMessage.isEmpty()) { result.append(errorMessage); - result.append("; "); } } return result.toString(); } private String getErrorMessage(ComponentAndSettingsPair componentAndSettings) { - for (ComponentAndValidator componentAndValidator : validators) { - if (componentAndValidator.getA() == componentAndSettings.getA()) { - @SuppressWarnings("unchecked") - final Validator validator = (Validator) componentAndValidator.getB(); - return validator.getErrorMessage(componentAndSettings.getB()); + String errorMessage = null; + @SuppressWarnings("unchecked") + Validator validator = (Validator) validatorsMappedByComponent.get(componentAndSettings.getA()); + if (validator != null) { + errorMessage = validator.getErrorMessage(componentAndSettings.getB()); + if (errorMessage != null && !errorMessage.isEmpty() && !getClass().equals(validator.getClass())) { + errorMessage += "; "; } } - return null; + return errorMessage; } } From 53999fb20e2794364b9774c8421a95e9d16c9e06 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Mon, 21 Sep 2015 14:05:10 +0200 Subject: [PATCH 304/504] Fixed incorrect import after moving comparator --- .../app/ui/adapters/CourseNameAdapter.java | 11 ++++++----- .../BoatClassSeriesDataFleetComparator.java | 2 +- .../app/ui/comparators/NaturalNamedComparator.java | 2 +- .../ui/comparators/RegattaSeriesFleetComparator.java | 2 +- .../coursedesign/ByNameCourseDesignDialog.java | 2 +- .../preference/RegattaSpecificPreferenceFragment.java | 2 +- .../app/ui/fragments/raceinfo/StartTimeFragment.java | 2 +- 7 files changed, 12 insertions(+), 11 deletions(-) diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/adapters/CourseNameAdapter.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/adapters/CourseNameAdapter.java index 4deec4cee02..d0be4b4aff0 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/adapters/CourseNameAdapter.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/adapters/CourseNameAdapter.java @@ -1,5 +1,9 @@ package com.sap.sailing.racecommittee.app.ui.adapters; +import java.util.Collections; +import java.util.List; +import java.util.Locale; + import android.app.Activity; import android.content.Context; import android.graphics.drawable.Drawable; @@ -9,14 +13,11 @@ import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; + import com.sap.sailing.android.shared.util.ViewHelper; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.utils.BitmapHelper; - -import java.util.Collections; -import java.util.List; -import java.util.Locale; +import com.sap.sse.common.util.NaturalComparator; public class CourseNameAdapter extends BaseAdapter implements View.OnClickListener { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/comparators/BoatClassSeriesDataFleetComparator.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/comparators/BoatClassSeriesDataFleetComparator.java index d1d03872efd..061ce4d133a 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/comparators/BoatClassSeriesDataFleetComparator.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/comparators/BoatClassSeriesDataFleetComparator.java @@ -2,8 +2,8 @@ package com.sap.sailing.racecommittee.app.ui.comparators; import java.util.Comparator; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.racecommittee.app.domain.impl.BoatClassSeriesFleet; +import com.sap.sse.common.util.NaturalComparator; public class BoatClassSeriesDataFleetComparator implements Comparator { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/comparators/NaturalNamedComparator.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/comparators/NaturalNamedComparator.java index 8a424915370..8c92f586833 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/comparators/NaturalNamedComparator.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/comparators/NaturalNamedComparator.java @@ -2,8 +2,8 @@ package com.sap.sailing.racecommittee.app.ui.comparators; import java.util.Comparator; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sse.common.Named; +import com.sap.sse.common.util.NaturalComparator; public class NaturalNamedComparator implements Comparator { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/comparators/RegattaSeriesFleetComparator.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/comparators/RegattaSeriesFleetComparator.java index f5362367eb6..db342ffca9f 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/comparators/RegattaSeriesFleetComparator.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/comparators/RegattaSeriesFleetComparator.java @@ -2,8 +2,8 @@ package com.sap.sailing.racecommittee.app.ui.comparators; import java.util.Comparator; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.racecommittee.app.domain.impl.RaceGroupSeriesFleet; +import com.sap.sse.common.util.NaturalComparator; public class RegattaSeriesFleetComparator implements Comparator { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ByNameCourseDesignDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ByNameCourseDesignDialog.java index 45d53e07d11..8c3672cee08 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ByNameCourseDesignDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/coursedesign/ByNameCourseDesignDialog.java @@ -17,10 +17,10 @@ import android.widget.ListAdapter; import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.impl.CourseDataImpl; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.ui.fragments.dialogs.RaceDialogFragment; import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.util.NaturalComparator; public class ByNameCourseDesignDialog extends RaceDialogFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/preference/RegattaSpecificPreferenceFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/preference/RegattaSpecificPreferenceFragment.java index 269f0a51045..14cbe3350f0 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/preference/RegattaSpecificPreferenceFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/preference/RegattaSpecificPreferenceFragment.java @@ -14,11 +14,11 @@ import android.preference.PreferenceScreen; import com.sap.sailing.android.shared.ui.fragments.preference.BasePreferenceFragment; import com.sap.sailing.domain.base.racegroup.RaceGroup; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.racecommittee.app.R; import com.sap.sailing.racecommittee.app.data.DataManager; import com.sap.sailing.racecommittee.app.data.ReadonlyDataManager; import com.sap.sailing.racecommittee.app.ui.activities.PreferenceActivity; +import com.sap.sse.common.util.NaturalComparator; public class RegattaSpecificPreferenceFragment extends BasePreferenceFragment { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/StartTimeFragment.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/StartTimeFragment.java index 60bf4516e81..3797d571b4e 100755 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/StartTimeFragment.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/raceinfo/StartTimeFragment.java @@ -31,7 +31,6 @@ import com.sap.sailing.domain.abstractlog.race.state.RaceStateChangedListener; import com.sap.sailing.domain.abstractlog.race.state.ReadonlyRaceState; import com.sap.sailing.domain.abstractlog.race.state.impl.BaseRaceStateChangedListener; import com.sap.sailing.domain.common.LeaderboardNameConstants; -import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.racecommittee.app.AppConstants; import com.sap.sailing.racecommittee.app.AppPreferences; @@ -50,6 +49,7 @@ import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsDurationImpl; import com.sap.sse.common.impl.MillisecondsTimePoint; +import com.sap.sse.common.util.NaturalComparator; public class StartTimeFragment extends BaseFragment implements View.OnClickListener, NumberPicker.OnValueChangeListener, TimePicker.OnTimeChangedListener { From 8e39f5b58afceaea82256b9447561140ab69c514 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 21 Sep 2015 14:49:23 +0200 Subject: [PATCH 305/504] fix for surfing scoring scheme for case where next race has a score correction only; need test case! --- .../impl/LowPointWithEliminationsAndRoundsWinnerGets07.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java index b2372364c0b..ca666a0f79c 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java @@ -202,7 +202,7 @@ public class LowPointWithEliminationsAndRoundsWinnerGets07 extends LowPoint { result = false; } else { final Series nextSeries = seriesInRegattaIter.next(); - result = leaderboard.getScoreCorrection().isScoreCorrected(competitor, raceColumnInSeries, timePoint) || + result = leaderboard.getScoreCorrection().isScoreCorrected(competitor, nextSeries.getRaceColumns().iterator().next(), timePoint) || nextSeries.getRaceColumns().iterator().next().getFleetOfCompetitor(competitor) != null; } return result; From e63237745eda361f2056a930f08889fdf1e7c28f Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 21 Sep 2015 14:50:22 +0200 Subject: [PATCH 306/504] first attempt trying to simply avoid NPE; but a more solid fix is required as I'm not sure how to ideally recover from the situation here --- .../impl/CandidateChooserImpl.java | 76 ++++++++++++------- 1 file changed, 47 insertions(+), 29 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/impl/CandidateChooserImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/impl/CandidateChooserImpl.java index e5f86a6a9ba..0db14b4fa3a 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/impl/CandidateChooserImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/impl/CandidateChooserImpl.java @@ -82,7 +82,19 @@ public class CandidateChooserImpl implements CandidateChooser { TreeSet fixedPasses = new TreeSet(new Comparator() { @Override public int compare(Candidate o1, Candidate o2) { - return o1.getOneBasedIndexOfWaypoint() - o2.getOneBasedIndexOfWaypoint(); + final int result; + if (o1 == null) { + if (o2 == null) { + result = 0; + } else { + result = -1; + } + } else if (o2 == null) { + result = 1; + } else { + result = o1.getOneBasedIndexOfWaypoint() - o2.getOneBasedIndexOfWaypoint(); + } + return result; } }); fixedPassings.put(c, fixedPasses); @@ -152,9 +164,11 @@ public class CandidateChooserImpl implements CandidateChooser { break; } } - fixedPassings.get(c).remove(toRemove); - removeCandidates(c, Arrays.asList(toRemove)); - findShortestPath(c); + if (toRemove != null) { + fixedPassings.get(c).remove(toRemove); + removeCandidates(c, Arrays.asList(toRemove)); + findShortestPath(c); + } } @Override @@ -294,30 +308,34 @@ public class CandidateChooserImpl implements CandidateChooser { 0, race.getRace().getCourse().getNumberOfWaypoints()), 0.0)); while (!endFound) { Util.Pair cheapestEdgeWithCost = currentEdgesCheapestFirst.pollFirst(); - Edge currentCheapestEdge = cheapestEdgeWithCost.getA(); - Double currentCheapestCost = cheapestEdgeWithCost.getB(); - // If the shortest path to this candidate is already known the new edge is not added. - if (!candidateWithParentAndSmallestTotalCost.containsKey(currentCheapestEdge.getEnd())) { - // The cheapest edge taking us to currentCheapestEdge.getEnd() is found. Remember it. - candidateWithParentAndSmallestTotalCost.put(currentCheapestEdge.getEnd(), new Util.Pair( - currentCheapestEdge.getStart(), currentCheapestCost)); - if (logger.isLoggable(Level.FINEST)) { - logger.finest("Added "+ currentCheapestEdge + "as cheapest edge for " + c); - } - endFound = currentCheapestEdge.getEnd() == endOfFixedInterval; - if (!endFound) { - // the end of the segment was not yet found; add edges leading away from - // currentCheapestEdge.getEnd(), summing up their cost with the cost required - // to reach currentCheapestEdge.getEnd() - Set edgesForNewCandidate = allCompetitorEdges.get(currentCheapestEdge.getEnd()); - if (edgesForNewCandidate != null) { - for (Edge e : edgesForNewCandidate) { - int oneBasedIndexOfEndOfEdge = e.getEnd().getOneBasedIndexOfWaypoint(); - // only add edge if it stays within the current segment, not exceeding - // the next fixed mark passing - if (oneBasedIndexOfEndOfEdge <= indexOfEndOfFixedInterval - && (oneBasedIndexOfEndOfEdge < oneBasedIndexOfSuppressedWaypoint || e.getEnd() == end)) { - currentEdgesCheapestFirst.add(new Util.Pair(e, currentCheapestCost + e.getCost())); + if (cheapestEdgeWithCost == null) { + endFound = true; + } else { + Edge currentCheapestEdge = cheapestEdgeWithCost.getA(); + Double currentCheapestCost = cheapestEdgeWithCost.getB(); + // If the shortest path to this candidate is already known the new edge is not added. + if (!candidateWithParentAndSmallestTotalCost.containsKey(currentCheapestEdge.getEnd())) { + // The cheapest edge taking us to currentCheapestEdge.getEnd() is found. Remember it. + candidateWithParentAndSmallestTotalCost.put(currentCheapestEdge.getEnd(), new Util.Pair( + currentCheapestEdge.getStart(), currentCheapestCost)); + if (logger.isLoggable(Level.FINEST)) { + logger.finest("Added "+ currentCheapestEdge + "as cheapest edge for " + c); + } + endFound = currentCheapestEdge.getEnd() == endOfFixedInterval; + if (!endFound) { + // the end of the segment was not yet found; add edges leading away from + // currentCheapestEdge.getEnd(), summing up their cost with the cost required + // to reach currentCheapestEdge.getEnd() + Set edgesForNewCandidate = allCompetitorEdges.get(currentCheapestEdge.getEnd()); + if (edgesForNewCandidate != null) { + for (Edge e : edgesForNewCandidate) { + int oneBasedIndexOfEndOfEdge = e.getEnd().getOneBasedIndexOfWaypoint(); + // only add edge if it stays within the current segment, not exceeding + // the next fixed mark passing + if (oneBasedIndexOfEndOfEdge <= indexOfEndOfFixedInterval + && (oneBasedIndexOfEndOfEdge < oneBasedIndexOfSuppressedWaypoint || e.getEnd() == end)) { + currentEdgesCheapestFirst.add(new Util.Pair(e, currentCheapestCost + e.getCost())); + } } } } @@ -448,7 +466,7 @@ public class CandidateChooserImpl implements CandidateChooser { private void removeCandidates(Competitor c, Iterable wrongCandidates) { for (Candidate can : wrongCandidates) { - logger.finest("Removing all edges containing " + can.toString() + "of "+ c); + logger.finest("Removing all edges containing " + can + "of "+ c); candidates.get(c).remove(can); Map> edges = allEdges.get(c); edges.remove(can); From 9f04bc2308f9c092e6fd02ec0b2746ac524eb713 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 21 Sep 2015 14:51:35 +0200 Subject: [PATCH 307/504] ifixing bug 3288 by re-enabling Remove/Stop Tracking buttons for RaceLog Tracking tab --- .../ui/adminconsole/AbstractLeaderboardConfigPanel.java | 6 +++++- .../adminconsole/RaceLogTrackingEventManagementPanel.java | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java index 795cffef1dc..ecf918e0008 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java @@ -212,7 +212,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement raceSelectionProvider = new RaceSelectionModel(); trackedRacesListComposite = new TrackedRacesListComposite(sailingService, errorReporter, regattaRefresher, - raceSelectionProvider, stringMessages, /* multiselection */false, /* actionButtonsEnabled */ false); + raceSelectionProvider, stringMessages, /* multiselection */false, isActionButtonsEnabled()); trackedRacesListComposite.ensureDebugId("TrackedRacesListComposite"); trackedRacesPanel.add(trackedRacesListComposite); trackedRacesListComposite.addTrackedRaceChangeListener(this); @@ -253,6 +253,10 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement addSelectedLeaderboardRacesControls(selectedLeaderboardRaceButtonPanel); } + + protected boolean isActionButtonsEnabled() { + return /* actionButtonsEnabled */ false; + } protected abstract void addLeaderboardControls(Panel controlsPanel); protected abstract void addSelectedLeaderboardRacesControls(Panel racesPanel); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java index 4399ab32334..a3b76983a3f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java @@ -70,6 +70,13 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf importContent.add(deviceIdentifierTable); } + /** + * When doing race log tracking, the Remove and Stop Tracking buttons are required. + */ + protected boolean isActionButtonsEnabled() { + return /* actionButtonsEnabled */ true; + } + @Override protected void addColumnsToLeaderboardTableAndSetSelectionModel(CellTable leaderboardTable, AdminConsoleTableResources tableResources) { ListHandler leaderboardColumnListHandler = new ListHandler( From 056c84f1d3956c9f80de9be6465bd60dc60dd97c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 21 Sep 2015 15:05:29 +0200 Subject: [PATCH 308/504] failing test case for untracked finals in elimination for which score corrections have been captured --- .../LeaderboardScoringAndRankingTest.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java index a7ad47c7943..4dcab88e506 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java @@ -809,6 +809,67 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { } } + @Test + public void testElminationScoringSchemeWithFinalSailedButNotTracked() throws NoWindException { + Regatta regatta = createRegattaWithEliminations(1, new int[] { 8, 4, 2, 2 }, "testBasicElminationScoringScheme", + DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), + DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT_WITH_ELIMINATIONS_AND_ROUNDS_WINNER_GETS_07)); + Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[0]); + Competitor[] c = createCompetitors(64).toArray(new Competitor[64]); + // first round with 64 competitors, eight per heat: + Competitor[][] competitorsForHeatsInRound1 = new Competitor[8][]; + TimePoint later = null; + for (int heat=0; heat<8; heat++) { + competitorsForHeatsInRound1[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + competitorsForHeatsInRound1[heat][i] = c[8*heat+i]; + } + later = createAndAttachTrackedRaces(series.get(0), "Heat "+(heat+1), /* withScores */ true, competitorsForHeatsInRound1[heat]); + } + // quarter-finals has promoted top four competitors of first round in heats with eight competitors each: + Competitor[][] competitorsForHeatsInQuarterFinals = new Competitor[4][]; + for (int heat=0; heat<4; heat++) { + competitorsForHeatsInQuarterFinals[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + competitorsForHeatsInQuarterFinals[heat][i] = c[8*(2*heat+(i/4))+(i%4)]; + } + later = createAndAttachTrackedRaces(series.get(1), "Heat "+(heat+9), /* withScores */ true, competitorsForHeatsInQuarterFinals[heat]); + } + // semi-finals has promoted top four competitors of quarter finals which are the top four of each other first-round heat: + Competitor[][] competitorsForHeatsInSemiFinals = new Competitor[2][]; + for (int heat=0; heat<2; heat++) { + competitorsForHeatsInSemiFinals[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + competitorsForHeatsInSemiFinals[heat][i] = c[8*(4*heat+2*(i/4))+(i%4)]; + } + later = createAndAttachTrackedRaces(series.get(2), "Heat "+(heat+13), /* withScores */ true, competitorsForHeatsInSemiFinals[heat]); + } + // finals has promoted top four competitors of semi finals which are the top four of first and fifth first-round heats + // for the final, and the top four of the first round's third and seventh heat; we assume here that the finals have not + // been sailed and therefore expect the scores to be obtained by interpolating, using 1.0 instead of 0.7 for averaging. + Competitor[][] competitorsForHeatsInFinals = new Competitor[2][]; + for (int heat=0; heat<2; heat++) { + competitorsForHeatsInFinals[heat] = new Competitor[8]; + for (int i=0; i<8; i++) { + final Competitor comp = c[8*(2*heat+4*(i/4))+(i%4)]; + competitorsForHeatsInFinals[heat][i] = comp; + leaderboard.getScoreCorrection().correctScore(comp, series.get(3).getRaceColumns().iterator().next(), heat==0&&i==0 ? 0.7 : 8*heat+i+1); + } + } + for (int i=0; i<4; i++) { + assertEquals(i==0?0.7:i+1, leaderboard.getTotalPoints(c[i], later), 0.000000001); + } + for (int i=32; i<36; i++) { + assertEquals(i-27, leaderboard.getTotalPoints(c[i], later), 0.000000001); + } + for (int i=16; i<20; i++) { + assertEquals(i-7, leaderboard.getTotalPoints(c[i], later), 0.000000001); + } + for (int i=48; i<52; i++) { + assertEquals(i-35, leaderboard.getTotalPoints(c[i], later), 0.000000001); + } + } + @Test public void testElminationScoringSchemeWithOnlyFirstRoundSailed() throws NoWindException { Regatta regatta = createRegattaWithEliminations(1, new int[] { 8, 4, 2, 2 }, "testBasicElminationScoringScheme", From 26aced85882623681599db297726bd901b3e0405 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Mon, 21 Sep 2015 15:10:24 +0200 Subject: [PATCH 309/504] Added first classes for datamining the polar api --- .../Polars_StringMessages_de.properties | 3 +- .../Polars_StringMessages_en.properties | 3 +- .../sailing/polars/datamining/Activator.java | 2 ++ .../PolarsDataRetrievalChainDefinitions.java | 9 ++++++ ...kendPolarsBoatClassRetrievalProcessor.java | 30 +++++++++++++++++++ .../data/HasBackendPolarBoatClassContext.java | 11 +++++++ .../BoatClassWithBackendPolarContext.java | 22 ++++++++++++++ .../datamining/impl/TestStatisticQuery.java | 2 +- .../SingleDataRetrieverChainDefinition.java | 3 +- 9 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/BackendPolarsBoatClassRetrievalProcessor.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasBackendPolarBoatClassContext.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/BoatClassWithBackendPolarContext.java rename java/{com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util => com.sap.sse.datamining/src/com/sap/sse/datamining/impl}/components/SingleDataRetrieverChainDefinition.java (92%) diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties index 2ce68e732c8..0e75fa4447e 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties @@ -1,4 +1,5 @@ -PolarChain1=Polar Sammler 1 +PolarChain1=Polare +PolarChain1=Backend-Polare RaceColumn=Rennen LegIndex=Schenkel Index PolarData=Polardaten diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties index 2f47688f1c1..384ba93c3bd 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties @@ -1,4 +1,5 @@ -PolarChain1=Polar Creator 1 +PolarChain1=Polars +PolarChain2=Backend Polars RaceColumn=RaceColumn LegIndex=Leg Index PolarData=Polar Data diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java index fc56014ac4d..e1962a69778 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java @@ -8,6 +8,7 @@ import org.osgi.framework.BundleContext; import com.sap.sailing.datamining.RacingEventServiceProvider; import com.sap.sailing.polars.datamining.components.aggregators.PolarDataAggregationProcessor; +import com.sap.sailing.polars.datamining.data.HasBackendPolarBoatClassContext; import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; import com.sap.sailing.polars.datamining.data.HasFleetPolarContext; import com.sap.sailing.polars.datamining.data.HasGPSFixPolarContext; @@ -76,6 +77,7 @@ public class Activator extends AbstractDataMiningActivator implements DataMining internalClasses.add(HasCompetitorPolarContext.class); internalClasses.add(HasLegPolarContext.class); internalClasses.add(HasGPSFixPolarContext.class); + internalClasses.add(HasBackendPolarBoatClassContext.class); return internalClasses; } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java index aa5aaea1c89..b510f3bb937 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java @@ -3,6 +3,7 @@ package com.sap.sailing.polars.datamining; import java.util.ArrayList; import java.util.Collection; +import com.sap.sailing.polars.datamining.components.BackendPolarsBoatClassRetrievalProcessor; import com.sap.sailing.polars.datamining.components.PolarCompetitorRetrievalProcessor; import com.sap.sailing.polars.datamining.components.PolarFleetRetrievalProcessor; import com.sap.sailing.polars.datamining.components.PolarGPSFixRetrievalProcessor; @@ -10,6 +11,7 @@ import com.sap.sailing.polars.datamining.components.PolarLeaderboardGroupRetriev import com.sap.sailing.polars.datamining.components.PolarLeaderboardRetrievalProcessor; import com.sap.sailing.polars.datamining.components.PolarLegRetrievalProcessor; import com.sap.sailing.polars.datamining.components.PolarRaceColumnRetrievalProcessor; +import com.sap.sailing.polars.datamining.data.HasBackendPolarBoatClassContext; import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; import com.sap.sailing.polars.datamining.data.HasFleetPolarContext; import com.sap.sailing.polars.datamining.data.HasGPSFixPolarContext; @@ -22,6 +24,7 @@ import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettingsImpl; import com.sap.sailing.server.RacingEventService; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; import com.sap.sse.datamining.impl.components.SimpleDataRetrieverChainDefinition; +import com.sap.sse.datamining.impl.components.SingleDataRetrieverChainDefinition; public class PolarsDataRetrievalChainDefinitions { @@ -46,6 +49,12 @@ public class PolarsDataRetrievalChainDefinitions { definition1.endWith(PolarCompetitorRetrievalProcessor.class, PolarGPSFixRetrievalProcessor.class, HasGPSFixPolarContext.class, PolarDataMiningSettings.class, PolarDataMiningSettingsImpl.createStandardPolarSettings(), "GPSFix"); dataRetrieverChainDefinitions.add(definition1); + + DataRetrieverChainDefinition definition2 = new SingleDataRetrieverChainDefinition<>( + RacingEventService.class, HasBackendPolarBoatClassContext.class, "PolarChain2"); + definition2.startWith(BackendPolarsBoatClassRetrievalProcessor.class, HasBackendPolarBoatClassContext.class, "BoatClass"); + + dataRetrieverChainDefinitions.add(definition2); } public Iterable> getDataRetrieverChainDefinitions() { diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/BackendPolarsBoatClassRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/BackendPolarsBoatClassRetrievalProcessor.java new file mode 100644 index 00000000000..420be5961ba --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/BackendPolarsBoatClassRetrievalProcessor.java @@ -0,0 +1,30 @@ +package com.sap.sailing.polars.datamining.components; + +import java.util.Collection; +import java.util.concurrent.ExecutorService; +import java.util.stream.Collectors; + +import com.sap.sailing.domain.polars.PolarDataService; +import com.sap.sailing.polars.datamining.data.HasBackendPolarBoatClassContext; +import com.sap.sailing.polars.datamining.data.impl.BoatClassWithBackendPolarContext; +import com.sap.sailing.server.RacingEventService; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; + +public class BackendPolarsBoatClassRetrievalProcessor extends AbstractRetrievalProcessor { + + public BackendPolarsBoatClassRetrievalProcessor(ExecutorService executor, + Collection> resultReceivers, int retrievalLevel) { + super(RacingEventService.class, HasBackendPolarBoatClassContext.class, executor, resultReceivers, retrievalLevel); + } + + @Override + protected Iterable retrieveData(RacingEventService element) { + PolarDataService polarDataService = element.getPolarDataService(); + return polarDataService.getAllBoatClassesWithPolarSheetsAvailable() + .stream() + .map(bc -> new BoatClassWithBackendPolarContext(bc, polarDataService)) + .collect(Collectors.toSet()); + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasBackendPolarBoatClassContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasBackendPolarBoatClassContext.java new file mode 100644 index 00000000000..12ee457b49d --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasBackendPolarBoatClassContext.java @@ -0,0 +1,11 @@ +package com.sap.sailing.polars.datamining.data; + +import com.sap.sailing.domain.base.BoatClass; +import com.sap.sse.datamining.annotations.Connector; + +public interface HasBackendPolarBoatClassContext { + + @Connector + BoatClass getBoatClass(); + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/BoatClassWithBackendPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/BoatClassWithBackendPolarContext.java new file mode 100644 index 00000000000..ee87a8a0ac7 --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/BoatClassWithBackendPolarContext.java @@ -0,0 +1,22 @@ +package com.sap.sailing.polars.datamining.data.impl; + +import com.sap.sailing.domain.base.BoatClass; +import com.sap.sailing.domain.polars.PolarDataService; +import com.sap.sailing.polars.datamining.data.HasBackendPolarBoatClassContext; + +public class BoatClassWithBackendPolarContext implements HasBackendPolarBoatClassContext { + + private BoatClass boatClass; + private PolarDataService polarDataService; + + public BoatClassWithBackendPolarContext(BoatClass bc, PolarDataService polarDataService) { + this.boatClass = bc; + this.polarDataService = polarDataService; + } + + @Override + public BoatClass getBoatClass() { + return boatClass; + } + +} diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestStatisticQuery.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestStatisticQuery.java index 85247331d17..c3df732c6da 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestStatisticQuery.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestStatisticQuery.java @@ -26,6 +26,7 @@ import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.data.QueryResult; import com.sap.sse.datamining.factories.FunctionFactory; import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; +import com.sap.sse.datamining.impl.components.SingleDataRetrieverChainDefinition; import com.sap.sse.datamining.impl.components.aggregators.ParallelGroupedNumberDataSumAggregationProcessor; import com.sap.sse.datamining.impl.data.QueryResultImpl; import com.sap.sse.datamining.shared.GroupKey; @@ -35,7 +36,6 @@ import com.sap.sse.datamining.shared.impl.GenericGroupKey; import com.sap.sse.datamining.test.util.FunctionTestsUtil; import com.sap.sse.datamining.test.util.TestsUtil; import com.sap.sse.datamining.test.util.components.Number; -import com.sap.sse.datamining.test.util.components.SingleDataRetrieverChainDefinition; import com.sap.sse.i18n.ResourceBundleStringMessages; public class TestStatisticQuery { diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/SingleDataRetrieverChainDefinition.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SingleDataRetrieverChainDefinition.java similarity index 92% rename from java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/SingleDataRetrieverChainDefinition.java rename to java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SingleDataRetrieverChainDefinition.java index 71392407ab4..1c50e4d1760 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/util/components/SingleDataRetrieverChainDefinition.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/SingleDataRetrieverChainDefinition.java @@ -1,7 +1,6 @@ -package com.sap.sse.datamining.test.util.components; +package com.sap.sse.datamining.impl.components; import com.sap.sse.datamining.components.Processor; -import com.sap.sse.datamining.impl.components.SimpleDataRetrieverChainDefinition; public class SingleDataRetrieverChainDefinition extends SimpleDataRetrieverChainDefinition { From fecff412d33034940d7033f2d917d88df0068f11 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 21 Sep 2015 15:14:25 +0200 Subject: [PATCH 310/504] Fixed german countdown ticker grammar --- .../gwt/common/client/i18n/TextMessages.java | 2 +- .../client/i18n/TextMessages.properties | 2 +- .../client/i18n/TextMessages_de.properties | 2 +- .../client/i18n/TextMessages_zh.properties | 367 +++++++++--------- .../desktop/partials/stage/StageTeaser.java | 2 +- .../mobile/partials/stage/StageTeaser.java | 2 +- .../shared/partials/countdown/Countdown.java | 2 +- .../countdowntimer/CountdownTimer.java | 9 +- 8 files changed, 197 insertions(+), 191 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.java index bc8d8abdc4b..a6bc99a7792 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.java @@ -45,7 +45,7 @@ public interface TextMessages extends Messages { String sapSailing(); String search(); String startSimulator(); - + String countdownStartingInDays(); String countdownDays(); String countdownHours(); String countdownMinutes(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.properties index cd268e32ebb..25d8e5e4dbf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages.properties @@ -34,7 +34,7 @@ overview=Overview sapSailing=SAP Sailing search=Search startSimulator=Start Simulator - +countdownStartingInDays=Days countdownDays=Days countdownHours=Hrs countdownMinutes=Min diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages_de.properties index 90d26cb9271..2e21328263a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages_de.properties @@ -34,7 +34,7 @@ overview=Übersicht sapSailing=SAP Sailing search=Suche startSimulator=Simulator starten - +countdownStartingInDays=Tagen countdownDays=Tage countdownHours=Std. countdownMinutes=Min. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages_zh.properties index 69867955ed5..60eae3c34e2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/i18n/TextMessages_zh.properties @@ -1,183 +1,184 @@ -socialFooterShare=Share this on -home=主页 -aboutUs=关于我们 -contact=联络 -sponsoring=赞助商 -solutions=解决方案 -events=比赛 -german=德语 -english=英语 -officalEventWebsite=官方活动网站 -leg=站 -races=赛事 -moreInfo=更多信息 -viewAnalysis=观看分析 -overallLeaderboard=总排行榜 -pleaseEnterASearchTerm=请输入搜索词 -pleaseTryAgain=请再试一次 -reloadPage=重新载入页面 -errorMessageLoadingData=加载该页的数据时出错 -errorMessageNoSuchLeaderboard=无法利用这词寻找排行榜 -raceNotScheduled=没有确认时间 -regattaDetails=帆船赛细节 -regatta=帆船赛 -competitorsAnalytics=队伍分析 -chooseChart=选择图标类型 -series=系列 -regattaLeaderboards=帆船赛排行榜 -features=功能 -releaseNotes=软件更新发布 -whatsNew=最新信息 -overview=概览 -sapSailing=SAP帆船 -search=搜索 -startSimulator=启动模拟器 -live=实时 -finished=结束 -watchNow=马上观看 -lastUpdate=最后更新 -leaderboard=排行榜 -eventHeaderMedia=媒体 -eventHeaderOverview=概览 -eventHeaderRaces=赛程 -eventHeaderRegattas=帆船赛 -seriesHeaderOverview=关于比赛系列 -seriesHeaderUpcoming=未来赛事 -seriesHeaderRecent=最近赛事 -seriesHeaderLeaderboard=排行榜 -eventsOverviewRecentEvents=赛事 -eventsOverviewRecentCountries=国家 -eventsOverviewRecentSailors=运动员 -eventsOverviewRecentTrackedRaces=赛事(含比赛分析) -eventResultsHeadline=比赛结果 -eventResultsBoatClassesDropDown=所有帆船级别 -eventOverviewMoreEvents=更多赛事 -eventOverviewRecentEvents=最近赛事 -eventOverviewUpcomingDate=日期 -eventOverviewUpcomingEvent=赛事 -eventOverviewUpcomingLocation=地点 -eventOverviewUpcomingSchedule=未来赛程 -eventOverviewUpcomingSeries=系列 -eventOverviewUpcomingTeaser=更多赛事即将公布 -eventQuickfinderTitle=赛事快速查找 -eventRegattaHeaderLeaderboard=排行榜 -eventRegattaHeaderRaceRaces=赛事 -eventRegattaListAllBoatClasses=所有帆船级别 -eventRegattaLeaderboardCompetitor=比赛队伍 -eventRegattaLeaderboardExtendLeaderboard=详细排行榜 -eventRegattaLeaderboardFinishedMessage=没有更多比赛 -eventRegattaLeaderboardLastScoreUpdate=最后积分更新 -eventRegattaLeaderboardName=队伍名称 -eventRegattaLeaderboardRegattaRank=帆船赛排名 -eventRegattaLeaderboardTotalPoints=总积分 -eventRegattaRaceWatch=实时观看 -eventRegattaRaceAnalyse=赛事分析 -eventRegattaRaceNotTracked=不含比赛分析 -mainEventShowAll=显示所有赛事 -mainEventTitle=最新帆船赛事 -mainMediaSubtitle= -mainMediaTitle=照片 -mainMediaVideosSubtitle= -mainMediaVideosTitle=最新视频 -mainSponsorsReadMore=阅读更多 -mediaTeaserPhotosTitle=照片 -mediaTeaserVideosTitle=视频 -regattaCompetitors=比赛队伍\竞争对手 -regattaRaces=赛事 -regattaTracked=Tracked  -regattaRegattaStarts=帆船比赛即将开始 -regattaPts=积分 -regattaCourse=帆船赛程 -regattaArea=地点 -regattaFinishedAt=结束时间为 -regattaScheduledAt=开始时间为 -regattaStartedAt=开始时间为 -regattasResultsTitle=比赛结果 -searchResultHeaderButton=搜寻 -searchResultHeaderLabel=您的搜寻 -searchResultsFound=搜寻结果 -searchResultHeaderPlaceholder=输入您的搜寻关键词 -searchResultMore=更多 -searchResultSearch=搜寻 -searchResultSearchAgain=重新搜寻 -searchResultSortLabel=排序方式 -searchResultSortNewest=最近 -searchResultSortOldest=最旧 -searchResultSortRelevance=相关性 -solutionsSAPNav=SAP帆船比赛分析 -solutionsSAPHeadline=SAP帆船比赛分析 -countdownDays=Days -countdownHours=Hrs -countdownMinutes=Min -countdownSeconds=Sec -countdownDay=Day -countdownHour=Hour -countdownMinute=Min -countdownSecond=Sec -boxNewsUpdateMoreLink=Report news -boxNewsUpdateTitle=News Update -boxUpcomingRacesCountdownStarted1=Started -boxUpcomingRacesCountdownStarted2=hrs and -boxUpcomingRacesCountdownStarted3=minutes ago -boxUpcomingRacesCountdownStarting1=Starting in -boxUpcomingRacesCountdownStarting2=hrs and -boxUpcomingRacesCountdownStarting3=minutes -boxUpcomingRacesMoreLink=Event Schedule -boxUpcomingRacesTitle=Upcoming Races Today -boxWeather=Weather -boxWeatherUnit=KTS -defaultTitle=SAP帆船 -seriesOverviewHeaderRecent=Latest Series Events -seriesOverviewReadMore=More -eventRegattaRaceFinished=Finished at: -eventRegattaRaceStarted=Started at: -eventRegattaRaceScheduled=Scheduled for: -eventRegattaRaceRace=Race -eventRegattaRaceWind=Wind Strength: -eventRegattaRaceWinner=Winner -eventRegattaRaceLeader=Leader -eventRegattaRacesLegendGps=Tracking -eventRegattaRacesLegendWind=Wind Data -eventRegattaRacesLegendVideo=Video -eventRegattaRacesLegendAudio=Audio -eventSponsorsTitle=Event Sponsorships -footerJobs=Jobs -footerCopyright=\u00A9 2015 SAP帆船 -footerLanguage=SAP Sailing offered in -footerLegal=Legal Disclosure -footerPrivacy=Privacy -footerFeedback=Feedback -headerEvents=比赛 -headerHome=主页 -headerLogo=SAP帆船 -headerSearch=搜索 -headerSearchPlaceholder=搜索 -headerSolutions=Solutions -headerSponsoring=Sponsoring -latestRaceResultsHeadline=Latest Official Race Results -latestRaceResultsIsNew=New -latestRaceResultsIsUpdated=Updated -latestRaceResultsRaceCountLabel=Result after -latestRaceResultsRaceCountUnit=races -latestRaceResultsRefresh=refresh -leaderboardQuickAccessLabel=Leaderboard Quick Access -searchResultCount=About 2,450 results where found for 'Schnitzel' -sharingEmail=Send an email -sharingFacebook=Share on Facebook -sharingTwitter=Tweet about it -socialFooterTitle=Recommend SAP Sailing Analytics -solutionsSAPText1=By delivering real time analytics around race rankings, speeds, maneuvers, bearings etc., SAP is helping to simplify and demystify the complex sport of sailing. -solutionsSAPText2=SAP Sailing Analytics provide insights and transparency to the world of sailing by utilizing Cloud and In-Memory Technology, processing GPS and wind measurement data in real time and visualizing contents in various frontends accessible from anywhere. -solutionsRaceNav=Race Committee App -solutionsRaceHeadline=Race Committee App -solutionsRaceText=The SAP Race Committee App delivers greater efficiency and control to race organizers by automating and simplifying their manual tasks and communication during running sailing regattas. The Race Committee App helps simplify the operation of running and managing race events to help race committees operate smarter. -solutionsPostNav=Post-Race Analytics -solutionsPostHeadline=Post-Race Analytics -solutionsPostText=Access to data collected at sailing events gives sailors the opportunity to assess and analyse their performances to help develop strategies and sail better.
SAP Business Analytics solutions provide sailors, coaches, fans and media with tools to browse and analyse historical data across many regattas and races. SAP HANA allows them to learn about performance patterns, tendencies and sailor profiles in a simple, fast and efficient way in order to optimize their own performance and develop successful strategies for future regattas. -solutionsTrainingNav=Training Diary -solutionsTrainingHeadline=SAP Sail Better \u2013 STG Training Diary -solutionsTrainingText=The STG Training Diary supports the daily documentation and analysis of an athlete\u2019s physical condition and training efforts in the areas of water training, physical training, boat work, mental, theory as well as other activities like education or travel. -solutionsSimulatorNav=Strategy Simulator -solutionsSimulatorHeadline=Strategy Simulator -solutionsSimulatorText=Choosing the right strategy can provide great competitive advantage during a race. The Strategy Simulator simplifies determining the best sailing strategy for various wind conditions and water currents. Since wind and current can be changed in the simulation right away, the robustness of a strategy can be easily evaluated even for uncertain weather conditions. - +socialFooterShare=Share this on +home=主页 +aboutUs=关于我们 +contact=联络 +sponsoring=赞助商 +solutions=解决方案 +events=比赛 +german=德语 +english=英语 +officalEventWebsite=官方活动网站 +leg=站 +races=赛事 +moreInfo=更多信息 +viewAnalysis=观看分析 +overallLeaderboard=总排行榜 +pleaseEnterASearchTerm=请输入搜索词 +pleaseTryAgain=请再试一次 +reloadPage=重新载入页面 +errorMessageLoadingData=加载该页的数据时出错 +errorMessageNoSuchLeaderboard=无法利用这词寻找排行榜 +raceNotScheduled=没有确认时间 +regattaDetails=帆船赛细节 +regatta=帆船赛 +competitorsAnalytics=队伍分析 +chooseChart=选择图标类型 +series=系列 +regattaLeaderboards=帆船赛排行榜 +features=功能 +releaseNotes=软件更新发布 +whatsNew=最新信息 +overview=概览 +sapSailing=SAP帆船 +search=搜索 +startSimulator=启动模拟器 +live=实时 +finished=结束 +watchNow=马上观看 +lastUpdate=最后更新 +leaderboard=排行榜 +eventHeaderMedia=媒体 +eventHeaderOverview=概览 +eventHeaderRaces=赛程 +eventHeaderRegattas=帆船赛 +seriesHeaderOverview=关于比赛系列 +seriesHeaderUpcoming=未来赛事 +seriesHeaderRecent=最近赛事 +seriesHeaderLeaderboard=排行榜 +eventsOverviewRecentEvents=赛事 +eventsOverviewRecentCountries=国家 +eventsOverviewRecentSailors=运动员 +eventsOverviewRecentTrackedRaces=赛事(含比赛分析) +eventResultsHeadline=比赛结果 +eventResultsBoatClassesDropDown=所有帆船级别 +eventOverviewMoreEvents=更多赛事 +eventOverviewRecentEvents=最近赛事 +eventOverviewUpcomingDate=日期 +eventOverviewUpcomingEvent=赛事 +eventOverviewUpcomingLocation=地点 +eventOverviewUpcomingSchedule=未来赛程 +eventOverviewUpcomingSeries=系列 +eventOverviewUpcomingTeaser=更多赛事即将公布 +eventQuickfinderTitle=赛事快速查找 +eventRegattaHeaderLeaderboard=排行榜 +eventRegattaHeaderRaceRaces=赛事 +eventRegattaListAllBoatClasses=所有帆船级别 +eventRegattaLeaderboardCompetitor=比赛队伍 +eventRegattaLeaderboardExtendLeaderboard=详细排行榜 +eventRegattaLeaderboardFinishedMessage=没有更多比赛 +eventRegattaLeaderboardLastScoreUpdate=最后积分更新 +eventRegattaLeaderboardName=队伍名称 +eventRegattaLeaderboardRegattaRank=帆船赛排名 +eventRegattaLeaderboardTotalPoints=总积分 +eventRegattaRaceWatch=实时观看 +eventRegattaRaceAnalyse=赛事分析 +eventRegattaRaceNotTracked=不含比赛分析 +mainEventShowAll=显示所有赛事 +mainEventTitle=最新帆船赛事 +mainMediaSubtitle= +mainMediaTitle=照片 +mainMediaVideosSubtitle= +mainMediaVideosTitle=最新视频 +mainSponsorsReadMore=阅读更多 +mediaTeaserPhotosTitle=照片 +mediaTeaserVideosTitle=视频 +regattaCompetitors=比赛队伍\竞争对手 +regattaRaces=赛事 +regattaTracked=Tracked  +regattaRegattaStarts=帆船比赛即将开始 +regattaPts=积分 +regattaCourse=帆船赛程 +regattaArea=地点 +regattaFinishedAt=结束时间为 +regattaScheduledAt=开始时间为 +regattaStartedAt=开始时间为 +regattasResultsTitle=比赛结果 +searchResultHeaderButton=搜寻 +searchResultHeaderLabel=您的搜寻 +searchResultsFound=搜寻结果 +searchResultHeaderPlaceholder=输入您的搜寻关键词 +searchResultMore=更多 +searchResultSearch=搜寻 +searchResultSearchAgain=重新搜寻 +searchResultSortLabel=排序方式 +searchResultSortNewest=最近 +searchResultSortOldest=最旧 +searchResultSortRelevance=相关性 +solutionsSAPNav=SAP帆船比赛分析 +solutionsSAPHeadline=SAP帆船比赛分析 +countdownStartingInDays=Days +countdownDays=Days +countdownHours=Hrs +countdownMinutes=Min +countdownSeconds=Sec +countdownDay=Day +countdownHour=Hour +countdownMinute=Min +countdownSecond=Sec +boxNewsUpdateMoreLink=Report news +boxNewsUpdateTitle=News Update +boxUpcomingRacesCountdownStarted1=Started +boxUpcomingRacesCountdownStarted2=hrs and +boxUpcomingRacesCountdownStarted3=minutes ago +boxUpcomingRacesCountdownStarting1=Starting in +boxUpcomingRacesCountdownStarting2=hrs and +boxUpcomingRacesCountdownStarting3=minutes +boxUpcomingRacesMoreLink=Event Schedule +boxUpcomingRacesTitle=Upcoming Races Today +boxWeather=Weather +boxWeatherUnit=KTS +defaultTitle=SAP帆船 +seriesOverviewHeaderRecent=Latest Series Events +seriesOverviewReadMore=More +eventRegattaRaceFinished=Finished at: +eventRegattaRaceStarted=Started at: +eventRegattaRaceScheduled=Scheduled for: +eventRegattaRaceRace=Race +eventRegattaRaceWind=Wind Strength: +eventRegattaRaceWinner=Winner +eventRegattaRaceLeader=Leader +eventRegattaRacesLegendGps=Tracking +eventRegattaRacesLegendWind=Wind Data +eventRegattaRacesLegendVideo=Video +eventRegattaRacesLegendAudio=Audio +eventSponsorsTitle=Event Sponsorships +footerJobs=Jobs +footerCopyright=\u00A9 2015 SAP帆船 +footerLanguage=SAP Sailing offered in +footerLegal=Legal Disclosure +footerPrivacy=Privacy +footerFeedback=Feedback +headerEvents=比赛 +headerHome=主页 +headerLogo=SAP帆船 +headerSearch=搜索 +headerSearchPlaceholder=搜索 +headerSolutions=Solutions +headerSponsoring=Sponsoring +latestRaceResultsHeadline=Latest Official Race Results +latestRaceResultsIsNew=New +latestRaceResultsIsUpdated=Updated +latestRaceResultsRaceCountLabel=Result after +latestRaceResultsRaceCountUnit=races +latestRaceResultsRefresh=refresh +leaderboardQuickAccessLabel=Leaderboard Quick Access +searchResultCount=About 2,450 results where found for 'Schnitzel' +sharingEmail=Send an email +sharingFacebook=Share on Facebook +sharingTwitter=Tweet about it +socialFooterTitle=Recommend SAP Sailing Analytics +solutionsSAPText1=By delivering real time analytics around race rankings, speeds, maneuvers, bearings etc., SAP is helping to simplify and demystify the complex sport of sailing. +solutionsSAPText2=SAP Sailing Analytics provide insights and transparency to the world of sailing by utilizing Cloud and In-Memory Technology, processing GPS and wind measurement data in real time and visualizing contents in various frontends accessible from anywhere. +solutionsRaceNav=Race Committee App +solutionsRaceHeadline=Race Committee App +solutionsRaceText=The SAP Race Committee App delivers greater efficiency and control to race organizers by automating and simplifying their manual tasks and communication during running sailing regattas. The Race Committee App helps simplify the operation of running and managing race events to help race committees operate smarter. +solutionsPostNav=Post-Race Analytics +solutionsPostHeadline=Post-Race Analytics +solutionsPostText=Access to data collected at sailing events gives sailors the opportunity to assess and analyse their performances to help develop strategies and sail better.
SAP Business Analytics solutions provide sailors, coaches, fans and media with tools to browse and analyse historical data across many regattas and races. SAP HANA allows them to learn about performance patterns, tendencies and sailor profiles in a simple, fast and efficient way in order to optimize their own performance and develop successful strategies for future regattas. +solutionsTrainingNav=Training Diary +solutionsTrainingHeadline=SAP Sail Better \u2013 STG Training Diary +solutionsTrainingText=The STG Training Diary supports the daily documentation and analysis of an athlete\u2019s physical condition and training efforts in the areas of water training, physical training, boat work, mental, theory as well as other activities like education or travel. +solutionsSimulatorNav=Strategy Simulator +solutionsSimulatorHeadline=Strategy Simulator +solutionsSimulatorText=Choosing the right strategy can provide great competitive advantage during a race. The Strategy Simulator simplifies determining the best sailing strategy for various wind conditions and water currents. Since wind and current can be changed in the simulation right away, the robustness of a strategy can be easily evaluated even for uncertain weather conditions. + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/StageTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/StageTeaser.java index aebee45bc0f..f0a2512234e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/StageTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/StageTeaser.java @@ -49,7 +49,7 @@ public abstract class StageTeaser extends Composite implements LazyLoadable { StageResources.INSTANCE.css().ensureInjected(); TimePoint eventStart = new MillisecondsTimePoint(event.getStartDate()); - countdownTimerUi = new CountdownTimer(eventStart.asDate()); + countdownTimerUi = new CountdownTimer(eventStart.asDate(), false); initWidget(uiBinder.createAndBindUi(this)); if(MillisecondsTimePoint.now().after(eventStart)) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaser.java index 0f1c36520ed..0a9b8215bd2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaser.java @@ -49,7 +49,7 @@ public abstract class StageTeaser extends Composite implements LazyLoadable { StageResources.INSTANCE.css().ensureInjected(); TimePoint eventStart = new MillisecondsTimePoint(event.getStartDate()); - countdownTimerUi = new CountdownTimer(eventStart.asDate()); + countdownTimerUi = new CountdownTimer(eventStart.asDate(), false); initWidget(uiBinder.createAndBindUi(this)); if(MillisecondsTimePoint.now().after(eventStart)) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/countdown/Countdown.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/countdown/Countdown.java index d284f509b6c..79c607355de 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/countdown/Countdown.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/countdown/Countdown.java @@ -71,7 +71,7 @@ public class Countdown extends Composite { } if(data.getStartTime() != null) { - this.tickerContainer.setWidget(new CountdownTimer(data.getStartTime())); + this.tickerContainer.setWidget(new CountdownTimer(data.getStartTime(), true)); } else { this.tickerContainer.setWidget(null); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/countdowntimer/CountdownTimer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/countdowntimer/CountdownTimer.java index e42d3f897b7..94222183055 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/countdowntimer/CountdownTimer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/countdowntimer/CountdownTimer.java @@ -9,9 +9,11 @@ import com.google.gwt.dom.client.Style.Display; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.common.client.i18n.TextMessages; import com.sap.sailing.gwt.home.shared.utils.Countdown; import com.sap.sailing.gwt.home.shared.utils.Countdown.CountdownListener; import com.sap.sailing.gwt.home.shared.utils.Countdown.RemainingTime; +import com.sap.sailing.gwt.home.shared.utils.Countdown.Unit; import com.sap.sse.common.impl.MillisecondsTimePoint; public class CountdownTimer extends Widget { @@ -25,8 +27,10 @@ public class CountdownTimer extends Widget { @UiField DivElement minorContainer, minorValue, minorUnit; private final Countdown countdown; + private boolean hasStartingInHeader; - public CountdownTimer(Date startTime) { + public CountdownTimer(Date startTime, boolean hasStartingInHeader) { + this.hasStartingInHeader = hasStartingInHeader; CountdownTimerResources.INSTANCE.css().ensureInjected(); setElement(uiBinder.createAndBindUi(this)); this.countdown = new Countdown(new MillisecondsTimePoint(startTime), new CountdownTickerListener()); @@ -47,7 +51,8 @@ public class CountdownTimer extends Widget { } else { container.getStyle().clearDisplay(); value.setInnerText(String.valueOf(time.value)); - unit.setInnerText(time.unitI18n()); + unit.setInnerText(time.unit == Unit.DAYS && hasStartingInHeader ? + TextMessages.INSTANCE.countdownStartingInDays() : time.unitI18n()); } } } From a5d3ef012dfeda80a82c9cc06f88d2ba671a2d70 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 21 Sep 2015 15:21:46 +0200 Subject: [PATCH 311/504] added a yet failing test case for multiple eliminations in conjunction with discards --- .../LeaderboardScoringAndRankingTest.java | 85 ++++++++++++++++++- 1 file changed, 81 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java index 4dcab88e506..10404a90971 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java @@ -742,10 +742,87 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { } } - // TODO add test case for multi-elimination case, testing that the races from the next elimination do not influence whether a competitor gets a score in the previous elimination - // TODO add test case for elimination heats with different numbers of competitors - // TODO add test case for elimination based on score correction with no tracked race + @Test + public void testMultiElminationScoringScheme() throws NoWindException { + final int NUMBER_OF_ELIMINATIONS = 3; + Regatta regatta = createRegattaWithEliminations(NUMBER_OF_ELIMINATIONS, new int[] { 8, 4, 2, 2 }, "testBasicElminationScoringScheme", + DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), + DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT_WITH_ELIMINATIONS_AND_ROUNDS_WINNER_GETS_07)); + // also test that no discards occur for three eliminations when discards start to apply only with four races completed + Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[] { NUMBER_OF_ELIMINATIONS + 1 }); + Competitor[] c = createCompetitors(64).toArray(new Competitor[64]); + TimePoint later = null; + for (int elimination=0; elimination rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); + assertSame(c[0], rankedCompetitors.get(0)); // should be the winner of the final round's Final heat and take the "crown" for the elimination + assertEquals(NUMBER_OF_ELIMINATIONS*0.7, leaderboard.getTotalPoints(c[0], later), 0.000000001); + assertSame(c[1], rankedCompetitors.get(1)); // should be the winner of the final round's Final heat and take the "crown" for the elimination + assertEquals(NUMBER_OF_ELIMINATIONS*2, leaderboard.getTotalPoints(c[1], later), 0.000000001); + for (int elimination=0; elimination(); // example for numbersOfHeatsPerRound: [8, 4, 2, 2] - int heatNumber = 1; for (int elimination=1; elimination<=numberOfEliminations; elimination++) { + int heatNumber = 1; // create one elimination consisting of a number of rounds, each consisting of a number of heats int roundNumber = 1; for (int numberOfHeatsPerRound : numbersOfHeatsPerRound) { From f160308d12026439f501fad81638ee92b6c945ac Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 21 Sep 2015 15:41:47 +0200 Subject: [PATCH 312/504] added test for multi-eliminations with discards and fixed discarding by implementing isValidInTotalScore per competitor --- .../LeaderboardScoringAndRankingTest.java | 61 ++++++++++--------- .../domain/leaderboard/Leaderboard.java | 2 +- .../domain/leaderboard/ScoringScheme.java | 6 +- .../impl/AbstractScoringSchemeImpl.java | 2 +- .../impl/AbstractSimpleLeaderboardImpl.java | 4 +- .../domain/leaderboard/impl/HighPoint.java | 2 +- .../impl/LeaderboardTotalRankComparator.java | 3 +- .../domain/leaderboard/impl/LowPoint.java | 2 +- ...WithEliminationsAndRoundsWinnerGets07.java | 9 +++ 9 files changed, 54 insertions(+), 37 deletions(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java index 10404a90971..a28b0e32f2c 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java @@ -295,10 +295,14 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { } // expect all results to be valid because a fleet will have its score counted even if not all fleets have raced; // see discussion for bug 961, but more importantly later on bug 1023. - assertTrue(leaderboard.getScoringScheme().isValidInTotalScore(leaderboard, q2Column, later)); + for (final Competitor competitor : competitors) { + assertTrue(leaderboard.getScoringScheme().isValidInTotalScore(leaderboard, q2Column, competitor, later)); + } // now add a score correction for Q2/Blue to make it count: leaderboard.getScoreCorrection().correctScore(competitors.get(9), q2Column, 42.); - assertTrue(leaderboard.getScoringScheme().isValidInTotalScore(leaderboard, q2Column, later)); + for (final Competitor competitor : competitors) { + assertTrue(leaderboard.getScoringScheme().isValidInTotalScore(leaderboard, q2Column, competitor, later)); + } // the new order in Q2 expected to be { (9, 3), ... } (we don't know about any competitor in q2Blue but #9 // therefore the new total points for #9 are // { 9: 5+42=47 } @@ -791,36 +795,37 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { later = createAndAttachTrackedRaces(series.get(4*elimination+3), "Heat "+(heat+15), /* withScores */ true, competitorsForHeatsInFinals[heat]); } } - assertEquals(NUMBER_OF_ELIMINATIONS*18.5, leaderboard.getTotalPoints(c[ 8], later), 0.000000001); - assertEquals(NUMBER_OF_ELIMINATIONS*22.5, leaderboard.getTotalPoints(c[ 9], later), 0.000000001); - assertEquals(NUMBER_OF_ELIMINATIONS*26.5, leaderboard.getTotalPoints(c[10], later), 0.000000001); - assertEquals(NUMBER_OF_ELIMINATIONS*30.5, leaderboard.getTotalPoints(c[11], later), 0.000000001); - // last four competitors in last heat of first round don't get promoted and have null scores in all other rounds but the first - assertEquals(NUMBER_OF_ELIMINATIONS*36.5, leaderboard.getTotalPoints(c[60], later), 0.000000001); - assertEquals(NUMBER_OF_ELIMINATIONS*44.5, leaderboard.getTotalPoints(c[61], later), 0.000000001); - assertEquals(NUMBER_OF_ELIMINATIONS*52.5, leaderboard.getTotalPoints(c[62], later), 0.000000001); - assertEquals(NUMBER_OF_ELIMINATIONS*60.5, leaderboard.getTotalPoints(c[63], later), 0.000000001); - List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); - assertSame(c[0], rankedCompetitors.get(0)); // should be the winner of the final round's Final heat and take the "crown" for the elimination - assertEquals(NUMBER_OF_ELIMINATIONS*0.7, leaderboard.getTotalPoints(c[0], later), 0.000000001); - assertSame(c[1], rankedCompetitors.get(1)); // should be the winner of the final round's Final heat and take the "crown" for the elimination - assertEquals(NUMBER_OF_ELIMINATIONS*2, leaderboard.getTotalPoints(c[1], later), 0.000000001); - for (int elimination=0; elimination=NUMBER_OF_ELIMINATIONS-1; numberOfEliminationsExpectedToScore--) { + assertEquals(numberOfEliminationsExpectedToScore*18.5, leaderboard.getTotalPoints(c[ 8], later), 0.000000001); + assertEquals(numberOfEliminationsExpectedToScore*22.5, leaderboard.getTotalPoints(c[ 9], later), 0.000000001); + assertEquals(numberOfEliminationsExpectedToScore*26.5, leaderboard.getTotalPoints(c[10], later), 0.000000001); + assertEquals(numberOfEliminationsExpectedToScore*30.5, leaderboard.getTotalPoints(c[11], later), 0.000000001); + // last four competitors in last heat of first round don't get promoted and have null scores in all other rounds but the first + assertEquals(numberOfEliminationsExpectedToScore*36.5, leaderboard.getTotalPoints(c[60], later), 0.000000001); + assertEquals(numberOfEliminationsExpectedToScore*44.5, leaderboard.getTotalPoints(c[61], later), 0.000000001); + assertEquals(numberOfEliminationsExpectedToScore*52.5, leaderboard.getTotalPoints(c[62], later), 0.000000001); + assertEquals(numberOfEliminationsExpectedToScore*60.5, leaderboard.getTotalPoints(c[63], later), 0.000000001); + List rankedCompetitors = leaderboard.getCompetitorsFromBestToWorst(later); + assertSame(c[0], rankedCompetitors.get(0)); // should be the winner of the final round's Final heat and take the "crown" for the elimination + assertEquals(numberOfEliminationsExpectedToScore*0.7, leaderboard.getTotalPoints(c[0], later), 0.000000001); + assertSame(c[1], rankedCompetitors.get(1)); // should be the winner of the final round's Final heat and take the "crown" for the elimination + assertEquals(numberOfEliminationsExpectedToScore*2, leaderboard.getTotalPoints(c[1], later), 0.000000001); + for (int elimination=0; elimination */ - boolean isValidInTotalScore(Leaderboard leaderboard, RaceColumn raceColumn, TimePoint at); + boolean isValidInTotalScore(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, TimePoint at); /** * Some scoring schemes are applied to {@link LeaderboardGroupMetaLeaderboard} instances. These instances of a diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractScoringSchemeImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractScoringSchemeImpl.java index b3fe8b717ef..baa13882aa3 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractScoringSchemeImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractScoringSchemeImpl.java @@ -77,7 +77,7 @@ public abstract class AbstractScoringSchemeImpl implements ScoringScheme { * more races. */ @Override - public boolean isValidInTotalScore(Leaderboard leaderboard, RaceColumn raceColumn, TimePoint at) { + public boolean isValidInTotalScore(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, TimePoint at) { boolean result; Iterable fleets = raceColumn.getFleets(); if (Util.size(fleets) <= 1 || allFleetsOrdered(fleets)) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java index 974b95d4510..1ead18e195c 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java @@ -532,7 +532,7 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race if (raceColumn.isStartsWithZeroScore()) { needToResetScoreUponNextNonEmptyEntry = true; } - if (getScoringScheme().isValidInTotalScore(this, raceColumn, timePoint)) { + if (getScoringScheme().isValidInTotalScore(this, raceColumn, competitor, timePoint)) { final Double totalPoints = getTotalPoints(competitor, raceColumn, timePoint, discardedRaceColumns); if (totalPoints != null) { if (needToResetScoreUponNextNonEmptyEntry) { @@ -651,7 +651,7 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race @Override public boolean countRaceForComparisonWithDiscardingThresholds(Competitor competitor, RaceColumn raceColumn, TimePoint timePoint) { TrackedRace trackedRaceForCompetitorInColumn; - return getScoringScheme().isValidInTotalScore(this, raceColumn, timePoint) && + return getScoringScheme().isValidInTotalScore(this, raceColumn, competitor, timePoint) && (getScoreCorrection().isScoreCorrected(competitor, raceColumn, timePoint) || ((trackedRaceForCompetitorInColumn=raceColumn.getTrackedRace(competitor)) != null && trackedRaceForCompetitorInColumn.hasStarted(timePoint))); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java index 9fdc7dd0629..54db8e785e6 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/HighPoint.java @@ -74,7 +74,7 @@ public class HighPoint extends AbstractScoringSchemeImpl { } @Override - public boolean isValidInTotalScore(Leaderboard leaderboard, RaceColumn raceColumn, TimePoint at) { + public boolean isValidInTotalScore(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, TimePoint at) { return true; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LeaderboardTotalRankComparator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LeaderboardTotalRankComparator.java index a3e38861c98..2f8443558f8 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LeaderboardTotalRankComparator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LeaderboardTotalRankComparator.java @@ -110,7 +110,8 @@ public class LeaderboardTotalRankComparator implements Comparator { for (RaceColumn raceColumn : getLeaderboard().getRaceColumns()) { needToResetO1ScoreUponNextValidResult = raceColumn.isStartsWithZeroScore(); needToResetO2ScoreUponNextValidResult = raceColumn.isStartsWithZeroScore(); - if (getLeaderboard().getScoringScheme().isValidInTotalScore(getLeaderboard(), raceColumn, timePoint)) { + if (getLeaderboard().getScoringScheme().isValidInTotalScore(getLeaderboard(), raceColumn, o1, timePoint) + && getLeaderboard().getScoringScheme().isValidInTotalScore(getLeaderboard(), raceColumn, o2, timePoint)) { int preemptiveColumnResult = 0; final Double o1Score = totalPointsCache.get(new Util.Pair(o1, raceColumn)); if (o1Score != null) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java index 2627339069c..cea11c2c6e1 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPoint.java @@ -73,7 +73,7 @@ public class LowPoint extends AbstractScoringSchemeImpl { } @Override - public boolean isValidInTotalScore(Leaderboard leaderboard, RaceColumn raceColumn, TimePoint at) { + public boolean isValidInTotalScore(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, TimePoint at) { return true; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java index ca666a0f79c..357ae0bec70 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java @@ -186,6 +186,15 @@ public class LowPointWithEliminationsAndRoundsWinnerGets07 extends LowPoint { return result; } + @Override + public boolean isValidInTotalScore(Leaderboard leaderboard, RaceColumn raceColumn, Competitor competitor, TimePoint at) { + final RaceColumnInSeries raceColumnInSeries = (RaceColumnInSeries) raceColumn; + final Iterator seriesInRegattaIter = raceColumnInSeries.getSeries().getRegatta().getSeries().iterator(); + while (seriesInRegattaIter.hasNext() && seriesInRegattaIter.next() != raceColumnInSeries.getSeries()) + ; + return !participatesInNextRound(leaderboard, (RaceColumnInSeries) raceColumn, competitor, at, seriesInRegattaIter); + } + private int getNumberOfFleetsWithOrdering(Series series, int ordering) { int result = 0; for (final Fleet fleet : series.getFleets()) { From ee8ab1e097f0aea76bde633ea04ac4fa39223571 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 21 Sep 2015 15:53:56 +0200 Subject: [PATCH 313/504] added test case for uneven number of competitors in first round's heats --- .../LeaderboardScoringAndRankingTest.java | 58 ++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java index a28b0e32f2c..49a4594eb01 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java @@ -827,7 +827,63 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { } } - // TODO add test case for elimination heats with different numbers of competitors + @Test + public void testElminationScoringSchemeWithDifferentlySizedHeatsInFirstRound() throws NoWindException { + Regatta regatta = createRegattaWithEliminations(1, new int[] { 8, 4, 2, 2 }, "testBasicElminationScoringScheme", + DomainFactory.INSTANCE.getOrCreateBoatClass("49er", /* typicallyStartsUpwind */true), + DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT_WITH_ELIMINATIONS_AND_ROUNDS_WINNER_GETS_07)); + Leaderboard leaderboard = createLeaderboard(regatta, /* discarding thresholds */ new int[0]); + Competitor[] c = createCompetitors(65).toArray(new Competitor[64]); + // first round with 64 competitors, eight per heat: + Competitor[][] competitorsForHeatsInRound1 = new Competitor[8][]; + TimePoint later = null; + for (int heat=0; heat<8; heat++) { + final int numberOfCompetitorsInHeat = heat==7?9:8; + competitorsForHeatsInRound1[heat] = new Competitor[numberOfCompetitorsInHeat]; + for (int i=0; i Date: Mon, 21 Sep 2015 16:10:33 +0200 Subject: [PATCH 314/504] Refactoring - Moved shared refresh related classes to respective package --- .../multiregatta/tabs/MultiregattaOverviewTabView.java | 4 ++-- .../multiregatta/tabs/MultiregattaRegattasTabView.java | 4 ++-- .../place/event/regatta/tabs/RegattaOverviewTabView.java | 4 ++-- .../place/event/regatta/tabs/RegattaRacesTabView.java | 6 +++--- .../desktop/partials/eventstage/EventOverviewStage.java | 4 ++-- .../gwt/home/desktop/partials/liveraces/LiveRacesList.java | 2 +- .../desktop/partials/multiregattalist/MultiRegattaList.java | 2 +- .../home/desktop/partials/racelist/RaceListContainer.java | 2 +- .../gwt/home/desktop/partials/standings/StandingsList.java | 2 +- .../gwt/home/mobile/partials/eventsteps/EventSteps.java | 2 +- .../home/mobile/partials/liveraces/RegattaLiveRaces.java | 2 +- .../mobile/partials/minileaderboard/MinileaderboardBox.java | 2 +- .../home/mobile/partials/regattaStatus/RegattaStatus.java | 2 +- .../partials/regattacompetition/RegattaCompetition.java | 2 +- .../gwt/home/mobile/partials/updatesBox/UpdatesBox.java | 4 ++-- .../gwt/home/mobile/places/event/AbstractEventView.java | 2 +- .../mobile/places/event/overview/EventOverviewStage.java | 2 +- .../gwt/home/mobile/places/series/SeriesViewImpl.java | 2 +- .../SeriesMiniOverallLeaderboardViewImpl.java | 2 +- .../shared/partials/statistics/AbstractStatisticsBox.java | 2 +- .../home/{client => }/shared/refresh/ActionProvider.java | 2 +- .../home/{client => }/shared/refresh/RefreshManager.java | 4 ++-- .../home/{client => }/shared/refresh/RefreshableWidget.java | 2 +- 23 files changed, 31 insertions(+), 31 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client => }/shared/refresh/ActionProvider.java (93%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client => }/shared/refresh/RefreshManager.java (97%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client => }/shared/refresh/RefreshableWidget.java (70%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java index 71b5f036fcb..4d491e1b8e1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java @@ -12,8 +12,6 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView; import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.multiregatta.MultiregattaTabView; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.eventstage.EventOverviewStage; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaList; @@ -21,6 +19,8 @@ import com.sap.sailing.gwt.home.desktop.partials.raceoffice.RaceOfficeSection; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter.DropdownFilterList; import com.sap.sailing.gwt.home.desktop.partials.statistics.StatisticsBox; +import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventStatisticsAction; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java index ffddada8c21..c06281aab51 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java @@ -12,13 +12,13 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView; import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.multiregatta.MultiregattaTabView; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaList; import com.sap.sailing.gwt.home.desktop.partials.raceoffice.RaceOfficeSection; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter.DropdownFilterList; +import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForEventAction; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java index e2c08e1aca7..363ee9f6ec4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java @@ -11,14 +11,14 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.eventstage.EventOverviewStage; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListItem; import com.sap.sailing.gwt.home.desktop.partials.standings.StandingsList; import com.sap.sailing.gwt.home.desktop.partials.statistics.StatisticsBox; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; +import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetLiveRacesForRegattaAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaStatisticsAction; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index 5c0832aa66f..2ab2b455beb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -18,9 +18,6 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; -import com.sap.sailing.gwt.home.client.shared.refresh.ActionProvider.AbstractActionProvider; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListItem; import com.sap.sailing.gwt.home.desktop.partials.racelist.AbstractRaceList; @@ -36,6 +33,9 @@ import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigatio import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.SelectionCallback; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.partials.regattanavigation.RaceStateLegend; +import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; +import com.sap.sailing.gwt.home.shared.refresh.ActionProvider.AbstractActionProvider; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.Action; import com.sap.sailing.gwt.ui.shared.dispatch.DTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventstage/EventOverviewStage.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventstage/EventOverviewStage.java index b390b60b380..b0ca6a07a2d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventstage/EventOverviewStage.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventstage/EventOverviewStage.java @@ -13,14 +13,14 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.common.client.SharedResources.MediaCss; import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.updates.UpdatesBox; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.partials.countdown.Countdown; import com.sap.sailing.gwt.home.shared.partials.countdown.Countdown.CountdownNavigationProvider; import com.sap.sailing.gwt.home.shared.partials.message.Message; import com.sap.sailing.gwt.home.shared.partials.video.Video; +import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.shared.dispatch.ListResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewStageContentDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewStageDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/liveraces/LiveRacesList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/liveraces/LiveRacesList.java index e8584d17093..7cda283c01b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/liveraces/LiveRacesList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/liveraces/LiveRacesList.java @@ -5,13 +5,13 @@ import java.util.Collection; import com.google.gwt.dom.client.Style.Display; import com.google.gwt.user.client.ui.Composite; import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.desktop.partials.racelist.AbstractRaceList; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListColumnFactory; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListColumnSet; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListContainer; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListDataUtil; import com.sap.sailing.gwt.home.desktop.partials.racelist.SortableRaceListColumn; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.CollectionResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRaceDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java index 6e1f7b45762..d3dd6558984 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java @@ -14,7 +14,7 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult; import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaWithProgressDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.java index 74f4301f747..2db0b38d566 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListContainer.java @@ -11,7 +11,7 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.shared.dispatch.CollectionResult; import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/standings/StandingsList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/standings/StandingsList.java index 51e3c2d93c3..ac300ee1d94 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/standings/StandingsList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/standings/StandingsList.java @@ -10,8 +10,8 @@ import com.google.gwt.dom.client.Style.Display; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.shared.utils.LabelTypeUtil; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java index 353236406d3..c57280712bf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.java @@ -4,9 +4,9 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressSeriesDTO; import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaWithProgressDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java index 7f7a9592f4e..1e819d3c9e9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/liveraces/RegattaLiveRaces.java @@ -4,11 +4,11 @@ import com.google.gwt.core.shared.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatusRace; import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatusResources; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRaceDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/minileaderboard/MinileaderboardBox.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/minileaderboard/MinileaderboardBox.java index e2b8f177115..63ca4b7e0eb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/minileaderboard/MinileaderboardBox.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/minileaderboard/MinileaderboardBox.java @@ -10,10 +10,10 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderboardDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java index 0463cf30f1c..0859ddf6c5a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattaStatus/RegattaStatus.java @@ -8,13 +8,13 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton; import com.sap.sailing.gwt.home.mobile.partials.toggleButton.ToggleButton.ToggleButtonCommand; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRaceDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RegattasAndLiveRacesDTO; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java index 4eb56c1394b..20ae2598711 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.java @@ -6,8 +6,8 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.places.event.races.RacesView.Presenter; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.shared.dispatch.ListResult; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatSeriesDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/updatesBox/UpdatesBox.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/updatesBox/UpdatesBox.java index fa6ac85e100..6db343c4d63 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/updatesBox/UpdatesBox.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/updatesBox/UpdatesBox.java @@ -12,10 +12,10 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderContent; +import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.ListResult; import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java index f08e1576c05..2ea074d6a13 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java @@ -11,7 +11,6 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; import com.sap.sailing.gwt.home.mobile.partials.eventheader.EventHeader; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.section.MobileSection; @@ -19,6 +18,7 @@ import com.sap.sailing.gwt.home.mobile.partials.sectionHeader.SectionHeaderConte import com.sap.sailing.gwt.home.mobile.partials.simpleinfoblock.SimpleInfoBlock; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java index 63eb1fd8fd0..07d19192375 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventOverviewStage.java @@ -6,7 +6,6 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; @@ -14,6 +13,7 @@ import com.sap.sailing.gwt.home.shared.partials.countdown.Countdown; import com.sap.sailing.gwt.home.shared.partials.countdown.Countdown.CountdownNavigationProvider; import com.sap.sailing.gwt.home.shared.partials.message.Message; import com.sap.sailing.gwt.home.shared.partials.video.Video; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewStageContentDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewStageDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventOverviewTickerStageDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java index 97d772b8bbe..1961de93f25 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java @@ -8,13 +8,13 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.recents.EventsOverviewRecentYearEvent; import com.sap.sailing.gwt.home.mobile.partials.seriesheader.SeriesHeader; import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBox; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; +import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniOverallLeaderbordAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetSeriesStatisticsAction; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java index b2818589866..5224ab9857a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java @@ -9,11 +9,11 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshManager; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.seriesheader.SeriesHeader; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; +import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniOverallLeaderbordAction; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/statistics/AbstractStatisticsBox.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/statistics/AbstractStatisticsBox.java index 2d7fddb0504..e6553d45173 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/statistics/AbstractStatisticsBox.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/partials/statistics/AbstractStatisticsBox.java @@ -2,7 +2,7 @@ package com.sap.sailing.gwt.home.shared.partials.statistics; import com.google.gwt.i18n.client.NumberFormat; import com.google.gwt.user.client.ui.Composite; -import com.sap.sailing.gwt.home.client.shared.refresh.RefreshableWidget; +import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.EventStatisticsDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/ActionProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/ActionProvider.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/ActionProvider.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/ActionProvider.java index d7e711a42e8..6649ca5ac6c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/ActionProvider.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/ActionProvider.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.shared.refresh; +package com.sap.sailing.gwt.home.shared.refresh; import com.sap.sailing.gwt.ui.shared.dispatch.Action; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/RefreshManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/RefreshManager.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/RefreshManager.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/RefreshManager.java index 123316b85a2..dbcffc1af77 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/RefreshManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/RefreshManager.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.shared.refresh; +package com.sap.sailing.gwt.home.shared.refresh; import java.util.ArrayList; import java.util.List; @@ -12,8 +12,8 @@ import com.google.gwt.event.logical.shared.AttachEvent.Handler; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.shared.refresh.ActionProvider.DefaultActionProvider; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.home.shared.refresh.ActionProvider.DefaultActionProvider; import com.sap.sailing.gwt.ui.shared.dispatch.Action; import com.sap.sailing.gwt.ui.shared.dispatch.DTO; import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/RefreshableWidget.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/RefreshableWidget.java similarity index 70% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/RefreshableWidget.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/RefreshableWidget.java index cac3bff5f89..3e8d6ee968c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/refresh/RefreshableWidget.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/RefreshableWidget.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.shared.refresh; +package com.sap.sailing.gwt.home.shared.refresh; import com.sap.sailing.gwt.ui.shared.dispatch.DTO; From 473800645cf60e994fd4153abed739ac196b302b Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 21 Sep 2015 16:30:55 +0200 Subject: [PATCH 315/504] a fix towards bug 3287: avoiding NPE for cases where a fixed mark passing is found in the race log for a competitor no longer part of the race --- .../impl/CandidateChooserImpl.java | 16 +++++++++------- .../shared/charts/EditMarkPassingsPanel.java | 16 ++++++++-------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/impl/CandidateChooserImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/impl/CandidateChooserImpl.java index e5f86a6a9ba..24fedee1fee 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/impl/CandidateChooserImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/markpassingcalculation/impl/CandidateChooserImpl.java @@ -133,14 +133,16 @@ public class CandidateChooserImpl implements CandidateChooser { public void setFixedPassing(Competitor c, Integer zeroBasedIndexOfWaypoint, TimePoint t) { Candidate fixedCan = new CandidateImpl(zeroBasedIndexOfWaypoint + 1, t, 1, Util.get(race.getRace().getCourse().getWaypoints(), zeroBasedIndexOfWaypoint)); NavigableSet fixed = fixedPassings.get(c); - if (!fixed.add(fixedCan)) { - Candidate old = fixed.ceiling(fixedCan); - fixed.remove(old); - removeCandidates(c, Arrays.asList(old)); - fixed.add(fixedCan); + if (fixed != null) { // can only set the mark passing if the competitor is still part of this race + if (!fixed.add(fixedCan)) { + Candidate old = fixed.ceiling(fixedCan); + fixed.remove(old); + removeCandidates(c, Arrays.asList(old)); + fixed.add(fixedCan); + } + addCandidates(c, Arrays.asList(fixedCan)); + findShortestPath(c); } - addCandidates(c, Arrays.asList(fixedCan)); - findShortestPath(c); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/EditMarkPassingsPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/EditMarkPassingsPanel.java index 7d290ed6968..4010792eb94 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/EditMarkPassingsPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/EditMarkPassingsPanel.java @@ -301,14 +301,14 @@ public class EditMarkPassingsPanel extends AbsolutePanel implements Component Date: Mon, 21 Sep 2015 16:53:51 +0200 Subject: [PATCH 316/504] Refactoring - Moved desktop WhatsNew place into respentive package --- .../gwt/home/client/place/whatsnew/WhatsNewView.java | 7 ------- .../gwt/home/desktop/app/DesktopActivityMapper.java | 4 ++-- .../sailing/gwt/home/desktop/app/DesktopClientFactory.java | 2 +- .../gwt/home/desktop/app/DesktopPlacesNavigator.java | 4 ++-- .../app/TabletAndDesktopApplicationClientFactory.java | 6 +++--- .../sailing/gwt/home/desktop/partials/footer/Footer.java | 4 ++-- .../gwt/home/desktop/partials/solutions/Solutions.java | 4 ++-- .../places}/whatsnew/TabletAndDesktopWhatsNewView.java | 4 ++-- .../places}/whatsnew/TabletAndDesktopWhatsNewView.ui.xml | 6 ++---- .../{client/place => desktop/places}/whatsnew/WhatsNew.css | 0 .../places}/whatsnew/WhatsNewActivity.java | 2 +- .../places}/whatsnew/WhatsNewActivityProxy.java | 2 +- .../places}/whatsnew/WhatsNewClientFactory.java | 4 ++-- .../place => desktop/places}/whatsnew/WhatsNewPlace.java | 2 +- .../places}/whatsnew/WhatsNewResources.java | 4 ++-- .../gwt/home/desktop/places/whatsnew/WhatsNewView.java | 6 ++++++ .../sailing/gwt/home/mobile/app/MobilePlacesNavigator.java | 4 ++-- .../sailing/gwt/home/mobile/partials/footer/Footer.java | 2 +- .../gwt/home/shared/app/ApplicationHistoryMapper.java | 2 +- 19 files changed, 33 insertions(+), 36 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewView.java rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/whatsnew/TabletAndDesktopWhatsNewView.java (97%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/whatsnew/TabletAndDesktopWhatsNewView.ui.xml (82%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/whatsnew/WhatsNew.css (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/whatsnew/WhatsNewActivity.java (94%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/whatsnew/WhatsNewActivityProxy.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/whatsnew/WhatsNewClientFactory.java (57%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/whatsnew/WhatsNewPlace.java (95%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/whatsnew/WhatsNewResources.java (88%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewView.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewView.java deleted file mode 100644 index f168b94256f..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewView.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.whatsnew; - -import com.google.gwt.user.client.ui.Widget; - -public interface WhatsNewView { - Widget asWidget(); -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java index b2eec9b0376..c0225b498f4 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java @@ -22,8 +22,8 @@ import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringActivityProxy; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartActivityProxy; import com.sap.sailing.gwt.home.client.place.start.StartPlace; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewActivityProxy; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewActivityProxy; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint; import com.sap.sailing.gwt.home.shared.app.ApplicationPlaceUpdater; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java index 93b50ab8341..5fdf0eddd66 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java @@ -10,7 +10,7 @@ import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultClientFact import com.sap.sailing.gwt.home.client.place.solutions.SolutionsClientFactory; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringClientFactory; import com.sap.sailing.gwt.home.client.place.start.StartClientFactory; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewClientFactory; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewClientFactory; public interface DesktopClientFactory extends AboutUsClientFactory, ContactClientFactory, EventClientFactory, EventsClientFactory, StartClientFactory, SponsoringClientFactory, SolutionsClientFactory, SearchResultClientFactory, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java index fa479eaafe9..5cc3659601a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java @@ -20,8 +20,8 @@ import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.shared.app.AbstractPlaceNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java index dcfa006191a..44b84acd8f2 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java @@ -15,9 +15,9 @@ import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringView; import com.sap.sailing.gwt.home.client.place.sponsoring.TabletAndDesktopSponsoringView; import com.sap.sailing.gwt.home.client.place.start.StartView; import com.sap.sailing.gwt.home.client.place.start.TabletAndDesktopStartView; -import com.sap.sailing.gwt.home.client.place.whatsnew.TabletAndDesktopWhatsNewView; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewView; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.TabletAndDesktopWhatsNewView; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewView; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystemImpl; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/footer/Footer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/footer/Footer.java index ed0528f04a2..e39d72ccab8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/footer/Footer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/footer/Footer.java @@ -26,9 +26,9 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.ValueListBox; import com.google.gwt.user.client.ui.Widget; import com.google.web.bindery.event.shared.EventBus; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sse.common.Util.Pair; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/solutions/Solutions.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/solutions/Solutions.java index 29af6ce76ba..9b8fddc9a9c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/solutions/Solutions.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/solutions/Solutions.java @@ -17,9 +17,9 @@ import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.impl.HyperlinkImpl; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; public class Solutions extends Composite { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/TabletAndDesktopWhatsNewView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/TabletAndDesktopWhatsNewView.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/TabletAndDesktopWhatsNewView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/TabletAndDesktopWhatsNewView.java index d037ff4331f..689c3a79e75 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/TabletAndDesktopWhatsNewView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/TabletAndDesktopWhatsNewView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.whatsnew; +package com.sap.sailing.gwt.home.desktop.places.whatsnew; import java.util.Arrays; import java.util.List; @@ -15,8 +15,8 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.impl.HyperlinkImpl; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; public class TabletAndDesktopWhatsNewView extends Composite implements WhatsNewView { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/TabletAndDesktopWhatsNewView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/TabletAndDesktopWhatsNewView.ui.xml similarity index 82% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/TabletAndDesktopWhatsNewView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/TabletAndDesktopWhatsNewView.ui.xml index 5d08455b78a..fec7e29b30d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/TabletAndDesktopWhatsNewView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/TabletAndDesktopWhatsNewView.ui.xml @@ -1,10 +1,8 @@ - + - +

diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNew.css b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNew.css similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNew.css rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNew.css diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewActivity.java similarity index 94% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewActivity.java index 8ab81421a87..90696492cfd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewActivity.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.whatsnew; +package com.sap.sailing.gwt.home.desktop.places.whatsnew; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewActivityProxy.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewActivityProxy.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewActivityProxy.java index e5b76176a9b..ad84468ee55 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewActivityProxy.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.whatsnew; +package com.sap.sailing.gwt.home.desktop.places.whatsnew; import com.google.gwt.core.client.GWT; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewClientFactory.java similarity index 57% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewClientFactory.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewClientFactory.java index 27e0e3afc02..7668056f88c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewClientFactory.java @@ -1,6 +1,6 @@ -package com.sap.sailing.gwt.home.client.place.whatsnew; +package com.sap.sailing.gwt.home.desktop.places.whatsnew; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.ui.client.SailingClientFactory; public interface WhatsNewClientFactory extends SailingClientFactory { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewPlace.java similarity index 95% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewPlace.java index ad53acdd0d6..33dc5042bc7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.whatsnew; +package com.sap.sailing.gwt.home.desktop.places.whatsnew; import com.google.gwt.place.shared.PlaceTokenizer; import com.sap.sailing.gwt.common.client.AbstractBasePlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewResources.java similarity index 88% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewResources.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewResources.java index e15cd780d52..15e8c09213a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNewResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewResources.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.whatsnew; +package com.sap.sailing.gwt.home.desktop.places.whatsnew; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; @@ -17,7 +17,7 @@ public interface WhatsNewResources extends ClientBundle { @Source("com/sap/sailing/gwt/home/solutions/RaceCommitteeAppNotes.html") public TextResource getRaceCommitteeAppNotesHtml(); - @Source("com/sap/sailing/gwt/home/client/place/whatsnew/WhatsNew.css") + @Source("WhatsNew.css") LocalCss css(); public interface LocalCss extends CssResource { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewView.java new file mode 100644 index 00000000000..c32715b3851 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/WhatsNewView.java @@ -0,0 +1,6 @@ +package com.sap.sailing.gwt.home.desktop.places.whatsnew; + +import com.google.gwt.user.client.ui.IsWidget; + +public interface WhatsNewView extends IsWidget { +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java index 2582c2d1b47..74cf9dd31db 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java @@ -15,8 +15,8 @@ import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.place.start.StartPlace; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.shared.app.AbstractPlaceNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/footer/Footer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/footer/Footer.java index 4df61fd3f1e..61e175b7d6c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/footer/Footer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/footer/Footer.java @@ -25,7 +25,7 @@ import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.ValueListBox; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint; import com.sap.sse.common.Util.Pair; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java index 97fafb50a3d..718bd0c6055 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java @@ -27,7 +27,7 @@ import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; -import com.sap.sailing.gwt.home.client.place.whatsnew.WhatsNewPlace; +import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; From c0aafd442c48b3a13168148438c5e0d71ec777bb Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 21 Sep 2015 17:05:39 +0200 Subject: [PATCH 317/504] Refactoring - Moved desktop Solutions place into respentive package --- .../gwt/home/client/place/solutions/SolutionsView.java | 7 ------- .../gwt/home/client/shared/mainsponsors/MainSponsors.java | 4 ++-- .../gwt/home/desktop/app/DesktopActivityMapper.java | 4 ++-- .../sailing/gwt/home/desktop/app/DesktopClientFactory.java | 2 +- .../gwt/home/desktop/app/DesktopPlacesNavigator.java | 4 ++-- .../app/TabletAndDesktopApplicationClientFactory.java | 6 +++--- .../sailing/gwt/home/desktop/partials/header/Header.java | 4 ++-- .../gwt/home/desktop/partials/solutions/Solutions.java | 4 ++-- .../places}/solutions/SolutionsActivity.java | 2 +- .../places}/solutions/SolutionsActivityProxy.java | 2 +- .../places}/solutions/SolutionsClientFactory.java | 4 ++-- .../place => desktop/places}/solutions/SolutionsPlace.java | 2 +- .../gwt/home/desktop/places/solutions/SolutionsView.java | 6 ++++++ .../places}/solutions/TabletAndDesktopSolutionsView.java | 4 ++-- .../places}/solutions/TabletAndDesktopSolutionsView.ui.xml | 0 .../sailing/gwt/home/mobile/app/MobileActivityMapper.java | 2 +- .../sailing/gwt/home/mobile/app/MobilePlacesNavigator.java | 4 ++-- .../home/mobile/places/solutions/SolutionsActivity.java | 2 +- .../mobile/places/solutions/SolutionsActivityProxy.java | 2 +- .../gwt/home/shared/app/ApplicationHistoryMapper.java | 2 +- 20 files changed, 33 insertions(+), 34 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsView.java rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/solutions/SolutionsActivity.java (94%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/solutions/SolutionsActivityProxy.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/solutions/SolutionsClientFactory.java (57%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/solutions/SolutionsPlace.java (96%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsView.java rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/solutions/TabletAndDesktopSolutionsView.java (86%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/solutions/TabletAndDesktopSolutionsView.ui.xml (100%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsView.java deleted file mode 100644 index b3ffabfe49c..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsView.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.solutions; - -import com.google.gwt.user.client.ui.Widget; - -public interface SolutionsView { - Widget asWidget(); -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java index 445f84a301c..134b3887abd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java @@ -8,10 +8,10 @@ import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; public class MainSponsors extends Composite { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java index c0225b498f4..be622ec9baf 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java @@ -16,12 +16,12 @@ import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultActivityProxy; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsActivityProxy; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringActivityProxy; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartActivityProxy; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsActivityProxy; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewActivityProxy; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java index 5fdf0eddd66..cf9d2c83f53 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java @@ -7,9 +7,9 @@ import com.sap.sailing.gwt.home.client.place.event.EventClientFactory; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory; import com.sap.sailing.gwt.home.client.place.events.EventsClientFactory; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultClientFactory; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsClientFactory; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringClientFactory; import com.sap.sailing.gwt.home.client.place.start.StartClientFactory; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsClientFactory; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewClientFactory; public interface DesktopClientFactory extends AboutUsClientFactory, ContactClientFactory, EventClientFactory, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java index 5cc3659601a..dbf5e33610a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java @@ -16,10 +16,10 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewP import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.shared.app.AbstractPlaceNavigator; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java index 44b84acd8f2..0963efbdef5 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java @@ -8,13 +8,13 @@ import com.sap.sailing.gwt.home.client.place.events.EventsView; import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultView; import com.sap.sailing.gwt.home.client.place.searchresult.TabletAndDesktopSearchResultView; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsView; -import com.sap.sailing.gwt.home.client.place.solutions.TabletAndDesktopSolutionsView; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringView; import com.sap.sailing.gwt.home.client.place.sponsoring.TabletAndDesktopSponsoringView; import com.sap.sailing.gwt.home.client.place.start.StartView; import com.sap.sailing.gwt.home.client.place.start.TabletAndDesktopStartView; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsView; +import com.sap.sailing.gwt.home.desktop.places.solutions.TabletAndDesktopSolutionsView; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.desktop.places.whatsnew.TabletAndDesktopWhatsNewView; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewView; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java index adf7c357313..6fb6619cfec 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java @@ -26,10 +26,10 @@ import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.place.start.StartPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sse.gwt.client.mvp.PlaceChangedEvent; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/solutions/Solutions.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/solutions/Solutions.java index 9b8fddc9a9c..949fac5c936 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/solutions/Solutions.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/solutions/Solutions.java @@ -15,9 +15,9 @@ import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.impl.HyperlinkImpl; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivity.java similarity index 94% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivity.java index 4e0c605ff57..3664da52637 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivity.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.solutions; +package com.sap.sailing.gwt.home.desktop.places.solutions; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivityProxy.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivityProxy.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivityProxy.java index 3b33c33c850..43869296a0c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivityProxy.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.solutions; +package com.sap.sailing.gwt.home.desktop.places.solutions; import com.google.gwt.core.client.GWT; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsClientFactory.java similarity index 57% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsClientFactory.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsClientFactory.java index 58ca73efb52..22b57d03eb7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsClientFactory.java @@ -1,6 +1,6 @@ -package com.sap.sailing.gwt.home.client.place.solutions; +package com.sap.sailing.gwt.home.desktop.places.solutions; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.ui.client.SailingClientFactory; public interface SolutionsClientFactory extends SailingClientFactory { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsPlace.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsPlace.java index e9fbb8f367e..4d100d0b6e4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/SolutionsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.solutions; +package com.sap.sailing.gwt.home.desktop.places.solutions; import com.google.gwt.place.shared.PlaceTokenizer; import com.sap.sailing.gwt.common.client.AbstractBasePlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsView.java new file mode 100644 index 00000000000..ebf723aaa4a --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsView.java @@ -0,0 +1,6 @@ +package com.sap.sailing.gwt.home.desktop.places.solutions; + +import com.google.gwt.user.client.ui.IsWidget; + +public interface SolutionsView extends IsWidget { +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/TabletAndDesktopSolutionsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/TabletAndDesktopSolutionsView.java similarity index 86% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/TabletAndDesktopSolutionsView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/TabletAndDesktopSolutionsView.java index f2fac5cf307..61df6b234f4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/TabletAndDesktopSolutionsView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/TabletAndDesktopSolutionsView.java @@ -1,13 +1,13 @@ -package com.sap.sailing.gwt.home.client.place.solutions; +package com.sap.sailing.gwt.home.desktop.places.solutions; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.desktop.partials.solutions.Solutions; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; public class TabletAndDesktopSolutionsView extends Composite implements SolutionsView { private static SolutionsPageViewUiBinder uiBinder = GWT.create(SolutionsPageViewUiBinder.class); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/TabletAndDesktopSolutionsView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/TabletAndDesktopSolutionsView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/solutions/TabletAndDesktopSolutionsView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/TabletAndDesktopSolutionsView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java index 609fbcd8c74..a2e054fabef 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java @@ -7,8 +7,8 @@ import com.google.gwt.place.shared.Place; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.mobile.places.event.EventActivityProxy; import com.sap.sailing.gwt.home.mobile.places.events.EventsActivityProxy; import com.sap.sailing.gwt.home.mobile.places.series.SeriesActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java index 74cf9dd31db..4afea1af870 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java @@ -12,9 +12,9 @@ import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivity.java index ce8573b8d43..474fb0cd812 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivity.java @@ -3,7 +3,7 @@ package com.sap.sailing.gwt.home.mobile.places.solutions; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; public class SolutionsActivity extends AbstractActivity implements SolutionsView.Presenter { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivityProxy.java index abd91f77551..ab2ad8d7eb3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivityProxy.java @@ -1,7 +1,7 @@ package com.sap.sailing.gwt.home.mobile.places.solutions; import com.google.gwt.core.client.GWT; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java index 718bd0c6055..f31502ff624 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java @@ -24,9 +24,9 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallL import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesMediaPlace; import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; -import com.sap.sailing.gwt.home.client.place.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; From be40bd0074329d81907b94c73f0d634c59afdb1d Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 21 Sep 2015 17:18:11 +0200 Subject: [PATCH 318/504] Refactoring - Moved desktop SearchResult place into respentive package --- .../gwt/home/desktop/app/DesktopActivityMapper.java | 4 ++-- .../sailing/gwt/home/desktop/app/DesktopClientFactory.java | 2 +- .../gwt/home/desktop/app/DesktopPlacesNavigator.java | 2 +- .../app/TabletAndDesktopApplicationClientFactory.java | 4 ++-- .../sailing/gwt/home/desktop/partials/header/Header.java | 2 +- .../home/desktop/partials/searchresult/SearchResult.java | 2 +- .../place => desktop/places}/searchresult/SearchEvent.java | 2 +- .../places}/searchresult/SearchEventHandler.java | 2 +- .../places}/searchresult/SearchResultActivity.java | 2 +- .../places}/searchresult/SearchResultActivityProxy.java | 2 +- .../places}/searchresult/SearchResultClientFactory.java | 2 +- .../places}/searchresult/SearchResultPlace.java | 2 +- .../places}/searchresult/SearchResultView.java | 7 +++---- .../searchresult/TabletAndDesktopSearchResultView.java | 2 +- .../searchresult/TabletAndDesktopSearchResultView.ui.xml | 0 .../sailing/gwt/home/mobile/app/MobilePlacesNavigator.java | 2 +- .../gwt/home/shared/app/ApplicationHistoryMapper.java | 2 +- 17 files changed, 20 insertions(+), 21 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/searchresult/SearchEvent.java (90%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/searchresult/SearchEventHandler.java (71%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/searchresult/SearchResultActivity.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/searchresult/SearchResultActivityProxy.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/searchresult/SearchResultClientFactory.java (74%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/searchresult/SearchResultPlace.java (93%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/searchresult/SearchResultView.java (57%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/searchresult/TabletAndDesktopSearchResultView.java (95%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/searchresult/TabletAndDesktopSearchResultView.ui.xml (100%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java index be622ec9baf..a28a1bc19d8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java @@ -14,12 +14,12 @@ import com.sap.sailing.gwt.home.client.place.event.EventActivityProxy; import com.sap.sailing.gwt.home.client.place.events.EventsActivityProxy; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; -import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultActivityProxy; -import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringActivityProxy; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartActivityProxy; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultActivityProxy; +import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsActivityProxy; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java index cf9d2c83f53..3d18fc1eee4 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java @@ -6,9 +6,9 @@ import com.sap.sailing.gwt.home.client.place.error.ErrorClientFactory; import com.sap.sailing.gwt.home.client.place.event.EventClientFactory; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory; import com.sap.sailing.gwt.home.client.place.events.EventsClientFactory; -import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultClientFactory; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringClientFactory; import com.sap.sailing.gwt.home.client.place.start.StartClientFactory; +import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultClientFactory; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsClientFactory; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewClientFactory; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java index dbf5e33610a..60336bbdbe5 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java @@ -15,9 +15,9 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboa import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; -import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java index 0963efbdef5..079a6f0023f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java @@ -6,12 +6,12 @@ import com.google.web.bindery.event.shared.EventBus; import com.sap.sailing.gwt.home.client.place.error.TabletAndDesktopErrorView; import com.sap.sailing.gwt.home.client.place.events.EventsView; import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView; -import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultView; -import com.sap.sailing.gwt.home.client.place.searchresult.TabletAndDesktopSearchResultView; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringView; import com.sap.sailing.gwt.home.client.place.sponsoring.TabletAndDesktopSponsoringView; import com.sap.sailing.gwt.home.client.place.start.StartView; import com.sap.sailing.gwt.home.client.place.start.TabletAndDesktopStartView; +import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultView; +import com.sap.sailing.gwt.home.desktop.places.searchresult.TabletAndDesktopSearchResultView; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsView; import com.sap.sailing.gwt.home.desktop.places.solutions.TabletAndDesktopSolutionsView; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java index 6fb6619cfec..03d6baaeee5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java @@ -25,9 +25,9 @@ import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; -import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/searchresult/SearchResult.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/searchresult/SearchResult.java index d86b71408a3..c58cf66cced 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/searchresult/SearchResult.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/searchresult/SearchResult.java @@ -19,8 +19,8 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.LeaderboardSearchResultDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchEvent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchEvent.java similarity index 90% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchEvent.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchEvent.java index 5e2141c77e5..a2dc99d0489 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchEvent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchEvent.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.searchresult; +package com.sap.sailing.gwt.home.desktop.places.searchresult; import com.google.gwt.event.shared.GwtEvent; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchEventHandler.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchEventHandler.java similarity index 71% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchEventHandler.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchEventHandler.java index 4c78dc04a44..221d79fe94b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchEventHandler.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchEventHandler.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.searchresult; +package com.sap.sailing.gwt.home.desktop.places.searchresult; import com.google.gwt.event.shared.EventHandler; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultActivity.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultActivity.java index 49eed8d733d..eec4e32c6ee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultActivity.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.searchresult; +package com.sap.sailing.gwt.home.desktop.places.searchresult; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultActivityProxy.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultActivityProxy.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultActivityProxy.java index a77da98e1f1..6db3dc260d7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultActivityProxy.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.searchresult; +package com.sap.sailing.gwt.home.desktop.places.searchresult; import com.google.gwt.core.client.GWT; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultClientFactory.java similarity index 74% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultClientFactory.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultClientFactory.java index 24d9daaf9f8..96591014ed0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultClientFactory.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.searchresult; +package com.sap.sailing.gwt.home.desktop.places.searchresult; import com.sap.sailing.gwt.ui.client.SailingClientFactory; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultPlace.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultPlace.java index a46c2373011..83f160838a9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.searchresult; +package com.sap.sailing.gwt.home.desktop.places.searchresult; import com.google.gwt.place.shared.Place; import com.google.gwt.place.shared.PlaceTokenizer; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultView.java similarity index 57% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultView.java index 2873ae11354..11faf04247f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/SearchResultView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/SearchResultView.java @@ -1,10 +1,9 @@ -package com.sap.sailing.gwt.home.client.place.searchresult; +package com.sap.sailing.gwt.home.desktop.places.searchresult; -import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.user.client.ui.IsWidget; import com.sap.sailing.gwt.ui.shared.LeaderboardSearchResultDTO; -public interface SearchResultView { - Widget asWidget(); +public interface SearchResultView extends IsWidget { void initSearchResult(String searchText); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/TabletAndDesktopSearchResultView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/TabletAndDesktopSearchResultView.java similarity index 95% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/TabletAndDesktopSearchResultView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/TabletAndDesktopSearchResultView.java index dac29d83ec0..c9cccb3c217 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/TabletAndDesktopSearchResultView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/TabletAndDesktopSearchResultView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.searchresult; +package com.sap.sailing.gwt.home.desktop.places.searchresult; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/TabletAndDesktopSearchResultView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/TabletAndDesktopSearchResultView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/searchresult/TabletAndDesktopSearchResultView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/searchresult/TabletAndDesktopSearchResultView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java index 4afea1af870..d39e671896f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java @@ -11,8 +11,8 @@ import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; -import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java index f31502ff624..ed1ab7a924d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java @@ -23,9 +23,9 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesLeaderbo import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesMediaPlace; -import com.sap.sailing.gwt.home.client.place.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; From 3eb4ba1820b6ecb0bc7804a6636b6ce9f6a4374d Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 21 Sep 2015 17:21:11 +0200 Subject: [PATCH 319/504] Refactoring - Moved desktop Error place into respentive package --- .../gwt/home/client/place/event/EventActivityProxy.java | 2 +- .../gwt/home/client/place/fakeseries/SeriesActivityProxy.java | 2 +- .../sailing/gwt/home/desktop/app/DesktopActivityMapper.java | 4 ++-- .../sailing/gwt/home/desktop/app/DesktopClientFactory.java | 2 +- .../desktop/app/TabletAndDesktopApplicationClientFactory.java | 2 +- .../{client/place => desktop/places}/error/ErrorActivity.java | 2 +- .../place => desktop/places}/error/ErrorActivityProxy.java | 2 +- .../place => desktop/places}/error/ErrorClientFactory.java | 2 +- .../{client/place => desktop/places}/error/ErrorPlace.java | 2 +- .../places}/error/TabletAndDesktopErrorView.java | 2 +- .../places}/error/TabletAndDesktopErrorView.ui.xml | 0 .../gwt/home/mobile/places/event/EventActivityProxy.java | 2 +- .../sailing/gwt/home/mobile/places/series/SeriesActivity.java | 2 +- .../minileaderboard/SeriesMiniOverallLeaderboardActivity.java | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/error/ErrorActivity.java (96%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/error/ErrorActivityProxy.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/error/ErrorClientFactory.java (70%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/error/ErrorPlace.java (96%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/error/TabletAndDesktopErrorView.java (95%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/error/TabletAndDesktopErrorView.ui.xml (100%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java index f56c7fd0f79..2a1c0bba5d9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java @@ -4,7 +4,6 @@ import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.multiregatta.AbstractMultiregattaEventPlace; import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaActivity; import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; @@ -17,6 +16,7 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlac import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivityProxy.java index 0703f9510ec..009e99ff7b8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivityProxy.java @@ -4,11 +4,11 @@ import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java index a28a1bc19d8..9a1d776d371 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java @@ -7,8 +7,6 @@ import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsActivityProxy; import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.client.place.contact.ContactActivityProxy; import com.sap.sailing.gwt.home.client.place.contact.ContactPlace; -import com.sap.sailing.gwt.home.client.place.error.ErrorActivityProxy; -import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventActivityProxy; import com.sap.sailing.gwt.home.client.place.events.EventsActivityProxy; @@ -18,6 +16,8 @@ import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringActivityProxy; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartActivityProxy; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.error.ErrorActivityProxy; +import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultActivityProxy; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java index 3d18fc1eee4..6e41a6b0f84 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java @@ -2,12 +2,12 @@ package com.sap.sailing.gwt.home.desktop.app; import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsClientFactory; import com.sap.sailing.gwt.home.client.place.contact.ContactClientFactory; -import com.sap.sailing.gwt.home.client.place.error.ErrorClientFactory; import com.sap.sailing.gwt.home.client.place.event.EventClientFactory; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory; import com.sap.sailing.gwt.home.client.place.events.EventsClientFactory; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringClientFactory; import com.sap.sailing.gwt.home.client.place.start.StartClientFactory; +import com.sap.sailing.gwt.home.desktop.places.error.ErrorClientFactory; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultClientFactory; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsClientFactory; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewClientFactory; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java index 079a6f0023f..5a0593e42f8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java @@ -3,13 +3,13 @@ package com.sap.sailing.gwt.home.desktop.app; import com.google.gwt.event.shared.SimpleEventBus; import com.google.gwt.place.shared.PlaceController; import com.google.web.bindery.event.shared.EventBus; -import com.sap.sailing.gwt.home.client.place.error.TabletAndDesktopErrorView; import com.sap.sailing.gwt.home.client.place.events.EventsView; import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringView; import com.sap.sailing.gwt.home.client.place.sponsoring.TabletAndDesktopSponsoringView; import com.sap.sailing.gwt.home.client.place.start.StartView; import com.sap.sailing.gwt.home.client.place.start.TabletAndDesktopStartView; +import com.sap.sailing.gwt.home.desktop.places.error.TabletAndDesktopErrorView; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultView; import com.sap.sailing.gwt.home.desktop.places.searchresult.TabletAndDesktopSearchResultView; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsView; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/ErrorActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/ErrorActivity.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/ErrorActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/ErrorActivity.java index 6a22db60803..52d1b9722fb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/ErrorActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/ErrorActivity.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.error; +package com.sap.sailing.gwt.home.desktop.places.error; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/ErrorActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/ErrorActivityProxy.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/ErrorActivityProxy.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/ErrorActivityProxy.java index 99ee5c0ecfe..1a5781bd363 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/ErrorActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/ErrorActivityProxy.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.error; +package com.sap.sailing.gwt.home.desktop.places.error; import com.google.gwt.core.client.GWT; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/ErrorClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/ErrorClientFactory.java similarity index 70% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/ErrorClientFactory.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/ErrorClientFactory.java index 2be2c58653c..f725ceb7256 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/ErrorClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/ErrorClientFactory.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.error; +package com.sap.sailing.gwt.home.desktop.places.error; import com.sap.sailing.gwt.ui.client.SailingClientFactory; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/ErrorPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/ErrorPlace.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/ErrorPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/ErrorPlace.java index 5a7d34443df..1041d7e1f24 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/ErrorPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/ErrorPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.error; +package com.sap.sailing.gwt.home.desktop.places.error; import com.google.gwt.place.shared.Place; import com.google.gwt.place.shared.PlaceTokenizer; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/TabletAndDesktopErrorView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/TabletAndDesktopErrorView.java similarity index 95% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/TabletAndDesktopErrorView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/TabletAndDesktopErrorView.java index 932c94a6a4a..c2fa5cd24dc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/TabletAndDesktopErrorView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/TabletAndDesktopErrorView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.error; +package com.sap.sailing.gwt.home.desktop.places.error; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/TabletAndDesktopErrorView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/TabletAndDesktopErrorView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/error/TabletAndDesktopErrorView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/error/TabletAndDesktopErrorView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java index e250d5a2f88..5e164d8146a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java @@ -4,13 +4,13 @@ import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; +import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsActivity; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java index 1da51d08b92..2cae1c076fa 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java @@ -6,10 +6,10 @@ import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; +import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java index 5922c137637..f9f7a15b596 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java @@ -6,10 +6,10 @@ import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.error.ErrorPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; +import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; From fb824516e1b8c1e0faf41d0c5314436deea53d4b Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 21 Sep 2015 17:25:53 +0200 Subject: [PATCH 320/504] Refactoring - Moved desktop dummy places AboutUs and Contact into respective packages --- .../gwt/home/desktop/app/DesktopActivityMapper.java | 8 ++++---- .../gwt/home/desktop/app/DesktopClientFactory.java | 4 ++-- .../gwt/home/desktop/app/DesktopPlacesNavigator.java | 4 ++-- .../place => desktop/places}/aboutus/AboutUsActivity.java | 2 +- .../places}/aboutus/AboutUsActivityProxy.java | 2 +- .../places}/aboutus/AboutUsClientFactory.java | 2 +- .../place => desktop/places}/aboutus/AboutUsPlace.java | 2 +- .../place => desktop/places}/aboutus/AboutUsView.java | 2 +- .../place => desktop/places}/aboutus/AboutUsView.ui.xml | 4 +--- .../place => desktop/places}/contact/ContactActivity.java | 2 +- .../places}/contact/ContactActivityProxy.java | 2 +- .../places}/contact/ContactClientFactory.java | 2 +- .../place => desktop/places}/contact/ContactPlace.java | 2 +- .../place => desktop/places}/contact/ContactView.java | 2 +- .../place => desktop/places}/contact/ContactView.ui.xml | 4 +--- .../gwt/home/mobile/app/MobilePlacesNavigator.java | 4 ++-- .../gwt/home/shared/app/ApplicationHistoryMapper.java | 4 ++-- 17 files changed, 24 insertions(+), 28 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/aboutus/AboutUsActivity.java (88%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/aboutus/AboutUsActivityProxy.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/aboutus/AboutUsClientFactory.java (70%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/aboutus/AboutUsPlace.java (88%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/aboutus/AboutUsView.java (90%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/aboutus/AboutUsView.ui.xml (75%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/contact/ContactActivity.java (88%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/contact/ContactActivityProxy.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/contact/ContactClientFactory.java (70%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/contact/ContactPlace.java (88%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/contact/ContactView.java (89%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/contact/ContactView.ui.xml (83%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java index 9a1d776d371..89f3e1cac4a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java @@ -3,10 +3,6 @@ package com.sap.sailing.gwt.home.desktop.app; import com.google.gwt.activity.shared.Activity; import com.google.gwt.activity.shared.ActivityMapper; import com.google.gwt.place.shared.Place; -import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsActivityProxy; -import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsPlace; -import com.sap.sailing.gwt.home.client.place.contact.ContactActivityProxy; -import com.sap.sailing.gwt.home.client.place.contact.ContactPlace; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventActivityProxy; import com.sap.sailing.gwt.home.client.place.events.EventsActivityProxy; @@ -16,6 +12,10 @@ import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringActivityProxy; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartActivityProxy; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsActivityProxy; +import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; +import com.sap.sailing.gwt.home.desktop.places.contact.ContactActivityProxy; +import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; import com.sap.sailing.gwt.home.desktop.places.error.ErrorActivityProxy; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java index 6e41a6b0f84..b5f33b5cd42 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java @@ -1,12 +1,12 @@ package com.sap.sailing.gwt.home.desktop.app; -import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsClientFactory; -import com.sap.sailing.gwt.home.client.place.contact.ContactClientFactory; import com.sap.sailing.gwt.home.client.place.event.EventClientFactory; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory; import com.sap.sailing.gwt.home.client.place.events.EventsClientFactory; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringClientFactory; import com.sap.sailing.gwt.home.client.place.start.StartClientFactory; +import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsClientFactory; +import com.sap.sailing.gwt.home.desktop.places.contact.ContactClientFactory; import com.sap.sailing.gwt.home.desktop.places.error.ErrorClientFactory; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultClientFactory; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsClientFactory; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java index 60336bbdbe5..5e3ef740833 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java @@ -4,8 +4,6 @@ import java.util.HashMap; import java.util.Map; import com.google.gwt.place.shared.PlaceController; -import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsPlace; -import com.sap.sailing.gwt.home.client.place.contact.ContactPlace; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaRegattasPlace; @@ -17,6 +15,8 @@ import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; +import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsActivity.java similarity index 88% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsActivity.java index f92adfb692e..e1ec3df11dd 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsActivity.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.aboutus; +package com.sap.sailing.gwt.home.desktop.places.aboutus; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsActivityProxy.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsActivityProxy.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsActivityProxy.java index 6c66c0d4341..8e0b8156240 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsActivityProxy.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.aboutus; +package com.sap.sailing.gwt.home.desktop.places.aboutus; import com.google.gwt.core.client.GWT; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsClientFactory.java similarity index 70% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsClientFactory.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsClientFactory.java index 8649f966fbb..de2990c9d10 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsClientFactory.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.aboutus; +package com.sap.sailing.gwt.home.desktop.places.aboutus; import com.sap.sailing.gwt.ui.client.SailingClientFactory; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsPlace.java similarity index 88% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsPlace.java index e467bb6a106..8ea549ef912 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.aboutus; +package com.sap.sailing.gwt.home.desktop.places.aboutus; import com.google.gwt.place.shared.Place; import com.google.gwt.place.shared.PlaceTokenizer; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsView.java similarity index 90% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsView.java index ecc89c8e080..83b52f40a8d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.aboutus; +package com.sap.sailing.gwt.home.desktop.places.aboutus; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsView.ui.xml similarity index 75% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsView.ui.xml index 80f4656e964..91fb71206df 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/aboutus/AboutUsView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/aboutus/AboutUsView.ui.xml @@ -1,6 +1,5 @@ - + .panel { width: 100%; @@ -8,7 +7,6 @@ border: solid 1px black; } - About us content diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactActivity.java similarity index 88% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactActivity.java index f658cccf5ee..6d2cdbad3bb 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactActivity.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.contact; +package com.sap.sailing.gwt.home.desktop.places.contact; import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactActivityProxy.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactActivityProxy.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactActivityProxy.java index e9135453c07..08f48d0b0b9 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactActivityProxy.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.contact; +package com.sap.sailing.gwt.home.desktop.places.contact; import com.google.gwt.core.client.GWT; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactClientFactory.java similarity index 70% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactClientFactory.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactClientFactory.java index b7c0cb6457d..3fdedf772a7 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactClientFactory.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.contact; +package com.sap.sailing.gwt.home.desktop.places.contact; import com.sap.sailing.gwt.ui.client.SailingClientFactory; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactPlace.java similarity index 88% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactPlace.java index d674c40b20d..98d6b8e36ab 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.contact; +package com.sap.sailing.gwt.home.desktop.places.contact; import com.google.gwt.place.shared.Place; import com.google.gwt.place.shared.PlaceTokenizer; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactView.java similarity index 89% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactView.java index 902647cb976..8084d8a2ead 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.contact; +package com.sap.sailing.gwt.home.desktop.places.contact; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactView.ui.xml similarity index 83% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactView.ui.xml index 4c024153dbb..d81a76f95d4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/contact/ContactView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/contact/ContactView.ui.xml @@ -1,6 +1,5 @@ - + .panel { @@ -9,7 +8,6 @@ border: solid 1px black; } - Contact content diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java index d39e671896f..e738e44623b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java @@ -3,8 +3,6 @@ package com.sap.sailing.gwt.home.mobile.app; import java.util.List; import com.google.gwt.place.shared.PlaceController; -import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsPlace; -import com.sap.sailing.gwt.home.client.place.contact.ContactPlace; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; @@ -12,6 +10,8 @@ import com.sap.sailing.gwt.home.client.place.events.EventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; +import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java index ed1ab7a924d..b669abbba0d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java @@ -2,8 +2,6 @@ package com.sap.sailing.gwt.home.shared.app; import com.google.gwt.place.shared.PlaceHistoryMapper; import com.google.gwt.place.shared.WithTokenizers; -import com.sap.sailing.gwt.home.client.place.aboutus.AboutUsPlace; -import com.sap.sailing.gwt.home.client.place.contact.ContactPlace; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace; @@ -25,6 +23,8 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesMediaPlace; import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.client.place.start.StartPlace; +import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; +import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; From bded2f5e4052b77760317fd509d3dc758d2f6052 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 21 Sep 2015 18:16:56 +0200 Subject: [PATCH 321/504] don't use the AsyncActionsExecutor for EditMarkPassingPanel; those actions require synchronous execution --- .../dataretriever/WindBotDataRetriever.java | 2 - .../shared/charts/EditMarkPassingsPanel.java | 107 ++++++------------ .../gwt/ui/raceboard/RaceBoardPanel.java | 4 +- .../com/sap/sailing/gwt/ui/RaceBoard.gwt.xml | 3 +- .../client/async/AsyncActionsExecutor.java | 8 +- 5 files changed, 40 insertions(+), 84 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dataretriever/WindBotDataRetriever.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dataretriever/WindBotDataRetriever.java index a202fa5a449..7436307fbb2 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dataretriever/WindBotDataRetriever.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/dataretriever/WindBotDataRetriever.java @@ -31,8 +31,6 @@ public class WindBotDataRetriever implements TimeListener, RaceSelectionChangeLi private final int ONE_HOUR_IN_MILLISECONDS = 1000*60*60; private final String LODA_WIND_CHART_DATA_CATEGORY = "loadWindChartData"; private boolean didInitialLoading; - - public WindBotDataRetriever(SailingServiceAsync sailingService) { this.sailingService = sailingService; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/EditMarkPassingsPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/EditMarkPassingsPanel.java index 4010792eb94..80a59922b5c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/EditMarkPassingsPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/charts/EditMarkPassingsPanel.java @@ -43,15 +43,12 @@ import com.sap.sse.common.filter.Filter; import com.sap.sse.common.filter.FilterSet; import com.sap.sse.common.settings.AbstractSettings; import com.sap.sse.gwt.client.ErrorReporter; -import com.sap.sse.gwt.client.async.AsyncAction; -import com.sap.sse.gwt.client.async.AsyncActionsExecutor; import com.sap.sse.gwt.client.player.Timer; import com.sap.sse.gwt.client.shared.components.Component; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; public class EditMarkPassingsPanel extends AbsolutePanel implements Component, RaceSelectionChangeListener, CompetitorSelectionChangeListener { - private static class AnchorCell extends AbstractCell { @Override public void render(com.google.gwt.cell.client.Cell.Context context, SafeHtml safeHtml, SafeHtmlBuilder sb) { @@ -61,7 +58,6 @@ public class EditMarkPassingsPanel extends AbsolutePanel implements Component() { - @Override - public void execute(AsyncCallback callback) { - sailingService.updateFixedMarkPassing(leaderboardName, column, column.getFleet(raceIdentifier), - waypointSelectionModel.getSelectedObject().getA(), null, competitor, callback); - } - }, new AsyncCallback() { + sailingService.updateFixedMarkPassing(leaderboardName, column, column.getFleet(raceIdentifier), + waypointSelectionModel.getSelectedObject().getA(), null, competitor, new AsyncCallback() { @Override public void onFailure(Throwable caught) { errorReporter.reportError(stringMessages.errorRemovingFixedPassing(caught.getMessage())); @@ -195,14 +184,9 @@ public class EditMarkPassingsPanel extends AbsolutePanel implements Component() { - @Override - public void execute(AsyncCallback callback) { - sailingService.updateFixedMarkPassing(leaderboardName, column, column.getFleet(raceIdentifier), + sailingService.updateFixedMarkPassing(leaderboardName, column, column.getFleet(raceIdentifier), waypointSelectionModel.getSelectedObject().getA(), timer.getTime(), competitor, - callback); - } - }, new AsyncCallback() { + new AsyncCallback() { @Override public void onFailure(Throwable caught) { errorReporter.reportError(stringMessages.errorSettingFixedPassing(caught.getMessage())); @@ -221,14 +205,9 @@ public class EditMarkPassingsPanel extends AbsolutePanel implements Component() { - @Override - public void execute(AsyncCallback callback) { - sailingService.updateSuppressedMarkPassings(leaderboardName, column, + sailingService.updateSuppressedMarkPassings(leaderboardName, column, column.getFleet(raceIdentifier), waypointSelectionModel.getSelectedObject().getA(), - competitor, callback); - } - }, new AsyncCallback() { + competitor, new AsyncCallback() { @Override public void onFailure(Throwable caught) { errorReporter.reportError(stringMessages.errorSuppressingPassing(caught.getMessage())); @@ -246,13 +225,9 @@ public class EditMarkPassingsPanel extends AbsolutePanel implements Component() { - @Override - public void execute(AsyncCallback callback) { - sailingService.updateSuppressedMarkPassings(leaderboardName, column, - column.getFleet(raceIdentifier), null, competitor, callback); - } - }, new AsyncCallback() { + sailingService.updateSuppressedMarkPassings(leaderboardName, column, + column.getFleet(raceIdentifier), null, competitor, + new AsyncCallback() { @Override public void onFailure(Throwable caught) { errorReporter.reportError(stringMessages.errorRemovingSupressedPassing(caught.getMessage())); @@ -316,17 +291,11 @@ public class EditMarkPassingsPanel extends AbsolutePanel implements Component>() { - @Override - public void execute(AsyncCallback> callback) { - sailingService.getCompetitorMarkPassings(raceIdentifier, competitor, callback); - } - }, new AsyncCallback>() { + sailingService.getCompetitorMarkPassings(raceIdentifier, competitor, new AsyncCallback>() { @Override public void onFailure(Throwable caught) { errorReporter.reportError(stringMessages.errorTryingToObtainMarkPassing(caught.getMessage())); @@ -341,32 +310,27 @@ public class EditMarkPassingsPanel extends AbsolutePanel implements Component>() { - @Override - public void execute(AsyncCallback> callback) { + // Get current edits sailingService.getCompetitorRaceLogMarkPassingData(leaderboardName, column, - column.getFleet(raceIdentifier), competitor, callback); - } - }, new AsyncCallback>() { - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError(stringMessages.errorTryingToObtainRaceLogMarkPassingData(caught.getMessage())); - } - - @Override - public void onSuccess(Map result) { - for (Entry data : result.entrySet()) { - if (data.getValue() == null) { - zeroBasedIndexOfFirstSuppressedWaypoint = data.getKey(); - } else { - currentCompetitorEdits.put(data.getKey(), data.getValue()); + column.getFleet(raceIdentifier), competitor, new AsyncCallback>() { + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError(stringMessages.errorTryingToObtainRaceLogMarkPassingData(caught.getMessage())); } - } - enableButtons(); - wayPointSelectionTable.redraw(); + + @Override + public void onSuccess(Map result) { + for (Entry data : result.entrySet()) { + if (data.getValue() == null) { + zeroBasedIndexOfFirstSuppressedWaypoint = data.getKey(); + } else { + currentCompetitorEdits.put(data.getKey(), data.getValue()); + } + } + enableButtons(); + wayPointSelectionTable.redraw(); + } + }); } }); } @@ -382,12 +346,7 @@ public class EditMarkPassingsPanel extends AbsolutePanel implements Component() { - @Override - public void execute(AsyncCallback callback) { - sailingService.getRaceCourse(raceIdentifier, new Date(), callback); - } - }, new AsyncCallback() { + sailingService.getRaceCourse(raceIdentifier, new Date(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { errorReporter.reportError(stringMessages.errorTryingToObtainRaceCourse(caught.getMessage())); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java index 6d89dae29d3..869824def10 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java @@ -214,8 +214,8 @@ public class RaceBoardPanel extends SimplePanel implements RaceSelectionChangeLi windChart.onRaceSelectionChange(raceSelectionProvider.getSelectedRaces()); windChart.getEntryWidget().setTitle(stringMessages.windChart()); components.add(windChart); - editMarkPassingPanel = new EditMarkPassingsPanel(sailingService, asyncActionsExecutor, selectedRaceIdentifier, - stringMessages, competitorSelectionModel, errorReporter, timer); + editMarkPassingPanel = new EditMarkPassingsPanel(sailingService, selectedRaceIdentifier, stringMessages, + competitorSelectionModel, errorReporter, timer); editMarkPassingPanel.setLeaderboardNameAndColumn(leaderboardPanel.getLeaderboard()); editMarkPassingPanel.getEntryWidget().setTitle(stringMessages.editMarkPassings()); components.add(editMarkPassingPanel); diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/RaceBoard.gwt.xml b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/RaceBoard.gwt.xml index abf1b64de3b..c5f537d6977 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/RaceBoard.gwt.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/RaceBoard.gwt.xml @@ -28,8 +28,7 @@ - - + diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/async/AsyncActionsExecutor.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/async/AsyncActionsExecutor.java index 610830b136d..ff024bfda05 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/async/AsyncActionsExecutor.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/async/AsyncActionsExecutor.java @@ -44,7 +44,7 @@ public class AsyncActionsExecutor { @Override public void onSuccess(T result) { try { - GWT.log("Execution success for action of type: " + getType()); + GWT.log("Execution success for action of type " + getType() + ", category "+getCategory()); this.callback.onSuccess(result); } finally { AsyncActionsExecutor.this.callCompleted(this); @@ -54,7 +54,7 @@ public class AsyncActionsExecutor { @Override public void onFailure(Throwable caught) { try { - GWT.log("Execution failure for action of type: " + getType()); + GWT.log("Execution failure for action of type " + getType() + ", category "+getCategory()); this.callback.onFailure(caught); } finally { AsyncActionsExecutor.this.callCompleted(this); @@ -62,7 +62,7 @@ public class AsyncActionsExecutor { } } - private static final int DEFAULT_MAX_PENDING_CALLS = 6; + private static final int DEFAULT_MAX_PENDING_CALLS = 10; private static final int DEFAULT_MAX_PENDING_CALLS_PER_TYPE = 4; /** @@ -145,7 +145,7 @@ public class AsyncActionsExecutor { } numActionsOfType = 0; } else { - GWT.log("Dropping action of type: " + job.getType()); + GWT.log("Dropping action of type " + job.getType() + ", category "+job.getCategory()); /* don't put the call into the execution queue, but save it as the last one of each type * after each successful execution of a job checkForEmptyCallQueue will check if there * are other jobs of that type that need execution and execute the last one thus From de9b8187fd0108a6044e6b4f57271989767dff91 Mon Sep 17 00:00:00 2001 From: Papick Garcia Taboada Date: Tue, 22 Sep 2015 10:08:54 +0200 Subject: [PATCH 322/504] Fix right side (buttons) min-width --- .../sap/sailing/gwt/regattaoverview/client/RegattaOverview.gss | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverview.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverview.gss index a6c4f097df3..714cc872837 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverview.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaOverview.gss @@ -57,6 +57,7 @@ body { background-color: #fff; padding: 2px 2px 5px 0px; text-align: right; + min-width: 170px; } .functionBarLeft { height: 80px; From 7234f6c9c634c65ed5958967009ba62559e9e85d Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Tue, 22 Sep 2015 10:29:09 +0200 Subject: [PATCH 323/504] Added backend polar presenter for datamining ui this resultspresenter allows looking at the polar data which is porvided by the polar data service. --- .../domain/polars/PolarDataService.java | 10 - .../presentation/TabbedResultsPresenter.java | 27 +-- .../PolarBackendResultsPresenter.java | 221 ++++++++++++++++++ .../ui/polarmining/PolarResultsPresenter.java | 14 +- .../META-INF/MANIFEST.MF | 3 +- .../datamining/shared/PolarBackendData.java | 27 +++ .../shared/PolarBackendDataImpl.java | 93 ++++++++ .../PolarsDataMiningSerializationDummy.java | 2 + .../META-INF/MANIFEST.MF | 3 +- .../Polars_StringMessages_de.properties | 3 +- .../Polars_StringMessages_en.properties | 3 +- .../sailing/polars/datamining/Activator.java | 2 + .../PolarGPSFixRetrievalProcessor.java | 2 +- .../PolarBackendDataAggregationProcessor.java | 123 ++++++++++ .../data/HasBackendPolarBoatClassContext.java | 7 + .../BoatClassWithBackendPolarContext.java | 10 + .../data/impl/GPSFixWithPolarContext.java | 1 - .../data/impl}/PolarStatisticImpl.java | 4 +- .../polars/impl/PolarDataServiceImpl.java | 6 - 19 files changed, 516 insertions(+), 45 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java create mode 100644 java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarBackendData.java create mode 100644 java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarBackendDataImpl.java create mode 100644 java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarBackendDataAggregationProcessor.java rename java/{com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared => com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl}/PolarStatisticImpl.java (96%) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polars/PolarDataService.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polars/PolarDataService.java index 4161db07d7d..4de45c1e63b 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polars/PolarDataService.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polars/PolarDataService.java @@ -93,16 +93,6 @@ public interface PolarDataService { */ void competitorPositionChanged(GPSFixMoving fix, Competitor competitor, TrackedRace createdTrackedRace); - /** - * Returns underlying datacount for a given boat class and windspeed. - * @param boatClass - * @param windSpeed - * @param startAngleInclusive between 0 and 359; smaller than (or equal to) endAngleExclusive - * @param endAngleExclusive between 0 and 359; bigger than startAngleInclusive - * @return array with datacount for all angles in the given area, else -1 - */ - int[] getDataCountsForWindSpeed(BoatClass boatClass, Speed windSpeed, int startAngleInclusive, int endAngleExclusive); - /** * From a boat's speed over ground and assuming values for boatClass, the tack the boat is * currently sailing on, and the legType, this method estimates the true wind speed candidates at which diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java index c24e4fe0d7c..944ff1cabda 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/TabbedResultsPresenter.java @@ -18,6 +18,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.controls.ScrolledTabLayoutPanel; import com.sap.sailing.gwt.ui.datamining.DataMiningResources; import com.sap.sailing.gwt.ui.datamining.ResultsPresenter; +import com.sap.sailing.gwt.ui.polarmining.PolarBackendResultsPresenter; import com.sap.sailing.gwt.ui.polarmining.PolarResultsPresenter; import com.sap.sse.common.settings.Settings; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; @@ -41,7 +42,7 @@ public class TabbedResultsPresenter implements ResultsPresenter { presentersMappedByHeader = new HashMap<>(); addNewTabTab(); - addTabAndFocus(); + addTabAndFocus(new MultiResultsPresenter(stringMessages)); } private void addNewTabTab() { @@ -54,7 +55,7 @@ public class TabbedResultsPresenter implements ResultsPresenter { public void onBeforeSelection(BeforeSelectionEvent event) { if (event.getItem() == tabPanel.getWidgetCount() - 1) { event.cancel(); - addTabAndFocus(); + addTabAndFocus(new MultiResultsPresenter(stringMessages)); } } }); @@ -64,12 +65,16 @@ public class TabbedResultsPresenter implements ResultsPresenter { public void showResult(QueryResultDTO result) { if (result.getResultType().equals("com.sap.sailing.polars.datamining.shared.PolarAggregation")) { CloseableTabHeader oldHeader = getSelectedHeader(); - addPolarTabAndFocus(); + addTabAndFocus(new PolarResultsPresenter(stringMessages)); + removeTab(oldHeader); + } else if (result.getResultType().equals("com.sap.sailing.polars.datamining.shared.PolarBackendData")) { + CloseableTabHeader oldHeader = getSelectedHeader(); + addTabAndFocus(new PolarBackendResultsPresenter(stringMessages)); removeTab(oldHeader); } else { if (!(getSelectedPresenter() instanceof MultiResultsPresenter)) { CloseableTabHeader oldHeader = getSelectedHeader(); - addTabAndFocus(); + addTabAndFocus(new MultiResultsPresenter(stringMessages)); removeTab(oldHeader); } } @@ -108,20 +113,8 @@ public class TabbedResultsPresenter implements ResultsPresenter { return presentersMappedByHeader.get(getSelectedHeader()); } - private void addTabAndFocus() { + private void addTabAndFocus(ResultsPresenter tabPresenter) { CloseableTabHeader tabHeader = new CloseableTabHeader(); - ResultsPresenter tabPresenter = new MultiResultsPresenter(stringMessages); - presentersMappedByHeader.put(tabHeader, tabPresenter); - - tabPanel.insert(tabPresenter.getEntryWidget(), tabHeader, tabPanel.getWidgetCount() - 1); - int presenterIndex = tabPanel.getWidgetIndex(tabPresenter.getEntryWidget()); - tabPanel.selectTab(presenterIndex); - tabPanel.scrollToTab(presenterIndex); - } - - private void addPolarTabAndFocus() { - CloseableTabHeader tabHeader = new CloseableTabHeader(); - ResultsPresenter tabPresenter = new PolarResultsPresenter(stringMessages); presentersMappedByHeader.put(tabHeader, tabPresenter); tabPanel.insert(tabPresenter.getEntryWidget(), tabHeader, tabPanel.getWidgetCount() - 1); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java new file mode 100644 index 00000000000..436b9aa7bd4 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java @@ -0,0 +1,221 @@ +package com.sap.sailing.gwt.ui.polarmining; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Map; + +import org.moxieapps.gwt.highcharts.client.Chart; +import org.moxieapps.gwt.highcharts.client.ChartSubtitle; +import org.moxieapps.gwt.highcharts.client.ChartTitle; +import org.moxieapps.gwt.highcharts.client.Exporting; +import org.moxieapps.gwt.highcharts.client.Series; +import org.moxieapps.gwt.highcharts.client.Series.Type; +import org.moxieapps.gwt.highcharts.client.plotOptions.LinePlotOptions; +import org.moxieapps.gwt.highcharts.client.plotOptions.Marker; + +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.user.client.Timer; +import com.google.gwt.user.client.ui.DockLayoutPanel; +import com.google.gwt.user.client.ui.SimpleLayoutPanel; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.datamining.presentation.AbstractResultsPresenter; +import com.sap.sailing.polars.datamining.shared.PolarBackendData; +import com.sap.sse.common.settings.Settings; +import com.sap.sse.common.util.NaturalComparator; +import com.sap.sse.datamining.shared.GroupKey; +import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; +import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; + + +public class PolarBackendResultsPresenter extends AbstractResultsPresenter { + + private final DockLayoutPanel dockLayoutPanel; + + private final Chart polarChart; + private final SimpleLayoutPanel polarChartWrapperPanel; + + private final Chart speedChart; + private final Chart angleChart; + private final DockLayoutPanel speedAndAngleChart; + + public PolarBackendResultsPresenter(StringMessages stringMessages) { + super(stringMessages); + + polarChart = createPolarChart(); + polarChartWrapperPanel = new SimpleLayoutPanel() { + @Override + public void onResize() { + polarChart.setSizeToMatchContainer(); + polarChart.redraw(); + } + }; + polarChartWrapperPanel.add(polarChart); + + speedChart = createSpeedChart(); + angleChart = createAngleChart(); + speedAndAngleChart = new DockLayoutPanel(Unit.PCT) { + @Override + public void onResize() { + speedChart.setSizeToMatchContainer(); + speedChart.redraw(); + angleChart.setSizeToMatchContainer(); + angleChart.redraw(); + } + }; + speedAndAngleChart.addNorth(speedChart, 50); + speedAndAngleChart.addSouth(angleChart, 50); + + dockLayoutPanel = new DockLayoutPanel(Unit.PCT); + dockLayoutPanel.addWest(polarChartWrapperPanel, 40); + dockLayoutPanel.addEast(speedAndAngleChart, 60); + } + + + private Chart createSpeedChart() { + Chart speedChart = new Chart().setType(Type.LINE).setHeight100().setWidth100(); + speedChart.setTitle(new ChartTitle().setText(""), new ChartSubtitle().setText("")); + speedChart.setExporting(new Exporting().setEnabled(false)); + return speedChart; + } + + private Chart createAngleChart() { + Chart speedChart = new Chart().setType(Type.LINE).setHeight100().setWidth100(); + speedChart.setTitle(new ChartTitle().setText(""), new ChartSubtitle().setText("")); + speedChart.setExporting(new Exporting().setEnabled(false)); + return speedChart; + } + + private Chart createPolarChart() { + LinePlotOptions linePlotOptions = new LinePlotOptions().setLineWidth(1).setMarker(new Marker().setEnabled(false)); + Chart polarSheetChart = new Chart().setType(Series.Type.LINE) + .setLinePlotOptions(linePlotOptions) + .setPolar(true).setHeight100().setWidth100(); + polarSheetChart.setTitle(new ChartTitle().setText(""), new ChartSubtitle().setText("")); + polarSheetChart.getYAxis().setMin(0); + polarSheetChart.getXAxis().setMin(-179).setMax(180).setTickInterval(45); + polarSheetChart.setOption("/pane/startAngle", 180); + polarSheetChart.setExporting(new Exporting().setEnabled(false)); + return polarSheetChart; + } + + @Override + protected Widget getPresentationWidget() { + return dockLayoutPanel; + } + + @Override + protected void onDataSelectionValueChange() { + // TODO Auto-generated method stub + + } + + @Override + protected void internalShowResults(QueryResultDTO result) { + Map results = result.getResults(); + List sortedNaturally = new ArrayList(results.keySet()); + Collections.sort(sortedNaturally, new Comparator() { + @Override + public int compare(GroupKey o1, GroupKey o2) { + Comparator naturalComparator = new NaturalComparator(); + return naturalComparator.compare(o1.asString(), o2.asString()); + } + }); + for (GroupKey key : sortedNaturally) { + PolarBackendData aggregation = (PolarBackendData) results.get(key); + if (aggregation.hasUpwindSpeedData()) { + Series upwindSpeedSeries = speedChart.createSeries(); + upwindSpeedSeries.setName(key.asString() + "-" + stringMessages.upWind()); + double[] upwindSpeedOverWindSpeed = aggregation.getUpwindSpeedOverWindSpeed(); + for (int i = 0; i < 30; i++) { + upwindSpeedSeries.addPoint(i, upwindSpeedOverWindSpeed[i], false, false, false); + + } + speedChart.addSeries(upwindSpeedSeries, false, false); + } + if (aggregation.hasDownwindSpeedData()) { + Series downwindSpeedSeries = speedChart.createSeries(); + downwindSpeedSeries.setName(key.asString() + "-" + stringMessages.downWind()); + double[] downwindSpeedOverWindSpeed = aggregation.getDownwindSpeedOverWindSpeed(); + for (int i = 0; i < 30; i++) { + downwindSpeedSeries.addPoint(i, downwindSpeedOverWindSpeed[i], false, false, false); + + } + speedChart.addSeries(downwindSpeedSeries, false, false); + } + speedChart.redraw(); + if (aggregation.hasUpwindAngleData()) { + Series upwindAngleSeries = speedChart.createSeries(); + upwindAngleSeries.setName(key.asString() + "-" + stringMessages.upWind()); + double[] upwindAngleOverWindSpeed = aggregation.getUpwindAngleOverWindSpeed(); + for (int i = 0; i < 30; i++) { + upwindAngleSeries.addPoint(i, upwindAngleOverWindSpeed[i], false, false, false); + + } + angleChart.addSeries(upwindAngleSeries, false, false); + } + if (aggregation.hasDownwindAngleData()) { + Series downwindAngleSeries = speedChart.createSeries(); + downwindAngleSeries.setName(key.asString() + "-" + stringMessages.downWind()); + double[] downwindAngleOverWindSpeed = aggregation.getDownwindAngleOverWindSpeed(); + for (int i = 0; i < 30; i++) { + downwindAngleSeries.addPoint(i, downwindAngleOverWindSpeed[i], false, false, false); + + } + angleChart.addSeries(downwindAngleSeries, false, false); + } + angleChart.redraw(); + boolean[] hasDataForAngle = aggregation.getDataForAngleBooleanArray(); + for (int i = 5; i < 30; i = i + 3) { + Series polarSeries = polarChart.createSeries(); + polarSeries.setName(key.asString() + "-" + i + "kn"); + double[][] data = aggregation.getPolarDataPerWindspeedAndAngle(); + for (int j = 0; j < 360; j++) { + int convertedAngle = j > 180 ? j - 360 : j ; + polarSeries.addPoint(convertedAngle, hasDataForAngle[j] ? data[j][i] : 0, false, false, false); + } + polarChart.addSeries(polarSeries, false, false); + } + polarChart.redraw(); + + } + //Initially resize the chart. Otherwise it's too big. FIXME with a better solution + Timer timer = new Timer() { + + @Override + public void run() { + polarChart.setSizeToMatchContainer(); + speedChart.setSizeToMatchContainer(); + angleChart.setSizeToMatchContainer(); + } + }; + timer.schedule(200); + } + + @Override + public String getLocalizedShortName() { + return getStringMessages().polarResultsPresenter(); + } + + @Override + public boolean hasSettings() { + return false; + } + + @Override + public SettingsDialogComponent getSettingsDialogComponent() { + return null; + } + + @Override + public void updateSettings(Settings newSettings) { + } + + @Override + public String getDependentCssClassName() { + return "polarResultsPresenter"; + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java index 373c82f889e..d600ee13a45 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java @@ -57,24 +57,28 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { super(stringMessages); polarChart = createPolarChart(); - dataCountHistogramChart = createDataCountHistogramChart(); polarChartWrapperPanel = new SimpleLayoutPanel() { @Override public void onResize() { polarChart.setSizeToMatchContainer(); polarChart.redraw(); - dataCountHistogramChart.setSizeToMatchContainer(); - dataCountHistogramChart.redraw(); } }; polarChartWrapperPanel.add(polarChart); - dataCountHistogramChartWrapperPanel = new SimpleLayoutPanel(); + dataCountHistogramChart = createDataCountHistogramChart(); + dataCountHistogramChartWrapperPanel = new SimpleLayoutPanel() { + @Override + public void onResize() { + dataCountHistogramChart.setSizeToMatchContainer(); + dataCountHistogramChart.redraw(); + } + }; dataCountHistogramChartWrapperPanel.add(dataCountHistogramChart); dockLayoutPanel = new DockLayoutPanel(Unit.PCT); dockLayoutPanel.addWest(polarChartWrapperPanel, 40); - dockLayoutPanel.addEast(dataCountHistogramChart, 60); + dockLayoutPanel.addEast(dataCountHistogramChartWrapperPanel, 60); setSeriesShowAndHideHandler(); } diff --git a/java/com.sap.sailing.polars.datamining.shared/META-INF/MANIFEST.MF b/java/com.sap.sailing.polars.datamining.shared/META-INF/MANIFEST.MF index db7f2544eb9..04385f072ea 100644 --- a/java/com.sap.sailing.polars.datamining.shared/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.polars.datamining.shared/META-INF/MANIFEST.MF @@ -11,5 +11,6 @@ Require-Bundle: com.sap.sse.datamining.shared, com.sap.sailing.domain.common, com.sap.sailing.domain;bundle-version="1.0.0", com.sap.sse;bundle-version="1.0.0", - com.sap.sse.common;bundle-version="1.0.0" + com.sap.sse.common;bundle-version="1.0.0", + com.sap.sse.datamining.annotations Export-Package: com.sap.sailing.polars.datamining.shared diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarBackendData.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarBackendData.java new file mode 100644 index 00000000000..5c87f3e379b --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarBackendData.java @@ -0,0 +1,27 @@ +package com.sap.sailing.polars.datamining.shared; + +import java.io.Serializable; + +public interface PolarBackendData extends Serializable { + + boolean hasUpwindSpeedData(); + + double[] getUpwindSpeedOverWindSpeed(); + + boolean hasDownwindSpeedData(); + + double[] getDownwindSpeedOverWindSpeed(); + + boolean hasUpwindAngleData(); + + double[] getUpwindAngleOverWindSpeed(); + + boolean hasDownwindAngleData(); + + double[] getDownwindAngleOverWindSpeed(); + + double[][] getPolarDataPerWindspeedAndAngle(); + + boolean[] getDataForAngleBooleanArray(); + +} diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarBackendDataImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarBackendDataImpl.java new file mode 100644 index 00000000000..75df1f1790a --- /dev/null +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarBackendDataImpl.java @@ -0,0 +1,93 @@ +package com.sap.sailing.polars.datamining.shared; + + +public class PolarBackendDataImpl implements PolarBackendData { + + private static final long serialVersionUID = 2371091679485624074L; + + private boolean hasUpwindSpeedData; + private double[] upwindBoatSpeedOverWindSpeed; + + private boolean hasDownwindSpeedData; + private double[] downwindBoatSpeedOverWindSpeed; + + private boolean hasUpwindAngleData; + private double[] upwindBoatAngleOverWindSpeed; + + private boolean hasDownwindAngleData; + private double[] downwindBoatAngleOverWindSpeed; + + private boolean[] hasDataForAngle; + private double[][] speedPerAnglePerWindSpeed; + + public PolarBackendDataImpl() { + //GWT + } + + public PolarBackendDataImpl(boolean hasUpwindSpeedData, double[] upwindBoatSpeedOverWindSpeed, + boolean hasDownwindSpeedData, double[] downwindBoatSpeedOverWindSpeed, boolean hasUpwindAngleData, + double[] upwindBoatAngleOverWindSpeed, boolean hasDownwindAngleData, + double[] downwindBoatAngleOverWindSpeed, boolean[] hasDataForAngle, double[][] speedPerAnglePerWindSpeed) { + this.hasUpwindSpeedData = hasUpwindSpeedData; + this.upwindBoatSpeedOverWindSpeed = upwindBoatSpeedOverWindSpeed; + this.hasDownwindSpeedData = hasDownwindSpeedData; + this.downwindBoatSpeedOverWindSpeed = downwindBoatSpeedOverWindSpeed; + this.hasUpwindAngleData = hasUpwindAngleData; + this.upwindBoatAngleOverWindSpeed = upwindBoatAngleOverWindSpeed; + this.hasDownwindAngleData = hasDownwindAngleData; + this.downwindBoatAngleOverWindSpeed = downwindBoatAngleOverWindSpeed; + this.hasDataForAngle = hasDataForAngle; + this.speedPerAnglePerWindSpeed = speedPerAnglePerWindSpeed; + } + + @Override + public boolean hasUpwindSpeedData() { + return hasUpwindSpeedData; + } + + @Override + public double[] getUpwindSpeedOverWindSpeed() { + return upwindBoatSpeedOverWindSpeed; + } + + @Override + public boolean hasDownwindSpeedData() { + return hasDownwindSpeedData; + } + + @Override + public double[] getDownwindSpeedOverWindSpeed() { + return downwindBoatSpeedOverWindSpeed; + } + + @Override + public boolean hasUpwindAngleData() { + return hasUpwindAngleData; + } + + @Override + public double[] getUpwindAngleOverWindSpeed() { + return upwindBoatAngleOverWindSpeed; + } + + @Override + public boolean hasDownwindAngleData() { + return hasDownwindAngleData; + } + + @Override + public double[] getDownwindAngleOverWindSpeed() { + return downwindBoatAngleOverWindSpeed; + } + + @Override + public double[][] getPolarDataPerWindspeedAndAngle() { + return speedPerAnglePerWindSpeed; + } + + @Override + public boolean[] getDataForAngleBooleanArray() { + return hasDataForAngle; + } + +} diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java index b95c225e298..3b09be4c126 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java @@ -8,6 +8,8 @@ public final class PolarsDataMiningSerializationDummy implements SerializationDu private PolarAggregation polarAggregation; private PolarAggregationImpl polarAggregationImpl; + private PolarBackendData polarBackendAggregation; + private PolarBackendDataImpl polarBackendAggregationImpl; private Boolean itsABoolean; private PolarsDataMiningSerializationDummy() { } diff --git a/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF b/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF index 98c4e43c32a..e7534a74a49 100644 --- a/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF @@ -17,7 +17,8 @@ Require-Bundle: org.eclipse.osgi;bundle-version="3.10.1", com.sap.sailing.domain.shared.android, com.sap.sailing.domain.common;bundle-version="1.0.0", com.sap.sailing.polars;bundle-version="1.0.0", - com.sap.sailing.polars.datamining.shared + com.sap.sailing.polars.datamining.shared, + org.apache.commons.math Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Export-Package: com.sap.sailing.polars.datamining.data, diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties index 0e75fa4447e..c2ba45e114d 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_de.properties @@ -7,4 +7,5 @@ Polars=Polare GPSFix=GPS Fix WindRange=Wind Bereich WindIsConfident=konfidente Windmessung -Rank=Rang \ No newline at end of file +Rank=Rang +BackendPolars=Backend Polare \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties index 384ba93c3bd..459a0f4fc4a 100644 --- a/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties +++ b/java/com.sap.sailing.polars.datamining/resources/stringmessages/Polars_StringMessages_en.properties @@ -7,4 +7,5 @@ Polars=Polars GPSFix=GPS Fix WindRange=Wind Range WindIsConfident=Confident Wind Measurement -Rank=Rank \ No newline at end of file +Rank=Rank +BackendPolars=Backend Polars \ No newline at end of file diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java index e1962a69778..786fdfeea30 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java @@ -7,6 +7,7 @@ import java.util.Set; import org.osgi.framework.BundleContext; import com.sap.sailing.datamining.RacingEventServiceProvider; +import com.sap.sailing.polars.datamining.components.aggregators.PolarBackendDataAggregationProcessor; import com.sap.sailing.polars.datamining.components.aggregators.PolarDataAggregationProcessor; import com.sap.sailing.polars.datamining.data.HasBackendPolarBoatClassContext; import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; @@ -99,6 +100,7 @@ public class Activator extends AbstractDataMiningActivator implements DataMining public Iterable> getAggregationProcessorDefinitions() { HashSet> aggregators = new HashSet<>(); aggregators.add(PolarDataAggregationProcessor.getDefinition()); + aggregators.add(PolarBackendDataAggregationProcessor.getDefinition()); return aggregators; } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java index 0882aef3f18..1d69eafa73a 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java @@ -18,9 +18,9 @@ import com.sap.sailing.domain.tracking.WindWithConfidence; import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; import com.sap.sailing.polars.datamining.data.HasGPSFixPolarContext; import com.sap.sailing.polars.datamining.data.impl.GPSFixWithPolarContext; +import com.sap.sailing.polars.datamining.data.impl.PolarStatisticImpl; import com.sap.sailing.polars.datamining.data.impl.SpeedClusterGroup; import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; -import com.sap.sailing.polars.datamining.shared.PolarStatisticImpl; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Pair; import com.sap.sse.datamining.components.Processor; diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarBackendDataAggregationProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarBackendDataAggregationProcessor.java new file mode 100644 index 00000000000..d3cbd54931e --- /dev/null +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarBackendDataAggregationProcessor.java @@ -0,0 +1,123 @@ +package com.sap.sailing.polars.datamining.components.aggregators; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutorService; + +import org.apache.commons.math.analysis.polynomials.PolynomialFunction; + +import com.sap.sailing.domain.base.BoatClass; +import com.sap.sailing.domain.base.SpeedWithConfidence; +import com.sap.sailing.domain.common.LegType; +import com.sap.sailing.domain.common.impl.DegreeBearingImpl; +import com.sap.sailing.domain.common.impl.KnotSpeedImpl; +import com.sap.sailing.domain.polars.NotEnoughDataHasBeenAddedException; +import com.sap.sailing.domain.polars.PolarDataService; +import com.sap.sailing.polars.datamining.data.HasBackendPolarBoatClassContext; +import com.sap.sailing.polars.datamining.shared.PolarBackendData; +import com.sap.sailing.polars.datamining.shared.PolarBackendDataImpl; +import com.sap.sse.datamining.components.AggregationProcessorDefinition; +import com.sap.sse.datamining.components.Processor; +import com.sap.sse.datamining.impl.components.GroupedDataEntry; +import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefinition; +import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelGroupedDataAggregationProcessor; +import com.sap.sse.datamining.shared.GroupKey; + +public class PolarBackendDataAggregationProcessor extends AbstractParallelGroupedDataAggregationProcessor { + + private static final String POLARS_MESSAGE_KEY = "Polars"; + private final Map resultMap = new HashMap<>(); + + public PolarBackendDataAggregationProcessor(ExecutorService executor, + Collection, ?>> resultReceivers) { + super(executor, resultReceivers, POLARS_MESSAGE_KEY); + } + + private static final AggregationProcessorDefinition DEFINITION = + new SimpleAggregationProcessorDefinition<>(HasBackendPolarBoatClassContext.class, PolarBackendData.class, POLARS_MESSAGE_KEY, PolarBackendDataAggregationProcessor.class); + + public static AggregationProcessorDefinition getDefinition() { + return DEFINITION; + } + + @Override + protected void handleElement(GroupedDataEntry element) { + PolarBackendData polarAggregation = createPolarBackendAggregation(element.getDataEntry()); + resultMap.put(element.getKey(), polarAggregation); + } + + private PolarBackendData createPolarBackendAggregation(HasBackendPolarBoatClassContext dataEntry) { + boolean hasUpwindSpeedData = true; + double[] upwindBoatSpeedOverWindSpeed = new double[30]; + + boolean hasDownwindSpeedData = true; + double[] downwindBoatSpeedOverWindSpeed = new double[30]; + + boolean hasUpwindAngleData = true; + double[] upwindBoatAngleOverWindSpeed = new double[30]; + + boolean hasDownwindAngleData = true; + double[] downwindBoatAngleOverWindSpeed = new double[30]; + + boolean[] hasDataForAngle = new boolean[360]; + double[][] speedPerAnglePerWindSpeed = new double[360][30]; + + PolarDataService polarDataService = dataEntry.getPolarDataService(); + BoatClass boatClass = dataEntry.getBoatClass(); + try { + PolynomialFunction upwind = polarDataService.getSpeedRegressionFunction(boatClass, LegType.UPWIND); + setArrayValuesForFunction(upwind, upwindBoatSpeedOverWindSpeed); + } catch (NotEnoughDataHasBeenAddedException e) { + hasUpwindSpeedData = false; + } + try { + PolynomialFunction downwind = polarDataService.getSpeedRegressionFunction(boatClass, LegType.DOWNWIND); + setArrayValuesForFunction(downwind, downwindBoatSpeedOverWindSpeed); + } catch (NotEnoughDataHasBeenAddedException e) { + hasDownwindSpeedData = false; + } + try { + PolynomialFunction upwind = polarDataService.getAngleRegressionFunction(boatClass, LegType.UPWIND); + setArrayValuesForFunction(upwind, upwindBoatAngleOverWindSpeed); + } catch (NotEnoughDataHasBeenAddedException e) { + hasUpwindAngleData = false; + } + try { + PolynomialFunction downwind = polarDataService.getAngleRegressionFunction(boatClass, LegType.DOWNWIND); + setArrayValuesForFunction(downwind, downwindBoatAngleOverWindSpeed); + } catch (NotEnoughDataHasBeenAddedException e) { + hasDownwindAngleData = false; + } + for (int angleInDeg = 0; angleInDeg < 360; angleInDeg++) { + int convertedAngle = angleInDeg > 180 ? angleInDeg - 360 : angleInDeg ; + try { + for (int x = 0; x < 30; x++) { + SpeedWithConfidence speed = polarDataService.getSpeed(boatClass, new KnotSpeedImpl(x), new DegreeBearingImpl(convertedAngle)); + if (speed.getConfidence() > 0.1) { + hasDataForAngle[angleInDeg] = true; + } else { + hasDataForAngle[angleInDeg] = false; + } + speedPerAnglePerWindSpeed[angleInDeg][x] = speed.getObject().getKnots(); + } + } catch (NotEnoughDataHasBeenAddedException e) { + hasDataForAngle[angleInDeg] = false; + } + } + return new PolarBackendDataImpl(hasUpwindSpeedData, upwindBoatSpeedOverWindSpeed, hasDownwindSpeedData, downwindBoatSpeedOverWindSpeed, hasUpwindAngleData, + upwindBoatAngleOverWindSpeed, hasDownwindAngleData, downwindBoatAngleOverWindSpeed, hasDataForAngle, speedPerAnglePerWindSpeed); + } + + @Override + protected Map getResult() { + return resultMap; + } + + private void setArrayValuesForFunction(PolynomialFunction function, double[] yOverWindSpeed) { + for (int x = 0; x < 30; x++) { + yOverWindSpeed[x] = function.value(x); + } + } + +} diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasBackendPolarBoatClassContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasBackendPolarBoatClassContext.java index 12ee457b49d..4b0e606c9f4 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasBackendPolarBoatClassContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasBackendPolarBoatClassContext.java @@ -1,11 +1,18 @@ package com.sap.sailing.polars.datamining.data; import com.sap.sailing.domain.base.BoatClass; +import com.sap.sailing.domain.polars.PolarDataService; import com.sap.sse.datamining.annotations.Connector; +import com.sap.sse.datamining.annotations.Statistic; public interface HasBackendPolarBoatClassContext { @Connector BoatClass getBoatClass(); + PolarDataService getPolarDataService(); + + @Statistic(messageKey="BackendPolars") + HasBackendPolarBoatClassContext getBackendPolarBoatClassContext(); + } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/BoatClassWithBackendPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/BoatClassWithBackendPolarContext.java index ee87a8a0ac7..96313214012 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/BoatClassWithBackendPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/BoatClassWithBackendPolarContext.java @@ -19,4 +19,14 @@ public class BoatClassWithBackendPolarContext implements HasBackendPolarBoatClas return boatClass; } + @Override + public PolarDataService getPolarDataService() { + return polarDataService; + } + + @Override + public HasBackendPolarBoatClassContext getBackendPolarBoatClassContext() { + return this; + } + } diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java index 4968eaa466b..642b8fae873 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/GPSFixWithPolarContext.java @@ -10,7 +10,6 @@ import com.sap.sailing.polars.datamining.data.HasCompetitorPolarContext; import com.sap.sailing.polars.datamining.data.HasGPSFixPolarContext; import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; import com.sap.sailing.polars.datamining.shared.PolarStatistic; -import com.sap.sailing.polars.datamining.shared.PolarStatisticImpl; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Pair; import com.sap.sse.datamining.data.ClusterGroup; diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/PolarStatisticImpl.java similarity index 96% rename from java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java rename to java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/PolarStatisticImpl.java index ce9730da498..fe702bde421 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarStatisticImpl.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/PolarStatisticImpl.java @@ -1,4 +1,4 @@ -package com.sap.sailing.polars.datamining.shared; +package com.sap.sailing.polars.datamining.data.impl; import java.util.HashSet; import java.util.Set; @@ -14,6 +14,8 @@ import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; +import com.sap.sailing.polars.datamining.shared.PolarStatistic; public class PolarStatisticImpl implements PolarStatistic { diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java index 7b521a09a87..c88612c6323 100755 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java @@ -167,12 +167,6 @@ public class PolarDataServiceImpl implements PolarDataService, polarDataMiner.addFix(fix, competitor, createdTrackedRace); } - @Override - public int[] getDataCountsForWindSpeed(BoatClass boatClass, Speed windSpeed, int startAngleInclusive, - int endAngleExclusive) { - return polarDataMiner.getDataCountsForWindSpeed(boatClass, windSpeed, startAngleInclusive, endAngleExclusive); - } - @Override public double getConfidenceForTackJibeSpeedRatio(Speed intoTackSpeed, Speed intoJibeSpeed, BoatClass boatClass) { return Math.min(1., 0.5 * intoJibeSpeed.getKnots() / intoTackSpeed.getKnots()); From 1e04332e89f769688dcfda25d9c8c7bb2ff68072 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Tue, 22 Sep 2015 10:39:15 +0200 Subject: [PATCH 324/504] Show only 11kn series in polar chart in polar backend results --- .../ui/polarmining/PolarBackendResultsPresenter.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java index 436b9aa7bd4..86226c448a9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java @@ -3,8 +3,10 @@ package com.sap.sailing.gwt.ui.polarmining; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.moxieapps.gwt.highcharts.client.Chart; import org.moxieapps.gwt.highcharts.client.ChartSubtitle; @@ -114,6 +116,7 @@ public class PolarBackendResultsPresenter extends AbstractResultsPresenter result) { + final Set seriesToHideAfterRendering = new HashSet<>(); Map results = result.getResults(); List sortedNaturally = new ArrayList(results.keySet()); Collections.sort(sortedNaturally, new Comparator() { @@ -176,6 +179,9 @@ public class PolarBackendResultsPresenter extends AbstractResultsPresenter 180 ? j - 360 : j ; polarSeries.addPoint(convertedAngle, hasDataForAngle[j] ? data[j][i] : 0, false, false, false); } + if (i!=11) { + seriesToHideAfterRendering.add(polarSeries); + } polarChart.addSeries(polarSeries, false, false); } polarChart.redraw(); @@ -189,6 +195,10 @@ public class PolarBackendResultsPresenter extends AbstractResultsPresenter Date: Tue, 22 Sep 2015 12:47:47 +0200 Subject: [PATCH 325/504] added hint on new scoring scheme and admin console panel changes to release notes --- java/com.sap.sailing.www/release_notes_admin.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/java/com.sap.sailing.www/release_notes_admin.html b/java/com.sap.sailing.www/release_notes_admin.html index a50b6338956..40fd5f7408f 100644 --- a/java/com.sap.sailing.www/release_notes_admin.html +++ b/java/com.sap.sailing.www/release_notes_admin.html @@ -25,6 +25,15 @@

Release Notes - Administration Console

+

September 2015

+
    +
  • A new scoring scheme for elimination rounds has been added. It will first be used + at a major wind surfing event. +
  • +
  • The "Device Configuration" tab has been moved into a new top-level tab + "Race Committee App". +
  • +

August 2015

  • Race log tracking now allows administrators to set the start and end of tracking for a race. From 55270b662347d540036e8303b2fb59f55ba1a9e5 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 22 Sep 2015 12:51:29 +0200 Subject: [PATCH 326/504] Minor change of the AbstractDataMiningActivator --- .../src/com/sap/sailing/datamining/Activator.java | 8 +------- .../src/com/sap/sailing/polars/datamining/Activator.java | 8 +------- .../sse/datamining/impl/AbstractDataMiningActivator.java | 6 ++---- 3 files changed, 4 insertions(+), 18 deletions(-) diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java index 0d36246b0e1..570813f613c 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/Activator.java @@ -22,7 +22,6 @@ import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceMe import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceMinAggregationProcessor; import com.sap.sailing.datamining.impl.components.aggregators.ParallelDistanceSumAggregationProcessor; import com.sap.sailing.domain.common.Speed; -import com.sap.sse.datamining.DataMiningBundleService; import com.sap.sse.datamining.DataSourceProvider; import com.sap.sse.datamining.components.AggregationProcessorDefinition; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; @@ -31,7 +30,7 @@ import com.sap.sse.datamining.impl.AbstractDataMiningActivator; import com.sap.sse.i18n.ResourceBundleStringMessages; import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl; -public class Activator extends AbstractDataMiningActivator implements DataMiningBundleService { +public class Activator extends AbstractDataMiningActivator { private static final String STRING_MESSAGES_BASE_NAME = "stringmessages/Sailing_StringMessages"; private static final SailingClusterGroups clusterGroups = new SailingClusterGroups(); @@ -65,11 +64,6 @@ public class Activator extends AbstractDataMiningActivator implements DataMining super.stop(context); } - @Override - protected DataMiningBundleService getDataMiningBundleService() { - return this; - } - @Override public ResourceBundleStringMessages getStringMessages() { return sailingServerStringMessages; diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java index fc56014ac4d..c39dd229f1b 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java @@ -15,7 +15,6 @@ import com.sap.sailing.polars.datamining.data.HasLeaderboardGroupPolarContext; import com.sap.sailing.polars.datamining.data.HasLeaderboardPolarContext; import com.sap.sailing.polars.datamining.data.HasLegPolarContext; import com.sap.sailing.polars.datamining.data.HasRaceColumnPolarContext; -import com.sap.sse.datamining.DataMiningBundleService; import com.sap.sse.datamining.DataSourceProvider; import com.sap.sse.datamining.components.AggregationProcessorDefinition; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; @@ -23,7 +22,7 @@ import com.sap.sse.datamining.impl.AbstractDataMiningActivator; import com.sap.sse.i18n.ResourceBundleStringMessages; import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl; -public class Activator extends AbstractDataMiningActivator implements DataMiningBundleService { +public class Activator extends AbstractDataMiningActivator { private static final String STRING_MESSAGES_BASE_NAME = "stringmessages/Polars_StringMessages"; @@ -56,11 +55,6 @@ public class Activator extends AbstractDataMiningActivator implements DataMining super.stop(context); } - @Override - protected DataMiningBundleService getDataMiningBundleService() { - return this; - } - @Override public ResourceBundleStringMessages getStringMessages() { return sailingServerStringMessages; diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/AbstractDataMiningActivator.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/AbstractDataMiningActivator.java index 58d4f1a8596..cc8a066590e 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/AbstractDataMiningActivator.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/AbstractDataMiningActivator.java @@ -6,17 +6,15 @@ import org.osgi.framework.ServiceReference; import com.sap.sse.datamining.DataMiningBundleService; -public abstract class AbstractDataMiningActivator implements BundleActivator { +public abstract class AbstractDataMiningActivator implements BundleActivator, DataMiningBundleService { private ServiceReference dataMiningBundleServiceReference; @Override public void start(BundleContext context) throws Exception { - dataMiningBundleServiceReference = context.registerService(DataMiningBundleService.class, getDataMiningBundleService(), null).getReference(); + dataMiningBundleServiceReference = context.registerService(DataMiningBundleService.class, this, null).getReference(); } - protected abstract DataMiningBundleService getDataMiningBundleService(); - @Override public void stop(BundleContext context) throws Exception { context.ungetService(dataMiningBundleServiceReference); From 66dafc032906d7f162c52f6357d98b86357a96a3 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 22 Sep 2015 13:07:53 +0200 Subject: [PATCH 327/504] Adjusted calculation of competitor statistics for race competition format --- .../RaceCompetitionFormatDataCalculator.java | 11 ++++++-- .../dispatch/event/SimpleCompetitorDTO.java | 25 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java index 66e87b8aa8c..4401472e710 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatDataCalculator.java @@ -41,14 +41,21 @@ public class RaceCompetitionFormatDataCalculator implements RaceCallback { for (Entry> seriesData : dataPerSeriesAndFleet.entrySet()) { RaceCompetitionFormatSeriesDTO series = new RaceCompetitionFormatSeriesDTO(seriesData.getKey()); Set competitorsForSeries = new HashSet<>(); + int sumOfSeparatCompetitorsInFleets = 0; for (Entry fleetData : seriesData.getValue().entrySet()) { competitorsForSeries.addAll(fleetData.getValue().competitors); - int competitorCountForFleet = fleetData.getValue().competitors.size(); + sumOfSeparatCompetitorsInFleets += fleetData.getValue().competitors.size(); + } + series.setCompetitorCount(competitorsForSeries.size()); + // if competitors change the fleets race by race, they can't be associated to a single fleet + // Therefore, the competitors by fleet statistic will be hidden to avoid confusing information + boolean showCompetitorCountForFleet = series.getCompetitorCount() == sumOfSeparatCompetitorsInFleets; + for (Entry fleetData : seriesData.getValue().entrySet()) { + int competitorCountForFleet = showCompetitorCountForFleet ? fleetData.getValue().competitors.size() : 0; RaceCompetitionFormatFleetDTO fleet = new RaceCompetitionFormatFleetDTO(fleetData.getKey(), competitorCountForFleet); fleet.addRaces(fleetData.getValue().races); series.addFleet(fleet); } - series.setCompetitorCount(competitorsForSeries.size()); result.add(series); } return result; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/SimpleCompetitorDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/SimpleCompetitorDTO.java index bfffd5de208..22026fac877 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/SimpleCompetitorDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/SimpleCompetitorDTO.java @@ -68,5 +68,30 @@ public class SimpleCompetitorDTO extends NamedDTO implements Serializable { public void setFlagImageURL(String flagImageURL) { this.flagImageURL = flagImageURL; } + + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + ((sailID == null) ? 0 : sailID.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!super.equals(obj)) + return false; + if (getClass() != obj.getClass()) + return false; + SimpleCompetitorDTO other = (SimpleCompetitorDTO) obj; + if (sailID == null) { + if (other.sailID != null) + return false; + } else if (!sailID.equals(other.sailID)) + return false; + return true; + } } From e82ed7614782ba3dd6d4cdb095bc4f3f84c6292d Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 22 Sep 2015 13:08:49 +0200 Subject: [PATCH 328/504] Activated option to races in competition format --- .../com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java index f8e3e6a8c9b..a3869602e27 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/ExperimentalFeatures.java @@ -12,7 +12,7 @@ public class ExperimentalFeatures { /** * Provide option to show races in competition format */ - public static final boolean SHOW_RACES_COMPETITION_FORMAT = false; + public static final boolean SHOW_RACES_COMPETITION_FORMAT = true; /** * Provide option to show the overview for regattas in multi regatta events and a navigation * to the races view (competition format) for single regatta and series events on mobile devices From 386853da09b4a221b764b3e5b4a283e41c8e3199 Mon Sep 17 00:00:00 2001 From: EC2 Server Date: Tue, 22 Sep 2015 11:09:34 +0000 Subject: [PATCH 329/504] added magnetic declinations for 2016 --- .../resources/declination-2016 | 64261 ++++++++++++++++ 1 file changed, 64261 insertions(+) create mode 100644 java/com.sap.sailing.declination/resources/declination-2016 diff --git a/java/com.sap.sailing.declination/resources/declination-2016 b/java/com.sap.sailing.declination/resources/declination-2016 new file mode 100644 index 00000000000..4dc6041cfbf --- /dev/null +++ b/java/com.sap.sailing.declination/resources/declination-2016 @@ -0,0 +1,64261 @@ +2016-07-01|0.0|0.0|-5.27062|0.12411 +2016-07-01|0.0|1.0|-4.92496|0.12507 +2016-07-01|0.0|2.0|-4.58567|0.12607 +2016-07-01|0.0|3.0|-4.25237|0.12709 +2016-07-01|0.0|4.0|-3.92472|0.12814 +2016-07-01|0.0|5.0|-3.60241|0.12918 +2016-07-01|0.0|6.0|-3.2852|0.13021 +2016-07-01|0.0|7.0|-2.97292|0.13121 +2016-07-01|0.0|8.0|-2.6655|0.13214 +2016-07-01|0.0|9.0|-2.36297|0.13299 +2016-07-01|0.0|10.0|-2.0655|0.13373 +2016-07-01|0.0|11.0|-1.77337|0.13431 +2016-07-01|0.0|12.0|-1.48702|0.1347 +2016-07-01|0.0|13.0|-1.20701|0.13488 +2016-07-01|0.0|14.0|-0.93407|0.13479 +2016-07-01|0.0|15.0|-0.66905|0.13441 +2016-07-01|0.0|16.0|-0.41294|0.13369 +2016-07-01|0.0|17.0|-0.16686|0.13261 +2016-07-01|0.0|18.0|0.06798|0.13113 +2016-07-01|0.0|19.0|0.29028|0.12923 +2016-07-01|0.0|20.0|0.49865|0.12688 +2016-07-01|0.0|21.0|0.6917|0.12408 +2016-07-01|0.0|22.0|0.86801|0.12082 +2016-07-01|0.0|23.0|1.02619|0.1171 +2016-07-01|0.0|24.0|1.1649|0.11293 +2016-07-01|0.0|25.0|1.28288|0.10834 +2016-07-01|0.0|26.0|1.37902|0.10334 +2016-07-01|0.0|27.0|1.45233|0.09799 +2016-07-01|0.0|28.0|1.50201|0.09232 +2016-07-01|0.0|29.0|1.52747|0.08639 +2016-07-01|0.0|30.0|1.52836|0.08026 +2016-07-01|0.0|31.0|1.50455|0.07399 +2016-07-01|0.0|32.0|1.45621|0.06767 +2016-07-01|0.0|33.0|1.38376|0.06135 +2016-07-01|0.0|34.0|1.28788|0.05513 +2016-07-01|0.0|35.0|1.16955|0.04908 +2016-07-01|0.0|36.0|1.02998|0.04327 +2016-07-01|0.0|37.0|0.87065|0.03777 +2016-07-01|0.0|38.0|0.69325|0.03267 +2016-07-01|0.0|39.0|0.49966|0.028 +2016-07-01|0.0|40.0|0.29195|0.02384 +2016-07-01|0.0|41.0|0.07231|0.02023 +2016-07-01|0.0|42.0|-0.15697|0.01721 +2016-07-01|0.0|43.0|-0.39356|0.0148 +2016-07-01|0.0|44.0|-0.6351|0.01302 +2016-07-01|0.0|45.0|-0.87925|0.01188 +2016-07-01|0.0|46.0|-1.12373|0.01138 +2016-07-01|0.0|47.0|-1.36638|0.01149 +2016-07-01|0.0|48.0|-1.60515|0.0122 +2016-07-01|0.0|49.0|-1.83816|0.01348 +2016-07-01|0.0|50.0|-2.06373|0.01527 +2016-07-01|0.0|51.0|-2.28035|0.01754 +2016-07-01|0.0|52.0|-2.48675|0.02022 +2016-07-01|0.0|53.0|-2.68189|0.02327 +2016-07-01|0.0|54.0|-2.86494|0.02662 +2016-07-01|0.0|55.0|-3.0353|0.03021 +2016-07-01|0.0|56.0|-3.19257|0.03397 +2016-07-01|0.0|57.0|-3.33655|0.03785 +2016-07-01|0.0|58.0|-3.46722|0.04179 +2016-07-01|0.0|59.0|-3.5847|0.04572 +2016-07-01|0.0|60.0|-3.68926|0.0496 +2016-07-01|0.0|61.0|-3.78125|0.05338 +2016-07-01|0.0|62.0|-3.86107|0.05702 +2016-07-01|0.0|63.0|-3.92921|0.06048 +2016-07-01|0.0|64.0|-3.98613|0.06374 +2016-07-01|0.0|65.0|-4.0323|0.06676 +2016-07-01|0.0|66.0|-4.06815|0.06954 +2016-07-01|0.0|67.0|-4.09406|0.07207 +2016-07-01|0.0|68.0|-4.11032|0.07432 +2016-07-01|0.0|69.0|-4.11715|0.07631 +2016-07-01|0.0|70.0|-4.1147|0.07804 +2016-07-01|0.0|71.0|-4.103|0.07951 +2016-07-01|0.0|72.0|-4.08201|0.08074 +2016-07-01|0.0|73.0|-4.05161|0.08172 +2016-07-01|0.0|74.0|-4.01162|0.08248 +2016-07-01|0.0|75.0|-3.96179|0.08302 +2016-07-01|0.0|76.0|-3.90188|0.08336 +2016-07-01|0.0|77.0|-3.83159|0.0835 +2016-07-01|0.0|78.0|-3.75069|0.08346 +2016-07-01|0.0|79.0|-3.65896|0.08323 +2016-07-01|0.0|80.0|-3.55626|0.08282 +2016-07-01|0.0|81.0|-3.44253|0.08223 +2016-07-01|0.0|82.0|-3.31784|0.08146 +2016-07-01|0.0|83.0|-3.18238|0.0805 +2016-07-01|0.0|84.0|-3.03651|0.07934 +2016-07-01|0.0|85.0|-2.88073|0.07798 +2016-07-01|0.0|86.0|-2.71574|0.07638 +2016-07-01|0.0|87.0|-2.54239|0.07455 +2016-07-01|0.0|88.0|-2.36172|0.07246 +2016-07-01|0.0|89.0|-2.17494|0.0701 +2016-07-01|0.0|90.0|-1.9834|0.06744 +2016-07-01|0.0|91.0|-1.7886|0.06448 +2016-07-01|0.0|92.0|-1.59214|0.0612 +2016-07-01|0.0|93.0|-1.39573|0.05759 +2016-07-01|0.0|94.0|-1.20111|0.05364 +2016-07-01|0.0|95.0|-1.01006|0.04934 +2016-07-01|0.0|96.0|-0.82435|0.04469 +2016-07-01|0.0|97.0|-0.64567|0.0397 +2016-07-01|0.0|98.0|-0.47566|0.03437 +2016-07-01|0.0|99.0|-0.31581|0.02873 +2016-07-01|0.0|100.0|-0.16746|0.02278 +2016-07-01|0.0|101.0|-0.03176|0.01655 +2016-07-01|0.0|102.0|0.09037|0.01007 +2016-07-01|0.0|103.0|0.19824|0.00338 +2016-07-01|0.0|104.0|0.29143|-0.00349 +2016-07-01|0.0|105.0|0.36979|-0.01049 +2016-07-01|0.0|106.0|0.43346|-0.01758 +2016-07-01|0.0|107.0|0.48286|-0.02471 +2016-07-01|0.0|108.0|0.51867|-0.03183 +2016-07-01|0.0|109.0|0.54185|-0.03889 +2016-07-01|0.0|110.0|0.5536|-0.04583 +2016-07-01|0.0|111.0|0.55534|-0.05262 +2016-07-01|0.0|112.0|0.54869|-0.05918 +2016-07-01|0.0|113.0|0.53542|-0.06549 +2016-07-01|0.0|114.0|0.51741|-0.07149 +2016-07-01|0.0|115.0|0.49666|-0.07713 +2016-07-01|0.0|116.0|0.47516|-0.08239 +2016-07-01|0.0|117.0|0.45495|-0.08723 +2016-07-01|0.0|118.0|0.43799|-0.09162 +2016-07-01|0.0|119.0|0.42619|-0.09554 +2016-07-01|0.0|120.0|0.42133|-0.09897 +2016-07-01|0.0|121.0|0.42504|-0.1019 +2016-07-01|0.0|122.0|0.43879|-0.10432 +2016-07-01|0.0|123.0|0.46384|-0.10623 +2016-07-01|0.0|124.0|0.50123|-0.10763 +2016-07-01|0.0|125.0|0.55179|-0.10853 +2016-07-01|0.0|126.0|0.61611|-0.10895 +2016-07-01|0.0|127.0|0.69453|-0.1089 +2016-07-01|0.0|128.0|0.78718|-0.1084 +2016-07-01|0.0|129.0|0.89398|-0.10747 +2016-07-01|0.0|130.0|1.01462|-0.10615 +2016-07-01|0.0|131.0|1.14865|-0.10446 +2016-07-01|0.0|132.0|1.29543|-0.10242 +2016-07-01|0.0|133.0|1.4542|-0.10007 +2016-07-01|0.0|134.0|1.62408|-0.09744 +2016-07-01|0.0|135.0|1.80414|-0.09455 +2016-07-01|0.0|136.0|1.99337|-0.09144 +2016-07-01|0.0|137.0|2.19075|-0.08814 +2016-07-01|0.0|138.0|2.39527|-0.08468 +2016-07-01|0.0|139.0|2.60592|-0.08107 +2016-07-01|0.0|140.0|2.82176|-0.07735 +2016-07-01|0.0|141.0|3.04189|-0.07354 +2016-07-01|0.0|142.0|3.26549|-0.06967 +2016-07-01|0.0|143.0|3.4918|-0.06574 +2016-07-01|0.0|144.0|3.72017|-0.06178 +2016-07-01|0.0|145.0|3.95001|-0.05781 +2016-07-01|0.0|146.0|4.18081|-0.05383 +2016-07-01|0.0|147.0|4.41213|-0.04986 +2016-07-01|0.0|148.0|4.64361|-0.04592 +2016-07-01|0.0|149.0|4.8749|-0.04201 +2016-07-01|0.0|150.0|5.10572|-0.03813 +2016-07-01|0.0|151.0|5.33578|-0.0343 +2016-07-01|0.0|152.0|5.56482|-0.03052 +2016-07-01|0.0|153.0|5.79255|-0.0268 +2016-07-01|0.0|154.0|6.01866|-0.02315 +2016-07-01|0.0|155.0|6.24282|-0.01956 +2016-07-01|0.0|156.0|6.46463|-0.01603 +2016-07-01|0.0|157.0|6.68367|-0.01259 +2016-07-01|0.0|158.0|6.89944|-0.00922 +2016-07-01|0.0|159.0|7.11139|-0.00592 +2016-07-01|0.0|160.0|7.31893|-0.00272 +2016-07-01|0.0|161.0|7.52141|4.0E-4 +2016-07-01|0.0|162.0|7.71815|0.00343 +2016-07-01|0.0|163.0|7.90844|0.00636 +2016-07-01|0.0|164.0|8.09154|0.00919 +2016-07-01|0.0|165.0|8.26675|0.01192 +2016-07-01|0.0|166.0|8.43333|0.01453 +2016-07-01|0.0|167.0|8.59063|0.01703 +2016-07-01|0.0|168.0|8.738|0.01942 +2016-07-01|0.0|169.0|8.87489|0.02167 +2016-07-01|0.0|170.0|9.00082|0.0238 +2016-07-01|0.0|171.0|9.11538|0.02578 +2016-07-01|0.0|172.0|9.2183|0.02762 +2016-07-01|0.0|173.0|9.30941|0.0293 +2016-07-01|0.0|174.0|9.38865|0.03083 +2016-07-01|0.0|175.0|9.4561|0.03219 +2016-07-01|0.0|176.0|9.51195|0.03338 +2016-07-01|0.0|177.0|9.55653|0.03439 +2016-07-01|0.0|178.0|9.59028|0.03522 +2016-07-01|0.0|179.0|9.61376|0.03585 +2016-07-01|0.0|-1.0|-5.62303|0.12319 +2016-07-01|0.0|-2.0|-5.98254|0.12232 +2016-07-01|0.0|-3.0|-6.34951|0.12149 +2016-07-01|0.0|-4.0|-6.72422|0.1207 +2016-07-01|0.0|-5.0|-7.1069|0.11996 +2016-07-01|0.0|-6.0|-7.49771|0.11925 +2016-07-01|0.0|-7.0|-7.89671|0.11858 +2016-07-01|0.0|-8.0|-8.30389|0.11794 +2016-07-01|0.0|-9.0|-8.71909|0.11733 +2016-07-01|0.0|-10.0|-9.14207|0.11673 +2016-07-01|0.0|-11.0|-9.57247|0.11615 +2016-07-01|0.0|-12.0|-10.00979|0.11558 +2016-07-01|0.0|-13.0|-10.45341|0.11501 +2016-07-01|0.0|-14.0|-10.9026|0.11444 +2016-07-01|0.0|-15.0|-11.35651|0.11385 +2016-07-01|0.0|-16.0|-11.81415|0.11323 +2016-07-01|0.0|-17.0|-12.27443|0.11258 +2016-07-01|0.0|-18.0|-12.73619|0.11188 +2016-07-01|0.0|-19.0|-13.19811|0.11113 +2016-07-01|0.0|-20.0|-13.65885|0.11029 +2016-07-01|0.0|-21.0|-14.11694|0.10936 +2016-07-01|0.0|-22.0|-14.57089|0.10831 +2016-07-01|0.0|-23.0|-15.01913|0.10713 +2016-07-01|0.0|-24.0|-15.46005|0.1058 +2016-07-01|0.0|-25.0|-15.89203|0.10429 +2016-07-01|0.0|-26.0|-16.31342|0.10258 +2016-07-01|0.0|-27.0|-16.72256|0.10065 +2016-07-01|0.0|-28.0|-17.1178|0.09847 +2016-07-01|0.0|-29.0|-17.49751|0.09603 +2016-07-01|0.0|-30.0|-17.86008|0.0933 +2016-07-01|0.0|-31.0|-18.20394|0.09026 +2016-07-01|0.0|-32.0|-18.52756|0.0869 +2016-07-01|0.0|-33.0|-18.82947|0.0832 +2016-07-01|0.0|-34.0|-19.10824|0.07915 +2016-07-01|0.0|-35.0|-19.36253|0.07475 +2016-07-01|0.0|-36.0|-19.59106|0.06998 +2016-07-01|0.0|-37.0|-19.79263|0.06486 +2016-07-01|0.0|-38.0|-19.9661|0.05938 +2016-07-01|0.0|-39.0|-20.11045|0.05356 +2016-07-01|0.0|-40.0|-20.22473|0.04739 +2016-07-01|0.0|-41.0|-20.30809|0.04091 +2016-07-01|0.0|-42.0|-20.35977|0.03413 +2016-07-01|0.0|-43.0|-20.37912|0.02708 +2016-07-01|0.0|-44.0|-20.36557|0.01977 +2016-07-01|0.0|-45.0|-20.31869|0.01224 +2016-07-01|0.0|-46.0|-20.23812|0.00453 +2016-07-01|0.0|-47.0|-20.12364|-0.00334 +2016-07-01|0.0|-48.0|-19.97511|-0.01133 +2016-07-01|0.0|-49.0|-19.79254|-0.01939 +2016-07-01|0.0|-50.0|-19.57602|-0.0275 +2016-07-01|0.0|-51.0|-19.32577|-0.0356 +2016-07-01|0.0|-52.0|-19.04213|-0.04367 +2016-07-01|0.0|-53.0|-18.72556|-0.05166 +2016-07-01|0.0|-54.0|-18.37662|-0.05954 +2016-07-01|0.0|-55.0|-17.996|-0.06727 +2016-07-01|0.0|-56.0|-17.58451|-0.07481 +2016-07-01|0.0|-57.0|-17.14308|-0.08214 +2016-07-01|0.0|-58.0|-16.67274|-0.08921 +2016-07-01|0.0|-59.0|-16.17465|-0.09601 +2016-07-01|0.0|-60.0|-15.65006|-0.10251 +2016-07-01|0.0|-61.0|-15.10035|-0.10869 +2016-07-01|0.0|-62.0|-14.52698|-0.11452 +2016-07-01|0.0|-63.0|-13.93152|-0.12 +2016-07-01|0.0|-64.0|-13.31564|-0.12511 +2016-07-01|0.0|-65.0|-12.68109|-0.12983 +2016-07-01|0.0|-66.0|-12.02969|-0.13417 +2016-07-01|0.0|-67.0|-11.36334|-0.13811 +2016-07-01|0.0|-68.0|-10.68401|-0.14166 +2016-07-01|0.0|-69.0|-9.99371|-0.14481 +2016-07-01|0.0|-70.0|-9.29451|-0.14757 +2016-07-01|0.0|-71.0|-8.58851|-0.14993 +2016-07-01|0.0|-72.0|-7.87782|-0.1519 +2016-07-01|0.0|-73.0|-7.16458|-0.1535 +2016-07-01|0.0|-74.0|-6.45092|-0.15472 +2016-07-01|0.0|-75.0|-5.73897|-0.15557 +2016-07-01|0.0|-76.0|-5.03082|-0.15606 +2016-07-01|0.0|-77.0|-4.32853|-0.15621 +2016-07-01|0.0|-78.0|-3.63412|-0.15602 +2016-07-01|0.0|-79.0|-2.94955|-0.1555 +2016-07-01|0.0|-80.0|-2.27669|-0.15468 +2016-07-01|0.0|-81.0|-1.61734|-0.15355 +2016-07-01|0.0|-82.0|-0.97319|-0.15214 +2016-07-01|0.0|-83.0|-0.34585|-0.15046 +2016-07-01|0.0|-84.0|0.26322|-0.14854 +2016-07-01|0.0|-85.0|0.85265|-0.14638 +2016-07-01|0.0|-86.0|1.42124|-0.14401 +2016-07-01|0.0|-87.0|1.96791|-0.14145 +2016-07-01|0.0|-88.0|2.49172|-0.13873 +2016-07-01|0.0|-89.0|2.99189|-0.13585 +2016-07-01|0.0|-90.0|3.4678|-0.13285 +2016-07-01|0.0|-91.0|3.91898|-0.12975 +2016-07-01|0.0|-92.0|4.34512|-0.12658 +2016-07-01|0.0|-93.0|4.74607|-0.12335 +2016-07-01|0.0|-94.0|5.12184|-0.12009 +2016-07-01|0.0|-95.0|5.47257|-0.11682 +2016-07-01|0.0|-96.0|5.79859|-0.11356 +2016-07-01|0.0|-97.0|6.10036|-0.11033 +2016-07-01|0.0|-98.0|6.37845|-0.10716 +2016-07-01|0.0|-99.0|6.63361|-0.10404 +2016-07-01|0.0|-100.0|6.86667|-0.101 +2016-07-01|0.0|-101.0|7.0786|-0.09806 +2016-07-01|0.0|-102.0|7.27045|-0.09521 +2016-07-01|0.0|-103.0|7.44337|-0.09246 +2016-07-01|0.0|-104.0|7.59859|-0.08982 +2016-07-01|0.0|-105.0|7.73737|-0.08729 +2016-07-01|0.0|-106.0|7.86105|-0.08487 +2016-07-01|0.0|-107.0|7.97098|-0.08255 +2016-07-01|0.0|-108.0|8.06853|-0.08033 +2016-07-01|0.0|-109.0|8.15504|-0.0782 +2016-07-01|0.0|-110.0|8.23187|-0.07614 +2016-07-01|0.0|-111.0|8.30031|-0.07416 +2016-07-01|0.0|-112.0|8.36162|-0.07223 +2016-07-01|0.0|-113.0|8.41697|-0.07035 +2016-07-01|0.0|-114.0|8.46748|-0.0685 +2016-07-01|0.0|-115.0|8.51416|-0.06667 +2016-07-01|0.0|-116.0|8.55791|-0.06485 +2016-07-01|0.0|-117.0|8.59955|-0.06302 +2016-07-01|0.0|-118.0|8.63976|-0.06119 +2016-07-01|0.0|-119.0|8.67912|-0.05933 +2016-07-01|0.0|-120.0|8.71808|-0.05746 +2016-07-01|0.0|-121.0|8.75697|-0.05555 +2016-07-01|0.0|-122.0|8.79604|-0.05362 +2016-07-01|0.0|-123.0|8.83538|-0.05166 +2016-07-01|0.0|-124.0|8.87502|-0.04968 +2016-07-01|0.0|-125.0|8.91488|-0.04767 +2016-07-01|0.0|-126.0|8.9548|-0.04565 +2016-07-01|0.0|-127.0|8.99458|-0.04362 +2016-07-01|0.0|-128.0|9.03391|-0.0416 +2016-07-01|0.0|-129.0|9.0725|-0.03959 +2016-07-01|0.0|-130.0|9.10998|-0.0376 +2016-07-01|0.0|-131.0|9.146|-0.03564 +2016-07-01|0.0|-132.0|9.18018|-0.03371 +2016-07-01|0.0|-133.0|9.21216|-0.03184 +2016-07-01|0.0|-134.0|9.24162|-0.03002 +2016-07-01|0.0|-135.0|9.26825|-0.02827 +2016-07-01|0.0|-136.0|9.29179|-0.02657 +2016-07-01|0.0|-137.0|9.31201|-0.02494 +2016-07-01|0.0|-138.0|9.32877|-0.02338 +2016-07-01|0.0|-139.0|9.34195|-0.02187 +2016-07-01|0.0|-140.0|9.35153|-0.02043 +2016-07-01|0.0|-141.0|9.35754|-0.01904 +2016-07-01|0.0|-142.0|9.36006|-0.01768 +2016-07-01|0.0|-143.0|9.35926|-0.01637 +2016-07-01|0.0|-144.0|9.35536|-0.01507 +2016-07-01|0.0|-145.0|9.34863|-0.01378 +2016-07-01|0.0|-146.0|9.33942|-0.01249 +2016-07-01|0.0|-147.0|9.3281|-0.01119 +2016-07-01|0.0|-148.0|9.3151|-0.00986 +2016-07-01|0.0|-149.0|9.30089|-0.00849 +2016-07-01|0.0|-150.0|9.28594|-0.00706 +2016-07-01|0.0|-151.0|9.27077|-0.00559 +2016-07-01|0.0|-152.0|9.25588|-0.00404 +2016-07-01|0.0|-153.0|9.24179|-0.00242 +2016-07-01|0.0|-154.0|9.22901|-7.3E-4 +2016-07-01|0.0|-155.0|9.218|0.00103 +2016-07-01|0.0|-156.0|9.20924|0.00287 +2016-07-01|0.0|-157.0|9.20312|0.00477 +2016-07-01|0.0|-158.0|9.20001|0.00674 +2016-07-01|0.0|-159.0|9.20021|0.00876 +2016-07-01|0.0|-160.0|9.20396|0.01081 +2016-07-01|0.0|-161.0|9.21142|0.0129 +2016-07-01|0.0|-162.0|9.22267|0.015 +2016-07-01|0.0|-163.0|9.2377|0.01709 +2016-07-01|0.0|-164.0|9.2564|0.01916 +2016-07-01|0.0|-165.0|9.27858|0.02119 +2016-07-01|0.0|-166.0|9.30395|0.02316 +2016-07-01|0.0|-167.0|9.3321|0.02506 +2016-07-01|0.0|-168.0|9.36255|0.02686 +2016-07-01|0.0|-169.0|9.39472|0.02855 +2016-07-01|0.0|-170.0|9.42793|0.03011 +2016-07-01|0.0|-171.0|9.46144|0.03153 +2016-07-01|0.0|-172.0|9.49442|0.03279 +2016-07-01|0.0|-173.0|9.526|0.03389 +2016-07-01|0.0|-174.0|9.55525|0.03481 +2016-07-01|0.0|-175.0|9.58121|0.03555 +2016-07-01|0.0|-176.0|9.6029|0.03609 +2016-07-01|0.0|-177.0|9.61933|0.03644 +2016-07-01|0.0|-178.0|9.62954|0.03659 +2016-07-01|0.0|-179.0|9.6326|0.03654 +2016-07-01|1.0|0.0|-4.91725|0.12038 +2016-07-01|1.0|1.0|-4.58355|0.12117 +2016-07-01|1.0|2.0|-4.25643|0.12201 +2016-07-01|1.0|3.0|-3.93544|0.12291 +2016-07-01|1.0|4.0|-3.62016|0.12385 +2016-07-01|1.0|5.0|-3.31018|0.12482 +2016-07-01|1.0|6.0|-3.00518|0.12581 +2016-07-01|1.0|7.0|-2.70491|0.12679 +2016-07-01|1.0|8.0|-2.40921|0.12774 +2016-07-01|1.0|9.0|-2.11804|0.12864 +2016-07-01|1.0|10.0|-1.83147|0.12945 +2016-07-01|1.0|11.0|-1.54972|0.13014 +2016-07-01|1.0|12.0|-1.27314|0.13068 +2016-07-01|1.0|13.0|-1.00224|0.13101 +2016-07-01|1.0|14.0|-0.73766|0.13112 +2016-07-01|1.0|15.0|-0.48021|0.13095 +2016-07-01|1.0|16.0|-0.23082|0.13048 +2016-07-01|1.0|17.0|0.00944|0.12966 +2016-07-01|1.0|18.0|0.23938|0.12846 +2016-07-01|1.0|19.0|0.45774|0.12686 +2016-07-01|1.0|20.0|0.66316|0.12483 +2016-07-01|1.0|21.0|0.85424|0.12236 +2016-07-01|1.0|22.0|1.02959|0.11943 +2016-07-01|1.0|23.0|1.18778|0.11605 +2016-07-01|1.0|24.0|1.32748|0.11222 +2016-07-01|1.0|25.0|1.4474|0.10796 +2016-07-01|1.0|26.0|1.54638|0.1033 +2016-07-01|1.0|27.0|1.62339|0.09827 +2016-07-01|1.0|28.0|1.67759|0.0929 +2016-07-01|1.0|29.0|1.70831|0.08727 +2016-07-01|1.0|30.0|1.71515|0.08141 +2016-07-01|1.0|31.0|1.6979|0.0754 +2016-07-01|1.0|32.0|1.65665|0.0693 +2016-07-01|1.0|33.0|1.59172|0.06319 +2016-07-01|1.0|34.0|1.50374|0.05715 +2016-07-01|1.0|35.0|1.39358|0.05124 +2016-07-01|1.0|36.0|1.26237|0.04555 +2016-07-01|1.0|37.0|1.11151|0.04015 +2016-07-01|1.0|38.0|0.94259|0.0351 +2016-07-01|1.0|39.0|0.75743|0.03047 +2016-07-01|1.0|40.0|0.55802|0.02632 +2016-07-01|1.0|41.0|0.34646|0.02269 +2016-07-01|1.0|42.0|0.125|0.01962 +2016-07-01|1.0|43.0|-0.1041|0.01715 +2016-07-01|1.0|44.0|-0.33852|0.01529 +2016-07-01|1.0|45.0|-0.57597|0.01406 +2016-07-01|1.0|46.0|-0.81421|0.01344 +2016-07-01|1.0|47.0|-1.05111|0.01343 +2016-07-01|1.0|48.0|-1.28464|0.014 +2016-07-01|1.0|49.0|-1.51293|0.01513 +2016-07-01|1.0|50.0|-1.73432|0.01677 +2016-07-01|1.0|51.0|-1.9473|0.01888 +2016-07-01|1.0|52.0|-2.15062|0.02141 +2016-07-01|1.0|53.0|-2.34321|0.0243 +2016-07-01|1.0|54.0|-2.52426|0.02749 +2016-07-01|1.0|55.0|-2.69314|0.03092 +2016-07-01|1.0|56.0|-2.84946|0.03453 +2016-07-01|1.0|57.0|-2.993|0.03826 +2016-07-01|1.0|58.0|-3.12374|0.04204 +2016-07-01|1.0|59.0|-3.24179|0.04583 +2016-07-01|1.0|60.0|-3.3474|0.04956 +2016-07-01|1.0|61.0|-3.44092|0.0532 +2016-07-01|1.0|62.0|-3.52275|0.0567 +2016-07-01|1.0|63.0|-3.59335|0.06003 +2016-07-01|1.0|64.0|-3.6532|0.06315 +2016-07-01|1.0|65.0|-3.70275|0.06605 +2016-07-01|1.0|66.0|-3.74244|0.0687 +2016-07-01|1.0|67.0|-3.77263|0.0711 +2016-07-01|1.0|68.0|-3.79363|0.07324 +2016-07-01|1.0|69.0|-3.80565|0.07512 +2016-07-01|1.0|70.0|-3.80883|0.07674 +2016-07-01|1.0|71.0|-3.80321|0.0781 +2016-07-01|1.0|72.0|-3.78876|0.07922 +2016-07-01|1.0|73.0|-3.76533|0.08011 +2016-07-01|1.0|74.0|-3.73276|0.08077 +2016-07-01|1.0|75.0|-3.69079|0.08123 +2016-07-01|1.0|76.0|-3.63915|0.08148 +2016-07-01|1.0|77.0|-3.57758|0.08155 +2016-07-01|1.0|78.0|-3.50579|0.08144 +2016-07-01|1.0|79.0|-3.42358|0.08115 +2016-07-01|1.0|80.0|-3.33077|0.08069 +2016-07-01|1.0|81.0|-3.2273|0.08007 +2016-07-01|1.0|82.0|-3.1132|0.07926 +2016-07-01|1.0|83.0|-2.98865|0.07828 +2016-07-01|1.0|84.0|-2.85397|0.0771 +2016-07-01|1.0|85.0|-2.70964|0.07573 +2016-07-01|1.0|86.0|-2.55631|0.07414 +2016-07-01|1.0|87.0|-2.3948|0.07232 +2016-07-01|1.0|88.0|-2.22611|0.07026 +2016-07-01|1.0|89.0|-2.0514|0.06793 +2016-07-01|1.0|90.0|-1.87198|0.06532 +2016-07-01|1.0|91.0|-1.6893|0.06241 +2016-07-01|1.0|92.0|-1.50492|0.05919 +2016-07-01|1.0|93.0|-1.3205|0.05564 +2016-07-01|1.0|94.0|-1.13774|0.05176 +2016-07-01|1.0|95.0|-0.95837|0.04754 +2016-07-01|1.0|96.0|-0.78411|0.04298 +2016-07-01|1.0|97.0|-0.61662|0.03808 +2016-07-01|1.0|98.0|-0.45751|0.03284 +2016-07-01|1.0|99.0|-0.30823|0.02728 +2016-07-01|1.0|100.0|-0.17009|0.02143 +2016-07-01|1.0|101.0|-0.04423|0.01529 +2016-07-01|1.0|102.0|0.06846|0.00891 +2016-07-01|1.0|103.0|0.16729|0.0023 +2016-07-01|1.0|104.0|0.25184|-0.00448 +2016-07-01|1.0|105.0|0.32199|-0.0114 +2016-07-01|1.0|106.0|0.37784|-0.01842 +2016-07-01|1.0|107.0|0.41982|-0.02548 +2016-07-01|1.0|108.0|0.44859|-0.03254 +2016-07-01|1.0|109.0|0.46511|-0.03954 +2016-07-01|1.0|110.0|0.47056|-0.04643 +2016-07-01|1.0|111.0|0.46633|-0.05317 +2016-07-01|1.0|112.0|0.45401|-0.0597 +2016-07-01|1.0|113.0|0.43536|-0.06597 +2016-07-01|1.0|114.0|0.41225|-0.07194 +2016-07-01|1.0|115.0|0.38663|-0.07757 +2016-07-01|1.0|116.0|0.3605|-0.08281 +2016-07-01|1.0|117.0|0.33584|-0.08764 +2016-07-01|1.0|118.0|0.31463|-0.09202 +2016-07-01|1.0|119.0|0.29873|-0.09594 +2016-07-01|1.0|120.0|0.28992|-0.09937 +2016-07-01|1.0|121.0|0.28982|-0.1023 +2016-07-01|1.0|122.0|0.29989|-0.10472 +2016-07-01|1.0|123.0|0.32137|-0.10664 +2016-07-01|1.0|124.0|0.35531|-0.10806 +2016-07-01|1.0|125.0|0.40253|-0.10898 +2016-07-01|1.0|126.0|0.46361|-0.10942 +2016-07-01|1.0|127.0|0.53891|-0.10939 +2016-07-01|1.0|128.0|0.62857|-0.10891 +2016-07-01|1.0|129.0|0.7325|-0.10802 +2016-07-01|1.0|130.0|0.85042|-0.10672 +2016-07-01|1.0|131.0|0.98187|-0.10506 +2016-07-01|1.0|132.0|1.12624|-0.10305 +2016-07-01|1.0|133.0|1.28276|-0.10074 +2016-07-01|1.0|134.0|1.4506|-0.09814 +2016-07-01|1.0|135.0|1.6288|-0.09529 +2016-07-01|1.0|136.0|1.8164|-0.09222 +2016-07-01|1.0|137.0|2.01238|-0.08896 +2016-07-01|1.0|138.0|2.21572|-0.08553 +2016-07-01|1.0|139.0|2.42545|-0.08196 +2016-07-01|1.0|140.0|2.64062|-0.07828 +2016-07-01|1.0|141.0|2.86034|-0.07451 +2016-07-01|1.0|142.0|3.08379|-0.07066 +2016-07-01|1.0|143.0|3.31022|-0.06677 +2016-07-01|1.0|144.0|3.53896|-0.06284 +2016-07-01|1.0|145.0|3.76944|-0.05889 +2016-07-01|1.0|146.0|4.00114|-0.05494 +2016-07-01|1.0|147.0|4.23362|-0.051 +2016-07-01|1.0|148.0|4.4665|-0.04707 +2016-07-01|1.0|149.0|4.69943|-0.04318 +2016-07-01|1.0|150.0|4.93212|-0.03932 +2016-07-01|1.0|151.0|5.16428|-0.0355 +2016-07-01|1.0|152.0|5.39563|-0.03173 +2016-07-01|1.0|153.0|5.62586|-0.02801 +2016-07-01|1.0|154.0|5.85467|-0.02435 +2016-07-01|1.0|155.0|6.08171|-0.02076 +2016-07-01|1.0|156.0|6.30656|-0.01724 +2016-07-01|1.0|157.0|6.52879|-0.01378 +2016-07-01|1.0|158.0|6.7479|-0.0104 +2016-07-01|1.0|159.0|6.96331|-0.0071 +2016-07-01|1.0|160.0|7.17441|-0.00388 +2016-07-01|1.0|161.0|7.38055|-7.5E-4 +2016-07-01|1.0|162.0|7.58103|0.00229 +2016-07-01|1.0|163.0|7.77511|0.00523 +2016-07-01|1.0|164.0|7.96205|0.00807 +2016-07-01|1.0|165.0|8.1411|0.01081 +2016-07-01|1.0|166.0|8.31154|0.01344 +2016-07-01|1.0|167.0|8.47266|0.01595 +2016-07-01|1.0|168.0|8.62381|0.01835 +2016-07-01|1.0|169.0|8.7644|0.02061 +2016-07-01|1.0|170.0|8.89394|0.02274 +2016-07-01|1.0|171.0|9.01199|0.02473 +2016-07-01|1.0|172.0|9.11827|0.02657 +2016-07-01|1.0|173.0|9.21256|0.02826 +2016-07-01|1.0|174.0|9.29481|0.02978 +2016-07-01|1.0|175.0|9.36505|0.03114 +2016-07-01|1.0|176.0|9.42348|0.03233 +2016-07-01|1.0|177.0|9.4704|0.03333 +2016-07-01|1.0|178.0|9.50624|0.03415 +2016-07-01|1.0|179.0|9.53154|0.03478 +2016-07-01|1.0|-1.0|-5.25799|0.11966 +2016-07-01|1.0|-2.0|-5.60621|0.11901 +2016-07-01|1.0|-3.0|-5.96232|0.11842 +2016-07-01|1.0|-4.0|-6.32667|0.11788 +2016-07-01|1.0|-5.0|-6.69956|0.11741 +2016-07-01|1.0|-6.0|-7.08119|0.11698 +2016-07-01|1.0|-7.0|-7.47168|0.1166 +2016-07-01|1.0|-8.0|-7.87105|0.11626 +2016-07-01|1.0|-9.0|-8.2792|0.11594 +2016-07-01|1.0|-10.0|-8.69589|0.11565 +2016-07-01|1.0|-11.0|-9.1208|0.11537 +2016-07-01|1.0|-12.0|-9.55345|0.1151 +2016-07-01|1.0|-13.0|-9.99322|0.11482 +2016-07-01|1.0|-14.0|-10.4394|0.11454 +2016-07-01|1.0|-15.0|-10.89113|0.11423 +2016-07-01|1.0|-16.0|-11.34742|0.11388 +2016-07-01|1.0|-17.0|-11.8072|0.11349 +2016-07-01|1.0|-18.0|-12.26926|0.11305 +2016-07-01|1.0|-19.0|-12.7323|0.11253 +2016-07-01|1.0|-20.0|-13.19494|0.11192 +2016-07-01|1.0|-21.0|-13.65573|0.11121 +2016-07-01|1.0|-22.0|-14.11313|0.11037 +2016-07-01|1.0|-23.0|-14.56557|0.1094 +2016-07-01|1.0|-24.0|-15.01142|0.10825 +2016-07-01|1.0|-25.0|-15.44905|0.10693 +2016-07-01|1.0|-26.0|-15.87676|0.10539 +2016-07-01|1.0|-27.0|-16.29291|0.10363 +2016-07-01|1.0|-28.0|-16.6958|0.10161 +2016-07-01|1.0|-29.0|-17.0838|0.09933 +2016-07-01|1.0|-30.0|-17.45527|0.09675 +2016-07-01|1.0|-31.0|-17.80861|0.09386 +2016-07-01|1.0|-32.0|-18.14228|0.09065 +2016-07-01|1.0|-33.0|-18.45477|0.08709 +2016-07-01|1.0|-34.0|-18.74464|0.08319 +2016-07-01|1.0|-35.0|-19.01051|0.07893 +2016-07-01|1.0|-36.0|-19.25107|0.0743 +2016-07-01|1.0|-37.0|-19.46508|0.06931 +2016-07-01|1.0|-38.0|-19.6514|0.06397 +2016-07-01|1.0|-39.0|-19.80894|0.05827 +2016-07-01|1.0|-40.0|-19.93673|0.05223 +2016-07-01|1.0|-41.0|-20.03389|0.04587 +2016-07-01|1.0|-42.0|-20.09961|0.0392 +2016-07-01|1.0|-43.0|-20.13321|0.03225 +2016-07-01|1.0|-44.0|-20.13409|0.02504 +2016-07-01|1.0|-45.0|-20.10177|0.0176 +2016-07-01|1.0|-46.0|-20.03587|0.00997 +2016-07-01|1.0|-47.0|-19.93613|0.00217 +2016-07-01|1.0|-48.0|-19.80239|-0.00575 +2016-07-01|1.0|-49.0|-19.6346|-0.01376 +2016-07-01|1.0|-50.0|-19.43286|-0.02183 +2016-07-01|1.0|-51.0|-19.19734|-0.02991 +2016-07-01|1.0|-52.0|-18.92836|-0.03796 +2016-07-01|1.0|-53.0|-18.62637|-0.04595 +2016-07-01|1.0|-54.0|-18.29189|-0.05384 +2016-07-01|1.0|-55.0|-17.92562|-0.06159 +2016-07-01|1.0|-56.0|-17.52835|-0.06917 +2016-07-01|1.0|-57.0|-17.10097|-0.07655 +2016-07-01|1.0|-58.0|-16.64453|-0.0837 +2016-07-01|1.0|-59.0|-16.16014|-0.09058 +2016-07-01|1.0|-60.0|-15.64908|-0.09718 +2016-07-01|1.0|-61.0|-15.11268|-0.10347 +2016-07-01|1.0|-62.0|-14.55241|-0.10943 +2016-07-01|1.0|-63.0|-13.96983|-0.11505 +2016-07-01|1.0|-64.0|-13.36656|-0.12031 +2016-07-01|1.0|-65.0|-12.74435|-0.12521 +2016-07-01|1.0|-66.0|-12.105|-0.12973 +2016-07-01|1.0|-67.0|-11.45037|-0.13387 +2016-07-01|1.0|-68.0|-10.78241|-0.13763 +2016-07-01|1.0|-69.0|-10.1031|-0.141 +2016-07-01|1.0|-70.0|-9.41446|-0.144 +2016-07-01|1.0|-71.0|-8.71856|-0.14661 +2016-07-01|1.0|-72.0|-8.01747|-0.14884 +2016-07-01|1.0|-73.0|-7.3133|-0.15069 +2016-07-01|1.0|-74.0|-6.60812|-0.15218 +2016-07-01|1.0|-75.0|-5.90404|-0.15331 +2016-07-01|1.0|-76.0|-5.2031|-0.15408 +2016-07-01|1.0|-77.0|-4.50734|-0.15451 +2016-07-01|1.0|-78.0|-3.81874|-0.15459 +2016-07-01|1.0|-79.0|-3.13922|-0.15435 +2016-07-01|1.0|-80.0|-2.47064|-0.15379 +2016-07-01|1.0|-81.0|-1.81478|-0.15293 +2016-07-01|1.0|-82.0|-1.17333|-0.15177 +2016-07-01|1.0|-83.0|-0.54789|-0.15033 +2016-07-01|1.0|-84.0|0.06006|-0.14864 +2016-07-01|1.0|-85.0|0.64917|-0.14669 +2016-07-01|1.0|-86.0|1.21819|-0.14453 +2016-07-01|1.0|-87.0|1.76602|-0.14215 +2016-07-01|1.0|-88.0|2.2917|-0.13959 +2016-07-01|1.0|-89.0|2.7944|-0.13686 +2016-07-01|1.0|-90.0|3.27346|-0.13399 +2016-07-01|1.0|-91.0|3.72836|-0.13101 +2016-07-01|1.0|-92.0|4.15873|-0.12793 +2016-07-01|1.0|-93.0|4.56437|-0.12477 +2016-07-01|1.0|-94.0|4.94522|-0.12157 +2016-07-01|1.0|-95.0|5.30139|-0.11835 +2016-07-01|1.0|-96.0|5.63312|-0.11511 +2016-07-01|1.0|-97.0|5.94081|-0.1119 +2016-07-01|1.0|-98.0|6.22498|-0.10871 +2016-07-01|1.0|-99.0|6.48632|-0.10558 +2016-07-01|1.0|-100.0|6.7256|-0.10252 +2016-07-01|1.0|-101.0|6.94373|-0.09953 +2016-07-01|1.0|-102.0|7.14171|-0.09663 +2016-07-01|1.0|-103.0|7.32065|-0.09383 +2016-07-01|1.0|-104.0|7.48172|-0.09113 +2016-07-01|1.0|-105.0|7.62616|-0.08853 +2016-07-01|1.0|-106.0|7.75526|-0.08604 +2016-07-01|1.0|-107.0|7.87034|-0.08364 +2016-07-01|1.0|-108.0|7.97274|-0.08134 +2016-07-01|1.0|-109.0|8.06381|-0.07913 +2016-07-01|1.0|-110.0|8.14486|-0.077 +2016-07-01|1.0|-111.0|8.21718|-0.07495 +2016-07-01|1.0|-112.0|8.28203|-0.07295 +2016-07-01|1.0|-113.0|8.34058|-0.071 +2016-07-01|1.0|-114.0|8.39394|-0.06908 +2016-07-01|1.0|-115.0|8.44313|-0.06719 +2016-07-01|1.0|-116.0|8.48907|-0.06532 +2016-07-01|1.0|-117.0|8.53259|-0.06345 +2016-07-01|1.0|-118.0|8.57439|-0.06157 +2016-07-01|1.0|-119.0|8.61505|-0.05968 +2016-07-01|1.0|-120.0|8.65505|-0.05778 +2016-07-01|1.0|-121.0|8.69475|-0.05585 +2016-07-01|1.0|-122.0|8.73439|-0.0539 +2016-07-01|1.0|-123.0|8.77411|-0.05193 +2016-07-01|1.0|-124.0|8.81393|-0.04994 +2016-07-01|1.0|-125.0|8.85381|-0.04794 +2016-07-01|1.0|-126.0|8.8936|-0.04592 +2016-07-01|1.0|-127.0|8.93309|-0.04391 +2016-07-01|1.0|-128.0|8.97202|-0.0419 +2016-07-01|1.0|-129.0|9.01008|-0.0399 +2016-07-01|1.0|-130.0|9.04692|-0.03793 +2016-07-01|1.0|-131.0|9.0822|-0.03599 +2016-07-01|1.0|-132.0|9.11555|-0.03409 +2016-07-01|1.0|-133.0|9.14662|-0.03224 +2016-07-01|1.0|-134.0|9.17508|-0.03044 +2016-07-01|1.0|-135.0|9.20063|-0.02871 +2016-07-01|1.0|-136.0|9.22302|-0.02703 +2016-07-01|1.0|-137.0|9.24203|-0.02543 +2016-07-01|1.0|-138.0|9.25752|-0.02389 +2016-07-01|1.0|-139.0|9.26939|-0.02241 +2016-07-01|1.0|-140.0|9.27762|-0.02098 +2016-07-01|1.0|-141.0|9.28224|-0.01961 +2016-07-01|1.0|-142.0|9.28337|-0.01828 +2016-07-01|1.0|-143.0|9.28116|-0.01698 +2016-07-01|1.0|-144.0|9.27587|-0.01571 +2016-07-01|1.0|-145.0|9.26778|-0.01444 +2016-07-01|1.0|-146.0|9.25725|-0.01317 +2016-07-01|1.0|-147.0|9.24468|-0.01189 +2016-07-01|1.0|-148.0|9.2305|-0.01058 +2016-07-01|1.0|-149.0|9.2152|-0.00923 +2016-07-01|1.0|-150.0|9.19928|-0.00783 +2016-07-01|1.0|-151.0|9.18326|-0.00637 +2016-07-01|1.0|-152.0|9.16766|-0.00485 +2016-07-01|1.0|-153.0|9.15301|-0.00325 +2016-07-01|1.0|-154.0|9.13982|-0.00159 +2016-07-01|1.0|-155.0|9.12858|1.6E-4 +2016-07-01|1.0|-156.0|9.11974|0.00197 +2016-07-01|1.0|-157.0|9.11372|0.00385 +2016-07-01|1.0|-158.0|9.11087|0.00579 +2016-07-01|1.0|-159.0|9.11148|0.00779 +2016-07-01|1.0|-160.0|9.1158|0.00982 +2016-07-01|1.0|-161.0|9.12395|0.01189 +2016-07-01|1.0|-162.0|9.13601|0.01397 +2016-07-01|1.0|-163.0|9.15195|0.01604 +2016-07-01|1.0|-164.0|9.17163|0.01809 +2016-07-01|1.0|-165.0|9.19484|0.02011 +2016-07-01|1.0|-166.0|9.22126|0.02207 +2016-07-01|1.0|-167.0|9.25045|0.02395 +2016-07-01|1.0|-168.0|9.28192|0.02575 +2016-07-01|1.0|-169.0|9.31503|0.02743 +2016-07-01|1.0|-170.0|9.3491|0.02899 +2016-07-01|1.0|-171.0|9.38334|0.03041 +2016-07-01|1.0|-172.0|9.41691|0.03167 +2016-07-01|1.0|-173.0|9.4489|0.03277 +2016-07-01|1.0|-174.0|9.47836|0.03369 +2016-07-01|1.0|-175.0|9.50432|0.03443 +2016-07-01|1.0|-176.0|9.52577|0.03499 +2016-07-01|1.0|-177.0|9.54171|0.03534 +2016-07-01|1.0|-178.0|9.55118|0.0355 +2016-07-01|1.0|-179.0|9.55323|0.03546 +2016-07-01|2.0|0.0|-4.58321|0.11685 +2016-07-01|2.0|1.0|-4.26084|0.11747 +2016-07-01|2.0|2.0|-3.94526|0.11817 +2016-07-01|2.0|3.0|-3.63594|0.11895 +2016-07-01|2.0|4.0|-3.33238|0.11979 +2016-07-01|2.0|5.0|-3.03411|0.12069 +2016-07-01|2.0|6.0|-2.74072|0.12163 +2016-07-01|2.0|7.0|-2.45189|0.1226 +2016-07-01|2.0|8.0|-2.16738|0.12356 +2016-07-01|2.0|9.0|-1.88707|0.12449 +2016-07-01|2.0|10.0|-1.61096|0.12537 +2016-07-01|2.0|11.0|-1.33919|0.12615 +2016-07-01|2.0|12.0|-1.07205|0.1268 +2016-07-01|2.0|13.0|-0.80998|0.12728 +2016-07-01|2.0|14.0|-0.55356|0.12756 +2016-07-01|2.0|15.0|-0.30354|0.12758 +2016-07-01|2.0|16.0|-0.0608|0.12733 +2016-07-01|2.0|17.0|0.17363|0.12675 +2016-07-01|2.0|18.0|0.39861|0.12581 +2016-07-01|2.0|19.0|0.61289|0.12448 +2016-07-01|2.0|20.0|0.81515|0.12274 +2016-07-01|2.0|21.0|1.00401|0.12056 +2016-07-01|2.0|22.0|1.17806|0.11795 +2016-07-01|2.0|23.0|1.3359|0.11488 +2016-07-01|2.0|24.0|1.47616|0.11137 +2016-07-01|2.0|25.0|1.59754|0.10743 +2016-07-01|2.0|26.0|1.69885|0.10308 +2016-07-01|2.0|27.0|1.77902|0.09835 +2016-07-01|2.0|28.0|1.83717|0.09329 +2016-07-01|2.0|29.0|1.87257|0.08793 +2016-07-01|2.0|30.0|1.88476|0.08234 +2016-07-01|2.0|31.0|1.87346|0.07658 +2016-07-01|2.0|32.0|1.83869|0.07071 +2016-07-01|2.0|33.0|1.78071|0.0648 +2016-07-01|2.0|34.0|1.70004|0.05894 +2016-07-01|2.0|35.0|1.59749|0.05318 +2016-07-01|2.0|36.0|1.47411|0.04762 +2016-07-01|2.0|37.0|1.33121|0.04231 +2016-07-01|2.0|38.0|1.1703|0.03734 +2016-07-01|2.0|39.0|0.99314|0.03276 +2016-07-01|2.0|40.0|0.80162|0.02862 +2016-07-01|2.0|41.0|0.5978|0.02499 +2016-07-01|2.0|42.0|0.38384|0.0219 +2016-07-01|2.0|43.0|0.16197|0.01938 +2016-07-01|2.0|44.0|-0.06555|0.01746 +2016-07-01|2.0|45.0|-0.29648|0.01613 +2016-07-01|2.0|46.0|-0.52862|0.01542 +2016-07-01|2.0|47.0|-0.75986|0.01529 +2016-07-01|2.0|48.0|-0.98819|0.01574 +2016-07-01|2.0|49.0|-1.21178|0.01674 +2016-07-01|2.0|50.0|-1.42896|0.01825 +2016-07-01|2.0|51.0|-1.63824|0.02022 +2016-07-01|2.0|52.0|-1.83837|0.0226 +2016-07-01|2.0|53.0|-2.02828|0.02534 +2016-07-01|2.0|54.0|-2.20714|0.02838 +2016-07-01|2.0|55.0|-2.37435|0.03167 +2016-07-01|2.0|56.0|-2.52948|0.03513 +2016-07-01|2.0|57.0|-2.67233|0.03871 +2016-07-01|2.0|58.0|-2.80285|0.04235 +2016-07-01|2.0|59.0|-2.92115|0.04599 +2016-07-01|2.0|60.0|-3.02746|0.04959 +2016-07-01|2.0|61.0|-3.12213|0.0531 +2016-07-01|2.0|62.0|-3.20557|0.05647 +2016-07-01|2.0|63.0|-3.27822|0.05967 +2016-07-01|2.0|64.0|-3.34055|0.06267 +2016-07-01|2.0|65.0|-3.39303|0.06545 +2016-07-01|2.0|66.0|-3.43607|0.06799 +2016-07-01|2.0|67.0|-3.47006|0.07027 +2016-07-01|2.0|68.0|-3.49528|0.0723 +2016-07-01|2.0|69.0|-3.51197|0.07407 +2016-07-01|2.0|70.0|-3.52025|0.07558 +2016-07-01|2.0|71.0|-3.52018|0.07685 +2016-07-01|2.0|72.0|-3.51171|0.07787 +2016-07-01|2.0|73.0|-3.49471|0.07867 +2016-07-01|2.0|74.0|-3.46901|0.07925 +2016-07-01|2.0|75.0|-3.43435|0.07962 +2016-07-01|2.0|76.0|-3.39046|0.0798 +2016-07-01|2.0|77.0|-3.33706|0.0798 +2016-07-01|2.0|78.0|-3.27388|0.07962 +2016-07-01|2.0|79.0|-3.20067|0.07927 +2016-07-01|2.0|80.0|-3.11727|0.07876 +2016-07-01|2.0|81.0|-3.02359|0.07809 +2016-07-01|2.0|82.0|-2.91964|0.07725 +2016-07-01|2.0|83.0|-2.80558|0.07624 +2016-07-01|2.0|84.0|-2.68169|0.07505 +2016-07-01|2.0|85.0|-2.54843|0.07367 +2016-07-01|2.0|86.0|-2.40641|0.07208 +2016-07-01|2.0|87.0|-2.25642|0.07027 +2016-07-01|2.0|88.0|-2.0994|0.06822 +2016-07-01|2.0|89.0|-1.93649|0.06592 +2016-07-01|2.0|90.0|-1.76895|0.06334 +2016-07-01|2.0|91.0|-1.59818|0.06048 +2016-07-01|2.0|92.0|-1.42569|0.05731 +2016-07-01|2.0|93.0|-1.25308|0.05382 +2016-07-01|2.0|94.0|-1.08202|0.05001 +2016-07-01|2.0|95.0|-0.91419|0.04586 +2016-07-01|2.0|96.0|-0.75126|0.04137 +2016-07-01|2.0|97.0|-0.59487|0.03654 +2016-07-01|2.0|98.0|-0.44656|0.03139 +2016-07-01|2.0|99.0|-0.30776|0.02592 +2016-07-01|2.0|100.0|-0.17977|0.02015 +2016-07-01|2.0|101.0|-0.06367|0.0141 +2016-07-01|2.0|102.0|0.03963|0.0078 +2016-07-01|2.0|103.0|0.12948|0.00128 +2016-07-01|2.0|104.0|0.20547|-0.00542 +2016-07-01|2.0|105.0|0.26746|-0.01226 +2016-07-01|2.0|106.0|0.31557|-0.0192 +2016-07-01|2.0|107.0|0.3502|-0.02619 +2016-07-01|2.0|108.0|0.37202|-0.03318 +2016-07-01|2.0|109.0|0.38196|-0.04012 +2016-07-01|2.0|110.0|0.38118|-0.04696 +2016-07-01|2.0|111.0|0.37107|-0.05365 +2016-07-01|2.0|112.0|0.35318|-0.06013 +2016-07-01|2.0|113.0|0.32926|-0.06637 +2016-07-01|2.0|114.0|0.30113|-0.07231 +2016-07-01|2.0|115.0|0.27074|-0.07791 +2016-07-01|2.0|116.0|0.24005|-0.08313 +2016-07-01|2.0|117.0|0.21104|-0.08794 +2016-07-01|2.0|118.0|0.18564|-0.09231 +2016-07-01|2.0|119.0|0.16571|-0.09622 +2016-07-01|2.0|120.0|0.15301|-0.09965 +2016-07-01|2.0|121.0|0.14915|-0.10258 +2016-07-01|2.0|122.0|0.15555|-0.10501 +2016-07-01|2.0|123.0|0.17348|-0.10694 +2016-07-01|2.0|124.0|0.20397|-0.10836 +2016-07-01|2.0|125.0|0.24783|-0.1093 +2016-07-01|2.0|126.0|0.30565|-0.10976 +2016-07-01|2.0|127.0|0.3778|-0.10975 +2016-07-01|2.0|128.0|0.46441|-0.1093 +2016-07-01|2.0|129.0|0.56542|-0.10844 +2016-07-01|2.0|130.0|0.68054|-0.10717 +2016-07-01|2.0|131.0|0.80934|-0.10555 +2016-07-01|2.0|132.0|0.95121|-0.10358 +2016-07-01|2.0|133.0|1.10541|-0.1013 +2016-07-01|2.0|134.0|1.27112|-0.09874 +2016-07-01|2.0|135.0|1.4474|-0.09594 +2016-07-01|2.0|136.0|1.63329|-0.09291 +2016-07-01|2.0|137.0|1.82779|-0.08969 +2016-07-01|2.0|138.0|2.02992|-0.0863 +2016-07-01|2.0|139.0|2.23868|-0.08278 +2016-07-01|2.0|140.0|2.45316|-0.07914 +2016-07-01|2.0|141.0|2.67245|-0.07541 +2016-07-01|2.0|142.0|2.89575|-0.0716 +2016-07-01|2.0|143.0|3.12232|-0.06775 +2016-07-01|2.0|144.0|3.35149|-0.06386 +2016-07-01|2.0|145.0|3.58267|-0.05994 +2016-07-01|2.0|146.0|3.81535|-0.05602 +2016-07-01|2.0|147.0|4.04907|-0.05211 +2016-07-01|2.0|148.0|4.28346|-0.04821 +2016-07-01|2.0|149.0|4.51817|-0.04433 +2016-07-01|2.0|150.0|4.75288|-0.04049 +2016-07-01|2.0|151.0|4.98729|-0.03669 +2016-07-01|2.0|152.0|5.22112|-0.03293 +2016-07-01|2.0|153.0|5.45405|-0.02922 +2016-07-01|2.0|154.0|5.68577|-0.02557 +2016-07-01|2.0|155.0|5.91589|-0.02198 +2016-07-01|2.0|156.0|6.14402|-0.01846 +2016-07-01|2.0|157.0|6.36969|-0.015 +2016-07-01|2.0|158.0|6.59237|-0.01162 +2016-07-01|2.0|159.0|6.81151|-0.00831 +2016-07-01|2.0|160.0|7.02646|-0.00509 +2016-07-01|2.0|161.0|7.23655|-0.00195 +2016-07-01|2.0|162.0|7.44106|0.0011 +2016-07-01|2.0|163.0|7.63924|0.00405 +2016-07-01|2.0|164.0|7.83034|0.0069 +2016-07-01|2.0|165.0|8.01358|0.00965 +2016-07-01|2.0|166.0|8.18822|0.01229 +2016-07-01|2.0|167.0|8.35353|0.01481 +2016-07-01|2.0|168.0|8.50883|0.0172 +2016-07-01|2.0|169.0|8.65352|0.01947 +2016-07-01|2.0|170.0|8.78707|0.0216 +2016-07-01|2.0|171.0|8.90903|0.02359 +2016-07-01|2.0|172.0|9.01909|0.02543 +2016-07-01|2.0|173.0|9.117|0.02712 +2016-07-01|2.0|174.0|9.2027|0.02864 +2016-07-01|2.0|175.0|9.27619|0.03 +2016-07-01|2.0|176.0|9.33766|0.03118 +2016-07-01|2.0|177.0|9.38738|0.03217 +2016-07-01|2.0|178.0|9.42577|0.03299 +2016-07-01|2.0|179.0|9.45337|0.03361 +2016-07-01|2.0|-1.0|-4.91289|0.11632 +2016-07-01|2.0|-2.0|-5.25039|0.11587 +2016-07-01|2.0|-3.0|-5.59618|0.11549 +2016-07-01|2.0|-4.0|-5.95066|0.1152 +2016-07-01|2.0|-5.0|-6.31419|0.11496 +2016-07-01|2.0|-6.0|-6.68702|0.11479 +2016-07-01|2.0|-7.0|-7.06931|0.11467 +2016-07-01|2.0|-8.0|-7.46109|0.1146 +2016-07-01|2.0|-9.0|-7.86232|0.11455 +2016-07-01|2.0|-10.0|-8.27278|0.11453 +2016-07-01|2.0|-11.0|-8.69216|0.11453 +2016-07-01|2.0|-12.0|-9.11999|0.11452 +2016-07-01|2.0|-13.0|-9.55569|0.11451 +2016-07-01|2.0|-14.0|-9.99852|0.11448 +2016-07-01|2.0|-15.0|-10.44764|0.11443 +2016-07-01|2.0|-16.0|-10.90206|0.11433 +2016-07-01|2.0|-17.0|-11.3607|0.11418 +2016-07-01|2.0|-18.0|-11.82235|0.11396 +2016-07-01|2.0|-19.0|-12.28571|0.11366 +2016-07-01|2.0|-20.0|-12.74939|0.11326 +2016-07-01|2.0|-21.0|-13.21192|0.11275 +2016-07-01|2.0|-22.0|-13.67177|0.11211 +2016-07-01|2.0|-23.0|-14.12734|0.11132 +2016-07-01|2.0|-24.0|-14.57702|0.11036 +2016-07-01|2.0|-25.0|-15.01913|0.1092 +2016-07-01|2.0|-26.0|-15.45201|0.10784 +2016-07-01|2.0|-27.0|-15.87397|0.10624 +2016-07-01|2.0|-28.0|-16.28333|0.10439 +2016-07-01|2.0|-29.0|-16.67841|0.10227 +2016-07-01|2.0|-30.0|-17.0576|0.09985 +2016-07-01|2.0|-31.0|-17.41926|0.09712 +2016-07-01|2.0|-32.0|-17.76184|0.09406 +2016-07-01|2.0|-33.0|-18.08382|0.09066 +2016-07-01|2.0|-34.0|-18.38373|0.08691 +2016-07-01|2.0|-35.0|-18.66017|0.0828 +2016-07-01|2.0|-36.0|-18.91181|0.07833 +2016-07-01|2.0|-37.0|-19.13738|0.07349 +2016-07-01|2.0|-38.0|-19.33571|0.0683 +2016-07-01|2.0|-39.0|-19.50569|0.06274 +2016-07-01|2.0|-40.0|-19.6463|0.05684 +2016-07-01|2.0|-41.0|-19.75663|0.05062 +2016-07-01|2.0|-42.0|-19.83585|0.04408 +2016-07-01|2.0|-43.0|-19.88322|0.03725 +2016-07-01|2.0|-44.0|-19.89812|0.03016 +2016-07-01|2.0|-45.0|-19.88002|0.02283 +2016-07-01|2.0|-46.0|-19.82851|0.01529 +2016-07-01|2.0|-47.0|-19.74328|0.00758 +2016-07-01|2.0|-48.0|-19.62415|-2.6E-4 +2016-07-01|2.0|-49.0|-19.47104|-0.00821 +2016-07-01|2.0|-50.0|-19.284|-0.01622 +2016-07-01|2.0|-51.0|-19.06318|-0.02426 +2016-07-01|2.0|-52.0|-18.80888|-0.03229 +2016-07-01|2.0|-53.0|-18.52149|-0.04027 +2016-07-01|2.0|-54.0|-18.20156|-0.04816 +2016-07-01|2.0|-55.0|-17.84972|-0.05593 +2016-07-01|2.0|-56.0|-17.46675|-0.06354 +2016-07-01|2.0|-57.0|-17.05355|-0.07096 +2016-07-01|2.0|-58.0|-16.61111|-0.07817 +2016-07-01|2.0|-59.0|-16.14057|-0.08513 +2016-07-01|2.0|-60.0|-15.64316|-0.09182 +2016-07-01|2.0|-61.0|-15.12021|-0.09821 +2016-07-01|2.0|-62.0|-14.57316|-0.1043 +2016-07-01|2.0|-63.0|-14.00355|-0.11005 +2016-07-01|2.0|-64.0|-13.41301|-0.11547 +2016-07-01|2.0|-65.0|-12.80324|-0.12053 +2016-07-01|2.0|-66.0|-12.17602|-0.12524 +2016-07-01|2.0|-67.0|-11.53319|-0.12958 +2016-07-01|2.0|-68.0|-10.87667|-0.13354 +2016-07-01|2.0|-69.0|-10.2084|-0.13714 +2016-07-01|2.0|-70.0|-9.53038|-0.14036 +2016-07-01|2.0|-71.0|-8.84462|-0.14322 +2016-07-01|2.0|-72.0|-8.15318|-0.1457 +2016-07-01|2.0|-73.0|-7.45811|-0.14782 +2016-07-01|2.0|-74.0|-6.76146|-0.14957 +2016-07-01|2.0|-75.0|-6.06527|-0.15097 +2016-07-01|2.0|-76.0|-5.37158|-0.15201 +2016-07-01|2.0|-77.0|-4.68236|-0.15271 +2016-07-01|2.0|-78.0|-3.99958|-0.15307 +2016-07-01|2.0|-79.0|-3.32513|-0.1531 +2016-07-01|2.0|-80.0|-2.66085|-0.1528 +2016-07-01|2.0|-81.0|-2.0085|-0.15219 +2016-07-01|2.0|-82.0|-1.36976|-0.15128 +2016-07-01|2.0|-83.0|-0.74622|-0.15008 +2016-07-01|2.0|-84.0|-0.13937|-0.14861 +2016-07-01|2.0|-85.0|0.44943|-0.14688 +2016-07-01|2.0|-86.0|1.0189|-0.14491 +2016-07-01|2.0|-87.0|1.56794|-0.14272 +2016-07-01|2.0|-88.0|2.09553|-0.14032 +2016-07-01|2.0|-89.0|2.60083|-0.13774 +2016-07-01|2.0|-90.0|3.08311|-0.135 +2016-07-01|2.0|-91.0|3.54182|-0.13213 +2016-07-01|2.0|-92.0|3.97654|-0.12914 +2016-07-01|2.0|-93.0|4.387|-0.12606 +2016-07-01|2.0|-94.0|4.7731|-0.12292 +2016-07-01|2.0|-95.0|5.13488|-0.11974 +2016-07-01|2.0|-96.0|5.47251|-0.11653 +2016-07-01|2.0|-97.0|5.78634|-0.11333 +2016-07-01|2.0|-98.0|6.07683|-0.11015 +2016-07-01|2.0|-99.0|6.3446|-0.107 +2016-07-01|2.0|-100.0|6.59037|-0.10391 +2016-07-01|2.0|-101.0|6.81499|-0.10089 +2016-07-01|2.0|-102.0|7.01942|-0.09794 +2016-07-01|2.0|-103.0|7.2047|-0.09509 +2016-07-01|2.0|-104.0|7.37197|-0.09233 +2016-07-01|2.0|-105.0|7.52242|-0.08967 +2016-07-01|2.0|-106.0|7.65731|-0.08711 +2016-07-01|2.0|-107.0|7.77792|-0.08464 +2016-07-01|2.0|-108.0|7.88557|-0.08227 +2016-07-01|2.0|-109.0|7.98157|-0.07999 +2016-07-01|2.0|-110.0|8.06723|-0.07779 +2016-07-01|2.0|-111.0|8.14383|-0.07566 +2016-07-01|2.0|-112.0|8.21261|-0.0736 +2016-07-01|2.0|-113.0|8.27474|-0.07159 +2016-07-01|2.0|-114.0|8.33134|-0.06961 +2016-07-01|2.0|-115.0|8.38342|-0.06767 +2016-07-01|2.0|-116.0|8.43192|-0.06575 +2016-07-01|2.0|-117.0|8.47767|-0.06384 +2016-07-01|2.0|-118.0|8.52138|-0.06193 +2016-07-01|2.0|-119.0|8.56367|-0.06002 +2016-07-01|2.0|-120.0|8.60501|-0.05809 +2016-07-01|2.0|-121.0|8.64579|-0.05615 +2016-07-01|2.0|-122.0|8.68627|-0.05419 +2016-07-01|2.0|-123.0|8.72659|-0.05222 +2016-07-01|2.0|-124.0|8.76682|-0.05023 +2016-07-01|2.0|-125.0|8.8069|-0.04823 +2016-07-01|2.0|-126.0|8.84671|-0.04623 +2016-07-01|2.0|-127.0|8.88607|-0.04422 +2016-07-01|2.0|-128.0|8.92471|-0.04223 +2016-07-01|2.0|-129.0|8.96234|-0.04025 +2016-07-01|2.0|-130.0|8.99862|-0.0383 +2016-07-01|2.0|-131.0|9.03322|-0.03639 +2016-07-01|2.0|-132.0|9.06577|-0.03451 +2016-07-01|2.0|-133.0|9.09594|-0.03268 +2016-07-01|2.0|-134.0|9.1234|-0.03091 +2016-07-01|2.0|-135.0|9.14786|-0.0292 +2016-07-01|2.0|-136.0|9.16906|-0.02756 +2016-07-01|2.0|-137.0|9.18682|-0.02597 +2016-07-01|2.0|-138.0|9.20098|-0.02446 +2016-07-01|2.0|-139.0|9.21147|-0.023 +2016-07-01|2.0|-140.0|9.21826|-0.0216 +2016-07-01|2.0|-141.0|9.22141|-0.02024 +2016-07-01|2.0|-142.0|9.22104|-0.01893 +2016-07-01|2.0|-143.0|9.21733|-0.01766 +2016-07-01|2.0|-144.0|9.21053|-0.0164 +2016-07-01|2.0|-145.0|9.20096|-0.01515 +2016-07-01|2.0|-146.0|9.18898|-0.0139 +2016-07-01|2.0|-147.0|9.17502|-0.01263 +2016-07-01|2.0|-148.0|9.15953|-0.01134 +2016-07-01|2.0|-149.0|9.143|-0.01001 +2016-07-01|2.0|-150.0|9.12596|-0.00863 +2016-07-01|2.0|-151.0|9.10894|-0.0072 +2016-07-01|2.0|-152.0|9.09247|-0.0057 +2016-07-01|2.0|-153.0|9.0771|-0.00413 +2016-07-01|2.0|-154.0|9.06334|-0.00249 +2016-07-01|2.0|-155.0|9.05169|-7.7E-4 +2016-07-01|2.0|-156.0|9.0426|0.00102 +2016-07-01|2.0|-157.0|9.03648|0.00287 +2016-07-01|2.0|-158.0|9.0337|0.00479 +2016-07-01|2.0|-159.0|9.03453|0.00676 +2016-07-01|2.0|-160.0|9.03919|0.00877 +2016-07-01|2.0|-161.0|9.04782|0.01081 +2016-07-01|2.0|-162.0|9.06046|0.01287 +2016-07-01|2.0|-163.0|9.07706|0.01492 +2016-07-01|2.0|-164.0|9.09746|0.01695 +2016-07-01|2.0|-165.0|9.12143|0.01895 +2016-07-01|2.0|-166.0|9.14861|0.02089 +2016-07-01|2.0|-167.0|9.17855|0.02276 +2016-07-01|2.0|-168.0|9.2107|0.02454 +2016-07-01|2.0|-169.0|9.24443|0.02622 +2016-07-01|2.0|-170.0|9.279|0.02777 +2016-07-01|2.0|-171.0|9.31361|0.02918 +2016-07-01|2.0|-172.0|9.34738|0.03044 +2016-07-01|2.0|-173.0|9.37939|0.03154 +2016-07-01|2.0|-174.0|9.40866|0.03247 +2016-07-01|2.0|-175.0|9.43419|0.03321 +2016-07-01|2.0|-176.0|9.45497|0.03377 +2016-07-01|2.0|-177.0|9.46999|0.03413 +2016-07-01|2.0|-178.0|9.47825|0.0343 +2016-07-01|2.0|-179.0|9.47883|0.03426 +2016-07-01|3.0|0.0|-4.26754|0.11354 +2016-07-01|3.0|1.0|-3.95586|0.114 +2016-07-01|3.0|2.0|-3.65116|0.11456 +2016-07-01|3.0|3.0|-3.35285|0.11522 +2016-07-01|3.0|4.0|-3.06036|0.11597 +2016-07-01|3.0|5.0|-2.77316|0.1168 +2016-07-01|3.0|6.0|-2.49077|0.11769 +2016-07-01|3.0|7.0|-2.21279|0.11863 +2016-07-01|3.0|8.0|-1.93892|0.11959 +2016-07-01|3.0|9.0|-1.66896|0.12055 +2016-07-01|3.0|10.0|-1.40285|0.12148 +2016-07-01|3.0|11.0|-1.14065|0.12233 +2016-07-01|3.0|12.0|-0.88259|0.12308 +2016-07-01|3.0|13.0|-0.62905|0.12369 +2016-07-01|3.0|14.0|-0.38056|0.12412 +2016-07-01|3.0|15.0|-0.1378|0.12432 +2016-07-01|3.0|16.0|0.09839|0.12425 +2016-07-01|3.0|17.0|0.32703|0.12388 +2016-07-01|3.0|18.0|0.54702|0.12318 +2016-07-01|3.0|19.0|0.75714|0.1221 +2016-07-01|3.0|20.0|0.95609|0.12062 +2016-07-01|3.0|21.0|1.1425|0.11873 +2016-07-01|3.0|22.0|1.31498|0.11639 +2016-07-01|3.0|23.0|1.47213|0.11362 +2016-07-01|3.0|24.0|1.61257|0.11041 +2016-07-01|3.0|25.0|1.73499|0.10677 +2016-07-01|3.0|26.0|1.83817|0.10272 +2016-07-01|3.0|27.0|1.92102|0.09828 +2016-07-01|3.0|28.0|1.98259|0.0935 +2016-07-01|3.0|29.0|2.02213|0.08841 +2016-07-01|3.0|30.0|2.03911|0.08308 +2016-07-01|3.0|31.0|2.03321|0.07756 +2016-07-01|3.0|32.0|2.00436|0.07191 +2016-07-01|3.0|33.0|1.95276|0.06621 +2016-07-01|3.0|34.0|1.87886|0.06053 +2016-07-01|3.0|35.0|1.78339|0.05493 +2016-07-01|3.0|36.0|1.66733|0.0495 +2016-07-01|3.0|37.0|1.5319|0.0443 +2016-07-01|3.0|38.0|1.37855|0.0394 +2016-07-01|3.0|39.0|1.20895|0.03488 +2016-07-01|3.0|40.0|1.02494|0.03078 +2016-07-01|3.0|41.0|0.82851|0.02715 +2016-07-01|3.0|42.0|0.62174|0.02405 +2016-07-01|3.0|43.0|0.40682|0.02149 +2016-07-01|3.0|44.0|0.18596|0.01951 +2016-07-01|3.0|45.0|-0.03865|0.01812 +2016-07-01|3.0|46.0|-0.26484|0.01732 +2016-07-01|3.0|47.0|-0.49053|0.01709 +2016-07-01|3.0|48.0|-0.71375|0.01743 +2016-07-01|3.0|49.0|-0.93267|0.01831 +2016-07-01|3.0|50.0|-1.14564|0.01969 +2016-07-01|3.0|51.0|-1.35119|0.02153 +2016-07-01|3.0|52.0|-1.54805|0.02378 +2016-07-01|3.0|53.0|-1.73518|0.02638 +2016-07-01|3.0|54.0|-1.91174|0.02928 +2016-07-01|3.0|55.0|-2.0771|0.03243 +2016-07-01|3.0|56.0|-2.23086|0.03575 +2016-07-01|3.0|57.0|-2.37278|0.0392 +2016-07-01|3.0|58.0|-2.50283|0.0427 +2016-07-01|3.0|59.0|-2.62109|0.04622 +2016-07-01|3.0|60.0|-2.72781|0.04969 +2016-07-01|3.0|61.0|-2.82331|0.05307 +2016-07-01|3.0|62.0|-2.908|0.05632 +2016-07-01|3.0|63.0|-2.98232|0.0594 +2016-07-01|3.0|64.0|-3.04674|0.06229 +2016-07-01|3.0|65.0|-3.10171|0.06495 +2016-07-01|3.0|66.0|-3.14767|0.06738 +2016-07-01|3.0|67.0|-3.18499|0.06956 +2016-07-01|3.0|68.0|-3.21396|0.07149 +2016-07-01|3.0|69.0|-3.23483|0.07316 +2016-07-01|3.0|70.0|-3.24771|0.07457 +2016-07-01|3.0|71.0|-3.25267|0.07575 +2016-07-01|3.0|72.0|-3.24967|0.07668 +2016-07-01|3.0|73.0|-3.23858|0.07739 +2016-07-01|3.0|74.0|-3.21923|0.07789 +2016-07-01|3.0|75.0|-3.19136|0.07818 +2016-07-01|3.0|76.0|-3.15471|0.07829 +2016-07-01|3.0|77.0|-3.10898|0.07822 +2016-07-01|3.0|78.0|-3.0539|0.07798 +2016-07-01|3.0|79.0|-2.98922|0.07758 +2016-07-01|3.0|80.0|-2.91476|0.07702 +2016-07-01|3.0|81.0|-2.83042|0.0763 +2016-07-01|3.0|82.0|-2.73619|0.07543 +2016-07-01|3.0|83.0|-2.63219|0.07439 +2016-07-01|3.0|84.0|-2.51871|0.07317 +2016-07-01|3.0|85.0|-2.39615|0.07178 +2016-07-01|3.0|86.0|-2.2651|0.07018 +2016-07-01|3.0|87.0|-2.12631|0.06838 +2016-07-01|3.0|88.0|-1.98069|0.06634 +2016-07-01|3.0|89.0|-1.82932|0.06406 +2016-07-01|3.0|90.0|-1.67341|0.06151 +2016-07-01|3.0|91.0|-1.51433|0.05868 +2016-07-01|3.0|92.0|-1.35353|0.05555 +2016-07-01|3.0|93.0|-1.19258|0.05211 +2016-07-01|3.0|94.0|-1.03307|0.04836 +2016-07-01|3.0|95.0|-0.87665|0.04427 +2016-07-01|3.0|96.0|-0.72496|0.03985 +2016-07-01|3.0|97.0|-0.57956|0.0351 +2016-07-01|3.0|98.0|-0.44198|0.03003 +2016-07-01|3.0|99.0|-0.3136|0.02464 +2016-07-01|3.0|100.0|-0.19569|0.01895 +2016-07-01|3.0|101.0|-0.08932|0.01298 +2016-07-01|3.0|102.0|0.00465|0.00676 +2016-07-01|3.0|103.0|0.08556|3.3E-4 +2016-07-01|3.0|104.0|0.15302|-0.00629 +2016-07-01|3.0|105.0|0.20689|-0.01306 +2016-07-01|3.0|106.0|0.24729|-0.01992 +2016-07-01|3.0|107.0|0.27462|-0.02684 +2016-07-01|3.0|108.0|0.28954|-0.03376 +2016-07-01|3.0|109.0|0.29295|-0.04064 +2016-07-01|3.0|110.0|0.286|-0.04742 +2016-07-01|3.0|111.0|0.27006|-0.05406 +2016-07-01|3.0|112.0|0.24667|-0.06049 +2016-07-01|3.0|113.0|0.21752|-0.06668 +2016-07-01|3.0|114.0|0.18444|-0.07258 +2016-07-01|3.0|115.0|0.14933|-0.07815 +2016-07-01|3.0|116.0|0.11414|-0.08335 +2016-07-01|3.0|117.0|0.08082|-0.08814 +2016-07-01|3.0|118.0|0.05127|-0.09249 +2016-07-01|3.0|119.0|0.02735|-0.09639 +2016-07-01|3.0|120.0|0.01077|-0.09981 +2016-07-01|3.0|121.0|0.00315|-0.10274 +2016-07-01|3.0|122.0|0.00589|-0.10517 +2016-07-01|3.0|123.0|0.02025|-0.10711 +2016-07-01|3.0|124.0|0.04725|-0.10855 +2016-07-01|3.0|125.0|0.08772|-0.1095 +2016-07-01|3.0|126.0|0.14223|-0.10997 +2016-07-01|3.0|127.0|0.21115|-0.10999 +2016-07-01|3.0|128.0|0.29464|-0.10957 +2016-07-01|3.0|129.0|0.39263|-0.10874 +2016-07-01|3.0|130.0|0.50486|-0.10751 +2016-07-01|3.0|131.0|0.6309|-0.10591 +2016-07-01|3.0|132.0|0.77018|-0.10399 +2016-07-01|3.0|133.0|0.92196|-0.10175 +2016-07-01|3.0|134.0|1.08543|-0.09924 +2016-07-01|3.0|135.0|1.25969|-0.09648 +2016-07-01|3.0|136.0|1.44378|-0.0935 +2016-07-01|3.0|137.0|1.63673|-0.09033 +2016-07-01|3.0|138.0|1.83756|-0.08699 +2016-07-01|3.0|139.0|2.0453|-0.08352 +2016-07-01|3.0|140.0|2.25903|-0.07993 +2016-07-01|3.0|141.0|2.47788|-0.07624 +2016-07-01|3.0|142.0|2.70102|-0.07248 +2016-07-01|3.0|143.0|2.92773|-0.06867 +2016-07-01|3.0|144.0|3.15734|-0.06482 +2016-07-01|3.0|145.0|3.38925|-0.06095 +2016-07-01|3.0|146.0|3.62297|-0.05707 +2016-07-01|3.0|147.0|3.85802|-0.05319 +2016-07-01|3.0|148.0|4.09401|-0.04932 +2016-07-01|3.0|149.0|4.3306|-0.04547 +2016-07-01|3.0|150.0|4.56745|-0.04165 +2016-07-01|3.0|151.0|4.80426|-0.03787 +2016-07-01|3.0|152.0|5.04073|-0.03413 +2016-07-01|3.0|153.0|5.27653|-0.03043 +2016-07-01|3.0|154.0|5.51133|-0.0268 +2016-07-01|3.0|155.0|5.74474|-0.02321 +2016-07-01|3.0|156.0|5.97635|-0.01969 +2016-07-01|3.0|157.0|6.20568|-0.01624 +2016-07-01|3.0|158.0|6.43219|-0.01286 +2016-07-01|3.0|159.0|6.65529|-0.00955 +2016-07-01|3.0|160.0|6.87434|-0.00633 +2016-07-01|3.0|161.0|7.08865|-0.00319 +2016-07-01|3.0|162.0|7.29749|-1.4E-4 +2016-07-01|3.0|163.0|7.50008|0.00282 +2016-07-01|3.0|164.0|7.69566|0.00568 +2016-07-01|3.0|165.0|7.88342|0.00843 +2016-07-01|3.0|166.0|8.06259|0.01107 +2016-07-01|3.0|167.0|8.23245|0.01359 +2016-07-01|3.0|168.0|8.39228|0.01599 +2016-07-01|3.0|169.0|8.54145|0.01825 +2016-07-01|3.0|170.0|8.67941|0.02038 +2016-07-01|3.0|171.0|8.8057|0.02237 +2016-07-01|3.0|172.0|8.91996|0.02421 +2016-07-01|3.0|173.0|9.02195|0.02589 +2016-07-01|3.0|174.0|9.11154|0.0274 +2016-07-01|3.0|175.0|9.18875|0.02875 +2016-07-01|3.0|176.0|9.25372|0.02992 +2016-07-01|3.0|177.0|9.30672|0.03091 +2016-07-01|3.0|178.0|9.34815|0.03171 +2016-07-01|3.0|179.0|9.37852|0.03232 +2016-07-01|3.0|-1.0|-4.58679|0.11317 +2016-07-01|3.0|-2.0|-4.91417|0.11291 +2016-07-01|3.0|-3.0|-5.25019|0.11274 +2016-07-01|3.0|-4.0|-5.59533|0.11265 +2016-07-01|3.0|-5.0|-5.94997|0.11264 +2016-07-01|3.0|-6.0|-6.3144|0.1127 +2016-07-01|3.0|-7.0|-6.68882|0.11282 +2016-07-01|3.0|-8.0|-7.0733|0.11298 +2016-07-01|3.0|-9.0|-7.46779|0.11318 +2016-07-01|3.0|-10.0|-7.87212|0.11341 +2016-07-01|3.0|-11.0|-8.28598|0.11364 +2016-07-01|3.0|-12.0|-8.70893|0.11388 +2016-07-01|3.0|-13.0|-9.14037|0.11411 +2016-07-01|3.0|-14.0|-9.57959|0.11431 +2016-07-01|3.0|-15.0|-10.02574|0.11448 +2016-07-01|3.0|-16.0|-10.47784|0.1146 +2016-07-01|3.0|-17.0|-10.9348|0.11466 +2016-07-01|3.0|-18.0|-11.39541|0.11464 +2016-07-01|3.0|-19.0|-11.85838|0.11454 +2016-07-01|3.0|-20.0|-12.3223|0.11434 +2016-07-01|3.0|-21.0|-12.78571|0.11401 +2016-07-01|3.0|-22.0|-13.24707|0.11355 +2016-07-01|3.0|-23.0|-13.70479|0.11293 +2016-07-01|3.0|-24.0|-14.15725|0.11214 +2016-07-01|3.0|-25.0|-14.60279|0.11115 +2016-07-01|3.0|-26.0|-15.03972|0.10995 +2016-07-01|3.0|-27.0|-15.46636|0.10852 +2016-07-01|3.0|-28.0|-15.88103|0.10683 +2016-07-01|3.0|-29.0|-16.28207|0.10487 +2016-07-01|3.0|-30.0|-16.66782|0.10261 +2016-07-01|3.0|-31.0|-17.03668|0.10004 +2016-07-01|3.0|-32.0|-17.38707|0.09715 +2016-07-01|3.0|-33.0|-17.71746|0.09391 +2016-07-01|3.0|-34.0|-18.02637|0.09033 +2016-07-01|3.0|-35.0|-18.31239|0.08638 +2016-07-01|3.0|-36.0|-18.57416|0.08207 +2016-07-01|3.0|-37.0|-18.81041|0.0774 +2016-07-01|3.0|-38.0|-19.01992|0.07236 +2016-07-01|3.0|-39.0|-19.20156|0.06697 +2016-07-01|3.0|-40.0|-19.3543|0.06123 +2016-07-01|3.0|-41.0|-19.47716|0.05515 +2016-07-01|3.0|-42.0|-19.5693|0.04876 +2016-07-01|3.0|-43.0|-19.62994|0.04207 +2016-07-01|3.0|-44.0|-19.65841|0.03511 +2016-07-01|3.0|-45.0|-19.65416|0.02791 +2016-07-01|3.0|-46.0|-19.61673|0.02048 +2016-07-01|3.0|-47.0|-19.54577|0.01288 +2016-07-01|3.0|-48.0|-19.44106|0.00512 +2016-07-01|3.0|-49.0|-19.30248|-0.00274 +2016-07-01|3.0|-50.0|-19.13005|-0.01069 +2016-07-01|3.0|-51.0|-18.92388|-0.01868 +2016-07-01|3.0|-52.0|-18.68424|-0.02666 +2016-07-01|3.0|-53.0|-18.4115|-0.03462 +2016-07-01|3.0|-54.0|-18.10615|-0.0425 +2016-07-01|3.0|-55.0|-17.76883|-0.05027 +2016-07-01|3.0|-56.0|-17.40027|-0.05791 +2016-07-01|3.0|-57.0|-17.00135|-0.06537 +2016-07-01|3.0|-58.0|-16.57305|-0.07263 +2016-07-01|3.0|-59.0|-16.11648|-0.07966 +2016-07-01|3.0|-60.0|-15.63285|-0.08643 +2016-07-01|3.0|-61.0|-15.12348|-0.09293 +2016-07-01|3.0|-62.0|-14.58978|-0.09914 +2016-07-01|3.0|-63.0|-14.03328|-0.10503 +2016-07-01|3.0|-64.0|-13.45558|-0.11059 +2016-07-01|3.0|-65.0|-12.85835|-0.11582 +2016-07-01|3.0|-66.0|-12.24336|-0.1207 +2016-07-01|3.0|-67.0|-11.61242|-0.12524 +2016-07-01|3.0|-68.0|-10.9674|-0.12941 +2016-07-01|3.0|-69.0|-10.31024|-0.13322 +2016-07-01|3.0|-70.0|-9.64288|-0.13668 +2016-07-01|3.0|-71.0|-8.96732|-0.13977 +2016-07-01|3.0|-72.0|-8.28556|-0.1425 +2016-07-01|3.0|-73.0|-7.59961|-0.14488 +2016-07-01|3.0|-74.0|-6.9115|-0.14689 +2016-07-01|3.0|-75.0|-6.22323|-0.14855 +2016-07-01|3.0|-76.0|-5.53678|-0.14987 +2016-07-01|3.0|-77.0|-4.85412|-0.15083 +2016-07-01|3.0|-78.0|-4.17716|-0.15146 +2016-07-01|3.0|-79.0|-3.50778|-0.15175 +2016-07-01|3.0|-80.0|-2.84778|-0.15171 +2016-07-01|3.0|-81.0|-2.19893|-0.15135 +2016-07-01|3.0|-82.0|-1.56288|-0.15069 +2016-07-01|3.0|-83.0|-0.94122|-0.14972 +2016-07-01|3.0|-84.0|-0.33543|-0.14847 +2016-07-01|3.0|-85.0|0.25308|-0.14695 +2016-07-01|3.0|-86.0|0.82307|-0.14517 +2016-07-01|3.0|-87.0|1.37336|-0.14315 +2016-07-01|3.0|-88.0|1.90295|-0.14092 +2016-07-01|3.0|-89.0|2.41092|-0.13848 +2016-07-01|3.0|-90.0|2.89653|-0.13587 +2016-07-01|3.0|-91.0|3.35917|-0.13311 +2016-07-01|3.0|-92.0|3.79837|-0.13022 +2016-07-01|3.0|-93.0|4.21381|-0.12722 +2016-07-01|3.0|-94.0|4.60532|-0.12413 +2016-07-01|3.0|-95.0|4.97289|-0.12099 +2016-07-01|3.0|-96.0|5.31663|-0.11782 +2016-07-01|3.0|-97.0|5.63683|-0.11463 +2016-07-01|3.0|-98.0|5.93388|-0.11145 +2016-07-01|3.0|-99.0|6.20835|-0.10829 +2016-07-01|3.0|-100.0|6.46089|-0.10518 +2016-07-01|3.0|-101.0|6.69231|-0.10212 +2016-07-01|3.0|-102.0|6.9035|-0.09914 +2016-07-01|3.0|-103.0|7.09545|-0.09624 +2016-07-01|3.0|-104.0|7.26927|-0.09342 +2016-07-01|3.0|-105.0|7.42609|-0.0907 +2016-07-01|3.0|-106.0|7.56713|-0.08808 +2016-07-01|3.0|-107.0|7.69366|-0.08555 +2016-07-01|3.0|-108.0|7.80694|-0.08311 +2016-07-01|3.0|-109.0|7.90828|-0.08077 +2016-07-01|3.0|-110.0|7.99895|-0.0785 +2016-07-01|3.0|-111.0|8.08023|-0.07631 +2016-07-01|3.0|-112.0|8.15334|-0.07419 +2016-07-01|3.0|-113.0|8.21945|-0.07212 +2016-07-01|3.0|-114.0|8.27967|-0.0701 +2016-07-01|3.0|-115.0|8.33502|-0.06811 +2016-07-01|3.0|-116.0|8.38645|-0.06615 +2016-07-01|3.0|-117.0|8.43478|-0.06421 +2016-07-01|3.0|-118.0|8.48076|-0.06227 +2016-07-01|3.0|-119.0|8.52499|-0.06034 +2016-07-01|3.0|-120.0|8.56798|-0.0584 +2016-07-01|3.0|-121.0|8.61012|-0.05645 +2016-07-01|3.0|-122.0|8.6517|-0.05449 +2016-07-01|3.0|-123.0|8.69287|-0.05252 +2016-07-01|3.0|-124.0|8.73371|-0.05054 +2016-07-01|3.0|-125.0|8.77419|-0.04855 +2016-07-01|3.0|-126.0|8.8142|-0.04656 +2016-07-01|3.0|-127.0|8.85356|-0.04458 +2016-07-01|3.0|-128.0|8.89203|-0.04261 +2016-07-01|3.0|-129.0|8.92933|-0.04065 +2016-07-01|3.0|-130.0|8.96513|-0.03873 +2016-07-01|3.0|-131.0|8.9991|-0.03684 +2016-07-01|3.0|-132.0|9.03089|-0.03499 +2016-07-01|3.0|-133.0|9.06017|-0.03319 +2016-07-01|3.0|-134.0|9.08663|-0.03145 +2016-07-01|3.0|-135.0|9.10997|-0.02976 +2016-07-01|3.0|-136.0|9.12997|-0.02814 +2016-07-01|3.0|-137.0|9.14642|-0.02658 +2016-07-01|3.0|-138.0|9.15919|-0.02509 +2016-07-01|3.0|-139.0|9.16822|-0.02365 +2016-07-01|3.0|-140.0|9.17349|-0.02227 +2016-07-01|3.0|-141.0|9.17507|-0.02094 +2016-07-01|3.0|-142.0|9.17309|-0.01964 +2016-07-01|3.0|-143.0|9.16776|-0.01838 +2016-07-01|3.0|-144.0|9.15934|-0.01714 +2016-07-01|3.0|-145.0|9.14816|-0.01591 +2016-07-01|3.0|-146.0|9.1346|-0.01468 +2016-07-01|3.0|-147.0|9.11911|-0.01343 +2016-07-01|3.0|-148.0|9.10216|-0.01216 +2016-07-01|3.0|-149.0|9.08426|-0.01085 +2016-07-01|3.0|-150.0|9.06594|-0.00949 +2016-07-01|3.0|-151.0|9.04775|-0.00808 +2016-07-01|3.0|-152.0|9.03025|-0.0066 +2016-07-01|3.0|-153.0|9.01399|-0.00505 +2016-07-01|3.0|-154.0|8.99948|-0.00344 +2016-07-01|3.0|-155.0|8.98723|-0.00175 +2016-07-01|3.0|-156.0|8.9777|1.0E-5 +2016-07-01|3.0|-157.0|8.97129|0.00184 +2016-07-01|3.0|-158.0|8.96836|0.00373 +2016-07-01|3.0|-159.0|8.96919|0.00567 +2016-07-01|3.0|-160.0|8.97397|0.00766 +2016-07-01|3.0|-161.0|8.98283|0.00967 +2016-07-01|3.0|-162.0|8.99579|0.01169 +2016-07-01|3.0|-163.0|9.01277|0.01372 +2016-07-01|3.0|-164.0|9.03362|0.01573 +2016-07-01|3.0|-165.0|9.05804|0.0177 +2016-07-01|3.0|-166.0|9.08567|0.01963 +2016-07-01|3.0|-167.0|9.11602|0.02148 +2016-07-01|3.0|-168.0|9.14852|0.02324 +2016-07-01|3.0|-169.0|9.1825|0.0249 +2016-07-01|3.0|-170.0|9.2172|0.02645 +2016-07-01|3.0|-171.0|9.25178|0.02785 +2016-07-01|3.0|-172.0|9.28535|0.02911 +2016-07-01|3.0|-173.0|9.31695|0.0302 +2016-07-01|3.0|-174.0|9.34559|0.03113 +2016-07-01|3.0|-175.0|9.37024|0.03188 +2016-07-01|3.0|-176.0|9.38989|0.03244 +2016-07-01|3.0|-177.0|9.40351|0.03281 +2016-07-01|3.0|-178.0|9.41011|0.03298 +2016-07-01|3.0|-179.0|9.40872|0.03296 +2016-07-01|4.0|0.0|-3.96929|0.11043 +2016-07-01|4.0|1.0|-3.66764|0.11075 +2016-07-01|4.0|2.0|-3.37316|0.11119 +2016-07-01|4.0|3.0|-3.0852|0.11174 +2016-07-01|4.0|4.0|-2.80313|0.11239 +2016-07-01|4.0|5.0|-2.52636|0.11315 +2016-07-01|4.0|6.0|-2.25434|0.11399 +2016-07-01|4.0|7.0|-1.98662|0.1149 +2016-07-01|4.0|8.0|-1.72282|0.11586 +2016-07-01|4.0|9.0|-1.46269|0.11683 +2016-07-01|4.0|10.0|-1.20609|0.11779 +2016-07-01|4.0|11.0|-0.95304|0.11871 +2016-07-01|4.0|12.0|-0.7037|0.11954 +2016-07-01|4.0|13.0|-0.45838|0.12026 +2016-07-01|4.0|14.0|-0.21755|0.12081 +2016-07-01|4.0|15.0|0.01815|0.12116 +2016-07-01|4.0|16.0|0.24792|0.12127 +2016-07-01|4.0|17.0|0.47084|0.12109 +2016-07-01|4.0|18.0|0.68584|0.12059 +2016-07-01|4.0|19.0|0.89173|0.11974 +2016-07-01|4.0|20.0|1.08725|0.11851 +2016-07-01|4.0|21.0|1.27104|0.11686 +2016-07-01|4.0|22.0|1.44172|0.1148 +2016-07-01|4.0|23.0|1.5979|0.1123 +2016-07-01|4.0|24.0|1.73819|0.10936 +2016-07-01|4.0|25.0|1.86127|0.106 +2016-07-01|4.0|26.0|1.96591|0.10223 +2016-07-01|4.0|27.0|2.05097|0.09807 +2016-07-01|4.0|28.0|2.1155|0.09356 +2016-07-01|4.0|29.0|2.15869|0.08874 +2016-07-01|4.0|30.0|2.17995|0.08366 +2016-07-01|4.0|31.0|2.17892|0.07837 +2016-07-01|4.0|32.0|2.15547|0.07294 +2016-07-01|4.0|33.0|2.10973|0.06744 +2016-07-01|4.0|34.0|2.04209|0.06194 +2016-07-01|4.0|35.0|1.9532|0.0565 +2016-07-01|4.0|36.0|1.84397|0.0512 +2016-07-01|4.0|37.0|1.71555|0.04612 +2016-07-01|4.0|38.0|1.56932|0.04131 +2016-07-01|4.0|39.0|1.40688|0.03685 +2016-07-01|4.0|40.0|1.23|0.03279 +2016-07-01|4.0|41.0|1.0406|0.02919 +2016-07-01|4.0|42.0|0.84071|0.02608 +2016-07-01|4.0|43.0|0.63247|0.0235 +2016-07-01|4.0|44.0|0.41803|0.02148 +2016-07-01|4.0|45.0|0.19954|0.02002 +2016-07-01|4.0|46.0|-0.02087|0.01914 +2016-07-01|4.0|47.0|-0.24114|0.01883 +2016-07-01|4.0|48.0|-0.45934|0.01907 +2016-07-01|4.0|49.0|-0.67366|0.01984 +2016-07-01|4.0|50.0|-0.88245|0.0211 +2016-07-01|4.0|51.0|-1.08426|0.02282 +2016-07-01|4.0|52.0|-1.27782|0.02494 +2016-07-01|4.0|53.0|-1.46209|0.02742 +2016-07-01|4.0|54.0|-1.63624|0.03019 +2016-07-01|4.0|55.0|-1.79963|0.0332 +2016-07-01|4.0|56.0|-1.95185|0.03639 +2016-07-01|4.0|57.0|-2.09267|0.03971 +2016-07-01|4.0|58.0|-2.22203|0.04309 +2016-07-01|4.0|59.0|-2.34002|0.04648 +2016-07-01|4.0|60.0|-2.44688|0.04983 +2016-07-01|4.0|61.0|-2.54291|0.05309 +2016-07-01|4.0|62.0|-2.62853|0.05623 +2016-07-01|4.0|63.0|-2.70418|0.0592 +2016-07-01|4.0|64.0|-2.77033|0.06198 +2016-07-01|4.0|65.0|-2.82742|0.06454 +2016-07-01|4.0|66.0|-2.87589|0.06687 +2016-07-01|4.0|67.0|-2.91611|0.06895 +2016-07-01|4.0|68.0|-2.9484|0.07078 +2016-07-01|4.0|69.0|-2.97298|0.07236 +2016-07-01|4.0|70.0|-2.99001|0.07369 +2016-07-01|4.0|71.0|-2.99952|0.07478 +2016-07-01|4.0|72.0|-3.0015|0.07563 +2016-07-01|4.0|73.0|-2.99584|0.07626 +2016-07-01|4.0|74.0|-2.98233|0.07668 +2016-07-01|4.0|75.0|-2.96076|0.0769 +2016-07-01|4.0|76.0|-2.93085|0.07694 +2016-07-01|4.0|77.0|-2.89231|0.07681 +2016-07-01|4.0|78.0|-2.84486|0.07651 +2016-07-01|4.0|79.0|-2.78824|0.07605 +2016-07-01|4.0|80.0|-2.72227|0.07544 +2016-07-01|4.0|81.0|-2.64682|0.07468 +2016-07-01|4.0|82.0|-2.56189|0.07377 +2016-07-01|4.0|83.0|-2.46757|0.0727 +2016-07-01|4.0|84.0|-2.36412|0.07146 +2016-07-01|4.0|85.0|-2.25191|0.07005 +2016-07-01|4.0|86.0|-2.1315|0.06844 +2016-07-01|4.0|87.0|-2.0036|0.06663 +2016-07-01|4.0|88.0|-1.86909|0.0646 +2016-07-01|4.0|89.0|-1.729|0.06233 +2016-07-01|4.0|90.0|-1.5845|0.0598 +2016-07-01|4.0|91.0|-1.4369|0.057 +2016-07-01|4.0|92.0|-1.28762|0.05391 +2016-07-01|4.0|93.0|-1.13815|0.05052 +2016-07-01|4.0|94.0|-0.99007|0.04681 +2016-07-01|4.0|95.0|-0.84495|0.04278 +2016-07-01|4.0|96.0|-0.70438|0.03842 +2016-07-01|4.0|97.0|-0.56991|0.03374 +2016-07-01|4.0|98.0|-0.44299|0.02874 +2016-07-01|4.0|99.0|-0.32498|0.02342 +2016-07-01|4.0|100.0|-0.21711|0.01781 +2016-07-01|4.0|101.0|-0.12043|0.01192 +2016-07-01|4.0|102.0|-0.03578|0.00579 +2016-07-01|4.0|103.0|0.03622|-5.7E-4 +2016-07-01|4.0|104.0|0.09517|-0.00711 +2016-07-01|4.0|105.0|0.14093|-0.0138 +2016-07-01|4.0|106.0|0.17364|-0.02058 +2016-07-01|4.0|107.0|0.19369|-0.02743 +2016-07-01|4.0|108.0|0.20172|-0.03428 +2016-07-01|4.0|109.0|0.19862|-0.04109 +2016-07-01|4.0|110.0|0.18553|-0.04781 +2016-07-01|4.0|111.0|0.16378|-0.05439 +2016-07-01|4.0|112.0|0.1349|-0.06077 +2016-07-01|4.0|113.0|0.10056|-0.06692 +2016-07-01|4.0|114.0|0.06255|-0.07277 +2016-07-01|4.0|115.0|0.02275|-0.0783 +2016-07-01|4.0|116.0|-0.01693|-0.08347 +2016-07-01|4.0|117.0|-0.05456|-0.08823 +2016-07-01|4.0|118.0|-0.08824|-0.09256 +2016-07-01|4.0|119.0|-0.11617|-0.09645 +2016-07-01|4.0|120.0|-0.13663|-0.09986 +2016-07-01|4.0|121.0|-0.14804|-0.10278 +2016-07-01|4.0|122.0|-0.14899|-0.10521 +2016-07-01|4.0|123.0|-0.13825|-0.10715 +2016-07-01|4.0|124.0|-0.11479|-0.1086 +2016-07-01|4.0|125.0|-0.0778|-0.10957 +2016-07-01|4.0|126.0|-0.02669|-0.11007 +2016-07-01|4.0|127.0|0.03892|-0.11011 +2016-07-01|4.0|128.0|0.11918|-0.10972 +2016-07-01|4.0|129.0|0.21404|-0.10891 +2016-07-01|4.0|130.0|0.32327|-0.10772 +2016-07-01|4.0|131.0|0.44644|-0.10617 +2016-07-01|4.0|132.0|0.583|-0.10428 +2016-07-01|4.0|133.0|0.73223|-0.1021 +2016-07-01|4.0|134.0|0.89335|-0.09963 +2016-07-01|4.0|135.0|1.06547|-0.09692 +2016-07-01|4.0|136.0|1.24766|-0.094 +2016-07-01|4.0|137.0|1.43896|-0.09088 +2016-07-01|4.0|138.0|1.6384|-0.0876 +2016-07-01|4.0|139.0|1.84504|-0.08418 +2016-07-01|4.0|140.0|2.05796|-0.08064 +2016-07-01|4.0|141.0|2.2763|-0.07701 +2016-07-01|4.0|142.0|2.49926|-0.0733 +2016-07-01|4.0|143.0|2.72609|-0.06954 +2016-07-01|4.0|144.0|2.95614|-0.06574 +2016-07-01|4.0|145.0|3.18881|-0.06191 +2016-07-01|4.0|146.0|3.4236|-0.05807 +2016-07-01|4.0|147.0|3.66002|-0.05423 +2016-07-01|4.0|148.0|3.8977|-0.0504 +2016-07-01|4.0|149.0|4.13625|-0.04658 +2016-07-01|4.0|150.0|4.37535|-0.04279 +2016-07-01|4.0|151.0|4.61468|-0.03904 +2016-07-01|4.0|152.0|4.85392|-0.03532 +2016-07-01|4.0|153.0|5.09274|-0.03164 +2016-07-01|4.0|154.0|5.33079|-0.02802 +2016-07-01|4.0|155.0|5.56767|-0.02445 +2016-07-01|4.0|156.0|5.80295|-0.02095 +2016-07-01|4.0|157.0|6.03613|-0.0175 +2016-07-01|4.0|158.0|6.26668|-0.01413 +2016-07-01|4.0|159.0|6.49399|-0.01082 +2016-07-01|4.0|160.0|6.71739|-0.0076 +2016-07-01|4.0|161.0|6.93618|-0.00446 +2016-07-01|4.0|162.0|7.14961|-0.00141 +2016-07-01|4.0|163.0|7.3569|0.00154 +2016-07-01|4.0|164.0|7.55724|0.0044 +2016-07-01|4.0|165.0|7.74984|0.00715 +2016-07-01|4.0|166.0|7.93389|0.00978 +2016-07-01|4.0|167.0|8.10864|0.0123 +2016-07-01|4.0|168.0|8.27336|0.01469 +2016-07-01|4.0|169.0|8.4274|0.01696 +2016-07-01|4.0|170.0|8.57018|0.01908 +2016-07-01|4.0|171.0|8.7012|0.02106 +2016-07-01|4.0|172.0|8.8201|0.02289 +2016-07-01|4.0|173.0|8.92659|0.02456 +2016-07-01|4.0|174.0|9.02054|0.02606 +2016-07-01|4.0|175.0|9.10194|0.02739 +2016-07-01|4.0|176.0|9.1709|0.02855 +2016-07-01|4.0|177.0|9.22766|0.02953 +2016-07-01|4.0|178.0|9.27262|0.03032 +2016-07-01|4.0|179.0|9.30627|0.03091 +2016-07-01|4.0|-1.0|-4.27874|0.11023 +2016-07-01|4.0|-2.0|-4.59661|0.11014 +2016-07-01|4.0|-3.0|-4.92345|0.11015 +2016-07-01|4.0|-4.0|-5.25978|0.11026 +2016-07-01|4.0|-5.0|-5.60602|0.11045 +2016-07-01|4.0|-6.0|-5.96248|0.11072 +2016-07-01|4.0|-7.0|-6.3294|0.11105 +2016-07-01|4.0|-8.0|-6.70686|0.11143 +2016-07-01|4.0|-9.0|-7.09485|0.11185 +2016-07-01|4.0|-10.0|-7.49319|0.11229 +2016-07-01|4.0|-11.0|-7.9016|0.11274 +2016-07-01|4.0|-12.0|-8.31964|0.11319 +2016-07-01|4.0|-13.0|-8.74671|0.11363 +2016-07-01|4.0|-14.0|-9.18212|0.11403 +2016-07-01|4.0|-15.0|-9.62501|0.1144 +2016-07-01|4.0|-16.0|-10.0744|0.11472 +2016-07-01|4.0|-17.0|-10.52921|0.11497 +2016-07-01|4.0|-18.0|-10.98822|0.11513 +2016-07-01|4.0|-19.0|-11.45015|0.11521 +2016-07-01|4.0|-20.0|-11.9136|0.11518 +2016-07-01|4.0|-21.0|-12.3771|0.11502 +2016-07-01|4.0|-22.0|-12.83913|0.11472 +2016-07-01|4.0|-23.0|-13.2981|0.11426 +2016-07-01|4.0|-24.0|-13.75238|0.11363 +2016-07-01|4.0|-25.0|-14.20033|0.1128 +2016-07-01|4.0|-26.0|-14.64028|0.11176 +2016-07-01|4.0|-27.0|-15.07054|0.11048 +2016-07-01|4.0|-28.0|-15.48945|0.10895 +2016-07-01|4.0|-29.0|-15.89535|0.10715 +2016-07-01|4.0|-30.0|-16.28658|0.10505 +2016-07-01|4.0|-31.0|-16.66155|0.10265 +2016-07-01|4.0|-32.0|-17.01868|0.09992 +2016-07-01|4.0|-33.0|-17.35644|0.09686 +2016-07-01|4.0|-34.0|-17.67334|0.09344 +2016-07-01|4.0|-35.0|-17.96797|0.08967 +2016-07-01|4.0|-36.0|-18.23895|0.08554 +2016-07-01|4.0|-37.0|-18.48498|0.08104 +2016-07-01|4.0|-38.0|-18.70484|0.07618 +2016-07-01|4.0|-39.0|-18.89737|0.07096 +2016-07-01|4.0|-40.0|-19.06151|0.06539 +2016-07-01|4.0|-41.0|-19.19626|0.05948 +2016-07-01|4.0|-42.0|-19.30073|0.05325 +2016-07-01|4.0|-43.0|-19.37411|0.04672 +2016-07-01|4.0|-44.0|-19.4157|0.0399 +2016-07-01|4.0|-45.0|-19.4249|0.03284 +2016-07-01|4.0|-46.0|-19.40121|0.02554 +2016-07-01|4.0|-47.0|-19.34425|0.01806 +2016-07-01|4.0|-48.0|-19.25374|0.01041 +2016-07-01|4.0|-49.0|-19.12953|0.00263 +2016-07-01|4.0|-50.0|-18.9716|-0.00523 +2016-07-01|4.0|-51.0|-18.78002|-0.01315 +2016-07-01|4.0|-52.0|-18.55502|-0.02109 +2016-07-01|4.0|-53.0|-18.29693|-0.02901 +2016-07-01|4.0|-54.0|-18.00622|-0.03687 +2016-07-01|4.0|-55.0|-17.68348|-0.04464 +2016-07-01|4.0|-56.0|-17.32943|-0.05229 +2016-07-01|4.0|-57.0|-16.9449|-0.05978 +2016-07-01|4.0|-58.0|-16.53087|-0.06709 +2016-07-01|4.0|-59.0|-16.08841|-0.07418 +2016-07-01|4.0|-60.0|-15.6187|-0.08104 +2016-07-01|4.0|-61.0|-15.12304|-0.08763 +2016-07-01|4.0|-62.0|-14.60283|-0.09395 +2016-07-01|4.0|-63.0|-14.05956|-0.09997 +2016-07-01|4.0|-64.0|-13.49481|-0.10568 +2016-07-01|4.0|-65.0|-12.91024|-0.11107 +2016-07-01|4.0|-66.0|-12.30757|-0.11613 +2016-07-01|4.0|-67.0|-11.68861|-0.12085 +2016-07-01|4.0|-68.0|-11.05518|-0.12523 +2016-07-01|4.0|-69.0|-10.40918|-0.12926 +2016-07-01|4.0|-70.0|-9.75254|-0.13294 +2016-07-01|4.0|-71.0|-9.08721|-0.13627 +2016-07-01|4.0|-72.0|-8.41515|-0.13925 +2016-07-01|4.0|-73.0|-7.73835|-0.14187 +2016-07-01|4.0|-74.0|-7.05878|-0.14414 +2016-07-01|4.0|-75.0|-6.37842|-0.14606 +2016-07-01|4.0|-76.0|-5.69921|-0.14764 +2016-07-01|4.0|-77.0|-5.02309|-0.14887 +2016-07-01|4.0|-78.0|-4.35193|-0.14975 +2016-07-01|4.0|-79.0|-3.68758|-0.1503 +2016-07-01|4.0|-80.0|-3.03185|-0.15052 +2016-07-01|4.0|-81.0|-2.38645|-0.15041 +2016-07-01|4.0|-82.0|-1.75304|-0.14998 +2016-07-01|4.0|-83.0|-1.13321|-0.14925 +2016-07-01|4.0|-84.0|-0.52844|-0.14821 +2016-07-01|4.0|-85.0|0.05987|-0.14689 +2016-07-01|4.0|-86.0|0.63043|-0.1453 +2016-07-01|4.0|-87.0|1.18207|-0.14346 +2016-07-01|4.0|-88.0|1.71374|-0.14139 +2016-07-01|4.0|-89.0|2.2245|-0.13909 +2016-07-01|4.0|-90.0|2.71356|-0.13661 +2016-07-01|4.0|-91.0|3.18026|-0.13396 +2016-07-01|4.0|-92.0|3.62409|-0.13116 +2016-07-01|4.0|-93.0|4.04467|-0.12823 +2016-07-01|4.0|-94.0|4.44178|-0.12521 +2016-07-01|4.0|-95.0|4.81533|-0.12212 +2016-07-01|4.0|-96.0|5.1654|-0.11897 +2016-07-01|4.0|-97.0|5.4922|-0.1158 +2016-07-01|4.0|-98.0|5.79607|-0.11262 +2016-07-01|4.0|-99.0|6.0775|-0.10946 +2016-07-01|4.0|-100.0|6.3371|-0.10633 +2016-07-01|4.0|-101.0|6.57562|-0.10324 +2016-07-01|4.0|-102.0|6.79389|-0.10022 +2016-07-01|4.0|-103.0|6.99286|-0.09728 +2016-07-01|4.0|-104.0|7.17356|-0.09442 +2016-07-01|4.0|-105.0|7.33712|-0.09164 +2016-07-01|4.0|-106.0|7.4847|-0.08896 +2016-07-01|4.0|-107.0|7.61752|-0.08637 +2016-07-01|4.0|-108.0|7.73683|-0.08388 +2016-07-01|4.0|-109.0|7.8439|-0.08147 +2016-07-01|4.0|-110.0|7.93999|-0.07915 +2016-07-01|4.0|-111.0|8.02635|-0.0769 +2016-07-01|4.0|-112.0|8.10419|-0.07473 +2016-07-01|4.0|-113.0|8.17467|-0.07261 +2016-07-01|4.0|-114.0|8.2389|-0.07055 +2016-07-01|4.0|-115.0|8.29791|-0.06852 +2016-07-01|4.0|-116.0|8.35264|-0.06653 +2016-07-01|4.0|-117.0|8.40392|-0.06456 +2016-07-01|4.0|-118.0|8.45249|-0.0626 +2016-07-01|4.0|-119.0|8.499|-0.06065 +2016-07-01|4.0|-120.0|8.54394|-0.0587 +2016-07-01|4.0|-121.0|8.58774|-0.05675 +2016-07-01|4.0|-122.0|8.63067|-0.05479 +2016-07-01|4.0|-123.0|8.67294|-0.05283 +2016-07-01|4.0|-124.0|8.71461|-0.05086 +2016-07-01|4.0|-125.0|8.75568|-0.0489 +2016-07-01|4.0|-126.0|8.79605|-0.04693 +2016-07-01|4.0|-127.0|8.83557|-0.04497 +2016-07-01|4.0|-128.0|8.874|-0.04302 +2016-07-01|4.0|-129.0|8.91106|-0.0411 +2016-07-01|4.0|-130.0|8.94645|-0.0392 +2016-07-01|4.0|-131.0|8.97985|-0.03734 +2016-07-01|4.0|-132.0|9.01091|-0.03553 +2016-07-01|4.0|-133.0|9.03932|-0.03376 +2016-07-01|4.0|-134.0|9.06477|-0.03204 +2016-07-01|4.0|-135.0|9.08698|-0.03038 +2016-07-01|4.0|-136.0|9.10572|-0.02879 +2016-07-01|4.0|-137.0|9.12081|-0.02725 +2016-07-01|4.0|-138.0|9.13213|-0.02578 +2016-07-01|4.0|-139.0|9.13961|-0.02437 +2016-07-01|4.0|-140.0|9.14327|-0.023 +2016-07-01|4.0|-141.0|9.14318|-0.02169 +2016-07-01|4.0|-142.0|9.13949|-0.02042 +2016-07-01|4.0|-143.0|9.13242|-0.01917 +2016-07-01|4.0|-144.0|9.12225|-0.01795 +2016-07-01|4.0|-145.0|9.10933|-0.01673 +2016-07-01|4.0|-146.0|9.09406|-0.01552 +2016-07-01|4.0|-147.0|9.0769|-0.01429 +2016-07-01|4.0|-148.0|9.05834|-0.01303 +2016-07-01|4.0|-149.0|9.0389|-0.01174 +2016-07-01|4.0|-150.0|9.01914|-0.0104 +2016-07-01|4.0|-151.0|8.99963|-0.00901 +2016-07-01|4.0|-152.0|8.98092|-0.00755 +2016-07-01|4.0|-153.0|8.96358|-0.00603 +2016-07-01|4.0|-154.0|8.94813|-0.00444 +2016-07-01|4.0|-155.0|8.93509|-0.00278 +2016-07-01|4.0|-156.0|8.92491|-0.00105 +2016-07-01|4.0|-157.0|8.91799|7.5E-4 +2016-07-01|4.0|-158.0|8.91469|0.00261 +2016-07-01|4.0|-159.0|8.91527|0.00452 +2016-07-01|4.0|-160.0|8.91992|0.00647 +2016-07-01|4.0|-161.0|8.92874|0.00845 +2016-07-01|4.0|-162.0|8.94175|0.01044 +2016-07-01|4.0|-163.0|8.95883|0.01244 +2016-07-01|4.0|-164.0|8.9798|0.01442 +2016-07-01|4.0|-165.0|9.00436|0.01637 +2016-07-01|4.0|-166.0|9.0321|0.01827 +2016-07-01|4.0|-167.0|9.0625|0.0201 +2016-07-01|4.0|-168.0|9.09498|0.02184 +2016-07-01|4.0|-169.0|9.12881|0.02349 +2016-07-01|4.0|-170.0|9.16323|0.02501 +2016-07-01|4.0|-171.0|9.19736|0.02641 +2016-07-01|4.0|-172.0|9.23029|0.02766 +2016-07-01|4.0|-173.0|9.26103|0.02875 +2016-07-01|4.0|-174.0|9.28857|0.02967 +2016-07-01|4.0|-175.0|9.31188|0.03042 +2016-07-01|4.0|-176.0|9.32991|0.03099 +2016-07-01|4.0|-177.0|9.34164|0.03136 +2016-07-01|4.0|-178.0|9.34606|0.03154 +2016-07-01|4.0|-179.0|9.34222|0.03153 +2016-07-01|5.0|0.0|-3.68751|0.10755 +2016-07-01|5.0|1.0|-3.39524|0.10774 +2016-07-01|5.0|2.0|-3.11032|0.10805 +2016-07-01|5.0|3.0|-2.83204|0.10849 +2016-07-01|5.0|4.0|-2.55974|0.10906 +2016-07-01|5.0|5.0|-2.29275|0.10975 +2016-07-01|5.0|6.0|-2.03048|0.11053 +2016-07-01|5.0|7.0|-1.77242|0.11141 +2016-07-01|5.0|8.0|-1.51814|0.11235 +2016-07-01|5.0|9.0|-1.26731|0.11332 +2016-07-01|5.0|10.0|-1.01975|0.11431 +2016-07-01|5.0|11.0|-0.77541|0.11528 +2016-07-01|5.0|12.0|-0.5344|0.11618 +2016-07-01|5.0|13.0|-0.29696|0.11698 +2016-07-01|5.0|14.0|-0.06353|0.11765 +2016-07-01|5.0|15.0|0.16531|0.11813 +2016-07-01|5.0|16.0|0.38882|0.11839 +2016-07-01|5.0|17.0|0.60612|0.11838 +2016-07-01|5.0|18.0|0.81616|0.11807 +2016-07-01|5.0|19.0|1.0178|0.11742 +2016-07-01|5.0|20.0|1.20979|0.11641 +2016-07-01|5.0|21.0|1.39082|0.115 +2016-07-01|5.0|22.0|1.55951|0.11317 +2016-07-01|5.0|23.0|1.71446|0.11092 +2016-07-01|5.0|24.0|1.85432|0.10825 +2016-07-01|5.0|25.0|1.97773|0.10515 +2016-07-01|5.0|26.0|2.08345|0.10164 +2016-07-01|5.0|27.0|2.17033|0.09775 +2016-07-01|5.0|28.0|2.23738|0.09349 +2016-07-01|5.0|29.0|2.28376|0.08892 +2016-07-01|5.0|30.0|2.30885|0.08408 +2016-07-01|5.0|31.0|2.31221|0.07903 +2016-07-01|5.0|32.0|2.29367|0.07382 +2016-07-01|5.0|33.0|2.25331|0.06852 +2016-07-01|5.0|34.0|2.19145|0.06319 +2016-07-01|5.0|35.0|2.10867|0.05791 +2016-07-01|5.0|36.0|2.00581|0.05276 +2016-07-01|5.0|37.0|1.88396|0.04779 +2016-07-01|5.0|38.0|1.74444|0.04308 +2016-07-01|5.0|39.0|1.58876|0.03869 +2016-07-01|5.0|40.0|1.41865|0.03468 +2016-07-01|5.0|41.0|1.23594|0.0311 +2016-07-01|5.0|42.0|1.04264|0.028 +2016-07-01|5.0|43.0|0.8408|0.0254 +2016-07-01|5.0|44.0|0.63253|0.02335 +2016-07-01|5.0|45.0|0.41996|0.02185 +2016-07-01|5.0|46.0|0.20516|0.0209 +2016-07-01|5.0|47.0|-0.00984|0.02051 +2016-07-01|5.0|48.0|-0.22313|0.02066 +2016-07-01|5.0|49.0|-0.43291|0.02133 +2016-07-01|5.0|50.0|-0.63757|0.02249 +2016-07-01|5.0|51.0|-0.83565|0.02409 +2016-07-01|5.0|52.0|-1.0259|0.02609 +2016-07-01|5.0|53.0|-1.20727|0.02844 +2016-07-01|5.0|54.0|-1.37893|0.03109 +2016-07-01|5.0|55.0|-1.54026|0.03398 +2016-07-01|5.0|56.0|-1.69081|0.03705 +2016-07-01|5.0|57.0|-1.83037|0.04024 +2016-07-01|5.0|58.0|-1.95886|0.0435 +2016-07-01|5.0|59.0|-2.07637|0.04677 +2016-07-01|5.0|60.0|-2.18313|0.05001 +2016-07-01|5.0|61.0|-2.27945|0.05316 +2016-07-01|5.0|62.0|-2.36573|0.05619 +2016-07-01|5.0|63.0|-2.4424|0.05906 +2016-07-01|5.0|64.0|-2.50994|0.06174 +2016-07-01|5.0|65.0|-2.5688|0.0642 +2016-07-01|5.0|66.0|-2.61942|0.06644 +2016-07-01|5.0|67.0|-2.66216|0.06843 +2016-07-01|5.0|68.0|-2.69736|0.07017 +2016-07-01|5.0|69.0|-2.72524|0.07167 +2016-07-01|5.0|70.0|-2.74597|0.07292 +2016-07-01|5.0|71.0|-2.75959|0.07392 +2016-07-01|5.0|72.0|-2.7661|0.0747 +2016-07-01|5.0|73.0|-2.76539|0.07526 +2016-07-01|5.0|74.0|-2.75727|0.07561 +2016-07-01|5.0|75.0|-2.74153|0.07577 +2016-07-01|5.0|76.0|-2.71789|0.07574 +2016-07-01|5.0|77.0|-2.68608|0.07555 +2016-07-01|5.0|78.0|-2.64579|0.07519 +2016-07-01|5.0|79.0|-2.59679|0.07468 +2016-07-01|5.0|80.0|-2.53887|0.07402 +2016-07-01|5.0|81.0|-2.47191|0.07322 +2016-07-01|5.0|82.0|-2.39587|0.07227 +2016-07-01|5.0|83.0|-2.31084|0.07117 +2016-07-01|5.0|84.0|-2.21705|0.0699 +2016-07-01|5.0|85.0|-2.11485|0.06847 +2016-07-01|5.0|86.0|-2.00476|0.06685 +2016-07-01|5.0|87.0|-1.88746|0.06503 +2016-07-01|5.0|88.0|-1.76378|0.063 +2016-07-01|5.0|89.0|-1.63472|0.06074 +2016-07-01|5.0|90.0|-1.50141|0.05823 +2016-07-01|5.0|91.0|-1.3651|0.05545 +2016-07-01|5.0|92.0|-1.22715|0.05239 +2016-07-01|5.0|93.0|-1.08903|0.04903 +2016-07-01|5.0|94.0|-0.95224|0.04536 +2016-07-01|5.0|95.0|-0.81831|0.04138 +2016-07-01|5.0|96.0|-0.68879|0.03708 +2016-07-01|5.0|97.0|-0.56516|0.03246 +2016-07-01|5.0|98.0|-0.44885|0.02752 +2016-07-01|5.0|99.0|-0.34117|0.02227 +2016-07-01|5.0|100.0|-0.24332|0.01674 +2016-07-01|5.0|101.0|-0.15631|0.01093 +2016-07-01|5.0|102.0|-0.08096|0.00487 +2016-07-01|5.0|103.0|-0.01788|-0.00141 +2016-07-01|5.0|104.0|0.03255|-0.00787 +2016-07-01|5.0|105.0|0.07021|-0.01448 +2016-07-01|5.0|106.0|0.09522|-0.02119 +2016-07-01|5.0|107.0|0.10798|-0.02796 +2016-07-01|5.0|108.0|0.10911|-0.03474 +2016-07-01|5.0|109.0|0.09949|-0.04148 +2016-07-01|5.0|110.0|0.08025|-0.04814 +2016-07-01|5.0|111.0|0.05269|-0.05465 +2016-07-01|5.0|112.0|0.01832|-0.06098 +2016-07-01|5.0|113.0|-0.02123|-0.06707 +2016-07-01|5.0|114.0|-0.06418|-0.07288 +2016-07-01|5.0|115.0|-0.10869|-0.07837 +2016-07-01|5.0|116.0|-0.15287|-0.0835 +2016-07-01|5.0|117.0|-0.19482|-0.08823 +2016-07-01|5.0|118.0|-0.23268|-0.09254 +2016-07-01|5.0|119.0|-0.26465|-0.0964 +2016-07-01|5.0|120.0|-0.28904|-0.09979 +2016-07-01|5.0|121.0|-0.30429|-0.10271 +2016-07-01|5.0|122.0|-0.309|-0.10514 +2016-07-01|5.0|123.0|-0.30195|-0.10708 +2016-07-01|5.0|124.0|-0.28212|-0.10854 +2016-07-01|5.0|125.0|-0.24869|-0.10952 +2016-07-01|5.0|126.0|-0.20108|-0.11004 +2016-07-01|5.0|127.0|-0.13891|-0.1101 +2016-07-01|5.0|128.0|-0.062|-0.10974 +2016-07-01|5.0|129.0|0.02961|-0.10897 +2016-07-01|5.0|130.0|0.1357|-0.10782 +2016-07-01|5.0|131.0|0.25586|-0.10631 +2016-07-01|5.0|132.0|0.38955|-0.10447 +2016-07-01|5.0|133.0|0.5361|-0.10233 +2016-07-01|5.0|134.0|0.69473|-0.09992 +2016-07-01|5.0|135.0|0.86458|-0.09727 +2016-07-01|5.0|136.0|1.04474|-0.0944 +2016-07-01|5.0|137.0|1.23427|-0.09134 +2016-07-01|5.0|138.0|1.43222|-0.08812 +2016-07-01|5.0|139.0|1.63767|-0.08476 +2016-07-01|5.0|140.0|1.8497|-0.08128 +2016-07-01|5.0|141.0|2.06747|-0.0777 +2016-07-01|5.0|142.0|2.29018|-0.07406 +2016-07-01|5.0|143.0|2.5171|-0.07035 +2016-07-01|5.0|144.0|2.74758|-0.0666 +2016-07-01|5.0|145.0|2.98101|-0.06282 +2016-07-01|5.0|146.0|3.21688|-0.05903 +2016-07-01|5.0|147.0|3.45472|-0.05523 +2016-07-01|5.0|148.0|3.69412|-0.05144 +2016-07-01|5.0|149.0|3.9347|-0.04767 +2016-07-01|5.0|150.0|4.17613|-0.04391 +2016-07-01|5.0|151.0|4.41808|-0.04019 +2016-07-01|5.0|152.0|4.6602|-0.0365 +2016-07-01|5.0|153.0|4.90217|-0.03285 +2016-07-01|5.0|154.0|5.14361|-0.02925 +2016-07-01|5.0|155.0|5.38412|-0.0257 +2016-07-01|5.0|156.0|5.62324|-0.0222 +2016-07-01|5.0|157.0|5.86047|-0.01877 +2016-07-01|5.0|158.0|6.09525|-0.01541 +2016-07-01|5.0|159.0|6.32697|-0.01212 +2016-07-01|5.0|160.0|6.55494|-0.00891 +2016-07-01|5.0|161.0|6.77845|-0.00577 +2016-07-01|5.0|162.0|6.99673|-0.00273 +2016-07-01|5.0|163.0|7.20898|2.2E-4 +2016-07-01|5.0|164.0|7.41439|0.00306 +2016-07-01|5.0|165.0|7.61212|0.00581 +2016-07-01|5.0|166.0|7.80137|0.00843 +2016-07-01|5.0|167.0|7.98135|0.01094 +2016-07-01|5.0|168.0|8.15132|0.01333 +2016-07-01|5.0|169.0|8.3106|0.01558 +2016-07-01|5.0|170.0|8.45858|0.01769 +2016-07-01|5.0|171.0|8.59475|0.01966 +2016-07-01|5.0|172.0|8.71871|0.02147 +2016-07-01|5.0|173.0|8.83016|0.02313 +2016-07-01|5.0|174.0|8.92893|0.02461 +2016-07-01|5.0|175.0|9.01498|0.02593 +2016-07-01|5.0|176.0|9.08841|0.02707 +2016-07-01|5.0|177.0|9.14944|0.02803 +2016-07-01|5.0|178.0|9.19843|0.02881 +2016-07-01|5.0|179.0|9.23587|0.02939 +2016-07-01|5.0|-1.0|-3.98781|0.1075 +2016-07-01|5.0|-2.0|-4.29678|0.10756 +2016-07-01|5.0|-3.0|-4.61503|0.10774 +2016-07-01|5.0|-4.0|-4.94309|0.10802 +2016-07-01|5.0|-5.0|-5.28142|0.1084 +2016-07-01|5.0|-6.0|-5.63037|0.10886 +2016-07-01|5.0|-7.0|-5.99017|0.10938 +2016-07-01|5.0|-8.0|-6.36095|0.10995 +2016-07-01|5.0|-9.0|-6.74268|0.11056 +2016-07-01|5.0|-10.0|-7.13522|0.11119 +2016-07-01|5.0|-11.0|-7.53828|0.11184 +2016-07-01|5.0|-12.0|-7.95142|0.11247 +2016-07-01|5.0|-13.0|-8.37407|0.11309 +2016-07-01|5.0|-14.0|-8.80551|0.11368 +2016-07-01|5.0|-15.0|-9.24489|0.11422 +2016-07-01|5.0|-16.0|-9.69126|0.11471 +2016-07-01|5.0|-17.0|-10.14351|0.11512 +2016-07-01|5.0|-18.0|-10.60045|0.11545 +2016-07-01|5.0|-19.0|-11.06078|0.11569 +2016-07-01|5.0|-20.0|-11.52311|0.11581 +2016-07-01|5.0|-21.0|-11.986|0.1158 +2016-07-01|5.0|-22.0|-12.44792|0.11565 +2016-07-01|5.0|-23.0|-12.9073|0.11534 +2016-07-01|5.0|-24.0|-13.36253|0.11485 +2016-07-01|5.0|-25.0|-13.81197|0.11417 +2016-07-01|5.0|-26.0|-14.25397|0.11328 +2016-07-01|5.0|-27.0|-14.68687|0.11215 +2016-07-01|5.0|-28.0|-15.109|0.11078 +2016-07-01|5.0|-29.0|-15.51872|0.10913 +2016-07-01|5.0|-30.0|-15.91441|0.1072 +2016-07-01|5.0|-31.0|-16.29446|0.10496 +2016-07-01|5.0|-32.0|-16.65732|0.1024 +2016-07-01|5.0|-33.0|-17.00144|0.09951 +2016-07-01|5.0|-34.0|-17.32535|0.09628 +2016-07-01|5.0|-35.0|-17.62763|0.09269 +2016-07-01|5.0|-36.0|-17.9069|0.08874 +2016-07-01|5.0|-37.0|-18.16185|0.08443 +2016-07-01|5.0|-38.0|-18.39123|0.07975 +2016-07-01|5.0|-39.0|-18.59388|0.07472 +2016-07-01|5.0|-40.0|-18.7687|0.06933 +2016-07-01|5.0|-41.0|-18.91468|0.0636 +2016-07-01|5.0|-42.0|-19.03088|0.05755 +2016-07-01|5.0|-43.0|-19.11646|0.05118 +2016-07-01|5.0|-44.0|-19.1707|0.04453 +2016-07-01|5.0|-45.0|-19.19293|0.03762 +2016-07-01|5.0|-46.0|-19.18263|0.03047 +2016-07-01|5.0|-47.0|-19.13936|0.02312 +2016-07-01|5.0|-48.0|-19.06282|0.01559 +2016-07-01|5.0|-49.0|-18.9528|0.00792 +2016-07-01|5.0|-50.0|-18.80924|1.5E-4 +2016-07-01|5.0|-51.0|-18.63216|-0.00769 +2016-07-01|5.0|-52.0|-18.42176|-0.01557 +2016-07-01|5.0|-53.0|-18.17832|-0.02344 +2016-07-01|5.0|-54.0|-17.90228|-0.03127 +2016-07-01|5.0|-55.0|-17.59419|-0.03903 +2016-07-01|5.0|-56.0|-17.25474|-0.04668 +2016-07-01|5.0|-57.0|-16.88472|-0.0542 +2016-07-01|5.0|-58.0|-16.48508|-0.06154 +2016-07-01|5.0|-59.0|-16.05685|-0.06869 +2016-07-01|5.0|-60.0|-15.6012|-0.07563 +2016-07-01|5.0|-61.0|-15.1194|-0.08231 +2016-07-01|5.0|-62.0|-14.61281|-0.08874 +2016-07-01|5.0|-63.0|-14.08291|-0.09489 +2016-07-01|5.0|-64.0|-13.53125|-0.10074 +2016-07-01|5.0|-65.0|-12.95945|-0.10629 +2016-07-01|5.0|-66.0|-12.36921|-0.11152 +2016-07-01|5.0|-67.0|-11.7623|-0.11643 +2016-07-01|5.0|-68.0|-11.14054|-0.12101 +2016-07-01|5.0|-69.0|-10.50577|-0.12525 +2016-07-01|5.0|-70.0|-9.85989|-0.12915 +2016-07-01|5.0|-71.0|-9.20481|-0.13271 +2016-07-01|5.0|-72.0|-8.54248|-0.13593 +2016-07-01|5.0|-73.0|-7.87483|-0.1388 +2016-07-01|5.0|-74.0|-7.2038|-0.14133 +2016-07-01|5.0|-75.0|-6.53133|-0.14351 +2016-07-01|5.0|-76.0|-5.85933|-0.14534 +2016-07-01|5.0|-77.0|-5.1897|-0.14683 +2016-07-01|5.0|-78.0|-4.5243|-0.14797 +2016-07-01|5.0|-79.0|-3.86494|-0.14877 +2016-07-01|5.0|-80.0|-3.2134|-0.14924 +2016-07-01|5.0|-81.0|-2.57139|-0.14937 +2016-07-01|5.0|-82.0|-1.94056|-0.14917 +2016-07-01|5.0|-83.0|-1.32248|-0.14866 +2016-07-01|5.0|-84.0|-0.71864|-0.14784 +2016-07-01|5.0|-85.0|-0.13045|-0.14672 +2016-07-01|5.0|-86.0|0.44079|-0.14532 +2016-07-01|5.0|-87.0|0.99389|-0.14365 +2016-07-01|5.0|-88.0|1.52775|-0.14173 +2016-07-01|5.0|-89.0|2.04143|-0.13958 +2016-07-01|5.0|-90.0|2.53407|-0.13722 +2016-07-01|5.0|-91.0|3.00499|-0.13467 +2016-07-01|5.0|-92.0|3.45361|-0.13197 +2016-07-01|5.0|-93.0|3.87951|-0.12912 +2016-07-01|5.0|-94.0|4.28241|-0.12616 +2016-07-01|5.0|-95.0|4.66216|-0.12311 +2016-07-01|5.0|-96.0|5.01878|-0.12 +2016-07-01|5.0|-97.0|5.35242|-0.11685 +2016-07-01|5.0|-98.0|5.66336|-0.11367 +2016-07-01|5.0|-99.0|5.95203|-0.11051 +2016-07-01|5.0|-100.0|6.21899|-0.10736 +2016-07-01|5.0|-101.0|6.46491|-0.10425 +2016-07-01|5.0|-102.0|6.69058|-0.1012 +2016-07-01|5.0|-103.0|6.8969|-0.09822 +2016-07-01|5.0|-104.0|7.08485|-0.09531 +2016-07-01|5.0|-105.0|7.25551|-0.09248 +2016-07-01|5.0|-106.0|7.40999|-0.08975 +2016-07-01|5.0|-107.0|7.54949|-0.08711 +2016-07-01|5.0|-108.0|7.67522|-0.08456 +2016-07-01|5.0|-109.0|7.78841|-0.0821 +2016-07-01|5.0|-110.0|7.89032|-0.07973 +2016-07-01|5.0|-111.0|7.98216|-0.07743 +2016-07-01|5.0|-112.0|8.06513|-0.07521 +2016-07-01|5.0|-113.0|8.14038|-0.07306 +2016-07-01|5.0|-114.0|8.20902|-0.07095 +2016-07-01|5.0|-115.0|8.27206|-0.0689 +2016-07-01|5.0|-116.0|8.33045|-0.06688 +2016-07-01|5.0|-117.0|8.38504|-0.06489 +2016-07-01|5.0|-118.0|8.43656|-0.06292 +2016-07-01|5.0|-119.0|8.48566|-0.06096 +2016-07-01|5.0|-120.0|8.53287|-0.05901 +2016-07-01|5.0|-121.0|8.5786|-0.05706 +2016-07-01|5.0|-122.0|8.62316|-0.05511 +2016-07-01|5.0|-123.0|8.66676|-0.05317 +2016-07-01|5.0|-124.0|8.70948|-0.05122 +2016-07-01|5.0|-125.0|8.75134|-0.04927 +2016-07-01|5.0|-126.0|8.79225|-0.04733 +2016-07-01|5.0|-127.0|8.83206|-0.0454 +2016-07-01|5.0|-128.0|8.87056|-0.04349 +2016-07-01|5.0|-129.0|8.90749|-0.04159 +2016-07-01|5.0|-130.0|8.94254|-0.03973 +2016-07-01|5.0|-131.0|8.97542|-0.0379 +2016-07-01|5.0|-132.0|9.00579|-0.03612 +2016-07-01|5.0|-133.0|9.03333|-0.03438 +2016-07-01|5.0|-134.0|9.05776|-0.0327 +2016-07-01|5.0|-135.0|9.07881|-0.03107 +2016-07-01|5.0|-136.0|9.09626|-0.0295 +2016-07-01|5.0|-137.0|9.10993|-0.02799 +2016-07-01|5.0|-138.0|9.11973|-0.02654 +2016-07-01|5.0|-139.0|9.12559|-0.02514 +2016-07-01|5.0|-140.0|9.12754|-0.0238 +2016-07-01|5.0|-141.0|9.12568|-0.02251 +2016-07-01|5.0|-142.0|9.12017|-0.02125 +2016-07-01|5.0|-143.0|9.11124|-0.02002 +2016-07-01|5.0|-144.0|9.09919|-0.01881 +2016-07-01|5.0|-145.0|9.0844|-0.01761 +2016-07-01|5.0|-146.0|9.06727|-0.01641 +2016-07-01|5.0|-147.0|9.04829|-0.0152 +2016-07-01|5.0|-148.0|9.02796|-0.01396 +2016-07-01|5.0|-149.0|9.00683|-0.01269 +2016-07-01|5.0|-150.0|8.98547|-0.01137 +2016-07-01|5.0|-151.0|8.96445|-0.01 +2016-07-01|5.0|-152.0|8.94436|-0.00857 +2016-07-01|5.0|-153.0|8.92575|-0.00707 +2016-07-01|5.0|-154.0|8.90916|-0.00551 +2016-07-01|5.0|-155.0|8.89511|-0.00387 +2016-07-01|5.0|-156.0|8.88406|-0.00217 +2016-07-01|5.0|-157.0|8.87641|-4.1E-4 +2016-07-01|5.0|-158.0|8.87249|0.00142 +2016-07-01|5.0|-159.0|8.87257|0.00329 +2016-07-01|5.0|-160.0|8.87682|0.00521 +2016-07-01|5.0|-161.0|8.88532|0.00715 +2016-07-01|5.0|-162.0|8.89806|0.00911 +2016-07-01|5.0|-163.0|8.91493|0.01107 +2016-07-01|5.0|-164.0|8.9357|0.01302 +2016-07-01|5.0|-165.0|8.96004|0.01494 +2016-07-01|5.0|-166.0|8.98751|0.01681 +2016-07-01|5.0|-167.0|9.01759|0.01861 +2016-07-01|5.0|-168.0|9.04963|0.02033 +2016-07-01|5.0|-169.0|9.08291|0.02196 +2016-07-01|5.0|-170.0|9.11661|0.02347 +2016-07-01|5.0|-171.0|9.14984|0.02485 +2016-07-01|5.0|-172.0|9.18166|0.02609 +2016-07-01|5.0|-173.0|9.21106|0.02717 +2016-07-01|5.0|-174.0|9.23702|0.0281 +2016-07-01|5.0|-175.0|9.25847|0.02884 +2016-07-01|5.0|-176.0|9.27438|0.02941 +2016-07-01|5.0|-177.0|9.2837|0.02979 +2016-07-01|5.0|-178.0|9.28543|0.02998 +2016-07-01|5.0|-179.0|9.27862|0.02998 +2016-07-01|6.0|0.0|-3.4213|0.10489 +2016-07-01|6.0|1.0|-3.13776|0.10495 +2016-07-01|6.0|2.0|-2.86174|0.10515 +2016-07-01|6.0|3.0|-2.59249|0.10549 +2016-07-01|6.0|4.0|-2.32929|0.10597 +2016-07-01|6.0|5.0|-2.07145|0.10658 +2016-07-01|6.0|6.0|-1.81832|0.10731 +2016-07-01|6.0|7.0|-1.56933|0.10815 +2016-07-01|6.0|8.0|-1.324|0.10906 +2016-07-01|6.0|9.0|-1.08195|0.11004 +2016-07-01|6.0|10.0|-0.84295|0.11104 +2016-07-01|6.0|11.0|-0.60688|0.11204 +2016-07-01|6.0|12.0|-0.3738|0.113 +2016-07-01|6.0|13.0|-0.14392|0.11388 +2016-07-01|6.0|14.0|0.0824|0.11463 +2016-07-01|6.0|15.0|0.30462|0.11523 +2016-07-01|6.0|16.0|0.52204|0.11562 +2016-07-01|6.0|17.0|0.73382|0.11576 +2016-07-01|6.0|18.0|0.93896|0.11562 +2016-07-01|6.0|19.0|1.13634|0.11516 +2016-07-01|6.0|20.0|1.32476|0.11434 +2016-07-01|6.0|21.0|1.50292|0.11314 +2016-07-01|6.0|22.0|1.66945|0.11154 +2016-07-01|6.0|23.0|1.82298|0.10952 +2016-07-01|6.0|24.0|1.96213|0.10709 +2016-07-01|6.0|25.0|2.08558|0.10424 +2016-07-01|6.0|26.0|2.19205|0.10098 +2016-07-01|6.0|27.0|2.28039|0.09733 +2016-07-01|6.0|28.0|2.34958|0.09332 +2016-07-01|6.0|29.0|2.39874|0.089 +2016-07-01|6.0|30.0|2.42721|0.08439 +2016-07-01|6.0|31.0|2.43453|0.07956 +2016-07-01|6.0|32.0|2.42046|0.07456 +2016-07-01|6.0|33.0|2.38503|0.06945 +2016-07-01|6.0|34.0|2.3285|0.06431 +2016-07-01|6.0|35.0|2.25139|0.05919 +2016-07-01|6.0|36.0|2.15448|0.05417 +2016-07-01|6.0|37.0|2.0388|0.04932 +2016-07-01|6.0|38.0|1.90559|0.04471 +2016-07-01|6.0|39.0|1.75631|0.0404 +2016-07-01|6.0|40.0|1.59261|0.03645 +2016-07-01|6.0|41.0|1.41629|0.0329 +2016-07-01|6.0|42.0|1.22927|0.02981 +2016-07-01|6.0|43.0|1.03357|0.02722 +2016-07-01|6.0|44.0|0.83124|0.02514 +2016-07-01|6.0|45.0|0.62438|0.02359 +2016-07-01|6.0|46.0|0.41501|0.02259 +2016-07-01|6.0|47.0|0.20514|0.02214 +2016-07-01|6.0|48.0|-0.00335|0.0222 +2016-07-01|6.0|49.0|-0.20869|0.02278 +2016-07-01|6.0|50.0|-0.40927|0.02383 +2016-07-01|6.0|51.0|-0.60365|0.02533 +2016-07-01|6.0|52.0|-0.79059|0.02722 +2016-07-01|6.0|53.0|-0.96904|0.02946 +2016-07-01|6.0|54.0|-1.13817|0.03199 +2016-07-01|6.0|55.0|-1.29734|0.03476 +2016-07-01|6.0|56.0|-1.44613|0.03771 +2016-07-01|6.0|57.0|-1.5843|0.04079 +2016-07-01|6.0|58.0|-1.71177|0.04393 +2016-07-01|6.0|59.0|-1.82864|0.04709 +2016-07-01|6.0|60.0|-1.9351|0.05022 +2016-07-01|6.0|61.0|-2.03148|0.05327 +2016-07-01|6.0|62.0|-2.11816|0.05619 +2016-07-01|6.0|63.0|-2.19559|0.05896 +2016-07-01|6.0|64.0|-2.26424|0.06155 +2016-07-01|6.0|65.0|-2.32456|0.06392 +2016-07-01|6.0|66.0|-2.37698|0.06607 +2016-07-01|6.0|67.0|-2.4219|0.06798 +2016-07-01|6.0|68.0|-2.45963|0.06965 +2016-07-01|6.0|69.0|-2.49043|0.07107 +2016-07-01|6.0|70.0|-2.51445|0.07224 +2016-07-01|6.0|71.0|-2.53178|0.07318 +2016-07-01|6.0|72.0|-2.54239|0.07388 +2016-07-01|6.0|73.0|-2.54619|0.07438 +2016-07-01|6.0|74.0|-2.54303|0.07466 +2016-07-01|6.0|75.0|-2.53268|0.07476 +2016-07-01|6.0|76.0|-2.51488|0.07467 +2016-07-01|6.0|77.0|-2.48934|0.07442 +2016-07-01|6.0|78.0|-2.45579|0.07401 +2016-07-01|6.0|79.0|-2.41398|0.07345 +2016-07-01|6.0|80.0|-2.3637|0.07275 +2016-07-01|6.0|81.0|-2.30482|0.07191 +2016-07-01|6.0|82.0|-2.23728|0.07092 +2016-07-01|6.0|83.0|-2.16118|0.06978 +2016-07-01|6.0|84.0|-2.07669|0.06849 +2016-07-01|6.0|85.0|-1.98416|0.06703 +2016-07-01|6.0|86.0|-1.88408|0.06539 +2016-07-01|6.0|87.0|-1.77709|0.06357 +2016-07-01|6.0|88.0|-1.66399|0.06153 +2016-07-01|6.0|89.0|-1.54573|0.05927 +2016-07-01|6.0|90.0|-1.42338|0.05677 +2016-07-01|6.0|91.0|-1.29816|0.054 +2016-07-01|6.0|92.0|-1.17139|0.05097 +2016-07-01|6.0|93.0|-1.04447|0.04764 +2016-07-01|6.0|94.0|-0.91884|0.04401 +2016-07-01|6.0|95.0|-0.79601|0.04007 +2016-07-01|6.0|96.0|-0.67745|0.03582 +2016-07-01|6.0|97.0|-0.5646|0.03125 +2016-07-01|6.0|98.0|-0.45886|0.02637 +2016-07-01|6.0|99.0|-0.36148|0.02119 +2016-07-01|6.0|100.0|-0.27363|0.01573 +2016-07-01|6.0|101.0|-0.19629|0.00999 +2016-07-01|6.0|102.0|-0.13025|0.004 +2016-07-01|6.0|103.0|-0.0761|-0.0022 +2016-07-01|6.0|104.0|-0.03421|-0.00858 +2016-07-01|6.0|105.0|-0.00468|-0.01511 +2016-07-01|6.0|106.0|0.0126|-0.02174 +2016-07-01|6.0|107.0|0.01803|-0.02843 +2016-07-01|6.0|108.0|0.01223|-0.03514 +2016-07-01|6.0|109.0|-0.00393|-0.04181 +2016-07-01|6.0|110.0|-0.02936|-0.0484 +2016-07-01|6.0|111.0|-0.06277|-0.05485 +2016-07-01|6.0|112.0|-0.10268|-0.06111 +2016-07-01|6.0|113.0|-0.14747|-0.06715 +2016-07-01|6.0|114.0|-0.1954|-0.0729 +2016-07-01|6.0|115.0|-0.24466|-0.07835 +2016-07-01|6.0|116.0|-0.29339|-0.08343 +2016-07-01|6.0|117.0|-0.33972|-0.08813 +2016-07-01|6.0|118.0|-0.3818|-0.09241 +2016-07-01|6.0|119.0|-0.41788|-0.09624 +2016-07-01|6.0|120.0|-0.44627|-0.09962 +2016-07-01|6.0|121.0|-0.46545|-0.10253 +2016-07-01|6.0|122.0|-0.47401|-0.10495 +2016-07-01|6.0|123.0|-0.47075|-0.1069 +2016-07-01|6.0|124.0|-0.45466|-0.10836 +2016-07-01|6.0|125.0|-0.42492|-0.10936 +2016-07-01|6.0|126.0|-0.38094|-0.10989 +2016-07-01|6.0|127.0|-0.32233|-0.10998 +2016-07-01|6.0|128.0|-0.24891|-0.10965 +2016-07-01|6.0|129.0|-0.1607|-0.10892 +2016-07-01|6.0|130.0|-0.05791|-0.1078 +2016-07-01|6.0|131.0|0.05908|-0.10634 +2016-07-01|6.0|132.0|0.18976|-0.10455 +2016-07-01|6.0|133.0|0.33347|-0.10247 +2016-07-01|6.0|134.0|0.48946|-0.10011 +2016-07-01|6.0|135.0|0.65689|-0.09752 +2016-07-01|6.0|136.0|0.83488|-0.09471 +2016-07-01|6.0|137.0|1.02251|-0.09171 +2016-07-01|6.0|138.0|1.21885|-0.08855 +2016-07-01|6.0|139.0|1.42299|-0.08525 +2016-07-01|6.0|140.0|1.63404|-0.08184 +2016-07-01|6.0|141.0|1.85116|-0.07833 +2016-07-01|6.0|142.0|2.07356|-0.07474 +2016-07-01|6.0|143.0|2.30052|-0.0711 +2016-07-01|6.0|144.0|2.53138|-0.06741 +2016-07-01|6.0|145.0|2.76555|-0.06368 +2016-07-01|6.0|146.0|3.0025|-0.05994 +2016-07-01|6.0|147.0|3.24177|-0.0562 +2016-07-01|6.0|148.0|3.48292|-0.05245 +2016-07-01|6.0|149.0|3.72559|-0.04872 +2016-07-01|6.0|150.0|3.96941|-0.045 +2016-07-01|6.0|151.0|4.21405|-0.04132 +2016-07-01|6.0|152.0|4.45916|-0.03766 +2016-07-01|6.0|153.0|4.70438|-0.03404 +2016-07-01|6.0|154.0|4.94933|-0.03047 +2016-07-01|6.0|155.0|5.19359|-0.02694 +2016-07-01|6.0|156.0|5.4367|-0.02347 +2016-07-01|6.0|157.0|5.67814|-0.02006 +2016-07-01|6.0|158.0|5.91733|-0.01671 +2016-07-01|6.0|159.0|6.15365|-0.01344 +2016-07-01|6.0|160.0|6.3864|-0.01024 +2016-07-01|6.0|161.0|6.61485|-0.00712 +2016-07-01|6.0|162.0|6.83821|-0.00409 +2016-07-01|6.0|163.0|7.05568|-0.00115 +2016-07-01|6.0|164.0|7.26641|0.00168 +2016-07-01|6.0|165.0|7.46957|0.00441 +2016-07-01|6.0|166.0|7.66432|0.00702 +2016-07-01|6.0|167.0|7.84985|0.00952 +2016-07-01|6.0|168.0|8.02541|0.01189 +2016-07-01|6.0|169.0|8.19029|0.01412 +2016-07-01|6.0|170.0|8.34386|0.01622 +2016-07-01|6.0|171.0|8.48558|0.01817 +2016-07-01|6.0|172.0|8.61502|0.01996 +2016-07-01|6.0|173.0|8.73186|0.02159 +2016-07-01|6.0|174.0|8.83591|0.02306 +2016-07-01|6.0|175.0|8.92709|0.02436 +2016-07-01|6.0|176.0|9.00548|0.02548 +2016-07-01|6.0|177.0|9.07128|0.02642 +2016-07-01|6.0|178.0|9.12482|0.02717 +2016-07-01|6.0|179.0|9.16658|0.02774 +2016-07-01|6.0|-1.0|-3.71307|0.10497 +2016-07-01|6.0|-2.0|-4.01376|0.10518 +2016-07-01|6.0|-3.0|-4.32399|0.10551 +2016-07-01|6.0|-4.0|-4.64434|0.10596 +2016-07-01|6.0|-5.0|-4.97527|0.1065 +2016-07-01|6.0|-6.0|-5.31716|0.10712 +2016-07-01|6.0|-7.0|-5.67025|0.10781 +2016-07-01|6.0|-8.0|-6.03468|0.10855 +2016-07-01|6.0|-9.0|-6.41044|0.10933 +2016-07-01|6.0|-10.0|-6.79738|0.11013 +2016-07-01|6.0|-11.0|-7.19522|0.11094 +2016-07-01|6.0|-12.0|-7.60352|0.11174 +2016-07-01|6.0|-13.0|-8.02171|0.11252 +2016-07-01|6.0|-14.0|-8.44908|0.11327 +2016-07-01|6.0|-15.0|-8.88479|0.11396 +2016-07-01|6.0|-16.0|-9.32786|0.1146 +2016-07-01|6.0|-17.0|-9.77721|0.11515 +2016-07-01|6.0|-18.0|-10.23164|0.11563 +2016-07-01|6.0|-19.0|-10.68988|0.116 +2016-07-01|6.0|-20.0|-11.15054|0.11625 +2016-07-01|6.0|-21.0|-11.61218|0.11638 +2016-07-01|6.0|-22.0|-12.0733|0.11636 +2016-07-01|6.0|-23.0|-12.53234|0.11619 +2016-07-01|6.0|-24.0|-12.98771|0.11584 +2016-07-01|6.0|-25.0|-13.43779|0.11529 +2016-07-01|6.0|-26.0|-13.88095|0.11454 +2016-07-01|6.0|-27.0|-14.31556|0.11356 +2016-07-01|6.0|-28.0|-14.73998|0.11233 +2016-07-01|6.0|-29.0|-15.15257|0.11084 +2016-07-01|6.0|-30.0|-15.55174|0.10907 +2016-07-01|6.0|-31.0|-15.9359|0.107 +2016-07-01|6.0|-32.0|-16.3035|0.10461 +2016-07-01|6.0|-33.0|-16.65303|0.1019 +2016-07-01|6.0|-34.0|-16.98301|0.09885 +2016-07-01|6.0|-35.0|-17.29202|0.09545 +2016-07-01|6.0|-36.0|-17.5787|0.09169 +2016-07-01|6.0|-37.0|-17.84171|0.08757 +2016-07-01|6.0|-38.0|-18.07981|0.08309 +2016-07-01|6.0|-39.0|-18.29182|0.07825 +2016-07-01|6.0|-40.0|-18.47661|0.07305 +2016-07-01|6.0|-41.0|-18.63314|0.06752 +2016-07-01|6.0|-42.0|-18.76047|0.06165 +2016-07-01|6.0|-43.0|-18.85771|0.05547 +2016-07-01|6.0|-44.0|-18.92409|0.04899 +2016-07-01|6.0|-45.0|-18.95893|0.04225 +2016-07-01|6.0|-46.0|-18.96165|0.03526 +2016-07-01|6.0|-47.0|-18.93177|0.02805 +2016-07-01|6.0|-48.0|-18.86894|0.02066 +2016-07-01|6.0|-49.0|-18.77291|0.01311 +2016-07-01|6.0|-50.0|-18.64356|0.00545 +2016-07-01|6.0|-51.0|-18.48089|-0.0023 +2016-07-01|6.0|-52.0|-18.28503|-0.0101 +2016-07-01|6.0|-53.0|-18.05623|-0.01792 +2016-07-01|6.0|-54.0|-17.79488|-0.02571 +2016-07-01|6.0|-55.0|-17.5015|-0.03344 +2016-07-01|6.0|-56.0|-17.17672|-0.04109 +2016-07-01|6.0|-57.0|-16.82131|-0.04862 +2016-07-01|6.0|-58.0|-16.43617|-0.056 +2016-07-01|6.0|-59.0|-16.02231|-0.0632 +2016-07-01|6.0|-60.0|-15.58086|-0.0702 +2016-07-01|6.0|-61.0|-15.11305|-0.07698 +2016-07-01|6.0|-62.0|-14.62023|-0.08351 +2016-07-01|6.0|-63.0|-14.10383|-0.08978 +2016-07-01|6.0|-64.0|-13.56538|-0.09578 +2016-07-01|6.0|-65.0|-13.00647|-0.10148 +2016-07-01|6.0|-66.0|-12.42877|-0.10688 +2016-07-01|6.0|-67.0|-11.83401|-0.11197 +2016-07-01|6.0|-68.0|-11.22398|-0.11675 +2016-07-01|6.0|-69.0|-10.60049|-0.1212 +2016-07-01|6.0|-70.0|-9.96541|-0.12532 +2016-07-01|6.0|-71.0|-9.32062|-0.12911 +2016-07-01|6.0|-72.0|-8.66802|-0.13256 +2016-07-01|6.0|-73.0|-8.00951|-0.13568 +2016-07-01|6.0|-74.0|-7.347|-0.13845 +2016-07-01|6.0|-75.0|-6.68238|-0.14088 +2016-07-01|6.0|-76.0|-6.01755|-0.14296 +2016-07-01|6.0|-77.0|-5.35436|-0.14471 +2016-07-01|6.0|-78.0|-4.69465|-0.1461 +2016-07-01|6.0|-79.0|-4.0402|-0.14715 +2016-07-01|6.0|-80.0|-3.39277|-0.14786 +2016-07-01|6.0|-81.0|-2.75406|-0.14823 +2016-07-01|6.0|-82.0|-2.1257|-0.14826 +2016-07-01|6.0|-83.0|-1.50927|-0.14796 +2016-07-01|6.0|-84.0|-0.90625|-0.14735 +2016-07-01|6.0|-85.0|-0.31806|-0.14643 +2016-07-01|6.0|-86.0|0.25398|-0.14521 +2016-07-01|6.0|-87.0|0.80867|-0.14371 +2016-07-01|6.0|-88.0|1.34487|-0.14194 +2016-07-01|6.0|-89.0|1.86161|-0.13993 +2016-07-01|6.0|-90.0|2.358|-0.1377 +2016-07-01|6.0|-91.0|2.8333|-0.13526 +2016-07-01|6.0|-92.0|3.2869|-0.13264 +2016-07-01|6.0|-93.0|3.71831|-0.12988 +2016-07-01|6.0|-94.0|4.1272|-0.12698 +2016-07-01|6.0|-95.0|4.51337|-0.12398 +2016-07-01|6.0|-96.0|4.87678|-0.1209 +2016-07-01|6.0|-97.0|5.21751|-0.11777 +2016-07-01|6.0|-98.0|5.53578|-0.1146 +2016-07-01|6.0|-99.0|5.83198|-0.11143 +2016-07-01|6.0|-100.0|6.10658|-0.10828 +2016-07-01|6.0|-101.0|6.36021|-0.10515 +2016-07-01|6.0|-102.0|6.59361|-0.10207 +2016-07-01|6.0|-103.0|6.80761|-0.09905 +2016-07-01|6.0|-104.0|7.00315|-0.09611 +2016-07-01|6.0|-105.0|7.18126|-0.09324 +2016-07-01|6.0|-106.0|7.34302|-0.09046 +2016-07-01|6.0|-107.0|7.48958|-0.08777 +2016-07-01|6.0|-108.0|7.62211|-0.08518 +2016-07-01|6.0|-109.0|7.74182|-0.08267 +2016-07-01|6.0|-110.0|7.84993|-0.08025 +2016-07-01|6.0|-111.0|7.94764|-0.07792 +2016-07-01|6.0|-112.0|8.03613|-0.07565 +2016-07-01|6.0|-113.0|8.11655|-0.07346 +2016-07-01|6.0|-114.0|8.18998|-0.07133 +2016-07-01|6.0|-115.0|8.25743|-0.06925 +2016-07-01|6.0|-116.0|8.31985|-0.06721 +2016-07-01|6.0|-117.0|8.37809|-0.06521 +2016-07-01|6.0|-118.0|8.4329|-0.06323 +2016-07-01|6.0|-119.0|8.48492|-0.06127 +2016-07-01|6.0|-120.0|8.53469|-0.05932 +2016-07-01|6.0|-121.0|8.58264|-0.05738 +2016-07-01|6.0|-122.0|8.62909|-0.05545 +2016-07-01|6.0|-123.0|8.67425|-0.05352 +2016-07-01|6.0|-124.0|8.71824|-0.0516 +2016-07-01|6.0|-125.0|8.76107|-0.04968 +2016-07-01|6.0|-126.0|8.80268|-0.04777 +2016-07-01|6.0|-127.0|8.84293|-0.04587 +2016-07-01|6.0|-128.0|8.88162|-0.04399 +2016-07-01|6.0|-129.0|8.91851|-0.04214 +2016-07-01|6.0|-130.0|8.9533|-0.04031 +2016-07-01|6.0|-131.0|8.9857|-0.03852 +2016-07-01|6.0|-132.0|9.0154|-0.03677 +2016-07-01|6.0|-133.0|9.04209|-0.03506 +2016-07-01|6.0|-134.0|9.06549|-0.03341 +2016-07-01|6.0|-135.0|9.08535|-0.03181 +2016-07-01|6.0|-136.0|9.10146|-0.03027 +2016-07-01|6.0|-137.0|9.11367|-0.02879 +2016-07-01|6.0|-138.0|9.12186|-0.02736 +2016-07-01|6.0|-139.0|9.12602|-0.02599 +2016-07-01|6.0|-140.0|9.12618|-0.02466 +2016-07-01|6.0|-141.0|9.12244|-0.02339 +2016-07-01|6.0|-142.0|9.115|-0.02214 +2016-07-01|6.0|-143.0|9.10409|-0.02093 +2016-07-01|6.0|-144.0|9.09004|-0.01974 +2016-07-01|6.0|-145.0|9.07323|-0.01855 +2016-07-01|6.0|-146.0|9.05411|-0.01737 +2016-07-01|6.0|-147.0|9.03316|-0.01617 +2016-07-01|6.0|-148.0|9.01091|-0.01495 +2016-07-01|6.0|-149.0|8.98792|-0.01369 +2016-07-01|6.0|-150.0|8.96478|-0.01239 +2016-07-01|6.0|-151.0|8.94208|-0.01105 +2016-07-01|6.0|-152.0|8.92041|-0.00964 +2016-07-01|6.0|-153.0|8.90033|-0.00817 +2016-07-01|6.0|-154.0|8.8824|-0.00664 +2016-07-01|6.0|-155.0|8.86713|-0.00503 +2016-07-01|6.0|-156.0|8.85497|-0.00337 +2016-07-01|6.0|-157.0|8.84633|-0.00164 +2016-07-01|6.0|-158.0|8.84154|1.5E-4 +2016-07-01|6.0|-159.0|8.84084|0.00199 +2016-07-01|6.0|-160.0|8.8444|0.00386 +2016-07-01|6.0|-161.0|8.85228|0.00577 +2016-07-01|6.0|-162.0|8.86444|0.00769 +2016-07-01|6.0|-163.0|8.88075|0.00962 +2016-07-01|6.0|-164.0|8.90095|0.01153 +2016-07-01|6.0|-165.0|8.9247|0.01341 +2016-07-01|6.0|-166.0|8.95152|0.01524 +2016-07-01|6.0|-167.0|8.98085|0.01702 +2016-07-01|6.0|-168.0|9.01203|0.01871 +2016-07-01|6.0|-169.0|9.0443|0.02031 +2016-07-01|6.0|-170.0|9.07682|0.0218 +2016-07-01|6.0|-171.0|9.10867|0.02317 +2016-07-01|6.0|-172.0|9.13889|0.0244 +2016-07-01|6.0|-173.0|9.16645|0.02547 +2016-07-01|6.0|-174.0|9.1903|0.02639 +2016-07-01|6.0|-175.0|9.20938|0.02713 +2016-07-01|6.0|-176.0|9.22264|0.0277 +2016-07-01|6.0|-177.0|9.22901|0.02809 +2016-07-01|6.0|-178.0|9.22751|0.02829 +2016-07-01|6.0|-179.0|9.21718|0.0283 +2016-07-01|7.0|0.0|-3.16977|0.10245 +2016-07-01|7.0|1.0|-2.89432|0.10239 +2016-07-01|7.0|2.0|-2.62655|0.10248 +2016-07-01|7.0|3.0|-2.36568|0.10273 +2016-07-01|7.0|4.0|-2.11096|0.10312 +2016-07-01|7.0|5.0|-1.86164|0.10366 +2016-07-01|7.0|6.0|-1.61704|0.10433 +2016-07-01|7.0|7.0|-1.37653|0.10512 +2016-07-01|7.0|8.0|-1.13959|0.10601 +2016-07-01|7.0|9.0|-0.90581|0.10697 +2016-07-01|7.0|10.0|-0.67487|0.10798 +2016-07-01|7.0|11.0|-0.44664|0.109 +2016-07-01|7.0|12.0|-0.22111|0.11 +2016-07-01|7.0|13.0|0.00157|0.11094 +2016-07-01|7.0|14.0|0.22107|0.11178 +2016-07-01|7.0|15.0|0.4369|0.11247 +2016-07-01|7.0|16.0|0.64842|0.11297 +2016-07-01|7.0|17.0|0.85481|0.11324 +2016-07-01|7.0|18.0|1.05512|0.11325 +2016-07-01|7.0|19.0|1.24828|0.11295 +2016-07-01|7.0|20.0|1.43309|0.11231 +2016-07-01|7.0|21.0|1.60828|0.11131 +2016-07-01|7.0|22.0|1.77252|0.10991 +2016-07-01|7.0|23.0|1.92445|0.10811 +2016-07-01|7.0|24.0|2.06269|0.1059 +2016-07-01|7.0|25.0|2.18591|0.10328 +2016-07-01|7.0|26.0|2.29284|0.10026 +2016-07-01|7.0|27.0|2.38232|0.09684 +2016-07-01|7.0|28.0|2.45328|0.09307 +2016-07-01|7.0|29.0|2.50485|0.08897 +2016-07-01|7.0|30.0|2.53632|0.08459 +2016-07-01|7.0|31.0|2.54719|0.07998 +2016-07-01|7.0|32.0|2.53719|0.07518 +2016-07-01|7.0|33.0|2.50627|0.07027 +2016-07-01|7.0|34.0|2.45466|0.0653 +2016-07-01|7.0|35.0|2.38282|0.06034 +2016-07-01|7.0|36.0|2.29148|0.05547 +2016-07-01|7.0|37.0|2.18157|0.05075 +2016-07-01|7.0|38.0|2.05431|0.04624 +2016-07-01|7.0|39.0|1.91108|0.04201 +2016-07-01|7.0|40.0|1.75347|0.03812 +2016-07-01|7.0|41.0|1.58322|0.03461 +2016-07-01|7.0|42.0|1.40221|0.03155 +2016-07-01|7.0|43.0|1.2124|0.02895 +2016-07-01|7.0|44.0|1.0158|0.02685 +2016-07-01|7.0|45.0|0.81444|0.02528 +2016-07-01|7.0|46.0|0.61034|0.02423 +2016-07-01|7.0|47.0|0.40545|0.02371 +2016-07-01|7.0|48.0|0.20164|0.0237 +2016-07-01|7.0|49.0|6.6E-4|0.02419 +2016-07-01|7.0|50.0|-0.19591|0.02515 +2016-07-01|7.0|51.0|-0.38663|0.02654 +2016-07-01|7.0|52.0|-0.57028|0.02833 +2016-07-01|7.0|53.0|-0.7458|0.03045 +2016-07-01|7.0|54.0|-0.91236|0.03287 +2016-07-01|7.0|55.0|-1.06933|0.03553 +2016-07-01|7.0|56.0|-1.21628|0.03837 +2016-07-01|7.0|57.0|-1.35296|0.04133 +2016-07-01|7.0|58.0|-1.47929|0.04437 +2016-07-01|7.0|59.0|-1.59535|0.04743 +2016-07-01|7.0|60.0|-1.70134|0.05045 +2016-07-01|7.0|61.0|-1.79759|0.0534 +2016-07-01|7.0|62.0|-1.88447|0.05623 +2016-07-01|7.0|63.0|-1.96243|0.05891 +2016-07-01|7.0|64.0|-2.03192|0.0614 +2016-07-01|7.0|65.0|-2.09342|0.0637 +2016-07-01|7.0|66.0|-2.14735|0.06577 +2016-07-01|7.0|67.0|-2.19412|0.0676 +2016-07-01|7.0|68.0|-2.23406|0.06919 +2016-07-01|7.0|69.0|-2.26741|0.07054 +2016-07-01|7.0|70.0|-2.29437|0.07165 +2016-07-01|7.0|71.0|-2.315|0.07252 +2016-07-01|7.0|72.0|-2.32933|0.07316 +2016-07-01|7.0|73.0|-2.33725|0.07359 +2016-07-01|7.0|74.0|-2.33863|0.07382 +2016-07-01|7.0|75.0|-2.33325|0.07386 +2016-07-01|7.0|76.0|-2.32087|0.07372 +2016-07-01|7.0|77.0|-2.3012|0.07342 +2016-07-01|7.0|78.0|-2.27398|0.07296 +2016-07-01|7.0|79.0|-2.23895|0.07236 +2016-07-01|7.0|80.0|-2.19592|0.07161 +2016-07-01|7.0|81.0|-2.14472|0.07072 +2016-07-01|7.0|82.0|-2.08533|0.06969 +2016-07-01|7.0|83.0|-2.01778|0.06852 +2016-07-01|7.0|84.0|-1.94226|0.0672 +2016-07-01|7.0|85.0|-1.85909|0.06572 +2016-07-01|7.0|86.0|-1.76872|0.06406 +2016-07-01|7.0|87.0|-1.67177|0.06222 +2016-07-01|7.0|88.0|-1.56899|0.06018 +2016-07-01|7.0|89.0|-1.46128|0.05791 +2016-07-01|7.0|90.0|-1.3497|0.05542 +2016-07-01|7.0|91.0|-1.23539|0.05266 +2016-07-01|7.0|92.0|-1.11963|0.04964 +2016-07-01|7.0|93.0|-1.00376|0.04634 +2016-07-01|7.0|94.0|-0.8892|0.04274 +2016-07-01|7.0|95.0|-0.77736|0.03884 +2016-07-01|7.0|96.0|-0.66969|0.03463 +2016-07-01|7.0|97.0|-0.56758|0.03012 +2016-07-01|7.0|98.0|-0.47236|0.0253 +2016-07-01|7.0|99.0|-0.38527|0.02018 +2016-07-01|7.0|100.0|-0.30742|0.01477 +2016-07-01|7.0|101.0|-0.23975|0.00911 +2016-07-01|7.0|102.0|-0.18304|0.0032 +2016-07-01|7.0|103.0|-0.13785|-0.00293 +2016-07-01|7.0|104.0|-0.10453|-0.00924 +2016-07-01|7.0|105.0|-0.08318|-0.01569 +2016-07-01|7.0|106.0|-0.07367|-0.02224 +2016-07-01|7.0|107.0|-0.07563|-0.02886 +2016-07-01|7.0|108.0|-0.08841|-0.03549 +2016-07-01|7.0|109.0|-0.11119|-0.04208 +2016-07-01|7.0|110.0|-0.14287|-0.04859 +2016-07-01|7.0|111.0|-0.18218|-0.05497 +2016-07-01|7.0|112.0|-0.22769|-0.06117 +2016-07-01|7.0|113.0|-0.27779|-0.06715 +2016-07-01|7.0|114.0|-0.33077|-0.07285 +2016-07-01|7.0|115.0|-0.38486|-0.07824 +2016-07-01|7.0|116.0|-0.43821|-0.08328 +2016-07-01|7.0|117.0|-0.489|-0.08794 +2016-07-01|7.0|118.0|-0.5354|-0.09218 +2016-07-01|7.0|119.0|-0.57567|-0.09599 +2016-07-01|7.0|120.0|-0.60817|-0.09935 +2016-07-01|7.0|121.0|-0.63137|-0.10224 +2016-07-01|7.0|122.0|-0.6439|-0.10466 +2016-07-01|7.0|123.0|-0.64456|-0.1066 +2016-07-01|7.0|124.0|-0.63234|-0.10807 +2016-07-01|7.0|125.0|-0.60643|-0.10908 +2016-07-01|7.0|126.0|-0.56622|-0.10963 +2016-07-01|7.0|127.0|-0.51133|-0.10975 +2016-07-01|7.0|128.0|-0.44157|-0.10944 +2016-07-01|7.0|129.0|-0.35692|-0.10875 +2016-07-01|7.0|130.0|-0.25759|-0.10768 +2016-07-01|7.0|131.0|-0.14393|-0.10626 +2016-07-01|7.0|132.0|-0.01643|-0.10452 +2016-07-01|7.0|133.0|0.12427|-0.1025 +2016-07-01|7.0|134.0|0.27746|-0.1002 +2016-07-01|7.0|135.0|0.44232|-0.09767 +2016-07-01|7.0|136.0|0.61798|-0.09492 +2016-07-01|7.0|137.0|0.80357|-0.09199 +2016-07-01|7.0|138.0|0.99816|-0.0889 +2016-07-01|7.0|139.0|1.20087|-0.08567 +2016-07-01|7.0|140.0|1.41082|-0.08232 +2016-07-01|7.0|141.0|1.62719|-0.07888 +2016-07-01|7.0|142.0|1.8492|-0.07536 +2016-07-01|7.0|143.0|2.07614|-0.07178 +2016-07-01|7.0|144.0|2.30733|-0.06815 +2016-07-01|7.0|145.0|2.5422|-0.06449 +2016-07-01|7.0|146.0|2.78022|-0.06081 +2016-07-01|7.0|147.0|3.02091|-0.05711 +2016-07-01|7.0|148.0|3.26383|-0.05342 +2016-07-01|7.0|149.0|3.5086|-0.04974 +2016-07-01|7.0|150.0|3.75486|-0.04607 +2016-07-01|7.0|151.0|4.00224|-0.04242 +2016-07-01|7.0|152.0|4.2504|-0.0388 +2016-07-01|7.0|153.0|4.49895|-0.03522 +2016-07-01|7.0|154.0|4.74751|-0.03167 +2016-07-01|7.0|155.0|4.99565|-0.02818 +2016-07-01|7.0|156.0|5.24287|-0.02473 +2016-07-01|7.0|157.0|5.48865|-0.02135 +2016-07-01|7.0|158.0|5.73241|-0.01802 +2016-07-01|7.0|159.0|5.97349|-0.01477 +2016-07-01|7.0|160.0|6.2112|-0.01159 +2016-07-01|7.0|161.0|6.44479|-0.00849 +2016-07-01|7.0|162.0|6.67345|-0.00548 +2016-07-01|7.0|163.0|6.89636|-0.00256 +2016-07-01|7.0|164.0|7.11267|2.5E-4 +2016-07-01|7.0|165.0|7.32152|0.00296 +2016-07-01|7.0|166.0|7.52205|0.00556 +2016-07-01|7.0|167.0|7.71345|0.00803 +2016-07-01|7.0|168.0|7.89493|0.01038 +2016-07-01|7.0|169.0|8.06576|0.01259 +2016-07-01|7.0|170.0|8.22528|0.01466 +2016-07-01|7.0|171.0|8.37295|0.01658 +2016-07-01|7.0|172.0|8.50829|0.01835 +2016-07-01|7.0|173.0|8.63095|0.01996 +2016-07-01|7.0|174.0|8.74072|0.0214 +2016-07-01|7.0|175.0|8.83751|0.02268 +2016-07-01|7.0|176.0|8.92135|0.02377 +2016-07-01|7.0|177.0|8.99242|0.02469 +2016-07-01|7.0|178.0|9.05103|0.02542 +2016-07-01|7.0|179.0|9.09764|0.02596 +2016-07-01|7.0|-1.0|-3.45364|0.10266 +2016-07-01|7.0|-2.0|-3.74665|0.103 +2016-07-01|7.0|-3.0|-4.04945|0.10347 +2016-07-01|7.0|-4.0|-4.36263|0.10406 +2016-07-01|7.0|-5.0|-4.68667|0.10474 +2016-07-01|7.0|-6.0|-5.02195|0.10551 +2016-07-01|7.0|-7.0|-5.36874|0.10635 +2016-07-01|7.0|-8.0|-5.72718|0.10725 +2016-07-01|7.0|-9.0|-6.09725|0.10818 +2016-07-01|7.0|-10.0|-6.47882|0.10912 +2016-07-01|7.0|-11.0|-6.87159|0.11008 +2016-07-01|7.0|-12.0|-7.27514|0.11102 +2016-07-01|7.0|-13.0|-7.68888|0.11194 +2016-07-01|7.0|-14.0|-8.11212|0.11281 +2016-07-01|7.0|-15.0|-8.54401|0.11364 +2016-07-01|7.0|-16.0|-8.98357|0.1144 +2016-07-01|7.0|-17.0|-9.42973|0.11508 +2016-07-01|7.0|-18.0|-9.88131|0.11568 +2016-07-01|7.0|-19.0|-10.33702|0.11617 +2016-07-01|7.0|-20.0|-10.7955|0.11654 +2016-07-01|7.0|-21.0|-11.25533|0.11679 +2016-07-01|7.0|-22.0|-11.71502|0.11689 +2016-07-01|7.0|-23.0|-12.17304|0.11684 +2016-07-01|7.0|-24.0|-12.62783|0.11661 +2016-07-01|7.0|-25.0|-13.07778|0.11619 +2016-07-01|7.0|-26.0|-13.5213|0.11557 +2016-07-01|7.0|-27.0|-13.95677|0.11473 +2016-07-01|7.0|-28.0|-14.38259|0.11365 +2016-07-01|7.0|-29.0|-14.79717|0.11231 +2016-07-01|7.0|-30.0|-15.19891|0.11069 +2016-07-01|7.0|-31.0|-15.58626|0.10878 +2016-07-01|7.0|-32.0|-15.9577|0.10657 +2016-07-01|7.0|-33.0|-16.31173|0.10404 +2016-07-01|7.0|-34.0|-16.64688|0.10117 +2016-07-01|7.0|-35.0|-16.96175|0.09796 +2016-07-01|7.0|-36.0|-17.25497|0.0944 +2016-07-01|7.0|-37.0|-17.52523|0.09048 +2016-07-01|7.0|-38.0|-17.77126|0.0862 +2016-07-01|7.0|-39.0|-17.99187|0.08156 +2016-07-01|7.0|-40.0|-18.18592|0.07657 +2016-07-01|7.0|-41.0|-18.35237|0.07124 +2016-07-01|7.0|-42.0|-18.49021|0.06557 +2016-07-01|7.0|-43.0|-18.59855|0.05958 +2016-07-01|7.0|-44.0|-18.67659|0.0533 +2016-07-01|7.0|-45.0|-18.72359|0.04673 +2016-07-01|7.0|-46.0|-18.73894|0.03991 +2016-07-01|7.0|-47.0|-18.72212|0.03286 +2016-07-01|7.0|-48.0|-18.67272|0.02562 +2016-07-01|7.0|-49.0|-18.59046|0.0182 +2016-07-01|7.0|-50.0|-18.47517|0.01066 +2016-07-01|7.0|-51.0|-18.32678|0.00301 +2016-07-01|7.0|-52.0|-18.1454|-0.0047 +2016-07-01|7.0|-53.0|-17.93121|-0.01245 +2016-07-01|7.0|-54.0|-17.68456|-0.02019 +2016-07-01|7.0|-55.0|-17.40591|-0.02789 +2016-07-01|7.0|-56.0|-17.09587|-0.03553 +2016-07-01|7.0|-57.0|-16.75516|-0.04306 +2016-07-01|7.0|-58.0|-16.38464|-0.05046 +2016-07-01|7.0|-59.0|-15.98527|-0.05771 +2016-07-01|7.0|-60.0|-15.55815|-0.06478 +2016-07-01|7.0|-61.0|-15.10448|-0.07163 +2016-07-01|7.0|-62.0|-14.62557|-0.07827 +2016-07-01|7.0|-63.0|-14.1228|-0.08466 +2016-07-01|7.0|-64.0|-13.59768|-0.09078 +2016-07-01|7.0|-65.0|-13.05177|-0.09664 +2016-07-01|7.0|-66.0|-12.48671|-0.1022 +2016-07-01|7.0|-67.0|-11.90419|-0.10748 +2016-07-01|7.0|-68.0|-11.30596|-0.11244 +2016-07-01|7.0|-69.0|-10.69381|-0.1171 +2016-07-01|7.0|-70.0|-10.06957|-0.12144 +2016-07-01|7.0|-71.0|-9.43507|-0.12545 +2016-07-01|7.0|-72.0|-8.7922|-0.12914 +2016-07-01|7.0|-73.0|-8.1428|-0.13249 +2016-07-01|7.0|-74.0|-7.48877|-0.13551 +2016-07-01|7.0|-75.0|-6.83196|-0.13818 +2016-07-01|7.0|-76.0|-6.17423|-0.14052 +2016-07-01|7.0|-77.0|-5.5174|-0.14251 +2016-07-01|7.0|-78.0|-4.86328|-0.14415 +2016-07-01|7.0|-79.0|-4.21364|-0.14544 +2016-07-01|7.0|-80.0|-3.57022|-0.14639 +2016-07-01|7.0|-81.0|-2.93469|-0.14699 +2016-07-01|7.0|-82.0|-2.30868|-0.14724 +2016-07-01|7.0|-83.0|-1.69376|-0.14716 +2016-07-01|7.0|-84.0|-1.09143|-0.14675 +2016-07-01|7.0|-85.0|-0.5031|-0.14602 +2016-07-01|7.0|-86.0|0.0699|-0.14498 +2016-07-01|7.0|-87.0|0.62632|-0.14365 +2016-07-01|7.0|-88.0|1.16503|-0.14203 +2016-07-01|7.0|-89.0|1.685|-0.14016 +2016-07-01|7.0|-90.0|2.18532|-0.13805 +2016-07-01|7.0|-91.0|2.66519|-0.13572 +2016-07-01|7.0|-92.0|3.12395|-0.13319 +2016-07-01|7.0|-93.0|3.56108|-0.1305 +2016-07-01|7.0|-94.0|3.97619|-0.12767 +2016-07-01|7.0|-95.0|4.36901|-0.12472 +2016-07-01|7.0|-96.0|4.73944|-0.12168 +2016-07-01|7.0|-97.0|5.08751|-0.11857 +2016-07-01|7.0|-98.0|5.41339|-0.11542 +2016-07-01|7.0|-99.0|5.71738|-0.11225 +2016-07-01|7.0|-100.0|5.99992|-0.10909 +2016-07-01|7.0|-101.0|6.26157|-0.10594 +2016-07-01|7.0|-102.0|6.50301|-0.10284 +2016-07-01|7.0|-103.0|6.72502|-0.09979 +2016-07-01|7.0|-104.0|6.9285|-0.09681 +2016-07-01|7.0|-105.0|7.11442|-0.09391 +2016-07-01|7.0|-106.0|7.28381|-0.09109 +2016-07-01|7.0|-107.0|7.43779|-0.08836 +2016-07-01|7.0|-108.0|7.5775|-0.08573 +2016-07-01|7.0|-109.0|7.70411|-0.08318 +2016-07-01|7.0|-110.0|7.81881|-0.08072 +2016-07-01|7.0|-111.0|7.92278|-0.07835 +2016-07-01|7.0|-112.0|8.01718|-0.07606 +2016-07-01|7.0|-113.0|8.10314|-0.07383 +2016-07-01|7.0|-114.0|8.18172|-0.07168 +2016-07-01|7.0|-115.0|8.25396|-0.06958 +2016-07-01|7.0|-116.0|8.32077|-0.06753 +2016-07-01|7.0|-117.0|8.38301|-0.06551 +2016-07-01|7.0|-118.0|8.44143|-0.06353 +2016-07-01|7.0|-119.0|8.49668|-0.06158 +2016-07-01|7.0|-120.0|8.5493|-0.05964 +2016-07-01|7.0|-121.0|8.59975|-0.05772 +2016-07-01|7.0|-122.0|8.64834|-0.05581 +2016-07-01|7.0|-123.0|8.6953|-0.0539 +2016-07-01|7.0|-124.0|8.74076|-0.05201 +2016-07-01|7.0|-125.0|8.78475|-0.05012 +2016-07-01|7.0|-126.0|8.82722|-0.04825 +2016-07-01|7.0|-127.0|8.86805|-0.04639 +2016-07-01|7.0|-128.0|8.90704|-0.04455 +2016-07-01|7.0|-129.0|8.94397|-0.04273 +2016-07-01|7.0|-130.0|8.97857|-0.04094 +2016-07-01|7.0|-131.0|9.01054|-0.03919 +2016-07-01|7.0|-132.0|9.03959|-0.03747 +2016-07-01|7.0|-133.0|9.06544|-0.0358 +2016-07-01|7.0|-134.0|9.0878|-0.03418 +2016-07-01|7.0|-135.0|9.10644|-0.03262 +2016-07-01|7.0|-136.0|9.12117|-0.0311 +2016-07-01|7.0|-137.0|9.13184|-0.02965 +2016-07-01|7.0|-138.0|9.13837|-0.02824 +2016-07-01|7.0|-139.0|9.14075|-0.02689 +2016-07-01|7.0|-140.0|9.13901|-0.02559 +2016-07-01|7.0|-141.0|9.1333|-0.02433 +2016-07-01|7.0|-142.0|9.12381|-0.0231 +2016-07-01|7.0|-143.0|9.1108|-0.0219 +2016-07-01|7.0|-144.0|9.09462|-0.02073 +2016-07-01|7.0|-145.0|9.07567|-0.01956 +2016-07-01|7.0|-146.0|9.05441|-0.01838 +2016-07-01|7.0|-147.0|9.03134|-0.0172 +2016-07-01|7.0|-148.0|9.00701|-0.016 +2016-07-01|7.0|-149.0|8.982|-0.01476 +2016-07-01|7.0|-150.0|8.95691|-0.01348 +2016-07-01|7.0|-151.0|8.93234|-0.01216 +2016-07-01|7.0|-152.0|8.90889|-0.01078 +2016-07-01|7.0|-153.0|8.88714|-0.00934 +2016-07-01|7.0|-154.0|8.86765|-0.00783 +2016-07-01|7.0|-155.0|8.85092|-0.00627 +2016-07-01|7.0|-156.0|8.83742|-0.00464 +2016-07-01|7.0|-157.0|8.82754|-0.00295 +2016-07-01|7.0|-158.0|8.8216|-0.0012 +2016-07-01|7.0|-159.0|8.81983|6.0E-4 +2016-07-01|7.0|-160.0|8.82239|0.00243 +2016-07-01|7.0|-161.0|8.82931|0.00429 +2016-07-01|7.0|-162.0|8.84055|0.00617 +2016-07-01|7.0|-163.0|8.85594|0.00805 +2016-07-01|7.0|-164.0|8.87519|0.00993 +2016-07-01|7.0|-165.0|8.89794|0.01177 +2016-07-01|7.0|-166.0|8.92369|0.01357 +2016-07-01|7.0|-167.0|8.95184|0.01531 +2016-07-01|7.0|-168.0|8.9817|0.01697 +2016-07-01|7.0|-169.0|9.01249|0.01854 +2016-07-01|7.0|-170.0|9.04334|0.02001 +2016-07-01|7.0|-171.0|9.0733|0.02136 +2016-07-01|7.0|-172.0|9.1014|0.02257 +2016-07-01|7.0|-173.0|9.12658|0.02364 +2016-07-01|7.0|-174.0|9.14779|0.02455 +2016-07-01|7.0|-175.0|9.16395|0.02529 +2016-07-01|7.0|-176.0|9.17399|0.02586 +2016-07-01|7.0|-177.0|9.17687|0.02626 +2016-07-01|7.0|-178.0|9.17158|0.02646 +2016-07-01|7.0|-179.0|9.15718|0.02649 +2016-07-01|8.0|0.0|-2.93207|0.10023 +2016-07-01|8.0|1.0|-2.66409|0.10006 +2016-07-01|8.0|2.0|-2.40394|0.10004 +2016-07-01|8.0|3.0|-2.15082|0.10019 +2016-07-01|8.0|4.0|-1.90394|0.10051 +2016-07-01|8.0|5.0|-1.66253|0.10097 +2016-07-01|8.0|6.0|-1.42585|0.10158 +2016-07-01|8.0|7.0|-1.19326|0.10233 +2016-07-01|8.0|8.0|-0.96417|0.10318 +2016-07-01|8.0|9.0|-0.73813|0.10413 +2016-07-01|8.0|10.0|-0.51479|0.10513 +2016-07-01|8.0|11.0|-0.29396|0.10616 +2016-07-01|8.0|12.0|-0.07558|0.10719 +2016-07-01|8.0|13.0|0.14024|0.10818 +2016-07-01|8.0|14.0|0.35321|0.10907 +2016-07-01|8.0|15.0|0.56291|0.10984 +2016-07-01|8.0|16.0|0.76871|0.11045 +2016-07-01|8.0|17.0|0.96986|0.11083 +2016-07-01|8.0|18.0|1.16543|0.11097 +2016-07-01|8.0|19.0|1.3544|0.11082 +2016-07-01|8.0|20.0|1.53559|0.11034 +2016-07-01|8.0|21.0|1.70777|0.10951 +2016-07-01|8.0|22.0|1.86962|0.10831 +2016-07-01|8.0|23.0|2.01979|0.10671 +2016-07-01|8.0|24.0|2.15692|0.1047 +2016-07-01|8.0|25.0|2.27969|0.1023 +2016-07-01|8.0|26.0|2.38682|0.09949 +2016-07-01|8.0|27.0|2.47713|0.0963 +2016-07-01|8.0|28.0|2.54957|0.09275 +2016-07-01|8.0|29.0|2.60321|0.08888 +2016-07-01|8.0|30.0|2.63733|0.08471 +2016-07-01|8.0|31.0|2.65139|0.08031 +2016-07-01|8.0|32.0|2.64507|0.07571 +2016-07-01|8.0|33.0|2.6183|0.07099 +2016-07-01|8.0|34.0|2.57123|0.06619 +2016-07-01|8.0|35.0|2.50429|0.0614 +2016-07-01|8.0|36.0|2.41814|0.05667 +2016-07-01|8.0|37.0|2.31367|0.05207 +2016-07-01|8.0|38.0|2.19201|0.04766 +2016-07-01|8.0|39.0|2.05451|0.04352 +2016-07-01|8.0|40.0|1.9027|0.03969 +2016-07-01|8.0|41.0|1.73825|0.03624 +2016-07-01|8.0|42.0|1.56299|0.0332 +2016-07-01|8.0|43.0|1.37883|0.03061 +2016-07-01|8.0|44.0|1.18773|0.0285 +2016-07-01|8.0|45.0|0.9917|0.0269 +2016-07-01|8.0|46.0|0.7927|0.02581 +2016-07-01|8.0|47.0|0.59265|0.02523 +2016-07-01|8.0|48.0|0.39341|0.02516 +2016-07-01|8.0|49.0|0.19668|0.02557 +2016-07-01|8.0|50.0|0.00406|0.02644 +2016-07-01|8.0|51.0|-0.18305|0.02773 +2016-07-01|8.0|52.0|-0.36342|0.02942 +2016-07-01|8.0|53.0|-0.53601|0.03144 +2016-07-01|8.0|54.0|-0.69999|0.03375 +2016-07-01|8.0|55.0|-0.85472|0.0363 +2016-07-01|8.0|56.0|-0.99976|0.03903 +2016-07-01|8.0|57.0|-1.13487|0.04189 +2016-07-01|8.0|58.0|-1.25996|0.04482 +2016-07-01|8.0|59.0|-1.37509|0.04777 +2016-07-01|8.0|60.0|-1.48048|0.05069 +2016-07-01|8.0|61.0|-1.57643|0.05355 +2016-07-01|8.0|62.0|-1.66332|0.05629 +2016-07-01|8.0|63.0|-1.74159|0.05888 +2016-07-01|8.0|64.0|-1.81171|0.06129 +2016-07-01|8.0|65.0|-1.87414|0.06351 +2016-07-01|8.0|66.0|-1.92932|0.0655 +2016-07-01|8.0|67.0|-1.97766|0.06727 +2016-07-01|8.0|68.0|-2.01949|0.06879 +2016-07-01|8.0|69.0|-2.05509|0.07007 +2016-07-01|8.0|70.0|-2.08464|0.07112 +2016-07-01|8.0|71.0|-2.10824|0.07193 +2016-07-01|8.0|72.0|-2.12591|0.07252 +2016-07-01|8.0|73.0|-2.13758|0.0729 +2016-07-01|8.0|74.0|-2.14312|0.07308 +2016-07-01|8.0|75.0|-2.14233|0.07306 +2016-07-01|8.0|76.0|-2.13498|0.07288 +2016-07-01|8.0|77.0|-2.12079|0.07253 +2016-07-01|8.0|78.0|-2.09951|0.07202 +2016-07-01|8.0|79.0|-2.07089|0.07137 +2016-07-01|8.0|80.0|-2.03471|0.07058 +2016-07-01|8.0|81.0|-1.99085|0.06966 +2016-07-01|8.0|82.0|-1.93923|0.06859 +2016-07-01|8.0|83.0|-1.87991|0.06739 +2016-07-01|8.0|84.0|-1.81304|0.06604 +2016-07-01|8.0|85.0|-1.73892|0.06453 +2016-07-01|8.0|86.0|-1.65798|0.06285 +2016-07-01|8.0|87.0|-1.57079|0.06099 +2016-07-01|8.0|88.0|-1.47808|0.05893 +2016-07-01|8.0|89.0|-1.38072|0.05666 +2016-07-01|8.0|90.0|-1.27969|0.05417 +2016-07-01|8.0|91.0|-1.17612|0.05142 +2016-07-01|8.0|92.0|-1.07121|0.04841 +2016-07-01|8.0|93.0|-0.96628|0.04513 +2016-07-01|8.0|94.0|-0.86265|0.04156 +2016-07-01|8.0|95.0|-0.76173|0.03769 +2016-07-01|8.0|96.0|-0.66488|0.03352 +2016-07-01|8.0|97.0|-0.57346|0.02905 +2016-07-01|8.0|98.0|-0.48874|0.02428 +2016-07-01|8.0|99.0|-0.41193|0.01922 +2016-07-01|8.0|100.0|-0.34408|0.01388 +2016-07-01|8.0|101.0|-0.28611|0.00828 +2016-07-01|8.0|102.0|-0.23876|0.00244 +2016-07-01|8.0|103.0|-0.20258|-0.00361 +2016-07-01|8.0|104.0|-0.17788|-0.00984 +2016-07-01|8.0|105.0|-0.16477|-0.01622 +2016-07-01|8.0|106.0|-0.1631|-0.02269 +2016-07-01|8.0|107.0|-0.17251|-0.02923 +2016-07-01|8.0|108.0|-0.19236|-0.03578 +2016-07-01|8.0|109.0|-0.22182|-0.04229 +2016-07-01|8.0|110.0|-0.25983|-0.04873 +2016-07-01|8.0|111.0|-0.30515|-0.05504 +2016-07-01|8.0|112.0|-0.35634|-0.06117 +2016-07-01|8.0|113.0|-0.41184|-0.06708 +2016-07-01|8.0|114.0|-0.46997|-0.07272 +2016-07-01|8.0|115.0|-0.52898|-0.07805 +2016-07-01|8.0|116.0|-0.58707|-0.08304 +2016-07-01|8.0|117.0|-0.64241|-0.08765 +2016-07-01|8.0|118.0|-0.69324|-0.09186 +2016-07-01|8.0|119.0|-0.73784|-0.09564 +2016-07-01|8.0|120.0|-0.77456|-0.09897 +2016-07-01|8.0|121.0|-0.80192|-0.10185 +2016-07-01|8.0|122.0|-0.81856|-0.10425 +2016-07-01|8.0|123.0|-0.82328|-0.10619 +2016-07-01|8.0|124.0|-0.81508|-0.10767 +2016-07-01|8.0|125.0|-0.79315|-0.10869 +2016-07-01|8.0|126.0|-0.75688|-0.10926 +2016-07-01|8.0|127.0|-0.70588|-0.1094 +2016-07-01|8.0|128.0|-0.63994|-0.10913 +2016-07-01|8.0|129.0|-0.55904|-0.10847 +2016-07-01|8.0|130.0|-0.46335|-0.10744 +2016-07-01|8.0|131.0|-0.35319|-0.10608 +2016-07-01|8.0|132.0|-0.22906|-0.10439 +2016-07-01|8.0|133.0|-0.09153|-0.10242 +2016-07-01|8.0|134.0|0.05868|-0.10019 +2016-07-01|8.0|135.0|0.22079|-0.09772 +2016-07-01|8.0|136.0|0.39398|-0.09505 +2016-07-01|8.0|137.0|0.57737|-0.09218 +2016-07-01|8.0|138.0|0.77007|-0.08916 +2016-07-01|8.0|139.0|0.97122|-0.08601 +2016-07-01|8.0|140.0|1.17995|-0.08273 +2016-07-01|8.0|141.0|1.39547|-0.07936 +2016-07-01|8.0|142.0|1.61699|-0.07591 +2016-07-01|8.0|143.0|1.84381|-0.0724 +2016-07-01|8.0|144.0|2.07528|-0.06883 +2016-07-01|8.0|145.0|2.3108|-0.06524 +2016-07-01|8.0|146.0|2.54984|-0.06162 +2016-07-01|8.0|147.0|2.79192|-0.05798 +2016-07-01|8.0|148.0|3.0366|-0.05434 +2016-07-01|8.0|149.0|3.28349|-0.05071 +2016-07-01|8.0|150.0|3.5322|-0.04709 +2016-07-01|8.0|151.0|3.78237|-0.04349 +2016-07-01|8.0|152.0|4.03362|-0.03991 +2016-07-01|8.0|153.0|4.28557|-0.03637 +2016-07-01|8.0|154.0|4.53781|-0.03286 +2016-07-01|8.0|155.0|4.7899|-0.0294 +2016-07-01|8.0|156.0|5.04134|-0.02599 +2016-07-01|8.0|157.0|5.29159|-0.02263 +2016-07-01|8.0|158.0|5.54003|-0.01934 +2016-07-01|8.0|159.0|5.78603|-0.01611 +2016-07-01|8.0|160.0|6.02885|-0.01296 +2016-07-01|8.0|161.0|6.26775|-0.00989 +2016-07-01|8.0|162.0|6.5019|-0.0069 +2016-07-01|8.0|163.0|6.73046|-0.00401 +2016-07-01|8.0|164.0|6.95257|-0.00122 +2016-07-01|8.0|165.0|7.16736|0.00146 +2016-07-01|8.0|166.0|7.37394|0.00403 +2016-07-01|8.0|167.0|7.57149|0.00648 +2016-07-01|8.0|168.0|7.7592|0.00879 +2016-07-01|8.0|169.0|7.93631|0.01098 +2016-07-01|8.0|170.0|8.10215|0.01302 +2016-07-01|8.0|171.0|8.25613|0.01491 +2016-07-01|8.0|172.0|8.39777|0.01665 +2016-07-01|8.0|173.0|8.52668|0.01823 +2016-07-01|8.0|174.0|8.64263|0.01964 +2016-07-01|8.0|175.0|8.74548|0.02088 +2016-07-01|8.0|176.0|8.83525|0.02195 +2016-07-01|8.0|177.0|8.9121|0.02283 +2016-07-01|8.0|178.0|8.97631|0.02354 +2016-07-01|8.0|179.0|9.0283|0.02406 +2016-07-01|8.0|-1.0|-3.20865|0.10055 +2016-07-01|8.0|-2.0|-3.49458|0.10101 +2016-07-01|8.0|-3.0|-3.79052|0.10161 +2016-07-01|8.0|-4.0|-4.09706|0.10233 +2016-07-01|8.0|-5.0|-4.41471|0.10314 +2016-07-01|8.0|-6.0|-4.74385|0.10405 +2016-07-01|8.0|-7.0|-5.08475|0.10502 +2016-07-01|8.0|-8.0|-5.43754|0.10604 +2016-07-01|8.0|-9.0|-5.80223|0.1071 +2016-07-01|8.0|-10.0|-6.17866|0.10817 +2016-07-01|8.0|-11.0|-6.56654|0.10925 +2016-07-01|8.0|-12.0|-6.96545|0.11031 +2016-07-01|8.0|-13.0|-7.37479|0.11135 +2016-07-01|8.0|-14.0|-7.79387|0.11234 +2016-07-01|8.0|-15.0|-8.22184|0.11328 +2016-07-01|8.0|-16.0|-8.65773|0.11414 +2016-07-01|8.0|-17.0|-9.10046|0.11493 +2016-07-01|8.0|-18.0|-9.54887|0.11563 +2016-07-01|8.0|-19.0|-10.00168|0.11622 +2016-07-01|8.0|-20.0|-10.45756|0.1167 +2016-07-01|8.0|-21.0|-10.91508|0.11705 +2016-07-01|8.0|-22.0|-11.3728|0.11726 +2016-07-01|8.0|-23.0|-11.8292|0.11731 +2016-07-01|8.0|-24.0|-12.28274|0.1172 +2016-07-01|8.0|-25.0|-12.73186|0.1169 +2016-07-01|8.0|-26.0|-13.175|0.1164 +2016-07-01|8.0|-27.0|-13.61057|0.11569 +2016-07-01|8.0|-28.0|-14.037|0.11474 +2016-07-01|8.0|-29.0|-14.45273|0.11355 +2016-07-01|8.0|-30.0|-14.8562|0.11208 +2016-07-01|8.0|-31.0|-15.2459|0.11034 +2016-07-01|8.0|-32.0|-15.62032|0.1083 +2016-07-01|8.0|-33.0|-15.97799|0.10594 +2016-07-01|8.0|-34.0|-16.31747|0.10326 +2016-07-01|8.0|-35.0|-16.63736|0.10025 +2016-07-01|8.0|-36.0|-16.93632|0.09688 +2016-07-01|8.0|-37.0|-17.21302|0.09317 +2016-07-01|8.0|-38.0|-17.46622|0.0891 +2016-07-01|8.0|-39.0|-17.6947|0.08467 +2016-07-01|8.0|-40.0|-17.89733|0.07989 +2016-07-01|8.0|-41.0|-18.07303|0.07477 +2016-07-01|8.0|-42.0|-18.22079|0.06931 +2016-07-01|8.0|-43.0|-18.33969|0.06353 +2016-07-01|8.0|-44.0|-18.42887|0.05744 +2016-07-01|8.0|-45.0|-18.48759|0.05107 +2016-07-01|8.0|-46.0|-18.51517|0.04443 +2016-07-01|8.0|-47.0|-18.51107|0.03755 +2016-07-01|8.0|-48.0|-18.47482|0.03046 +2016-07-01|8.0|-49.0|-18.4061|0.0232 +2016-07-01|8.0|-50.0|-18.30467|0.01578 +2016-07-01|8.0|-51.0|-18.17044|0.00825 +2016-07-01|8.0|-52.0|-18.00343|6.4E-4 +2016-07-01|8.0|-53.0|-17.8038|-0.00703 +2016-07-01|8.0|-54.0|-17.57184|-0.01471 +2016-07-01|8.0|-55.0|-17.30796|-0.02237 +2016-07-01|8.0|-56.0|-17.01272|-0.02998 +2016-07-01|8.0|-57.0|-16.68679|-0.03751 +2016-07-01|8.0|-58.0|-16.33098|-0.04494 +2016-07-01|8.0|-59.0|-15.94622|-0.05222 +2016-07-01|8.0|-60.0|-15.53356|-0.05934 +2016-07-01|8.0|-61.0|-15.09415|-0.06628 +2016-07-01|8.0|-62.0|-14.62927|-0.073 +2016-07-01|8.0|-63.0|-14.14027|-0.0795 +2016-07-01|8.0|-64.0|-13.62861|-0.08576 +2016-07-01|8.0|-65.0|-13.09581|-0.09176 +2016-07-01|8.0|-66.0|-12.54348|-0.09749 +2016-07-01|8.0|-67.0|-11.97328|-0.10294 +2016-07-01|8.0|-68.0|-11.38691|-0.1081 +2016-07-01|8.0|-69.0|-10.78614|-0.11296 +2016-07-01|8.0|-70.0|-10.17276|-0.11751 +2016-07-01|8.0|-71.0|-9.54857|-0.12174 +2016-07-01|8.0|-72.0|-8.9154|-0.12566 +2016-07-01|8.0|-73.0|-8.27509|-0.12924 +2016-07-01|8.0|-74.0|-7.62948|-0.1325 +2016-07-01|8.0|-75.0|-6.9804|-0.13542 +2016-07-01|8.0|-76.0|-6.32968|-0.138 +2016-07-01|8.0|-77.0|-5.67911|-0.14023 +2016-07-01|8.0|-78.0|-5.03048|-0.14211 +2016-07-01|8.0|-79.0|-4.38552|-0.14365 +2016-07-01|8.0|-80.0|-3.74597|-0.14482 +2016-07-01|8.0|-81.0|-3.11348|-0.14565 +2016-07-01|8.0|-82.0|-2.48967|-0.14613 +2016-07-01|8.0|-83.0|-1.87611|-0.14626 +2016-07-01|8.0|-84.0|-1.2743|-0.14604 +2016-07-01|8.0|-85.0|-0.68565|-0.1455 +2016-07-01|8.0|-86.0|-0.11153|-0.14464 +2016-07-01|8.0|-87.0|0.44681|-0.14347 +2016-07-01|8.0|-88.0|0.98821|-0.142 +2016-07-01|8.0|-89.0|1.5116|-0.14026 +2016-07-01|8.0|-90.0|2.01604|-0.13827 +2016-07-01|8.0|-91.0|2.50068|-0.13605 +2016-07-01|8.0|-92.0|2.96482|-0.13362 +2016-07-01|8.0|-93.0|3.40789|-0.13101 +2016-07-01|8.0|-94.0|3.82943|-0.12824 +2016-07-01|8.0|-95.0|4.22914|-0.12534 +2016-07-01|8.0|-96.0|4.60684|-0.12233 +2016-07-01|8.0|-97.0|4.96251|-0.11925 +2016-07-01|8.0|-98.0|5.29626|-0.11612 +2016-07-01|8.0|-99.0|5.60833|-0.11296 +2016-07-01|8.0|-100.0|5.89909|-0.10979 +2016-07-01|8.0|-101.0|6.16906|-0.10664 +2016-07-01|8.0|-102.0|6.41885|-0.10352 +2016-07-01|8.0|-103.0|6.6492|-0.10045 +2016-07-01|8.0|-104.0|6.86095|-0.09744 +2016-07-01|8.0|-105.0|7.05502|-0.0945 +2016-07-01|8.0|-106.0|7.2324|-0.09165 +2016-07-01|8.0|-107.0|7.39416|-0.08889 +2016-07-01|8.0|-108.0|7.54141|-0.08621 +2016-07-01|8.0|-109.0|7.67528|-0.08363 +2016-07-01|8.0|-110.0|7.79694|-0.08114 +2016-07-01|8.0|-111.0|7.90754|-0.07874 +2016-07-01|8.0|-112.0|8.00822|-0.07642 +2016-07-01|8.0|-113.0|8.10008|-0.07418 +2016-07-01|8.0|-114.0|8.18419|-0.072 +2016-07-01|8.0|-115.0|8.26156|-0.06989 +2016-07-01|8.0|-116.0|8.3331|-0.06783 +2016-07-01|8.0|-117.0|8.39967|-0.06582 +2016-07-01|8.0|-118.0|8.46202|-0.06384 +2016-07-01|8.0|-119.0|8.5208|-0.0619 +2016-07-01|8.0|-120.0|8.57657|-0.05997 +2016-07-01|8.0|-121.0|8.62978|-0.05807 +2016-07-01|8.0|-122.0|8.68075|-0.05619 +2016-07-01|8.0|-123.0|8.72974|-0.05431 +2016-07-01|8.0|-124.0|8.77687|-0.05245 +2016-07-01|8.0|-125.0|8.8222|-0.0506 +2016-07-01|8.0|-126.0|8.86568|-0.04876 +2016-07-01|8.0|-127.0|8.90721|-0.04694 +2016-07-01|8.0|-128.0|8.94661|-0.04514 +2016-07-01|8.0|-129.0|8.98367|-0.04337 +2016-07-01|8.0|-130.0|9.01814|-0.04162 +2016-07-01|8.0|-131.0|9.04972|-0.03991 +2016-07-01|8.0|-132.0|9.07815|-0.03823 +2016-07-01|8.0|-133.0|9.10315|-0.0366 +2016-07-01|8.0|-134.0|9.12446|-0.03502 +2016-07-01|8.0|-135.0|9.14185|-0.03348 +2016-07-01|8.0|-136.0|9.15516|-0.032 +2016-07-01|8.0|-137.0|9.16424|-0.03057 +2016-07-01|8.0|-138.0|9.16904|-0.02919 +2016-07-01|8.0|-139.0|9.16954|-0.02786 +2016-07-01|8.0|-140.0|9.16583|-0.02658 +2016-07-01|8.0|-141.0|9.15804|-0.02534 +2016-07-01|8.0|-142.0|9.14639|-0.02413 +2016-07-01|8.0|-143.0|9.13117|-0.02294 +2016-07-01|8.0|-144.0|9.11274|-0.02178 +2016-07-01|8.0|-145.0|9.09151|-0.02062 +2016-07-01|8.0|-146.0|9.06796|-0.01947 +2016-07-01|8.0|-147.0|9.04262|-0.0183 +2016-07-01|8.0|-148.0|9.01606|-0.01712 +2016-07-01|8.0|-149.0|8.98886|-0.0159 +2016-07-01|8.0|-150.0|8.96164|-0.01464 +2016-07-01|8.0|-151.0|8.93502|-0.01334 +2016-07-01|8.0|-152.0|8.90959|-0.01199 +2016-07-01|8.0|-153.0|8.88596|-0.01058 +2016-07-01|8.0|-154.0|8.86468|-0.00911 +2016-07-01|8.0|-155.0|8.84626|-0.00758 +2016-07-01|8.0|-156.0|8.83116|-0.00599 +2016-07-01|8.0|-157.0|8.81976|-0.00434 +2016-07-01|8.0|-158.0|8.81238|-0.00264 +2016-07-01|8.0|-159.0|8.80924|-8.9E-4 +2016-07-01|8.0|-160.0|8.81047|9.0E-4 +2016-07-01|8.0|-161.0|8.8161|0.00272 +2016-07-01|8.0|-162.0|8.82604|0.00455 +2016-07-01|8.0|-163.0|8.84012|0.00639 +2016-07-01|8.0|-164.0|8.85803|0.00821 +2016-07-01|8.0|-165.0|8.87935|0.01001 +2016-07-01|8.0|-166.0|8.90358|0.01177 +2016-07-01|8.0|-167.0|8.93008|0.01347 +2016-07-01|8.0|-168.0|8.95814|0.0151 +2016-07-01|8.0|-169.0|8.98694|0.01665 +2016-07-01|8.0|-170.0|9.01559|0.01809 +2016-07-01|8.0|-171.0|9.04314|0.01941 +2016-07-01|8.0|-172.0|9.06857|0.02061 +2016-07-01|8.0|-173.0|9.09083|0.02166 +2016-07-01|8.0|-174.0|9.10883|0.02256 +2016-07-01|8.0|-175.0|9.1215|0.02331 +2016-07-01|8.0|-176.0|9.12776|0.02388 +2016-07-01|8.0|-177.0|9.12657|0.02428 +2016-07-01|8.0|-178.0|9.11693|0.0245 +2016-07-01|8.0|-179.0|9.09789|0.02454 +2016-07-01|9.0|0.0|-2.70739|0.09821 +2016-07-01|9.0|1.0|-2.44627|0.09794 +2016-07-01|9.0|2.0|-2.19312|0.09783 +2016-07-01|9.0|3.0|-1.94714|0.09789 +2016-07-01|9.0|4.0|-1.70749|0.09812 +2016-07-01|9.0|5.0|-1.47338|0.09852 +2016-07-01|9.0|6.0|-1.24406|0.09907 +2016-07-01|9.0|7.0|-1.01881|0.09976 +2016-07-01|9.0|8.0|-0.79705|0.10057 +2016-07-01|9.0|9.0|-0.57825|0.10149 +2016-07-01|9.0|10.0|-0.36204|0.10249 +2016-07-01|9.0|11.0|-0.14817|0.10352 +2016-07-01|9.0|12.0|0.06345|0.10457 +2016-07-01|9.0|13.0|0.27275|0.10558 +2016-07-01|9.0|14.0|0.4795|0.10653 +2016-07-01|9.0|15.0|0.6833|0.10737 +2016-07-01|9.0|16.0|0.8836|0.10805 +2016-07-01|9.0|17.0|1.07965|0.10854 +2016-07-01|9.0|18.0|1.2706|0.10879 +2016-07-01|9.0|19.0|1.45543|0.10877 +2016-07-01|9.0|20.0|1.63302|0.10843 +2016-07-01|9.0|21.0|1.80214|0.10776 +2016-07-01|9.0|22.0|1.96151|0.10673 +2016-07-01|9.0|23.0|2.1098|0.10531 +2016-07-01|9.0|24.0|2.24566|0.1035 +2016-07-01|9.0|25.0|2.36778|0.1013 +2016-07-01|9.0|26.0|2.47489|0.0987 +2016-07-01|9.0|27.0|2.56578|0.09572 +2016-07-01|9.0|28.0|2.6394|0.09238 +2016-07-01|9.0|29.0|2.69482|0.08872 +2016-07-01|9.0|30.0|2.73126|0.08476 +2016-07-01|9.0|31.0|2.74818|0.08056 +2016-07-01|9.0|32.0|2.74521|0.07616 +2016-07-01|9.0|33.0|2.72224|0.07162 +2016-07-01|9.0|34.0|2.67938|0.067 +2016-07-01|9.0|35.0|2.61701|0.06236 +2016-07-01|9.0|36.0|2.53572|0.05777 +2016-07-01|9.0|37.0|2.43636|0.0533 +2016-07-01|9.0|38.0|2.32|0.04901 +2016-07-01|9.0|39.0|2.18794|0.04495 +2016-07-01|9.0|40.0|2.04164|0.0412 +2016-07-01|9.0|41.0|1.88274|0.03779 +2016-07-01|9.0|42.0|1.71299|0.03478 +2016-07-01|9.0|43.0|1.53426|0.03221 +2016-07-01|9.0|44.0|1.34848|0.0301 +2016-07-01|9.0|45.0|1.15759|0.02847 +2016-07-01|9.0|46.0|0.96354|0.02734 +2016-07-01|9.0|47.0|0.76821|0.02671 +2016-07-01|9.0|48.0|0.57342|0.02657 +2016-07-01|9.0|49.0|0.38087|0.02691 +2016-07-01|9.0|50.0|0.19212|0.0277 +2016-07-01|9.0|51.0|0.00857|0.0289 +2016-07-01|9.0|52.0|-0.16856|0.03049 +2016-07-01|9.0|53.0|-0.33823|0.03241 +2016-07-01|9.0|54.0|-0.49961|0.03461 +2016-07-01|9.0|55.0|-0.65207|0.03705 +2016-07-01|9.0|56.0|-0.79516|0.03968 +2016-07-01|9.0|57.0|-0.92863|0.04243 +2016-07-01|9.0|58.0|-1.05239|0.04526 +2016-07-01|9.0|59.0|-1.1665|0.04811 +2016-07-01|9.0|60.0|-1.27116|0.05094 +2016-07-01|9.0|61.0|-1.36668|0.0537 +2016-07-01|9.0|62.0|-1.45342|0.05636 +2016-07-01|9.0|63.0|-1.53183|0.05887 +2016-07-01|9.0|64.0|-1.60237|0.0612 +2016-07-01|9.0|65.0|-1.66551|0.06335 +2016-07-01|9.0|66.0|-1.72171|0.06527 +2016-07-01|9.0|67.0|-1.77136|0.06697 +2016-07-01|9.0|68.0|-1.81482|0.06843 +2016-07-01|9.0|69.0|-1.85237|0.06966 +2016-07-01|9.0|70.0|-1.88421|0.07065 +2016-07-01|9.0|71.0|-1.91045|0.07141 +2016-07-01|9.0|72.0|-1.93114|0.07195 +2016-07-01|9.0|73.0|-1.94622|0.07228 +2016-07-01|9.0|74.0|-1.95557|0.07241 +2016-07-01|9.0|75.0|-1.95902|0.07235 +2016-07-01|9.0|76.0|-1.95633|0.07212 +2016-07-01|9.0|77.0|-1.94726|0.07173 +2016-07-01|9.0|78.0|-1.93156|0.07118 +2016-07-01|9.0|79.0|-1.90898|0.07049 +2016-07-01|9.0|80.0|-1.87933|0.06966 +2016-07-01|9.0|81.0|-1.84244|0.0687 +2016-07-01|9.0|82.0|-1.79828|0.0676 +2016-07-01|9.0|83.0|-1.74686|0.06636 +2016-07-01|9.0|84.0|-1.68833|0.06498 +2016-07-01|9.0|85.0|-1.62296|0.06344 +2016-07-01|9.0|86.0|-1.55117|0.06174 +2016-07-01|9.0|87.0|-1.47349|0.05986 +2016-07-01|9.0|88.0|-1.39062|0.05779 +2016-07-01|9.0|89.0|-1.30339|0.05551 +2016-07-01|9.0|90.0|-1.21273|0.05301 +2016-07-01|9.0|91.0|-1.11972|0.05026 +2016-07-01|9.0|92.0|-1.02553|0.04726 +2016-07-01|9.0|93.0|-0.93139|0.044 +2016-07-01|9.0|94.0|-0.83862|0.04045 +2016-07-01|9.0|95.0|-0.74853|0.03661 +2016-07-01|9.0|96.0|-0.66245|0.03247 +2016-07-01|9.0|97.0|-0.58167|0.02804 +2016-07-01|9.0|98.0|-0.50744|0.02332 +2016-07-01|9.0|99.0|-0.44089|0.01831 +2016-07-01|9.0|100.0|-0.38306|0.01303 +2016-07-01|9.0|101.0|-0.33481|0.0075 +2016-07-01|9.0|102.0|-0.29687|0.00173 +2016-07-01|9.0|103.0|-0.26975|-0.00425 +2016-07-01|9.0|104.0|-0.25374|-0.0104 +2016-07-01|9.0|105.0|-0.24895|-0.0167 +2016-07-01|9.0|106.0|-0.25521|-0.02309 +2016-07-01|9.0|107.0|-0.27215|-0.02955 +2016-07-01|9.0|108.0|-0.29917|-0.03602 +2016-07-01|9.0|109.0|-0.33542|-0.04245 +2016-07-01|9.0|110.0|-0.37987|-0.04881 +2016-07-01|9.0|111.0|-0.43129|-0.05504 +2016-07-01|9.0|112.0|-0.48828|-0.0611 +2016-07-01|9.0|113.0|-0.5493|-0.06694 +2016-07-01|9.0|114.0|-0.6127|-0.07251 +2016-07-01|9.0|115.0|-0.67676|-0.07779 +2016-07-01|9.0|116.0|-0.73969|-0.08272 +2016-07-01|9.0|117.0|-0.79974|-0.08729 +2016-07-01|9.0|118.0|-0.85513|-0.09145 +2016-07-01|9.0|119.0|-0.90418|-0.0952 +2016-07-01|9.0|120.0|-0.94528|-0.0985 +2016-07-01|9.0|121.0|-0.97695|-0.10136 +2016-07-01|9.0|122.0|-0.99785|-0.10375 +2016-07-01|9.0|123.0|-1.00679|-0.10569 +2016-07-01|9.0|124.0|-1.00278|-0.10716 +2016-07-01|9.0|125.0|-0.985|-0.10819 +2016-07-01|9.0|126.0|-0.95286|-0.10878 +2016-07-01|9.0|127.0|-0.90592|-0.10895 +2016-07-01|9.0|128.0|-0.84398|-0.10871 +2016-07-01|9.0|129.0|-0.76701|-0.10809 +2016-07-01|9.0|130.0|-0.67514|-0.10711 +2016-07-01|9.0|131.0|-0.56869|-0.10579 +2016-07-01|9.0|132.0|-0.4481|-0.10416 +2016-07-01|9.0|133.0|-0.31394|-0.10225 +2016-07-01|9.0|134.0|-0.16688|-0.10008 +2016-07-01|9.0|135.0|-0.00768|-0.09768 +2016-07-01|9.0|136.0|0.16285|-0.09508 +2016-07-01|9.0|137.0|0.34388|-0.09229 +2016-07-01|9.0|138.0|0.53454|-0.08934 +2016-07-01|9.0|139.0|0.73399|-0.08626 +2016-07-01|9.0|140.0|0.94138|-0.08306 +2016-07-01|9.0|141.0|1.15592|-0.07976 +2016-07-01|9.0|142.0|1.37684|-0.07639 +2016-07-01|9.0|143.0|1.60346|-0.07294 +2016-07-01|9.0|144.0|1.83511|-0.06945 +2016-07-01|9.0|145.0|2.07121|-0.06592 +2016-07-01|9.0|146.0|2.31123|-0.06237 +2016-07-01|9.0|147.0|2.55467|-0.0588 +2016-07-01|9.0|148.0|2.80108|-0.05522 +2016-07-01|9.0|149.0|3.05007|-0.05164 +2016-07-01|9.0|150.0|3.30123|-0.04807 +2016-07-01|9.0|151.0|3.55419|-0.04452 +2016-07-01|9.0|152.0|3.80857|-0.04099 +2016-07-01|9.0|153.0|4.06396|-0.0375 +2016-07-01|9.0|154.0|4.31994|-0.03403 +2016-07-01|9.0|155.0|4.57605|-0.03061 +2016-07-01|9.0|156.0|4.83178|-0.02724 +2016-07-01|9.0|157.0|5.08657|-0.02392 +2016-07-01|9.0|158.0|5.33982|-0.02066 +2016-07-01|9.0|159.0|5.59084|-0.01746 +2016-07-01|9.0|160.0|5.83892|-0.01434 +2016-07-01|9.0|161.0|6.08327|-0.0113 +2016-07-01|9.0|162.0|6.32307|-0.00835 +2016-07-01|9.0|163.0|6.55747|-0.00549 +2016-07-01|9.0|164.0|6.78559|-0.00273 +2016-07-01|9.0|165.0|7.00653|-8.0E-5 +2016-07-01|9.0|166.0|7.21941|0.00245 +2016-07-01|9.0|167.0|7.42338|0.00486 +2016-07-01|9.0|168.0|7.6176|0.00714 +2016-07-01|9.0|169.0|7.8013|0.00929 +2016-07-01|9.0|170.0|7.97379|0.0113 +2016-07-01|9.0|171.0|8.13445|0.01315 +2016-07-01|9.0|172.0|8.28277|0.01485 +2016-07-01|9.0|173.0|8.41834|0.01639 +2016-07-01|9.0|174.0|8.5409|0.01777 +2016-07-01|9.0|175.0|8.65028|0.01897 +2016-07-01|9.0|176.0|8.74647|0.02 +2016-07-01|9.0|177.0|8.82959|0.02086 +2016-07-01|9.0|178.0|8.89991|0.02153 +2016-07-01|9.0|179.0|8.95781|0.02202 +2016-07-01|9.0|-1.0|-2.97729|0.09865 +2016-07-01|9.0|-2.0|-3.25671|0.09922 +2016-07-01|9.0|-3.0|-3.54634|0.09993 +2016-07-01|9.0|-4.0|-3.84677|0.10076 +2016-07-01|9.0|-5.0|-4.15852|0.1017 +2016-07-01|9.0|-6.0|-4.48197|0.10272 +2016-07-01|9.0|-7.0|-4.81739|0.1038 +2016-07-01|9.0|-8.0|-5.1649|0.10494 +2016-07-01|9.0|-9.0|-5.5245|0.10611 +2016-07-01|9.0|-10.0|-5.89605|0.10729 +2016-07-01|9.0|-11.0|-6.27924|0.10847 +2016-07-01|9.0|-12.0|-6.67362|0.10964 +2016-07-01|9.0|-13.0|-7.07864|0.11077 +2016-07-01|9.0|-14.0|-7.49355|0.11186 +2016-07-01|9.0|-15.0|-7.91754|0.11289 +2016-07-01|9.0|-16.0|-8.34962|0.11384 +2016-07-01|9.0|-17.0|-8.78874|0.11472 +2016-07-01|9.0|-18.0|-9.23373|0.11551 +2016-07-01|9.0|-19.0|-9.68333|0.11619 +2016-07-01|9.0|-20.0|-10.13622|0.11675 +2016-07-01|9.0|-21.0|-10.59102|0.11719 +2016-07-01|9.0|-22.0|-11.04627|0.11749 +2016-07-01|9.0|-23.0|-11.50051|0.11764 +2016-07-01|9.0|-24.0|-11.95223|0.11763 +2016-07-01|9.0|-25.0|-12.3999|0.11744 +2016-07-01|9.0|-26.0|-12.84199|0.11705 +2016-07-01|9.0|-27.0|-13.27696|0.11646 +2016-07-01|9.0|-28.0|-13.70327|0.11565 +2016-07-01|9.0|-29.0|-14.11941|0.11459 +2016-07-01|9.0|-30.0|-14.52385|0.11328 +2016-07-01|9.0|-31.0|-14.9151|0.11169 +2016-07-01|9.0|-32.0|-15.29171|0.10982 +2016-07-01|9.0|-33.0|-15.65222|0.10764 +2016-07-01|9.0|-34.0|-15.99523|0.10515 +2016-07-01|9.0|-35.0|-16.31936|0.10232 +2016-07-01|9.0|-36.0|-16.62328|0.09916 +2016-07-01|9.0|-37.0|-16.90568|0.09565 +2016-07-01|9.0|-38.0|-17.16531|0.0918 +2016-07-01|9.0|-39.0|-17.40096|0.08759 +2016-07-01|9.0|-40.0|-17.6115|0.08303 +2016-07-01|9.0|-41.0|-17.79582|0.07812 +2016-07-01|9.0|-42.0|-17.9529|0.07288 +2016-07-01|9.0|-43.0|-18.0818|0.06731 +2016-07-01|9.0|-44.0|-18.18163|0.06143 +2016-07-01|9.0|-45.0|-18.25161|0.05526 +2016-07-01|9.0|-46.0|-18.29103|0.04881 +2016-07-01|9.0|-47.0|-18.29929|0.04212 +2016-07-01|9.0|-48.0|-18.2759|0.0352 +2016-07-01|9.0|-49.0|-18.22046|0.02809 +2016-07-01|9.0|-50.0|-18.13269|0.02082 +2016-07-01|9.0|-51.0|-18.01246|0.01341 +2016-07-01|9.0|-52.0|-17.85972|0.00591 +2016-07-01|9.0|-53.0|-17.67459|-0.00167 +2016-07-01|9.0|-54.0|-17.45729|-0.00928 +2016-07-01|9.0|-55.0|-17.20819|-0.01689 +2016-07-01|9.0|-56.0|-16.92778|-0.02447 +2016-07-01|9.0|-57.0|-16.6167|-0.03199 +2016-07-01|9.0|-58.0|-16.27569|-0.03942 +2016-07-01|9.0|-59.0|-15.90564|-0.04673 +2016-07-01|9.0|-60.0|-15.50755|-0.0539 +2016-07-01|9.0|-61.0|-15.08253|-0.06091 +2016-07-01|9.0|-62.0|-14.6318|-0.06772 +2016-07-01|9.0|-63.0|-14.15668|-0.07433 +2016-07-01|9.0|-64.0|-13.65859|-0.08071 +2016-07-01|9.0|-65.0|-13.139|-0.08686 +2016-07-01|9.0|-66.0|-12.59949|-0.09275 +2016-07-01|9.0|-67.0|-12.04167|-0.09837 +2016-07-01|9.0|-68.0|-11.46723|-0.10371 +2016-07-01|9.0|-69.0|-10.87788|-0.10877 +2016-07-01|9.0|-70.0|-10.27536|-0.11352 +2016-07-01|9.0|-71.0|-9.66146|-0.11798 +2016-07-01|9.0|-72.0|-9.03797|-0.12212 +2016-07-01|9.0|-73.0|-8.4067|-0.12594 +2016-07-01|9.0|-74.0|-7.76944|-0.12943 +2016-07-01|9.0|-75.0|-7.12801|-0.13259 +2016-07-01|9.0|-76.0|-6.48418|-0.1354 +2016-07-01|9.0|-77.0|-5.83975|-0.13787 +2016-07-01|9.0|-78.0|-5.19646|-0.13999 +2016-07-01|9.0|-79.0|-4.55605|-0.14176 +2016-07-01|9.0|-80.0|-3.9202|-0.14317 +2016-07-01|9.0|-81.0|-3.29058|-0.14421 +2016-07-01|9.0|-82.0|-2.6688|-0.14491 +2016-07-01|9.0|-83.0|-2.05641|-0.14524 +2016-07-01|9.0|-84.0|-1.45493|-0.14523 +2016-07-01|9.0|-85.0|-0.86578|-0.14487 +2016-07-01|9.0|-86.0|-0.29034|-0.14418 +2016-07-01|9.0|-87.0|0.27012|-0.14317 +2016-07-01|9.0|-88.0|0.81441|-0.14185 +2016-07-01|9.0|-89.0|1.34143|-0.14025 +2016-07-01|9.0|-90.0|1.8502|-0.13837 +2016-07-01|9.0|-91.0|2.33983|-0.13626 +2016-07-01|9.0|-92.0|2.80958|-0.13392 +2016-07-01|9.0|-93.0|3.25881|-0.13139 +2016-07-01|9.0|-94.0|3.68703|-0.12868 +2016-07-01|9.0|-95.0|4.09386|-0.12584 +2016-07-01|9.0|-96.0|4.47909|-0.12288 +2016-07-01|9.0|-97.0|4.84262|-0.11983 +2016-07-01|9.0|-98.0|5.1845|-0.11671 +2016-07-01|9.0|-99.0|5.50492|-0.11356 +2016-07-01|9.0|-100.0|5.80419|-0.11039 +2016-07-01|9.0|-101.0|6.08277|-0.10724 +2016-07-01|9.0|-102.0|6.34122|-0.1041 +2016-07-01|9.0|-103.0|6.58023|-0.10101 +2016-07-01|9.0|-104.0|6.80056|-0.09798 +2016-07-01|9.0|-105.0|7.0031|-0.09502 +2016-07-01|9.0|-106.0|7.18881|-0.09214 +2016-07-01|9.0|-107.0|7.3587|-0.08935 +2016-07-01|9.0|-108.0|7.51383|-0.08665 +2016-07-01|9.0|-109.0|7.65533|-0.08404 +2016-07-01|9.0|-110.0|7.7843|-0.08152 +2016-07-01|9.0|-111.0|7.90188|-0.0791 +2016-07-01|9.0|-112.0|8.00919|-0.07676 +2016-07-01|9.0|-113.0|8.10731|-0.0745 +2016-07-01|9.0|-114.0|8.1973|-0.07231 +2016-07-01|9.0|-115.0|8.28013|-0.07019 +2016-07-01|9.0|-116.0|8.35673|-0.06813 +2016-07-01|9.0|-117.0|8.42795|-0.06612 +2016-07-01|9.0|-118.0|8.49453|-0.06415 +2016-07-01|9.0|-119.0|8.55713|-0.06222 +2016-07-01|9.0|-120.0|8.61632|-0.06032 +2016-07-01|9.0|-121.0|8.67253|-0.05844 +2016-07-01|9.0|-122.0|8.72612|-0.05659 +2016-07-01|9.0|-123.0|8.77734|-0.05475 +2016-07-01|9.0|-124.0|8.82633|-0.05292 +2016-07-01|9.0|-125.0|8.87317|-0.05111 +2016-07-01|9.0|-126.0|8.91781|-0.04932 +2016-07-01|9.0|-127.0|8.96016|-0.04754 +2016-07-01|9.0|-128.0|9.00008|-0.04578 +2016-07-01|9.0|-129.0|9.03735|-0.04405 +2016-07-01|9.0|-130.0|9.07174|-0.04235 +2016-07-01|9.0|-131.0|9.10298|-0.04068 +2016-07-01|9.0|-132.0|9.1308|-0.03905 +2016-07-01|9.0|-133.0|9.15496|-0.03745 +2016-07-01|9.0|-134.0|9.1752|-0.03591 +2016-07-01|9.0|-135.0|9.19132|-0.03441 +2016-07-01|9.0|-136.0|9.20315|-0.03296 +2016-07-01|9.0|-137.0|9.21059|-0.03155 +2016-07-01|9.0|-138.0|9.21359|-0.0302 +2016-07-01|9.0|-139.0|9.21215|-0.0289 +2016-07-01|9.0|-140.0|9.20637|-0.02763 +2016-07-01|9.0|-141.0|9.1964|-0.02641 +2016-07-01|9.0|-142.0|9.1825|-0.02522 +2016-07-01|9.0|-143.0|9.16495|-0.02405 +2016-07-01|9.0|-144.0|9.14414|-0.0229 +2016-07-01|9.0|-145.0|9.1205|-0.02176 +2016-07-01|9.0|-146.0|9.09453|-0.02062 +2016-07-01|9.0|-147.0|9.06678|-0.01947 +2016-07-01|9.0|-148.0|9.03782|-0.01831 +2016-07-01|9.0|-149.0|9.00827|-0.01711 +2016-07-01|9.0|-150.0|8.97875|-0.01588 +2016-07-01|9.0|-151.0|8.94988|-0.01461 +2016-07-01|9.0|-152.0|8.92228|-0.01328 +2016-07-01|9.0|-153.0|8.89655|-0.01191 +2016-07-01|9.0|-154.0|8.87325|-0.01047 +2016-07-01|9.0|-155.0|8.85288|-0.00898 +2016-07-01|9.0|-156.0|8.83591|-0.00743 +2016-07-01|9.0|-157.0|8.82272|-0.00583 +2016-07-01|9.0|-158.0|8.81359|-0.00417 +2016-07-01|9.0|-159.0|8.80876|-0.00247 +2016-07-01|9.0|-160.0|8.80831|-7.3E-4 +2016-07-01|9.0|-161.0|8.81228|0.00103 +2016-07-01|9.0|-162.0|8.82054|0.00282 +2016-07-01|9.0|-163.0|8.8329|0.0046 +2016-07-01|9.0|-164.0|8.84902|0.00638 +2016-07-01|9.0|-165.0|8.86847|0.00813 +2016-07-01|9.0|-166.0|8.8907|0.00985 +2016-07-01|9.0|-167.0|8.91507|0.01151 +2016-07-01|9.0|-168.0|8.94081|0.0131 +2016-07-01|9.0|-169.0|8.9671|0.01461 +2016-07-01|9.0|-170.0|8.99302|0.01602 +2016-07-01|9.0|-171.0|9.0176|0.01732 +2016-07-01|9.0|-172.0|9.03979|0.0185 +2016-07-01|9.0|-173.0|9.05854|0.01954 +2016-07-01|9.0|-174.0|9.07276|0.02044 +2016-07-01|9.0|-175.0|9.08135|0.02118 +2016-07-01|9.0|-176.0|9.08325|0.02176 +2016-07-01|9.0|-177.0|9.0774|0.02217 +2016-07-01|9.0|-178.0|9.06282|0.0224 +2016-07-01|9.0|-179.0|9.03857|0.02245 +2016-07-01|10.0|0.0|-2.49497|0.09641 +2016-07-01|10.0|1.0|-2.24011|0.09604 +2016-07-01|10.0|2.0|-1.99337|0.09584 +2016-07-01|10.0|3.0|-1.75392|0.09582 +2016-07-01|10.0|4.0|-1.52092|0.09597 +2016-07-01|10.0|5.0|-1.29354|0.09629 +2016-07-01|10.0|6.0|-1.07099|0.09677 +2016-07-01|10.0|7.0|-0.85255|0.09741 +2016-07-01|10.0|8.0|-0.63758|0.09819 +2016-07-01|10.0|9.0|-0.42553|0.09907 +2016-07-01|10.0|10.0|-0.21599|0.10004 +2016-07-01|10.0|11.0|-0.00867|0.10107 +2016-07-01|10.0|12.0|0.19657|0.10213 +2016-07-01|10.0|13.0|0.3997|0.10317 +2016-07-01|10.0|14.0|0.60052|0.10415 +2016-07-01|10.0|15.0|0.7987|0.10504 +2016-07-01|10.0|16.0|0.99369|0.10579 +2016-07-01|10.0|17.0|1.18482|0.10636 +2016-07-01|10.0|18.0|1.37125|0.10671 +2016-07-01|10.0|19.0|1.55201|0.1068 +2016-07-01|10.0|20.0|1.72601|0.1066 +2016-07-01|10.0|21.0|1.89206|0.10607 +2016-07-01|10.0|22.0|2.0489|0.10519 +2016-07-01|10.0|23.0|2.19521|0.10395 +2016-07-01|10.0|24.0|2.32967|0.10232 +2016-07-01|10.0|25.0|2.45097|0.1003 +2016-07-01|10.0|26.0|2.55784|0.09789 +2016-07-01|10.0|27.0|2.64909|0.09511 +2016-07-01|10.0|28.0|2.72365|0.09198 +2016-07-01|10.0|29.0|2.78056|0.08852 +2016-07-01|10.0|30.0|2.81906|0.08476 +2016-07-01|10.0|31.0|2.83853|0.08075 +2016-07-01|10.0|32.0|2.83861|0.07654 +2016-07-01|10.0|33.0|2.81914|0.07218 +2016-07-01|10.0|34.0|2.78018|0.06773 +2016-07-01|10.0|35.0|2.72206|0.06325 +2016-07-01|10.0|36.0|2.64534|0.05881 +2016-07-01|10.0|37.0|2.5508|0.05446 +2016-07-01|10.0|38.0|2.43948|0.05028 +2016-07-01|10.0|39.0|2.31259|0.04631 +2016-07-01|10.0|40.0|2.17156|0.04263 +2016-07-01|10.0|41.0|2.01796|0.03928 +2016-07-01|10.0|42.0|1.85351|0.03631 +2016-07-01|10.0|43.0|1.68003|0.03375 +2016-07-01|10.0|44.0|1.49938|0.03164 +2016-07-01|10.0|45.0|1.31349|0.02999 +2016-07-01|10.0|46.0|1.12424|0.02883 +2016-07-01|10.0|47.0|0.93351|0.02816 +2016-07-01|10.0|48.0|0.74308|0.02796 +2016-07-01|10.0|49.0|0.55462|0.02822 +2016-07-01|10.0|50.0|0.36968|0.02893 +2016-07-01|10.0|51.0|0.18964|0.03004 +2016-07-01|10.0|52.0|0.01573|0.03153 +2016-07-01|10.0|53.0|-0.15103|0.03336 +2016-07-01|10.0|54.0|-0.30982|0.03546 +2016-07-01|10.0|55.0|-0.45999|0.0378 +2016-07-01|10.0|56.0|-0.6011|0.04032 +2016-07-01|10.0|57.0|-0.73288|0.04297 +2016-07-01|10.0|58.0|-0.85524|0.0457 +2016-07-01|10.0|59.0|-0.96824|0.04846 +2016-07-01|10.0|60.0|-1.07208|0.05119 +2016-07-01|10.0|61.0|-1.16703|0.05387 +2016-07-01|10.0|62.0|-1.25349|0.05643 +2016-07-01|10.0|63.0|-1.33189|0.05887 +2016-07-01|10.0|64.0|-1.40269|0.06113 +2016-07-01|10.0|65.0|-1.46636|0.0632 +2016-07-01|10.0|66.0|-1.52336|0.06506 +2016-07-01|10.0|67.0|-1.5741|0.0667 +2016-07-01|10.0|68.0|-1.61895|0.06811 +2016-07-01|10.0|69.0|-1.65819|0.06928 +2016-07-01|10.0|70.0|-1.69205|0.07023 +2016-07-01|10.0|71.0|-1.72066|0.07094 +2016-07-01|10.0|72.0|-1.74407|0.07144 +2016-07-01|10.0|73.0|-1.76224|0.07172 +2016-07-01|10.0|74.0|-1.77509|0.07181 +2016-07-01|10.0|75.0|-1.78244|0.07171 +2016-07-01|10.0|76.0|-1.78409|0.07144 +2016-07-01|10.0|77.0|-1.77981|0.07101 +2016-07-01|10.0|78.0|-1.76935|0.07043 +2016-07-01|10.0|79.0|-1.75248|0.0697 +2016-07-01|10.0|80.0|-1.72901|0.06883 +2016-07-01|10.0|81.0|-1.69879|0.06783 +2016-07-01|10.0|82.0|-1.66176|0.0667 +2016-07-01|10.0|83.0|-1.61793|0.06543 +2016-07-01|10.0|84.0|-1.56745|0.06402 +2016-07-01|10.0|85.0|-1.51057|0.06245 +2016-07-01|10.0|86.0|-1.44767|0.06073 +2016-07-01|10.0|87.0|-1.37926|0.05883 +2016-07-01|10.0|88.0|-1.30601|0.05674 +2016-07-01|10.0|89.0|-1.2287|0.05445 +2016-07-01|10.0|90.0|-1.14823|0.05194 +2016-07-01|10.0|91.0|-1.06562|0.04919 +2016-07-01|10.0|92.0|-0.982|0.0462 +2016-07-01|10.0|93.0|-0.89856|0.04294 +2016-07-01|10.0|94.0|-0.81653|0.0394 +2016-07-01|10.0|95.0|-0.7372|0.03559 +2016-07-01|10.0|96.0|-0.66183|0.03149 +2016-07-01|10.0|97.0|-0.59167|0.0271 +2016-07-01|10.0|98.0|-0.52791|0.02242 +2016-07-01|10.0|99.0|-0.47164|0.01746 +2016-07-01|10.0|100.0|-0.42384|0.01224 +2016-07-01|10.0|101.0|-0.38537|0.00677 +2016-07-01|10.0|102.0|-0.35689|0.00106 +2016-07-01|10.0|103.0|-0.33889|-0.00484 +2016-07-01|10.0|104.0|-0.33165|-0.01092 +2016-07-01|10.0|105.0|-0.33526|-0.01713 +2016-07-01|10.0|106.0|-0.34955|-0.02345 +2016-07-01|10.0|107.0|-0.37414|-0.02982 +2016-07-01|10.0|108.0|-0.40843|-0.0362 +2016-07-01|10.0|109.0|-0.45159|-0.04256 +2016-07-01|10.0|110.0|-0.50261|-0.04884 +2016-07-01|10.0|111.0|-0.56026|-0.05499 +2016-07-01|10.0|112.0|-0.62318|-0.06097 +2016-07-01|10.0|113.0|-0.68986|-0.06673 +2016-07-01|10.0|114.0|-0.75867|-0.07224 +2016-07-01|10.0|115.0|-0.82791|-0.07745 +2016-07-01|10.0|116.0|-0.89585|-0.08233 +2016-07-01|10.0|117.0|-0.96074|-0.08684 +2016-07-01|10.0|118.0|-1.02086|-0.09096 +2016-07-01|10.0|119.0|-1.07452|-0.09467 +2016-07-01|10.0|120.0|-1.12016|-0.09794 +2016-07-01|10.0|121.0|-1.15631|-0.10077 +2016-07-01|10.0|122.0|-1.18164|-0.10315 +2016-07-01|10.0|123.0|-1.19498|-0.10508 +2016-07-01|10.0|124.0|-1.19533|-0.10656 +2016-07-01|10.0|125.0|-1.1819|-0.1076 +2016-07-01|10.0|126.0|-1.15405|-0.1082 +2016-07-01|10.0|127.0|-1.11138|-0.1084 +2016-07-01|10.0|128.0|-1.05364|-0.10819 +2016-07-01|10.0|129.0|-0.98078|-0.10761 +2016-07-01|10.0|130.0|-0.89293|-0.10667 +2016-07-01|10.0|131.0|-0.79037|-0.10541 +2016-07-01|10.0|132.0|-0.67351|-0.10384 +2016-07-01|10.0|133.0|-0.5429|-0.10199 +2016-07-01|10.0|134.0|-0.39919|-0.09988 +2016-07-01|10.0|135.0|-0.24308|-0.09755 +2016-07-01|10.0|136.0|-0.07537|-0.09502 +2016-07-01|10.0|137.0|0.10314|-0.09231 +2016-07-01|10.0|138.0|0.2916|-0.08943 +2016-07-01|10.0|139.0|0.48919|-0.08643 +2016-07-01|10.0|140.0|0.6951|-0.08331 +2016-07-01|10.0|141.0|0.90853|-0.08009 +2016-07-01|10.0|142.0|1.12875|-0.07679 +2016-07-01|10.0|143.0|1.35505|-0.07342 +2016-07-01|10.0|144.0|1.5868|-0.07 +2016-07-01|10.0|145.0|1.8234|-0.06654 +2016-07-01|10.0|146.0|2.06432|-0.06306 +2016-07-01|10.0|147.0|2.30906|-0.05955 +2016-07-01|10.0|148.0|2.55717|-0.05604 +2016-07-01|10.0|149.0|2.80822|-0.05252 +2016-07-01|10.0|150.0|3.06182|-0.04901 +2016-07-01|10.0|151.0|3.31757|-0.04551 +2016-07-01|10.0|152.0|3.57507|-0.04204 +2016-07-01|10.0|153.0|3.83392|-0.03859 +2016-07-01|10.0|154.0|4.09366|-0.03517 +2016-07-01|10.0|155.0|4.35383|-0.0318 +2016-07-01|10.0|156.0|4.61391|-0.02846 +2016-07-01|10.0|157.0|4.87332|-0.02519 +2016-07-01|10.0|158.0|5.13144|-0.02197 +2016-07-01|10.0|159.0|5.38759|-0.01881 +2016-07-01|10.0|160.0|5.64102|-0.01573 +2016-07-01|10.0|161.0|5.89095|-0.01273 +2016-07-01|10.0|162.0|6.13655|-0.00982 +2016-07-01|10.0|163.0|6.37694|-0.007 +2016-07-01|10.0|164.0|6.61124|-0.00428 +2016-07-01|10.0|165.0|6.83854|-0.00167 +2016-07-01|10.0|166.0|7.05794|8.2E-4 +2016-07-01|10.0|167.0|7.26856|0.00319 +2016-07-01|10.0|168.0|7.46956|0.00543 +2016-07-01|10.0|169.0|7.66014|0.00753 +2016-07-01|10.0|170.0|7.83959|0.00949 +2016-07-01|10.0|171.0|8.00727|0.0113 +2016-07-01|10.0|172.0|8.16264|0.01296 +2016-07-01|10.0|173.0|8.30527|0.01446 +2016-07-01|10.0|174.0|8.43485|0.01579 +2016-07-01|10.0|175.0|8.5512|0.01695 +2016-07-01|10.0|176.0|8.65427|0.01794 +2016-07-01|10.0|177.0|8.74417|0.01875 +2016-07-01|10.0|178.0|8.82111|0.01939 +2016-07-01|10.0|179.0|8.88546|0.01985 +2016-07-01|10.0|-1.0|-2.75876|0.09694 +2016-07-01|10.0|-2.0|-3.03223|0.09762 +2016-07-01|10.0|-3.0|-3.31609|0.09844 +2016-07-01|10.0|-4.0|-3.61094|0.09937 +2016-07-01|10.0|-5.0|-3.91726|0.10041 +2016-07-01|10.0|-6.0|-4.23546|0.10153 +2016-07-01|10.0|-7.0|-4.5658|0.10271 +2016-07-01|10.0|-8.0|-4.90839|0.10395 +2016-07-01|10.0|-9.0|-5.26322|0.10521 +2016-07-01|10.0|-10.0|-5.63013|0.10648 +2016-07-01|10.0|-11.0|-6.00882|0.10775 +2016-07-01|10.0|-12.0|-6.39884|0.109 +2016-07-01|10.0|-13.0|-6.7996|0.11022 +2016-07-01|10.0|-14.0|-7.21039|0.11138 +2016-07-01|10.0|-15.0|-7.63036|0.11249 +2016-07-01|10.0|-16.0|-8.05856|0.11352 +2016-07-01|10.0|-17.0|-8.49391|0.11447 +2016-07-01|10.0|-18.0|-8.93527|0.11532 +2016-07-01|10.0|-19.0|-9.3814|0.11608 +2016-07-01|10.0|-20.0|-9.83099|0.11672 +2016-07-01|10.0|-21.0|-10.28268|0.11723 +2016-07-01|10.0|-22.0|-10.73505|0.11761 +2016-07-01|10.0|-23.0|-11.18667|0.11785 +2016-07-01|10.0|-24.0|-11.63605|0.11792 +2016-07-01|10.0|-25.0|-12.08172|0.11783 +2016-07-01|10.0|-26.0|-12.52217|0.11755 +2016-07-01|10.0|-27.0|-12.95592|0.11708 +2016-07-01|10.0|-28.0|-13.38146|0.11638 +2016-07-01|10.0|-29.0|-13.79731|0.11546 +2016-07-01|10.0|-30.0|-14.20201|0.11429 +2016-07-01|10.0|-31.0|-14.59411|0.11286 +2016-07-01|10.0|-32.0|-14.97217|0.11115 +2016-07-01|10.0|-33.0|-15.3348|0.10915 +2016-07-01|10.0|-34.0|-15.6806|0.10684 +2016-07-01|10.0|-35.0|-16.00823|0.10421 +2016-07-01|10.0|-36.0|-16.31638|0.10125 +2016-07-01|10.0|-37.0|-16.60376|0.09796 +2016-07-01|10.0|-38.0|-16.86912|0.09432 +2016-07-01|10.0|-39.0|-17.11128|0.09033 +2016-07-01|10.0|-40.0|-17.32907|0.08599 +2016-07-01|10.0|-41.0|-17.5214|0.08131 +2016-07-01|10.0|-42.0|-17.68724|0.07629 +2016-07-01|10.0|-43.0|-17.8256|0.07094 +2016-07-01|10.0|-44.0|-17.93558|0.06527 +2016-07-01|10.0|-45.0|-18.01636|0.05931 +2016-07-01|10.0|-46.0|-18.06721|0.05307 +2016-07-01|10.0|-47.0|-18.08748|0.04657 +2016-07-01|10.0|-48.0|-18.07662|0.03983 +2016-07-01|10.0|-49.0|-18.0342|0.03289 +2016-07-01|10.0|-50.0|-17.95989|0.02577 +2016-07-01|10.0|-51.0|-17.85348|0.0185 +2016-07-01|10.0|-52.0|-17.71489|0.01111 +2016-07-01|10.0|-53.0|-17.54417|0.00364 +2016-07-01|10.0|-54.0|-17.34149|-0.00389 +2016-07-01|10.0|-55.0|-17.10715|-0.01144 +2016-07-01|10.0|-56.0|-16.8416|-0.01898 +2016-07-01|10.0|-57.0|-16.5454|-0.02648 +2016-07-01|10.0|-58.0|-16.21926|-0.03391 +2016-07-01|10.0|-59.0|-15.86401|-0.04125 +2016-07-01|10.0|-60.0|-15.48058|-0.04846 +2016-07-01|10.0|-61.0|-15.07005|-0.05553 +2016-07-01|10.0|-62.0|-14.63358|-0.06243 +2016-07-01|10.0|-63.0|-14.17245|-0.06914 +2016-07-01|10.0|-64.0|-13.68802|-0.07564 +2016-07-01|10.0|-65.0|-13.18174|-0.08192 +2016-07-01|10.0|-66.0|-12.65513|-0.08796 +2016-07-01|10.0|-67.0|-12.10976|-0.09375 +2016-07-01|10.0|-68.0|-11.54727|-0.09928 +2016-07-01|10.0|-69.0|-10.96935|-0.10453 +2016-07-01|10.0|-70.0|-10.37771|-0.10949 +2016-07-01|10.0|-71.0|-9.77408|-0.11415 +2016-07-01|10.0|-72.0|-9.16022|-0.11852 +2016-07-01|10.0|-73.0|-8.53791|-0.12256 +2016-07-01|10.0|-74.0|-7.90892|-0.12628 +2016-07-01|10.0|-75.0|-7.27502|-0.12968 +2016-07-01|10.0|-76.0|-6.63797|-0.13273 +2016-07-01|10.0|-77.0|-5.99953|-0.13543 +2016-07-01|10.0|-78.0|-5.36143|-0.13779 +2016-07-01|10.0|-79.0|-4.72538|-0.13978 +2016-07-01|10.0|-80.0|-4.09306|-0.14141 +2016-07-01|10.0|-81.0|-3.46611|-0.14268 +2016-07-01|10.0|-82.0|-2.84615|-0.14358 +2016-07-01|10.0|-83.0|-2.23474|-0.14412 +2016-07-01|10.0|-84.0|-1.63337|-0.14429 +2016-07-01|10.0|-85.0|-1.04351|-0.14412 +2016-07-01|10.0|-86.0|-0.46652|-0.1436 +2016-07-01|10.0|-87.0|0.09628|-0.14275 +2016-07-01|10.0|-88.0|0.64368|-0.14158 +2016-07-01|10.0|-89.0|1.17456|-0.14011 +2016-07-01|10.0|-90.0|1.68789|-0.13836 +2016-07-01|10.0|-91.0|2.18274|-0.13635 +2016-07-01|10.0|-92.0|2.65833|-0.1341 +2016-07-01|10.0|-93.0|3.11396|-0.13165 +2016-07-01|10.0|-94.0|3.54909|-0.12902 +2016-07-01|10.0|-95.0|3.9633|-0.12623 +2016-07-01|10.0|-96.0|4.35629|-0.12331 +2016-07-01|10.0|-97.0|4.72794|-0.12029 +2016-07-01|10.0|-98.0|5.07822|-0.1172 +2016-07-01|10.0|-99.0|5.40726|-0.11407 +2016-07-01|10.0|-100.0|5.71533|-0.11091 +2016-07-01|10.0|-101.0|6.00281|-0.10775 +2016-07-01|10.0|-102.0|6.27021|-0.10461 +2016-07-01|10.0|-103.0|6.51816|-0.10151 +2016-07-01|10.0|-104.0|6.74739|-0.09846 +2016-07-01|10.0|-105.0|6.95873|-0.09548 +2016-07-01|10.0|-106.0|7.15308|-0.09258 +2016-07-01|10.0|-107.0|7.33142|-0.08976 +2016-07-01|10.0|-108.0|7.49478|-0.08704 +2016-07-01|10.0|-109.0|7.64422|-0.08441 +2016-07-01|10.0|-110.0|7.78085|-0.08187 +2016-07-01|10.0|-111.0|7.90575|-0.07943 +2016-07-01|10.0|-112.0|8.02002|-0.07707 +2016-07-01|10.0|-113.0|8.12473|-0.0748 +2016-07-01|10.0|-114.0|8.22091|-0.07261 +2016-07-01|10.0|-115.0|8.30953|-0.07049 +2016-07-01|10.0|-116.0|8.3915|-0.06843 +2016-07-01|10.0|-117.0|8.46767|-0.06643 +2016-07-01|10.0|-118.0|8.53877|-0.06447 +2016-07-01|10.0|-119.0|8.60546|-0.06256 +2016-07-01|10.0|-120.0|8.66831|-0.06068 +2016-07-01|10.0|-121.0|8.72777|-0.05884 +2016-07-01|10.0|-122.0|8.7842|-0.05701 +2016-07-01|10.0|-123.0|8.83785|-0.05521 +2016-07-01|10.0|-124.0|8.88889|-0.05342 +2016-07-01|10.0|-125.0|8.93738|-0.05166 +2016-07-01|10.0|-126.0|8.98332|-0.04991 +2016-07-01|10.0|-127.0|9.02662|-0.04818 +2016-07-01|10.0|-128.0|9.06714|-0.04647 +2016-07-01|10.0|-129.0|9.10469|-0.04478 +2016-07-01|10.0|-130.0|9.13906|-0.04313 +2016-07-01|10.0|-131.0|9.16998|-0.0415 +2016-07-01|10.0|-132.0|9.19722|-0.03991 +2016-07-01|10.0|-133.0|9.22054|-0.03836 +2016-07-01|10.0|-134.0|9.2397|-0.03685 +2016-07-01|10.0|-135.0|9.25451|-0.03539 +2016-07-01|10.0|-136.0|9.26484|-0.03397 +2016-07-01|10.0|-137.0|9.27058|-0.0326 +2016-07-01|10.0|-138.0|9.2717|-0.03128 +2016-07-01|10.0|-139.0|9.26825|-0.02999 +2016-07-01|10.0|-140.0|9.26032|-0.02875 +2016-07-01|10.0|-141.0|9.24809|-0.02755 +2016-07-01|10.0|-142.0|9.23182|-0.02638 +2016-07-01|10.0|-143.0|9.21184|-0.02523 +2016-07-01|10.0|-144.0|9.18853|-0.0241 +2016-07-01|10.0|-145.0|9.16236|-0.02297 +2016-07-01|10.0|-146.0|9.13384|-0.02185 +2016-07-01|10.0|-147.0|9.10354|-0.02072 +2016-07-01|10.0|-148.0|9.07203|-0.01957 +2016-07-01|10.0|-149.0|9.03996|-0.0184 +2016-07-01|10.0|-150.0|9.00795|-0.0172 +2016-07-01|10.0|-151.0|8.97665|-0.01595 +2016-07-01|10.0|-152.0|8.94667|-0.01466 +2016-07-01|10.0|-153.0|8.91862|-0.01332 +2016-07-01|10.0|-154.0|8.89306|-0.01193 +2016-07-01|10.0|-155.0|8.8705|-0.01048 +2016-07-01|10.0|-156.0|8.85139|-0.00897 +2016-07-01|10.0|-157.0|8.83609|-0.00742 +2016-07-01|10.0|-158.0|8.82491|-0.00581 +2016-07-01|10.0|-159.0|8.81803|-0.00416 +2016-07-01|10.0|-160.0|8.81556|-0.00248 +2016-07-01|10.0|-161.0|8.81747|-7.7E-4 +2016-07-01|10.0|-162.0|8.82365|9.6E-4 +2016-07-01|10.0|-163.0|8.83385|0.00269 +2016-07-01|10.0|-164.0|8.84774|0.00442 +2016-07-01|10.0|-165.0|8.86484|0.00612 +2016-07-01|10.0|-166.0|8.88458|0.00778 +2016-07-01|10.0|-167.0|8.90628|0.0094 +2016-07-01|10.0|-168.0|8.92918|0.01095 +2016-07-01|10.0|-169.0|8.9524|0.01243 +2016-07-01|10.0|-170.0|8.97503|0.01381 +2016-07-01|10.0|-171.0|8.99605|0.01509 +2016-07-01|10.0|-172.0|9.01442|0.01625 +2016-07-01|10.0|-173.0|9.02907|0.01727 +2016-07-01|10.0|-174.0|9.0389|0.01816 +2016-07-01|10.0|-175.0|9.04282|0.0189 +2016-07-01|10.0|-176.0|9.03974|0.01949 +2016-07-01|10.0|-177.0|9.02864|0.0199 +2016-07-01|10.0|-178.0|9.00853|0.02015 +2016-07-01|10.0|-179.0|8.9785|0.02023 +2016-07-01|11.0|0.0|-2.29407|0.09482 +2016-07-01|11.0|1.0|-2.04491|0.09436 +2016-07-01|11.0|2.0|-1.80401|0.09407 +2016-07-01|11.0|3.0|-1.57052|0.09396 +2016-07-01|11.0|4.0|-1.34359|0.09403 +2016-07-01|11.0|5.0|-1.12237|0.09428 +2016-07-01|11.0|6.0|-0.90605|0.0947 +2016-07-01|11.0|7.0|-0.69389|0.09528 +2016-07-01|11.0|8.0|-0.4852|0.09601 +2016-07-01|11.0|9.0|-0.27942|0.09686 +2016-07-01|11.0|10.0|-0.0761|0.0978 +2016-07-01|11.0|11.0|0.12509|0.09882 +2016-07-01|11.0|12.0|0.32433|0.09987 +2016-07-01|11.0|13.0|0.52162|0.10092 +2016-07-01|11.0|14.0|0.71683|0.10193 +2016-07-01|11.0|15.0|0.90962|0.10286 +2016-07-01|11.0|16.0|1.09953|0.10366 +2016-07-01|11.0|17.0|1.2859|0.1043 +2016-07-01|11.0|18.0|1.46794|0.10474 +2016-07-01|11.0|19.0|1.64472|0.10493 +2016-07-01|11.0|20.0|1.81517|0.10485 +2016-07-01|11.0|21.0|1.97814|0.10445 +2016-07-01|11.0|22.0|2.1324|0.10371 +2016-07-01|11.0|23.0|2.27665|0.10262 +2016-07-01|11.0|24.0|2.4096|0.10115 +2016-07-01|11.0|25.0|2.52993|0.09931 +2016-07-01|11.0|26.0|2.6364|0.09709 +2016-07-01|11.0|27.0|2.72782|0.0945 +2016-07-01|11.0|28.0|2.80309|0.09155 +2016-07-01|11.0|29.0|2.86127|0.08829 +2016-07-01|11.0|30.0|2.90155|0.08472 +2016-07-01|11.0|31.0|2.92333|0.0809 +2016-07-01|11.0|32.0|2.92619|0.07688 +2016-07-01|11.0|33.0|2.90993|0.07269 +2016-07-01|11.0|34.0|2.8746|0.06841 +2016-07-01|11.0|35.0|2.82047|0.06409 +2016-07-01|11.0|36.0|2.74805|0.05978 +2016-07-01|11.0|37.0|2.65808|0.05556 +2016-07-01|11.0|38.0|2.55154|0.05149 +2016-07-01|11.0|39.0|2.42959|0.04762 +2016-07-01|11.0|40.0|2.29361|0.04401 +2016-07-01|11.0|41.0|2.14511|0.04072 +2016-07-01|11.0|42.0|1.98578|0.03778 +2016-07-01|11.0|43.0|1.81736|0.03524 +2016-07-01|11.0|44.0|1.6417|0.03314 +2016-07-01|11.0|45.0|1.46066|0.03148 +2016-07-01|11.0|46.0|1.2761|0.03029 +2016-07-01|11.0|47.0|1.08987|0.02957 +2016-07-01|11.0|48.0|0.9037|0.02931 +2016-07-01|11.0|49.0|0.71926|0.02951 +2016-07-01|11.0|50.0|0.53807|0.03014 +2016-07-01|11.0|51.0|0.36152|0.03117 +2016-07-01|11.0|52.0|0.19079|0.03256 +2016-07-01|11.0|53.0|0.02692|0.03429 +2016-07-01|11.0|54.0|-0.12927|0.03629 +2016-07-01|11.0|55.0|-0.27714|0.03853 +2016-07-01|11.0|56.0|-0.41623|0.04095 +2016-07-01|11.0|57.0|-0.54628|0.0435 +2016-07-01|11.0|58.0|-0.6672|0.04613 +2016-07-01|11.0|59.0|-0.77902|0.04879 +2016-07-01|11.0|60.0|-0.88194|0.05144 +2016-07-01|11.0|61.0|-0.97625|0.05402 +2016-07-01|11.0|62.0|-1.06231|0.05651 +2016-07-01|11.0|63.0|-1.14057|0.05887 +2016-07-01|11.0|64.0|-1.21148|0.06106 +2016-07-01|11.0|65.0|-1.27552|0.06307 +2016-07-01|11.0|66.0|-1.33314|0.06487 +2016-07-01|11.0|67.0|-1.38478|0.06645 +2016-07-01|11.0|68.0|-1.43081|0.06781 +2016-07-01|11.0|69.0|-1.47153|0.06894 +2016-07-01|11.0|70.0|-1.50717|0.06983 +2016-07-01|11.0|71.0|-1.53788|0.07051 +2016-07-01|11.0|72.0|-1.56374|0.07096 +2016-07-01|11.0|73.0|-1.58474|0.07121 +2016-07-01|11.0|74.0|-1.60079|0.07126 +2016-07-01|11.0|75.0|-1.61175|0.07113 +2016-07-01|11.0|76.0|-1.61744|0.07083 +2016-07-01|11.0|77.0|-1.61764|0.07036 +2016-07-01|11.0|78.0|-1.61211|0.06974 +2016-07-01|11.0|79.0|-1.60065|0.06898 +2016-07-01|11.0|80.0|-1.58306|0.06808 +2016-07-01|11.0|81.0|-1.5592|0.06705 +2016-07-01|11.0|82.0|-1.529|0.06588 +2016-07-01|11.0|83.0|-1.49249|0.06458 +2016-07-01|11.0|84.0|-1.44979|0.06314 +2016-07-01|11.0|85.0|-1.40113|0.06155 +2016-07-01|11.0|86.0|-1.34688|0.0598 +2016-07-01|11.0|87.0|-1.28752|0.05787 +2016-07-01|11.0|88.0|-1.22367|0.05577 +2016-07-01|11.0|89.0|-1.15609|0.05346 +2016-07-01|11.0|90.0|-1.08563|0.05094 +2016-07-01|11.0|91.0|-1.01329|0.04819 +2016-07-01|11.0|92.0|-0.94011|0.0452 +2016-07-01|11.0|93.0|-0.86724|0.04195 +2016-07-01|11.0|94.0|-0.79588|0.03843 +2016-07-01|11.0|95.0|-0.72724|0.03463 +2016-07-01|11.0|96.0|-0.66254|0.03056 +2016-07-01|11.0|97.0|-0.60297|0.0262 +2016-07-01|11.0|98.0|-0.54967|0.02157 +2016-07-01|11.0|99.0|-0.50369|0.01666 +2016-07-01|11.0|100.0|-0.46597|0.01149 +2016-07-01|11.0|101.0|-0.43731|0.00608 +2016-07-01|11.0|102.0|-0.41835|4.4E-4 +2016-07-01|11.0|103.0|-0.40955|-0.00539 +2016-07-01|11.0|104.0|-0.41118|-0.01139 +2016-07-01|11.0|105.0|-0.42329|-0.01753 +2016-07-01|11.0|106.0|-0.44571|-0.02376 +2016-07-01|11.0|107.0|-0.47807|-0.03005 +2016-07-01|11.0|108.0|-0.51977|-0.03635 +2016-07-01|11.0|109.0|-0.56998|-0.04262 +2016-07-01|11.0|110.0|-0.6277|-0.04881 +2016-07-01|11.0|111.0|-0.69174|-0.05488 +2016-07-01|11.0|112.0|-0.76074|-0.06078 +2016-07-01|11.0|113.0|-0.83323|-0.06647 +2016-07-01|11.0|114.0|-0.9076|-0.07191 +2016-07-01|11.0|115.0|-0.9822|-0.07705 +2016-07-01|11.0|116.0|-1.05532|-0.08186 +2016-07-01|11.0|117.0|-1.12522|-0.08632 +2016-07-01|11.0|118.0|-1.19023|-0.09039 +2016-07-01|11.0|119.0|-1.24869|-0.09406 +2016-07-01|11.0|120.0|-1.29905|-0.0973 +2016-07-01|11.0|121.0|-1.33986|-0.1001 +2016-07-01|11.0|122.0|-1.3698|-0.10247 +2016-07-01|11.0|123.0|-1.38773|-0.10439 +2016-07-01|11.0|124.0|-1.39264|-0.10586 +2016-07-01|11.0|125.0|-1.38373|-0.10691 +2016-07-01|11.0|126.0|-1.36039|-0.10753 +2016-07-01|11.0|127.0|-1.32216|-0.10775 +2016-07-01|11.0|128.0|-1.26881|-0.10757 +2016-07-01|11.0|129.0|-1.20027|-0.10703 +2016-07-01|11.0|130.0|-1.11663|-0.10614 +2016-07-01|11.0|131.0|-1.01816|-0.10493 +2016-07-01|11.0|132.0|-0.90523|-0.10341 +2016-07-01|11.0|133.0|-0.77836|-0.10163 +2016-07-01|11.0|134.0|-0.63816|-0.09959 +2016-07-01|11.0|135.0|-0.48533|-0.09733 +2016-07-01|11.0|136.0|-0.32062|-0.09487 +2016-07-01|11.0|137.0|-0.1448|-0.09223 +2016-07-01|11.0|138.0|0.0413|-0.08944 +2016-07-01|11.0|139.0|0.23689|-0.08652 +2016-07-01|11.0|140.0|0.44117|-0.08347 +2016-07-01|11.0|141.0|0.65336|-0.08033 +2016-07-01|11.0|142.0|0.87275|-0.07711 +2016-07-01|11.0|143.0|1.09863|-0.07382 +2016-07-01|11.0|144.0|1.33037|-0.07048 +2016-07-01|11.0|145.0|1.56738|-0.0671 +2016-07-01|11.0|146.0|1.80912|-0.06368 +2016-07-01|11.0|147.0|2.05509|-0.06024 +2016-07-01|11.0|148.0|2.30483|-0.0568 +2016-07-01|11.0|149.0|2.5579|-0.05334 +2016-07-01|11.0|150.0|2.8139|-0.0499 +2016-07-01|11.0|151.0|3.07241|-0.04646 +2016-07-01|11.0|152.0|3.33303|-0.04304 +2016-07-01|11.0|153.0|3.59532|-0.03964 +2016-07-01|11.0|154.0|3.85884|-0.03628 +2016-07-01|11.0|155.0|4.12309|-0.03295 +2016-07-01|11.0|156.0|4.38754|-0.02967 +2016-07-01|11.0|157.0|4.65161|-0.02644 +2016-07-01|11.0|158.0|4.91466|-0.02327 +2016-07-01|11.0|159.0|5.176|-0.02016 +2016-07-01|11.0|160.0|5.43487|-0.01712 +2016-07-01|11.0|161.0|5.69048|-0.01417 +2016-07-01|11.0|162.0|5.94199|-0.0113 +2016-07-01|11.0|163.0|6.1885|-0.00853 +2016-07-01|11.0|164.0|6.42913|-0.00586 +2016-07-01|11.0|165.0|6.66295|-0.00329 +2016-07-01|11.0|166.0|6.88906|-8.5E-4 +2016-07-01|11.0|167.0|7.10655|0.00147 +2016-07-01|11.0|168.0|7.31456|0.00366 +2016-07-01|11.0|169.0|7.5123|0.00571 +2016-07-01|11.0|170.0|7.699|0.00762 +2016-07-01|11.0|171.0|7.87402|0.00938 +2016-07-01|11.0|172.0|8.03678|0.01098 +2016-07-01|11.0|173.0|8.18683|0.01242 +2016-07-01|11.0|174.0|8.32383|0.0137 +2016-07-01|11.0|175.0|8.44758|0.01482 +2016-07-01|11.0|176.0|8.55799|0.01576 +2016-07-01|11.0|177.0|8.65514|0.01653 +2016-07-01|11.0|178.0|8.7392|0.01712 +2016-07-01|11.0|179.0|8.81054|0.01754 +2016-07-01|11.0|-1.0|-2.55232|0.09544 +2016-07-01|11.0|-2.0|-2.8204|0.09621 +2016-07-01|11.0|-3.0|-3.09901|0.09712 +2016-07-01|11.0|-4.0|-3.38875|0.09814 +2016-07-01|11.0|-5.0|-3.69013|0.09927 +2016-07-01|11.0|-6.0|-4.00351|0.10048 +2016-07-01|11.0|-7.0|-4.32915|0.10175 +2016-07-01|11.0|-8.0|-4.66717|0.10307 +2016-07-01|11.0|-9.0|-5.01753|0.10441 +2016-07-01|11.0|-10.0|-5.38007|0.10576 +2016-07-01|11.0|-11.0|-5.75448|0.1071 +2016-07-01|11.0|-12.0|-6.14028|0.10842 +2016-07-01|11.0|-13.0|-6.5369|0.1097 +2016-07-01|11.0|-14.0|-6.94361|0.11093 +2016-07-01|11.0|-15.0|-7.35957|0.11209 +2016-07-01|11.0|-16.0|-7.78381|0.11318 +2016-07-01|11.0|-17.0|-8.21529|0.11419 +2016-07-01|11.0|-18.0|-8.65287|0.11511 +2016-07-01|11.0|-19.0|-9.09531|0.11592 +2016-07-01|11.0|-20.0|-9.54133|0.11662 +2016-07-01|11.0|-21.0|-9.9896|0.1172 +2016-07-01|11.0|-22.0|-10.43874|0.11765 +2016-07-01|11.0|-23.0|-10.88733|0.11796 +2016-07-01|11.0|-24.0|-11.33393|0.11811 +2016-07-01|11.0|-25.0|-11.77711|0.11811 +2016-07-01|11.0|-26.0|-12.21541|0.11793 +2016-07-01|11.0|-27.0|-12.64737|0.11756 +2016-07-01|11.0|-28.0|-13.07156|0.11698 +2016-07-01|11.0|-29.0|-13.48653|0.11619 +2016-07-01|11.0|-30.0|-13.89086|0.11516 +2016-07-01|11.0|-31.0|-14.28315|0.11388 +2016-07-01|11.0|-32.0|-14.662|0.11233 +2016-07-01|11.0|-33.0|-15.02606|0.1105 +2016-07-01|11.0|-34.0|-15.37397|0.10837 +2016-07-01|11.0|-35.0|-15.70443|0.10594 +2016-07-01|11.0|-36.0|-16.01613|0.10318 +2016-07-01|11.0|-37.0|-16.30782|0.10009 +2016-07-01|11.0|-38.0|-16.57826|0.09667 +2016-07-01|11.0|-39.0|-16.82628|0.0929 +2016-07-01|11.0|-40.0|-17.05071|0.08879 +2016-07-01|11.0|-41.0|-17.25046|0.08433 +2016-07-01|11.0|-42.0|-17.42448|0.07954 +2016-07-01|11.0|-43.0|-17.57177|0.07442 +2016-07-01|11.0|-44.0|-17.69142|0.06898 +2016-07-01|11.0|-45.0|-17.78256|0.06323 +2016-07-01|11.0|-46.0|-17.84443|0.0572 +2016-07-01|11.0|-47.0|-17.87633|0.0509 +2016-07-01|11.0|-48.0|-17.87769|0.04435 +2016-07-01|11.0|-49.0|-17.84801|0.03758 +2016-07-01|11.0|-50.0|-17.78692|0.03062 +2016-07-01|11.0|-51.0|-17.69415|0.0235 +2016-07-01|11.0|-52.0|-17.56957|0.01624 +2016-07-01|11.0|-53.0|-17.41315|0.00888 +2016-07-01|11.0|-54.0|-17.22502|0.00144 +2016-07-01|11.0|-55.0|-17.00541|-0.00603 +2016-07-01|11.0|-56.0|-16.75471|-0.01352 +2016-07-01|11.0|-57.0|-16.47343|-0.02099 +2016-07-01|11.0|-58.0|-16.1622|-0.02842 +2016-07-01|11.0|-59.0|-15.8218|-0.03577 +2016-07-01|11.0|-60.0|-15.45312|-0.04302 +2016-07-01|11.0|-61.0|-15.05716|-0.05014 +2016-07-01|11.0|-62.0|-14.63505|-0.05711 +2016-07-01|11.0|-63.0|-14.18799|-0.06392 +2016-07-01|11.0|-64.0|-13.71731|-0.07054 +2016-07-01|11.0|-65.0|-13.22441|-0.07695 +2016-07-01|11.0|-66.0|-12.71075|-0.08314 +2016-07-01|11.0|-67.0|-12.17787|-0.08909 +2016-07-01|11.0|-68.0|-11.62737|-0.09479 +2016-07-01|11.0|-69.0|-11.06089|-0.10023 +2016-07-01|11.0|-70.0|-10.4801|-0.1054 +2016-07-01|11.0|-71.0|-9.8867|-0.11027 +2016-07-01|11.0|-72.0|-9.28241|-0.11485 +2016-07-01|11.0|-73.0|-8.66898|-0.11912 +2016-07-01|11.0|-74.0|-8.04815|-0.12307 +2016-07-01|11.0|-75.0|-7.42165|-0.12669 +2016-07-01|11.0|-76.0|-6.79123|-0.12997 +2016-07-01|11.0|-77.0|-6.15862|-0.13291 +2016-07-01|11.0|-78.0|-5.52552|-0.13549 +2016-07-01|11.0|-79.0|-4.89364|-0.13771 +2016-07-01|11.0|-80.0|-4.26464|-0.13956 +2016-07-01|11.0|-81.0|-3.64015|-0.14104 +2016-07-01|11.0|-82.0|-3.02179|-0.14215 +2016-07-01|11.0|-83.0|-2.41112|-0.14288 +2016-07-01|11.0|-84.0|-1.80964|-0.14325 +2016-07-01|11.0|-85.0|-1.21882|-0.14326 +2016-07-01|11.0|-86.0|-0.64006|-0.1429 +2016-07-01|11.0|-87.0|-0.07467|-0.14221 +2016-07-01|11.0|-88.0|0.47609|-0.14118 +2016-07-01|11.0|-89.0|1.01106|-0.13985 +2016-07-01|11.0|-90.0|1.52919|-0.13822 +2016-07-01|11.0|-91.0|2.02951|-0.13631 +2016-07-01|11.0|-92.0|2.51117|-0.13417 +2016-07-01|11.0|-93.0|2.97345|-0.1318 +2016-07-01|11.0|-94.0|3.41575|-0.12923 +2016-07-01|11.0|-95.0|3.83757|-0.1265 +2016-07-01|11.0|-96.0|4.2386|-0.12363 +2016-07-01|11.0|-97.0|4.61862|-0.12066 +2016-07-01|11.0|-98.0|4.97756|-0.11759 +2016-07-01|11.0|-99.0|5.31549|-0.11448 +2016-07-01|11.0|-100.0|5.63262|-0.11133 +2016-07-01|11.0|-101.0|5.92927|-0.10817 +2016-07-01|11.0|-102.0|6.2059|-0.10503 +2016-07-01|11.0|-103.0|6.46309|-0.10192 +2016-07-01|11.0|-104.0|6.70151|-0.09887 +2016-07-01|11.0|-105.0|6.92194|-0.09587 +2016-07-01|11.0|-106.0|7.12524|-0.09296 +2016-07-01|11.0|-107.0|7.31234|-0.09012 +2016-07-01|11.0|-108.0|7.48423|-0.08738 +2016-07-01|11.0|-109.0|7.64194|-0.08474 +2016-07-01|11.0|-110.0|7.78653|-0.08218 +2016-07-01|11.0|-111.0|7.91906|-0.07973 +2016-07-01|11.0|-112.0|8.04061|-0.07737 +2016-07-01|11.0|-113.0|8.15222|-0.07509 +2016-07-01|11.0|-114.0|8.2549|-0.0729 +2016-07-01|11.0|-115.0|8.3496|-0.07078 +2016-07-01|11.0|-116.0|8.43723|-0.06873 +2016-07-01|11.0|-117.0|8.51862|-0.06674 +2016-07-01|11.0|-118.0|8.59451|-0.06481 +2016-07-01|11.0|-119.0|8.66555|-0.06292 +2016-07-01|11.0|-120.0|8.7323|-0.06107 +2016-07-01|11.0|-121.0|8.79523|-0.05925 +2016-07-01|11.0|-122.0|8.85469|-0.05746 +2016-07-01|11.0|-123.0|8.91096|-0.0557 +2016-07-01|11.0|-124.0|8.96421|-0.05396 +2016-07-01|11.0|-125.0|9.0145|-0.05224 +2016-07-01|11.0|-126.0|9.06186|-0.05054 +2016-07-01|11.0|-127.0|9.10621|-0.04886 +2016-07-01|11.0|-128.0|9.14742|-0.0472 +2016-07-01|11.0|-129.0|9.18533|-0.04556 +2016-07-01|11.0|-130.0|9.21972|-0.04395 +2016-07-01|11.0|-131.0|9.25037|-0.04238 +2016-07-01|11.0|-132.0|9.27704|-0.04083 +2016-07-01|11.0|-133.0|9.29951|-0.03933 +2016-07-01|11.0|-134.0|9.31757|-0.03786 +2016-07-01|11.0|-135.0|9.33106|-0.03643 +2016-07-01|11.0|-136.0|9.33984|-0.03505 +2016-07-01|11.0|-137.0|9.34383|-0.03371 +2016-07-01|11.0|-138.0|9.34303|-0.03241 +2016-07-01|11.0|-139.0|9.33749|-0.03116 +2016-07-01|11.0|-140.0|9.32733|-0.02994 +2016-07-01|11.0|-141.0|9.31275|-0.02876 +2016-07-01|11.0|-142.0|9.29403|-0.0276 +2016-07-01|11.0|-143.0|9.27151|-0.02647 +2016-07-01|11.0|-144.0|9.2456|-0.02536 +2016-07-01|11.0|-145.0|9.21678|-0.02426 +2016-07-01|11.0|-146.0|9.18558|-0.02316 +2016-07-01|11.0|-147.0|9.15258|-0.02205 +2016-07-01|11.0|-148.0|9.11838|-0.02093 +2016-07-01|11.0|-149.0|9.08363|-0.01978 +2016-07-01|11.0|-150.0|9.04897|-0.0186 +2016-07-01|11.0|-151.0|9.01504|-0.01739 +2016-07-01|11.0|-152.0|8.98247|-0.01613 +2016-07-01|11.0|-153.0|8.95188|-0.01483 +2016-07-01|11.0|-154.0|8.92381|-0.01348 +2016-07-01|11.0|-155.0|8.89879|-0.01208 +2016-07-01|11.0|-156.0|8.87724|-0.01062 +2016-07-01|11.0|-157.0|8.85955|-0.00912 +2016-07-01|11.0|-158.0|8.84597|-0.00757 +2016-07-01|11.0|-159.0|8.8367|-0.00597 +2016-07-01|11.0|-160.0|8.83181|-0.00435 +2016-07-01|11.0|-161.0|8.83127|-0.0027 +2016-07-01|11.0|-162.0|8.83493|-0.00103 +2016-07-01|11.0|-163.0|8.84253|6.5E-4 +2016-07-01|11.0|-164.0|8.8537|0.00232 +2016-07-01|11.0|-165.0|8.86795|0.00396 +2016-07-01|11.0|-166.0|8.88467|0.00558 +2016-07-01|11.0|-167.0|8.90318|0.00715 +2016-07-01|11.0|-168.0|8.92267|0.00866 +2016-07-01|11.0|-169.0|8.94226|0.0101 +2016-07-01|11.0|-170.0|8.961|0.01145 +2016-07-01|11.0|-171.0|8.97787|0.0127 +2016-07-01|11.0|-172.0|8.99182|0.01384 +2016-07-01|11.0|-173.0|9.00176|0.01485 +2016-07-01|11.0|-174.0|9.00658|0.01573 +2016-07-01|11.0|-175.0|9.0052|0.01647 +2016-07-01|11.0|-176.0|8.99655|0.01706 +2016-07-01|11.0|-177.0|8.9796|0.01749 +2016-07-01|11.0|-178.0|8.95337|0.01776 +2016-07-01|11.0|-179.0|8.91697|0.01786 +2016-07-01|12.0|0.0|-2.10404|0.09342 +2016-07-01|12.0|1.0|-1.86002|0.09288 +2016-07-01|12.0|2.0|-1.62439|0.09251 +2016-07-01|12.0|3.0|-1.39631|0.09232 +2016-07-01|12.0|4.0|-1.17489|0.09231 +2016-07-01|12.0|5.0|-0.95929|0.09249 +2016-07-01|12.0|6.0|-0.74867|0.09285 +2016-07-01|12.0|7.0|-0.54227|0.09337 +2016-07-01|12.0|8.0|-0.33938|0.09404 +2016-07-01|12.0|9.0|-0.13941|0.09485 +2016-07-01|12.0|10.0|0.05814|0.09576 +2016-07-01|12.0|11.0|0.25361|0.09675 +2016-07-01|12.0|12.0|0.44722|0.09779 +2016-07-01|12.0|13.0|0.63901|0.09884 +2016-07-01|12.0|14.0|0.82888|0.09987 +2016-07-01|12.0|15.0|1.01656|0.10083 +2016-07-01|12.0|16.0|1.20159|0.10167 +2016-07-01|12.0|17.0|1.38338|0.10237 +2016-07-01|12.0|18.0|1.56116|0.10288 +2016-07-01|12.0|19.0|1.73405|0.10316 +2016-07-01|12.0|20.0|1.90101|0.10318 +2016-07-01|12.0|21.0|2.06092|0.10289 +2016-07-01|12.0|22.0|2.21257|0.10229 +2016-07-01|12.0|23.0|2.35471|0.10133 +2016-07-01|12.0|24.0|2.48605|0.10002 +2016-07-01|12.0|25.0|2.6053|0.09834 +2016-07-01|12.0|26.0|2.71122|0.09629 +2016-07-01|12.0|27.0|2.80262|0.09388 +2016-07-01|12.0|28.0|2.87842|0.09112 +2016-07-01|12.0|29.0|2.93765|0.08803 +2016-07-01|12.0|30.0|2.97951|0.08466 +2016-07-01|12.0|31.0|3.00335|0.08102 +2016-07-01|12.0|32.0|3.00875|0.07717 +2016-07-01|12.0|33.0|2.99548|0.07316 +2016-07-01|12.0|34.0|2.96354|0.06904 +2016-07-01|12.0|35.0|2.91316|0.06487 +2016-07-01|12.0|36.0|2.8448|0.06071 +2016-07-01|12.0|37.0|2.75918|0.05661 +2016-07-01|12.0|38.0|2.6572|0.05265 +2016-07-01|12.0|39.0|2.53999|0.04888 +2016-07-01|12.0|40.0|2.40886|0.04535 +2016-07-01|12.0|41.0|2.2653|0.04211 +2016-07-01|12.0|42.0|2.11091|0.03922 +2016-07-01|12.0|43.0|1.94742|0.0367 +2016-07-01|12.0|44.0|1.7766|0.0346 +2016-07-01|12.0|45.0|1.6003|0.03293 +2016-07-01|12.0|46.0|1.42034|0.03172 +2016-07-01|12.0|47.0|1.23851|0.03095 +2016-07-01|12.0|48.0|1.05654|0.03064 +2016-07-01|12.0|49.0|0.87606|0.03077 +2016-07-01|12.0|50.0|0.69858|0.03133 +2016-07-01|12.0|51.0|0.52547|0.03227 +2016-07-01|12.0|52.0|0.35791|0.03358 +2016-07-01|12.0|53.0|0.19692|0.03521 +2016-07-01|12.0|54.0|0.04333|0.03711 +2016-07-01|12.0|55.0|-0.10222|0.03925 +2016-07-01|12.0|56.0|-0.23928|0.04157 +2016-07-01|12.0|57.0|-0.36757|0.04402 +2016-07-01|12.0|58.0|-0.48699|0.04655 +2016-07-01|12.0|59.0|-0.59758|0.04912 +2016-07-01|12.0|60.0|-0.69952|0.05167 +2016-07-01|12.0|61.0|-0.79309|0.05417 +2016-07-01|12.0|62.0|-0.87867|0.05658 +2016-07-01|12.0|63.0|-0.95668|0.05886 +2016-07-01|12.0|64.0|-1.02758|0.06099 +2016-07-01|12.0|65.0|-1.09185|0.06293 +2016-07-01|12.0|66.0|-1.14996|0.06468 +2016-07-01|12.0|67.0|-1.20233|0.06621 +2016-07-01|12.0|68.0|-1.24935|0.06752 +2016-07-01|12.0|69.0|-1.29135|0.0686 +2016-07-01|12.0|70.0|-1.32856|0.06946 +2016-07-01|12.0|71.0|-1.36116|0.0701 +2016-07-01|12.0|72.0|-1.38924|0.07052 +2016-07-01|12.0|73.0|-1.41281|0.07074 +2016-07-01|12.0|74.0|-1.43181|0.07076 +2016-07-01|12.0|75.0|-1.44612|0.0706 +2016-07-01|12.0|76.0|-1.45557|0.07026 +2016-07-01|12.0|77.0|-1.45997|0.06977 +2016-07-01|12.0|78.0|-1.4591|0.06912 +2016-07-01|12.0|79.0|-1.45276|0.06833 +2016-07-01|12.0|80.0|-1.44077|0.0674 +2016-07-01|12.0|81.0|-1.423|0.06633 +2016-07-01|12.0|82.0|-1.39938|0.06514 +2016-07-01|12.0|83.0|-1.36992|0.06381 +2016-07-01|12.0|84.0|-1.33474|0.06233 +2016-07-01|12.0|85.0|-1.29406|0.06072 +2016-07-01|12.0|86.0|-1.24823|0.05894 +2016-07-01|12.0|87.0|-1.1977|0.05699 +2016-07-01|12.0|88.0|-1.14306|0.05487 +2016-07-01|12.0|89.0|-1.08504|0.05255 +2016-07-01|12.0|90.0|-1.02444|0.05001 +2016-07-01|12.0|91.0|-0.9622|0.04726 +2016-07-01|12.0|92.0|-0.89935|0.04426 +2016-07-01|12.0|93.0|-0.83696|0.04102 +2016-07-01|12.0|94.0|-0.77618|0.03751 +2016-07-01|12.0|95.0|-0.71818|0.03373 +2016-07-01|12.0|96.0|-0.66411|0.02969 +2016-07-01|12.0|97.0|-0.61511|0.02536 +2016-07-01|12.0|98.0|-0.57228|0.02077 +2016-07-01|12.0|99.0|-0.53661|0.0159 +2016-07-01|12.0|100.0|-0.509|0.01079 +2016-07-01|12.0|101.0|-0.49021|0.00544 +2016-07-01|12.0|102.0|-0.48084|-1.4E-4 +2016-07-01|12.0|103.0|-0.48134|-0.0059 +2016-07-01|12.0|104.0|-0.49193|-0.01182 +2016-07-01|12.0|105.0|-0.51265|-0.01788 +2016-07-01|12.0|106.0|-0.54334|-0.02403 +2016-07-01|12.0|107.0|-0.58361|-0.03023 +2016-07-01|12.0|108.0|-0.63284|-0.03645 +2016-07-01|12.0|109.0|-0.69025|-0.04263 +2016-07-01|12.0|110.0|-0.75484|-0.04874 +2016-07-01|12.0|111.0|-0.82542|-0.05472 +2016-07-01|12.0|112.0|-0.90068|-0.06054 +2016-07-01|12.0|113.0|-0.97915|-0.06615 +2016-07-01|12.0|114.0|-1.05927|-0.07151 +2016-07-01|12.0|115.0|-1.1394|-0.07658 +2016-07-01|12.0|116.0|-1.21787|-0.08133 +2016-07-01|12.0|117.0|-1.29298|-0.08573 +2016-07-01|12.0|118.0|-1.36306|-0.08975 +2016-07-01|12.0|119.0|-1.42651|-0.09337 +2016-07-01|12.0|120.0|-1.48177|-0.09657 +2016-07-01|12.0|121.0|-1.52744|-0.09935 +2016-07-01|12.0|122.0|-1.56219|-0.1017 +2016-07-01|12.0|123.0|-1.5849|-0.1036 +2016-07-01|12.0|124.0|-1.59457|-0.10508 +2016-07-01|12.0|125.0|-1.59039|-0.10613 +2016-07-01|12.0|126.0|-1.57174|-0.10677 +2016-07-01|12.0|127.0|-1.53817|-0.10701 +2016-07-01|12.0|128.0|-1.48941|-0.10687 +2016-07-01|12.0|129.0|-1.42538|-0.10636 +2016-07-01|12.0|130.0|-1.34615|-0.10552 +2016-07-01|12.0|131.0|-1.25195|-0.10436 +2016-07-01|12.0|132.0|-1.14314|-0.1029 +2016-07-01|12.0|133.0|-1.0202|-0.10118 +2016-07-01|12.0|134.0|-0.88371|-0.09921 +2016-07-01|12.0|135.0|-0.73433|-0.09702 +2016-07-01|12.0|136.0|-0.57278|-0.09464 +2016-07-01|12.0|137.0|-0.39982|-0.09208 +2016-07-01|12.0|138.0|-0.21623|-0.08937 +2016-07-01|12.0|139.0|-0.0228|-0.08652 +2016-07-01|12.0|140.0|0.1797|-0.08356 +2016-07-01|12.0|141.0|0.39052|-0.0805 +2016-07-01|12.0|142.0|0.60894|-0.07736 +2016-07-01|12.0|143.0|0.83427|-0.07415 +2016-07-01|12.0|144.0|1.0659|-0.07088 +2016-07-01|12.0|145.0|1.30322|-0.06757 +2016-07-01|12.0|146.0|1.54569|-0.06423 +2016-07-01|12.0|147.0|1.7928|-0.06087 +2016-07-01|12.0|148.0|2.0441|-0.05749 +2016-07-01|12.0|149.0|2.29914|-0.05411 +2016-07-01|12.0|150.0|2.55748|-0.05072 +2016-07-01|12.0|151.0|2.81871|-0.04735 +2016-07-01|12.0|152.0|3.0824|-0.04399 +2016-07-01|12.0|153.0|3.34812|-0.04065 +2016-07-01|12.0|154.0|3.6154|-0.03735 +2016-07-01|12.0|155.0|3.88373|-0.03407 +2016-07-01|12.0|156.0|4.15256|-0.03085 +2016-07-01|12.0|157.0|4.42131|-0.02767 +2016-07-01|12.0|158.0|4.68932|-0.02455 +2016-07-01|12.0|159.0|4.95588|-0.02149 +2016-07-01|12.0|160.0|5.22025|-0.01851 +2016-07-01|12.0|161.0|5.4816|-0.01561 +2016-07-01|12.0|162.0|5.7391|-0.01279 +2016-07-01|12.0|163.0|5.99184|-0.01007 +2016-07-01|12.0|164.0|6.23892|-0.00746 +2016-07-01|12.0|165.0|6.47941|-0.00495 +2016-07-01|12.0|166.0|6.71238|-0.00256 +2016-07-01|12.0|167.0|6.93693|-3.0E-4 +2016-07-01|12.0|168.0|7.15217|0.00183 +2016-07-01|12.0|169.0|7.35728|0.00382 +2016-07-01|12.0|170.0|7.5515|0.00567 +2016-07-01|12.0|171.0|7.73415|0.00737 +2016-07-01|12.0|172.0|7.90462|0.00891 +2016-07-01|12.0|173.0|8.06245|0.01029 +2016-07-01|12.0|174.0|8.20725|0.01152 +2016-07-01|12.0|175.0|8.33881|0.01257 +2016-07-01|12.0|176.0|8.45699|0.01346 +2016-07-01|12.0|177.0|8.56185|0.01418 +2016-07-01|12.0|178.0|8.65353|0.01473 +2016-07-01|12.0|179.0|8.73236|0.0151 +2016-07-01|12.0|-1.0|-2.35727|0.09412 +2016-07-01|12.0|-2.0|-2.62047|0.09498 +2016-07-01|12.0|-3.0|-2.89434|0.09597 +2016-07-01|12.0|-4.0|-3.17947|0.09708 +2016-07-01|12.0|-5.0|-3.47634|0.09828 +2016-07-01|12.0|-6.0|-3.78532|0.09957 +2016-07-01|12.0|-7.0|-4.10666|0.10091 +2016-07-01|12.0|-8.0|-4.44045|0.1023 +2016-07-01|12.0|-9.0|-4.78665|0.10371 +2016-07-01|12.0|-10.0|-5.14508|0.10512 +2016-07-01|12.0|-11.0|-5.5154|0.10652 +2016-07-01|12.0|-12.0|-5.89717|0.1079 +2016-07-01|12.0|-13.0|-6.28976|0.10923 +2016-07-01|12.0|-14.0|-6.69246|0.1105 +2016-07-01|12.0|-15.0|-7.10443|0.11172 +2016-07-01|12.0|-16.0|-7.5247|0.11285 +2016-07-01|12.0|-17.0|-7.95223|0.11391 +2016-07-01|12.0|-18.0|-8.38589|0.11487 +2016-07-01|12.0|-19.0|-8.82448|0.11573 +2016-07-01|12.0|-20.0|-9.26673|0.11648 +2016-07-01|12.0|-21.0|-9.71132|0.11711 +2016-07-01|12.0|-22.0|-10.15692|0.11762 +2016-07-01|12.0|-23.0|-10.60213|0.11799 +2016-07-01|12.0|-24.0|-11.04558|0.11822 +2016-07-01|12.0|-25.0|-11.48585|0.1183 +2016-07-01|12.0|-26.0|-11.92154|0.1182 +2016-07-01|12.0|-27.0|-12.35125|0.11793 +2016-07-01|12.0|-28.0|-12.77357|0.11746 +2016-07-01|12.0|-29.0|-13.18711|0.11679 +2016-07-01|12.0|-30.0|-13.59051|0.11589 +2016-07-01|12.0|-31.0|-13.98241|0.11476 +2016-07-01|12.0|-32.0|-14.36146|0.11336 +2016-07-01|12.0|-33.0|-14.72633|0.1117 +2016-07-01|12.0|-34.0|-15.07574|0.10975 +2016-07-01|12.0|-35.0|-15.40838|0.10751 +2016-07-01|12.0|-36.0|-15.72301|0.10495 +2016-07-01|12.0|-37.0|-16.01839|0.10207 +2016-07-01|12.0|-38.0|-16.2933|0.09886 +2016-07-01|12.0|-39.0|-16.54657|0.09532 +2016-07-01|12.0|-40.0|-16.77706|0.09144 +2016-07-01|12.0|-41.0|-16.98366|0.08721 +2016-07-01|12.0|-42.0|-17.16533|0.08265 +2016-07-01|12.0|-43.0|-17.32104|0.07776 +2016-07-01|12.0|-44.0|-17.44987|0.07255 +2016-07-01|12.0|-45.0|-17.55092|0.06702 +2016-07-01|12.0|-46.0|-17.6234|0.06121 +2016-07-01|12.0|-47.0|-17.66658|0.05511 +2016-07-01|12.0|-48.0|-17.67982|0.04876 +2016-07-01|12.0|-49.0|-17.6626|0.04218 +2016-07-01|12.0|-50.0|-17.61448|0.03539 +2016-07-01|12.0|-51.0|-17.53515|0.02842 +2016-07-01|12.0|-52.0|-17.4244|0.0213 +2016-07-01|12.0|-53.0|-17.28217|0.01406 +2016-07-01|12.0|-54.0|-17.10849|0.00673 +2016-07-01|12.0|-55.0|-16.90356|-6.7E-4 +2016-07-01|12.0|-56.0|-16.66769|-0.0081 +2016-07-01|12.0|-57.0|-16.40132|-0.01553 +2016-07-01|12.0|-58.0|-16.10503|-0.02294 +2016-07-01|12.0|-59.0|-15.77953|-0.0303 +2016-07-01|12.0|-60.0|-15.42564|-0.03757 +2016-07-01|12.0|-61.0|-15.04432|-0.04474 +2016-07-01|12.0|-62.0|-14.63662|-0.05179 +2016-07-01|12.0|-63.0|-14.20371|-0.05868 +2016-07-01|12.0|-64.0|-13.74684|-0.06541 +2016-07-01|12.0|-65.0|-13.26736|-0.07195 +2016-07-01|12.0|-66.0|-12.7667|-0.07828 +2016-07-01|12.0|-67.0|-12.24634|-0.08439 +2016-07-01|12.0|-68.0|-11.70784|-0.09026 +2016-07-01|12.0|-69.0|-11.15278|-0.09589 +2016-07-01|12.0|-70.0|-10.5828|-0.10124 +2016-07-01|12.0|-71.0|-9.99957|-0.10632 +2016-07-01|12.0|-72.0|-9.40478|-0.11111 +2016-07-01|12.0|-73.0|-8.80012|-0.1156 +2016-07-01|12.0|-74.0|-8.18732|-0.11977 +2016-07-01|12.0|-75.0|-7.56808|-0.12362 +2016-07-01|12.0|-76.0|-6.94412|-0.12713 +2016-07-01|12.0|-77.0|-6.31714|-0.13029 +2016-07-01|12.0|-78.0|-5.68885|-0.13309 +2016-07-01|12.0|-79.0|-5.06092|-0.13553 +2016-07-01|12.0|-80.0|-4.43501|-0.1376 +2016-07-01|12.0|-81.0|-3.81275|-0.13929 +2016-07-01|12.0|-82.0|-3.19575|-0.14061 +2016-07-01|12.0|-83.0|-2.58556|-0.14154 +2016-07-01|12.0|-84.0|-1.98372|-0.14209 +2016-07-01|12.0|-85.0|-1.39168|-0.14227 +2016-07-01|12.0|-86.0|-0.81088|-0.14209 +2016-07-01|12.0|-87.0|-0.24266|-0.14155 +2016-07-01|12.0|-88.0|0.31172|-0.14067 +2016-07-01|12.0|-89.0|0.85104|-0.13947 +2016-07-01|12.0|-90.0|1.37423|-0.13796 +2016-07-01|12.0|-91.0|1.88026|-0.13617 +2016-07-01|12.0|-92.0|2.36826|-0.13412 +2016-07-01|12.0|-93.0|2.83743|-0.13183 +2016-07-01|12.0|-94.0|3.28714|-0.12934 +2016-07-01|12.0|-95.0|3.71684|-0.12667 +2016-07-01|12.0|-96.0|4.12614|-0.12386 +2016-07-01|12.0|-97.0|4.51478|-0.12092 +2016-07-01|12.0|-98.0|4.88263|-0.11789 +2016-07-01|12.0|-99.0|5.22971|-0.1148 +2016-07-01|12.0|-100.0|5.55616|-0.11167 +2016-07-01|12.0|-101.0|5.86225|-0.10852 +2016-07-01|12.0|-102.0|6.14839|-0.10538 +2016-07-01|12.0|-103.0|6.41508|-0.10228 +2016-07-01|12.0|-104.0|6.66297|-0.09921 +2016-07-01|12.0|-105.0|6.89277|-0.09621 +2016-07-01|12.0|-106.0|7.1053|-0.09329 +2016-07-01|12.0|-107.0|7.30144|-0.09045 +2016-07-01|12.0|-108.0|7.48215|-0.08769 +2016-07-01|12.0|-109.0|7.64841|-0.08504 +2016-07-01|12.0|-110.0|7.80126|-0.08248 +2016-07-01|12.0|-111.0|7.94172|-0.08001 +2016-07-01|12.0|-112.0|8.07083|-0.07765 +2016-07-01|12.0|-113.0|8.18962|-0.07537 +2016-07-01|12.0|-114.0|8.29907|-0.07318 +2016-07-01|12.0|-115.0|8.40014|-0.07107 +2016-07-01|12.0|-116.0|8.49369|-0.06904 +2016-07-01|12.0|-117.0|8.58056|-0.06706 +2016-07-01|12.0|-118.0|8.66148|-0.06515 +2016-07-01|12.0|-119.0|8.73709|-0.06329 +2016-07-01|12.0|-120.0|8.80797|-0.06147 +2016-07-01|12.0|-121.0|8.87457|-0.05969 +2016-07-01|12.0|-122.0|8.93726|-0.05794 +2016-07-01|12.0|-123.0|8.99632|-0.05622 +2016-07-01|12.0|-124.0|9.05192|-0.05453 +2016-07-01|12.0|-125.0|9.10415|-0.05286 +2016-07-01|12.0|-126.0|9.15305|-0.05121 +2016-07-01|12.0|-127.0|9.19854|-0.04958 +2016-07-01|12.0|-128.0|9.24053|-0.04797 +2016-07-01|12.0|-129.0|9.27885|-0.04639 +2016-07-01|12.0|-130.0|9.31331|-0.04483 +2016-07-01|12.0|-131.0|9.34371|-0.0433 +2016-07-01|12.0|-132.0|9.36983|-0.0418 +2016-07-01|12.0|-133.0|9.39146|-0.04034 +2016-07-01|12.0|-134.0|9.40841|-0.03892 +2016-07-01|12.0|-135.0|9.42054|-0.03753 +2016-07-01|12.0|-136.0|9.42774|-0.03618 +2016-07-01|12.0|-137.0|9.42994|-0.03488 +2016-07-01|12.0|-138.0|9.42716|-0.03361 +2016-07-01|12.0|-139.0|9.41947|-0.03238 +2016-07-01|12.0|-140.0|9.40701|-0.03119 +2016-07-01|12.0|-141.0|9.39001|-0.03004 +2016-07-01|12.0|-142.0|9.36875|-0.02891 +2016-07-01|12.0|-143.0|9.3436|-0.0278 +2016-07-01|12.0|-144.0|9.31499|-0.02671 +2016-07-01|12.0|-145.0|9.28341|-0.02563 +2016-07-01|12.0|-146.0|9.24941|-0.02455 +2016-07-01|12.0|-147.0|9.21358|-0.02346 +2016-07-01|12.0|-148.0|9.17654|-0.02237 +2016-07-01|12.0|-149.0|9.13895|-0.02125 +2016-07-01|12.0|-150.0|9.10145|-0.0201 +2016-07-01|12.0|-151.0|9.06471|-0.01893 +2016-07-01|12.0|-152.0|9.02935|-0.01771 +2016-07-01|12.0|-153.0|8.99598|-0.01645 +2016-07-01|12.0|-154.0|8.96516|-0.01514 +2016-07-01|12.0|-155.0|8.9374|-0.01379 +2016-07-01|12.0|-156.0|8.91313|-0.01239 +2016-07-01|12.0|-157.0|8.89271|-0.01094 +2016-07-01|12.0|-158.0|8.8764|-0.00944 +2016-07-01|12.0|-159.0|8.86436|-0.00791 +2016-07-01|12.0|-160.0|8.85666|-0.00635 +2016-07-01|12.0|-161.0|8.85324|-0.00476 +2016-07-01|12.0|-162.0|8.85393|-0.00315 +2016-07-01|12.0|-163.0|8.85846|-0.00154 +2016-07-01|12.0|-164.0|8.86642|7.0E-5 +2016-07-01|12.0|-165.0|8.87729|0.00166 +2016-07-01|12.0|-166.0|8.89047|0.00322 +2016-07-01|12.0|-167.0|8.90521|0.00475 +2016-07-01|12.0|-168.0|8.92072|0.00621 +2016-07-01|12.0|-169.0|8.93608|0.00761 +2016-07-01|12.0|-170.0|8.95032|0.00893 +2016-07-01|12.0|-171.0|8.96243|0.01015 +2016-07-01|12.0|-172.0|8.97133|0.01127 +2016-07-01|12.0|-173.0|8.97593|0.01227 +2016-07-01|12.0|-174.0|8.97513|0.01315 +2016-07-01|12.0|-175.0|8.96783|0.01389 +2016-07-01|12.0|-176.0|8.95299|0.01448 +2016-07-01|12.0|-177.0|8.92957|0.01493 +2016-07-01|12.0|-178.0|8.89663|0.01522 +2016-07-01|12.0|-179.0|8.85329|0.01535 +2016-07-01|13.0|0.0|-1.92422|0.09221 +2016-07-01|13.0|1.0|-1.68482|0.09159 +2016-07-01|13.0|2.0|-1.45394|0.09115 +2016-07-01|13.0|3.0|-1.23072|0.09088 +2016-07-01|13.0|4.0|-1.01429|0.0908 +2016-07-01|13.0|5.0|-0.80378|0.09091 +2016-07-01|13.0|6.0|-0.59835|0.0912 +2016-07-01|13.0|7.0|-0.39721|0.09166 +2016-07-01|13.0|8.0|-0.19964|0.09228 +2016-07-01|13.0|9.0|-0.00502|0.09304 +2016-07-01|13.0|10.0|0.18717|0.09391 +2016-07-01|13.0|11.0|0.37732|0.09487 +2016-07-01|13.0|12.0|0.56566|0.09589 +2016-07-01|13.0|13.0|0.75229|0.09694 +2016-07-01|13.0|14.0|0.93713|0.09797 +2016-07-01|13.0|15.0|1.11994|0.09894 +2016-07-01|13.0|16.0|1.30031|0.09982 +2016-07-01|13.0|17.0|1.4777|0.10057 +2016-07-01|13.0|18.0|1.65136|0.10114 +2016-07-01|13.0|19.0|1.82045|0.10149 +2016-07-01|13.0|20.0|1.98398|0.1016 +2016-07-01|13.0|21.0|2.14086|0.10142 +2016-07-01|13.0|22.0|2.28991|0.10093 +2016-07-01|13.0|23.0|2.42989|0.1001 +2016-07-01|13.0|24.0|2.55955|0.09893 +2016-07-01|13.0|25.0|2.67762|0.0974 +2016-07-01|13.0|26.0|2.78286|0.09551 +2016-07-01|13.0|27.0|2.87411|0.09327 +2016-07-01|13.0|28.0|2.95027|0.09068 +2016-07-01|13.0|29.0|3.01038|0.08778 +2016-07-01|13.0|30.0|3.05362|0.08458 +2016-07-01|13.0|31.0|3.07933|0.08112 +2016-07-01|13.0|32.0|3.08707|0.07744 +2016-07-01|13.0|33.0|3.07657|0.0736 +2016-07-01|13.0|34.0|3.0478|0.06964 +2016-07-01|13.0|35.0|3.00096|0.06562 +2016-07-01|13.0|36.0|2.93648|0.0616 +2016-07-01|13.0|37.0|2.855|0.05763 +2016-07-01|13.0|38.0|2.7574|0.05378 +2016-07-01|13.0|39.0|2.64476|0.0501 +2016-07-01|13.0|40.0|2.51833|0.04664 +2016-07-01|13.0|41.0|2.37955|0.04347 +2016-07-01|13.0|42.0|2.22997|0.04062 +2016-07-01|13.0|43.0|2.07128|0.03813 +2016-07-01|13.0|44.0|1.90522|0.03604 +2016-07-01|13.0|45.0|1.73356|0.03436 +2016-07-01|13.0|46.0|1.55811|0.03312 +2016-07-01|13.0|47.0|1.38062|0.03232 +2016-07-01|13.0|48.0|1.20279|0.03195 +2016-07-01|13.0|49.0|1.02623|0.03202 +2016-07-01|13.0|50.0|0.85243|0.0325 +2016-07-01|13.0|51.0|0.68273|0.03336 +2016-07-01|13.0|52.0|0.51833|0.03457 +2016-07-01|13.0|53.0|0.36022|0.03611 +2016-07-01|13.0|54.0|0.20923|0.03791 +2016-07-01|13.0|55.0|0.06601|0.03995 +2016-07-01|13.0|56.0|-0.06899|0.04217 +2016-07-01|13.0|57.0|-0.19549|0.04452 +2016-07-01|13.0|58.0|-0.31338|0.04695 +2016-07-01|13.0|59.0|-0.42269|0.04943 +2016-07-01|13.0|60.0|-0.5236|0.05189 +2016-07-01|13.0|61.0|-0.61637|0.05431 +2016-07-01|13.0|62.0|-0.70138|0.05664 +2016-07-01|13.0|63.0|-0.77905|0.05885 +2016-07-01|13.0|64.0|-0.84985|0.06091 +2016-07-01|13.0|65.0|-0.91424|0.06279 +2016-07-01|13.0|66.0|-0.9727|0.06448 +2016-07-01|13.0|67.0|-1.02567|0.06597 +2016-07-01|13.0|68.0|-1.07354|0.06723 +2016-07-01|13.0|69.0|-1.11665|0.06828 +2016-07-01|13.0|70.0|-1.15526|0.0691 +2016-07-01|13.0|71.0|-1.18956|0.06971 +2016-07-01|13.0|72.0|-1.21966|0.0701 +2016-07-01|13.0|73.0|-1.24558|0.07029 +2016-07-01|13.0|74.0|-1.26731|0.07028 +2016-07-01|13.0|75.0|-1.28473|0.07009 +2016-07-01|13.0|76.0|-1.29771|0.06973 +2016-07-01|13.0|77.0|-1.30606|0.06921 +2016-07-01|13.0|78.0|-1.3096|0.06854 +2016-07-01|13.0|79.0|-1.30813|0.06772 +2016-07-01|13.0|80.0|-1.30149|0.06677 +2016-07-01|13.0|81.0|-1.28955|0.06568 +2016-07-01|13.0|82.0|-1.27225|0.06445 +2016-07-01|13.0|83.0|-1.24961|0.06309 +2016-07-01|13.0|84.0|-1.22173|0.06159 +2016-07-01|13.0|85.0|-1.18881|0.05995 +2016-07-01|13.0|86.0|-1.15119|0.05815 +2016-07-01|13.0|87.0|-1.10929|0.05618 +2016-07-01|13.0|88.0|-1.06369|0.05403 +2016-07-01|13.0|89.0|-1.01505|0.05169 +2016-07-01|13.0|90.0|-0.96417|0.04915 +2016-07-01|13.0|91.0|-0.91192|0.04638 +2016-07-01|13.0|92.0|-0.85927|0.04338 +2016-07-01|13.0|93.0|-0.80728|0.04014 +2016-07-01|13.0|94.0|-0.75701|0.03664 +2016-07-01|13.0|95.0|-0.70959|0.03288 +2016-07-01|13.0|96.0|-0.66612|0.02886 +2016-07-01|13.0|97.0|-0.62769|0.02456 +2016-07-01|13.0|98.0|-0.59533|0.02001 +2016-07-01|13.0|99.0|-0.57|0.01519 +2016-07-01|13.0|100.0|-0.55255|0.01012 +2016-07-01|13.0|101.0|-0.54369|0.00483 +2016-07-01|13.0|102.0|-0.544|-6.8E-4 +2016-07-01|13.0|103.0|-0.55388|-0.00637 +2016-07-01|13.0|104.0|-0.57354|-0.01222 +2016-07-01|13.0|105.0|-0.60301|-0.0182 +2016-07-01|13.0|106.0|-0.6421|-0.02426 +2016-07-01|13.0|107.0|-0.69041|-0.03038 +2016-07-01|13.0|108.0|-0.74735|-0.0365 +2016-07-01|13.0|109.0|-0.81212|-0.0426 +2016-07-01|13.0|110.0|-0.88374|-0.04862 +2016-07-01|13.0|111.0|-0.96105|-0.05451 +2016-07-01|13.0|112.0|-1.04274|-0.06024 +2016-07-01|13.0|113.0|-1.12738|-0.06577 +2016-07-01|13.0|114.0|-1.21344|-0.07105 +2016-07-01|13.0|115.0|-1.2993|-0.07605 +2016-07-01|13.0|116.0|-1.38331|-0.08073 +2016-07-01|13.0|117.0|-1.46382|-0.08507 +2016-07-01|13.0|118.0|-1.53919|-0.08904 +2016-07-01|13.0|119.0|-1.60782|-0.09261 +2016-07-01|13.0|120.0|-1.66819|-0.09578 +2016-07-01|13.0|121.0|-1.71891|-0.09852 +2016-07-01|13.0|122.0|-1.75868|-0.10085 +2016-07-01|13.0|123.0|-1.78637|-0.10274 +2016-07-01|13.0|124.0|-1.801|-0.10421 +2016-07-01|13.0|125.0|-1.80175|-0.10527 +2016-07-01|13.0|126.0|-1.78799|-0.10592 +2016-07-01|13.0|127.0|-1.75927|-0.10618 +2016-07-01|13.0|128.0|-1.7153|-0.10607 +2016-07-01|13.0|129.0|-1.65598|-0.10561 +2016-07-01|13.0|130.0|-1.58135|-0.10481 +2016-07-01|13.0|131.0|-1.49161|-0.1037 +2016-07-01|13.0|132.0|-1.3871|-0.1023 +2016-07-01|13.0|133.0|-1.26827|-0.10064 +2016-07-01|13.0|134.0|-1.13567|-0.09874 +2016-07-01|13.0|135.0|-0.98992|-0.09663 +2016-07-01|13.0|136.0|-0.83171|-0.09432 +2016-07-01|13.0|137.0|-0.66177|-0.09184 +2016-07-01|13.0|138.0|-0.48086|-0.0892 +2016-07-01|13.0|139.0|-0.28973|-0.08644 +2016-07-01|13.0|140.0|-0.08915|-0.08356 +2016-07-01|13.0|141.0|0.12016|-0.08058 +2016-07-01|13.0|142.0|0.33748|-0.07752 +2016-07-01|13.0|143.0|0.56215|-0.07439 +2016-07-01|13.0|144.0|0.79354|-0.07121 +2016-07-01|13.0|145.0|1.03105|-0.06798 +2016-07-01|13.0|146.0|1.27415|-0.06471 +2016-07-01|13.0|147.0|1.52233|-0.06142 +2016-07-01|13.0|148.0|1.7751|-0.05812 +2016-07-01|13.0|149.0|2.03201|-0.0548 +2016-07-01|13.0|150.0|2.29263|-0.05149 +2016-07-01|13.0|151.0|2.55652|-0.04818 +2016-07-01|13.0|152.0|2.82325|-0.04489 +2016-07-01|13.0|153.0|3.09235|-0.04161 +2016-07-01|13.0|154.0|3.36335|-0.03837 +2016-07-01|13.0|155.0|3.63572|-0.03515 +2016-07-01|13.0|156.0|3.90892|-0.03198 +2016-07-01|13.0|157.0|4.18234|-0.02887 +2016-07-01|13.0|158.0|4.45531|-0.0258 +2016-07-01|13.0|159.0|4.72712|-0.02281 +2016-07-01|13.0|160.0|4.99701|-0.01988 +2016-07-01|13.0|161.0|5.26415|-0.01704 +2016-07-01|13.0|162.0|5.52769|-0.01429 +2016-07-01|13.0|163.0|5.78674|-0.01163 +2016-07-01|13.0|164.0|6.04036|-0.00908 +2016-07-01|13.0|165.0|6.28762|-0.00663 +2016-07-01|13.0|166.0|6.5276|-0.00431 +2016-07-01|13.0|167.0|6.75935|-0.00212 +2016-07-01|13.0|168.0|6.982|-5.0E-5 +2016-07-01|13.0|169.0|7.1947|0.00187 +2016-07-01|13.0|170.0|7.39667|0.00365 +2016-07-01|13.0|171.0|7.5872|0.00528 +2016-07-01|13.0|172.0|7.76568|0.00675 +2016-07-01|13.0|173.0|7.9316|0.00807 +2016-07-01|13.0|174.0|8.08457|0.00923 +2016-07-01|13.0|175.0|8.22431|0.01022 +2016-07-01|13.0|176.0|8.35068|0.01105 +2016-07-01|13.0|177.0|8.46369|0.01171 +2016-07-01|13.0|178.0|8.56347|0.0122 +2016-07-01|13.0|179.0|8.65029|0.01253 +2016-07-01|13.0|-1.0|-2.17296|0.093 +2016-07-01|13.0|-2.0|-2.4318|0.09393 +2016-07-01|13.0|-3.0|-2.7014|0.09499 +2016-07-01|13.0|-4.0|-2.98237|0.09617 +2016-07-01|13.0|-5.0|-3.27518|0.09745 +2016-07-01|13.0|-6.0|-3.58017|0.0988 +2016-07-01|13.0|-7.0|-3.89757|0.10021 +2016-07-01|13.0|-8.0|-4.22746|0.10165 +2016-07-01|13.0|-9.0|-4.5698|0.10311 +2016-07-01|13.0|-10.0|-4.92437|0.10458 +2016-07-01|13.0|-11.0|-5.29084|0.10602 +2016-07-01|13.0|-12.0|-5.66873|0.10744 +2016-07-01|13.0|-13.0|-6.05744|0.10881 +2016-07-01|13.0|-14.0|-6.45622|0.11012 +2016-07-01|13.0|-15.0|-6.86424|0.11137 +2016-07-01|13.0|-16.0|-7.28054|0.11254 +2016-07-01|13.0|-17.0|-7.70408|0.11363 +2016-07-01|13.0|-18.0|-8.13374|0.11463 +2016-07-01|13.0|-19.0|-8.56835|0.11552 +2016-07-01|13.0|-20.0|-9.00665|0.11631 +2016-07-01|13.0|-21.0|-9.44736|0.11699 +2016-07-01|13.0|-22.0|-9.88918|0.11755 +2016-07-01|13.0|-23.0|-10.33074|0.11798 +2016-07-01|13.0|-24.0|-10.77071|0.11827 +2016-07-01|13.0|-25.0|-11.20773|0.11841 +2016-07-01|13.0|-26.0|-11.64042|0.1184 +2016-07-01|13.0|-27.0|-12.06745|0.11822 +2016-07-01|13.0|-28.0|-12.48746|0.11786 +2016-07-01|13.0|-29.0|-12.89911|0.1173 +2016-07-01|13.0|-30.0|-13.30108|0.11652 +2016-07-01|13.0|-31.0|-13.69207|0.11553 +2016-07-01|13.0|-32.0|-14.07078|0.11428 +2016-07-01|13.0|-33.0|-14.43593|0.11279 +2016-07-01|13.0|-34.0|-14.78626|0.11101 +2016-07-01|13.0|-35.0|-15.12053|0.10895 +2016-07-01|13.0|-36.0|-15.43752|0.10659 +2016-07-01|13.0|-37.0|-15.736|0.10392 +2016-07-01|13.0|-38.0|-16.01481|0.10093 +2016-07-01|13.0|-39.0|-16.27278|0.09761 +2016-07-01|13.0|-40.0|-16.50877|0.09395 +2016-07-01|13.0|-41.0|-16.7217|0.08996 +2016-07-01|13.0|-42.0|-16.91049|0.08563 +2016-07-01|13.0|-43.0|-17.07413|0.08097 +2016-07-01|13.0|-44.0|-17.21167|0.07599 +2016-07-01|13.0|-45.0|-17.3222|0.07069 +2016-07-01|13.0|-46.0|-17.40489|0.0651 +2016-07-01|13.0|-47.0|-17.45896|0.05922 +2016-07-01|13.0|-48.0|-17.48376|0.05307 +2016-07-01|13.0|-49.0|-17.4787|0.04668 +2016-07-01|13.0|-50.0|-17.4433|0.04007 +2016-07-01|13.0|-51.0|-17.37718|0.03327 +2016-07-01|13.0|-52.0|-17.28008|0.02629 +2016-07-01|13.0|-53.0|-17.15188|0.01918 +2016-07-01|13.0|-54.0|-16.99255|0.01195 +2016-07-01|13.0|-55.0|-16.80221|0.00465 +2016-07-01|13.0|-56.0|-16.58111|-0.00272 +2016-07-01|13.0|-57.0|-16.32962|-0.0101 +2016-07-01|13.0|-58.0|-16.04827|-0.01749 +2016-07-01|13.0|-59.0|-15.73768|-0.02484 +2016-07-01|13.0|-60.0|-15.39861|-0.03213 +2016-07-01|13.0|-61.0|-15.03196|-0.03934 +2016-07-01|13.0|-62.0|-14.63872|-0.04645 +2016-07-01|13.0|-63.0|-14.21999|-0.05343 +2016-07-01|13.0|-64.0|-13.77697|-0.06025 +2016-07-01|13.0|-65.0|-13.31095|-0.06691 +2016-07-01|13.0|-66.0|-12.8233|-0.07338 +2016-07-01|13.0|-67.0|-12.31547|-0.07964 +2016-07-01|13.0|-68.0|-11.78894|-0.08568 +2016-07-01|13.0|-69.0|-11.24527|-0.09148 +2016-07-01|13.0|-70.0|-10.68606|-0.09703 +2016-07-01|13.0|-71.0|-10.11292|-0.10231 +2016-07-01|13.0|-72.0|-9.52752|-0.1073 +2016-07-01|13.0|-73.0|-8.93151|-0.112 +2016-07-01|13.0|-74.0|-8.32659|-0.11639 +2016-07-01|13.0|-75.0|-7.71444|-0.12046 +2016-07-01|13.0|-76.0|-7.09675|-0.12419 +2016-07-01|13.0|-77.0|-6.47522|-0.12757 +2016-07-01|13.0|-78.0|-5.85151|-0.1306 +2016-07-01|13.0|-79.0|-5.22729|-0.13326 +2016-07-01|13.0|-80.0|-4.60423|-0.13554 +2016-07-01|13.0|-81.0|-3.98393|-0.13744 +2016-07-01|13.0|-82.0|-3.36802|-0.13895 +2016-07-01|13.0|-83.0|-2.75805|-0.14008 +2016-07-01|13.0|-84.0|-2.15557|-0.14082 +2016-07-01|13.0|-85.0|-1.56205|-0.14117 +2016-07-01|13.0|-86.0|-0.97894|-0.14116 +2016-07-01|13.0|-87.0|-0.4076|-0.14077 +2016-07-01|13.0|-88.0|0.15066|-0.14004 +2016-07-01|13.0|-89.0|0.69461|-0.13897 +2016-07-01|13.0|-90.0|1.22311|-0.13758 +2016-07-01|13.0|-91.0|1.73512|-0.1359 +2016-07-01|13.0|-92.0|2.22971|-0.13395 +2016-07-01|13.0|-93.0|2.70604|-0.13175 +2016-07-01|13.0|-94.0|3.1634|-0.12934 +2016-07-01|13.0|-95.0|3.60122|-0.12674 +2016-07-01|13.0|-96.0|4.01905|-0.12398 +2016-07-01|13.0|-97.0|4.41656|-0.12109 +2016-07-01|13.0|-98.0|4.79357|-0.1181 +2016-07-01|13.0|-99.0|5.15005|-0.11504 +2016-07-01|13.0|-100.0|5.48606|-0.11193 +2016-07-01|13.0|-101.0|5.80184|-0.1088 +2016-07-01|13.0|-102.0|6.09773|-0.10567 +2016-07-01|13.0|-103.0|6.37418|-0.10257 +2016-07-01|13.0|-104.0|6.63179|-0.09951 +2016-07-01|13.0|-105.0|6.87122|-0.09651 +2016-07-01|13.0|-106.0|7.09324|-0.09358 +2016-07-01|13.0|-107.0|7.29869|-0.09073 +2016-07-01|13.0|-108.0|7.48848|-0.08797 +2016-07-01|13.0|-109.0|7.66357|-0.08531 +2016-07-01|13.0|-110.0|7.82493|-0.08275 +2016-07-01|13.0|-111.0|7.97358|-0.08029 +2016-07-01|13.0|-112.0|8.11052|-0.07792 +2016-07-01|13.0|-113.0|8.23675|-0.07565 +2016-07-01|13.0|-114.0|8.35324|-0.07347 +2016-07-01|13.0|-115.0|8.4609|-0.07137 +2016-07-01|13.0|-116.0|8.56062|-0.06935 +2016-07-01|13.0|-117.0|8.6532|-0.0674 +2016-07-01|13.0|-118.0|8.73937|-0.06552 +2016-07-01|13.0|-119.0|8.81978|-0.06368 +2016-07-01|13.0|-120.0|8.89497|-0.0619 +2016-07-01|13.0|-121.0|8.96543|-0.06016 +2016-07-01|13.0|-122.0|9.03151|-0.05845 +2016-07-01|13.0|-123.0|9.09351|-0.05678 +2016-07-01|13.0|-124.0|9.1516|-0.05513 +2016-07-01|13.0|-125.0|9.2059|-0.05351 +2016-07-01|13.0|-126.0|9.25644|-0.05191 +2016-07-01|13.0|-127.0|9.30317|-0.05034 +2016-07-01|13.0|-128.0|9.346|-0.04878 +2016-07-01|13.0|-129.0|9.38479|-0.04725 +2016-07-01|13.0|-130.0|9.41936|-0.04575 +2016-07-01|13.0|-131.0|9.44954|-0.04427 +2016-07-01|13.0|-132.0|9.47511|-0.04283 +2016-07-01|13.0|-133.0|9.49591|-0.04141 +2016-07-01|13.0|-134.0|9.51175|-0.04003 +2016-07-01|13.0|-135.0|9.5225|-0.03869 +2016-07-01|13.0|-136.0|9.52809|-0.03738 +2016-07-01|13.0|-137.0|9.52846|-0.03611 +2016-07-01|13.0|-138.0|9.52366|-0.03488 +2016-07-01|13.0|-139.0|9.51376|-0.03368 +2016-07-01|13.0|-140.0|9.49895|-0.03252 +2016-07-01|13.0|-141.0|9.47944|-0.03139 +2016-07-01|13.0|-142.0|9.45557|-0.03028 +2016-07-01|13.0|-143.0|9.42771|-0.0292 +2016-07-01|13.0|-144.0|9.3963|-0.02813 +2016-07-01|13.0|-145.0|9.36186|-0.02708 +2016-07-01|13.0|-146.0|9.32494|-0.02602 +2016-07-01|13.0|-147.0|9.28616|-0.02497 +2016-07-01|13.0|-148.0|9.24614|-0.0239 +2016-07-01|13.0|-149.0|9.20556|-0.02282 +2016-07-01|13.0|-150.0|9.16506|-0.02171 +2016-07-01|13.0|-151.0|9.1253|-0.02057 +2016-07-01|13.0|-152.0|9.08694|-0.01939 +2016-07-01|13.0|-153.0|9.05057|-0.01818 +2016-07-01|13.0|-154.0|9.01674|-0.01692 +2016-07-01|13.0|-155.0|8.98597|-0.01562 +2016-07-01|13.0|-156.0|8.95867|-0.01428 +2016-07-01|13.0|-157.0|8.9352|-0.01289 +2016-07-01|13.0|-158.0|8.91579|-0.01146 +2016-07-01|13.0|-159.0|8.9006|-0.00999 +2016-07-01|13.0|-160.0|8.88967|-0.00849 +2016-07-01|13.0|-161.0|8.88293|-0.00697 +2016-07-01|13.0|-162.0|8.8802|-0.00543 +2016-07-01|13.0|-163.0|8.88115|-0.00388 +2016-07-01|13.0|-164.0|8.88538|-0.00233 +2016-07-01|13.0|-165.0|8.89234|-8.0E-4 +2016-07-01|13.0|-166.0|8.9014|7.1E-4 +2016-07-01|13.0|-167.0|8.91181|0.00218 +2016-07-01|13.0|-168.0|8.92273|0.0036 +2016-07-01|13.0|-169.0|8.93325|0.00496 +2016-07-01|13.0|-170.0|8.94238|0.00624 +2016-07-01|13.0|-171.0|8.94909|0.00744 +2016-07-01|13.0|-172.0|8.9523|0.00854 +2016-07-01|13.0|-173.0|8.95093|0.00953 +2016-07-01|13.0|-174.0|8.94386|0.0104 +2016-07-01|13.0|-175.0|8.93003|0.01114 +2016-07-01|13.0|-176.0|8.90837|0.01175 +2016-07-01|13.0|-177.0|8.87789|0.01222 +2016-07-01|13.0|-178.0|8.83764|0.01253 +2016-07-01|13.0|-179.0|8.78678|0.01269 +2016-07-01|14.0|0.0|-1.75405|0.0912 +2016-07-01|14.0|1.0|-1.51876|0.0905 +2016-07-01|14.0|2.0|-1.29211|0.08998 +2016-07-01|14.0|3.0|-1.07324|0.08965 +2016-07-01|14.0|4.0|-0.86129|0.0895 +2016-07-01|14.0|5.0|-0.65537|0.08953 +2016-07-01|14.0|6.0|-0.45463|0.08975 +2016-07-01|14.0|7.0|-0.25827|0.09015 +2016-07-01|14.0|8.0|-0.06556|0.09071 +2016-07-01|14.0|9.0|0.12415|0.09142 +2016-07-01|14.0|10.0|0.31141|0.09225 +2016-07-01|14.0|11.0|0.49661|0.09318 +2016-07-01|14.0|12.0|0.68005|0.09417 +2016-07-01|14.0|13.0|0.86183|0.0952 +2016-07-01|14.0|14.0|1.04192|0.09623 +2016-07-01|14.0|15.0|1.22013|0.09721 +2016-07-01|14.0|16.0|1.39607|0.09811 +2016-07-01|14.0|17.0|1.56923|0.09889 +2016-07-01|14.0|18.0|1.73893|0.09951 +2016-07-01|14.0|19.0|1.90433|0.09993 +2016-07-01|14.0|20.0|2.06451|0.10011 +2016-07-01|14.0|21.0|2.21839|0.10002 +2016-07-01|14.0|22.0|2.36484|0.09964 +2016-07-01|14.0|23.0|2.50265|0.09894 +2016-07-01|14.0|24.0|2.63058|0.09789 +2016-07-01|14.0|25.0|2.74739|0.09651 +2016-07-01|14.0|26.0|2.85186|0.09477 +2016-07-01|14.0|27.0|2.94283|0.09268 +2016-07-01|14.0|28.0|3.01921|0.09026 +2016-07-01|14.0|29.0|3.08005|0.08752 +2016-07-01|14.0|30.0|3.1245|0.08449 +2016-07-01|14.0|31.0|3.15192|0.0812 +2016-07-01|14.0|32.0|3.16181|0.0777 +2016-07-01|14.0|33.0|3.1539|0.07402 +2016-07-01|14.0|34.0|3.12814|0.07022 +2016-07-01|14.0|35.0|3.08467|0.06634 +2016-07-01|14.0|36.0|3.02389|0.06246 +2016-07-01|14.0|37.0|2.9464|0.05861 +2016-07-01|14.0|38.0|2.85303|0.05487 +2016-07-01|14.0|39.0|2.74481|0.05129 +2016-07-01|14.0|40.0|2.62295|0.04791 +2016-07-01|14.0|41.0|2.48883|0.0448 +2016-07-01|14.0|42.0|2.34397|0.042 +2016-07-01|14.0|43.0|2.18998|0.03953 +2016-07-01|14.0|44.0|2.02858|0.03745 +2016-07-01|14.0|45.0|1.86151|0.03577 +2016-07-01|14.0|46.0|1.69051|0.0345 +2016-07-01|14.0|47.0|1.51731|0.03366 +2016-07-01|14.0|48.0|1.34359|0.03325 +2016-07-01|14.0|49.0|1.17093|0.03325 +2016-07-01|14.0|50.0|1.00078|0.03365 +2016-07-01|14.0|51.0|0.8345|0.03443 +2016-07-01|14.0|52.0|0.67324|0.03556 +2016-07-01|14.0|53.0|0.51801|0.03699 +2016-07-01|14.0|54.0|0.36964|0.0387 +2016-07-01|14.0|55.0|0.22877|0.04064 +2016-07-01|14.0|56.0|0.09584|0.04275 +2016-07-01|14.0|57.0|-0.02884|0.045 +2016-07-01|14.0|58.0|-0.14516|0.04734 +2016-07-01|14.0|59.0|-0.25316|0.04972 +2016-07-01|14.0|60.0|-0.35298|0.0521 +2016-07-01|14.0|61.0|-0.44491|0.05443 +2016-07-01|14.0|62.0|-0.52929|0.05669 +2016-07-01|14.0|63.0|-0.60656|0.05882 +2016-07-01|14.0|64.0|-0.67716|0.06082 +2016-07-01|14.0|65.0|-0.74159|0.06264 +2016-07-01|14.0|66.0|-0.80031|0.06428 +2016-07-01|14.0|67.0|-0.85376|0.06572 +2016-07-01|14.0|68.0|-0.90236|0.06694 +2016-07-01|14.0|69.0|-0.94645|0.06795 +2016-07-01|14.0|70.0|-0.98631|0.06874 +2016-07-01|14.0|71.0|-1.02214|0.06932 +2016-07-01|14.0|72.0|-1.05408|0.06969 +2016-07-01|14.0|73.0|-1.08219|0.06985 +2016-07-01|14.0|74.0|-1.10645|0.06983 +2016-07-01|14.0|75.0|-1.12678|0.06962 +2016-07-01|14.0|76.0|-1.14307|0.06924 +2016-07-01|14.0|77.0|-1.15517|0.06869 +2016-07-01|14.0|78.0|-1.16289|0.068 +2016-07-01|14.0|79.0|-1.16607|0.06716 +2016-07-01|14.0|80.0|-1.16456|0.06618 +2016-07-01|14.0|81.0|-1.15824|0.06506 +2016-07-01|14.0|82.0|-1.14705|0.06381 +2016-07-01|14.0|83.0|-1.131|0.06243 +2016-07-01|14.0|84.0|-1.1102|0.0609 +2016-07-01|14.0|85.0|-1.08485|0.05923 +2016-07-01|14.0|86.0|-1.05525|0.05741 +2016-07-01|14.0|87.0|-1.02181|0.05542 +2016-07-01|14.0|88.0|-0.98508|0.05325 +2016-07-01|14.0|89.0|-0.94568|0.05089 +2016-07-01|14.0|90.0|-0.90437|0.04833 +2016-07-01|14.0|91.0|-0.86199|0.04556 +2016-07-01|14.0|92.0|-0.81946|0.04256 +2016-07-01|14.0|93.0|-0.77778|0.03932 +2016-07-01|14.0|94.0|-0.73796|0.03582 +2016-07-01|14.0|95.0|-0.70109|0.03208 +2016-07-01|14.0|96.0|-0.6682|0.02807 +2016-07-01|14.0|97.0|-0.64033|0.02381 +2016-07-01|14.0|98.0|-0.61847|0.01928 +2016-07-01|14.0|99.0|-0.60351|0.01451 +2016-07-01|14.0|100.0|-0.59627|0.0095 +2016-07-01|14.0|101.0|-0.59742|0.00426 +2016-07-01|14.0|102.0|-0.60749|-0.00118 +2016-07-01|14.0|103.0|-0.62686|-0.00681 +2016-07-01|14.0|104.0|-0.65572|-0.01258 +2016-07-01|14.0|105.0|-0.69406|-0.01848 +2016-07-01|14.0|106.0|-0.74169|-0.02446 +2016-07-01|14.0|107.0|-0.79821|-0.03049 +2016-07-01|14.0|108.0|-0.86302|-0.03652 +2016-07-01|14.0|109.0|-0.93532|-0.04253 +2016-07-01|14.0|110.0|-1.01416|-0.04845 +2016-07-01|14.0|111.0|-1.09838|-0.05426 +2016-07-01|14.0|112.0|-1.1867|-0.0599 +2016-07-01|14.0|113.0|-1.27771|-0.06535 +2016-07-01|14.0|114.0|-1.3699|-0.07055 +2016-07-01|14.0|115.0|-1.4617|-0.07547 +2016-07-01|14.0|116.0|-1.55147|-0.08008 +2016-07-01|14.0|117.0|-1.63759|-0.08435 +2016-07-01|14.0|118.0|-1.71844|-0.08826 +2016-07-01|14.0|119.0|-1.79246|-0.09179 +2016-07-01|14.0|120.0|-1.85816|-0.09491 +2016-07-01|14.0|121.0|-1.91414|-0.09763 +2016-07-01|14.0|122.0|-1.95913|-0.09992 +2016-07-01|14.0|123.0|-1.99201|-0.1018 +2016-07-01|14.0|124.0|-2.0118|-0.10327 +2016-07-01|14.0|125.0|-2.01768|-0.10433 +2016-07-01|14.0|126.0|-2.00901|-0.105 +2016-07-01|14.0|127.0|-1.98533|-0.10528 +2016-07-01|14.0|128.0|-1.94635|-0.1052 +2016-07-01|14.0|129.0|-1.89192|-0.10477 +2016-07-01|14.0|130.0|-1.82207|-0.10401 +2016-07-01|14.0|131.0|-1.73699|-0.10296 +2016-07-01|14.0|132.0|-1.63696|-0.10162 +2016-07-01|14.0|133.0|-1.52242|-0.10002 +2016-07-01|14.0|134.0|-1.39387|-0.09819 +2016-07-01|14.0|135.0|-1.25191|-0.09615 +2016-07-01|14.0|136.0|-1.0972|-0.09391 +2016-07-01|14.0|137.0|-0.93044|-0.09151 +2016-07-01|14.0|138.0|-0.75236|-0.08896 +2016-07-01|14.0|139.0|-0.56369|-0.08627 +2016-07-01|14.0|140.0|-0.36517|-0.08347 +2016-07-01|14.0|141.0|-0.15752|-0.08058 +2016-07-01|14.0|142.0|0.05858|-0.0776 +2016-07-01|14.0|143.0|0.28246|-0.07456 +2016-07-01|14.0|144.0|0.51349|-0.07145 +2016-07-01|14.0|145.0|0.75109|-0.0683 +2016-07-01|14.0|146.0|0.99471|-0.06512 +2016-07-01|14.0|147.0|1.24385|-0.0619 +2016-07-01|14.0|148.0|1.498|-0.05867 +2016-07-01|14.0|149.0|1.7567|-0.05543 +2016-07-01|14.0|150.0|2.01952|-0.05219 +2016-07-01|14.0|151.0|2.28599|-0.04895 +2016-07-01|14.0|152.0|2.55568|-0.04572 +2016-07-01|14.0|153.0|2.8281|-0.04251 +2016-07-01|14.0|154.0|3.10276|-0.03933 +2016-07-01|14.0|155.0|3.37914|-0.03619 +2016-07-01|14.0|156.0|3.65667|-0.03308 +2016-07-01|14.0|157.0|3.93472|-0.03003 +2016-07-01|14.0|158.0|4.21263|-0.02703 +2016-07-01|14.0|159.0|4.48968|-0.0241 +2016-07-01|14.0|160.0|4.76509|-0.02124 +2016-07-01|14.0|161.0|5.03804|-0.01847 +2016-07-01|14.0|162.0|5.30766|-0.01578 +2016-07-01|14.0|163.0|5.57305|-0.01319 +2016-07-01|14.0|164.0|5.83327|-0.01071 +2016-07-01|14.0|165.0|6.08739|-0.00834 +2016-07-01|14.0|166.0|6.33446|-0.00609 +2016-07-01|14.0|167.0|6.57355|-0.00397 +2016-07-01|14.0|168.0|6.80376|-0.00198 +2016-07-01|14.0|169.0|7.02422|-1.4E-4 +2016-07-01|14.0|170.0|7.23414|0.00157 +2016-07-01|14.0|171.0|7.43279|0.00312 +2016-07-01|14.0|172.0|7.61954|0.00452 +2016-07-01|14.0|173.0|7.79384|0.00576 +2016-07-01|14.0|174.0|7.95529|0.00684 +2016-07-01|14.0|175.0|8.10357|0.00776 +2016-07-01|14.0|176.0|8.23852|0.00852 +2016-07-01|14.0|177.0|8.36011|0.00912 +2016-07-01|14.0|178.0|8.46843|0.00955 +2016-07-01|14.0|179.0|8.56372|0.00982 +2016-07-01|14.0|-1.0|-1.99879|0.09205 +2016-07-01|14.0|-2.0|-2.25374|0.09305 +2016-07-01|14.0|-3.0|-2.51955|0.09419 +2016-07-01|14.0|-4.0|-2.7968|0.09543 +2016-07-01|14.0|-5.0|-3.08595|0.09676 +2016-07-01|14.0|-6.0|-3.38734|0.09817 +2016-07-01|14.0|-7.0|-3.70116|0.09963 +2016-07-01|14.0|-8.0|-4.02749|0.10112 +2016-07-01|14.0|-9.0|-4.36626|0.10262 +2016-07-01|14.0|-10.0|-4.71723|0.10413 +2016-07-01|14.0|-11.0|-5.08007|0.10561 +2016-07-01|14.0|-12.0|-5.45427|0.10706 +2016-07-01|14.0|-13.0|-5.83923|0.10846 +2016-07-01|14.0|-14.0|-6.23419|0.1098 +2016-07-01|14.0|-15.0|-6.63833|0.11107 +2016-07-01|14.0|-16.0|-7.05068|0.11227 +2016-07-01|14.0|-17.0|-7.47022|0.11338 +2016-07-01|14.0|-18.0|-7.89584|0.1144 +2016-07-01|14.0|-19.0|-8.32638|0.11532 +2016-07-01|14.0|-20.0|-8.76061|0.11614 +2016-07-01|14.0|-21.0|-9.19728|0.11685 +2016-07-01|14.0|-22.0|-9.63512|0.11745 +2016-07-01|14.0|-23.0|-10.07281|0.11793 +2016-07-01|14.0|-24.0|-10.50904|0.11828 +2016-07-01|14.0|-25.0|-10.9425|0.11848 +2016-07-01|14.0|-26.0|-11.37189|0.11855 +2016-07-01|14.0|-27.0|-11.79589|0.11845 +2016-07-01|14.0|-28.0|-12.2132|0.11818 +2016-07-01|14.0|-29.0|-12.62256|0.11773 +2016-07-01|14.0|-30.0|-13.02268|0.11707 +2016-07-01|14.0|-31.0|-13.41231|0.11621 +2016-07-01|14.0|-32.0|-13.79021|0.11511 +2016-07-01|14.0|-33.0|-14.15515|0.11377 +2016-07-01|14.0|-34.0|-14.50591|0.11217 +2016-07-01|14.0|-35.0|-14.8413|0.11029 +2016-07-01|14.0|-36.0|-15.16012|0.10812 +2016-07-01|14.0|-37.0|-15.4612|0.10565 +2016-07-01|14.0|-38.0|-15.74338|0.10287 +2016-07-01|14.0|-39.0|-16.00552|0.09977 +2016-07-01|14.0|-40.0|-16.2465|0.09634 +2016-07-01|14.0|-41.0|-16.46524|0.09258 +2016-07-01|14.0|-42.0|-16.66067|0.08849 +2016-07-01|14.0|-43.0|-16.83178|0.08406 +2016-07-01|14.0|-44.0|-16.97758|0.07932 +2016-07-01|14.0|-45.0|-17.09716|0.07425 +2016-07-01|14.0|-46.0|-17.18965|0.06888 +2016-07-01|14.0|-47.0|-17.25426|0.06322 +2016-07-01|14.0|-48.0|-17.29027|0.05728 +2016-07-01|14.0|-49.0|-17.29706|0.05109 +2016-07-01|14.0|-50.0|-17.2741|0.04467 +2016-07-01|14.0|-51.0|-17.22095|0.03803 +2016-07-01|14.0|-52.0|-17.13731|0.03121 +2016-07-01|14.0|-53.0|-17.02296|0.02423 +2016-07-01|14.0|-54.0|-16.87784|0.01712 +2016-07-01|14.0|-55.0|-16.70198|0.00991 +2016-07-01|14.0|-56.0|-16.49557|0.00263 +2016-07-01|14.0|-57.0|-16.25892|-0.0047 +2016-07-01|14.0|-58.0|-15.99246|-0.01205 +2016-07-01|14.0|-59.0|-15.69676|-0.01939 +2016-07-01|14.0|-60.0|-15.37252|-0.0267 +2016-07-01|14.0|-61.0|-15.02054|-0.03394 +2016-07-01|14.0|-62.0|-14.64177|-0.0411 +2016-07-01|14.0|-63.0|-14.23723|-0.04815 +2016-07-01|14.0|-64.0|-13.80807|-0.05507 +2016-07-01|14.0|-65.0|-13.35551|-0.06184 +2016-07-01|14.0|-66.0|-12.88087|-0.06843 +2016-07-01|14.0|-67.0|-12.38553|-0.07484 +2016-07-01|14.0|-68.0|-11.87095|-0.08104 +2016-07-01|14.0|-69.0|-11.33861|-0.08701 +2016-07-01|14.0|-70.0|-10.79008|-0.09274 +2016-07-01|14.0|-71.0|-10.22694|-0.09822 +2016-07-01|14.0|-72.0|-9.65081|-0.10342 +2016-07-01|14.0|-73.0|-9.06331|-0.10832 +2016-07-01|14.0|-74.0|-8.46611|-0.11293 +2016-07-01|14.0|-75.0|-7.86086|-0.11721 +2016-07-01|14.0|-76.0|-7.24924|-0.12116 +2016-07-01|14.0|-77.0|-6.63291|-0.12476 +2016-07-01|14.0|-78.0|-6.01355|-0.128 +2016-07-01|14.0|-79.0|-5.39279|-0.13087 +2016-07-01|14.0|-80.0|-4.7723|-0.13336 +2016-07-01|14.0|-81.0|-4.1537|-0.13547 +2016-07-01|14.0|-82.0|-3.5386|-0.13718 +2016-07-01|14.0|-83.0|-2.92856|-0.1385 +2016-07-01|14.0|-84.0|-2.32515|-0.13942 +2016-07-01|14.0|-85.0|-1.72986|-0.13995 +2016-07-01|14.0|-86.0|-1.14414|-0.1401 +2016-07-01|14.0|-87.0|-0.56941|-0.13988 +2016-07-01|14.0|-88.0|-0.00698|-0.13929 +2016-07-01|14.0|-89.0|0.54186|-0.13835 +2016-07-01|14.0|-90.0|1.07596|-0.13709 +2016-07-01|14.0|-91.0|1.59422|-0.13552 +2016-07-01|14.0|-92.0|2.09565|-0.13367 +2016-07-01|14.0|-93.0|2.57939|-0.13157 +2016-07-01|14.0|-94.0|3.04467|-0.12924 +2016-07-01|14.0|-95.0|3.49086|-0.12671 +2016-07-01|14.0|-96.0|3.91746|-0.12401 +2016-07-01|14.0|-97.0|4.32408|-0.12117 +2016-07-01|14.0|-98.0|4.71049|-0.11822 +2016-07-01|14.0|-99.0|5.07659|-0.11519 +2016-07-01|14.0|-100.0|5.42241|-0.11211 +2016-07-01|14.0|-101.0|5.74811|-0.10901 +2016-07-01|14.0|-102.0|6.05398|-0.1059 +2016-07-01|14.0|-103.0|6.34043|-0.10281 +2016-07-01|14.0|-104.0|6.60799|-0.09975 +2016-07-01|14.0|-105.0|6.85729|-0.09676 +2016-07-01|14.0|-106.0|7.08904|-0.09383 +2016-07-01|14.0|-107.0|7.30404|-0.09099 +2016-07-01|14.0|-108.0|7.50315|-0.08823 +2016-07-01|14.0|-109.0|7.68729|-0.08557 +2016-07-01|14.0|-110.0|7.85741|-0.08301 +2016-07-01|14.0|-111.0|8.01448|-0.08055 +2016-07-01|14.0|-112.0|8.15948|-0.0782 +2016-07-01|14.0|-113.0|8.29339|-0.07593 +2016-07-01|14.0|-114.0|8.41713|-0.07377 +2016-07-01|14.0|-115.0|8.53163|-0.07169 +2016-07-01|14.0|-116.0|8.63773|-0.06969 +2016-07-01|14.0|-117.0|8.73623|-0.06776 +2016-07-01|14.0|-118.0|8.82785|-0.0659 +2016-07-01|14.0|-119.0|8.91322|-0.06411 +2016-07-01|14.0|-120.0|8.99292|-0.06236 +2016-07-01|14.0|-121.0|9.06739|-0.06066 +2016-07-01|14.0|-122.0|9.13702|-0.059 +2016-07-01|14.0|-123.0|9.2021|-0.05737 +2016-07-01|14.0|-124.0|9.26281|-0.05578 +2016-07-01|14.0|-125.0|9.31928|-0.05421 +2016-07-01|14.0|-126.0|9.37155|-0.05266 +2016-07-01|14.0|-127.0|9.41959|-0.05114 +2016-07-01|14.0|-128.0|9.46333|-0.04964 +2016-07-01|14.0|-129.0|9.50264|-0.04817 +2016-07-01|14.0|-130.0|9.53737|-0.04672 +2016-07-01|14.0|-131.0|9.56734|-0.0453 +2016-07-01|14.0|-132.0|9.5924|-0.0439 +2016-07-01|14.0|-133.0|9.61235|-0.04253 +2016-07-01|14.0|-134.0|9.62707|-0.0412 +2016-07-01|14.0|-135.0|9.63644|-0.0399 +2016-07-01|14.0|-136.0|9.64039|-0.03863 +2016-07-01|14.0|-137.0|9.6389|-0.0374 +2016-07-01|14.0|-138.0|9.63203|-0.03621 +2016-07-01|14.0|-139.0|9.61989|-0.03504 +2016-07-01|14.0|-140.0|9.60267|-0.03391 +2016-07-01|14.0|-141.0|9.58061|-0.03281 +2016-07-01|14.0|-142.0|9.55406|-0.03174 +2016-07-01|14.0|-143.0|9.5234|-0.03068 +2016-07-01|14.0|-144.0|9.48911|-0.02965 +2016-07-01|14.0|-145.0|9.45171|-0.02862 +2016-07-01|14.0|-146.0|9.41178|-0.0276 +2016-07-01|14.0|-147.0|9.36992|-0.02657 +2016-07-01|14.0|-148.0|9.3268|-0.02554 +2016-07-01|14.0|-149.0|9.28306|-0.02449 +2016-07-01|14.0|-150.0|9.23939|-0.02342 +2016-07-01|14.0|-151.0|9.19645|-0.02233 +2016-07-01|14.0|-152.0|9.15487|-0.0212 +2016-07-01|14.0|-153.0|9.11525|-0.02004 +2016-07-01|14.0|-154.0|9.07817|-0.01883 +2016-07-01|14.0|-155.0|9.04409|-0.01759 +2016-07-01|14.0|-156.0|9.01346|-0.01631 +2016-07-01|14.0|-157.0|8.98658|-0.01498 +2016-07-01|14.0|-158.0|8.96371|-0.01362 +2016-07-01|14.0|-159.0|8.94497|-0.01222 +2016-07-01|14.0|-160.0|8.93039|-0.01078 +2016-07-01|14.0|-161.0|8.91988|-0.00933 +2016-07-01|14.0|-162.0|8.91323|-0.00786 +2016-07-01|14.0|-163.0|8.9101|-0.00637 +2016-07-01|14.0|-164.0|8.91006|-0.00489 +2016-07-01|14.0|-165.0|8.91256|-0.00342 +2016-07-01|14.0|-166.0|8.91692|-0.00197 +2016-07-01|14.0|-167.0|8.92239|-5.5E-4 +2016-07-01|14.0|-168.0|8.92811|8.2E-4 +2016-07-01|14.0|-169.0|8.93316|0.00214 +2016-07-01|14.0|-170.0|8.93654|0.00339 +2016-07-01|14.0|-171.0|8.93721|0.00456 +2016-07-01|14.0|-172.0|8.9341|0.00564 +2016-07-01|14.0|-173.0|8.9261|0.00662 +2016-07-01|14.0|-174.0|8.91214|0.00749 +2016-07-01|14.0|-175.0|8.89114|0.00824 +2016-07-01|14.0|-176.0|8.86205|0.00886 +2016-07-01|14.0|-177.0|8.8239|0.00935 +2016-07-01|14.0|-178.0|8.77577|0.00969 +2016-07-01|14.0|-179.0|8.71683|0.00989 +2016-07-01|15.0|0.0|-1.59298|0.09036 +2016-07-01|15.0|1.0|-1.36132|0.0896 +2016-07-01|15.0|2.0|-1.13841|0.08901 +2016-07-01|15.0|3.0|-0.9234|0.0886 +2016-07-01|15.0|4.0|-0.71543|0.08838 +2016-07-01|15.0|5.0|-0.51361|0.08835 +2016-07-01|15.0|6.0|-0.31709|0.0885 +2016-07-01|15.0|7.0|-0.12506|0.08884 +2016-07-01|15.0|8.0|0.06324|0.08934 +2016-07-01|15.0|9.0|0.24847|0.08999 +2016-07-01|15.0|10.0|0.43119|0.09077 +2016-07-01|15.0|11.0|0.61184|0.09166 +2016-07-01|15.0|12.0|0.79072|0.09262 +2016-07-01|15.0|13.0|0.96798|0.09363 +2016-07-01|15.0|14.0|1.14361|0.09464 +2016-07-01|15.0|15.0|1.31746|0.09563 +2016-07-01|15.0|16.0|1.48919|0.09654 +2016-07-01|15.0|17.0|1.65832|0.09735 +2016-07-01|15.0|18.0|1.82419|0.098 +2016-07-01|15.0|19.0|1.98604|0.09848 +2016-07-01|15.0|20.0|2.14295|0.09872 +2016-07-01|15.0|21.0|2.29389|0.09872 +2016-07-01|15.0|22.0|2.43776|0.09843 +2016-07-01|15.0|23.0|2.57339|0.09783 +2016-07-01|15.0|24.0|2.69956|0.09691 +2016-07-01|15.0|25.0|2.81505|0.09565 +2016-07-01|15.0|26.0|2.91867|0.09406 +2016-07-01|15.0|27.0|3.00927|0.09212 +2016-07-01|15.0|28.0|3.08577|0.08986 +2016-07-01|15.0|29.0|3.1472|0.08728 +2016-07-01|15.0|30.0|3.19274|0.08441 +2016-07-01|15.0|31.0|3.22171|0.08129 +2016-07-01|15.0|32.0|3.23362|0.07795 +2016-07-01|15.0|33.0|3.22816|0.07443 +2016-07-01|15.0|34.0|3.20525|0.07078 +2016-07-01|15.0|35.0|3.16501|0.06705 +2016-07-01|15.0|36.0|3.10779|0.0633 +2016-07-01|15.0|37.0|3.03416|0.05958 +2016-07-01|15.0|38.0|2.9449|0.05595 +2016-07-01|15.0|39.0|2.84099|0.05246 +2016-07-01|15.0|40.0|2.72359|0.04916 +2016-07-01|15.0|41.0|2.59405|0.04611 +2016-07-01|15.0|42.0|2.45382|0.04335 +2016-07-01|15.0|43.0|2.30448|0.04092 +2016-07-01|15.0|44.0|2.1477|0.03885 +2016-07-01|15.0|45.0|1.98516|0.03716 +2016-07-01|15.0|46.0|1.81858|0.03587 +2016-07-01|15.0|47.0|1.64965|0.03499 +2016-07-01|15.0|48.0|1.48003|0.03453 +2016-07-01|15.0|49.0|1.31125|0.03447 +2016-07-01|15.0|50.0|1.14477|0.0348 +2016-07-01|15.0|51.0|0.9819|0.03549 +2016-07-01|15.0|52.0|0.8238|0.03653 +2016-07-01|15.0|53.0|0.67147|0.03787 +2016-07-01|15.0|54.0|0.52573|0.03948 +2016-07-01|15.0|55.0|0.38722|0.04131 +2016-07-01|15.0|56.0|0.2564|0.04333 +2016-07-01|15.0|57.0|0.13356|0.04548 +2016-07-01|15.0|58.0|0.01883|0.04772 +2016-07-01|15.0|59.0|-0.08781|0.05 +2016-07-01|15.0|60.0|-0.18652|0.05229 +2016-07-01|15.0|61.0|-0.27755|0.05454 +2016-07-01|15.0|62.0|-0.36127|0.05671 +2016-07-01|15.0|63.0|-0.43807|0.05878 +2016-07-01|15.0|64.0|-0.50843|0.06071 +2016-07-01|15.0|65.0|-0.57282|0.06247 +2016-07-01|15.0|66.0|-0.63172|0.06406 +2016-07-01|15.0|67.0|-0.68558|0.06545 +2016-07-01|15.0|68.0|-0.7348|0.06664 +2016-07-01|15.0|69.0|-0.77976|0.06762 +2016-07-01|15.0|70.0|-0.82075|0.06838 +2016-07-01|15.0|71.0|-0.85799|0.06893 +2016-07-01|15.0|72.0|-0.89164|0.06928 +2016-07-01|15.0|73.0|-0.92177|0.06942 +2016-07-01|15.0|74.0|-0.9484|0.06938 +2016-07-01|15.0|75.0|-0.97148|0.06915 +2016-07-01|15.0|76.0|-0.99092|0.06875 +2016-07-01|15.0|77.0|-1.00657|0.06819 +2016-07-01|15.0|78.0|-1.01829|0.06748 +2016-07-01|15.0|79.0|-1.02593|0.06662 +2016-07-01|15.0|80.0|-1.02935|0.06562 +2016-07-01|15.0|81.0|-1.02845|0.06449 +2016-07-01|15.0|82.0|-1.02317|0.06321 +2016-07-01|15.0|83.0|-1.01354|0.06181 +2016-07-01|15.0|84.0|-0.99964|0.06026 +2016-07-01|15.0|85.0|-0.98168|0.05856 +2016-07-01|15.0|86.0|-0.95993|0.05671 +2016-07-01|15.0|87.0|-0.93479|0.0547 +2016-07-01|15.0|88.0|-0.90678|0.05251 +2016-07-01|15.0|89.0|-0.87649|0.05014 +2016-07-01|15.0|90.0|-0.84464|0.04756 +2016-07-01|15.0|91.0|-0.81203|0.04478 +2016-07-01|15.0|92.0|-0.77953|0.04177 +2016-07-01|15.0|93.0|-0.74809|0.03853 +2016-07-01|15.0|94.0|-0.71868|0.03505 +2016-07-01|15.0|95.0|-0.69232|0.03131 +2016-07-01|15.0|96.0|-0.67|0.02733 +2016-07-01|15.0|97.0|-0.6527|0.02309 +2016-07-01|15.0|98.0|-0.64136|0.0186 +2016-07-01|15.0|99.0|-0.63682|0.01387 +2016-07-01|15.0|100.0|-0.63985|0.0089 +2016-07-01|15.0|101.0|-0.65109|0.00372 +2016-07-01|15.0|102.0|-0.67103|-0.00166 +2016-07-01|15.0|103.0|-0.7|-0.00721 +2016-07-01|15.0|104.0|-0.73818|-0.01291 +2016-07-01|15.0|105.0|-0.78553|-0.01873 +2016-07-01|15.0|106.0|-0.84186|-0.02462 +2016-07-01|15.0|107.0|-0.90675|-0.03056 +2016-07-01|15.0|108.0|-0.9796|-0.03651 +2016-07-01|15.0|109.0|-1.05963|-0.04242 +2016-07-01|15.0|110.0|-1.14587|-0.04825 +2016-07-01|15.0|111.0|-1.2372|-0.05397 +2016-07-01|15.0|112.0|-1.33236|-0.05952 +2016-07-01|15.0|113.0|-1.42995|-0.06488 +2016-07-01|15.0|114.0|-1.52849|-0.06999 +2016-07-01|15.0|115.0|-1.62643|-0.07484 +2016-07-01|15.0|116.0|-1.72217|-0.07937 +2016-07-01|15.0|117.0|-1.81412|-0.08358 +2016-07-01|15.0|118.0|-1.90067|-0.08743 +2016-07-01|15.0|119.0|-1.9803|-0.0909 +2016-07-01|15.0|120.0|-2.05153|-0.09398 +2016-07-01|15.0|121.0|-2.11298|-0.09666 +2016-07-01|15.0|122.0|-2.16341|-0.09893 +2016-07-01|15.0|123.0|-2.20168|-0.1008 +2016-07-01|15.0|124.0|-2.22683|-0.10226 +2016-07-01|15.0|125.0|-2.23803|-0.10332 +2016-07-01|15.0|126.0|-2.23466|-0.104 +2016-07-01|15.0|127.0|-2.21621|-0.1043 +2016-07-01|15.0|128.0|-2.18239|-0.10424 +2016-07-01|15.0|129.0|-2.13304|-0.10385 +2016-07-01|15.0|130.0|-2.06816|-0.10314 +2016-07-01|15.0|131.0|-1.9879|-0.10213 +2016-07-01|15.0|132.0|-1.89252|-0.10085 +2016-07-01|15.0|133.0|-1.78243|-0.09932 +2016-07-01|15.0|134.0|-1.6581|-0.09755 +2016-07-01|15.0|135.0|-1.52009|-0.09558 +2016-07-01|15.0|136.0|-1.36904|-0.09342 +2016-07-01|15.0|137.0|-1.20561|-0.0911 +2016-07-01|15.0|138.0|-1.0305|-0.08862 +2016-07-01|15.0|139.0|-0.84443|-0.08602 +2016-07-01|15.0|140.0|-0.64811|-0.08331 +2016-07-01|15.0|141.0|-0.44224|-0.08049 +2016-07-01|15.0|142.0|-0.2275|-0.0776 +2016-07-01|15.0|143.0|-0.00454|-0.07464 +2016-07-01|15.0|144.0|0.22602|-0.07161 +2016-07-01|15.0|145.0|0.46359|-0.06854 +2016-07-01|15.0|146.0|0.70763|-0.06544 +2016-07-01|15.0|147.0|0.9576|-0.0623 +2016-07-01|15.0|148.0|1.21303|-0.05915 +2016-07-01|15.0|149.0|1.47344|-0.05598 +2016-07-01|15.0|150.0|1.73835|-0.05281 +2016-07-01|15.0|151.0|2.00732|-0.04964 +2016-07-01|15.0|152.0|2.27988|-0.04649 +2016-07-01|15.0|153.0|2.55554|-0.04335 +2016-07-01|15.0|154.0|2.83381|-0.04024 +2016-07-01|15.0|155.0|3.11412|-0.03717 +2016-07-01|15.0|156.0|3.39592|-0.03413 +2016-07-01|15.0|157.0|3.67856|-0.03115 +2016-07-01|15.0|158.0|3.96137|-0.02822 +2016-07-01|15.0|159.0|4.24362|-0.02536 +2016-07-01|15.0|160.0|4.52452|-0.02258 +2016-07-01|15.0|161.0|4.80326|-0.01987 +2016-07-01|15.0|162.0|5.07896|-0.01726 +2016-07-01|15.0|163.0|5.3507|-0.01475 +2016-07-01|15.0|164.0|5.61756|-0.01235 +2016-07-01|15.0|165.0|5.87859|-0.01006 +2016-07-01|15.0|166.0|6.13283|-0.0079 +2016-07-01|15.0|167.0|6.37935|-0.00586 +2016-07-01|15.0|168.0|6.61722|-0.00396 +2016-07-01|15.0|169.0|6.84559|-0.00219 +2016-07-01|15.0|170.0|7.06362|-5.8E-4 +2016-07-01|15.0|171.0|7.27059|8.9E-4 +2016-07-01|15.0|172.0|7.46583|0.0022 +2016-07-01|15.0|173.0|7.64878|0.00336 +2016-07-01|15.0|174.0|7.819|0.00436 +2016-07-01|15.0|175.0|7.97615|0.0052 +2016-07-01|15.0|176.0|8.12004|0.00589 +2016-07-01|15.0|177.0|8.2506|0.00641 +2016-07-01|15.0|178.0|8.36789|0.00677 +2016-07-01|15.0|179.0|8.47211|0.00698 +2016-07-01|15.0|-1.0|-1.8342|0.09128 +2016-07-01|15.0|-2.0|-2.08571|0.09235 +2016-07-01|15.0|-3.0|-2.34817|0.09354 +2016-07-01|15.0|-4.0|-2.62213|0.09484 +2016-07-01|15.0|-5.0|-2.90804|0.09622 +2016-07-01|15.0|-6.0|-3.20619|0.09768 +2016-07-01|15.0|-7.0|-3.51679|0.09918 +2016-07-01|15.0|-8.0|-3.83987|0.10071 +2016-07-01|15.0|-9.0|-4.17535|0.10225 +2016-07-01|15.0|-10.0|-4.52298|0.10378 +2016-07-01|15.0|-11.0|-4.8824|0.10528 +2016-07-01|15.0|-12.0|-5.2531|0.10675 +2016-07-01|15.0|-13.0|-5.63446|0.10817 +2016-07-01|15.0|-14.0|-6.02573|0.10953 +2016-07-01|15.0|-15.0|-6.42606|0.11082 +2016-07-01|15.0|-16.0|-6.83451|0.11203 +2016-07-01|15.0|-17.0|-7.25007|0.11316 +2016-07-01|15.0|-18.0|-7.67163|0.1142 +2016-07-01|15.0|-19.0|-8.09805|0.11514 +2016-07-01|15.0|-20.0|-8.52813|0.11598 +2016-07-01|15.0|-21.0|-8.96065|0.11672 +2016-07-01|15.0|-22.0|-9.39436|0.11735 +2016-07-01|15.0|-23.0|-9.828|0.11787 +2016-07-01|15.0|-24.0|-10.26029|0.11826 +2016-07-01|15.0|-25.0|-10.68998|0.11853 +2016-07-01|15.0|-26.0|-11.11579|0.11866 +2016-07-01|15.0|-27.0|-11.53647|0.11864 +2016-07-01|15.0|-28.0|-11.95079|0.11846 +2016-07-01|15.0|-29.0|-12.3575|0.1181 +2016-07-01|15.0|-30.0|-12.75541|0.11756 +2016-07-01|15.0|-31.0|-13.1433|0.11682 +2016-07-01|15.0|-32.0|-13.51999|0.11587 +2016-07-01|15.0|-33.0|-13.8843|0.11468 +2016-07-01|15.0|-34.0|-14.23505|0.11324 +2016-07-01|15.0|-35.0|-14.57111|0.11154 +2016-07-01|15.0|-36.0|-14.8913|0.10956 +2016-07-01|15.0|-37.0|-15.1945|0.10729 +2016-07-01|15.0|-38.0|-15.47958|0.10472 +2016-07-01|15.0|-39.0|-15.74542|0.10183 +2016-07-01|15.0|-40.0|-15.99092|0.09863 +2016-07-01|15.0|-41.0|-16.215|0.0951 +2016-07-01|15.0|-42.0|-16.41661|0.09124 +2016-07-01|15.0|-43.0|-16.59473|0.08705 +2016-07-01|15.0|-44.0|-16.74836|0.08253 +2016-07-01|15.0|-45.0|-16.87657|0.0777 +2016-07-01|15.0|-46.0|-16.97847|0.07256 +2016-07-01|15.0|-47.0|-17.05324|0.06712 +2016-07-01|15.0|-48.0|-17.10013|0.06139 +2016-07-01|15.0|-49.0|-17.11846|0.05541 +2016-07-01|15.0|-50.0|-17.10766|0.04917 +2016-07-01|15.0|-51.0|-17.06723|0.04271 +2016-07-01|15.0|-52.0|-16.99681|0.03605 +2016-07-01|15.0|-53.0|-16.89613|0.02922 +2016-07-01|15.0|-54.0|-16.76504|0.02224 +2016-07-01|15.0|-55.0|-16.60353|0.01513 +2016-07-01|15.0|-56.0|-16.4117|0.00793 +2016-07-01|15.0|-57.0|-16.18979|6.7E-4 +2016-07-01|15.0|-58.0|-15.93816|-0.00664 +2016-07-01|15.0|-59.0|-15.6573|-0.01396 +2016-07-01|15.0|-60.0|-15.34784|-0.02127 +2016-07-01|15.0|-61.0|-15.01052|-0.02853 +2016-07-01|15.0|-62.0|-14.64619|-0.03574 +2016-07-01|15.0|-63.0|-14.25582|-0.04285 +2016-07-01|15.0|-64.0|-13.8405|-0.04986 +2016-07-01|15.0|-65.0|-13.40137|-0.05673 +2016-07-01|15.0|-66.0|-12.9397|-0.06345 +2016-07-01|15.0|-67.0|-12.45681|-0.06999 +2016-07-01|15.0|-68.0|-11.9541|-0.07634 +2016-07-01|15.0|-69.0|-11.43303|-0.08248 +2016-07-01|15.0|-70.0|-10.89508|-0.08839 +2016-07-01|15.0|-71.0|-10.34181|-0.09405 +2016-07-01|15.0|-72.0|-9.7748|-0.09944 +2016-07-01|15.0|-73.0|-9.19565|-0.10455 +2016-07-01|15.0|-74.0|-8.60598|-0.10936 +2016-07-01|15.0|-75.0|-8.00743|-0.11386 +2016-07-01|15.0|-76.0|-7.40165|-0.11802 +2016-07-01|15.0|-77.0|-6.79029|-0.12183 +2016-07-01|15.0|-78.0|-6.17501|-0.12529 +2016-07-01|15.0|-79.0|-5.55745|-0.12837 +2016-07-01|15.0|-80.0|-4.93925|-0.13107 +2016-07-01|15.0|-81.0|-4.32205|-0.13337 +2016-07-01|15.0|-82.0|-3.70746|-0.13528 +2016-07-01|15.0|-83.0|-3.09706|-0.13679 +2016-07-01|15.0|-84.0|-2.49241|-0.1379 +2016-07-01|15.0|-85.0|-1.89504|-0.13861 +2016-07-01|15.0|-86.0|-1.30642|-0.13892 +2016-07-01|15.0|-87.0|-0.72799|-0.13885 +2016-07-01|15.0|-88.0|-0.16111|-0.13841 +2016-07-01|15.0|-89.0|0.39292|-0.13761 +2016-07-01|15.0|-90.0|0.93289|-0.13648 +2016-07-01|15.0|-91.0|1.45766|-0.13503 +2016-07-01|15.0|-92.0|1.96622|-0.13328 +2016-07-01|15.0|-93.0|2.45762|-0.13127 +2016-07-01|15.0|-94.0|2.93107|-0.12903 +2016-07-01|15.0|-95.0|3.38587|-0.12657 +2016-07-01|15.0|-96.0|3.82147|-0.12394 +2016-07-01|15.0|-97.0|4.23743|-0.12116 +2016-07-01|15.0|-98.0|4.63347|-0.11826 +2016-07-01|15.0|-99.0|5.00942|-0.11528 +2016-07-01|15.0|-100.0|5.36526|-0.11223 +2016-07-01|15.0|-101.0|5.7011|-0.10915 +2016-07-01|15.0|-102.0|6.01717|-0.10607 +2016-07-01|15.0|-103.0|6.31384|-0.103 +2016-07-01|15.0|-104.0|6.59157|-0.09996 +2016-07-01|15.0|-105.0|6.85094|-0.09697 +2016-07-01|15.0|-106.0|7.09263|-0.09406 +2016-07-01|15.0|-107.0|7.31738|-0.09122 +2016-07-01|15.0|-108.0|7.52603|-0.08847 +2016-07-01|15.0|-109.0|7.71944|-0.08582 +2016-07-01|15.0|-110.0|7.89853|-0.08327 +2016-07-01|15.0|-111.0|8.06423|-0.08082 +2016-07-01|15.0|-112.0|8.2175|-0.07847 +2016-07-01|15.0|-113.0|8.35928|-0.07623 +2016-07-01|15.0|-114.0|8.49049|-0.07408 +2016-07-01|15.0|-115.0|8.61201|-0.07202 +2016-07-01|15.0|-116.0|8.72467|-0.07004 +2016-07-01|15.0|-117.0|8.82927|-0.06815 +2016-07-01|15.0|-118.0|8.92651|-0.06632 +2016-07-01|15.0|-119.0|9.01703|-0.06456 +2016-07-01|15.0|-120.0|9.10137|-0.06285 +2016-07-01|15.0|-121.0|9.18001|-0.06119 +2016-07-01|15.0|-122.0|9.25332|-0.05958 +2016-07-01|15.0|-123.0|9.32159|-0.058 +2016-07-01|15.0|-124.0|9.38503|-0.05646 +2016-07-01|15.0|-125.0|9.44376|-0.05494 +2016-07-01|15.0|-126.0|9.49785|-0.05345 +2016-07-01|15.0|-127.0|9.54727|-0.05199 +2016-07-01|15.0|-128.0|9.59198|-0.05055 +2016-07-01|15.0|-129.0|9.63185|-0.04913 +2016-07-01|15.0|-130.0|9.66677|-0.04774 +2016-07-01|15.0|-131.0|9.69658|-0.04637 +2016-07-01|15.0|-132.0|9.72112|-0.04503 +2016-07-01|15.0|-133.0|9.74025|-0.04371 +2016-07-01|15.0|-134.0|9.75384|-0.04243 +2016-07-01|15.0|-135.0|9.76181|-0.04117 +2016-07-01|15.0|-136.0|9.76411|-0.03995 +2016-07-01|15.0|-137.0|9.76074|-0.03876 +2016-07-01|15.0|-138.0|9.75178|-0.03761 +2016-07-01|15.0|-139.0|9.73736|-0.03648 +2016-07-01|15.0|-140.0|9.71768|-0.03539 +2016-07-01|15.0|-141.0|9.69303|-0.03432 +2016-07-01|15.0|-142.0|9.66373|-0.03328 +2016-07-01|15.0|-143.0|9.63023|-0.03226 +2016-07-01|15.0|-144.0|9.59298|-0.03125 +2016-07-01|15.0|-145.0|9.55254|-0.03026 +2016-07-01|15.0|-146.0|9.50949|-0.02927 +2016-07-01|15.0|-147.0|9.46445|-0.02828 +2016-07-01|15.0|-148.0|9.41808|-0.02729 +2016-07-01|15.0|-149.0|9.37106|-0.02628 +2016-07-01|15.0|-150.0|9.32405|-0.02526 +2016-07-01|15.0|-151.0|9.27772|-0.02421 +2016-07-01|15.0|-152.0|9.23271|-0.02313 +2016-07-01|15.0|-153.0|9.18963|-0.02202 +2016-07-01|15.0|-154.0|9.14901|-0.02088 +2016-07-01|15.0|-155.0|9.11135|-0.0197 +2016-07-01|15.0|-156.0|9.07705|-0.01848 +2016-07-01|15.0|-157.0|9.04643|-0.01722 +2016-07-01|15.0|-158.0|9.01971|-0.01593 +2016-07-01|15.0|-159.0|8.99701|-0.0146 +2016-07-01|15.0|-160.0|8.97834|-0.01324 +2016-07-01|15.0|-161.0|8.96358|-0.01185 +2016-07-01|15.0|-162.0|8.95251|-0.01045 +2016-07-01|15.0|-163.0|8.94478|-0.00904 +2016-07-01|15.0|-164.0|8.93992|-0.00762 +2016-07-01|15.0|-165.0|8.93737|-0.00621 +2016-07-01|15.0|-166.0|8.93644|-0.00482 +2016-07-01|15.0|-167.0|8.93636|-0.00346 +2016-07-01|15.0|-168.0|8.93626|-0.00213 +2016-07-01|15.0|-169.0|8.9352|-8.5E-4 +2016-07-01|15.0|-170.0|8.93218|3.6E-4 +2016-07-01|15.0|-171.0|8.92617|0.00151 +2016-07-01|15.0|-172.0|8.91608|0.00257 +2016-07-01|15.0|-173.0|8.90083|0.00354 +2016-07-01|15.0|-174.0|8.87933|0.00441 +2016-07-01|15.0|-175.0|8.85053|0.00517 +2016-07-01|15.0|-176.0|8.8134|0.00581 +2016-07-01|15.0|-177.0|8.76699|0.00633 +2016-07-01|15.0|-178.0|8.7104|0.00671 +2016-07-01|15.0|-179.0|8.64285|0.00694 +2016-07-01|16.0|0.0|-1.44053|0.08971 +2016-07-01|16.0|1.0|-1.21203|0.08888 +2016-07-01|16.0|2.0|-0.99239|0.08823 +2016-07-01|16.0|3.0|-0.78078|0.08775 +2016-07-01|16.0|4.0|-0.57631|0.08746 +2016-07-01|16.0|5.0|-0.37813|0.08736 +2016-07-01|16.0|6.0|-0.18537|0.08744 +2016-07-01|16.0|7.0|0.00279|0.08771 +2016-07-01|16.0|8.0|0.18711|0.08815 +2016-07-01|16.0|9.0|0.36827|0.08874 +2016-07-01|16.0|10.0|0.54685|0.08947 +2016-07-01|16.0|11.0|0.7233|0.09032 +2016-07-01|16.0|12.0|0.89797|0.09124 +2016-07-01|16.0|13.0|1.07102|0.09222 +2016-07-01|16.0|14.0|1.24248|0.09322 +2016-07-01|16.0|15.0|1.41223|0.09419 +2016-07-01|16.0|16.0|1.57997|0.09511 +2016-07-01|16.0|17.0|1.74525|0.09593 +2016-07-01|16.0|18.0|1.90747|0.09662 +2016-07-01|16.0|19.0|2.06588|0.09713 +2016-07-01|16.0|20.0|2.21961|0.09744 +2016-07-01|16.0|21.0|2.36768|0.0975 +2016-07-01|16.0|22.0|2.50902|0.0973 +2016-07-01|16.0|23.0|2.64247|0.0968 +2016-07-01|16.0|24.0|2.76687|0.09599 +2016-07-01|16.0|25.0|2.88102|0.09486 +2016-07-01|16.0|26.0|2.98373|0.09339 +2016-07-01|16.0|27.0|3.07388|0.0916 +2016-07-01|16.0|28.0|3.15041|0.08948 +2016-07-01|16.0|29.0|3.21234|0.08705 +2016-07-01|16.0|30.0|3.25886|0.08435 +2016-07-01|16.0|31.0|3.28927|0.08138 +2016-07-01|16.0|32.0|3.30308|0.0782 +2016-07-01|16.0|33.0|3.29995|0.07483 +2016-07-01|16.0|34.0|3.27977|0.07133 +2016-07-01|16.0|35.0|3.24265|0.06775 +2016-07-01|16.0|36.0|3.18888|0.06413 +2016-07-01|16.0|37.0|3.11901|0.06053 +2016-07-01|16.0|38.0|3.03377|0.05701 +2016-07-01|16.0|39.0|2.93409|0.05361 +2016-07-01|16.0|40.0|2.8211|0.0504 +2016-07-01|16.0|41.0|2.69607|0.04741 +2016-07-01|16.0|42.0|2.56043|0.0447 +2016-07-01|16.0|43.0|2.4157|0.04229 +2016-07-01|16.0|44.0|2.2635|0.04023 +2016-07-01|16.0|45.0|2.10548|0.03854 +2016-07-01|16.0|46.0|1.94332|0.03723 +2016-07-01|16.0|47.0|1.77867|0.03632 +2016-07-01|16.0|48.0|1.61314|0.0358 +2016-07-01|16.0|49.0|1.44826|0.03568 +2016-07-01|16.0|50.0|1.28546|0.03593 +2016-07-01|16.0|51.0|1.12602|0.03654 +2016-07-01|16.0|52.0|0.97111|0.03749 +2016-07-01|16.0|53.0|0.82171|0.03873 +2016-07-01|16.0|54.0|0.67863|0.04024 +2016-07-01|16.0|55.0|0.54251|0.04197 +2016-07-01|16.0|56.0|0.41382|0.04388 +2016-07-01|16.0|57.0|0.29285|0.04593 +2016-07-01|16.0|58.0|0.17975|0.04807 +2016-07-01|16.0|59.0|0.07449|0.05026 +2016-07-01|16.0|60.0|-0.02307|0.05246 +2016-07-01|16.0|61.0|-0.11318|0.05462 +2016-07-01|16.0|62.0|-0.19619|0.05672 +2016-07-01|16.0|63.0|-0.2725|0.05871 +2016-07-01|16.0|64.0|-0.34257|0.06057 +2016-07-01|16.0|65.0|-0.40687|0.06229 +2016-07-01|16.0|66.0|-0.46589|0.06382 +2016-07-01|16.0|67.0|-0.52008|0.06517 +2016-07-01|16.0|68.0|-0.56987|0.06632 +2016-07-01|16.0|69.0|-0.61562|0.06726 +2016-07-01|16.0|70.0|-0.65765|0.068 +2016-07-01|16.0|71.0|-0.6962|0.06853 +2016-07-01|16.0|72.0|-0.73145|0.06886 +2016-07-01|16.0|73.0|-0.76349|0.06899 +2016-07-01|16.0|74.0|-0.79237|0.06893 +2016-07-01|16.0|75.0|-0.81806|0.06869 +2016-07-01|16.0|76.0|-0.84049|0.06828 +2016-07-01|16.0|77.0|-0.85955|0.0677 +2016-07-01|16.0|78.0|-0.87511|0.06698 +2016-07-01|16.0|79.0|-0.88705|0.0661 +2016-07-01|16.0|80.0|-0.89524|0.06509 +2016-07-01|16.0|81.0|-0.89959|0.06393 +2016-07-01|16.0|82.0|-0.90007|0.06264 +2016-07-01|16.0|83.0|-0.89668|0.06121 +2016-07-01|16.0|84.0|-0.88953|0.05964 +2016-07-01|16.0|85.0|-0.8788|0.05792 +2016-07-01|16.0|86.0|-0.86477|0.05605 +2016-07-01|16.0|87.0|-0.8478|0.05402 +2016-07-01|16.0|88.0|-0.82838|0.05181 +2016-07-01|16.0|89.0|-0.80709|0.04942 +2016-07-01|16.0|90.0|-0.7846|0.04683 +2016-07-01|16.0|91.0|-0.76167|0.04404 +2016-07-01|16.0|92.0|-0.73913|0.04102 +2016-07-01|16.0|93.0|-0.71788|0.03778 +2016-07-01|16.0|94.0|-0.69884|0.0343 +2016-07-01|16.0|95.0|-0.68296|0.03058 +2016-07-01|16.0|96.0|-0.67121|0.02661 +2016-07-01|16.0|97.0|-0.6645|0.0224 +2016-07-01|16.0|98.0|-0.66371|0.01794 +2016-07-01|16.0|99.0|-0.66965|0.01325 +2016-07-01|16.0|100.0|-0.68303|0.00834 +2016-07-01|16.0|101.0|-0.70444|0.00321 +2016-07-01|16.0|102.0|-0.73435|-0.00211 +2016-07-01|16.0|103.0|-0.77304|-0.00759 +2016-07-01|16.0|104.0|-0.82068|-0.01321 +2016-07-01|16.0|105.0|-0.8772|-0.01895 +2016-07-01|16.0|106.0|-0.94239|-0.02476 +2016-07-01|16.0|107.0|-1.01582|-0.03061 +2016-07-01|16.0|108.0|-1.0969|-0.03646 +2016-07-01|16.0|109.0|-1.18484|-0.04228 +2016-07-01|16.0|110.0|-1.2787|-0.04802 +2016-07-01|16.0|111.0|-1.37735|-0.05364 +2016-07-01|16.0|112.0|-1.47955|-0.0591 +2016-07-01|16.0|113.0|-1.58394|-0.06437 +2016-07-01|16.0|114.0|-1.68904|-0.0694 +2016-07-01|16.0|115.0|-1.79335|-0.07416 +2016-07-01|16.0|116.0|-1.89529|-0.07862 +2016-07-01|16.0|117.0|-1.99327|-0.08276 +2016-07-01|16.0|118.0|-2.08575|-0.08654 +2016-07-01|16.0|119.0|-2.1712|-0.08996 +2016-07-01|16.0|120.0|-2.24818|-0.093 +2016-07-01|16.0|121.0|-2.31531|-0.09564 +2016-07-01|16.0|122.0|-2.37137|-0.09788 +2016-07-01|16.0|123.0|-2.41524|-0.09973 +2016-07-01|16.0|124.0|-2.44594|-0.10118 +2016-07-01|16.0|125.0|-2.46267|-0.10224 +2016-07-01|16.0|126.0|-2.46477|-0.10293 +2016-07-01|16.0|127.0|-2.45174|-0.10325 +2016-07-01|16.0|128.0|-2.42326|-0.10322 +2016-07-01|16.0|129.0|-2.37916|-0.10286 +2016-07-01|16.0|130.0|-2.31941|-0.10219 +2016-07-01|16.0|131.0|-2.24413|-0.10123 +2016-07-01|16.0|132.0|-2.15357|-0.10001 +2016-07-01|16.0|133.0|-2.04808|-0.09853 +2016-07-01|16.0|134.0|-1.92812|-0.09683 +2016-07-01|16.0|135.0|-1.79421|-0.09493 +2016-07-01|16.0|136.0|-1.64695|-0.09285 +2016-07-01|16.0|137.0|-1.48699|-0.0906 +2016-07-01|16.0|138.0|-1.315|-0.0882 +2016-07-01|16.0|139.0|-1.13166|-0.08568 +2016-07-01|16.0|140.0|-0.93766|-0.08305 +2016-07-01|16.0|141.0|-0.7337|-0.08032 +2016-07-01|16.0|142.0|-0.52044|-0.07751 +2016-07-01|16.0|143.0|-0.29852|-0.07463 +2016-07-01|16.0|144.0|-0.06856|-0.07169 +2016-07-01|16.0|145.0|0.16887|-0.0687 +2016-07-01|16.0|146.0|0.4132|-0.06567 +2016-07-01|16.0|147.0|0.66391|-0.06262 +2016-07-01|16.0|148.0|0.92051|-0.05954 +2016-07-01|16.0|149.0|1.18251|-0.05645 +2016-07-01|16.0|150.0|1.44942|-0.05336 +2016-07-01|16.0|151.0|1.72079|-0.05027 +2016-07-01|16.0|152.0|1.99613|-0.04719 +2016-07-01|16.0|153.0|2.27494|-0.04412 +2016-07-01|16.0|154.0|2.55671|-0.04109 +2016-07-01|16.0|155.0|2.84088|-0.03809 +2016-07-01|16.0|156.0|3.12687|-0.03513 +2016-07-01|16.0|157.0|3.41402|-0.03222 +2016-07-01|16.0|158.0|3.70166|-0.02937 +2016-07-01|16.0|159.0|3.98905|-0.02659 +2016-07-01|16.0|160.0|4.27541|-0.02388 +2016-07-01|16.0|161.0|4.5599|-0.02126 +2016-07-01|16.0|162.0|4.84164|-0.01874 +2016-07-01|16.0|163.0|5.11973|-0.01631 +2016-07-01|16.0|164.0|5.39323|-0.01399 +2016-07-01|16.0|165.0|5.66118|-0.0118 +2016-07-01|16.0|166.0|5.92263|-0.00972 +2016-07-01|16.0|167.0|6.17663|-0.00777 +2016-07-01|16.0|168.0|6.42225|-0.00596 +2016-07-01|16.0|169.0|6.65863|-0.0043 +2016-07-01|16.0|170.0|6.88492|-0.00277 +2016-07-01|16.0|171.0|7.10036|-0.0014 +2016-07-01|16.0|172.0|7.30429|-1.8E-4 +2016-07-01|16.0|173.0|7.49611|8.8E-4 +2016-07-01|16.0|174.0|7.67536|0.00179 +2016-07-01|16.0|175.0|7.84168|0.00255 +2016-07-01|16.0|176.0|7.99484|0.00315 +2016-07-01|16.0|177.0|8.13472|0.00359 +2016-07-01|16.0|178.0|8.26138|0.00388 +2016-07-01|16.0|179.0|8.37497|0.00402 +2016-07-01|16.0|-1.0|-1.67868|0.09069 +2016-07-01|16.0|-2.0|-1.9272|0.09181 +2016-07-01|16.0|-3.0|-2.18673|0.09305 +2016-07-01|16.0|-4.0|-2.45781|0.0944 +2016-07-01|16.0|-5.0|-2.74084|0.09583 +2016-07-01|16.0|-6.0|-3.03613|0.09732 +2016-07-01|16.0|-7.0|-3.34383|0.09886 +2016-07-01|16.0|-8.0|-3.66397|0.10041 +2016-07-01|16.0|-9.0|-3.99644|0.10198 +2016-07-01|16.0|-10.0|-4.34098|0.10353 +2016-07-01|16.0|-11.0|-4.6972|0.10505 +2016-07-01|16.0|-12.0|-5.06459|0.10654 +2016-07-01|16.0|-13.0|-5.44251|0.10797 +2016-07-01|16.0|-14.0|-5.83021|0.10934 +2016-07-01|16.0|-15.0|-6.22684|0.11063 +2016-07-01|16.0|-16.0|-6.63147|0.11185 +2016-07-01|16.0|-17.0|-7.04308|0.11299 +2016-07-01|16.0|-18.0|-7.46059|0.11404 +2016-07-01|16.0|-19.0|-7.88288|0.11499 +2016-07-01|16.0|-20.0|-8.30877|0.11585 +2016-07-01|16.0|-21.0|-8.73707|0.11661 +2016-07-01|16.0|-22.0|-9.16656|0.11727 +2016-07-01|16.0|-23.0|-9.59602|0.11782 +2016-07-01|16.0|-24.0|-10.02422|0.11825 +2016-07-01|16.0|-25.0|-10.44995|0.11857 +2016-07-01|16.0|-26.0|-10.87199|0.11876 +2016-07-01|16.0|-27.0|-11.28913|0.11881 +2016-07-01|16.0|-28.0|-11.70019|0.11871 +2016-07-01|16.0|-29.0|-12.104|0.11845 +2016-07-01|16.0|-30.0|-12.4994|0.11802 +2016-07-01|16.0|-31.0|-12.88523|0.11739 +2016-07-01|16.0|-32.0|-13.26037|0.11657 +2016-07-01|16.0|-33.0|-13.62368|0.11553 +2016-07-01|16.0|-34.0|-13.97406|0.11425 +2016-07-01|16.0|-35.0|-14.31038|0.11272 +2016-07-01|16.0|-36.0|-14.63154|0.11092 +2016-07-01|16.0|-37.0|-14.93645|0.10885 +2016-07-01|16.0|-38.0|-15.22399|0.10648 +2016-07-01|16.0|-39.0|-15.4931|0.10381 +2016-07-01|16.0|-40.0|-15.74268|0.10082 +2016-07-01|16.0|-41.0|-15.97168|0.09752 +2016-07-01|16.0|-42.0|-16.17904|0.09389 +2016-07-01|16.0|-43.0|-16.36374|0.08993 +2016-07-01|16.0|-44.0|-16.52479|0.08565 +2016-07-01|16.0|-45.0|-16.66124|0.08105 +2016-07-01|16.0|-46.0|-16.77217|0.07614 +2016-07-01|16.0|-47.0|-16.85673|0.07092 +2016-07-01|16.0|-48.0|-16.91415|0.06541 +2016-07-01|16.0|-49.0|-16.9437|0.05963 +2016-07-01|16.0|-50.0|-16.94475|0.05359 +2016-07-01|16.0|-51.0|-16.91678|0.04732 +2016-07-01|16.0|-52.0|-16.85934|0.04082 +2016-07-01|16.0|-53.0|-16.7721|0.03414 +2016-07-01|16.0|-54.0|-16.65487|0.02729 +2016-07-01|16.0|-55.0|-16.50753|0.0203 +2016-07-01|16.0|-56.0|-16.33014|0.01319 +2016-07-01|16.0|-57.0|-16.12284|0.006 +2016-07-01|16.0|-58.0|-15.88593|-0.00126 +2016-07-01|16.0|-59.0|-15.61983|-0.00855 +2016-07-01|16.0|-60.0|-15.32508|-0.01585 +2016-07-01|16.0|-61.0|-15.00234|-0.02313 +2016-07-01|16.0|-62.0|-14.6524|-0.03036 +2016-07-01|16.0|-63.0|-14.27615|-0.03754 +2016-07-01|16.0|-64.0|-13.87461|-0.04462 +2016-07-01|16.0|-65.0|-13.44885|-0.05158 +2016-07-01|16.0|-66.0|-13.00009|-0.05841 +2016-07-01|16.0|-67.0|-12.52957|-0.06509 +2016-07-01|16.0|-68.0|-12.03865|-0.07158 +2016-07-01|16.0|-69.0|-11.52871|-0.07788 +2016-07-01|16.0|-70.0|-11.00123|-0.08396 +2016-07-01|16.0|-71.0|-10.45769|-0.0898 +2016-07-01|16.0|-72.0|-9.89964|-0.09538 +2016-07-01|16.0|-73.0|-9.32865|-0.10069 +2016-07-01|16.0|-74.0|-8.74631|-0.1057 +2016-07-01|16.0|-75.0|-8.15423|-0.1104 +2016-07-01|16.0|-76.0|-7.55405|-0.11477 +2016-07-01|16.0|-77.0|-6.9474|-0.11879 +2016-07-01|16.0|-78.0|-6.33593|-0.12246 +2016-07-01|16.0|-79.0|-5.72127|-0.12575 +2016-07-01|16.0|-80.0|-5.10508|-0.12865 +2016-07-01|16.0|-81.0|-4.48897|-0.13116 +2016-07-01|16.0|-82.0|-3.87458|-0.13326 +2016-07-01|16.0|-83.0|-3.26349|-0.13496 +2016-07-01|16.0|-84.0|-2.6573|-0.13625 +2016-07-01|16.0|-85.0|-2.05753|-0.13713 +2016-07-01|16.0|-86.0|-1.46571|-0.13762 +2016-07-01|16.0|-87.0|-0.88328|-0.1377 +2016-07-01|16.0|-88.0|-0.31164|-0.13741 +2016-07-01|16.0|-89.0|0.24787|-0.13675 +2016-07-01|16.0|-90.0|0.794|-0.13575 +2016-07-01|16.0|-91.0|1.32557|-0.13442 +2016-07-01|16.0|-92.0|1.8415|-0.13278 +2016-07-01|16.0|-93.0|2.34083|-0.13087 +2016-07-01|16.0|-94.0|2.82269|-0.12872 +2016-07-01|16.0|-95.0|3.28634|-0.12635 +2016-07-01|16.0|-96.0|3.73117|-0.12379 +2016-07-01|16.0|-97.0|4.1567|-0.12107 +2016-07-01|16.0|-98.0|4.56258|-0.11823 +2016-07-01|16.0|-99.0|4.94859|-0.11529 +2016-07-01|16.0|-100.0|5.31466|-0.11229 +2016-07-01|16.0|-101.0|5.66084|-0.10924 +2016-07-01|16.0|-102.0|5.98731|-0.10619 +2016-07-01|16.0|-103.0|6.29437|-0.10314 +2016-07-01|16.0|-104.0|6.58246|-0.10013 +2016-07-01|16.0|-105.0|6.8521|-0.09716 +2016-07-01|16.0|-106.0|7.10392|-0.09426 +2016-07-01|16.0|-107.0|7.33862|-0.09144 +2016-07-01|16.0|-108.0|7.55698|-0.0887 +2016-07-01|16.0|-109.0|7.75984|-0.08606 +2016-07-01|16.0|-110.0|7.94808|-0.08353 +2016-07-01|16.0|-111.0|8.1226|-0.08109 +2016-07-01|16.0|-112.0|8.28431|-0.07876 +2016-07-01|16.0|-113.0|8.43414|-0.07653 +2016-07-01|16.0|-114.0|8.57298|-0.07441 +2016-07-01|16.0|-115.0|8.70168|-0.07237 +2016-07-01|16.0|-116.0|8.82108|-0.07042 +2016-07-01|16.0|-117.0|8.93194|-0.06856 +2016-07-01|16.0|-118.0|9.03495|-0.06677 +2016-07-01|16.0|-119.0|9.13074|-0.06504 +2016-07-01|16.0|-120.0|9.21987|-0.06338 +2016-07-01|16.0|-121.0|9.30279|-0.06177 +2016-07-01|16.0|-122.0|9.37989|-0.0602 +2016-07-01|16.0|-123.0|9.45146|-0.05867 +2016-07-01|16.0|-124.0|9.51772|-0.05718 +2016-07-01|16.0|-125.0|9.5788|-0.05572 +2016-07-01|16.0|-126.0|9.63477|-0.05429 +2016-07-01|16.0|-127.0|9.68564|-0.05288 +2016-07-01|16.0|-128.0|9.73137|-0.0515 +2016-07-01|16.0|-129.0|9.77186|-0.05014 +2016-07-01|16.0|-130.0|9.807|-0.04881 +2016-07-01|16.0|-131.0|9.83666|-0.04749 +2016-07-01|16.0|-132.0|9.86071|-0.04621 +2016-07-01|16.0|-133.0|9.87902|-0.04495 +2016-07-01|16.0|-134.0|9.89149|-0.04371 +2016-07-01|16.0|-135.0|9.89806|-0.04251 +2016-07-01|16.0|-136.0|9.8987|-0.04133 +2016-07-01|16.0|-137.0|9.89344|-0.04019 +2016-07-01|16.0|-138.0|9.88237|-0.03908 +2016-07-01|16.0|-139.0|9.86564|-0.03799 +2016-07-01|16.0|-140.0|9.84348|-0.03694 +2016-07-01|16.0|-141.0|9.81618|-0.03591 +2016-07-01|16.0|-142.0|9.78411|-0.0349 +2016-07-01|16.0|-143.0|9.74769|-0.03392 +2016-07-01|16.0|-144.0|9.70743|-0.03295 +2016-07-01|16.0|-145.0|9.66387|-0.032 +2016-07-01|16.0|-146.0|9.61761|-0.03105 +2016-07-01|16.0|-147.0|9.56928|-0.0301 +2016-07-01|16.0|-148.0|9.51955|-0.02915 +2016-07-01|16.0|-149.0|9.46909|-0.02819 +2016-07-01|16.0|-150.0|9.41859|-0.02722 +2016-07-01|16.0|-151.0|9.36869|-0.02622 +2016-07-01|16.0|-152.0|9.32005|-0.0252 +2016-07-01|16.0|-153.0|9.27325|-0.02415 +2016-07-01|16.0|-154.0|9.22884|-0.02307 +2016-07-01|16.0|-155.0|9.18729|-0.02196 +2016-07-01|16.0|-156.0|9.149|-0.0208 +2016-07-01|16.0|-157.0|9.11427|-0.01962 +2016-07-01|16.0|-158.0|9.08332|-0.0184 +2016-07-01|16.0|-159.0|9.05624|-0.01714 +2016-07-01|16.0|-160.0|9.03302|-0.01586 +2016-07-01|16.0|-161.0|9.01353|-0.01455 +2016-07-01|16.0|-162.0|8.99753|-0.01322 +2016-07-01|16.0|-163.0|8.98465|-0.01188 +2016-07-01|16.0|-164.0|8.97441|-0.01053 +2016-07-01|16.0|-165.0|8.96622|-0.00918 +2016-07-01|16.0|-166.0|8.9594|-0.00785 +2016-07-01|16.0|-167.0|8.95314|-0.00654 +2016-07-01|16.0|-168.0|8.94658|-0.00526 +2016-07-01|16.0|-169.0|8.93877|-0.00402 +2016-07-01|16.0|-170.0|8.92871|-0.00284 +2016-07-01|16.0|-171.0|8.91535|-0.00172 +2016-07-01|16.0|-172.0|8.89764|-6.7E-4 +2016-07-01|16.0|-173.0|8.87448|3.0E-4 +2016-07-01|16.0|-174.0|8.84481|0.00117 +2016-07-01|16.0|-175.0|8.8076|0.00195 +2016-07-01|16.0|-176.0|8.76183|0.00261 +2016-07-01|16.0|-177.0|8.70659|0.00315 +2016-07-01|16.0|-178.0|8.64099|0.00357 +2016-07-01|16.0|-179.0|8.56428|0.00386 +2016-07-01|17.0|0.0|-1.29625|0.08922 +2016-07-01|17.0|1.0|-1.07047|0.08833 +2016-07-01|17.0|2.0|-0.85366|0.08762 +2016-07-01|17.0|3.0|-0.64498|0.08707 +2016-07-01|17.0|4.0|-0.44358|0.08672 +2016-07-01|17.0|5.0|-0.24859|0.08655 +2016-07-01|17.0|6.0|-0.05915|0.08657 +2016-07-01|17.0|7.0|0.12557|0.08677 +2016-07-01|17.0|8.0|0.30633|0.08715 +2016-07-01|17.0|9.0|0.48382|0.08768 +2016-07-01|17.0|10.0|0.65864|0.08835 +2016-07-01|17.0|11.0|0.83127|0.08915 +2016-07-01|17.0|12.0|1.00205|0.09003 +2016-07-01|17.0|13.0|1.1712|0.09097 +2016-07-01|17.0|14.0|1.33878|0.09194 +2016-07-01|17.0|15.0|1.50468|0.0929 +2016-07-01|17.0|16.0|1.66865|0.09382 +2016-07-01|17.0|17.0|1.83029|0.09465 +2016-07-01|17.0|18.0|1.98901|0.09536 +2016-07-01|17.0|19.0|2.14413|0.09591 +2016-07-01|17.0|20.0|2.2948|0.09626 +2016-07-01|17.0|21.0|2.44007|0.09639 +2016-07-01|17.0|22.0|2.57892|0.09626 +2016-07-01|17.0|23.0|2.71023|0.09585 +2016-07-01|17.0|24.0|2.83287|0.09514 +2016-07-01|17.0|25.0|2.94565|0.09412 +2016-07-01|17.0|26.0|3.04743|0.09277 +2016-07-01|17.0|27.0|3.13708|0.09111 +2016-07-01|17.0|28.0|3.21357|0.08914 +2016-07-01|17.0|29.0|3.27593|0.08686 +2016-07-01|17.0|30.0|3.32334|0.0843 +2016-07-01|17.0|31.0|3.35511|0.08149 +2016-07-01|17.0|32.0|3.37072|0.07846 +2016-07-01|17.0|33.0|3.36983|0.07524 +2016-07-01|17.0|34.0|3.35231|0.07189 +2016-07-01|17.0|35.0|3.31822|0.06844 +2016-07-01|17.0|36.0|3.26784|0.06496 +2016-07-01|17.0|37.0|3.20166|0.06148 +2016-07-01|17.0|38.0|3.12037|0.05806 +2016-07-01|17.0|39.0|3.02488|0.05476 +2016-07-01|17.0|40.0|2.91624|0.05163 +2016-07-01|17.0|41.0|2.7957|0.0487 +2016-07-01|17.0|42.0|2.66463|0.04603 +2016-07-01|17.0|43.0|2.5245|0.04366 +2016-07-01|17.0|44.0|2.37689|0.04161 +2016-07-01|17.0|45.0|2.2234|0.03991 +2016-07-01|17.0|46.0|2.06567|0.03858 +2016-07-01|17.0|47.0|1.90532|0.03763 +2016-07-01|17.0|48.0|1.74393|0.03707 +2016-07-01|17.0|49.0|1.58298|0.03688 +2016-07-01|17.0|50.0|1.4239|0.03706 +2016-07-01|17.0|51.0|1.26794|0.03759 +2016-07-01|17.0|52.0|1.11625|0.03844 +2016-07-01|17.0|53.0|0.96981|0.03959 +2016-07-01|17.0|54.0|0.82943|0.04099 +2016-07-01|17.0|55.0|0.69574|0.04262 +2016-07-01|17.0|56.0|0.56922|0.04442 +2016-07-01|17.0|57.0|0.45016|0.04637 +2016-07-01|17.0|58.0|0.3387|0.04841 +2016-07-01|17.0|59.0|0.23485|0.0505 +2016-07-01|17.0|60.0|0.13847|0.0526 +2016-07-01|17.0|61.0|0.04931|0.05468 +2016-07-01|17.0|62.0|-0.03296|0.0567 +2016-07-01|17.0|63.0|-0.10875|0.05862 +2016-07-01|17.0|64.0|-0.1785|0.06042 +2016-07-01|17.0|65.0|-0.24269|0.06207 +2016-07-01|17.0|66.0|-0.3018|0.06356 +2016-07-01|17.0|67.0|-0.35629|0.06487 +2016-07-01|17.0|68.0|-0.40658|0.06598 +2016-07-01|17.0|69.0|-0.45307|0.06689 +2016-07-01|17.0|70.0|-0.49608|0.06761 +2016-07-01|17.0|71.0|-0.53588|0.06812 +2016-07-01|17.0|72.0|-0.57264|0.06843 +2016-07-01|17.0|73.0|-0.60651|0.06854 +2016-07-01|17.0|74.0|-0.63754|0.06847 +2016-07-01|17.0|75.0|-0.66574|0.06822 +2016-07-01|17.0|76.0|-0.69106|0.0678 +2016-07-01|17.0|77.0|-0.71341|0.06722 +2016-07-01|17.0|78.0|-0.73269|0.06648 +2016-07-01|17.0|79.0|-0.7488|0.06559 +2016-07-01|17.0|80.0|-0.76163|0.06456 +2016-07-01|17.0|81.0|-0.77111|0.06339 +2016-07-01|17.0|82.0|-0.7772|0.06208 +2016-07-01|17.0|83.0|-0.77993|0.06064 +2016-07-01|17.0|84.0|-0.77939|0.05905 +2016-07-01|17.0|85.0|-0.77577|0.05731 +2016-07-01|17.0|86.0|-0.76932|0.05542 +2016-07-01|17.0|87.0|-0.76041|0.05336 +2016-07-01|17.0|88.0|-0.74948|0.05114 +2016-07-01|17.0|89.0|-0.7371|0.04873 +2016-07-01|17.0|90.0|-0.72388|0.04613 +2016-07-01|17.0|91.0|-0.71057|0.04332 +2016-07-01|17.0|92.0|-0.69793|0.0403 +2016-07-01|17.0|93.0|-0.68683|0.03706 +2016-07-01|17.0|94.0|-0.67813|0.03359 +2016-07-01|17.0|95.0|-0.67275|0.02987 +2016-07-01|17.0|96.0|-0.67157|0.02593 +2016-07-01|17.0|97.0|-0.67548|0.02174 +2016-07-01|17.0|98.0|-0.68529|0.01731 +2016-07-01|17.0|99.0|-0.70176|0.01266 +2016-07-01|17.0|100.0|-0.72557|0.00779 +2016-07-01|17.0|101.0|-0.75725|0.00272 +2016-07-01|17.0|102.0|-0.79724|-0.00253 +2016-07-01|17.0|103.0|-0.84579|-0.00794 +2016-07-01|17.0|104.0|-0.90302|-0.01349 +2016-07-01|17.0|105.0|-0.96887|-0.01914 +2016-07-01|17.0|106.0|-1.04308|-0.02487 +2016-07-01|17.0|107.0|-1.12525|-0.03063 +2016-07-01|17.0|108.0|-1.21475|-0.03639 +2016-07-01|17.0|109.0|-1.31081|-0.04211 +2016-07-01|17.0|110.0|-1.41248|-0.04775 +2016-07-01|17.0|111.0|-1.51866|-0.05328 +2016-07-01|17.0|112.0|-1.62813|-0.05865 +2016-07-01|17.0|113.0|-1.73953|-0.06382 +2016-07-01|17.0|114.0|-1.85143|-0.06876 +2016-07-01|17.0|115.0|-1.96233|-0.07344 +2016-07-01|17.0|116.0|-2.07068|-0.07782 +2016-07-01|17.0|117.0|-2.17494|-0.08189 +2016-07-01|17.0|118.0|-2.27356|-0.08561 +2016-07-01|17.0|119.0|-2.36505|-0.08897 +2016-07-01|17.0|120.0|-2.44798|-0.09196 +2016-07-01|17.0|121.0|-2.52101|-0.09456 +2016-07-01|17.0|122.0|-2.5829|-0.09678 +2016-07-01|17.0|123.0|-2.63256|-0.0986 +2016-07-01|17.0|124.0|-2.66901|-0.10004 +2016-07-01|17.0|125.0|-2.69144|-0.1011 +2016-07-01|17.0|126.0|-2.69919|-0.10179 +2016-07-01|17.0|127.0|-2.69175|-0.10213 +2016-07-01|17.0|128.0|-2.66878|-0.10212 +2016-07-01|17.0|129.0|-2.63008|-0.1018 +2016-07-01|17.0|130.0|-2.57562|-0.10117 +2016-07-01|17.0|131.0|-2.50548|-0.10026 +2016-07-01|17.0|132.0|-2.41987|-0.09908 +2016-07-01|17.0|133.0|-2.31912|-0.09767 +2016-07-01|17.0|134.0|-2.20366|-0.09604 +2016-07-01|17.0|135.0|-2.07398|-0.0942 +2016-07-01|17.0|136.0|-1.93065|-0.09219 +2016-07-01|17.0|137.0|-1.77428|-0.09001 +2016-07-01|17.0|138.0|-1.60552|-0.0877 +2016-07-01|17.0|139.0|-1.42503|-0.08526 +2016-07-01|17.0|140.0|-1.23349|-0.0827 +2016-07-01|17.0|141.0|-1.03156|-0.08006 +2016-07-01|17.0|142.0|-0.8199|-0.07733 +2016-07-01|17.0|143.0|-0.59913|-0.07453 +2016-07-01|17.0|144.0|-0.36988|-0.07167 +2016-07-01|17.0|145.0|-0.13272|-0.06876 +2016-07-01|17.0|146.0|0.1118|-0.06582 +2016-07-01|17.0|147.0|0.36314|-0.06284 +2016-07-01|17.0|148.0|0.6208|-0.05984 +2016-07-01|17.0|149.0|0.88427|-0.05683 +2016-07-01|17.0|150.0|1.15308|-0.05382 +2016-07-01|17.0|151.0|1.42673|-0.05081 +2016-07-01|17.0|152.0|1.70475|-0.04781 +2016-07-01|17.0|153.0|1.98661|-0.04482 +2016-07-01|17.0|154.0|2.27178|-0.04187 +2016-07-01|17.0|155.0|2.55971|-0.03895 +2016-07-01|17.0|156.0|2.84978|-0.03607 +2016-07-01|17.0|157.0|3.14136|-0.03324 +2016-07-01|17.0|158.0|3.43375|-0.03047 +2016-07-01|17.0|159.0|3.72621|-0.02778 +2016-07-01|17.0|160.0|4.01794|-0.02516 +2016-07-01|17.0|161.0|4.30811|-0.02263 +2016-07-01|17.0|162.0|4.59585|-0.02019 +2016-07-01|17.0|163.0|4.88025|-0.01786 +2016-07-01|17.0|164.0|5.16035|-0.01564 +2016-07-01|17.0|165.0|5.43521|-0.01354 +2016-07-01|17.0|166.0|5.70387|-0.01156 +2016-07-01|17.0|167.0|5.96538|-0.00971 +2016-07-01|17.0|168.0|6.21881|-0.00801 +2016-07-01|17.0|169.0|6.46326|-0.00644 +2016-07-01|17.0|170.0|6.6979|-0.00502 +2016-07-01|17.0|171.0|6.92195|-0.00375 +2016-07-01|17.0|172.0|7.13472|-0.00264 +2016-07-01|17.0|173.0|7.33561|-0.00167 +2016-07-01|17.0|174.0|7.52412|-8.6E-4 +2016-07-01|17.0|175.0|7.69986|-2.0E-4 +2016-07-01|17.0|176.0|7.86257|3.0E-4 +2016-07-01|17.0|177.0|8.01212|6.6E-4 +2016-07-01|17.0|178.0|8.14851|8.7E-4 +2016-07-01|17.0|179.0|8.27186|9.3E-4 +2016-07-01|17.0|-1.0|-1.53176|0.09026 +2016-07-01|17.0|-2.0|-1.77772|0.09143 +2016-07-01|17.0|-3.0|-2.03473|0.09272 +2016-07-01|17.0|-4.0|-2.3033|0.09411 +2016-07-01|17.0|-5.0|-2.58383|0.09557 +2016-07-01|17.0|-6.0|-2.8766|0.0971 +2016-07-01|17.0|-7.0|-3.18173|0.09866 +2016-07-01|17.0|-8.0|-3.49922|0.10024 +2016-07-01|17.0|-9.0|-3.82895|0.10182 +2016-07-01|17.0|-10.0|-4.17064|0.10339 +2016-07-01|17.0|-11.0|-4.52389|0.10492 +2016-07-01|17.0|-12.0|-4.88816|0.10641 +2016-07-01|17.0|-13.0|-5.26281|0.10785 +2016-07-01|17.0|-14.0|-5.64708|0.10922 +2016-07-01|17.0|-15.0|-6.04013|0.11052 +2016-07-01|17.0|-16.0|-6.44103|0.11174 +2016-07-01|17.0|-17.0|-6.84876|0.11288 +2016-07-01|17.0|-18.0|-7.26226|0.11393 +2016-07-01|17.0|-19.0|-7.68043|0.11489 +2016-07-01|17.0|-20.0|-8.10212|0.11576 +2016-07-01|17.0|-21.0|-8.52616|0.11654 +2016-07-01|17.0|-22.0|-8.95138|0.11721 +2016-07-01|17.0|-23.0|-9.37659|0.11779 +2016-07-01|17.0|-24.0|-9.80061|0.11826 +2016-07-01|17.0|-25.0|-10.22226|0.11862 +2016-07-01|17.0|-26.0|-10.64037|0.11886 +2016-07-01|17.0|-27.0|-11.05381|0.11898 +2016-07-01|17.0|-28.0|-11.46143|0.11895 +2016-07-01|17.0|-29.0|-11.86212|0.11878 +2016-07-01|17.0|-30.0|-12.25477|0.11845 +2016-07-01|17.0|-31.0|-12.63829|0.11794 +2016-07-01|17.0|-32.0|-13.01159|0.11724 +2016-07-01|17.0|-33.0|-13.37362|0.11634 +2016-07-01|17.0|-34.0|-13.72329|0.11521 +2016-07-01|17.0|-35.0|-14.05955|0.11384 +2016-07-01|17.0|-36.0|-14.38133|0.11223 +2016-07-01|17.0|-37.0|-14.68757|0.11034 +2016-07-01|17.0|-38.0|-14.97722|0.10817 +2016-07-01|17.0|-39.0|-15.2492|0.1057 +2016-07-01|17.0|-40.0|-15.50247|0.10293 +2016-07-01|17.0|-41.0|-15.73598|0.09985 +2016-07-01|17.0|-42.0|-15.94869|0.09645 +2016-07-01|17.0|-43.0|-16.13958|0.09273 +2016-07-01|17.0|-44.0|-16.30766|0.08868 +2016-07-01|17.0|-45.0|-16.45196|0.08431 +2016-07-01|17.0|-46.0|-16.57154|0.07962 +2016-07-01|17.0|-47.0|-16.66554|0.07463 +2016-07-01|17.0|-48.0|-16.73314|0.06934 +2016-07-01|17.0|-49.0|-16.77358|0.06377 +2016-07-01|17.0|-50.0|-16.78619|0.05793 +2016-07-01|17.0|-51.0|-16.77038|0.05184 +2016-07-01|17.0|-52.0|-16.72565|0.04552 +2016-07-01|17.0|-53.0|-16.65162|0.03899 +2016-07-01|17.0|-54.0|-16.54801|0.03228 +2016-07-01|17.0|-55.0|-16.41466|0.02541 +2016-07-01|17.0|-56.0|-16.25152|0.01841 +2016-07-01|17.0|-57.0|-16.05869|0.01129 +2016-07-01|17.0|-58.0|-15.83637|0.0041 +2016-07-01|17.0|-59.0|-15.58489|-0.00316 +2016-07-01|17.0|-60.0|-15.30473|-0.01044 +2016-07-01|17.0|-61.0|-14.99648|-0.01772 +2016-07-01|17.0|-62.0|-14.66083|-0.02499 +2016-07-01|17.0|-63.0|-14.29861|-0.0322 +2016-07-01|17.0|-64.0|-13.91075|-0.03935 +2016-07-01|17.0|-65.0|-13.49828|-0.0464 +2016-07-01|17.0|-66.0|-13.06231|-0.05334 +2016-07-01|17.0|-67.0|-12.60406|-0.06013 +2016-07-01|17.0|-68.0|-12.1248|-0.06676 +2016-07-01|17.0|-69.0|-11.62588|-0.07321 +2016-07-01|17.0|-70.0|-11.1087|-0.07945 +2016-07-01|17.0|-71.0|-10.57472|-0.08546 +2016-07-01|17.0|-72.0|-10.02545|-0.09123 +2016-07-01|17.0|-73.0|-9.46241|-0.09673 +2016-07-01|17.0|-74.0|-8.88718|-0.10193 +2016-07-01|17.0|-75.0|-8.30134|-0.10683 +2016-07-01|17.0|-76.0|-7.7065|-0.11141 +2016-07-01|17.0|-77.0|-7.10428|-0.11564 +2016-07-01|17.0|-78.0|-6.49633|-0.1195 +2016-07-01|17.0|-79.0|-5.88428|-0.123 +2016-07-01|17.0|-80.0|-5.26977|-0.1261 +2016-07-01|17.0|-81.0|-4.65445|-0.12881 +2016-07-01|17.0|-82.0|-4.03993|-0.13111 +2016-07-01|17.0|-83.0|-3.42784|-0.133 +2016-07-01|17.0|-84.0|-2.81977|-0.13447 +2016-07-01|17.0|-85.0|-2.21729|-0.13553 +2016-07-01|17.0|-86.0|-1.62194|-0.13618 +2016-07-01|17.0|-87.0|-1.03519|-0.13643 +2016-07-01|17.0|-88.0|-0.45849|-0.13629 +2016-07-01|17.0|-89.0|0.10679|-0.13577 +2016-07-01|17.0|-90.0|0.65936|-0.1349 +2016-07-01|17.0|-91.0|1.198|-0.13369 +2016-07-01|17.0|-92.0|1.72158|-0.13217 +2016-07-01|17.0|-93.0|2.22908|-0.13037 +2016-07-01|17.0|-94.0|2.7196|-0.12831 +2016-07-01|17.0|-95.0|3.19234|-0.12603 +2016-07-01|17.0|-96.0|3.64663|-0.12354 +2016-07-01|17.0|-97.0|4.08194|-0.1209 +2016-07-01|17.0|-98.0|4.49786|-0.11812 +2016-07-01|17.0|-99.0|4.89413|-0.11524 +2016-07-01|17.0|-100.0|5.27061|-0.11228 +2016-07-01|17.0|-101.0|5.62731|-0.10928 +2016-07-01|17.0|-102.0|5.96435|-0.10626 +2016-07-01|17.0|-103.0|6.28199|-0.10325 +2016-07-01|17.0|-104.0|6.58061|-0.10026 +2016-07-01|17.0|-105.0|6.86068|-0.09732 +2016-07-01|17.0|-106.0|7.12279|-0.09444 +2016-07-01|17.0|-107.0|7.36759|-0.09164 +2016-07-01|17.0|-108.0|7.59582|-0.08893 +2016-07-01|17.0|-109.0|7.80829|-0.08631 +2016-07-01|17.0|-110.0|8.00583|-0.08379 +2016-07-01|17.0|-111.0|8.18931|-0.08138 +2016-07-01|17.0|-112.0|8.35962|-0.07907 +2016-07-01|17.0|-113.0|8.51764|-0.07686 +2016-07-01|17.0|-114.0|8.66425|-0.07476 +2016-07-01|17.0|-115.0|8.80028|-0.07275 +2016-07-01|17.0|-116.0|8.92654|-0.07084 +2016-07-01|17.0|-117.0|9.04378|-0.069 +2016-07-01|17.0|-118.0|9.15269|-0.06725 +2016-07-01|17.0|-119.0|9.25388|-0.06557 +2016-07-01|17.0|-120.0|9.3479|-0.06395 +2016-07-01|17.0|-121.0|9.43521|-0.06238 +2016-07-01|17.0|-122.0|9.5162|-0.06086 +2016-07-01|17.0|-123.0|9.59116|-0.05939 +2016-07-01|17.0|-124.0|9.66031|-0.05795 +2016-07-01|17.0|-125.0|9.72381|-0.05655 +2016-07-01|17.0|-126.0|9.78174|-0.05518 +2016-07-01|17.0|-127.0|9.83411|-0.05383 +2016-07-01|17.0|-128.0|9.8809|-0.05251 +2016-07-01|17.0|-129.0|9.92203|-0.05121 +2016-07-01|17.0|-130.0|9.95743|-0.04993 +2016-07-01|17.0|-131.0|9.98697|-0.04867 +2016-07-01|17.0|-132.0|10.01055|-0.04744 +2016-07-01|17.0|-133.0|10.02806|-0.04624 +2016-07-01|17.0|-134.0|10.03942|-0.04506 +2016-07-01|17.0|-135.0|10.04459|-0.04391 +2016-07-01|17.0|-136.0|10.04358|-0.04278 +2016-07-01|17.0|-137.0|10.03642|-0.04169 +2016-07-01|17.0|-138.0|10.02323|-0.04062 +2016-07-01|17.0|-139.0|10.00418|-0.03958 +2016-07-01|17.0|-140.0|9.97951|-0.03857 +2016-07-01|17.0|-141.0|9.94955|-0.03758 +2016-07-01|17.0|-142.0|9.91466|-0.03662 +2016-07-01|17.0|-143.0|9.87529|-0.03568 +2016-07-01|17.0|-144.0|9.83196|-0.03476 +2016-07-01|17.0|-145.0|9.78521|-0.03384 +2016-07-01|17.0|-146.0|9.73566|-0.03294 +2016-07-01|17.0|-147.0|9.68395|-0.03204 +2016-07-01|17.0|-148.0|9.63074|-0.03114 +2016-07-01|17.0|-149.0|9.57671|-0.03023 +2016-07-01|17.0|-150.0|9.52255|-0.02931 +2016-07-01|17.0|-151.0|9.4689|-0.02837 +2016-07-01|17.0|-152.0|9.41641|-0.02741 +2016-07-01|17.0|-153.0|9.36565|-0.02643 +2016-07-01|17.0|-154.0|9.31717|-0.02541 +2016-07-01|17.0|-155.0|9.27144|-0.02437 +2016-07-01|17.0|-156.0|9.22882|-0.02329 +2016-07-01|17.0|-157.0|9.18962|-0.02218 +2016-07-01|17.0|-158.0|9.15404|-0.02103 +2016-07-01|17.0|-159.0|9.12214|-0.01986 +2016-07-01|17.0|-160.0|9.09391|-0.01865 +2016-07-01|17.0|-161.0|9.0692|-0.01742 +2016-07-01|17.0|-162.0|9.04774|-0.01616 +2016-07-01|17.0|-163.0|9.02916|-0.01489 +2016-07-01|17.0|-164.0|9.01297|-0.01361 +2016-07-01|17.0|-165.0|8.99855|-0.01233 +2016-07-01|17.0|-166.0|8.98521|-0.01106 +2016-07-01|17.0|-167.0|8.97215|-0.0098 +2016-07-01|17.0|-168.0|8.95848|-0.00857 +2016-07-01|17.0|-169.0|8.94327|-0.00737 +2016-07-01|17.0|-170.0|8.92551|-0.00621 +2016-07-01|17.0|-171.0|8.90417|-0.00511 +2016-07-01|17.0|-172.0|8.87818|-0.00407 +2016-07-01|17.0|-173.0|8.84648|-0.00311 +2016-07-01|17.0|-174.0|8.80803|-0.00223 +2016-07-01|17.0|-175.0|8.76179|-0.00144 +2016-07-01|17.0|-176.0|8.70681|-7.5E-4 +2016-07-01|17.0|-177.0|8.64216|-1.7E-4 +2016-07-01|17.0|-178.0|8.56703|3.0E-4 +2016-07-01|17.0|-179.0|8.48067|6.4E-4 +2016-07-01|18.0|0.0|-1.15976|0.0889 +2016-07-01|18.0|1.0|-0.93628|0.08796 +2016-07-01|18.0|2.0|-0.72186|0.08718 +2016-07-01|18.0|3.0|-0.51569|0.08657 +2016-07-01|18.0|4.0|-0.31692|0.08615 +2016-07-01|18.0|5.0|-0.12468|0.08592 +2016-07-01|18.0|6.0|0.06187|0.08587 +2016-07-01|18.0|7.0|0.24356|0.08601 +2016-07-01|18.0|8.0|0.42116|0.08632 +2016-07-01|18.0|9.0|0.59537|0.08679 +2016-07-01|18.0|10.0|0.7668|0.08741 +2016-07-01|18.0|11.0|0.93595|0.08814 +2016-07-01|18.0|12.0|1.10319|0.08898 +2016-07-01|18.0|13.0|1.26875|0.08988 +2016-07-01|18.0|14.0|1.43272|0.09082 +2016-07-01|18.0|15.0|1.59503|0.09176 +2016-07-01|18.0|16.0|1.75547|0.09267 +2016-07-01|18.0|17.0|1.91365|0.0935 +2016-07-01|18.0|18.0|2.06906|0.09422 +2016-07-01|18.0|19.0|2.22102|0.09479 +2016-07-01|18.0|20.0|2.36874|0.09519 +2016-07-01|18.0|21.0|2.51132|0.09537 +2016-07-01|18.0|22.0|2.64775|0.0953 +2016-07-01|18.0|23.0|2.77697|0.09497 +2016-07-01|18.0|24.0|2.89785|0.09436 +2016-07-01|18.0|25.0|3.00928|0.09344 +2016-07-01|18.0|26.0|3.1101|0.09221 +2016-07-01|18.0|27.0|3.19924|0.09068 +2016-07-01|18.0|28.0|3.27565|0.08883 +2016-07-01|18.0|29.0|3.33839|0.0867 +2016-07-01|18.0|30.0|3.38664|0.08428 +2016-07-01|18.0|31.0|3.41971|0.08162 +2016-07-01|18.0|32.0|3.43707|0.07874 +2016-07-01|18.0|33.0|3.43836|0.07567 +2016-07-01|18.0|34.0|3.42343|0.07246 +2016-07-01|18.0|35.0|3.39232|0.06915 +2016-07-01|18.0|36.0|3.34528|0.06579 +2016-07-01|18.0|37.0|3.28275|0.06243 +2016-07-01|18.0|38.0|3.20539|0.05912 +2016-07-01|18.0|39.0|3.11406|0.05591 +2016-07-01|18.0|40.0|3.00978|0.05285 +2016-07-01|18.0|41.0|2.89373|0.04999 +2016-07-01|18.0|42.0|2.76724|0.04737 +2016-07-01|18.0|43.0|2.63173|0.04502 +2016-07-01|18.0|44.0|2.48874|0.04299 +2016-07-01|18.0|45.0|2.33982|0.04128 +2016-07-01|18.0|46.0|2.18657|0.03993 +2016-07-01|18.0|47.0|2.03056|0.03895 +2016-07-01|18.0|48.0|1.87335|0.03833 +2016-07-01|18.0|49.0|1.7164|0.03808 +2016-07-01|18.0|50.0|1.56109|0.03818 +2016-07-01|18.0|51.0|1.40867|0.03863 +2016-07-01|18.0|52.0|1.26026|0.03939 +2016-07-01|18.0|53.0|1.11684|0.04043 +2016-07-01|18.0|54.0|0.9792|0.04174 +2016-07-01|18.0|55.0|0.84799|0.04326 +2016-07-01|18.0|56.0|0.72367|0.04495 +2016-07-01|18.0|57.0|0.60656|0.04679 +2016-07-01|18.0|58.0|0.49679|0.04873 +2016-07-01|18.0|59.0|0.39437|0.05072 +2016-07-01|18.0|60.0|0.29919|0.05273 +2016-07-01|18.0|61.0|0.211|0.05472 +2016-07-01|18.0|62.0|0.12948|0.05666 +2016-07-01|18.0|63.0|0.05423|0.0585 +2016-07-01|18.0|64.0|-0.01518|0.06024 +2016-07-01|18.0|65.0|-0.07924|0.06183 +2016-07-01|18.0|66.0|-0.13842|0.06327 +2016-07-01|18.0|67.0|-0.19319|0.06453 +2016-07-01|18.0|68.0|-0.24397|0.06561 +2016-07-01|18.0|69.0|-0.29118|0.0665 +2016-07-01|18.0|70.0|-0.33513|0.06719 +2016-07-01|18.0|71.0|-0.37613|0.06768 +2016-07-01|18.0|72.0|-0.41437|0.06798 +2016-07-01|18.0|73.0|-0.45001|0.06808 +2016-07-01|18.0|74.0|-0.48313|0.068 +2016-07-01|18.0|75.0|-0.51377|0.06774 +2016-07-01|18.0|76.0|-0.54189|0.06732 +2016-07-01|18.0|77.0|-0.56745|0.06673 +2016-07-01|18.0|78.0|-0.59037|0.06598 +2016-07-01|18.0|79.0|-0.61055|0.06508 +2016-07-01|18.0|80.0|-0.62792|0.06404 +2016-07-01|18.0|81.0|-0.64242|0.06286 +2016-07-01|18.0|82.0|-0.65402|0.06154 +2016-07-01|18.0|83.0|-0.66277|0.06007 +2016-07-01|18.0|84.0|-0.66875|0.05847 +2016-07-01|18.0|85.0|-0.67213|0.05671 +2016-07-01|18.0|86.0|-0.67318|0.0548 +2016-07-01|18.0|87.0|-0.67223|0.05273 +2016-07-01|18.0|88.0|-0.66972|0.05049 +2016-07-01|18.0|89.0|-0.66616|0.04806 +2016-07-01|18.0|90.0|-0.66216|0.04545 +2016-07-01|18.0|91.0|-0.65841|0.04263 +2016-07-01|18.0|92.0|-0.65565|0.03961 +2016-07-01|18.0|93.0|-0.65467|0.03636 +2016-07-01|18.0|94.0|-0.65631|0.03289 +2016-07-01|18.0|95.0|-0.66142|0.02919 +2016-07-01|18.0|96.0|-0.67084|0.02526 +2016-07-01|18.0|97.0|-0.6854|0.0211 +2016-07-01|18.0|98.0|-0.70587|0.01671 +2016-07-01|18.0|99.0|-0.73295|0.01209 +2016-07-01|18.0|100.0|-0.76727|0.00727 +2016-07-01|18.0|101.0|-0.80933|0.00226 +2016-07-01|18.0|102.0|-0.85952|-0.00293 +2016-07-01|18.0|103.0|-0.91806|-0.00828 +2016-07-01|18.0|104.0|-0.98505|-0.01375 +2016-07-01|18.0|105.0|-1.06038|-0.01932 +2016-07-01|18.0|106.0|-1.1438|-0.02496 +2016-07-01|18.0|107.0|-1.23488|-0.03063 +2016-07-01|18.0|108.0|-1.333|-0.03629 +2016-07-01|18.0|109.0|-1.43738|-0.04192 +2016-07-01|18.0|110.0|-1.54709|-0.04746 +2016-07-01|18.0|111.0|-1.66102|-0.05289 +2016-07-01|18.0|112.0|-1.77798|-0.05816 +2016-07-01|18.0|113.0|-1.89662|-0.06324 +2016-07-01|18.0|114.0|-2.01554|-0.06809 +2016-07-01|18.0|115.0|-2.13326|-0.07268 +2016-07-01|18.0|116.0|-2.24825|-0.07699 +2016-07-01|18.0|117.0|-2.359|-0.08098 +2016-07-01|18.0|118.0|-2.46398|-0.08463 +2016-07-01|18.0|119.0|-2.56172|-0.08794 +2016-07-01|18.0|120.0|-2.65082|-0.09087 +2016-07-01|18.0|121.0|-2.72994|-0.09343 +2016-07-01|18.0|122.0|-2.79787|-0.09562 +2016-07-01|18.0|123.0|-2.85351|-0.09742 +2016-07-01|18.0|124.0|-2.89589|-0.09884 +2016-07-01|18.0|125.0|-2.92419|-0.0999 +2016-07-01|18.0|126.0|-2.93775|-0.1006 +2016-07-01|18.0|127.0|-2.93606|-0.10095 +2016-07-01|18.0|128.0|-2.91875|-0.10096 +2016-07-01|18.0|129.0|-2.88561|-0.10067 +2016-07-01|18.0|130.0|-2.83657|-0.10008 +2016-07-01|18.0|131.0|-2.77169|-0.09921 +2016-07-01|18.0|132.0|-2.69116|-0.09809 +2016-07-01|18.0|133.0|-2.59528|-0.09673 +2016-07-01|18.0|134.0|-2.48444|-0.09516 +2016-07-01|18.0|135.0|-2.3591|-0.09339 +2016-07-01|18.0|136.0|-2.21981|-0.09145 +2016-07-01|18.0|137.0|-2.06715|-0.08935 +2016-07-01|18.0|138.0|-1.90173|-0.08711 +2016-07-01|18.0|139.0|-1.7242|-0.08474 +2016-07-01|18.0|140.0|-1.53522|-0.08227 +2016-07-01|18.0|141.0|-1.33543|-0.0797 +2016-07-01|18.0|142.0|-1.12547|-0.07705 +2016-07-01|18.0|143.0|-0.90597|-0.07433 +2016-07-01|18.0|144.0|-0.67753|-0.07156 +2016-07-01|18.0|145.0|-0.44074|-0.06873 +2016-07-01|18.0|146.0|-0.19615|-0.06587 +2016-07-01|18.0|147.0|0.0557|-0.06297 +2016-07-01|18.0|148.0|0.3143|-0.06006 +2016-07-01|18.0|149.0|0.57914|-0.05713 +2016-07-01|18.0|150.0|0.84972|-0.0542 +2016-07-01|18.0|151.0|1.12555|-0.05127 +2016-07-01|18.0|152.0|1.40613|-0.04835 +2016-07-01|18.0|153.0|1.69092|-0.04545 +2016-07-01|18.0|154.0|1.97939|-0.04257 +2016-07-01|18.0|155.0|2.27095|-0.03973 +2016-07-01|18.0|156.0|2.56501|-0.03694 +2016-07-01|18.0|157.0|2.86091|-0.0342 +2016-07-01|18.0|158.0|3.15794|-0.03153 +2016-07-01|18.0|159.0|3.45536|-0.02892 +2016-07-01|18.0|160.0|3.75237|-0.0264 +2016-07-01|18.0|161.0|4.04815|-0.02396 +2016-07-01|18.0|162.0|4.34181|-0.02162 +2016-07-01|18.0|163.0|4.63243|-0.01939 +2016-07-01|18.0|164.0|4.91909|-0.01727 +2016-07-01|18.0|165.0|5.20082|-0.01528 +2016-07-01|18.0|166.0|5.47667|-0.01341 +2016-07-01|18.0|167.0|5.74568|-0.01167 +2016-07-01|18.0|168.0|6.00692|-0.01008 +2016-07-01|18.0|169.0|6.25949|-0.00862 +2016-07-01|18.0|170.0|6.50255|-0.00732 +2016-07-01|18.0|171.0|6.7353|-0.00616 +2016-07-01|18.0|172.0|6.95703|-0.00515 +2016-07-01|18.0|173.0|7.16713|-0.0043 +2016-07-01|18.0|174.0|7.36508|-0.00359 +2016-07-01|18.0|175.0|7.55046|-0.00304 +2016-07-01|18.0|176.0|7.72299|-0.00264 +2016-07-01|18.0|177.0|7.88249|-0.00238 +2016-07-01|18.0|178.0|8.02894|-0.00226 +2016-07-01|18.0|179.0|8.16243|-0.00228 +2016-07-01|18.0|-1.0|-1.39305|0.08998 +2016-07-01|18.0|-2.0|-1.63683|0.0912 +2016-07-01|18.0|-3.0|-1.8917|0.09253 +2016-07-01|18.0|-4.0|-2.15814|0.09396 +2016-07-01|18.0|-5.0|-2.43653|0.09546 +2016-07-01|18.0|-6.0|-2.7271|0.09701 +2016-07-01|18.0|-7.0|-3.02996|0.09859 +2016-07-01|18.0|-8.0|-3.34511|0.10019 +2016-07-01|18.0|-9.0|-3.67236|0.10178 +2016-07-01|18.0|-10.0|-4.01145|0.10335 +2016-07-01|18.0|-11.0|-4.36193|0.10489 +2016-07-01|18.0|-12.0|-4.72328|0.10638 +2016-07-01|18.0|-13.0|-5.09483|0.10782 +2016-07-01|18.0|-14.0|-5.47583|0.10918 +2016-07-01|18.0|-15.0|-5.86543|0.11048 +2016-07-01|18.0|-16.0|-6.26269|0.1117 +2016-07-01|18.0|-17.0|-6.66663|0.11283 +2016-07-01|18.0|-18.0|-7.07619|0.11388 +2016-07-01|18.0|-19.0|-7.49029|0.11485 +2016-07-01|18.0|-20.0|-7.90781|0.11572 +2016-07-01|18.0|-21.0|-8.32761|0.11651 +2016-07-01|18.0|-22.0|-8.74855|0.1172 +2016-07-01|18.0|-23.0|-9.16948|0.1178 +2016-07-01|18.0|-24.0|-9.58925|0.11831 +2016-07-01|18.0|-25.0|-10.00675|0.11871 +2016-07-01|18.0|-26.0|-10.42086|0.11899 +2016-07-01|18.0|-27.0|-10.83048|0.11917 +2016-07-01|18.0|-28.0|-11.23452|0.11921 +2016-07-01|18.0|-29.0|-11.63193|0.11912 +2016-07-01|18.0|-30.0|-12.02166|0.11888 +2016-07-01|18.0|-31.0|-12.40267|0.11848 +2016-07-01|18.0|-32.0|-12.77393|0.1179 +2016-07-01|18.0|-33.0|-13.13443|0.11713 +2016-07-01|18.0|-34.0|-13.48314|0.11615 +2016-07-01|18.0|-35.0|-13.81906|0.11494 +2016-07-01|18.0|-36.0|-14.14116|0.11349 +2016-07-01|18.0|-37.0|-14.44843|0.11178 +2016-07-01|18.0|-38.0|-14.73984|0.10981 +2016-07-01|18.0|-39.0|-15.01436|0.10754 +2016-07-01|18.0|-40.0|-15.27097|0.10498 +2016-07-01|18.0|-41.0|-15.50863|0.10212 +2016-07-01|18.0|-42.0|-15.72633|0.09894 +2016-07-01|18.0|-43.0|-15.92304|0.09544 +2016-07-01|18.0|-44.0|-16.09777|0.09162 +2016-07-01|18.0|-45.0|-16.24955|0.08748 +2016-07-01|18.0|-46.0|-16.37743|0.08303 +2016-07-01|18.0|-47.0|-16.48051|0.07826 +2016-07-01|18.0|-48.0|-16.55795|0.07319 +2016-07-01|18.0|-49.0|-16.60894|0.06782 +2016-07-01|18.0|-50.0|-16.63279|0.06218 +2016-07-01|18.0|-51.0|-16.62884|0.05628 +2016-07-01|18.0|-52.0|-16.59654|0.05014 +2016-07-01|18.0|-53.0|-16.53545|0.04378 +2016-07-01|18.0|-54.0|-16.44522|0.03721 +2016-07-01|18.0|-55.0|-16.32562|0.03047 +2016-07-01|18.0|-56.0|-16.17653|0.02357 +2016-07-01|18.0|-57.0|-15.99796|0.01654 +2016-07-01|18.0|-58.0|-15.79004|0.00942 +2016-07-01|18.0|-59.0|-15.55303|0.00221 +2016-07-01|18.0|-60.0|-15.28732|-0.00504 +2016-07-01|18.0|-61.0|-14.9934|-0.01232 +2016-07-01|18.0|-62.0|-14.67191|-0.0196 +2016-07-01|18.0|-63.0|-14.32359|-0.02686 +2016-07-01|18.0|-64.0|-13.94929|-0.03406 +2016-07-01|18.0|-65.0|-13.54997|-0.04119 +2016-07-01|18.0|-66.0|-13.12667|-0.04822 +2016-07-01|18.0|-67.0|-12.68053|-0.05512 +2016-07-01|18.0|-68.0|-12.21278|-0.06188 +2016-07-01|18.0|-69.0|-11.72471|-0.06847 +2016-07-01|18.0|-70.0|-11.21766|-0.07486 +2016-07-01|18.0|-71.0|-10.69306|-0.08104 +2016-07-01|18.0|-72.0|-10.15235|-0.08698 +2016-07-01|18.0|-73.0|-9.59704|-0.09266 +2016-07-01|18.0|-74.0|-9.02867|-0.09806 +2016-07-01|18.0|-75.0|-8.44881|-0.10315 +2016-07-01|18.0|-76.0|-7.85904|-0.10792 +2016-07-01|18.0|-77.0|-7.26097|-0.11235 +2016-07-01|18.0|-78.0|-6.65624|-0.11642 +2016-07-01|18.0|-79.0|-6.04648|-0.12012 +2016-07-01|18.0|-80.0|-5.43335|-0.12342 +2016-07-01|18.0|-81.0|-4.81847|-0.12633 +2016-07-01|18.0|-82.0|-4.2035|-0.12882 +2016-07-01|18.0|-83.0|-3.59007|-0.1309 +2016-07-01|18.0|-84.0|-2.9798|-0.13255 +2016-07-01|18.0|-85.0|-2.37428|-0.13379 +2016-07-01|18.0|-86.0|-1.77507|-0.13461 +2016-07-01|18.0|-87.0|-1.1837|-0.13502 +2016-07-01|18.0|-88.0|-0.60162|-0.13503 +2016-07-01|18.0|-89.0|-0.03027|-0.13466 +2016-07-01|18.0|-90.0|0.52903|-0.13393 +2016-07-01|18.0|-91.0|1.07501|-0.13285 +2016-07-01|18.0|-92.0|1.6065|-0.13145 +2016-07-01|18.0|-93.0|2.12243|-0.12976 +2016-07-01|18.0|-94.0|2.62185|-0.1278 +2016-07-01|18.0|-95.0|3.10389|-0.12561 +2016-07-01|18.0|-96.0|3.56786|-0.12322 +2016-07-01|18.0|-97.0|4.01315|-0.12065 +2016-07-01|18.0|-98.0|4.4393|-0.11794 +2016-07-01|18.0|-99.0|4.84601|-0.11512 +2016-07-01|18.0|-100.0|5.23308|-0.11222 +2016-07-01|18.0|-101.0|5.60046|-0.10927 +2016-07-01|18.0|-102.0|5.94823|-0.1063 +2016-07-01|18.0|-103.0|6.2766|-0.10332 +2016-07-01|18.0|-104.0|6.58589|-0.10037 +2016-07-01|18.0|-105.0|6.87653|-0.09746 +2016-07-01|18.0|-106.0|7.14906|-0.09461 +2016-07-01|18.0|-107.0|7.40409|-0.09184 +2016-07-01|18.0|-108.0|7.64233|-0.08915 +2016-07-01|18.0|-109.0|7.86453|-0.08656 +2016-07-01|18.0|-110.0|8.0715|-0.08406 +2016-07-01|18.0|-111.0|8.26407|-0.08168 +2016-07-01|18.0|-112.0|8.44309|-0.07939 +2016-07-01|18.0|-113.0|8.60942|-0.07722 +2016-07-01|18.0|-114.0|8.76392|-0.07514 +2016-07-01|18.0|-115.0|8.90739|-0.07317 +2016-07-01|18.0|-116.0|9.04062|-0.07128 +2016-07-01|18.0|-117.0|9.16435|-0.06949 +2016-07-01|18.0|-118.0|9.27925|-0.06777 +2016-07-01|18.0|-119.0|9.38593|-0.06613 +2016-07-01|18.0|-120.0|9.48493|-0.06456 +2016-07-01|18.0|-121.0|9.57671|-0.06304 +2016-07-01|18.0|-122.0|9.66166|-0.06158 +2016-07-01|18.0|-123.0|9.74008|-0.06016 +2016-07-01|18.0|-124.0|9.8122|-0.05877 +2016-07-01|18.0|-125.0|9.87818|-0.05743 +2016-07-01|18.0|-126.0|9.93811|-0.05611 +2016-07-01|18.0|-127.0|9.99203|-0.05483 +2016-07-01|18.0|-128.0|10.03993|-0.05356 +2016-07-01|18.0|-129.0|10.08175|-0.05232 +2016-07-01|18.0|-130.0|10.11743|-0.05111 +2016-07-01|18.0|-131.0|10.14688|-0.04991 +2016-07-01|18.0|-132.0|10.17001|-0.04874 +2016-07-01|18.0|-133.0|10.18674|-0.0476 +2016-07-01|18.0|-134.0|10.19701|-0.04647 +2016-07-01|18.0|-135.0|10.2008|-0.04538 +2016-07-01|18.0|-136.0|10.19813|-0.0443 +2016-07-01|18.0|-137.0|10.18908|-0.04326 +2016-07-01|18.0|-138.0|10.17377|-0.04224 +2016-07-01|18.0|-139.0|10.1524|-0.04125 +2016-07-01|18.0|-140.0|10.12523|-0.04029 +2016-07-01|18.0|-141.0|10.09258|-0.03935 +2016-07-01|18.0|-142.0|10.05485|-0.03844 +2016-07-01|18.0|-143.0|10.0125|-0.03754 +2016-07-01|18.0|-144.0|9.96605|-0.03667 +2016-07-01|18.0|-145.0|9.91606|-0.0358 +2016-07-01|18.0|-146.0|9.86314|-0.03495 +2016-07-01|18.0|-147.0|9.80796|-0.0341 +2016-07-01|18.0|-148.0|9.75116|-0.03326 +2016-07-01|18.0|-149.0|9.69343|-0.0324 +2016-07-01|18.0|-150.0|9.63545|-0.03154 +2016-07-01|18.0|-151.0|9.57786|-0.03067 +2016-07-01|18.0|-152.0|9.52131|-0.02978 +2016-07-01|18.0|-153.0|9.46636|-0.02886 +2016-07-01|18.0|-154.0|9.41354|-0.02792 +2016-07-01|18.0|-155.0|9.36331|-0.02695 +2016-07-01|18.0|-156.0|9.31603|-0.02595 +2016-07-01|18.0|-157.0|9.27199|-0.02491 +2016-07-01|18.0|-158.0|9.23135|-0.02385 +2016-07-01|18.0|-159.0|9.1942|-0.02275 +2016-07-01|18.0|-160.0|9.16049|-0.02162 +2016-07-01|18.0|-161.0|9.13005|-0.02047 +2016-07-01|18.0|-162.0|9.1026|-0.01929 +2016-07-01|18.0|-163.0|9.07777|-0.01809 +2016-07-01|18.0|-164.0|9.05503|-0.01688 +2016-07-01|18.0|-165.0|9.03378|-0.01567 +2016-07-01|18.0|-166.0|9.01331|-0.01445 +2016-07-01|18.0|-167.0|8.9928|-0.01324 +2016-07-01|18.0|-168.0|8.97139|-0.01205 +2016-07-01|18.0|-169.0|8.94813|-0.01089 +2016-07-01|18.0|-170.0|8.92203|-0.00976 +2016-07-01|18.0|-171.0|8.89205|-0.00868 +2016-07-01|18.0|-172.0|8.85715|-0.00765 +2016-07-01|18.0|-173.0|8.81629|-0.00668 +2016-07-01|18.0|-174.0|8.76844|-0.00579 +2016-07-01|18.0|-175.0|8.71259|-0.00498 +2016-07-01|18.0|-176.0|8.64782|-0.00426 +2016-07-01|18.0|-177.0|8.57324|-0.00363 +2016-07-01|18.0|-178.0|8.48806|-0.00312 +2016-07-01|18.0|-179.0|8.39158|-0.00272 +2016-07-01|19.0|0.0|-1.03071|0.08873 +2016-07-01|19.0|1.0|-0.80913|0.08774 +2016-07-01|19.0|2.0|-0.5967|0.08691 +2016-07-01|19.0|3.0|-0.39261|0.08624 +2016-07-01|19.0|4.0|-0.19605|0.08576 +2016-07-01|19.0|5.0|-0.00616|0.08546 +2016-07-01|19.0|6.0|0.17791|0.08535 +2016-07-01|19.0|7.0|0.35698|0.08542 +2016-07-01|19.0|8.0|0.53181|0.08566 +2016-07-01|19.0|9.0|0.70313|0.08607 +2016-07-01|19.0|10.0|0.87153|0.08663 +2016-07-01|19.0|11.0|1.03755|0.08731 +2016-07-01|19.0|12.0|1.20156|0.08809 +2016-07-01|19.0|13.0|1.36383|0.08895 +2016-07-01|19.0|14.0|1.52448|0.08985 +2016-07-01|19.0|15.0|1.68346|0.09077 +2016-07-01|19.0|16.0|1.84059|0.09165 +2016-07-01|19.0|17.0|1.99554|0.09248 +2016-07-01|19.0|18.0|2.1478|0.0932 +2016-07-01|19.0|19.0|2.29677|0.0938 +2016-07-01|19.0|20.0|2.44167|0.09422 +2016-07-01|19.0|21.0|2.58165|0.09445 +2016-07-01|19.0|22.0|2.71575|0.09444 +2016-07-01|19.0|23.0|2.84294|0.09418 +2016-07-01|19.0|24.0|2.96212|0.09365 +2016-07-01|19.0|25.0|3.07221|0.09283 +2016-07-01|19.0|26.0|3.17209|0.09171 +2016-07-01|19.0|27.0|3.2607|0.09029 +2016-07-01|19.0|28.0|3.33703|0.08858 +2016-07-01|19.0|29.0|3.40013|0.08657 +2016-07-01|19.0|30.0|3.44919|0.0843 +2016-07-01|19.0|31.0|3.48352|0.08178 +2016-07-01|19.0|32.0|3.50259|0.07903 +2016-07-01|19.0|33.0|3.50604|0.07611 +2016-07-01|19.0|34.0|3.49367|0.07304 +2016-07-01|19.0|35.0|3.46552|0.06986 +2016-07-01|19.0|36.0|3.42179|0.06662 +2016-07-01|19.0|37.0|3.36291|0.06338 +2016-07-01|19.0|38.0|3.28949|0.06018 +2016-07-01|19.0|39.0|3.20233|0.05706 +2016-07-01|19.0|40.0|3.10242|0.05408 +2016-07-01|19.0|41.0|2.99089|0.05128 +2016-07-01|19.0|42.0|2.86901|0.0487 +2016-07-01|19.0|43.0|2.73818|0.04639 +2016-07-01|19.0|44.0|2.59986|0.04436 +2016-07-01|19.0|45.0|2.45558|0.04265 +2016-07-01|19.0|46.0|2.30687|0.04128 +2016-07-01|19.0|47.0|2.1553|0.04026 +2016-07-01|19.0|48.0|2.00235|0.03959 +2016-07-01|19.0|49.0|1.84947|0.03928 +2016-07-01|19.0|50.0|1.698|0.03931 +2016-07-01|19.0|51.0|1.5492|0.03966 +2016-07-01|19.0|52.0|1.40414|0.04033 +2016-07-01|19.0|53.0|1.26381|0.04128 +2016-07-01|19.0|54.0|1.12898|0.04247 +2016-07-01|19.0|55.0|1.00031|0.04388 +2016-07-01|19.0|56.0|0.87825|0.04547 +2016-07-01|19.0|57.0|0.76312|0.0472 +2016-07-01|19.0|58.0|0.65507|0.04903 +2016-07-01|19.0|59.0|0.55413|0.05092 +2016-07-01|19.0|60.0|0.46016|0.05284 +2016-07-01|19.0|61.0|0.37296|0.05474 +2016-07-01|19.0|62.0|0.2922|0.05659 +2016-07-01|19.0|63.0|0.2175|0.05836 +2016-07-01|19.0|64.0|0.14842|0.06003 +2016-07-01|19.0|65.0|0.08449|0.06157 +2016-07-01|19.0|66.0|0.02524|0.06295 +2016-07-01|19.0|67.0|-0.02981|0.06417 +2016-07-01|19.0|68.0|-0.08108|0.06522 +2016-07-01|19.0|69.0|-0.12899|0.06608 +2016-07-01|19.0|70.0|-0.17389|0.06674 +2016-07-01|19.0|71.0|-0.21607|0.06722 +2016-07-01|19.0|72.0|-0.25577|0.0675 +2016-07-01|19.0|73.0|-0.29316|0.0676 +2016-07-01|19.0|74.0|-0.32835|0.06751 +2016-07-01|19.0|75.0|-0.36138|0.06725 +2016-07-01|19.0|76.0|-0.39227|0.06682 +2016-07-01|19.0|77.0|-0.42099|0.06622 +2016-07-01|19.0|78.0|-0.44749|0.06547 +2016-07-01|19.0|79.0|-0.47168|0.06457 +2016-07-01|19.0|80.0|-0.49353|0.06352 +2016-07-01|19.0|81.0|-0.51298|0.06233 +2016-07-01|19.0|82.0|-0.53003|0.06099 +2016-07-01|19.0|83.0|-0.54472|0.05951 +2016-07-01|19.0|84.0|-0.55714|0.05789 +2016-07-01|19.0|85.0|-0.56746|0.05612 +2016-07-01|19.0|86.0|-0.57594|0.05419 +2016-07-01|19.0|87.0|-0.58289|0.05211 +2016-07-01|19.0|88.0|-0.58873|0.04985 +2016-07-01|19.0|89.0|-0.59395|0.04741 +2016-07-01|19.0|90.0|-0.59913|0.04478 +2016-07-01|19.0|91.0|-0.60491|0.04196 +2016-07-01|19.0|92.0|-0.612|0.03892 +2016-07-01|19.0|93.0|-0.62114|0.03568 +2016-07-01|19.0|94.0|-0.63312|0.03221 +2016-07-01|19.0|95.0|-0.64875|0.02853 +2016-07-01|19.0|96.0|-0.66881|0.02461 +2016-07-01|19.0|97.0|-0.69407|0.02047 +2016-07-01|19.0|98.0|-0.72526|0.01611 +2016-07-01|19.0|99.0|-0.76304|0.01154 +2016-07-01|19.0|100.0|-0.80798|0.00677 +2016-07-01|19.0|101.0|-0.86053|0.00181 +2016-07-01|19.0|102.0|-0.92105|-0.00332 +2016-07-01|19.0|103.0|-0.98973|-0.00859 +2016-07-01|19.0|104.0|-1.06662|-0.01399 +2016-07-01|19.0|105.0|-1.15161|-0.01948 +2016-07-01|19.0|106.0|-1.24443|-0.02503 +2016-07-01|19.0|107.0|-1.34462|-0.0306 +2016-07-01|19.0|108.0|-1.45156|-0.03618 +2016-07-01|19.0|109.0|-1.56447|-0.0417 +2016-07-01|19.0|110.0|-1.68243|-0.04715 +2016-07-01|19.0|111.0|-1.80434|-0.05248 +2016-07-01|19.0|112.0|-1.92901|-0.05765 +2016-07-01|19.0|113.0|-2.05512|-0.06264 +2016-07-01|19.0|114.0|-2.18129|-0.06739 +2016-07-01|19.0|115.0|-2.30605|-0.0719 +2016-07-01|19.0|116.0|-2.42791|-0.07612 +2016-07-01|19.0|117.0|-2.54537|-0.08004 +2016-07-01|19.0|118.0|-2.65693|-0.08362 +2016-07-01|19.0|119.0|-2.76113|-0.08686 +2016-07-01|19.0|120.0|-2.8566|-0.08975 +2016-07-01|19.0|121.0|-2.94201|-0.09226 +2016-07-01|19.0|122.0|-3.01616|-0.09441 +2016-07-01|19.0|123.0|-3.07795|-0.09619 +2016-07-01|19.0|124.0|-3.12643|-0.0976 +2016-07-01|19.0|125.0|-3.16077|-0.09865 +2016-07-01|19.0|126.0|-3.1803|-0.09934 +2016-07-01|19.0|127.0|-3.18449|-0.0997 +2016-07-01|19.0|128.0|-3.17298|-0.09974 +2016-07-01|19.0|129.0|-3.14551|-0.09947 +2016-07-01|19.0|130.0|-3.10201|-0.09892 +2016-07-01|19.0|131.0|-3.04252|-0.09809 +2016-07-01|19.0|132.0|-2.96718|-0.09702 +2016-07-01|19.0|133.0|-2.87627|-0.09572 +2016-07-01|19.0|134.0|-2.77014|-0.0942 +2016-07-01|19.0|135.0|-2.64925|-0.0925 +2016-07-01|19.0|136.0|-2.51409|-0.09062 +2016-07-01|19.0|137.0|-2.36522|-0.08859 +2016-07-01|19.0|138.0|-2.20324|-0.08643 +2016-07-01|19.0|139.0|-2.02877|-0.08414 +2016-07-01|19.0|140.0|-1.84244|-0.08174 +2016-07-01|19.0|141.0|-1.64488|-0.07925 +2016-07-01|19.0|142.0|-1.43672|-0.07668 +2016-07-01|19.0|143.0|-1.21859|-0.07405 +2016-07-01|19.0|144.0|-0.99107|-0.07135 +2016-07-01|19.0|145.0|-0.75475|-0.06861 +2016-07-01|19.0|146.0|-0.5102|-0.06582 +2016-07-01|19.0|147.0|-0.25794|-0.06301 +2016-07-01|19.0|148.0|0.00149|-0.06018 +2016-07-01|19.0|149.0|0.26758|-0.05733 +2016-07-01|19.0|150.0|0.53982|-0.05448 +2016-07-01|19.0|151.0|0.81771|-0.05164 +2016-07-01|19.0|152.0|1.10072|-0.0488 +2016-07-01|19.0|153.0|1.38832|-0.04599 +2016-07-01|19.0|154.0|1.67996|-0.0432 +2016-07-01|19.0|155.0|1.97505|-0.04045 +2016-07-01|19.0|156.0|2.27296|-0.03775 +2016-07-01|19.0|157.0|2.57305|-0.0351 +2016-07-01|19.0|158.0|2.8746|-0.03252 +2016-07-01|19.0|159.0|3.17686|-0.03002 +2016-07-01|19.0|160.0|3.47905|-0.02759 +2016-07-01|19.0|161.0|3.78032|-0.02526 +2016-07-01|19.0|162.0|4.07979|-0.02303 +2016-07-01|19.0|163.0|4.37656|-0.02091 +2016-07-01|19.0|164.0|4.66969|-0.0189 +2016-07-01|19.0|165.0|4.95822|-0.01702 +2016-07-01|19.0|166.0|5.2412|-0.01526 +2016-07-01|19.0|167.0|5.51768|-0.01365 +2016-07-01|19.0|168.0|5.78671|-0.01217 +2016-07-01|19.0|169.0|6.04741|-0.01084 +2016-07-01|19.0|170.0|6.2989|-0.00965 +2016-07-01|19.0|171.0|6.54041|-0.00861 +2016-07-01|19.0|172.0|6.77119|-0.00773 +2016-07-01|19.0|173.0|6.99062|-0.00699 +2016-07-01|19.0|174.0|7.19816|-0.0064 +2016-07-01|19.0|175.0|7.39336|-0.00596 +2016-07-01|19.0|176.0|7.57592|-0.00566 +2016-07-01|19.0|177.0|7.74564|-0.00551 +2016-07-01|19.0|178.0|7.90245|-0.00549 +2016-07-01|19.0|179.0|8.04641|-0.0056 +2016-07-01|19.0|-1.0|-1.26217|0.08987 +2016-07-01|19.0|-2.0|-1.50416|0.09113 +2016-07-01|19.0|-3.0|-1.75726|0.09249 +2016-07-01|19.0|-4.0|-2.02192|0.09395 +2016-07-01|19.0|-5.0|-2.29849|0.09547 +2016-07-01|19.0|-6.0|-2.58719|0.09704 +2016-07-01|19.0|-7.0|-2.88809|0.09864 +2016-07-01|19.0|-8.0|-3.20115|0.10025 +2016-07-01|19.0|-9.0|-3.5262|0.10185 +2016-07-01|19.0|-10.0|-3.86291|0.10342 +2016-07-01|19.0|-11.0|-4.21086|0.10496 +2016-07-01|19.0|-12.0|-4.56948|0.10645 +2016-07-01|19.0|-13.0|-4.93811|0.10788 +2016-07-01|19.0|-14.0|-5.316|0.10924 +2016-07-01|19.0|-15.0|-5.70228|0.11053 +2016-07-01|19.0|-16.0|-6.09605|0.11174 +2016-07-01|19.0|-17.0|-6.4963|0.11287 +2016-07-01|19.0|-18.0|-6.90201|0.11391 +2016-07-01|19.0|-19.0|-7.31212|0.11488 +2016-07-01|19.0|-20.0|-7.72553|0.11575 +2016-07-01|19.0|-21.0|-8.14113|0.11655 +2016-07-01|19.0|-22.0|-8.55781|0.11725 +2016-07-01|19.0|-23.0|-8.97446|0.11787 +2016-07-01|19.0|-24.0|-9.39|0.1184 +2016-07-01|19.0|-25.0|-9.80332|0.11883 +2016-07-01|19.0|-26.0|-10.21338|0.11917 +2016-07-01|19.0|-27.0|-10.61912|0.11939 +2016-07-01|19.0|-28.0|-11.01952|0.1195 +2016-07-01|19.0|-29.0|-11.41355|0.11949 +2016-07-01|19.0|-30.0|-11.80024|0.11934 +2016-07-01|19.0|-31.0|-12.1786|0.11903 +2016-07-01|19.0|-32.0|-12.54766|0.11857 +2016-07-01|19.0|-33.0|-12.90644|0.11792 +2016-07-01|19.0|-34.0|-13.254|0.11707 +2016-07-01|19.0|-35.0|-13.58935|0.11602 +2016-07-01|19.0|-36.0|-13.91153|0.11473 +2016-07-01|19.0|-37.0|-14.21956|0.1132 +2016-07-01|19.0|-38.0|-14.51246|0.1114 +2016-07-01|19.0|-39.0|-14.78923|0.10934 +2016-07-01|19.0|-40.0|-15.04886|0.10698 +2016-07-01|19.0|-41.0|-15.29035|0.10433 +2016-07-01|19.0|-42.0|-15.5127|0.10137 +2016-07-01|19.0|-43.0|-15.71489|0.09809 +2016-07-01|19.0|-44.0|-15.89593|0.0945 +2016-07-01|19.0|-45.0|-16.05483|0.09058 +2016-07-01|19.0|-46.0|-16.19066|0.08635 +2016-07-01|19.0|-47.0|-16.30247|0.0818 +2016-07-01|19.0|-48.0|-16.3894|0.07695 +2016-07-01|19.0|-49.0|-16.45062|0.0718 +2016-07-01|19.0|-50.0|-16.48537|0.06636 +2016-07-01|19.0|-51.0|-16.49296|0.06065 +2016-07-01|19.0|-52.0|-16.47279|0.05469 +2016-07-01|19.0|-53.0|-16.42435|0.04849 +2016-07-01|19.0|-54.0|-16.34723|0.04207 +2016-07-01|19.0|-55.0|-16.24112|0.03546 +2016-07-01|19.0|-56.0|-16.10583|0.02868 +2016-07-01|19.0|-57.0|-15.94129|0.02175 +2016-07-01|19.0|-58.0|-15.74757|0.0147 +2016-07-01|19.0|-59.0|-15.52482|0.00756 +2016-07-01|19.0|-60.0|-15.27336|3.4E-4 +2016-07-01|19.0|-61.0|-14.9936|-0.00693 +2016-07-01|19.0|-62.0|-14.68609|-0.01421 +2016-07-01|19.0|-63.0|-14.3515|-0.0215 +2016-07-01|19.0|-64.0|-13.99059|-0.02874 +2016-07-01|19.0|-65.0|-13.60424|-0.03594 +2016-07-01|19.0|-66.0|-13.19344|-0.04305 +2016-07-01|19.0|-67.0|-12.75925|-0.05006 +2016-07-01|19.0|-68.0|-12.30283|-0.05693 +2016-07-01|19.0|-69.0|-11.8254|-0.06365 +2016-07-01|19.0|-70.0|-11.32829|-0.07019 +2016-07-01|19.0|-71.0|-10.81283|-0.07652 +2016-07-01|19.0|-72.0|-10.28047|-0.08263 +2016-07-01|19.0|-73.0|-9.73264|-0.08848 +2016-07-01|19.0|-74.0|-9.17088|-0.09406 +2016-07-01|19.0|-75.0|-8.59672|-0.09935 +2016-07-01|19.0|-76.0|-8.01173|-0.10431 +2016-07-01|19.0|-77.0|-7.41751|-0.10894 +2016-07-01|19.0|-78.0|-6.81569|-0.11321 +2016-07-01|19.0|-79.0|-6.20791|-0.1171 +2016-07-01|19.0|-80.0|-5.59581|-0.1206 +2016-07-01|19.0|-81.0|-4.98106|-0.1237 +2016-07-01|19.0|-82.0|-4.3653|-0.12639 +2016-07-01|19.0|-83.0|-3.7502|-0.12865 +2016-07-01|19.0|-84.0|-3.13738|-0.13049 +2016-07-01|19.0|-85.0|-2.52849|-0.13191 +2016-07-01|19.0|-86.0|-1.9251|-0.1329 +2016-07-01|19.0|-87.0|-1.32877|-0.13348 +2016-07-01|19.0|-88.0|-0.74102|-0.13365 +2016-07-01|19.0|-89.0|-0.16329|-0.13343 +2016-07-01|19.0|-90.0|0.40303|-0.13284 +2016-07-01|19.0|-91.0|0.95662|-0.13189 +2016-07-01|19.0|-92.0|1.49629|-0.13062 +2016-07-01|19.0|-93.0|2.02089|-0.12905 +2016-07-01|19.0|-94.0|2.52943|-0.1272 +2016-07-01|19.0|-95.0|3.021|-0.12511 +2016-07-01|19.0|-96.0|3.49484|-0.12281 +2016-07-01|19.0|-97.0|3.9503|-0.12032 +2016-07-01|19.0|-98.0|4.38687|-0.11769 +2016-07-01|19.0|-99.0|4.80418|-0.11494 +2016-07-01|19.0|-100.0|5.20199|-0.11211 +2016-07-01|19.0|-101.0|5.5802|-0.10921 +2016-07-01|19.0|-102.0|5.93884|-0.10629 +2016-07-01|19.0|-103.0|6.27806|-0.10337 +2016-07-01|19.0|-104.0|6.59814|-0.10046 +2016-07-01|19.0|-105.0|6.89947|-0.09759 +2016-07-01|19.0|-106.0|7.18254|-0.09478 +2016-07-01|19.0|-107.0|7.44791|-0.09204 +2016-07-01|19.0|-108.0|7.69626|-0.08938 +2016-07-01|19.0|-109.0|7.92829|-0.08682 +2016-07-01|19.0|-110.0|8.14478|-0.08436 +2016-07-01|19.0|-111.0|8.34652|-0.082 +2016-07-01|19.0|-112.0|8.53435|-0.07975 +2016-07-01|19.0|-113.0|8.70909|-0.0776 +2016-07-01|19.0|-114.0|8.87155|-0.07556 +2016-07-01|19.0|-115.0|9.02255|-0.07362 +2016-07-01|19.0|-116.0|9.16283|-0.07178 +2016-07-01|19.0|-117.0|9.29313|-0.07002 +2016-07-01|19.0|-118.0|9.4141|-0.06835 +2016-07-01|19.0|-119.0|9.52634|-0.06675 +2016-07-01|19.0|-120.0|9.6304|-0.06522 +2016-07-01|19.0|-121.0|9.72672|-0.06375 +2016-07-01|19.0|-122.0|9.81569|-0.06234 +2016-07-01|19.0|-123.0|9.89763|-0.06098 +2016-07-01|19.0|-124.0|9.97277|-0.05965 +2016-07-01|19.0|-125.0|10.04127|-0.05836 +2016-07-01|19.0|-126.0|10.10325|-0.05711 +2016-07-01|19.0|-127.0|10.15876|-0.05588 +2016-07-01|19.0|-128.0|10.20781|-0.05468 +2016-07-01|19.0|-129.0|10.25036|-0.0535 +2016-07-01|19.0|-130.0|10.28636|-0.05235 +2016-07-01|19.0|-131.0|10.31574|-0.05121 +2016-07-01|19.0|-132.0|10.33845|-0.05011 +2016-07-01|19.0|-133.0|10.35442|-0.04902 +2016-07-01|19.0|-134.0|10.36362|-0.04795 +2016-07-01|19.0|-135.0|10.36605|-0.04692 +2016-07-01|19.0|-136.0|10.36175|-0.0459 +2016-07-01|19.0|-137.0|10.35082|-0.04491 +2016-07-01|19.0|-138.0|10.33341|-0.04395 +2016-07-01|19.0|-139.0|10.30972|-0.04302 +2016-07-01|19.0|-140.0|10.28004|-0.04211 +2016-07-01|19.0|-141.0|10.2447|-0.04122 +2016-07-01|19.0|-142.0|10.20412|-0.04036 +2016-07-01|19.0|-143.0|10.15877|-0.03952 +2016-07-01|19.0|-144.0|10.10916|-0.03869 +2016-07-01|19.0|-145.0|10.05588|-0.03789 +2016-07-01|19.0|-146.0|9.99954|-0.03709 +2016-07-01|19.0|-147.0|9.94079|-0.0363 +2016-07-01|19.0|-148.0|9.88029|-0.03551 +2016-07-01|19.0|-149.0|9.81873|-0.03472 +2016-07-01|19.0|-150.0|9.75678|-0.03393 +2016-07-01|19.0|-151.0|9.69508|-0.03312 +2016-07-01|19.0|-152.0|9.63425|-0.0323 +2016-07-01|19.0|-153.0|9.57486|-0.03146 +2016-07-01|19.0|-154.0|9.51743|-0.03059 +2016-07-01|19.0|-155.0|9.46239|-0.0297 +2016-07-01|19.0|-156.0|9.4101|-0.02878 +2016-07-01|19.0|-157.0|9.36083|-0.02782 +2016-07-01|19.0|-158.0|9.31475|-0.02684 +2016-07-01|19.0|-159.0|9.27189|-0.02582 +2016-07-01|19.0|-160.0|9.23221|-0.02478 +2016-07-01|19.0|-161.0|9.19553|-0.0237 +2016-07-01|19.0|-162.0|9.16157|-0.0226 +2016-07-01|19.0|-163.0|9.12991|-0.02148 +2016-07-01|19.0|-164.0|9.10005|-0.02034 +2016-07-01|19.0|-165.0|9.07136|-0.01918 +2016-07-01|19.0|-166.0|9.04313|-0.01803 +2016-07-01|19.0|-167.0|9.01455|-0.01687 +2016-07-01|19.0|-168.0|8.98476|-0.01572 +2016-07-01|19.0|-169.0|8.9528|-0.01459 +2016-07-01|19.0|-170.0|8.91771|-0.01349 +2016-07-01|19.0|-171.0|8.87846|-0.01242 +2016-07-01|19.0|-172.0|8.83403|-0.01139 +2016-07-01|19.0|-173.0|8.7834|-0.01042 +2016-07-01|19.0|-174.0|8.72556|-0.00951 +2016-07-01|19.0|-175.0|8.65955|-0.00867 +2016-07-01|19.0|-176.0|8.58445|-0.00791 +2016-07-01|19.0|-177.0|8.49943|-0.00724 +2016-07-01|19.0|-178.0|8.40372|-0.00667 +2016-07-01|19.0|-179.0|8.29666|-0.0062 +2016-07-01|20.0|0.0|-0.9088|0.08872 +2016-07-01|20.0|1.0|-0.68873|0.08768 +2016-07-01|20.0|2.0|-0.47789|0.0868 +2016-07-01|20.0|3.0|-0.2755|0.08608 +2016-07-01|20.0|4.0|-0.08075|0.08553 +2016-07-01|20.0|5.0|0.1072|0.08517 +2016-07-01|20.0|6.0|0.28918|0.08499 +2016-07-01|20.0|7.0|0.46601|0.08499 +2016-07-01|20.0|8.0|0.63846|0.08517 +2016-07-01|20.0|9.0|0.80725|0.08552 +2016-07-01|20.0|10.0|0.97299|0.08601 +2016-07-01|20.0|11.0|1.13621|0.08663 +2016-07-01|20.0|12.0|1.29733|0.08736 +2016-07-01|20.0|13.0|1.45661|0.08817 +2016-07-01|20.0|14.0|1.61422|0.08903 +2016-07-01|20.0|15.0|1.77013|0.08991 +2016-07-01|20.0|16.0|1.92419|0.09078 +2016-07-01|20.0|17.0|2.07611|0.09159 +2016-07-01|20.0|18.0|2.22542|0.09232 +2016-07-01|20.0|19.0|2.37155|0.09292 +2016-07-01|20.0|20.0|2.51378|0.09337 +2016-07-01|20.0|21.0|2.65129|0.09363 +2016-07-01|20.0|22.0|2.78316|0.09368 +2016-07-01|20.0|23.0|2.90838|0.09348 +2016-07-01|20.0|24.0|3.02593|0.09303 +2016-07-01|20.0|25.0|3.13473|0.0923 +2016-07-01|20.0|26.0|3.2337|0.09128 +2016-07-01|20.0|27.0|3.32181|0.08997 +2016-07-01|20.0|28.0|3.39805|0.08837 +2016-07-01|20.0|29.0|3.46151|0.0865 +2016-07-01|20.0|30.0|3.51138|0.08435 +2016-07-01|20.0|31.0|3.54698|0.08197 +2016-07-01|20.0|32.0|3.56776|0.07936 +2016-07-01|20.0|33.0|3.57335|0.07657 +2016-07-01|20.0|34.0|3.56355|0.07363 +2016-07-01|20.0|35.0|3.53836|0.07059 +2016-07-01|20.0|36.0|3.49796|0.06747 +2016-07-01|20.0|37.0|3.44274|0.06434 +2016-07-01|20.0|38.0|3.37328|0.06124 +2016-07-01|20.0|39.0|3.29034|0.05822 +2016-07-01|20.0|40.0|3.19485|0.05531 +2016-07-01|20.0|41.0|3.08789|0.05257 +2016-07-01|20.0|42.0|2.97071|0.05004 +2016-07-01|20.0|43.0|2.84463|0.04775 +2016-07-01|20.0|44.0|2.71107|0.04574 +2016-07-01|20.0|45.0|2.5715|0.04403 +2016-07-01|20.0|46.0|2.42745|0.04264 +2016-07-01|20.0|47.0|2.28039|0.04158 +2016-07-01|20.0|48.0|2.13181|0.04086 +2016-07-01|20.0|49.0|1.9831|0.04048 +2016-07-01|20.0|50.0|1.83559|0.04043 +2016-07-01|20.0|51.0|1.69049|0.0407 +2016-07-01|20.0|52.0|1.54888|0.04127 +2016-07-01|20.0|53.0|1.41172|0.04211 +2016-07-01|20.0|54.0|1.27979|0.0432 +2016-07-01|20.0|55.0|1.15371|0.0445 +2016-07-01|20.0|56.0|1.03397|0.04598 +2016-07-01|20.0|57.0|0.92088|0.0476 +2016-07-01|20.0|58.0|0.8146|0.04932 +2016-07-01|20.0|59.0|0.71515|0.05111 +2016-07-01|20.0|60.0|0.62243|0.05293 +2016-07-01|20.0|61.0|0.53623|0.05473 +2016-07-01|20.0|62.0|0.45623|0.0565 +2016-07-01|20.0|63.0|0.38207|0.0582 +2016-07-01|20.0|64.0|0.31332|0.0598 +2016-07-01|20.0|65.0|0.24951|0.06127 +2016-07-01|20.0|66.0|0.19017|0.06261 +2016-07-01|20.0|67.0|0.13483|0.06379 +2016-07-01|20.0|68.0|0.08304|0.06479 +2016-07-01|20.0|69.0|0.0344|0.06562 +2016-07-01|20.0|70.0|-0.01145|0.06627 +2016-07-01|20.0|71.0|-0.05484|0.06673 +2016-07-01|20.0|72.0|-0.09601|0.067 +2016-07-01|20.0|73.0|-0.13516|0.06709 +2016-07-01|20.0|74.0|-0.17241|0.06699 +2016-07-01|20.0|75.0|-0.20784|0.06673 +2016-07-01|20.0|76.0|-0.24149|0.06629 +2016-07-01|20.0|77.0|-0.27335|0.0657 +2016-07-01|20.0|78.0|-0.3034|0.06494 +2016-07-01|20.0|79.0|-0.33159|0.06403 +2016-07-01|20.0|80.0|-0.35788|0.06298 +2016-07-01|20.0|81.0|-0.38225|0.06178 +2016-07-01|20.0|82.0|-0.4047|0.06044 +2016-07-01|20.0|83.0|-0.42529|0.05895 +2016-07-01|20.0|84.0|-0.44411|0.05731 +2016-07-01|20.0|85.0|-0.46133|0.05553 +2016-07-01|20.0|86.0|-0.4772|0.05359 +2016-07-01|20.0|87.0|-0.49202|0.05148 +2016-07-01|20.0|88.0|-0.50618|0.04921 +2016-07-01|20.0|89.0|-0.52016|0.04676 +2016-07-01|20.0|90.0|-0.5345|0.04412 +2016-07-01|20.0|91.0|-0.54981|0.04129 +2016-07-01|20.0|92.0|-0.56674|0.03825 +2016-07-01|20.0|93.0|-0.58602|0.03501 +2016-07-01|20.0|94.0|-0.60837|0.03155 +2016-07-01|20.0|95.0|-0.63454|0.02787 +2016-07-01|20.0|96.0|-0.66529|0.02397 +2016-07-01|20.0|97.0|-0.70133|0.01986 +2016-07-01|20.0|98.0|-0.74332|0.01553 +2016-07-01|20.0|99.0|-0.79189|0.011 +2016-07-01|20.0|100.0|-0.84755|0.00628 +2016-07-01|20.0|101.0|-0.91072|0.00137 +2016-07-01|20.0|102.0|-0.98171|-0.00369 +2016-07-01|20.0|103.0|-1.06068|-0.0089 +2016-07-01|20.0|104.0|-1.14765|-0.01422 +2016-07-01|20.0|105.0|-1.24248|-0.01962 +2016-07-01|20.0|106.0|-1.34487|-0.02508 +2016-07-01|20.0|107.0|-1.45437|-0.03057 +2016-07-01|20.0|108.0|-1.57034|-0.03604 +2016-07-01|20.0|109.0|-1.69201|-0.04147 +2016-07-01|20.0|110.0|-1.81843|-0.04682 +2016-07-01|20.0|111.0|-1.94854|-0.05205 +2016-07-01|20.0|112.0|-2.08115|-0.05712 +2016-07-01|20.0|113.0|-2.21497|-0.06201 +2016-07-01|20.0|114.0|-2.34861|-0.06667 +2016-07-01|20.0|115.0|-2.48064|-0.07109 +2016-07-01|20.0|116.0|-2.60959|-0.07523 +2016-07-01|20.0|117.0|-2.73397|-0.07906 +2016-07-01|20.0|118.0|-2.85232|-0.08258 +2016-07-01|20.0|119.0|-2.96319|-0.08575 +2016-07-01|20.0|120.0|-3.06522|-0.08858 +2016-07-01|20.0|121.0|-3.1571|-0.09105 +2016-07-01|20.0|122.0|-3.23765|-0.09316 +2016-07-01|20.0|123.0|-3.30576|-0.09491 +2016-07-01|20.0|124.0|-3.36049|-0.0963 +2016-07-01|20.0|125.0|-3.40102|-0.09734 +2016-07-01|20.0|126.0|-3.42665|-0.09804 +2016-07-01|20.0|127.0|-3.43686|-0.09841 +2016-07-01|20.0|128.0|-3.43125|-0.09846 +2016-07-01|20.0|129.0|-3.40957|-0.09822 +2016-07-01|20.0|130.0|-3.37172|-0.09769 +2016-07-01|20.0|131.0|-3.31769|-0.09691 +2016-07-01|20.0|132.0|-3.24763|-0.09588 +2016-07-01|20.0|133.0|-3.16177|-0.09463 +2016-07-01|20.0|134.0|-3.06045|-0.09317 +2016-07-01|20.0|135.0|-2.94407|-0.09153 +2016-07-01|20.0|136.0|-2.81312|-0.08972 +2016-07-01|20.0|137.0|-2.66813|-0.08775 +2016-07-01|20.0|138.0|-2.50966|-0.08566 +2016-07-01|20.0|139.0|-2.33832|-0.08344 +2016-07-01|20.0|140.0|-2.15471|-0.08112 +2016-07-01|20.0|141.0|-1.95947|-0.07871 +2016-07-01|20.0|142.0|-1.7532|-0.07622 +2016-07-01|20.0|143.0|-1.53651|-0.07366 +2016-07-01|20.0|144.0|-1.31001|-0.07104 +2016-07-01|20.0|145.0|-1.07427|-0.06838 +2016-07-01|20.0|146.0|-0.82984|-0.06568 +2016-07-01|20.0|147.0|-0.57729|-0.06295 +2016-07-01|20.0|148.0|-0.31713|-0.0602 +2016-07-01|20.0|149.0|-0.0499|-0.05744 +2016-07-01|20.0|150.0|0.22388|-0.05467 +2016-07-01|20.0|151.0|0.5037|-0.05191 +2016-07-01|20.0|152.0|0.78902|-0.04917 +2016-07-01|20.0|153.0|1.07931|-0.04644 +2016-07-01|20.0|154.0|1.37398|-0.04375 +2016-07-01|20.0|155.0|1.67246|-0.04109 +2016-07-01|20.0|156.0|1.9741|-0.03849 +2016-07-01|20.0|157.0|2.27825|-0.03594 +2016-07-01|20.0|158.0|2.58418|-0.03346 +2016-07-01|20.0|159.0|2.89116|-0.03106 +2016-07-01|20.0|160.0|3.19838|-0.02874 +2016-07-01|20.0|161.0|3.50502|-0.02652 +2016-07-01|20.0|162.0|3.81019|-0.0244 +2016-07-01|20.0|163.0|4.11298|-0.0224 +2016-07-01|20.0|164.0|4.41248|-0.02051 +2016-07-01|20.0|165.0|4.70772|-0.01875 +2016-07-01|20.0|166.0|4.99775|-0.01712 +2016-07-01|20.0|167.0|5.28162|-0.01563 +2016-07-01|20.0|168.0|5.55841|-0.01428 +2016-07-01|20.0|169.0|5.82719|-0.01308 +2016-07-01|20.0|170.0|6.08712|-0.01202 +2016-07-01|20.0|171.0|6.3374|-0.01111 +2016-07-01|20.0|172.0|6.57728|-0.01035 +2016-07-01|20.0|173.0|6.80612|-0.00974 +2016-07-01|20.0|174.0|7.02335|-0.00928 +2016-07-01|20.0|175.0|7.22852|-0.00896 +2016-07-01|20.0|176.0|7.4213|-0.00878 +2016-07-01|20.0|177.0|7.60144|-0.00874 +2016-07-01|20.0|178.0|7.76886|-0.00882 +2016-07-01|20.0|179.0|7.92358|-0.00903 +2016-07-01|20.0|-1.0|-1.1388|0.0899 +2016-07-01|20.0|-2.0|-1.37937|0.0912 +2016-07-01|20.0|-3.0|-1.63105|0.0926 +2016-07-01|20.0|-4.0|-1.89427|0.09408 +2016-07-01|20.0|-5.0|-2.16935|0.09562 +2016-07-01|20.0|-6.0|-2.45647|0.09721 +2016-07-01|20.0|-7.0|-2.75569|0.09882 +2016-07-01|20.0|-8.0|-3.06694|0.10043 +2016-07-01|20.0|-9.0|-3.39003|0.10203 +2016-07-01|20.0|-10.0|-3.72461|0.10361 +2016-07-01|20.0|-11.0|-4.07023|0.10514 +2016-07-01|20.0|-12.0|-4.42633|0.10662 +2016-07-01|20.0|-13.0|-4.79223|0.10804 +2016-07-01|20.0|-14.0|-5.16717|0.10939 +2016-07-01|20.0|-15.0|-5.5503|0.11067 +2016-07-01|20.0|-16.0|-5.9407|0.11187 +2016-07-01|20.0|-17.0|-6.3374|0.11299 +2016-07-01|20.0|-18.0|-6.73938|0.11403 +2016-07-01|20.0|-19.0|-7.1456|0.11498 +2016-07-01|20.0|-20.0|-7.55498|0.11586 +2016-07-01|20.0|-21.0|-7.96646|0.11666 +2016-07-01|20.0|-22.0|-8.37895|0.11737 +2016-07-01|20.0|-23.0|-8.79138|0.11801 +2016-07-01|20.0|-24.0|-9.20271|0.11856 +2016-07-01|20.0|-25.0|-9.61189|0.11902 +2016-07-01|20.0|-26.0|-10.01791|0.1194 +2016-07-01|20.0|-27.0|-10.41976|0.11967 +2016-07-01|20.0|-28.0|-10.81648|0.11984 +2016-07-01|20.0|-29.0|-11.2071|0.1199 +2016-07-01|20.0|-30.0|-11.59069|0.11982 +2016-07-01|20.0|-31.0|-11.96631|0.11962 +2016-07-01|20.0|-32.0|-12.33306|0.11925 +2016-07-01|20.0|-33.0|-12.69001|0.11872 +2016-07-01|20.0|-34.0|-13.03626|0.11801 +2016-07-01|20.0|-35.0|-13.37088|0.11709 +2016-07-01|20.0|-36.0|-13.69295|0.11596 +2016-07-01|20.0|-37.0|-14.00153|0.1146 +2016-07-01|20.0|-38.0|-14.29568|0.11298 +2016-07-01|20.0|-39.0|-14.57444|0.1111 +2016-07-01|20.0|-40.0|-14.83683|0.10894 +2016-07-01|20.0|-41.0|-15.08186|0.10649 +2016-07-01|20.0|-42.0|-15.30856|0.10374 +2016-07-01|20.0|-43.0|-15.51591|0.10068 +2016-07-01|20.0|-44.0|-15.70293|0.09731 +2016-07-01|20.0|-45.0|-15.86864|0.09362 +2016-07-01|20.0|-46.0|-16.01206|0.0896 +2016-07-01|20.0|-47.0|-16.13227|0.08528 +2016-07-01|20.0|-48.0|-16.22835|0.08064 +2016-07-01|20.0|-49.0|-16.29945|0.0757 +2016-07-01|20.0|-50.0|-16.34477|0.07046 +2016-07-01|20.0|-51.0|-16.36358|0.06495 +2016-07-01|20.0|-52.0|-16.35521|0.05917 +2016-07-01|20.0|-53.0|-16.3191|0.05313 +2016-07-01|20.0|-54.0|-16.25478|0.04687 +2016-07-01|20.0|-55.0|-16.16187|0.0404 +2016-07-01|20.0|-56.0|-16.0401|0.03374 +2016-07-01|20.0|-57.0|-15.88934|0.02692 +2016-07-01|20.0|-58.0|-15.70955|0.01995 +2016-07-01|20.0|-59.0|-15.50082|0.01287 +2016-07-01|20.0|-60.0|-15.26338|0.0057 +2016-07-01|20.0|-61.0|-14.99755|-0.00154 +2016-07-01|20.0|-62.0|-14.70381|-0.00883 +2016-07-01|20.0|-63.0|-14.38273|-0.01612 +2016-07-01|20.0|-64.0|-14.03501|-0.02341 +2016-07-01|20.0|-65.0|-13.66143|-0.03065 +2016-07-01|20.0|-66.0|-13.26292|-0.03784 +2016-07-01|20.0|-67.0|-12.84046|-0.04493 +2016-07-01|20.0|-68.0|-12.39515|-0.05191 +2016-07-01|20.0|-69.0|-11.92817|-0.05875 +2016-07-01|20.0|-70.0|-11.44075|-0.06543 +2016-07-01|20.0|-71.0|-10.93421|-0.07191 +2016-07-01|20.0|-72.0|-10.40992|-0.07817 +2016-07-01|20.0|-73.0|-9.86933|-0.08419 +2016-07-01|20.0|-74.0|-9.31389|-0.08995 +2016-07-01|20.0|-75.0|-8.74515|-0.09542 +2016-07-01|20.0|-76.0|-8.16464|-0.10057 +2016-07-01|20.0|-77.0|-7.57396|-0.10539 +2016-07-01|20.0|-78.0|-6.97474|-0.10985 +2016-07-01|20.0|-79.0|-6.3686|-0.11394 +2016-07-01|20.0|-80.0|-5.75721|-0.11764 +2016-07-01|20.0|-81.0|-5.14224|-0.12093 +2016-07-01|20.0|-82.0|-4.52535|-0.12381 +2016-07-01|20.0|-83.0|-3.90823|-0.12626 +2016-07-01|20.0|-84.0|-3.29254|-0.12829 +2016-07-01|20.0|-85.0|-2.67993|-0.12988 +2016-07-01|20.0|-86.0|-2.07203|-0.13105 +2016-07-01|20.0|-87.0|-1.47043|-0.1318 +2016-07-01|20.0|-88.0|-0.87669|-0.13213 +2016-07-01|20.0|-89.0|-0.2923|-0.13207 +2016-07-01|20.0|-90.0|0.28132|-0.13162 +2016-07-01|20.0|-91.0|0.84281|-0.13082 +2016-07-01|20.0|-92.0|1.3909|-0.12968 +2016-07-01|20.0|-93.0|1.92442|-0.12823 +2016-07-01|20.0|-94.0|2.44231|-0.1265 +2016-07-01|20.0|-95.0|2.94362|-0.12451 +2016-07-01|20.0|-96.0|3.42752|-0.12231 +2016-07-01|20.0|-97.0|3.89333|-0.11992 +2016-07-01|20.0|-98.0|4.34048|-0.11738 +2016-07-01|20.0|-99.0|4.76855|-0.11471 +2016-07-01|20.0|-100.0|5.17724|-0.11194 +2016-07-01|20.0|-101.0|5.56641|-0.10912 +2016-07-01|20.0|-102.0|5.93603|-0.10626 +2016-07-01|20.0|-103.0|6.28621|-0.10339 +2016-07-01|20.0|-104.0|6.61719|-0.10053 +2016-07-01|20.0|-105.0|6.92929|-0.09771 +2016-07-01|20.0|-106.0|7.22298|-0.09494 +2016-07-01|20.0|-107.0|7.49878|-0.09224 +2016-07-01|20.0|-108.0|7.75731|-0.08962 +2016-07-01|20.0|-109.0|7.99924|-0.0871 +2016-07-01|20.0|-110.0|8.22532|-0.08467 +2016-07-01|20.0|-111.0|8.43631|-0.08235 +2016-07-01|20.0|-112.0|8.63301|-0.08013 +2016-07-01|20.0|-113.0|8.81621|-0.07803 +2016-07-01|20.0|-114.0|8.98671|-0.07602 +2016-07-01|20.0|-115.0|9.14528|-0.07412 +2016-07-01|20.0|-116.0|9.29268|-0.07231 +2016-07-01|20.0|-117.0|9.4296|-0.0706 +2016-07-01|20.0|-118.0|9.55669|-0.06897 +2016-07-01|20.0|-119.0|9.67456|-0.06742 +2016-07-01|20.0|-120.0|9.78371|-0.06594 +2016-07-01|20.0|-121.0|9.88462|-0.06453 +2016-07-01|20.0|-122.0|9.97767|-0.06316 +2016-07-01|20.0|-123.0|10.06317|-0.06185 +2016-07-01|20.0|-124.0|10.14136|-0.06059 +2016-07-01|20.0|-125.0|10.21244|-0.05936 +2016-07-01|20.0|-126.0|10.27651|-0.05816 +2016-07-01|20.0|-127.0|10.33365|-0.057 +2016-07-01|20.0|-128.0|10.38387|-0.05586 +2016-07-01|20.0|-129.0|10.42718|-0.05474 +2016-07-01|20.0|-130.0|10.46354|-0.05365 +2016-07-01|20.0|-131.0|10.49289|-0.05258 +2016-07-01|20.0|-132.0|10.51521|-0.05154 +2016-07-01|20.0|-133.0|10.53045|-0.05051 +2016-07-01|20.0|-134.0|10.53861|-0.04951 +2016-07-01|20.0|-135.0|10.53971|-0.04853 +2016-07-01|20.0|-136.0|10.53381|-0.04758 +2016-07-01|20.0|-137.0|10.52103|-0.04665 +2016-07-01|20.0|-138.0|10.50153|-0.04575 +2016-07-01|20.0|-139.0|10.47555|-0.04487 +2016-07-01|20.0|-140.0|10.44337|-0.04402 +2016-07-01|20.0|-141.0|10.40535|-0.04319 +2016-07-01|20.0|-142.0|10.36191|-0.04239 +2016-07-01|20.0|-143.0|10.31353|-0.0416 +2016-07-01|20.0|-144.0|10.26074|-0.04084 +2016-07-01|20.0|-145.0|10.20413|-0.04009 +2016-07-01|20.0|-146.0|10.1443|-0.03936 +2016-07-01|20.0|-147.0|10.08191|-0.03863 +2016-07-01|20.0|-148.0|10.01762|-0.03791 +2016-07-01|20.0|-149.0|9.9521|-0.03719 +2016-07-01|20.0|-150.0|9.88602|-0.03647 +2016-07-01|20.0|-151.0|9.82002|-0.03573 +2016-07-01|20.0|-152.0|9.7547|-0.03498 +2016-07-01|20.0|-153.0|9.69063|-0.03422 +2016-07-01|20.0|-154.0|9.6283|-0.03343 +2016-07-01|20.0|-155.0|9.56815|-0.03262 +2016-07-01|20.0|-156.0|9.51051|-0.03178 +2016-07-01|20.0|-157.0|9.45563|-0.03092 +2016-07-01|20.0|-158.0|9.40367|-0.03002 +2016-07-01|20.0|-159.0|9.35466|-0.02908 +2016-07-01|20.0|-160.0|9.30854|-0.02812 +2016-07-01|20.0|-161.0|9.26511|-0.02712 +2016-07-01|20.0|-162.0|9.22408|-0.0261 +2016-07-01|20.0|-163.0|9.18504|-0.02505 +2016-07-01|20.0|-164.0|9.14746|-0.02398 +2016-07-01|20.0|-165.0|9.11073|-0.02289 +2016-07-01|20.0|-166.0|9.07413|-0.02178 +2016-07-01|20.0|-167.0|9.03685|-0.02067 +2016-07-01|20.0|-168.0|8.99804|-0.01957 +2016-07-01|20.0|-169.0|8.95677|-0.01847 +2016-07-01|20.0|-170.0|8.91206|-0.01738 +2016-07-01|20.0|-171.0|8.86292|-0.01632 +2016-07-01|20.0|-172.0|8.80836|-0.0153 +2016-07-01|20.0|-173.0|8.74736|-0.01432 +2016-07-01|20.0|-174.0|8.67897|-0.01338 +2016-07-01|20.0|-175.0|8.60225|-0.01251 +2016-07-01|20.0|-176.0|8.51631|-0.01171 +2016-07-01|20.0|-177.0|8.42037|-0.01098 +2016-07-01|20.0|-178.0|8.31369|-0.01034 +2016-07-01|20.0|-179.0|8.19566|-0.0098 +2016-07-01|21.0|0.0|-0.79378|0.08886 +2016-07-01|21.0|1.0|-0.57486|0.08778 +2016-07-01|21.0|2.0|-0.36523|0.08684 +2016-07-01|21.0|3.0|-0.16415|0.08607 +2016-07-01|21.0|4.0|0.02917|0.08546 +2016-07-01|21.0|5.0|0.21556|0.08504 +2016-07-01|21.0|6.0|0.39584|0.0848 +2016-07-01|21.0|7.0|0.57081|0.08473 +2016-07-01|21.0|8.0|0.74125|0.08485 +2016-07-01|21.0|9.0|0.90787|0.08512 +2016-07-01|21.0|10.0|1.0713|0.08555 +2016-07-01|21.0|11.0|1.23206|0.08611 +2016-07-01|21.0|12.0|1.3906|0.08679 +2016-07-01|21.0|13.0|1.54721|0.08755 +2016-07-01|21.0|14.0|1.70205|0.08836 +2016-07-01|21.0|15.0|1.85515|0.0892 +2016-07-01|21.0|16.0|2.00639|0.09004 +2016-07-01|21.0|17.0|2.1555|0.09084 +2016-07-01|21.0|18.0|2.30206|0.09155 +2016-07-01|21.0|19.0|2.44554|0.09216 +2016-07-01|21.0|20.0|2.58525|0.09263 +2016-07-01|21.0|21.0|2.72042|0.09292 +2016-07-01|21.0|22.0|2.85017|0.09301 +2016-07-01|21.0|23.0|2.97354|0.09287 +2016-07-01|21.0|24.0|3.08953|0.09249 +2016-07-01|21.0|25.0|3.1971|0.09184 +2016-07-01|21.0|26.0|3.29522|0.09091 +2016-07-01|21.0|27.0|3.38286|0.08971 +2016-07-01|21.0|28.0|3.45906|0.08822 +2016-07-01|21.0|29.0|3.52291|0.08647 +2016-07-01|21.0|30.0|3.57361|0.08445 +2016-07-01|21.0|31.0|3.61049|0.08219 +2016-07-01|21.0|32.0|3.633|0.07972 +2016-07-01|21.0|33.0|3.64075|0.07706 +2016-07-01|21.0|34.0|3.63355|0.07425 +2016-07-01|21.0|35.0|3.61136|0.07133 +2016-07-01|21.0|36.0|3.57433|0.06834 +2016-07-01|21.0|37.0|3.52283|0.06532 +2016-07-01|21.0|38.0|3.45739|0.06232 +2016-07-01|21.0|39.0|3.37872|0.05938 +2016-07-01|21.0|40.0|3.28773|0.05655 +2016-07-01|21.0|41.0|3.18544|0.05388 +2016-07-01|21.0|42.0|3.07304|0.05139 +2016-07-01|21.0|43.0|2.95181|0.04913 +2016-07-01|21.0|44.0|2.82312|0.04713 +2016-07-01|21.0|45.0|2.68841|0.04541 +2016-07-01|21.0|46.0|2.54911|0.04399 +2016-07-01|21.0|47.0|2.40671|0.0429 +2016-07-01|21.0|48.0|2.26261|0.04213 +2016-07-01|21.0|49.0|2.1182|0.04168 +2016-07-01|21.0|50.0|1.97476|0.04155 +2016-07-01|21.0|51.0|1.83348|0.04174 +2016-07-01|21.0|52.0|1.69543|0.04221 +2016-07-01|21.0|53.0|1.56154|0.04295 +2016-07-01|21.0|54.0|1.43259|0.04393 +2016-07-01|21.0|55.0|1.3092|0.04512 +2016-07-01|21.0|56.0|1.19185|0.04648 +2016-07-01|21.0|57.0|1.08086|0.04799 +2016-07-01|21.0|58.0|0.97638|0.0496 +2016-07-01|21.0|59.0|0.87847|0.05128 +2016-07-01|21.0|60.0|0.78701|0.053 +2016-07-01|21.0|61.0|0.70182|0.05471 +2016-07-01|21.0|62.0|0.6226|0.05639 +2016-07-01|21.0|63.0|0.54897|0.05801 +2016-07-01|21.0|64.0|0.48052|0.05954 +2016-07-01|21.0|65.0|0.41681|0.06095 +2016-07-01|21.0|66.0|0.35734|0.06223 +2016-07-01|21.0|67.0|0.30167|0.06337 +2016-07-01|21.0|68.0|0.24934|0.06434 +2016-07-01|21.0|69.0|0.19993|0.06514 +2016-07-01|21.0|70.0|0.15307|0.06576 +2016-07-01|21.0|71.0|0.10843|0.0662 +2016-07-01|21.0|72.0|0.06575|0.06646 +2016-07-01|21.0|73.0|0.02481|0.06654 +2016-07-01|21.0|74.0|-0.01453|0.06645 +2016-07-01|21.0|75.0|-0.0524|0.06618 +2016-07-01|21.0|76.0|-0.08883|0.06574 +2016-07-01|21.0|77.0|-0.12386|0.06515 +2016-07-01|21.0|78.0|-0.15747|0.06439 +2016-07-01|21.0|79.0|-0.18966|0.06348 +2016-07-01|21.0|80.0|-0.2204|0.06242 +2016-07-01|21.0|81.0|-0.24968|0.06122 +2016-07-01|21.0|82.0|-0.27754|0.05987 +2016-07-01|21.0|83.0|-0.30402|0.05837 +2016-07-01|21.0|84.0|-0.32923|0.05673 +2016-07-01|21.0|85.0|-0.35335|0.05493 +2016-07-01|21.0|86.0|-0.37659|0.05298 +2016-07-01|21.0|87.0|-0.39927|0.05086 +2016-07-01|21.0|88.0|-0.42176|0.04857 +2016-07-01|21.0|89.0|-0.4445|0.04611 +2016-07-01|21.0|90.0|-0.468|0.04346 +2016-07-01|21.0|91.0|-0.49284|0.04062 +2016-07-01|21.0|92.0|-0.51965|0.03758 +2016-07-01|21.0|93.0|-0.54909|0.03434 +2016-07-01|21.0|94.0|-0.58185|0.03088 +2016-07-01|21.0|95.0|-0.61864|0.02722 +2016-07-01|21.0|96.0|-0.66014|0.02334 +2016-07-01|21.0|97.0|-0.70702|0.01925 +2016-07-01|21.0|98.0|-0.75992|0.01496 +2016-07-01|21.0|99.0|-0.81938|0.01047 +2016-07-01|21.0|100.0|-0.88589|0.00579 +2016-07-01|21.0|101.0|-0.95981|9.4E-4 +2016-07-01|21.0|102.0|-1.04142|-0.00406 +2016-07-01|21.0|103.0|-1.13084|-0.00919 +2016-07-01|21.0|104.0|-1.22806|-0.01444 +2016-07-01|21.0|105.0|-1.33291|-0.01976 +2016-07-01|21.0|106.0|-1.44508|-0.02513 +2016-07-01|21.0|107.0|-1.56409|-0.03052 +2016-07-01|21.0|108.0|-1.6893|-0.0359 +2016-07-01|21.0|109.0|-1.81994|-0.04123 +2016-07-01|21.0|110.0|-1.95505|-0.04648 +2016-07-01|21.0|111.0|-2.09359|-0.0516 +2016-07-01|21.0|112.0|-2.23437|-0.05658 +2016-07-01|21.0|113.0|-2.37611|-0.06136 +2016-07-01|21.0|114.0|-2.51746|-0.06593 +2016-07-01|21.0|115.0|-2.65698|-0.07026 +2016-07-01|21.0|116.0|-2.79324|-0.07431 +2016-07-01|21.0|117.0|-2.92476|-0.07806 +2016-07-01|21.0|118.0|-3.05009|-0.0815 +2016-07-01|21.0|119.0|-3.16783|-0.08462 +2016-07-01|21.0|120.0|-3.2766|-0.08739 +2016-07-01|21.0|121.0|-3.37513|-0.08981 +2016-07-01|21.0|122.0|-3.46223|-0.09188 +2016-07-01|21.0|123.0|-3.53682|-0.0936 +2016-07-01|21.0|124.0|-3.59795|-0.09496 +2016-07-01|21.0|125.0|-3.64478|-0.09599 +2016-07-01|21.0|126.0|-3.67663|-0.09668 +2016-07-01|21.0|127.0|-3.69296|-0.09706 +2016-07-01|21.0|128.0|-3.69336|-0.09713 +2016-07-01|21.0|129.0|-3.67756|-0.0969 +2016-07-01|21.0|130.0|-3.64543|-0.09641 +2016-07-01|21.0|131.0|-3.59695|-0.09566 +2016-07-01|21.0|132.0|-3.53223|-0.09467 +2016-07-01|21.0|133.0|-3.45149|-0.09346 +2016-07-01|21.0|134.0|-3.35502|-0.09206 +2016-07-01|21.0|135.0|-3.24322|-0.09047 +2016-07-01|21.0|136.0|-3.11653|-0.08872 +2016-07-01|21.0|137.0|-2.97546|-0.08683 +2016-07-01|21.0|138.0|-2.82056|-0.0848 +2016-07-01|21.0|139.0|-2.65241|-0.08265 +2016-07-01|21.0|140.0|-2.47159|-0.08041 +2016-07-01|21.0|141.0|-2.27873|-0.07807 +2016-07-01|21.0|142.0|-2.07441|-0.07565 +2016-07-01|21.0|143.0|-1.85925|-0.07317 +2016-07-01|21.0|144.0|-1.63384|-0.07064 +2016-07-01|21.0|145.0|-1.39875|-0.06805 +2016-07-01|21.0|146.0|-1.15455|-0.06544 +2016-07-01|21.0|147.0|-0.9018|-0.06279 +2016-07-01|21.0|148.0|-0.64102|-0.06012 +2016-07-01|21.0|149.0|-0.37276|-0.05745 +2016-07-01|21.0|150.0|-0.09755|-0.05477 +2016-07-01|21.0|151.0|0.18408|-0.0521 +2016-07-01|21.0|152.0|0.47159|-0.04944 +2016-07-01|21.0|153.0|0.76443|-0.04681 +2016-07-01|21.0|154.0|1.06201|-0.04421 +2016-07-01|21.0|155.0|1.36373|-0.04166 +2016-07-01|21.0|156.0|1.66895|-0.03915 +2016-07-01|21.0|157.0|1.97701|-0.03671 +2016-07-01|21.0|158.0|2.28719|-0.03434 +2016-07-01|21.0|159.0|2.59874|-0.03205 +2016-07-01|21.0|160.0|2.91085|-0.02985 +2016-07-01|21.0|161.0|3.22271|-0.02774 +2016-07-01|21.0|162.0|3.53343|-0.02575 +2016-07-01|21.0|163.0|3.84212|-0.02387 +2016-07-01|21.0|164.0|4.14785|-0.02211 +2016-07-01|21.0|165.0|4.44968|-0.02048 +2016-07-01|21.0|166.0|4.74666|-0.01898 +2016-07-01|21.0|167.0|5.03784|-0.01762 +2016-07-01|21.0|168.0|5.32229|-0.01641 +2016-07-01|21.0|169.0|5.59911|-0.01534 +2016-07-01|21.0|170.0|5.86744|-0.01442 +2016-07-01|21.0|171.0|6.12647|-0.01365 +2016-07-01|21.0|172.0|6.37546|-0.01303 +2016-07-01|21.0|173.0|6.61374|-0.01255 +2016-07-01|21.0|174.0|6.84074|-0.01222 +2016-07-01|21.0|175.0|7.05599|-0.01203 +2016-07-01|21.0|176.0|7.25912|-0.01197 +2016-07-01|21.0|177.0|7.44987|-0.01205 +2016-07-01|21.0|178.0|7.62812|-0.01225 +2016-07-01|21.0|179.0|7.79385|-0.01256 +2016-07-01|21.0|-1.0|-1.02269|0.09008 +2016-07-01|21.0|-2.0|-1.26218|0.09141 +2016-07-01|21.0|-3.0|-1.51278|0.09284 +2016-07-01|21.0|-4.0|-1.77488|0.09434 +2016-07-01|21.0|-5.0|-2.04876|0.0959 +2016-07-01|21.0|-6.0|-2.3346|0.0975 +2016-07-01|21.0|-7.0|-2.63242|0.09912 +2016-07-01|21.0|-8.0|-2.94213|0.10073 +2016-07-01|21.0|-9.0|-3.26349|0.10233 +2016-07-01|21.0|-10.0|-3.59617|0.1039 +2016-07-01|21.0|-11.0|-3.93969|0.10543 +2016-07-01|21.0|-12.0|-4.29346|0.1069 +2016-07-01|21.0|-13.0|-4.65682|0.1083 +2016-07-01|21.0|-14.0|-5.029|0.10964 +2016-07-01|21.0|-15.0|-5.40914|0.1109 +2016-07-01|21.0|-16.0|-5.79633|0.11209 +2016-07-01|21.0|-17.0|-6.18962|0.1132 +2016-07-01|21.0|-18.0|-6.58801|0.11423 +2016-07-01|21.0|-19.0|-6.99046|0.11518 +2016-07-01|21.0|-20.0|-7.39594|0.11606 +2016-07-01|21.0|-21.0|-7.8034|0.11686 +2016-07-01|21.0|-22.0|-8.2118|0.11758 +2016-07-01|21.0|-23.0|-8.62011|0.11823 +2016-07-01|21.0|-24.0|-9.02731|0.1188 +2016-07-01|21.0|-25.0|-9.43241|0.11929 +2016-07-01|21.0|-26.0|-9.83444|0.11969 +2016-07-01|21.0|-27.0|-10.23245|0.12001 +2016-07-01|21.0|-28.0|-10.62551|0.12024 +2016-07-01|21.0|-29.0|-11.01272|0.12036 +2016-07-01|21.0|-30.0|-11.39319|0.12036 +2016-07-01|21.0|-31.0|-11.76606|0.12024 +2016-07-01|21.0|-32.0|-12.13044|0.11998 +2016-07-01|21.0|-33.0|-12.48548|0.11956 +2016-07-01|21.0|-34.0|-12.83033|0.11897 +2016-07-01|21.0|-35.0|-13.1641|0.11819 +2016-07-01|21.0|-36.0|-13.48591|0.1172 +2016-07-01|21.0|-37.0|-13.79489|0.11599 +2016-07-01|21.0|-38.0|-14.09011|0.11455 +2016-07-01|21.0|-39.0|-14.37064|0.11285 +2016-07-01|21.0|-40.0|-14.63556|0.11088 +2016-07-01|21.0|-41.0|-14.88389|0.10862 +2016-07-01|21.0|-42.0|-15.11466|0.10608 +2016-07-01|21.0|-43.0|-15.32689|0.10323 +2016-07-01|21.0|-44.0|-15.51959|0.10007 +2016-07-01|21.0|-45.0|-15.69178|0.09659 +2016-07-01|21.0|-46.0|-15.84248|0.0928 +2016-07-01|21.0|-47.0|-15.97074|0.08868 +2016-07-01|21.0|-48.0|-16.07563|0.08426 +2016-07-01|21.0|-49.0|-16.15627|0.07953 +2016-07-01|21.0|-50.0|-16.21181|0.07449 +2016-07-01|21.0|-51.0|-16.24149|0.06917 +2016-07-01|21.0|-52.0|-16.24459|0.06357 +2016-07-01|21.0|-53.0|-16.22048|0.05771 +2016-07-01|21.0|-54.0|-16.16863|0.05161 +2016-07-01|21.0|-55.0|-16.0886|0.04528 +2016-07-01|21.0|-56.0|-15.98004|0.03875 +2016-07-01|21.0|-57.0|-15.84275|0.03204 +2016-07-01|21.0|-58.0|-15.6766|0.02516 +2016-07-01|21.0|-59.0|-15.48161|0.01816 +2016-07-01|21.0|-60.0|-15.25791|0.01104 +2016-07-01|21.0|-61.0|-15.00576|0.00383 +2016-07-01|21.0|-62.0|-14.72553|-0.00344 +2016-07-01|21.0|-63.0|-14.41771|-0.01074 +2016-07-01|21.0|-64.0|-14.08292|-0.01805 +2016-07-01|21.0|-65.0|-13.72188|-0.02534 +2016-07-01|21.0|-66.0|-13.33541|-0.03258 +2016-07-01|21.0|-67.0|-12.92445|-0.03975 +2016-07-01|21.0|-68.0|-12.49001|-0.04683 +2016-07-01|21.0|-69.0|-12.0332|-0.05378 +2016-07-01|21.0|-70.0|-11.55523|-0.06058 +2016-07-01|21.0|-71.0|-11.05734|-0.0672 +2016-07-01|21.0|-72.0|-10.54087|-0.07361 +2016-07-01|21.0|-73.0|-10.00722|-0.07979 +2016-07-01|21.0|-74.0|-9.45782|-0.08571 +2016-07-01|21.0|-75.0|-8.89419|-0.09136 +2016-07-01|21.0|-76.0|-8.31786|-0.09669 +2016-07-01|21.0|-77.0|-7.7304|-0.10169 +2016-07-01|21.0|-78.0|-7.13344|-0.10635 +2016-07-01|21.0|-79.0|-6.52862|-0.11063 +2016-07-01|21.0|-80.0|-5.9176|-0.11452 +2016-07-01|21.0|-81.0|-5.30206|-0.11801 +2016-07-01|21.0|-82.0|-4.68371|-0.12108 +2016-07-01|21.0|-83.0|-4.06422|-0.12372 +2016-07-01|21.0|-84.0|-3.44532|-0.12593 +2016-07-01|21.0|-85.0|-2.82866|-0.12771 +2016-07-01|21.0|-86.0|-2.21593|-0.12906 +2016-07-01|21.0|-87.0|-1.60874|-0.12998 +2016-07-01|21.0|-88.0|-1.0087|-0.13048 +2016-07-01|21.0|-89.0|-0.41734|-0.13057 +2016-07-01|21.0|-90.0|0.16386|-0.13028 +2016-07-01|21.0|-91.0|0.7335|-0.12963 +2016-07-01|21.0|-92.0|1.29027|-0.12863 +2016-07-01|21.0|-93.0|1.83293|-0.12731 +2016-07-01|21.0|-94.0|2.36039|-0.1257 +2016-07-01|21.0|-95.0|2.87164|-0.12383 +2016-07-01|21.0|-96.0|3.3658|-0.12174 +2016-07-01|21.0|-97.0|3.84212|-0.11945 +2016-07-01|21.0|-98.0|4.3|-0.117 +2016-07-01|21.0|-99.0|4.73896|-0.11442 +2016-07-01|21.0|-100.0|5.15866|-0.11173 +2016-07-01|21.0|-101.0|5.55889|-0.10898 +2016-07-01|21.0|-102.0|5.9396|-0.10619 +2016-07-01|21.0|-103.0|6.30083|-0.10338 +2016-07-01|21.0|-104.0|6.64278|-0.10059 +2016-07-01|21.0|-105.0|6.96573|-0.09782 +2016-07-01|21.0|-106.0|7.2701|-0.0951 +2016-07-01|21.0|-107.0|7.55638|-0.09245 +2016-07-01|21.0|-108.0|7.82515|-0.08988 +2016-07-01|21.0|-109.0|8.07704|-0.0874 +2016-07-01|21.0|-110.0|8.31275|-0.08502 +2016-07-01|21.0|-111.0|8.53303|-0.08274 +2016-07-01|21.0|-112.0|8.73864|-0.08056 +2016-07-01|21.0|-113.0|8.93034|-0.07849 +2016-07-01|21.0|-114.0|9.10891|-0.07653 +2016-07-01|21.0|-115.0|9.27511|-0.07467 +2016-07-01|21.0|-116.0|9.42965|-0.07291 +2016-07-01|21.0|-117.0|9.57322|-0.07124 +2016-07-01|21.0|-118.0|9.70648|-0.06966 +2016-07-01|21.0|-119.0|9.82999|-0.06815 +2016-07-01|21.0|-120.0|9.94428|-0.06672 +2016-07-01|21.0|-121.0|10.04981|-0.06536 +2016-07-01|21.0|-122.0|10.14696|-0.06405 +2016-07-01|21.0|-123.0|10.23606|-0.0628 +2016-07-01|21.0|-124.0|10.31735|-0.06159 +2016-07-01|21.0|-125.0|10.39102|-0.06042 +2016-07-01|21.0|-126.0|10.45722|-0.05929 +2016-07-01|21.0|-127.0|10.51602|-0.05818 +2016-07-01|21.0|-128.0|10.56746|-0.05711 +2016-07-01|21.0|-129.0|10.61156|-0.05606 +2016-07-01|21.0|-130.0|10.6483|-0.05503 +2016-07-01|21.0|-131.0|10.67767|-0.05403 +2016-07-01|21.0|-132.0|10.69963|-0.05305 +2016-07-01|21.0|-133.0|10.71419|-0.05209 +2016-07-01|21.0|-134.0|10.72135|-0.05115 +2016-07-01|21.0|-135.0|10.72115|-0.05024 +2016-07-01|21.0|-136.0|10.71368|-0.04935 +2016-07-01|21.0|-137.0|10.69908|-0.04848 +2016-07-01|21.0|-138.0|10.67752|-0.04764 +2016-07-01|21.0|-139.0|10.64927|-0.04683 +2016-07-01|21.0|-140.0|10.61461|-0.04604 +2016-07-01|21.0|-141.0|10.57392|-0.04527 +2016-07-01|21.0|-142.0|10.52763|-0.04453 +2016-07-01|21.0|-143.0|10.47622|-0.04381 +2016-07-01|21.0|-144.0|10.42023|-0.04312 +2016-07-01|21.0|-145.0|10.36025|-0.04243 +2016-07-01|21.0|-146.0|10.29687|-0.04177 +2016-07-01|21.0|-147.0|10.23077|-0.04111 +2016-07-01|21.0|-148.0|10.16258|-0.04046 +2016-07-01|21.0|-149.0|10.09298|-0.03981 +2016-07-01|21.0|-150.0|10.02263|-0.03916 +2016-07-01|21.0|-151.0|9.95214|-0.03851 +2016-07-01|21.0|-152.0|9.88213|-0.03784 +2016-07-01|21.0|-153.0|9.81313|-0.03716 +2016-07-01|21.0|-154.0|9.74563|-0.03646 +2016-07-01|21.0|-155.0|9.68004|-0.03573 +2016-07-01|21.0|-156.0|9.61669|-0.03498 +2016-07-01|21.0|-157.0|9.55583|-0.03419 +2016-07-01|21.0|-158.0|9.49757|-0.03338 +2016-07-01|21.0|-159.0|9.44196|-0.03253 +2016-07-01|21.0|-160.0|9.38891|-0.03165 +2016-07-01|21.0|-161.0|9.33822|-0.03073 +2016-07-01|21.0|-162.0|9.28959|-0.02979 +2016-07-01|21.0|-163.0|9.2426|-0.02881 +2016-07-01|21.0|-164.0|9.19673|-0.0278 +2016-07-01|21.0|-165.0|9.15136|-0.02677 +2016-07-01|21.0|-166.0|9.10578|-0.02572 +2016-07-01|21.0|-167.0|9.05919|-0.02466 +2016-07-01|21.0|-168.0|9.01074|-0.02358 +2016-07-01|21.0|-169.0|8.95953|-0.02251 +2016-07-01|21.0|-170.0|8.9046|-0.02144 +2016-07-01|21.0|-171.0|8.84498|-0.02039 +2016-07-01|21.0|-172.0|8.7797|-0.01936 +2016-07-01|21.0|-173.0|8.70779|-0.01836 +2016-07-01|21.0|-174.0|8.62831|-0.0174 +2016-07-01|21.0|-175.0|8.54036|-0.01649 +2016-07-01|21.0|-176.0|8.44312|-0.01564 +2016-07-01|21.0|-177.0|8.3358|-0.01485 +2016-07-01|21.0|-178.0|8.21775|-0.01414 +2016-07-01|21.0|-179.0|8.08837|-0.01352 +2016-07-01|22.0|0.0|-0.68544|0.08914 +2016-07-01|22.0|1.0|-0.46731|0.08802 +2016-07-01|22.0|2.0|-0.25854|0.08703 +2016-07-01|22.0|3.0|-0.0584|0.08621 +2016-07-01|22.0|4.0|0.13386|0.08555 +2016-07-01|22.0|5.0|0.31907|0.08506 +2016-07-01|22.0|6.0|0.49801|0.08476 +2016-07-01|22.0|7.0|0.6715|0.08463 +2016-07-01|22.0|8.0|0.84029|0.08468 +2016-07-01|22.0|9.0|1.0051|0.08489 +2016-07-01|22.0|10.0|1.16655|0.08525 +2016-07-01|22.0|11.0|1.3252|0.08575 +2016-07-01|22.0|12.0|1.48148|0.08636 +2016-07-01|22.0|13.0|1.63571|0.08707 +2016-07-01|22.0|14.0|1.78808|0.08784 +2016-07-01|22.0|15.0|1.93864|0.08864 +2016-07-01|22.0|16.0|2.0873|0.08944 +2016-07-01|22.0|17.0|2.23383|0.09021 +2016-07-01|22.0|18.0|2.37786|0.09092 +2016-07-01|22.0|19.0|2.51887|0.09153 +2016-07-01|22.0|20.0|2.65623|0.092 +2016-07-01|22.0|21.0|2.78922|0.09232 +2016-07-01|22.0|22.0|2.91698|0.09245 +2016-07-01|22.0|23.0|3.03861|0.09236 +2016-07-01|22.0|24.0|3.15315|0.09203 +2016-07-01|22.0|25.0|3.25958|0.09146 +2016-07-01|22.0|26.0|3.35692|0.09062 +2016-07-01|22.0|27.0|3.44416|0.08951 +2016-07-01|22.0|28.0|3.52037|0.08813 +2016-07-01|22.0|29.0|3.58466|0.08649 +2016-07-01|22.0|30.0|3.63625|0.08459 +2016-07-01|22.0|31.0|3.67445|0.08246 +2016-07-01|22.0|32.0|3.69874|0.08012 +2016-07-01|22.0|33.0|3.70872|0.07759 +2016-07-01|22.0|34.0|3.70416|0.0749 +2016-07-01|22.0|35.0|3.68503|0.0721 +2016-07-01|22.0|36.0|3.65144|0.06923 +2016-07-01|22.0|37.0|3.60373|0.06632 +2016-07-01|22.0|38.0|3.5424|0.06341 +2016-07-01|22.0|39.0|3.46811|0.06056 +2016-07-01|22.0|40.0|3.38172|0.05781 +2016-07-01|22.0|41.0|3.28421|0.05519 +2016-07-01|22.0|42.0|3.17672|0.05274 +2016-07-01|22.0|43.0|3.06047|0.05051 +2016-07-01|22.0|44.0|2.93679|0.04852 +2016-07-01|22.0|45.0|2.80706|0.04679 +2016-07-01|22.0|46.0|2.67267|0.04536 +2016-07-01|22.0|47.0|2.53506|0.04422 +2016-07-01|22.0|48.0|2.3956|0.0434 +2016-07-01|22.0|49.0|2.25563|0.04289 +2016-07-01|22.0|50.0|2.1164|0.04268 +2016-07-01|22.0|51.0|1.97908|0.04277 +2016-07-01|22.0|52.0|1.84472|0.04315 +2016-07-01|22.0|53.0|1.71422|0.04378 +2016-07-01|22.0|54.0|1.58835|0.04465 +2016-07-01|22.0|55.0|1.46775|0.04573 +2016-07-01|22.0|56.0|1.35287|0.04698 +2016-07-01|22.0|57.0|1.24404|0.04837 +2016-07-01|22.0|58.0|1.14143|0.04987 +2016-07-01|22.0|59.0|1.04508|0.05144 +2016-07-01|22.0|60.0|0.95492|0.05305 +2016-07-01|22.0|61.0|0.87075|0.05467 +2016-07-01|22.0|62.0|0.79229|0.05626 +2016-07-01|22.0|63.0|0.71918|0.0578 +2016-07-01|22.0|64.0|0.65102|0.05925 +2016-07-01|22.0|65.0|0.58735|0.0606 +2016-07-01|22.0|66.0|0.52772|0.06183 +2016-07-01|22.0|67.0|0.47166|0.06292 +2016-07-01|22.0|68.0|0.41872|0.06385 +2016-07-01|22.0|69.0|0.36848|0.06462 +2016-07-01|22.0|70.0|0.32055|0.06522 +2016-07-01|22.0|71.0|0.2746|0.06565 +2016-07-01|22.0|72.0|0.23034|0.0659 +2016-07-01|22.0|73.0|0.18754|0.06597 +2016-07-01|22.0|74.0|0.14603|0.06587 +2016-07-01|22.0|75.0|0.10568|0.0656 +2016-07-01|22.0|76.0|0.06641|0.06516 +2016-07-01|22.0|77.0|0.02817|0.06457 +2016-07-01|22.0|78.0|-0.00906|0.06381 +2016-07-01|22.0|79.0|-0.04529|0.0629 +2016-07-01|22.0|80.0|-0.08052|0.06184 +2016-07-01|22.0|81.0|-0.11475|0.06064 +2016-07-01|22.0|82.0|-0.14804|0.05928 +2016-07-01|22.0|83.0|-0.18044|0.05778 +2016-07-01|22.0|84.0|-0.21207|0.05612 +2016-07-01|22.0|85.0|-0.24309|0.05431 +2016-07-01|22.0|86.0|-0.27374|0.05235 +2016-07-01|22.0|87.0|-0.3043|0.05022 +2016-07-01|22.0|88.0|-0.33514|0.04792 +2016-07-01|22.0|89.0|-0.36666|0.04545 +2016-07-01|22.0|90.0|-0.39936|0.04279 +2016-07-01|22.0|91.0|-0.43379|0.03995 +2016-07-01|22.0|92.0|-0.47051|0.03691 +2016-07-01|22.0|93.0|-0.51017|0.03366 +2016-07-01|22.0|94.0|-0.55341|0.03022 +2016-07-01|22.0|95.0|-0.60087|0.02656 +2016-07-01|22.0|96.0|-0.65321|0.02271 +2016-07-01|22.0|97.0|-0.71104|0.01864 +2016-07-01|22.0|98.0|-0.77494|0.01438 +2016-07-01|22.0|99.0|-0.84542|0.00993 +2016-07-01|22.0|100.0|-0.92291|0.0053 +2016-07-01|22.0|101.0|-1.00773|5.1E-4 +2016-07-01|22.0|102.0|-1.10012|-0.00443 +2016-07-01|22.0|103.0|-1.20016|-0.00949 +2016-07-01|22.0|104.0|-1.3078|-0.01465 +2016-07-01|22.0|105.0|-1.42287|-0.01989 +2016-07-01|22.0|106.0|-1.54502|-0.02517 +2016-07-01|22.0|107.0|-1.67375|-0.03047 +2016-07-01|22.0|108.0|-1.80842|-0.03575 +2016-07-01|22.0|109.0|-1.94824|-0.04098 +2016-07-01|22.0|110.0|-2.09228|-0.04612 +2016-07-01|22.0|111.0|-2.23947|-0.05115 +2016-07-01|22.0|112.0|-2.38865|-0.05602 +2016-07-01|22.0|113.0|-2.53854|-0.06071 +2016-07-01|22.0|114.0|-2.6878|-0.06518 +2016-07-01|22.0|115.0|-2.83504|-0.06941 +2016-07-01|22.0|116.0|-2.97881|-0.07337 +2016-07-01|22.0|117.0|-3.11767|-0.07704 +2016-07-01|22.0|118.0|-3.25019|-0.08041 +2016-07-01|22.0|119.0|-3.37497|-0.08345 +2016-07-01|22.0|120.0|-3.49067|-0.08616 +2016-07-01|22.0|121.0|-3.59601|-0.08853 +2016-07-01|22.0|122.0|-3.68981|-0.09056 +2016-07-01|22.0|123.0|-3.77101|-0.09224 +2016-07-01|22.0|124.0|-3.83865|-0.09359 +2016-07-01|22.0|125.0|-3.89191|-0.0946 +2016-07-01|22.0|126.0|-3.93008|-0.09528 +2016-07-01|22.0|127.0|-3.95262|-0.09566 +2016-07-01|22.0|128.0|-3.9591|-0.09573 +2016-07-01|22.0|129.0|-3.94924|-0.09553 +2016-07-01|22.0|130.0|-3.92289|-0.09506 +2016-07-01|22.0|131.0|-3.88001|-0.09434 +2016-07-01|22.0|132.0|-3.82068|-0.09339 +2016-07-01|22.0|133.0|-3.74508|-0.09223 +2016-07-01|22.0|134.0|-3.65351|-0.09087 +2016-07-01|22.0|135.0|-3.54632|-0.08934 +2016-07-01|22.0|136.0|-3.42392|-0.08765 +2016-07-01|22.0|137.0|-3.28681|-0.08581 +2016-07-01|22.0|138.0|-3.13552|-0.08385 +2016-07-01|22.0|139.0|-2.97059|-0.08177 +2016-07-01|22.0|140.0|-2.79261|-0.07959 +2016-07-01|22.0|141.0|-2.60216|-0.07733 +2016-07-01|22.0|142.0|-2.39986|-0.07499 +2016-07-01|22.0|143.0|-2.18628|-0.07259 +2016-07-01|22.0|144.0|-1.96203|-0.07013 +2016-07-01|22.0|145.0|-1.72767|-0.06762 +2016-07-01|22.0|146.0|-1.48378|-0.06509 +2016-07-01|22.0|147.0|-1.23091|-0.06252 +2016-07-01|22.0|148.0|-0.96961|-0.05994 +2016-07-01|22.0|149.0|-0.70043|-0.05735 +2016-07-01|22.0|150.0|-0.4239|-0.05477 +2016-07-01|22.0|151.0|-0.14057|-0.05219 +2016-07-01|22.0|152.0|0.14901|-0.04963 +2016-07-01|22.0|153.0|0.44426|-0.04709 +2016-07-01|22.0|154.0|0.74461|-0.04459 +2016-07-01|22.0|155.0|1.04943|-0.04214 +2016-07-01|22.0|156.0|1.3581|-0.03975 +2016-07-01|22.0|157.0|1.66992|-0.03741 +2016-07-01|22.0|158.0|1.98418|-0.03516 +2016-07-01|22.0|159.0|2.30014|-0.03298 +2016-07-01|22.0|160.0|2.61699|-0.0309 +2016-07-01|22.0|161.0|2.93391|-0.02892 +2016-07-01|22.0|162.0|3.25004|-0.02706 +2016-07-01|22.0|163.0|3.56447|-0.02531 +2016-07-01|22.0|164.0|3.87629|-0.02368 +2016-07-01|22.0|165.0|4.18457|-0.02219 +2016-07-01|22.0|166.0|4.48836|-0.02083 +2016-07-01|22.0|167.0|4.78672|-0.01962 +2016-07-01|22.0|168.0|5.07874|-0.01855 +2016-07-01|22.0|169.0|5.36351|-0.01763 +2016-07-01|22.0|170.0|5.64017|-0.01685 +2016-07-01|22.0|171.0|5.90791|-0.01623 +2016-07-01|22.0|172.0|6.16598|-0.01575 +2016-07-01|22.0|173.0|6.41372|-0.01542 +2016-07-01|22.0|174.0|6.65052|-0.01522 +2016-07-01|22.0|175.0|6.87591|-0.01517 +2016-07-01|22.0|176.0|7.08949|-0.01524 +2016-07-01|22.0|177.0|7.29098|-0.01544 +2016-07-01|22.0|178.0|7.48023|-0.01576 +2016-07-01|22.0|179.0|7.65719|-0.01619 +2016-07-01|22.0|-1.0|-0.91359|0.09039 +2016-07-01|22.0|-2.0|-1.15235|0.09176 +2016-07-01|22.0|-3.0|-1.40218|0.09321 +2016-07-01|22.0|-4.0|-1.66347|0.09473 +2016-07-01|22.0|-5.0|-1.93646|0.09631 +2016-07-01|22.0|-6.0|-2.2213|0.09791 +2016-07-01|22.0|-7.0|-2.51798|0.09953 +2016-07-01|22.0|-8.0|-2.82639|0.10115 +2016-07-01|22.0|-9.0|-3.14628|0.10274 +2016-07-01|22.0|-10.0|-3.47728|0.10431 +2016-07-01|22.0|-11.0|-3.81891|0.10582 +2016-07-01|22.0|-12.0|-4.17057|0.10728 +2016-07-01|22.0|-13.0|-4.53158|0.10867 +2016-07-01|22.0|-14.0|-4.90117|0.10999 +2016-07-01|22.0|-15.0|-5.2785|0.11124 +2016-07-01|22.0|-16.0|-5.66266|0.11242 +2016-07-01|22.0|-17.0|-6.05271|0.11351 +2016-07-01|22.0|-18.0|-6.44766|0.11453 +2016-07-01|22.0|-19.0|-6.8465|0.11548 +2016-07-01|22.0|-20.0|-7.24822|0.11635 +2016-07-01|22.0|-21.0|-7.65181|0.11715 +2016-07-01|22.0|-22.0|-8.05625|0.11787 +2016-07-01|22.0|-23.0|-8.46056|0.11853 +2016-07-01|22.0|-24.0|-8.86374|0.11912 +2016-07-01|22.0|-25.0|-9.26487|0.11964 +2016-07-01|22.0|-26.0|-9.663|0.12008 +2016-07-01|22.0|-27.0|-10.05725|0.12044 +2016-07-01|22.0|-28.0|-10.44672|0.12071 +2016-07-01|22.0|-29.0|-10.83058|0.12089 +2016-07-01|22.0|-30.0|-11.20798|0.12097 +2016-07-01|22.0|-31.0|-11.5781|0.12092 +2016-07-01|22.0|-32.0|-11.94012|0.12075 +2016-07-01|22.0|-33.0|-12.29323|0.12044 +2016-07-01|22.0|-34.0|-12.63663|0.11996 +2016-07-01|22.0|-35.0|-12.96948|0.11931 +2016-07-01|22.0|-36.0|-13.29095|0.11846 +2016-07-01|22.0|-37.0|-13.60019|0.11741 +2016-07-01|22.0|-38.0|-13.89633|0.11612 +2016-07-01|22.0|-39.0|-14.17849|0.11459 +2016-07-01|22.0|-40.0|-14.44573|0.1128 +2016-07-01|22.0|-41.0|-14.69714|0.11073 +2016-07-01|22.0|-42.0|-14.93175|0.10838 +2016-07-01|22.0|-43.0|-15.14859|0.10573 +2016-07-01|22.0|-44.0|-15.34669|0.10278 +2016-07-01|22.0|-45.0|-15.52506|0.09951 +2016-07-01|22.0|-46.0|-15.68273|0.09593 +2016-07-01|22.0|-47.0|-15.81872|0.09203 +2016-07-01|22.0|-48.0|-15.93208|0.08781 +2016-07-01|22.0|-49.0|-16.02191|0.08329 +2016-07-01|22.0|-50.0|-16.08733|0.07845 +2016-07-01|22.0|-51.0|-16.12752|0.07332 +2016-07-01|22.0|-52.0|-16.14172|0.06791 +2016-07-01|22.0|-53.0|-16.12926|0.06222 +2016-07-01|22.0|-54.0|-16.08953|0.05628 +2016-07-01|22.0|-55.0|-16.02202|0.0501 +2016-07-01|22.0|-56.0|-15.92634|0.04371 +2016-07-01|22.0|-57.0|-15.80217|0.03711 +2016-07-01|22.0|-58.0|-15.64934|0.03034 +2016-07-01|22.0|-59.0|-15.46776|0.02341 +2016-07-01|22.0|-60.0|-15.2575|0.01635 +2016-07-01|22.0|-61.0|-15.01871|0.00919 +2016-07-01|22.0|-62.0|-14.75169|0.00195 +2016-07-01|22.0|-63.0|-14.45685|-0.00534 +2016-07-01|22.0|-64.0|-14.13472|-0.01266 +2016-07-01|22.0|-65.0|-13.78592|-0.01998 +2016-07-01|22.0|-66.0|-13.41123|-0.02728 +2016-07-01|22.0|-67.0|-13.01148|-0.03452 +2016-07-01|22.0|-68.0|-12.58764|-0.04168 +2016-07-01|22.0|-69.0|-12.14074|-0.04873 +2016-07-01|22.0|-70.0|-11.67192|-0.05564 +2016-07-01|22.0|-71.0|-11.1824|-0.06238 +2016-07-01|22.0|-72.0|-10.67346|-0.06894 +2016-07-01|22.0|-73.0|-10.14645|-0.07527 +2016-07-01|22.0|-74.0|-9.6028|-0.08135 +2016-07-01|22.0|-75.0|-9.04397|-0.08716 +2016-07-01|22.0|-76.0|-8.47149|-0.09267 +2016-07-01|22.0|-77.0|-7.88693|-0.09786 +2016-07-01|22.0|-78.0|-7.29191|-0.1027 +2016-07-01|22.0|-79.0|-6.68806|-0.10717 +2016-07-01|22.0|-80.0|-6.07707|-0.11125 +2016-07-01|22.0|-81.0|-5.46063|-0.11493 +2016-07-01|22.0|-82.0|-4.84046|-0.11819 +2016-07-01|22.0|-83.0|-4.21827|-0.12102 +2016-07-01|22.0|-84.0|-3.59581|-0.12342 +2016-07-01|22.0|-85.0|-2.97478|-0.12539 +2016-07-01|22.0|-86.0|-2.35688|-0.12692 +2016-07-01|22.0|-87.0|-1.74379|-0.12801 +2016-07-01|22.0|-88.0|-1.13715|-0.12868 +2016-07-01|22.0|-89.0|-0.53853|-0.12895 +2016-07-01|22.0|-90.0|0.05053|-0.12882 +2016-07-01|22.0|-91.0|0.62859|-0.12831 +2016-07-01|22.0|-92.0|1.19427|-0.12746 +2016-07-01|22.0|-93.0|1.74631|-0.12628 +2016-07-01|22.0|-94.0|2.28355|-0.1248 +2016-07-01|22.0|-95.0|2.80492|-0.12306 +2016-07-01|22.0|-96.0|3.30951|-0.12109 +2016-07-01|22.0|-97.0|3.79651|-0.11891 +2016-07-01|22.0|-98.0|4.26526|-0.11656 +2016-07-01|22.0|-99.0|4.71523|-0.11407 +2016-07-01|22.0|-100.0|5.14604|-0.11148 +2016-07-01|22.0|-101.0|5.55744|-0.10881 +2016-07-01|22.0|-102.0|5.94931|-0.1061 +2016-07-01|22.0|-103.0|6.32166|-0.10337 +2016-07-01|22.0|-104.0|6.67464|-0.10064 +2016-07-01|22.0|-105.0|7.0085|-0.09793 +2016-07-01|22.0|-106.0|7.3236|-0.09528 +2016-07-01|22.0|-107.0|7.62039|-0.09268 +2016-07-01|22.0|-108.0|7.89942|-0.09016 +2016-07-01|22.0|-109.0|8.16129|-0.08773 +2016-07-01|22.0|-110.0|8.40667|-0.0854 +2016-07-01|22.0|-111.0|8.63626|-0.08316 +2016-07-01|22.0|-112.0|8.85079|-0.08103 +2016-07-01|22.0|-113.0|9.05101|-0.07901 +2016-07-01|22.0|-114.0|9.23766|-0.07709 +2016-07-01|22.0|-115.0|9.41149|-0.07528 +2016-07-01|22.0|-116.0|9.57319|-0.07356 +2016-07-01|22.0|-117.0|9.72344|-0.07194 +2016-07-01|22.0|-118.0|9.86287|-0.07041 +2016-07-01|22.0|-119.0|9.99205|-0.06896 +2016-07-01|22.0|-120.0|10.1115|-0.06758 +2016-07-01|22.0|-121.0|10.22166|-0.06627 +2016-07-01|22.0|-122.0|10.32294|-0.06501 +2016-07-01|22.0|-123.0|10.41566|-0.06382 +2016-07-01|22.0|-124.0|10.50006|-0.06267 +2016-07-01|22.0|-125.0|10.57637|-0.06156 +2016-07-01|22.0|-126.0|10.64472|-0.06049 +2016-07-01|22.0|-127.0|10.70521|-0.05945 +2016-07-01|22.0|-128.0|10.7579|-0.05844 +2016-07-01|22.0|-129.0|10.80283|-0.05745 +2016-07-01|22.0|-130.0|10.84|-0.05649 +2016-07-01|22.0|-131.0|10.86941|-0.05555 +2016-07-01|22.0|-132.0|10.89106|-0.05464 +2016-07-01|22.0|-133.0|10.90497|-0.05375 +2016-07-01|22.0|-134.0|10.91117|-0.05288 +2016-07-01|22.0|-135.0|10.90972|-0.05203 +2016-07-01|22.0|-136.0|10.90073|-0.05121 +2016-07-01|22.0|-137.0|10.88435|-0.05041 +2016-07-01|22.0|-138.0|10.86078|-0.04964 +2016-07-01|22.0|-139.0|10.83028|-0.04889 +2016-07-01|22.0|-140.0|10.79318|-0.04817 +2016-07-01|22.0|-141.0|10.74984|-0.04748 +2016-07-01|22.0|-142.0|10.70071|-0.0468 +2016-07-01|22.0|-143.0|10.64627|-0.04615 +2016-07-01|22.0|-144.0|10.58706|-0.04552 +2016-07-01|22.0|-145.0|10.52367|-0.04491 +2016-07-01|22.0|-146.0|10.4567|-0.04432 +2016-07-01|22.0|-147.0|10.3868|-0.04374 +2016-07-01|22.0|-148.0|10.31463|-0.04316 +2016-07-01|22.0|-149.0|10.24083|-0.0426 +2016-07-01|22.0|-150.0|10.16604|-0.04203 +2016-07-01|22.0|-151.0|10.09089|-0.04145 +2016-07-01|22.0|-152.0|10.01597|-0.04087 +2016-07-01|22.0|-153.0|9.94179|-0.04027 +2016-07-01|22.0|-154.0|9.86884|-0.03966 +2016-07-01|22.0|-155.0|9.7975|-0.03902 +2016-07-01|22.0|-156.0|9.7281|-0.03835 +2016-07-01|22.0|-157.0|9.66086|-0.03766 +2016-07-01|22.0|-158.0|9.5959|-0.03693 +2016-07-01|22.0|-159.0|9.53323|-0.03617 +2016-07-01|22.0|-160.0|9.47277|-0.03537 +2016-07-01|22.0|-161.0|9.41432|-0.03453 +2016-07-01|22.0|-162.0|9.35755|-0.03366 +2016-07-01|22.0|-163.0|9.30207|-0.03275 +2016-07-01|22.0|-164.0|9.24733|-0.03181 +2016-07-01|22.0|-165.0|9.19274|-0.03083 +2016-07-01|22.0|-166.0|9.13758|-0.02983 +2016-07-01|22.0|-167.0|9.08108|-0.02881 +2016-07-01|22.0|-168.0|9.02241|-0.02777 +2016-07-01|22.0|-169.0|8.96066|-0.02672 +2016-07-01|22.0|-170.0|8.89492|-0.02566 +2016-07-01|22.0|-171.0|8.82425|-0.02461 +2016-07-01|22.0|-172.0|8.7477|-0.02357 +2016-07-01|22.0|-173.0|8.66434|-0.02255 +2016-07-01|22.0|-174.0|8.57327|-0.02156 +2016-07-01|22.0|-175.0|8.47363|-0.0206 +2016-07-01|22.0|-176.0|8.36464|-0.01969 +2016-07-01|22.0|-177.0|8.24555|-0.01884 +2016-07-01|22.0|-178.0|8.11575|-0.01806 +2016-07-01|22.0|-179.0|7.97469|-0.01735 +2016-07-01|23.0|0.0|-0.58362|0.08956 +2016-07-01|23.0|1.0|-0.36594|0.0884 +2016-07-01|23.0|2.0|-0.15767|0.08737 +2016-07-01|23.0|3.0|0.04187|0.0865 +2016-07-01|23.0|4.0|0.23344|0.08578 +2016-07-01|23.0|5.0|0.41782|0.08524 +2016-07-01|23.0|6.0|0.5958|0.08487 +2016-07-01|23.0|7.0|0.76816|0.08468 +2016-07-01|23.0|8.0|0.93566|0.08466 +2016-07-01|23.0|9.0|1.099|0.08481 +2016-07-01|23.0|10.0|1.25883|0.0851 +2016-07-01|23.0|11.0|1.41569|0.08554 +2016-07-01|23.0|12.0|1.57003|0.08609 +2016-07-01|23.0|13.0|1.72219|0.08674 +2016-07-01|23.0|14.0|1.87238|0.08745 +2016-07-01|23.0|15.0|2.02067|0.08821 +2016-07-01|23.0|16.0|2.16702|0.08898 +2016-07-01|23.0|17.0|2.31121|0.08972 +2016-07-01|23.0|18.0|2.45291|0.09041 +2016-07-01|23.0|19.0|2.59166|0.09101 +2016-07-01|23.0|20.0|2.72687|0.09149 +2016-07-01|23.0|21.0|2.85784|0.09183 +2016-07-01|23.0|22.0|2.98377|0.09198 +2016-07-01|23.0|23.0|3.1038|0.09194 +2016-07-01|23.0|24.0|3.217|0.09167 +2016-07-01|23.0|25.0|3.32241|0.09116 +2016-07-01|23.0|26.0|3.41907|0.0904 +2016-07-01|23.0|27.0|3.506|0.08938 +2016-07-01|23.0|28.0|3.58231|0.0881 +2016-07-01|23.0|29.0|3.64711|0.08657 +2016-07-01|23.0|30.0|3.69965|0.08478 +2016-07-01|23.0|31.0|3.73927|0.08277 +2016-07-01|23.0|32.0|3.76541|0.08055 +2016-07-01|23.0|33.0|3.77768|0.07814 +2016-07-01|23.0|34.0|3.77586|0.07558 +2016-07-01|23.0|35.0|3.75987|0.0729 +2016-07-01|23.0|36.0|3.72982|0.07014 +2016-07-01|23.0|37.0|3.68601|0.06733 +2016-07-01|23.0|38.0|3.62889|0.06452 +2016-07-01|23.0|39.0|3.5591|0.06176 +2016-07-01|23.0|40.0|3.47744|0.05907 +2016-07-01|23.0|41.0|3.38485|0.05651 +2016-07-01|23.0|42.0|3.28242|0.05411 +2016-07-01|23.0|43.0|3.17131|0.0519 +2016-07-01|23.0|44.0|3.0528|0.04992 +2016-07-01|23.0|45.0|2.92821|0.04819 +2016-07-01|23.0|46.0|2.79891|0.04673 +2016-07-01|23.0|47.0|2.66626|0.04556 +2016-07-01|23.0|48.0|2.53161|0.04468 +2016-07-01|23.0|49.0|2.39624|0.0441 +2016-07-01|23.0|50.0|2.26139|0.04382 +2016-07-01|23.0|51.0|2.12818|0.04382 +2016-07-01|23.0|52.0|1.99764|0.04409 +2016-07-01|23.0|53.0|1.87067|0.04462 +2016-07-01|23.0|54.0|1.74801|0.04538 +2016-07-01|23.0|55.0|1.63029|0.04634 +2016-07-01|23.0|56.0|1.51798|0.04747 +2016-07-01|23.0|57.0|1.41139|0.04875 +2016-07-01|23.0|58.0|1.3107|0.05013 +2016-07-01|23.0|59.0|1.21597|0.05159 +2016-07-01|23.0|60.0|1.12713|0.0531 +2016-07-01|23.0|61.0|1.04399|0.05462 +2016-07-01|23.0|62.0|0.96629|0.05612 +2016-07-01|23.0|63.0|0.89368|0.05757 +2016-07-01|23.0|64.0|0.82577|0.05895 +2016-07-01|23.0|65.0|0.76211|0.06023 +2016-07-01|23.0|66.0|0.70226|0.0614 +2016-07-01|23.0|67.0|0.64574|0.06244 +2016-07-01|23.0|68.0|0.59212|0.06334 +2016-07-01|23.0|69.0|0.54096|0.06407 +2016-07-01|23.0|70.0|0.49187|0.06465 +2016-07-01|23.0|71.0|0.44451|0.06506 +2016-07-01|23.0|72.0|0.39858|0.06529 +2016-07-01|23.0|73.0|0.35383|0.06536 +2016-07-01|23.0|74.0|0.31007|0.06526 +2016-07-01|23.0|75.0|0.26714|0.06499 +2016-07-01|23.0|76.0|0.22494|0.06455 +2016-07-01|23.0|77.0|0.18339|0.06395 +2016-07-01|23.0|78.0|0.14246|0.0632 +2016-07-01|23.0|79.0|0.10212|0.06229 +2016-07-01|23.0|80.0|0.06233|0.06123 +2016-07-01|23.0|81.0|0.02307|0.06002 +2016-07-01|23.0|82.0|-0.01571|0.05866 +2016-07-01|23.0|83.0|-0.05409|0.05716 +2016-07-01|23.0|84.0|-0.09219|0.05549 +2016-07-01|23.0|85.0|-0.13018|0.05368 +2016-07-01|23.0|86.0|-0.16829|0.0517 +2016-07-01|23.0|87.0|-0.20679|0.04957 +2016-07-01|23.0|88.0|-0.24602|0.04726 +2016-07-01|23.0|89.0|-0.28639|0.04478 +2016-07-01|23.0|90.0|-0.32835|0.04211 +2016-07-01|23.0|91.0|-0.37241|0.03926 +2016-07-01|23.0|92.0|-0.41913|0.03622 +2016-07-01|23.0|93.0|-0.46908|0.03298 +2016-07-01|23.0|94.0|-0.52288|0.02954 +2016-07-01|23.0|95.0|-0.58111|0.0259 +2016-07-01|23.0|96.0|-0.6444|0.02206 +2016-07-01|23.0|97.0|-0.71329|0.01803 +2016-07-01|23.0|98.0|-0.78832|0.0138 +2016-07-01|23.0|99.0|-0.86995|0.00939 +2016-07-01|23.0|100.0|-0.95856|0.00481 +2016-07-01|23.0|101.0|-1.05444|8.0E-5 +2016-07-01|23.0|102.0|-1.15777|-0.0048 +2016-07-01|23.0|103.0|-1.26861|-0.00979 +2016-07-01|23.0|104.0|-1.38688|-0.01487 +2016-07-01|23.0|105.0|-1.51236|-0.02003 +2016-07-01|23.0|106.0|-1.64469|-0.02522 +2016-07-01|23.0|107.0|-1.78335|-0.03042 +2016-07-01|23.0|108.0|-1.9277|-0.0356 +2016-07-01|23.0|109.0|-2.07693|-0.04073 +2016-07-01|23.0|110.0|-2.23011|-0.04577 +2016-07-01|23.0|111.0|-2.38618|-0.05069 +2016-07-01|23.0|112.0|-2.54398|-0.05546 +2016-07-01|23.0|113.0|-2.70224|-0.06004 +2016-07-01|23.0|114.0|-2.85965|-0.06442 +2016-07-01|23.0|115.0|-3.0148|-0.06855 +2016-07-01|23.0|116.0|-3.1663|-0.07242 +2016-07-01|23.0|117.0|-3.31269|-0.07601 +2016-07-01|23.0|118.0|-3.45258|-0.0793 +2016-07-01|23.0|119.0|-3.58458|-0.08227 +2016-07-01|23.0|120.0|-3.70735|-0.08492 +2016-07-01|23.0|121.0|-3.81965|-0.08723 +2016-07-01|23.0|122.0|-3.92029|-0.08921 +2016-07-01|23.0|123.0|-4.00822|-0.09086 +2016-07-01|23.0|124.0|-4.08249|-0.09217 +2016-07-01|23.0|125.0|-4.14225|-0.09316 +2016-07-01|23.0|126.0|-4.18683|-0.09384 +2016-07-01|23.0|127.0|-4.21564|-0.09421 +2016-07-01|23.0|128.0|-4.22826|-0.09429 +2016-07-01|23.0|129.0|-4.22438|-0.0941 +2016-07-01|23.0|130.0|-4.20384|-0.09365 +2016-07-01|23.0|131.0|-4.16658|-0.09296 +2016-07-01|23.0|132.0|-4.11266|-0.09204 +2016-07-01|23.0|133.0|-4.04224|-0.09092 +2016-07-01|23.0|134.0|-3.95557|-0.08961 +2016-07-01|23.0|135.0|-3.85299|-0.08813 +2016-07-01|23.0|136.0|-3.7349|-0.08649 +2016-07-01|23.0|137.0|-3.60176|-0.08471 +2016-07-01|23.0|138.0|-3.45408|-0.08281 +2016-07-01|23.0|139.0|-3.29239|-0.0808 +2016-07-01|23.0|140.0|-3.11727|-0.07869 +2016-07-01|23.0|141.0|-2.92928|-0.07649 +2016-07-01|23.0|142.0|-2.72902|-0.07422 +2016-07-01|23.0|143.0|-2.51707|-0.07189 +2016-07-01|23.0|144.0|-2.29402|-0.06951 +2016-07-01|23.0|145.0|-2.06046|-0.06709 +2016-07-01|23.0|146.0|-1.81694|-0.06463 +2016-07-01|23.0|147.0|-1.56403|-0.06215 +2016-07-01|23.0|148.0|-1.3023|-0.05966 +2016-07-01|23.0|149.0|-1.03228|-0.05716 +2016-07-01|23.0|150.0|-0.75454|-0.05466 +2016-07-01|23.0|151.0|-0.46963|-0.05218 +2016-07-01|23.0|152.0|-0.17812|-0.04971 +2016-07-01|23.0|153.0|0.11943|-0.04728 +2016-07-01|23.0|154.0|0.42241|-0.04489 +2016-07-01|23.0|155.0|0.73019|-0.04255 +2016-07-01|23.0|156.0|1.04214|-0.04026 +2016-07-01|23.0|157.0|1.35757|-0.03805 +2016-07-01|23.0|158.0|1.67576|-0.03591 +2016-07-01|23.0|159.0|1.99597|-0.03386 +2016-07-01|23.0|160.0|2.31739|-0.03191 +2016-07-01|23.0|161.0|2.63921|-0.03006 +2016-07-01|23.0|162.0|2.96057|-0.02833 +2016-07-01|23.0|163.0|3.28058|-0.02672 +2016-07-01|23.0|164.0|3.59833|-0.02524 +2016-07-01|23.0|165.0|3.9129|-0.02389 +2016-07-01|23.0|166.0|4.22336|-0.02268 +2016-07-01|23.0|167.0|4.52877|-0.02162 +2016-07-01|23.0|168.0|4.82822|-0.0207 +2016-07-01|23.0|169.0|5.12082|-0.01993 +2016-07-01|23.0|170.0|5.40571|-0.01931 +2016-07-01|23.0|171.0|5.68209|-0.01884 +2016-07-01|23.0|172.0|5.94919|-0.01851 +2016-07-01|23.0|173.0|6.20635|-0.01832 +2016-07-01|23.0|174.0|6.45296|-0.01828 +2016-07-01|23.0|175.0|6.68851|-0.01836 +2016-07-01|23.0|176.0|6.91261|-0.01858 +2016-07-01|23.0|177.0|7.12494|-0.01891 +2016-07-01|23.0|178.0|7.32532|-0.01935 +2016-07-01|23.0|179.0|7.51368|-0.0199 +2016-07-01|23.0|-1.0|-0.81135|0.09085 +2016-07-01|23.0|-2.0|-1.04968|0.09223 +2016-07-01|23.0|-3.0|-1.29906|0.09371 +2016-07-01|23.0|-4.0|-1.55982|0.09525 +2016-07-01|23.0|-5.0|-1.83221|0.09683 +2016-07-01|23.0|-6.0|-2.11631|0.09845 +2016-07-01|23.0|-7.0|-2.41212|0.10007 +2016-07-01|23.0|-8.0|-2.71948|0.10168 +2016-07-01|23.0|-9.0|-3.03813|0.10327 +2016-07-01|23.0|-10.0|-3.36768|0.10482 +2016-07-01|23.0|-11.0|-3.70763|0.10632 +2016-07-01|23.0|-12.0|-4.05739|0.10777 +2016-07-01|23.0|-13.0|-4.41625|0.10915 +2016-07-01|23.0|-14.0|-4.78346|0.11045 +2016-07-01|23.0|-15.0|-5.15816|0.11169 +2016-07-01|23.0|-16.0|-5.53948|0.11285 +2016-07-01|23.0|-17.0|-5.92646|0.11393 +2016-07-01|23.0|-18.0|-6.31814|0.11494 +2016-07-01|23.0|-19.0|-6.71355|0.11588 +2016-07-01|23.0|-20.0|-7.11169|0.11674 +2016-07-01|23.0|-21.0|-7.51156|0.11754 +2016-07-01|23.0|-22.0|-7.91221|0.11827 +2016-07-01|23.0|-23.0|-8.31267|0.11894 +2016-07-01|23.0|-24.0|-8.71199|0.11954 +2016-07-01|23.0|-25.0|-9.10929|0.12008 +2016-07-01|23.0|-26.0|-9.50367|0.12055 +2016-07-01|23.0|-27.0|-9.89427|0.12095 +2016-07-01|23.0|-28.0|-10.28028|0.12127 +2016-07-01|23.0|-29.0|-10.66088|0.12151 +2016-07-01|23.0|-30.0|-11.03528|0.12165 +2016-07-01|23.0|-31.0|-11.40272|0.12168 +2016-07-01|23.0|-32.0|-11.76242|0.1216 +2016-07-01|23.0|-33.0|-12.11363|0.12138 +2016-07-01|23.0|-34.0|-12.45558|0.12101 +2016-07-01|23.0|-35.0|-12.78749|0.12048 +2016-07-01|23.0|-36.0|-13.10856|0.11976 +2016-07-01|23.0|-37.0|-13.418|0.11884 +2016-07-01|23.0|-38.0|-13.71497|0.11771 +2016-07-01|23.0|-39.0|-13.9986|0.11634 +2016-07-01|23.0|-40.0|-14.26802|0.11472 +2016-07-01|23.0|-41.0|-14.52232|0.11284 +2016-07-01|23.0|-42.0|-14.76055|0.11067 +2016-07-01|23.0|-43.0|-14.98178|0.10822 +2016-07-01|23.0|-44.0|-15.18502|0.10546 +2016-07-01|23.0|-45.0|-15.3693|0.1024 +2016-07-01|23.0|-46.0|-15.53362|0.09902 +2016-07-01|23.0|-47.0|-15.67702|0.09532 +2016-07-01|23.0|-48.0|-15.79852|0.09131 +2016-07-01|23.0|-49.0|-15.89719|0.08699 +2016-07-01|23.0|-50.0|-15.97213|0.08235 +2016-07-01|23.0|-51.0|-16.02246|0.07741 +2016-07-01|23.0|-52.0|-16.0474|0.07218 +2016-07-01|23.0|-53.0|-16.0462|0.06667 +2016-07-01|23.0|-54.0|-16.01821|0.0609 +2016-07-01|23.0|-55.0|-15.96286|0.05487 +2016-07-01|23.0|-56.0|-15.87967|0.04861 +2016-07-01|23.0|-57.0|-15.76827|0.04213 +2016-07-01|23.0|-58.0|-15.62838|0.03547 +2016-07-01|23.0|-59.0|-15.45987|0.02863 +2016-07-01|23.0|-60.0|-15.26269|0.02165 +2016-07-01|23.0|-61.0|-15.03693|0.01454 +2016-07-01|23.0|-62.0|-14.78279|0.00734 +2016-07-01|23.0|-63.0|-14.50059|6.0E-5 +2016-07-01|23.0|-64.0|-14.19079|-0.00726 +2016-07-01|23.0|-65.0|-13.85393|-0.0146 +2016-07-01|23.0|-66.0|-13.4907|-0.02193 +2016-07-01|23.0|-67.0|-13.10186|-0.02923 +2016-07-01|23.0|-68.0|-12.68831|-0.03646 +2016-07-01|23.0|-69.0|-12.25101|-0.04359 +2016-07-01|23.0|-70.0|-11.79106|-0.05061 +2016-07-01|23.0|-71.0|-11.3096|-0.05747 +2016-07-01|23.0|-72.0|-10.80787|-0.06415 +2016-07-01|23.0|-73.0|-10.2872|-0.07063 +2016-07-01|23.0|-74.0|-9.74897|-0.07686 +2016-07-01|23.0|-75.0|-9.19462|-0.08283 +2016-07-01|23.0|-76.0|-8.62567|-0.08851 +2016-07-01|23.0|-77.0|-8.04368|-0.09387 +2016-07-01|23.0|-78.0|-7.45026|-0.09889 +2016-07-01|23.0|-79.0|-6.84705|-0.10355 +2016-07-01|23.0|-80.0|-6.23574|-0.10782 +2016-07-01|23.0|-81.0|-5.61806|-0.11169 +2016-07-01|23.0|-82.0|-4.99573|-0.11514 +2016-07-01|23.0|-83.0|-4.37051|-0.11817 +2016-07-01|23.0|-84.0|-3.74415|-0.12076 +2016-07-01|23.0|-85.0|-3.11841|-0.12291 +2016-07-01|23.0|-86.0|-2.49503|-0.12462 +2016-07-01|23.0|-87.0|-1.87573|-0.1259 +2016-07-01|23.0|-88.0|-1.26218|-0.12675 +2016-07-01|23.0|-89.0|-0.65603|-0.12719 +2016-07-01|23.0|-90.0|-0.05883|-0.12722 +2016-07-01|23.0|-91.0|0.52789|-0.12688 +2016-07-01|23.0|-92.0|1.10274|-0.12618 +2016-07-01|23.0|-93.0|1.66437|-0.12515 +2016-07-01|23.0|-94.0|2.21159|-0.12381 +2016-07-01|23.0|-95.0|2.74327|-0.1222 +2016-07-01|23.0|-96.0|3.25845|-0.12035 +2016-07-01|23.0|-97.0|3.75627|-0.1183 +2016-07-01|23.0|-98.0|4.23602|-0.11606 +2016-07-01|23.0|-99.0|4.69712|-0.11368 +2016-07-01|23.0|-100.0|5.13914|-0.11119 +2016-07-01|23.0|-101.0|5.56178|-0.10861 +2016-07-01|23.0|-102.0|5.96488|-0.10599 +2016-07-01|23.0|-103.0|6.34841|-0.10334 +2016-07-01|23.0|-104.0|6.71246|-0.10068 +2016-07-01|23.0|-105.0|7.05725|-0.09805 +2016-07-01|23.0|-106.0|7.3831|-0.09546 +2016-07-01|23.0|-107.0|7.69043|-0.09293 +2016-07-01|23.0|-108.0|7.97974|-0.09047 +2016-07-01|23.0|-109.0|8.25159|-0.0881 +2016-07-01|23.0|-110.0|8.50663|-0.08582 +2016-07-01|23.0|-111.0|8.74553|-0.08363 +2016-07-01|23.0|-112.0|8.96898|-0.08156 +2016-07-01|23.0|-113.0|9.17772|-0.07958 +2016-07-01|23.0|-114.0|9.37245|-0.07772 +2016-07-01|23.0|-115.0|9.55391|-0.07595 +2016-07-01|23.0|-116.0|9.72277|-0.07428 +2016-07-01|23.0|-117.0|9.87969|-0.07271 +2016-07-01|23.0|-118.0|10.02529|-0.07123 +2016-07-01|23.0|-119.0|10.16014|-0.06983 +2016-07-01|23.0|-120.0|10.28475|-0.06851 +2016-07-01|23.0|-121.0|10.39956|-0.06725 +2016-07-01|23.0|-122.0|10.50498|-0.06605 +2016-07-01|23.0|-123.0|10.60133|-0.06492 +2016-07-01|23.0|-124.0|10.68887|-0.06382 +2016-07-01|23.0|-125.0|10.76783|-0.06278 +2016-07-01|23.0|-126.0|10.83835|-0.06177 +2016-07-01|23.0|-127.0|10.90056|-0.06079 +2016-07-01|23.0|-128.0|10.95454|-0.05985 +2016-07-01|23.0|-129.0|11.00033|-0.05893 +2016-07-01|23.0|-130.0|11.03797|-0.05804 +2016-07-01|23.0|-131.0|11.06746|-0.05717 +2016-07-01|23.0|-132.0|11.08885|-0.05633 +2016-07-01|23.0|-133.0|11.10216|-0.0555 +2016-07-01|23.0|-134.0|11.10745|-0.0547 +2016-07-01|23.0|-135.0|11.10479|-0.05393 +2016-07-01|23.0|-136.0|11.09433|-0.05318 +2016-07-01|23.0|-137.0|11.07621|-0.05245 +2016-07-01|23.0|-138.0|11.05067|-0.05175 +2016-07-01|23.0|-139.0|11.01798|-0.05107 +2016-07-01|23.0|-140.0|10.97846|-0.05042 +2016-07-01|23.0|-141.0|10.9325|-0.0498 +2016-07-01|23.0|-142.0|10.88054|-0.0492 +2016-07-01|23.0|-143.0|10.82307|-0.04863 +2016-07-01|23.0|-144.0|10.76064|-0.04807 +2016-07-01|23.0|-145.0|10.69381|-0.04754 +2016-07-01|23.0|-146.0|10.6232|-0.04702 +2016-07-01|23.0|-147.0|10.54944|-0.04652 +2016-07-01|23.0|-148.0|10.47318|-0.04603 +2016-07-01|23.0|-149.0|10.39505|-0.04554 +2016-07-01|23.0|-150.0|10.31569|-0.04506 +2016-07-01|23.0|-151.0|10.2357|-0.04457 +2016-07-01|23.0|-152.0|10.15564|-0.04407 +2016-07-01|23.0|-153.0|10.07605|-0.04356 +2016-07-01|23.0|-154.0|9.99736|-0.04304 +2016-07-01|23.0|-155.0|9.91996|-0.04249 +2016-07-01|23.0|-156.0|9.84416|-0.04191 +2016-07-01|23.0|-157.0|9.77016|-0.0413 +2016-07-01|23.0|-158.0|9.69808|-0.04066 +2016-07-01|23.0|-159.0|9.62792|-0.03998 +2016-07-01|23.0|-160.0|9.55958|-0.03927 +2016-07-01|23.0|-161.0|9.49286|-0.03851 +2016-07-01|23.0|-162.0|9.42744|-0.03771 +2016-07-01|23.0|-163.0|9.36291|-0.03687 +2016-07-01|23.0|-164.0|9.29876|-0.03599 +2016-07-01|23.0|-165.0|9.23437|-0.03507 +2016-07-01|23.0|-166.0|9.16907|-0.03411 +2016-07-01|23.0|-167.0|9.10208|-0.03313 +2016-07-01|23.0|-168.0|9.0326|-0.03212 +2016-07-01|23.0|-169.0|8.95976|-0.03108 +2016-07-01|23.0|-170.0|8.88266|-0.03003 +2016-07-01|23.0|-171.0|8.8004|-0.02898 +2016-07-01|23.0|-172.0|8.71207|-0.02792 +2016-07-01|23.0|-173.0|8.61677|-0.02687 +2016-07-01|23.0|-174.0|8.51364|-0.02584 +2016-07-01|23.0|-175.0|8.40188|-0.02484 +2016-07-01|23.0|-176.0|8.28073|-0.02387 +2016-07-01|23.0|-177.0|8.14951|-0.02294 +2016-07-01|23.0|-178.0|8.00764|-0.02207 +2016-07-01|23.0|-179.0|7.85462|-0.02127 +2016-07-01|24.0|0.0|-0.48819|0.09011 +2016-07-01|24.0|1.0|-0.27063|0.08891 +2016-07-01|24.0|2.0|-0.06254|0.08785 +2016-07-01|24.0|3.0|0.13676|0.08692 +2016-07-01|24.0|4.0|0.32798|0.08616 +2016-07-01|24.0|5.0|0.51188|0.08556 +2016-07-01|24.0|6.0|0.68925|0.08513 +2016-07-01|24.0|7.0|0.86084|0.08488 +2016-07-01|24.0|8.0|1.0274|0.08479 +2016-07-01|24.0|9.0|1.18963|0.08487 +2016-07-01|24.0|10.0|1.34816|0.0851 +2016-07-01|24.0|11.0|1.50356|0.08547 +2016-07-01|24.0|12.0|1.65629|0.08596 +2016-07-01|24.0|13.0|1.80669|0.08655 +2016-07-01|24.0|14.0|1.955|0.08721 +2016-07-01|24.0|15.0|2.10131|0.08792 +2016-07-01|24.0|16.0|2.24561|0.08865 +2016-07-01|24.0|17.0|2.38772|0.08936 +2016-07-01|24.0|18.0|2.52734|0.09003 +2016-07-01|24.0|19.0|2.66405|0.09062 +2016-07-01|24.0|20.0|2.7973|0.0911 +2016-07-01|24.0|21.0|2.92643|0.09144 +2016-07-01|24.0|22.0|3.0507|0.09162 +2016-07-01|24.0|23.0|3.16929|0.09161 +2016-07-01|24.0|24.0|3.2813|0.09139 +2016-07-01|24.0|25.0|3.38582|0.09095 +2016-07-01|24.0|26.0|3.48192|0.09026 +2016-07-01|24.0|27.0|3.56866|0.08932 +2016-07-01|24.0|28.0|3.64517|0.08814 +2016-07-01|24.0|29.0|3.7106|0.0867 +2016-07-01|24.0|30.0|3.7642|0.08503 +2016-07-01|24.0|31.0|3.80531|0.08313 +2016-07-01|24.0|32.0|3.83341|0.08102 +2016-07-01|24.0|33.0|3.84809|0.07873 +2016-07-01|24.0|34.0|3.84911|0.07629 +2016-07-01|24.0|35.0|3.83638|0.07372 +2016-07-01|24.0|36.0|3.80999|0.07107 +2016-07-01|24.0|37.0|3.7702|0.06836 +2016-07-01|24.0|38.0|3.71744|0.06565 +2016-07-01|24.0|39.0|3.6523|0.06297 +2016-07-01|24.0|40.0|3.57553|0.06035 +2016-07-01|24.0|41.0|3.48802|0.05785 +2016-07-01|24.0|42.0|3.39081|0.05549 +2016-07-01|24.0|43.0|3.28502|0.05331 +2016-07-01|24.0|44.0|3.17187|0.05133 +2016-07-01|24.0|45.0|3.05262|0.0496 +2016-07-01|24.0|46.0|2.92859|0.04811 +2016-07-01|24.0|47.0|2.8011|0.0469 +2016-07-01|24.0|48.0|2.67143|0.04597 +2016-07-01|24.0|49.0|2.54086|0.04532 +2016-07-01|24.0|50.0|2.41056|0.04496 +2016-07-01|24.0|51.0|2.28164|0.04487 +2016-07-01|24.0|52.0|2.15509|0.04504 +2016-07-01|24.0|53.0|2.03178|0.04546 +2016-07-01|24.0|54.0|1.91247|0.04611 +2016-07-01|24.0|55.0|1.79776|0.04695 +2016-07-01|24.0|56.0|1.68811|0.04797 +2016-07-01|24.0|57.0|1.58385|0.04912 +2016-07-01|24.0|58.0|1.48516|0.05039 +2016-07-01|24.0|59.0|1.3921|0.05174 +2016-07-01|24.0|60.0|1.3046|0.05314 +2016-07-01|24.0|61.0|1.22251|0.05455 +2016-07-01|24.0|62.0|1.14556|0.05596 +2016-07-01|24.0|63.0|1.07343|0.05732 +2016-07-01|24.0|64.0|1.00572|0.05863 +2016-07-01|24.0|65.0|0.94202|0.05984 +2016-07-01|24.0|66.0|0.88187|0.06095 +2016-07-01|24.0|67.0|0.82482|0.06194 +2016-07-01|24.0|68.0|0.77042|0.06279 +2016-07-01|24.0|69.0|0.71824|0.0635 +2016-07-01|24.0|70.0|0.66789|0.06405 +2016-07-01|24.0|71.0|0.61901|0.06444 +2016-07-01|24.0|72.0|0.57129|0.06466 +2016-07-01|24.0|73.0|0.52447|0.06472 +2016-07-01|24.0|74.0|0.47832|0.06461 +2016-07-01|24.0|75.0|0.43269|0.06434 +2016-07-01|24.0|76.0|0.38744|0.0639 +2016-07-01|24.0|77.0|0.34247|0.06331 +2016-07-01|24.0|78.0|0.29773|0.06256 +2016-07-01|24.0|79.0|0.25315|0.06165 +2016-07-01|24.0|80.0|0.2087|0.06059 +2016-07-01|24.0|81.0|0.16432|0.05938 +2016-07-01|24.0|82.0|0.11995|0.05802 +2016-07-01|24.0|83.0|0.07549|0.0565 +2016-07-01|24.0|84.0|0.03082|0.05484 +2016-07-01|24.0|85.0|-0.01423|0.05301 +2016-07-01|24.0|86.0|-0.05988|0.05103 +2016-07-01|24.0|87.0|-0.1064|0.04889 +2016-07-01|24.0|88.0|-0.15412|0.04657 +2016-07-01|24.0|89.0|-0.20341|0.04408 +2016-07-01|24.0|90.0|-0.25472|0.04141 +2016-07-01|24.0|91.0|-0.30852|0.03856 +2016-07-01|24.0|92.0|-0.36532|0.03552 +2016-07-01|24.0|93.0|-0.42567|0.03228 +2016-07-01|24.0|94.0|-0.49012|0.02885 +2016-07-01|24.0|95.0|-0.55925|0.02523 +2016-07-01|24.0|96.0|-0.63359|0.02141 +2016-07-01|24.0|97.0|-0.71368|0.0174 +2016-07-01|24.0|98.0|-0.79998|0.01321 +2016-07-01|24.0|99.0|-0.89291|0.00884 +2016-07-01|24.0|100.0|-0.9928|0.00431 +2016-07-01|24.0|101.0|-1.09991|-3.7E-4 +2016-07-01|24.0|102.0|-1.21437|-0.00518 +2016-07-01|24.0|103.0|-1.33619|-0.0101 +2016-07-01|24.0|104.0|-1.46528|-0.0151 +2016-07-01|24.0|105.0|-1.60138|-0.02017 +2016-07-01|24.0|106.0|-1.7441|-0.02527 +2016-07-01|24.0|107.0|-1.89292|-0.03038 +2016-07-01|24.0|108.0|-2.04716|-0.03546 +2016-07-01|24.0|109.0|-2.20603|-0.04048 +2016-07-01|24.0|110.0|-2.36857|-0.04542 +2016-07-01|24.0|111.0|-2.53375|-0.05023 +2016-07-01|24.0|112.0|-2.70039|-0.0549 +2016-07-01|24.0|113.0|-2.86724|-0.05938 +2016-07-01|24.0|114.0|-3.033|-0.06365 +2016-07-01|24.0|115.0|-3.19628|-0.06769 +2016-07-01|24.0|116.0|-3.35568|-0.07147 +2016-07-01|24.0|117.0|-3.5098|-0.07497 +2016-07-01|24.0|118.0|-3.65723|-0.07818 +2016-07-01|24.0|119.0|-3.7966|-0.08107 +2016-07-01|24.0|120.0|-3.92661|-0.08365 +2016-07-01|24.0|121.0|-4.04599|-0.08591 +2016-07-01|24.0|122.0|-4.15359|-0.08784 +2016-07-01|24.0|123.0|-4.24835|-0.08945 +2016-07-01|24.0|124.0|-4.32932|-0.09073 +2016-07-01|24.0|125.0|-4.39567|-0.09169 +2016-07-01|24.0|126.0|-4.4467|-0.09235 +2016-07-01|24.0|127.0|-4.48183|-0.09272 +2016-07-01|24.0|128.0|-4.50062|-0.0928 +2016-07-01|24.0|129.0|-4.50275|-0.09262 +2016-07-01|24.0|130.0|-4.48803|-0.09219 +2016-07-01|24.0|131.0|-4.45639|-0.09152 +2016-07-01|24.0|132.0|-4.40787|-0.09063 +2016-07-01|24.0|133.0|-4.34261|-0.08954 +2016-07-01|24.0|134.0|-4.26083|-0.08827 +2016-07-01|24.0|135.0|-4.16286|-0.08683 +2016-07-01|24.0|136.0|-4.04906|-0.08525 +2016-07-01|24.0|137.0|-3.91988|-0.08352 +2016-07-01|24.0|138.0|-3.77581|-0.08168 +2016-07-01|24.0|139.0|-3.61736|-0.07972 +2016-07-01|24.0|140.0|-3.44509|-0.07768 +2016-07-01|24.0|141.0|-3.25957|-0.07555 +2016-07-01|24.0|142.0|-3.06137|-0.07335 +2016-07-01|24.0|143.0|-2.85107|-0.0711 +2016-07-01|24.0|144.0|-2.62927|-0.06879 +2016-07-01|24.0|145.0|-2.39653|-0.06645 +2016-07-01|24.0|146.0|-2.15344|-0.06407 +2016-07-01|24.0|147.0|-1.90057|-0.06168 +2016-07-01|24.0|148.0|-1.63847|-0.05927 +2016-07-01|24.0|149.0|-1.36771|-0.05686 +2016-07-01|24.0|150.0|-1.08886|-0.05446 +2016-07-01|24.0|151.0|-0.80248|-0.05207 +2016-07-01|24.0|152.0|-0.50913|-0.04971 +2016-07-01|24.0|153.0|-0.20942|-0.04738 +2016-07-01|24.0|154.0|0.09605|-0.0451 +2016-07-01|24.0|155.0|0.40666|-0.04287 +2016-07-01|24.0|156.0|0.72174|-0.0407 +2016-07-01|24.0|157.0|1.04063|-0.03861 +2016-07-01|24.0|158.0|1.36258|-0.0366 +2016-07-01|24.0|159.0|1.68687|-0.03468 +2016-07-01|24.0|160.0|2.01269|-0.03286 +2016-07-01|24.0|161.0|2.33924|-0.03115 +2016-07-01|24.0|162.0|2.66565|-0.02956 +2016-07-01|24.0|163.0|2.99106|-0.0281 +2016-07-01|24.0|164.0|3.31457|-0.02677 +2016-07-01|24.0|165.0|3.63526|-0.02557 +2016-07-01|24.0|166.0|3.95222|-0.02452 +2016-07-01|24.0|167.0|4.26452|-0.02361 +2016-07-01|24.0|168.0|4.57126|-0.02286 +2016-07-01|24.0|169.0|4.87156|-0.02225 +2016-07-01|24.0|170.0|5.16456|-0.02178 +2016-07-01|24.0|171.0|5.44947|-0.02147 +2016-07-01|24.0|172.0|5.72552|-0.0213 +2016-07-01|24.0|173.0|5.99203|-0.02127 +2016-07-01|24.0|174.0|6.24841|-0.02138 +2016-07-01|24.0|175.0|6.49413|-0.02161 +2016-07-01|24.0|176.0|6.72876|-0.02197 +2016-07-01|24.0|177.0|6.95199|-0.02244 +2016-07-01|24.0|178.0|7.16359|-0.02302 +2016-07-01|24.0|179.0|7.36347|-0.02369 +2016-07-01|24.0|-1.0|-0.71581|0.09143 +2016-07-01|24.0|-2.0|-0.95403|0.09284 +2016-07-01|24.0|-3.0|-1.20325|0.09433 +2016-07-01|24.0|-4.0|-1.46378|0.09589 +2016-07-01|24.0|-5.0|-1.73583|0.09748 +2016-07-01|24.0|-6.0|-2.01946|0.09909 +2016-07-01|24.0|-7.0|-2.31464|0.10071 +2016-07-01|24.0|-8.0|-2.6212|0.10232 +2016-07-01|24.0|-9.0|-2.93883|0.1039 +2016-07-01|24.0|-10.0|-3.26716|0.10545 +2016-07-01|24.0|-11.0|-3.60565|0.10694 +2016-07-01|24.0|-12.0|-3.95371|0.10837 +2016-07-01|24.0|-13.0|-4.31063|0.10973 +2016-07-01|24.0|-14.0|-4.67565|0.11102 +2016-07-01|24.0|-15.0|-5.04794|0.11224 +2016-07-01|24.0|-16.0|-5.4266|0.11339 +2016-07-01|24.0|-17.0|-5.81071|0.11446 +2016-07-01|24.0|-18.0|-6.19933|0.11546 +2016-07-01|24.0|-19.0|-6.59149|0.11639 +2016-07-01|24.0|-20.0|-6.98624|0.11725 +2016-07-01|24.0|-21.0|-7.3826|0.11805 +2016-07-01|24.0|-22.0|-7.77964|0.11878 +2016-07-01|24.0|-23.0|-8.17643|0.11946 +2016-07-01|24.0|-24.0|-8.57209|0.12007 +2016-07-01|24.0|-25.0|-8.96573|0.12063 +2016-07-01|24.0|-26.0|-9.35652|0.12113 +2016-07-01|24.0|-27.0|-9.74365|0.12156 +2016-07-01|24.0|-28.0|-10.12634|0.12193 +2016-07-01|24.0|-29.0|-10.50382|0.12221 +2016-07-01|24.0|-30.0|-10.87536|0.12242 +2016-07-01|24.0|-31.0|-11.24022|0.12252 +2016-07-01|24.0|-32.0|-11.5977|0.12251 +2016-07-01|24.0|-33.0|-11.94707|0.12239 +2016-07-01|24.0|-34.0|-12.28761|0.12212 +2016-07-01|24.0|-35.0|-12.6186|0.1217 +2016-07-01|24.0|-36.0|-12.93927|0.1211 +2016-07-01|24.0|-37.0|-13.24887|0.12032 +2016-07-01|24.0|-38.0|-13.54659|0.11933 +2016-07-01|24.0|-39.0|-13.83161|0.11811 +2016-07-01|24.0|-40.0|-14.10309|0.11665 +2016-07-01|24.0|-41.0|-14.36012|0.11494 +2016-07-01|24.0|-42.0|-14.60181|0.11295 +2016-07-01|24.0|-43.0|-14.8272|0.11068 +2016-07-01|24.0|-44.0|-15.03534|0.10812 +2016-07-01|24.0|-45.0|-15.22526|0.10525 +2016-07-01|24.0|-46.0|-15.39596|0.10207 +2016-07-01|24.0|-47.0|-15.54645|0.09857 +2016-07-01|24.0|-48.0|-15.67576|0.09476 +2016-07-01|24.0|-49.0|-15.78293|0.09063 +2016-07-01|24.0|-50.0|-15.86701|0.08619 +2016-07-01|24.0|-51.0|-15.92711|0.08144 +2016-07-01|24.0|-52.0|-15.96239|0.0764 +2016-07-01|24.0|-53.0|-15.97207|0.07106 +2016-07-01|24.0|-54.0|-15.95542|0.06545 +2016-07-01|24.0|-55.0|-15.91182|0.05958 +2016-07-01|24.0|-56.0|-15.84073|0.05346 +2016-07-01|24.0|-57.0|-15.74168|0.04711 +2016-07-01|24.0|-58.0|-15.61436|0.04056 +2016-07-01|24.0|-59.0|-15.45851|0.03382 +2016-07-01|24.0|-60.0|-15.27403|0.02692 +2016-07-01|24.0|-61.0|-15.06091|0.01988 +2016-07-01|24.0|-62.0|-14.81928|0.01272 +2016-07-01|24.0|-63.0|-14.54937|0.00547 +2016-07-01|24.0|-64.0|-14.25155|-0.00184 +2016-07-01|24.0|-65.0|-13.92628|-0.00919 +2016-07-01|24.0|-66.0|-13.57417|-0.01654 +2016-07-01|24.0|-67.0|-13.1959|-0.02388 +2016-07-01|24.0|-68.0|-12.79231|-0.03117 +2016-07-01|24.0|-69.0|-12.36429|-0.03838 +2016-07-01|24.0|-70.0|-11.91287|-0.04549 +2016-07-01|24.0|-71.0|-11.43915|-0.05245 +2016-07-01|24.0|-72.0|-10.94431|-0.05926 +2016-07-01|24.0|-73.0|-10.42965|-0.06586 +2016-07-01|24.0|-74.0|-9.89651|-0.07224 +2016-07-01|24.0|-75.0|-9.34632|-0.07836 +2016-07-01|24.0|-76.0|-8.78057|-0.0842 +2016-07-01|24.0|-77.0|-8.20082|-0.08973 +2016-07-01|24.0|-78.0|-7.60865|-0.09493 +2016-07-01|24.0|-79.0|-7.00575|-0.09977 +2016-07-01|24.0|-80.0|-6.39379|-0.10423 +2016-07-01|24.0|-81.0|-5.77452|-0.10829 +2016-07-01|24.0|-82.0|-5.14969|-0.11193 +2016-07-01|24.0|-83.0|-4.5211|-0.11515 +2016-07-01|24.0|-84.0|-3.89052|-0.11793 +2016-07-01|24.0|-85.0|-3.25975|-0.12028 +2016-07-01|24.0|-86.0|-2.63057|-0.12218 +2016-07-01|24.0|-87.0|-2.00475|-0.12364 +2016-07-01|24.0|-88.0|-1.384|-0.12467 +2016-07-01|24.0|-89.0|-0.77003|-0.12529 +2016-07-01|24.0|-90.0|-0.16444|-0.1255 +2016-07-01|24.0|-91.0|0.43121|-0.12532 +2016-07-01|24.0|-92.0|1.01544|-0.12478 +2016-07-01|24.0|-93.0|1.58689|-0.12391 +2016-07-01|24.0|-94.0|2.14427|-0.12272 +2016-07-01|24.0|-95.0|2.68644|-0.12126 +2016-07-01|24.0|-96.0|3.21237|-0.11955 +2016-07-01|24.0|-97.0|3.72114|-0.11762 +2016-07-01|24.0|-98.0|4.21201|-0.1155 +2016-07-01|24.0|-99.0|4.68434|-0.11324 +2016-07-01|24.0|-100.0|5.13766|-0.11086 +2016-07-01|24.0|-101.0|5.57161|-0.10839 +2016-07-01|24.0|-102.0|5.98599|-0.10586 +2016-07-01|24.0|-103.0|6.38073|-0.10329 +2016-07-01|24.0|-104.0|6.75589|-0.10073 +2016-07-01|24.0|-105.0|7.11163|-0.09818 +2016-07-01|24.0|-106.0|7.44825|-0.09566 +2016-07-01|24.0|-107.0|7.76611|-0.0932 +2016-07-01|24.0|-108.0|8.06568|-0.09081 +2016-07-01|24.0|-109.0|8.34751|-0.0885 +2016-07-01|24.0|-110.0|8.6122|-0.08628 +2016-07-01|24.0|-111.0|8.86038|-0.08416 +2016-07-01|24.0|-112.0|9.09274|-0.08214 +2016-07-01|24.0|-113.0|9.30997|-0.08022 +2016-07-01|24.0|-114.0|9.51277|-0.0784 +2016-07-01|24.0|-115.0|9.70183|-0.07669 +2016-07-01|24.0|-116.0|9.87783|-0.07508 +2016-07-01|24.0|-117.0|10.04141|-0.07356 +2016-07-01|24.0|-118.0|10.19317|-0.07213 +2016-07-01|24.0|-119.0|10.33368|-0.07079 +2016-07-01|24.0|-120.0|10.46344|-0.06952 +2016-07-01|24.0|-121.0|10.5829|-0.06832 +2016-07-01|24.0|-122.0|10.69246|-0.06718 +2016-07-01|24.0|-123.0|10.79245|-0.0661 +2016-07-01|24.0|-124.0|10.88314|-0.06507 +2016-07-01|24.0|-125.0|10.96476|-0.06409 +2016-07-01|24.0|-126.0|11.03749|-0.06314 +2016-07-01|24.0|-127.0|11.10145|-0.06223 +2016-07-01|24.0|-128.0|11.15674|-0.06135 +2016-07-01|24.0|-129.0|11.20343|-0.0605 +2016-07-01|24.0|-130.0|11.24157|-0.05968 +2016-07-01|24.0|-131.0|11.2712|-0.05888 +2016-07-01|24.0|-132.0|11.29237|-0.05811 +2016-07-01|24.0|-133.0|11.30513|-0.05736 +2016-07-01|24.0|-134.0|11.30956|-0.05663 +2016-07-01|24.0|-135.0|11.30576|-0.05593 +2016-07-01|24.0|-136.0|11.29387|-0.05525 +2016-07-01|24.0|-137.0|11.27408|-0.0546 +2016-07-01|24.0|-138.0|11.24662|-0.05398 +2016-07-01|24.0|-139.0|11.21177|-0.05338 +2016-07-01|24.0|-140.0|11.16987|-0.0528 +2016-07-01|24.0|-141.0|11.12132|-0.05226 +2016-07-01|24.0|-142.0|11.06655|-0.05174 +2016-07-01|24.0|-143.0|11.00606|-0.05124 +2016-07-01|24.0|-144.0|10.94038|-0.05077 +2016-07-01|24.0|-145.0|10.87009|-0.05032 +2016-07-01|24.0|-146.0|10.79579|-0.04988 +2016-07-01|24.0|-147.0|10.7181|-0.04947 +2016-07-01|24.0|-148.0|10.63765|-0.04906 +2016-07-01|24.0|-149.0|10.55508|-0.04866 +2016-07-01|24.0|-150.0|10.47098|-0.04826 +2016-07-01|24.0|-151.0|10.38597|-0.04786 +2016-07-01|24.0|-152.0|10.30058|-0.04746 +2016-07-01|24.0|-153.0|10.21531|-0.04704 +2016-07-01|24.0|-154.0|10.13061|-0.0466 +2016-07-01|24.0|-155.0|10.04685|-0.04614 +2016-07-01|24.0|-156.0|9.9643|-0.04566 +2016-07-01|24.0|-157.0|9.88317|-0.04514 +2016-07-01|24.0|-158.0|9.80356|-0.04458 +2016-07-01|24.0|-159.0|9.72546|-0.04399 +2016-07-01|24.0|-160.0|9.64878|-0.04335 +2016-07-01|24.0|-161.0|9.57331|-0.04267 +2016-07-01|24.0|-162.0|9.49873|-0.04194 +2016-07-01|24.0|-163.0|9.42464|-0.04116 +2016-07-01|24.0|-164.0|9.35053|-0.04034 +2016-07-01|24.0|-165.0|9.27581|-0.03947 +2016-07-01|24.0|-166.0|9.19981|-0.03856 +2016-07-01|24.0|-167.0|9.12179|-0.0376 +2016-07-01|24.0|-168.0|9.04096|-0.03661 +2016-07-01|24.0|-169.0|8.95649|-0.03559 +2016-07-01|24.0|-170.0|8.86752|-0.03455 +2016-07-01|24.0|-171.0|8.77317|-0.03348 +2016-07-01|24.0|-172.0|8.67257|-0.0324 +2016-07-01|24.0|-173.0|8.56488|-0.03132 +2016-07-01|24.0|-174.0|8.44928|-0.03025 +2016-07-01|24.0|-175.0|8.325|-0.02919 +2016-07-01|24.0|-176.0|8.19134|-0.02815 +2016-07-01|24.0|-177.0|8.04767|-0.02715 +2016-07-01|24.0|-178.0|7.89345|-0.02619 +2016-07-01|24.0|-179.0|7.72822|-0.02529 +2016-07-01|25.0|0.0|-0.39906|0.09079 +2016-07-01|25.0|1.0|-0.18131|0.08956 +2016-07-01|25.0|2.0|0.02693|0.08845 +2016-07-01|25.0|3.0|0.22631|0.08749 +2016-07-01|25.0|4.0|0.41752|0.08668 +2016-07-01|25.0|5.0|0.6013|0.08602 +2016-07-01|25.0|6.0|0.7784|0.08554 +2016-07-01|25.0|7.0|0.94956|0.08522 +2016-07-01|25.0|8.0|1.11553|0.08507 +2016-07-01|25.0|9.0|1.27699|0.08509 +2016-07-01|25.0|10.0|1.43458|0.08525 +2016-07-01|25.0|11.0|1.58886|0.08555 +2016-07-01|25.0|12.0|1.74029|0.08598 +2016-07-01|25.0|13.0|1.88925|0.08651 +2016-07-01|25.0|14.0|2.03598|0.08711 +2016-07-01|25.0|15.0|2.18061|0.08777 +2016-07-01|25.0|16.0|2.32313|0.08845 +2016-07-01|25.0|17.0|2.46342|0.08913 +2016-07-01|25.0|18.0|2.60121|0.08977 +2016-07-01|25.0|19.0|2.73611|0.09034 +2016-07-01|25.0|20.0|2.86763|0.09082 +2016-07-01|25.0|21.0|2.99514|0.09117 +2016-07-01|25.0|22.0|3.11795|0.09137 +2016-07-01|25.0|23.0|3.23527|0.09139 +2016-07-01|25.0|24.0|3.34626|0.09121 +2016-07-01|25.0|25.0|3.45005|0.09082 +2016-07-01|25.0|26.0|3.54573|0.0902 +2016-07-01|25.0|27.0|3.63243|0.08934 +2016-07-01|25.0|28.0|3.70927|0.08824 +2016-07-01|25.0|29.0|3.77546|0.0869 +2016-07-01|25.0|30.0|3.83024|0.08533 +2016-07-01|25.0|31.0|3.87299|0.08354 +2016-07-01|25.0|32.0|3.90317|0.08154 +2016-07-01|25.0|33.0|3.92038|0.07936 +2016-07-01|25.0|34.0|3.92438|0.07703 +2016-07-01|25.0|35.0|3.91505|0.07457 +2016-07-01|25.0|36.0|3.89247|0.07203 +2016-07-01|25.0|37.0|3.85686|0.06942 +2016-07-01|25.0|38.0|3.80861|0.0668 +2016-07-01|25.0|39.0|3.74829|0.06419 +2016-07-01|25.0|40.0|3.67659|0.06165 +2016-07-01|25.0|41.0|3.59436|0.0592 +2016-07-01|25.0|42.0|3.50257|0.05688 +2016-07-01|25.0|43.0|3.4023|0.05472 +2016-07-01|25.0|44.0|3.29471|0.05276 +2016-07-01|25.0|45.0|3.18101|0.05101 +2016-07-01|25.0|46.0|3.06247|0.04951 +2016-07-01|25.0|47.0|2.94034|0.04826 +2016-07-01|25.0|48.0|2.81587|0.04727 +2016-07-01|25.0|49.0|2.69029|0.04656 +2016-07-01|25.0|50.0|2.56474|0.04611 +2016-07-01|25.0|51.0|2.44029|0.04593 +2016-07-01|25.0|52.0|2.31791|0.04601 +2016-07-01|25.0|53.0|2.19844|0.04632 +2016-07-01|25.0|54.0|2.08263|0.04685 +2016-07-01|25.0|55.0|1.97106|0.04757 +2016-07-01|25.0|56.0|1.86419|0.04847 +2016-07-01|25.0|57.0|1.76235|0.0495 +2016-07-01|25.0|58.0|1.66572|0.05065 +2016-07-01|25.0|59.0|1.57438|0.05189 +2016-07-01|25.0|60.0|1.48827|0.05317 +2016-07-01|25.0|61.0|1.40723|0.05449 +2016-07-01|25.0|62.0|1.33103|0.05579 +2016-07-01|25.0|63.0|1.25935|0.05707 +2016-07-01|25.0|64.0|1.19182|0.05829 +2016-07-01|25.0|65.0|1.12801|0.05944 +2016-07-01|25.0|66.0|1.06749|0.06049 +2016-07-01|25.0|67.0|1.00981|0.06142 +2016-07-01|25.0|68.0|0.95452|0.06223 +2016-07-01|25.0|69.0|0.90121|0.0629 +2016-07-01|25.0|70.0|0.84947|0.06342 +2016-07-01|25.0|71.0|0.79893|0.06379 +2016-07-01|25.0|72.0|0.74927|0.064 +2016-07-01|25.0|73.0|0.70023|0.06404 +2016-07-01|25.0|74.0|0.65155|0.06393 +2016-07-01|25.0|75.0|0.60307|0.06365 +2016-07-01|25.0|76.0|0.55461|0.06322 +2016-07-01|25.0|77.0|0.50608|0.06262 +2016-07-01|25.0|78.0|0.45737|0.06187 +2016-07-01|25.0|79.0|0.40842|0.06097 +2016-07-01|25.0|80.0|0.35916|0.05991 +2016-07-01|25.0|81.0|0.30952|0.0587 +2016-07-01|25.0|82.0|0.25942|0.05733 +2016-07-01|25.0|83.0|0.20876|0.05582 +2016-07-01|25.0|84.0|0.1574|0.05415 +2016-07-01|25.0|85.0|0.10517|0.05232 +2016-07-01|25.0|86.0|0.05185|0.05033 +2016-07-01|25.0|87.0|-0.00281|0.04818 +2016-07-01|25.0|88.0|-0.05913|0.04585 +2016-07-01|25.0|89.0|-0.11747|0.04336 +2016-07-01|25.0|90.0|-0.17824|0.04068 +2016-07-01|25.0|91.0|-0.24189|0.03783 +2016-07-01|25.0|92.0|-0.3089|0.03479 +2016-07-01|25.0|93.0|-0.37977|0.03156 +2016-07-01|25.0|94.0|-0.45502|0.02814 +2016-07-01|25.0|95.0|-0.53517|0.02453 +2016-07-01|25.0|96.0|-0.62072|0.02073 +2016-07-01|25.0|97.0|-0.71214|0.01675 +2016-07-01|25.0|98.0|-0.80987|0.01259 +2016-07-01|25.0|99.0|-0.91427|0.00827 +2016-07-01|25.0|100.0|-1.02562|0.00379 +2016-07-01|25.0|101.0|-1.14414|-8.3E-4 +2016-07-01|25.0|102.0|-1.26991|-0.00557 +2016-07-01|25.0|103.0|-1.40292|-0.01042 +2016-07-01|25.0|104.0|-1.54303|-0.01535 +2016-07-01|25.0|105.0|-1.68996|-0.02033 +2016-07-01|25.0|106.0|-1.84329|-0.02534 +2016-07-01|25.0|107.0|-2.00248|-0.03035 +2016-07-01|25.0|108.0|-2.16685|-0.03533 +2016-07-01|25.0|109.0|-2.33557|-0.04025 +2016-07-01|25.0|110.0|-2.50771|-0.04508 +2016-07-01|25.0|111.0|-2.68221|-0.04979 +2016-07-01|25.0|112.0|-2.85791|-0.05434 +2016-07-01|25.0|113.0|-3.03357|-0.05872 +2016-07-01|25.0|114.0|-3.20788|-0.06289 +2016-07-01|25.0|115.0|-3.37948|-0.06683 +2016-07-01|25.0|116.0|-3.54698|-0.07051 +2016-07-01|25.0|117.0|-3.70899|-0.07392 +2016-07-01|25.0|118.0|-3.86412|-0.07705 +2016-07-01|25.0|119.0|-4.01102|-0.07987 +2016-07-01|25.0|120.0|-4.14838|-0.08238 +2016-07-01|25.0|121.0|-4.27496|-0.08457 +2016-07-01|25.0|122.0|-4.38961|-0.08645 +2016-07-01|25.0|123.0|-4.49129|-0.08801 +2016-07-01|25.0|124.0|-4.57903|-0.08925 +2016-07-01|25.0|125.0|-4.65201|-0.09019 +2016-07-01|25.0|126.0|-4.70953|-0.09083 +2016-07-01|25.0|127.0|-4.751|-0.09119 +2016-07-01|25.0|128.0|-4.77597|-0.09127 +2016-07-01|25.0|129.0|-4.7841|-0.09109 +2016-07-01|25.0|130.0|-4.77519|-0.09066 +2016-07-01|25.0|131.0|-4.74916|-0.09001 +2016-07-01|25.0|132.0|-4.70601|-0.08915 +2016-07-01|25.0|133.0|-4.64588|-0.08809 +2016-07-01|25.0|134.0|-4.56896|-0.08686 +2016-07-01|25.0|135.0|-4.47554|-0.08546 +2016-07-01|25.0|136.0|-4.366|-0.08392 +2016-07-01|25.0|137.0|-4.24075|-0.08224 +2016-07-01|25.0|138.0|-4.10025|-0.08045 +2016-07-01|25.0|139.0|-3.94501|-0.07856 +2016-07-01|25.0|140.0|-3.77558|-0.07657 +2016-07-01|25.0|141.0|-3.59251|-0.07451 +2016-07-01|25.0|142.0|-3.39637|-0.07238 +2016-07-01|25.0|143.0|-3.18773|-0.0702 +2016-07-01|25.0|144.0|-2.96719|-0.06797 +2016-07-01|25.0|145.0|-2.73532|-0.0657 +2016-07-01|25.0|146.0|-2.4927|-0.06341 +2016-07-01|25.0|147.0|-2.23991|-0.0611 +2016-07-01|25.0|148.0|-1.97751|-0.05878 +2016-07-01|25.0|149.0|-1.70609|-0.05646 +2016-07-01|25.0|150.0|-1.4262|-0.05415 +2016-07-01|25.0|151.0|-1.13844|-0.05187 +2016-07-01|25.0|152.0|-0.84338|-0.04961 +2016-07-01|25.0|153.0|-0.54162|-0.04739 +2016-07-01|25.0|154.0|-0.23378|-0.04522 +2016-07-01|25.0|155.0|0.07951|-0.04311 +2016-07-01|25.0|156.0|0.39758|-0.04107 +2016-07-01|25.0|157.0|0.71976|-0.0391 +2016-07-01|25.0|158.0|1.04533|-0.03722 +2016-07-01|25.0|159.0|1.37352|-0.03544 +2016-07-01|25.0|160.0|1.70357|-0.03376 +2016-07-01|25.0|161.0|2.03467|-0.0322 +2016-07-01|25.0|162.0|2.36596|-0.03076 +2016-07-01|25.0|163.0|2.69659|-0.02945 +2016-07-01|25.0|164.0|3.02567|-0.02828 +2016-07-01|25.0|165.0|3.3523|-0.02724 +2016-07-01|25.0|166.0|3.67558|-0.02635 +2016-07-01|25.0|167.0|3.9946|-0.02561 +2016-07-01|25.0|168.0|4.30847|-0.02501 +2016-07-01|25.0|169.0|4.61631|-0.02457 +2016-07-01|25.0|170.0|4.91728|-0.02428 +2016-07-01|25.0|171.0|5.21058|-0.02413 +2016-07-01|25.0|172.0|5.49547|-0.02412 +2016-07-01|25.0|173.0|5.77126|-0.02425 +2016-07-01|25.0|174.0|6.03733|-0.02452 +2016-07-01|25.0|175.0|6.29317|-0.02491 +2016-07-01|25.0|176.0|6.53833|-0.02542 +2016-07-01|25.0|177.0|6.77246|-0.02603 +2016-07-01|25.0|178.0|6.99534|-0.02675 +2016-07-01|25.0|179.0|7.20683|-0.02755 +2016-07-01|25.0|-1.0|-0.62689|0.09213 +2016-07-01|25.0|-2.0|-0.86529|0.09357 +2016-07-01|25.0|-3.0|-1.11463|0.09508 +2016-07-01|25.0|-4.0|-1.37521|0.09664 +2016-07-01|25.0|-5.0|-1.64718|0.09824 +2016-07-01|25.0|-6.0|-1.9306|0.09986 +2016-07-01|25.0|-7.0|-2.2254|0.10148 +2016-07-01|25.0|-8.0|-2.53138|0.10308 +2016-07-01|25.0|-9.0|-2.84824|0.10465 +2016-07-01|25.0|-10.0|-3.17555|0.10618 +2016-07-01|25.0|-11.0|-3.51281|0.10766 +2016-07-01|25.0|-12.0|-3.85938|0.10907 +2016-07-01|25.0|-13.0|-4.21458|0.11042 +2016-07-01|25.0|-14.0|-4.57762|0.1117 +2016-07-01|25.0|-15.0|-4.94769|0.11291 +2016-07-01|25.0|-16.0|-5.32391|0.11404 +2016-07-01|25.0|-17.0|-5.70536|0.1151 +2016-07-01|25.0|-18.0|-6.09113|0.11609 +2016-07-01|25.0|-19.0|-6.48026|0.11701 +2016-07-01|25.0|-20.0|-6.87183|0.11787 +2016-07-01|25.0|-21.0|-7.26489|0.11867 +2016-07-01|25.0|-22.0|-7.65854|0.11941 +2016-07-01|25.0|-23.0|-8.05189|0.12009 +2016-07-01|25.0|-24.0|-8.44408|0.12072 +2016-07-01|25.0|-25.0|-8.83429|0.1213 +2016-07-01|25.0|-26.0|-9.2217|0.12182 +2016-07-01|25.0|-27.0|-9.60555|0.12229 +2016-07-01|25.0|-28.0|-9.9851|0.12269 +2016-07-01|25.0|-29.0|-10.35965|0.12303 +2016-07-01|25.0|-30.0|-10.72848|0.12328 +2016-07-01|25.0|-31.0|-11.09092|0.12345 +2016-07-01|25.0|-32.0|-11.4463|0.12352 +2016-07-01|25.0|-33.0|-11.79393|0.12348 +2016-07-01|25.0|-34.0|-12.13316|0.1233 +2016-07-01|25.0|-35.0|-12.46328|0.12299 +2016-07-01|25.0|-36.0|-12.78358|0.12251 +2016-07-01|25.0|-37.0|-13.09334|0.12184 +2016-07-01|25.0|-38.0|-13.39179|0.12099 +2016-07-01|25.0|-39.0|-13.67814|0.11991 +2016-07-01|25.0|-40.0|-13.95158|0.11861 +2016-07-01|25.0|-41.0|-14.21123|0.11706 +2016-07-01|25.0|-42.0|-14.4562|0.11524 +2016-07-01|25.0|-43.0|-14.68558|0.11314 +2016-07-01|25.0|-44.0|-14.8984|0.11076 +2016-07-01|25.0|-45.0|-15.09371|0.10808 +2016-07-01|25.0|-46.0|-15.2705|0.10509 +2016-07-01|25.0|-47.0|-15.42779|0.10179 +2016-07-01|25.0|-48.0|-15.56458|0.09817 +2016-07-01|25.0|-49.0|-15.67989|0.09423 +2016-07-01|25.0|-50.0|-15.77275|0.08998 +2016-07-01|25.0|-51.0|-15.84224|0.08542 +2016-07-01|25.0|-52.0|-15.88747|0.08055 +2016-07-01|25.0|-53.0|-15.9076|0.07539 +2016-07-01|25.0|-54.0|-15.90188|0.06995 +2016-07-01|25.0|-55.0|-15.86961|0.06423 +2016-07-01|25.0|-56.0|-15.81018|0.05826 +2016-07-01|25.0|-57.0|-15.72307|0.05205 +2016-07-01|25.0|-58.0|-15.60787|0.04561 +2016-07-01|25.0|-59.0|-15.46427|0.03898 +2016-07-01|25.0|-60.0|-15.29207|0.03217 +2016-07-01|25.0|-61.0|-15.09119|0.0252 +2016-07-01|25.0|-62.0|-14.86167|0.0181 +2016-07-01|25.0|-63.0|-14.60365|0.01089 +2016-07-01|25.0|-64.0|-14.31741|0.0036 +2016-07-01|25.0|-65.0|-14.00336|-0.00374 +2016-07-01|25.0|-66.0|-13.66199|-0.01111 +2016-07-01|25.0|-67.0|-13.29394|-0.01848 +2016-07-01|25.0|-68.0|-12.89995|-0.02581 +2016-07-01|25.0|-69.0|-12.48086|-0.03309 +2016-07-01|25.0|-70.0|-12.03763|-0.04027 +2016-07-01|25.0|-71.0|-11.5713|-0.04733 +2016-07-01|25.0|-72.0|-11.08303|-0.05424 +2016-07-01|25.0|-73.0|-10.57404|-0.06097 +2016-07-01|25.0|-74.0|-10.04566|-0.06748 +2016-07-01|25.0|-75.0|-9.49929|-0.07375 +2016-07-01|25.0|-76.0|-8.9364|-0.07975 +2016-07-01|25.0|-77.0|-8.35854|-0.08544 +2016-07-01|25.0|-78.0|-7.76731|-0.09081 +2016-07-01|25.0|-79.0|-7.16436|-0.09583 +2016-07-01|25.0|-80.0|-6.55142|-0.10047 +2016-07-01|25.0|-81.0|-5.93023|-0.10472 +2016-07-01|25.0|-82.0|-5.30257|-0.10855 +2016-07-01|25.0|-83.0|-4.67027|-0.11196 +2016-07-01|25.0|-84.0|-4.03514|-0.11494 +2016-07-01|25.0|-85.0|-3.39902|-0.11748 +2016-07-01|25.0|-86.0|-2.76374|-0.11958 +2016-07-01|25.0|-87.0|-2.13109|-0.12123 +2016-07-01|25.0|-88.0|-1.50287|-0.12245 +2016-07-01|25.0|-89.0|-0.88079|-0.12325 +2016-07-01|25.0|-90.0|-0.26655|-0.12364 +2016-07-01|25.0|-91.0|0.33826|-0.12364 +2016-07-01|25.0|-92.0|0.93211|-0.12328 +2016-07-01|25.0|-93.0|1.51357|-0.12257 +2016-07-01|25.0|-94.0|2.08131|-0.12154 +2016-07-01|25.0|-95.0|2.63414|-0.12023 +2016-07-01|25.0|-96.0|3.17096|-0.11866 +2016-07-01|25.0|-97.0|3.69082|-0.11687 +2016-07-01|25.0|-98.0|4.19292|-0.11489 +2016-07-01|25.0|-99.0|4.67657|-0.11275 +2016-07-01|25.0|-100.0|5.14125|-0.11049 +2016-07-01|25.0|-101.0|5.58657|-0.10813 +2016-07-01|25.0|-102.0|6.01228|-0.10571 +2016-07-01|25.0|-103.0|6.41827|-0.10325 +2016-07-01|25.0|-104.0|6.80455|-0.10077 +2016-07-01|25.0|-105.0|7.17125|-0.09831 +2016-07-01|25.0|-106.0|7.51862|-0.09588 +2016-07-01|25.0|-107.0|7.847|-0.0935 +2016-07-01|25.0|-108.0|8.15682|-0.09118 +2016-07-01|25.0|-109.0|8.4486|-0.08895 +2016-07-01|25.0|-110.0|8.7229|-0.08679 +2016-07-01|25.0|-111.0|8.98034|-0.08474 +2016-07-01|25.0|-112.0|9.22157|-0.08278 +2016-07-01|25.0|-113.0|9.44725|-0.08092 +2016-07-01|25.0|-114.0|9.65808|-0.07916 +2016-07-01|25.0|-115.0|9.85472|-0.07751 +2016-07-01|25.0|-116.0|10.03783|-0.07595 +2016-07-01|25.0|-117.0|10.20803|-0.07449 +2016-07-01|25.0|-118.0|10.36594|-0.07312 +2016-07-01|25.0|-119.0|10.51209|-0.07183 +2016-07-01|25.0|-120.0|10.64699|-0.07062 +2016-07-01|25.0|-121.0|10.77108|-0.06948 +2016-07-01|25.0|-122.0|10.88478|-0.0684 +2016-07-01|25.0|-123.0|10.98841|-0.06738 +2016-07-01|25.0|-124.0|11.08225|-0.06641 +2016-07-01|25.0|-125.0|11.16656|-0.06549 +2016-07-01|25.0|-126.0|11.2415|-0.06461 +2016-07-01|25.0|-127.0|11.30724|-0.06377 +2016-07-01|25.0|-128.0|11.36388|-0.06296 +2016-07-01|25.0|-129.0|11.41151|-0.06218 +2016-07-01|25.0|-130.0|11.4502|-0.06143 +2016-07-01|25.0|-131.0|11.48001|-0.0607 +2016-07-01|25.0|-132.0|11.50101|-0.06 +2016-07-01|25.0|-133.0|11.51328|-0.05933 +2016-07-01|25.0|-134.0|11.51691|-0.05868 +2016-07-01|25.0|-135.0|11.51201|-0.05805 +2016-07-01|25.0|-136.0|11.49876|-0.05745 +2016-07-01|25.0|-137.0|11.47735|-0.05688 +2016-07-01|25.0|-138.0|11.44801|-0.05633 +2016-07-01|25.0|-139.0|11.41106|-0.05581 +2016-07-01|25.0|-140.0|11.36682|-0.05532 +2016-07-01|25.0|-141.0|11.3157|-0.05486 +2016-07-01|25.0|-142.0|11.25814|-0.05442 +2016-07-01|25.0|-143.0|11.19463|-0.05401 +2016-07-01|25.0|-144.0|11.1257|-0.05362 +2016-07-01|25.0|-145.0|11.05192|-0.05325 +2016-07-01|25.0|-146.0|10.97388|-0.0529 +2016-07-01|25.0|-147.0|10.89218|-0.05257 +2016-07-01|25.0|-148.0|10.80746|-0.05226 +2016-07-01|25.0|-149.0|10.7203|-0.05195 +2016-07-01|25.0|-150.0|10.63133|-0.05164 +2016-07-01|25.0|-151.0|10.54111|-0.05133 +2016-07-01|25.0|-152.0|10.45017|-0.05102 +2016-07-01|25.0|-153.0|10.35899|-0.05069 +2016-07-01|25.0|-154.0|10.268|-0.05035 +2016-07-01|25.0|-155.0|10.17756|-0.04998 +2016-07-01|25.0|-156.0|10.08793|-0.04958 +2016-07-01|25.0|-157.0|9.9993|-0.04915 +2016-07-01|25.0|-158.0|9.91176|-0.04868 +2016-07-01|25.0|-159.0|9.82531|-0.04817 +2016-07-01|25.0|-160.0|9.73984|-0.04761 +2016-07-01|25.0|-161.0|9.65515|-0.047 +2016-07-01|25.0|-162.0|9.57093|-0.04634 +2016-07-01|25.0|-163.0|9.48678|-0.04562 +2016-07-01|25.0|-164.0|9.4022|-0.04485 +2016-07-01|25.0|-165.0|9.31663|-0.04403 +2016-07-01|25.0|-166.0|9.22942|-0.04315 +2016-07-01|25.0|-167.0|9.13985|-0.04223 +2016-07-01|25.0|-168.0|9.04717|-0.04126 +2016-07-01|25.0|-169.0|8.95058|-0.04024 +2016-07-01|25.0|-170.0|8.84924|-0.03919 +2016-07-01|25.0|-171.0|8.74234|-0.03811 +2016-07-01|25.0|-172.0|8.62905|-0.03701 +2016-07-01|25.0|-173.0|8.50856|-0.03589 +2016-07-01|25.0|-174.0|8.38011|-0.03476 +2016-07-01|25.0|-175.0|8.24298|-0.03364 +2016-07-01|25.0|-176.0|8.0965|-0.03253 +2016-07-01|25.0|-177.0|7.94011|-0.03144 +2016-07-01|25.0|-178.0|7.7733|-0.03039 +2016-07-01|25.0|-179.0|7.59567|-0.02938 +2016-07-01|26.0|0.0|-0.3162|0.0916 +2016-07-01|26.0|1.0|-0.09795|0.09033 +2016-07-01|26.0|2.0|0.11076|0.08919 +2016-07-01|26.0|3.0|0.31055|0.08818 +2016-07-01|26.0|4.0|0.50209|0.08732 +2016-07-01|26.0|5.0|0.68607|0.08662 +2016-07-01|26.0|6.0|0.86324|0.08608 +2016-07-01|26.0|7.0|1.03433|0.0857 +2016-07-01|26.0|8.0|1.20004|0.08549 +2016-07-01|26.0|9.0|1.36108|0.08544 +2016-07-01|26.0|10.0|1.51807|0.08554 +2016-07-01|26.0|11.0|1.67156|0.08578 +2016-07-01|26.0|12.0|1.82204|0.08614 +2016-07-01|26.0|13.0|1.96987|0.08661 +2016-07-01|26.0|14.0|2.11534|0.08715 +2016-07-01|26.0|15.0|2.25859|0.08776 +2016-07-01|26.0|16.0|2.39963|0.08839 +2016-07-01|26.0|17.0|2.53838|0.08903 +2016-07-01|26.0|18.0|2.67461|0.08964 +2016-07-01|26.0|19.0|2.80796|0.09019 +2016-07-01|26.0|20.0|2.93798|0.09066 +2016-07-01|26.0|21.0|3.0641|0.09101 +2016-07-01|26.0|22.0|3.18566|0.09122 +2016-07-01|26.0|23.0|3.30192|0.09127 +2016-07-01|26.0|24.0|3.41209|0.09113 +2016-07-01|26.0|25.0|3.51532|0.09078 +2016-07-01|26.0|26.0|3.61077|0.09022 +2016-07-01|26.0|27.0|3.69758|0.08943 +2016-07-01|26.0|28.0|3.77493|0.08841 +2016-07-01|26.0|29.0|3.84202|0.08716 +2016-07-01|26.0|30.0|3.89815|0.08568 +2016-07-01|26.0|31.0|3.94268|0.08399 +2016-07-01|26.0|32.0|3.97509|0.0821 +2016-07-01|26.0|33.0|3.995|0.08003 +2016-07-01|26.0|34.0|4.00213|0.07781 +2016-07-01|26.0|35.0|3.99637|0.07546 +2016-07-01|26.0|36.0|3.97777|0.07301 +2016-07-01|26.0|37.0|3.94652|0.0705 +2016-07-01|26.0|38.0|3.90299|0.06797 +2016-07-01|26.0|39.0|3.84767|0.06544 +2016-07-01|26.0|40.0|3.78125|0.06296 +2016-07-01|26.0|41.0|3.7045|0.06056 +2016-07-01|26.0|42.0|3.61835|0.05828 +2016-07-01|26.0|43.0|3.52383|0.05615 +2016-07-01|26.0|44.0|3.42202|0.0542 +2016-07-01|26.0|45.0|3.3141|0.05244 +2016-07-01|26.0|46.0|3.20127|0.05091 +2016-07-01|26.0|47.0|3.08473|0.04963 +2016-07-01|26.0|48.0|2.9657|0.04859 +2016-07-01|26.0|49.0|2.84533|0.04781 +2016-07-01|26.0|50.0|2.72475|0.04728 +2016-07-01|26.0|51.0|2.60497|0.04701 +2016-07-01|26.0|52.0|2.48694|0.04698 +2016-07-01|26.0|53.0|2.37149|0.04718 +2016-07-01|26.0|54.0|2.25933|0.0476 +2016-07-01|26.0|55.0|2.15104|0.0482 +2016-07-01|26.0|56.0|2.04708|0.04898 +2016-07-01|26.0|57.0|1.94777|0.04989 +2016-07-01|26.0|58.0|1.85329|0.05092 +2016-07-01|26.0|59.0|1.76373|0.05204 +2016-07-01|26.0|60.0|1.67904|0.05321 +2016-07-01|26.0|61.0|1.59909|0.05442 +2016-07-01|26.0|62.0|1.52363|0.05563 +2016-07-01|26.0|63.0|1.45237|0.05681 +2016-07-01|26.0|64.0|1.38495|0.05795 +2016-07-01|26.0|65.0|1.32097|0.05902 +2016-07-01|26.0|66.0|1.25999|0.06001 +2016-07-01|26.0|67.0|1.20158|0.06089 +2016-07-01|26.0|68.0|1.14529|0.06165 +2016-07-01|26.0|69.0|1.09071|0.06228 +2016-07-01|26.0|70.0|1.03743|0.06277 +2016-07-01|26.0|71.0|0.98508|0.06311 +2016-07-01|26.0|72.0|0.93333|0.0633 +2016-07-01|26.0|73.0|0.88189|0.06334 +2016-07-01|26.0|74.0|0.83051|0.06322 +2016-07-01|26.0|75.0|0.77899|0.06294 +2016-07-01|26.0|76.0|0.72715|0.0625 +2016-07-01|26.0|77.0|0.67487|0.0619 +2016-07-01|26.0|78.0|0.62202|0.06115 +2016-07-01|26.0|79.0|0.56851|0.06025 +2016-07-01|26.0|80.0|0.51427|0.05919 +2016-07-01|26.0|81.0|0.45919|0.05798 +2016-07-01|26.0|82.0|0.4032|0.05661 +2016-07-01|26.0|83.0|0.34616|0.05509 +2016-07-01|26.0|84.0|0.28795|0.05342 +2016-07-01|26.0|85.0|0.22839|0.05158 +2016-07-01|26.0|86.0|0.16726|0.04959 +2016-07-01|26.0|87.0|0.10431|0.04743 +2016-07-01|26.0|88.0|0.03924|0.0451 +2016-07-01|26.0|89.0|-0.0283|0.0426 +2016-07-01|26.0|90.0|-0.09868|0.03992 +2016-07-01|26.0|91.0|-0.17233|0.03707 +2016-07-01|26.0|92.0|-0.24969|0.03403 +2016-07-01|26.0|93.0|-0.33123|0.0308 +2016-07-01|26.0|94.0|-0.41743|0.02739 +2016-07-01|26.0|95.0|-0.50877|0.0238 +2016-07-01|26.0|96.0|-0.60569|0.02002 +2016-07-01|26.0|97.0|-0.70862|0.01607 +2016-07-01|26.0|98.0|-0.81796|0.01195 +2016-07-01|26.0|99.0|-0.934|0.00767 +2016-07-01|26.0|100.0|-1.05701|0.00324 +2016-07-01|26.0|101.0|-1.18713|-0.00132 +2016-07-01|26.0|102.0|-1.32442|-0.006 +2016-07-01|26.0|103.0|-1.46883|-0.01077 +2016-07-01|26.0|104.0|-1.62017|-0.01561 +2016-07-01|26.0|105.0|-1.77815|-0.02051 +2016-07-01|26.0|106.0|-1.94231|-0.02543 +2016-07-01|26.0|107.0|-2.1121|-0.03034 +2016-07-01|26.0|108.0|-2.28682|-0.03522 +2016-07-01|26.0|109.0|-2.46562|-0.04003 +2016-07-01|26.0|110.0|-2.64758|-0.04475 +2016-07-01|26.0|111.0|-2.83162|-0.04935 +2016-07-01|26.0|112.0|-3.01659|-0.0538 +2016-07-01|26.0|113.0|-3.20126|-0.05807 +2016-07-01|26.0|114.0|-3.38432|-0.06214 +2016-07-01|26.0|115.0|-3.56443|-0.06597 +2016-07-01|26.0|116.0|-3.74021|-0.06956 +2016-07-01|26.0|117.0|-3.91028|-0.07288 +2016-07-01|26.0|118.0|-4.07325|-0.07591 +2016-07-01|26.0|119.0|-4.2278|-0.07865 +2016-07-01|26.0|120.0|-4.37263|-0.08109 +2016-07-01|26.0|121.0|-4.50651|-0.08322 +2016-07-01|26.0|122.0|-4.62829|-0.08504 +2016-07-01|26.0|123.0|-4.73694|-0.08655 +2016-07-01|26.0|124.0|-4.8315|-0.08776 +2016-07-01|26.0|125.0|-4.91115|-0.08866 +2016-07-01|26.0|126.0|-4.97517|-0.08928 +2016-07-01|26.0|127.0|-5.02298|-0.08961 +2016-07-01|26.0|128.0|-5.05411|-0.08969 +2016-07-01|26.0|129.0|-5.06821|-0.0895 +2016-07-01|26.0|130.0|-5.06508|-0.08909 +2016-07-01|26.0|131.0|-5.0446|-0.08845 +2016-07-01|26.0|132.0|-5.00678|-0.08761 +2016-07-01|26.0|133.0|-4.95171|-0.08657 +2016-07-01|26.0|134.0|-4.87958|-0.08537 +2016-07-01|26.0|135.0|-4.79067|-0.08401 +2016-07-01|26.0|136.0|-4.68532|-0.08251 +2016-07-01|26.0|137.0|-4.56393|-0.08088 +2016-07-01|26.0|138.0|-4.42696|-0.07914 +2016-07-01|26.0|139.0|-4.27489|-0.0773 +2016-07-01|26.0|140.0|-4.10825|-0.07537 +2016-07-01|26.0|141.0|-3.9276|-0.07337 +2016-07-01|26.0|142.0|-3.73349|-0.07131 +2016-07-01|26.0|143.0|-3.52651|-0.06919 +2016-07-01|26.0|144.0|-3.30723|-0.06703 +2016-07-01|26.0|145.0|-3.07623|-0.06485 +2016-07-01|26.0|146.0|-2.83411|-0.06263 +2016-07-01|26.0|147.0|-2.58143|-0.06041 +2016-07-01|26.0|148.0|-2.31879|-0.05818 +2016-07-01|26.0|149.0|-2.04676|-0.05596 +2016-07-01|26.0|150.0|-1.76592|-0.05375 +2016-07-01|26.0|151.0|-1.47687|-0.05157 +2016-07-01|26.0|152.0|-1.18019|-0.04942 +2016-07-01|26.0|153.0|-0.87649|-0.04731 +2016-07-01|26.0|154.0|-0.56641|-0.04526 +2016-07-01|26.0|155.0|-0.25057|-0.04327 +2016-07-01|26.0|156.0|0.07036|-0.04136 +2016-07-01|26.0|157.0|0.39569|-0.03953 +2016-07-01|26.0|158.0|0.7247|-0.03778 +2016-07-01|26.0|159.0|1.05664|-0.03615 +2016-07-01|26.0|160.0|1.39075|-0.03462 +2016-07-01|26.0|161.0|1.72621|-0.03321 +2016-07-01|26.0|162.0|2.0622|-0.03192 +2016-07-01|26.0|163.0|2.39787|-0.03077 +2016-07-01|26.0|164.0|2.73233|-0.02976 +2016-07-01|26.0|165.0|3.06472|-0.02889 +2016-07-01|26.0|166.0|3.39413|-0.02817 +2016-07-01|26.0|167.0|3.71968|-0.0276 +2016-07-01|26.0|168.0|4.0405|-0.02718 +2016-07-01|26.0|169.0|4.35571|-0.02691 +2016-07-01|26.0|170.0|4.66449|-0.02678 +2016-07-01|26.0|171.0|4.96604|-0.0268 +2016-07-01|26.0|172.0|5.25963|-0.02697 +2016-07-01|26.0|173.0|5.54458|-0.02727 +2016-07-01|26.0|174.0|5.82026|-0.0277 +2016-07-01|26.0|175.0|6.08614|-0.02825 +2016-07-01|26.0|176.0|6.34178|-0.02891 +2016-07-01|26.0|177.0|6.58681|-0.02967 +2016-07-01|26.0|178.0|6.82097|-0.03053 +2016-07-01|26.0|179.0|7.04411|-0.03147 +2016-07-01|26.0|-1.0|-0.54453|0.09296 +2016-07-01|26.0|-2.0|-0.78339|0.09442 +2016-07-01|26.0|-3.0|-1.03314|0.09594 +2016-07-01|26.0|-4.0|-1.29402|0.09751 +2016-07-01|26.0|-5.0|-1.56618|0.09911 +2016-07-01|26.0|-6.0|-1.84963|0.10073 +2016-07-01|26.0|-7.0|-2.14429|0.10235 +2016-07-01|26.0|-8.0|-2.44993|0.10394 +2016-07-01|26.0|-9.0|-2.76624|0.1055 +2016-07-01|26.0|-10.0|-3.09277|0.10702 +2016-07-01|26.0|-11.0|-3.429|0.10849 +2016-07-01|26.0|-12.0|-3.7743|0.10989 +2016-07-01|26.0|-13.0|-4.12798|0.11123 +2016-07-01|26.0|-14.0|-4.48927|0.11249 +2016-07-01|26.0|-15.0|-4.85735|0.11369 +2016-07-01|26.0|-16.0|-5.23134|0.11481 +2016-07-01|26.0|-17.0|-5.61036|0.11586 +2016-07-01|26.0|-18.0|-5.9935|0.11684 +2016-07-01|26.0|-19.0|-6.37984|0.11775 +2016-07-01|26.0|-20.0|-6.76846|0.11861 +2016-07-01|26.0|-21.0|-7.15846|0.11941 +2016-07-01|26.0|-22.0|-7.54896|0.12015 +2016-07-01|26.0|-23.0|-7.93911|0.12085 +2016-07-01|26.0|-24.0|-8.32808|0.12149 +2016-07-01|26.0|-25.0|-8.71508|0.12209 +2016-07-01|26.0|-26.0|-9.09935|0.12264 +2016-07-01|26.0|-27.0|-9.48015|0.12313 +2016-07-01|26.0|-28.0|-9.8568|0.12357 +2016-07-01|26.0|-29.0|-10.22861|0.12395 +2016-07-01|26.0|-30.0|-10.59494|0.12426 +2016-07-01|26.0|-31.0|-10.95514|0.12449 +2016-07-01|26.0|-32.0|-11.30857|0.12463 +2016-07-01|26.0|-33.0|-11.65462|0.12466 +2016-07-01|26.0|-34.0|-11.99265|0.12457 +2016-07-01|26.0|-35.0|-12.32199|0.12435 +2016-07-01|26.0|-36.0|-12.64199|0.12398 +2016-07-01|26.0|-37.0|-12.95195|0.12343 +2016-07-01|26.0|-38.0|-13.25113|0.1227 +2016-07-01|26.0|-39.0|-13.53879|0.12176 +2016-07-01|26.0|-40.0|-13.81412|0.1206 +2016-07-01|26.0|-41.0|-14.07628|0.1192 +2016-07-01|26.0|-42.0|-14.32442|0.11754 +2016-07-01|26.0|-43.0|-14.55761|0.11561 +2016-07-01|26.0|-44.0|-14.77492|0.1134 +2016-07-01|26.0|-45.0|-14.97538|0.1109 +2016-07-01|26.0|-46.0|-15.158|0.10809 +2016-07-01|26.0|-47.0|-15.32179|0.10497 +2016-07-01|26.0|-48.0|-15.46574|0.10154 +2016-07-01|26.0|-49.0|-15.58884|0.09779 +2016-07-01|26.0|-50.0|-15.69011|0.09373 +2016-07-01|26.0|-51.0|-15.76859|0.08935 +2016-07-01|26.0|-52.0|-15.82335|0.08466 +2016-07-01|26.0|-53.0|-15.85353|0.07967 +2016-07-01|26.0|-54.0|-15.85829|0.0744 +2016-07-01|26.0|-55.0|-15.8369|0.06884 +2016-07-01|26.0|-56.0|-15.78869|0.06301 +2016-07-01|26.0|-57.0|-15.71306|0.05694 +2016-07-01|26.0|-58.0|-15.60954|0.05063 +2016-07-01|26.0|-59.0|-15.47774|0.04411 +2016-07-01|26.0|-60.0|-15.31738|0.03739 +2016-07-01|26.0|-61.0|-15.12829|0.03051 +2016-07-01|26.0|-62.0|-14.91044|0.02347 +2016-07-01|26.0|-63.0|-14.66389|0.01632 +2016-07-01|26.0|-64.0|-14.38883|0.00906 +2016-07-01|26.0|-65.0|-14.08558|0.00174 +2016-07-01|26.0|-66.0|-13.75456|-0.00563 +2016-07-01|26.0|-67.0|-13.39634|-0.01302 +2016-07-01|26.0|-68.0|-13.01157|-0.02039 +2016-07-01|26.0|-69.0|-12.60104|-0.02772 +2016-07-01|26.0|-70.0|-12.16564|-0.03497 +2016-07-01|26.0|-71.0|-11.70635|-0.04211 +2016-07-01|26.0|-72.0|-11.22428|-0.04912 +2016-07-01|26.0|-73.0|-10.72062|-0.05595 +2016-07-01|26.0|-74.0|-10.19666|-0.06259 +2016-07-01|26.0|-75.0|-9.65377|-0.069 +2016-07-01|26.0|-76.0|-9.09341|-0.07514 +2016-07-01|26.0|-77.0|-8.51711|-0.08099 +2016-07-01|26.0|-78.0|-7.92646|-0.08653 +2016-07-01|26.0|-79.0|-7.32315|-0.09172 +2016-07-01|26.0|-80.0|-6.70888|-0.09654 +2016-07-01|26.0|-81.0|-6.08544|-0.10098 +2016-07-01|26.0|-82.0|-5.45463|-0.10501 +2016-07-01|26.0|-83.0|-4.8183|-0.10861 +2016-07-01|26.0|-84.0|-4.1783|-0.11179 +2016-07-01|26.0|-85.0|-3.53652|-0.11452 +2016-07-01|26.0|-86.0|-2.89483|-0.11681 +2016-07-01|26.0|-87.0|-2.25507|-0.11867 +2016-07-01|26.0|-88.0|-1.61908|-0.12008 +2016-07-01|26.0|-89.0|-0.98864|-0.12107 +2016-07-01|26.0|-90.0|-0.36549|-0.12165 +2016-07-01|26.0|-91.0|0.24872|-0.12184 +2016-07-01|26.0|-92.0|0.8524|-0.12165 +2016-07-01|26.0|-93.0|1.44408|-0.12112 +2016-07-01|26.0|-94.0|2.02237|-0.12026 +2016-07-01|26.0|-95.0|2.58601|-0.11911 +2016-07-01|26.0|-96.0|3.13387|-0.1177 +2016-07-01|26.0|-97.0|3.66494|-0.11606 +2016-07-01|26.0|-98.0|4.17837|-0.11422 +2016-07-01|26.0|-99.0|4.67343|-0.11222 +2016-07-01|26.0|-100.0|5.14955|-0.11009 +2016-07-01|26.0|-101.0|5.60629|-0.10785 +2016-07-01|26.0|-102.0|6.04336|-0.10554 +2016-07-01|26.0|-103.0|6.46061|-0.10319 +2016-07-01|26.0|-104.0|6.85802|-0.10083 +2016-07-01|26.0|-105.0|7.23567|-0.09846 +2016-07-01|26.0|-106.0|7.59378|-0.09613 +2016-07-01|26.0|-107.0|7.93266|-0.09383 +2016-07-01|26.0|-108.0|8.2527|-0.0916 +2016-07-01|26.0|-109.0|8.55439|-0.08944 +2016-07-01|26.0|-110.0|8.83827|-0.08736 +2016-07-01|26.0|-111.0|9.10492|-0.08538 +2016-07-01|26.0|-112.0|9.35497|-0.08349 +2016-07-01|26.0|-113.0|9.58907|-0.08169 +2016-07-01|26.0|-114.0|9.80788|-0.08 +2016-07-01|26.0|-115.0|10.01205|-0.07841 +2016-07-01|26.0|-116.0|10.20223|-0.07692 +2016-07-01|26.0|-117.0|10.37903|-0.07551 +2016-07-01|26.0|-118.0|10.54304|-0.0742 +2016-07-01|26.0|-119.0|10.69481|-0.07297 +2016-07-01|26.0|-120.0|10.83482|-0.07182 +2016-07-01|26.0|-121.0|10.96354|-0.07074 +2016-07-01|26.0|-122.0|11.08137|-0.06972 +2016-07-01|26.0|-123.0|11.18863|-0.06877 +2016-07-01|26.0|-124.0|11.28564|-0.06786 +2016-07-01|26.0|-125.0|11.37264|-0.06701 +2016-07-01|26.0|-126.0|11.44983|-0.06619 +2016-07-01|26.0|-127.0|11.51736|-0.06542 +2016-07-01|26.0|-128.0|11.57538|-0.06468 +2016-07-01|26.0|-129.0|11.62399|-0.06397 +2016-07-01|26.0|-130.0|11.66327|-0.06329 +2016-07-01|26.0|-131.0|11.69331|-0.06264 +2016-07-01|26.0|-132.0|11.7142|-0.06201 +2016-07-01|26.0|-133.0|11.72603|-0.06142 +2016-07-01|26.0|-134.0|11.72891|-0.06084 +2016-07-01|26.0|-135.0|11.72298|-0.0603 +2016-07-01|26.0|-136.0|11.70842|-0.05978 +2016-07-01|26.0|-137.0|11.68544|-0.05929 +2016-07-01|26.0|-138.0|11.65429|-0.05882 +2016-07-01|26.0|-139.0|11.61527|-0.05839 +2016-07-01|26.0|-140.0|11.56873|-0.05798 +2016-07-01|26.0|-141.0|11.51507|-0.0576 +2016-07-01|26.0|-142.0|11.45474|-0.05725 +2016-07-01|26.0|-143.0|11.38821|-0.05692 +2016-07-01|26.0|-144.0|11.31602|-0.05662 +2016-07-01|26.0|-145.0|11.23871|-0.05635 +2016-07-01|26.0|-146.0|11.15687|-0.05609 +2016-07-01|26.0|-147.0|11.0711|-0.05585 +2016-07-01|26.0|-148.0|10.98199|-0.05562 +2016-07-01|26.0|-149.0|10.89014|-0.05541 +2016-07-01|26.0|-150.0|10.79613|-0.05519 +2016-07-01|26.0|-151.0|10.70052|-0.05498 +2016-07-01|26.0|-152.0|10.60382|-0.05476 +2016-07-01|26.0|-153.0|10.50649|-0.05452 +2016-07-01|26.0|-154.0|10.40895|-0.05427 +2016-07-01|26.0|-155.0|10.31152|-0.05399 +2016-07-01|26.0|-156.0|10.21448|-0.05368 +2016-07-01|26.0|-157.0|10.11799|-0.05334 +2016-07-01|26.0|-158.0|10.02215|-0.05295 +2016-07-01|26.0|-159.0|9.92694|-0.05252 +2016-07-01|26.0|-160.0|9.83225|-0.05203 +2016-07-01|26.0|-161.0|9.7379|-0.05149 +2016-07-01|26.0|-162.0|9.64357|-0.05089 +2016-07-01|26.0|-163.0|9.54888|-0.05023 +2016-07-01|26.0|-164.0|9.45336|-0.04951 +2016-07-01|26.0|-165.0|9.35646|-0.04873 +2016-07-01|26.0|-166.0|9.25756|-0.04789 +2016-07-01|26.0|-167.0|9.15597|-0.04699 +2016-07-01|26.0|-168.0|9.05097|-0.04603 +2016-07-01|26.0|-169.0|8.9418|-0.04501 +2016-07-01|26.0|-170.0|8.82767|-0.04395 +2016-07-01|26.0|-171.0|8.70781|-0.04285 +2016-07-01|26.0|-172.0|8.58144|-0.04172 +2016-07-01|26.0|-173.0|8.4478|-0.04055 +2016-07-01|26.0|-174.0|8.30617|-0.03937 +2016-07-01|26.0|-175.0|8.15588|-0.03818 +2016-07-01|26.0|-176.0|7.99633|-0.03699 +2016-07-01|26.0|-177.0|7.82699|-0.03582 +2016-07-01|26.0|-178.0|7.64741|-0.03467 +2016-07-01|26.0|-179.0|7.45723|-0.03355 +2016-07-01|27.0|0.0|-0.2396|0.09252 +2016-07-01|27.0|1.0|-0.02054|0.09123 +2016-07-01|27.0|2.0|0.18895|0.09005 +2016-07-01|27.0|3.0|0.38947|0.08901 +2016-07-01|27.0|4.0|0.58165|0.0881 +2016-07-01|27.0|5.0|0.76618|0.08735 +2016-07-01|27.0|6.0|0.94376|0.08676 +2016-07-01|27.0|7.0|1.11511|0.08632 +2016-07-01|27.0|8.0|1.28092|0.08605 +2016-07-01|27.0|9.0|1.44188|0.08593 +2016-07-01|27.0|10.0|1.59861|0.08597 +2016-07-01|27.0|11.0|1.75166|0.08614 +2016-07-01|27.0|12.0|1.90152|0.08644 +2016-07-01|27.0|13.0|2.04857|0.08684 +2016-07-01|27.0|14.0|2.1931|0.08733 +2016-07-01|27.0|15.0|2.33528|0.08788 +2016-07-01|27.0|16.0|2.47515|0.08847 +2016-07-01|27.0|17.0|2.61266|0.08906 +2016-07-01|27.0|18.0|2.74761|0.08964 +2016-07-01|27.0|19.0|2.87969|0.09016 +2016-07-01|27.0|20.0|3.00848|0.09062 +2016-07-01|27.0|21.0|3.13345|0.09096 +2016-07-01|27.0|22.0|3.254|0.09118 +2016-07-01|27.0|23.0|3.36943|0.09125 +2016-07-01|27.0|24.0|3.47899|0.09113 +2016-07-01|27.0|25.0|3.58188|0.09083 +2016-07-01|27.0|26.0|3.6773|0.09032 +2016-07-01|27.0|27.0|3.76442|0.0896 +2016-07-01|27.0|28.0|3.84245|0.08865 +2016-07-01|27.0|29.0|3.91063|0.08748 +2016-07-01|27.0|30.0|3.96828|0.0861 +2016-07-01|27.0|31.0|4.01478|0.0845 +2016-07-01|27.0|32.0|4.04962|0.08271 +2016-07-01|27.0|33.0|4.07239|0.08075 +2016-07-01|27.0|34.0|4.08285|0.07863 +2016-07-01|27.0|35.0|4.08085|0.07638 +2016-07-01|27.0|36.0|4.06643|0.07403 +2016-07-01|27.0|37.0|4.03974|0.07161 +2016-07-01|27.0|38.0|4.00112|0.06916 +2016-07-01|27.0|39.0|3.95104|0.06671 +2016-07-01|27.0|40.0|3.89011|0.06429 +2016-07-01|27.0|41.0|3.81907|0.06194 +2016-07-01|27.0|42.0|3.7388|0.0597 +2016-07-01|27.0|43.0|3.65026|0.05759 +2016-07-01|27.0|44.0|3.55449|0.05565 +2016-07-01|27.0|45.0|3.45259|0.05389 +2016-07-01|27.0|46.0|3.34572|0.05234 +2016-07-01|27.0|47.0|3.23503|0.05101 +2016-07-01|27.0|48.0|3.12166|0.04992 +2016-07-01|27.0|49.0|3.00675|0.04907 +2016-07-01|27.0|50.0|2.89135|0.04846 +2016-07-01|27.0|51.0|2.77647|0.0481 +2016-07-01|27.0|52.0|2.663|0.04797 +2016-07-01|27.0|53.0|2.55176|0.04806 +2016-07-01|27.0|54.0|2.44343|0.04836 +2016-07-01|27.0|55.0|2.33858|0.04885 +2016-07-01|27.0|56.0|2.23766|0.0495 +2016-07-01|27.0|57.0|2.14098|0.05029 +2016-07-01|27.0|58.0|2.04875|0.0512 +2016-07-01|27.0|59.0|1.96104|0.0522 +2016-07-01|27.0|60.0|1.87782|0.05326 +2016-07-01|27.0|61.0|1.79896|0.05436 +2016-07-01|27.0|62.0|1.72424|0.05546 +2016-07-01|27.0|63.0|1.65338|0.05655 +2016-07-01|27.0|64.0|1.58603|0.05761 +2016-07-01|27.0|65.0|1.52179|0.0586 +2016-07-01|27.0|66.0|1.46027|0.05952 +2016-07-01|27.0|67.0|1.40101|0.06034 +2016-07-01|27.0|68.0|1.34359|0.06105 +2016-07-01|27.0|69.0|1.28759|0.06164 +2016-07-01|27.0|70.0|1.23261|0.06209 +2016-07-01|27.0|71.0|1.17827|0.06241 +2016-07-01|27.0|72.0|1.12424|0.06258 +2016-07-01|27.0|73.0|1.07022|0.0626 +2016-07-01|27.0|74.0|1.01593|0.06247 +2016-07-01|27.0|75.0|0.96117|0.06218 +2016-07-01|27.0|76.0|0.90575|0.06174 +2016-07-01|27.0|77.0|0.8495|0.06114 +2016-07-01|27.0|78.0|0.7923|0.06039 +2016-07-01|27.0|79.0|0.73403|0.05949 +2016-07-01|27.0|80.0|0.67459|0.05843 +2016-07-01|27.0|81.0|0.61388|0.05721 +2016-07-01|27.0|82.0|0.55178|0.05584 +2016-07-01|27.0|83.0|0.48818|0.05432 +2016-07-01|27.0|84.0|0.42292|0.05264 +2016-07-01|27.0|85.0|0.35583|0.0508 +2016-07-01|27.0|86.0|0.2867|0.0488 +2016-07-01|27.0|87.0|0.21527|0.04664 +2016-07-01|27.0|88.0|0.14127|0.0443 +2016-07-01|27.0|89.0|0.06436|0.0418 +2016-07-01|27.0|90.0|-0.01581|0.03912 +2016-07-01|27.0|91.0|-0.09963|0.03626 +2016-07-01|27.0|92.0|-0.18753|0.03322 +2016-07-01|27.0|93.0|-0.27992|0.03001 +2016-07-01|27.0|94.0|-0.37725|0.02661 +2016-07-01|27.0|95.0|-0.47995|0.02303 +2016-07-01|27.0|96.0|-0.58843|0.01928 +2016-07-01|27.0|97.0|-0.70307|0.01536 +2016-07-01|27.0|98.0|-0.8242|0.01128 +2016-07-01|27.0|99.0|-0.9521|0.00704 +2016-07-01|27.0|100.0|-1.08696|0.00266 +2016-07-01|27.0|101.0|-1.2289|-0.00184 +2016-07-01|27.0|102.0|-1.37793|-0.00645 +2016-07-01|27.0|103.0|-1.53395|-0.01115 +2016-07-01|27.0|104.0|-1.69676|-0.01591 +2016-07-01|27.0|105.0|-1.866|-0.02072 +2016-07-01|27.0|106.0|-2.04123|-0.02554 +2016-07-01|27.0|107.0|-2.22185|-0.03036 +2016-07-01|27.0|108.0|-2.40714|-0.03513 +2016-07-01|27.0|109.0|-2.59626|-0.03984 +2016-07-01|27.0|110.0|-2.78824|-0.04445 +2016-07-01|27.0|111.0|-2.98204|-0.04894 +2016-07-01|27.0|112.0|-3.1765|-0.05328 +2016-07-01|27.0|113.0|-3.37038|-0.05744 +2016-07-01|27.0|114.0|-3.56239|-0.0614 +2016-07-01|27.0|115.0|-3.75118|-0.06513 +2016-07-01|27.0|116.0|-3.9354|-0.06861 +2016-07-01|27.0|117.0|-4.11366|-0.07184 +2016-07-01|27.0|118.0|-4.28462|-0.07478 +2016-07-01|27.0|119.0|-4.44693|-0.07744 +2016-07-01|27.0|120.0|-4.59933|-0.0798 +2016-07-01|27.0|121.0|-4.74058|-0.08186 +2016-07-01|27.0|122.0|-4.86957|-0.08362 +2016-07-01|27.0|123.0|-4.98523|-0.08508 +2016-07-01|27.0|124.0|-5.08664|-0.08623 +2016-07-01|27.0|125.0|-5.17295|-0.0871 +2016-07-01|27.0|126.0|-5.24347|-0.08769 +2016-07-01|27.0|127.0|-5.29758|-0.088 +2016-07-01|27.0|128.0|-5.33483|-0.08806 +2016-07-01|27.0|129.0|-5.35487|-0.08787 +2016-07-01|27.0|130.0|-5.35745|-0.08746 +2016-07-01|27.0|131.0|-5.34245|-0.08683 +2016-07-01|27.0|132.0|-5.30987|-0.086 +2016-07-01|27.0|133.0|-5.25978|-0.08499 +2016-07-01|27.0|134.0|-5.19237|-0.08381 +2016-07-01|27.0|135.0|-5.10787|-0.08248 +2016-07-01|27.0|136.0|-5.00663|-0.08101 +2016-07-01|27.0|137.0|-4.88902|-0.07943 +2016-07-01|27.0|138.0|-4.75549|-0.07773 +2016-07-01|27.0|139.0|-4.60652|-0.07594 +2016-07-01|27.0|140.0|-4.44262|-0.07407 +2016-07-01|27.0|141.0|-4.26433|-0.07213 +2016-07-01|27.0|142.0|-4.07222|-0.07013 +2016-07-01|27.0|143.0|-3.86685|-0.06808 +2016-07-01|27.0|144.0|-3.64881|-0.066 +2016-07-01|27.0|145.0|-3.41869|-0.06389 +2016-07-01|27.0|146.0|-3.17706|-0.06176 +2016-07-01|27.0|147.0|-2.92453|-0.05962 +2016-07-01|27.0|148.0|-2.66167|-0.05748 +2016-07-01|27.0|149.0|-2.38909|-0.05535 +2016-07-01|27.0|150.0|-2.10736|-0.05325 +2016-07-01|27.0|151.0|-1.81708|-0.05117 +2016-07-01|27.0|152.0|-1.51887|-0.04914 +2016-07-01|27.0|153.0|-1.21334|-0.04715 +2016-07-01|27.0|154.0|-0.90112|-0.04522 +2016-07-01|27.0|155.0|-0.58285|-0.04336 +2016-07-01|27.0|156.0|-0.2592|-0.04158 +2016-07-01|27.0|157.0|0.06913|-0.03988 +2016-07-01|27.0|158.0|0.40144|-0.03829 +2016-07-01|27.0|159.0|0.73697|-0.0368 +2016-07-01|27.0|160.0|1.07496|-0.03542 +2016-07-01|27.0|161.0|1.41462|-0.03417 +2016-07-01|27.0|162.0|1.75512|-0.03305 +2016-07-01|27.0|163.0|2.09564|-0.03207 +2016-07-01|27.0|164.0|2.4353|-0.03122 +2016-07-01|27.0|165.0|2.77325|-0.03053 +2016-07-01|27.0|166.0|3.10861|-0.02998 +2016-07-01|27.0|167.0|3.4405|-0.02958 +2016-07-01|27.0|168.0|3.76807|-0.02934 +2016-07-01|27.0|169.0|4.09047|-0.02925 +2016-07-01|27.0|170.0|4.40688|-0.0293 +2016-07-01|27.0|171.0|4.71653|-0.0295 +2016-07-01|27.0|172.0|5.01867|-0.02984 +2016-07-01|27.0|173.0|5.31263|-0.03031 +2016-07-01|27.0|174.0|5.5978|-0.03091 +2016-07-01|27.0|175.0|5.87363|-0.03162 +2016-07-01|27.0|176.0|6.13967|-0.03244 +2016-07-01|27.0|177.0|6.39554|-0.03336 +2016-07-01|27.0|178.0|6.64096|-0.03437 +2016-07-01|27.0|179.0|6.87576|-0.03545 +2016-07-01|27.0|-1.0|-0.46871|0.09391 +2016-07-01|27.0|-2.0|-0.70832|0.09538 +2016-07-01|27.0|-3.0|-0.95874|0.09691 +2016-07-01|27.0|-4.0|-1.22019|0.09849 +2016-07-01|27.0|-5.0|-1.49278|0.1001 +2016-07-01|27.0|-6.0|-1.77651|0.10171 +2016-07-01|27.0|-7.0|-2.07126|0.10332 +2016-07-01|27.0|-8.0|-2.37679|0.10491 +2016-07-01|27.0|-9.0|-2.69277|0.10647 +2016-07-01|27.0|-10.0|-3.01874|0.10797 +2016-07-01|27.0|-11.0|-3.35417|0.10943 +2016-07-01|27.0|-12.0|-3.69843|0.11082 +2016-07-01|27.0|-13.0|-4.05081|0.11214 +2016-07-01|27.0|-14.0|-4.41057|0.1134 +2016-07-01|27.0|-15.0|-4.77687|0.11458 +2016-07-01|27.0|-16.0|-5.14888|0.11569 +2016-07-01|27.0|-17.0|-5.5257|0.11673 +2016-07-01|27.0|-18.0|-5.90646|0.11771 +2016-07-01|27.0|-19.0|-6.29024|0.11862 +2016-07-01|27.0|-20.0|-6.67617|0.11948 +2016-07-01|27.0|-21.0|-7.06337|0.12028 +2016-07-01|27.0|-22.0|-7.45099|0.12103 +2016-07-01|27.0|-23.0|-7.8382|0.12173 +2016-07-01|27.0|-24.0|-8.22421|0.12239 +2016-07-01|27.0|-25.0|-8.60828|0.123 +2016-07-01|27.0|-26.0|-8.98966|0.12357 +2016-07-01|27.0|-27.0|-9.36768|0.1241 +2016-07-01|27.0|-28.0|-9.74167|0.12458 +2016-07-01|27.0|-29.0|-10.11099|0.125 +2016-07-01|27.0|-30.0|-10.47504|0.12535 +2016-07-01|27.0|-31.0|-10.83321|0.12564 +2016-07-01|27.0|-32.0|-11.1849|0.12584 +2016-07-01|27.0|-33.0|-11.52954|0.12595 +2016-07-01|27.0|-34.0|-11.86651|0.12594 +2016-07-01|27.0|-35.0|-12.19521|0.12581 +2016-07-01|27.0|-36.0|-12.515|0.12553 +2016-07-01|27.0|-37.0|-12.82522|0.12509 +2016-07-01|27.0|-38.0|-13.12517|0.12447 +2016-07-01|27.0|-39.0|-13.41413|0.12366 +2016-07-01|27.0|-40.0|-13.69131|0.12263 +2016-07-01|27.0|-41.0|-13.95593|0.12137 +2016-07-01|27.0|-42.0|-14.20711|0.11986 +2016-07-01|27.0|-43.0|-14.44397|0.11809 +2016-07-01|27.0|-44.0|-14.66557|0.11604 +2016-07-01|27.0|-45.0|-14.87097|0.11371 +2016-07-01|27.0|-46.0|-15.05917|0.11108 +2016-07-01|27.0|-47.0|-15.22917|0.10814 +2016-07-01|27.0|-48.0|-15.37996|0.10488 +2016-07-01|27.0|-49.0|-15.5105|0.10132 +2016-07-01|27.0|-50.0|-15.61981|0.09743 +2016-07-01|27.0|-51.0|-15.70688|0.09324 +2016-07-01|27.0|-52.0|-15.77077|0.08873 +2016-07-01|27.0|-53.0|-15.81054|0.08391 +2016-07-01|27.0|-54.0|-15.82535|0.0788 +2016-07-01|27.0|-55.0|-15.81438|0.0734 +2016-07-01|27.0|-56.0|-15.77692|0.06773 +2016-07-01|27.0|-57.0|-15.7123|0.06179 +2016-07-01|27.0|-58.0|-15.61998|0.05562 +2016-07-01|27.0|-59.0|-15.4995|0.04921 +2016-07-01|27.0|-60.0|-15.3505|0.0426 +2016-07-01|27.0|-61.0|-15.17274|0.03581 +2016-07-01|27.0|-62.0|-14.9661|0.02885 +2016-07-01|27.0|-63.0|-14.73056|0.02176 +2016-07-01|27.0|-64.0|-14.46624|0.01454 +2016-07-01|27.0|-65.0|-14.17337|0.00725 +2016-07-01|27.0|-66.0|-13.85229|-1.1E-4 +2016-07-01|27.0|-67.0|-13.50348|-0.0075 +2016-07-01|27.0|-68.0|-13.12754|-0.0149 +2016-07-01|27.0|-69.0|-12.72518|-0.02226 +2016-07-01|27.0|-70.0|-12.29723|-0.02957 +2016-07-01|27.0|-71.0|-11.84461|-0.03678 +2016-07-01|27.0|-72.0|-11.36839|-0.04387 +2016-07-01|27.0|-73.0|-10.86971|-0.05081 +2016-07-01|27.0|-74.0|-10.34982|-0.05757 +2016-07-01|27.0|-75.0|-9.81006|-0.0641 +2016-07-01|27.0|-76.0|-9.25189|-0.07038 +2016-07-01|27.0|-77.0|-8.67681|-0.07639 +2016-07-01|27.0|-78.0|-8.08642|-0.08208 +2016-07-01|27.0|-79.0|-7.4824|-0.08745 +2016-07-01|27.0|-80.0|-6.86649|-0.09245 +2016-07-01|27.0|-81.0|-6.24047|-0.09707 +2016-07-01|27.0|-82.0|-5.60619|-0.10129 +2016-07-01|27.0|-83.0|-4.96551|-0.10509 +2016-07-01|27.0|-84.0|-4.32034|-0.10846 +2016-07-01|27.0|-85.0|-3.67259|-0.1114 +2016-07-01|27.0|-86.0|-3.02419|-0.11389 +2016-07-01|27.0|-87.0|-2.37703|-0.11595 +2016-07-01|27.0|-88.0|-1.73301|-0.11757 +2016-07-01|27.0|-89.0|-1.09394|-0.11876 +2016-07-01|27.0|-90.0|-0.46163|-0.11953 +2016-07-01|27.0|-91.0|0.16221|-0.11991 +2016-07-01|27.0|-92.0|0.77594|-0.11991 +2016-07-01|27.0|-93.0|1.37803|-0.11956 +2016-07-01|27.0|-94.0|1.96704|-0.11888 +2016-07-01|27.0|-95.0|2.54166|-0.11791 +2016-07-01|27.0|-96.0|3.10069|-0.11666 +2016-07-01|27.0|-97.0|3.6431|-0.11518 +2016-07-01|27.0|-98.0|4.16796|-0.1135 +2016-07-01|27.0|-99.0|4.67451|-0.11165 +2016-07-01|27.0|-100.0|5.16213|-0.10965 +2016-07-01|27.0|-101.0|5.63034|-0.10755 +2016-07-01|27.0|-102.0|6.0788|-0.10537 +2016-07-01|27.0|-103.0|6.50734|-0.10314 +2016-07-01|27.0|-104.0|6.91587|-0.10089 +2016-07-01|27.0|-105.0|7.30446|-0.09863 +2016-07-01|27.0|-106.0|7.6733|-0.0964 +2016-07-01|27.0|-107.0|8.02264|-0.0942 +2016-07-01|27.0|-108.0|8.35287|-0.09206 +2016-07-01|27.0|-109.0|8.66443|-0.08999 +2016-07-01|27.0|-110.0|8.95784|-0.08799 +2016-07-01|27.0|-111.0|9.23365|-0.08608 +2016-07-01|27.0|-112.0|9.49247|-0.08427 +2016-07-01|27.0|-113.0|9.73494|-0.08255 +2016-07-01|27.0|-114.0|9.96168|-0.08092 +2016-07-01|27.0|-115.0|10.17333|-0.0794 +2016-07-01|27.0|-116.0|10.37054|-0.07797 +2016-07-01|27.0|-117.0|10.55389|-0.07663 +2016-07-01|27.0|-118.0|10.72397|-0.07538 +2016-07-01|27.0|-119.0|10.88131|-0.07421 +2016-07-01|27.0|-120.0|11.02642|-0.07312 +2016-07-01|27.0|-121.0|11.15975|-0.07211 +2016-07-01|27.0|-122.0|11.28169|-0.07115 +2016-07-01|27.0|-123.0|11.39259|-0.07026 +2016-07-01|27.0|-124.0|11.49277|-0.06942 +2016-07-01|27.0|-125.0|11.58247|-0.06863 +2016-07-01|27.0|-126.0|11.66191|-0.06789 +2016-07-01|27.0|-127.0|11.73127|-0.06718 +2016-07-01|27.0|-128.0|11.7907|-0.06651 +2016-07-01|27.0|-129.0|11.84032|-0.06588 +2016-07-01|27.0|-130.0|11.88024|-0.06527 +2016-07-01|27.0|-131.0|11.91056|-0.0647 +2016-07-01|27.0|-132.0|11.93139|-0.06415 +2016-07-01|27.0|-133.0|11.94283|-0.06363 +2016-07-01|27.0|-134.0|11.94502|-0.06314 +2016-07-01|27.0|-135.0|11.93812|-0.06268 +2016-07-01|27.0|-136.0|11.92231|-0.06224 +2016-07-01|27.0|-137.0|11.89781|-0.06183 +2016-07-01|27.0|-138.0|11.86488|-0.06145 +2016-07-01|27.0|-139.0|11.82384|-0.0611 +2016-07-01|27.0|-140.0|11.77504|-0.06079 +2016-07-01|27.0|-141.0|11.71887|-0.06049 +2016-07-01|27.0|-142.0|11.65577|-0.06023 +2016-07-01|27.0|-143.0|11.58622|-0.06 +2016-07-01|27.0|-144.0|11.51074|-0.05979 +2016-07-01|27.0|-145.0|11.42987|-0.05961 +2016-07-01|27.0|-146.0|11.34418|-0.05944 +2016-07-01|27.0|-147.0|11.25424|-0.0593 +2016-07-01|27.0|-148.0|11.16065|-0.05916 +2016-07-01|27.0|-149.0|11.06397|-0.05904 +2016-07-01|27.0|-150.0|10.96478|-0.05892 +2016-07-01|27.0|-151.0|10.86359|-0.0588 +2016-07-01|27.0|-152.0|10.76092|-0.05867 +2016-07-01|27.0|-153.0|10.65721|-0.05853 +2016-07-01|27.0|-154.0|10.55284|-0.05837 +2016-07-01|27.0|-155.0|10.44815|-0.05818 +2016-07-01|27.0|-156.0|10.34338|-0.05796 +2016-07-01|27.0|-157.0|10.23869|-0.0577 +2016-07-01|27.0|-158.0|10.13417|-0.05739 +2016-07-01|27.0|-159.0|10.02982|-0.05703 +2016-07-01|27.0|-160.0|9.92551|-0.05662 +2016-07-01|27.0|-161.0|9.82107|-0.05614 +2016-07-01|27.0|-162.0|9.71621|-0.0556 +2016-07-01|27.0|-163.0|9.61055|-0.055 +2016-07-01|27.0|-164.0|9.50364|-0.05432 +2016-07-01|27.0|-165.0|9.39497|-0.05357 +2016-07-01|27.0|-166.0|9.28393|-0.05275 +2016-07-01|27.0|-167.0|9.16989|-0.05187 +2016-07-01|27.0|-168.0|9.05215|-0.05092 +2016-07-01|27.0|-169.0|8.93|-0.0499 +2016-07-01|27.0|-170.0|8.8027|-0.04882 +2016-07-01|27.0|-171.0|8.66953|-0.0477 +2016-07-01|27.0|-172.0|8.52974|-0.04652 +2016-07-01|27.0|-173.0|8.38263|-0.04531 +2016-07-01|27.0|-174.0|8.22755|-0.04407 +2016-07-01|27.0|-175.0|8.06387|-0.04281 +2016-07-01|27.0|-176.0|7.89104|-0.04154 +2016-07-01|27.0|-177.0|7.70859|-0.04027 +2016-07-01|27.0|-178.0|7.51609|-0.03901 +2016-07-01|27.0|-179.0|7.31325|-0.03778 +2016-07-01|28.0|0.0|-0.16926|0.09355 +2016-07-01|28.0|1.0|0.05088|0.09224 +2016-07-01|28.0|2.0|0.26146|0.09103 +2016-07-01|28.0|3.0|0.46302|0.08995 +2016-07-01|28.0|4.0|0.65618|0.08901 +2016-07-01|28.0|5.0|0.84158|0.08821 +2016-07-01|28.0|6.0|1.01991|0.08756 +2016-07-01|28.0|7.0|1.19186|0.08707 +2016-07-01|28.0|8.0|1.35812|0.08674 +2016-07-01|28.0|9.0|1.51935|0.08656 +2016-07-01|28.0|10.0|1.67617|0.08653 +2016-07-01|28.0|11.0|1.82912|0.08664 +2016-07-01|28.0|12.0|1.97871|0.08687 +2016-07-01|28.0|13.0|2.12532|0.08721 +2016-07-01|28.0|14.0|2.26925|0.08764 +2016-07-01|28.0|15.0|2.41069|0.08813 +2016-07-01|28.0|16.0|2.54972|0.08867 +2016-07-01|28.0|17.0|2.68631|0.08922 +2016-07-01|28.0|18.0|2.82028|0.08976 +2016-07-01|28.0|19.0|2.95138|0.09026 +2016-07-01|28.0|20.0|3.07922|0.09069 +2016-07-01|28.0|21.0|3.20333|0.09103 +2016-07-01|28.0|22.0|3.32313|0.09125 +2016-07-01|28.0|23.0|3.43798|0.09133 +2016-07-01|28.0|24.0|3.54718|0.09124 +2016-07-01|28.0|25.0|3.64996|0.09097 +2016-07-01|28.0|26.0|3.74557|0.09051 +2016-07-01|28.0|27.0|3.83322|0.08985 +2016-07-01|28.0|28.0|3.91216|0.08897 +2016-07-01|28.0|29.0|3.98165|0.08788 +2016-07-01|28.0|30.0|4.04103|0.08657 +2016-07-01|28.0|31.0|4.0897|0.08507 +2016-07-01|28.0|32.0|4.12716|0.08337 +2016-07-01|28.0|33.0|4.15302|0.0815 +2016-07-01|28.0|34.0|4.16701|0.07948 +2016-07-01|28.0|35.0|4.16899|0.07733 +2016-07-01|28.0|36.0|4.15896|0.07507 +2016-07-01|28.0|37.0|4.13706|0.07274 +2016-07-01|28.0|38.0|4.10359|0.07037 +2016-07-01|28.0|39.0|4.05897|0.06799 +2016-07-01|28.0|40.0|4.00378|0.06564 +2016-07-01|28.0|41.0|3.93871|0.06334 +2016-07-01|28.0|42.0|3.86457|0.06114 +2016-07-01|28.0|43.0|3.78227|0.05905 +2016-07-01|28.0|44.0|3.69279|0.05711 +2016-07-01|28.0|45.0|3.59719|0.05535 +2016-07-01|28.0|46.0|3.49654|0.05377 +2016-07-01|28.0|47.0|3.39195|0.05241 +2016-07-01|28.0|48.0|3.28451|0.05126 +2016-07-01|28.0|49.0|3.1753|0.05035 +2016-07-01|28.0|50.0|3.06534|0.04966 +2016-07-01|28.0|51.0|2.95557|0.04921 +2016-07-01|28.0|52.0|2.84689|0.04898 +2016-07-01|28.0|53.0|2.74005|0.04896 +2016-07-01|28.0|54.0|2.63573|0.04915 +2016-07-01|28.0|55.0|2.53449|0.04951 +2016-07-01|28.0|56.0|2.43675|0.05004 +2016-07-01|28.0|57.0|2.34284|0.05071 +2016-07-01|28.0|58.0|2.25295|0.0515 +2016-07-01|28.0|59.0|2.16716|0.05238 +2016-07-01|28.0|60.0|2.08545|0.05332 +2016-07-01|28.0|61.0|2.00771|0.05431 +2016-07-01|28.0|62.0|1.93373|0.05531 +2016-07-01|28.0|63.0|1.86324|0.05631 +2016-07-01|28.0|64.0|1.7959|0.05727 +2016-07-01|28.0|65.0|1.73135|0.05818 +2016-07-01|28.0|66.0|1.66917|0.05903 +2016-07-01|28.0|67.0|1.60895|0.05979 +2016-07-01|28.0|68.0|1.55026|0.06044 +2016-07-01|28.0|69.0|1.49269|0.06099 +2016-07-01|28.0|70.0|1.43583|0.06141 +2016-07-01|28.0|71.0|1.37931|0.06169 +2016-07-01|28.0|72.0|1.3228|0.06184 +2016-07-01|28.0|73.0|1.26597|0.06184 +2016-07-01|28.0|74.0|1.20856|0.06169 +2016-07-01|28.0|75.0|1.15033|0.0614 +2016-07-01|28.0|76.0|1.09108|0.06095 +2016-07-01|28.0|77.0|1.03063|0.06035 +2016-07-01|28.0|78.0|0.96883|0.05959 +2016-07-01|28.0|79.0|0.90556|0.05868 +2016-07-01|28.0|80.0|0.84068|0.05762 +2016-07-01|28.0|81.0|0.7741|0.0564 +2016-07-01|28.0|82.0|0.70567|0.05503 +2016-07-01|28.0|83.0|0.63526|0.0535 +2016-07-01|28.0|84.0|0.56273|0.05182 +2016-07-01|28.0|85.0|0.48789|0.04998 +2016-07-01|28.0|86.0|0.41053|0.04797 +2016-07-01|28.0|87.0|0.33041|0.0458 +2016-07-01|28.0|88.0|0.24726|0.04346 +2016-07-01|28.0|89.0|0.16077|0.04095 +2016-07-01|28.0|90.0|0.0706|0.03827 +2016-07-01|28.0|91.0|-0.0236|0.03541 +2016-07-01|28.0|92.0|-0.12224|0.03238 +2016-07-01|28.0|93.0|-0.22569|0.02917 +2016-07-01|28.0|94.0|-0.33436|0.02578 +2016-07-01|28.0|95.0|-0.44864|0.02222 +2016-07-01|28.0|96.0|-0.56889|0.0185 +2016-07-01|28.0|97.0|-0.69544|0.01461 +2016-07-01|28.0|98.0|-0.82859|0.01056 +2016-07-01|28.0|99.0|-0.96856|0.00637 +2016-07-01|28.0|100.0|-1.1155|0.00204 +2016-07-01|28.0|101.0|-1.26948|-0.0024 +2016-07-01|28.0|102.0|-1.43047|-0.00694 +2016-07-01|28.0|103.0|-1.59834|-0.01156 +2016-07-01|28.0|104.0|-1.77284|-0.01625 +2016-07-01|28.0|105.0|-1.9536|-0.02096 +2016-07-01|28.0|106.0|-2.14012|-0.02569 +2016-07-01|28.0|107.0|-2.3318|-0.03041 +2016-07-01|28.0|108.0|-2.5279|-0.03508 +2016-07-01|28.0|109.0|-2.72755|-0.03968 +2016-07-01|28.0|110.0|-2.9298|-0.04418 +2016-07-01|28.0|111.0|-3.13357|-0.04856 +2016-07-01|28.0|112.0|-3.33771|-0.05278 +2016-07-01|28.0|113.0|-3.54099|-0.05683 +2016-07-01|28.0|114.0|-3.74212|-0.06068 +2016-07-01|28.0|115.0|-3.93977|-0.0643 +2016-07-01|28.0|116.0|-4.13258|-0.06769 +2016-07-01|28.0|117.0|-4.31918|-0.07081 +2016-07-01|28.0|118.0|-4.49823|-0.07366 +2016-07-01|28.0|119.0|-4.66842|-0.07623 +2016-07-01|28.0|120.0|-4.82846|-0.07851 +2016-07-01|28.0|121.0|-4.97715|-0.0805 +2016-07-01|28.0|122.0|-5.11337|-0.08219 +2016-07-01|28.0|123.0|-5.23607|-0.08359 +2016-07-01|28.0|124.0|-5.34432|-0.0847 +2016-07-01|28.0|125.0|-5.43729|-0.08552 +2016-07-01|28.0|126.0|-5.51427|-0.08607 +2016-07-01|28.0|127.0|-5.57465|-0.08636 +2016-07-01|28.0|128.0|-5.61796|-0.0864 +2016-07-01|28.0|129.0|-5.64384|-0.0862 +2016-07-01|28.0|130.0|-5.65204|-0.08578 +2016-07-01|28.0|131.0|-5.64244|-0.08515 +2016-07-01|28.0|132.0|-5.615|-0.08433 +2016-07-01|28.0|133.0|-5.56979|-0.08333 +2016-07-01|28.0|134.0|-5.50697|-0.08217 +2016-07-01|28.0|135.0|-5.42679|-0.08087 +2016-07-01|28.0|136.0|-5.32954|-0.07944 +2016-07-01|28.0|137.0|-5.21561|-0.07789 +2016-07-01|28.0|138.0|-5.08543|-0.07623 +2016-07-01|28.0|139.0|-4.93946|-0.07449 +2016-07-01|28.0|140.0|-4.77821|-0.07267 +2016-07-01|28.0|141.0|-4.60221|-0.07079 +2016-07-01|28.0|142.0|-4.41203|-0.06885 +2016-07-01|28.0|143.0|-4.20823|-0.06687 +2016-07-01|28.0|144.0|-3.9914|-0.06486 +2016-07-01|28.0|145.0|-3.76212|-0.06282 +2016-07-01|28.0|146.0|-3.52099|-0.06078 +2016-07-01|28.0|147.0|-3.2686|-0.05873 +2016-07-01|28.0|148.0|-3.00554|-0.05668 +2016-07-01|28.0|149.0|-2.73243|-0.05465 +2016-07-01|28.0|150.0|-2.44986|-0.05265 +2016-07-01|28.0|151.0|-2.15843|-0.05069 +2016-07-01|28.0|152.0|-1.85876|-0.04876 +2016-07-01|28.0|153.0|-1.55147|-0.0469 +2016-07-01|28.0|154.0|-1.23721|-0.0451 +2016-07-01|28.0|155.0|-0.91662|-0.04337 +2016-07-01|28.0|156.0|-0.59038|-0.04173 +2016-07-01|28.0|157.0|-0.25917|-0.04018 +2016-07-01|28.0|158.0|0.07629|-0.03873 +2016-07-01|28.0|159.0|0.41525|-0.0374 +2016-07-01|28.0|160.0|0.75697|-0.03618 +2016-07-01|28.0|161.0|1.10066|-0.0351 +2016-07-01|28.0|162.0|1.4455|-0.03414 +2016-07-01|28.0|163.0|1.79068|-0.03333 +2016-07-01|28.0|164.0|2.13536|-0.03266 +2016-07-01|28.0|165.0|2.47868|-0.03214 +2016-07-01|28.0|166.0|2.81979|-0.03178 +2016-07-01|28.0|167.0|3.15783|-0.03156 +2016-07-01|28.0|168.0|3.49197|-0.0315 +2016-07-01|28.0|169.0|3.82136|-0.03159 +2016-07-01|28.0|170.0|4.14523|-0.03183 +2016-07-01|28.0|171.0|4.46278|-0.03221 +2016-07-01|28.0|172.0|4.7733|-0.03272 +2016-07-01|28.0|173.0|5.07613|-0.03337 +2016-07-01|28.0|174.0|5.37063|-0.03414 +2016-07-01|28.0|175.0|5.65629|-0.03502 +2016-07-01|28.0|176.0|5.93262|-0.03601 +2016-07-01|28.0|177.0|6.19924|-0.03708 +2016-07-01|28.0|178.0|6.45587|-0.03824 +2016-07-01|28.0|179.0|6.70229|-0.03946 +2016-07-01|28.0|-1.0|-0.39945|0.09496 +2016-07-01|28.0|-2.0|-0.64008|0.09645 +2016-07-01|28.0|-3.0|-0.89143|0.09799 +2016-07-01|28.0|-4.0|-1.1537|0.09958 +2016-07-01|28.0|-5.0|-1.42698|0.10119 +2016-07-01|28.0|-6.0|-1.71122|0.1028 +2016-07-01|28.0|-7.0|-2.0063|0.10441 +2016-07-01|28.0|-8.0|-2.31195|0.10599 +2016-07-01|28.0|-9.0|-2.62782|0.10753 +2016-07-01|28.0|-10.0|-2.95346|0.10903 +2016-07-01|28.0|-11.0|-3.28831|0.11047 +2016-07-01|28.0|-12.0|-3.63174|0.11186 +2016-07-01|28.0|-13.0|-3.98307|0.11317 +2016-07-01|28.0|-14.0|-4.34152|0.11441 +2016-07-01|28.0|-15.0|-4.70629|0.11559 +2016-07-01|28.0|-16.0|-5.07655|0.11669 +2016-07-01|28.0|-17.0|-5.45143|0.11773 +2016-07-01|28.0|-18.0|-5.83005|0.1187 +2016-07-01|28.0|-19.0|-6.21155|0.11961 +2016-07-01|28.0|-20.0|-6.59505|0.12047 +2016-07-01|28.0|-21.0|-6.97972|0.12127 +2016-07-01|28.0|-22.0|-7.36473|0.12203 +2016-07-01|28.0|-23.0|-7.74929|0.12274 +2016-07-01|28.0|-24.0|-8.13264|0.12342 +2016-07-01|28.0|-25.0|-8.51406|0.12405 +2016-07-01|28.0|-26.0|-8.89285|0.12465 +2016-07-01|28.0|-27.0|-9.26836|0.1252 +2016-07-01|28.0|-28.0|-9.63996|0.12571 +2016-07-01|28.0|-29.0|-10.00707|0.12617 +2016-07-01|28.0|-30.0|-10.36909|0.12657 +2016-07-01|28.0|-31.0|-10.72548|0.12691 +2016-07-01|28.0|-32.0|-11.07566|0.12717 +2016-07-01|28.0|-33.0|-11.41908|0.12734 +2016-07-01|28.0|-34.0|-11.75518|0.12741 +2016-07-01|28.0|-35.0|-12.08339|0.12736 +2016-07-01|28.0|-36.0|-12.40309|0.12717 +2016-07-01|28.0|-37.0|-12.71366|0.12683 +2016-07-01|28.0|-38.0|-13.01444|0.12632 +2016-07-01|28.0|-39.0|-13.30472|0.12562 +2016-07-01|28.0|-40.0|-13.58376|0.12472 +2016-07-01|28.0|-41.0|-13.85076|0.12359 +2016-07-01|28.0|-42.0|-14.1049|0.12222 +2016-07-01|28.0|-43.0|-14.3453|0.1206 +2016-07-01|28.0|-44.0|-14.57104|0.11871 +2016-07-01|28.0|-45.0|-14.78117|0.11653 +2016-07-01|28.0|-46.0|-14.9747|0.11406 +2016-07-01|28.0|-47.0|-15.15063|0.11129 +2016-07-01|28.0|-48.0|-15.30794|0.10821 +2016-07-01|28.0|-49.0|-15.44559|0.10482 +2016-07-01|28.0|-50.0|-15.56256|0.10111 +2016-07-01|28.0|-51.0|-15.65782|0.09709 +2016-07-01|28.0|-52.0|-15.7304|0.09276 +2016-07-01|28.0|-53.0|-15.77934|0.08811 +2016-07-01|28.0|-54.0|-15.80372|0.08317 +2016-07-01|28.0|-55.0|-15.80271|0.07793 +2016-07-01|28.0|-56.0|-15.7755|0.07241 +2016-07-01|28.0|-57.0|-15.7214|0.06662 +2016-07-01|28.0|-58.0|-15.63979|0.06058 +2016-07-01|28.0|-59.0|-15.53013|0.0543 +2016-07-01|28.0|-60.0|-15.392|0.0478 +2016-07-01|28.0|-61.0|-15.22509|0.0411 +2016-07-01|28.0|-62.0|-15.02918|0.03423 +2016-07-01|28.0|-63.0|-14.80418|0.02721 +2016-07-01|28.0|-64.0|-14.55013|0.02005 +2016-07-01|28.0|-65.0|-14.26718|0.01279 +2016-07-01|28.0|-66.0|-13.9556|0.00546 +2016-07-01|28.0|-67.0|-13.61578|-0.00193 +2016-07-01|28.0|-68.0|-13.24826|-0.00933 +2016-07-01|28.0|-69.0|-12.85367|-0.01672 +2016-07-01|28.0|-70.0|-12.43277|-0.02407 +2016-07-01|28.0|-71.0|-11.98645|-0.03135 +2016-07-01|28.0|-72.0|-11.51571|-0.03851 +2016-07-01|28.0|-73.0|-11.02164|-0.04554 +2016-07-01|28.0|-74.0|-10.50547|-0.0524 +2016-07-01|28.0|-75.0|-9.96851|-0.05905 +2016-07-01|28.0|-76.0|-9.41218|-0.06547 +2016-07-01|28.0|-77.0|-8.83799|-0.07162 +2016-07-01|28.0|-78.0|-8.24753|-0.07748 +2016-07-01|28.0|-79.0|-7.64249|-0.083 +2016-07-01|28.0|-80.0|-7.02461|-0.08818 +2016-07-01|28.0|-81.0|-6.39569|-0.09299 +2016-07-01|28.0|-82.0|-5.75762|-0.0974 +2016-07-01|28.0|-83.0|-5.11228|-0.10139 +2016-07-01|28.0|-84.0|-4.46164|-0.10497 +2016-07-01|28.0|-85.0|-3.80763|-0.10811 +2016-07-01|28.0|-86.0|-3.15223|-0.11081 +2016-07-01|28.0|-87.0|-2.4974|-0.11307 +2016-07-01|28.0|-88.0|-1.84506|-0.1149 +2016-07-01|28.0|-89.0|-1.19712|-0.11629 +2016-07-01|28.0|-90.0|-0.55541|-0.11727 +2016-07-01|28.0|-91.0|0.07829|-0.11786 +2016-07-01|28.0|-92.0|0.70229|-0.11806 +2016-07-01|28.0|-93.0|1.31498|-0.1179 +2016-07-01|28.0|-94.0|1.91489|-0.11741 +2016-07-01|28.0|-95.0|2.50064|-0.11662 +2016-07-01|28.0|-96.0|3.07099|-0.11555 +2016-07-01|28.0|-97.0|3.62485|-0.11424 +2016-07-01|28.0|-98.0|4.16124|-0.11272 +2016-07-01|28.0|-99.0|4.67936|-0.11103 +2016-07-01|28.0|-100.0|5.17854|-0.10919 +2016-07-01|28.0|-101.0|5.65827|-0.10723 +2016-07-01|28.0|-102.0|6.11816|-0.10519 +2016-07-01|28.0|-103.0|6.55799|-0.10309 +2016-07-01|28.0|-104.0|6.97765|-0.10096 +2016-07-01|28.0|-105.0|7.37718|-0.09882 +2016-07-01|28.0|-106.0|7.75671|-0.0967 +2016-07-01|28.0|-107.0|8.11649|-0.09461 +2016-07-01|28.0|-108.0|8.45687|-0.09257 +2016-07-01|28.0|-109.0|8.77825|-0.09059 +2016-07-01|28.0|-110.0|9.08114|-0.08868 +2016-07-01|28.0|-111.0|9.36606|-0.08686 +2016-07-01|28.0|-112.0|9.6336|-0.08513 +2016-07-01|28.0|-113.0|9.88437|-0.08348 +2016-07-01|28.0|-114.0|10.11899|-0.08193 +2016-07-01|28.0|-115.0|10.33808|-0.08048 +2016-07-01|28.0|-116.0|10.54226|-0.07912 +2016-07-01|28.0|-117.0|10.73211|-0.07785 +2016-07-01|28.0|-118.0|10.90822|-0.07667 +2016-07-01|28.0|-119.0|11.07112|-0.07557 +2016-07-01|28.0|-120.0|11.22129|-0.07454 +2016-07-01|28.0|-121.0|11.3592|-0.07359 +2016-07-01|28.0|-122.0|11.48524|-0.0727 +2016-07-01|28.0|-123.0|11.59978|-0.07188 +2016-07-01|28.0|-124.0|11.70312|-0.07111 +2016-07-01|28.0|-125.0|11.79553|-0.07039 +2016-07-01|28.0|-126.0|11.87725|-0.06971 +2016-07-01|28.0|-127.0|11.94846|-0.06908 +2016-07-01|28.0|-128.0|12.00933|-0.06848 +2016-07-01|28.0|-129.0|12.06|-0.06792 +2016-07-01|28.0|-130.0|12.1006|-0.06739 +2016-07-01|28.0|-131.0|12.13124|-0.06689 +2016-07-01|28.0|-132.0|12.15206|-0.06643 +2016-07-01|28.0|-133.0|12.16317|-0.06599 +2016-07-01|28.0|-134.0|12.16473|-0.06558 +2016-07-01|28.0|-135.0|12.15691|-0.0652 +2016-07-01|28.0|-136.0|12.13989|-0.06485 +2016-07-01|28.0|-137.0|12.11392|-0.06453 +2016-07-01|28.0|-138.0|12.07927|-0.06424 +2016-07-01|28.0|-139.0|12.03624|-0.06398 +2016-07-01|28.0|-140.0|11.9852|-0.06375 +2016-07-01|28.0|-141.0|11.92653|-0.06355 +2016-07-01|28.0|-142.0|11.86067|-0.06338 +2016-07-01|28.0|-143.0|11.78809|-0.06324 +2016-07-01|28.0|-144.0|11.7093|-0.06313 +2016-07-01|28.0|-145.0|11.62482|-0.06304 +2016-07-01|28.0|-146.0|11.53521|-0.06297 +2016-07-01|28.0|-147.0|11.44103|-0.06292 +2016-07-01|28.0|-148.0|11.34284|-0.06288 +2016-07-01|28.0|-149.0|11.24121|-0.06285 +2016-07-01|28.0|-150.0|11.13667|-0.06282 +2016-07-01|28.0|-151.0|11.02974|-0.0628 +2016-07-01|28.0|-152.0|10.92089|-0.06276 +2016-07-01|28.0|-153.0|10.81055|-0.06271 +2016-07-01|28.0|-154.0|10.69911|-0.06264 +2016-07-01|28.0|-155.0|10.58686|-0.06254 +2016-07-01|28.0|-156.0|10.47406|-0.0624 +2016-07-01|28.0|-157.0|10.36085|-0.06222 +2016-07-01|28.0|-158.0|10.24732|-0.06199 +2016-07-01|28.0|-159.0|10.13345|-0.0617 +2016-07-01|28.0|-160.0|10.01915|-0.06135 +2016-07-01|28.0|-161.0|9.90424|-0.06094 +2016-07-01|28.0|-162.0|9.78844|-0.06045 +2016-07-01|28.0|-163.0|9.67141|-0.05989 +2016-07-01|28.0|-164.0|9.55272|-0.05925 +2016-07-01|28.0|-165.0|9.43187|-0.05853 +2016-07-01|28.0|-166.0|9.30831|-0.05774 +2016-07-01|28.0|-167.0|9.18143|-0.05686 +2016-07-01|28.0|-168.0|9.05058|-0.05591 +2016-07-01|28.0|-169.0|8.91511|-0.05488 +2016-07-01|28.0|-170.0|8.77431|-0.05379 +2016-07-01|28.0|-171.0|8.62751|-0.05263 +2016-07-01|28.0|-172.0|8.47402|-0.05141 +2016-07-01|28.0|-173.0|8.31321|-0.05014 +2016-07-01|28.0|-174.0|8.14445|-0.04884 +2016-07-01|28.0|-175.0|7.9672|-0.0475 +2016-07-01|28.0|-176.0|7.78093|-0.04614 +2016-07-01|28.0|-177.0|7.58523|-0.04477 +2016-07-01|28.0|-178.0|7.37974|-0.04341 +2016-07-01|28.0|-179.0|7.16419|-0.04206 +2016-07-01|29.0|0.0|-0.10525|0.0947 +2016-07-01|29.0|1.0|0.11628|0.09336 +2016-07-01|29.0|2.0|0.32824|0.09213 +2016-07-01|29.0|3.0|0.53115|0.09101 +2016-07-01|29.0|4.0|0.72559|0.09003 +2016-07-01|29.0|5.0|0.9122|0.08918 +2016-07-01|29.0|6.0|1.09161|0.08849 +2016-07-01|29.0|7.0|1.26452|0.08795 +2016-07-01|29.0|8.0|1.43157|0.08756 +2016-07-01|29.0|9.0|1.59343|0.08732 +2016-07-01|29.0|10.0|1.75069|0.08723 +2016-07-01|29.0|11.0|1.90391|0.08727 +2016-07-01|29.0|12.0|2.05358|0.08744 +2016-07-01|29.0|13.0|2.2001|0.08772 +2016-07-01|29.0|14.0|2.34379|0.08808 +2016-07-01|29.0|15.0|2.48484|0.08852 +2016-07-01|29.0|16.0|2.62337|0.089 +2016-07-01|29.0|17.0|2.75936|0.08951 +2016-07-01|29.0|18.0|2.89269|0.09001 +2016-07-01|29.0|19.0|3.02313|0.09047 +2016-07-01|29.0|20.0|3.15034|0.09088 +2016-07-01|29.0|21.0|3.27388|0.09121 +2016-07-01|29.0|22.0|3.39322|0.09143 +2016-07-01|29.0|23.0|3.50778|0.09151 +2016-07-01|29.0|24.0|3.61688|0.09145 +2016-07-01|29.0|25.0|3.71982|0.09121 +2016-07-01|29.0|26.0|3.81588|0.09079 +2016-07-01|29.0|27.0|3.90431|0.09017 +2016-07-01|29.0|28.0|3.98439|0.08936 +2016-07-01|29.0|29.0|4.05543|0.08833 +2016-07-01|29.0|30.0|4.11677|0.08711 +2016-07-01|29.0|31.0|4.16785|0.08569 +2016-07-01|29.0|32.0|4.20818|0.08408 +2016-07-01|29.0|33.0|4.23735|0.0823 +2016-07-01|29.0|34.0|4.25511|0.08037 +2016-07-01|29.0|35.0|4.2613|0.07831 +2016-07-01|29.0|36.0|4.25591|0.07614 +2016-07-01|29.0|37.0|4.23904|0.0739 +2016-07-01|29.0|38.0|4.21097|0.07161 +2016-07-01|29.0|39.0|4.17208|0.0693 +2016-07-01|29.0|40.0|4.12289|0.06701 +2016-07-01|29.0|41.0|4.06405|0.06476 +2016-07-01|29.0|42.0|3.99631|0.06259 +2016-07-01|29.0|43.0|3.92052|0.06053 +2016-07-01|29.0|44.0|3.83761|0.0586 +2016-07-01|29.0|45.0|3.74857|0.05682 +2016-07-01|29.0|46.0|3.65442|0.05523 +2016-07-01|29.0|47.0|3.55621|0.05382 +2016-07-01|29.0|48.0|3.45497|0.05263 +2016-07-01|29.0|49.0|3.35172|0.05165 +2016-07-01|29.0|50.0|3.24744|0.05088 +2016-07-01|29.0|51.0|3.14304|0.05034 +2016-07-01|29.0|52.0|3.03936|0.05001 +2016-07-01|29.0|53.0|2.93714|0.04989 +2016-07-01|29.0|54.0|2.83703|0.04996 +2016-07-01|29.0|55.0|2.73957|0.0502 +2016-07-01|29.0|56.0|2.64517|0.05061 +2016-07-01|29.0|57.0|2.55415|0.05116 +2016-07-01|29.0|58.0|2.46671|0.05182 +2016-07-01|29.0|59.0|2.38292|0.05258 +2016-07-01|29.0|60.0|2.30279|0.05341 +2016-07-01|29.0|61.0|2.22619|0.05428 +2016-07-01|29.0|62.0|2.15295|0.05518 +2016-07-01|29.0|63.0|2.0828|0.05607 +2016-07-01|29.0|64.0|2.01543|0.05694 +2016-07-01|29.0|65.0|1.95047|0.05777 +2016-07-01|29.0|66.0|1.88754|0.05854 +2016-07-01|29.0|67.0|1.82623|0.05924 +2016-07-01|29.0|68.0|1.76612|0.05984 +2016-07-01|29.0|69.0|1.7068|0.06033 +2016-07-01|29.0|70.0|1.64788|0.06071 +2016-07-01|29.0|71.0|1.58898|0.06096 +2016-07-01|29.0|72.0|1.52976|0.06108 +2016-07-01|29.0|73.0|1.4699|0.06106 +2016-07-01|29.0|74.0|1.40912|0.06089 +2016-07-01|29.0|75.0|1.34717|0.06058 +2016-07-01|29.0|76.0|1.28383|0.06012 +2016-07-01|29.0|77.0|1.21891|0.05951 +2016-07-01|29.0|78.0|1.15225|0.05875 +2016-07-01|29.0|79.0|1.0837|0.05784 +2016-07-01|29.0|80.0|1.01313|0.05677 +2016-07-01|29.0|81.0|0.94039|0.05555 +2016-07-01|29.0|82.0|0.86536|0.05417 +2016-07-01|29.0|83.0|0.78789|0.05264 +2016-07-01|29.0|84.0|0.70781|0.05095 +2016-07-01|29.0|85.0|0.62496|0.04909 +2016-07-01|29.0|86.0|0.53912|0.04708 +2016-07-01|29.0|87.0|0.45006|0.0449 +2016-07-01|29.0|88.0|0.35752|0.04256 +2016-07-01|29.0|89.0|0.2612|0.04005 +2016-07-01|29.0|90.0|0.1608|0.03736 +2016-07-01|29.0|91.0|0.05597|0.03451 +2016-07-01|29.0|92.0|-0.05364|0.03148 +2016-07-01|29.0|93.0|-0.16839|0.02828 +2016-07-01|29.0|94.0|-0.28863|0.0249 +2016-07-01|29.0|95.0|-0.41472|0.02136 +2016-07-01|29.0|96.0|-0.54697|0.01766 +2016-07-01|29.0|97.0|-0.68568|0.0138 +2016-07-01|29.0|98.0|-0.83108|0.00979 +2016-07-01|29.0|99.0|-0.98336|0.00565 +2016-07-01|29.0|100.0|-1.14262|0.00137 +2016-07-01|29.0|101.0|-1.30889|-0.00301 +2016-07-01|29.0|102.0|-1.48209|-0.00748 +2016-07-01|29.0|103.0|-1.66205|-0.01203 +2016-07-01|29.0|104.0|-1.84849|-0.01663 +2016-07-01|29.0|105.0|-2.041|-0.02125 +2016-07-01|29.0|106.0|-2.23907|-0.02589 +2016-07-01|29.0|107.0|-2.44204|-0.0305 +2016-07-01|29.0|108.0|-2.64918|-0.03507 +2016-07-01|29.0|109.0|-2.85959|-0.03956 +2016-07-01|29.0|110.0|-3.07232|-0.04395 +2016-07-01|29.0|111.0|-3.28628|-0.04821 +2016-07-01|29.0|112.0|-3.50031|-0.05232 +2016-07-01|29.0|113.0|-3.71318|-0.05626 +2016-07-01|29.0|114.0|-3.92361|-0.05999 +2016-07-01|29.0|115.0|-4.13026|-0.06351 +2016-07-01|29.0|116.0|-4.3318|-0.06678 +2016-07-01|29.0|117.0|-4.52686|-0.0698 +2016-07-01|29.0|118.0|-4.71412|-0.07256 +2016-07-01|29.0|119.0|-4.89225|-0.07504 +2016-07-01|29.0|120.0|-5.06|-0.07723 +2016-07-01|29.0|121.0|-5.21617|-0.07914 +2016-07-01|29.0|122.0|-5.35965|-0.08076 +2016-07-01|29.0|123.0|-5.48939|-0.08209 +2016-07-01|29.0|124.0|-5.60447|-0.08314 +2016-07-01|29.0|125.0|-5.70405|-0.08392 +2016-07-01|29.0|126.0|-5.78743|-0.08443 +2016-07-01|29.0|127.0|-5.85401|-0.08469 +2016-07-01|29.0|128.0|-5.90329|-0.0847 +2016-07-01|29.0|129.0|-5.93492|-0.08448 +2016-07-01|29.0|130.0|-5.94864|-0.08405 +2016-07-01|29.0|131.0|-5.94431|-0.08342 +2016-07-01|29.0|132.0|-5.92188|-0.0826 +2016-07-01|29.0|133.0|-5.88142|-0.08161 +2016-07-01|29.0|134.0|-5.82307|-0.08047 +2016-07-01|29.0|135.0|-5.74705|-0.07919 +2016-07-01|29.0|136.0|-5.65368|-0.07778 +2016-07-01|29.0|137.0|-5.5433|-0.07626 +2016-07-01|29.0|138.0|-5.41634|-0.07465 +2016-07-01|29.0|139.0|-5.27325|-0.07295 +2016-07-01|29.0|140.0|-5.11455|-0.07118 +2016-07-01|29.0|141.0|-4.94075|-0.06935 +2016-07-01|29.0|142.0|-4.75242|-0.06748 +2016-07-01|29.0|143.0|-4.55012|-0.06556 +2016-07-01|29.0|144.0|-4.33443|-0.06362 +2016-07-01|29.0|145.0|-4.10596|-0.06166 +2016-07-01|29.0|146.0|-3.86529|-0.05969 +2016-07-01|29.0|147.0|-3.61303|-0.05773 +2016-07-01|29.0|148.0|-3.34979|-0.05578 +2016-07-01|29.0|149.0|-3.07616|-0.05386 +2016-07-01|29.0|150.0|-2.79277|-0.05196 +2016-07-01|29.0|151.0|-2.50023|-0.05011 +2016-07-01|29.0|152.0|-2.19916|-0.04831 +2016-07-01|29.0|153.0|-1.8902|-0.04657 +2016-07-01|29.0|154.0|-1.57398|-0.0449 +2016-07-01|29.0|155.0|-1.25117|-0.04331 +2016-07-01|29.0|156.0|-0.92244|-0.04181 +2016-07-01|29.0|157.0|-0.58848|-0.04041 +2016-07-01|29.0|158.0|-0.25|-0.03912 +2016-07-01|29.0|159.0|0.09226|-0.03795 +2016-07-01|29.0|160.0|0.43756|-0.0369 +2016-07-01|29.0|161.0|0.78511|-0.03598 +2016-07-01|29.0|162.0|1.13413|-0.0352 +2016-07-01|29.0|163.0|1.4838|-0.03457 +2016-07-01|29.0|164.0|1.83331|-0.03408 +2016-07-01|29.0|165.0|2.18181|-0.03375 +2016-07-01|29.0|166.0|2.52848|-0.03356 +2016-07-01|29.0|167.0|2.87249|-0.03354 +2016-07-01|29.0|168.0|3.21299|-0.03366 +2016-07-01|29.0|169.0|3.5492|-0.03394 +2016-07-01|29.0|170.0|3.88032|-0.03436 +2016-07-01|29.0|171.0|4.20559|-0.03492 +2016-07-01|29.0|172.0|4.52432|-0.03562 +2016-07-01|29.0|173.0|4.83583|-0.03645 +2016-07-01|29.0|174.0|5.13952|-0.0374 +2016-07-01|29.0|175.0|5.43485|-0.03845 +2016-07-01|29.0|176.0|5.72134|-0.0396 +2016-07-01|29.0|177.0|5.99861|-0.04084 +2016-07-01|29.0|178.0|6.26635|-0.04215 +2016-07-01|29.0|179.0|6.52432|-0.04352 +2016-07-01|29.0|-1.0|-0.3368|0.09613 +2016-07-01|29.0|-2.0|-0.57871|0.09763 +2016-07-01|29.0|-3.0|-0.83126|0.09918 +2016-07-01|29.0|-4.0|-1.09461|0.10077 +2016-07-01|29.0|-5.0|-1.36881|0.10238 +2016-07-01|29.0|-6.0|-1.6538|0.10399 +2016-07-01|29.0|-7.0|-1.94944|0.10559 +2016-07-01|29.0|-8.0|-2.25544|0.10717 +2016-07-01|29.0|-9.0|-2.57143|0.1087 +2016-07-01|29.0|-10.0|-2.89695|0.11019 +2016-07-01|29.0|-11.0|-3.23145|0.11163 +2016-07-01|29.0|-12.0|-3.57429|0.113 +2016-07-01|29.0|-13.0|-3.92479|0.11431 +2016-07-01|29.0|-14.0|-4.28217|0.11554 +2016-07-01|29.0|-15.0|-4.64566|0.11671 +2016-07-01|29.0|-16.0|-5.01442|0.11781 +2016-07-01|29.0|-17.0|-5.38761|0.11884 +2016-07-01|29.0|-18.0|-5.76437|0.11981 +2016-07-01|29.0|-19.0|-6.14386|0.12073 +2016-07-01|29.0|-20.0|-6.52523|0.12159 +2016-07-01|29.0|-21.0|-6.90766|0.1224 +2016-07-01|29.0|-22.0|-7.29037|0.12317 +2016-07-01|29.0|-23.0|-7.67258|0.12389 +2016-07-01|29.0|-24.0|-8.05356|0.12458 +2016-07-01|29.0|-25.0|-8.43264|0.12524 +2016-07-01|29.0|-26.0|-8.80914|0.12585 +2016-07-01|29.0|-27.0|-9.18245|0.12644 +2016-07-01|29.0|-28.0|-9.55198|0.12698 +2016-07-01|29.0|-29.0|-9.91715|0.12747 +2016-07-01|29.0|-30.0|-10.27744|0.12792 +2016-07-01|29.0|-31.0|-10.63229|0.1283 +2016-07-01|29.0|-32.0|-10.98121|0.12862 +2016-07-01|29.0|-33.0|-11.32365|0.12885 +2016-07-01|29.0|-34.0|-11.65908|0.12899 +2016-07-01|29.0|-35.0|-11.98697|0.12901 +2016-07-01|29.0|-36.0|-12.30674|0.12891 +2016-07-01|29.0|-37.0|-12.61778|0.12866 +2016-07-01|29.0|-38.0|-12.91946|0.12825 +2016-07-01|29.0|-39.0|-13.21111|0.12766 +2016-07-01|29.0|-40.0|-13.492|0.12687 +2016-07-01|29.0|-41.0|-13.76137|0.12586 +2016-07-01|29.0|-42.0|-14.01839|0.12463 +2016-07-01|29.0|-43.0|-14.26221|0.12314 +2016-07-01|29.0|-44.0|-14.49193|0.12139 +2016-07-01|29.0|-45.0|-14.7066|0.11937 +2016-07-01|29.0|-46.0|-14.90524|0.11706 +2016-07-01|29.0|-47.0|-15.08683|0.11445 +2016-07-01|29.0|-48.0|-15.25035|0.11154 +2016-07-01|29.0|-49.0|-15.39477|0.10831 +2016-07-01|29.0|-50.0|-15.51902|0.10478 +2016-07-01|29.0|-51.0|-15.62208|0.10093 +2016-07-01|29.0|-52.0|-15.70293|0.09676 +2016-07-01|29.0|-53.0|-15.76057|0.09228 +2016-07-01|29.0|-54.0|-15.79407|0.0875 +2016-07-01|29.0|-55.0|-15.80251|0.08243 +2016-07-01|29.0|-56.0|-15.78508|0.07706 +2016-07-01|29.0|-57.0|-15.74099|0.07142 +2016-07-01|29.0|-58.0|-15.66957|0.06552 +2016-07-01|29.0|-59.0|-15.57023|0.05937 +2016-07-01|29.0|-60.0|-15.44246|0.05299 +2016-07-01|29.0|-61.0|-15.28588|0.0464 +2016-07-01|29.0|-62.0|-15.1002|0.03962 +2016-07-01|29.0|-63.0|-14.88526|0.03267 +2016-07-01|29.0|-64.0|-14.641|0.02558 +2016-07-01|29.0|-65.0|-14.3675|0.01837 +2016-07-01|29.0|-66.0|-14.06495|0.01107 +2016-07-01|29.0|-67.0|-13.73369|0.00371 +2016-07-01|29.0|-68.0|-13.37415|-0.00369 +2016-07-01|29.0|-69.0|-12.98692|-0.0111 +2016-07-01|29.0|-70.0|-12.57268|-0.01848 +2016-07-01|29.0|-71.0|-12.13227|-0.0258 +2016-07-01|29.0|-72.0|-11.66663|-0.03304 +2016-07-01|29.0|-73.0|-11.17681|-0.04015 +2016-07-01|29.0|-74.0|-10.66401|-0.0471 +2016-07-01|29.0|-75.0|-10.1295|-0.05386 +2016-07-01|29.0|-76.0|-9.57468|-0.06041 +2016-07-01|29.0|-77.0|-9.00105|-0.06669 +2016-07-01|29.0|-78.0|-8.4102|-0.0727 +2016-07-01|29.0|-79.0|-7.80381|-0.07839 +2016-07-01|29.0|-80.0|-7.18364|-0.08374 +2016-07-01|29.0|-81.0|-6.55152|-0.08873 +2016-07-01|29.0|-82.0|-5.90935|-0.09333 +2016-07-01|29.0|-83.0|-5.25907|-0.09752 +2016-07-01|29.0|-84.0|-4.60264|-0.1013 +2016-07-01|29.0|-85.0|-3.94209|-0.10465 +2016-07-01|29.0|-86.0|-3.27941|-0.10756 +2016-07-01|29.0|-87.0|-2.61663|-0.11004 +2016-07-01|29.0|-88.0|-1.95572|-0.11208 +2016-07-01|29.0|-89.0|-1.29864|-0.11369 +2016-07-01|29.0|-90.0|-0.6473|-0.11488 +2016-07-01|29.0|-91.0|-0.00351|-0.11567 +2016-07-01|29.0|-92.0|0.63095|-0.11608 +2016-07-01|29.0|-93.0|1.25445|-0.11613 +2016-07-01|29.0|-94.0|1.86543|-0.11584 +2016-07-01|29.0|-95.0|2.46247|-0.11524 +2016-07-01|29.0|-96.0|3.04428|-0.11436 +2016-07-01|29.0|-97.0|3.60971|-0.11324 +2016-07-01|29.0|-98.0|4.15774|-0.1119 +2016-07-01|29.0|-99.0|4.68751|-0.11037 +2016-07-01|29.0|-100.0|5.19832|-0.10869 +2016-07-01|29.0|-101.0|5.68961|-0.10689 +2016-07-01|29.0|-102.0|6.16096|-0.105 +2016-07-01|29.0|-103.0|6.6121|-0.10304 +2016-07-01|29.0|-104.0|7.0429|-0.10105 +2016-07-01|29.0|-105.0|7.45335|-0.09904 +2016-07-01|29.0|-106.0|7.84356|-0.09704 +2016-07-01|29.0|-107.0|8.21375|-0.09506 +2016-07-01|29.0|-108.0|8.56424|-0.09313 +2016-07-01|29.0|-109.0|8.8954|-0.09125 +2016-07-01|29.0|-110.0|9.20772|-0.08944 +2016-07-01|29.0|-111.0|9.5017|-0.08771 +2016-07-01|29.0|-112.0|9.77791|-0.08607 +2016-07-01|29.0|-113.0|10.03693|-0.08451 +2016-07-01|29.0|-114.0|10.27937|-0.08304 +2016-07-01|29.0|-115.0|10.50584|-0.08166 +2016-07-01|29.0|-116.0|10.71695|-0.08038 +2016-07-01|29.0|-117.0|10.91327|-0.07918 +2016-07-01|29.0|-118.0|11.09536|-0.07807 +2016-07-01|29.0|-119.0|11.26377|-0.07703 +2016-07-01|29.0|-120.0|11.41899|-0.07608 +2016-07-01|29.0|-121.0|11.56146|-0.0752 +2016-07-01|29.0|-122.0|11.69159|-0.07438 +2016-07-01|29.0|-123.0|11.80975|-0.07362 +2016-07-01|29.0|-124.0|11.91626|-0.07292 +2016-07-01|29.0|-125.0|12.0114|-0.07227 +2016-07-01|29.0|-126.0|12.0954|-0.07167 +2016-07-01|29.0|-127.0|12.16848|-0.07111 +2016-07-01|29.0|-128.0|12.23082|-0.07059 +2016-07-01|29.0|-129.0|12.28258|-0.0701 +2016-07-01|29.0|-130.0|12.32389|-0.06965 +2016-07-01|29.0|-131.0|12.35491|-0.06923 +2016-07-01|29.0|-132.0|12.37576|-0.06885 +2016-07-01|29.0|-133.0|12.38659|-0.06849 +2016-07-01|29.0|-134.0|12.38756|-0.06817 +2016-07-01|29.0|-135.0|12.37885|-0.06788 +2016-07-01|29.0|-136.0|12.36068|-0.06761 +2016-07-01|29.0|-137.0|12.33329|-0.06738 +2016-07-01|29.0|-138.0|12.29694|-0.06718 +2016-07-01|29.0|-139.0|12.25196|-0.06701 +2016-07-01|29.0|-140.0|12.19869|-0.06688 +2016-07-01|29.0|-141.0|12.13752|-0.06677 +2016-07-01|29.0|-142.0|12.0689|-0.0667 +2016-07-01|29.0|-143.0|11.99327|-0.06665 +2016-07-01|29.0|-144.0|11.91113|-0.06663 +2016-07-01|29.0|-145.0|11.82299|-0.06664 +2016-07-01|29.0|-146.0|11.72939|-0.06666 +2016-07-01|29.0|-147.0|11.63087|-0.06671 +2016-07-01|29.0|-148.0|11.52798|-0.06677 +2016-07-01|29.0|-149.0|11.42125|-0.06683 +2016-07-01|29.0|-150.0|11.31121|-0.0669 +2016-07-01|29.0|-151.0|11.19835|-0.06697 +2016-07-01|29.0|-152.0|11.08312|-0.06702 +2016-07-01|29.0|-153.0|10.96594|-0.06706 +2016-07-01|29.0|-154.0|10.84717|-0.06707 +2016-07-01|29.0|-155.0|10.72711|-0.06706 +2016-07-01|29.0|-156.0|10.60598|-0.067 +2016-07-01|29.0|-157.0|10.48395|-0.06689 +2016-07-01|29.0|-158.0|10.36108|-0.06673 +2016-07-01|29.0|-159.0|10.23737|-0.06651 +2016-07-01|29.0|-160.0|10.11273|-0.06623 +2016-07-01|29.0|-161.0|9.98699|-0.06587 +2016-07-01|29.0|-162.0|9.85991|-0.06543 +2016-07-01|29.0|-163.0|9.73115|-0.06491 +2016-07-01|29.0|-164.0|9.60031|-0.0643 +2016-07-01|29.0|-165.0|9.46694|-0.06361 +2016-07-01|29.0|-166.0|9.33051|-0.06283 +2016-07-01|29.0|-167.0|9.19047|-0.06196 +2016-07-01|29.0|-168.0|9.04621|-0.061 +2016-07-01|29.0|-169.0|8.89711|-0.05996 +2016-07-01|29.0|-170.0|8.74254|-0.05883 +2016-07-01|29.0|-171.0|8.58186|-0.05764 +2016-07-01|29.0|-172.0|8.41446|-0.05637 +2016-07-01|29.0|-173.0|8.23974|-0.05504 +2016-07-01|29.0|-174.0|8.05715|-0.05367 +2016-07-01|29.0|-175.0|7.86618|-0.05225 +2016-07-01|29.0|-176.0|7.66638|-0.0508 +2016-07-01|29.0|-177.0|7.45737|-0.04933 +2016-07-01|29.0|-178.0|7.23884|-0.04785 +2016-07-01|29.0|-179.0|7.01057|-0.04638 +2016-07-01|30.0|0.0|-0.04766|0.09596 +2016-07-01|30.0|1.0|0.17555|0.0946 +2016-07-01|30.0|2.0|0.38919|0.09334 +2016-07-01|30.0|3.0|0.59377|0.09219 +2016-07-01|30.0|4.0|0.78982|0.09117 +2016-07-01|30.0|5.0|0.97796|0.09028 +2016-07-01|30.0|6.0|1.1588|0.08954 +2016-07-01|30.0|7.0|1.333|0.08894 +2016-07-01|30.0|8.0|1.5012|0.0885 +2016-07-01|30.0|9.0|1.66404|0.0882 +2016-07-01|30.0|10.0|1.82212|0.08805 +2016-07-01|30.0|11.0|1.97597|0.08803 +2016-07-01|30.0|12.0|2.1261|0.08814 +2016-07-01|30.0|13.0|2.2729|0.08835 +2016-07-01|30.0|14.0|2.41671|0.08866 +2016-07-01|30.0|15.0|2.55774|0.08904 +2016-07-01|30.0|16.0|2.69613|0.08946 +2016-07-01|30.0|17.0|2.83188|0.08992 +2016-07-01|30.0|18.0|2.96492|0.09038 +2016-07-01|30.0|19.0|3.09504|0.09081 +2016-07-01|30.0|20.0|3.22194|0.09119 +2016-07-01|30.0|21.0|3.34524|0.0915 +2016-07-01|30.0|22.0|3.46444|0.09171 +2016-07-01|30.0|23.0|3.57901|0.0918 +2016-07-01|30.0|24.0|3.68832|0.09175 +2016-07-01|30.0|25.0|3.79172|0.09154 +2016-07-01|30.0|26.0|3.88851|0.09115 +2016-07-01|30.0|27.0|3.978|0.09058 +2016-07-01|30.0|28.0|4.0595|0.08982 +2016-07-01|30.0|29.0|4.13235|0.08886 +2016-07-01|30.0|30.0|4.19592|0.08771 +2016-07-01|30.0|31.0|4.24967|0.08637 +2016-07-01|30.0|32.0|4.29311|0.08484 +2016-07-01|30.0|33.0|4.32587|0.08315 +2016-07-01|30.0|34.0|4.34765|0.08131 +2016-07-01|30.0|35.0|4.35832|0.07933 +2016-07-01|30.0|36.0|4.35782|0.07725 +2016-07-01|30.0|37.0|4.34626|0.07509 +2016-07-01|30.0|38.0|4.32385|0.07287 +2016-07-01|30.0|39.0|4.29095|0.07063 +2016-07-01|30.0|40.0|4.24804|0.0684 +2016-07-01|30.0|41.0|4.19571|0.0662 +2016-07-01|30.0|42.0|4.13466|0.06406 +2016-07-01|30.0|43.0|4.06567|0.06202 +2016-07-01|30.0|44.0|3.98962|0.0601 +2016-07-01|30.0|45.0|3.90743|0.05832 +2016-07-01|30.0|46.0|3.82007|0.0567 +2016-07-01|30.0|47.0|3.72851|0.05526 +2016-07-01|30.0|48.0|3.63374|0.05401 +2016-07-01|30.0|49.0|3.53673|0.05297 +2016-07-01|30.0|50.0|3.4384|0.05213 +2016-07-01|30.0|51.0|3.33961|0.0515 +2016-07-01|30.0|52.0|3.24118|0.05107 +2016-07-01|30.0|53.0|3.1438|0.05084 +2016-07-01|30.0|54.0|3.0481|0.0508 +2016-07-01|30.0|55.0|2.95459|0.05093 +2016-07-01|30.0|56.0|2.8637|0.05121 +2016-07-01|30.0|57.0|2.77571|0.05163 +2016-07-01|30.0|58.0|2.69082|0.05217 +2016-07-01|30.0|59.0|2.60913|0.05281 +2016-07-01|30.0|60.0|2.53062|0.05352 +2016-07-01|30.0|61.0|2.45521|0.05428 +2016-07-01|30.0|62.0|2.3827|0.05507 +2016-07-01|30.0|63.0|2.31287|0.05586 +2016-07-01|30.0|64.0|2.24541|0.05664 +2016-07-01|30.0|65.0|2.17998|0.05738 +2016-07-01|30.0|66.0|2.11619|0.05807 +2016-07-01|30.0|67.0|2.05366|0.05869 +2016-07-01|30.0|68.0|1.99197|0.05923 +2016-07-01|30.0|69.0|1.93073|0.05967 +2016-07-01|30.0|70.0|1.86955|0.06 +2016-07-01|30.0|71.0|1.80805|0.06021 +2016-07-01|30.0|72.0|1.74589|0.0603 +2016-07-01|30.0|73.0|1.68275|0.06025 +2016-07-01|30.0|74.0|1.61833|0.06007 +2016-07-01|30.0|75.0|1.55239|0.05974 +2016-07-01|30.0|76.0|1.48468|0.05926 +2016-07-01|30.0|77.0|1.41501|0.05864 +2016-07-01|30.0|78.0|1.34319|0.05787 +2016-07-01|30.0|79.0|1.26906|0.05695 +2016-07-01|30.0|80.0|1.19248|0.05587 +2016-07-01|30.0|81.0|1.1133|0.05464 +2016-07-01|30.0|82.0|1.03136|0.05326 +2016-07-01|30.0|83.0|0.94653|0.05172 +2016-07-01|30.0|84.0|0.85862|0.05002 +2016-07-01|30.0|85.0|0.76747|0.04816 +2016-07-01|30.0|86.0|0.67286|0.04614 +2016-07-01|30.0|87.0|0.57457|0.04395 +2016-07-01|30.0|88.0|0.47236|0.0416 +2016-07-01|30.0|89.0|0.36594|0.03908 +2016-07-01|30.0|90.0|0.25502|0.0364 +2016-07-01|30.0|91.0|0.1393|0.03354 +2016-07-01|30.0|92.0|0.01844|0.03052 +2016-07-01|30.0|93.0|-0.10786|0.02732 +2016-07-01|30.0|94.0|-0.23994|0.02396 +2016-07-01|30.0|95.0|-0.3781|0.02044 +2016-07-01|30.0|96.0|-0.52262|0.01676 +2016-07-01|30.0|97.0|-0.67374|0.01293 +2016-07-01|30.0|98.0|-0.83166|0.00896 +2016-07-01|30.0|99.0|-0.99651|0.00486 +2016-07-01|30.0|100.0|-1.16836|6.5E-4 +2016-07-01|30.0|101.0|-1.34717|-0.00367 +2016-07-01|30.0|102.0|-1.53284|-0.00808 +2016-07-01|30.0|103.0|-1.72515|-0.01255 +2016-07-01|30.0|104.0|-1.92378|-0.01706 +2016-07-01|30.0|105.0|-2.1283|-0.0216 +2016-07-01|30.0|106.0|-2.33815|-0.02614 +2016-07-01|30.0|107.0|-2.55267|-0.03065 +2016-07-01|30.0|108.0|-2.77108|-0.0351 +2016-07-01|30.0|109.0|-2.99249|-0.03948 +2016-07-01|30.0|110.0|-3.21591|-0.04376 +2016-07-01|30.0|111.0|-3.44026|-0.04791 +2016-07-01|30.0|112.0|-3.66437|-0.0519 +2016-07-01|30.0|113.0|-3.88701|-0.05572 +2016-07-01|30.0|114.0|-4.1069|-0.05934 +2016-07-01|30.0|115.0|-4.32272|-0.06274 +2016-07-01|30.0|116.0|-4.53311|-0.06591 +2016-07-01|30.0|117.0|-4.73674|-0.06882 +2016-07-01|30.0|118.0|-4.93228|-0.07147 +2016-07-01|30.0|119.0|-5.11843|-0.07386 +2016-07-01|30.0|120.0|-5.29394|-0.07596 +2016-07-01|30.0|121.0|-5.45762|-0.07778 +2016-07-01|30.0|122.0|-5.60835|-0.07933 +2016-07-01|30.0|123.0|-5.74511|-0.08059 +2016-07-01|30.0|124.0|-5.86698|-0.08158 +2016-07-01|30.0|125.0|-5.97312|-0.0823 +2016-07-01|30.0|126.0|-6.06283|-0.08277 +2016-07-01|30.0|127.0|-6.1355|-0.08298 +2016-07-01|30.0|128.0|-6.19065|-0.08296 +2016-07-01|30.0|129.0|-6.22791|-0.08272 +2016-07-01|30.0|130.0|-6.24701|-0.08227 +2016-07-01|30.0|131.0|-6.2478|-0.08163 +2016-07-01|30.0|132.0|-6.23024|-0.08081 +2016-07-01|30.0|133.0|-6.19438|-0.07983 +2016-07-01|30.0|134.0|-6.14034|-0.07869 +2016-07-01|30.0|135.0|-6.06834|-0.07743 +2016-07-01|30.0|136.0|-5.97868|-0.07605 +2016-07-01|30.0|137.0|-5.8717|-0.07456 +2016-07-01|30.0|138.0|-5.74782|-0.07298 +2016-07-01|30.0|139.0|-5.60749|-0.07132 +2016-07-01|30.0|140.0|-5.4512|-0.0696 +2016-07-01|30.0|141.0|-5.27949|-0.06782 +2016-07-01|30.0|142.0|-5.0929|-0.066 +2016-07-01|30.0|143.0|-4.89201|-0.06415 +2016-07-01|30.0|144.0|-4.6774|-0.06228 +2016-07-01|30.0|145.0|-4.44967|-0.0604 +2016-07-01|30.0|146.0|-4.20942|-0.05852 +2016-07-01|30.0|147.0|-3.95726|-0.05664 +2016-07-01|30.0|148.0|-3.6938|-0.05479 +2016-07-01|30.0|149.0|-3.41967|-0.05297 +2016-07-01|30.0|150.0|-3.13547|-0.05118 +2016-07-01|30.0|151.0|-2.84185|-0.04944 +2016-07-01|30.0|152.0|-2.53942|-0.04777 +2016-07-01|30.0|153.0|-2.22883|-0.04616 +2016-07-01|30.0|154.0|-1.91073|-0.04462 +2016-07-01|30.0|155.0|-1.58578|-0.04318 +2016-07-01|30.0|156.0|-1.25466|-0.04183 +2016-07-01|30.0|157.0|-0.91805|-0.04058 +2016-07-01|30.0|158.0|-0.57666|-0.03945 +2016-07-01|30.0|159.0|-0.23123|-0.03845 +2016-07-01|30.0|160.0|0.1175|-0.03757 +2016-07-01|30.0|161.0|0.46878|-0.03683 +2016-07-01|30.0|162.0|0.82181|-0.03623 +2016-07-01|30.0|163.0|1.17582|-0.03578 +2016-07-01|30.0|164.0|1.52998|-0.03548 +2016-07-01|30.0|165.0|1.8835|-0.03533 +2016-07-01|30.0|166.0|2.23554|-0.03534 +2016-07-01|30.0|167.0|2.58531|-0.0355 +2016-07-01|30.0|168.0|2.932|-0.03582 +2016-07-01|30.0|169.0|3.27482|-0.03628 +2016-07-01|30.0|170.0|3.613|-0.0369 +2016-07-01|30.0|171.0|3.94581|-0.03765 +2016-07-01|30.0|172.0|4.27255|-0.03853 +2016-07-01|30.0|173.0|4.59257|-0.03954 +2016-07-01|30.0|174.0|4.90526|-0.04067 +2016-07-01|30.0|175.0|5.2101|-0.04189 +2016-07-01|30.0|176.0|5.50661|-0.04321 +2016-07-01|30.0|177.0|5.79438|-0.04461 +2016-07-01|30.0|178.0|6.0731|-0.04608 +2016-07-01|30.0|179.0|6.34253|-0.0476 +2016-07-01|30.0|-1.0|-0.28083|0.0974 +2016-07-01|30.0|-2.0|-0.5243|0.09891 +2016-07-01|30.0|-3.0|-0.7783|0.10047 +2016-07-01|30.0|-4.0|-1.04297|0.10206 +2016-07-01|30.0|-5.0|-1.31834|0.10367 +2016-07-01|30.0|-6.0|-1.60432|0.10528 +2016-07-01|30.0|-7.0|-1.90075|0.10688 +2016-07-01|30.0|-8.0|-2.20732|0.10844 +2016-07-01|30.0|-9.0|-2.52367|0.10998 +2016-07-01|30.0|-10.0|-2.84931|0.11146 +2016-07-01|30.0|-11.0|-3.18368|0.11289 +2016-07-01|30.0|-12.0|-3.52617|0.11425 +2016-07-01|30.0|-13.0|-3.87607|0.11555 +2016-07-01|30.0|-14.0|-4.23263|0.11678 +2016-07-01|30.0|-15.0|-4.59509|0.11795 +2016-07-01|30.0|-16.0|-4.96262|0.11905 +2016-07-01|30.0|-17.0|-5.33439|0.12008 +2016-07-01|30.0|-18.0|-5.70957|0.12105 +2016-07-01|30.0|-19.0|-6.08734|0.12197 +2016-07-01|30.0|-20.0|-6.46687|0.12284 +2016-07-01|30.0|-21.0|-6.84737|0.12366 +2016-07-01|30.0|-22.0|-7.22808|0.12444 +2016-07-01|30.0|-23.0|-7.60826|0.12518 +2016-07-01|30.0|-24.0|-7.98721|0.12589 +2016-07-01|30.0|-25.0|-8.36427|0.12656 +2016-07-01|30.0|-26.0|-8.73881|0.1272 +2016-07-01|30.0|-27.0|-9.11024|0.12781 +2016-07-01|30.0|-28.0|-9.478|0.12838 +2016-07-01|30.0|-29.0|-9.84156|0.12892 +2016-07-01|30.0|-30.0|-10.2004|0.1294 +2016-07-01|30.0|-31.0|-10.55402|0.12983 +2016-07-01|30.0|-32.0|-10.90193|0.1302 +2016-07-01|30.0|-33.0|-11.24363|0.13049 +2016-07-01|30.0|-34.0|-11.57863|0.13068 +2016-07-01|30.0|-35.0|-11.9064|0.13078 +2016-07-01|30.0|-36.0|-12.22639|0.13075 +2016-07-01|30.0|-37.0|-12.53804|0.13059 +2016-07-01|30.0|-38.0|-12.84073|0.13027 +2016-07-01|30.0|-39.0|-13.13381|0.12977 +2016-07-01|30.0|-40.0|-13.41658|0.12909 +2016-07-01|30.0|-41.0|-13.68829|0.1282 +2016-07-01|30.0|-42.0|-13.94815|0.12709 +2016-07-01|30.0|-43.0|-14.1953|0.12573 +2016-07-01|30.0|-44.0|-14.42886|0.12412 +2016-07-01|30.0|-45.0|-14.64788|0.12224 +2016-07-01|30.0|-46.0|-14.85139|0.12008 +2016-07-01|30.0|-47.0|-15.03839|0.11762 +2016-07-01|30.0|-48.0|-15.20783|0.11487 +2016-07-01|30.0|-49.0|-15.35867|0.11181 +2016-07-01|30.0|-50.0|-15.48984|0.10843 +2016-07-01|30.0|-51.0|-15.60029|0.10475 +2016-07-01|30.0|-52.0|-15.68898|0.10075 +2016-07-01|30.0|-53.0|-15.75488|0.09644 +2016-07-01|30.0|-54.0|-15.79701|0.09182 +2016-07-01|30.0|-55.0|-15.81443|0.0869 +2016-07-01|30.0|-56.0|-15.80626|0.08169 +2016-07-01|30.0|-57.0|-15.77167|0.0762 +2016-07-01|30.0|-58.0|-15.70993|0.07044 +2016-07-01|30.0|-59.0|-15.62037|0.06442 +2016-07-01|30.0|-60.0|-15.50244|0.05817 +2016-07-01|30.0|-61.0|-15.35567|0.05169 +2016-07-01|30.0|-62.0|-15.17971|0.04502 +2016-07-01|30.0|-63.0|-14.97431|0.03816 +2016-07-01|30.0|-64.0|-14.73935|0.03115 +2016-07-01|30.0|-65.0|-14.47483|0.024 +2016-07-01|30.0|-66.0|-14.18085|0.01674 +2016-07-01|30.0|-67.0|-13.85769|0.00941 +2016-07-01|30.0|-68.0|-13.5057|0.00202 +2016-07-01|30.0|-69.0|-13.1254|-0.00539 +2016-07-01|30.0|-70.0|-12.71742|-0.01279 +2016-07-01|30.0|-71.0|-12.28252|-0.02015 +2016-07-01|30.0|-72.0|-11.8216|-0.02744 +2016-07-01|30.0|-73.0|-11.33567|-0.03462 +2016-07-01|30.0|-74.0|-10.82588|-0.04166 +2016-07-01|30.0|-75.0|-10.29347|-0.04852 +2016-07-01|30.0|-76.0|-9.73983|-0.05518 +2016-07-01|30.0|-77.0|-9.16644|-0.0616 +2016-07-01|30.0|-78.0|-8.57487|-0.06775 +2016-07-01|30.0|-79.0|-7.96683|-0.0736 +2016-07-01|30.0|-80.0|-7.34407|-0.07913 +2016-07-01|30.0|-81.0|-6.70845|-0.08429 +2016-07-01|30.0|-82.0|-6.06188|-0.08908 +2016-07-01|30.0|-83.0|-5.40635|-0.09348 +2016-07-01|30.0|-84.0|-4.74386|-0.09746 +2016-07-01|30.0|-85.0|-4.07647|-0.10102 +2016-07-01|30.0|-86.0|-3.40625|-0.10415 +2016-07-01|30.0|-87.0|-2.73524|-0.10684 +2016-07-01|30.0|-88.0|-2.06551|-0.10911 +2016-07-01|30.0|-89.0|-1.39905|-0.11094 +2016-07-01|30.0|-90.0|-0.73783|-0.11235 +2016-07-01|30.0|-91.0|-0.08374|-0.11337 +2016-07-01|30.0|-92.0|0.56141|-0.11399 +2016-07-01|30.0|-93.0|1.1959|-0.11425 +2016-07-01|30.0|-94.0|1.81813|-0.11417 +2016-07-01|30.0|-95.0|2.42663|-0.11378 +2016-07-01|30.0|-96.0|3.02004|-0.1131 +2016-07-01|30.0|-97.0|3.59716|-0.11217 +2016-07-01|30.0|-98.0|4.15693|-0.11102 +2016-07-01|30.0|-99.0|4.69845|-0.10968 +2016-07-01|30.0|-100.0|5.22097|-0.10817 +2016-07-01|30.0|-101.0|5.72387|-0.10654 +2016-07-01|30.0|-102.0|6.20672|-0.10481 +2016-07-01|30.0|-103.0|6.6692|-0.103 +2016-07-01|30.0|-104.0|7.11115|-0.10115 +2016-07-01|30.0|-105.0|7.53252|-0.09928 +2016-07-01|30.0|-106.0|7.9334|-0.09741 +2016-07-01|30.0|-107.0|8.31398|-0.09556 +2016-07-01|30.0|-108.0|8.67454|-0.09374 +2016-07-01|30.0|-109.0|9.01545|-0.09198 +2016-07-01|30.0|-110.0|9.33716|-0.09027 +2016-07-01|30.0|-111.0|9.64015|-0.08864 +2016-07-01|30.0|-112.0|9.92497|-0.08709 +2016-07-01|30.0|-113.0|10.1922|-0.08562 +2016-07-01|30.0|-114.0|10.44242|-0.08424 +2016-07-01|30.0|-115.0|10.67622|-0.08295 +2016-07-01|30.0|-116.0|10.8942|-0.08174 +2016-07-01|30.0|-117.0|11.09694|-0.08062 +2016-07-01|30.0|-118.0|11.28499|-0.07958 +2016-07-01|30.0|-119.0|11.45889|-0.07863 +2016-07-01|30.0|-120.0|11.61911|-0.07774 +2016-07-01|30.0|-121.0|11.76612|-0.07693 +2016-07-01|30.0|-122.0|11.90033|-0.07619 +2016-07-01|30.0|-123.0|12.02211|-0.0755 +2016-07-01|30.0|-124.0|12.13179|-0.07487 +2016-07-01|30.0|-125.0|12.22965|-0.0743 +2016-07-01|30.0|-126.0|12.31596|-0.07377 +2016-07-01|30.0|-127.0|12.39094|-0.07328 +2016-07-01|30.0|-128.0|12.45477|-0.07284 +2016-07-01|30.0|-129.0|12.50764|-0.07243 +2016-07-01|30.0|-130.0|12.54971|-0.07206 +2016-07-01|30.0|-131.0|12.58113|-0.07173 +2016-07-01|30.0|-132.0|12.60205|-0.07142 +2016-07-01|30.0|-133.0|12.61264|-0.07116 +2016-07-01|30.0|-134.0|12.61306|-0.07092 +2016-07-01|30.0|-135.0|12.60352|-0.07071 +2016-07-01|30.0|-136.0|12.58423|-0.07054 +2016-07-01|30.0|-137.0|12.55543|-0.0704 +2016-07-01|30.0|-138.0|12.51741|-0.07029 +2016-07-01|30.0|-139.0|12.47049|-0.07022 +2016-07-01|30.0|-140.0|12.415|-0.07018 +2016-07-01|30.0|-141.0|12.35134|-0.07017 +2016-07-01|30.0|-142.0|12.27993|-0.07019 +2016-07-01|30.0|-143.0|12.20122|-0.07024 +2016-07-01|30.0|-144.0|12.11568|-0.07032 +2016-07-01|30.0|-145.0|12.02382|-0.07042 +2016-07-01|30.0|-146.0|11.92615|-0.07054 +2016-07-01|30.0|-147.0|11.82319|-0.07068 +2016-07-01|30.0|-148.0|11.71548|-0.07083 +2016-07-01|30.0|-149.0|11.60352|-0.07099 +2016-07-01|30.0|-150.0|11.48782|-0.07115 +2016-07-01|30.0|-151.0|11.36884|-0.07131 +2016-07-01|30.0|-152.0|11.24704|-0.07145 +2016-07-01|30.0|-153.0|11.1228|-0.07158 +2016-07-01|30.0|-154.0|10.99647|-0.07167 +2016-07-01|30.0|-155.0|10.86834|-0.07173 +2016-07-01|30.0|-156.0|10.73863|-0.07175 +2016-07-01|30.0|-157.0|10.60748|-0.07172 +2016-07-01|30.0|-158.0|10.47498|-0.07162 +2016-07-01|30.0|-159.0|10.34113|-0.07147 +2016-07-01|30.0|-160.0|10.20584|-0.07123 +2016-07-01|30.0|-161.0|10.06897|-0.07092 +2016-07-01|30.0|-162.0|9.93028|-0.07053 +2016-07-01|30.0|-163.0|9.78948|-0.07004 +2016-07-01|30.0|-164.0|9.6462|-0.06946 +2016-07-01|30.0|-165.0|9.5|-0.06878 +2016-07-01|30.0|-166.0|9.35043|-0.06801 +2016-07-01|30.0|-167.0|9.19695|-0.06713 +2016-07-01|30.0|-168.0|9.03901|-0.06616 +2016-07-01|30.0|-169.0|8.87606|-0.0651 +2016-07-01|30.0|-170.0|8.7075|-0.06395 +2016-07-01|30.0|-171.0|8.53277|-0.06271 +2016-07-01|30.0|-172.0|8.35129|-0.06139 +2016-07-01|30.0|-173.0|8.16254|-0.06 +2016-07-01|30.0|-174.0|7.966|-0.05855 +2016-07-01|30.0|-175.0|7.76124|-0.05704 +2016-07-01|30.0|-176.0|7.54786|-0.0555 +2016-07-01|30.0|-177.0|7.32551|-0.05392 +2016-07-01|30.0|-178.0|7.09395|-0.05233 +2016-07-01|30.0|-179.0|6.85298|-0.05074 +2016-07-01|31.0|0.0|0.00343|0.09731 +2016-07-01|31.0|1.0|0.22859|0.09593 +2016-07-01|31.0|2.0|0.44422|0.09465 +2016-07-01|31.0|3.0|0.65077|0.09347 +2016-07-01|31.0|4.0|0.84875|0.09242 +2016-07-01|31.0|5.0|1.03875|0.09149 +2016-07-01|31.0|6.0|1.22136|0.09071 +2016-07-01|31.0|7.0|1.39722|0.09006 +2016-07-01|31.0|8.0|1.56693|0.08957 +2016-07-01|31.0|9.0|1.73112|0.08921 +2016-07-01|31.0|10.0|1.89039|0.089 +2016-07-01|31.0|11.0|2.04525|0.08892 +2016-07-01|31.0|12.0|2.19622|0.08896 +2016-07-01|31.0|13.0|2.34369|0.08911 +2016-07-01|31.0|14.0|2.488|0.08936 +2016-07-01|31.0|15.0|2.62939|0.08968 +2016-07-01|31.0|16.0|2.76802|0.09005 +2016-07-01|31.0|17.0|2.90392|0.09046 +2016-07-01|31.0|18.0|3.03703|0.09087 +2016-07-01|31.0|19.0|3.1672|0.09127 +2016-07-01|31.0|20.0|3.29416|0.09162 +2016-07-01|31.0|21.0|3.41757|0.09191 +2016-07-01|31.0|22.0|3.53698|0.09211 +2016-07-01|31.0|23.0|3.6519|0.09219 +2016-07-01|31.0|24.0|3.76175|0.09215 +2016-07-01|31.0|25.0|3.86592|0.09196 +2016-07-01|31.0|26.0|3.96376|0.0916 +2016-07-01|31.0|27.0|4.05462|0.09107 +2016-07-01|31.0|28.0|4.13784|0.09036 +2016-07-01|31.0|29.0|4.2128|0.08946 +2016-07-01|31.0|30.0|4.27889|0.08837 +2016-07-01|31.0|31.0|4.3356|0.0871 +2016-07-01|31.0|32.0|4.38244|0.08565 +2016-07-01|31.0|33.0|4.41905|0.08404 +2016-07-01|31.0|34.0|4.44515|0.08228 +2016-07-01|31.0|35.0|4.46057|0.08039 +2016-07-01|31.0|36.0|4.46525|0.07839 +2016-07-01|31.0|37.0|4.45927|0.07631 +2016-07-01|31.0|38.0|4.44282|0.07416 +2016-07-01|31.0|39.0|4.41621|0.07199 +2016-07-01|31.0|40.0|4.37986|0.06981 +2016-07-01|31.0|41.0|4.33434|0.06765 +2016-07-01|31.0|42.0|4.28026|0.06555 +2016-07-01|31.0|43.0|4.21838|0.06353 +2016-07-01|31.0|44.0|4.14948|0.06162 +2016-07-01|31.0|45.0|4.07444|0.05983 +2016-07-01|31.0|46.0|3.99416|0.05819 +2016-07-01|31.0|47.0|3.90955|0.05672 +2016-07-01|31.0|48.0|3.82154|0.05543 +2016-07-01|31.0|49.0|3.73104|0.05432 +2016-07-01|31.0|50.0|3.63893|0.05341 +2016-07-01|31.0|51.0|3.54601|0.05269 +2016-07-01|31.0|52.0|3.45306|0.05217 +2016-07-01|31.0|53.0|3.36075|0.05183 +2016-07-01|31.0|54.0|3.26967|0.05167 +2016-07-01|31.0|55.0|3.18032|0.05169 +2016-07-01|31.0|56.0|3.09309|0.05185 +2016-07-01|31.0|57.0|3.00827|0.05215 +2016-07-01|31.0|58.0|2.92606|0.05257 +2016-07-01|31.0|59.0|2.84655|0.05308 +2016-07-01|31.0|60.0|2.76974|0.05367 +2016-07-01|31.0|61.0|2.69554|0.05431 +2016-07-01|31.0|62.0|2.62379|0.05499 +2016-07-01|31.0|63.0|2.55426|0.05568 +2016-07-01|31.0|64.0|2.48666|0.05636 +2016-07-01|31.0|65.0|2.42067|0.05701 +2016-07-01|31.0|66.0|2.35592|0.05762 +2016-07-01|31.0|67.0|2.29203|0.05817 +2016-07-01|31.0|68.0|2.22861|0.05864 +2016-07-01|31.0|69.0|2.16527|0.05902 +2016-07-01|31.0|70.0|2.10162|0.0593 +2016-07-01|31.0|71.0|2.03729|0.05947 +2016-07-01|31.0|72.0|1.97194|0.05952 +2016-07-01|31.0|73.0|1.90525|0.05944 +2016-07-01|31.0|74.0|1.83692|0.05922 +2016-07-01|31.0|75.0|1.76669|0.05887 +2016-07-01|31.0|76.0|1.69431|0.05838 +2016-07-01|31.0|77.0|1.61956|0.05774 +2016-07-01|31.0|78.0|1.54227|0.05695 +2016-07-01|31.0|79.0|1.46225|0.05602 +2016-07-01|31.0|80.0|1.37933|0.05493 +2016-07-01|31.0|81.0|1.29337|0.05369 +2016-07-01|31.0|82.0|1.2042|0.05229 +2016-07-01|31.0|83.0|1.11167|0.05074 +2016-07-01|31.0|84.0|1.01561|0.04903 +2016-07-01|31.0|85.0|0.91583|0.04716 +2016-07-01|31.0|86.0|0.81213|0.04513 +2016-07-01|31.0|87.0|0.7043|0.04294 +2016-07-01|31.0|88.0|0.59209|0.04058 +2016-07-01|31.0|89.0|0.47526|0.03805 +2016-07-01|31.0|90.0|0.35353|0.03536 +2016-07-01|31.0|91.0|0.22661|0.03251 +2016-07-01|31.0|92.0|0.09422|0.02949 +2016-07-01|31.0|93.0|-0.04394|0.0263 +2016-07-01|31.0|94.0|-0.18815|0.02295 +2016-07-01|31.0|95.0|-0.33868|0.01945 +2016-07-01|31.0|96.0|-0.49575|0.0158 +2016-07-01|31.0|97.0|-0.65957|0.012 +2016-07-01|31.0|98.0|-0.83029|0.00807 +2016-07-01|31.0|99.0|-1.008|0.00402 +2016-07-01|31.0|100.0|-1.1927|-1.5E-4 +2016-07-01|31.0|101.0|-1.38434|-0.0044 +2016-07-01|31.0|102.0|-1.58275|-0.00874 +2016-07-01|31.0|103.0|-1.78768|-0.01313 +2016-07-01|31.0|104.0|-1.99878|-0.01756 +2016-07-01|31.0|105.0|-2.21556|-0.02201 +2016-07-01|31.0|106.0|-2.43746|-0.02644 +2016-07-01|31.0|107.0|-2.66377|-0.03085 +2016-07-01|31.0|108.0|-2.8937|-0.0352 +2016-07-01|31.0|109.0|-3.12633|-0.03947 +2016-07-01|31.0|110.0|-3.36067|-0.04363 +2016-07-01|31.0|111.0|-3.59561|-0.04766 +2016-07-01|31.0|112.0|-3.83|-0.05153 +2016-07-01|31.0|113.0|-4.06258|-0.05523 +2016-07-01|31.0|114.0|-4.29209|-0.05873 +2016-07-01|31.0|115.0|-4.5172|-0.06201 +2016-07-01|31.0|116.0|-4.73657|-0.06506 +2016-07-01|31.0|117.0|-4.94887|-0.06787 +2016-07-01|31.0|118.0|-5.15277|-0.07042 +2016-07-01|31.0|119.0|-5.34698|-0.0727 +2016-07-01|31.0|120.0|-5.53027|-0.07471 +2016-07-01|31.0|121.0|-5.70146|-0.07644 +2016-07-01|31.0|122.0|-5.85943|-0.0779 +2016-07-01|31.0|123.0|-6.00318|-0.07909 +2016-07-01|31.0|124.0|-6.13177|-0.08001 +2016-07-01|31.0|125.0|-6.24439|-0.08067 +2016-07-01|31.0|126.0|-6.34033|-0.08108 +2016-07-01|31.0|127.0|-6.41899|-0.08126 +2016-07-01|31.0|128.0|-6.47987|-0.0812 +2016-07-01|31.0|129.0|-6.52261|-0.08093 +2016-07-01|31.0|130.0|-6.54694|-0.08045 +2016-07-01|31.0|131.0|-6.5527|-0.0798 +2016-07-01|31.0|132.0|-6.53983|-0.07897 +2016-07-01|31.0|133.0|-6.50838|-0.07798 +2016-07-01|31.0|134.0|-6.45847|-0.07685 +2016-07-01|31.0|135.0|-6.39032|-0.0756 +2016-07-01|31.0|136.0|-6.30419|-0.07423 +2016-07-01|31.0|137.0|-6.20045|-0.07277 +2016-07-01|31.0|138.0|-6.07948|-0.07122 +2016-07-01|31.0|139.0|-5.94175|-0.0696 +2016-07-01|31.0|140.0|-5.78774|-0.06792 +2016-07-01|31.0|141.0|-5.61797|-0.06619 +2016-07-01|31.0|142.0|-5.43301|-0.06443 +2016-07-01|31.0|143.0|-5.23341|-0.06264 +2016-07-01|31.0|144.0|-5.01978|-0.06084 +2016-07-01|31.0|145.0|-4.79271|-0.05904 +2016-07-01|31.0|146.0|-4.55281|-0.05724 +2016-07-01|31.0|147.0|-4.3007|-0.05546 +2016-07-01|31.0|148.0|-4.037|-0.0537 +2016-07-01|31.0|149.0|-3.76234|-0.05199 +2016-07-01|31.0|150.0|-3.47734|-0.05031 +2016-07-01|31.0|151.0|-3.18264|-0.0487 +2016-07-01|31.0|152.0|-2.87888|-0.04715 +2016-07-01|31.0|153.0|-2.5667|-0.04567 +2016-07-01|31.0|154.0|-2.24677|-0.04428 +2016-07-01|31.0|155.0|-1.91974|-0.04298 +2016-07-01|31.0|156.0|-1.5863|-0.04179 +2016-07-01|31.0|157.0|-1.24713|-0.0407 +2016-07-01|31.0|158.0|-0.90294|-0.03974 +2016-07-01|31.0|159.0|-0.55445|-0.0389 +2016-07-01|31.0|160.0|-0.2024|-0.0382 +2016-07-01|31.0|161.0|0.15246|-0.03764 +2016-07-01|31.0|162.0|0.50937|-0.03723 +2016-07-01|31.0|163.0|0.86755|-0.03696 +2016-07-01|31.0|164.0|1.22622|-0.03685 +2016-07-01|31.0|165.0|1.58458|-0.0369 +2016-07-01|31.0|166.0|1.94183|-0.0371 +2016-07-01|31.0|167.0|2.29719|-0.03746 +2016-07-01|31.0|168.0|2.64987|-0.03797 +2016-07-01|31.0|169.0|2.99911|-0.03863 +2016-07-01|31.0|170.0|3.34416|-0.03943 +2016-07-01|31.0|171.0|3.68431|-0.04038 +2016-07-01|31.0|172.0|4.01887|-0.04145 +2016-07-01|31.0|173.0|4.3472|-0.04264 +2016-07-01|31.0|174.0|4.66872|-0.04395 +2016-07-01|31.0|175.0|4.98289|-0.04535 +2016-07-01|31.0|176.0|5.28923|-0.04684 +2016-07-01|31.0|177.0|5.58735|-0.04841 +2016-07-01|31.0|178.0|5.87691|-0.05003 +2016-07-01|31.0|179.0|6.15767|-0.0517 +2016-07-01|31.0|-1.0|-0.23165|0.09877 +2016-07-01|31.0|-2.0|-0.47694|0.10029 +2016-07-01|31.0|-3.0|-0.73266|0.10185 +2016-07-01|31.0|-4.0|-0.9989|0.10345 +2016-07-01|31.0|-5.0|-1.27568|0.10506 +2016-07-01|31.0|-6.0|-1.56289|0.10666 +2016-07-01|31.0|-7.0|-1.86033|0.10826 +2016-07-01|31.0|-8.0|-2.16772|0.10982 +2016-07-01|31.0|-9.0|-2.48464|0.11135 +2016-07-01|31.0|-10.0|-2.81063|0.11282 +2016-07-01|31.0|-11.0|-3.14512|0.11425 +2016-07-01|31.0|-12.0|-3.48749|0.11561 +2016-07-01|31.0|-13.0|-3.83704|0.1169 +2016-07-01|31.0|-14.0|-4.19304|0.11814 +2016-07-01|31.0|-15.0|-4.55472|0.1193 +2016-07-01|31.0|-16.0|-4.92129|0.1204 +2016-07-01|31.0|-17.0|-5.29192|0.12144 +2016-07-01|31.0|-18.0|-5.66582|0.12242 +2016-07-01|31.0|-19.0|-6.04216|0.12334 +2016-07-01|31.0|-20.0|-6.42016|0.12422 +2016-07-01|31.0|-21.0|-6.79905|0.12505 +2016-07-01|31.0|-22.0|-7.17809|0.12585 +2016-07-01|31.0|-23.0|-7.55657|0.12661 +2016-07-01|31.0|-24.0|-7.93382|0.12733 +2016-07-01|31.0|-25.0|-8.30921|0.12803 +2016-07-01|31.0|-26.0|-8.68213|0.12869 +2016-07-01|31.0|-27.0|-9.05202|0.12933 +2016-07-01|31.0|-28.0|-9.41835|0.12993 +2016-07-01|31.0|-29.0|-9.78062|0.1305 +2016-07-01|31.0|-30.0|-10.13833|0.13102 +2016-07-01|31.0|-31.0|-10.49101|0.1315 +2016-07-01|31.0|-32.0|-10.83821|0.13191 +2016-07-01|31.0|-33.0|-11.17944|0.13225 +2016-07-01|31.0|-34.0|-11.51423|0.13251 +2016-07-01|31.0|-35.0|-11.84209|0.13266 +2016-07-01|31.0|-36.0|-12.1625|0.13271 +2016-07-01|31.0|-37.0|-12.47491|0.13262 +2016-07-01|31.0|-38.0|-12.77872|0.13238 +2016-07-01|31.0|-39.0|-13.07331|0.13198 +2016-07-01|31.0|-40.0|-13.358|0.1314 +2016-07-01|31.0|-41.0|-13.63206|0.13061 +2016-07-01|31.0|-42.0|-13.8947|0.12961 +2016-07-01|31.0|-43.0|-14.1451|0.12838 +2016-07-01|31.0|-44.0|-14.38237|0.12689 +2016-07-01|31.0|-45.0|-14.60558|0.12514 +2016-07-01|31.0|-46.0|-14.81376|0.12312 +2016-07-01|31.0|-47.0|-15.0059|0.12081 +2016-07-01|31.0|-48.0|-15.18097|0.11821 +2016-07-01|31.0|-49.0|-15.3379|0.11531 +2016-07-01|31.0|-50.0|-15.47563|0.11209 +2016-07-01|31.0|-51.0|-15.59307|0.10857 +2016-07-01|31.0|-52.0|-15.68918|0.10473 +2016-07-01|31.0|-53.0|-15.76288|0.10058 +2016-07-01|31.0|-54.0|-15.81318|0.09613 +2016-07-01|31.0|-55.0|-15.83907|0.09137 +2016-07-01|31.0|-56.0|-15.83965|0.08632 +2016-07-01|31.0|-57.0|-15.81404|0.08098 +2016-07-01|31.0|-58.0|-15.76145|0.07536 +2016-07-01|31.0|-59.0|-15.68115|0.06948 +2016-07-01|31.0|-60.0|-15.57253|0.06336 +2016-07-01|31.0|-61.0|-15.43504|0.057 +2016-07-01|31.0|-62.0|-15.26828|0.05043 +2016-07-01|31.0|-63.0|-15.07191|0.04367 +2016-07-01|31.0|-64.0|-14.84574|0.03674 +2016-07-01|31.0|-65.0|-14.5897|0.02967 +2016-07-01|31.0|-66.0|-14.30382|0.02247 +2016-07-01|31.0|-67.0|-13.98829|0.01517 +2016-07-01|31.0|-68.0|-13.64341|0.00781 +2016-07-01|31.0|-69.0|-13.26961|4.1E-4 +2016-07-01|31.0|-70.0|-12.86747|-0.007 +2016-07-01|31.0|-71.0|-12.4377|-0.01439 +2016-07-01|31.0|-72.0|-11.98112|-0.02171 +2016-07-01|31.0|-73.0|-11.49872|-0.02896 +2016-07-01|31.0|-74.0|-10.99158|-0.03607 +2016-07-01|31.0|-75.0|-10.46094|-0.04303 +2016-07-01|31.0|-76.0|-9.90815|-0.0498 +2016-07-01|31.0|-77.0|-9.33467|-0.05635 +2016-07-01|31.0|-78.0|-8.74208|-0.06264 +2016-07-01|31.0|-79.0|-8.13207|-0.06864 +2016-07-01|31.0|-80.0|-7.50642|-0.07433 +2016-07-01|31.0|-81.0|-6.867|-0.07968 +2016-07-01|31.0|-82.0|-6.21575|-0.08466 +2016-07-01|31.0|-83.0|-5.55468|-0.08926 +2016-07-01|31.0|-84.0|-4.88585|-0.09345 +2016-07-01|31.0|-85.0|-4.21136|-0.09722 +2016-07-01|31.0|-86.0|-3.53331|-0.10057 +2016-07-01|31.0|-87.0|-2.85382|-0.10349 +2016-07-01|31.0|-88.0|-2.175|-0.10598 +2016-07-01|31.0|-89.0|-1.49891|-0.10804 +2016-07-01|31.0|-90.0|-0.82758|-0.10969 +2016-07-01|31.0|-91.0|-0.16296|-0.11093 +2016-07-01|31.0|-92.0|0.49308|-0.11178 +2016-07-01|31.0|-93.0|1.13876|-0.11227 +2016-07-01|31.0|-94.0|1.77243|-0.11241 +2016-07-01|31.0|-95.0|2.39255|-0.11224 +2016-07-01|31.0|-96.0|2.99771|-0.11177 +2016-07-01|31.0|-97.0|3.58666|-0.11105 +2016-07-01|31.0|-98.0|4.1583|-0.11009 +2016-07-01|31.0|-99.0|4.71167|-0.10894 +2016-07-01|31.0|-100.0|5.24597|-0.10763 +2016-07-01|31.0|-101.0|5.76056|-0.10617 +2016-07-01|31.0|-102.0|6.25496|-0.10461 +2016-07-01|31.0|-103.0|6.72882|-0.10297 +2016-07-01|31.0|-104.0|7.18193|-0.10127 +2016-07-01|31.0|-105.0|7.61424|-0.09955 +2016-07-01|31.0|-106.0|8.02579|-0.09782 +2016-07-01|31.0|-107.0|8.41674|-0.0961 +2016-07-01|31.0|-108.0|8.78736|-0.09441 +2016-07-01|31.0|-109.0|9.13799|-0.09277 +2016-07-01|31.0|-110.0|9.46905|-0.09118 +2016-07-01|31.0|-111.0|9.78102|-0.08966 +2016-07-01|31.0|-112.0|10.07442|-0.08821 +2016-07-01|31.0|-113.0|10.3498|-0.08684 +2016-07-01|31.0|-114.0|10.60775|-0.08555 +2016-07-01|31.0|-115.0|10.84885|-0.08434 +2016-07-01|31.0|-116.0|11.07367|-0.08322 +2016-07-01|31.0|-117.0|11.28279|-0.08219 +2016-07-01|31.0|-118.0|11.47677|-0.08123 +2016-07-01|31.0|-119.0|11.65611|-0.08035 +2016-07-01|31.0|-120.0|11.82133|-0.07954 +2016-07-01|31.0|-121.0|11.97286|-0.07881 +2016-07-01|31.0|-122.0|12.11113|-0.07813 +2016-07-01|31.0|-123.0|12.23652|-0.07753 +2016-07-01|31.0|-124.0|12.34937|-0.07697 +2016-07-01|31.0|-125.0|12.44997|-0.07647 +2016-07-01|31.0|-126.0|12.5386|-0.07602 +2016-07-01|31.0|-127.0|12.61548|-0.07561 +2016-07-01|31.0|-128.0|12.68083|-0.07525 +2016-07-01|31.0|-129.0|12.73484|-0.07492 +2016-07-01|31.0|-130.0|12.77769|-0.07463 +2016-07-01|31.0|-131.0|12.80954|-0.07438 +2016-07-01|31.0|-132.0|12.83057|-0.07417 +2016-07-01|31.0|-133.0|12.84094|-0.07398 +2016-07-01|31.0|-134.0|12.84085|-0.07384 +2016-07-01|31.0|-135.0|12.8305|-0.07372 +2016-07-01|31.0|-136.0|12.8101|-0.07364 +2016-07-01|31.0|-137.0|12.77993|-0.07359 +2016-07-01|31.0|-138.0|12.74024|-0.07358 +2016-07-01|31.0|-139.0|12.69138|-0.0736 +2016-07-01|31.0|-140.0|12.63366|-0.07366 +2016-07-01|31.0|-141.0|12.56749|-0.07374 +2016-07-01|31.0|-142.0|12.49326|-0.07386 +2016-07-01|31.0|-143.0|12.41142|-0.074 +2016-07-01|31.0|-144.0|12.32243|-0.07418 +2016-07-01|31.0|-145.0|12.22677|-0.07438 +2016-07-01|31.0|-146.0|12.12494|-0.07459 +2016-07-01|31.0|-147.0|12.01744|-0.07483 +2016-07-01|31.0|-148.0|11.90478|-0.07507 +2016-07-01|31.0|-149.0|11.78744|-0.07532 +2016-07-01|31.0|-150.0|11.66592|-0.07558 +2016-07-01|31.0|-151.0|11.54067|-0.07582 +2016-07-01|31.0|-152.0|11.4121|-0.07605 +2016-07-01|31.0|-153.0|11.28059|-0.07625 +2016-07-01|31.0|-154.0|11.14648|-0.07643 +2016-07-01|31.0|-155.0|11.01005|-0.07656 +2016-07-01|31.0|-156.0|10.8715|-0.07665 +2016-07-01|31.0|-157.0|10.73099|-0.07668 +2016-07-01|31.0|-158.0|10.5886|-0.07665 +2016-07-01|31.0|-159.0|10.44433|-0.07654 +2016-07-01|31.0|-160.0|10.29813|-0.07636 +2016-07-01|31.0|-161.0|10.14986|-0.07609 +2016-07-01|31.0|-162.0|9.9993|-0.07573 +2016-07-01|31.0|-163.0|9.8462|-0.07527 +2016-07-01|31.0|-164.0|9.69021|-0.07471 +2016-07-01|31.0|-165.0|9.53096|-0.07404 +2016-07-01|31.0|-166.0|9.368|-0.07327 +2016-07-01|31.0|-167.0|9.20087|-0.07238 +2016-07-01|31.0|-168.0|9.02907|-0.0714 +2016-07-01|31.0|-169.0|8.85209|-0.07031 +2016-07-01|31.0|-170.0|8.6694|-0.06911 +2016-07-01|31.0|-171.0|8.48048|-0.06783 +2016-07-01|31.0|-172.0|8.28482|-0.06645 +2016-07-01|31.0|-173.0|8.08195|-0.06499 +2016-07-01|31.0|-174.0|7.87143|-0.06346 +2016-07-01|31.0|-175.0|7.65286|-0.06187 +2016-07-01|31.0|-176.0|7.42588|-0.06023 +2016-07-01|31.0|-177.0|7.19023|-0.05854 +2016-07-01|31.0|-178.0|6.94569|-0.05684 +2016-07-01|31.0|-179.0|6.69211|-0.05512 +2016-07-01|32.0|0.0|0.04788|0.09877 +2016-07-01|32.0|1.0|0.27529|0.09737 +2016-07-01|32.0|2.0|0.4932|0.09607 +2016-07-01|32.0|3.0|0.70203|0.09487 +2016-07-01|32.0|4.0|0.90228|0.09378 +2016-07-01|32.0|5.0|1.09448|0.09282 +2016-07-01|32.0|6.0|1.27921|0.09199 +2016-07-01|32.0|7.0|1.45706|0.0913 +2016-07-01|32.0|8.0|1.62866|0.09075 +2016-07-01|32.0|9.0|1.79459|0.09034 +2016-07-01|32.0|10.0|1.95542|0.09007 +2016-07-01|32.0|11.0|2.1117|0.08993 +2016-07-01|32.0|12.0|2.26389|0.08991 +2016-07-01|32.0|13.0|2.41243|0.09001 +2016-07-01|32.0|14.0|2.55765|0.09019 +2016-07-01|32.0|15.0|2.69981|0.09045 +2016-07-01|32.0|16.0|2.83908|0.09077 +2016-07-01|32.0|17.0|2.97552|0.09112 +2016-07-01|32.0|18.0|3.10911|0.09149 +2016-07-01|32.0|19.0|3.23973|0.09184 +2016-07-01|32.0|20.0|3.36714|0.09216 +2016-07-01|32.0|21.0|3.49104|0.09243 +2016-07-01|32.0|22.0|3.61104|0.09261 +2016-07-01|32.0|23.0|3.72668|0.09269 +2016-07-01|32.0|24.0|3.83743|0.09265 +2016-07-01|32.0|25.0|3.94272|0.09248 +2016-07-01|32.0|26.0|4.04196|0.09214 +2016-07-01|32.0|27.0|4.13452|0.09165 +2016-07-01|32.0|28.0|4.2198|0.09098 +2016-07-01|32.0|29.0|4.29718|0.09013 +2016-07-01|32.0|30.0|4.36612|0.0891 +2016-07-01|32.0|31.0|4.42609|0.0879 +2016-07-01|32.0|32.0|4.47665|0.08652 +2016-07-01|32.0|33.0|4.51742|0.08499 +2016-07-01|32.0|34.0|4.54813|0.0833 +2016-07-01|32.0|35.0|4.56861|0.08149 +2016-07-01|32.0|36.0|4.57878|0.07957 +2016-07-01|32.0|37.0|4.57868|0.07756 +2016-07-01|32.0|38.0|4.56848|0.07548 +2016-07-01|32.0|39.0|4.54846|0.07337 +2016-07-01|32.0|40.0|4.51899|0.07124 +2016-07-01|32.0|41.0|4.48056|0.06913 +2016-07-01|32.0|42.0|4.43378|0.06707 +2016-07-01|32.0|43.0|4.37929|0.06507 +2016-07-01|32.0|44.0|4.31786|0.06316 +2016-07-01|32.0|45.0|4.25027|0.06137 +2016-07-01|32.0|46.0|4.17737|0.05971 +2016-07-01|32.0|47.0|4.10001|0.05821 +2016-07-01|32.0|48.0|4.01905|0.05687 +2016-07-01|32.0|49.0|3.93535|0.0557 +2016-07-01|32.0|50.0|3.84972|0.05471 +2016-07-01|32.0|51.0|3.76294|0.05391 +2016-07-01|32.0|52.0|3.67572|0.0533 +2016-07-01|32.0|53.0|3.58871|0.05286 +2016-07-01|32.0|54.0|3.50247|0.05259 +2016-07-01|32.0|55.0|3.41746|0.05249 +2016-07-01|32.0|56.0|3.33407|0.05253 +2016-07-01|32.0|57.0|3.25258|0.05271 +2016-07-01|32.0|58.0|3.17318|0.053 +2016-07-01|32.0|59.0|3.09595|0.05339 +2016-07-01|32.0|60.0|3.0209|0.05386 +2016-07-01|32.0|61.0|2.94796|0.05439 +2016-07-01|32.0|62.0|2.87697|0.05495 +2016-07-01|32.0|63.0|2.80772|0.05553 +2016-07-01|32.0|64.0|2.73994|0.05612 +2016-07-01|32.0|65.0|2.67331|0.05668 +2016-07-01|32.0|66.0|2.60749|0.0572 +2016-07-01|32.0|67.0|2.54211|0.05767 +2016-07-01|32.0|68.0|2.47679|0.05807 +2016-07-01|32.0|69.0|2.41116|0.05838 +2016-07-01|32.0|70.0|2.34483|0.05861 +2016-07-01|32.0|71.0|2.27744|0.05872 +2016-07-01|32.0|72.0|2.20865|0.05873 +2016-07-01|32.0|73.0|2.13813|0.05861 +2016-07-01|32.0|74.0|2.0656|0.05836 +2016-07-01|32.0|75.0|1.99076|0.05798 +2016-07-01|32.0|76.0|1.91338|0.05747 +2016-07-01|32.0|77.0|1.83324|0.0568 +2016-07-01|32.0|78.0|1.75013|0.056 +2016-07-01|32.0|79.0|1.66386|0.05504 +2016-07-01|32.0|80.0|1.57426|0.05394 +2016-07-01|32.0|81.0|1.48116|0.05268 +2016-07-01|32.0|82.0|1.3844|0.05127 +2016-07-01|32.0|83.0|1.28382|0.04971 +2016-07-01|32.0|84.0|1.17924|0.04798 +2016-07-01|32.0|85.0|1.07047|0.0461 +2016-07-01|32.0|86.0|0.95733|0.04405 +2016-07-01|32.0|87.0|0.83961|0.04185 +2016-07-01|32.0|88.0|0.71707|0.03948 +2016-07-01|32.0|89.0|0.58948|0.03695 +2016-07-01|32.0|90.0|0.45659|0.03426 +2016-07-01|32.0|91.0|0.31815|0.0314 +2016-07-01|32.0|92.0|0.17388|0.02838 +2016-07-01|32.0|93.0|0.02354|0.0252 +2016-07-01|32.0|94.0|-0.13312|0.02187 +2016-07-01|32.0|95.0|-0.29633|0.01838 +2016-07-01|32.0|96.0|-0.46627|0.01475 +2016-07-01|32.0|97.0|-0.6431|0.01099 +2016-07-01|32.0|98.0|-0.82693|0.0071 +2016-07-01|32.0|99.0|-1.01779|0.00309 +2016-07-01|32.0|100.0|-1.21566|-0.00102 +2016-07-01|32.0|101.0|-1.42042|-0.00521 +2016-07-01|32.0|102.0|-1.63187|-0.00948 +2016-07-01|32.0|103.0|-1.84971|-0.01379 +2016-07-01|32.0|104.0|-2.07355|-0.01813 +2016-07-01|32.0|105.0|-2.30288|-0.02249 +2016-07-01|32.0|106.0|-2.53708|-0.02683 +2016-07-01|32.0|107.0|-2.77544|-0.03113 +2016-07-01|32.0|108.0|-3.01713|-0.03536 +2016-07-01|32.0|109.0|-3.26122|-0.03952 +2016-07-01|32.0|110.0|-3.50669|-0.04356 +2016-07-01|32.0|111.0|-3.75243|-0.04747 +2016-07-01|32.0|112.0|-3.99728|-0.05122 +2016-07-01|32.0|113.0|-4.23998|-0.05479 +2016-07-01|32.0|114.0|-4.47925|-0.05817 +2016-07-01|32.0|115.0|-4.71378|-0.06133 +2016-07-01|32.0|116.0|-4.94223|-0.06427 +2016-07-01|32.0|117.0|-5.16327|-0.06695 +2016-07-01|32.0|118.0|-5.37559|-0.06939 +2016-07-01|32.0|119.0|-5.57791|-0.07156 +2016-07-01|32.0|120.0|-5.769|-0.07347 +2016-07-01|32.0|121.0|-5.94768|-0.07511 +2016-07-01|32.0|122.0|-6.11286|-0.07648 +2016-07-01|32.0|123.0|-6.26353|-0.07759 +2016-07-01|32.0|124.0|-6.39877|-0.07844 +2016-07-01|32.0|125.0|-6.51777|-0.07903 +2016-07-01|32.0|126.0|-6.61982|-0.07939 +2016-07-01|32.0|127.0|-6.70432|-0.07951 +2016-07-01|32.0|128.0|-6.77079|-0.0794 +2016-07-01|32.0|129.0|-6.81884|-0.0791 +2016-07-01|32.0|130.0|-6.84822|-0.07859 +2016-07-01|32.0|131.0|-6.85875|-0.07791 +2016-07-01|32.0|132.0|-6.85039|-0.07707 +2016-07-01|32.0|133.0|-6.82316|-0.07607 +2016-07-01|32.0|134.0|-6.77719|-0.07495 +2016-07-01|32.0|135.0|-6.71267|-0.0737 +2016-07-01|32.0|136.0|-6.62989|-0.07235 +2016-07-01|32.0|137.0|-6.52918|-0.0709 +2016-07-01|32.0|138.0|-6.41095|-0.06938 +2016-07-01|32.0|139.0|-6.27564|-0.06779 +2016-07-01|32.0|140.0|-6.12373|-0.06616 +2016-07-01|32.0|141.0|-5.95576|-0.06448 +2016-07-01|32.0|142.0|-5.77228|-0.06277 +2016-07-01|32.0|143.0|-5.57386|-0.06105 +2016-07-01|32.0|144.0|-5.36109|-0.05931 +2016-07-01|32.0|145.0|-5.13458|-0.05759 +2016-07-01|32.0|146.0|-4.89495|-0.05587 +2016-07-01|32.0|147.0|-4.64282|-0.05419 +2016-07-01|32.0|148.0|-4.37883|-0.05253 +2016-07-01|32.0|149.0|-4.10359|-0.05092 +2016-07-01|32.0|150.0|-3.81777|-0.04937 +2016-07-01|32.0|151.0|-3.52198|-0.04787 +2016-07-01|32.0|152.0|-3.2169|-0.04645 +2016-07-01|32.0|153.0|-2.90316|-0.04511 +2016-07-01|32.0|154.0|-2.58142|-0.04387 +2016-07-01|32.0|155.0|-2.25236|-0.04272 +2016-07-01|32.0|156.0|-1.91666|-0.04169 +2016-07-01|32.0|157.0|-1.575|-0.04077 +2016-07-01|32.0|158.0|-1.22809|-0.03998 +2016-07-01|32.0|159.0|-0.87664|-0.03932 +2016-07-01|32.0|160.0|-0.52137|-0.0388 +2016-07-01|32.0|161.0|-0.16304|-0.03842 +2016-07-01|32.0|162.0|0.19763|-0.0382 +2016-07-01|32.0|163.0|0.55985|-0.03813 +2016-07-01|32.0|164.0|0.92287|-0.03821 +2016-07-01|32.0|165.0|1.28592|-0.03845 +2016-07-01|32.0|166.0|1.64821|-0.03885 +2016-07-01|32.0|167.0|2.00899|-0.03941 +2016-07-01|32.0|168.0|2.36749|-0.04012 +2016-07-01|32.0|169.0|2.72297|-0.04097 +2016-07-01|32.0|170.0|3.07471|-0.04197 +2016-07-01|32.0|171.0|3.422|-0.04311 +2016-07-01|32.0|172.0|3.76419|-0.04437 +2016-07-01|32.0|173.0|4.10064|-0.04575 +2016-07-01|32.0|174.0|4.43079|-0.04723 +2016-07-01|32.0|175.0|4.75409|-0.04881 +2016-07-01|32.0|176.0|5.07009|-0.05048 +2016-07-01|32.0|177.0|5.37838|-0.05221 +2016-07-01|32.0|178.0|5.67861|-0.05399 +2016-07-01|32.0|179.0|5.97052|-0.05581 +2016-07-01|32.0|-1.0|-0.18939|0.10024 +2016-07-01|32.0|-2.0|-0.43677|0.10176 +2016-07-01|32.0|-3.0|-0.69446|0.10333 +2016-07-01|32.0|-4.0|-0.96252|0.10493 +2016-07-01|32.0|-5.0|-1.24095|0.10654 +2016-07-01|32.0|-6.0|-1.52963|0.10814 +2016-07-01|32.0|-7.0|-1.82834|0.10973 +2016-07-01|32.0|-8.0|-2.13676|0.11129 +2016-07-01|32.0|-9.0|-2.4545|0.11282 +2016-07-01|32.0|-10.0|-2.78108|0.11429 +2016-07-01|32.0|-11.0|-3.11592|0.11571 +2016-07-01|32.0|-12.0|-3.45842|0.11707 +2016-07-01|32.0|-13.0|-3.80788|0.11837 +2016-07-01|32.0|-14.0|-4.16357|0.1196 +2016-07-01|32.0|-15.0|-4.52475|0.12077 +2016-07-01|32.0|-16.0|-4.89063|0.12187 +2016-07-01|32.0|-17.0|-5.26042|0.12292 +2016-07-01|32.0|-18.0|-5.63332|0.12391 +2016-07-01|32.0|-19.0|-6.00855|0.12484 +2016-07-01|32.0|-20.0|-6.38534|0.12573 +2016-07-01|32.0|-21.0|-6.76295|0.12658 +2016-07-01|32.0|-22.0|-7.14066|0.12739 +2016-07-01|32.0|-23.0|-7.51778|0.12817 +2016-07-01|32.0|-24.0|-7.89368|0.12892 +2016-07-01|32.0|-25.0|-8.26774|0.12964 +2016-07-01|32.0|-26.0|-8.6394|0.13033 +2016-07-01|32.0|-27.0|-9.0081|0.13099 +2016-07-01|32.0|-28.0|-9.37335|0.13163 +2016-07-01|32.0|-29.0|-9.73466|0.13223 +2016-07-01|32.0|-30.0|-10.09157|0.13279 +2016-07-01|32.0|-31.0|-10.44363|0.1333 +2016-07-01|32.0|-32.0|-10.79041|0.13376 +2016-07-01|32.0|-33.0|-11.13144|0.13415 +2016-07-01|32.0|-34.0|-11.46628|0.13446 +2016-07-01|32.0|-35.0|-11.79446|0.13467 +2016-07-01|32.0|-36.0|-12.11548|0.13478 +2016-07-01|32.0|-37.0|-12.42881|0.13476 +2016-07-01|32.0|-38.0|-12.73388|0.1346 +2016-07-01|32.0|-39.0|-13.03008|0.13429 +2016-07-01|32.0|-40.0|-13.31674|0.13379 +2016-07-01|32.0|-41.0|-13.59316|0.13311 +2016-07-01|32.0|-42.0|-13.85856|0.13221 +2016-07-01|32.0|-43.0|-14.11213|0.13109 +2016-07-01|32.0|-44.0|-14.35299|0.12972 +2016-07-01|32.0|-45.0|-14.58023|0.1281 +2016-07-01|32.0|-46.0|-14.79287|0.12621 +2016-07-01|32.0|-47.0|-14.98992|0.12404 +2016-07-01|32.0|-48.0|-15.17033|0.12158 +2016-07-01|32.0|-49.0|-15.33304|0.11883 +2016-07-01|32.0|-50.0|-15.47696|0.11577 +2016-07-01|32.0|-51.0|-15.60102|0.1124 +2016-07-01|32.0|-52.0|-15.70411|0.10872 +2016-07-01|32.0|-53.0|-15.78517|0.10473 +2016-07-01|32.0|-54.0|-15.84315|0.10044 +2016-07-01|32.0|-55.0|-15.87704|0.09584 +2016-07-01|32.0|-56.0|-15.88586|0.09094 +2016-07-01|32.0|-57.0|-15.86871|0.08575 +2016-07-01|32.0|-58.0|-15.82473|0.08029 +2016-07-01|32.0|-59.0|-15.75316|0.07455 +2016-07-01|32.0|-60.0|-15.6533|0.06856 +2016-07-01|32.0|-61.0|-15.52457|0.06233 +2016-07-01|32.0|-62.0|-15.36647|0.05588 +2016-07-01|32.0|-63.0|-15.17861|0.04922 +2016-07-01|32.0|-64.0|-14.96073|0.04239 +2016-07-01|32.0|-65.0|-14.71267|0.03539 +2016-07-01|32.0|-66.0|-14.43441|0.02826 +2016-07-01|32.0|-67.0|-14.12605|0.02101 +2016-07-01|32.0|-68.0|-13.78783|0.01369 +2016-07-01|32.0|-69.0|-13.42011|0.0063 +2016-07-01|32.0|-70.0|-13.0234|-0.0011 +2016-07-01|32.0|-71.0|-12.59835|-0.0085 +2016-07-01|32.0|-72.0|-12.14574|-0.01587 +2016-07-01|32.0|-73.0|-11.6665|-0.02316 +2016-07-01|32.0|-74.0|-11.16167|-0.03034 +2016-07-01|32.0|-75.0|-10.63246|-0.03739 +2016-07-01|32.0|-76.0|-10.08019|-0.04426 +2016-07-01|32.0|-77.0|-9.50631|-0.05093 +2016-07-01|32.0|-78.0|-8.91239|-0.05735 +2016-07-01|32.0|-79.0|-8.30012|-0.06351 +2016-07-01|32.0|-80.0|-7.67129|-0.06936 +2016-07-01|32.0|-81.0|-7.02778|-0.07489 +2016-07-01|32.0|-82.0|-6.37156|-0.08006 +2016-07-01|32.0|-83.0|-5.70468|-0.08485 +2016-07-01|32.0|-84.0|-5.02923|-0.08925 +2016-07-01|32.0|-85.0|-4.34736|-0.09325 +2016-07-01|32.0|-86.0|-3.66122|-0.09682 +2016-07-01|32.0|-87.0|-2.973|-0.09997 +2016-07-01|32.0|-88.0|-2.28483|-0.1027 +2016-07-01|32.0|-89.0|-1.59887|-0.105 +2016-07-01|32.0|-90.0|-0.91719|-0.10688 +2016-07-01|32.0|-91.0|-0.24181|-0.10836 +2016-07-01|32.0|-92.0|0.42535|-0.10945 +2016-07-01|32.0|-93.0|1.08243|-0.11018 +2016-07-01|32.0|-94.0|1.72773|-0.11055 +2016-07-01|32.0|-95.0|2.35964|-0.11061 +2016-07-01|32.0|-96.0|2.97672|-0.11037 +2016-07-01|32.0|-97.0|3.57766|-0.10986 +2016-07-01|32.0|-98.0|4.16129|-0.10912 +2016-07-01|32.0|-99.0|4.72662|-0.10817 +2016-07-01|32.0|-100.0|5.2728|-0.10705 +2016-07-01|32.0|-101.0|5.79917|-0.10579 +2016-07-01|32.0|-102.0|6.30518|-0.10441 +2016-07-01|32.0|-103.0|6.79047|-0.10294 +2016-07-01|32.0|-104.0|7.2548|-0.10142 +2016-07-01|32.0|-105.0|7.69806|-0.09985 +2016-07-01|32.0|-106.0|8.12029|-0.09828 +2016-07-01|32.0|-107.0|8.52163|-0.0967 +2016-07-01|32.0|-108.0|8.9023|-0.09515 +2016-07-01|32.0|-109.0|9.26263|-0.09363 +2016-07-01|32.0|-110.0|9.60303|-0.09217 +2016-07-01|32.0|-111.0|9.92395|-0.09076 +2016-07-01|32.0|-112.0|10.2259|-0.08942 +2016-07-01|32.0|-113.0|10.50941|-0.08816 +2016-07-01|32.0|-114.0|10.77506|-0.08697 +2016-07-01|32.0|-115.0|11.02342|-0.08586 +2016-07-01|32.0|-116.0|11.25505|-0.08483 +2016-07-01|32.0|-117.0|11.47052|-0.08388 +2016-07-01|32.0|-118.0|11.67039|-0.083 +2016-07-01|32.0|-119.0|11.85517|-0.08221 +2016-07-01|32.0|-120.0|12.02535|-0.08148 +2016-07-01|32.0|-121.0|12.18139|-0.08082 +2016-07-01|32.0|-122.0|12.32372|-0.08023 +2016-07-01|32.0|-123.0|12.45272|-0.0797 +2016-07-01|32.0|-124.0|12.56873|-0.07923 +2016-07-01|32.0|-125.0|12.67207|-0.0788 +2016-07-01|32.0|-126.0|12.76302|-0.07843 +2016-07-01|32.0|-127.0|12.84183|-0.07811 +2016-07-01|32.0|-128.0|12.90871|-0.07782 +2016-07-01|32.0|-129.0|12.96388|-0.07758 +2016-07-01|32.0|-130.0|13.00753|-0.07738 +2016-07-01|32.0|-131.0|13.03984|-0.07721 +2016-07-01|32.0|-132.0|13.06099|-0.07708 +2016-07-01|32.0|-133.0|13.07117|-0.07699 +2016-07-01|32.0|-134.0|13.07057|-0.07693 +2016-07-01|32.0|-135.0|13.05942|-0.07691 +2016-07-01|32.0|-136.0|13.03793|-0.07692 +2016-07-01|32.0|-137.0|13.00637|-0.07697 +2016-07-01|32.0|-138.0|12.96502|-0.07705 +2016-07-01|32.0|-139.0|12.9142|-0.07717 +2016-07-01|32.0|-140.0|12.85423|-0.07732 +2016-07-01|32.0|-141.0|12.78551|-0.0775 +2016-07-01|32.0|-142.0|12.70842|-0.07771 +2016-07-01|32.0|-143.0|12.62339|-0.07796 +2016-07-01|32.0|-144.0|12.53087|-0.07822 +2016-07-01|32.0|-145.0|12.43132|-0.07852 +2016-07-01|32.0|-146.0|12.32523|-0.07883 +2016-07-01|32.0|-147.0|12.21307|-0.07916 +2016-07-01|32.0|-148.0|12.09533|-0.07949 +2016-07-01|32.0|-149.0|11.97248|-0.07983 +2016-07-01|32.0|-150.0|11.84499|-0.08017 +2016-07-01|32.0|-151.0|11.71327|-0.08049 +2016-07-01|32.0|-152.0|11.57775|-0.0808 +2016-07-01|32.0|-153.0|11.43878|-0.08108 +2016-07-01|32.0|-154.0|11.29669|-0.08133 +2016-07-01|32.0|-155.0|11.15174|-0.08153 +2016-07-01|32.0|-156.0|11.00414|-0.08169 +2016-07-01|32.0|-157.0|10.85404|-0.08178 +2016-07-01|32.0|-158.0|10.70153|-0.0818 +2016-07-01|32.0|-159.0|10.54663|-0.08174 +2016-07-01|32.0|-160.0|10.38928|-0.0816 +2016-07-01|32.0|-161.0|10.22938|-0.08136 +2016-07-01|32.0|-162.0|10.06674|-0.08103 +2016-07-01|32.0|-163.0|9.90113|-0.08059 +2016-07-01|32.0|-164.0|9.73224|-0.08004 +2016-07-01|32.0|-165.0|9.55974|-0.07937 +2016-07-01|32.0|-166.0|9.38324|-0.07859 +2016-07-01|32.0|-167.0|9.20231|-0.0777 +2016-07-01|32.0|-168.0|9.01652|-0.07669 +2016-07-01|32.0|-169.0|8.8254|-0.07556 +2016-07-01|32.0|-170.0|8.62848|-0.07433 +2016-07-01|32.0|-171.0|8.42531|-0.07299 +2016-07-01|32.0|-172.0|8.21544|-0.07155 +2016-07-01|32.0|-173.0|7.99844|-0.07002 +2016-07-01|32.0|-174.0|7.77394|-0.0684 +2016-07-01|32.0|-175.0|7.54158|-0.06672 +2016-07-01|32.0|-176.0|7.30107|-0.06497 +2016-07-01|32.0|-177.0|7.05219|-0.06318 +2016-07-01|32.0|-178.0|6.79476|-0.06136 +2016-07-01|32.0|-179.0|6.52868|-0.05951 +2016-07-01|33.0|0.0|0.08554|0.10032 +2016-07-01|33.0|1.0|0.31549|0.09891 +2016-07-01|33.0|2.0|0.53599|0.09759 +2016-07-01|33.0|3.0|0.74742|0.09636 +2016-07-01|33.0|4.0|0.95026|0.09524 +2016-07-01|33.0|5.0|1.145|0.09425 +2016-07-01|33.0|6.0|1.33221|0.09338 +2016-07-01|33.0|7.0|1.51244|0.09265 +2016-07-01|33.0|8.0|1.6863|0.09205 +2016-07-01|33.0|9.0|1.85435|0.09159 +2016-07-01|33.0|10.0|2.01715|0.09126 +2016-07-01|33.0|11.0|2.17524|0.09107 +2016-07-01|33.0|12.0|2.32909|0.09099 +2016-07-01|33.0|13.0|2.47912|0.09102 +2016-07-01|33.0|14.0|2.62567|0.09114 +2016-07-01|33.0|15.0|2.76903|0.09135 +2016-07-01|33.0|16.0|2.90937|0.09161 +2016-07-01|33.0|17.0|3.04678|0.09191 +2016-07-01|33.0|18.0|3.18127|0.09223 +2016-07-01|33.0|19.0|3.31275|0.09254 +2016-07-01|33.0|20.0|3.44102|0.09283 +2016-07-01|33.0|21.0|3.56583|0.09306 +2016-07-01|33.0|22.0|3.68682|0.09323 +2016-07-01|33.0|23.0|3.80358|0.0933 +2016-07-01|33.0|24.0|3.91562|0.09326 +2016-07-01|33.0|25.0|4.02242|0.09309 +2016-07-01|33.0|26.0|4.12343|0.09278 +2016-07-01|33.0|27.0|4.21807|0.09231 +2016-07-01|33.0|28.0|4.30575|0.09168 +2016-07-01|33.0|29.0|4.38592|0.09087 +2016-07-01|33.0|30.0|4.45804|0.0899 +2016-07-01|33.0|31.0|4.52162|0.08875 +2016-07-01|33.0|32.0|4.57623|0.08744 +2016-07-01|33.0|33.0|4.62149|0.08598 +2016-07-01|33.0|34.0|4.65715|0.08437 +2016-07-01|33.0|35.0|4.683|0.08263 +2016-07-01|33.0|36.0|4.69897|0.08078 +2016-07-01|33.0|37.0|4.70508|0.07884 +2016-07-01|33.0|38.0|4.70145|0.07683 +2016-07-01|33.0|39.0|4.68832|0.07477 +2016-07-01|33.0|40.0|4.66604|0.0727 +2016-07-01|33.0|41.0|4.63504|0.07064 +2016-07-01|33.0|42.0|4.59585|0.0686 +2016-07-01|33.0|43.0|4.54908|0.06663 +2016-07-01|33.0|44.0|4.49541|0.06473 +2016-07-01|33.0|45.0|4.43559|0.06294 +2016-07-01|33.0|46.0|4.37037|0.06126 +2016-07-01|33.0|47.0|4.30055|0.05972 +2016-07-01|33.0|48.0|4.22693|0.05834 +2016-07-01|33.0|49.0|4.15032|0.05712 +2016-07-01|33.0|50.0|4.07145|0.05606 +2016-07-01|33.0|51.0|3.99107|0.05518 +2016-07-01|33.0|52.0|3.90985|0.05447 +2016-07-01|33.0|53.0|3.82837|0.05393 +2016-07-01|33.0|54.0|3.74718|0.05356 +2016-07-01|33.0|55.0|3.66672|0.05334 +2016-07-01|33.0|56.0|3.58735|0.05327 +2016-07-01|33.0|57.0|3.50934|0.05332 +2016-07-01|33.0|58.0|3.43287|0.05349 +2016-07-01|33.0|59.0|3.35803|0.05376 +2016-07-01|33.0|60.0|3.28482|0.05411 +2016-07-01|33.0|61.0|3.21319|0.05452 +2016-07-01|33.0|62.0|3.14298|0.05497 +2016-07-01|33.0|63.0|3.07399|0.05544 +2016-07-01|33.0|64.0|3.00598|0.05591 +2016-07-01|33.0|65.0|2.93864|0.05638 +2016-07-01|33.0|66.0|2.87165|0.05681 +2016-07-01|33.0|67.0|2.80465|0.05719 +2016-07-01|33.0|68.0|2.73727|0.05752 +2016-07-01|33.0|69.0|2.66915|0.05777 +2016-07-01|33.0|70.0|2.59993|0.05793 +2016-07-01|33.0|71.0|2.52923|0.05799 +2016-07-01|33.0|72.0|2.45673|0.05794 +2016-07-01|33.0|73.0|2.38211|0.05778 +2016-07-01|33.0|74.0|2.30505|0.05749 +2016-07-01|33.0|75.0|2.2253|0.05708 +2016-07-01|33.0|76.0|2.14259|0.05653 +2016-07-01|33.0|77.0|2.05669|0.05584 +2016-07-01|33.0|78.0|1.96739|0.05501 +2016-07-01|33.0|79.0|1.87451|0.05403 +2016-07-01|33.0|80.0|1.77784|0.0529 +2016-07-01|33.0|81.0|1.67723|0.05163 +2016-07-01|33.0|82.0|1.5725|0.05019 +2016-07-01|33.0|83.0|1.46347|0.04861 +2016-07-01|33.0|84.0|1.34999|0.04687 +2016-07-01|33.0|85.0|1.23185|0.04497 +2016-07-01|33.0|86.0|1.10889|0.04291 +2016-07-01|33.0|87.0|0.98088|0.04069 +2016-07-01|33.0|88.0|0.84763|0.03831 +2016-07-01|33.0|89.0|0.70892|0.03577 +2016-07-01|33.0|90.0|0.5645|0.03307 +2016-07-01|33.0|91.0|0.41416|0.03021 +2016-07-01|33.0|92.0|0.25766|0.02719 +2016-07-01|33.0|93.0|0.09478|0.02402 +2016-07-01|33.0|94.0|-0.07468|0.02069 +2016-07-01|33.0|95.0|-0.25092|0.01723 +2016-07-01|33.0|96.0|-0.43407|0.01362 +2016-07-01|33.0|97.0|-0.62426|0.00989 +2016-07-01|33.0|98.0|-0.82152|0.00604 +2016-07-01|33.0|99.0|-1.02587|0.00208 +2016-07-01|33.0|100.0|-1.23722|-0.00198 +2016-07-01|33.0|101.0|-1.45542|-0.00611 +2016-07-01|33.0|102.0|-1.68022|-0.0103 +2016-07-01|33.0|103.0|-1.91127|-0.01453 +2016-07-01|33.0|104.0|-2.14815|-0.01879 +2016-07-01|33.0|105.0|-2.39031|-0.02305 +2016-07-01|33.0|106.0|-2.6371|-0.02729 +2016-07-01|33.0|107.0|-2.88777|-0.03148 +2016-07-01|33.0|108.0|-3.14147|-0.03561 +2016-07-01|33.0|109.0|-3.39725|-0.03964 +2016-07-01|33.0|110.0|-3.65407|-0.04356 +2016-07-01|33.0|111.0|-3.91082|-0.04735 +2016-07-01|33.0|112.0|-4.1663|-0.05097 +2016-07-01|33.0|113.0|-4.41927|-0.05442 +2016-07-01|33.0|114.0|-4.66845|-0.05767 +2016-07-01|33.0|115.0|-4.91252|-0.06071 +2016-07-01|33.0|116.0|-5.15015|-0.06352 +2016-07-01|33.0|117.0|-5.38001|-0.06608 +2016-07-01|33.0|118.0|-5.60079|-0.0684 +2016-07-01|33.0|119.0|-5.81124|-0.07046 +2016-07-01|33.0|120.0|-6.01011|-0.07227 +2016-07-01|33.0|121.0|-6.19626|-0.07381 +2016-07-01|33.0|122.0|-6.3686|-0.07508 +2016-07-01|33.0|123.0|-6.52611|-0.0761 +2016-07-01|33.0|124.0|-6.6679|-0.07687 +2016-07-01|33.0|125.0|-6.79316|-0.07739 +2016-07-01|33.0|126.0|-6.90118|-0.07767 +2016-07-01|33.0|127.0|-6.99136|-0.07774 +2016-07-01|33.0|128.0|-7.06324|-0.07758 +2016-07-01|33.0|129.0|-7.11642|-0.07723 +2016-07-01|33.0|130.0|-7.15065|-0.07669 +2016-07-01|33.0|131.0|-7.16576|-0.07598 +2016-07-01|33.0|132.0|-7.16168|-0.07512 +2016-07-01|33.0|133.0|-7.13846|-0.07411 +2016-07-01|33.0|134.0|-7.0962|-0.07298 +2016-07-01|33.0|135.0|-7.03511|-0.07173 +2016-07-01|33.0|136.0|-6.95545|-0.07039 +2016-07-01|33.0|137.0|-6.85758|-0.06896 +2016-07-01|33.0|138.0|-6.74187|-0.06746 +2016-07-01|33.0|139.0|-6.60878|-0.06591 +2016-07-01|33.0|140.0|-6.4588|-0.06431 +2016-07-01|33.0|141.0|-6.29245|-0.06267 +2016-07-01|33.0|142.0|-6.11029|-0.06102 +2016-07-01|33.0|143.0|-5.91289|-0.05936 +2016-07-01|33.0|144.0|-5.70085|-0.0577 +2016-07-01|33.0|145.0|-5.47479|-0.05605 +2016-07-01|33.0|146.0|-5.23533|-0.05442 +2016-07-01|33.0|147.0|-4.98309|-0.05283 +2016-07-01|33.0|148.0|-4.71873|-0.05127 +2016-07-01|33.0|149.0|-4.44287|-0.04978 +2016-07-01|33.0|150.0|-4.15617|-0.04834 +2016-07-01|33.0|151.0|-3.85928|-0.04697 +2016-07-01|33.0|152.0|-3.55285|-0.04569 +2016-07-01|33.0|153.0|-3.23755|-0.04449 +2016-07-01|33.0|154.0|-2.91403|-0.04339 +2016-07-01|33.0|155.0|-2.58297|-0.0424 +2016-07-01|33.0|156.0|-2.24504|-0.04153 +2016-07-01|33.0|157.0|-1.90095|-0.04078 +2016-07-01|33.0|158.0|-1.55137|-0.04017 +2016-07-01|33.0|159.0|-1.19703|-0.03969 +2016-07-01|33.0|160.0|-0.83864|-0.03935 +2016-07-01|33.0|161.0|-0.47692|-0.03917 +2016-07-01|33.0|162.0|-0.11261|-0.03914 +2016-07-01|33.0|163.0|0.25354|-0.03926 +2016-07-01|33.0|164.0|0.62079|-0.03955 +2016-07-01|33.0|165.0|0.98838|-0.03999 +2016-07-01|33.0|166.0|1.35557|-0.04059 +2016-07-01|33.0|167.0|1.72161|-0.04134 +2016-07-01|33.0|168.0|2.08577|-0.04225 +2016-07-01|33.0|169.0|2.44732|-0.04331 +2016-07-01|33.0|170.0|2.80556|-0.0445 +2016-07-01|33.0|171.0|3.15981|-0.04583 +2016-07-01|33.0|172.0|3.50943|-0.04729 +2016-07-01|33.0|173.0|3.85381|-0.04885 +2016-07-01|33.0|174.0|4.19239|-0.05052 +2016-07-01|33.0|175.0|4.52463|-0.05228 +2016-07-01|33.0|176.0|4.85009|-0.05411 +2016-07-01|33.0|177.0|5.16834|-0.05601 +2016-07-01|33.0|178.0|5.47905|-0.05795 +2016-07-01|33.0|179.0|5.78194|-0.05992 +2016-07-01|33.0|-1.0|-0.15419|0.1018 +2016-07-01|33.0|-2.0|-0.40394|0.10333 +2016-07-01|33.0|-3.0|-0.66386|0.1049 +2016-07-01|33.0|-4.0|-0.934|0.1065 +2016-07-01|33.0|-5.0|-1.21433|0.10811 +2016-07-01|33.0|-6.0|-1.50472|0.10972 +2016-07-01|33.0|-7.0|-1.80492|0.1113 +2016-07-01|33.0|-8.0|-2.11463|0.11286 +2016-07-01|33.0|-9.0|-2.43343|0.11438 +2016-07-01|33.0|-10.0|-2.76083|0.11585 +2016-07-01|33.0|-11.0|-3.09628|0.11727 +2016-07-01|33.0|-12.0|-3.43916|0.11863 +2016-07-01|33.0|-13.0|-3.78878|0.11993 +2016-07-01|33.0|-14.0|-4.14444|0.12117 +2016-07-01|33.0|-15.0|-4.5054|0.12235 +2016-07-01|33.0|-16.0|-4.87088|0.12346 +2016-07-01|33.0|-17.0|-5.24012|0.12452 +2016-07-01|33.0|-18.0|-5.61234|0.12552 +2016-07-01|33.0|-19.0|-5.98677|0.12647 +2016-07-01|33.0|-20.0|-6.36268|0.12738 +2016-07-01|33.0|-21.0|-6.73934|0.12825 +2016-07-01|33.0|-22.0|-7.11606|0.12908 +2016-07-01|33.0|-23.0|-7.49219|0.12988 +2016-07-01|33.0|-24.0|-7.86709|0.13065 +2016-07-01|33.0|-25.0|-8.24019|0.13139 +2016-07-01|33.0|-26.0|-8.61094|0.13211 +2016-07-01|33.0|-27.0|-8.97881|0.1328 +2016-07-01|33.0|-28.0|-9.34333|0.13347 +2016-07-01|33.0|-29.0|-9.70403|0.1341 +2016-07-01|33.0|-30.0|-10.06048|0.1347 +2016-07-01|33.0|-31.0|-10.41224|0.13525 +2016-07-01|33.0|-32.0|-10.7589|0.13575 +2016-07-01|33.0|-33.0|-11.10002|0.13619 +2016-07-01|33.0|-34.0|-11.43518|0.13654 +2016-07-01|33.0|-35.0|-11.76392|0.13682 +2016-07-01|33.0|-36.0|-12.08576|0.13698 +2016-07-01|33.0|-37.0|-12.40019|0.13703 +2016-07-01|33.0|-38.0|-12.70665|0.13694 +2016-07-01|33.0|-39.0|-13.00456|0.1367 +2016-07-01|33.0|-40.0|-13.29326|0.13629 +2016-07-01|33.0|-41.0|-13.57205|0.13569 +2016-07-01|33.0|-42.0|-13.8402|0.1349 +2016-07-01|33.0|-43.0|-14.09687|0.13388 +2016-07-01|33.0|-44.0|-14.34123|0.13262 +2016-07-01|33.0|-45.0|-14.57234|0.13112 +2016-07-01|33.0|-46.0|-14.78926|0.12936 +2016-07-01|33.0|-47.0|-14.99098|0.12732 +2016-07-01|33.0|-48.0|-15.17646|0.125 +2016-07-01|33.0|-49.0|-15.34463|0.12239 +2016-07-01|33.0|-50.0|-15.4944|0.11947 +2016-07-01|33.0|-51.0|-15.62468|0.11626 +2016-07-01|33.0|-52.0|-15.73435|0.11273 +2016-07-01|33.0|-53.0|-15.82233|0.1089 +2016-07-01|33.0|-54.0|-15.88753|0.10476 +2016-07-01|33.0|-55.0|-15.92892|0.10032 +2016-07-01|33.0|-56.0|-15.94548|0.09558 +2016-07-01|33.0|-57.0|-15.93627|0.09055 +2016-07-01|33.0|-58.0|-15.90038|0.08523 +2016-07-01|33.0|-59.0|-15.837|0.07964 +2016-07-01|33.0|-60.0|-15.74538|0.07379 +2016-07-01|33.0|-61.0|-15.62486|0.06769 +2016-07-01|33.0|-62.0|-15.4749|0.06136 +2016-07-01|33.0|-63.0|-15.29503|0.05482 +2016-07-01|33.0|-64.0|-15.08493|0.04808 +2016-07-01|33.0|-65.0|-14.84436|0.04117 +2016-07-01|33.0|-66.0|-14.57323|0.03411 +2016-07-01|33.0|-67.0|-14.27158|0.02693 +2016-07-01|33.0|-68.0|-13.93956|0.01965 +2016-07-01|33.0|-69.0|-13.57749|0.0123 +2016-07-01|33.0|-70.0|-13.1858|0.0049 +2016-07-01|33.0|-71.0|-12.76508|-0.0025 +2016-07-01|33.0|-72.0|-12.31606|-0.00989 +2016-07-01|33.0|-73.0|-11.83961|-0.01722 +2016-07-01|33.0|-74.0|-11.33675|-0.02446 +2016-07-01|33.0|-75.0|-10.80864|-0.03159 +2016-07-01|33.0|-76.0|-10.25658|-0.03856 +2016-07-01|33.0|-77.0|-9.68199|-0.04533 +2016-07-01|33.0|-78.0|-9.08644|-0.05189 +2016-07-01|33.0|-79.0|-8.47162|-0.05819 +2016-07-01|33.0|-80.0|-7.83931|-0.06421 +2016-07-01|33.0|-81.0|-7.19144|-0.06991 +2016-07-01|33.0|-82.0|-6.52998|-0.07527 +2016-07-01|33.0|-83.0|-5.85701|-0.08027 +2016-07-01|33.0|-84.0|-5.17468|-0.08488 +2016-07-01|33.0|-85.0|-4.48516|-0.0891 +2016-07-01|33.0|-86.0|-3.79067|-0.0929 +2016-07-01|33.0|-87.0|-3.09344|-0.09629 +2016-07-01|33.0|-88.0|-2.39568|-0.09926 +2016-07-01|33.0|-89.0|-1.69959|-0.1018 +2016-07-01|33.0|-90.0|-1.00731|-0.10394 +2016-07-01|33.0|-91.0|-0.32093|-0.10567 +2016-07-01|33.0|-92.0|0.35756|-0.10701 +2016-07-01|33.0|-93.0|1.02626|-0.10798 +2016-07-01|33.0|-94.0|1.68339|-0.1086 +2016-07-01|33.0|-95.0|2.3273|-0.10889 +2016-07-01|33.0|-96.0|2.95648|-0.10889 +2016-07-01|33.0|-97.0|3.56955|-0.10861 +2016-07-01|33.0|-98.0|4.16533|-0.10809 +2016-07-01|33.0|-99.0|4.74275|-0.10737 +2016-07-01|33.0|-100.0|5.30095|-0.10646 +2016-07-01|33.0|-101.0|5.83919|-0.1054 +2016-07-01|33.0|-102.0|6.35691|-0.10421 +2016-07-01|33.0|-103.0|6.8537|-0.10293 +2016-07-01|33.0|-104.0|7.3293|-0.10158 +2016-07-01|33.0|-105.0|7.78357|-0.10019 +2016-07-01|33.0|-106.0|8.21652|-0.09877 +2016-07-01|33.0|-107.0|8.62826|-0.09735 +2016-07-01|33.0|-108.0|9.019|-0.09595 +2016-07-01|33.0|-109.0|9.38904|-0.09457 +2016-07-01|33.0|-110.0|9.73878|-0.09324 +2016-07-01|33.0|-111.0|10.06864|-0.09195 +2016-07-01|33.0|-112.0|10.37912|-0.09073 +2016-07-01|33.0|-113.0|10.67075|-0.08958 +2016-07-01|33.0|-114.0|10.94408|-0.0885 +2016-07-01|33.0|-115.0|11.19967|-0.08749 +2016-07-01|33.0|-116.0|11.43809|-0.08656 +2016-07-01|33.0|-117.0|11.6599|-0.0857 +2016-07-01|33.0|-118.0|11.86564|-0.08492 +2016-07-01|33.0|-119.0|12.05583|-0.08421 +2016-07-01|33.0|-120.0|12.23097|-0.08357 +2016-07-01|33.0|-121.0|12.39151|-0.083 +2016-07-01|33.0|-122.0|12.53788|-0.08249 +2016-07-01|33.0|-123.0|12.67048|-0.08204 +2016-07-01|33.0|-124.0|12.78966|-0.08165 +2016-07-01|33.0|-125.0|12.89574|-0.08131 +2016-07-01|33.0|-126.0|12.98902|-0.08102 +2016-07-01|33.0|-127.0|13.06975|-0.08077 +2016-07-01|33.0|-128.0|13.13818|-0.08057 +2016-07-01|33.0|-129.0|13.19451|-0.08042 +2016-07-01|33.0|-130.0|13.23897|-0.0803 +2016-07-01|33.0|-131.0|13.27174|-0.08022 +2016-07-01|33.0|-132.0|13.29303|-0.08019 +2016-07-01|33.0|-133.0|13.30302|-0.08018 +2016-07-01|33.0|-134.0|13.30192|-0.08022 +2016-07-01|33.0|-135.0|13.28996|-0.08029 +2016-07-01|33.0|-136.0|13.26737|-0.0804 +2016-07-01|33.0|-137.0|13.23441|-0.08054 +2016-07-01|33.0|-138.0|13.19137|-0.08071 +2016-07-01|33.0|-139.0|13.13856|-0.08093 +2016-07-01|33.0|-140.0|13.0763|-0.08117 +2016-07-01|33.0|-141.0|13.00497|-0.08145 +2016-07-01|33.0|-142.0|12.92495|-0.08176 +2016-07-01|33.0|-143.0|12.83666|-0.0821 +2016-07-01|33.0|-144.0|12.74052|-0.08246 +2016-07-01|33.0|-145.0|12.63699|-0.08284 +2016-07-01|33.0|-146.0|12.52652|-0.08325 +2016-07-01|33.0|-147.0|12.40958|-0.08366 +2016-07-01|33.0|-148.0|12.28663|-0.08409 +2016-07-01|33.0|-149.0|12.15812|-0.08451 +2016-07-01|33.0|-150.0|12.02449|-0.08493 +2016-07-01|33.0|-151.0|11.88616|-0.08533 +2016-07-01|33.0|-152.0|11.74351|-0.08572 +2016-07-01|33.0|-153.0|11.5969|-0.08607 +2016-07-01|33.0|-154.0|11.44663|-0.08638 +2016-07-01|33.0|-155.0|11.29297|-0.08665 +2016-07-01|33.0|-156.0|11.13613|-0.08686 +2016-07-01|33.0|-157.0|10.97625|-0.087 +2016-07-01|33.0|-158.0|10.81343|-0.08707 +2016-07-01|33.0|-159.0|10.6477|-0.08705 +2016-07-01|33.0|-160.0|10.47903|-0.08694 +2016-07-01|33.0|-161.0|10.30732|-0.08673 +2016-07-01|33.0|-162.0|10.13243|-0.08641 +2016-07-01|33.0|-163.0|9.95416|-0.08598 +2016-07-01|33.0|-164.0|9.77223|-0.08544 +2016-07-01|33.0|-165.0|9.58637|-0.08477 +2016-07-01|33.0|-166.0|9.39621|-0.08398 +2016-07-01|33.0|-167.0|9.2014|-0.08306 +2016-07-01|33.0|-168.0|9.00155|-0.08202 +2016-07-01|33.0|-169.0|8.79625|-0.08085 +2016-07-01|33.0|-170.0|8.58508|-0.07957 +2016-07-01|33.0|-171.0|8.36766|-0.07817 +2016-07-01|33.0|-172.0|8.14359|-0.07667 +2016-07-01|33.0|-173.0|7.9125|-0.07506 +2016-07-01|33.0|-174.0|7.67408|-0.07336 +2016-07-01|33.0|-175.0|7.42802|-0.07158 +2016-07-01|33.0|-176.0|7.17409|-0.06974 +2016-07-01|33.0|-177.0|6.91209|-0.06783 +2016-07-01|33.0|-178.0|6.64191|-0.06588 +2016-07-01|33.0|-179.0|6.36348|-0.06391 +2016-07-01|34.0|0.0|0.11626|0.10196 +2016-07-01|34.0|1.0|0.34905|0.10054 +2016-07-01|34.0|2.0|0.57245|0.0992 +2016-07-01|34.0|3.0|0.78681|0.09795 +2016-07-01|34.0|4.0|0.99257|0.09681 +2016-07-01|34.0|5.0|1.19021|0.09578 +2016-07-01|34.0|6.0|1.38025|0.09488 +2016-07-01|34.0|7.0|1.56324|0.09411 +2016-07-01|34.0|8.0|1.73975|0.09346 +2016-07-01|34.0|9.0|1.91032|0.09295 +2016-07-01|34.0|10.0|2.07552|0.09257 +2016-07-01|34.0|11.0|2.23584|0.09232 +2016-07-01|34.0|12.0|2.39177|0.09219 +2016-07-01|34.0|13.0|2.54373|0.09216 +2016-07-01|34.0|14.0|2.69206|0.09222 +2016-07-01|34.0|15.0|2.83706|0.09237 +2016-07-01|34.0|16.0|2.97892|0.09257 +2016-07-01|34.0|17.0|3.11776|0.09282 +2016-07-01|34.0|18.0|3.2536|0.09309 +2016-07-01|34.0|19.0|3.38639|0.09336 +2016-07-01|34.0|20.0|3.51598|0.0936 +2016-07-01|34.0|21.0|3.64214|0.09381 +2016-07-01|34.0|22.0|3.76456|0.09395 +2016-07-01|34.0|23.0|3.88286|0.09401 +2016-07-01|34.0|24.0|3.99662|0.09396 +2016-07-01|34.0|25.0|4.10535|0.0938 +2016-07-01|34.0|26.0|4.20853|0.0935 +2016-07-01|34.0|27.0|4.30564|0.09305 +2016-07-01|34.0|28.0|4.39612|0.09245 +2016-07-01|34.0|29.0|4.47946|0.09169 +2016-07-01|34.0|30.0|4.55514|0.09076 +2016-07-01|34.0|31.0|4.62269|0.08967 +2016-07-01|34.0|32.0|4.6817|0.08842 +2016-07-01|34.0|33.0|4.73181|0.08702 +2016-07-01|34.0|34.0|4.77275|0.08548 +2016-07-01|34.0|35.0|4.80432|0.08381 +2016-07-01|34.0|36.0|4.82643|0.08203 +2016-07-01|34.0|37.0|4.83906|0.08015 +2016-07-01|34.0|38.0|4.84234|0.07821 +2016-07-01|34.0|39.0|4.83643|0.07621 +2016-07-01|34.0|40.0|4.82166|0.07419 +2016-07-01|34.0|41.0|4.79839|0.07217 +2016-07-01|34.0|42.0|4.76712|0.07017 +2016-07-01|34.0|43.0|4.72838|0.06821 +2016-07-01|34.0|44.0|4.6828|0.06633 +2016-07-01|34.0|45.0|4.63104|0.06453 +2016-07-01|34.0|46.0|4.57381|0.06284 +2016-07-01|34.0|47.0|4.51184|0.06127 +2016-07-01|34.0|48.0|4.44586|0.05985 +2016-07-01|34.0|49.0|4.37661|0.05857 +2016-07-01|34.0|50.0|4.30479|0.05745 +2016-07-01|34.0|51.0|4.23108|0.05649 +2016-07-01|34.0|52.0|4.15609|0.05569 +2016-07-01|34.0|53.0|4.08039|0.05506 +2016-07-01|34.0|54.0|4.00448|0.05458 +2016-07-01|34.0|55.0|3.92877|0.05425 +2016-07-01|34.0|56.0|3.8536|0.05406 +2016-07-01|34.0|57.0|3.77923|0.05399 +2016-07-01|34.0|58.0|3.70582|0.05404 +2016-07-01|34.0|59.0|3.63348|0.05419 +2016-07-01|34.0|60.0|3.5622|0.05441 +2016-07-01|34.0|61.0|3.49192|0.0547 +2016-07-01|34.0|62.0|3.42251|0.05504 +2016-07-01|34.0|63.0|3.35379|0.0554 +2016-07-01|34.0|64.0|3.28551|0.05577 +2016-07-01|34.0|65.0|3.2174|0.05613 +2016-07-01|34.0|66.0|3.14913|0.05646 +2016-07-01|34.0|67.0|3.08037|0.05676 +2016-07-01|34.0|68.0|3.01077|0.057 +2016-07-01|34.0|69.0|2.93998|0.05717 +2016-07-01|34.0|70.0|2.86763|0.05727 +2016-07-01|34.0|71.0|2.79339|0.05727 +2016-07-01|34.0|72.0|2.71691|0.05716 +2016-07-01|34.0|73.0|2.63788|0.05695 +2016-07-01|34.0|74.0|2.55599|0.05662 +2016-07-01|34.0|75.0|2.47098|0.05616 +2016-07-01|34.0|76.0|2.38258|0.05557 +2016-07-01|34.0|77.0|2.29057|0.05485 +2016-07-01|34.0|78.0|2.19471|0.05398 +2016-07-01|34.0|79.0|2.09481|0.05297 +2016-07-01|34.0|80.0|1.99069|0.05182 +2016-07-01|34.0|81.0|1.88215|0.05052 +2016-07-01|34.0|82.0|1.76903|0.04906 +2016-07-01|34.0|83.0|1.65115|0.04745 +2016-07-01|34.0|84.0|1.52835|0.04569 +2016-07-01|34.0|85.0|1.40043|0.04377 +2016-07-01|34.0|86.0|1.26722|0.04169 +2016-07-01|34.0|87.0|1.12853|0.03945 +2016-07-01|34.0|88.0|0.98416|0.03705 +2016-07-01|34.0|89.0|0.8339|0.0345 +2016-07-01|34.0|90.0|0.67756|0.03179 +2016-07-01|34.0|91.0|0.51493|0.02893 +2016-07-01|34.0|92.0|0.34581|0.02591 +2016-07-01|34.0|93.0|0.17|0.02274 +2016-07-01|34.0|94.0|-0.01265|0.01943 +2016-07-01|34.0|95.0|-0.20229|0.01598 +2016-07-01|34.0|96.0|-0.39903|0.0124 +2016-07-01|34.0|97.0|-0.60293|0.00869 +2016-07-01|34.0|98.0|-0.814|0.00488 +2016-07-01|34.0|99.0|-1.03219|9.7E-4 +2016-07-01|34.0|100.0|-1.25737|-0.00303 +2016-07-01|34.0|101.0|-1.48935|-0.0071 +2016-07-01|34.0|102.0|-1.72782|-0.01122 +2016-07-01|34.0|103.0|-1.97241|-0.01537 +2016-07-01|34.0|104.0|-2.22263|-0.01954 +2016-07-01|34.0|105.0|-2.47792|-0.0237 +2016-07-01|34.0|106.0|-2.73758|-0.02784 +2016-07-01|34.0|107.0|-3.00083|-0.03192 +2016-07-01|34.0|108.0|-3.2668|-0.03593 +2016-07-01|34.0|109.0|-3.5345|-0.03985 +2016-07-01|34.0|110.0|-3.8029|-0.04364 +2016-07-01|34.0|111.0|-4.07085|-0.0473 +2016-07-01|34.0|112.0|-4.33715|-0.0508 +2016-07-01|34.0|113.0|-4.60056|-0.05411 +2016-07-01|34.0|114.0|-4.85978|-0.05723 +2016-07-01|34.0|115.0|-5.11349|-0.06014 +2016-07-01|34.0|116.0|-5.36038|-0.06282 +2016-07-01|34.0|117.0|-5.59911|-0.06526 +2016-07-01|34.0|118.0|-5.8284|-0.06746 +2016-07-01|34.0|119.0|-6.04697|-0.0694 +2016-07-01|34.0|120.0|-6.25362|-0.07109 +2016-07-01|34.0|121.0|-6.44719|-0.07252 +2016-07-01|34.0|122.0|-6.6266|-0.0737 +2016-07-01|34.0|123.0|-6.79087|-0.07462 +2016-07-01|34.0|124.0|-6.93909|-0.0753 +2016-07-01|34.0|125.0|-7.07046|-0.07574 +2016-07-01|34.0|126.0|-7.18429|-0.07595 +2016-07-01|34.0|127.0|-7.27999|-0.07595 +2016-07-01|34.0|128.0|-7.35708|-0.07574 +2016-07-01|34.0|129.0|-7.41519|-0.07534 +2016-07-01|34.0|130.0|-7.45405|-0.07475 +2016-07-01|34.0|131.0|-7.47351|-0.07401 +2016-07-01|34.0|132.0|-7.47349|-0.07312 +2016-07-01|34.0|133.0|-7.45403|-0.07209 +2016-07-01|34.0|134.0|-7.41525|-0.07095 +2016-07-01|34.0|135.0|-7.35734|-0.0697 +2016-07-01|34.0|136.0|-7.28058|-0.06836 +2016-07-01|34.0|137.0|-7.18531|-0.06694 +2016-07-01|34.0|138.0|-7.07191|-0.06546 +2016-07-01|34.0|139.0|-6.94083|-0.06394 +2016-07-01|34.0|140.0|-6.79257|-0.06237 +2016-07-01|34.0|141.0|-6.62765|-0.06079 +2016-07-01|34.0|142.0|-6.44663|-0.05919 +2016-07-01|34.0|143.0|-6.25009|-0.05759 +2016-07-01|34.0|144.0|-6.03863|-0.05599 +2016-07-01|34.0|145.0|-5.81288|-0.05442 +2016-07-01|34.0|146.0|-5.57346|-0.05288 +2016-07-01|34.0|147.0|-5.32102|-0.05138 +2016-07-01|34.0|148.0|-5.05619|-0.04994 +2016-07-01|34.0|149.0|-4.77963|-0.04855 +2016-07-01|34.0|150.0|-4.492|-0.04723 +2016-07-01|34.0|151.0|-4.19396|-0.046 +2016-07-01|34.0|152.0|-3.88615|-0.04485 +2016-07-01|34.0|153.0|-3.56926|-0.0438 +2016-07-01|34.0|154.0|-3.24395|-0.04286 +2016-07-01|34.0|155.0|-2.91089|-0.04203 +2016-07-01|34.0|156.0|-2.57077|-0.04133 +2016-07-01|34.0|157.0|-2.22426|-0.04075 +2016-07-01|34.0|158.0|-1.87207|-0.04032 +2016-07-01|34.0|159.0|-1.51489|-0.04002 +2016-07-01|34.0|160.0|-1.15344|-0.03988 +2016-07-01|34.0|161.0|-0.78841|-0.03989 +2016-07-01|34.0|162.0|-0.42055|-0.04005 +2016-07-01|34.0|163.0|-0.05057|-0.04038 +2016-07-01|34.0|164.0|0.3208|-0.04086 +2016-07-01|34.0|165.0|0.69283|-0.04151 +2016-07-01|34.0|166.0|1.06479|-0.04231 +2016-07-01|34.0|167.0|1.43595|-0.04327 +2016-07-01|34.0|168.0|1.80561|-0.04438 +2016-07-01|34.0|169.0|2.17307|-0.04563 +2016-07-01|34.0|170.0|2.53764|-0.04703 +2016-07-01|34.0|171.0|2.89868|-0.04855 +2016-07-01|34.0|172.0|3.25555|-0.0502 +2016-07-01|34.0|173.0|3.60766|-0.05195 +2016-07-01|34.0|174.0|3.95446|-0.0538 +2016-07-01|34.0|175.0|4.29544|-0.05574 +2016-07-01|34.0|176.0|4.63014|-0.05775 +2016-07-01|34.0|177.0|4.95816|-0.05981 +2016-07-01|34.0|178.0|5.27915|-0.06191 +2016-07-01|34.0|179.0|5.59281|-0.06404 +2016-07-01|34.0|-1.0|-0.12622|0.10345 +2016-07-01|34.0|-2.0|-0.37861|0.10499 +2016-07-01|34.0|-3.0|-0.64103|0.10657 +2016-07-01|34.0|-4.0|-0.91351|0.10817 +2016-07-01|34.0|-5.0|-1.196|0.10977 +2016-07-01|34.0|-6.0|-1.48834|0.11138 +2016-07-01|34.0|-7.0|-1.7903|0.11296 +2016-07-01|34.0|-8.0|-2.10153|0.11452 +2016-07-01|34.0|-9.0|-2.42163|0.11604 +2016-07-01|34.0|-10.0|-2.75012|0.11751 +2016-07-01|34.0|-11.0|-3.08642|0.11893 +2016-07-01|34.0|-12.0|-3.42994|0.1203 +2016-07-01|34.0|-13.0|-3.77999|0.12161 +2016-07-01|34.0|-14.0|-4.1359|0.12285 +2016-07-01|34.0|-15.0|-4.49691|0.12404 +2016-07-01|34.0|-16.0|-4.86229|0.12516 +2016-07-01|34.0|-17.0|-5.23128|0.12624 +2016-07-01|34.0|-18.0|-5.60313|0.12726 +2016-07-01|34.0|-19.0|-5.9771|0.12823 +2016-07-01|34.0|-20.0|-6.35246|0.12915 +2016-07-01|34.0|-21.0|-6.72853|0.13004 +2016-07-01|34.0|-22.0|-7.10461|0.1309 +2016-07-01|34.0|-23.0|-7.48009|0.13172 +2016-07-01|34.0|-24.0|-7.85437|0.13252 +2016-07-01|34.0|-25.0|-8.22687|0.13329 +2016-07-01|34.0|-26.0|-8.59707|0.13404 +2016-07-01|34.0|-27.0|-8.96448|0.13476 +2016-07-01|34.0|-28.0|-9.32863|0.13546 +2016-07-01|34.0|-29.0|-9.68908|0.13613 +2016-07-01|34.0|-30.0|-10.04541|0.13676 +2016-07-01|34.0|-31.0|-10.3972|0.13735 +2016-07-01|34.0|-32.0|-10.74406|0.13789 +2016-07-01|34.0|-33.0|-11.08556|0.13837 +2016-07-01|34.0|-34.0|-11.42131|0.13877 +2016-07-01|34.0|-35.0|-11.75084|0.13909 +2016-07-01|34.0|-36.0|-12.07372|0.13931 +2016-07-01|34.0|-37.0|-12.38942|0.13942 +2016-07-01|34.0|-38.0|-12.69743|0.1394 +2016-07-01|34.0|-39.0|-12.99716|0.13923 +2016-07-01|34.0|-40.0|-13.28797|0.1389 +2016-07-01|34.0|-41.0|-13.56918|0.13838 +2016-07-01|34.0|-42.0|-13.84005|0.13768 +2016-07-01|34.0|-43.0|-14.09979|0.13676 +2016-07-01|34.0|-44.0|-14.34754|0.13561 +2016-07-01|34.0|-45.0|-14.5824|0.13422 +2016-07-01|34.0|-46.0|-14.80341|0.13257 +2016-07-01|34.0|-47.0|-15.00958|0.13066 +2016-07-01|34.0|-48.0|-15.19987|0.12847 +2016-07-01|34.0|-49.0|-15.3732|0.12599 +2016-07-01|34.0|-50.0|-15.52848|0.12322 +2016-07-01|34.0|-51.0|-15.66461|0.12015 +2016-07-01|34.0|-52.0|-15.78046|0.11678 +2016-07-01|34.0|-53.0|-15.87491|0.1131 +2016-07-01|34.0|-54.0|-15.94688|0.10912 +2016-07-01|34.0|-55.0|-15.99529|0.10483 +2016-07-01|34.0|-56.0|-16.0191|0.10025 +2016-07-01|34.0|-57.0|-16.01731|0.09537 +2016-07-01|34.0|-58.0|-15.989|0.0902 +2016-07-01|34.0|-59.0|-15.93328|0.08476 +2016-07-01|34.0|-60.0|-15.84936|0.07905 +2016-07-01|34.0|-61.0|-15.73653|0.07309 +2016-07-01|34.0|-62.0|-15.59418|0.06689 +2016-07-01|34.0|-63.0|-15.42179|0.06046 +2016-07-01|34.0|-64.0|-15.21895|0.05384 +2016-07-01|34.0|-65.0|-14.98538|0.04702 +2016-07-01|34.0|-66.0|-14.72091|0.04005 +2016-07-01|34.0|-67.0|-14.4255|0.03294 +2016-07-01|34.0|-68.0|-14.09925|0.02571 +2016-07-01|34.0|-69.0|-13.74239|0.0184 +2016-07-01|34.0|-70.0|-13.35531|0.01103 +2016-07-01|34.0|-71.0|-12.93854|0.00363 +2016-07-01|34.0|-72.0|-12.49273|-0.00377 +2016-07-01|34.0|-73.0|-12.01873|-0.01114 +2016-07-01|34.0|-74.0|-11.5175|-0.01843 +2016-07-01|34.0|-75.0|-10.99017|-0.02562 +2016-07-01|34.0|-76.0|-10.43799|-0.03268 +2016-07-01|34.0|-77.0|-9.8624|-0.03957 +2016-07-01|34.0|-78.0|-9.26493|-0.04625 +2016-07-01|34.0|-79.0|-8.64726|-0.05269 +2016-07-01|34.0|-80.0|-8.01121|-0.05886 +2016-07-01|34.0|-81.0|-7.35869|-0.06474 +2016-07-01|34.0|-82.0|-6.69172|-0.07029 +2016-07-01|34.0|-83.0|-6.0124|-0.07549 +2016-07-01|34.0|-84.0|-5.32291|-0.08032 +2016-07-01|34.0|-85.0|-4.62548|-0.08477 +2016-07-01|34.0|-86.0|-3.92238|-0.08881 +2016-07-01|34.0|-87.0|-3.21588|-0.09244 +2016-07-01|34.0|-88.0|-2.50826|-0.09565 +2016-07-01|34.0|-89.0|-1.80179|-0.09846 +2016-07-01|34.0|-90.0|-1.09867|-0.10085 +2016-07-01|34.0|-91.0|-0.40104|-0.10283 +2016-07-01|34.0|-92.0|0.28903|-0.10444 +2016-07-01|34.0|-93.0|0.96958|-0.10566 +2016-07-01|34.0|-94.0|1.63877|-0.10654 +2016-07-01|34.0|-95.0|2.29488|-0.10709 +2016-07-01|34.0|-96.0|2.93635|-0.10733 +2016-07-01|34.0|-97.0|3.56176|-0.1073 +2016-07-01|34.0|-98.0|4.16985|-0.10702 +2016-07-01|34.0|-99.0|4.75953|-0.10652 +2016-07-01|34.0|-100.0|5.32988|-0.10584 +2016-07-01|34.0|-101.0|5.88012|-0.10499 +2016-07-01|34.0|-102.0|6.40966|-0.10401 +2016-07-01|34.0|-103.0|6.91806|-0.10293 +2016-07-01|34.0|-104.0|7.40501|-0.10178 +2016-07-01|34.0|-105.0|7.87037|-0.10056 +2016-07-01|34.0|-106.0|8.3141|-0.09932 +2016-07-01|34.0|-107.0|8.73629|-0.09806 +2016-07-01|34.0|-108.0|9.13713|-0.09681 +2016-07-01|34.0|-109.0|9.51692|-0.09558 +2016-07-01|34.0|-110.0|9.87601|-0.09439 +2016-07-01|34.0|-111.0|10.21482|-0.09324 +2016-07-01|34.0|-112.0|10.53384|-0.09215 +2016-07-01|34.0|-113.0|10.83359|-0.09111 +2016-07-01|34.0|-114.0|11.11459|-0.09014 +2016-07-01|34.0|-115.0|11.37742|-0.08924 +2016-07-01|34.0|-116.0|11.62262|-0.08842 +2016-07-01|34.0|-117.0|11.85075|-0.08766 +2016-07-01|34.0|-118.0|12.06236|-0.08697 +2016-07-01|34.0|-119.0|12.25795|-0.08636 +2016-07-01|34.0|-120.0|12.43803|-0.08581 +2016-07-01|34.0|-121.0|12.60306|-0.08533 +2016-07-01|34.0|-122.0|12.75347|-0.08491 +2016-07-01|34.0|-123.0|12.88967|-0.08454 +2016-07-01|34.0|-124.0|13.01201|-0.08424 +2016-07-01|34.0|-125.0|13.12083|-0.08398 +2016-07-01|34.0|-126.0|13.21643|-0.08378 +2016-07-01|34.0|-127.0|13.29909|-0.08362 +2016-07-01|34.0|-128.0|13.36905|-0.08351 +2016-07-01|34.0|-129.0|13.42656|-0.08344 +2016-07-01|34.0|-130.0|13.47182|-0.08342 +2016-07-01|34.0|-131.0|13.50505|-0.08343 +2016-07-01|34.0|-132.0|13.52646|-0.08348 +2016-07-01|34.0|-133.0|13.53625|-0.08357 +2016-07-01|34.0|-134.0|13.53463|-0.0837 +2016-07-01|34.0|-135.0|13.52185|-0.08387 +2016-07-01|34.0|-136.0|13.49813|-0.08407 +2016-07-01|34.0|-137.0|13.46373|-0.0843 +2016-07-01|34.0|-138.0|13.41896|-0.08458 +2016-07-01|34.0|-139.0|13.36409|-0.08488 +2016-07-01|34.0|-140.0|13.29948|-0.08523 +2016-07-01|34.0|-141.0|13.22547|-0.0856 +2016-07-01|34.0|-142.0|13.14245|-0.086 +2016-07-01|34.0|-143.0|13.0508|-0.08643 +2016-07-01|34.0|-144.0|12.95094|-0.08689 +2016-07-01|34.0|-145.0|12.84332|-0.08736 +2016-07-01|34.0|-146.0|12.72835|-0.08785 +2016-07-01|34.0|-147.0|12.6065|-0.08835 +2016-07-01|34.0|-148.0|12.47819|-0.08886 +2016-07-01|34.0|-149.0|12.34387|-0.08936 +2016-07-01|34.0|-150.0|12.20395|-0.08986 +2016-07-01|34.0|-151.0|12.05884|-0.09033 +2016-07-01|34.0|-152.0|11.90891|-0.09079 +2016-07-01|34.0|-153.0|11.75449|-0.0912 +2016-07-01|34.0|-154.0|11.59588|-0.09158 +2016-07-01|34.0|-155.0|11.43335|-0.0919 +2016-07-01|34.0|-156.0|11.26709|-0.09216 +2016-07-01|34.0|-157.0|11.09727|-0.09234 +2016-07-01|34.0|-158.0|10.92399|-0.09245 +2016-07-01|34.0|-159.0|10.74728|-0.09246 +2016-07-01|34.0|-160.0|10.56715|-0.09238 +2016-07-01|34.0|-161.0|10.38352|-0.09218 +2016-07-01|34.0|-162.0|10.19627|-0.09188 +2016-07-01|34.0|-163.0|10.00523|-0.09145 +2016-07-01|34.0|-164.0|9.8102|-0.0909 +2016-07-01|34.0|-165.0|9.6109|-0.09022 +2016-07-01|34.0|-166.0|9.40705|-0.08941 +2016-07-01|34.0|-167.0|9.19834|-0.08846 +2016-07-01|34.0|-168.0|8.98442|-0.08739 +2016-07-01|34.0|-169.0|8.76495|-0.08618 +2016-07-01|34.0|-170.0|8.53958|-0.08484 +2016-07-01|34.0|-171.0|8.30796|-0.08338 +2016-07-01|34.0|-172.0|8.06977|-0.0818 +2016-07-01|34.0|-173.0|7.82469|-0.08011 +2016-07-01|34.0|-174.0|7.57246|-0.07833 +2016-07-01|34.0|-175.0|7.31284|-0.07645 +2016-07-01|34.0|-176.0|7.04562|-0.0745 +2016-07-01|34.0|-177.0|6.77068|-0.07248 +2016-07-01|34.0|-178.0|6.48793|-0.07041 +2016-07-01|34.0|-179.0|6.19733|-0.0683 +2016-07-01|35.0|0.0|0.13987|0.1037 +2016-07-01|35.0|1.0|0.3758|0.10226 +2016-07-01|35.0|2.0|0.60242|0.10091 +2016-07-01|35.0|3.0|0.82004|0.09964 +2016-07-01|35.0|4.0|1.02907|0.09848 +2016-07-01|35.0|5.0|1.22997|0.09742 +2016-07-01|35.0|6.0|1.42322|0.09648 +2016-07-01|35.0|7.0|1.60936|0.09567 +2016-07-01|35.0|8.0|1.78892|0.09499 +2016-07-01|35.0|9.0|1.96244|0.09443 +2016-07-01|35.0|10.0|2.13045|0.094 +2016-07-01|35.0|11.0|2.29345|0.09369 +2016-07-01|35.0|12.0|2.45192|0.0935 +2016-07-01|35.0|13.0|2.60626|0.09341 +2016-07-01|35.0|14.0|2.75684|0.09342 +2016-07-01|35.0|15.0|2.90396|0.0935 +2016-07-01|35.0|16.0|3.04781|0.09365 +2016-07-01|35.0|17.0|3.18856|0.09385 +2016-07-01|35.0|18.0|3.32623|0.09406 +2016-07-01|35.0|19.0|3.46082|0.09429 +2016-07-01|35.0|20.0|3.5922|0.0945 +2016-07-01|35.0|21.0|3.72017|0.09467 +2016-07-01|35.0|22.0|3.84449|0.09478 +2016-07-01|35.0|23.0|3.9648|0.09482 +2016-07-01|35.0|24.0|4.08073|0.09477 +2016-07-01|35.0|25.0|4.19183|0.0946 +2016-07-01|35.0|26.0|4.29763|0.09431 +2016-07-01|35.0|27.0|4.39763|0.09389 +2016-07-01|35.0|28.0|4.49134|0.09331 +2016-07-01|35.0|29.0|4.57825|0.09258 +2016-07-01|35.0|30.0|4.65789|0.0917 +2016-07-01|35.0|31.0|4.7298|0.09066 +2016-07-01|35.0|32.0|4.79359|0.08947 +2016-07-01|35.0|33.0|4.84892|0.08812 +2016-07-01|35.0|34.0|4.89551|0.08664 +2016-07-01|35.0|35.0|4.93315|0.08504 +2016-07-01|35.0|36.0|4.96174|0.08332 +2016-07-01|35.0|37.0|4.98126|0.08151 +2016-07-01|35.0|38.0|4.99177|0.07962 +2016-07-01|35.0|39.0|4.99342|0.07768 +2016-07-01|35.0|40.0|4.98648|0.07571 +2016-07-01|35.0|41.0|4.97128|0.07373 +2016-07-01|35.0|42.0|4.94824|0.07176 +2016-07-01|35.0|43.0|4.91785|0.06983 +2016-07-01|35.0|44.0|4.88067|0.06795 +2016-07-01|35.0|45.0|4.83729|0.06616 +2016-07-01|35.0|46.0|4.78835|0.06445 +2016-07-01|35.0|47.0|4.73452|0.06286 +2016-07-01|35.0|48.0|4.67647|0.0614 +2016-07-01|35.0|49.0|4.61488|0.06007 +2016-07-01|35.0|50.0|4.55038|0.05888 +2016-07-01|35.0|51.0|4.48359|0.05785 +2016-07-01|35.0|52.0|4.4151|0.05697 +2016-07-01|35.0|53.0|4.34541|0.05624 +2016-07-01|35.0|54.0|4.275|0.05566 +2016-07-01|35.0|55.0|4.20424|0.05522 +2016-07-01|35.0|56.0|4.13346|0.05491 +2016-07-01|35.0|57.0|4.06289|0.05473 +2016-07-01|35.0|58.0|3.9927|0.05466 +2016-07-01|35.0|59.0|3.92296|0.05468 +2016-07-01|35.0|60.0|3.85369|0.05479 +2016-07-01|35.0|61.0|3.78483|0.05495 +2016-07-01|35.0|62.0|3.71625|0.05517 +2016-07-01|35.0|63.0|3.64779|0.05542 +2016-07-01|35.0|64.0|3.57921|0.05568 +2016-07-01|35.0|65.0|3.51025|0.05593 +2016-07-01|35.0|66.0|3.44061|0.05617 +2016-07-01|35.0|67.0|3.36997|0.05637 +2016-07-01|35.0|68.0|3.298|0.05653 +2016-07-01|35.0|69.0|3.22434|0.05662 +2016-07-01|35.0|70.0|3.14866|0.05663 +2016-07-01|35.0|71.0|3.07061|0.05656 +2016-07-01|35.0|72.0|2.98988|0.0564 +2016-07-01|35.0|73.0|2.90614|0.05612 +2016-07-01|35.0|74.0|2.8191|0.05574 +2016-07-01|35.0|75.0|2.72849|0.05523 +2016-07-01|35.0|76.0|2.63405|0.0546 +2016-07-01|35.0|77.0|2.53553|0.05383 +2016-07-01|35.0|78.0|2.43272|0.05292 +2016-07-01|35.0|79.0|2.3254|0.05188 +2016-07-01|35.0|80.0|2.21339|0.05069 +2016-07-01|35.0|81.0|2.09651|0.04935 +2016-07-01|35.0|82.0|1.97457|0.04787 +2016-07-01|35.0|83.0|1.8474|0.04623 +2016-07-01|35.0|84.0|1.71483|0.04443 +2016-07-01|35.0|85.0|1.57668|0.04249 +2016-07-01|35.0|86.0|1.43279|0.04038 +2016-07-01|35.0|87.0|1.28297|0.03813 +2016-07-01|35.0|88.0|1.12703|0.03571 +2016-07-01|35.0|89.0|0.96481|0.03314 +2016-07-01|35.0|90.0|0.7961|0.03042 +2016-07-01|35.0|91.0|0.62075|0.02755 +2016-07-01|35.0|92.0|0.43857|0.02453 +2016-07-01|35.0|93.0|0.24943|0.02136 +2016-07-01|35.0|94.0|0.05317|0.01806 +2016-07-01|35.0|95.0|-0.15028|0.01462 +2016-07-01|35.0|96.0|-0.36101|0.01106 +2016-07-01|35.0|97.0|-0.57902|0.00739 +2016-07-01|35.0|98.0|-0.80428|0.00362 +2016-07-01|35.0|99.0|-1.03668|-2.5E-4 +2016-07-01|35.0|100.0|-1.27607|-0.00419 +2016-07-01|35.0|101.0|-1.52218|-0.0082 +2016-07-01|35.0|102.0|-1.77467|-0.01224 +2016-07-01|35.0|103.0|-2.03313|-0.01632 +2016-07-01|35.0|104.0|-2.29703|-0.0204 +2016-07-01|35.0|105.0|-2.56576|-0.02446 +2016-07-01|35.0|106.0|-2.83858|-0.02849 +2016-07-01|35.0|107.0|-3.1147|-0.03246 +2016-07-01|35.0|108.0|-3.39319|-0.03636 +2016-07-01|35.0|109.0|-3.67307|-0.04015 +2016-07-01|35.0|110.0|-3.95327|-0.04382 +2016-07-01|35.0|111.0|-4.23262|-0.04734 +2016-07-01|35.0|112.0|-4.50992|-0.0507 +2016-07-01|35.0|113.0|-4.78391|-0.05389 +2016-07-01|35.0|114.0|-5.0533|-0.05687 +2016-07-01|35.0|115.0|-5.31676|-0.05964 +2016-07-01|35.0|116.0|-5.57298|-0.06219 +2016-07-01|35.0|117.0|-5.82064|-0.0645 +2016-07-01|35.0|118.0|-6.05844|-0.06657 +2016-07-01|35.0|119.0|-6.28514|-0.06839 +2016-07-01|35.0|120.0|-6.49952|-0.06995 +2016-07-01|35.0|121.0|-6.70045|-0.07127 +2016-07-01|35.0|122.0|-6.88685|-0.07234 +2016-07-01|35.0|123.0|-7.05776|-0.07316 +2016-07-01|35.0|124.0|-7.21227|-0.07374 +2016-07-01|35.0|125.0|-7.34961|-0.0741 +2016-07-01|35.0|126.0|-7.46907|-0.07423 +2016-07-01|35.0|127.0|-7.57009|-0.07415 +2016-07-01|35.0|128.0|-7.65218|-0.07387 +2016-07-01|35.0|129.0|-7.71499|-0.07341 +2016-07-01|35.0|130.0|-7.75825|-0.07278 +2016-07-01|35.0|131.0|-7.7818|-0.072 +2016-07-01|35.0|132.0|-7.78559|-0.07107 +2016-07-01|35.0|133.0|-7.76965|-0.07002 +2016-07-01|35.0|134.0|-7.73409|-0.06886 +2016-07-01|35.0|135.0|-7.67911|-0.0676 +2016-07-01|35.0|136.0|-7.60499|-0.06626 +2016-07-01|35.0|137.0|-7.51207|-0.06485 +2016-07-01|35.0|138.0|-7.40074|-0.06339 +2016-07-01|35.0|139.0|-7.27145|-0.06189 +2016-07-01|35.0|140.0|-7.12468|-0.06036 +2016-07-01|35.0|141.0|-6.96099|-0.05882 +2016-07-01|35.0|142.0|-6.78091|-0.05727 +2016-07-01|35.0|143.0|-6.58505|-0.05573 +2016-07-01|35.0|144.0|-6.374|-0.05421 +2016-07-01|35.0|145.0|-6.14841|-0.05272 +2016-07-01|35.0|146.0|-5.90889|-0.05127 +2016-07-01|35.0|147.0|-5.65611|-0.04986 +2016-07-01|35.0|148.0|-5.39072|-0.04852 +2016-07-01|35.0|149.0|-5.11337|-0.04725 +2016-07-01|35.0|150.0|-4.82472|-0.04606 +2016-07-01|35.0|151.0|-4.52545|-0.04496 +2016-07-01|35.0|152.0|-4.21622|-0.04395 +2016-07-01|35.0|153.0|-3.89771|-0.04305 +2016-07-01|35.0|154.0|-3.57058|-0.04227 +2016-07-01|35.0|155.0|-3.23551|-0.0416 +2016-07-01|35.0|156.0|-2.89318|-0.04107 +2016-07-01|35.0|157.0|-2.54427|-0.04068 +2016-07-01|35.0|158.0|-2.18948|-0.04042 +2016-07-01|35.0|159.0|-1.8295|-0.04032 +2016-07-01|35.0|160.0|-1.46502|-0.04037 +2016-07-01|35.0|161.0|-1.09675|-0.04057 +2016-07-01|35.0|162.0|-0.72539|-0.04094 +2016-07-01|35.0|163.0|-0.35166|-0.04147 +2016-07-01|35.0|164.0|0.02375|-0.04216 +2016-07-01|35.0|165.0|0.40011|-0.04301 +2016-07-01|35.0|166.0|0.77672|-0.04401 +2016-07-01|35.0|167.0|1.15288|-0.04518 +2016-07-01|35.0|168.0|1.52791|-0.04649 +2016-07-01|35.0|169.0|1.90113|-0.04795 +2016-07-01|35.0|170.0|2.27188|-0.04954 +2016-07-01|35.0|171.0|2.63953|-0.05126 +2016-07-01|35.0|172.0|3.00347|-0.0531 +2016-07-01|35.0|173.0|3.36312|-0.05504 +2016-07-01|35.0|174.0|3.71795|-0.05708 +2016-07-01|35.0|175.0|4.06747|-0.05919 +2016-07-01|35.0|176.0|4.41121|-0.06137 +2016-07-01|35.0|177.0|4.74877|-0.0636 +2016-07-01|35.0|178.0|5.07981|-0.06586 +2016-07-01|35.0|179.0|5.40402|-0.06814 +2016-07-01|35.0|-1.0|-0.10566|0.10519 +2016-07-01|35.0|-2.0|-0.36097|0.10674 +2016-07-01|35.0|-3.0|-0.62616|0.10832 +2016-07-01|35.0|-4.0|-0.90125|0.10992 +2016-07-01|35.0|-5.0|-1.18615|0.11153 +2016-07-01|35.0|-6.0|-1.48071|0.11313 +2016-07-01|35.0|-7.0|-1.78467|0.11471 +2016-07-01|35.0|-8.0|-2.09768|0.11627 +2016-07-01|35.0|-9.0|-2.41935|0.11779 +2016-07-01|35.0|-10.0|-2.74916|0.11927 +2016-07-01|35.0|-11.0|-3.08659|0.1207 +2016-07-01|35.0|-12.0|-3.43101|0.12207 +2016-07-01|35.0|-13.0|-3.78178|0.12338 +2016-07-01|35.0|-14.0|-4.1382|0.12464 +2016-07-01|35.0|-15.0|-4.49957|0.12584 +2016-07-01|35.0|-16.0|-4.86515|0.12698 +2016-07-01|35.0|-17.0|-5.23421|0.12807 +2016-07-01|35.0|-18.0|-5.60602|0.12911 +2016-07-01|35.0|-19.0|-5.97985|0.13011 +2016-07-01|35.0|-20.0|-6.35501|0.13106 +2016-07-01|35.0|-21.0|-6.73082|0.13198 +2016-07-01|35.0|-22.0|-7.10663|0.13286 +2016-07-01|35.0|-23.0|-7.48183|0.13371 +2016-07-01|35.0|-24.0|-7.85584|0.13454 +2016-07-01|35.0|-25.0|-8.22812|0.13534 +2016-07-01|35.0|-26.0|-8.59815|0.13612 +2016-07-01|35.0|-27.0|-8.96547|0.13687 +2016-07-01|35.0|-28.0|-9.32961|0.1376 +2016-07-01|35.0|-29.0|-9.69016|0.1383 +2016-07-01|35.0|-30.0|-10.04671|0.13897 +2016-07-01|35.0|-31.0|-10.39887|0.13959 +2016-07-01|35.0|-32.0|-10.74624|0.14017 +2016-07-01|35.0|-33.0|-11.08842|0.14069 +2016-07-01|35.0|-34.0|-11.42502|0.14114 +2016-07-01|35.0|-35.0|-11.75561|0.14151 +2016-07-01|35.0|-36.0|-12.07973|0.14178 +2016-07-01|35.0|-37.0|-12.39691|0.14195 +2016-07-01|35.0|-38.0|-12.70661|0.14198 +2016-07-01|35.0|-39.0|-13.00828|0.14188 +2016-07-01|35.0|-40.0|-13.30128|0.14162 +2016-07-01|35.0|-41.0|-13.58495|0.14119 +2016-07-01|35.0|-42.0|-13.85855|0.14056 +2016-07-01|35.0|-43.0|-14.12131|0.13973 +2016-07-01|35.0|-44.0|-14.37237|0.13868 +2016-07-01|35.0|-45.0|-14.61085|0.1374 +2016-07-01|35.0|-46.0|-14.83579|0.13586 +2016-07-01|35.0|-47.0|-15.0462|0.13407 +2016-07-01|35.0|-48.0|-15.24104|0.132 +2016-07-01|35.0|-49.0|-15.41925|0.12966 +2016-07-01|35.0|-50.0|-15.57971|0.12703 +2016-07-01|35.0|-51.0|-15.72133|0.1241 +2016-07-01|35.0|-52.0|-15.84296|0.12087 +2016-07-01|35.0|-53.0|-15.94348|0.11734 +2016-07-01|35.0|-54.0|-16.02177|0.11351 +2016-07-01|35.0|-55.0|-16.07673|0.10938 +2016-07-01|35.0|-56.0|-16.1073|0.10495 +2016-07-01|35.0|-57.0|-16.11244|0.10023 +2016-07-01|35.0|-58.0|-16.09119|0.09522 +2016-07-01|35.0|-59.0|-16.04261|0.08992 +2016-07-01|35.0|-60.0|-15.96588|0.08436 +2016-07-01|35.0|-61.0|-15.86022|0.07854 +2016-07-01|35.0|-62.0|-15.72497|0.07247 +2016-07-01|35.0|-63.0|-15.55954|0.06618 +2016-07-01|35.0|-64.0|-15.36348|0.05966 +2016-07-01|35.0|-65.0|-15.13641|0.05296 +2016-07-01|35.0|-66.0|-14.87812|0.04608 +2016-07-01|35.0|-67.0|-14.5885|0.03904 +2016-07-01|35.0|-68.0|-14.26757|0.03188 +2016-07-01|35.0|-69.0|-13.91552|0.02461 +2016-07-01|35.0|-70.0|-13.53265|0.01727 +2016-07-01|35.0|-71.0|-13.11943|0.00989 +2016-07-01|35.0|-72.0|-12.67649|0.00249 +2016-07-01|35.0|-73.0|-12.20458|-0.0049 +2016-07-01|35.0|-74.0|-11.70465|-0.01224 +2016-07-01|35.0|-75.0|-11.17777|-0.01949 +2016-07-01|35.0|-76.0|-10.62518|-0.02663 +2016-07-01|35.0|-77.0|-10.04829|-0.03361 +2016-07-01|35.0|-78.0|-9.44861|-0.04042 +2016-07-01|35.0|-79.0|-8.82783|-0.047 +2016-07-01|35.0|-80.0|-8.18776|-0.05333 +2016-07-01|35.0|-81.0|-7.53033|-0.05938 +2016-07-01|35.0|-82.0|-6.85758|-0.06512 +2016-07-01|35.0|-83.0|-6.17164|-0.07053 +2016-07-01|35.0|-84.0|-5.47473|-0.07558 +2016-07-01|35.0|-85.0|-4.76912|-0.08025 +2016-07-01|35.0|-86.0|-4.05713|-0.08453 +2016-07-01|35.0|-87.0|-3.3411|-0.08841 +2016-07-01|35.0|-88.0|-2.62336|-0.09189 +2016-07-01|35.0|-89.0|-1.90624|-0.09495 +2016-07-01|35.0|-90.0|-1.192|-0.09761 +2016-07-01|35.0|-91.0|-0.48287|-0.09987 +2016-07-01|35.0|-92.0|0.21904|-0.10174 +2016-07-01|35.0|-93.0|0.91169|-0.10324 +2016-07-01|35.0|-94.0|1.59318|-0.10438 +2016-07-01|35.0|-95.0|2.26173|-0.1052 +2016-07-01|35.0|-96.0|2.91572|-0.1057 +2016-07-01|35.0|-97.0|3.55367|-0.10593 +2016-07-01|35.0|-98.0|4.17428|-0.1059 +2016-07-01|35.0|-99.0|4.7764|-0.10564 +2016-07-01|35.0|-100.0|5.35907|-0.10519 +2016-07-01|35.0|-101.0|5.92148|-0.10458 +2016-07-01|35.0|-102.0|6.46299|-0.10382 +2016-07-01|35.0|-103.0|6.98312|-0.10295 +2016-07-01|35.0|-104.0|7.48155|-0.10199 +2016-07-01|35.0|-105.0|7.95809|-0.10097 +2016-07-01|35.0|-106.0|8.41268|-0.09991 +2016-07-01|35.0|-107.0|8.8454|-0.09883 +2016-07-01|35.0|-108.0|9.25642|-0.09775 +2016-07-01|35.0|-109.0|9.646|-0.09668 +2016-07-01|35.0|-110.0|10.01448|-0.09563 +2016-07-01|35.0|-111.0|10.36229|-0.09463 +2016-07-01|35.0|-112.0|10.68988|-0.09367 +2016-07-01|35.0|-113.0|10.99776|-0.09276 +2016-07-01|35.0|-114.0|11.28645|-0.09192 +2016-07-01|35.0|-115.0|11.55652|-0.09113 +2016-07-01|35.0|-116.0|11.80851|-0.09042 +2016-07-01|35.0|-117.0|12.04296|-0.08977 +2016-07-01|35.0|-118.0|12.26043|-0.08918 +2016-07-01|35.0|-119.0|12.46142|-0.08867 +2016-07-01|35.0|-120.0|12.64644|-0.08822 +2016-07-01|35.0|-121.0|12.81596|-0.08783 +2016-07-01|35.0|-122.0|12.9704|-0.0875 +2016-07-01|35.0|-123.0|13.11019|-0.08723 +2016-07-01|35.0|-124.0|13.23568|-0.08701 +2016-07-01|35.0|-125.0|13.34724|-0.08685 +2016-07-01|35.0|-126.0|13.44515|-0.08673 +2016-07-01|35.0|-127.0|13.52973|-0.08667 +2016-07-01|35.0|-128.0|13.60122|-0.08665 +2016-07-01|35.0|-129.0|13.65988|-0.08667 +2016-07-01|35.0|-130.0|13.70593|-0.08673 +2016-07-01|35.0|-131.0|13.7396|-0.08684 +2016-07-01|35.0|-132.0|13.7611|-0.08698 +2016-07-01|35.0|-133.0|13.77066|-0.08717 +2016-07-01|35.0|-134.0|13.7685|-0.08739 +2016-07-01|35.0|-135.0|13.75484|-0.08765 +2016-07-01|35.0|-136.0|13.72994|-0.08795 +2016-07-01|35.0|-137.0|13.69406|-0.08828 +2016-07-01|35.0|-138.0|13.64747|-0.08865 +2016-07-01|35.0|-139.0|13.5905|-0.08905 +2016-07-01|35.0|-140.0|13.52345|-0.08949 +2016-07-01|35.0|-141.0|13.44667|-0.08995 +2016-07-01|35.0|-142.0|13.36053|-0.09045 +2016-07-01|35.0|-143.0|13.26542|-0.09097 +2016-07-01|35.0|-144.0|13.16173|-0.09151 +2016-07-01|35.0|-145.0|13.04988|-0.09207 +2016-07-01|35.0|-146.0|12.93029|-0.09265 +2016-07-01|35.0|-147.0|12.80338|-0.09323 +2016-07-01|35.0|-148.0|12.66958|-0.09381 +2016-07-01|35.0|-149.0|12.5293|-0.09439 +2016-07-01|35.0|-150.0|12.38295|-0.09496 +2016-07-01|35.0|-151.0|12.2309|-0.0955 +2016-07-01|35.0|-152.0|12.07353|-0.09601 +2016-07-01|35.0|-153.0|11.91115|-0.09649 +2016-07-01|35.0|-154.0|11.74406|-0.09691 +2016-07-01|35.0|-155.0|11.57251|-0.09728 +2016-07-01|35.0|-156.0|11.39671|-0.09758 +2016-07-01|35.0|-157.0|11.21682|-0.0978 +2016-07-01|35.0|-158.0|11.03296|-0.09793 +2016-07-01|35.0|-159.0|10.84518|-0.09797 +2016-07-01|35.0|-160.0|10.65349|-0.0979 +2016-07-01|35.0|-161.0|10.45786|-0.09772 +2016-07-01|35.0|-162.0|10.2582|-0.09741 +2016-07-01|35.0|-163.0|10.05436|-0.09698 +2016-07-01|35.0|-164.0|9.84619|-0.09642 +2016-07-01|35.0|-165.0|9.63346|-0.09572 +2016-07-01|35.0|-166.0|9.41594|-0.09488 +2016-07-01|35.0|-167.0|9.19336|-0.0939 +2016-07-01|35.0|-168.0|8.96543|-0.09278 +2016-07-01|35.0|-169.0|8.73188|-0.09152 +2016-07-01|35.0|-170.0|8.4924|-0.09012 +2016-07-01|35.0|-171.0|8.2467|-0.0886 +2016-07-01|35.0|-172.0|7.99452|-0.08694 +2016-07-01|35.0|-173.0|7.73561|-0.08517 +2016-07-01|35.0|-174.0|7.46974|-0.0833 +2016-07-01|35.0|-175.0|7.19673|-0.08132 +2016-07-01|35.0|-176.0|6.91643|-0.07926 +2016-07-01|35.0|-177.0|6.62875|-0.07712 +2016-07-01|35.0|-178.0|6.33363|-0.07493 +2016-07-01|35.0|-179.0|6.03108|-0.07269 +2016-07-01|36.0|0.0|0.15619|0.10552 +2016-07-01|36.0|1.0|0.39558|0.10408 +2016-07-01|36.0|2.0|0.62574|0.10271 +2016-07-01|36.0|3.0|0.84696|0.10143 +2016-07-01|36.0|4.0|1.05962|0.10024 +2016-07-01|36.0|5.0|1.26415|0.09916 +2016-07-01|36.0|6.0|1.46101|0.09819 +2016-07-01|36.0|7.0|1.6507|0.09734 +2016-07-01|36.0|8.0|1.83373|0.09662 +2016-07-01|36.0|9.0|2.01062|0.09601 +2016-07-01|36.0|10.0|2.1819|0.09554 +2016-07-01|36.0|11.0|2.34804|0.09518 +2016-07-01|36.0|12.0|2.50951|0.09493 +2016-07-01|36.0|13.0|2.66672|0.09479 +2016-07-01|36.0|14.0|2.82004|0.09474 +2016-07-01|36.0|15.0|2.96977|0.09476 +2016-07-01|36.0|16.0|3.11613|0.09486 +2016-07-01|36.0|17.0|3.25928|0.095 +2016-07-01|36.0|18.0|3.3993|0.09516 +2016-07-01|36.0|19.0|3.53619|0.09534 +2016-07-01|36.0|20.0|3.66986|0.09551 +2016-07-01|36.0|21.0|3.80017|0.09564 +2016-07-01|36.0|22.0|3.92688|0.09573 +2016-07-01|36.0|23.0|4.04969|0.09575 +2016-07-01|36.0|24.0|4.16827|0.09568 +2016-07-01|36.0|25.0|4.28222|0.09551 +2016-07-01|36.0|26.0|4.3911|0.09522 +2016-07-01|36.0|27.0|4.49447|0.09481 +2016-07-01|36.0|28.0|4.59184|0.09425 +2016-07-01|36.0|29.0|4.68277|0.09356 +2016-07-01|36.0|30.0|4.76679|0.09271 +2016-07-01|36.0|31.0|4.84348|0.09171 +2016-07-01|36.0|32.0|4.91246|0.09057 +2016-07-01|36.0|33.0|4.97339|0.08928 +2016-07-01|36.0|34.0|5.02601|0.08786 +2016-07-01|36.0|35.0|5.0701|0.08631 +2016-07-01|36.0|36.0|5.10554|0.08466 +2016-07-01|36.0|37.0|5.13229|0.0829 +2016-07-01|36.0|38.0|5.15038|0.08108 +2016-07-01|36.0|39.0|5.15993|0.07919 +2016-07-01|36.0|40.0|5.16116|0.07727 +2016-07-01|36.0|41.0|5.15435|0.07533 +2016-07-01|36.0|42.0|5.13987|0.07339 +2016-07-01|36.0|43.0|5.11814|0.07148 +2016-07-01|36.0|44.0|5.08966|0.06962 +2016-07-01|36.0|45.0|5.05496|0.06782 +2016-07-01|36.0|46.0|5.01462|0.06611 +2016-07-01|36.0|47.0|4.96923|0.06449 +2016-07-01|36.0|48.0|4.9194|0.06299 +2016-07-01|36.0|49.0|4.86574|0.06161 +2016-07-01|36.0|50.0|4.80883|0.06037 +2016-07-01|36.0|51.0|4.74924|0.05927 +2016-07-01|36.0|52.0|4.68749|0.0583 +2016-07-01|36.0|53.0|4.62405|0.05748 +2016-07-01|36.0|54.0|4.55936|0.0568 +2016-07-01|36.0|55.0|4.49377|0.05626 +2016-07-01|36.0|56.0|4.42756|0.05584 +2016-07-01|36.0|57.0|4.36096|0.05554 +2016-07-01|36.0|58.0|4.29411|0.05535 +2016-07-01|36.0|59.0|4.2271|0.05525 +2016-07-01|36.0|60.0|4.15993|0.05523 +2016-07-01|36.0|61.0|4.09255|0.05528 +2016-07-01|36.0|62.0|4.02485|0.05537 +2016-07-01|36.0|63.0|3.95665|0.0555 +2016-07-01|36.0|64.0|3.88775|0.05565 +2016-07-01|36.0|65.0|3.81789|0.0558 +2016-07-01|36.0|66.0|3.74679|0.05593 +2016-07-01|36.0|67.0|3.67414|0.05603 +2016-07-01|36.0|68.0|3.59963|0.05609 +2016-07-01|36.0|69.0|3.52292|0.0561 +2016-07-01|36.0|70.0|3.44369|0.05603 +2016-07-01|36.0|71.0|3.3616|0.05588 +2016-07-01|36.0|72.0|3.27633|0.05565 +2016-07-01|36.0|73.0|3.18759|0.05531 +2016-07-01|36.0|74.0|3.09507|0.05486 +2016-07-01|36.0|75.0|2.99851|0.05429 +2016-07-01|36.0|76.0|2.89765|0.0536 +2016-07-01|36.0|77.0|2.79224|0.05279 +2016-07-01|36.0|78.0|2.68206|0.05184 +2016-07-01|36.0|79.0|2.5669|0.05075 +2016-07-01|36.0|80.0|2.44658|0.04951 +2016-07-01|36.0|81.0|2.3209|0.04814 +2016-07-01|36.0|82.0|2.18968|0.04661 +2016-07-01|36.0|83.0|2.05276|0.04494 +2016-07-01|36.0|84.0|1.90996|0.04311 +2016-07-01|36.0|85.0|1.76112|0.04113 +2016-07-01|36.0|86.0|1.60607|0.039 +2016-07-01|36.0|87.0|1.44464|0.03671 +2016-07-01|36.0|88.0|1.27668|0.03428 +2016-07-01|36.0|89.0|1.10201|0.03169 +2016-07-01|36.0|90.0|0.92048|0.02895 +2016-07-01|36.0|91.0|0.73194|0.02606 +2016-07-01|36.0|92.0|0.53626|0.02304 +2016-07-01|36.0|93.0|0.33331|0.01987 +2016-07-01|36.0|94.0|0.12302|0.01658 +2016-07-01|36.0|95.0|-0.09469|0.01316 +2016-07-01|36.0|96.0|-0.31983|0.00962 +2016-07-01|36.0|97.0|-0.55238|0.00598 +2016-07-01|36.0|98.0|-0.79224|0.00224 +2016-07-01|36.0|99.0|-1.03927|-0.00158 +2016-07-01|36.0|100.0|-1.29324|-0.00547 +2016-07-01|36.0|101.0|-1.55387|-0.00941 +2016-07-01|36.0|102.0|-1.82077|-0.01338 +2016-07-01|36.0|103.0|-2.09345|-0.01738 +2016-07-01|36.0|104.0|-2.37137|-0.02136 +2016-07-01|36.0|105.0|-2.65386|-0.02533 +2016-07-01|36.0|106.0|-2.94016|-0.02925 +2016-07-01|36.0|107.0|-3.22943|-0.03311 +2016-07-01|36.0|108.0|-3.52072|-0.03688 +2016-07-01|36.0|109.0|-3.81303|-0.04055 +2016-07-01|36.0|110.0|-4.10524|-0.04409 +2016-07-01|36.0|111.0|-4.39619|-0.04748 +2016-07-01|36.0|112.0|-4.68467|-0.0507 +2016-07-01|36.0|113.0|-4.9694|-0.05374 +2016-07-01|36.0|114.0|-5.24907|-0.05659 +2016-07-01|36.0|115.0|-5.52238|-0.05922 +2016-07-01|36.0|116.0|-5.788|-0.06162 +2016-07-01|36.0|117.0|-6.04461|-0.06379 +2016-07-01|36.0|118.0|-6.29094|-0.06573 +2016-07-01|36.0|119.0|-6.52574|-0.06741 +2016-07-01|36.0|120.0|-6.74781|-0.06886 +2016-07-01|36.0|121.0|-6.95601|-0.07005 +2016-07-01|36.0|122.0|-7.14931|-0.071 +2016-07-01|36.0|123.0|-7.32673|-0.07171 +2016-07-01|36.0|124.0|-7.48738|-0.0722 +2016-07-01|36.0|125.0|-7.6305|-0.07245 +2016-07-01|36.0|126.0|-7.75541|-0.07249 +2016-07-01|36.0|127.0|-7.86153|-0.07234 +2016-07-01|36.0|128.0|-7.9484|-0.07199 +2016-07-01|36.0|129.0|-8.01566|-0.07146 +2016-07-01|36.0|130.0|-8.06307|-0.07078 +2016-07-01|36.0|131.0|-8.09046|-0.06995 +2016-07-01|36.0|132.0|-8.09779|-0.06898 +2016-07-01|36.0|133.0|-8.08509|-0.0679 +2016-07-01|36.0|134.0|-8.05248|-0.06671 +2016-07-01|36.0|135.0|-8.00017|-0.06544 +2016-07-01|36.0|136.0|-7.92842|-0.0641 +2016-07-01|36.0|137.0|-7.83759|-0.0627 +2016-07-01|36.0|138.0|-7.72807|-0.06125 +2016-07-01|36.0|139.0|-7.60031|-0.05977 +2016-07-01|36.0|140.0|-7.45481|-0.05828 +2016-07-01|36.0|141.0|-7.29211|-0.05677 +2016-07-01|36.0|142.0|-7.11277|-0.05527 +2016-07-01|36.0|143.0|-6.91738|-0.0538 +2016-07-01|36.0|144.0|-6.70657|-0.05234 +2016-07-01|36.0|145.0|-6.48096|-0.05093 +2016-07-01|36.0|146.0|-6.24119|-0.04957 +2016-07-01|36.0|147.0|-5.98793|-0.04827 +2016-07-01|36.0|148.0|-5.72184|-0.04704 +2016-07-01|36.0|149.0|-5.44358|-0.04588 +2016-07-01|36.0|150.0|-5.15383|-0.04482 +2016-07-01|36.0|151.0|-4.85325|-0.04385 +2016-07-01|36.0|152.0|-4.54252|-0.04299 +2016-07-01|36.0|153.0|-4.22232|-0.04224 +2016-07-01|36.0|154.0|-3.89332|-0.04162 +2016-07-01|36.0|155.0|-3.5562|-0.04113 +2016-07-01|36.0|156.0|-3.21164|-0.04077 +2016-07-01|36.0|157.0|-2.86033|-0.04055 +2016-07-01|36.0|158.0|-2.50294|-0.04049 +2016-07-01|36.0|159.0|-2.14016|-0.04058 +2016-07-01|36.0|160.0|-1.77268|-0.04082 +2016-07-01|36.0|161.0|-1.40119|-0.04123 +2016-07-01|36.0|162.0|-1.02638|-0.0418 +2016-07-01|36.0|163.0|-0.64895|-0.04253 +2016-07-01|36.0|164.0|-0.26958|-0.04343 +2016-07-01|36.0|165.0|0.11103|-0.04449 +2016-07-01|36.0|166.0|0.49221|-0.0457 +2016-07-01|36.0|167.0|0.87327|-0.04707 +2016-07-01|36.0|168.0|1.25355|-0.04859 +2016-07-01|36.0|169.0|1.6324|-0.05025 +2016-07-01|36.0|170.0|2.00918|-0.05204 +2016-07-01|36.0|171.0|2.38328|-0.05396 +2016-07-01|36.0|172.0|2.75412|-0.05599 +2016-07-01|36.0|173.0|3.12114|-0.05812 +2016-07-01|36.0|174.0|3.48381|-0.06034 +2016-07-01|36.0|175.0|3.84165|-0.06263 +2016-07-01|36.0|176.0|4.19421|-0.06498 +2016-07-01|36.0|177.0|4.54109|-0.06737 +2016-07-01|36.0|178.0|4.88195|-0.0698 +2016-07-01|36.0|179.0|5.21648|-0.07223 +2016-07-01|36.0|-1.0|-0.09269|0.10702 +2016-07-01|36.0|-2.0|-0.35122|0.10857 +2016-07-01|36.0|-3.0|-0.61946|0.11015 +2016-07-01|36.0|-4.0|-0.89743|0.11176 +2016-07-01|36.0|-5.0|-1.18502|0.11336 +2016-07-01|36.0|-6.0|-1.48206|0.11497 +2016-07-01|36.0|-7.0|-1.78828|0.11655 +2016-07-01|36.0|-8.0|-2.10334|0.11811 +2016-07-01|36.0|-9.0|-2.42682|0.11964 +2016-07-01|36.0|-10.0|-2.75824|0.12112 +2016-07-01|36.0|-11.0|-3.09706|0.12255 +2016-07-01|36.0|-12.0|-3.44266|0.12394 +2016-07-01|36.0|-13.0|-3.79442|0.12526 +2016-07-01|36.0|-14.0|-4.15166|0.12654 +2016-07-01|36.0|-15.0|-4.51368|0.12775 +2016-07-01|36.0|-16.0|-4.87977|0.12892 +2016-07-01|36.0|-17.0|-5.24922|0.13003 +2016-07-01|36.0|-18.0|-5.62131|0.13109 +2016-07-01|36.0|-19.0|-5.99535|0.13212 +2016-07-01|36.0|-20.0|-6.37065|0.1331 +2016-07-01|36.0|-21.0|-6.74656|0.13404 +2016-07-01|36.0|-22.0|-7.12246|0.13495 +2016-07-01|36.0|-23.0|-7.49775|0.13584 +2016-07-01|36.0|-24.0|-7.87187|0.13669 +2016-07-01|36.0|-25.0|-8.24429|0.13753 +2016-07-01|36.0|-26.0|-8.61453|0.13834 +2016-07-01|36.0|-27.0|-8.98212|0.13913 +2016-07-01|36.0|-28.0|-9.34662|0.13989 +2016-07-01|36.0|-29.0|-9.70763|0.14063 +2016-07-01|36.0|-30.0|-10.06475|0.14133 +2016-07-01|36.0|-31.0|-10.4176|0.14199 +2016-07-01|36.0|-32.0|-10.7658|0.14261 +2016-07-01|36.0|-33.0|-11.10896|0.14317 +2016-07-01|36.0|-34.0|-11.44669|0.14366 +2016-07-01|36.0|-35.0|-11.77857|0.14407 +2016-07-01|36.0|-36.0|-12.10417|0.14439 +2016-07-01|36.0|-37.0|-12.423|0.14461 +2016-07-01|36.0|-38.0|-12.73456|0.1447 +2016-07-01|36.0|-39.0|-13.03829|0.14466 +2016-07-01|36.0|-40.0|-13.33357|0.14447 +2016-07-01|36.0|-41.0|-13.61974|0.14411 +2016-07-01|36.0|-42.0|-13.89608|0.14356 +2016-07-01|36.0|-43.0|-14.16183|0.14282 +2016-07-01|36.0|-44.0|-14.41613|0.14186 +2016-07-01|36.0|-45.0|-14.65811|0.14067 +2016-07-01|36.0|-46.0|-14.88682|0.13925 +2016-07-01|36.0|-47.0|-15.10127|0.13757 +2016-07-01|36.0|-48.0|-15.30044|0.13562 +2016-07-01|36.0|-49.0|-15.48325|0.1334 +2016-07-01|36.0|-50.0|-15.64859|0.1309 +2016-07-01|36.0|-51.0|-15.79535|0.12811 +2016-07-01|36.0|-52.0|-15.92239|0.12503 +2016-07-01|36.0|-53.0|-16.02857|0.12165 +2016-07-01|36.0|-54.0|-16.11276|0.11797 +2016-07-01|36.0|-55.0|-16.17382|0.11399 +2016-07-01|36.0|-56.0|-16.21068|0.10972 +2016-07-01|36.0|-57.0|-16.22227|0.10515 +2016-07-01|36.0|-58.0|-16.20758|0.10029 +2016-07-01|36.0|-59.0|-16.16565|0.09515 +2016-07-01|36.0|-60.0|-16.09559|0.08974 +2016-07-01|36.0|-61.0|-15.9966|0.08406 +2016-07-01|36.0|-62.0|-15.86794|0.07813 +2016-07-01|36.0|-63.0|-15.70898|0.07197 +2016-07-01|36.0|-64.0|-15.5192|0.06558 +2016-07-01|36.0|-65.0|-15.29817|0.05898 +2016-07-01|36.0|-66.0|-15.0456|0.0522 +2016-07-01|36.0|-67.0|-14.76132|0.04525 +2016-07-01|36.0|-68.0|-14.44529|0.03817 +2016-07-01|36.0|-69.0|-14.09762|0.03096 +2016-07-01|36.0|-70.0|-13.71857|0.02366 +2016-07-01|36.0|-71.0|-13.30854|0.0163 +2016-07-01|36.0|-72.0|-12.86809|0.0089 +2016-07-01|36.0|-73.0|-12.39794|0.0015 +2016-07-01|36.0|-74.0|-11.89898|-0.00587 +2016-07-01|36.0|-75.0|-11.37225|-0.01318 +2016-07-01|36.0|-76.0|-10.81896|-0.02039 +2016-07-01|36.0|-77.0|-10.24047|-0.02748 +2016-07-01|36.0|-78.0|-9.63831|-0.03439 +2016-07-01|36.0|-79.0|-9.01415|-0.04111 +2016-07-01|36.0|-80.0|-8.36979|-0.0476 +2016-07-01|36.0|-81.0|-7.70718|-0.05382 +2016-07-01|36.0|-82.0|-7.02838|-0.05975 +2016-07-01|36.0|-83.0|-6.33556|-0.06536 +2016-07-01|36.0|-84.0|-5.63096|-0.07064 +2016-07-01|36.0|-85.0|-4.9169|-0.07554 +2016-07-01|36.0|-86.0|-4.19576|-0.08007 +2016-07-01|36.0|-87.0|-3.46992|-0.08421 +2016-07-01|36.0|-88.0|-2.74178|-0.08795 +2016-07-01|36.0|-89.0|-2.01373|-0.09129 +2016-07-01|36.0|-90.0|-1.2881|-0.09422 +2016-07-01|36.0|-91.0|-0.56718|-0.09676 +2016-07-01|36.0|-92.0|0.14684|-0.09892 +2016-07-01|36.0|-93.0|0.85186|-0.1007 +2016-07-01|36.0|-94.0|1.54592|-0.10212 +2016-07-01|36.0|-95.0|2.22717|-0.10321 +2016-07-01|36.0|-96.0|2.89393|-0.104 +2016-07-01|36.0|-97.0|3.54467|-0.10449 +2016-07-01|36.0|-98.0|4.17803|-0.10472 +2016-07-01|36.0|-99.0|4.79282|-0.10473 +2016-07-01|36.0|-100.0|5.38802|-0.10453 +2016-07-01|36.0|-101.0|5.96278|-0.10415 +2016-07-01|36.0|-102.0|6.51644|-0.10362 +2016-07-01|36.0|-103.0|7.04847|-0.10298 +2016-07-01|36.0|-104.0|7.55853|-0.10224 +2016-07-01|36.0|-105.0|8.04638|-0.10142 +2016-07-01|36.0|-106.0|8.51197|-0.10056 +2016-07-01|36.0|-107.0|8.95533|-0.09966 +2016-07-01|36.0|-108.0|9.37661|-0.09876 +2016-07-01|36.0|-109.0|9.77607|-0.09786 +2016-07-01|36.0|-110.0|10.15402|-0.09697 +2016-07-01|36.0|-111.0|10.51088|-0.09612 +2016-07-01|36.0|-112.0|10.84709|-0.0953 +2016-07-01|36.0|-113.0|11.16314|-0.09453 +2016-07-01|36.0|-114.0|11.45956|-0.09382 +2016-07-01|36.0|-115.0|11.7369|-0.09316 +2016-07-01|36.0|-116.0|11.99569|-0.09256 +2016-07-01|36.0|-117.0|12.23649|-0.09203 +2016-07-01|36.0|-118.0|12.45982|-0.09155 +2016-07-01|36.0|-119.0|12.66623|-0.09114 +2016-07-01|36.0|-120.0|12.85619|-0.09079 +2016-07-01|36.0|-121.0|13.03018|-0.0905 +2016-07-01|36.0|-122.0|13.18866|-0.09027 +2016-07-01|36.0|-123.0|13.33202|-0.0901 +2016-07-01|36.0|-124.0|13.46066|-0.08998 +2016-07-01|36.0|-125.0|13.57493|-0.08991 +2016-07-01|36.0|-126.0|13.67515|-0.08989 +2016-07-01|36.0|-127.0|13.76162|-0.08991 +2016-07-01|36.0|-128.0|13.83462|-0.08999 +2016-07-01|36.0|-129.0|13.8944|-0.0901 +2016-07-01|36.0|-130.0|13.94121|-0.09026 +2016-07-01|36.0|-131.0|13.97528|-0.09046 +2016-07-01|36.0|-132.0|13.99684|-0.0907 +2016-07-01|36.0|-133.0|14.00611|-0.09098 +2016-07-01|36.0|-134.0|14.00334|-0.0913 +2016-07-01|36.0|-135.0|13.98875|-0.09166 +2016-07-01|36.0|-136.0|13.9626|-0.09205 +2016-07-01|36.0|-137.0|13.92514|-0.09248 +2016-07-01|36.0|-138.0|13.87667|-0.09294 +2016-07-01|36.0|-139.0|13.81748|-0.09344 +2016-07-01|36.0|-140.0|13.74789|-0.09396 +2016-07-01|36.0|-141.0|13.66823|-0.09452 +2016-07-01|36.0|-142.0|13.57887|-0.09511 +2016-07-01|36.0|-143.0|13.48017|-0.09572 +2016-07-01|36.0|-144.0|13.37251|-0.09634 +2016-07-01|36.0|-145.0|13.2563|-0.09699 +2016-07-01|36.0|-146.0|13.13194|-0.09764 +2016-07-01|36.0|-147.0|12.99983|-0.0983 +2016-07-01|36.0|-148.0|12.86039|-0.09895 +2016-07-01|36.0|-149.0|12.71401|-0.0996 +2016-07-01|36.0|-150.0|12.56108|-0.10023 +2016-07-01|36.0|-151.0|12.40196|-0.10083 +2016-07-01|36.0|-152.0|12.23701|-0.1014 +2016-07-01|36.0|-153.0|12.06654|-0.10192 +2016-07-01|36.0|-154.0|11.89084|-0.10239 +2016-07-01|36.0|-155.0|11.71016|-0.10279 +2016-07-01|36.0|-156.0|11.52471|-0.10312 +2016-07-01|36.0|-157.0|11.33467|-0.10337 +2016-07-01|36.0|-158.0|11.14015|-0.10352 +2016-07-01|36.0|-159.0|10.94124|-0.10357 +2016-07-01|36.0|-160.0|10.73796|-0.10351 +2016-07-01|36.0|-161.0|10.53031|-0.10333 +2016-07-01|36.0|-162.0|10.31822|-0.10302 +2016-07-01|36.0|-163.0|10.10161|-0.10258 +2016-07-01|36.0|-164.0|9.88033|-0.10199 +2016-07-01|36.0|-165.0|9.65423|-0.10126 +2016-07-01|36.0|-166.0|9.42311|-0.10039 +2016-07-01|36.0|-167.0|9.18676|-0.09937 +2016-07-01|36.0|-168.0|8.94495|-0.0982 +2016-07-01|36.0|-169.0|8.69745|-0.09688 +2016-07-01|36.0|-170.0|8.44401|-0.09542 +2016-07-01|36.0|-171.0|8.18442|-0.09382 +2016-07-01|36.0|-172.0|7.91844|-0.09209 +2016-07-01|36.0|-173.0|7.6459|-0.09023 +2016-07-01|36.0|-174.0|7.36661|-0.08826 +2016-07-01|36.0|-175.0|7.08043|-0.08618 +2016-07-01|36.0|-176.0|6.78728|-0.08401 +2016-07-01|36.0|-177.0|6.48709|-0.08175 +2016-07-01|36.0|-178.0|6.17985|-0.07944 +2016-07-01|36.0|-179.0|5.8656|-0.07706 +2016-07-01|37.0|0.0|0.16504|0.10743 +2016-07-01|37.0|1.0|0.40822|0.10598 +2016-07-01|37.0|2.0|0.64226|0.1046 +2016-07-01|37.0|3.0|0.86744|0.1033 +2016-07-01|37.0|4.0|1.0841|0.1021 +2016-07-01|37.0|5.0|1.29264|0.10099 +2016-07-01|37.0|6.0|1.49351|0.1 +2016-07-01|37.0|7.0|1.68716|0.09911 +2016-07-01|37.0|8.0|1.8741|0.09835 +2016-07-01|37.0|9.0|2.05482|0.09771 +2016-07-01|37.0|10.0|2.22983|0.09718 +2016-07-01|37.0|11.0|2.39959|0.09677 +2016-07-01|37.0|12.0|2.56456|0.09647 +2016-07-01|37.0|13.0|2.72514|0.09628 +2016-07-01|37.0|14.0|2.88172|0.09617 +2016-07-01|37.0|15.0|3.03458|0.09614 +2016-07-01|37.0|16.0|3.18397|0.09618 +2016-07-01|37.0|17.0|3.33007|0.09626 +2016-07-01|37.0|18.0|3.47297|0.09638 +2016-07-01|37.0|19.0|3.6127|0.09651 +2016-07-01|37.0|20.0|3.7492|0.09663 +2016-07-01|37.0|21.0|3.88237|0.09673 +2016-07-01|37.0|22.0|4.012|0.09678 +2016-07-01|37.0|23.0|4.13785|0.09678 +2016-07-01|37.0|24.0|4.2596|0.09669 +2016-07-01|37.0|25.0|4.3769|0.09651 +2016-07-01|37.0|26.0|4.48937|0.09623 +2016-07-01|37.0|27.0|4.59658|0.09582 +2016-07-01|37.0|28.0|4.6981|0.09528 +2016-07-01|37.0|29.0|4.79349|0.09461 +2016-07-01|37.0|30.0|4.88235|0.09379 +2016-07-01|37.0|31.0|4.96425|0.09284 +2016-07-01|37.0|32.0|5.03885|0.09174 +2016-07-01|37.0|33.0|5.1058|0.0905 +2016-07-01|37.0|34.0|5.16484|0.08913 +2016-07-01|37.0|35.0|5.21577|0.08764 +2016-07-01|37.0|36.0|5.25843|0.08604 +2016-07-01|37.0|37.0|5.29277|0.08435 +2016-07-01|37.0|38.0|5.3188|0.08257 +2016-07-01|37.0|39.0|5.3366|0.08074 +2016-07-01|37.0|40.0|5.34633|0.07886 +2016-07-01|37.0|41.0|5.34824|0.07696 +2016-07-01|37.0|42.0|5.34264|0.07505 +2016-07-01|37.0|43.0|5.32989|0.07317 +2016-07-01|37.0|44.0|5.31042|0.07132 +2016-07-01|37.0|45.0|5.28471|0.06953 +2016-07-01|37.0|46.0|5.25326|0.0678 +2016-07-01|37.0|47.0|5.21659|0.06617 +2016-07-01|37.0|48.0|5.17526|0.06464 +2016-07-01|37.0|49.0|5.12981|0.06321 +2016-07-01|37.0|50.0|5.08076|0.06192 +2016-07-01|37.0|51.0|5.02861|0.06074 +2016-07-01|37.0|52.0|4.97385|0.0597 +2016-07-01|37.0|53.0|4.91691|0.0588 +2016-07-01|37.0|54.0|4.85816|0.05802 +2016-07-01|37.0|55.0|4.79793|0.05737 +2016-07-01|37.0|56.0|4.73648|0.05684 +2016-07-01|37.0|57.0|4.67402|0.05643 +2016-07-01|37.0|58.0|4.61067|0.05612 +2016-07-01|37.0|59.0|4.54651|0.0559 +2016-07-01|37.0|60.0|4.48154|0.05576 +2016-07-01|37.0|61.0|4.41572|0.05568 +2016-07-01|37.0|62.0|4.34892|0.05566 +2016-07-01|37.0|63.0|4.28101|0.05567 +2016-07-01|37.0|64.0|4.21176|0.0557 +2016-07-01|37.0|65.0|4.14095|0.05573 +2016-07-01|37.0|66.0|4.06831|0.05575 +2016-07-01|37.0|67.0|3.99354|0.05575 +2016-07-01|37.0|68.0|3.91635|0.05571 +2016-07-01|37.0|69.0|3.83641|0.05562 +2016-07-01|37.0|70.0|3.75341|0.05547 +2016-07-01|37.0|71.0|3.66703|0.05523 +2016-07-01|37.0|72.0|3.57696|0.05492 +2016-07-01|37.0|73.0|3.48291|0.0545 +2016-07-01|37.0|74.0|3.38459|0.05398 +2016-07-01|37.0|75.0|3.28172|0.05335 +2016-07-01|37.0|76.0|3.17405|0.0526 +2016-07-01|37.0|77.0|3.06135|0.05172 +2016-07-01|37.0|78.0|2.94339|0.05072 +2016-07-01|37.0|79.0|2.81997|0.04957 +2016-07-01|37.0|80.0|2.69087|0.04829 +2016-07-01|37.0|81.0|2.55593|0.04686 +2016-07-01|37.0|82.0|2.41497|0.04529 +2016-07-01|37.0|83.0|2.26781|0.04357 +2016-07-01|37.0|84.0|2.11429|0.04171 +2016-07-01|37.0|85.0|1.95426|0.03969 +2016-07-01|37.0|86.0|1.78755|0.03752 +2016-07-01|37.0|87.0|1.61403|0.03521 +2016-07-01|37.0|88.0|1.43353|0.03274 +2016-07-01|37.0|89.0|1.24592|0.03013 +2016-07-01|37.0|90.0|1.05107|0.02737 +2016-07-01|37.0|91.0|0.84886|0.02447 +2016-07-01|37.0|92.0|0.63918|0.02144 +2016-07-01|37.0|93.0|0.42196|0.01827 +2016-07-01|37.0|94.0|0.19714|0.01498 +2016-07-01|37.0|95.0|-0.03529|0.01157 +2016-07-01|37.0|96.0|-0.27531|0.00805 +2016-07-01|37.0|97.0|-0.52284|0.00443 +2016-07-01|37.0|98.0|-0.77774|7.3E-4 +2016-07-01|37.0|99.0|-1.03983|-0.00304 +2016-07-01|37.0|100.0|-1.30882|-0.00687 +2016-07-01|37.0|101.0|-1.58438|-0.01075 +2016-07-01|37.0|102.0|-1.86606|-0.01465 +2016-07-01|37.0|103.0|-2.15335|-0.01856 +2016-07-01|37.0|104.0|-2.44565|-0.02245 +2016-07-01|37.0|105.0|-2.74224|-0.02632 +2016-07-01|37.0|106.0|-3.04234|-0.03013 +2016-07-01|37.0|107.0|-3.34506|-0.03388 +2016-07-01|37.0|108.0|-3.64943|-0.03752 +2016-07-01|37.0|109.0|-3.95441|-0.04106 +2016-07-01|37.0|110.0|-4.25888|-0.04446 +2016-07-01|37.0|111.0|-4.56164|-0.04771 +2016-07-01|37.0|112.0|-4.86147|-0.05079 +2016-07-01|37.0|113.0|-5.15707|-0.05369 +2016-07-01|37.0|114.0|-5.44716|-0.05639 +2016-07-01|37.0|115.0|-5.7304|-0.05887 +2016-07-01|37.0|116.0|-6.00547|-0.06113 +2016-07-01|37.0|117.0|-6.27107|-0.06316 +2016-07-01|37.0|118.0|-6.52593|-0.06495 +2016-07-01|37.0|119.0|-6.76879|-0.0665 +2016-07-01|37.0|120.0|-6.99848|-0.0678 +2016-07-01|37.0|121.0|-7.21388|-0.06887 +2016-07-01|37.0|122.0|-7.41395|-0.0697 +2016-07-01|37.0|123.0|-7.59773|-0.07029 +2016-07-01|37.0|124.0|-7.76436|-0.07066 +2016-07-01|37.0|125.0|-7.91307|-0.07081 +2016-07-01|37.0|126.0|-8.04321|-0.07076 +2016-07-01|37.0|127.0|-8.1542|-0.07051 +2016-07-01|37.0|128.0|-8.24561|-0.07009 +2016-07-01|37.0|129.0|-8.31707|-0.06949 +2016-07-01|37.0|130.0|-8.36836|-0.06874 +2016-07-01|37.0|131.0|-8.39932|-0.06786 +2016-07-01|37.0|132.0|-8.4099|-0.06685 +2016-07-01|37.0|133.0|-8.40015|-0.06573 +2016-07-01|37.0|134.0|-8.37021|-0.06452 +2016-07-01|37.0|135.0|-8.32027|-0.06323 +2016-07-01|37.0|136.0|-8.25061|-0.06188 +2016-07-01|37.0|137.0|-8.1616|-0.06048 +2016-07-01|37.0|138.0|-8.05362|-0.05904 +2016-07-01|37.0|139.0|-7.92713|-0.05758 +2016-07-01|37.0|140.0|-7.78265|-0.05611 +2016-07-01|37.0|141.0|-7.6207|-0.05465 +2016-07-01|37.0|142.0|-7.44186|-0.0532 +2016-07-01|37.0|143.0|-7.24674|-0.05178 +2016-07-01|37.0|144.0|-7.03595|-0.0504 +2016-07-01|37.0|145.0|-6.81013|-0.04907 +2016-07-01|37.0|146.0|-6.56995|-0.0478 +2016-07-01|37.0|147.0|-6.31605|-0.0466 +2016-07-01|37.0|148.0|-6.04912|-0.04548 +2016-07-01|37.0|149.0|-5.76982|-0.04445 +2016-07-01|37.0|150.0|-5.47883|-0.04351 +2016-07-01|37.0|151.0|-5.17684|-0.04268 +2016-07-01|37.0|152.0|-4.86452|-0.04197 +2016-07-01|37.0|153.0|-4.54256|-0.04138 +2016-07-01|37.0|154.0|-4.21162|-0.04092 +2016-07-01|37.0|155.0|-3.8724|-0.0406 +2016-07-01|37.0|156.0|-3.52557|-0.04042 +2016-07-01|37.0|157.0|-3.17181|-0.04039 +2016-07-01|37.0|158.0|-2.81179|-0.04052 +2016-07-01|37.0|159.0|-2.44621|-0.0408 +2016-07-01|37.0|160.0|-2.07572|-0.04125 +2016-07-01|37.0|161.0|-1.70103|-0.04186 +2016-07-01|37.0|162.0|-1.32279|-0.04263 +2016-07-01|37.0|163.0|-0.94169|-0.04357 +2016-07-01|37.0|164.0|-0.5584|-0.04468 +2016-07-01|37.0|165.0|-0.1736|-0.04594 +2016-07-01|37.0|166.0|0.21207|-0.04737 +2016-07-01|37.0|167.0|0.59794|-0.04894 +2016-07-01|37.0|168.0|0.98337|-0.05067 +2016-07-01|37.0|169.0|1.36774|-0.05253 +2016-07-01|37.0|170.0|1.75043|-0.05453 +2016-07-01|37.0|171.0|2.13084|-0.05664 +2016-07-01|37.0|172.0|2.50842|-0.05886 +2016-07-01|37.0|173.0|2.88263|-0.06118 +2016-07-01|37.0|174.0|3.25294|-0.06358 +2016-07-01|37.0|175.0|3.61891|-0.06605 +2016-07-01|37.0|176.0|3.98007|-0.06857 +2016-07-01|37.0|177.0|4.33605|-0.07113 +2016-07-01|37.0|178.0|4.68649|-0.07371 +2016-07-01|37.0|179.0|5.03108|-0.0763 +2016-07-01|37.0|-1.0|-0.0875|0.10894 +2016-07-01|37.0|-2.0|-0.34954|0.11049 +2016-07-01|37.0|-3.0|-0.62114|0.11208 +2016-07-01|37.0|-4.0|-0.90227|0.11368 +2016-07-01|37.0|-5.0|-1.19282|0.11529 +2016-07-01|37.0|-6.0|-1.49262|0.11689 +2016-07-01|37.0|-7.0|-1.80137|0.11848 +2016-07-01|37.0|-8.0|-2.11875|0.12005 +2016-07-01|37.0|-9.0|-2.44433|0.12158 +2016-07-01|37.0|-10.0|-2.77763|0.12306 +2016-07-01|37.0|-11.0|-3.11812|0.12451 +2016-07-01|37.0|-12.0|-3.46519|0.1259 +2016-07-01|37.0|-13.0|-3.81824|0.12725 +2016-07-01|37.0|-14.0|-4.17659|0.12854 +2016-07-01|37.0|-15.0|-4.53957|0.12978 +2016-07-01|37.0|-16.0|-4.90649|0.13097 +2016-07-01|37.0|-17.0|-5.27665|0.1321 +2016-07-01|37.0|-18.0|-5.64936|0.1332 +2016-07-01|37.0|-19.0|-6.02394|0.13425 +2016-07-01|37.0|-20.0|-6.39974|0.13526 +2016-07-01|37.0|-21.0|-6.77612|0.13624 +2016-07-01|37.0|-22.0|-7.15246|0.13718 +2016-07-01|37.0|-23.0|-7.52821|0.1381 +2016-07-01|37.0|-24.0|-7.90281|0.13899 +2016-07-01|37.0|-25.0|-8.27575|0.13986 +2016-07-01|37.0|-26.0|-8.64656|0.14071 +2016-07-01|37.0|-27.0|-9.01479|0.14153 +2016-07-01|37.0|-28.0|-9.38001|0.14233 +2016-07-01|37.0|-29.0|-9.74183|0.1431 +2016-07-01|37.0|-30.0|-10.09987|0.14384 +2016-07-01|37.0|-31.0|-10.45374|0.14454 +2016-07-01|37.0|-32.0|-10.80308|0.14519 +2016-07-01|37.0|-33.0|-11.14751|0.14579 +2016-07-01|37.0|-34.0|-11.48665|0.14633 +2016-07-01|37.0|-35.0|-11.82008|0.14678 +2016-07-01|37.0|-36.0|-12.14737|0.14715 +2016-07-01|37.0|-37.0|-12.46806|0.14742 +2016-07-01|37.0|-38.0|-12.78164|0.14757 +2016-07-01|37.0|-39.0|-13.08755|0.14758 +2016-07-01|37.0|-40.0|-13.3852|0.14745 +2016-07-01|37.0|-41.0|-13.67393|0.14716 +2016-07-01|37.0|-42.0|-13.95303|0.14669 +2016-07-01|37.0|-43.0|-14.22173|0.14602 +2016-07-01|37.0|-44.0|-14.47921|0.14515 +2016-07-01|37.0|-45.0|-14.72459|0.14406 +2016-07-01|37.0|-46.0|-14.95693|0.14274 +2016-07-01|37.0|-47.0|-15.17525|0.14117 +2016-07-01|37.0|-48.0|-15.37852|0.13934 +2016-07-01|37.0|-49.0|-15.56567|0.13724 +2016-07-01|37.0|-50.0|-15.7356|0.13487 +2016-07-01|37.0|-51.0|-15.88718|0.13221 +2016-07-01|37.0|-52.0|-16.01928|0.12927 +2016-07-01|37.0|-53.0|-16.13073|0.12604 +2016-07-01|37.0|-54.0|-16.2204|0.12251 +2016-07-01|37.0|-55.0|-16.28714|0.11868 +2016-07-01|37.0|-56.0|-16.32984|0.11456 +2016-07-01|37.0|-57.0|-16.34741|0.11015 +2016-07-01|37.0|-58.0|-16.33881|0.10545 +2016-07-01|37.0|-59.0|-16.30304|0.10046 +2016-07-01|37.0|-60.0|-16.23918|0.0952 +2016-07-01|37.0|-61.0|-16.14636|0.08967 +2016-07-01|37.0|-62.0|-16.02381|0.08389 +2016-07-01|37.0|-63.0|-15.87084|0.07785 +2016-07-01|37.0|-64.0|-15.68686|0.07159 +2016-07-01|37.0|-65.0|-15.47141|0.06512 +2016-07-01|37.0|-66.0|-15.22411|0.05844 +2016-07-01|37.0|-67.0|-14.94473|0.05159 +2016-07-01|37.0|-68.0|-14.63319|0.04458 +2016-07-01|37.0|-69.0|-14.28951|0.03744 +2016-07-01|37.0|-70.0|-13.9139|0.03019 +2016-07-01|37.0|-71.0|-13.50669|0.02286 +2016-07-01|37.0|-72.0|-13.06839|0.01548 +2016-07-01|37.0|-73.0|-12.59968|0.00807 +2016-07-01|37.0|-74.0|-12.10137|6.7E-4 +2016-07-01|37.0|-75.0|-11.57449|-0.00668 +2016-07-01|37.0|-76.0|-11.02021|-0.01397 +2016-07-01|37.0|-77.0|-10.43985|-0.02114 +2016-07-01|37.0|-78.0|-9.83493|-0.02816 +2016-07-01|37.0|-79.0|-9.20711|-0.03501 +2016-07-01|37.0|-80.0|-8.5582|-0.04165 +2016-07-01|37.0|-81.0|-7.89016|-0.04805 +2016-07-01|37.0|-82.0|-7.20505|-0.05417 +2016-07-01|37.0|-83.0|-6.50507|-0.05999 +2016-07-01|37.0|-84.0|-5.79251|-0.06549 +2016-07-01|37.0|-85.0|-5.06973|-0.07064 +2016-07-01|37.0|-86.0|-4.33915|-0.07542 +2016-07-01|37.0|-87.0|-3.60321|-0.07982 +2016-07-01|37.0|-88.0|-2.86438|-0.08384 +2016-07-01|37.0|-89.0|-2.1251|-0.08745 +2016-07-01|37.0|-90.0|-1.38779|-0.09068 +2016-07-01|37.0|-91.0|-0.65478|-0.09351 +2016-07-01|37.0|-92.0|0.07166|-0.09596 +2016-07-01|37.0|-93.0|0.78936|-0.09803 +2016-07-01|37.0|-94.0|1.49628|-0.09976 +2016-07-01|37.0|-95.0|2.19053|-0.10114 +2016-07-01|37.0|-96.0|2.87035|-0.10221 +2016-07-01|37.0|-97.0|3.53416|-0.10299 +2016-07-01|37.0|-98.0|4.18054|-0.1035 +2016-07-01|37.0|-99.0|4.80825|-0.10377 +2016-07-01|37.0|-100.0|5.41622|-0.10384 +2016-07-01|37.0|-101.0|6.00358|-0.10371 +2016-07-01|37.0|-102.0|6.56961|-0.10343 +2016-07-01|37.0|-103.0|7.11374|-0.10303 +2016-07-01|37.0|-104.0|7.63561|-0.10251 +2016-07-01|37.0|-105.0|8.13496|-0.10191 +2016-07-01|37.0|-106.0|8.6117|-0.10126 +2016-07-01|37.0|-107.0|9.06584|-0.10056 +2016-07-01|37.0|-108.0|9.49752|-0.09985 +2016-07-01|37.0|-109.0|9.90696|-0.09912 +2016-07-01|37.0|-110.0|10.29449|-0.09841 +2016-07-01|37.0|-111.0|10.66049|-0.09772 +2016-07-01|37.0|-112.0|11.00539|-0.09706 +2016-07-01|37.0|-113.0|11.32969|-0.09643 +2016-07-01|37.0|-114.0|11.63389|-0.09586 +2016-07-01|37.0|-115.0|11.91853|-0.09533 +2016-07-01|37.0|-116.0|12.18417|-0.09486 +2016-07-01|37.0|-117.0|12.43133|-0.09445 +2016-07-01|37.0|-118.0|12.66056|-0.09409 +2016-07-01|37.0|-119.0|12.87238|-0.09379 +2016-07-01|37.0|-120.0|13.06729|-0.09355 +2016-07-01|37.0|-121.0|13.24577|-0.09337 +2016-07-01|37.0|-122.0|13.40827|-0.09324 +2016-07-01|37.0|-123.0|13.55521|-0.09317 +2016-07-01|37.0|-124.0|13.68697|-0.09315 +2016-07-01|37.0|-125.0|13.80394|-0.09318 +2016-07-01|37.0|-126.0|13.90643|-0.09325 +2016-07-01|37.0|-127.0|13.99477|-0.09338 +2016-07-01|37.0|-128.0|14.06923|-0.09355 +2016-07-01|37.0|-129.0|14.13009|-0.09376 +2016-07-01|37.0|-130.0|14.17761|-0.09402 +2016-07-01|37.0|-131.0|14.21202|-0.09431 +2016-07-01|37.0|-132.0|14.23358|-0.09465 +2016-07-01|37.0|-133.0|14.2425|-0.09503 +2016-07-01|37.0|-134.0|14.23904|-0.09544 +2016-07-01|37.0|-135.0|14.22343|-0.09589 +2016-07-01|37.0|-136.0|14.19593|-0.09638 +2016-07-01|37.0|-137.0|14.15681|-0.0969 +2016-07-01|37.0|-138.0|14.10634|-0.09746 +2016-07-01|37.0|-139.0|14.04482|-0.09805 +2016-07-01|37.0|-140.0|13.97256|-0.09867 +2016-07-01|37.0|-141.0|13.8899|-0.09931 +2016-07-01|37.0|-142.0|13.79717|-0.09998 +2016-07-01|37.0|-143.0|13.69473|-0.10068 +2016-07-01|37.0|-144.0|13.58297|-0.10139 +2016-07-01|37.0|-145.0|13.46225|-0.10211 +2016-07-01|37.0|-146.0|13.33297|-0.10283 +2016-07-01|37.0|-147.0|13.19552|-0.10356 +2016-07-01|37.0|-148.0|13.05029|-0.10428 +2016-07-01|37.0|-149.0|12.89766|-0.10499 +2016-07-01|37.0|-150.0|12.73801|-0.10567 +2016-07-01|37.0|-151.0|12.57168|-0.10632 +2016-07-01|37.0|-152.0|12.39903|-0.10694 +2016-07-01|37.0|-153.0|12.22036|-0.1075 +2016-07-01|37.0|-154.0|12.03595|-0.108 +2016-07-01|37.0|-155.0|11.84606|-0.10844 +2016-07-01|37.0|-156.0|11.6509|-0.10879 +2016-07-01|37.0|-157.0|11.45064|-0.10905 +2016-07-01|37.0|-158.0|11.24544|-0.10922 +2016-07-01|37.0|-159.0|11.03537|-0.10927 +2016-07-01|37.0|-160.0|10.82051|-0.10921 +2016-07-01|37.0|-161.0|10.60086|-0.10902 +2016-07-01|37.0|-162.0|10.3764|-0.10869 +2016-07-01|37.0|-163.0|10.14708|-0.10823 +2016-07-01|37.0|-164.0|9.9128|-0.10761 +2016-07-01|37.0|-165.0|9.67344|-0.10685 +2016-07-01|37.0|-166.0|9.42886|-0.10593 +2016-07-01|37.0|-167.0|9.1789|-0.10486 +2016-07-01|37.0|-168.0|8.92338|-0.10363 +2016-07-01|37.0|-169.0|8.66212|-0.10225 +2016-07-01|37.0|-170.0|8.39494|-0.10072 +2016-07-01|37.0|-171.0|8.12167|-0.09905 +2016-07-01|37.0|-172.0|7.84214|-0.09723 +2016-07-01|37.0|-173.0|7.55621|-0.09528 +2016-07-01|37.0|-174.0|7.26375|-0.09321 +2016-07-01|37.0|-175.0|6.96468|-0.09103 +2016-07-01|37.0|-176.0|6.65894|-0.08874 +2016-07-01|37.0|-177.0|6.34651|-0.08637 +2016-07-01|37.0|-178.0|6.02742|-0.08393 +2016-07-01|37.0|-179.0|5.70173|-0.08142 +2016-07-01|38.0|0.0|0.16625|0.10943 +2016-07-01|38.0|1.0|0.41356|0.10798 +2016-07-01|38.0|2.0|0.65184|0.10659 +2016-07-01|38.0|3.0|0.88134|0.10527 +2016-07-01|38.0|4.0|1.10238|0.10405 +2016-07-01|38.0|5.0|1.31534|0.10292 +2016-07-01|38.0|6.0|1.52062|0.1019 +2016-07-01|38.0|7.0|1.71868|0.10099 +2016-07-01|38.0|8.0|1.90998|0.10019 +2016-07-01|38.0|9.0|2.095|0.09951 +2016-07-01|38.0|10.0|2.27421|0.09894 +2016-07-01|38.0|11.0|2.44809|0.09848 +2016-07-01|38.0|12.0|2.61707|0.09813 +2016-07-01|38.0|13.0|2.78156|0.09788 +2016-07-01|38.0|14.0|2.94193|0.09772 +2016-07-01|38.0|15.0|3.09847|0.09764 +2016-07-01|38.0|16.0|3.25145|0.09762 +2016-07-01|38.0|17.0|3.40106|0.09765 +2016-07-01|38.0|18.0|3.5474|0.09771 +2016-07-01|38.0|19.0|3.69054|0.09779 +2016-07-01|38.0|20.0|3.83045|0.09787 +2016-07-01|38.0|21.0|3.96704|0.09793 +2016-07-01|38.0|22.0|4.10016|0.09795 +2016-07-01|38.0|23.0|4.22959|0.09792 +2016-07-01|38.0|24.0|4.35507|0.09781 +2016-07-01|38.0|25.0|4.47626|0.09762 +2016-07-01|38.0|26.0|4.59284|0.09733 +2016-07-01|38.0|27.0|4.70441|0.09693 +2016-07-01|38.0|28.0|4.81057|0.0964 +2016-07-01|38.0|29.0|4.91093|0.09575 +2016-07-01|38.0|30.0|5.0051|0.09496 +2016-07-01|38.0|31.0|5.09268|0.09403 +2016-07-01|38.0|32.0|5.17333|0.09297 +2016-07-01|38.0|33.0|5.24673|0.09178 +2016-07-01|38.0|34.0|5.31261|0.09046 +2016-07-01|38.0|35.0|5.37077|0.08902 +2016-07-01|38.0|36.0|5.42105|0.08748 +2016-07-01|38.0|37.0|5.46336|0.08583 +2016-07-01|38.0|38.0|5.49768|0.08411 +2016-07-01|38.0|39.0|5.52407|0.08233 +2016-07-01|38.0|40.0|5.54264|0.08049 +2016-07-01|38.0|41.0|5.5536|0.07863 +2016-07-01|38.0|42.0|5.55719|0.07676 +2016-07-01|38.0|43.0|5.55373|0.0749 +2016-07-01|38.0|44.0|5.54358|0.07307 +2016-07-01|38.0|45.0|5.52715|0.07128 +2016-07-01|38.0|46.0|5.50487|0.06955 +2016-07-01|38.0|47.0|5.47722|0.0679 +2016-07-01|38.0|48.0|5.44466|0.06633 +2016-07-01|38.0|49.0|5.40768|0.06487 +2016-07-01|38.0|50.0|5.36675|0.06352 +2016-07-01|38.0|51.0|5.32231|0.06229 +2016-07-01|38.0|52.0|5.27478|0.06117 +2016-07-01|38.0|53.0|5.22455|0.06018 +2016-07-01|38.0|54.0|5.17196|0.05931 +2016-07-01|38.0|55.0|5.1173|0.05856 +2016-07-01|38.0|56.0|5.0608|0.05793 +2016-07-01|38.0|57.0|5.00264|0.0574 +2016-07-01|38.0|58.0|4.94294|0.05698 +2016-07-01|38.0|59.0|4.88176|0.05664 +2016-07-01|38.0|60.0|4.8191|0.05637 +2016-07-01|38.0|61.0|4.7549|0.05617 +2016-07-01|38.0|62.0|4.68907|0.05602 +2016-07-01|38.0|63.0|4.62145|0.05591 +2016-07-01|38.0|64.0|4.55186|0.05582 +2016-07-01|38.0|65.0|4.48006|0.05574 +2016-07-01|38.0|66.0|4.4058|0.05565 +2016-07-01|38.0|67.0|4.32881|0.05554 +2016-07-01|38.0|68.0|4.24879|0.05539 +2016-07-01|38.0|69.0|4.16545|0.0552 +2016-07-01|38.0|70.0|4.07848|0.05494 +2016-07-01|38.0|71.0|3.98758|0.05462 +2016-07-01|38.0|72.0|3.89244|0.05421 +2016-07-01|38.0|73.0|3.79278|0.05371 +2016-07-01|38.0|74.0|3.68832|0.05311 +2016-07-01|38.0|75.0|3.57879|0.05241 +2016-07-01|38.0|76.0|3.46395|0.05158 +2016-07-01|38.0|77.0|3.34356|0.05064 +2016-07-01|38.0|78.0|3.21739|0.04957 +2016-07-01|38.0|79.0|3.08524|0.04836 +2016-07-01|38.0|80.0|2.94692|0.04702 +2016-07-01|38.0|81.0|2.80224|0.04554 +2016-07-01|38.0|82.0|2.65104|0.04391 +2016-07-01|38.0|83.0|2.49314|0.04214 +2016-07-01|38.0|84.0|2.3284|0.04023 +2016-07-01|38.0|85.0|2.15666|0.03816 +2016-07-01|38.0|86.0|1.97778|0.03596 +2016-07-01|38.0|87.0|1.79162|0.0336 +2016-07-01|38.0|88.0|1.59807|0.0311 +2016-07-01|38.0|89.0|1.397|0.02846 +2016-07-01|38.0|90.0|1.1883|0.02568 +2016-07-01|38.0|91.0|0.97189|0.02276 +2016-07-01|38.0|92.0|0.74769|0.01971 +2016-07-01|38.0|93.0|0.51568|0.01654 +2016-07-01|38.0|94.0|0.27583|0.01325 +2016-07-01|38.0|95.0|0.02818|0.00985 +2016-07-01|38.0|96.0|-0.22721|0.00635 +2016-07-01|38.0|97.0|-0.49021|0.00276 +2016-07-01|38.0|98.0|-0.76063|-9.1E-4 +2016-07-01|38.0|99.0|-1.03823|-0.00464 +2016-07-01|38.0|100.0|-1.32269|-0.00841 +2016-07-01|38.0|101.0|-1.6136|-0.01222 +2016-07-01|38.0|102.0|-1.91049|-0.01605 +2016-07-01|38.0|103.0|-2.21278|-0.01987 +2016-07-01|38.0|104.0|-2.51983|-0.02368 +2016-07-01|38.0|105.0|-2.83089|-0.02744 +2016-07-01|38.0|106.0|-3.14513|-0.03114 +2016-07-01|38.0|107.0|-3.46162|-0.03476 +2016-07-01|38.0|108.0|-3.77936|-0.03829 +2016-07-01|38.0|109.0|-4.09728|-0.04169 +2016-07-01|38.0|110.0|-4.41423|-0.04495 +2016-07-01|38.0|111.0|-4.72901|-0.04806 +2016-07-01|38.0|112.0|-5.04036|-0.05099 +2016-07-01|38.0|113.0|-5.34699|-0.05374 +2016-07-01|38.0|114.0|-5.6476|-0.05628 +2016-07-01|38.0|115.0|-5.94085|-0.05861 +2016-07-01|38.0|116.0|-6.22543|-0.06071 +2016-07-01|38.0|117.0|-6.50004|-0.06259 +2016-07-01|38.0|118.0|-6.7634|-0.06423 +2016-07-01|38.0|119.0|-7.01429|-0.06563 +2016-07-01|38.0|120.0|-7.25152|-0.0668 +2016-07-01|38.0|121.0|-7.47401|-0.06773 +2016-07-01|38.0|122.0|-7.68072|-0.06842 +2016-07-01|38.0|123.0|-7.87071|-0.06889 +2016-07-01|38.0|124.0|-8.04314|-0.06914 +2016-07-01|38.0|125.0|-8.19724|-0.06918 +2016-07-01|38.0|126.0|-8.33238|-0.06903 +2016-07-01|38.0|127.0|-8.44801|-0.06868 +2016-07-01|38.0|128.0|-8.54369|-0.06817 +2016-07-01|38.0|129.0|-8.61908|-0.0675 +2016-07-01|38.0|130.0|-8.67396|-0.06668 +2016-07-01|38.0|131.0|-8.70819|-0.06573 +2016-07-01|38.0|132.0|-8.72174|-0.06467 +2016-07-01|38.0|133.0|-8.71465|-0.06351 +2016-07-01|38.0|134.0|-8.68706|-0.06227 +2016-07-01|38.0|135.0|-8.6392|-0.06096 +2016-07-01|38.0|136.0|-8.57134|-0.05959 +2016-07-01|38.0|137.0|-8.48384|-0.05819 +2016-07-01|38.0|138.0|-8.37712|-0.05676 +2016-07-01|38.0|139.0|-8.25163|-0.05532 +2016-07-01|38.0|140.0|-8.10789|-0.05388 +2016-07-01|38.0|141.0|-7.94645|-0.05246 +2016-07-01|38.0|142.0|-7.76787|-0.05106 +2016-07-01|38.0|143.0|-7.57278|-0.0497 +2016-07-01|38.0|144.0|-7.3618|-0.04839 +2016-07-01|38.0|145.0|-7.13558|-0.04714 +2016-07-01|38.0|146.0|-6.89478|-0.04596 +2016-07-01|38.0|147.0|-6.64008|-0.04486 +2016-07-01|38.0|148.0|-6.37214|-0.04385 +2016-07-01|38.0|149.0|-6.09165|-0.04294 +2016-07-01|38.0|150.0|-5.7993|-0.04214 +2016-07-01|38.0|151.0|-5.49577|-0.04145 +2016-07-01|38.0|152.0|-5.18175|-0.04089 +2016-07-01|38.0|153.0|-4.85792|-0.04046 +2016-07-01|38.0|154.0|-4.52497|-0.04017 +2016-07-01|38.0|155.0|-4.18356|-0.04002 +2016-07-01|38.0|156.0|-3.83439|-0.04003 +2016-07-01|38.0|157.0|-3.47813|-0.04019 +2016-07-01|38.0|158.0|-3.11544|-0.0405 +2016-07-01|38.0|159.0|-2.74701|-0.04099 +2016-07-01|38.0|160.0|-2.37351|-0.04163 +2016-07-01|38.0|161.0|-1.99559|-0.04245 +2016-07-01|38.0|162.0|-1.61392|-0.04343 +2016-07-01|38.0|163.0|-1.22917|-0.04458 +2016-07-01|38.0|164.0|-0.84199|-0.0459 +2016-07-01|38.0|165.0|-0.45302|-0.04738 +2016-07-01|38.0|166.0|-0.06291|-0.04901 +2016-07-01|38.0|167.0|0.3277|-0.0508 +2016-07-01|38.0|168.0|0.7182|-0.05273 +2016-07-01|38.0|169.0|1.10799|-0.05479 +2016-07-01|38.0|170.0|1.49647|-0.05699 +2016-07-01|38.0|171.0|1.88306|-0.0593 +2016-07-01|38.0|172.0|2.26724|-0.06171 +2016-07-01|38.0|173.0|2.64846|-0.06422 +2016-07-01|38.0|174.0|3.02625|-0.0668 +2016-07-01|38.0|175.0|3.40014|-0.06945 +2016-07-01|38.0|176.0|3.7697|-0.07214 +2016-07-01|38.0|177.0|4.13454|-0.07487 +2016-07-01|38.0|178.0|4.49431|-0.07761 +2016-07-01|38.0|179.0|4.84871|-0.08035 +2016-07-01|38.0|-1.0|-0.09028|0.11095 +2016-07-01|38.0|-2.0|-0.35615|0.1125 +2016-07-01|38.0|-3.0|-0.6314|0.11409 +2016-07-01|38.0|-4.0|-0.916|0.11569 +2016-07-01|38.0|-5.0|-1.20981|0.1173 +2016-07-01|38.0|-6.0|-1.51264|0.11891 +2016-07-01|38.0|-7.0|-1.82422|0.1205 +2016-07-01|38.0|-8.0|-2.1442|0.12207 +2016-07-01|38.0|-9.0|-2.47216|0.12361 +2016-07-01|38.0|-10.0|-2.80763|0.12511 +2016-07-01|38.0|-11.0|-3.15007|0.12656 +2016-07-01|38.0|-12.0|-3.49892|0.12797 +2016-07-01|38.0|-13.0|-3.85355|0.12934 +2016-07-01|38.0|-14.0|-4.21333|0.13065 +2016-07-01|38.0|-15.0|-4.57758|0.13191 +2016-07-01|38.0|-16.0|-4.94565|0.13313 +2016-07-01|38.0|-17.0|-5.31686|0.1343 +2016-07-01|38.0|-18.0|-5.69053|0.13542 +2016-07-01|38.0|-19.0|-6.066|0.1365 +2016-07-01|38.0|-20.0|-6.44265|0.13755 +2016-07-01|38.0|-21.0|-6.81984|0.13856 +2016-07-01|38.0|-22.0|-7.19701|0.13955 +2016-07-01|38.0|-23.0|-7.57358|0.1405 +2016-07-01|38.0|-24.0|-7.94902|0.14143 +2016-07-01|38.0|-25.0|-8.32286|0.14234 +2016-07-01|38.0|-26.0|-8.69461|0.14323 +2016-07-01|38.0|-27.0|-9.06384|0.14409 +2016-07-01|38.0|-28.0|-9.43015|0.14492 +2016-07-01|38.0|-29.0|-9.79313|0.14573 +2016-07-01|38.0|-30.0|-10.15242|0.14651 +2016-07-01|38.0|-31.0|-10.50765|0.14725 +2016-07-01|38.0|-32.0|-10.85844|0.14794 +2016-07-01|38.0|-33.0|-11.20444|0.14858 +2016-07-01|38.0|-34.0|-11.54525|0.14915 +2016-07-01|38.0|-35.0|-11.88047|0.14965 +2016-07-01|38.0|-36.0|-12.20968|0.15006 +2016-07-01|38.0|-37.0|-12.53241|0.15037 +2016-07-01|38.0|-38.0|-12.84817|0.15057 +2016-07-01|38.0|-39.0|-13.1564|0.15065 +2016-07-01|38.0|-40.0|-13.45651|0.15058 +2016-07-01|38.0|-41.0|-13.74786|0.15035 +2016-07-01|38.0|-42.0|-14.02974|0.14995 +2016-07-01|38.0|-43.0|-14.30139|0.14936 +2016-07-01|38.0|-44.0|-14.562|0.14858 +2016-07-01|38.0|-45.0|-14.81069|0.14757 +2016-07-01|38.0|-46.0|-15.04653|0.14635 +2016-07-01|38.0|-47.0|-15.26854|0.14488 +2016-07-01|38.0|-48.0|-15.47571|0.14316 +2016-07-01|38.0|-49.0|-15.66697|0.14118 +2016-07-01|38.0|-50.0|-15.84121|0.13894 +2016-07-01|38.0|-51.0|-15.99731|0.13642 +2016-07-01|38.0|-52.0|-16.13413|0.13361 +2016-07-01|38.0|-53.0|-16.2505|0.13052 +2016-07-01|38.0|-54.0|-16.34527|0.12714 +2016-07-01|38.0|-55.0|-16.41728|0.12346 +2016-07-01|38.0|-56.0|-16.46539|0.1195 +2016-07-01|38.0|-57.0|-16.4885|0.11524 +2016-07-01|38.0|-58.0|-16.48553|0.1107 +2016-07-01|38.0|-59.0|-16.45547|0.10587 +2016-07-01|38.0|-60.0|-16.39733|0.10076 +2016-07-01|38.0|-61.0|-16.31022|0.09538 +2016-07-01|38.0|-62.0|-16.19331|0.08974 +2016-07-01|38.0|-63.0|-16.04587|0.08385 +2016-07-01|38.0|-64.0|-15.86725|0.07773 +2016-07-01|38.0|-65.0|-15.65692|0.07137 +2016-07-01|38.0|-66.0|-15.41447|0.06482 +2016-07-01|38.0|-67.0|-15.13959|0.05807 +2016-07-01|38.0|-68.0|-14.83213|0.05115 +2016-07-01|38.0|-69.0|-14.49206|0.04408 +2016-07-01|38.0|-70.0|-14.11951|0.03689 +2016-07-01|38.0|-71.0|-13.71478|0.02959 +2016-07-01|38.0|-72.0|-13.2783|0.02223 +2016-07-01|38.0|-73.0|-12.8107|0.01483 +2016-07-01|38.0|-74.0|-12.31275|0.00741 +2016-07-01|38.0|-75.0|-11.78543|1.0E-5 +2016-07-01|38.0|-76.0|-11.22986|-0.00733 +2016-07-01|38.0|-77.0|-10.64737|-0.01459 +2016-07-01|38.0|-78.0|-10.03943|-0.02172 +2016-07-01|38.0|-79.0|-9.40769|-0.0287 +2016-07-01|38.0|-80.0|-8.75397|-0.03549 +2016-07-01|38.0|-81.0|-8.08022|-0.04206 +2016-07-01|38.0|-82.0|-7.38854|-0.04837 +2016-07-01|38.0|-83.0|-6.68114|-0.05441 +2016-07-01|38.0|-84.0|-5.96035|-0.06013 +2016-07-01|38.0|-85.0|-5.22856|-0.06552 +2016-07-01|38.0|-86.0|-4.48824|-0.07057 +2016-07-01|38.0|-87.0|-3.74191|-0.07524 +2016-07-01|38.0|-88.0|-2.99207|-0.07954 +2016-07-01|38.0|-89.0|-2.24125|-0.08345 +2016-07-01|38.0|-90.0|-1.49192|-0.08697 +2016-07-01|38.0|-91.0|-0.74649|-0.09011 +2016-07-01|38.0|-92.0|-0.00731|-0.09286 +2016-07-01|38.0|-93.0|0.7234|-0.09525 +2016-07-01|38.0|-94.0|1.44352|-0.09728 +2016-07-01|38.0|-95.0|2.1511|-0.09897 +2016-07-01|38.0|-96.0|2.84431|-0.10034 +2016-07-01|38.0|-97.0|3.52151|-0.10142 +2016-07-01|38.0|-98.0|4.18122|-0.10222 +2016-07-01|38.0|-99.0|4.82216|-0.10278 +2016-07-01|38.0|-100.0|5.44321|-0.10312 +2016-07-01|38.0|-101.0|6.04343|-0.10327 +2016-07-01|38.0|-102.0|6.62209|-0.10325 +2016-07-01|38.0|-103.0|7.17858|-0.10309 +2016-07-01|38.0|-104.0|7.71249|-0.10282 +2016-07-01|38.0|-105.0|8.22356|-0.10245 +2016-07-01|38.0|-106.0|8.71164|-0.10202 +2016-07-01|38.0|-107.0|9.17675|-0.10153 +2016-07-01|38.0|-108.0|9.61899|-0.10101 +2016-07-01|38.0|-109.0|10.03857|-0.10048 +2016-07-01|38.0|-110.0|10.43581|-0.09995 +2016-07-01|38.0|-111.0|10.81106|-0.09943 +2016-07-01|38.0|-112.0|11.16476|-0.09893 +2016-07-01|38.0|-113.0|11.49739|-0.09847 +2016-07-01|38.0|-114.0|11.80945|-0.09804 +2016-07-01|38.0|-115.0|12.10147|-0.09766 +2016-07-01|38.0|-116.0|12.37399|-0.09732 +2016-07-01|38.0|-117.0|12.62757|-0.09704 +2016-07-01|38.0|-118.0|12.86272|-0.09681 +2016-07-01|38.0|-119.0|13.07998|-0.09663 +2016-07-01|38.0|-120.0|13.27985|-0.0965 +2016-07-01|38.0|-121.0|13.46281|-0.09643 +2016-07-01|38.0|-122.0|13.62933|-0.09642 +2016-07-01|38.0|-123.0|13.77983|-0.09645 +2016-07-01|38.0|-124.0|13.9147|-0.09653 +2016-07-01|38.0|-125.0|14.03433|-0.09667 +2016-07-01|38.0|-126.0|14.13906|-0.09685 +2016-07-01|38.0|-127.0|14.22922|-0.09707 +2016-07-01|38.0|-128.0|14.3051|-0.09734 +2016-07-01|38.0|-129.0|14.36698|-0.09766 +2016-07-01|38.0|-130.0|14.41514|-0.09801 +2016-07-01|38.0|-131.0|14.44982|-0.09841 +2016-07-01|38.0|-132.0|14.47128|-0.09884 +2016-07-01|38.0|-133.0|14.47976|-0.09932 +2016-07-01|38.0|-134.0|14.47551|-0.09983 +2016-07-01|38.0|-135.0|14.45878|-0.10037 +2016-07-01|38.0|-136.0|14.42982|-0.10096 +2016-07-01|38.0|-137.0|14.3889|-0.10157 +2016-07-01|38.0|-138.0|14.3363|-0.10222 +2016-07-01|38.0|-139.0|14.27231|-0.1029 +2016-07-01|38.0|-140.0|14.19725|-0.10361 +2016-07-01|38.0|-141.0|14.11143|-0.10434 +2016-07-01|38.0|-142.0|14.01518|-0.10509 +2016-07-01|38.0|-143.0|13.90886|-0.10586 +2016-07-01|38.0|-144.0|13.79283|-0.10665 +2016-07-01|38.0|-145.0|13.66745|-0.10744 +2016-07-01|38.0|-146.0|13.53309|-0.10824 +2016-07-01|38.0|-147.0|13.39015|-0.10903 +2016-07-01|38.0|-148.0|13.23898|-0.1098 +2016-07-01|38.0|-149.0|13.07997|-0.11056 +2016-07-01|38.0|-150.0|12.91346|-0.1113 +2016-07-01|38.0|-151.0|12.73981|-0.11199 +2016-07-01|38.0|-152.0|12.55935|-0.11264 +2016-07-01|38.0|-153.0|12.37238|-0.11324 +2016-07-01|38.0|-154.0|12.17919|-0.11377 +2016-07-01|38.0|-155.0|11.98002|-0.11422 +2016-07-01|38.0|-156.0|11.77511|-0.11458 +2016-07-01|38.0|-157.0|11.56463|-0.11485 +2016-07-01|38.0|-158.0|11.34874|-0.11502 +2016-07-01|38.0|-159.0|11.12755|-0.11507 +2016-07-01|38.0|-160.0|10.90115|-0.11499 +2016-07-01|38.0|-161.0|10.66958|-0.11478 +2016-07-01|38.0|-162.0|10.43285|-0.11443 +2016-07-01|38.0|-163.0|10.19094|-0.11393 +2016-07-01|38.0|-164.0|9.9438|-0.11328 +2016-07-01|38.0|-165.0|9.69135|-0.11247 +2016-07-01|38.0|-166.0|9.4335|-0.11151 +2016-07-01|38.0|-167.0|9.17014|-0.11038 +2016-07-01|38.0|-168.0|8.90114|-0.10909 +2016-07-01|38.0|-169.0|8.62637|-0.10764 +2016-07-01|38.0|-170.0|8.34571|-0.10603 +2016-07-01|38.0|-171.0|8.05904|-0.10427 +2016-07-01|38.0|-172.0|7.76623|-0.10237 +2016-07-01|38.0|-173.0|7.46721|-0.10032 +2016-07-01|38.0|-174.0|7.16189|-0.09815 +2016-07-01|38.0|-175.0|6.85022|-0.09586 +2016-07-01|38.0|-176.0|6.5322|-0.09346 +2016-07-01|38.0|-177.0|6.20783|-0.09097 +2016-07-01|38.0|-178.0|5.87718|-0.0884 +2016-07-01|38.0|-179.0|5.54035|-0.08576 +2016-07-01|39.0|0.0|0.15965|0.11152 +2016-07-01|39.0|1.0|0.41144|0.11006 +2016-07-01|39.0|2.0|0.65432|0.10866 +2016-07-01|39.0|3.0|0.88852|0.10734 +2016-07-01|39.0|4.0|1.11435|0.1061 +2016-07-01|39.0|5.0|1.33214|0.10495 +2016-07-01|39.0|6.0|1.54228|0.1039 +2016-07-01|39.0|7.0|1.74519|0.10296 +2016-07-01|39.0|8.0|1.94132|0.10213 +2016-07-01|39.0|9.0|2.13112|0.10141 +2016-07-01|39.0|10.0|2.31505|0.1008 +2016-07-01|39.0|11.0|2.49357|0.1003 +2016-07-01|39.0|12.0|2.6671|0.0999 +2016-07-01|39.0|13.0|2.83605|0.0996 +2016-07-01|39.0|14.0|3.00076|0.09939 +2016-07-01|39.0|15.0|3.16157|0.09925 +2016-07-01|39.0|16.0|3.31872|0.09918 +2016-07-01|39.0|17.0|3.47242|0.09915 +2016-07-01|39.0|18.0|3.62281|0.09916 +2016-07-01|39.0|19.0|3.76995|0.09919 +2016-07-01|39.0|20.0|3.91386|0.09923 +2016-07-01|39.0|21.0|4.05448|0.09924 +2016-07-01|39.0|22.0|4.19167|0.09923 +2016-07-01|39.0|23.0|4.32527|0.09917 +2016-07-01|39.0|24.0|4.45505|0.09904 +2016-07-01|39.0|25.0|4.58071|0.09883 +2016-07-01|39.0|26.0|4.70195|0.09853 +2016-07-01|39.0|27.0|4.81842|0.09813 +2016-07-01|39.0|28.0|4.92976|0.09761 +2016-07-01|39.0|29.0|5.0356|0.09697 +2016-07-01|39.0|30.0|5.13557|0.0962 +2016-07-01|39.0|31.0|5.2293|0.09531 +2016-07-01|39.0|32.0|5.31647|0.09428 +2016-07-01|39.0|33.0|5.39677|0.09313 +2016-07-01|39.0|34.0|5.46993|0.09185 +2016-07-01|39.0|35.0|5.53573|0.09046 +2016-07-01|39.0|36.0|5.59401|0.08897 +2016-07-01|39.0|37.0|5.64467|0.08738 +2016-07-01|39.0|38.0|5.68765|0.0857 +2016-07-01|39.0|39.0|5.72298|0.08397 +2016-07-01|39.0|40.0|5.75073|0.08218 +2016-07-01|39.0|41.0|5.77106|0.08035 +2016-07-01|39.0|42.0|5.78416|0.07852 +2016-07-01|39.0|43.0|5.79029|0.07668 +2016-07-01|39.0|44.0|5.78975|0.07486 +2016-07-01|39.0|45.0|5.78289|0.07308 +2016-07-01|39.0|46.0|5.77007|0.07134 +2016-07-01|39.0|47.0|5.7517|0.06968 +2016-07-01|39.0|48.0|5.72819|0.06809 +2016-07-01|39.0|49.0|5.69994|0.06659 +2016-07-01|39.0|50.0|5.66738|0.06519 +2016-07-01|39.0|51.0|5.63088|0.0639 +2016-07-01|39.0|52.0|5.59082|0.06271 +2016-07-01|39.0|53.0|5.54753|0.06164 +2016-07-01|39.0|54.0|5.50132|0.06069 +2016-07-01|39.0|55.0|5.45243|0.05984 +2016-07-01|39.0|56.0|5.40106|0.0591 +2016-07-01|39.0|57.0|5.34738|0.05846 +2016-07-01|39.0|58.0|5.29148|0.05792 +2016-07-01|39.0|59.0|5.23341|0.05746 +2016-07-01|39.0|60.0|5.17316|0.05708 +2016-07-01|39.0|61.0|5.11068|0.05675 +2016-07-01|39.0|62.0|5.04587|0.05648 +2016-07-01|39.0|63.0|4.97858|0.05624 +2016-07-01|39.0|64.0|4.90863|0.05603 +2016-07-01|39.0|65.0|4.83581|0.05582 +2016-07-01|39.0|66.0|4.75988|0.05561 +2016-07-01|39.0|67.0|4.68057|0.05538 +2016-07-01|39.0|68.0|4.5976|0.05513 +2016-07-01|39.0|69.0|4.5107|0.05482 +2016-07-01|39.0|70.0|4.41957|0.05446 +2016-07-01|39.0|71.0|4.32391|0.05404 +2016-07-01|39.0|72.0|4.22344|0.05354 +2016-07-01|39.0|73.0|4.11788|0.05294 +2016-07-01|39.0|74.0|4.00696|0.05226 +2016-07-01|39.0|75.0|3.89042|0.05146 +2016-07-01|39.0|76.0|3.76802|0.05056 +2016-07-01|39.0|77.0|3.63953|0.04953 +2016-07-01|39.0|78.0|3.50472|0.04839 +2016-07-01|39.0|79.0|3.3634|0.04711 +2016-07-01|39.0|80.0|3.21538|0.0457 +2016-07-01|39.0|81.0|3.06048|0.04415 +2016-07-01|39.0|82.0|2.89853|0.04246 +2016-07-01|39.0|83.0|2.72938|0.04064 +2016-07-01|39.0|84.0|2.55288|0.03866 +2016-07-01|39.0|85.0|2.36889|0.03655 +2016-07-01|39.0|86.0|2.1773|0.03429 +2016-07-01|39.0|87.0|1.97797|0.03189 +2016-07-01|39.0|88.0|1.7708|0.02935 +2016-07-01|39.0|89.0|1.55571|0.02668 +2016-07-01|39.0|90.0|1.33261|0.02387 +2016-07-01|39.0|91.0|1.10144|0.02092 +2016-07-01|39.0|92.0|0.86219|0.01786 +2016-07-01|39.0|93.0|0.61483|0.01468 +2016-07-01|39.0|94.0|0.35941|0.01138 +2016-07-01|39.0|95.0|0.096|0.00799 +2016-07-01|39.0|96.0|-0.17528|0.00451 +2016-07-01|39.0|97.0|-0.45426|9.4E-4 +2016-07-01|39.0|98.0|-0.7407|-0.00269 +2016-07-01|39.0|99.0|-1.0343|-0.00637 +2016-07-01|39.0|100.0|-1.33469|-0.0101 +2016-07-01|39.0|101.0|-1.64142|-0.01384 +2016-07-01|39.0|102.0|-1.95395|-0.0176 +2016-07-01|39.0|103.0|-2.27168|-0.02133 +2016-07-01|39.0|104.0|-2.59388|-0.02504 +2016-07-01|39.0|105.0|-2.91979|-0.0287 +2016-07-01|39.0|106.0|-3.24851|-0.03229 +2016-07-01|39.0|107.0|-3.57909|-0.03579 +2016-07-01|39.0|108.0|-3.9105|-0.03918 +2016-07-01|39.0|109.0|-4.24163|-0.04244 +2016-07-01|39.0|110.0|-4.57131|-0.04556 +2016-07-01|39.0|111.0|-4.89831|-0.04852 +2016-07-01|39.0|112.0|-5.22137|-0.0513 +2016-07-01|39.0|113.0|-5.53918|-0.05388 +2016-07-01|39.0|114.0|-5.85042|-0.05627 +2016-07-01|39.0|115.0|-6.15377|-0.05844 +2016-07-01|39.0|116.0|-6.4479|-0.06038 +2016-07-01|39.0|117.0|-6.73152|-0.0621 +2016-07-01|39.0|118.0|-7.00337|-0.06358 +2016-07-01|39.0|119.0|-7.26223|-0.06483 +2016-07-01|39.0|120.0|-7.50693|-0.06584 +2016-07-01|39.0|121.0|-7.73639|-0.06663 +2016-07-01|39.0|122.0|-7.9496|-0.06718 +2016-07-01|39.0|123.0|-8.14563|-0.06752 +2016-07-01|39.0|124.0|-8.32365|-0.06764 +2016-07-01|39.0|125.0|-8.48293|-0.06756 +2016-07-01|39.0|126.0|-8.62283|-0.06729 +2016-07-01|39.0|127.0|-8.74284|-0.06685 +2016-07-01|39.0|128.0|-8.84252|-0.06624 +2016-07-01|39.0|129.0|-8.92156|-0.06548 +2016-07-01|39.0|130.0|-8.97974|-0.06458 +2016-07-01|39.0|131.0|-9.01693|-0.06357 +2016-07-01|39.0|132.0|-9.03313|-0.06245 +2016-07-01|39.0|133.0|-9.02838|-0.06125 +2016-07-01|39.0|134.0|-9.00285|-0.05997 +2016-07-01|39.0|135.0|-8.95674|-0.05863 +2016-07-01|39.0|136.0|-8.89037|-0.05725 +2016-07-01|39.0|137.0|-8.8041|-0.05584 +2016-07-01|39.0|138.0|-8.69834|-0.05442 +2016-07-01|39.0|139.0|-8.57356|-0.05299 +2016-07-01|39.0|140.0|-8.43029|-0.05158 +2016-07-01|39.0|141.0|-8.26907|-0.0502 +2016-07-01|39.0|142.0|-8.09051|-0.04885 +2016-07-01|39.0|143.0|-7.89521|-0.04755 +2016-07-01|39.0|144.0|-7.68381|-0.04631 +2016-07-01|39.0|145.0|-7.45696|-0.04514 +2016-07-01|39.0|146.0|-7.21535|-0.04406 +2016-07-01|39.0|147.0|-6.95964|-0.04306 +2016-07-01|39.0|148.0|-6.69052|-0.04216 +2016-07-01|39.0|149.0|-6.40868|-0.04138 +2016-07-01|39.0|150.0|-6.11481|-0.04071 +2016-07-01|39.0|151.0|-5.8096|-0.04017 +2016-07-01|39.0|152.0|-5.49375|-0.03976 +2016-07-01|39.0|153.0|-5.16794|-0.03949 +2016-07-01|39.0|154.0|-4.83285|-0.03937 +2016-07-01|39.0|155.0|-4.48917|-0.0394 +2016-07-01|39.0|156.0|-4.13758|-0.03959 +2016-07-01|39.0|157.0|-3.77873|-0.03994 +2016-07-01|39.0|158.0|-3.41332|-0.04045 +2016-07-01|39.0|159.0|-3.04199|-0.04114 +2016-07-01|39.0|160.0|-2.66541|-0.04199 +2016-07-01|39.0|161.0|-2.28424|-0.04301 +2016-07-01|39.0|162.0|-1.89913|-0.04421 +2016-07-01|39.0|163.0|-1.51071|-0.04557 +2016-07-01|39.0|164.0|-1.11964|-0.04709 +2016-07-01|39.0|165.0|-0.72653|-0.04878 +2016-07-01|39.0|166.0|-0.33201|-0.05063 +2016-07-01|39.0|167.0|0.0633|-0.05262 +2016-07-01|39.0|168.0|0.45881|-0.05476 +2016-07-01|39.0|169.0|0.85393|-0.05703 +2016-07-01|39.0|170.0|1.2481|-0.05943 +2016-07-01|39.0|171.0|1.64077|-0.06193 +2016-07-01|39.0|172.0|2.0314|-0.06454 +2016-07-01|39.0|173.0|2.4195|-0.06724 +2016-07-01|39.0|174.0|2.80458|-0.07 +2016-07-01|39.0|175.0|3.1862|-0.07283 +2016-07-01|39.0|176.0|3.56394|-0.07569 +2016-07-01|39.0|177.0|3.93741|-0.07858 +2016-07-01|39.0|178.0|4.30627|-0.08148 +2016-07-01|39.0|179.0|4.67021|-0.08437 +2016-07-01|39.0|-1.0|-0.10121|0.11304 +2016-07-01|39.0|-2.0|-0.37125|0.1146 +2016-07-01|39.0|-3.0|-0.65047|0.11618 +2016-07-01|39.0|-4.0|-0.93884|0.11779 +2016-07-01|39.0|-5.0|-1.23621|0.1194 +2016-07-01|39.0|-6.0|-1.54238|0.12101 +2016-07-01|39.0|-7.0|-1.85708|0.12261 +2016-07-01|39.0|-8.0|-2.17996|0.12418 +2016-07-01|39.0|-9.0|-2.5106|0.12573 +2016-07-01|39.0|-10.0|-2.84853|0.12724 +2016-07-01|39.0|-11.0|-3.19324|0.12872 +2016-07-01|39.0|-12.0|-3.54416|0.13014 +2016-07-01|39.0|-13.0|-3.90069|0.13153 +2016-07-01|39.0|-14.0|-4.26221|0.13287 +2016-07-01|39.0|-15.0|-4.62807|0.13416 +2016-07-01|39.0|-16.0|-4.99762|0.1354 +2016-07-01|39.0|-17.0|-5.3702|0.1366 +2016-07-01|39.0|-18.0|-5.74518|0.13776 +2016-07-01|39.0|-19.0|-6.1219|0.13889 +2016-07-01|39.0|-20.0|-6.49975|0.13997 +2016-07-01|39.0|-21.0|-6.87813|0.14103 +2016-07-01|39.0|-22.0|-7.25647|0.14205 +2016-07-01|39.0|-23.0|-7.63423|0.14305 +2016-07-01|39.0|-24.0|-8.01089|0.14402 +2016-07-01|39.0|-25.0|-8.38598|0.14497 +2016-07-01|39.0|-26.0|-8.75904|0.14589 +2016-07-01|39.0|-27.0|-9.12964|0.14679 +2016-07-01|39.0|-28.0|-9.49739|0.14767 +2016-07-01|39.0|-29.0|-9.86188|0.14852 +2016-07-01|39.0|-30.0|-10.22276|0.14933 +2016-07-01|39.0|-31.0|-10.57966|0.15011 +2016-07-01|39.0|-32.0|-10.93221|0.15084 +2016-07-01|39.0|-33.0|-11.28005|0.15152 +2016-07-01|39.0|-34.0|-11.62281|0.15213 +2016-07-01|39.0|-35.0|-11.96007|0.15267 +2016-07-01|39.0|-36.0|-12.29141|0.15313 +2016-07-01|39.0|-37.0|-12.61638|0.15349 +2016-07-01|39.0|-38.0|-12.93448|0.15374 +2016-07-01|39.0|-39.0|-13.24516|0.15386 +2016-07-01|39.0|-40.0|-13.54784|0.15385 +2016-07-01|39.0|-41.0|-13.84188|0.15368 +2016-07-01|39.0|-42.0|-14.12657|0.15335 +2016-07-01|39.0|-43.0|-14.40116|0.15284 +2016-07-01|39.0|-44.0|-14.66486|0.15214 +2016-07-01|39.0|-45.0|-14.91677|0.15122 +2016-07-01|39.0|-46.0|-15.156|0.15009 +2016-07-01|39.0|-47.0|-15.38157|0.14872 +2016-07-01|39.0|-48.0|-15.59245|0.14711 +2016-07-01|39.0|-49.0|-15.7876|0.14525 +2016-07-01|39.0|-50.0|-15.9659|0.14313 +2016-07-01|39.0|-51.0|-16.12625|0.14074 +2016-07-01|39.0|-52.0|-16.26747|0.13807 +2016-07-01|39.0|-53.0|-16.38842|0.13512 +2016-07-01|39.0|-54.0|-16.48793|0.13188 +2016-07-01|39.0|-55.0|-16.56482|0.12836 +2016-07-01|39.0|-56.0|-16.61796|0.12455 +2016-07-01|39.0|-57.0|-16.64619|0.12045 +2016-07-01|39.0|-58.0|-16.64844|0.11606 +2016-07-01|39.0|-59.0|-16.62363|0.11139 +2016-07-01|39.0|-60.0|-16.57078|0.10644 +2016-07-01|39.0|-61.0|-16.48894|0.10122 +2016-07-01|39.0|-62.0|-16.37723|0.09573 +2016-07-01|39.0|-63.0|-16.23488|0.08999 +2016-07-01|39.0|-64.0|-16.06119|0.084 +2016-07-01|39.0|-65.0|-15.85558|0.07778 +2016-07-01|39.0|-66.0|-15.61756|0.07134 +2016-07-01|39.0|-67.0|-15.34678|0.0647 +2016-07-01|39.0|-68.0|-15.04301|0.05787 +2016-07-01|39.0|-69.0|-14.70619|0.05089 +2016-07-01|39.0|-70.0|-14.33636|0.04376 +2016-07-01|39.0|-71.0|-13.93377|0.03652 +2016-07-01|39.0|-72.0|-13.49879|0.02918 +2016-07-01|39.0|-73.0|-13.03199|0.02179 +2016-07-01|39.0|-74.0|-12.53411|0.01436 +2016-07-01|39.0|-75.0|-12.00607|0.00693 +2016-07-01|39.0|-76.0|-11.44896|-4.8E-4 +2016-07-01|39.0|-77.0|-10.86406|-0.00781 +2016-07-01|39.0|-78.0|-10.25284|-0.01505 +2016-07-01|39.0|-79.0|-9.61693|-0.02216 +2016-07-01|39.0|-80.0|-8.95813|-0.02909 +2016-07-01|39.0|-81.0|-8.27842|-0.03583 +2016-07-01|39.0|-82.0|-7.57989|-0.04234 +2016-07-01|39.0|-83.0|-6.86479|-0.04859 +2016-07-01|39.0|-84.0|-6.13547|-0.05455 +2016-07-01|39.0|-85.0|-5.39438|-0.06019 +2016-07-01|39.0|-86.0|-4.64402|-0.0655 +2016-07-01|39.0|-87.0|-3.88697|-0.07045 +2016-07-01|39.0|-88.0|-3.1258|-0.07504 +2016-07-01|39.0|-89.0|-2.36309|-0.07925 +2016-07-01|39.0|-90.0|-1.60139|-0.08309 +2016-07-01|39.0|-91.0|-0.84319|-0.08654 +2016-07-01|39.0|-92.0|-0.09089|-0.08962 +2016-07-01|39.0|-93.0|0.6532|-0.09233 +2016-07-01|39.0|-94.0|1.3869|-0.09468 +2016-07-01|39.0|-95.0|2.10818|-0.09669 +2016-07-01|39.0|-96.0|2.81515|-0.09838 +2016-07-01|39.0|-97.0|3.50611|-0.09977 +2016-07-01|39.0|-98.0|4.17952|-0.10089 +2016-07-01|39.0|-99.0|4.83403|-0.10175 +2016-07-01|39.0|-100.0|5.46849|-0.10238 +2016-07-01|39.0|-101.0|6.08191|-0.10281 +2016-07-01|39.0|-102.0|6.67351|-0.10307 +2016-07-01|39.0|-103.0|7.24265|-0.10318 +2016-07-01|39.0|-104.0|7.78889|-0.10316 +2016-07-01|39.0|-105.0|8.31193|-0.10304 +2016-07-01|39.0|-106.0|8.81161|-0.10284 +2016-07-01|39.0|-107.0|9.2879|-0.10258 +2016-07-01|39.0|-108.0|9.74091|-0.10227 +2016-07-01|39.0|-109.0|10.17083|-0.10194 +2016-07-01|39.0|-110.0|10.57793|-0.10161 +2016-07-01|39.0|-111.0|10.96259|-0.10127 +2016-07-01|39.0|-112.0|11.32523|-0.10095 +2016-07-01|39.0|-113.0|11.6663|-0.10065 +2016-07-01|39.0|-114.0|11.98631|-0.10038 +2016-07-01|39.0|-115.0|12.28579|-0.10015 +2016-07-01|39.0|-116.0|12.56528|-0.09996 +2016-07-01|39.0|-117.0|12.82531|-0.09981 +2016-07-01|39.0|-118.0|13.06643|-0.09971 +2016-07-01|39.0|-119.0|13.28916|-0.09966 +2016-07-01|39.0|-120.0|13.494|-0.09966 +2016-07-01|39.0|-121.0|13.68146|-0.09971 +2016-07-01|39.0|-122.0|13.85199|-0.09981 +2016-07-01|39.0|-123.0|14.00602|-0.09996 +2016-07-01|39.0|-124.0|14.14398|-0.10015 +2016-07-01|39.0|-125.0|14.26623|-0.10039 +2016-07-01|39.0|-126.0|14.37316|-0.10068 +2016-07-01|39.0|-127.0|14.46507|-0.10101 +2016-07-01|39.0|-128.0|14.5423|-0.10139 +2016-07-01|39.0|-129.0|14.60513|-0.1018 +2016-07-01|39.0|-130.0|14.65384|-0.10226 +2016-07-01|39.0|-131.0|14.6887|-0.10276 +2016-07-01|39.0|-132.0|14.70996|-0.10329 +2016-07-01|39.0|-133.0|14.71788|-0.10386 +2016-07-01|39.0|-134.0|14.71272|-0.10447 +2016-07-01|39.0|-135.0|14.69473|-0.10511 +2016-07-01|39.0|-136.0|14.66417|-0.10579 +2016-07-01|39.0|-137.0|14.62131|-0.1065 +2016-07-01|39.0|-138.0|14.56643|-0.10724 +2016-07-01|39.0|-139.0|14.49982|-0.10801 +2016-07-01|39.0|-140.0|14.42179|-0.1088 +2016-07-01|39.0|-141.0|14.33264|-0.10961 +2016-07-01|39.0|-142.0|14.23271|-0.11044 +2016-07-01|39.0|-143.0|14.12234|-0.11129 +2016-07-01|39.0|-144.0|14.00187|-0.11214 +2016-07-01|39.0|-145.0|13.87166|-0.113 +2016-07-01|39.0|-146.0|13.73207|-0.11386 +2016-07-01|39.0|-147.0|13.58348|-0.1147 +2016-07-01|39.0|-148.0|13.42623|-0.11553 +2016-07-01|39.0|-149.0|13.26069|-0.11634 +2016-07-01|39.0|-150.0|13.08721|-0.11711 +2016-07-01|39.0|-151.0|12.90613|-0.11784 +2016-07-01|39.0|-152.0|12.71777|-0.11852 +2016-07-01|39.0|-153.0|12.52244|-0.11913 +2016-07-01|39.0|-154.0|12.32041|-0.11968 +2016-07-01|39.0|-155.0|12.11194|-0.12014 +2016-07-01|39.0|-156.0|11.89726|-0.12051 +2016-07-01|39.0|-157.0|11.67657|-0.12077 +2016-07-01|39.0|-158.0|11.45004|-0.12093 +2016-07-01|39.0|-159.0|11.2178|-0.12096 +2016-07-01|39.0|-160.0|10.97996|-0.12086 +2016-07-01|39.0|-161.0|10.73658|-0.12062 +2016-07-01|39.0|-162.0|10.48773|-0.12024 +2016-07-01|39.0|-163.0|10.2334|-0.1197 +2016-07-01|39.0|-164.0|9.97359|-0.119 +2016-07-01|39.0|-165.0|9.70828|-0.11814 +2016-07-01|39.0|-166.0|9.4374|-0.11711 +2016-07-01|39.0|-167.0|9.16089|-0.11592 +2016-07-01|39.0|-168.0|8.87869|-0.11456 +2016-07-01|39.0|-169.0|8.59071|-0.11304 +2016-07-01|39.0|-170.0|8.29688|-0.11135 +2016-07-01|39.0|-171.0|7.99712|-0.1095 +2016-07-01|39.0|-172.0|7.69136|-0.1075 +2016-07-01|39.0|-173.0|7.37957|-0.10536 +2016-07-01|39.0|-174.0|7.06172|-0.10308 +2016-07-01|39.0|-175.0|6.73779|-0.10068 +2016-07-01|39.0|-176.0|6.40781|-0.09816 +2016-07-01|39.0|-177.0|6.07183|-0.09555 +2016-07-01|39.0|-178.0|5.72994|-0.09285 +2016-07-01|39.0|-179.0|5.38226|-0.09007 +2016-07-01|40.0|0.0|0.14508|0.1137 +2016-07-01|40.0|1.0|0.40171|0.11223 +2016-07-01|40.0|2.0|0.64958|0.11083 +2016-07-01|40.0|3.0|0.88889|0.10949 +2016-07-01|40.0|4.0|1.11991|0.10824 +2016-07-01|40.0|5.0|1.34296|0.10707 +2016-07-01|40.0|6.0|1.55841|0.10601 +2016-07-01|40.0|7.0|1.76665|0.10504 +2016-07-01|40.0|8.0|1.96809|0.10418 +2016-07-01|40.0|9.0|2.16319|0.10342 +2016-07-01|40.0|10.0|2.35237|0.10277 +2016-07-01|40.0|11.0|2.53607|0.10223 +2016-07-01|40.0|12.0|2.71471|0.10178 +2016-07-01|40.0|13.0|2.88868|0.10143 +2016-07-01|40.0|14.0|3.05834|0.10117 +2016-07-01|40.0|15.0|3.224|0.10098 +2016-07-01|40.0|16.0|3.38593|0.10085 +2016-07-01|40.0|17.0|3.54435|0.10077 +2016-07-01|40.0|18.0|3.6994|0.10073 +2016-07-01|40.0|19.0|3.85118|0.10071 +2016-07-01|40.0|20.0|3.99971|0.1007 +2016-07-01|40.0|21.0|4.14497|0.10067 +2016-07-01|40.0|22.0|4.28687|0.10062 +2016-07-01|40.0|23.0|4.42526|0.10052 +2016-07-01|40.0|24.0|4.55993|0.10037 +2016-07-01|40.0|25.0|4.69065|0.10014 +2016-07-01|40.0|26.0|4.81714|0.09983 +2016-07-01|40.0|27.0|4.93909|0.09942 +2016-07-01|40.0|28.0|5.05616|0.09891 +2016-07-01|40.0|29.0|5.16802|0.09828 +2016-07-01|40.0|30.0|5.27431|0.09753 +2016-07-01|40.0|31.0|5.3747|0.09666 +2016-07-01|40.0|32.0|5.46887|0.09567 +2016-07-01|40.0|33.0|5.55652|0.09455 +2016-07-01|40.0|34.0|5.63739|0.09332 +2016-07-01|40.0|35.0|5.71126|0.09197 +2016-07-01|40.0|36.0|5.77795|0.09052 +2016-07-01|40.0|37.0|5.83734|0.08898 +2016-07-01|40.0|38.0|5.88935|0.08735 +2016-07-01|40.0|39.0|5.93397|0.08566 +2016-07-01|40.0|40.0|5.97124|0.08391 +2016-07-01|40.0|41.0|6.00126|0.08213 +2016-07-01|40.0|42.0|6.02418|0.08032 +2016-07-01|40.0|43.0|6.0402|0.07851 +2016-07-01|40.0|44.0|6.04956|0.07671 +2016-07-01|40.0|45.0|6.05254|0.07493 +2016-07-01|40.0|46.0|6.04945|0.0732 +2016-07-01|40.0|47.0|6.04063|0.07152 +2016-07-01|40.0|48.0|6.02641|0.06991 +2016-07-01|40.0|49.0|6.00715|0.06838 +2016-07-01|40.0|50.0|5.9832|0.06693 +2016-07-01|40.0|51.0|5.95488|0.06558 +2016-07-01|40.0|52.0|5.92251|0.06433 +2016-07-01|40.0|53.0|5.88639|0.06319 +2016-07-01|40.0|54.0|5.84675|0.06214 +2016-07-01|40.0|55.0|5.80383|0.0612 +2016-07-01|40.0|56.0|5.75779|0.06036 +2016-07-01|40.0|57.0|5.70875|0.05962 +2016-07-01|40.0|58.0|5.6568|0.05896 +2016-07-01|40.0|59.0|5.60198|0.05838 +2016-07-01|40.0|60.0|5.54426|0.05787 +2016-07-01|40.0|61.0|5.48359|0.05742 +2016-07-01|40.0|62.0|5.41987|0.05702 +2016-07-01|40.0|63.0|5.35295|0.05666 +2016-07-01|40.0|64.0|5.28267|0.05632 +2016-07-01|40.0|65.0|5.20881|0.05599 +2016-07-01|40.0|66.0|5.13115|0.05565 +2016-07-01|40.0|67.0|5.04944|0.0553 +2016-07-01|40.0|68.0|4.96341|0.05492 +2016-07-01|40.0|69.0|4.87279|0.05451 +2016-07-01|40.0|70.0|4.77731|0.05403 +2016-07-01|40.0|71.0|4.67668|0.0535 +2016-07-01|40.0|72.0|4.57063|0.05289 +2016-07-01|40.0|73.0|4.45889|0.05219 +2016-07-01|40.0|74.0|4.34119|0.05141 +2016-07-01|40.0|75.0|4.21729|0.05052 +2016-07-01|40.0|76.0|4.08696|0.04952 +2016-07-01|40.0|77.0|3.94996|0.04841 +2016-07-01|40.0|78.0|3.80608|0.04718 +2016-07-01|40.0|79.0|3.65514|0.04582 +2016-07-01|40.0|80.0|3.49694|0.04433 +2016-07-01|40.0|81.0|3.33132|0.04271 +2016-07-01|40.0|82.0|3.15811|0.04095 +2016-07-01|40.0|83.0|2.97717|0.03905 +2016-07-01|40.0|84.0|2.78837|0.03702 +2016-07-01|40.0|85.0|2.59159|0.03484 +2016-07-01|40.0|86.0|2.3867|0.03253 +2016-07-01|40.0|87.0|2.17363|0.03008 +2016-07-01|40.0|88.0|1.95227|0.02749 +2016-07-01|40.0|89.0|1.72257|0.02477 +2016-07-01|40.0|90.0|1.48449|0.02193 +2016-07-01|40.0|91.0|1.23799|0.01896 +2016-07-01|40.0|92.0|0.98309|0.01587 +2016-07-01|40.0|93.0|0.71982|0.01268 +2016-07-01|40.0|94.0|0.44826|0.00938 +2016-07-01|40.0|95.0|0.16853|0.00599 +2016-07-01|40.0|96.0|-0.1192|0.00252 +2016-07-01|40.0|97.0|-0.41471|-0.00103 +2016-07-01|40.0|98.0|-0.7177|-0.00462 +2016-07-01|40.0|99.0|-1.02783|-0.00827 +2016-07-01|40.0|100.0|-1.34466|-0.01194 +2016-07-01|40.0|101.0|-1.66769|-0.01562 +2016-07-01|40.0|102.0|-1.99633|-0.01929 +2016-07-01|40.0|103.0|-2.32993|-0.02294 +2016-07-01|40.0|104.0|-2.66771|-0.02655 +2016-07-01|40.0|105.0|-3.00885|-0.0301 +2016-07-01|40.0|106.0|-3.35244|-0.03358 +2016-07-01|40.0|107.0|-3.69746|-0.03695 +2016-07-01|40.0|108.0|-4.04285|-0.0402 +2016-07-01|40.0|109.0|-4.38747|-0.04332 +2016-07-01|40.0|110.0|-4.73013|-0.04629 +2016-07-01|40.0|111.0|-5.06957|-0.0491 +2016-07-01|40.0|112.0|-5.40452|-0.05171 +2016-07-01|40.0|113.0|-5.73365|-0.05414 +2016-07-01|40.0|114.0|-6.05563|-0.05635 +2016-07-01|40.0|115.0|-6.36915|-0.05836 +2016-07-01|40.0|116.0|-6.67288|-0.06013 +2016-07-01|40.0|117.0|-6.96552|-0.06168 +2016-07-01|40.0|118.0|-7.24583|-0.063 +2016-07-01|40.0|119.0|-7.51259|-0.06408 +2016-07-01|40.0|120.0|-7.76467|-0.06494 +2016-07-01|40.0|121.0|-8.00097|-0.06557 +2016-07-01|40.0|122.0|-8.22053|-0.06597 +2016-07-01|40.0|123.0|-8.42241|-0.06617 +2016-07-01|40.0|124.0|-8.60583|-0.06615 +2016-07-01|40.0|125.0|-8.77005|-0.06595 +2016-07-01|40.0|126.0|-8.91447|-0.06556 +2016-07-01|40.0|127.0|-9.03858|-0.065 +2016-07-01|40.0|128.0|-9.14198|-0.06429 +2016-07-01|40.0|129.0|-9.22437|-0.06344 +2016-07-01|40.0|130.0|-9.28554|-0.06246 +2016-07-01|40.0|131.0|-9.32539|-0.06137 +2016-07-01|40.0|132.0|-9.34392|-0.06019 +2016-07-01|40.0|133.0|-9.34119|-0.05894 +2016-07-01|40.0|134.0|-9.31738|-0.05761 +2016-07-01|40.0|135.0|-9.27272|-0.05625 +2016-07-01|40.0|136.0|-9.20752|-0.05485 +2016-07-01|40.0|137.0|-9.12214|-0.05343 +2016-07-01|40.0|138.0|-9.01704|-0.05201 +2016-07-01|40.0|139.0|-8.89267|-0.0506 +2016-07-01|40.0|140.0|-8.74958|-0.04922 +2016-07-01|40.0|141.0|-8.58832|-0.04787 +2016-07-01|40.0|142.0|-8.40949|-0.04657 +2016-07-01|40.0|143.0|-8.21373|-0.04533 +2016-07-01|40.0|144.0|-8.00166|-0.04416 +2016-07-01|40.0|145.0|-7.77396|-0.04308 +2016-07-01|40.0|146.0|-7.53131|-0.04208 +2016-07-01|40.0|147.0|-7.27439|-0.04119 +2016-07-01|40.0|148.0|-7.0039|-0.04041 +2016-07-01|40.0|149.0|-6.72053|-0.03976 +2016-07-01|40.0|150.0|-6.42497|-0.03922 +2016-07-01|40.0|151.0|-6.11793|-0.03883 +2016-07-01|40.0|152.0|-5.80011|-0.03858 +2016-07-01|40.0|153.0|-5.47218|-0.03847 +2016-07-01|40.0|154.0|-5.13484|-0.03852 +2016-07-01|40.0|155.0|-4.78877|-0.03873 +2016-07-01|40.0|156.0|-4.43464|-0.03911 +2016-07-01|40.0|157.0|-4.07313|-0.03965 +2016-07-01|40.0|158.0|-3.70489|-0.04036 +2016-07-01|40.0|159.0|-3.33059|-0.04125 +2016-07-01|40.0|160.0|-2.95088|-0.04231 +2016-07-01|40.0|161.0|-2.56641|-0.04354 +2016-07-01|40.0|162.0|-2.1778|-0.04494 +2016-07-01|40.0|163.0|-1.78569|-0.04652 +2016-07-01|40.0|164.0|-1.39071|-0.04826 +2016-07-01|40.0|165.0|-0.99346|-0.05016 +2016-07-01|40.0|166.0|-0.59455|-0.05222 +2016-07-01|40.0|167.0|-0.19457|-0.05442 +2016-07-01|40.0|168.0|0.20591|-0.05677 +2016-07-01|40.0|169.0|0.60631|-0.05924 +2016-07-01|40.0|170.0|1.00608|-0.06184 +2016-07-01|40.0|171.0|1.40471|-0.06454 +2016-07-01|40.0|172.0|1.80168|-0.06734 +2016-07-01|40.0|173.0|2.1965|-0.07022 +2016-07-01|40.0|174.0|2.58872|-0.07317 +2016-07-01|40.0|175.0|2.97788|-0.07617 +2016-07-01|40.0|176.0|3.36359|-0.07921 +2016-07-01|40.0|177.0|3.74547|-0.08227 +2016-07-01|40.0|178.0|4.12318|-0.08533 +2016-07-01|40.0|179.0|4.49639|-0.08838 +2016-07-01|40.0|-1.0|-0.12047|0.11522 +2016-07-01|40.0|-2.0|-0.39501|0.11678 +2016-07-01|40.0|-3.0|-0.67854|0.11837 +2016-07-01|40.0|-4.0|-0.97101|0.11997 +2016-07-01|40.0|-5.0|-1.27226|0.12159 +2016-07-01|40.0|-6.0|-1.5821|0.1232 +2016-07-01|40.0|-7.0|-1.90023|0.12481 +2016-07-01|40.0|-8.0|-2.22631|0.12639 +2016-07-01|40.0|-9.0|-2.55994|0.12795 +2016-07-01|40.0|-10.0|-2.90065|0.12948 +2016-07-01|40.0|-11.0|-3.24794|0.13097 +2016-07-01|40.0|-12.0|-3.60125|0.13242 +2016-07-01|40.0|-13.0|-3.96|0.13383 +2016-07-01|40.0|-14.0|-4.32358|0.13519 +2016-07-01|40.0|-15.0|-4.69138|0.13652 +2016-07-01|40.0|-16.0|-5.06275|0.13779 +2016-07-01|40.0|-17.0|-5.43706|0.13903 +2016-07-01|40.0|-18.0|-5.81368|0.14023 +2016-07-01|40.0|-19.0|-6.192|0.14139 +2016-07-01|40.0|-20.0|-6.57141|0.14252 +2016-07-01|40.0|-21.0|-6.95134|0.14362 +2016-07-01|40.0|-22.0|-7.33123|0.14468 +2016-07-01|40.0|-23.0|-7.71054|0.14573 +2016-07-01|40.0|-24.0|-8.08879|0.14674 +2016-07-01|40.0|-25.0|-8.4655|0.14773 +2016-07-01|40.0|-26.0|-8.84023|0.1487 +2016-07-01|40.0|-27.0|-9.21256|0.14965 +2016-07-01|40.0|-28.0|-9.58208|0.15056 +2016-07-01|40.0|-29.0|-9.94843|0.15145 +2016-07-01|40.0|-30.0|-10.31122|0.15231 +2016-07-01|40.0|-31.0|-10.6701|0.15313 +2016-07-01|40.0|-32.0|-11.02472|0.1539 +2016-07-01|40.0|-33.0|-11.37469|0.15461 +2016-07-01|40.0|-34.0|-11.71965|0.15527 +2016-07-01|40.0|-35.0|-12.05919|0.15585 +2016-07-01|40.0|-36.0|-12.39289|0.15635 +2016-07-01|40.0|-37.0|-12.72028|0.15676 +2016-07-01|40.0|-38.0|-13.04089|0.15706 +2016-07-01|40.0|-39.0|-13.35416|0.15724 +2016-07-01|40.0|-40.0|-13.65951|0.15728 +2016-07-01|40.0|-41.0|-13.9563|0.15718 +2016-07-01|40.0|-42.0|-14.24384|0.15691 +2016-07-01|40.0|-43.0|-14.52139|0.15647 +2016-07-01|40.0|-44.0|-14.78814|0.15585 +2016-07-01|40.0|-45.0|-15.04323|0.15502 +2016-07-01|40.0|-46.0|-15.28575|0.15398 +2016-07-01|40.0|-47.0|-15.51473|0.15271 +2016-07-01|40.0|-48.0|-15.72917|0.15121 +2016-07-01|40.0|-49.0|-15.92801|0.14946 +2016-07-01|40.0|-50.0|-16.11016|0.14746 +2016-07-01|40.0|-51.0|-16.27448|0.1452 +2016-07-01|40.0|-52.0|-16.41984|0.14266 +2016-07-01|40.0|-53.0|-16.54506|0.13985 +2016-07-01|40.0|-54.0|-16.64898|0.13676 +2016-07-01|40.0|-55.0|-16.73041|0.13339 +2016-07-01|40.0|-56.0|-16.78818|0.12973 +2016-07-01|40.0|-57.0|-16.82117|0.12579 +2016-07-01|40.0|-58.0|-16.82823|0.12156 +2016-07-01|40.0|-59.0|-16.80829|0.11705 +2016-07-01|40.0|-60.0|-16.76031|0.11226 +2016-07-01|40.0|-61.0|-16.68332|0.1072 +2016-07-01|40.0|-62.0|-16.57641|0.10187 +2016-07-01|40.0|-63.0|-16.43874|0.09627 +2016-07-01|40.0|-64.0|-16.26958|0.09043 +2016-07-01|40.0|-65.0|-16.06828|0.08434 +2016-07-01|40.0|-66.0|-15.83431|0.07803 +2016-07-01|40.0|-67.0|-15.56725|0.07151 +2016-07-01|40.0|-68.0|-15.26683|0.06479 +2016-07-01|40.0|-69.0|-14.9329|0.05789 +2016-07-01|40.0|-70.0|-14.56546|0.05083 +2016-07-01|40.0|-71.0|-14.16469|0.04365 +2016-07-01|40.0|-72.0|-13.73091|0.03635 +2016-07-01|40.0|-73.0|-13.26464|0.02897 +2016-07-01|40.0|-74.0|-12.76654|0.02153 +2016-07-01|40.0|-75.0|-12.23751|0.01407 +2016-07-01|40.0|-76.0|-11.67859|0.00662 +2016-07-01|40.0|-77.0|-11.09103|-7.9E-4 +2016-07-01|40.0|-78.0|-10.47627|-0.00813 +2016-07-01|40.0|-79.0|-9.83593|-0.01536 +2016-07-01|40.0|-80.0|-9.1718|-0.02245 +2016-07-01|40.0|-81.0|-8.48586|-0.02936 +2016-07-01|40.0|-82.0|-7.78021|-0.03606 +2016-07-01|40.0|-83.0|-7.05712|-0.04252 +2016-07-01|40.0|-84.0|-6.31898|-0.04872 +2016-07-01|40.0|-85.0|-5.56827|-0.05462 +2016-07-01|40.0|-86.0|-4.80755|-0.0602 +2016-07-01|40.0|-87.0|-4.03943|-0.06545 +2016-07-01|40.0|-88.0|-3.26657|-0.07034 +2016-07-01|40.0|-89.0|-2.4916|-0.07487 +2016-07-01|40.0|-90.0|-1.71715|-0.07902 +2016-07-01|40.0|-91.0|-0.94577|-0.08281 +2016-07-01|40.0|-92.0|-0.17994|-0.08622 +2016-07-01|40.0|-93.0|0.57795|-0.08927 +2016-07-01|40.0|-94.0|1.32565|-0.09196 +2016-07-01|40.0|-95.0|2.06105|-0.09431 +2016-07-01|40.0|-96.0|2.78221|-0.09633 +2016-07-01|40.0|-97.0|3.48734|-0.09806 +2016-07-01|40.0|-98.0|4.17486|-0.09949 +2016-07-01|40.0|-99.0|4.84335|-0.10067 +2016-07-01|40.0|-100.0|5.49162|-0.10162 +2016-07-01|40.0|-101.0|6.11862|-0.10235 +2016-07-01|40.0|-102.0|6.72352|-0.1029 +2016-07-01|40.0|-103.0|7.30567|-0.10329 +2016-07-01|40.0|-104.0|7.86456|-0.10354 +2016-07-01|40.0|-105.0|8.39988|-0.10368 +2016-07-01|40.0|-106.0|8.91144|-0.10372 +2016-07-01|40.0|-107.0|9.3992|-0.1037 +2016-07-01|40.0|-108.0|9.86322|-0.10362 +2016-07-01|40.0|-109.0|10.30369|-0.10351 +2016-07-01|40.0|-110.0|10.72087|-0.10338 +2016-07-01|40.0|-111.0|11.11512|-0.10324 +2016-07-01|40.0|-112.0|11.48685|-0.10311 +2016-07-01|40.0|-113.0|11.83651|-0.10298 +2016-07-01|40.0|-114.0|12.1646|-0.10289 +2016-07-01|40.0|-115.0|12.47165|-0.10281 +2016-07-01|40.0|-116.0|12.75818|-0.10278 +2016-07-01|40.0|-117.0|13.02474|-0.10278 +2016-07-01|40.0|-118.0|13.27187|-0.10282 +2016-07-01|40.0|-119.0|13.5001|-0.10291 +2016-07-01|40.0|-120.0|13.70995|-0.10304 +2016-07-01|40.0|-121.0|13.90189|-0.10322 +2016-07-01|40.0|-122.0|14.07642|-0.10344 +2016-07-01|40.0|-123.0|14.23397|-0.1037 +2016-07-01|40.0|-124.0|14.37497|-0.10402 +2016-07-01|40.0|-125.0|14.49981|-0.10437 +2016-07-01|40.0|-126.0|14.60886|-0.10477 +2016-07-01|40.0|-127.0|14.70247|-0.10521 +2016-07-01|40.0|-128.0|14.78096|-0.1057 +2016-07-01|40.0|-129.0|14.84464|-0.10622 +2016-07-01|40.0|-130.0|14.8938|-0.10678 +2016-07-01|40.0|-131.0|14.92871|-0.10738 +2016-07-01|40.0|-132.0|14.94965|-0.10802 +2016-07-01|40.0|-133.0|14.95689|-0.10869 +2016-07-01|40.0|-134.0|14.95067|-0.10939 +2016-07-01|40.0|-135.0|14.93127|-0.11013 +2016-07-01|40.0|-136.0|14.89895|-0.1109 +2016-07-01|40.0|-137.0|14.85399|-0.1117 +2016-07-01|40.0|-138.0|14.79665|-0.11253 +2016-07-01|40.0|-139.0|14.72725|-0.11338 +2016-07-01|40.0|-140.0|14.64606|-0.11425 +2016-07-01|40.0|-141.0|14.55341|-0.11514 +2016-07-01|40.0|-142.0|14.44961|-0.11605 +2016-07-01|40.0|-143.0|14.335|-0.11696 +2016-07-01|40.0|-144.0|14.20992|-0.11788 +2016-07-01|40.0|-145.0|14.07472|-0.1188 +2016-07-01|40.0|-146.0|13.92974|-0.11971 +2016-07-01|40.0|-147.0|13.77533|-0.1206 +2016-07-01|40.0|-148.0|13.61187|-0.12148 +2016-07-01|40.0|-149.0|13.43968|-0.12232 +2016-07-01|40.0|-150.0|13.25912|-0.12312 +2016-07-01|40.0|-151.0|13.07051|-0.12387 +2016-07-01|40.0|-152.0|12.87418|-0.12457 +2016-07-01|40.0|-153.0|12.67042|-0.1252 +2016-07-01|40.0|-154.0|12.45952|-0.12575 +2016-07-01|40.0|-155.0|12.24175|-0.12621 +2016-07-01|40.0|-156.0|12.01733|-0.12657 +2016-07-01|40.0|-157.0|11.78648|-0.12682 +2016-07-01|40.0|-158.0|11.54939|-0.12695 +2016-07-01|40.0|-159.0|11.3062|-0.12696 +2016-07-01|40.0|-160.0|11.05705|-0.12683 +2016-07-01|40.0|-161.0|10.80204|-0.12655 +2016-07-01|40.0|-162.0|10.54125|-0.12612 +2016-07-01|40.0|-163.0|10.27472|-0.12553 +2016-07-01|40.0|-164.0|10.00249|-0.12478 +2016-07-01|40.0|-165.0|9.72456|-0.12385 +2016-07-01|40.0|-166.0|9.44094|-0.12276 +2016-07-01|40.0|-167.0|9.1516|-0.1215 +2016-07-01|40.0|-168.0|8.85651|-0.12006 +2016-07-01|40.0|-169.0|8.55565|-0.11845 +2016-07-01|40.0|-170.0|8.24899|-0.11667 +2016-07-01|40.0|-171.0|7.93649|-0.11473 +2016-07-01|40.0|-172.0|7.61815|-0.11264 +2016-07-01|40.0|-173.0|7.29396|-0.11039 +2016-07-01|40.0|-174.0|6.96393|-0.108 +2016-07-01|40.0|-175.0|6.62809|-0.10549 +2016-07-01|40.0|-176.0|6.28651|-0.10285 +2016-07-01|40.0|-177.0|5.93926|-0.10011 +2016-07-01|40.0|-178.0|5.58646|-0.09728 +2016-07-01|40.0|-179.0|5.22826|-0.09437 +2016-07-01|41.0|0.0|0.12239|0.11597 +2016-07-01|41.0|1.0|0.38425|0.1145 +2016-07-01|41.0|2.0|0.63751|0.11308 +2016-07-01|41.0|3.0|0.88234|0.11174 +2016-07-01|41.0|4.0|1.119|0.11047 +2016-07-01|41.0|5.0|1.34777|0.10929 +2016-07-01|41.0|6.0|1.56899|0.10821 +2016-07-01|41.0|7.0|1.78304|0.10721 +2016-07-01|41.0|8.0|1.99031|0.10632 +2016-07-01|41.0|9.0|2.19123|0.10554 +2016-07-01|41.0|10.0|2.3862|0.10485 +2016-07-01|41.0|11.0|2.57565|0.10427 +2016-07-01|41.0|12.0|2.75998|0.10378 +2016-07-01|41.0|13.0|2.93957|0.10338 +2016-07-01|41.0|14.0|3.11478|0.10306 +2016-07-01|41.0|15.0|3.28593|0.10282 +2016-07-01|41.0|16.0|3.45328|0.10264 +2016-07-01|41.0|17.0|3.61705|0.10251 +2016-07-01|41.0|18.0|3.77741|0.10242 +2016-07-01|41.0|19.0|3.93447|0.10235 +2016-07-01|41.0|20.0|4.08829|0.10229 +2016-07-01|41.0|21.0|4.23885|0.10222 +2016-07-01|41.0|22.0|4.3861|0.10213 +2016-07-01|41.0|23.0|4.52991|0.102 +2016-07-01|41.0|24.0|4.67013|0.10182 +2016-07-01|41.0|25.0|4.80653|0.10157 +2016-07-01|41.0|26.0|4.93888|0.10124 +2016-07-01|41.0|27.0|5.0669|0.10082 +2016-07-01|41.0|28.0|5.19028|0.10031 +2016-07-01|41.0|29.0|5.3087|0.09969 +2016-07-01|41.0|30.0|5.42186|0.09895 +2016-07-01|41.0|31.0|5.52942|0.0981 +2016-07-01|41.0|32.0|5.63109|0.09713 +2016-07-01|41.0|33.0|5.72657|0.09605 +2016-07-01|41.0|34.0|5.81561|0.09485 +2016-07-01|41.0|35.0|5.89798|0.09355 +2016-07-01|41.0|36.0|5.97348|0.09214 +2016-07-01|41.0|37.0|6.04199|0.09064 +2016-07-01|41.0|38.0|6.1034|0.08906 +2016-07-01|41.0|39.0|6.15766|0.08741 +2016-07-01|41.0|40.0|6.20478|0.0857 +2016-07-01|41.0|41.0|6.24481|0.08395 +2016-07-01|41.0|42.0|6.27786|0.08218 +2016-07-01|41.0|43.0|6.30406|0.08039 +2016-07-01|41.0|44.0|6.3236|0.07861 +2016-07-01|41.0|45.0|6.33669|0.07684 +2016-07-01|41.0|46.0|6.34359|0.07511 +2016-07-01|41.0|47.0|6.34456|0.07342 +2016-07-01|41.0|48.0|6.33989|0.07179 +2016-07-01|41.0|49.0|6.32985|0.07023 +2016-07-01|41.0|50.0|6.31474|0.06875 +2016-07-01|41.0|51.0|6.29483|0.06734 +2016-07-01|41.0|52.0|6.27037|0.06603 +2016-07-01|41.0|53.0|6.24162|0.06481 +2016-07-01|41.0|54.0|6.20878|0.06369 +2016-07-01|41.0|55.0|6.17202|0.06266 +2016-07-01|41.0|56.0|6.13148|0.06172 +2016-07-01|41.0|57.0|6.08726|0.06086 +2016-07-01|41.0|58.0|6.03943|0.06009 +2016-07-01|41.0|59.0|5.98799|0.0594 +2016-07-01|41.0|60.0|5.93292|0.05877 +2016-07-01|41.0|61.0|5.87416|0.05819 +2016-07-01|41.0|62.0|5.8116|0.05766 +2016-07-01|41.0|63.0|5.74511|0.05717 +2016-07-01|41.0|64.0|5.67451|0.0567 +2016-07-01|41.0|65.0|5.59961|0.05623 +2016-07-01|41.0|66.0|5.52019|0.05577 +2016-07-01|41.0|67.0|5.43601|0.05529 +2016-07-01|41.0|68.0|5.34682|0.05479 +2016-07-01|41.0|69.0|5.25236|0.05425 +2016-07-01|41.0|70.0|5.15236|0.05365 +2016-07-01|41.0|71.0|5.04656|0.053 +2016-07-01|41.0|72.0|4.93468|0.05227 +2016-07-01|41.0|73.0|4.81649|0.05147 +2016-07-01|41.0|74.0|4.69171|0.05057 +2016-07-01|41.0|75.0|4.56011|0.04958 +2016-07-01|41.0|76.0|4.42147|0.04848 +2016-07-01|41.0|77.0|4.27557|0.04727 +2016-07-01|41.0|78.0|4.1222|0.04594 +2016-07-01|41.0|79.0|3.96117|0.04449 +2016-07-01|41.0|80.0|3.79231|0.04292 +2016-07-01|41.0|81.0|3.61546|0.04121 +2016-07-01|41.0|82.0|3.43047|0.03937 +2016-07-01|41.0|83.0|3.23721|0.03739 +2016-07-01|41.0|84.0|3.03555|0.03529 +2016-07-01|41.0|85.0|2.82539|0.03304 +2016-07-01|41.0|86.0|2.60664|0.03066 +2016-07-01|41.0|87.0|2.37922|0.02815 +2016-07-01|41.0|88.0|2.14307|0.02551 +2016-07-01|41.0|89.0|1.89817|0.02275 +2016-07-01|41.0|90.0|1.64448|0.01986 +2016-07-01|41.0|91.0|1.38204|0.01686 +2016-07-01|41.0|92.0|1.11088|0.01374 +2016-07-01|41.0|93.0|0.83109|0.01053 +2016-07-01|41.0|94.0|0.54278|0.00722 +2016-07-01|41.0|95.0|0.24613|0.00383 +2016-07-01|41.0|96.0|-0.05864|3.7E-4 +2016-07-01|41.0|97.0|-0.37125|-0.00315 +2016-07-01|41.0|98.0|-0.69136|-0.00672 +2016-07-01|41.0|99.0|-1.01856|-0.01032 +2016-07-01|41.0|100.0|-1.35236|-0.01393 +2016-07-01|41.0|101.0|-1.69221|-0.01755 +2016-07-01|41.0|102.0|-2.03746|-0.02115 +2016-07-01|41.0|103.0|-2.38739|-0.02471 +2016-07-01|41.0|104.0|-2.7412|-0.02822 +2016-07-01|41.0|105.0|-3.098|-0.03166 +2016-07-01|41.0|106.0|-3.45683|-0.03501 +2016-07-01|41.0|107.0|-3.81666|-0.03825 +2016-07-01|41.0|108.0|-4.17636|-0.04137 +2016-07-01|41.0|109.0|-4.53477|-0.04434 +2016-07-01|41.0|110.0|-4.89066|-0.04716 +2016-07-01|41.0|111.0|-5.24277|-0.0498 +2016-07-01|41.0|112.0|-5.58978|-0.05225 +2016-07-01|41.0|113.0|-5.93038|-0.0545 +2016-07-01|41.0|114.0|-6.26323|-0.05654 +2016-07-01|41.0|115.0|-6.58699|-0.05837 +2016-07-01|41.0|116.0|-6.90035|-0.05997 +2016-07-01|41.0|117.0|-7.20202|-0.06134 +2016-07-01|41.0|118.0|-7.49075|-0.06248 +2016-07-01|41.0|119.0|-7.76535|-0.0634 +2016-07-01|41.0|120.0|-8.02469|-0.06408 +2016-07-01|41.0|121.0|-8.26772|-0.06455 +2016-07-01|41.0|122.0|-8.49345|-0.0648 +2016-07-01|41.0|123.0|-8.701|-0.06484 +2016-07-01|41.0|124.0|-8.88959|-0.06468 +2016-07-01|41.0|125.0|-9.05852|-0.06434 +2016-07-01|41.0|126.0|-9.2072|-0.06382 +2016-07-01|41.0|127.0|-9.33514|-0.06315 +2016-07-01|41.0|128.0|-9.44197|-0.06233 +2016-07-01|41.0|129.0|-9.5274|-0.06138 +2016-07-01|41.0|130.0|-9.59124|-0.06031 +2016-07-01|41.0|131.0|-9.63343|-0.05914 +2016-07-01|41.0|132.0|-9.65395|-0.0579 +2016-07-01|41.0|133.0|-9.65291|-0.05658 +2016-07-01|41.0|134.0|-9.63049|-0.05521 +2016-07-01|41.0|135.0|-9.58694|-0.05381 +2016-07-01|41.0|136.0|-9.52257|-0.05239 +2016-07-01|41.0|137.0|-9.43778|-0.05096 +2016-07-01|41.0|138.0|-9.33301|-0.04954 +2016-07-01|41.0|139.0|-9.20875|-0.04815 +2016-07-01|41.0|140.0|-9.06554|-0.04678 +2016-07-01|41.0|141.0|-8.90394|-0.04547 +2016-07-01|41.0|142.0|-8.72458|-0.04422 +2016-07-01|41.0|143.0|-8.52808|-0.04304 +2016-07-01|41.0|144.0|-8.3151|-0.04195 +2016-07-01|41.0|145.0|-8.0863|-0.04095 +2016-07-01|41.0|146.0|-7.84239|-0.04005 +2016-07-01|41.0|147.0|-7.58404|-0.03927 +2016-07-01|41.0|148.0|-7.31197|-0.03861 +2016-07-01|41.0|149.0|-7.02687|-0.03807 +2016-07-01|41.0|150.0|-6.72945|-0.03768 +2016-07-01|41.0|151.0|-6.4204|-0.03744 +2016-07-01|41.0|152.0|-6.10044|-0.03734 +2016-07-01|41.0|153.0|-5.77024|-0.0374 +2016-07-01|41.0|154.0|-5.43051|-0.03763 +2016-07-01|41.0|155.0|-5.08191|-0.03802 +2016-07-01|41.0|156.0|-4.72514|-0.03859 +2016-07-01|41.0|157.0|-4.36084|-0.03932 +2016-07-01|41.0|158.0|-3.98969|-0.04024 +2016-07-01|41.0|159.0|-3.61233|-0.04133 +2016-07-01|41.0|160.0|-3.2294|-0.04259 +2016-07-01|41.0|161.0|-2.84155|-0.04404 +2016-07-01|41.0|162.0|-2.44939|-0.04565 +2016-07-01|41.0|163.0|-2.05355|-0.04744 +2016-07-01|41.0|164.0|-1.65462|-0.04939 +2016-07-01|41.0|165.0|-1.25321|-0.05151 +2016-07-01|41.0|166.0|-0.8499|-0.05378 +2016-07-01|41.0|167.0|-0.44526|-0.05619 +2016-07-01|41.0|168.0|-0.03985|-0.05875 +2016-07-01|41.0|169.0|0.36577|-0.06143 +2016-07-01|41.0|170.0|0.77109|-0.06422 +2016-07-01|41.0|171.0|1.1756|-0.06712 +2016-07-01|41.0|172.0|1.57879|-0.07012 +2016-07-01|41.0|173.0|1.98021|-0.07319 +2016-07-01|41.0|174.0|2.3794|-0.07632 +2016-07-01|41.0|175.0|2.77593|-0.0795 +2016-07-01|41.0|176.0|3.16941|-0.0827 +2016-07-01|41.0|177.0|3.55948|-0.08593 +2016-07-01|41.0|178.0|3.94577|-0.08915 +2016-07-01|41.0|179.0|4.32799|-0.09235 +2016-07-01|41.0|-1.0|-0.14822|0.11749 +2016-07-01|41.0|-2.0|-0.42762|0.11905 +2016-07-01|41.0|-3.0|-0.71582|0.12064 +2016-07-01|41.0|-4.0|-1.01273|0.12225 +2016-07-01|41.0|-5.0|-1.3182|0.12387 +2016-07-01|41.0|-6.0|-1.63202|0.12549 +2016-07-01|41.0|-7.0|-1.95392|0.1271 +2016-07-01|41.0|-8.0|-2.28354|0.1287 +2016-07-01|41.0|-9.0|-2.62048|0.13027 +2016-07-01|41.0|-10.0|-2.96429|0.13181 +2016-07-01|41.0|-11.0|-3.31448|0.13332 +2016-07-01|41.0|-12.0|-3.67051|0.1348 +2016-07-01|41.0|-13.0|-4.03182|0.13623 +2016-07-01|41.0|-14.0|-4.39781|0.13763 +2016-07-01|41.0|-15.0|-4.76788|0.13899 +2016-07-01|41.0|-16.0|-5.14141|0.1403 +2016-07-01|41.0|-17.0|-5.5178|0.14158 +2016-07-01|41.0|-18.0|-5.89643|0.14282 +2016-07-01|41.0|-19.0|-6.2767|0.14403 +2016-07-01|41.0|-20.0|-6.65804|0.1452 +2016-07-01|41.0|-21.0|-7.03987|0.14634 +2016-07-01|41.0|-22.0|-7.42166|0.14746 +2016-07-01|41.0|-23.0|-7.8029|0.14854 +2016-07-01|41.0|-24.0|-8.18309|0.14961 +2016-07-01|41.0|-25.0|-8.56178|0.15065 +2016-07-01|41.0|-26.0|-8.93854|0.15166 +2016-07-01|41.0|-27.0|-9.31293|0.15265 +2016-07-01|41.0|-28.0|-9.68458|0.15361 +2016-07-01|41.0|-29.0|-10.05311|0.15455 +2016-07-01|41.0|-30.0|-10.41814|0.15544 +2016-07-01|41.0|-31.0|-10.77932|0.1563 +2016-07-01|41.0|-32.0|-11.13629|0.15712 +2016-07-01|41.0|-33.0|-11.48867|0.15788 +2016-07-01|41.0|-34.0|-11.83609|0.15858 +2016-07-01|41.0|-35.0|-12.17814|0.1592 +2016-07-01|41.0|-36.0|-12.5144|0.15975 +2016-07-01|41.0|-37.0|-12.84442|0.1602 +2016-07-01|41.0|-38.0|-13.16769|0.16055 +2016-07-01|41.0|-39.0|-13.48368|0.16078 +2016-07-01|41.0|-40.0|-13.79181|0.16088 +2016-07-01|41.0|-41.0|-14.09144|0.16084 +2016-07-01|41.0|-42.0|-14.38189|0.16064 +2016-07-01|41.0|-43.0|-14.6624|0.16027 +2016-07-01|41.0|-44.0|-14.93219|0.15972 +2016-07-01|41.0|-45.0|-15.19041|0.15898 +2016-07-01|41.0|-46.0|-15.43615|0.15803 +2016-07-01|41.0|-47.0|-15.66844|0.15686 +2016-07-01|41.0|-48.0|-15.8863|0.15547 +2016-07-01|41.0|-49.0|-16.08866|0.15383 +2016-07-01|41.0|-50.0|-16.27445|0.15195 +2016-07-01|41.0|-51.0|-16.44253|0.14981 +2016-07-01|41.0|-52.0|-16.59177|0.14741 +2016-07-01|41.0|-53.0|-16.72099|0.14474 +2016-07-01|41.0|-54.0|-16.82901|0.1418 +2016-07-01|41.0|-55.0|-16.91466|0.13858 +2016-07-01|41.0|-56.0|-16.97675|0.13508 +2016-07-01|41.0|-57.0|-17.01413|0.13129 +2016-07-01|41.0|-58.0|-17.02564|0.12723 +2016-07-01|41.0|-59.0|-17.0102|0.12288 +2016-07-01|41.0|-60.0|-16.96672|0.11825 +2016-07-01|41.0|-61.0|-16.8942|0.11335 +2016-07-01|41.0|-62.0|-16.7917|0.10818 +2016-07-01|41.0|-63.0|-16.65834|0.10274 +2016-07-01|41.0|-64.0|-16.49333|0.09704 +2016-07-01|41.0|-65.0|-16.29598|0.0911 +2016-07-01|41.0|-66.0|-16.06571|0.08492 +2016-07-01|41.0|-67.0|-15.80203|0.07852 +2016-07-01|41.0|-68.0|-15.50462|0.07191 +2016-07-01|41.0|-69.0|-15.17326|0.06511 +2016-07-01|41.0|-70.0|-14.80791|0.05813 +2016-07-01|41.0|-71.0|-14.40866|0.051 +2016-07-01|41.0|-72.0|-13.9758|0.04375 +2016-07-01|41.0|-73.0|-13.50976|0.03639 +2016-07-01|41.0|-74.0|-13.01119|0.02896 +2016-07-01|41.0|-75.0|-12.48091|0.02148 +2016-07-01|41.0|-76.0|-11.91993|0.01398 +2016-07-01|41.0|-77.0|-11.32946|0.00649 +2016-07-01|41.0|-78.0|-10.71091|-9.4E-4 +2016-07-01|41.0|-79.0|-10.06589|-0.00829 +2016-07-01|41.0|-80.0|-9.39617|-0.01553 +2016-07-01|41.0|-81.0|-8.70372|-0.02261 +2016-07-01|41.0|-82.0|-7.99067|-0.02951 +2016-07-01|41.0|-83.0|-7.2593|-0.03619 +2016-07-01|41.0|-84.0|-6.51203|-0.04263 +2016-07-01|41.0|-85.0|-5.75136|-0.0488 +2016-07-01|41.0|-86.0|-4.97992|-0.05466 +2016-07-01|41.0|-87.0|-4.20038|-0.0602 +2016-07-01|41.0|-88.0|-3.41543|-0.06541 +2016-07-01|41.0|-89.0|-2.6278|-0.07026 +2016-07-01|41.0|-90.0|-1.84016|-0.07476 +2016-07-01|41.0|-91.0|-1.05516|-0.07889 +2016-07-01|41.0|-92.0|-0.27536|-0.08265 +2016-07-01|41.0|-93.0|0.4968|-0.08605 +2016-07-01|41.0|-94.0|1.25897|-0.0891 +2016-07-01|41.0|-95.0|2.00897|-0.09181 +2016-07-01|41.0|-96.0|2.74479|-0.09419 +2016-07-01|41.0|-97.0|3.46458|-0.09626 +2016-07-01|41.0|-98.0|4.16668|-0.09804 +2016-07-01|41.0|-99.0|4.84962|-0.09955 +2016-07-01|41.0|-100.0|5.51214|-0.10083 +2016-07-01|41.0|-101.0|6.15316|-0.10188 +2016-07-01|41.0|-102.0|6.77179|-0.10273 +2016-07-01|41.0|-103.0|7.36734|-0.10342 +2016-07-01|41.0|-104.0|7.93928|-0.10396 +2016-07-01|41.0|-105.0|8.48724|-0.10437 +2016-07-01|41.0|-106.0|9.01102|-0.10469 +2016-07-01|41.0|-107.0|9.51055|-0.10492 +2016-07-01|41.0|-108.0|9.98588|-0.10508 +2016-07-01|41.0|-109.0|10.43717|-0.1052 +2016-07-01|41.0|-110.0|10.86468|-0.10529 +2016-07-01|41.0|-111.0|11.26874|-0.10536 +2016-07-01|41.0|-112.0|11.64975|-0.10542 +2016-07-01|41.0|-113.0|12.00817|-0.10549 +2016-07-01|41.0|-114.0|12.34448|-0.10557 +2016-07-01|41.0|-115.0|12.65921|-0.10567 +2016-07-01|41.0|-116.0|12.95289|-0.1058 +2016-07-01|41.0|-117.0|13.22606|-0.10596 +2016-07-01|41.0|-118.0|13.47927|-0.10616 +2016-07-01|41.0|-119.0|13.71304|-0.10639 +2016-07-01|41.0|-120.0|13.9279|-0.10666 +2016-07-01|41.0|-121.0|14.12435|-0.10697 +2016-07-01|41.0|-122.0|14.30287|-0.10732 +2016-07-01|41.0|-123.0|14.46391|-0.10771 +2016-07-01|41.0|-124.0|14.60791|-0.10815 +2016-07-01|41.0|-125.0|14.73527|-0.10862 +2016-07-01|41.0|-126.0|14.84637|-0.10914 +2016-07-01|41.0|-127.0|14.94158|-0.1097 +2016-07-01|41.0|-128.0|15.02124|-0.11029 +2016-07-01|41.0|-129.0|15.08565|-0.11092 +2016-07-01|41.0|-130.0|15.13514|-0.11159 +2016-07-01|41.0|-131.0|15.16997|-0.1123 +2016-07-01|41.0|-132.0|15.19045|-0.11304 +2016-07-01|41.0|-133.0|15.19683|-0.11381 +2016-07-01|41.0|-134.0|15.1894|-0.11461 +2016-07-01|41.0|-135.0|15.16842|-0.11544 +2016-07-01|41.0|-136.0|15.13416|-0.11631 +2016-07-01|41.0|-137.0|15.0869|-0.1172 +2016-07-01|41.0|-138.0|15.02693|-0.11811 +2016-07-01|41.0|-139.0|14.95452|-0.11904 +2016-07-01|41.0|-140.0|14.86999|-0.11999 +2016-07-01|41.0|-141.0|14.77364|-0.12095 +2016-07-01|41.0|-142.0|14.66579|-0.12193 +2016-07-01|41.0|-143.0|14.54676|-0.1229 +2016-07-01|41.0|-144.0|14.41688|-0.12388 +2016-07-01|41.0|-145.0|14.2765|-0.12485 +2016-07-01|41.0|-146.0|14.12596|-0.12581 +2016-07-01|41.0|-147.0|13.9656|-0.12674 +2016-07-01|41.0|-148.0|13.79578|-0.12765 +2016-07-01|41.0|-149.0|13.61682|-0.12852 +2016-07-01|41.0|-150.0|13.42907|-0.12934 +2016-07-01|41.0|-151.0|13.23286|-0.13011 +2016-07-01|41.0|-152.0|13.0285|-0.13081 +2016-07-01|41.0|-153.0|12.81629|-0.13144 +2016-07-01|41.0|-154.0|12.59653|-0.13198 +2016-07-01|41.0|-155.0|12.36947|-0.13243 +2016-07-01|41.0|-156.0|12.13536|-0.13277 +2016-07-01|41.0|-157.0|11.89443|-0.133 +2016-07-01|41.0|-158.0|11.64689|-0.1331 +2016-07-01|41.0|-159.0|11.39289|-0.13307 +2016-07-01|41.0|-160.0|11.13261|-0.13289 +2016-07-01|41.0|-161.0|10.86616|-0.13257 +2016-07-01|41.0|-162.0|10.59365|-0.13208 +2016-07-01|41.0|-163.0|10.31518|-0.13143 +2016-07-01|41.0|-164.0|10.0308|-0.13062 +2016-07-01|41.0|-165.0|9.74058|-0.12962 +2016-07-01|41.0|-166.0|9.44453|-0.12845 +2016-07-01|41.0|-167.0|9.14269|-0.12711 +2016-07-01|41.0|-168.0|8.83508|-0.12558 +2016-07-01|41.0|-169.0|8.52171|-0.12389 +2016-07-01|41.0|-170.0|8.2026|-0.12201 +2016-07-01|41.0|-171.0|7.87775|-0.11997 +2016-07-01|41.0|-172.0|7.54721|-0.11777 +2016-07-01|41.0|-173.0|7.211|-0.11542 +2016-07-01|41.0|-174.0|6.86918|-0.11292 +2016-07-01|41.0|-175.0|6.52182|-0.11028 +2016-07-01|41.0|-176.0|6.169|-0.10752 +2016-07-01|41.0|-177.0|5.81084|-0.10465 +2016-07-01|41.0|-178.0|5.44748|-0.10169 +2016-07-01|41.0|-179.0|5.07908|-0.09864 +2016-07-01|42.0|0.0|0.09146|0.11833 +2016-07-01|42.0|1.0|0.35896|0.11685 +2016-07-01|42.0|2.0|0.61803|0.11543 +2016-07-01|42.0|3.0|0.86882|0.11408 +2016-07-01|42.0|4.0|1.11156|0.11281 +2016-07-01|42.0|5.0|1.34651|0.11161 +2016-07-01|42.0|6.0|1.574|0.11051 +2016-07-01|42.0|7.0|1.79438|0.10949 +2016-07-01|42.0|8.0|2.00801|0.10858 +2016-07-01|42.0|9.0|2.21529|0.10776 +2016-07-01|42.0|10.0|2.41662|0.10704 +2016-07-01|42.0|11.0|2.6124|0.10641 +2016-07-01|42.0|12.0|2.80303|0.10588 +2016-07-01|42.0|13.0|2.98886|0.10544 +2016-07-01|42.0|14.0|3.17026|0.10507 +2016-07-01|42.0|15.0|3.34754|0.10478 +2016-07-01|42.0|16.0|3.52096|0.10455 +2016-07-01|42.0|17.0|3.69076|0.10437 +2016-07-01|42.0|18.0|3.85711|0.10423 +2016-07-01|42.0|19.0|4.02014|0.10411 +2016-07-01|42.0|20.0|4.17991|0.104 +2016-07-01|42.0|21.0|4.33646|0.10388 +2016-07-01|42.0|22.0|4.48973|0.10375 +2016-07-01|42.0|23.0|4.63964|0.10359 +2016-07-01|42.0|24.0|4.78605|0.10337 +2016-07-01|42.0|25.0|4.92878|0.1031 +2016-07-01|42.0|26.0|5.06763|0.10276 +2016-07-01|42.0|27.0|5.20233|0.10233 +2016-07-01|42.0|28.0|5.33261|0.10181 +2016-07-01|42.0|29.0|5.45819|0.10119 +2016-07-01|42.0|30.0|5.57877|0.10047 +2016-07-01|42.0|31.0|5.69404|0.09963 +2016-07-01|42.0|32.0|5.80371|0.09869 +2016-07-01|42.0|33.0|5.90751|0.09763 +2016-07-01|42.0|34.0|6.00518|0.09647 +2016-07-01|42.0|35.0|6.09648|0.0952 +2016-07-01|42.0|36.0|6.18123|0.09383 +2016-07-01|42.0|37.0|6.25924|0.09237 +2016-07-01|42.0|38.0|6.33042|0.09083 +2016-07-01|42.0|39.0|6.39467|0.08922 +2016-07-01|42.0|40.0|6.45197|0.08756 +2016-07-01|42.0|41.0|6.50233|0.08584 +2016-07-01|42.0|42.0|6.54579|0.0841 +2016-07-01|42.0|43.0|6.58245|0.08234 +2016-07-01|42.0|44.0|6.61244|0.08057 +2016-07-01|42.0|45.0|6.63591|0.07882 +2016-07-01|42.0|46.0|6.65305|0.07709 +2016-07-01|42.0|47.0|6.66406|0.07539 +2016-07-01|42.0|48.0|6.66915|0.07375 +2016-07-01|42.0|49.0|6.66857|0.07216 +2016-07-01|42.0|50.0|6.66252|0.07063 +2016-07-01|42.0|51.0|6.65123|0.06918 +2016-07-01|42.0|52.0|6.63491|0.06781 +2016-07-01|42.0|53.0|6.61374|0.06652 +2016-07-01|42.0|54.0|6.58788|0.06532 +2016-07-01|42.0|55.0|6.55747|0.0642 +2016-07-01|42.0|56.0|6.52262|0.06316 +2016-07-01|42.0|57.0|6.4834|0.06221 +2016-07-01|42.0|58.0|6.43984|0.06132 +2016-07-01|42.0|59.0|6.39193|0.06051 +2016-07-01|42.0|60.0|6.33964|0.05976 +2016-07-01|42.0|61.0|6.2829|0.05906 +2016-07-01|42.0|62.0|6.2216|0.0584 +2016-07-01|42.0|63.0|6.15559|0.05777 +2016-07-01|42.0|64.0|6.08472|0.05716 +2016-07-01|42.0|65.0|6.00879|0.05657 +2016-07-01|42.0|66.0|5.92759|0.05597 +2016-07-01|42.0|67.0|5.84089|0.05536 +2016-07-01|42.0|68.0|5.74846|0.05472 +2016-07-01|42.0|69.0|5.65003|0.05405 +2016-07-01|42.0|70.0|5.54536|0.05332 +2016-07-01|42.0|71.0|5.4342|0.05254 +2016-07-01|42.0|72.0|5.31629|0.05169 +2016-07-01|42.0|73.0|5.19137|0.05077 +2016-07-01|42.0|74.0|5.05922|0.04975 +2016-07-01|42.0|75.0|4.9196|0.04864 +2016-07-01|42.0|76.0|4.77229|0.04743 +2016-07-01|42.0|77.0|4.61709|0.04611 +2016-07-01|42.0|78.0|4.4538|0.04468 +2016-07-01|42.0|79.0|4.28224|0.04313 +2016-07-01|42.0|80.0|4.10224|0.04145 +2016-07-01|42.0|81.0|3.91366|0.03965 +2016-07-01|42.0|82.0|3.71636|0.03772 +2016-07-01|42.0|83.0|3.51022|0.03566 +2016-07-01|42.0|84.0|3.29513|0.03346 +2016-07-01|42.0|85.0|3.07101|0.03114 +2016-07-01|42.0|86.0|2.83779|0.02869 +2016-07-01|42.0|87.0|2.59541|0.02611 +2016-07-01|42.0|88.0|2.34385|0.02341 +2016-07-01|42.0|89.0|2.0831|0.02059 +2016-07-01|42.0|90.0|1.81318|0.01766 +2016-07-01|42.0|91.0|1.53415|0.01461 +2016-07-01|42.0|92.0|1.24609|0.01147 +2016-07-01|42.0|93.0|0.94913|0.00823 +2016-07-01|42.0|94.0|0.64344|0.00491 +2016-07-01|42.0|95.0|0.32925|0.00152 +2016-07-01|42.0|96.0|0.00682|-0.00194 +2016-07-01|42.0|97.0|-0.32351|-0.00544 +2016-07-01|42.0|98.0|-0.66133|-0.00898 +2016-07-01|42.0|99.0|-1.00619|-0.01254 +2016-07-01|42.0|100.0|-1.35753|-0.0161 +2016-07-01|42.0|101.0|-1.71474|-0.01965 +2016-07-01|42.0|102.0|-2.07712|-0.02317 +2016-07-01|42.0|103.0|-2.44389|-0.02664 +2016-07-01|42.0|104.0|-2.81419|-0.03005 +2016-07-01|42.0|105.0|-3.1871|-0.03338 +2016-07-01|42.0|106.0|-3.56159|-0.03661 +2016-07-01|42.0|107.0|-3.93658|-0.03971 +2016-07-01|42.0|108.0|-4.31093|-0.04268 +2016-07-01|42.0|109.0|-4.68344|-0.0455 +2016-07-01|42.0|110.0|-5.05284|-0.04816 +2016-07-01|42.0|111.0|-5.41784|-0.05063 +2016-07-01|42.0|112.0|-5.77712|-0.0529 +2016-07-01|42.0|113.0|-6.12935|-0.05498 +2016-07-01|42.0|114.0|-6.47317|-0.05684 +2016-07-01|42.0|115.0|-6.80725|-0.05848 +2016-07-01|42.0|116.0|-7.13027|-0.05989 +2016-07-01|42.0|117.0|-7.44096|-0.06108 +2016-07-01|42.0|118.0|-7.73808|-0.06204 +2016-07-01|42.0|119.0|-8.02045|-0.06277 +2016-07-01|42.0|120.0|-8.28695|-0.06328 +2016-07-01|42.0|121.0|-8.53655|-0.06357 +2016-07-01|42.0|122.0|-8.7683|-0.06365 +2016-07-01|42.0|123.0|-8.98132|-0.06353 +2016-07-01|42.0|124.0|-9.17486|-0.06323 +2016-07-01|42.0|125.0|-9.34825|-0.06274 +2016-07-01|42.0|126.0|-9.50091|-0.06209 +2016-07-01|42.0|127.0|-9.6324|-0.06128 +2016-07-01|42.0|128.0|-9.74235|-0.06035 +2016-07-01|42.0|129.0|-9.83051|-0.05929 +2016-07-01|42.0|130.0|-9.89671|-0.05813 +2016-07-01|42.0|131.0|-9.94089|-0.05688 +2016-07-01|42.0|132.0|-9.96308|-0.05556 +2016-07-01|42.0|133.0|-9.96339|-0.05418 +2016-07-01|42.0|134.0|-9.94202|-0.05276 +2016-07-01|42.0|135.0|-9.89923|-0.05132 +2016-07-01|42.0|136.0|-9.83537|-0.04987 +2016-07-01|42.0|137.0|-9.75083|-0.04843 +2016-07-01|42.0|138.0|-9.64607|-0.04701 +2016-07-01|42.0|139.0|-9.52159|-0.04563 +2016-07-01|42.0|140.0|-9.37795|-0.04429 +2016-07-01|42.0|141.0|-9.21573|-0.04301 +2016-07-01|42.0|142.0|-9.03554|-0.04181 +2016-07-01|42.0|143.0|-8.83803|-0.04069 +2016-07-01|42.0|144.0|-8.62387|-0.03967 +2016-07-01|42.0|145.0|-8.39373|-0.03876 +2016-07-01|42.0|146.0|-8.14831|-0.03796 +2016-07-01|42.0|147.0|-7.88831|-0.03728 +2016-07-01|42.0|148.0|-7.61444|-0.03674 +2016-07-01|42.0|149.0|-7.3274|-0.03634 +2016-07-01|42.0|150.0|-7.02792|-0.03609 +2016-07-01|42.0|151.0|-6.71668|-0.03599 +2016-07-01|42.0|152.0|-6.39441|-0.03606 +2016-07-01|42.0|153.0|-6.06178|-0.03629 +2016-07-01|42.0|154.0|-5.7195|-0.03669 +2016-07-01|42.0|155.0|-5.36824|-0.03727 +2016-07-01|42.0|156.0|-5.00867|-0.03802 +2016-07-01|42.0|157.0|-4.64147|-0.03895 +2016-07-01|42.0|158.0|-4.26728|-0.04007 +2016-07-01|42.0|159.0|-3.88675|-0.04136 +2016-07-01|42.0|160.0|-3.50051|-0.04284 +2016-07-01|42.0|161.0|-3.10919|-0.04449 +2016-07-01|42.0|162.0|-2.71341|-0.04632 +2016-07-01|42.0|163.0|-2.31376|-0.04833 +2016-07-01|42.0|164.0|-1.91085|-0.05049 +2016-07-01|42.0|165.0|-1.50524|-0.05282 +2016-07-01|42.0|166.0|-1.09751|-0.05531 +2016-07-01|42.0|167.0|-0.68821|-0.05793 +2016-07-01|42.0|168.0|-0.27789|-0.06069 +2016-07-01|42.0|169.0|0.13293|-0.06358 +2016-07-01|42.0|170.0|0.54374|-0.06658 +2016-07-01|42.0|171.0|0.95405|-0.06968 +2016-07-01|42.0|172.0|1.36337|-0.07286 +2016-07-01|42.0|173.0|1.77126|-0.07612 +2016-07-01|42.0|174.0|2.17728|-0.07943 +2016-07-01|42.0|175.0|2.58101|-0.08279 +2016-07-01|42.0|176.0|2.98207|-0.08617 +2016-07-01|42.0|177.0|3.38009|-0.08956 +2016-07-01|42.0|178.0|3.77474|-0.09295 +2016-07-01|42.0|179.0|4.16569|-0.09631 +2016-07-01|42.0|-1.0|-0.1846|0.11985 +2016-07-01|42.0|-2.0|-0.46925|0.12142 +2016-07-01|42.0|-3.0|-0.76247|0.12301 +2016-07-01|42.0|-4.0|-1.06419|0.12463 +2016-07-01|42.0|-5.0|-1.37423|0.12625 +2016-07-01|42.0|-6.0|-1.6924|0.12787 +2016-07-01|42.0|-7.0|-2.01839|0.12949 +2016-07-01|42.0|-8.0|-2.35189|0.1311 +2016-07-01|42.0|-9.0|-2.69248|0.13269 +2016-07-01|42.0|-10.0|-3.03974|0.13425 +2016-07-01|42.0|-11.0|-3.39318|0.13578 +2016-07-01|42.0|-12.0|-3.75227|0.13728 +2016-07-01|42.0|-13.0|-4.11648|0.13875 +2016-07-01|42.0|-14.0|-4.48522|0.14018 +2016-07-01|42.0|-15.0|-4.85791|0.14157 +2016-07-01|42.0|-16.0|-5.23396|0.14293 +2016-07-01|42.0|-17.0|-5.61278|0.14425 +2016-07-01|42.0|-18.0|-5.99378|0.14553 +2016-07-01|42.0|-19.0|-6.37636|0.14679 +2016-07-01|42.0|-20.0|-6.75998|0.14801 +2016-07-01|42.0|-21.0|-7.14408|0.1492 +2016-07-01|42.0|-22.0|-7.52814|0.15036 +2016-07-01|42.0|-23.0|-7.91166|0.1515 +2016-07-01|42.0|-24.0|-8.29416|0.15262 +2016-07-01|42.0|-25.0|-8.67519|0.1537 +2016-07-01|42.0|-26.0|-9.05431|0.15477 +2016-07-01|42.0|-27.0|-9.43112|0.15581 +2016-07-01|42.0|-28.0|-9.80523|0.15682 +2016-07-01|42.0|-29.0|-10.17626|0.15779 +2016-07-01|42.0|-30.0|-10.54385|0.15874 +2016-07-01|42.0|-31.0|-10.90762|0.15964 +2016-07-01|42.0|-32.0|-11.26723|0.1605 +2016-07-01|42.0|-33.0|-11.62229|0.1613 +2016-07-01|42.0|-34.0|-11.97242|0.16205 +2016-07-01|42.0|-35.0|-12.31722|0.16272 +2016-07-01|42.0|-36.0|-12.65626|0.16331 +2016-07-01|42.0|-37.0|-12.98909|0.16381 +2016-07-01|42.0|-38.0|-13.31519|0.16421 +2016-07-01|42.0|-39.0|-13.63405|0.1645 +2016-07-01|42.0|-40.0|-13.94507|0.16465 +2016-07-01|42.0|-41.0|-14.24762|0.16467 +2016-07-01|42.0|-42.0|-14.54103|0.16454 +2016-07-01|42.0|-43.0|-14.82454|0.16425 +2016-07-01|42.0|-44.0|-15.09738|0.16378 +2016-07-01|42.0|-45.0|-15.3587|0.16312 +2016-07-01|42.0|-46.0|-15.60759|0.16226 +2016-07-01|42.0|-47.0|-15.84312|0.16119 +2016-07-01|42.0|-48.0|-16.06427|0.1599 +2016-07-01|42.0|-49.0|-16.27002|0.15837 +2016-07-01|42.0|-50.0|-16.45927|0.15661 +2016-07-01|42.0|-51.0|-16.63092|0.1546 +2016-07-01|42.0|-52.0|-16.78382|0.15234 +2016-07-01|42.0|-53.0|-16.91679|0.14981 +2016-07-01|42.0|-54.0|-17.02866|0.14701 +2016-07-01|42.0|-55.0|-17.11825|0.14394 +2016-07-01|42.0|-56.0|-17.18436|0.1406 +2016-07-01|42.0|-57.0|-17.22581|0.13698 +2016-07-01|42.0|-58.0|-17.24146|0.13307 +2016-07-01|42.0|-59.0|-17.23017|0.12889 +2016-07-01|42.0|-60.0|-17.19086|0.12443 +2016-07-01|42.0|-61.0|-17.12248|0.11969 +2016-07-01|42.0|-62.0|-17.02405|0.11468 +2016-07-01|42.0|-63.0|-16.89465|0.10941 +2016-07-01|42.0|-64.0|-16.73346|0.10387 +2016-07-01|42.0|-65.0|-16.53972|0.09807 +2016-07-01|42.0|-66.0|-16.31282|0.09203 +2016-07-01|42.0|-67.0|-16.05221|0.08576 +2016-07-01|42.0|-68.0|-15.75749|0.07926 +2016-07-01|42.0|-69.0|-15.42842|0.07256 +2016-07-01|42.0|-70.0|-15.06486|0.06568 +2016-07-01|42.0|-71.0|-14.66687|0.05862 +2016-07-01|42.0|-72.0|-14.23465|0.05141 +2016-07-01|42.0|-73.0|-13.76861|0.04409 +2016-07-01|42.0|-74.0|-13.26931|0.03666 +2016-07-01|42.0|-75.0|-12.73753|0.02916 +2016-07-01|42.0|-76.0|-12.17425|0.02162 +2016-07-01|42.0|-77.0|-11.58062|0.01407 +2016-07-01|42.0|-78.0|-10.95804|0.00654 +2016-07-01|42.0|-79.0|-10.30808|-9.3E-4 +2016-07-01|42.0|-80.0|-9.6325|-0.00831 +2016-07-01|42.0|-81.0|-8.93328|-0.01557 +2016-07-01|42.0|-82.0|-8.21254|-0.02267 +2016-07-01|42.0|-83.0|-7.47258|-0.02958 +2016-07-01|42.0|-84.0|-6.71583|-0.03626 +2016-07-01|42.0|-85.0|-5.94487|-0.0427 +2016-07-01|42.0|-86.0|-5.16233|-0.04885 +2016-07-01|42.0|-87.0|-4.37095|-0.05471 +2016-07-01|42.0|-88.0|-3.5735|-0.06024 +2016-07-01|42.0|-89.0|-2.77275|-0.06543 +2016-07-01|42.0|-90.0|-1.97146|-0.07028 +2016-07-01|42.0|-91.0|-1.17236|-0.07477 +2016-07-01|42.0|-92.0|-0.37807|-0.0789 +2016-07-01|42.0|-93.0|0.40887|-0.08268 +2016-07-01|42.0|-94.0|1.18604|-0.0861 +2016-07-01|42.0|-95.0|1.95119|-0.08918 +2016-07-01|42.0|-96.0|2.70221|-0.09194 +2016-07-01|42.0|-97.0|3.43719|-0.09437 +2016-07-01|42.0|-98.0|4.1544|-0.09652 +2016-07-01|42.0|-99.0|4.85232|-0.09839 +2016-07-01|42.0|-100.0|5.52961|-0.10001 +2016-07-01|42.0|-101.0|6.18515|-0.1014 +2016-07-01|42.0|-102.0|6.818|-0.10258 +2016-07-01|42.0|-103.0|7.42742|-0.10359 +2016-07-01|42.0|-104.0|8.01283|-0.10443 +2016-07-01|42.0|-105.0|8.57386|-0.10514 +2016-07-01|42.0|-106.0|9.11026|-0.10573 +2016-07-01|42.0|-107.0|9.62192|-0.10623 +2016-07-01|42.0|-108.0|10.1089|-0.10665 +2016-07-01|42.0|-109.0|10.57131|-0.10702 +2016-07-01|42.0|-110.0|11.00942|-0.10734 +2016-07-01|42.0|-111.0|11.42354|-0.10763 +2016-07-01|42.0|-112.0|11.81407|-0.10791 +2016-07-01|42.0|-113.0|12.18144|-0.10818 +2016-07-01|42.0|-114.0|12.52615|-0.10846 +2016-07-01|42.0|-115.0|12.84871|-0.10874 +2016-07-01|42.0|-116.0|13.14965|-0.10905 +2016-07-01|42.0|-117.0|13.42953|-0.10937 +2016-07-01|42.0|-118.0|13.68888|-0.10973 +2016-07-01|42.0|-119.0|13.92824|-0.11012 +2016-07-01|42.0|-120.0|14.14814|-0.11053 +2016-07-01|42.0|-121.0|14.34909|-0.11099 +2016-07-01|42.0|-122.0|14.53158|-0.11148 +2016-07-01|42.0|-123.0|14.69608|-0.11201 +2016-07-01|42.0|-124.0|14.84302|-0.11257 +2016-07-01|42.0|-125.0|14.97283|-0.11317 +2016-07-01|42.0|-126.0|15.08591|-0.11381 +2016-07-01|42.0|-127.0|15.18262|-0.11449 +2016-07-01|42.0|-128.0|15.26332|-0.1152 +2016-07-01|42.0|-129.0|15.32835|-0.11594 +2016-07-01|42.0|-130.0|15.37801|-0.11672 +2016-07-01|42.0|-131.0|15.41262|-0.11753 +2016-07-01|42.0|-132.0|15.43246|-0.11837 +2016-07-01|42.0|-133.0|15.43782|-0.11925 +2016-07-01|42.0|-134.0|15.42898|-0.12015 +2016-07-01|42.0|-135.0|15.40623|-0.12107 +2016-07-01|42.0|-136.0|15.36983|-0.12203 +2016-07-01|42.0|-137.0|15.32008|-0.123 +2016-07-01|42.0|-138.0|15.25725|-0.12399 +2016-07-01|42.0|-139.0|15.18165|-0.125 +2016-07-01|42.0|-140.0|15.09357|-0.12603 +2016-07-01|42.0|-141.0|14.99331|-0.12706 +2016-07-01|42.0|-142.0|14.88119|-0.12809 +2016-07-01|42.0|-143.0|14.75754|-0.12913 +2016-07-01|42.0|-144.0|14.62269|-0.13016 +2016-07-01|42.0|-145.0|14.47696|-0.13117 +2016-07-01|42.0|-146.0|14.32069|-0.13216 +2016-07-01|42.0|-147.0|14.15423|-0.13313 +2016-07-01|42.0|-148.0|13.97791|-0.13406 +2016-07-01|42.0|-149.0|13.79207|-0.13495 +2016-07-01|42.0|-150.0|13.59705|-0.13578 +2016-07-01|42.0|-151.0|13.39317|-0.13656 +2016-07-01|42.0|-152.0|13.18074|-0.13726 +2016-07-01|42.0|-153.0|12.96007|-0.13788 +2016-07-01|42.0|-154.0|12.73145|-0.1384 +2016-07-01|42.0|-155.0|12.49516|-0.13883 +2016-07-01|42.0|-156.0|12.25145|-0.13914 +2016-07-01|42.0|-157.0|12.00055|-0.13933 +2016-07-01|42.0|-158.0|11.74269|-0.13939 +2016-07-01|42.0|-159.0|11.47806|-0.13931 +2016-07-01|42.0|-160.0|11.20684|-0.13908 +2016-07-01|42.0|-161.0|10.92919|-0.13869 +2016-07-01|42.0|-162.0|10.64524|-0.13814 +2016-07-01|42.0|-163.0|10.35511|-0.13742 +2016-07-01|42.0|-164.0|10.0589|-0.13653 +2016-07-01|42.0|-165.0|9.7567|-0.13546 +2016-07-01|42.0|-166.0|9.44859|-0.1342 +2016-07-01|42.0|-167.0|9.13463|-0.13277 +2016-07-01|42.0|-168.0|8.81488|-0.13115 +2016-07-01|42.0|-169.0|8.4894|-0.12935 +2016-07-01|42.0|-170.0|8.15823|-0.12738 +2016-07-01|42.0|-171.0|7.82145|-0.12524 +2016-07-01|42.0|-172.0|7.47912|-0.12292 +2016-07-01|42.0|-173.0|7.13131|-0.12045 +2016-07-01|42.0|-174.0|6.7781|-0.11783 +2016-07-01|42.0|-175.0|6.4196|-0.11508 +2016-07-01|42.0|-176.0|6.05593|-0.11219 +2016-07-01|42.0|-177.0|5.68723|-0.10919 +2016-07-01|42.0|-178.0|5.31366|-0.10608 +2016-07-01|42.0|-179.0|4.9354|-0.10289 +2016-07-01|43.0|0.0|0.05219|0.12079 +2016-07-01|43.0|1.0|0.32576|0.11931 +2016-07-01|43.0|2.0|0.59107|0.11789 +2016-07-01|43.0|3.0|0.84827|0.11653 +2016-07-01|43.0|4.0|1.09757|0.11524 +2016-07-01|43.0|5.0|1.33921|0.11403 +2016-07-01|43.0|6.0|1.57347|0.11291 +2016-07-01|43.0|7.0|1.8007|0.11188 +2016-07-01|43.0|8.0|2.02123|0.11093 +2016-07-01|43.0|9.0|2.23545|0.11009 +2016-07-01|43.0|10.0|2.44373|0.10933 +2016-07-01|43.0|11.0|2.64645|0.10867 +2016-07-01|43.0|12.0|2.84399|0.1081 +2016-07-01|43.0|13.0|3.03672|0.10761 +2016-07-01|43.0|14.0|3.22497|0.1072 +2016-07-01|43.0|15.0|3.40904|0.10686 +2016-07-01|43.0|16.0|3.58922|0.10658 +2016-07-01|43.0|17.0|3.76573|0.10635 +2016-07-01|43.0|18.0|3.93877|0.10615 +2016-07-01|43.0|19.0|4.10847|0.10598 +2016-07-01|43.0|20.0|4.27491|0.10583 +2016-07-01|43.0|21.0|4.43813|0.10567 +2016-07-01|43.0|22.0|4.59812|0.10549 +2016-07-01|43.0|23.0|4.75482|0.10529 +2016-07-01|43.0|24.0|4.90811|0.10505 +2016-07-01|43.0|25.0|5.05785|0.10475 +2016-07-01|43.0|26.0|5.20384|0.10438 +2016-07-01|43.0|27.0|5.34586|0.10394 +2016-07-01|43.0|28.0|5.48367|0.10341 +2016-07-01|43.0|29.0|5.617|0.10279 +2016-07-01|43.0|30.0|5.74557|0.10208 +2016-07-01|43.0|31.0|5.8691|0.10126 +2016-07-01|43.0|32.0|5.98731|0.10033 +2016-07-01|43.0|33.0|6.09992|0.0993 +2016-07-01|43.0|34.0|6.20669|0.09816 +2016-07-01|43.0|35.0|6.30737|0.09693 +2016-07-01|43.0|36.0|6.40177|0.09559 +2016-07-01|43.0|37.0|6.48969|0.09418 +2016-07-01|43.0|38.0|6.57101|0.09268 +2016-07-01|43.0|39.0|6.6456|0.09111 +2016-07-01|43.0|40.0|6.71341|0.08948 +2016-07-01|43.0|41.0|6.7744|0.0878 +2016-07-01|43.0|42.0|6.82857|0.08609 +2016-07-01|43.0|43.0|6.87597|0.08435 +2016-07-01|43.0|44.0|6.91666|0.0826 +2016-07-01|43.0|45.0|6.95075|0.08086 +2016-07-01|43.0|46.0|6.97836|0.07914 +2016-07-01|43.0|47.0|6.99964|0.07744 +2016-07-01|43.0|48.0|7.01474|0.07577 +2016-07-01|43.0|49.0|7.02382|0.07416 +2016-07-01|43.0|50.0|7.02705|0.0726 +2016-07-01|43.0|51.0|7.02459|0.07111 +2016-07-01|43.0|52.0|7.0166|0.06968 +2016-07-01|43.0|53.0|7.00321|0.06832 +2016-07-01|43.0|54.0|6.98453|0.06704 +2016-07-01|43.0|55.0|6.96067|0.06584 +2016-07-01|43.0|56.0|6.93169|0.06471 +2016-07-01|43.0|57.0|6.89763|0.06365 +2016-07-01|43.0|58.0|6.8585|0.06265 +2016-07-01|43.0|59.0|6.81428|0.06172 +2016-07-01|43.0|60.0|6.76491|0.06085 +2016-07-01|43.0|61.0|6.71031|0.06002 +2016-07-01|43.0|62.0|6.65036|0.05923 +2016-07-01|43.0|63.0|6.58492|0.05846 +2016-07-01|43.0|64.0|6.51383|0.05772 +2016-07-01|43.0|65.0|6.4369|0.05699 +2016-07-01|43.0|66.0|6.35392|0.05625 +2016-07-01|43.0|67.0|6.26467|0.0555 +2016-07-01|43.0|68.0|6.16893|0.05472 +2016-07-01|43.0|69.0|6.06644|0.05391 +2016-07-01|43.0|70.0|5.95698|0.05305 +2016-07-01|43.0|71.0|5.84028|0.05213 +2016-07-01|43.0|72.0|5.71612|0.05115 +2016-07-01|43.0|73.0|5.58426|0.05009 +2016-07-01|43.0|74.0|5.44446|0.04895 +2016-07-01|43.0|75.0|5.2965|0.04771 +2016-07-01|43.0|76.0|5.14018|0.04638 +2016-07-01|43.0|77.0|4.97529|0.04494 +2016-07-01|43.0|78.0|4.80166|0.04339 +2016-07-01|43.0|79.0|4.61912|0.04172 +2016-07-01|43.0|80.0|4.42751|0.03994 +2016-07-01|43.0|81.0|4.22669|0.03803 +2016-07-01|43.0|82.0|4.01655|0.036 +2016-07-01|43.0|83.0|3.79697|0.03384 +2016-07-01|43.0|84.0|3.56787|0.03155 +2016-07-01|43.0|85.0|3.32919|0.02914 +2016-07-01|43.0|86.0|3.08088|0.02661 +2016-07-01|43.0|87.0|2.82291|0.02396 +2016-07-01|43.0|88.0|2.55529|0.02119 +2016-07-01|43.0|89.0|2.27804|0.0183 +2016-07-01|43.0|90.0|1.99123|0.01531 +2016-07-01|43.0|91.0|1.69494|0.01222 +2016-07-01|43.0|92.0|1.38931|0.00904 +2016-07-01|43.0|93.0|1.07452|0.00578 +2016-07-01|43.0|94.0|0.75078|0.00244 +2016-07-01|43.0|95.0|0.41837|-9.6E-4 +2016-07-01|43.0|96.0|0.07763|-0.00442 +2016-07-01|43.0|97.0|-0.27106|-0.0079 +2016-07-01|43.0|98.0|-0.62724|-0.01141 +2016-07-01|43.0|99.0|-0.99036|-0.01493 +2016-07-01|43.0|100.0|-1.35984|-0.01844 +2016-07-01|43.0|101.0|-1.73499|-0.02192 +2016-07-01|43.0|102.0|-2.11505|-0.02536 +2016-07-01|43.0|103.0|-2.49918|-0.02875 +2016-07-01|43.0|104.0|-2.88648|-0.03205 +2016-07-01|43.0|105.0|-3.27595|-0.03526 +2016-07-01|43.0|106.0|-3.66653|-0.03836 +2016-07-01|43.0|107.0|-4.0571|-0.04132 +2016-07-01|43.0|108.0|-4.44646|-0.04414 +2016-07-01|43.0|109.0|-4.83338|-0.0468 +2016-07-01|43.0|110.0|-5.21657|-0.04929 +2016-07-01|43.0|111.0|-5.59471|-0.05158 +2016-07-01|43.0|112.0|-5.96647|-0.05368 +2016-07-01|43.0|113.0|-6.33047|-0.05556 +2016-07-01|43.0|114.0|-6.68538|-0.05723 +2016-07-01|43.0|115.0|-7.02986|-0.05868 +2016-07-01|43.0|116.0|-7.36259|-0.0599 +2016-07-01|43.0|117.0|-7.68231|-0.06089 +2016-07-01|43.0|118.0|-7.98777|-0.06166 +2016-07-01|43.0|119.0|-8.27783|-0.0622 +2016-07-01|43.0|120.0|-8.55138|-0.06252 +2016-07-01|43.0|121.0|-8.80741|-0.06263 +2016-07-01|43.0|122.0|-9.04498|-0.06254 +2016-07-01|43.0|123.0|-9.26327|-0.06225 +2016-07-01|43.0|124.0|-9.46153|-0.06178 +2016-07-01|43.0|125.0|-9.63912|-0.06114 +2016-07-01|43.0|126.0|-9.79551|-0.06034 +2016-07-01|43.0|127.0|-9.93025|-0.05941 +2016-07-01|43.0|128.0|-10.04302|-0.05835 +2016-07-01|43.0|129.0|-10.13358|-0.05718 +2016-07-01|43.0|130.0|-10.2018|-0.05591 +2016-07-01|43.0|131.0|-10.24764|-0.05457 +2016-07-01|43.0|132.0|-10.27115|-0.05317 +2016-07-01|43.0|133.0|-10.27246|-0.05173 +2016-07-01|43.0|134.0|-10.25179|-0.05026 +2016-07-01|43.0|135.0|-10.20943|-0.04878 +2016-07-01|43.0|136.0|-10.14573|-0.0473 +2016-07-01|43.0|137.0|-10.06111|-0.04585 +2016-07-01|43.0|138.0|-9.95603|-0.04442 +2016-07-01|43.0|139.0|-9.83102|-0.04305 +2016-07-01|43.0|140.0|-9.68664|-0.04173 +2016-07-01|43.0|141.0|-9.52348|-0.04049 +2016-07-01|43.0|142.0|-9.34217|-0.03934 +2016-07-01|43.0|143.0|-9.14337|-0.03828 +2016-07-01|43.0|144.0|-8.92775|-0.03734 +2016-07-01|43.0|145.0|-8.696|-0.03651 +2016-07-01|43.0|146.0|-8.44883|-0.0358 +2016-07-01|43.0|147.0|-8.18694|-0.03524 +2016-07-01|43.0|148.0|-7.91104|-0.03482 +2016-07-01|43.0|149.0|-7.62186|-0.03455 +2016-07-01|43.0|150.0|-7.32011|-0.03444 +2016-07-01|43.0|151.0|-7.00649|-0.0345 +2016-07-01|43.0|152.0|-6.68172|-0.03472 +2016-07-01|43.0|153.0|-6.34648|-0.03512 +2016-07-01|43.0|154.0|-6.00148|-0.03571 +2016-07-01|43.0|155.0|-5.6474|-0.03647 +2016-07-01|43.0|156.0|-5.2849|-0.03741 +2016-07-01|43.0|157.0|-4.91465|-0.03855 +2016-07-01|43.0|158.0|-4.53729|-0.03986 +2016-07-01|43.0|159.0|-4.15347|-0.04137 +2016-07-01|43.0|160.0|-3.76381|-0.04305 +2016-07-01|43.0|161.0|-3.36893|-0.04492 +2016-07-01|43.0|162.0|-2.96943|-0.04696 +2016-07-01|43.0|163.0|-2.56591|-0.04918 +2016-07-01|43.0|164.0|-2.15893|-0.05156 +2016-07-01|43.0|165.0|-1.74908|-0.05411 +2016-07-01|43.0|166.0|-1.33689|-0.0568 +2016-07-01|43.0|167.0|-0.92292|-0.05964 +2016-07-01|43.0|168.0|-0.50768|-0.06261 +2016-07-01|43.0|169.0|-0.09169|-0.0657 +2016-07-01|43.0|170.0|0.32457|-0.0689 +2016-07-01|43.0|171.0|0.74061|-0.0722 +2016-07-01|43.0|172.0|1.15597|-0.07558 +2016-07-01|43.0|173.0|1.57022|-0.07902 +2016-07-01|43.0|174.0|1.98293|-0.08252 +2016-07-01|43.0|175.0|2.3937|-0.08606 +2016-07-01|43.0|176.0|2.80215|-0.08962 +2016-07-01|43.0|177.0|3.20792|-0.09318 +2016-07-01|43.0|178.0|3.61067|-0.09673 +2016-07-01|43.0|179.0|4.0101|-0.10025 +2016-07-01|43.0|-1.0|-0.22973|0.12232 +2016-07-01|43.0|-2.0|-0.52002|0.12388 +2016-07-01|43.0|-3.0|-0.81867|0.12548 +2016-07-01|43.0|-4.0|-1.12556|0.1271 +2016-07-01|43.0|-5.0|-1.44056|0.12873 +2016-07-01|43.0|-6.0|-1.76342|0.13036 +2016-07-01|43.0|-7.0|-2.09389|0.13199 +2016-07-01|43.0|-8.0|-2.43162|0.13361 +2016-07-01|43.0|-9.0|-2.77622|0.13522 +2016-07-01|43.0|-10.0|-3.12728|0.1368 +2016-07-01|43.0|-11.0|-3.48432|0.13836 +2016-07-01|43.0|-12.0|-3.84683|0.13988 +2016-07-01|43.0|-13.0|-4.21429|0.14138 +2016-07-01|43.0|-14.0|-4.58614|0.14285 +2016-07-01|43.0|-15.0|-4.96182|0.14428 +2016-07-01|43.0|-16.0|-5.34075|0.14568 +2016-07-01|43.0|-17.0|-5.72236|0.14704 +2016-07-01|43.0|-18.0|-6.10608|0.14837 +2016-07-01|43.0|-19.0|-6.49135|0.14968 +2016-07-01|43.0|-20.0|-6.87762|0.15095 +2016-07-01|43.0|-21.0|-7.26435|0.15219 +2016-07-01|43.0|-22.0|-7.65104|0.15341 +2016-07-01|43.0|-23.0|-8.0372|0.1546 +2016-07-01|43.0|-24.0|-8.42235|0.15577 +2016-07-01|43.0|-25.0|-8.80606|0.15691 +2016-07-01|43.0|-26.0|-9.1879|0.15802 +2016-07-01|43.0|-27.0|-9.56747|0.15911 +2016-07-01|43.0|-28.0|-9.94436|0.16017 +2016-07-01|43.0|-29.0|-10.31822|0.1612 +2016-07-01|43.0|-30.0|-10.68866|0.16219 +2016-07-01|43.0|-31.0|-11.05533|0.16315 +2016-07-01|43.0|-32.0|-11.41785|0.16405 +2016-07-01|43.0|-33.0|-11.77585|0.1649 +2016-07-01|43.0|-34.0|-12.12894|0.16569 +2016-07-01|43.0|-35.0|-12.47672|0.16641 +2016-07-01|43.0|-36.0|-12.81875|0.16705 +2016-07-01|43.0|-37.0|-13.15457|0.1676 +2016-07-01|43.0|-38.0|-13.48368|0.16806 +2016-07-01|43.0|-39.0|-13.80555|0.1684 +2016-07-01|43.0|-40.0|-14.11958|0.16861 +2016-07-01|43.0|-41.0|-14.42516|0.1687 +2016-07-01|43.0|-42.0|-14.72159|0.16863 +2016-07-01|43.0|-43.0|-15.00815|0.16841 +2016-07-01|43.0|-44.0|-15.28406|0.16802 +2016-07-01|43.0|-45.0|-15.54846|0.16744 +2016-07-01|43.0|-46.0|-15.80048|0.16668 +2016-07-01|43.0|-47.0|-16.03917|0.16571 +2016-07-01|43.0|-48.0|-16.26354|0.16452 +2016-07-01|43.0|-49.0|-16.47256|0.16311 +2016-07-01|43.0|-50.0|-16.66515|0.16147 +2016-07-01|43.0|-51.0|-16.8402|0.15959 +2016-07-01|43.0|-52.0|-16.99657|0.15746 +2016-07-01|43.0|-53.0|-17.13309|0.15507 +2016-07-01|43.0|-54.0|-17.24859|0.15242 +2016-07-01|43.0|-55.0|-17.34187|0.14951 +2016-07-01|43.0|-56.0|-17.41173|0.14633 +2016-07-01|43.0|-57.0|-17.457|0.14287 +2016-07-01|43.0|-58.0|-17.4765|0.13913 +2016-07-01|43.0|-59.0|-17.46908|0.13512 +2016-07-01|43.0|-60.0|-17.43363|0.13083 +2016-07-01|43.0|-61.0|-17.36908|0.12626 +2016-07-01|43.0|-62.0|-17.27441|0.12142 +2016-07-01|43.0|-63.0|-17.14868|0.11631 +2016-07-01|43.0|-64.0|-16.991|0.11092 +2016-07-01|43.0|-65.0|-16.80059|0.10528 +2016-07-01|43.0|-66.0|-16.57676|0.09939 +2016-07-01|43.0|-67.0|-16.31893|0.09325 +2016-07-01|43.0|-68.0|-16.02665|0.08688 +2016-07-01|43.0|-69.0|-15.69958|0.08029 +2016-07-01|43.0|-70.0|-15.33756|0.0735 +2016-07-01|43.0|-71.0|-14.94057|0.06652 +2016-07-01|43.0|-72.0|-14.50877|0.05937 +2016-07-01|43.0|-73.0|-14.04247|0.05208 +2016-07-01|43.0|-74.0|-13.54222|0.04467 +2016-07-01|43.0|-75.0|-13.00872|0.03716 +2016-07-01|43.0|-76.0|-12.4429|0.02958 +2016-07-01|43.0|-77.0|-11.84589|0.02197 +2016-07-01|43.0|-78.0|-11.21903|0.01435 +2016-07-01|43.0|-79.0|-10.56387|0.00676 +2016-07-01|43.0|-80.0|-9.88218|-7.7E-4 +2016-07-01|43.0|-81.0|-9.17589|-0.0082 +2016-07-01|43.0|-82.0|-8.44715|-0.0155 +2016-07-01|43.0|-83.0|-7.69827|-0.02264 +2016-07-01|43.0|-84.0|-6.93171|-0.02958 +2016-07-01|43.0|-85.0|-6.15006|-0.0363 +2016-07-01|43.0|-86.0|-5.35602|-0.04275 +2016-07-01|43.0|-87.0|-4.55238|-0.04893 +2016-07-01|43.0|-88.0|-3.74195|-0.0548 +2016-07-01|43.0|-89.0|-2.9276|-0.06035 +2016-07-01|43.0|-90.0|-2.11214|-0.06557 +2016-07-01|43.0|-91.0|-1.29839|-0.07044 +2016-07-01|43.0|-92.0|-0.48905|-0.07496 +2016-07-01|43.0|-93.0|0.31325|-0.07913 +2016-07-01|43.0|-94.0|1.10601|-0.08295 +2016-07-01|43.0|-95.0|1.8869|-0.08642 +2016-07-01|43.0|-96.0|2.65373|-0.08957 +2016-07-01|43.0|-97.0|3.40452|-0.0924 +2016-07-01|43.0|-98.0|4.13745|-0.09493 +2016-07-01|43.0|-99.0|4.85094|-0.09718 +2016-07-01|43.0|-100.0|5.54359|-0.09916 +2016-07-01|43.0|-101.0|6.21421|-0.10091 +2016-07-01|43.0|-102.0|6.86182|-0.10245 +2016-07-01|43.0|-103.0|7.48563|-0.10379 +2016-07-01|43.0|-104.0|8.08504|-0.10495 +2016-07-01|43.0|-105.0|8.6596|-0.10597 +2016-07-01|43.0|-106.0|9.20906|-0.10687 +2016-07-01|43.0|-107.0|9.73328|-0.10765 +2016-07-01|43.0|-108.0|10.23228|-0.10835 +2016-07-01|43.0|-109.0|10.70619|-0.10898 +2016-07-01|43.0|-110.0|11.15522|-0.10955 +2016-07-01|43.0|-111.0|11.57969|-0.11008 +2016-07-01|43.0|-112.0|11.97998|-0.11059 +2016-07-01|43.0|-113.0|12.35653|-0.11108 +2016-07-01|43.0|-114.0|12.70982|-0.11156 +2016-07-01|43.0|-115.0|13.04038|-0.11204 +2016-07-01|43.0|-116.0|13.34872|-0.11253 +2016-07-01|43.0|-117.0|13.63541|-0.11304 +2016-07-01|43.0|-118.0|13.90098|-0.11357 +2016-07-01|43.0|-119.0|14.14598|-0.11412 +2016-07-01|43.0|-120.0|14.37095|-0.1147 +2016-07-01|43.0|-121.0|14.57641|-0.1153 +2016-07-01|43.0|-122.0|14.76285|-0.11594 +2016-07-01|43.0|-123.0|14.93076|-0.11661 +2016-07-01|43.0|-124.0|15.08058|-0.11731 +2016-07-01|43.0|-125.0|15.21277|-0.11804 +2016-07-01|43.0|-126.0|15.32771|-0.11881 +2016-07-01|43.0|-127.0|15.42581|-0.11961 +2016-07-01|43.0|-128.0|15.50743|-0.12044 +2016-07-01|43.0|-129.0|15.57292|-0.1213 +2016-07-01|43.0|-130.0|15.6226|-0.12219 +2016-07-01|43.0|-131.0|15.6568|-0.12311 +2016-07-01|43.0|-132.0|15.67583|-0.12405 +2016-07-01|43.0|-133.0|15.67997|-0.12503 +2016-07-01|43.0|-134.0|15.66953|-0.12602 +2016-07-01|43.0|-135.0|15.64479|-0.12704 +2016-07-01|43.0|-136.0|15.60604|-0.12808 +2016-07-01|43.0|-137.0|15.55358|-0.12914 +2016-07-01|43.0|-138.0|15.48768|-0.13022 +2016-07-01|43.0|-139.0|15.40865|-0.1313 +2016-07-01|43.0|-140.0|15.3168|-0.13239 +2016-07-01|43.0|-141.0|15.21242|-0.13348 +2016-07-01|43.0|-142.0|15.09584|-0.13457 +2016-07-01|43.0|-143.0|14.96737|-0.13566 +2016-07-01|43.0|-144.0|14.82734|-0.13673 +2016-07-01|43.0|-145.0|14.67608|-0.13778 +2016-07-01|43.0|-146.0|14.51393|-0.1388 +2016-07-01|43.0|-147.0|14.34122|-0.13979 +2016-07-01|43.0|-148.0|14.15829|-0.14074 +2016-07-01|43.0|-149.0|13.96547|-0.14163 +2016-07-01|43.0|-150.0|13.76309|-0.14247 +2016-07-01|43.0|-151.0|13.55149|-0.14324 +2016-07-01|43.0|-152.0|13.33097|-0.14392 +2016-07-01|43.0|-153.0|13.10185|-0.14452 +2016-07-01|43.0|-154.0|12.86442|-0.14502 +2016-07-01|43.0|-155.0|12.61895|-0.14541 +2016-07-01|43.0|-156.0|12.36573|-0.14568 +2016-07-01|43.0|-157.0|12.105|-0.14582 +2016-07-01|43.0|-158.0|11.837|-0.14583 +2016-07-01|43.0|-159.0|11.56194|-0.14569 +2016-07-01|43.0|-160.0|11.28002|-0.14539 +2016-07-01|43.0|-161.0|10.99142|-0.14494 +2016-07-01|43.0|-162.0|10.69631|-0.14431 +2016-07-01|43.0|-163.0|10.39484|-0.14351 +2016-07-01|43.0|-164.0|10.08714|-0.14253 +2016-07-01|43.0|-165.0|9.77334|-0.14137 +2016-07-01|43.0|-166.0|9.45354|-0.14002 +2016-07-01|43.0|-167.0|9.12785|-0.13849 +2016-07-01|43.0|-168.0|8.79637|-0.13677 +2016-07-01|43.0|-169.0|8.4592|-0.13486 +2016-07-01|43.0|-170.0|8.11642|-0.13278 +2016-07-01|43.0|-171.0|7.76813|-0.13052 +2016-07-01|43.0|-172.0|7.41443|-0.12809 +2016-07-01|43.0|-173.0|7.05543|-0.1255 +2016-07-01|43.0|-174.0|6.69125|-0.12276 +2016-07-01|43.0|-175.0|6.32203|-0.11987 +2016-07-01|43.0|-176.0|5.9479|-0.11685 +2016-07-01|43.0|-177.0|5.56903|-0.11371 +2016-07-01|43.0|-178.0|5.1856|-0.11047 +2016-07-01|43.0|-179.0|4.79782|-0.10713 +2016-07-01|44.0|0.0|0.00452|0.12335 +2016-07-01|44.0|1.0|0.2846|0.12187 +2016-07-01|44.0|2.0|0.55662|0.12044 +2016-07-01|44.0|3.0|0.82071|0.11907 +2016-07-01|44.0|4.0|1.07705|0.11778 +2016-07-01|44.0|5.0|1.32587|0.11656 +2016-07-01|44.0|6.0|1.56745|0.11542 +2016-07-01|44.0|7.0|1.80208|0.11437 +2016-07-01|44.0|8.0|2.03009|0.1134 +2016-07-01|44.0|9.0|2.25183|0.11253 +2016-07-01|44.0|10.0|2.46766|0.11174 +2016-07-01|44.0|11.0|2.67795|0.11105 +2016-07-01|44.0|12.0|2.88306|0.11043 +2016-07-01|44.0|13.0|3.08333|0.1099 +2016-07-01|44.0|14.0|3.2791|0.10945 +2016-07-01|44.0|15.0|3.47067|0.10906 +2016-07-01|44.0|16.0|3.65831|0.10873 +2016-07-01|44.0|17.0|3.84225|0.10845 +2016-07-01|44.0|18.0|4.02269|0.1082 +2016-07-01|44.0|19.0|4.19978|0.10798 +2016-07-01|44.0|20.0|4.37361|0.10778 +2016-07-01|44.0|21.0|4.54424|0.10758 +2016-07-01|44.0|22.0|4.71168|0.10736 +2016-07-01|44.0|23.0|4.87588|0.10712 +2016-07-01|44.0|24.0|5.03675|0.10684 +2016-07-01|44.0|25.0|5.19418|0.10651 +2016-07-01|44.0|26.0|5.34799|0.10612 +2016-07-01|44.0|27.0|5.49799|0.10567 +2016-07-01|44.0|28.0|5.64395|0.10513 +2016-07-01|44.0|29.0|5.78564|0.10451 +2016-07-01|44.0|30.0|5.92279|0.10379 +2016-07-01|44.0|31.0|6.05514|0.10298 +2016-07-01|44.0|32.0|6.18242|0.10207 +2016-07-01|44.0|33.0|6.30436|0.10106 +2016-07-01|44.0|34.0|6.4207|0.09995 +2016-07-01|44.0|35.0|6.53122|0.09874 +2016-07-01|44.0|36.0|6.63569|0.09744 +2016-07-01|44.0|37.0|6.73392|0.09606 +2016-07-01|44.0|38.0|6.82574|0.0946 +2016-07-01|44.0|39.0|6.91102|0.09306 +2016-07-01|44.0|40.0|6.98966|0.09147 +2016-07-01|44.0|41.0|7.06158|0.08982 +2016-07-01|44.0|42.0|7.12674|0.08814 +2016-07-01|44.0|43.0|7.18514|0.08643 +2016-07-01|44.0|44.0|7.23679|0.0847 +2016-07-01|44.0|45.0|7.28174|0.08297 +2016-07-01|44.0|46.0|7.32006|0.08125 +2016-07-01|44.0|47.0|7.35182|0.07955 +2016-07-01|44.0|48.0|7.37713|0.07787 +2016-07-01|44.0|49.0|7.39609|0.07624 +2016-07-01|44.0|50.0|7.4088|0.07465 +2016-07-01|44.0|51.0|7.41538|0.07311 +2016-07-01|44.0|52.0|7.41591|0.07163 +2016-07-01|44.0|53.0|7.41049|0.07021 +2016-07-01|44.0|54.0|7.39919|0.06885 +2016-07-01|44.0|55.0|7.38207|0.06757 +2016-07-01|44.0|56.0|7.35914|0.06634 +2016-07-01|44.0|57.0|7.33042|0.06518 +2016-07-01|44.0|58.0|7.2959|0.06408 +2016-07-01|44.0|59.0|7.25552|0.06303 +2016-07-01|44.0|60.0|7.20921|0.06203 +2016-07-01|44.0|61.0|7.15687|0.06107 +2016-07-01|44.0|62.0|7.09839|0.06015 +2016-07-01|44.0|63.0|7.03362|0.05925 +2016-07-01|44.0|64.0|6.96238|0.05837 +2016-07-01|44.0|65.0|6.88449|0.05749 +2016-07-01|44.0|66.0|6.79976|0.05661 +2016-07-01|44.0|67.0|6.70795|0.05571 +2016-07-01|44.0|68.0|6.60885|0.05479 +2016-07-01|44.0|69.0|6.50224|0.05383 +2016-07-01|44.0|70.0|6.38786|0.05282 +2016-07-01|44.0|71.0|6.2655|0.05176 +2016-07-01|44.0|72.0|6.13491|0.05064 +2016-07-01|44.0|73.0|5.99587|0.04944 +2016-07-01|44.0|74.0|5.84816|0.04816 +2016-07-01|44.0|75.0|5.69157|0.04678 +2016-07-01|44.0|76.0|5.52591|0.04532 +2016-07-01|44.0|77.0|5.35097|0.04375 +2016-07-01|44.0|78.0|5.1666|0.04207 +2016-07-01|44.0|79.0|4.97264|0.04028 +2016-07-01|44.0|80.0|4.76894|0.03837 +2016-07-01|44.0|81.0|4.55538|0.03635 +2016-07-01|44.0|82.0|4.33186|0.0342 +2016-07-01|44.0|83.0|4.09829|0.03194 +2016-07-01|44.0|84.0|3.8546|0.02955 +2016-07-01|44.0|85.0|3.60075|0.02704 +2016-07-01|44.0|86.0|3.33671|0.02442 +2016-07-01|44.0|87.0|3.06251|0.02168 +2016-07-01|44.0|88.0|2.77816|0.01883 +2016-07-01|44.0|89.0|2.48374|0.01588 +2016-07-01|44.0|90.0|2.17934|0.01283 +2016-07-01|44.0|91.0|1.8651|0.00968 +2016-07-01|44.0|92.0|1.5412|0.00646 +2016-07-01|44.0|93.0|1.20786|0.00316 +2016-07-01|44.0|94.0|0.86537|-2.0E-4 +2016-07-01|44.0|95.0|0.51406|-0.00361 +2016-07-01|44.0|96.0|0.1543|-0.00706 +2016-07-01|44.0|97.0|-0.21343|-0.01054 +2016-07-01|44.0|98.0|-0.58862|-0.01402 +2016-07-01|44.0|99.0|-0.97067|-0.0175 +2016-07-01|44.0|100.0|-1.35891|-0.02096 +2016-07-01|44.0|101.0|-1.75261|-0.02437 +2016-07-01|44.0|102.0|-2.15093|-0.02773 +2016-07-01|44.0|103.0|-2.55298|-0.03102 +2016-07-01|44.0|104.0|-2.9578|-0.03422 +2016-07-01|44.0|105.0|-3.36433|-0.0373 +2016-07-01|44.0|106.0|-3.77146|-0.04027 +2016-07-01|44.0|107.0|-4.17802|-0.04309 +2016-07-01|44.0|108.0|-4.58278|-0.04575 +2016-07-01|44.0|109.0|-4.98446|-0.04825 +2016-07-01|44.0|110.0|-5.38173|-0.05055 +2016-07-01|44.0|111.0|-5.77327|-0.05266 +2016-07-01|44.0|112.0|-6.1577|-0.05457 +2016-07-01|44.0|113.0|-6.53366|-0.05626 +2016-07-01|44.0|114.0|-6.89978|-0.05773 +2016-07-01|44.0|115.0|-7.25474|-0.05897 +2016-07-01|44.0|116.0|-7.59722|-0.05999 +2016-07-01|44.0|117.0|-7.92595|-0.06078 +2016-07-01|44.0|118.0|-8.23972|-0.06134 +2016-07-01|44.0|119.0|-8.53738|-0.06168 +2016-07-01|44.0|120.0|-8.81787|-0.06181 +2016-07-01|44.0|121.0|-9.08018|-0.06172 +2016-07-01|44.0|122.0|-9.32341|-0.06145 +2016-07-01|44.0|123.0|-9.54676|-0.06098 +2016-07-01|44.0|124.0|-9.7495|-0.06034 +2016-07-01|44.0|125.0|-9.93104|-0.05954 +2016-07-01|44.0|126.0|-10.09086|-0.05859 +2016-07-01|44.0|127.0|-10.22856|-0.05751 +2016-07-01|44.0|128.0|-10.34383|-0.05632 +2016-07-01|44.0|129.0|-10.43647|-0.05503 +2016-07-01|44.0|130.0|-10.50638|-0.05366 +2016-07-01|44.0|131.0|-10.55354|-0.05223 +2016-07-01|44.0|132.0|-10.57802|-0.05075 +2016-07-01|44.0|133.0|-10.57999|-0.04923 +2016-07-01|44.0|134.0|-10.55968|-0.04771 +2016-07-01|44.0|135.0|-10.51739|-0.04618 +2016-07-01|44.0|136.0|-10.45351|-0.04468 +2016-07-01|44.0|137.0|-10.36846|-0.0432 +2016-07-01|44.0|138.0|-10.26273|-0.04178 +2016-07-01|44.0|139.0|-10.13686|-0.04041 +2016-07-01|44.0|140.0|-9.99141|-0.03912 +2016-07-01|44.0|141.0|-9.82701|-0.03792 +2016-07-01|44.0|142.0|-9.64429|-0.03681 +2016-07-01|44.0|143.0|-9.44391|-0.03582 +2016-07-01|44.0|144.0|-9.22656|-0.03494 +2016-07-01|44.0|145.0|-8.99294|-0.0342 +2016-07-01|44.0|146.0|-8.74376|-0.0336 +2016-07-01|44.0|147.0|-8.47973|-0.03314 +2016-07-01|44.0|148.0|-8.20158|-0.03285 +2016-07-01|44.0|149.0|-7.91002|-0.03271 +2016-07-01|44.0|150.0|-7.60579|-0.03275 +2016-07-01|44.0|151.0|-7.28958|-0.03296 +2016-07-01|44.0|152.0|-6.96211|-0.03335 +2016-07-01|44.0|153.0|-6.62409|-0.03392 +2016-07-01|44.0|154.0|-6.2762|-0.03468 +2016-07-01|44.0|155.0|-5.91912|-0.03563 +2016-07-01|44.0|156.0|-5.55353|-0.03677 +2016-07-01|44.0|157.0|-5.18007|-0.0381 +2016-07-01|44.0|158.0|-4.79941|-0.03962 +2016-07-01|44.0|159.0|-4.41217|-0.04133 +2016-07-01|44.0|160.0|-4.01896|-0.04323 +2016-07-01|44.0|161.0|-3.62041|-0.04531 +2016-07-01|44.0|162.0|-3.2171|-0.04757 +2016-07-01|44.0|163.0|-2.8096|-0.05 +2016-07-01|44.0|164.0|-2.3985|-0.0526 +2016-07-01|44.0|165.0|-1.98434|-0.05536 +2016-07-01|44.0|166.0|-1.56766|-0.05827 +2016-07-01|44.0|167.0|-1.14898|-0.06132 +2016-07-01|44.0|168.0|-0.72881|-0.0645 +2016-07-01|44.0|169.0|-0.30766|-0.0678 +2016-07-01|44.0|170.0|0.11401|-0.0712 +2016-07-01|44.0|171.0|0.53574|-0.07469 +2016-07-01|44.0|172.0|0.95707|-0.07827 +2016-07-01|44.0|173.0|1.37757|-0.08191 +2016-07-01|44.0|174.0|1.79685|-0.08559 +2016-07-01|44.0|175.0|2.2145|-0.08931 +2016-07-01|44.0|176.0|2.63016|-0.09304 +2016-07-01|44.0|177.0|3.04347|-0.09677 +2016-07-01|44.0|178.0|3.45409|-0.10049 +2016-07-01|44.0|179.0|3.86173|-0.10417 +2016-07-01|44.0|-1.0|-0.28369|0.12488 +2016-07-01|44.0|-2.0|-0.58005|0.12645 +2016-07-01|44.0|-3.0|-0.88452|0.12805 +2016-07-01|44.0|-4.0|-1.197|0.12967 +2016-07-01|44.0|-5.0|-1.51733|0.13131 +2016-07-01|44.0|-6.0|-1.84529|0.13295 +2016-07-01|44.0|-7.0|-2.1806|0.1346 +2016-07-01|44.0|-8.0|-2.52295|0.13623 +2016-07-01|44.0|-9.0|-2.87194|0.13785 +2016-07-01|44.0|-10.0|-3.22717|0.13946 +2016-07-01|44.0|-11.0|-3.58818|0.14104 +2016-07-01|44.0|-12.0|-3.95448|0.1426 +2016-07-01|44.0|-13.0|-4.32556|0.14413 +2016-07-01|44.0|-14.0|-4.70089|0.14564 +2016-07-01|44.0|-15.0|-5.07993|0.14711 +2016-07-01|44.0|-16.0|-5.4621|0.14855 +2016-07-01|44.0|-17.0|-5.84688|0.14996 +2016-07-01|44.0|-18.0|-6.23369|0.15135 +2016-07-01|44.0|-19.0|-6.622|0.1527 +2016-07-01|44.0|-20.0|-7.01128|0.15403 +2016-07-01|44.0|-21.0|-7.40101|0.15532 +2016-07-01|44.0|-22.0|-7.79069|0.1566 +2016-07-01|44.0|-23.0|-8.17984|0.15784 +2016-07-01|44.0|-24.0|-8.56801|0.15907 +2016-07-01|44.0|-25.0|-8.95475|0.16026 +2016-07-01|44.0|-26.0|-9.33964|0.16143 +2016-07-01|44.0|-27.0|-9.72228|0.16258 +2016-07-01|44.0|-28.0|-10.10229|0.16369 +2016-07-01|44.0|-29.0|-10.47928|0.16477 +2016-07-01|44.0|-30.0|-10.85288|0.16582 +2016-07-01|44.0|-31.0|-11.22273|0.16682 +2016-07-01|44.0|-32.0|-11.58844|0.16777 +2016-07-01|44.0|-33.0|-11.94964|0.16867 +2016-07-01|44.0|-34.0|-12.30594|0.16951 +2016-07-01|44.0|-35.0|-12.65693|0.17028 +2016-07-01|44.0|-36.0|-13.00215|0.17098 +2016-07-01|44.0|-37.0|-13.34116|0.17158 +2016-07-01|44.0|-38.0|-13.67345|0.17209 +2016-07-01|44.0|-39.0|-13.99847|0.17249 +2016-07-01|44.0|-40.0|-14.31565|0.17277 +2016-07-01|44.0|-41.0|-14.62435|0.17291 +2016-07-01|44.0|-42.0|-14.9239|0.17292 +2016-07-01|44.0|-43.0|-15.21357|0.17277 +2016-07-01|44.0|-44.0|-15.49258|0.17246 +2016-07-01|44.0|-45.0|-15.76009|0.17198 +2016-07-01|44.0|-46.0|-16.01522|0.1713 +2016-07-01|44.0|-47.0|-16.25705|0.17044 +2016-07-01|44.0|-48.0|-16.48457|0.16936 +2016-07-01|44.0|-49.0|-16.69678|0.16807 +2016-07-01|44.0|-50.0|-16.8926|0.16655 +2016-07-01|44.0|-51.0|-17.07092|0.1648 +2016-07-01|44.0|-52.0|-17.23062|0.1628 +2016-07-01|44.0|-53.0|-17.37053|0.16056 +2016-07-01|44.0|-54.0|-17.48947|0.15806 +2016-07-01|44.0|-55.0|-17.58624|0.15531 +2016-07-01|44.0|-56.0|-17.65966|0.15228 +2016-07-01|44.0|-57.0|-17.70851|0.14899 +2016-07-01|44.0|-58.0|-17.73162|0.14543 +2016-07-01|44.0|-59.0|-17.72783|0.14159 +2016-07-01|44.0|-60.0|-17.69599|0.13747 +2016-07-01|44.0|-61.0|-17.63501|0.13308 +2016-07-01|44.0|-62.0|-17.54385|0.12841 +2016-07-01|44.0|-63.0|-17.42151|0.12347 +2016-07-01|44.0|-64.0|-17.26709|0.11825 +2016-07-01|44.0|-65.0|-17.07975|0.11277 +2016-07-01|44.0|-66.0|-16.85874|0.10703 +2016-07-01|44.0|-67.0|-16.60345|0.10104 +2016-07-01|44.0|-68.0|-16.31334|0.0948 +2016-07-01|44.0|-69.0|-15.98806|0.08832 +2016-07-01|44.0|-70.0|-15.62735|0.08163 +2016-07-01|44.0|-71.0|-15.23114|0.07474 +2016-07-01|44.0|-72.0|-14.79953|0.06765 +2016-07-01|44.0|-73.0|-14.33277|0.06041 +2016-07-01|44.0|-74.0|-13.83135|0.05301 +2016-07-01|44.0|-75.0|-13.29591|0.0455 +2016-07-01|44.0|-76.0|-12.72734|0.03789 +2016-07-01|44.0|-77.0|-12.12671|0.03022 +2016-07-01|44.0|-78.0|-11.49534|0.02251 +2016-07-01|44.0|-79.0|-10.83474|0.0148 +2016-07-01|44.0|-80.0|-10.14666|0.00713 +2016-07-01|44.0|-81.0|-9.43302|-4.8E-4 +2016-07-01|44.0|-82.0|-8.69597|-0.00799 +2016-07-01|44.0|-83.0|-7.93782|-0.01536 +2016-07-01|44.0|-84.0|-7.16106|-0.02256 +2016-07-01|44.0|-85.0|-6.36833|-0.02957 +2016-07-01|44.0|-86.0|-5.56235|-0.03634 +2016-07-01|44.0|-87.0|-4.74596|-0.04285 +2016-07-01|44.0|-88.0|-3.92205|-0.04908 +2016-07-01|44.0|-89.0|-3.09354|-0.055 +2016-07-01|44.0|-90.0|-2.26335|-0.0606 +2016-07-01|44.0|-91.0|-1.43435|-0.06587 +2016-07-01|44.0|-92.0|-0.60934|-0.0708 +2016-07-01|44.0|-93.0|0.20897|-0.07538 +2016-07-01|44.0|-94.0|1.01799|-0.07962 +2016-07-01|44.0|-95.0|1.81529|-0.08351 +2016-07-01|44.0|-96.0|2.59861|-0.08708 +2016-07-01|44.0|-97.0|3.36587|-0.09032 +2016-07-01|44.0|-98.0|4.11521|-0.09326 +2016-07-01|44.0|-99.0|4.84493|-0.09591 +2016-07-01|44.0|-100.0|5.5536|-0.09829 +2016-07-01|44.0|-101.0|6.23995|-0.10042 +2016-07-01|44.0|-102.0|6.90294|-0.10233 +2016-07-01|44.0|-103.0|7.54175|-0.10403 +2016-07-01|44.0|-104.0|8.1557|-0.10554 +2016-07-01|44.0|-105.0|8.74434|-0.1069 +2016-07-01|44.0|-106.0|9.30736|-0.10811 +2016-07-01|44.0|-107.0|9.84461|-0.1092 +2016-07-01|44.0|-108.0|10.35608|-0.1102 +2016-07-01|44.0|-109.0|10.84187|-0.1111 +2016-07-01|44.0|-110.0|11.30218|-0.11194 +2016-07-01|44.0|-111.0|11.73733|-0.11273 +2016-07-01|44.0|-112.0|12.14768|-0.11348 +2016-07-01|44.0|-113.0|12.53366|-0.1142 +2016-07-01|44.0|-114.0|12.89576|-0.1149 +2016-07-01|44.0|-115.0|13.23449|-0.1156 +2016-07-01|44.0|-116.0|13.55038|-0.11629 +2016-07-01|44.0|-117.0|13.84399|-0.11699 +2016-07-01|44.0|-118.0|14.11587|-0.1177 +2016-07-01|44.0|-119.0|14.36658|-0.11843 +2016-07-01|44.0|-120.0|14.59664|-0.11917 +2016-07-01|44.0|-121.0|14.80661|-0.11994 +2016-07-01|44.0|-122.0|14.99698|-0.12073 +2016-07-01|44.0|-123.0|15.16825|-0.12155 +2016-07-01|44.0|-124.0|15.32089|-0.12239 +2016-07-01|44.0|-125.0|15.45535|-0.12326 +2016-07-01|44.0|-126.0|15.57206|-0.12416 +2016-07-01|44.0|-127.0|15.67141|-0.12509 +2016-07-01|44.0|-128.0|15.7538|-0.12604 +2016-07-01|44.0|-129.0|15.81958|-0.12702 +2016-07-01|44.0|-130.0|15.86911|-0.12803 +2016-07-01|44.0|-131.0|15.90272|-0.12905 +2016-07-01|44.0|-132.0|15.92072|-0.13011 +2016-07-01|44.0|-133.0|15.92344|-0.13118 +2016-07-01|44.0|-134.0|15.91118|-0.13227 +2016-07-01|44.0|-135.0|15.88423|-0.13338 +2016-07-01|44.0|-136.0|15.84291|-0.13451 +2016-07-01|44.0|-137.0|15.78749|-0.13565 +2016-07-01|44.0|-138.0|15.71829|-0.13679 +2016-07-01|44.0|-139.0|15.63561|-0.13795 +2016-07-01|44.0|-140.0|15.53976|-0.1391 +2016-07-01|44.0|-141.0|15.43104|-0.14025 +2016-07-01|44.0|-142.0|15.30977|-0.14139 +2016-07-01|44.0|-143.0|15.17628|-0.14251 +2016-07-01|44.0|-144.0|15.03089|-0.14362 +2016-07-01|44.0|-145.0|14.87393|-0.1447 +2016-07-01|44.0|-146.0|14.70573|-0.14574 +2016-07-01|44.0|-147.0|14.52663|-0.14674 +2016-07-01|44.0|-148.0|14.33697|-0.1477 +2016-07-01|44.0|-149.0|14.13708|-0.14859 +2016-07-01|44.0|-150.0|13.92729|-0.14941 +2016-07-01|44.0|-151.0|13.70793|-0.15016 +2016-07-01|44.0|-152.0|13.47931|-0.15082 +2016-07-01|44.0|-153.0|13.24176|-0.15139 +2016-07-01|44.0|-154.0|12.99557|-0.15185 +2016-07-01|44.0|-155.0|12.74103|-0.15219 +2016-07-01|44.0|-156.0|12.47843|-0.15241 +2016-07-01|44.0|-157.0|12.20802|-0.1525 +2016-07-01|44.0|-158.0|11.93006|-0.15244 +2016-07-01|44.0|-159.0|11.64479|-0.15222 +2016-07-01|44.0|-160.0|11.35242|-0.15185 +2016-07-01|44.0|-161.0|11.05316|-0.15131 +2016-07-01|44.0|-162.0|10.74721|-0.1506 +2016-07-01|44.0|-163.0|10.43473|-0.14971 +2016-07-01|44.0|-164.0|10.11591|-0.14863 +2016-07-01|44.0|-165.0|9.79088|-0.14737 +2016-07-01|44.0|-166.0|9.4598|-0.14592 +2016-07-01|44.0|-167.0|9.1228|-0.14428 +2016-07-01|44.0|-168.0|8.78002|-0.14245 +2016-07-01|44.0|-169.0|8.43158|-0.14043 +2016-07-01|44.0|-170.0|8.07762|-0.13823 +2016-07-01|44.0|-171.0|7.71826|-0.13585 +2016-07-01|44.0|-172.0|7.35364|-0.1333 +2016-07-01|44.0|-173.0|6.98389|-0.13058 +2016-07-01|44.0|-174.0|6.60916|-0.1277 +2016-07-01|44.0|-175.0|6.22962|-0.12468 +2016-07-01|44.0|-176.0|5.84542|-0.12153 +2016-07-01|44.0|-177.0|5.45676|-0.11825 +2016-07-01|44.0|-178.0|5.06384|-0.11486 +2016-07-01|44.0|-179.0|4.66686|-0.11137 +2016-07-01|45.0|0.0|-0.05158|0.12602 +2016-07-01|45.0|1.0|0.23547|0.12454 +2016-07-01|45.0|2.0|0.51467|0.1231 +2016-07-01|45.0|3.0|0.78614|0.12173 +2016-07-01|45.0|4.0|1.05005|0.12043 +2016-07-01|45.0|5.0|1.30659|0.11919 +2016-07-01|45.0|6.0|1.55602|0.11804 +2016-07-01|45.0|7.0|1.79862|0.11697 +2016-07-01|45.0|8.0|2.03469|0.11598 +2016-07-01|45.0|9.0|2.26456|0.11508 +2016-07-01|45.0|10.0|2.48858|0.11427 +2016-07-01|45.0|11.0|2.70708|0.11354 +2016-07-01|45.0|12.0|2.92042|0.11289 +2016-07-01|45.0|13.0|3.12892|0.11232 +2016-07-01|45.0|14.0|3.33291|0.11182 +2016-07-01|45.0|15.0|3.53268|0.11138 +2016-07-01|45.0|16.0|3.7285|0.111 +2016-07-01|45.0|17.0|3.92061|0.11067 +2016-07-01|45.0|18.0|4.10919|0.11038 +2016-07-01|45.0|19.0|4.29441|0.11011 +2016-07-01|45.0|20.0|4.47638|0.10986 +2016-07-01|45.0|21.0|4.65516|0.10961 +2016-07-01|45.0|22.0|4.83078|0.10935 +2016-07-01|45.0|23.0|5.0032|0.10907 +2016-07-01|45.0|24.0|5.17238|0.10876 +2016-07-01|45.0|25.0|5.3382|0.1084 +2016-07-01|45.0|26.0|5.50052|0.10799 +2016-07-01|45.0|27.0|5.65917|0.10751 +2016-07-01|45.0|28.0|5.81395|0.10696 +2016-07-01|45.0|29.0|5.96462|0.10633 +2016-07-01|45.0|30.0|6.11095|0.10561 +2016-07-01|45.0|31.0|6.25269|0.10481 +2016-07-01|45.0|32.0|6.38958|0.10391 +2016-07-01|45.0|33.0|6.52135|0.10291 +2016-07-01|45.0|34.0|6.64776|0.10183 +2016-07-01|45.0|35.0|6.76857|0.10065 +2016-07-01|45.0|36.0|6.88354|0.09938 +2016-07-01|45.0|37.0|6.99247|0.09803 +2016-07-01|45.0|38.0|7.09517|0.0966 +2016-07-01|45.0|39.0|7.19148|0.0951 +2016-07-01|45.0|40.0|7.28127|0.09354 +2016-07-01|45.0|41.0|7.36441|0.09192 +2016-07-01|45.0|42.0|7.44084|0.09027 +2016-07-01|45.0|43.0|7.5105|0.08858 +2016-07-01|45.0|44.0|7.57336|0.08688 +2016-07-01|45.0|45.0|7.6294|0.08516 +2016-07-01|45.0|46.0|7.67864|0.08344 +2016-07-01|45.0|47.0|7.7211|0.08174 +2016-07-01|45.0|48.0|7.75682|0.08005 +2016-07-01|45.0|49.0|7.78586|0.07839 +2016-07-01|45.0|50.0|7.80825|0.07677 +2016-07-01|45.0|51.0|7.82405|0.07519 +2016-07-01|45.0|52.0|7.8333|0.07366 +2016-07-01|45.0|53.0|7.83605|0.07218 +2016-07-01|45.0|54.0|7.83231|0.07075 +2016-07-01|45.0|55.0|7.8221|0.06938 +2016-07-01|45.0|56.0|7.80541|0.06807 +2016-07-01|45.0|57.0|7.78222|0.06681 +2016-07-01|45.0|58.0|7.75247|0.0656 +2016-07-01|45.0|59.0|7.71609|0.06444 +2016-07-01|45.0|60.0|7.673|0.06331 +2016-07-01|45.0|61.0|7.62309|0.06223 +2016-07-01|45.0|62.0|7.5662|0.06117 +2016-07-01|45.0|63.0|7.5022|0.06013 +2016-07-01|45.0|64.0|7.43091|0.0591 +2016-07-01|45.0|65.0|7.35213|0.05808 +2016-07-01|45.0|66.0|7.26568|0.05704 +2016-07-01|45.0|67.0|7.17133|0.056 +2016-07-01|45.0|68.0|7.06887|0.05492 +2016-07-01|45.0|69.0|6.95807|0.05381 +2016-07-01|45.0|70.0|6.8387|0.05265 +2016-07-01|45.0|71.0|6.71054|0.05144 +2016-07-01|45.0|72.0|6.57337|0.05016 +2016-07-01|45.0|73.0|6.42697|0.04881 +2016-07-01|45.0|74.0|6.27112|0.04738 +2016-07-01|45.0|75.0|6.10563|0.04586 +2016-07-01|45.0|76.0|5.9303|0.04425 +2016-07-01|45.0|77.0|5.74497|0.04254 +2016-07-01|45.0|78.0|5.54947|0.04072 +2016-07-01|45.0|79.0|5.34366|0.0388 +2016-07-01|45.0|80.0|5.12741|0.03676 +2016-07-01|45.0|81.0|4.90062|0.03461 +2016-07-01|45.0|82.0|4.66319|0.03234 +2016-07-01|45.0|83.0|4.41506|0.02996 +2016-07-01|45.0|84.0|4.15619|0.02746 +2016-07-01|45.0|85.0|3.88655|0.02484 +2016-07-01|45.0|86.0|3.60616|0.02212 +2016-07-01|45.0|87.0|3.31505|0.01929 +2016-07-01|45.0|88.0|3.0133|0.01635 +2016-07-01|45.0|89.0|2.701|0.01332 +2016-07-01|45.0|90.0|2.3783|0.0102 +2016-07-01|45.0|91.0|2.04539|0.00699 +2016-07-01|45.0|92.0|1.70249|0.00372 +2016-07-01|45.0|93.0|1.34988|3.8E-4 +2016-07-01|45.0|94.0|0.9879|-0.00301 +2016-07-01|45.0|95.0|0.61694|-0.00644 +2016-07-01|45.0|96.0|0.23745|-0.00989 +2016-07-01|45.0|97.0|-0.15004|-0.01335 +2016-07-01|45.0|98.0|-0.54495|-0.01681 +2016-07-01|45.0|99.0|-0.94661|-0.02025 +2016-07-01|45.0|100.0|-1.35429|-0.02365 +2016-07-01|45.0|101.0|-1.76718|-0.027 +2016-07-01|45.0|102.0|-2.18438|-0.03028 +2016-07-01|45.0|103.0|-2.60495|-0.03347 +2016-07-01|45.0|104.0|-3.02784|-0.03655 +2016-07-01|45.0|105.0|-3.45195|-0.03951 +2016-07-01|45.0|106.0|-3.87612|-0.04234 +2016-07-01|45.0|107.0|-4.29911|-0.04501 +2016-07-01|45.0|108.0|-4.71966|-0.04751 +2016-07-01|45.0|109.0|-5.13645|-0.04983 +2016-07-01|45.0|110.0|-5.54813|-0.05195 +2016-07-01|45.0|111.0|-5.95333|-0.05387 +2016-07-01|45.0|112.0|-6.35066|-0.05558 +2016-07-01|45.0|113.0|-6.73875|-0.05706 +2016-07-01|45.0|114.0|-7.11623|-0.05832 +2016-07-01|45.0|115.0|-7.48175|-0.05935 +2016-07-01|45.0|116.0|-7.83401|-0.06015 +2016-07-01|45.0|117.0|-8.17176|-0.06072 +2016-07-01|45.0|118.0|-8.4938|-0.06107 +2016-07-01|45.0|119.0|-8.799|-0.06121 +2016-07-01|45.0|120.0|-9.0863|-0.06113 +2016-07-01|45.0|121.0|-9.35474|-0.06084 +2016-07-01|45.0|122.0|-9.60345|-0.06037 +2016-07-01|45.0|123.0|-9.83164|-0.05972 +2016-07-01|45.0|124.0|-10.03864|-0.0589 +2016-07-01|45.0|125.0|-10.22386|-0.05793 +2016-07-01|45.0|126.0|-10.38684|-0.05682 +2016-07-01|45.0|127.0|-10.52719|-0.0556 +2016-07-01|45.0|128.0|-10.64466|-0.05427 +2016-07-01|45.0|129.0|-10.73905|-0.05286 +2016-07-01|45.0|130.0|-10.81031|-0.05138 +2016-07-01|45.0|131.0|-10.85845|-0.04984 +2016-07-01|45.0|132.0|-10.88355|-0.04827 +2016-07-01|45.0|133.0|-10.88582|-0.04669 +2016-07-01|45.0|134.0|-10.86551|-0.0451 +2016-07-01|45.0|135.0|-10.82296|-0.04353 +2016-07-01|45.0|136.0|-10.75854|-0.042 +2016-07-01|45.0|137.0|-10.67273|-0.0405 +2016-07-01|45.0|138.0|-10.56601|-0.03907 +2016-07-01|45.0|139.0|-10.43895|-0.03772 +2016-07-01|45.0|140.0|-10.29213|-0.03645 +2016-07-01|45.0|141.0|-10.12617|-0.03528 +2016-07-01|45.0|142.0|-9.94173|-0.03423 +2016-07-01|45.0|143.0|-9.73949|-0.03329 +2016-07-01|45.0|144.0|-9.52013|-0.0325 +2016-07-01|45.0|145.0|-9.28436|-0.03184 +2016-07-01|45.0|146.0|-9.03291|-0.03134 +2016-07-01|45.0|147.0|-8.7665|-0.031 +2016-07-01|45.0|148.0|-8.48585|-0.03083 +2016-07-01|45.0|149.0|-8.19169|-0.03083 +2016-07-01|45.0|150.0|-7.88476|-0.03101 +2016-07-01|45.0|151.0|-7.56575|-0.03138 +2016-07-01|45.0|152.0|-7.23539|-0.03193 +2016-07-01|45.0|153.0|-6.89439|-0.03268 +2016-07-01|45.0|154.0|-6.54342|-0.03362 +2016-07-01|45.0|155.0|-6.18317|-0.03476 +2016-07-01|45.0|156.0|-5.81432|-0.03609 +2016-07-01|45.0|157.0|-5.43751|-0.03762 +2016-07-01|45.0|158.0|-5.05339|-0.03935 +2016-07-01|45.0|159.0|-4.66258|-0.04127 +2016-07-01|45.0|160.0|-4.2657|-0.04338 +2016-07-01|45.0|161.0|-3.86335|-0.04567 +2016-07-01|45.0|162.0|-3.45612|-0.04815 +2016-07-01|45.0|163.0|-3.04456|-0.0508 +2016-07-01|45.0|164.0|-2.62925|-0.05361 +2016-07-01|45.0|165.0|-2.21071|-0.05659 +2016-07-01|45.0|166.0|-1.78947|-0.05971 +2016-07-01|45.0|167.0|-1.36605|-0.06297 +2016-07-01|45.0|168.0|-0.94094|-0.06636 +2016-07-01|45.0|169.0|-0.51463|-0.06986 +2016-07-01|45.0|170.0|-0.08756|-0.07347 +2016-07-01|45.0|171.0|0.3398|-0.07717 +2016-07-01|45.0|172.0|0.76703|-0.08094 +2016-07-01|45.0|173.0|1.1937|-0.08477 +2016-07-01|45.0|174.0|1.61942|-0.08864 +2016-07-01|45.0|175.0|2.04381|-0.09254 +2016-07-01|45.0|176.0|2.46651|-0.09645 +2016-07-01|45.0|177.0|2.88716|-0.10036 +2016-07-01|45.0|178.0|3.30543|-0.10424 +2016-07-01|45.0|179.0|3.72102|-0.10809 +2016-07-01|45.0|-1.0|-0.34654|0.12756 +2016-07-01|45.0|-2.0|-0.6494|0.12913 +2016-07-01|45.0|-3.0|-0.96013|0.13074 +2016-07-01|45.0|-4.0|-1.27862|0.13236 +2016-07-01|45.0|-5.0|-1.6047|0.13401 +2016-07-01|45.0|-6.0|-1.93815|0.13566 +2016-07-01|45.0|-7.0|-2.27872|0.13732 +2016-07-01|45.0|-8.0|-2.62606|0.13897 +2016-07-01|45.0|-9.0|-2.97984|0.14061 +2016-07-01|45.0|-10.0|-3.33962|0.14224 +2016-07-01|45.0|-11.0|-3.70499|0.14385 +2016-07-01|45.0|-12.0|-4.07547|0.14544 +2016-07-01|45.0|-13.0|-4.45056|0.14701 +2016-07-01|45.0|-14.0|-4.82975|0.14855 +2016-07-01|45.0|-15.0|-5.21251|0.15007 +2016-07-01|45.0|-16.0|-5.59832|0.15156 +2016-07-01|45.0|-17.0|-5.98663|0.15302 +2016-07-01|45.0|-18.0|-6.37691|0.15445 +2016-07-01|45.0|-19.0|-6.76864|0.15586 +2016-07-01|45.0|-20.0|-7.1613|0.15724 +2016-07-01|45.0|-21.0|-7.55439|0.1586 +2016-07-01|45.0|-22.0|-7.94742|0.15993 +2016-07-01|45.0|-23.0|-8.33992|0.16123 +2016-07-01|45.0|-24.0|-8.73144|0.16251 +2016-07-01|45.0|-25.0|-9.12155|0.16377 +2016-07-01|45.0|-26.0|-9.50983|0.165 +2016-07-01|45.0|-27.0|-9.89589|0.1662 +2016-07-01|45.0|-28.0|-10.27932|0.16737 +2016-07-01|45.0|-29.0|-10.65975|0.16851 +2016-07-01|45.0|-30.0|-11.0368|0.1696 +2016-07-01|45.0|-31.0|-11.41011|0.17066 +2016-07-01|45.0|-32.0|-11.77929|0.17167 +2016-07-01|45.0|-33.0|-12.14395|0.17262 +2016-07-01|45.0|-34.0|-12.5037|0.17352 +2016-07-01|45.0|-35.0|-12.85811|0.17434 +2016-07-01|45.0|-36.0|-13.20675|0.17509 +2016-07-01|45.0|-37.0|-13.54914|0.17575 +2016-07-01|45.0|-38.0|-13.88478|0.17632 +2016-07-01|45.0|-39.0|-14.21312|0.17678 +2016-07-01|45.0|-40.0|-14.53358|0.17712 +2016-07-01|45.0|-41.0|-14.84553|0.17734 +2016-07-01|45.0|-42.0|-15.1483|0.17742 +2016-07-01|45.0|-43.0|-15.44115|0.17735 +2016-07-01|45.0|-44.0|-15.72332|0.17713 +2016-07-01|45.0|-45.0|-15.99397|0.17673 +2016-07-01|45.0|-46.0|-16.25224|0.17616 +2016-07-01|45.0|-47.0|-16.49718|0.17539 +2016-07-01|45.0|-48.0|-16.72784|0.17443 +2016-07-01|45.0|-49.0|-16.94319|0.17325 +2016-07-01|45.0|-50.0|-17.14218|0.17186 +2016-07-01|45.0|-51.0|-17.32369|0.17024 +2016-07-01|45.0|-52.0|-17.48662|0.16839 +2016-07-01|45.0|-53.0|-17.62979|0.1663 +2016-07-01|45.0|-54.0|-17.75203|0.16395 +2016-07-01|45.0|-55.0|-17.85215|0.16136 +2016-07-01|45.0|-56.0|-17.92894|0.1585 +2016-07-01|45.0|-57.0|-17.9812|0.15538 +2016-07-01|45.0|-58.0|-18.00773|0.15199 +2016-07-01|45.0|-59.0|-18.00736|0.14833 +2016-07-01|45.0|-60.0|-17.97892|0.14439 +2016-07-01|45.0|-61.0|-17.92131|0.14018 +2016-07-01|45.0|-62.0|-17.83344|0.13569 +2016-07-01|45.0|-63.0|-17.71429|0.13092 +2016-07-01|45.0|-64.0|-17.56291|0.12588 +2016-07-01|45.0|-65.0|-17.37842|0.12057 +2016-07-01|45.0|-66.0|-17.16003|0.11499 +2016-07-01|45.0|-67.0|-16.90706|0.10914 +2016-07-01|45.0|-68.0|-16.61894|0.10304 +2016-07-01|45.0|-69.0|-16.29524|0.0967 +2016-07-01|45.0|-70.0|-15.93565|0.09012 +2016-07-01|45.0|-71.0|-15.54003|0.08331 +2016-07-01|45.0|-72.0|-15.10842|0.0763 +2016-07-01|45.0|-73.0|-14.64101|0.0691 +2016-07-01|45.0|-74.0|-14.13822|0.06174 +2016-07-01|45.0|-75.0|-13.60065|0.05422 +2016-07-01|45.0|-76.0|-13.02912|0.04659 +2016-07-01|45.0|-77.0|-12.42467|0.03886 +2016-07-01|45.0|-78.0|-11.78855|0.03107 +2016-07-01|45.0|-79.0|-11.12227|0.02325 +2016-07-01|45.0|-80.0|-10.42751|0.01542 +2016-07-01|45.0|-81.0|-9.70622|0.00764 +2016-07-01|45.0|-82.0|-8.96052|-8.0E-5 +2016-07-01|45.0|-83.0|-8.19275|-0.0077 +2016-07-01|45.0|-84.0|-7.4054|-0.01517 +2016-07-01|45.0|-85.0|-6.60114|-0.02247 +2016-07-01|45.0|-86.0|-5.78273|-0.02957 +2016-07-01|45.0|-87.0|-4.95309|-0.03643 +2016-07-01|45.0|-88.0|-4.11514|-0.04303 +2016-07-01|45.0|-89.0|-3.27189|-0.04934 +2016-07-01|45.0|-90.0|-2.42633|-0.05535 +2016-07-01|45.0|-91.0|-1.58142|-0.06104 +2016-07-01|45.0|-92.0|-0.74004|-0.0664 +2016-07-01|45.0|-93.0|0.09498|-0.07142 +2016-07-01|45.0|-94.0|0.92099|-0.0761 +2016-07-01|45.0|-95.0|1.73546|-0.08044 +2016-07-01|45.0|-96.0|2.53603|-0.08445 +2016-07-01|45.0|-97.0|3.32054|-0.08814 +2016-07-01|45.0|-98.0|4.08703|-0.09151 +2016-07-01|45.0|-99.0|4.83375|-0.09459 +2016-07-01|45.0|-100.0|5.55916|-0.09739 +2016-07-01|45.0|-101.0|6.26196|-0.09993 +2016-07-01|45.0|-102.0|6.94103|-0.10224 +2016-07-01|45.0|-103.0|7.59549|-0.10432 +2016-07-01|45.0|-104.0|8.22463|-0.10621 +2016-07-01|45.0|-105.0|8.82795|-0.10792 +2016-07-01|45.0|-106.0|9.4051|-0.10948 +2016-07-01|45.0|-107.0|9.95591|-0.1109 +2016-07-01|45.0|-108.0|10.48033|-0.1122 +2016-07-01|45.0|-109.0|10.97845|-0.11341 +2016-07-01|45.0|-110.0|11.45045|-0.11454 +2016-07-01|45.0|-111.0|11.89664|-0.1156 +2016-07-01|45.0|-112.0|12.31737|-0.11661 +2016-07-01|45.0|-113.0|12.71307|-0.11758 +2016-07-01|45.0|-114.0|13.08421|-0.11852 +2016-07-01|45.0|-115.0|13.43132|-0.11944 +2016-07-01|45.0|-116.0|13.75493|-0.12035 +2016-07-01|45.0|-117.0|14.0556|-0.12125 +2016-07-01|45.0|-118.0|14.33388|-0.12216 +2016-07-01|45.0|-119.0|14.59034|-0.12307 +2016-07-01|45.0|-120.0|14.82554|-0.124 +2016-07-01|45.0|-121.0|15.04001|-0.12493 +2016-07-01|45.0|-122.0|15.23428|-0.12589 +2016-07-01|45.0|-123.0|15.40886|-0.12686 +2016-07-01|45.0|-124.0|15.56424|-0.12786 +2016-07-01|45.0|-125.0|15.70087|-0.12887 +2016-07-01|45.0|-126.0|15.81922|-0.12991 +2016-07-01|45.0|-127.0|15.91968|-0.13097 +2016-07-01|45.0|-128.0|16.00268|-0.13205 +2016-07-01|45.0|-129.0|16.06858|-0.13315 +2016-07-01|45.0|-130.0|16.11777|-0.13427 +2016-07-01|45.0|-131.0|16.15057|-0.13541 +2016-07-01|45.0|-132.0|16.16735|-0.13656 +2016-07-01|45.0|-133.0|16.16842|-0.13774 +2016-07-01|45.0|-134.0|16.1541|-0.13892 +2016-07-01|45.0|-135.0|16.12471|-0.14012 +2016-07-01|45.0|-136.0|16.08056|-0.14133 +2016-07-01|45.0|-137.0|16.02196|-0.14254 +2016-07-01|45.0|-138.0|15.94921|-0.14376 +2016-07-01|45.0|-139.0|15.86264|-0.14497 +2016-07-01|45.0|-140.0|15.76255|-0.14618 +2016-07-01|45.0|-141.0|15.64926|-0.14738 +2016-07-01|45.0|-142.0|15.5231|-0.14856 +2016-07-01|45.0|-143.0|15.38438|-0.14972 +2016-07-01|45.0|-144.0|15.23343|-0.15085 +2016-07-01|45.0|-145.0|15.0706|-0.15195 +2016-07-01|45.0|-146.0|14.89621|-0.15301 +2016-07-01|45.0|-147.0|14.71059|-0.15401 +2016-07-01|45.0|-148.0|14.5141|-0.15496 +2016-07-01|45.0|-149.0|14.30705|-0.15584 +2016-07-01|45.0|-150.0|14.08979|-0.15664 +2016-07-01|45.0|-151.0|13.86265|-0.15736 +2016-07-01|45.0|-152.0|13.62594|-0.15799 +2016-07-01|45.0|-153.0|13.38|-0.15851 +2016-07-01|45.0|-154.0|13.12512|-0.15892 +2016-07-01|45.0|-155.0|12.86162|-0.1592 +2016-07-01|45.0|-156.0|12.58977|-0.15935 +2016-07-01|45.0|-157.0|12.30986|-0.15937 +2016-07-01|45.0|-158.0|12.02216|-0.15923 +2016-07-01|45.0|-159.0|11.72691|-0.15893 +2016-07-01|45.0|-160.0|11.42437|-0.15847 +2016-07-01|45.0|-161.0|11.11475|-0.15784 +2016-07-01|45.0|-162.0|10.79828|-0.15703 +2016-07-01|45.0|-163.0|10.47515|-0.15603 +2016-07-01|45.0|-164.0|10.14557|-0.15485 +2016-07-01|45.0|-165.0|9.80972|-0.15348 +2016-07-01|45.0|-166.0|9.46777|-0.15191 +2016-07-01|45.0|-167.0|9.11989|-0.15015 +2016-07-01|45.0|-168.0|8.76624|-0.1482 +2016-07-01|45.0|-169.0|8.40699|-0.14606 +2016-07-01|45.0|-170.0|8.04229|-0.14374 +2016-07-01|45.0|-171.0|7.67231|-0.14123 +2016-07-01|45.0|-172.0|7.2972|-0.13854 +2016-07-01|45.0|-173.0|6.91713|-0.13569 +2016-07-01|45.0|-174.0|6.53228|-0.13268 +2016-07-01|45.0|-175.0|6.14283|-0.12952 +2016-07-01|45.0|-176.0|5.74896|-0.12622 +2016-07-01|45.0|-177.0|5.35089|-0.12279 +2016-07-01|45.0|-178.0|4.94882|-0.11925 +2016-07-01|45.0|-179.0|4.54298|-0.11561 +2016-07-01|46.0|0.0|-0.11611|0.12881 +2016-07-01|46.0|1.0|0.1784|0.12732 +2016-07-01|46.0|2.0|0.46529|0.12588 +2016-07-01|46.0|3.0|0.74466|0.1245 +2016-07-01|46.0|4.0|1.01666|0.12319 +2016-07-01|46.0|5.0|1.28147|0.12195 +2016-07-01|46.0|6.0|1.53932|0.12078 +2016-07-01|46.0|7.0|1.79047|0.11969 +2016-07-01|46.0|8.0|2.03521|0.11868 +2016-07-01|46.0|9.0|2.27384|0.11776 +2016-07-01|46.0|10.0|2.50668|0.11691 +2016-07-01|46.0|11.0|2.73406|0.11615 +2016-07-01|46.0|12.0|2.95631|0.11546 +2016-07-01|46.0|13.0|3.17374|0.11485 +2016-07-01|46.0|14.0|3.38666|0.11431 +2016-07-01|46.0|15.0|3.59536|0.11383 +2016-07-01|46.0|16.0|3.8001|0.11341 +2016-07-01|46.0|17.0|4.00112|0.11303 +2016-07-01|46.0|18.0|4.1986|0.11269 +2016-07-01|46.0|19.0|4.39271|0.11237 +2016-07-01|46.0|20.0|4.58357|0.11207 +2016-07-01|46.0|21.0|4.77126|0.11177 +2016-07-01|46.0|22.0|4.95581|0.11147 +2016-07-01|46.0|23.0|5.13721|0.11115 +2016-07-01|46.0|24.0|5.31543|0.1108 +2016-07-01|46.0|25.0|5.49036|0.11041 +2016-07-01|46.0|26.0|5.66189|0.10997 +2016-07-01|46.0|27.0|5.82987|0.10947 +2016-07-01|46.0|28.0|5.99411|0.10891 +2016-07-01|46.0|29.0|6.15441|0.10827 +2016-07-01|46.0|30.0|6.31053|0.10755 +2016-07-01|46.0|31.0|6.46224|0.10675 +2016-07-01|46.0|32.0|6.60929|0.10586 +2016-07-01|46.0|33.0|6.75142|0.10488 +2016-07-01|46.0|34.0|6.88838|0.10381 +2016-07-01|46.0|35.0|7.01993|0.10265 +2016-07-01|46.0|36.0|7.14583|0.10141 +2016-07-01|46.0|37.0|7.26586|0.10008 +2016-07-01|46.0|38.0|7.37981|0.09868 +2016-07-01|46.0|39.0|7.48749|0.09722 +2016-07-01|46.0|40.0|7.58874|0.09569 +2016-07-01|46.0|41.0|7.68341|0.0941 +2016-07-01|46.0|42.0|7.77138|0.09247 +2016-07-01|46.0|43.0|7.85255|0.09081 +2016-07-01|46.0|44.0|7.92684|0.08912 +2016-07-01|46.0|45.0|7.99419|0.08742 +2016-07-01|46.0|46.0|8.05457|0.08571 +2016-07-01|46.0|47.0|8.10793|0.084 +2016-07-01|46.0|48.0|8.15426|0.0823 +2016-07-01|46.0|49.0|8.19356|0.08062 +2016-07-01|46.0|50.0|8.22582|0.07897 +2016-07-01|46.0|51.0|8.25103|0.07736 +2016-07-01|46.0|52.0|8.2692|0.07578 +2016-07-01|46.0|53.0|8.28029|0.07424 +2016-07-01|46.0|54.0|8.28431|0.07274 +2016-07-01|46.0|55.0|8.28121|0.07129 +2016-07-01|46.0|56.0|8.27094|0.06989 +2016-07-01|46.0|57.0|8.25345|0.06853 +2016-07-01|46.0|58.0|8.22866|0.06721 +2016-07-01|46.0|59.0|8.19648|0.06593 +2016-07-01|46.0|60.0|8.15677|0.06469 +2016-07-01|46.0|61.0|8.10943|0.06347 +2016-07-01|46.0|62.0|8.05429|0.06228 +2016-07-01|46.0|63.0|7.99119|0.0611 +2016-07-01|46.0|64.0|7.91995|0.05992 +2016-07-01|46.0|65.0|7.84038|0.05875 +2016-07-01|46.0|66.0|7.75228|0.05756 +2016-07-01|46.0|67.0|7.65543|0.05635 +2016-07-01|46.0|68.0|7.54961|0.05512 +2016-07-01|46.0|69.0|7.43461|0.05385 +2016-07-01|46.0|70.0|7.3102|0.05253 +2016-07-01|46.0|71.0|7.17616|0.05116 +2016-07-01|46.0|72.0|7.03228|0.04972 +2016-07-01|46.0|73.0|6.87834|0.04821 +2016-07-01|46.0|74.0|6.71415|0.04662 +2016-07-01|46.0|75.0|6.5395|0.04495 +2016-07-01|46.0|76.0|6.35424|0.04318 +2016-07-01|46.0|77.0|6.15818|0.04132 +2016-07-01|46.0|78.0|5.95118|0.03935 +2016-07-01|46.0|79.0|5.73312|0.03728 +2016-07-01|46.0|80.0|5.50387|0.0351 +2016-07-01|46.0|81.0|5.26336|0.03281 +2016-07-01|46.0|82.0|5.0115|0.03041 +2016-07-01|46.0|83.0|4.74825|0.0279 +2016-07-01|46.0|84.0|4.47361|0.02527 +2016-07-01|46.0|85.0|4.18756|0.02254 +2016-07-01|46.0|86.0|3.89016|0.01971 +2016-07-01|46.0|87.0|3.58148|0.01677 +2016-07-01|46.0|88.0|3.26162|0.01374 +2016-07-01|46.0|89.0|2.93073|0.01062 +2016-07-01|46.0|90.0|2.58899|0.00742 +2016-07-01|46.0|91.0|2.23666|0.00415 +2016-07-01|46.0|92.0|1.87399|8.2E-4 +2016-07-01|46.0|93.0|1.50135|-0.00256 +2016-07-01|46.0|94.0|1.11911|-0.00598 +2016-07-01|46.0|95.0|0.72774|-0.00943 +2016-07-01|46.0|96.0|0.32775|-0.01289 +2016-07-01|46.0|97.0|-0.08025|-0.01634 +2016-07-01|46.0|98.0|-0.49562|-0.01978 +2016-07-01|46.0|99.0|-0.91762|-0.02318 +2016-07-01|46.0|100.0|-1.34544|-0.02653 +2016-07-01|46.0|101.0|-1.77821|-0.02981 +2016-07-01|46.0|102.0|-2.21495|-0.033 +2016-07-01|46.0|103.0|-2.65465|-0.03609 +2016-07-01|46.0|104.0|-3.0962|-0.03906 +2016-07-01|46.0|105.0|-3.53845|-0.04189 +2016-07-01|46.0|106.0|-3.98016|-0.04457 +2016-07-01|46.0|107.0|-4.42007|-0.04708 +2016-07-01|46.0|108.0|-4.85684|-0.04941 +2016-07-01|46.0|109.0|-5.28912|-0.05155 +2016-07-01|46.0|110.0|-5.71554|-0.05348 +2016-07-01|46.0|111.0|-6.13468|-0.05519 +2016-07-01|46.0|112.0|-6.54516|-0.05669 +2016-07-01|46.0|113.0|-6.94556|-0.05796 +2016-07-01|46.0|114.0|-7.33453|-0.059 +2016-07-01|46.0|115.0|-7.71071|-0.05981 +2016-07-01|46.0|116.0|-8.07282|-0.06038 +2016-07-01|46.0|117.0|-8.41959|-0.06073 +2016-07-01|46.0|118.0|-8.74986|-0.06086 +2016-07-01|46.0|119.0|-9.06251|-0.06077 +2016-07-01|46.0|120.0|-9.35652|-0.06047 +2016-07-01|46.0|121.0|-9.63095|-0.05998 +2016-07-01|46.0|122.0|-9.88495|-0.05931 +2016-07-01|46.0|123.0|-10.11778|-0.05846 +2016-07-01|46.0|124.0|-10.32879|-0.05745 +2016-07-01|46.0|125.0|-10.51744|-0.05631 +2016-07-01|46.0|126.0|-10.68329|-0.05504 +2016-07-01|46.0|127.0|-10.826|-0.05366 +2016-07-01|46.0|128.0|-10.94534|-0.05219 +2016-07-01|46.0|129.0|-11.04117|-0.05064 +2016-07-01|46.0|130.0|-11.11345|-0.04905 +2016-07-01|46.0|131.0|-11.16221|-0.04741 +2016-07-01|46.0|132.0|-11.1876|-0.04575 +2016-07-01|46.0|133.0|-11.18983|-0.04409 +2016-07-01|46.0|134.0|-11.16917|-0.04245 +2016-07-01|46.0|135.0|-11.12599|-0.04083 +2016-07-01|46.0|136.0|-11.0607|-0.03926 +2016-07-01|46.0|137.0|-10.97378|-0.03775 +2016-07-01|46.0|138.0|-10.86575|-0.03631 +2016-07-01|46.0|139.0|-10.73717|-0.03497 +2016-07-01|46.0|140.0|-10.58865|-0.03372 +2016-07-01|46.0|141.0|-10.42083|-0.03259 +2016-07-01|46.0|142.0|-10.23437|-0.03159 +2016-07-01|46.0|143.0|-10.02996|-0.03072 +2016-07-01|46.0|144.0|-9.80831|-0.03 +2016-07-01|46.0|145.0|-9.57013|-0.02944 +2016-07-01|46.0|146.0|-9.31615|-0.02904 +2016-07-01|46.0|147.0|-9.0471|-0.02882 +2016-07-01|46.0|148.0|-8.76372|-0.02877 +2016-07-01|46.0|149.0|-8.46673|-0.02891 +2016-07-01|46.0|150.0|-8.15687|-0.02924 +2016-07-01|46.0|151.0|-7.83485|-0.02976 +2016-07-01|46.0|152.0|-7.5014|-0.03048 +2016-07-01|46.0|153.0|-7.15721|-0.0314 +2016-07-01|46.0|154.0|-6.80298|-0.03253 +2016-07-01|46.0|155.0|-6.43938|-0.03385 +2016-07-01|46.0|156.0|-6.0671|-0.03538 +2016-07-01|46.0|157.0|-5.68677|-0.03712 +2016-07-01|46.0|158.0|-5.29904|-0.03905 +2016-07-01|46.0|159.0|-4.90452|-0.04118 +2016-07-01|46.0|160.0|-4.50383|-0.0435 +2016-07-01|46.0|161.0|-4.09756|-0.04601 +2016-07-01|46.0|162.0|-3.68629|-0.0487 +2016-07-01|46.0|163.0|-3.27057|-0.05156 +2016-07-01|46.0|164.0|-2.85095|-0.0546 +2016-07-01|46.0|165.0|-2.42796|-0.05779 +2016-07-01|46.0|166.0|-2.00211|-0.06113 +2016-07-01|46.0|167.0|-1.5739|-0.0646 +2016-07-01|46.0|168.0|-1.14382|-0.0682 +2016-07-01|46.0|169.0|-0.71233|-0.07191 +2016-07-01|46.0|170.0|-0.27989|-0.07572 +2016-07-01|46.0|171.0|0.15307|-0.07962 +2016-07-01|46.0|172.0|0.58614|-0.08359 +2016-07-01|46.0|173.0|1.01889|-0.08761 +2016-07-01|46.0|174.0|1.45095|-0.09167 +2016-07-01|46.0|175.0|1.88195|-0.09576 +2016-07-01|46.0|176.0|2.31151|-0.09985 +2016-07-01|46.0|177.0|2.73931|-0.10394 +2016-07-01|46.0|178.0|3.16502|-0.108 +2016-07-01|46.0|179.0|3.58832|-0.11202 +2016-07-01|46.0|-1.0|-0.41828|0.13035 +2016-07-01|46.0|-2.0|-0.72812|0.13193 +2016-07-01|46.0|-3.0|-1.04555|0.13354 +2016-07-01|46.0|-4.0|-1.37049|0.13517 +2016-07-01|46.0|-5.0|-1.70275|0.13682 +2016-07-01|46.0|-6.0|-2.04212|0.13849 +2016-07-01|46.0|-7.0|-2.38835|0.14016 +2016-07-01|46.0|-8.0|-2.74112|0.14183 +2016-07-01|46.0|-9.0|-3.10008|0.14349 +2016-07-01|46.0|-10.0|-3.46484|0.14515 +2016-07-01|46.0|-11.0|-3.83497|0.14679 +2016-07-01|46.0|-12.0|-4.21002|0.14841 +2016-07-01|46.0|-13.0|-4.58951|0.15002 +2016-07-01|46.0|-14.0|-4.97296|0.1516 +2016-07-01|46.0|-15.0|-5.35985|0.15316 +2016-07-01|46.0|-16.0|-5.74966|0.1547 +2016-07-01|46.0|-17.0|-6.1419|0.15621 +2016-07-01|46.0|-18.0|-6.53603|0.1577 +2016-07-01|46.0|-19.0|-6.93155|0.15916 +2016-07-01|46.0|-20.0|-7.32796|0.1606 +2016-07-01|46.0|-21.0|-7.72477|0.16202 +2016-07-01|46.0|-22.0|-8.12151|0.16341 +2016-07-01|46.0|-23.0|-8.51772|0.16478 +2016-07-01|46.0|-24.0|-8.91294|0.16612 +2016-07-01|46.0|-25.0|-9.30677|0.16743 +2016-07-01|46.0|-26.0|-9.69877|0.16872 +2016-07-01|46.0|-27.0|-10.08855|0.16998 +2016-07-01|46.0|-28.0|-10.47572|0.17121 +2016-07-01|46.0|-29.0|-10.8599|0.17241 +2016-07-01|46.0|-30.0|-11.2407|0.17357 +2016-07-01|46.0|-31.0|-11.61774|0.17468 +2016-07-01|46.0|-32.0|-11.99065|0.17575 +2016-07-01|46.0|-33.0|-12.35903|0.17676 +2016-07-01|46.0|-34.0|-12.72247|0.17771 +2016-07-01|46.0|-35.0|-13.08054|0.17859 +2016-07-01|46.0|-36.0|-13.4328|0.1794 +2016-07-01|46.0|-37.0|-13.77878|0.18013 +2016-07-01|46.0|-38.0|-14.11795|0.18075 +2016-07-01|46.0|-39.0|-14.44977|0.18128 +2016-07-01|46.0|-40.0|-14.77367|0.1817 +2016-07-01|46.0|-41.0|-15.089|0.18199 +2016-07-01|46.0|-42.0|-15.3951|0.18215 +2016-07-01|46.0|-43.0|-15.69124|0.18216 +2016-07-01|46.0|-44.0|-15.97665|0.18202 +2016-07-01|46.0|-45.0|-16.25052|0.18172 +2016-07-01|46.0|-46.0|-16.51196|0.18125 +2016-07-01|46.0|-47.0|-16.76006|0.18059 +2016-07-01|46.0|-48.0|-16.99386|0.17974 +2016-07-01|46.0|-49.0|-17.21234|0.17869 +2016-07-01|46.0|-50.0|-17.41446|0.17743 +2016-07-01|46.0|-51.0|-17.59913|0.17595 +2016-07-01|46.0|-52.0|-17.76522|0.17425 +2016-07-01|46.0|-53.0|-17.91157|0.1723 +2016-07-01|46.0|-54.0|-18.03703|0.17012 +2016-07-01|46.0|-55.0|-18.14038|0.16769 +2016-07-01|46.0|-56.0|-18.22043|0.16501 +2016-07-01|46.0|-57.0|-18.27597|0.16206 +2016-07-01|46.0|-58.0|-18.30578|0.15885 +2016-07-01|46.0|-59.0|-18.30869|0.15537 +2016-07-01|46.0|-60.0|-18.28351|0.15162 +2016-07-01|46.0|-61.0|-18.2291|0.1476 +2016-07-01|46.0|-62.0|-18.14436|0.14329 +2016-07-01|46.0|-63.0|-18.02823|0.13871 +2016-07-01|46.0|-64.0|-17.87972|0.13385 +2016-07-01|46.0|-65.0|-17.69792|0.12871 +2016-07-01|46.0|-66.0|-17.48198|0.1233 +2016-07-01|46.0|-67.0|-17.23118|0.11761 +2016-07-01|46.0|-68.0|-16.94489|0.11166 +2016-07-01|46.0|-69.0|-16.6226|0.10545 +2016-07-01|46.0|-70.0|-16.26397|0.09899 +2016-07-01|46.0|-71.0|-15.86879|0.09228 +2016-07-01|46.0|-72.0|-15.43702|0.08535 +2016-07-01|46.0|-73.0|-14.96881|0.07821 +2016-07-01|46.0|-74.0|-14.46449|0.07088 +2016-07-01|46.0|-75.0|-13.92461|0.06337 +2016-07-01|46.0|-76.0|-13.34993|0.05572 +2016-07-01|46.0|-77.0|-12.74144|0.04794 +2016-07-01|46.0|-78.0|-12.10036|0.04007 +2016-07-01|46.0|-79.0|-11.42813|0.03213 +2016-07-01|46.0|-80.0|-10.72644|0.02416 +2016-07-01|46.0|-81.0|-9.99719|0.01619 +2016-07-01|46.0|-82.0|-9.2425|0.00826 +2016-07-01|46.0|-83.0|-8.46472|4.0E-4 +2016-07-01|46.0|-84.0|-7.66635|-0.00736 +2016-07-01|46.0|-85.0|-6.85008|-0.01497 +2016-07-01|46.0|-86.0|-6.01874|-0.0224 +2016-07-01|46.0|-87.0|-5.17527|-0.02963 +2016-07-01|46.0|-88.0|-4.32268|-0.03662 +2016-07-01|46.0|-89.0|-3.46404|-0.04335 +2016-07-01|46.0|-90.0|-2.60241|-0.04979 +2016-07-01|46.0|-91.0|-1.74085|-0.05592 +2016-07-01|46.0|-92.0|-0.88235|-0.06174 +2016-07-01|46.0|-93.0|-0.02981|-0.06723 +2016-07-01|46.0|-94.0|0.81401|-0.07238 +2016-07-01|46.0|-95.0|1.64647|-0.0772 +2016-07-01|46.0|-96.0|2.46513|-0.08168 +2016-07-01|46.0|-97.0|3.26773|-0.08584 +2016-07-01|46.0|-98.0|4.05222|-0.08968 +2016-07-01|46.0|-99.0|4.81677|-0.09322 +2016-07-01|46.0|-100.0|5.55975|-0.09647 +2016-07-01|46.0|-101.0|6.27979|-0.09945 +2016-07-01|46.0|-102.0|6.97571|-0.10218 +2016-07-01|46.0|-103.0|7.64657|-0.10467 +2016-07-01|46.0|-104.0|8.29161|-0.10696 +2016-07-01|46.0|-105.0|8.91028|-0.10905 +2016-07-01|46.0|-106.0|9.50219|-0.11098 +2016-07-01|46.0|-107.0|10.06714|-0.11276 +2016-07-01|46.0|-108.0|10.60506|-0.1144 +2016-07-01|46.0|-109.0|11.116|-0.11593 +2016-07-01|46.0|-110.0|11.60015|-0.11737 +2016-07-01|46.0|-111.0|12.05778|-0.11872 +2016-07-01|46.0|-112.0|12.48925|-0.12001 +2016-07-01|46.0|-113.0|12.89497|-0.12125 +2016-07-01|46.0|-114.0|13.27543|-0.12244 +2016-07-01|46.0|-115.0|13.63115|-0.1236 +2016-07-01|46.0|-116.0|13.96265|-0.12474 +2016-07-01|46.0|-117.0|14.27052|-0.12587 +2016-07-01|46.0|-118.0|14.55531|-0.12698 +2016-07-01|46.0|-119.0|14.8176|-0.12809 +2016-07-01|46.0|-120.0|15.05795|-0.12921 +2016-07-01|46.0|-121.0|15.27693|-0.13032 +2016-07-01|46.0|-122.0|15.47507|-0.13145 +2016-07-01|46.0|-123.0|15.6529|-0.13259 +2016-07-01|46.0|-124.0|15.81093|-0.13374 +2016-07-01|46.0|-125.0|15.94963|-0.13491 +2016-07-01|46.0|-126.0|16.06948|-0.13608 +2016-07-01|46.0|-127.0|16.1709|-0.13728 +2016-07-01|46.0|-128.0|16.25433|-0.13849 +2016-07-01|46.0|-129.0|16.32017|-0.13971 +2016-07-01|46.0|-130.0|16.3688|-0.14095 +2016-07-01|46.0|-131.0|16.4006|-0.1422 +2016-07-01|46.0|-132.0|16.41591|-0.14346 +2016-07-01|46.0|-133.0|16.41509|-0.14473 +2016-07-01|46.0|-134.0|16.39847|-0.14601 +2016-07-01|46.0|-135.0|16.36639|-0.1473 +2016-07-01|46.0|-136.0|16.31917|-0.14858 +2016-07-01|46.0|-137.0|16.25713|-0.14987 +2016-07-01|46.0|-138.0|16.1806|-0.15115 +2016-07-01|46.0|-139.0|16.08989|-0.15242 +2016-07-01|46.0|-140.0|15.98533|-0.15367 +2016-07-01|46.0|-141.0|15.86725|-0.15491 +2016-07-01|46.0|-142.0|15.73596|-0.15613 +2016-07-01|46.0|-143.0|15.59182|-0.15731 +2016-07-01|46.0|-144.0|15.43514|-0.15846 +2016-07-01|46.0|-145.0|15.26626|-0.15957 +2016-07-01|46.0|-146.0|15.08552|-0.16062 +2016-07-01|46.0|-147.0|14.89327|-0.16162 +2016-07-01|46.0|-148.0|14.68984|-0.16255 +2016-07-01|46.0|-149.0|14.47557|-0.1634 +2016-07-01|46.0|-150.0|14.2508|-0.16418 +2016-07-01|46.0|-151.0|14.01586|-0.16485 +2016-07-01|46.0|-152.0|13.77109|-0.16543 +2016-07-01|46.0|-153.0|13.51681|-0.1659 +2016-07-01|46.0|-154.0|13.25334|-0.16624 +2016-07-01|46.0|-155.0|12.98098|-0.16645 +2016-07-01|46.0|-156.0|12.70005|-0.16653 +2016-07-01|46.0|-157.0|12.41082|-0.16646 +2016-07-01|46.0|-158.0|12.11359|-0.16623 +2016-07-01|46.0|-159.0|11.80863|-0.16584 +2016-07-01|46.0|-160.0|11.49619|-0.16528 +2016-07-01|46.0|-161.0|11.17653|-0.16454 +2016-07-01|46.0|-162.0|10.84988|-0.16362 +2016-07-01|46.0|-163.0|10.51647|-0.16251 +2016-07-01|46.0|-164.0|10.17652|-0.16121 +2016-07-01|46.0|-165.0|9.83024|-0.15971 +2016-07-01|46.0|-166.0|9.47784|-0.15802 +2016-07-01|46.0|-167.0|9.11951|-0.15614 +2016-07-01|46.0|-168.0|8.75543|-0.15406 +2016-07-01|46.0|-169.0|8.38581|-0.15178 +2016-07-01|46.0|-170.0|8.01083|-0.14932 +2016-07-01|46.0|-171.0|7.63066|-0.14668 +2016-07-01|46.0|-172.0|7.24551|-0.14385 +2016-07-01|46.0|-173.0|6.85556|-0.14086 +2016-07-01|46.0|-174.0|6.461|-0.1377 +2016-07-01|46.0|-175.0|6.06204|-0.13439 +2016-07-01|46.0|-176.0|5.65889|-0.13094 +2016-07-01|46.0|-177.0|5.25177|-0.12736 +2016-07-01|46.0|-178.0|4.8409|-0.12366 +2016-07-01|46.0|-179.0|4.42653|-0.11986 +2016-07-01|47.0|0.0|-0.189|0.13172 +2016-07-01|47.0|1.0|0.11347|0.13023 +2016-07-01|47.0|2.0|0.40856|0.12878 +2016-07-01|47.0|3.0|0.69637|0.1274 +2016-07-01|47.0|4.0|0.97701|0.12608 +2016-07-01|47.0|5.0|1.25066|0.12482 +2016-07-01|47.0|6.0|1.51752|0.12364 +2016-07-01|47.0|7.0|1.77783|0.12253 +2016-07-01|47.0|8.0|2.03186|0.12151 +2016-07-01|47.0|9.0|2.27989|0.12056 +2016-07-01|47.0|10.0|2.52221|0.11968 +2016-07-01|47.0|11.0|2.75915|0.11889 +2016-07-01|47.0|12.0|2.991|0.11817 +2016-07-01|47.0|13.0|3.21806|0.11752 +2016-07-01|47.0|14.0|3.44065|0.11694 +2016-07-01|47.0|15.0|3.65901|0.11641 +2016-07-01|47.0|16.0|3.87343|0.11594 +2016-07-01|47.0|17.0|4.08411|0.11552 +2016-07-01|47.0|18.0|4.29125|0.11513 +2016-07-01|47.0|19.0|4.49503|0.11476 +2016-07-01|47.0|20.0|4.69555|0.11442 +2016-07-01|47.0|21.0|4.89292|0.11407 +2016-07-01|47.0|22.0|5.08716|0.11373 +2016-07-01|47.0|23.0|5.2783|0.11337 +2016-07-01|47.0|24.0|5.46629|0.11298 +2016-07-01|47.0|25.0|5.65107|0.11256 +2016-07-01|47.0|26.0|5.83253|0.11209 +2016-07-01|47.0|27.0|6.01053|0.11157 +2016-07-01|47.0|28.0|6.1849|0.11098 +2016-07-01|47.0|29.0|6.35546|0.11033 +2016-07-01|47.0|30.0|6.52198|0.10961 +2016-07-01|47.0|31.0|6.68425|0.1088 +2016-07-01|47.0|32.0|6.84201|0.10792 +2016-07-01|47.0|33.0|6.99503|0.10695 +2016-07-01|47.0|34.0|7.14303|0.10589 +2016-07-01|47.0|35.0|7.28579|0.10475 +2016-07-01|47.0|36.0|7.42305|0.10353 +2016-07-01|47.0|37.0|7.55457|0.10223 +2016-07-01|47.0|38.0|7.68013|0.10086 +2016-07-01|47.0|39.0|7.79952|0.09942 +2016-07-01|47.0|40.0|7.91254|0.09792 +2016-07-01|47.0|41.0|8.01902|0.09636 +2016-07-01|47.0|42.0|8.1188|0.09476 +2016-07-01|47.0|43.0|8.21173|0.09312 +2016-07-01|47.0|44.0|8.29769|0.09145 +2016-07-01|47.0|45.0|8.37657|0.08975 +2016-07-01|47.0|46.0|8.44829|0.08805 +2016-07-01|47.0|47.0|8.51275|0.08634 +2016-07-01|47.0|48.0|8.56989|0.08463 +2016-07-01|47.0|49.0|8.61964|0.08293 +2016-07-01|47.0|50.0|8.66195|0.08126 +2016-07-01|47.0|51.0|8.69676|0.0796 +2016-07-01|47.0|52.0|8.72402|0.07797 +2016-07-01|47.0|53.0|8.74366|0.07638 +2016-07-01|47.0|54.0|8.75561|0.07481 +2016-07-01|47.0|55.0|8.75981|0.07329 +2016-07-01|47.0|56.0|8.75616|0.07179 +2016-07-01|47.0|57.0|8.74457|0.07034 +2016-07-01|47.0|58.0|8.72493|0.06891 +2016-07-01|47.0|59.0|8.69712|0.06752 +2016-07-01|47.0|60.0|8.66099|0.06615 +2016-07-01|47.0|61.0|8.61639|0.0648 +2016-07-01|47.0|62.0|8.56316|0.06347 +2016-07-01|47.0|63.0|8.50112|0.06215 +2016-07-01|47.0|64.0|8.43008|0.06082 +2016-07-01|47.0|65.0|8.34983|0.0595 +2016-07-01|47.0|66.0|8.26017|0.05815 +2016-07-01|47.0|67.0|8.16089|0.05679 +2016-07-01|47.0|68.0|8.05176|0.05539 +2016-07-01|47.0|69.0|7.93257|0.05395 +2016-07-01|47.0|70.0|7.80309|0.05246 +2016-07-01|47.0|71.0|7.66312|0.05092 +2016-07-01|47.0|72.0|7.51243|0.04932 +2016-07-01|47.0|73.0|7.35083|0.04764 +2016-07-01|47.0|74.0|7.17811|0.04588 +2016-07-01|47.0|75.0|6.9941|0.04404 +2016-07-01|47.0|76.0|6.79863|0.04211 +2016-07-01|47.0|77.0|6.59155|0.04009 +2016-07-01|47.0|78.0|6.37271|0.03796 +2016-07-01|47.0|79.0|6.142|0.03573 +2016-07-01|47.0|80.0|5.89933|0.0334 +2016-07-01|47.0|81.0|5.64462|0.03096 +2016-07-01|47.0|82.0|5.37782|0.02841 +2016-07-01|47.0|83.0|5.09891|0.02576 +2016-07-01|47.0|84.0|4.8079|0.023 +2016-07-01|47.0|85.0|4.50482|0.02014 +2016-07-01|47.0|86.0|4.18976|0.01719 +2016-07-01|47.0|87.0|3.86281|0.01414 +2016-07-01|47.0|88.0|3.52413|0.011 +2016-07-01|47.0|89.0|3.17391|0.00779 +2016-07-01|47.0|90.0|2.81239|0.0045 +2016-07-01|47.0|91.0|2.43985|0.00116 +2016-07-01|47.0|92.0|2.05664|-0.00224 +2016-07-01|47.0|93.0|1.66316|-0.00567 +2016-07-01|47.0|94.0|1.25986|-0.00913 +2016-07-01|47.0|95.0|0.84727|-0.0126 +2016-07-01|47.0|96.0|0.42599|-0.01607 +2016-07-01|47.0|97.0|-0.00333|-0.01952 +2016-07-01|47.0|98.0|-0.43994|-0.02293 +2016-07-01|47.0|99.0|-0.88305|-0.02629 +2016-07-01|47.0|100.0|-1.33176|-0.02959 +2016-07-01|47.0|101.0|-1.78512|-0.0328 +2016-07-01|47.0|102.0|-2.24209|-0.0359 +2016-07-01|47.0|103.0|-2.70159|-0.03889 +2016-07-01|47.0|104.0|-3.16243|-0.04173 +2016-07-01|47.0|105.0|-3.6234|-0.04443 +2016-07-01|47.0|106.0|-4.0832|-0.04696 +2016-07-01|47.0|107.0|-4.54051|-0.0493 +2016-07-01|47.0|108.0|-4.99396|-0.05145 +2016-07-01|47.0|109.0|-5.44214|-0.0534 +2016-07-01|47.0|110.0|-5.88365|-0.05513 +2016-07-01|47.0|111.0|-6.31705|-0.05663 +2016-07-01|47.0|112.0|-6.74092|-0.05791 +2016-07-01|47.0|113.0|-7.15385|-0.05895 +2016-07-01|47.0|114.0|-7.55446|-0.05976 +2016-07-01|47.0|115.0|-7.94141|-0.06033 +2016-07-01|47.0|116.0|-8.31341|-0.06068 +2016-07-01|47.0|117.0|-8.66923|-0.06079 +2016-07-01|47.0|118.0|-9.0077|-0.06068 +2016-07-01|47.0|119.0|-9.32773|-0.06036 +2016-07-01|47.0|120.0|-9.62834|-0.05984 +2016-07-01|47.0|121.0|-9.90861|-0.05913 +2016-07-01|47.0|122.0|-10.16773|-0.05824 +2016-07-01|47.0|123.0|-10.40498|-0.05719 +2016-07-01|47.0|124.0|-10.61978|-0.05599 +2016-07-01|47.0|125.0|-10.8116|-0.05466 +2016-07-01|47.0|126.0|-10.98005|-0.05322 +2016-07-01|47.0|127.0|-11.12482|-0.05168 +2016-07-01|47.0|128.0|-11.24573|-0.05007 +2016-07-01|47.0|129.0|-11.34267|-0.04839 +2016-07-01|47.0|130.0|-11.41563|-0.04667 +2016-07-01|47.0|131.0|-11.46469|-0.04493 +2016-07-01|47.0|132.0|-11.49001|-0.04318 +2016-07-01|47.0|133.0|-11.49184|-0.04144 +2016-07-01|47.0|134.0|-11.4705|-0.03974 +2016-07-01|47.0|135.0|-11.42635|-0.03807 +2016-07-01|47.0|136.0|-11.35985|-0.03647 +2016-07-01|47.0|137.0|-11.27148|-0.03494 +2016-07-01|47.0|138.0|-11.1618|-0.0335 +2016-07-01|47.0|139.0|-11.03138|-0.03216 +2016-07-01|47.0|140.0|-10.88085|-0.03094 +2016-07-01|47.0|141.0|-10.71086|-0.02985 +2016-07-01|47.0|142.0|-10.52208|-0.0289 +2016-07-01|47.0|143.0|-10.31523|-0.0281 +2016-07-01|47.0|144.0|-10.091|-0.02746 +2016-07-01|47.0|145.0|-9.85014|-0.02699 +2016-07-01|47.0|146.0|-9.59337|-0.0267 +2016-07-01|47.0|147.0|-9.32143|-0.02659 +2016-07-01|47.0|148.0|-9.03507|-0.02667 +2016-07-01|47.0|149.0|-8.73502|-0.02695 +2016-07-01|47.0|150.0|-8.42201|-0.02743 +2016-07-01|47.0|151.0|-8.09677|-0.02811 +2016-07-01|47.0|152.0|-7.76001|-0.029 +2016-07-01|47.0|153.0|-7.41244|-0.0301 +2016-07-01|47.0|154.0|-7.05476|-0.03141 +2016-07-01|47.0|155.0|-6.68764|-0.03293 +2016-07-01|47.0|156.0|-6.31175|-0.03465 +2016-07-01|47.0|157.0|-5.92774|-0.03659 +2016-07-01|47.0|158.0|-5.53623|-0.03873 +2016-07-01|47.0|159.0|-5.13786|-0.04106 +2016-07-01|47.0|160.0|-4.73323|-0.0436 +2016-07-01|47.0|161.0|-4.32291|-0.04632 +2016-07-01|47.0|162.0|-3.90747|-0.04923 +2016-07-01|47.0|163.0|-3.48748|-0.05231 +2016-07-01|47.0|164.0|-3.06346|-0.05556 +2016-07-01|47.0|165.0|-2.63594|-0.05897 +2016-07-01|47.0|166.0|-2.20541|-0.06252 +2016-07-01|47.0|167.0|-1.77237|-0.06621 +2016-07-01|47.0|168.0|-1.33729|-0.07003 +2016-07-01|47.0|169.0|-0.90062|-0.07395 +2016-07-01|47.0|170.0|-0.4628|-0.07797 +2016-07-01|47.0|171.0|-0.02427|-0.08207 +2016-07-01|47.0|172.0|0.41458|-0.08623 +2016-07-01|47.0|173.0|0.85334|-0.09045 +2016-07-01|47.0|174.0|1.29164|-0.09471 +2016-07-01|47.0|175.0|1.72911|-0.09898 +2016-07-01|47.0|176.0|2.16539|-0.10326 +2016-07-01|47.0|177.0|2.60016|-0.10753 +2016-07-01|47.0|178.0|3.03309|-0.11176 +2016-07-01|47.0|179.0|3.46386|-0.11596 +2016-07-01|47.0|-1.0|-0.49889|0.13327 +2016-07-01|47.0|-2.0|-0.81617|0.13485 +2016-07-01|47.0|-3.0|-1.14078|0.13647 +2016-07-01|47.0|-4.0|-1.47262|0.13811 +2016-07-01|47.0|-5.0|-1.81152|0.13977 +2016-07-01|47.0|-6.0|-2.15727|0.14145 +2016-07-01|47.0|-7.0|-2.5096|0.14314 +2016-07-01|47.0|-8.0|-2.86823|0.14482 +2016-07-01|47.0|-9.0|-3.2328|0.14651 +2016-07-01|47.0|-10.0|-3.60295|0.14819 +2016-07-01|47.0|-11.0|-3.97826|0.14987 +2016-07-01|47.0|-12.0|-4.3583|0.15152 +2016-07-01|47.0|-13.0|-4.74261|0.15317 +2016-07-01|47.0|-14.0|-5.13071|0.15479 +2016-07-01|47.0|-15.0|-5.52213|0.1564 +2016-07-01|47.0|-16.0|-5.91636|0.15799 +2016-07-01|47.0|-17.0|-6.31291|0.15955 +2016-07-01|47.0|-18.0|-6.71128|0.1611 +2016-07-01|47.0|-19.0|-7.11097|0.16262 +2016-07-01|47.0|-20.0|-7.51151|0.16412 +2016-07-01|47.0|-21.0|-7.91242|0.16559 +2016-07-01|47.0|-22.0|-8.31323|0.16704 +2016-07-01|47.0|-23.0|-8.71349|0.16847 +2016-07-01|47.0|-24.0|-9.11277|0.16988 +2016-07-01|47.0|-25.0|-9.51065|0.17126 +2016-07-01|47.0|-26.0|-9.9067|0.17261 +2016-07-01|47.0|-27.0|-10.30053|0.17394 +2016-07-01|47.0|-28.0|-10.69175|0.17523 +2016-07-01|47.0|-29.0|-11.07997|0.17649 +2016-07-01|47.0|-30.0|-11.46481|0.17771 +2016-07-01|47.0|-31.0|-11.84588|0.17888 +2016-07-01|47.0|-32.0|-12.22278|0.18001 +2016-07-01|47.0|-33.0|-12.59513|0.18109 +2016-07-01|47.0|-34.0|-12.9625|0.1821 +2016-07-01|47.0|-35.0|-13.32447|0.18305 +2016-07-01|47.0|-36.0|-13.68058|0.18392 +2016-07-01|47.0|-37.0|-14.03034|0.18471 +2016-07-01|47.0|-38.0|-14.37324|0.18541 +2016-07-01|47.0|-39.0|-14.70873|0.18601 +2016-07-01|47.0|-40.0|-15.03623|0.18649 +2016-07-01|47.0|-41.0|-15.3551|0.18686 +2016-07-01|47.0|-42.0|-15.66467|0.18711 +2016-07-01|47.0|-43.0|-15.96422|0.18721 +2016-07-01|47.0|-44.0|-16.25298|0.18717 +2016-07-01|47.0|-45.0|-16.53014|0.18697 +2016-07-01|47.0|-46.0|-16.79483|0.1866 +2016-07-01|47.0|-47.0|-17.04615|0.18606 +2016-07-01|47.0|-48.0|-17.28313|0.18533 +2016-07-01|47.0|-49.0|-17.50478|0.18441 +2016-07-01|47.0|-50.0|-17.71006|0.18329 +2016-07-01|47.0|-51.0|-17.89787|0.18195 +2016-07-01|47.0|-52.0|-18.06711|0.18039 +2016-07-01|47.0|-53.0|-18.21663|0.17861 +2016-07-01|47.0|-54.0|-18.34525|0.17659 +2016-07-01|47.0|-55.0|-18.45179|0.17433 +2016-07-01|47.0|-56.0|-18.53504|0.17183 +2016-07-01|47.0|-57.0|-18.59377|0.16906 +2016-07-01|47.0|-58.0|-18.62679|0.16604 +2016-07-01|47.0|-59.0|-18.63288|0.16276 +2016-07-01|47.0|-60.0|-18.61086|0.1592 +2016-07-01|47.0|-61.0|-18.55955|0.15537 +2016-07-01|47.0|-62.0|-18.47783|0.15126 +2016-07-01|47.0|-63.0|-18.36461|0.14687 +2016-07-01|47.0|-64.0|-18.21887|0.1422 +2016-07-01|47.0|-65.0|-18.03964|0.13725 +2016-07-01|47.0|-66.0|-17.82604|0.13201 +2016-07-01|47.0|-67.0|-17.57729|0.12649 +2016-07-01|47.0|-68.0|-17.29271|0.1207 +2016-07-01|47.0|-69.0|-16.97173|0.11463 +2016-07-01|47.0|-70.0|-16.61395|0.10829 +2016-07-01|47.0|-71.0|-16.21908|0.1017 +2016-07-01|47.0|-72.0|-15.78703|0.09486 +2016-07-01|47.0|-73.0|-15.31788|0.08779 +2016-07-01|47.0|-74.0|-14.81189|0.0805 +2016-07-01|47.0|-75.0|-14.26955|0.073 +2016-07-01|47.0|-76.0|-13.69157|0.06533 +2016-07-01|47.0|-77.0|-13.07886|0.05751 +2016-07-01|47.0|-78.0|-12.43259|0.04956 +2016-07-01|47.0|-79.0|-11.75418|0.04151 +2016-07-01|47.0|-80.0|-11.04527|0.03339 +2016-07-01|47.0|-81.0|-10.30774|0.02524 +2016-07-01|47.0|-82.0|-9.54371|0.01708 +2016-07-01|47.0|-83.0|-8.7555|0.00897 +2016-07-01|47.0|-84.0|-7.94566|9.2E-4 +2016-07-01|47.0|-85.0|-7.11689|-0.00701 +2016-07-01|47.0|-86.0|-6.27206|-0.0148 +2016-07-01|47.0|-87.0|-5.41415|-0.02241 +2016-07-01|47.0|-88.0|-4.54625|-0.02981 +2016-07-01|47.0|-89.0|-3.6715|-0.03697 +2016-07-01|47.0|-90.0|-2.79305|-0.04387 +2016-07-01|47.0|-91.0|-1.91404|-0.05048 +2016-07-01|47.0|-92.0|-1.03757|-0.05679 +2016-07-01|47.0|-93.0|-0.16663|-0.06277 +2016-07-01|47.0|-94.0|0.6959|-0.06843 +2016-07-01|47.0|-95.0|1.54728|-0.07375 +2016-07-01|47.0|-96.0|2.38497|-0.07875 +2016-07-01|47.0|-97.0|3.2066|-0.08341 +2016-07-01|47.0|-98.0|4.01003|-0.08775 +2016-07-01|47.0|-99.0|4.79332|-0.09178 +2016-07-01|47.0|-100.0|5.55479|-0.09552 +2016-07-01|47.0|-101.0|6.29296|-0.09897 +2016-07-01|47.0|-102.0|7.00659|-0.10216 +2016-07-01|47.0|-103.0|7.69467|-0.1051 +2016-07-01|47.0|-104.0|8.3564|-0.10781 +2016-07-01|47.0|-105.0|8.99116|-0.11032 +2016-07-01|47.0|-106.0|9.59853|-0.11265 +2016-07-01|47.0|-107.0|10.17827|-0.1148 +2016-07-01|47.0|-108.0|10.73028|-0.11681 +2016-07-01|47.0|-109.0|11.2546|-0.11869 +2016-07-01|47.0|-110.0|11.75139|-0.12046 +2016-07-01|47.0|-111.0|12.22091|-0.12213 +2016-07-01|47.0|-112.0|12.6635|-0.12372 +2016-07-01|47.0|-113.0|13.0796|-0.12524 +2016-07-01|47.0|-114.0|13.46967|-0.12671 +2016-07-01|47.0|-115.0|13.83423|-0.12813 +2016-07-01|47.0|-116.0|14.17384|-0.12951 +2016-07-01|47.0|-117.0|14.48905|-0.13087 +2016-07-01|47.0|-118.0|14.78046|-0.13221 +2016-07-01|47.0|-119.0|15.04865|-0.13353 +2016-07-01|47.0|-120.0|15.2942|-0.13485 +2016-07-01|47.0|-121.0|15.51769|-0.13615 +2016-07-01|47.0|-122.0|15.71967|-0.13746 +2016-07-01|47.0|-123.0|15.90069|-0.13877 +2016-07-01|47.0|-124.0|16.06127|-0.14009 +2016-07-01|47.0|-125.0|16.20192|-0.14141 +2016-07-01|47.0|-126.0|16.32312|-0.14274 +2016-07-01|47.0|-127.0|16.42535|-0.14407 +2016-07-01|47.0|-128.0|16.50903|-0.14541 +2016-07-01|47.0|-129.0|16.5746|-0.14676 +2016-07-01|47.0|-130.0|16.62246|-0.14812 +2016-07-01|47.0|-131.0|16.65302|-0.14948 +2016-07-01|47.0|-132.0|16.66663|-0.15084 +2016-07-01|47.0|-133.0|16.66368|-0.15221 +2016-07-01|47.0|-134.0|16.64452|-0.15358 +2016-07-01|47.0|-135.0|16.60949|-0.15494 +2016-07-01|47.0|-136.0|16.55894|-0.1563 +2016-07-01|47.0|-137.0|16.49321|-0.15765 +2016-07-01|47.0|-138.0|16.41263|-0.15899 +2016-07-01|47.0|-139.0|16.31754|-0.16031 +2016-07-01|47.0|-140.0|16.20827|-0.16161 +2016-07-01|47.0|-141.0|16.08517|-0.16288 +2016-07-01|47.0|-142.0|15.94856|-0.16412 +2016-07-01|47.0|-143.0|15.79878|-0.16532 +2016-07-01|47.0|-144.0|15.63618|-0.16647 +2016-07-01|47.0|-145.0|15.4611|-0.16758 +2016-07-01|47.0|-146.0|15.27389|-0.16862 +2016-07-01|47.0|-147.0|15.07488|-0.1696 +2016-07-01|47.0|-148.0|14.86443|-0.1705 +2016-07-01|47.0|-149.0|14.64287|-0.17132 +2016-07-01|47.0|-150.0|14.41056|-0.17204 +2016-07-01|47.0|-151.0|14.16783|-0.17267 +2016-07-01|47.0|-152.0|13.91503|-0.17318 +2016-07-01|47.0|-153.0|13.65247|-0.17358 +2016-07-01|47.0|-154.0|13.3805|-0.17385 +2016-07-01|47.0|-155.0|13.09943|-0.17398 +2016-07-01|47.0|-156.0|12.80957|-0.17396 +2016-07-01|47.0|-157.0|12.51123|-0.17379 +2016-07-01|47.0|-158.0|12.2047|-0.17346 +2016-07-01|47.0|-159.0|11.89028|-0.17296 +2016-07-01|47.0|-160.0|11.56824|-0.17229 +2016-07-01|47.0|-161.0|11.23885|-0.17143 +2016-07-01|47.0|-162.0|10.90236|-0.17039 +2016-07-01|47.0|-163.0|10.55903|-0.16915 +2016-07-01|47.0|-164.0|10.20911|-0.16772 +2016-07-01|47.0|-165.0|9.85281|-0.1661 +2016-07-01|47.0|-166.0|9.49037|-0.16427 +2016-07-01|47.0|-167.0|9.12201|-0.16225 +2016-07-01|47.0|-168.0|8.74795|-0.16002 +2016-07-01|47.0|-169.0|8.3684|-0.15761 +2016-07-01|47.0|-170.0|7.98357|-0.155 +2016-07-01|47.0|-171.0|7.59366|-0.15221 +2016-07-01|47.0|-172.0|7.1989|-0.14923 +2016-07-01|47.0|-173.0|6.79948|-0.14609 +2016-07-01|47.0|-174.0|6.39563|-0.14278 +2016-07-01|47.0|-175.0|5.98757|-0.13931 +2016-07-01|47.0|-176.0|5.57551|-0.13571 +2016-07-01|47.0|-177.0|5.1597|-0.13197 +2016-07-01|47.0|-178.0|4.74037|-0.12811 +2016-07-01|47.0|-179.0|4.31778|-0.12414 +2016-07-01|48.0|0.0|-0.27015|0.13477 +2016-07-01|48.0|1.0|0.04081|0.13327 +2016-07-01|48.0|2.0|0.34465|0.13182 +2016-07-01|48.0|3.0|0.64144|0.13043 +2016-07-01|48.0|4.0|0.9313|0.1291 +2016-07-01|48.0|5.0|1.21437|0.12783 +2016-07-01|48.0|6.0|1.49084|0.12663 +2016-07-01|48.0|7.0|1.76093|0.12551 +2016-07-01|48.0|8.0|2.02488|0.12446 +2016-07-01|48.0|9.0|2.28296|0.12349 +2016-07-01|48.0|10.0|2.53544|0.12259 +2016-07-01|48.0|11.0|2.78262|0.12177 +2016-07-01|48.0|12.0|3.02478|0.12101 +2016-07-01|48.0|13.0|3.26221|0.12032 +2016-07-01|48.0|14.0|3.49518|0.1197 +2016-07-01|48.0|15.0|3.72397|0.11913 +2016-07-01|48.0|16.0|3.94881|0.11862 +2016-07-01|48.0|17.0|4.16993|0.11814 +2016-07-01|48.0|18.0|4.38751|0.11771 +2016-07-01|48.0|19.0|4.60172|0.1173 +2016-07-01|48.0|20.0|4.81269|0.1169 +2016-07-01|48.0|21.0|5.02051|0.11651 +2016-07-01|48.0|22.0|5.22522|0.11612 +2016-07-01|48.0|23.0|5.42685|0.11572 +2016-07-01|48.0|24.0|5.62537|0.11529 +2016-07-01|48.0|25.0|5.82072|0.11484 +2016-07-01|48.0|26.0|6.01282|0.11434 +2016-07-01|48.0|27.0|6.20154|0.11379 +2016-07-01|48.0|28.0|6.38672|0.11319 +2016-07-01|48.0|29.0|6.56818|0.11252 +2016-07-01|48.0|30.0|6.74573|0.11179 +2016-07-01|48.0|31.0|6.91914|0.11098 +2016-07-01|48.0|32.0|7.08818|0.11009 +2016-07-01|48.0|33.0|7.2526|0.10913 +2016-07-01|48.0|34.0|7.41215|0.10809 +2016-07-01|48.0|35.0|7.56657|0.10696 +2016-07-01|48.0|36.0|7.71561|0.10576 +2016-07-01|48.0|37.0|7.85902|0.10449 +2016-07-01|48.0|38.0|7.99656|0.10314 +2016-07-01|48.0|39.0|8.128|0.10172 +2016-07-01|48.0|40.0|8.25311|0.10024 +2016-07-01|48.0|41.0|8.37168|0.09871 +2016-07-01|48.0|42.0|8.48353|0.09713 +2016-07-01|48.0|43.0|8.58846|0.09551 +2016-07-01|48.0|44.0|8.68632|0.09385 +2016-07-01|48.0|45.0|8.77695|0.09217 +2016-07-01|48.0|46.0|8.86021|0.09047 +2016-07-01|48.0|47.0|8.93596|0.08875 +2016-07-01|48.0|48.0|9.00409|0.08704 +2016-07-01|48.0|49.0|9.06448|0.08532 +2016-07-01|48.0|50.0|9.11703|0.08362 +2016-07-01|48.0|51.0|9.16163|0.08192 +2016-07-01|48.0|52.0|9.19816|0.08025 +2016-07-01|48.0|53.0|9.22653|0.0786 +2016-07-01|48.0|54.0|9.24662|0.07697 +2016-07-01|48.0|55.0|9.25831|0.07536 +2016-07-01|48.0|56.0|9.26149|0.07378 +2016-07-01|48.0|57.0|9.256|0.07223 +2016-07-01|48.0|58.0|9.24172|0.0707 +2016-07-01|48.0|59.0|9.21848|0.06919 +2016-07-01|48.0|60.0|9.18613|0.0677 +2016-07-01|48.0|61.0|9.14448|0.06622 +2016-07-01|48.0|62.0|9.09335|0.06475 +2016-07-01|48.0|63.0|9.03254|0.06328 +2016-07-01|48.0|64.0|8.96185|0.06181 +2016-07-01|48.0|65.0|8.88108|0.06032 +2016-07-01|48.0|66.0|8.78999|0.05882 +2016-07-01|48.0|67.0|8.68838|0.05729 +2016-07-01|48.0|68.0|8.57602|0.05572 +2016-07-01|48.0|69.0|8.45268|0.05411 +2016-07-01|48.0|70.0|8.31816|0.05245 +2016-07-01|48.0|71.0|8.17222|0.05073 +2016-07-01|48.0|72.0|8.01467|0.04895 +2016-07-01|48.0|73.0|7.84531|0.0471 +2016-07-01|48.0|74.0|7.66393|0.04516 +2016-07-01|48.0|75.0|7.47038|0.04315 +2016-07-01|48.0|76.0|7.26448|0.04104 +2016-07-01|48.0|77.0|7.04609|0.03884 +2016-07-01|48.0|78.0|6.8151|0.03655 +2016-07-01|48.0|79.0|6.57138|0.03415 +2016-07-01|48.0|80.0|6.31487|0.03165 +2016-07-01|48.0|81.0|6.04551|0.02905 +2016-07-01|48.0|82.0|5.76328|0.02635 +2016-07-01|48.0|83.0|5.46816|0.02355 +2016-07-01|48.0|84.0|5.16021|0.02065 +2016-07-01|48.0|85.0|4.83948|0.01765 +2016-07-01|48.0|86.0|4.50609|0.01456 +2016-07-01|48.0|87.0|4.16019|0.01139 +2016-07-01|48.0|88.0|3.80197|0.00814 +2016-07-01|48.0|89.0|3.43167|0.00482 +2016-07-01|48.0|90.0|3.04957|0.00144 +2016-07-01|48.0|91.0|2.65604|-0.00199 +2016-07-01|48.0|92.0|2.25146|-0.00545 +2016-07-01|48.0|93.0|1.83631|-0.00894 +2016-07-01|48.0|94.0|1.41111|-0.01245 +2016-07-01|48.0|95.0|0.97647|-0.01594 +2016-07-01|48.0|96.0|0.53304|-0.01942 +2016-07-01|48.0|97.0|0.08158|-0.02287 +2016-07-01|48.0|98.0|-0.3771|-0.02626 +2016-07-01|48.0|99.0|-0.84212|-0.02959 +2016-07-01|48.0|100.0|-1.31251|-0.03282 +2016-07-01|48.0|101.0|-1.78723|-0.03596 +2016-07-01|48.0|102.0|-2.26518|-0.03897 +2016-07-01|48.0|103.0|-2.74517|-0.04185 +2016-07-01|48.0|104.0|-3.22596|-0.04457 +2016-07-01|48.0|105.0|-3.70627|-0.04712 +2016-07-01|48.0|106.0|-4.18475|-0.04949 +2016-07-01|48.0|107.0|-4.66|-0.05166 +2016-07-01|48.0|108.0|-5.1306|-0.05363 +2016-07-01|48.0|109.0|-5.59512|-0.05537 +2016-07-01|48.0|110.0|-6.05209|-0.05689 +2016-07-01|48.0|111.0|-6.50007|-0.05817 +2016-07-01|48.0|112.0|-6.93761|-0.05922 +2016-07-01|48.0|113.0|-7.36329|-0.06003 +2016-07-01|48.0|114.0|-7.77572|-0.06059 +2016-07-01|48.0|115.0|-8.17356|-0.06092 +2016-07-01|48.0|116.0|-8.55553|-0.06102 +2016-07-01|48.0|117.0|-8.92041|-0.06089 +2016-07-01|48.0|118.0|-9.26706|-0.06054 +2016-07-01|48.0|119.0|-9.59442|-0.05998 +2016-07-01|48.0|120.0|-9.90152|-0.05922 +2016-07-01|48.0|121.0|-10.1875|-0.05828 +2016-07-01|48.0|122.0|-10.45156|-0.05717 +2016-07-01|48.0|123.0|-10.69305|-0.05591 +2016-07-01|48.0|124.0|-10.9114|-0.05451 +2016-07-01|48.0|125.0|-11.10614|-0.053 +2016-07-01|48.0|126.0|-11.27691|-0.05138 +2016-07-01|48.0|127.0|-11.42346|-0.04967 +2016-07-01|48.0|128.0|-11.54563|-0.04791 +2016-07-01|48.0|129.0|-11.64336|-0.04609 +2016-07-01|48.0|130.0|-11.71668|-0.04425 +2016-07-01|48.0|131.0|-11.7657|-0.0424 +2016-07-01|48.0|132.0|-11.79063|-0.04056 +2016-07-01|48.0|133.0|-11.79173|-0.03874 +2016-07-01|48.0|134.0|-11.76936|-0.03697 +2016-07-01|48.0|135.0|-11.72391|-0.03526 +2016-07-01|48.0|136.0|-11.65586|-0.03362 +2016-07-01|48.0|137.0|-11.56572|-0.03208 +2016-07-01|48.0|138.0|-11.45406|-0.03064 +2016-07-01|48.0|139.0|-11.32148|-0.02931 +2016-07-01|48.0|140.0|-11.16863|-0.02812 +2016-07-01|48.0|141.0|-10.99616|-0.02707 +2016-07-01|48.0|142.0|-10.80478|-0.02618 +2016-07-01|48.0|143.0|-10.59519|-0.02545 +2016-07-01|48.0|144.0|-10.36812|-0.02489 +2016-07-01|48.0|145.0|-10.12431|-0.02452 +2016-07-01|48.0|146.0|-9.86449|-0.02433 +2016-07-01|48.0|147.0|-9.58942|-0.02434 +2016-07-01|48.0|148.0|-9.29984|-0.02455 +2016-07-01|48.0|149.0|-8.9965|-0.02497 +2016-07-01|48.0|150.0|-8.68012|-0.0256 +2016-07-01|48.0|151.0|-8.35144|-0.02644 +2016-07-01|48.0|152.0|-8.01118|-0.0275 +2016-07-01|48.0|153.0|-7.66004|-0.02878 +2016-07-01|48.0|154.0|-7.29872|-0.03027 +2016-07-01|48.0|155.0|-6.92789|-0.03198 +2016-07-01|48.0|156.0|-6.54822|-0.03391 +2016-07-01|48.0|157.0|-6.16035|-0.03605 +2016-07-01|48.0|158.0|-5.76493|-0.03839 +2016-07-01|48.0|159.0|-5.36255|-0.04094 +2016-07-01|48.0|160.0|-4.95383|-0.04369 +2016-07-01|48.0|161.0|-4.53933|-0.04663 +2016-07-01|48.0|162.0|-4.11962|-0.04975 +2016-07-01|48.0|163.0|-3.69525|-0.05305 +2016-07-01|48.0|164.0|-3.26673|-0.05652 +2016-07-01|48.0|165.0|-2.83459|-0.06015 +2016-07-01|48.0|166.0|-2.39932|-0.06392 +2016-07-01|48.0|167.0|-1.96139|-0.06782 +2016-07-01|48.0|168.0|-1.52127|-0.07185 +2016-07-01|48.0|169.0|-1.07941|-0.07598 +2016-07-01|48.0|170.0|-0.63622|-0.0802 +2016-07-01|48.0|171.0|-0.19214|-0.08451 +2016-07-01|48.0|172.0|0.25244|-0.08888 +2016-07-01|48.0|173.0|0.69714|-0.0933 +2016-07-01|48.0|174.0|1.14158|-0.09775 +2016-07-01|48.0|175.0|1.5854|-0.10221 +2016-07-01|48.0|176.0|2.02826|-0.10668 +2016-07-01|48.0|177.0|2.46982|-0.11113 +2016-07-01|48.0|178.0|2.90977|-0.11555 +2016-07-01|48.0|179.0|3.3478|-0.11993 +2016-07-01|48.0|-1.0|-0.58825|0.13632 +2016-07-01|48.0|-2.0|-0.91348|0.13791 +2016-07-01|48.0|-3.0|-1.24577|0.13953 +2016-07-01|48.0|-4.0|-1.585|0.14119 +2016-07-01|48.0|-5.0|-1.93101|0.14286 +2016-07-01|48.0|-6.0|-2.28359|0.14455 +2016-07-01|48.0|-7.0|-2.64249|0.14625 +2016-07-01|48.0|-8.0|-3.00743|0.14796 +2016-07-01|48.0|-9.0|-3.37806|0.14968 +2016-07-01|48.0|-10.0|-3.75404|0.15138 +2016-07-01|48.0|-11.0|-4.13497|0.15309 +2016-07-01|48.0|-12.0|-4.52043|0.15478 +2016-07-01|48.0|-13.0|-4.90998|0.15647 +2016-07-01|48.0|-14.0|-5.30316|0.15814 +2016-07-01|48.0|-15.0|-5.69952|0.15979 +2016-07-01|48.0|-16.0|-6.09857|0.16143 +2016-07-01|48.0|-17.0|-6.49984|0.16305 +2016-07-01|48.0|-18.0|-6.90284|0.16465 +2016-07-01|48.0|-19.0|-7.3071|0.16623 +2016-07-01|48.0|-20.0|-7.71215|0.16779 +2016-07-01|48.0|-21.0|-8.11753|0.16932 +2016-07-01|48.0|-22.0|-8.52278|0.17084 +2016-07-01|48.0|-23.0|-8.92746|0.17234 +2016-07-01|48.0|-24.0|-9.33114|0.17381 +2016-07-01|48.0|-25.0|-9.7334|0.17525 +2016-07-01|48.0|-26.0|-10.13384|0.17667 +2016-07-01|48.0|-27.0|-10.53204|0.17806 +2016-07-01|48.0|-28.0|-10.92762|0.17942 +2016-07-01|48.0|-29.0|-11.32019|0.18075 +2016-07-01|48.0|-30.0|-11.70935|0.18203 +2016-07-01|48.0|-31.0|-12.09472|0.18328 +2016-07-01|48.0|-32.0|-12.4759|0.18447 +2016-07-01|48.0|-33.0|-12.85248|0.18561 +2016-07-01|48.0|-34.0|-13.22404|0.18669 +2016-07-01|48.0|-35.0|-13.59014|0.18771 +2016-07-01|48.0|-36.0|-13.95032|0.18865 +2016-07-01|48.0|-37.0|-14.30408|0.18951 +2016-07-01|48.0|-38.0|-14.65092|0.19029 +2016-07-01|48.0|-39.0|-14.99027|0.19096 +2016-07-01|48.0|-40.0|-15.32155|0.19153 +2016-07-01|48.0|-41.0|-15.64413|0.19199 +2016-07-01|48.0|-42.0|-15.95733|0.19232 +2016-07-01|48.0|-43.0|-16.26044|0.19252 +2016-07-01|48.0|-44.0|-16.55269|0.19258 +2016-07-01|48.0|-45.0|-16.83327|0.19249 +2016-07-01|48.0|-46.0|-17.10133|0.19223 +2016-07-01|48.0|-47.0|-17.35596|0.19181 +2016-07-01|48.0|-48.0|-17.59622|0.19121 +2016-07-01|48.0|-49.0|-17.82111|0.19043 +2016-07-01|48.0|-50.0|-18.02959|0.18944 +2016-07-01|48.0|-51.0|-18.22061|0.18826 +2016-07-01|48.0|-52.0|-18.39303|0.18686 +2016-07-01|48.0|-53.0|-18.54574|0.18524 +2016-07-01|48.0|-54.0|-18.67754|0.1834 +2016-07-01|48.0|-55.0|-18.78727|0.18132 +2016-07-01|48.0|-56.0|-18.8737|0.179 +2016-07-01|48.0|-57.0|-18.93562|0.17643 +2016-07-01|48.0|-58.0|-18.97182|0.1736 +2016-07-01|48.0|-59.0|-18.98106|0.17051 +2016-07-01|48.0|-60.0|-18.96215|0.16716 +2016-07-01|48.0|-61.0|-18.9139|0.16353 +2016-07-01|48.0|-62.0|-18.83516|0.15962 +2016-07-01|48.0|-63.0|-18.7248|0.15544 +2016-07-01|48.0|-64.0|-18.58176|0.15097 +2016-07-01|48.0|-65.0|-18.40505|0.14621 +2016-07-01|48.0|-66.0|-18.19374|0.14116 +2016-07-01|48.0|-67.0|-17.94698|0.13582 +2016-07-01|48.0|-68.0|-17.66404|0.13019 +2016-07-01|48.0|-69.0|-17.34431|0.12428 +2016-07-01|48.0|-70.0|-16.9873|0.11808 +2016-07-01|48.0|-71.0|-16.59268|0.11161 +2016-07-01|48.0|-72.0|-16.16027|0.10487 +2016-07-01|48.0|-73.0|-15.69008|0.09787 +2016-07-01|48.0|-74.0|-15.18232|0.09063 +2016-07-01|48.0|-75.0|-14.6374|0.08317 +2016-07-01|48.0|-76.0|-14.05596|0.07549 +2016-07-01|48.0|-77.0|-13.43886|0.06762 +2016-07-01|48.0|-78.0|-12.78721|0.0596 +2016-07-01|48.0|-79.0|-12.10238|0.05143 +2016-07-01|48.0|-80.0|-11.38598|0.04317 +2016-07-01|48.0|-81.0|-10.63985|0.03483 +2016-07-01|48.0|-82.0|-9.8661|0.02645 +2016-07-01|48.0|-83.0|-9.06705|0.01807 +2016-07-01|48.0|-84.0|-8.24526|0.00973 +2016-07-01|48.0|-85.0|-7.40344|0.00145 +2016-07-01|48.0|-86.0|-6.54451|-0.00671 +2016-07-01|48.0|-87.0|-5.67151|-0.01472 +2016-07-01|48.0|-88.0|-4.78757|-0.02256 +2016-07-01|48.0|-89.0|-3.89593|-0.03018 +2016-07-01|48.0|-90.0|-2.99982|-0.03757 +2016-07-01|48.0|-91.0|-2.10248|-0.04468 +2016-07-01|48.0|-92.0|-1.20711|-0.0515 +2016-07-01|48.0|-93.0|-0.31681|-0.05802 +2016-07-01|48.0|-94.0|0.56542|-0.06422 +2016-07-01|48.0|-95.0|1.43674|-0.07009 +2016-07-01|48.0|-96.0|2.29449|-0.07564 +2016-07-01|48.0|-97.0|3.13619|-0.08084 +2016-07-01|48.0|-98.0|3.95959|-0.08573 +2016-07-01|48.0|-99.0|4.76266|-0.09029 +2016-07-01|48.0|-100.0|5.54362|-0.09455 +2016-07-01|48.0|-101.0|6.3009|-0.09851 +2016-07-01|48.0|-102.0|7.03319|-0.10219 +2016-07-01|48.0|-103.0|7.73941|-0.10561 +2016-07-01|48.0|-104.0|8.41868|-0.10879 +2016-07-01|48.0|-105.0|9.07035|-0.11175 +2016-07-01|48.0|-106.0|9.69396|-0.1145 +2016-07-01|48.0|-107.0|10.2892|-0.11707 +2016-07-01|48.0|-108.0|10.85597|-0.11947 +2016-07-01|48.0|-109.0|11.39427|-0.12173 +2016-07-01|48.0|-110.0|11.90424|-0.12386 +2016-07-01|48.0|-111.0|12.38614|-0.12587 +2016-07-01|48.0|-112.0|12.8403|-0.12778 +2016-07-01|48.0|-113.0|13.26714|-0.12961 +2016-07-01|48.0|-114.0|13.66714|-0.13137 +2016-07-01|48.0|-115.0|14.04082|-0.13307 +2016-07-01|48.0|-116.0|14.38874|-0.13471 +2016-07-01|48.0|-117.0|14.71148|-0.13632 +2016-07-01|48.0|-118.0|15.00964|-0.13789 +2016-07-01|48.0|-119.0|15.28381|-0.13944 +2016-07-01|48.0|-120.0|15.53459|-0.14097 +2016-07-01|48.0|-121.0|15.76259|-0.14248 +2016-07-01|48.0|-122.0|15.96837|-0.14398 +2016-07-01|48.0|-123.0|16.15251|-0.14547 +2016-07-01|48.0|-124.0|16.31555|-0.14695 +2016-07-01|48.0|-125.0|16.45802|-0.14843 +2016-07-01|48.0|-126.0|16.58044|-0.14991 +2016-07-01|48.0|-127.0|16.68328|-0.15139 +2016-07-01|48.0|-128.0|16.76703|-0.15287 +2016-07-01|48.0|-129.0|16.83212|-0.15434 +2016-07-01|48.0|-130.0|16.879|-0.15581 +2016-07-01|48.0|-131.0|16.90807|-0.15728 +2016-07-01|48.0|-132.0|16.91975|-0.15875 +2016-07-01|48.0|-133.0|16.91441|-0.16021 +2016-07-01|48.0|-134.0|16.89244|-0.16166 +2016-07-01|48.0|-135.0|16.85421|-0.1631 +2016-07-01|48.0|-136.0|16.80007|-0.16453 +2016-07-01|48.0|-137.0|16.73039|-0.16594 +2016-07-01|48.0|-138.0|16.64552|-0.16732 +2016-07-01|48.0|-139.0|16.5458|-0.16869 +2016-07-01|48.0|-140.0|16.4316|-0.17002 +2016-07-01|48.0|-141.0|16.30324|-0.17131 +2016-07-01|48.0|-142.0|16.1611|-0.17256 +2016-07-01|48.0|-143.0|16.0055|-0.17377 +2016-07-01|48.0|-144.0|15.83681|-0.17492 +2016-07-01|48.0|-145.0|15.65538|-0.17601 +2016-07-01|48.0|-146.0|15.46155|-0.17703 +2016-07-01|48.0|-147.0|15.25568|-0.17798 +2016-07-01|48.0|-148.0|15.03813|-0.17884 +2016-07-01|48.0|-149.0|14.80924|-0.1796 +2016-07-01|48.0|-150.0|14.56936|-0.18027 +2016-07-01|48.0|-151.0|14.31885|-0.18083 +2016-07-01|48.0|-152.0|14.05805|-0.18127 +2016-07-01|48.0|-153.0|13.7873|-0.18158 +2016-07-01|48.0|-154.0|13.50693|-0.18176 +2016-07-01|48.0|-155.0|13.21728|-0.18179 +2016-07-01|48.0|-156.0|12.91867|-0.18167 +2016-07-01|48.0|-157.0|12.61142|-0.1814 +2016-07-01|48.0|-158.0|12.29583|-0.18095 +2016-07-01|48.0|-159.0|11.97222|-0.18033 +2016-07-01|48.0|-160.0|11.64087|-0.17953 +2016-07-01|48.0|-161.0|11.30206|-0.17854 +2016-07-01|48.0|-162.0|10.95608|-0.17736 +2016-07-01|48.0|-163.0|10.6032|-0.17599 +2016-07-01|48.0|-164.0|10.24367|-0.17442 +2016-07-01|48.0|-165.0|9.87775|-0.17265 +2016-07-01|48.0|-166.0|9.50569|-0.17067 +2016-07-01|48.0|-167.0|9.12773|-0.1685 +2016-07-01|48.0|-168.0|8.74411|-0.16613 +2016-07-01|48.0|-169.0|8.35506|-0.16356 +2016-07-01|48.0|-170.0|7.96081|-0.1608 +2016-07-01|48.0|-171.0|7.56159|-0.15785 +2016-07-01|48.0|-172.0|7.15763|-0.15471 +2016-07-01|48.0|-173.0|6.74916|-0.15141 +2016-07-01|48.0|-174.0|6.33642|-0.14794 +2016-07-01|48.0|-175.0|5.91963|-0.14431 +2016-07-01|48.0|-176.0|5.49903|-0.14053 +2016-07-01|48.0|-177.0|5.07487|-0.13663 +2016-07-01|48.0|-178.0|4.64741|-0.1326 +2016-07-01|48.0|-179.0|4.2169|-0.12846 +2016-07-01|49.0|0.0|-0.35938|0.13797 +2016-07-01|49.0|1.0|-0.03938|0.13646 +2016-07-01|49.0|2.0|0.27376|0.135 +2016-07-01|49.0|3.0|0.5801|0.1336 +2016-07-01|49.0|4.0|0.87975|0.13226 +2016-07-01|49.0|5.0|1.17284|0.13098 +2016-07-01|49.0|6.0|1.45954|0.12977 +2016-07-01|49.0|7.0|1.74004|0.12863 +2016-07-01|49.0|8.0|2.01456|0.12756 +2016-07-01|49.0|9.0|2.28336|0.12656 +2016-07-01|49.0|10.0|2.54668|0.12564 +2016-07-01|49.0|11.0|2.8048|0.12478 +2016-07-01|49.0|12.0|3.05798|0.12399 +2016-07-01|49.0|13.0|3.3065|0.12327 +2016-07-01|49.0|14.0|3.55061|0.12261 +2016-07-01|49.0|15.0|3.79057|0.122 +2016-07-01|49.0|16.0|4.0266|0.12144 +2016-07-01|49.0|17.0|4.25892|0.12092 +2016-07-01|49.0|18.0|4.48772|0.12043 +2016-07-01|49.0|19.0|4.71316|0.11997 +2016-07-01|49.0|20.0|4.93535|0.11953 +2016-07-01|49.0|21.0|5.15439|0.1191 +2016-07-01|49.0|22.0|5.37034|0.11866 +2016-07-01|49.0|23.0|5.58322|0.11822 +2016-07-01|49.0|24.0|5.79302|0.11775 +2016-07-01|49.0|25.0|5.99969|0.11726 +2016-07-01|49.0|26.0|6.20315|0.11673 +2016-07-01|49.0|27.0|6.40328|0.11616 +2016-07-01|49.0|28.0|6.59994|0.11553 +2016-07-01|49.0|29.0|6.79296|0.11485 +2016-07-01|49.0|30.0|6.98215|0.1141 +2016-07-01|49.0|31.0|7.1673|0.11328 +2016-07-01|49.0|32.0|7.34817|0.11239 +2016-07-01|49.0|33.0|7.52452|0.11143 +2016-07-01|49.0|34.0|7.6961|0.1104 +2016-07-01|49.0|35.0|7.86265|0.10929 +2016-07-01|49.0|36.0|8.0239|0.1081 +2016-07-01|49.0|37.0|8.1796|0.10684 +2016-07-01|49.0|38.0|8.32949|0.10551 +2016-07-01|49.0|39.0|8.4733|0.10412 +2016-07-01|49.0|40.0|8.61081|0.10266 +2016-07-01|49.0|41.0|8.74177|0.10115 +2016-07-01|49.0|42.0|8.86594|0.09959 +2016-07-01|49.0|43.0|8.98312|0.09798 +2016-07-01|49.0|44.0|9.09311|0.09634 +2016-07-01|49.0|45.0|9.19569|0.09466 +2016-07-01|49.0|46.0|9.29069|0.09296 +2016-07-01|49.0|47.0|9.37793|0.09125 +2016-07-01|49.0|48.0|9.45724|0.08952 +2016-07-01|49.0|49.0|9.52846|0.08779 +2016-07-01|49.0|50.0|9.59144|0.08605 +2016-07-01|49.0|51.0|9.646|0.08432 +2016-07-01|49.0|52.0|9.69201|0.0826 +2016-07-01|49.0|53.0|9.72931|0.08089 +2016-07-01|49.0|54.0|9.75774|0.0792 +2016-07-01|49.0|55.0|9.77713|0.07752 +2016-07-01|49.0|56.0|9.78734|0.07586 +2016-07-01|49.0|57.0|9.78817|0.07421 +2016-07-01|49.0|58.0|9.77947|0.07257 +2016-07-01|49.0|59.0|9.76103|0.07095 +2016-07-01|49.0|60.0|9.73267|0.06934 +2016-07-01|49.0|61.0|9.69418|0.06773 +2016-07-01|49.0|62.0|9.64537|0.06612 +2016-07-01|49.0|63.0|9.586|0.0645 +2016-07-01|49.0|64.0|9.51587|0.06287 +2016-07-01|49.0|65.0|9.43474|0.06123 +2016-07-01|49.0|66.0|9.3424|0.05956 +2016-07-01|49.0|67.0|9.2386|0.05786 +2016-07-01|49.0|68.0|9.12312|0.05612 +2016-07-01|49.0|69.0|8.99573|0.05433 +2016-07-01|49.0|70.0|8.85621|0.05249 +2016-07-01|49.0|71.0|8.70434|0.05059 +2016-07-01|49.0|72.0|8.53991|0.04863 +2016-07-01|49.0|73.0|8.36273|0.04659 +2016-07-01|49.0|74.0|8.1726|0.04447 +2016-07-01|49.0|75.0|7.96935|0.04227 +2016-07-01|49.0|76.0|7.75284|0.03998 +2016-07-01|49.0|77.0|7.52292|0.0376 +2016-07-01|49.0|78.0|7.27948|0.03512 +2016-07-01|49.0|79.0|7.02243|0.03255 +2016-07-01|49.0|80.0|6.7517|0.02987 +2016-07-01|49.0|81.0|6.46726|0.0271 +2016-07-01|49.0|82.0|6.16911|0.02423 +2016-07-01|49.0|83.0|5.85726|0.02127 +2016-07-01|49.0|84.0|5.53179|0.01821 +2016-07-01|49.0|85.0|5.1928|0.01506 +2016-07-01|49.0|86.0|4.84043|0.01183 +2016-07-01|49.0|87.0|4.47487|0.00853 +2016-07-01|49.0|88.0|4.09637|0.00515 +2016-07-01|49.0|89.0|3.70522|0.00172 +2016-07-01|49.0|90.0|3.30176|-0.00176 +2016-07-01|49.0|91.0|2.8864|-0.00528 +2016-07-01|49.0|92.0|2.45961|-0.00882 +2016-07-01|49.0|93.0|2.02193|-0.01237 +2016-07-01|49.0|94.0|1.57396|-0.01592 +2016-07-01|49.0|95.0|1.11638|-0.01946 +2016-07-01|49.0|96.0|0.64993|-0.02295 +2016-07-01|49.0|97.0|0.17545|-0.02639 +2016-07-01|49.0|98.0|-0.30618|-0.02977 +2016-07-01|49.0|99.0|-0.79397|-0.03305 +2016-07-01|49.0|100.0|-1.28687|-0.03623 +2016-07-01|49.0|101.0|-1.78376|-0.03929 +2016-07-01|49.0|102.0|-2.28345|-0.04221 +2016-07-01|49.0|103.0|-2.78468|-0.04497 +2016-07-01|49.0|104.0|-3.28614|-0.04756 +2016-07-01|49.0|105.0|-3.78645|-0.04997 +2016-07-01|49.0|106.0|-4.28421|-0.05217 +2016-07-01|49.0|107.0|-4.77797|-0.05416 +2016-07-01|49.0|108.0|-5.26625|-0.05593 +2016-07-01|49.0|109.0|-5.74757|-0.05746 +2016-07-01|49.0|110.0|-6.22042|-0.05875 +2016-07-01|49.0|111.0|-6.68334|-0.05981 +2016-07-01|49.0|112.0|-7.13484|-0.06061 +2016-07-01|49.0|113.0|-7.57351|-0.06117 +2016-07-01|49.0|114.0|-7.99795|-0.06148 +2016-07-01|49.0|115.0|-8.40681|-0.06156 +2016-07-01|49.0|116.0|-8.79884|-0.0614 +2016-07-01|49.0|117.0|-9.17282|-0.06101 +2016-07-01|49.0|118.0|-9.52765|-0.06041 +2016-07-01|49.0|119.0|-9.86228|-0.0596 +2016-07-01|49.0|120.0|-10.17579|-0.0586 +2016-07-01|49.0|121.0|-10.46734|-0.05743 +2016-07-01|49.0|122.0|-10.7362|-0.05609 +2016-07-01|49.0|123.0|-10.98172|-0.05461 +2016-07-01|49.0|124.0|-11.20341|-0.053 +2016-07-01|49.0|125.0|-11.40082|-0.05129 +2016-07-01|49.0|126.0|-11.57366|-0.04949 +2016-07-01|49.0|127.0|-11.72171|-0.04762 +2016-07-01|49.0|128.0|-11.84485|-0.0457 +2016-07-01|49.0|129.0|-11.94306|-0.04375 +2016-07-01|49.0|130.0|-12.01643|-0.04178 +2016-07-01|49.0|131.0|-12.06509|-0.03982 +2016-07-01|49.0|132.0|-12.08929|-0.03789 +2016-07-01|49.0|133.0|-12.08933|-0.03599 +2016-07-01|49.0|134.0|-12.0656|-0.03416 +2016-07-01|49.0|135.0|-12.01852|-0.0324 +2016-07-01|49.0|136.0|-11.9486|-0.03073 +2016-07-01|49.0|137.0|-11.85637|-0.02917 +2016-07-01|49.0|138.0|-11.74242|-0.02773 +2016-07-01|49.0|139.0|-11.60737|-0.02642 +2016-07-01|49.0|140.0|-11.4519|-0.02526 +2016-07-01|49.0|141.0|-11.27666|-0.02426 +2016-07-01|49.0|142.0|-11.08239|-0.02342 +2016-07-01|49.0|143.0|-10.86979|-0.02276 +2016-07-01|49.0|144.0|-10.63961|-0.02229 +2016-07-01|49.0|145.0|-10.39258|-0.02201 +2016-07-01|49.0|146.0|-10.12948|-0.02194 +2016-07-01|49.0|147.0|-9.85103|-0.02207 +2016-07-01|49.0|148.0|-9.55801|-0.02242 +2016-07-01|49.0|149.0|-9.25114|-0.02298 +2016-07-01|49.0|150.0|-8.93119|-0.02376 +2016-07-01|49.0|151.0|-8.59886|-0.02477 +2016-07-01|49.0|152.0|-8.25489|-0.026 +2016-07-01|49.0|153.0|-7.89999|-0.02745 +2016-07-01|49.0|154.0|-7.53484|-0.02913 +2016-07-01|49.0|155.0|-7.16013|-0.03104 +2016-07-01|49.0|156.0|-6.77651|-0.03316 +2016-07-01|49.0|157.0|-6.38464|-0.0355 +2016-07-01|49.0|158.0|-5.98513|-0.03806 +2016-07-01|49.0|159.0|-5.57861|-0.04082 +2016-07-01|49.0|160.0|-5.16566|-0.04378 +2016-07-01|49.0|161.0|-4.74685|-0.04694 +2016-07-01|49.0|162.0|-4.32275|-0.05028 +2016-07-01|49.0|163.0|-3.89389|-0.0538 +2016-07-01|49.0|164.0|-3.46079|-0.05748 +2016-07-01|49.0|165.0|-3.02396|-0.06133 +2016-07-01|49.0|166.0|-2.58387|-0.06531 +2016-07-01|49.0|167.0|-2.141|-0.06943 +2016-07-01|49.0|168.0|-1.69581|-0.07367 +2016-07-01|49.0|169.0|-1.24873|-0.07802 +2016-07-01|49.0|170.0|-0.80018|-0.08245 +2016-07-01|49.0|171.0|-0.35057|-0.08697 +2016-07-01|49.0|172.0|0.09971|-0.09154 +2016-07-01|49.0|173.0|0.55028|-0.09616 +2016-07-01|49.0|174.0|1.00078|-0.10081 +2016-07-01|49.0|175.0|1.45084|-0.10547 +2016-07-01|49.0|176.0|1.90014|-0.11013 +2016-07-01|49.0|177.0|2.34834|-0.11478 +2016-07-01|49.0|178.0|2.79512|-0.11938 +2016-07-01|49.0|179.0|3.24018|-0.12394 +2016-07-01|49.0|-1.0|-0.68623|0.13952 +2016-07-01|49.0|-2.0|-1.01993|0.14112 +2016-07-01|49.0|-3.0|-1.3604|0.14275 +2016-07-01|49.0|-4.0|-1.70752|0.14441 +2016-07-01|49.0|-5.0|-2.06113|0.1461 +2016-07-01|49.0|-6.0|-2.42103|0.14781 +2016-07-01|49.0|-7.0|-2.78698|0.14953 +2016-07-01|49.0|-8.0|-3.1587|0.15126 +2016-07-01|49.0|-9.0|-3.53587|0.15299 +2016-07-01|49.0|-10.0|-3.91814|0.15473 +2016-07-01|49.0|-11.0|-4.30513|0.15647 +2016-07-01|49.0|-12.0|-4.69646|0.1582 +2016-07-01|49.0|-13.0|-5.09169|0.15993 +2016-07-01|49.0|-14.0|-5.49039|0.16164 +2016-07-01|49.0|-15.0|-5.89212|0.16334 +2016-07-01|49.0|-16.0|-6.29641|0.16503 +2016-07-01|49.0|-17.0|-6.70281|0.1667 +2016-07-01|49.0|-18.0|-7.11085|0.16836 +2016-07-01|49.0|-19.0|-7.52008|0.17 +2016-07-01|49.0|-20.0|-7.93003|0.17162 +2016-07-01|49.0|-21.0|-8.34026|0.17323 +2016-07-01|49.0|-22.0|-8.75032|0.17481 +2016-07-01|49.0|-23.0|-9.15978|0.17637 +2016-07-01|49.0|-24.0|-9.56821|0.17791 +2016-07-01|49.0|-25.0|-9.97521|0.17943 +2016-07-01|49.0|-26.0|-10.38036|0.18092 +2016-07-01|49.0|-27.0|-10.78326|0.18238 +2016-07-01|49.0|-28.0|-11.18351|0.1838 +2016-07-01|49.0|-29.0|-11.58073|0.1852 +2016-07-01|49.0|-30.0|-11.97452|0.18656 +2016-07-01|49.0|-31.0|-12.36447|0.18787 +2016-07-01|49.0|-32.0|-12.7502|0.18913 +2016-07-01|49.0|-33.0|-13.13128|0.19035 +2016-07-01|49.0|-34.0|-13.50728|0.1915 +2016-07-01|49.0|-35.0|-13.87776|0.19259 +2016-07-01|49.0|-36.0|-14.24225|0.19361 +2016-07-01|49.0|-37.0|-14.60025|0.19455 +2016-07-01|49.0|-38.0|-14.95124|0.19541 +2016-07-01|49.0|-39.0|-15.29467|0.19617 +2016-07-01|49.0|-40.0|-15.62994|0.19682 +2016-07-01|49.0|-41.0|-15.95642|0.19737 +2016-07-01|49.0|-42.0|-16.27344|0.1978 +2016-07-01|49.0|-43.0|-16.58028|0.19811 +2016-07-01|49.0|-44.0|-16.87619|0.19827 +2016-07-01|49.0|-45.0|-17.16035|0.1983 +2016-07-01|49.0|-46.0|-17.43192|0.19817 +2016-07-01|49.0|-47.0|-17.69001|0.19787 +2016-07-01|49.0|-48.0|-17.93367|0.19741 +2016-07-01|49.0|-49.0|-18.16192|0.19677 +2016-07-01|49.0|-50.0|-18.37373|0.19593 +2016-07-01|49.0|-51.0|-18.56803|0.19491 +2016-07-01|49.0|-52.0|-18.74374|0.19368 +2016-07-01|49.0|-53.0|-18.8997|0.19223 +2016-07-01|49.0|-54.0|-19.03477|0.19057 +2016-07-01|49.0|-55.0|-19.14774|0.18868 +2016-07-01|49.0|-56.0|-19.23741|0.18655 +2016-07-01|49.0|-57.0|-19.30257|0.18418 +2016-07-01|49.0|-58.0|-19.34197|0.18156 +2016-07-01|49.0|-59.0|-19.3544|0.17868 +2016-07-01|49.0|-60.0|-19.33863|0.17554 +2016-07-01|49.0|-61.0|-19.29346|0.17212 +2016-07-01|49.0|-62.0|-19.21771|0.16843 +2016-07-01|49.0|-63.0|-19.11022|0.16446 +2016-07-01|49.0|-64.0|-18.96991|0.1602 +2016-07-01|49.0|-65.0|-18.79572|0.15565 +2016-07-01|49.0|-66.0|-18.58668|0.1508 +2016-07-01|49.0|-67.0|-18.34192|0.14565 +2016-07-01|49.0|-68.0|-18.06062|0.1402 +2016-07-01|49.0|-69.0|-17.74213|0.13446 +2016-07-01|49.0|-70.0|-17.38588|0.12841 +2016-07-01|49.0|-71.0|-16.99147|0.12207 +2016-07-01|49.0|-72.0|-16.55867|0.11545 +2016-07-01|49.0|-73.0|-16.0874|0.10854 +2016-07-01|49.0|-74.0|-15.5778|0.10136 +2016-07-01|49.0|-75.0|-15.03021|0.09392 +2016-07-01|49.0|-76.0|-14.44519|0.08624 +2016-07-01|49.0|-77.0|-13.82356|0.07834 +2016-07-01|49.0|-78.0|-13.16635|0.07025 +2016-07-01|49.0|-79.0|-12.47488|0.06198 +2016-07-01|49.0|-80.0|-11.75071|0.05356 +2016-07-01|49.0|-81.0|-10.99566|0.04503 +2016-07-01|49.0|-82.0|-10.21181|0.03642 +2016-07-01|49.0|-83.0|-9.40148|0.02777 +2016-07-01|49.0|-84.0|-8.56722|0.01911 +2016-07-01|49.0|-85.0|-7.71179|0.01049 +2016-07-01|49.0|-86.0|-6.83811|0.00193 +2016-07-01|49.0|-87.0|-5.9493|-0.00651 +2016-07-01|49.0|-88.0|-5.04855|-0.01481 +2016-07-01|49.0|-89.0|-4.13917|-0.02292 +2016-07-01|49.0|-90.0|-3.22449|-0.03082 +2016-07-01|49.0|-91.0|-2.30786|-0.03847 +2016-07-01|49.0|-92.0|-1.39257|-0.04586 +2016-07-01|49.0|-93.0|-0.48185|-0.05295 +2016-07-01|49.0|-94.0|0.42119|-0.05973 +2016-07-01|49.0|-95.0|1.31357|-0.06619 +2016-07-01|49.0|-96.0|2.19252|-0.07233 +2016-07-01|49.0|-97.0|3.05543|-0.07813 +2016-07-01|49.0|-98.0|3.89995|-0.08359 +2016-07-01|49.0|-99.0|4.72393|-0.08873 +2016-07-01|49.0|-100.0|5.52548|-0.09356 +2016-07-01|49.0|-101.0|6.30296|-0.09807 +2016-07-01|49.0|-102.0|7.05496|-0.10229 +2016-07-01|49.0|-103.0|7.78031|-0.10624 +2016-07-01|49.0|-104.0|8.47809|-0.10992 +2016-07-01|49.0|-105.0|9.14758|-0.11336 +2016-07-01|49.0|-106.0|9.78826|-0.11658 +2016-07-01|49.0|-107.0|10.3998|-0.11959 +2016-07-01|49.0|-108.0|10.98204|-0.12242 +2016-07-01|49.0|-109.0|11.53498|-0.12508 +2016-07-01|49.0|-110.0|12.05874|-0.1276 +2016-07-01|49.0|-111.0|12.55355|-0.12998 +2016-07-01|49.0|-112.0|13.01975|-0.13224 +2016-07-01|49.0|-113.0|13.45775|-0.1344 +2016-07-01|49.0|-114.0|13.86803|-0.13647 +2016-07-01|49.0|-115.0|14.25113|-0.13847 +2016-07-01|49.0|-116.0|14.6076|-0.14039 +2016-07-01|49.0|-117.0|14.93805|-0.14227 +2016-07-01|49.0|-118.0|15.24308|-0.14409 +2016-07-01|49.0|-119.0|15.52332|-0.14587 +2016-07-01|49.0|-120.0|15.77939|-0.14762 +2016-07-01|49.0|-121.0|16.0119|-0.14935 +2016-07-01|49.0|-122.0|16.22145|-0.15104 +2016-07-01|49.0|-123.0|16.40864|-0.15272 +2016-07-01|49.0|-124.0|16.57404|-0.15439 +2016-07-01|49.0|-125.0|16.71821|-0.15603 +2016-07-01|49.0|-126.0|16.84168|-0.15767 +2016-07-01|49.0|-127.0|16.94497|-0.15929 +2016-07-01|49.0|-128.0|17.02859|-0.1609 +2016-07-01|49.0|-129.0|17.09299|-0.1625 +2016-07-01|49.0|-130.0|17.13865|-0.16409 +2016-07-01|49.0|-131.0|17.16601|-0.16567 +2016-07-01|49.0|-132.0|17.1755|-0.16723 +2016-07-01|49.0|-133.0|17.16752|-0.16878 +2016-07-01|49.0|-134.0|17.14249|-0.17031 +2016-07-01|49.0|-135.0|17.10079|-0.17182 +2016-07-01|49.0|-136.0|17.04281|-0.17331 +2016-07-01|49.0|-137.0|16.96892|-0.17477 +2016-07-01|49.0|-138.0|16.8795|-0.1762 +2016-07-01|49.0|-139.0|16.77492|-0.17759 +2016-07-01|49.0|-140.0|16.65554|-0.17894 +2016-07-01|49.0|-141.0|16.52172|-0.18025 +2016-07-01|49.0|-142.0|16.37383|-0.18151 +2016-07-01|49.0|-143.0|16.21223|-0.1827 +2016-07-01|49.0|-144.0|16.03728|-0.18384 +2016-07-01|49.0|-145.0|15.84934|-0.1849 +2016-07-01|49.0|-146.0|15.64878|-0.18589 +2016-07-01|49.0|-147.0|15.43596|-0.18679 +2016-07-01|49.0|-148.0|15.21123|-0.18759 +2016-07-01|49.0|-149.0|14.97496|-0.1883 +2016-07-01|49.0|-150.0|14.72751|-0.18889 +2016-07-01|49.0|-151.0|14.46924|-0.18937 +2016-07-01|49.0|-152.0|14.20049|-0.18972 +2016-07-01|49.0|-153.0|13.92162|-0.18994 +2016-07-01|49.0|-154.0|13.63297|-0.19001 +2016-07-01|49.0|-155.0|13.33488|-0.18993 +2016-07-01|49.0|-156.0|13.0277|-0.1897 +2016-07-01|49.0|-157.0|12.71174|-0.18929 +2016-07-01|49.0|-158.0|12.38733|-0.18872 +2016-07-01|49.0|-159.0|12.05478|-0.18796 +2016-07-01|49.0|-160.0|11.71441|-0.18702 +2016-07-01|49.0|-161.0|11.36651|-0.18589 +2016-07-01|49.0|-162.0|11.01137|-0.18457 +2016-07-01|49.0|-163.0|10.64929|-0.18304 +2016-07-01|49.0|-164.0|10.28053|-0.18132 +2016-07-01|49.0|-165.0|9.90538|-0.17939 +2016-07-01|49.0|-166.0|9.5241|-0.17726 +2016-07-01|49.0|-167.0|9.13694|-0.17492 +2016-07-01|49.0|-168.0|8.74417|-0.17239 +2016-07-01|49.0|-169.0|8.34603|-0.16965 +2016-07-01|49.0|-170.0|7.94278|-0.16673 +2016-07-01|49.0|-171.0|7.53466|-0.16361 +2016-07-01|49.0|-172.0|7.12191|-0.16031 +2016-07-01|49.0|-173.0|6.70478|-0.15683 +2016-07-01|49.0|-174.0|6.28352|-0.15319 +2016-07-01|49.0|-175.0|5.85837|-0.14939 +2016-07-01|49.0|-176.0|5.42958|-0.14544 +2016-07-01|49.0|-177.0|4.99741|-0.14136 +2016-07-01|49.0|-178.0|4.56211|-0.13716 +2016-07-01|49.0|-179.0|4.12396|-0.13284 +2016-07-01|50.0|0.0|-0.45645|0.14132 +2016-07-01|50.0|1.0|-0.12686|0.1398 +2016-07-01|50.0|2.0|0.19615|0.13833 +2016-07-01|50.0|3.0|0.51263|0.13692 +2016-07-01|50.0|4.0|0.82268|0.13557 +2016-07-01|50.0|5.0|1.1264|0.13428 +2016-07-01|50.0|6.0|1.42394|0.13306 +2016-07-01|50.0|7.0|1.71549|0.1319 +2016-07-01|50.0|8.0|2.00125|0.13081 +2016-07-01|50.0|9.0|2.28143|0.12979 +2016-07-01|50.0|10.0|2.55628|0.12883 +2016-07-01|50.0|11.0|2.82604|0.12795 +2016-07-01|50.0|12.0|3.09097|0.12713 +2016-07-01|50.0|13.0|3.3513|0.12637 +2016-07-01|50.0|14.0|3.60729|0.12566 +2016-07-01|50.0|15.0|3.85917|0.12501 +2016-07-01|50.0|16.0|4.10716|0.12441 +2016-07-01|50.0|17.0|4.35147|0.12384 +2016-07-01|50.0|18.0|4.59226|0.12331 +2016-07-01|50.0|19.0|4.82969|0.1228 +2016-07-01|50.0|20.0|5.06388|0.12232 +2016-07-01|50.0|21.0|5.29493|0.12184 +2016-07-01|50.0|22.0|5.52288|0.12136 +2016-07-01|50.0|23.0|5.74778|0.12087 +2016-07-01|50.0|24.0|5.96961|0.12036 +2016-07-01|50.0|25.0|6.18832|0.11983 +2016-07-01|50.0|26.0|6.40385|0.11927 +2016-07-01|50.0|27.0|6.61609|0.11866 +2016-07-01|50.0|28.0|6.8249|0.11801 +2016-07-01|50.0|29.0|7.03012|0.11731 +2016-07-01|50.0|30.0|7.23157|0.11654 +2016-07-01|50.0|31.0|7.42904|0.11572 +2016-07-01|50.0|32.0|7.6223|0.11483 +2016-07-01|50.0|33.0|7.8111|0.11386 +2016-07-01|50.0|34.0|7.99521|0.11283 +2016-07-01|50.0|35.0|8.17434|0.11173 +2016-07-01|50.0|36.0|8.34823|0.11055 +2016-07-01|50.0|37.0|8.51661|0.10931 +2016-07-01|50.0|38.0|8.67921|0.10799 +2016-07-01|50.0|39.0|8.83575|0.10661 +2016-07-01|50.0|40.0|8.98596|0.10518 +2016-07-01|50.0|41.0|9.12958|0.10368 +2016-07-01|50.0|42.0|9.26635|0.10213 +2016-07-01|50.0|43.0|9.39603|0.10054 +2016-07-01|50.0|44.0|9.51836|0.09891 +2016-07-01|50.0|45.0|9.63311|0.09724 +2016-07-01|50.0|46.0|9.74006|0.09554 +2016-07-01|50.0|47.0|9.83899|0.09382 +2016-07-01|50.0|48.0|9.92968|0.09208 +2016-07-01|50.0|49.0|10.01192|0.09033 +2016-07-01|50.0|50.0|10.08551|0.08856 +2016-07-01|50.0|51.0|10.15024|0.0868 +2016-07-01|50.0|52.0|10.20592|0.08503 +2016-07-01|50.0|53.0|10.25235|0.08327 +2016-07-01|50.0|54.0|10.28933|0.08151 +2016-07-01|50.0|55.0|10.31665|0.07976 +2016-07-01|50.0|56.0|10.33412|0.07801 +2016-07-01|50.0|57.0|10.34151|0.07627 +2016-07-01|50.0|58.0|10.33862|0.07453 +2016-07-01|50.0|59.0|10.32523|0.07279 +2016-07-01|50.0|60.0|10.30111|0.07105 +2016-07-01|50.0|61.0|10.26604|0.06931 +2016-07-01|50.0|62.0|10.21978|0.06756 +2016-07-01|50.0|63.0|10.16209|0.0658 +2016-07-01|50.0|64.0|10.09275|0.06402 +2016-07-01|50.0|65.0|10.01149|0.06221 +2016-07-01|50.0|66.0|9.91808|0.06037 +2016-07-01|50.0|67.0|9.81228|0.0585 +2016-07-01|50.0|68.0|9.69384|0.05658 +2016-07-01|50.0|69.0|9.56253|0.05461 +2016-07-01|50.0|70.0|9.41812|0.05259 +2016-07-01|50.0|71.0|9.26038|0.0505 +2016-07-01|50.0|72.0|9.08911|0.04835 +2016-07-01|50.0|73.0|8.9041|0.04612 +2016-07-01|50.0|74.0|8.70516|0.04381 +2016-07-01|50.0|75.0|8.49213|0.04141 +2016-07-01|50.0|76.0|8.26486|0.03893 +2016-07-01|50.0|77.0|8.02321|0.03636 +2016-07-01|50.0|78.0|7.76708|0.03369 +2016-07-01|50.0|79.0|7.4964|0.03092 +2016-07-01|50.0|80.0|7.21111|0.02807 +2016-07-01|50.0|81.0|6.91119|0.02511 +2016-07-01|50.0|82.0|6.59666|0.02206 +2016-07-01|50.0|83.0|6.26758|0.01893 +2016-07-01|50.0|84.0|5.92403|0.0157 +2016-07-01|50.0|85.0|5.56617|0.01239 +2016-07-01|50.0|86.0|5.19416|0.00901 +2016-07-01|50.0|87.0|4.80825|0.00556 +2016-07-01|50.0|88.0|4.40873|0.00206 +2016-07-01|50.0|89.0|3.99595|-0.0015 +2016-07-01|50.0|90.0|3.5703|-0.00509 +2016-07-01|50.0|91.0|3.13228|-0.00871 +2016-07-01|50.0|92.0|2.68241|-0.01234 +2016-07-01|50.0|93.0|2.2213|-0.01596 +2016-07-01|50.0|94.0|1.74965|-0.01956 +2016-07-01|50.0|95.0|1.26821|-0.02313 +2016-07-01|50.0|96.0|0.77782|-0.02664 +2016-07-01|50.0|97.0|0.27939|-0.03009 +2016-07-01|50.0|98.0|-0.22609|-0.03344 +2016-07-01|50.0|99.0|-0.73756|-0.03669 +2016-07-01|50.0|100.0|-1.25385|-0.03981 +2016-07-01|50.0|101.0|-1.77378|-0.04279 +2016-07-01|50.0|102.0|-2.29604|-0.04561 +2016-07-01|50.0|103.0|-2.81931|-0.04825 +2016-07-01|50.0|104.0|-3.34218|-0.05071 +2016-07-01|50.0|105.0|-3.86321|-0.05295 +2016-07-01|50.0|106.0|-4.38092|-0.05498 +2016-07-01|50.0|107.0|-4.89379|-0.05678 +2016-07-01|50.0|108.0|-5.4003|-0.05834 +2016-07-01|50.0|109.0|-5.8989|-0.05965 +2016-07-01|50.0|110.0|-6.38808|-0.06071 +2016-07-01|50.0|111.0|-6.86632|-0.06152 +2016-07-01|50.0|112.0|-7.33212|-0.06207 +2016-07-01|50.0|113.0|-7.78404|-0.06237 +2016-07-01|50.0|114.0|-8.2207|-0.06242 +2016-07-01|50.0|115.0|-8.64075|-0.06223 +2016-07-01|50.0|116.0|-9.04294|-0.0618 +2016-07-01|50.0|117.0|-9.42609|-0.06115 +2016-07-01|50.0|118.0|-9.7891|-0.06028 +2016-07-01|50.0|119.0|-10.13097|-0.05922 +2016-07-01|50.0|120.0|-10.45081|-0.05797 +2016-07-01|50.0|121.0|-10.74782|-0.05655 +2016-07-01|50.0|122.0|-11.02132|-0.05498 +2016-07-01|50.0|123.0|-11.27071|-0.05328 +2016-07-01|50.0|124.0|-11.49552|-0.05146 +2016-07-01|50.0|125.0|-11.69539|-0.04955 +2016-07-01|50.0|126.0|-11.87004|-0.04756 +2016-07-01|50.0|127.0|-12.01931|-0.04552 +2016-07-01|50.0|128.0|-12.14314|-0.04344 +2016-07-01|50.0|129.0|-12.24155|-0.04135 +2016-07-01|50.0|130.0|-12.31466|-0.03926 +2016-07-01|50.0|131.0|-12.36265|-0.03719 +2016-07-01|50.0|132.0|-12.38581|-0.03516 +2016-07-01|50.0|133.0|-12.38449|-0.03319 +2016-07-01|50.0|134.0|-12.35908|-0.0313 +2016-07-01|50.0|135.0|-12.31005|-0.0295 +2016-07-01|50.0|136.0|-12.23794|-0.0278 +2016-07-01|50.0|137.0|-12.14331|-0.02623 +2016-07-01|50.0|138.0|-12.02678|-0.02479 +2016-07-01|50.0|139.0|-11.88897|-0.0235 +2016-07-01|50.0|140.0|-11.73058|-0.02237 +2016-07-01|50.0|141.0|-11.5523|-0.02142 +2016-07-01|50.0|142.0|-11.35486|-0.02064 +2016-07-01|50.0|143.0|-11.13898|-0.02006 +2016-07-01|50.0|144.0|-10.90543|-0.01968 +2016-07-01|50.0|145.0|-10.65495|-0.0195 +2016-07-01|50.0|146.0|-10.38831|-0.01954 +2016-07-01|50.0|147.0|-10.10626|-0.0198 +2016-07-01|50.0|148.0|-9.80957|-0.02028 +2016-07-01|50.0|149.0|-9.49897|-0.02099 +2016-07-01|50.0|150.0|-9.17523|-0.02193 +2016-07-01|50.0|151.0|-8.83906|-0.0231 +2016-07-01|50.0|152.0|-8.4912|-0.0245 +2016-07-01|50.0|153.0|-8.13234|-0.02614 +2016-07-01|50.0|154.0|-7.76319|-0.02801 +2016-07-01|50.0|155.0|-7.38443|-0.03011 +2016-07-01|50.0|156.0|-6.9967|-0.03243 +2016-07-01|50.0|157.0|-6.60066|-0.03498 +2016-07-01|50.0|158.0|-6.19693|-0.03774 +2016-07-01|50.0|159.0|-5.78612|-0.04071 +2016-07-01|50.0|160.0|-5.36881|-0.04389 +2016-07-01|50.0|161.0|-4.94558|-0.04726 +2016-07-01|50.0|162.0|-4.51698|-0.05082 +2016-07-01|50.0|163.0|-4.08353|-0.05456 +2016-07-01|50.0|164.0|-3.64575|-0.05847 +2016-07-01|50.0|165.0|-3.20414|-0.06253 +2016-07-01|50.0|166.0|-2.75917|-0.06673 +2016-07-01|50.0|167.0|-2.31131|-0.07107 +2016-07-01|50.0|168.0|-1.86101|-0.07552 +2016-07-01|50.0|169.0|-1.40869|-0.08008 +2016-07-01|50.0|170.0|-0.95477|-0.08473 +2016-07-01|50.0|171.0|-0.49965|-0.08945 +2016-07-01|50.0|172.0|-0.04371|-0.09424 +2016-07-01|50.0|173.0|0.41267|-0.09906 +2016-07-01|50.0|174.0|0.86913|-0.10391 +2016-07-01|50.0|175.0|1.32534|-0.10878 +2016-07-01|50.0|176.0|1.78094|-0.11363 +2016-07-01|50.0|177.0|2.23563|-0.11847 +2016-07-01|50.0|178.0|2.68907|-0.12327 +2016-07-01|50.0|179.0|3.14097|-0.12802 +2016-07-01|50.0|-1.0|-0.79261|0.14288 +2016-07-01|50.0|-2.0|-1.13532|0.14448 +2016-07-01|50.0|-3.0|-1.48449|0.14613 +2016-07-01|50.0|-4.0|-1.84002|0.1478 +2016-07-01|50.0|-5.0|-2.20175|0.1495 +2016-07-01|50.0|-6.0|-2.56948|0.15122 +2016-07-01|50.0|-7.0|-2.94297|0.15296 +2016-07-01|50.0|-8.0|-3.32196|0.15472 +2016-07-01|50.0|-9.0|-3.70614|0.15648 +2016-07-01|50.0|-10.0|-4.09517|0.15825 +2016-07-01|50.0|-11.0|-4.48871|0.16002 +2016-07-01|50.0|-12.0|-4.88637|0.16179 +2016-07-01|50.0|-13.0|-5.28774|0.16356 +2016-07-01|50.0|-14.0|-5.69241|0.16532 +2016-07-01|50.0|-15.0|-6.09994|0.16707 +2016-07-01|50.0|-16.0|-6.50991|0.16881 +2016-07-01|50.0|-17.0|-6.92187|0.17054 +2016-07-01|50.0|-18.0|-7.33537|0.17225 +2016-07-01|50.0|-19.0|-7.74996|0.17395 +2016-07-01|50.0|-20.0|-8.16521|0.17564 +2016-07-01|50.0|-21.0|-8.58068|0.17731 +2016-07-01|50.0|-22.0|-8.99593|0.17896 +2016-07-01|50.0|-23.0|-9.41054|0.18059 +2016-07-01|50.0|-24.0|-9.82409|0.1822 +2016-07-01|50.0|-25.0|-10.23617|0.18379 +2016-07-01|50.0|-26.0|-10.64637|0.18535 +2016-07-01|50.0|-27.0|-11.0543|0.18688 +2016-07-01|50.0|-28.0|-11.45955|0.18838 +2016-07-01|50.0|-29.0|-11.86173|0.18985 +2016-07-01|50.0|-30.0|-12.26044|0.19128 +2016-07-01|50.0|-31.0|-12.65528|0.19267 +2016-07-01|50.0|-32.0|-13.04583|0.19401 +2016-07-01|50.0|-33.0|-13.43168|0.1953 +2016-07-01|50.0|-34.0|-13.8124|0.19654 +2016-07-01|50.0|-35.0|-14.18752|0.19771 +2016-07-01|50.0|-36.0|-14.55657|0.19881 +2016-07-01|50.0|-37.0|-14.91906|0.19983 +2016-07-01|50.0|-38.0|-15.27446|0.20078 +2016-07-01|50.0|-39.0|-15.62219|0.20163 +2016-07-01|50.0|-40.0|-15.96168|0.20239 +2016-07-01|50.0|-41.0|-16.29228|0.20303 +2016-07-01|50.0|-42.0|-16.61334|0.20357 +2016-07-01|50.0|-43.0|-16.92412|0.20398 +2016-07-01|50.0|-44.0|-17.22388|0.20427 +2016-07-01|50.0|-45.0|-17.51183|0.20442 +2016-07-01|50.0|-46.0|-17.7871|0.20441 +2016-07-01|50.0|-47.0|-18.04883|0.20426 +2016-07-01|50.0|-48.0|-18.29606|0.20394 +2016-07-01|50.0|-49.0|-18.52784|0.20345 +2016-07-01|50.0|-50.0|-18.74313|0.20278 +2016-07-01|50.0|-51.0|-18.94089|0.20192 +2016-07-01|50.0|-52.0|-19.12002|0.20087 +2016-07-01|50.0|-53.0|-19.27938|0.19961 +2016-07-01|50.0|-54.0|-19.41783|0.19814 +2016-07-01|50.0|-55.0|-19.53418|0.19644 +2016-07-01|50.0|-56.0|-19.62721|0.19452 +2016-07-01|50.0|-57.0|-19.6957|0.19236 +2016-07-01|50.0|-58.0|-19.73843|0.18996 +2016-07-01|50.0|-59.0|-19.75414|0.1873 +2016-07-01|50.0|-60.0|-19.74161|0.18438 +2016-07-01|50.0|-61.0|-19.6996|0.18119 +2016-07-01|50.0|-62.0|-19.62692|0.17773 +2016-07-01|50.0|-63.0|-19.52239|0.17398 +2016-07-01|50.0|-64.0|-19.38487|0.16994 +2016-07-01|50.0|-65.0|-19.21328|0.16561 +2016-07-01|50.0|-66.0|-19.00659|0.16098 +2016-07-01|50.0|-67.0|-18.76388|0.15603 +2016-07-01|50.0|-68.0|-18.48429|0.15078 +2016-07-01|50.0|-69.0|-18.16708|0.14522 +2016-07-01|50.0|-70.0|-17.81164|0.13934 +2016-07-01|50.0|-71.0|-17.41748|0.13315 +2016-07-01|50.0|-72.0|-16.9843|0.12664 +2016-07-01|50.0|-73.0|-16.51195|0.11984 +2016-07-01|50.0|-74.0|-16.00049|0.11273 +2016-07-01|50.0|-75.0|-15.45018|0.10534 +2016-07-01|50.0|-76.0|-14.86152|0.09767 +2016-07-01|50.0|-77.0|-14.23523|0.08974 +2016-07-01|50.0|-78.0|-13.5723|0.08158 +2016-07-01|50.0|-79.0|-12.87398|0.0732 +2016-07-01|50.0|-80.0|-12.14179|0.06464 +2016-07-01|50.0|-81.0|-11.3775|0.05592 +2016-07-01|50.0|-82.0|-10.58317|0.04707 +2016-07-01|50.0|-83.0|-9.7611|0.03814 +2016-07-01|50.0|-84.0|-8.91385|0.02915 +2016-07-01|50.0|-85.0|-8.04418|0.02016 +2016-07-01|50.0|-86.0|-7.15508|0.01119 +2016-07-01|50.0|-87.0|-6.24969|0.0023 +2016-07-01|50.0|-88.0|-5.33129|-0.00649 +2016-07-01|50.0|-89.0|-4.40325|-0.01513 +2016-07-01|50.0|-90.0|-3.46902|-0.02358 +2016-07-01|50.0|-91.0|-2.53202|-0.03182 +2016-07-01|50.0|-92.0|-1.5957|-0.0398 +2016-07-01|50.0|-93.0|-0.6634|-0.04751 +2016-07-01|50.0|-94.0|0.26164|-0.05493 +2016-07-01|50.0|-95.0|1.17632|-0.06203 +2016-07-01|50.0|-96.0|2.07771|-0.0688 +2016-07-01|50.0|-97.0|2.9631|-0.07524 +2016-07-01|50.0|-98.0|3.82999|-0.08134 +2016-07-01|50.0|-99.0|4.67612|-0.08711 +2016-07-01|50.0|-100.0|5.4995|-0.09255 +2016-07-01|50.0|-101.0|6.29836|-0.09767 +2016-07-01|50.0|-102.0|7.07122|-0.10248 +2016-07-01|50.0|-103.0|7.81682|-0.10699 +2016-07-01|50.0|-104.0|8.53416|-0.11122 +2016-07-01|50.0|-105.0|9.22245|-0.11519 +2016-07-01|50.0|-106.0|9.88113|-0.11891 +2016-07-01|50.0|-107.0|10.50983|-0.12241 +2016-07-01|50.0|-108.0|11.10835|-0.1257 +2016-07-01|50.0|-109.0|11.67666|-0.12881 +2016-07-01|50.0|-110.0|12.21485|-0.13174 +2016-07-01|50.0|-111.0|12.72316|-0.13452 +2016-07-01|50.0|-112.0|13.20191|-0.13715 +2016-07-01|50.0|-113.0|13.65152|-0.13967 +2016-07-01|50.0|-114.0|14.07247|-0.14208 +2016-07-01|50.0|-115.0|14.4653|-0.14439 +2016-07-01|50.0|-116.0|14.83059|-0.14662 +2016-07-01|50.0|-117.0|15.16895|-0.14878 +2016-07-01|50.0|-118.0|15.48102|-0.15087 +2016-07-01|50.0|-119.0|15.76743|-0.1529 +2016-07-01|50.0|-120.0|16.02883|-0.15489 +2016-07-01|50.0|-121.0|16.26586|-0.15683 +2016-07-01|50.0|-122.0|16.47915|-0.15874 +2016-07-01|50.0|-123.0|16.66933|-0.16061 +2016-07-01|50.0|-124.0|16.83699|-0.16246 +2016-07-01|50.0|-125.0|16.98272|-0.16427 +2016-07-01|50.0|-126.0|17.1071|-0.16607 +2016-07-01|50.0|-127.0|17.21066|-0.16784 +2016-07-01|50.0|-128.0|17.29394|-0.16958 +2016-07-01|50.0|-129.0|17.35744|-0.17131 +2016-07-01|50.0|-130.0|17.40166|-0.17301 +2016-07-01|50.0|-131.0|17.42706|-0.17469 +2016-07-01|50.0|-132.0|17.4341|-0.17635 +2016-07-01|50.0|-133.0|17.42323|-0.17798 +2016-07-01|50.0|-134.0|17.39488|-0.17958 +2016-07-01|50.0|-135.0|17.34945|-0.18116 +2016-07-01|50.0|-136.0|17.28737|-0.1827 +2016-07-01|50.0|-137.0|17.20903|-0.1842 +2016-07-01|50.0|-138.0|17.11482|-0.18566 +2016-07-01|50.0|-139.0|17.00513|-0.18707 +2016-07-01|50.0|-140.0|16.88035|-0.18843 +2016-07-01|50.0|-141.0|16.74085|-0.18974 +2016-07-01|50.0|-142.0|16.58702|-0.19099 +2016-07-01|50.0|-143.0|16.41924|-0.19216 +2016-07-01|50.0|-144.0|16.23787|-0.19327 +2016-07-01|50.0|-145.0|16.0433|-0.19429 +2016-07-01|50.0|-146.0|15.83589|-0.19523 +2016-07-01|50.0|-147.0|15.61602|-0.19607 +2016-07-01|50.0|-148.0|15.38406|-0.19681 +2016-07-01|50.0|-149.0|15.14038|-0.19743 +2016-07-01|50.0|-150.0|14.88535|-0.19794 +2016-07-01|50.0|-151.0|14.61934|-0.19832 +2016-07-01|50.0|-152.0|14.34269|-0.19857 +2016-07-01|50.0|-153.0|14.05579|-0.19867 +2016-07-01|50.0|-154.0|13.75897|-0.19863 +2016-07-01|50.0|-155.0|13.45259|-0.19842 +2016-07-01|50.0|-156.0|13.137|-0.19806 +2016-07-01|50.0|-157.0|12.81254|-0.19752 +2016-07-01|50.0|-158.0|12.47953|-0.1968 +2016-07-01|50.0|-159.0|12.13831|-0.19589 +2016-07-01|50.0|-160.0|11.7892|-0.1948 +2016-07-01|50.0|-161.0|11.4325|-0.19351 +2016-07-01|50.0|-162.0|11.06854|-0.19202 +2016-07-01|50.0|-163.0|10.69759|-0.19033 +2016-07-01|50.0|-164.0|10.31997|-0.18844 +2016-07-01|50.0|-165.0|9.93596|-0.18634 +2016-07-01|50.0|-166.0|9.54583|-0.18404 +2016-07-01|50.0|-167.0|9.14987|-0.18154 +2016-07-01|50.0|-168.0|8.74834|-0.17883 +2016-07-01|50.0|-169.0|8.34152|-0.17592 +2016-07-01|50.0|-170.0|7.92965|-0.17281 +2016-07-01|50.0|-171.0|7.51301|-0.16952 +2016-07-01|50.0|-172.0|7.09186|-0.16604 +2016-07-01|50.0|-173.0|6.66644|-0.16238 +2016-07-01|50.0|-174.0|6.23702|-0.15856 +2016-07-01|50.0|-175.0|5.80385|-0.15458 +2016-07-01|50.0|-176.0|5.3672|-0.15045 +2016-07-01|50.0|-177.0|4.92732|-0.14619 +2016-07-01|50.0|-178.0|4.48449|-0.1418 +2016-07-01|50.0|-179.0|4.03897|-0.1373 +2016-07-01|51.0|0.0|-0.56106|0.14483 +2016-07-01|51.0|1.0|-0.22131|0.14331 +2016-07-01|51.0|2.0|0.11216|0.14183 +2016-07-01|51.0|3.0|0.43938|0.14041 +2016-07-01|51.0|4.0|0.76042|0.13905 +2016-07-01|51.0|5.0|1.07539|0.13774 +2016-07-01|51.0|6.0|1.38442|0.1365 +2016-07-01|51.0|7.0|1.68767|0.13533 +2016-07-01|51.0|8.0|1.98531|0.13422 +2016-07-01|51.0|9.0|2.27756|0.13317 +2016-07-01|51.0|10.0|2.56463|0.13219 +2016-07-01|51.0|11.0|2.84673|0.13127 +2016-07-01|51.0|12.0|3.12411|0.13042 +2016-07-01|51.0|13.0|3.39699|0.12962 +2016-07-01|51.0|14.0|3.6656|0.12888 +2016-07-01|51.0|15.0|3.93016|0.12819 +2016-07-01|51.0|16.0|4.19087|0.12754 +2016-07-01|51.0|17.0|4.44791|0.12693 +2016-07-01|51.0|18.0|4.70146|0.12635 +2016-07-01|51.0|19.0|4.95166|0.1258 +2016-07-01|51.0|20.0|5.19863|0.12526 +2016-07-01|51.0|21.0|5.44244|0.12473 +2016-07-01|51.0|22.0|5.68317|0.12421 +2016-07-01|51.0|23.0|5.92083|0.12367 +2016-07-01|51.0|24.0|6.15543|0.12313 +2016-07-01|51.0|25.0|6.38691|0.12256 +2016-07-01|51.0|26.0|6.61522|0.12196 +2016-07-01|51.0|27.0|6.84025|0.12132 +2016-07-01|51.0|28.0|7.06188|0.12064 +2016-07-01|51.0|29.0|7.27994|0.11992 +2016-07-01|51.0|30.0|7.49426|0.11913 +2016-07-01|51.0|31.0|7.70463|0.11829 +2016-07-01|51.0|32.0|7.91082|0.11739 +2016-07-01|51.0|33.0|8.11261|0.11642 +2016-07-01|51.0|34.0|8.30972|0.11539 +2016-07-01|51.0|35.0|8.5019|0.11429 +2016-07-01|51.0|36.0|8.68885|0.11312 +2016-07-01|51.0|37.0|8.87031|0.11188 +2016-07-01|51.0|38.0|9.04599|0.11058 +2016-07-01|51.0|39.0|9.21558|0.10922 +2016-07-01|51.0|40.0|9.37881|0.10779 +2016-07-01|51.0|41.0|9.53539|0.10631 +2016-07-01|51.0|42.0|9.68502|0.10477 +2016-07-01|51.0|43.0|9.82743|0.10319 +2016-07-01|51.0|44.0|9.96235|0.10156 +2016-07-01|51.0|45.0|10.08949|0.0999 +2016-07-01|51.0|46.0|10.20861|0.0982 +2016-07-01|51.0|47.0|10.31942|0.09647 +2016-07-01|51.0|48.0|10.42168|0.09472 +2016-07-01|51.0|49.0|10.51514|0.09294 +2016-07-01|51.0|50.0|10.59955|0.09115 +2016-07-01|51.0|51.0|10.67466|0.08935 +2016-07-01|51.0|52.0|10.74023|0.08754 +2016-07-01|51.0|53.0|10.79602|0.08572 +2016-07-01|51.0|54.0|10.84177|0.0839 +2016-07-01|51.0|55.0|10.87726|0.08207 +2016-07-01|51.0|56.0|10.90223|0.08024 +2016-07-01|51.0|57.0|10.91643|0.0784 +2016-07-01|51.0|58.0|10.91963|0.07656 +2016-07-01|51.0|59.0|10.91155|0.07471 +2016-07-01|51.0|60.0|10.89195|0.07285 +2016-07-01|51.0|61.0|10.86057|0.07098 +2016-07-01|51.0|62.0|10.81715|0.06909 +2016-07-01|51.0|63.0|10.76142|0.06718 +2016-07-01|51.0|64.0|10.69313|0.06524 +2016-07-01|51.0|65.0|10.612|0.06327 +2016-07-01|51.0|66.0|10.51778|0.06127 +2016-07-01|51.0|67.0|10.4102|0.05922 +2016-07-01|51.0|68.0|10.28901|0.05712 +2016-07-01|51.0|69.0|10.15396|0.05496 +2016-07-01|51.0|70.0|10.00482|0.05275 +2016-07-01|51.0|71.0|9.84133|0.05047 +2016-07-01|51.0|72.0|9.6633|0.04812 +2016-07-01|51.0|73.0|9.47051|0.04569 +2016-07-01|51.0|74.0|9.26277|0.04318 +2016-07-01|51.0|75.0|9.03991|0.04058 +2016-07-01|51.0|76.0|8.80178|0.0379 +2016-07-01|51.0|77.0|8.54826|0.03512 +2016-07-01|51.0|78.0|8.27925|0.03226 +2016-07-01|51.0|79.0|7.99468|0.02929 +2016-07-01|51.0|80.0|7.69451|0.02624 +2016-07-01|51.0|81.0|7.37875|0.02309 +2016-07-01|51.0|82.0|7.04742|0.01986 +2016-07-01|51.0|83.0|6.70062|0.01653 +2016-07-01|51.0|84.0|6.33847|0.01313 +2016-07-01|51.0|85.0|5.96113|0.00965 +2016-07-01|51.0|86.0|5.56884|0.00611 +2016-07-01|51.0|87.0|5.16188|0.00251 +2016-07-01|51.0|88.0|4.7406|-0.00115 +2016-07-01|51.0|89.0|4.30539|-0.00483 +2016-07-01|51.0|90.0|3.85674|-0.00855 +2016-07-01|51.0|91.0|3.39517|-0.01227 +2016-07-01|51.0|92.0|2.92132|-0.01599 +2016-07-01|51.0|93.0|2.43587|-0.01969 +2016-07-01|51.0|94.0|1.93959|-0.02335 +2016-07-01|51.0|95.0|1.43333|-0.02696 +2016-07-01|51.0|96.0|0.91802|-0.03049 +2016-07-01|51.0|97.0|0.39467|-0.03394 +2016-07-01|51.0|98.0|-0.13563|-0.03728 +2016-07-01|51.0|99.0|-0.67171|-0.04048 +2016-07-01|51.0|100.0|-1.21235|-0.04355 +2016-07-01|51.0|101.0|-1.75621|-0.04644 +2016-07-01|51.0|102.0|-2.30193|-0.04916 +2016-07-01|51.0|103.0|-2.84808|-0.05168 +2016-07-01|51.0|104.0|-3.39316|-0.05398 +2016-07-01|51.0|105.0|-3.93566|-0.05607 +2016-07-01|51.0|106.0|-4.47402|-0.05791 +2016-07-01|51.0|107.0|-5.00666|-0.05951 +2016-07-01|51.0|108.0|-5.532|-0.06085 +2016-07-01|51.0|109.0|-6.04844|-0.06193 +2016-07-01|51.0|110.0|-6.55442|-0.06275 +2016-07-01|51.0|111.0|-7.04839|-0.0633 +2016-07-01|51.0|112.0|-7.52884|-0.06359 +2016-07-01|51.0|113.0|-7.99433|-0.06362 +2016-07-01|51.0|114.0|-8.44344|-0.06339 +2016-07-01|51.0|115.0|-8.87486|-0.06292 +2016-07-01|51.0|116.0|-9.28735|-0.06222 +2016-07-01|51.0|117.0|-9.67973|-0.06129 +2016-07-01|51.0|118.0|-10.05096|-0.06015 +2016-07-01|51.0|119.0|-10.40006|-0.05882 +2016-07-01|51.0|120.0|-10.72617|-0.05731 +2016-07-01|51.0|121.0|-11.02855|-0.05564 +2016-07-01|51.0|122.0|-11.30656|-0.05383 +2016-07-01|51.0|123.0|-11.55965|-0.0519 +2016-07-01|51.0|124.0|-11.78741|-0.04987 +2016-07-01|51.0|125.0|-11.98951|-0.04775 +2016-07-01|51.0|126.0|-12.16575|-0.04558 +2016-07-01|51.0|127.0|-12.316|-0.04337 +2016-07-01|51.0|128.0|-12.44025|-0.04113 +2016-07-01|51.0|129.0|-12.53858|-0.0389 +2016-07-01|51.0|130.0|-12.61114|-0.03669 +2016-07-01|51.0|131.0|-12.65818|-0.03451 +2016-07-01|51.0|132.0|-12.68001|-0.0324 +2016-07-01|51.0|133.0|-12.67701|-0.03035 +2016-07-01|51.0|134.0|-12.64963|-0.0284 +2016-07-01|51.0|135.0|-12.59836|-0.02656 +2016-07-01|51.0|136.0|-12.52378|-0.02484 +2016-07-01|51.0|137.0|-12.42646|-0.02326 +2016-07-01|51.0|138.0|-12.30704|-0.02183 +2016-07-01|51.0|139.0|-12.16619|-0.02056 +2016-07-01|51.0|140.0|-12.00462|-0.01947 +2016-07-01|51.0|141.0|-11.82303|-0.01857 +2016-07-01|51.0|142.0|-11.62216|-0.01786 +2016-07-01|51.0|143.0|-11.40276|-0.01736 +2016-07-01|51.0|144.0|-11.16559|-0.01707 +2016-07-01|51.0|145.0|-10.91143|-0.017 +2016-07-01|51.0|146.0|-10.64102|-0.01715 +2016-07-01|51.0|147.0|-10.35515|-0.01754 +2016-07-01|51.0|148.0|-10.05457|-0.01816 +2016-07-01|51.0|149.0|-9.74005|-0.01902 +2016-07-01|51.0|150.0|-9.41232|-0.02012 +2016-07-01|51.0|151.0|-9.07212|-0.02146 +2016-07-01|51.0|152.0|-8.72018|-0.02304 +2016-07-01|51.0|153.0|-8.3572|-0.02486 +2016-07-01|51.0|154.0|-7.98389|-0.02691 +2016-07-01|51.0|155.0|-7.6009|-0.02921 +2016-07-01|51.0|156.0|-7.20892|-0.03173 +2016-07-01|51.0|157.0|-6.80857|-0.03448 +2016-07-01|51.0|158.0|-6.40048|-0.03745 +2016-07-01|51.0|159.0|-5.98524|-0.04064 +2016-07-01|51.0|160.0|-5.56346|-0.04403 +2016-07-01|51.0|161.0|-5.13568|-0.04762 +2016-07-01|51.0|162.0|-4.70247|-0.0514 +2016-07-01|51.0|163.0|-4.26433|-0.05536 +2016-07-01|51.0|164.0|-3.82179|-0.05948 +2016-07-01|51.0|165.0|-3.37533|-0.06377 +2016-07-01|51.0|166.0|-2.92542|-0.06819 +2016-07-01|51.0|167.0|-2.47253|-0.07275 +2016-07-01|51.0|168.0|-2.01708|-0.07742 +2016-07-01|51.0|169.0|-1.55951|-0.08219 +2016-07-01|51.0|170.0|-1.10022|-0.08705 +2016-07-01|51.0|171.0|-0.6396|-0.09199 +2016-07-01|51.0|172.0|-0.17804|-0.09698 +2016-07-01|51.0|173.0|0.2841|-0.10201 +2016-07-01|51.0|174.0|0.74646|-0.10707 +2016-07-01|51.0|175.0|1.20871|-0.11214 +2016-07-01|51.0|176.0|1.67051|-0.1172 +2016-07-01|51.0|177.0|2.13154|-0.12224 +2016-07-01|51.0|178.0|2.59149|-0.12724 +2016-07-01|51.0|179.0|3.05004|-0.13218 +2016-07-01|51.0|-1.0|-0.90708|0.14641 +2016-07-01|51.0|-2.0|-1.25935|0.14802 +2016-07-01|51.0|-3.0|-1.61778|0.14968 +2016-07-01|51.0|-4.0|-1.98226|0.15136 +2016-07-01|51.0|-5.0|-2.35264|0.15308 +2016-07-01|51.0|-6.0|-2.72871|0.15482 +2016-07-01|51.0|-7.0|-3.11026|0.15658 +2016-07-01|51.0|-8.0|-3.49703|0.15836 +2016-07-01|51.0|-9.0|-3.88872|0.16015 +2016-07-01|51.0|-10.0|-4.28502|0.16195 +2016-07-01|51.0|-11.0|-4.68558|0.16375 +2016-07-01|51.0|-12.0|-5.09005|0.16556 +2016-07-01|51.0|-13.0|-5.49803|0.16737 +2016-07-01|51.0|-14.0|-5.90913|0.16918 +2016-07-01|51.0|-15.0|-6.32293|0.17098 +2016-07-01|51.0|-16.0|-6.73902|0.17277 +2016-07-01|51.0|-17.0|-7.15698|0.17456 +2016-07-01|51.0|-18.0|-7.57636|0.17633 +2016-07-01|51.0|-19.0|-7.99674|0.1781 +2016-07-01|51.0|-20.0|-8.4177|0.17985 +2016-07-01|51.0|-21.0|-8.83881|0.18158 +2016-07-01|51.0|-22.0|-9.25964|0.1833 +2016-07-01|51.0|-23.0|-9.67977|0.185 +2016-07-01|51.0|-24.0|-10.09881|0.18668 +2016-07-01|51.0|-25.0|-10.51633|0.18834 +2016-07-01|51.0|-26.0|-10.93193|0.18998 +2016-07-01|51.0|-27.0|-11.34522|0.19159 +2016-07-01|51.0|-28.0|-11.7558|0.19317 +2016-07-01|51.0|-29.0|-12.16326|0.19472 +2016-07-01|51.0|-30.0|-12.56721|0.19622 +2016-07-01|51.0|-31.0|-12.96723|0.19769 +2016-07-01|51.0|-32.0|-13.36291|0.19912 +2016-07-01|51.0|-33.0|-13.75383|0.20049 +2016-07-01|51.0|-34.0|-14.13954|0.20181 +2016-07-01|51.0|-35.0|-14.51958|0.20307 +2016-07-01|51.0|-36.0|-14.89348|0.20426 +2016-07-01|51.0|-37.0|-15.26072|0.20538 +2016-07-01|51.0|-38.0|-15.62077|0.20642 +2016-07-01|51.0|-39.0|-15.97308|0.20737 +2016-07-01|51.0|-40.0|-16.31704|0.20823 +2016-07-01|51.0|-41.0|-16.65202|0.20899 +2016-07-01|51.0|-42.0|-16.97735|0.20964 +2016-07-01|51.0|-43.0|-17.29233|0.21018 +2016-07-01|51.0|-44.0|-17.59619|0.21059 +2016-07-01|51.0|-45.0|-17.88815|0.21087 +2016-07-01|51.0|-46.0|-18.16736|0.21101 +2016-07-01|51.0|-47.0|-18.43295|0.211 +2016-07-01|51.0|-48.0|-18.68399|0.21084 +2016-07-01|51.0|-49.0|-18.91951|0.21051 +2016-07-01|51.0|-50.0|-19.1385|0.21001 +2016-07-01|51.0|-51.0|-19.33992|0.20933 +2016-07-01|51.0|-52.0|-19.52267|0.20847 +2016-07-01|51.0|-53.0|-19.68564|0.2074 +2016-07-01|51.0|-54.0|-19.82767|0.20613 +2016-07-01|51.0|-55.0|-19.94758|0.20465 +2016-07-01|51.0|-56.0|-20.04415|0.20295 +2016-07-01|51.0|-57.0|-20.11617|0.20101 +2016-07-01|51.0|-58.0|-20.16239|0.19883 +2016-07-01|51.0|-59.0|-20.18156|0.19641 +2016-07-01|51.0|-60.0|-20.17243|0.19373 +2016-07-01|51.0|-61.0|-20.13375|0.19078 +2016-07-01|51.0|-62.0|-20.06431|0.18756 +2016-07-01|51.0|-63.0|-19.96288|0.18405 +2016-07-01|51.0|-64.0|-19.82831|0.18026 +2016-07-01|51.0|-65.0|-19.65946|0.17616 +2016-07-01|51.0|-66.0|-19.45527|0.17175 +2016-07-01|51.0|-67.0|-19.21475|0.16703 +2016-07-01|51.0|-68.0|-18.937|0.16199 +2016-07-01|51.0|-69.0|-18.62119|0.15662 +2016-07-01|51.0|-70.0|-18.26666|0.15093 +2016-07-01|51.0|-71.0|-17.87286|0.1449 +2016-07-01|51.0|-72.0|-17.43938|0.13854 +2016-07-01|51.0|-73.0|-16.96601|0.13184 +2016-07-01|51.0|-74.0|-16.45272|0.12483 +2016-07-01|51.0|-75.0|-15.89969|0.11749 +2016-07-01|51.0|-76.0|-15.30735|0.10984 +2016-07-01|51.0|-77.0|-14.67633|0.1019 +2016-07-01|51.0|-78.0|-14.00756|0.09368 +2016-07-01|51.0|-79.0|-13.30221|0.0852 +2016-07-01|51.0|-80.0|-12.56175|0.07649 +2016-07-01|51.0|-81.0|-11.78791|0.06757 +2016-07-01|51.0|-82.0|-10.98271|0.05849 +2016-07-01|51.0|-83.0|-10.14844|0.04926 +2016-07-01|51.0|-84.0|-9.28765|0.03993 +2016-07-01|51.0|-85.0|-8.40312|0.03055 +2016-07-01|51.0|-86.0|-7.49787|0.02115 +2016-07-01|51.0|-87.0|-6.57509|0.01177 +2016-07-01|51.0|-88.0|-5.63812|0.00246 +2016-07-01|51.0|-89.0|-4.69044|-0.00674 +2016-07-01|51.0|-90.0|-3.73557|-0.01579 +2016-07-01|51.0|-91.0|-2.77708|-0.02465 +2016-07-01|51.0|-92.0|-1.81851|-0.03328 +2016-07-01|51.0|-93.0|-0.86336|-0.04166 +2016-07-01|51.0|-94.0|0.085|-0.04976 +2016-07-01|51.0|-95.0|1.02332|-0.05756 +2016-07-01|51.0|-96.0|1.94853|-0.06503 +2016-07-01|51.0|-97.0|2.85778|-0.07217 +2016-07-01|51.0|-98.0|3.74843|-0.07897 +2016-07-01|51.0|-99.0|4.61809|-0.08542 +2016-07-01|51.0|-100.0|5.46463|-0.09154 +2016-07-01|51.0|-101.0|6.28619|-0.09731 +2016-07-01|51.0|-102.0|7.08117|-0.10276 +2016-07-01|51.0|-103.0|7.84823|-0.1079 +2016-07-01|51.0|-104.0|8.58628|-0.11273 +2016-07-01|51.0|-105.0|9.29447|-0.11727 +2016-07-01|51.0|-106.0|9.97218|-0.12155 +2016-07-01|51.0|-107.0|10.61898|-0.12558 +2016-07-01|51.0|-108.0|11.23464|-0.12937 +2016-07-01|51.0|-109.0|11.81911|-0.13295 +2016-07-01|51.0|-110.0|12.37246|-0.13634 +2016-07-01|51.0|-111.0|12.89491|-0.13955 +2016-07-01|51.0|-112.0|13.38678|-0.14259 +2016-07-01|51.0|-113.0|13.84848|-0.14549 +2016-07-01|51.0|-114.0|14.28052|-0.14826 +2016-07-01|51.0|-115.0|14.68343|-0.15092 +2016-07-01|51.0|-116.0|15.05783|-0.15347 +2016-07-01|51.0|-117.0|15.40433|-0.15592 +2016-07-01|51.0|-118.0|15.72359|-0.1583 +2016-07-01|51.0|-119.0|16.01629|-0.1606 +2016-07-01|51.0|-120.0|16.28309|-0.16283 +2016-07-01|51.0|-121.0|16.52466|-0.165 +2016-07-01|51.0|-122.0|16.74167|-0.16713 +2016-07-01|51.0|-123.0|16.93477|-0.1692 +2016-07-01|51.0|-124.0|17.1046|-0.17123 +2016-07-01|51.0|-125.0|17.25177|-0.17322 +2016-07-01|51.0|-126.0|17.3769|-0.17517 +2016-07-01|51.0|-127.0|17.48055|-0.17709 +2016-07-01|51.0|-128.0|17.5633|-0.17897 +2016-07-01|51.0|-129.0|17.62568|-0.18082 +2016-07-01|51.0|-130.0|17.66823|-0.18263 +2016-07-01|51.0|-131.0|17.69143|-0.18441 +2016-07-01|51.0|-132.0|17.69579|-0.18616 +2016-07-01|51.0|-133.0|17.68178|-0.18786 +2016-07-01|51.0|-134.0|17.64984|-0.18953 +2016-07-01|51.0|-135.0|17.60044|-0.19116 +2016-07-01|51.0|-136.0|17.534|-0.19274 +2016-07-01|51.0|-137.0|17.45095|-0.19427 +2016-07-01|51.0|-138.0|17.35171|-0.19575 +2016-07-01|51.0|-139.0|17.23669|-0.19717 +2016-07-01|51.0|-140.0|17.10629|-0.19853 +2016-07-01|51.0|-141.0|16.96092|-0.19983 +2016-07-01|51.0|-142.0|16.80097|-0.20105 +2016-07-01|51.0|-143.0|16.62683|-0.20219 +2016-07-01|51.0|-144.0|16.4389|-0.20325 +2016-07-01|51.0|-145.0|16.23756|-0.20422 +2016-07-01|51.0|-146.0|16.0232|-0.20509 +2016-07-01|51.0|-147.0|15.7962|-0.20586 +2016-07-01|51.0|-148.0|15.55696|-0.20651 +2016-07-01|51.0|-149.0|15.30584|-0.20704 +2016-07-01|51.0|-150.0|15.04322|-0.20745 +2016-07-01|51.0|-151.0|14.76949|-0.20772 +2016-07-01|51.0|-152.0|14.48501|-0.20785 +2016-07-01|51.0|-153.0|14.19016|-0.20782 +2016-07-01|51.0|-154.0|13.88529|-0.20764 +2016-07-01|51.0|-155.0|13.57076|-0.2073 +2016-07-01|51.0|-156.0|13.24694|-0.20678 +2016-07-01|51.0|-157.0|12.91416|-0.20609 +2016-07-01|51.0|-158.0|12.57278|-0.20521 +2016-07-01|51.0|-159.0|12.22313|-0.20414 +2016-07-01|51.0|-160.0|11.86555|-0.20288 +2016-07-01|51.0|-161.0|11.50035|-0.20142 +2016-07-01|51.0|-162.0|11.12786|-0.19976 +2016-07-01|51.0|-163.0|10.74839|-0.19789 +2016-07-01|51.0|-164.0|10.36224|-0.19582 +2016-07-01|51.0|-165.0|9.96971|-0.19354 +2016-07-01|51.0|-166.0|9.5711|-0.19106 +2016-07-01|51.0|-167.0|9.1667|-0.18836 +2016-07-01|51.0|-168.0|8.75679|-0.18547 +2016-07-01|51.0|-169.0|8.34164|-0.18237 +2016-07-01|51.0|-170.0|7.92153|-0.17908 +2016-07-01|51.0|-171.0|7.49674|-0.1756 +2016-07-01|51.0|-172.0|7.06753|-0.17193 +2016-07-01|51.0|-173.0|6.63417|-0.16808 +2016-07-01|51.0|-174.0|6.19693|-0.16407 +2016-07-01|51.0|-175.0|5.75607|-0.1599 +2016-07-01|51.0|-176.0|5.31186|-0.15558 +2016-07-01|51.0|-177.0|4.86456|-0.15112 +2016-07-01|51.0|-178.0|4.41446|-0.14654 +2016-07-01|51.0|-179.0|3.96181|-0.14185 +2016-07-01|52.0|0.0|-0.67282|0.14854 +2016-07-01|52.0|1.0|-0.32233|0.147 +2016-07-01|52.0|2.0|0.02219|0.14551 +2016-07-01|52.0|3.0|0.36075|0.14408 +2016-07-01|52.0|4.0|0.6934|0.1427 +2016-07-01|52.0|5.0|1.02025|0.14138 +2016-07-01|52.0|6.0|1.3414|0.14013 +2016-07-01|52.0|7.0|1.65699|0.13893 +2016-07-01|52.0|8.0|1.96719|0.1378 +2016-07-01|52.0|9.0|2.27218|0.13673 +2016-07-01|52.0|10.0|2.57214|0.13572 +2016-07-01|52.0|11.0|2.8673|0.13477 +2016-07-01|52.0|12.0|3.15784|0.13388 +2016-07-01|52.0|13.0|3.44399|0.13305 +2016-07-01|52.0|14.0|3.72595|0.13226 +2016-07-01|52.0|15.0|4.00392|0.13153 +2016-07-01|52.0|16.0|4.27809|0.13084 +2016-07-01|52.0|17.0|4.54863|0.13018 +2016-07-01|52.0|18.0|4.8157|0.12956 +2016-07-01|52.0|19.0|5.07943|0.12895 +2016-07-01|52.0|20.0|5.33992|0.12837 +2016-07-01|52.0|21.0|5.59726|0.12779 +2016-07-01|52.0|22.0|5.8515|0.12722 +2016-07-01|52.0|23.0|6.10267|0.12664 +2016-07-01|52.0|24.0|6.35075|0.12605 +2016-07-01|52.0|25.0|6.59572|0.12544 +2016-07-01|52.0|26.0|6.8375|0.12481 +2016-07-01|52.0|27.0|7.076|0.12414 +2016-07-01|52.0|28.0|7.31109|0.12343 +2016-07-01|52.0|29.0|7.54262|0.12268 +2016-07-01|52.0|30.0|7.77041|0.12187 +2016-07-01|52.0|31.0|7.99426|0.12102 +2016-07-01|52.0|32.0|8.21394|0.1201 +2016-07-01|52.0|33.0|8.42922|0.11912 +2016-07-01|52.0|34.0|8.63983|0.11808 +2016-07-01|52.0|35.0|8.8455|0.11698 +2016-07-01|52.0|36.0|9.04594|0.11581 +2016-07-01|52.0|37.0|9.24088|0.11458 +2016-07-01|52.0|38.0|9.42999|0.11329 +2016-07-01|52.0|39.0|9.61298|0.11193 +2016-07-01|52.0|40.0|9.78954|0.11051 +2016-07-01|52.0|41.0|9.95936|0.10904 +2016-07-01|52.0|42.0|10.12213|0.10751 +2016-07-01|52.0|43.0|10.27754|0.10594 +2016-07-01|52.0|44.0|10.42527|0.10431 +2016-07-01|52.0|45.0|10.56504|0.10265 +2016-07-01|52.0|46.0|10.69653|0.10094 +2016-07-01|52.0|47.0|10.81945|0.0992 +2016-07-01|52.0|48.0|10.93351|0.09744 +2016-07-01|52.0|49.0|11.0384|0.09564 +2016-07-01|52.0|50.0|11.13385|0.09382 +2016-07-01|52.0|51.0|11.21956|0.09198 +2016-07-01|52.0|52.0|11.29524|0.09012 +2016-07-01|52.0|53.0|11.36062|0.08825 +2016-07-01|52.0|54.0|11.41541|0.08636 +2016-07-01|52.0|55.0|11.45932|0.08446 +2016-07-01|52.0|56.0|11.49207|0.08255 +2016-07-01|52.0|57.0|11.51337|0.08062 +2016-07-01|52.0|58.0|11.52293|0.07867 +2016-07-01|52.0|59.0|11.52048|0.07671 +2016-07-01|52.0|60.0|11.50571|0.07473 +2016-07-01|52.0|61.0|11.47834|0.07273 +2016-07-01|52.0|62.0|11.43807|0.0707 +2016-07-01|52.0|63.0|11.38462|0.06864 +2016-07-01|52.0|64.0|11.31769|0.06655 +2016-07-01|52.0|65.0|11.237|0.06441 +2016-07-01|52.0|66.0|11.14226|0.06224 +2016-07-01|52.0|67.0|11.03319|0.06001 +2016-07-01|52.0|68.0|10.90951|0.05773 +2016-07-01|52.0|69.0|10.77097|0.05539 +2016-07-01|52.0|70.0|10.6173|0.05298 +2016-07-01|52.0|71.0|10.44825|0.0505 +2016-07-01|52.0|72.0|10.2636|0.04795 +2016-07-01|52.0|73.0|10.06313|0.04532 +2016-07-01|52.0|74.0|9.84665|0.0426 +2016-07-01|52.0|75.0|9.61397|0.0398 +2016-07-01|52.0|76.0|9.36496|0.0369 +2016-07-01|52.0|77.0|9.09948|0.03392 +2016-07-01|52.0|78.0|8.81744|0.03084 +2016-07-01|52.0|79.0|8.51878|0.02767 +2016-07-01|52.0|80.0|8.20347|0.02441 +2016-07-01|52.0|81.0|7.87154|0.02106 +2016-07-01|52.0|82.0|7.52303|0.01762 +2016-07-01|52.0|83.0|7.15806|0.0141 +2016-07-01|52.0|84.0|6.77678|0.01051 +2016-07-01|52.0|85.0|6.37941|0.00685 +2016-07-01|52.0|86.0|5.96621|0.00314 +2016-07-01|52.0|87.0|5.53751|-6.3E-4 +2016-07-01|52.0|88.0|5.09371|-0.00444 +2016-07-01|52.0|89.0|4.63529|-0.00827 +2016-07-01|52.0|90.0|4.16277|-0.01211 +2016-07-01|52.0|91.0|3.67679|-0.01595 +2016-07-01|52.0|92.0|3.17803|-0.01977 +2016-07-01|52.0|93.0|2.66727|-0.02355 +2016-07-01|52.0|94.0|2.14538|-0.02728 +2016-07-01|52.0|95.0|1.6133|-0.03093 +2016-07-01|52.0|96.0|1.07206|-0.03449 +2016-07-01|52.0|97.0|0.52278|-0.03794 +2016-07-01|52.0|98.0|-0.03336|-0.04126 +2016-07-01|52.0|99.0|-0.59508|-0.04443 +2016-07-01|52.0|100.0|-1.16104|-0.04742 +2016-07-01|52.0|101.0|-1.72981|-0.05024 +2016-07-01|52.0|102.0|-2.29992|-0.05284 +2016-07-01|52.0|103.0|-2.86985|-0.05523 +2016-07-01|52.0|104.0|-3.43801|-0.05739 +2016-07-01|52.0|105.0|-4.0028|-0.05929 +2016-07-01|52.0|106.0|-4.56257|-0.06094 +2016-07-01|52.0|107.0|-5.11568|-0.06233 +2016-07-01|52.0|108.0|-5.66048|-0.06344 +2016-07-01|52.0|109.0|-6.19534|-0.06428 +2016-07-01|52.0|110.0|-6.71864|-0.06484 +2016-07-01|52.0|111.0|-7.22881|-0.06513 +2016-07-01|52.0|112.0|-7.72431|-0.06514 +2016-07-01|52.0|113.0|-8.20369|-0.06489 +2016-07-01|52.0|114.0|-8.66554|-0.06438 +2016-07-01|52.0|115.0|-9.10854|-0.06362 +2016-07-01|52.0|116.0|-9.53148|-0.06263 +2016-07-01|52.0|117.0|-9.93321|-0.06142 +2016-07-01|52.0|118.0|-10.31271|-0.06 +2016-07-01|52.0|119.0|-10.66904|-0.0584 +2016-07-01|52.0|120.0|-11.0014|-0.05662 +2016-07-01|52.0|121.0|-11.30908|-0.0547 +2016-07-01|52.0|122.0|-11.59149|-0.05264 +2016-07-01|52.0|123.0|-11.84815|-0.05048 +2016-07-01|52.0|124.0|-12.07869|-0.04823 +2016-07-01|52.0|125.0|-12.28284|-0.04591 +2016-07-01|52.0|126.0|-12.46044|-0.04355 +2016-07-01|52.0|127.0|-12.61145|-0.04117 +2016-07-01|52.0|128.0|-12.73588|-0.03878 +2016-07-01|52.0|129.0|-12.83387|-0.03641 +2016-07-01|52.0|130.0|-12.90563|-0.03407 +2016-07-01|52.0|131.0|-12.95144|-0.03179 +2016-07-01|52.0|132.0|-12.97166|-0.02959 +2016-07-01|52.0|133.0|-12.96671|-0.02748 +2016-07-01|52.0|134.0|-12.93708|-0.02547 +2016-07-01|52.0|135.0|-12.8833|-0.02359 +2016-07-01|52.0|136.0|-12.80596|-0.02186 +2016-07-01|52.0|137.0|-12.70568|-0.02027 +2016-07-01|52.0|138.0|-12.58312|-0.01885 +2016-07-01|52.0|139.0|-12.43897|-0.01762 +2016-07-01|52.0|140.0|-12.27396|-0.01657 +2016-07-01|52.0|141.0|-12.0888|-0.01572 +2016-07-01|52.0|142.0|-11.88427|-0.01509 +2016-07-01|52.0|143.0|-11.66111|-0.01467 +2016-07-01|52.0|144.0|-11.42011|-0.01448 +2016-07-01|52.0|145.0|-11.16203|-0.01452 +2016-07-01|52.0|146.0|-10.88766|-0.0148 +2016-07-01|52.0|147.0|-10.59776|-0.01531 +2016-07-01|52.0|148.0|-10.29311|-0.01608 +2016-07-01|52.0|149.0|-9.97446|-0.01709 +2016-07-01|52.0|150.0|-9.64257|-0.01835 +2016-07-01|52.0|151.0|-9.29816|-0.01986 +2016-07-01|52.0|152.0|-8.94198|-0.02162 +2016-07-01|52.0|153.0|-8.57472|-0.02362 +2016-07-01|52.0|154.0|-8.19708|-0.02587 +2016-07-01|52.0|155.0|-7.80974|-0.02836 +2016-07-01|52.0|156.0|-7.41335|-0.03109 +2016-07-01|52.0|157.0|-7.00856|-0.03405 +2016-07-01|52.0|158.0|-6.59597|-0.03723 +2016-07-01|52.0|159.0|-6.1762|-0.04063 +2016-07-01|52.0|160.0|-5.74983|-0.04423 +2016-07-01|52.0|161.0|-5.3174|-0.04804 +2016-07-01|52.0|162.0|-4.87948|-0.05204 +2016-07-01|52.0|163.0|-4.43657|-0.05622 +2016-07-01|52.0|164.0|-3.98918|-0.06056 +2016-07-01|52.0|165.0|-3.53781|-0.06507 +2016-07-01|52.0|166.0|-3.0829|-0.06971 +2016-07-01|52.0|167.0|-2.62493|-0.07449 +2016-07-01|52.0|168.0|-2.16431|-0.07938 +2016-07-01|52.0|169.0|-1.70147|-0.08437 +2016-07-01|52.0|170.0|-1.2368|-0.08945 +2016-07-01|52.0|171.0|-0.77071|-0.0946 +2016-07-01|52.0|172.0|-0.30355|-0.0998 +2016-07-01|52.0|173.0|0.1643|-0.10504 +2016-07-01|52.0|174.0|0.63249|-0.11031 +2016-07-01|52.0|175.0|1.1007|-0.11559 +2016-07-01|52.0|176.0|1.56858|-0.12086 +2016-07-01|52.0|177.0|2.03583|-0.1261 +2016-07-01|52.0|178.0|2.50213|-0.1313 +2016-07-01|52.0|179.0|2.96717|-0.13645 +2016-07-01|52.0|-1.0|-1.02929|0.15012 +2016-07-01|52.0|-2.0|-1.39169|0.15175 +2016-07-01|52.0|-3.0|-1.75993|0.15342 +2016-07-01|52.0|-4.0|-2.13391|0.15512 +2016-07-01|52.0|-5.0|-2.51347|0.15685 +2016-07-01|52.0|-6.0|-2.89843|0.15861 +2016-07-01|52.0|-7.0|-3.28857|0.16039 +2016-07-01|52.0|-8.0|-3.68364|0.1622 +2016-07-01|52.0|-9.0|-4.08336|0.16401 +2016-07-01|52.0|-10.0|-4.48743|0.16585 +2016-07-01|52.0|-11.0|-4.89553|0.16769 +2016-07-01|52.0|-12.0|-5.3073|0.16953 +2016-07-01|52.0|-13.0|-5.72238|0.17138 +2016-07-01|52.0|-14.0|-6.14039|0.17324 +2016-07-01|52.0|-15.0|-6.56093|0.17509 +2016-07-01|52.0|-16.0|-6.9836|0.17693 +2016-07-01|52.0|-17.0|-7.408|0.17878 +2016-07-01|52.0|-18.0|-7.83371|0.18061 +2016-07-01|52.0|-19.0|-8.26032|0.18244 +2016-07-01|52.0|-20.0|-8.68741|0.18425 +2016-07-01|52.0|-21.0|-9.11456|0.18606 +2016-07-01|52.0|-22.0|-9.54137|0.18785 +2016-07-01|52.0|-23.0|-9.96742|0.18962 +2016-07-01|52.0|-24.0|-10.39232|0.19138 +2016-07-01|52.0|-25.0|-10.81565|0.19311 +2016-07-01|52.0|-26.0|-11.23702|0.19483 +2016-07-01|52.0|-27.0|-11.65602|0.19652 +2016-07-01|52.0|-28.0|-12.07226|0.19818 +2016-07-01|52.0|-29.0|-12.48534|0.1998 +2016-07-01|52.0|-30.0|-12.89485|0.2014 +2016-07-01|52.0|-31.0|-13.30037|0.20295 +2016-07-01|52.0|-32.0|-13.7015|0.20446 +2016-07-01|52.0|-33.0|-14.09779|0.20593 +2016-07-01|52.0|-34.0|-14.4888|0.20734 +2016-07-01|52.0|-35.0|-14.87406|0.20869 +2016-07-01|52.0|-36.0|-15.25309|0.20998 +2016-07-01|52.0|-37.0|-15.62537|0.2112 +2016-07-01|52.0|-38.0|-15.99038|0.21234 +2016-07-01|52.0|-39.0|-16.34754|0.21341 +2016-07-01|52.0|-40.0|-16.69626|0.21438 +2016-07-01|52.0|-41.0|-17.0359|0.21526 +2016-07-01|52.0|-42.0|-17.3658|0.21603 +2016-07-01|52.0|-43.0|-17.68525|0.2167 +2016-07-01|52.0|-44.0|-17.99349|0.21725 +2016-07-01|52.0|-45.0|-18.28975|0.21767 +2016-07-01|52.0|-46.0|-18.57318|0.21796 +2016-07-01|52.0|-47.0|-18.84291|0.21812 +2016-07-01|52.0|-48.0|-19.09803|0.21812 +2016-07-01|52.0|-49.0|-19.33757|0.21797 +2016-07-01|52.0|-50.0|-19.56053|0.21765 +2016-07-01|52.0|-51.0|-19.76588|0.21717 +2016-07-01|52.0|-52.0|-19.95253|0.2165 +2016-07-01|52.0|-53.0|-20.11937|0.21565 +2016-07-01|52.0|-54.0|-20.26525|0.21459 +2016-07-01|52.0|-55.0|-20.38898|0.21333 +2016-07-01|52.0|-56.0|-20.48935|0.21186 +2016-07-01|52.0|-57.0|-20.56515|0.21016 +2016-07-01|52.0|-58.0|-20.61511|0.20823 +2016-07-01|52.0|-59.0|-20.63798|0.20606 +2016-07-01|52.0|-60.0|-20.6325|0.20363 +2016-07-01|52.0|-61.0|-20.5974|0.20094 +2016-07-01|52.0|-62.0|-20.53143|0.19797 +2016-07-01|52.0|-63.0|-20.43335|0.19473 +2016-07-01|52.0|-64.0|-20.30195|0.19118 +2016-07-01|52.0|-65.0|-20.13608|0.18734 +2016-07-01|52.0|-66.0|-19.93461|0.18318 +2016-07-01|52.0|-67.0|-19.69651|0.1787 +2016-07-01|52.0|-68.0|-19.42079|0.17389 +2016-07-01|52.0|-69.0|-19.10659|0.16874 +2016-07-01|52.0|-70.0|-18.75316|0.16325 +2016-07-01|52.0|-71.0|-18.35987|0.1574 +2016-07-01|52.0|-72.0|-17.92625|0.1512 +2016-07-01|52.0|-73.0|-17.45198|0.14464 +2016-07-01|52.0|-74.0|-16.93697|0.13772 +2016-07-01|52.0|-75.0|-16.38129|0.13046 +2016-07-01|52.0|-76.0|-15.78528|0.12284 +2016-07-01|52.0|-77.0|-15.14952|0.1149 +2016-07-01|52.0|-78.0|-14.47482|0.10663 +2016-07-01|52.0|-79.0|-13.7623|0.09805 +2016-07-01|52.0|-80.0|-13.01336|0.0892 +2016-07-01|52.0|-81.0|-12.22968|0.08009 +2016-07-01|52.0|-82.0|-11.41324|0.07075 +2016-07-01|52.0|-83.0|-10.5663|0.06122 +2016-07-01|52.0|-84.0|-9.6914|0.05154 +2016-07-01|52.0|-85.0|-8.79136|0.04175 +2016-07-01|52.0|-86.0|-7.86919|0.03188 +2016-07-01|52.0|-87.0|-6.92815|0.02199 +2016-07-01|52.0|-88.0|-5.97166|0.01213 +2016-07-01|52.0|-89.0|-5.00327|0.00232 +2016-07-01|52.0|-90.0|-4.02662|-0.00737 +2016-07-01|52.0|-91.0|-3.04539|-0.0169 +2016-07-01|52.0|-92.0|-2.06326|-0.02624 +2016-07-01|52.0|-93.0|-1.08388|-0.03535 +2016-07-01|52.0|-94.0|-0.11076|-0.0442 +2016-07-01|52.0|-95.0|0.85268|-0.05275 +2016-07-01|52.0|-96.0|1.80322|-0.06099 +2016-07-01|52.0|-97.0|2.73784|-0.0689 +2016-07-01|52.0|-98.0|3.65376|-0.07646 +2016-07-01|52.0|-99.0|4.54844|-0.08367 +2016-07-01|52.0|-100.0|5.41963|-0.09052 +2016-07-01|52.0|-101.0|6.26533|-0.09702 +2016-07-01|52.0|-102.0|7.08382|-0.10317 +2016-07-01|52.0|-103.0|7.87367|-0.10899 +2016-07-01|52.0|-104.0|8.6337|-0.11448 +2016-07-01|52.0|-105.0|9.36299|-0.11966 +2016-07-01|52.0|-106.0|10.06083|-0.12454 +2016-07-01|52.0|-107.0|10.72678|-0.12914 +2016-07-01|52.0|-108.0|11.36054|-0.13349 +2016-07-01|52.0|-109.0|11.96204|-0.13759 +2016-07-01|52.0|-110.0|12.53133|-0.14147 +2016-07-01|52.0|-111.0|13.06862|-0.14514 +2016-07-01|52.0|-112.0|13.57422|-0.14863 +2016-07-01|52.0|-113.0|14.04857|-0.15194 +2016-07-01|52.0|-114.0|14.49215|-0.1551 +2016-07-01|52.0|-115.0|14.90554|-0.15812 +2016-07-01|52.0|-116.0|15.28935|-0.16101 +2016-07-01|52.0|-117.0|15.64425|-0.16379 +2016-07-01|52.0|-118.0|15.9709|-0.16646 +2016-07-01|52.0|-119.0|16.27002|-0.16904 +2016-07-01|52.0|-120.0|16.54229|-0.17153 +2016-07-01|52.0|-121.0|16.78844|-0.17395 +2016-07-01|52.0|-122.0|17.00915|-0.17629 +2016-07-01|52.0|-123.0|17.20512|-0.17857 +2016-07-01|52.0|-124.0|17.37703|-0.18079 +2016-07-01|52.0|-125.0|17.52552|-0.18296 +2016-07-01|52.0|-126.0|17.65124|-0.18507 +2016-07-01|52.0|-127.0|17.75482|-0.18713 +2016-07-01|52.0|-128.0|17.83685|-0.18915 +2016-07-01|52.0|-129.0|17.8979|-0.19111 +2016-07-01|52.0|-130.0|17.93855|-0.19303 +2016-07-01|52.0|-131.0|17.95933|-0.1949 +2016-07-01|52.0|-132.0|17.96076|-0.19672 +2016-07-01|52.0|-133.0|17.94335|-0.1985 +2016-07-01|52.0|-134.0|17.90759|-0.20022 +2016-07-01|52.0|-135.0|17.85396|-0.20188 +2016-07-01|52.0|-136.0|17.78293|-0.20349 +2016-07-01|52.0|-137.0|17.69494|-0.20504 +2016-07-01|52.0|-138.0|17.59044|-0.20653 +2016-07-01|52.0|-139.0|17.46986|-0.20795 +2016-07-01|52.0|-140.0|17.33364|-0.20929 +2016-07-01|52.0|-141.0|17.1822|-0.21056 +2016-07-01|52.0|-142.0|17.01594|-0.21174 +2016-07-01|52.0|-143.0|16.83529|-0.21283 +2016-07-01|52.0|-144.0|16.64065|-0.21383 +2016-07-01|52.0|-145.0|16.43243|-0.21473 +2016-07-01|52.0|-146.0|16.21102|-0.21552 +2016-07-01|52.0|-147.0|15.97683|-0.21619 +2016-07-01|52.0|-148.0|15.73025|-0.21674 +2016-07-01|52.0|-149.0|15.47167|-0.21717 +2016-07-01|52.0|-150.0|15.20148|-0.21745 +2016-07-01|52.0|-151.0|14.92006|-0.21759 +2016-07-01|52.0|-152.0|14.6278|-0.21759 +2016-07-01|52.0|-153.0|14.32508|-0.21742 +2016-07-01|52.0|-154.0|14.01227|-0.21709 +2016-07-01|52.0|-155.0|13.68973|-0.21659 +2016-07-01|52.0|-156.0|13.35783|-0.21591 +2016-07-01|52.0|-157.0|13.01694|-0.21504 +2016-07-01|52.0|-158.0|12.66739|-0.21399 +2016-07-01|52.0|-159.0|12.30955|-0.21275 +2016-07-01|52.0|-160.0|11.94374|-0.2113 +2016-07-01|52.0|-161.0|11.57031|-0.20966 +2016-07-01|52.0|-162.0|11.18959|-0.20781 +2016-07-01|52.0|-163.0|10.80189|-0.20575 +2016-07-01|52.0|-164.0|10.40753|-0.20348 +2016-07-01|52.0|-165.0|10.00682|-0.20101 +2016-07-01|52.0|-166.0|9.60006|-0.19832 +2016-07-01|52.0|-167.0|9.18756|-0.19543 +2016-07-01|52.0|-168.0|8.7696|-0.19234 +2016-07-01|52.0|-169.0|8.34647|-0.18904 +2016-07-01|52.0|-170.0|7.91847|-0.18555 +2016-07-01|52.0|-171.0|7.48586|-0.18187 +2016-07-01|52.0|-172.0|7.04892|-0.178 +2016-07-01|52.0|-173.0|6.60794|-0.17396 +2016-07-01|52.0|-174.0|6.16318|-0.16975 +2016-07-01|52.0|-175.0|5.71492|-0.16538 +2016-07-01|52.0|-176.0|5.26343|-0.16086 +2016-07-01|52.0|-177.0|4.80898|-0.1562 +2016-07-01|52.0|-178.0|4.35185|-0.15142 +2016-07-01|52.0|-179.0|3.89232|-0.14652 +2016-07-01|53.0|0.0|-0.79128|0.15244 +2016-07-01|53.0|1.0|-0.42945|0.15089 +2016-07-01|53.0|2.0|-0.07329|0.14939 +2016-07-01|53.0|3.0|0.27722|0.14794 +2016-07-01|53.0|4.0|0.6221|0.14655 +2016-07-01|53.0|5.0|0.96145|0.14521 +2016-07-01|53.0|6.0|1.29536|0.14393 +2016-07-01|53.0|7.0|1.62394|0.14272 +2016-07-01|53.0|8.0|1.94735|0.14156 +2016-07-01|53.0|9.0|2.26574|0.14046 +2016-07-01|53.0|10.0|2.57929|0.13943 +2016-07-01|53.0|11.0|2.88818|0.13845 +2016-07-01|53.0|12.0|3.19259|0.13752 +2016-07-01|53.0|13.0|3.49271|0.13665 +2016-07-01|53.0|14.0|3.78874|0.13583 +2016-07-01|53.0|15.0|4.08085|0.13505 +2016-07-01|53.0|16.0|4.36922|0.13431 +2016-07-01|53.0|17.0|4.65399|0.13361 +2016-07-01|53.0|18.0|4.93531|0.13294 +2016-07-01|53.0|19.0|5.2133|0.13229 +2016-07-01|53.0|20.0|5.48806|0.13165 +2016-07-01|53.0|21.0|5.75965|0.13103 +2016-07-01|53.0|22.0|6.02814|0.13041 +2016-07-01|53.0|23.0|6.29353|0.12979 +2016-07-01|53.0|24.0|6.55581|0.12915 +2016-07-01|53.0|25.0|6.81496|0.1285 +2016-07-01|53.0|26.0|7.07089|0.12783 +2016-07-01|53.0|27.0|7.32352|0.12712 +2016-07-01|53.0|28.0|7.57271|0.12638 +2016-07-01|53.0|29.0|7.81832|0.1256 +2016-07-01|53.0|30.0|8.06017|0.12477 +2016-07-01|53.0|31.0|8.29806|0.12389 +2016-07-01|53.0|32.0|8.53176|0.12296 +2016-07-01|53.0|33.0|8.76104|0.12197 +2016-07-01|53.0|34.0|8.98562|0.12092 +2016-07-01|53.0|35.0|9.20524|0.11981 +2016-07-01|53.0|36.0|9.4196|0.11864 +2016-07-01|53.0|37.0|9.62839|0.11741 +2016-07-01|53.0|38.0|9.83132|0.11611 +2016-07-01|53.0|39.0|10.02805|0.11476 +2016-07-01|53.0|40.0|10.21826|0.11335 +2016-07-01|53.0|41.0|10.40162|0.11188 +2016-07-01|53.0|42.0|10.5778|0.11036 +2016-07-01|53.0|43.0|10.74646|0.10878 +2016-07-01|53.0|44.0|10.90728|0.10716 +2016-07-01|53.0|45.0|11.05991|0.10549 +2016-07-01|53.0|46.0|11.20401|0.10378 +2016-07-01|53.0|47.0|11.33927|0.10202 +2016-07-01|53.0|48.0|11.46534|0.10024 +2016-07-01|53.0|49.0|11.5819|0.09842 +2016-07-01|53.0|50.0|11.68862|0.09657 +2016-07-01|53.0|51.0|11.78517|0.09469 +2016-07-01|53.0|52.0|11.87123|0.09279 +2016-07-01|53.0|53.0|11.94646|0.09086 +2016-07-01|53.0|54.0|12.01055|0.08891 +2016-07-01|53.0|55.0|12.06318|0.08693 +2016-07-01|53.0|56.0|12.10401|0.08494 +2016-07-01|53.0|57.0|12.13272|0.08292 +2016-07-01|53.0|58.0|12.14899|0.08087 +2016-07-01|53.0|59.0|12.15249|0.0788 +2016-07-01|53.0|60.0|12.1429|0.0767 +2016-07-01|53.0|61.0|12.11989|0.07457 +2016-07-01|53.0|62.0|12.08315|0.0724 +2016-07-01|53.0|63.0|12.03233|0.07019 +2016-07-01|53.0|64.0|11.96714|0.06794 +2016-07-01|53.0|65.0|11.88725|0.06565 +2016-07-01|53.0|66.0|11.79234|0.0633 +2016-07-01|53.0|67.0|11.68212|0.0609 +2016-07-01|53.0|68.0|11.55628|0.05843 +2016-07-01|53.0|69.0|11.41454|0.0559 +2016-07-01|53.0|70.0|11.25662|0.05329 +2016-07-01|53.0|71.0|11.08226|0.05061 +2016-07-01|53.0|72.0|10.89121|0.04786 +2016-07-01|53.0|73.0|10.68324|0.04501 +2016-07-01|53.0|74.0|10.45814|0.04208 +2016-07-01|53.0|75.0|10.21574|0.03906 +2016-07-01|53.0|76.0|9.95586|0.03595 +2016-07-01|53.0|77.0|9.6784|0.03275 +2016-07-01|53.0|78.0|9.38325|0.02945 +2016-07-01|53.0|79.0|9.07035|0.02607 +2016-07-01|53.0|80.0|8.7397|0.02259 +2016-07-01|53.0|81.0|8.39132|0.01902 +2016-07-01|53.0|82.0|8.02529|0.01538 +2016-07-01|53.0|83.0|7.64175|0.01166 +2016-07-01|53.0|84.0|7.24087|0.00786 +2016-07-01|53.0|85.0|6.82291|0.00401 +2016-07-01|53.0|86.0|6.38818|1.1E-4 +2016-07-01|53.0|87.0|5.93707|-0.00383 +2016-07-01|53.0|88.0|5.47002|-0.00781 +2016-07-01|53.0|89.0|4.98758|-0.01179 +2016-07-01|53.0|90.0|4.49035|-0.01577 +2016-07-01|53.0|91.0|3.97904|-0.01973 +2016-07-01|53.0|92.0|3.45443|-0.02366 +2016-07-01|53.0|93.0|2.91738|-0.02753 +2016-07-01|53.0|94.0|2.36886|-0.03133 +2016-07-01|53.0|95.0|1.80991|-0.03503 +2016-07-01|53.0|96.0|1.24168|-0.03862 +2016-07-01|53.0|97.0|0.66539|-0.04208 +2016-07-01|53.0|98.0|0.08234|-0.04538 +2016-07-01|53.0|99.0|-0.50609|-0.0485 +2016-07-01|53.0|100.0|-1.09842|-0.05144 +2016-07-01|53.0|101.0|-1.69313|-0.05416 +2016-07-01|53.0|102.0|-2.28864|-0.05665 +2016-07-01|53.0|103.0|-2.8833|-0.0589 +2016-07-01|53.0|104.0|-3.47546|-0.0609 +2016-07-01|53.0|105.0|-4.0634|-0.06262 +2016-07-01|53.0|106.0|-4.6454|-0.06407 +2016-07-01|53.0|107.0|-5.21974|-0.06523 +2016-07-01|53.0|108.0|-5.78472|-0.06611 +2016-07-01|53.0|109.0|-6.33863|-0.06669 +2016-07-01|53.0|110.0|-6.87982|-0.06699 +2016-07-01|53.0|111.0|-7.40669|-0.06699 +2016-07-01|53.0|112.0|-7.91768|-0.06672 +2016-07-01|53.0|113.0|-8.41132|-0.06618 +2016-07-01|53.0|114.0|-8.88622|-0.06537 +2016-07-01|53.0|115.0|-9.34106|-0.06432 +2016-07-01|53.0|116.0|-9.77464|-0.06303 +2016-07-01|53.0|117.0|-10.18586|-0.06152 +2016-07-01|53.0|118.0|-10.57372|-0.05982 +2016-07-01|53.0|119.0|-10.93733|-0.05793 +2016-07-01|53.0|120.0|-11.27593|-0.05589 +2016-07-01|53.0|121.0|-11.58887|-0.0537 +2016-07-01|53.0|122.0|-11.87561|-0.0514 +2016-07-01|53.0|123.0|-12.13572|-0.04901 +2016-07-01|53.0|124.0|-12.3689|-0.04654 +2016-07-01|53.0|125.0|-12.57493|-0.04402 +2016-07-01|53.0|126.0|-12.75373|-0.04147 +2016-07-01|53.0|127.0|-12.90528|-0.03891 +2016-07-01|53.0|128.0|-13.02968|-0.03637 +2016-07-01|53.0|129.0|-13.12711|-0.03387 +2016-07-01|53.0|130.0|-13.19783|-0.03141 +2016-07-01|53.0|131.0|-13.24216|-0.02904 +2016-07-01|53.0|132.0|-13.26052|-0.02675 +2016-07-01|53.0|133.0|-13.25338|-0.02458 +2016-07-01|53.0|134.0|-13.22125|-0.02253 +2016-07-01|53.0|135.0|-13.1647|-0.02062 +2016-07-01|53.0|136.0|-13.08436|-0.01887 +2016-07-01|53.0|137.0|-12.98087|-0.01729 +2016-07-01|53.0|138.0|-12.85493|-0.01589 +2016-07-01|53.0|139.0|-12.70724|-0.01469 +2016-07-01|53.0|140.0|-12.53855|-0.01369 +2016-07-01|53.0|141.0|-12.34961|-0.01291 +2016-07-01|53.0|142.0|-12.14119|-0.01235 +2016-07-01|53.0|143.0|-11.91407|-0.01202 +2016-07-01|53.0|144.0|-11.66902|-0.01194 +2016-07-01|53.0|145.0|-11.40684|-0.01209 +2016-07-01|53.0|146.0|-11.12831|-0.0125 +2016-07-01|53.0|147.0|-10.8342|-0.01315 +2016-07-01|53.0|148.0|-10.52529|-0.01406 +2016-07-01|53.0|149.0|-10.20235|-0.01523 +2016-07-01|53.0|150.0|-9.86613|-0.01666 +2016-07-01|53.0|151.0|-9.51737|-0.01834 +2016-07-01|53.0|152.0|-9.15679|-0.02028 +2016-07-01|53.0|153.0|-8.7851|-0.02247 +2016-07-01|53.0|154.0|-8.403|-0.02491 +2016-07-01|53.0|155.0|-8.01117|-0.0276 +2016-07-01|53.0|156.0|-7.61025|-0.03053 +2016-07-01|53.0|157.0|-7.20089|-0.0337 +2016-07-01|53.0|158.0|-6.7837|-0.03709 +2016-07-01|53.0|159.0|-6.35928|-0.0407 +2016-07-01|53.0|160.0|-5.92821|-0.04452 +2016-07-01|53.0|161.0|-5.49105|-0.04855 +2016-07-01|53.0|162.0|-5.04833|-0.05277 +2016-07-01|53.0|163.0|-4.60057|-0.05717 +2016-07-01|53.0|164.0|-4.14827|-0.06173 +2016-07-01|53.0|165.0|-3.69192|-0.06646 +2016-07-01|53.0|166.0|-3.23197|-0.07132 +2016-07-01|53.0|167.0|-2.76887|-0.07632 +2016-07-01|53.0|168.0|-2.30305|-0.08143 +2016-07-01|53.0|169.0|-1.83493|-0.08664 +2016-07-01|53.0|170.0|-1.36489|-0.09193 +2016-07-01|53.0|171.0|-0.89333|-0.0973 +2016-07-01|53.0|172.0|-0.42062|-0.10272 +2016-07-01|53.0|173.0|0.0529|-0.10818 +2016-07-01|53.0|174.0|0.52686|-0.11366 +2016-07-01|53.0|175.0|1.00094|-0.11915 +2016-07-01|53.0|176.0|1.47482|-0.12463 +2016-07-01|53.0|177.0|1.94816|-0.13008 +2016-07-01|53.0|178.0|2.42068|-0.1355 +2016-07-01|53.0|179.0|2.89205|-0.14085 +2016-07-01|53.0|-1.0|-1.15878|0.15403 +2016-07-01|53.0|-2.0|-1.53188|0.15568 +2016-07-01|53.0|-3.0|-1.91051|0.15736 +2016-07-01|53.0|-4.0|-2.29455|0.15907 +2016-07-01|53.0|-5.0|-2.68386|0.16083 +2016-07-01|53.0|-6.0|-3.07825|0.16261 +2016-07-01|53.0|-7.0|-3.47752|0.16441 +2016-07-01|53.0|-8.0|-3.88143|0.16624 +2016-07-01|53.0|-9.0|-4.28972|0.16809 +2016-07-01|53.0|-10.0|-4.70209|0.16995 +2016-07-01|53.0|-11.0|-5.11823|0.17183 +2016-07-01|53.0|-12.0|-5.53782|0.17372 +2016-07-01|53.0|-13.0|-5.9605|0.17561 +2016-07-01|53.0|-14.0|-6.38591|0.17751 +2016-07-01|53.0|-15.0|-6.81367|0.17941 +2016-07-01|53.0|-16.0|-7.2434|0.18131 +2016-07-01|53.0|-17.0|-7.67472|0.18321 +2016-07-01|53.0|-18.0|-8.10721|0.18511 +2016-07-01|53.0|-19.0|-8.54048|0.187 +2016-07-01|53.0|-20.0|-8.97413|0.18888 +2016-07-01|53.0|-21.0|-9.40776|0.19075 +2016-07-01|53.0|-22.0|-9.84096|0.19261 +2016-07-01|53.0|-23.0|-10.27334|0.19446 +2016-07-01|53.0|-24.0|-10.70448|0.1963 +2016-07-01|53.0|-25.0|-11.13401|0.19811 +2016-07-01|53.0|-26.0|-11.56151|0.1999 +2016-07-01|53.0|-27.0|-11.9866|0.20167 +2016-07-01|53.0|-28.0|-12.40886|0.20342 +2016-07-01|53.0|-29.0|-12.8279|0.20513 +2016-07-01|53.0|-30.0|-13.24331|0.20682 +2016-07-01|53.0|-31.0|-13.65468|0.20846 +2016-07-01|53.0|-32.0|-14.06158|0.21007 +2016-07-01|53.0|-33.0|-14.46357|0.21163 +2016-07-01|53.0|-34.0|-14.8602|0.21313 +2016-07-01|53.0|-35.0|-15.251|0.21459 +2016-07-01|53.0|-36.0|-15.63549|0.21598 +2016-07-01|53.0|-37.0|-16.01314|0.21731 +2016-07-01|53.0|-38.0|-16.38342|0.21857 +2016-07-01|53.0|-39.0|-16.74576|0.21975 +2016-07-01|53.0|-40.0|-17.09956|0.22085 +2016-07-01|53.0|-41.0|-17.44418|0.22186 +2016-07-01|53.0|-42.0|-17.77897|0.22277 +2016-07-01|53.0|-43.0|-18.10321|0.22357 +2016-07-01|53.0|-44.0|-18.41617|0.22427 +2016-07-01|53.0|-45.0|-18.71704|0.22485 +2016-07-01|53.0|-46.0|-19.00502|0.22531 +2016-07-01|53.0|-47.0|-19.27923|0.22563 +2016-07-01|53.0|-48.0|-19.53876|0.22582 +2016-07-01|53.0|-49.0|-19.78266|0.22585 +2016-07-01|53.0|-50.0|-20.00993|0.22574 +2016-07-01|53.0|-51.0|-20.21955|0.22546 +2016-07-01|53.0|-52.0|-20.41043|0.225 +2016-07-01|53.0|-53.0|-20.58147|0.22437 +2016-07-01|53.0|-54.0|-20.73153|0.22355 +2016-07-01|53.0|-55.0|-20.85941|0.22253 +2016-07-01|53.0|-56.0|-20.96393|0.22131 +2016-07-01|53.0|-57.0|-21.04383|0.21986 +2016-07-01|53.0|-58.0|-21.09787|0.21819 +2016-07-01|53.0|-59.0|-21.12478|0.21628 +2016-07-01|53.0|-60.0|-21.12328|0.21413 +2016-07-01|53.0|-61.0|-21.09208|0.21171 +2016-07-01|53.0|-62.0|-21.02991|0.20902 +2016-07-01|53.0|-63.0|-20.9355|0.20605 +2016-07-01|53.0|-64.0|-20.80761|0.20279 +2016-07-01|53.0|-65.0|-20.64503|0.19922 +2016-07-01|53.0|-66.0|-20.44659|0.19533 +2016-07-01|53.0|-67.0|-20.2112|0.19111 +2016-07-01|53.0|-68.0|-19.93783|0.18656 +2016-07-01|53.0|-69.0|-19.62553|0.18164 +2016-07-01|53.0|-70.0|-19.27347|0.17637 +2016-07-01|53.0|-71.0|-18.88096|0.17073 +2016-07-01|53.0|-72.0|-18.44742|0.16471 +2016-07-01|53.0|-73.0|-17.97247|0.1583 +2016-07-01|53.0|-74.0|-17.4559|0.15151 +2016-07-01|53.0|-75.0|-16.89771|0.14434 +2016-07-01|53.0|-76.0|-16.29813|0.13677 +2016-07-01|53.0|-77.0|-15.65765|0.12884 +2016-07-01|53.0|-78.0|-14.977|0.12053 +2016-07-01|53.0|-79.0|-14.25722|0.11187 +2016-07-01|53.0|-80.0|-13.49963|0.10287 +2016-07-01|53.0|-81.0|-12.70585|0.09357 +2016-07-01|53.0|-82.0|-11.87782|0.08398 +2016-07-01|53.0|-83.0|-11.01775|0.07414 +2016-07-01|53.0|-84.0|-10.1282|0.06409 +2016-07-01|53.0|-85.0|-9.21195|0.05386 +2016-07-01|53.0|-86.0|-8.27208|0.04351 +2016-07-01|53.0|-87.0|-7.31188|0.03307 +2016-07-01|53.0|-88.0|-6.33485|0.0226 +2016-07-01|53.0|-89.0|-5.34462|0.01215 +2016-07-01|53.0|-90.0|-4.34494|0.00176 +2016-07-01|53.0|-91.0|-3.33964|-0.00851 +2016-07-01|53.0|-92.0|-2.33253|-0.01862 +2016-07-01|53.0|-93.0|-1.32741|-0.02852 +2016-07-01|53.0|-94.0|-0.32798|-0.03819 +2016-07-01|53.0|-95.0|0.66218|-0.04757 +2016-07-01|53.0|-96.0|1.63969|-0.05665 +2016-07-01|53.0|-97.0|2.60135|-0.0654 +2016-07-01|53.0|-98.0|3.54421|-0.0738 +2016-07-01|53.0|-99.0|4.46557|-0.08184 +2016-07-01|53.0|-100.0|5.36302|-0.08951 +2016-07-01|53.0|-101.0|6.23443|-0.09681 +2016-07-01|53.0|-102.0|7.07797|-0.10374 +2016-07-01|53.0|-103.0|7.89208|-0.1103 +2016-07-01|53.0|-104.0|8.67548|-0.11651 +2016-07-01|53.0|-105.0|9.42717|-0.12239 +2016-07-01|53.0|-106.0|10.14639|-0.12793 +2016-07-01|53.0|-107.0|10.83261|-0.13317 +2016-07-01|53.0|-108.0|11.48552|-0.13811 +2016-07-01|53.0|-109.0|12.105|-0.14278 +2016-07-01|53.0|-110.0|12.69109|-0.1472 +2016-07-01|53.0|-111.0|13.24399|-0.15138 +2016-07-01|53.0|-112.0|13.76401|-0.15534 +2016-07-01|53.0|-113.0|14.25159|-0.15911 +2016-07-01|53.0|-114.0|14.70723|-0.16268 +2016-07-01|53.0|-115.0|15.13152|-0.16609 +2016-07-01|53.0|-116.0|15.52511|-0.16935 +2016-07-01|53.0|-117.0|15.88868|-0.17246 +2016-07-01|53.0|-118.0|16.22294|-0.17545 +2016-07-01|53.0|-119.0|16.52862|-0.17832 +2016-07-01|53.0|-120.0|16.80648|-0.18108 +2016-07-01|53.0|-121.0|17.05724|-0.18375 +2016-07-01|53.0|-122.0|17.28166|-0.18632 +2016-07-01|53.0|-123.0|17.48046|-0.18882 +2016-07-01|53.0|-124.0|17.65437|-0.19123 +2016-07-01|53.0|-125.0|17.80407|-0.19357 +2016-07-01|53.0|-126.0|17.93026|-0.19584 +2016-07-01|53.0|-127.0|18.03359|-0.19804 +2016-07-01|53.0|-128.0|18.11471|-0.20018 +2016-07-01|53.0|-129.0|18.17424|-0.20226 +2016-07-01|53.0|-130.0|18.21277|-0.20427 +2016-07-01|53.0|-131.0|18.2309|-0.20623 +2016-07-01|53.0|-132.0|18.22917|-0.20812 +2016-07-01|53.0|-133.0|18.20814|-0.20994 +2016-07-01|53.0|-134.0|18.16832|-0.21171 +2016-07-01|53.0|-135.0|18.11023|-0.2134 +2016-07-01|53.0|-136.0|18.03436|-0.21503 +2016-07-01|53.0|-137.0|17.9412|-0.21658 +2016-07-01|53.0|-138.0|17.83123|-0.21806 +2016-07-01|53.0|-139.0|17.70489|-0.21945 +2016-07-01|53.0|-140.0|17.56265|-0.22076 +2016-07-01|53.0|-141.0|17.40495|-0.22198 +2016-07-01|53.0|-142.0|17.23223|-0.22311 +2016-07-01|53.0|-143.0|17.04492|-0.22414 +2016-07-01|53.0|-144.0|16.84345|-0.22506 +2016-07-01|53.0|-145.0|16.62823|-0.22586 +2016-07-01|53.0|-146.0|16.39969|-0.22655 +2016-07-01|53.0|-147.0|16.15823|-0.22712 +2016-07-01|53.0|-148.0|15.90427|-0.22755 +2016-07-01|53.0|-149.0|15.63821|-0.22784 +2016-07-01|53.0|-150.0|15.36045|-0.22799 +2016-07-01|53.0|-151.0|15.07138|-0.22799 +2016-07-01|53.0|-152.0|14.7714|-0.22783 +2016-07-01|53.0|-153.0|14.46089|-0.2275 +2016-07-01|53.0|-154.0|14.14023|-0.227 +2016-07-01|53.0|-155.0|13.80981|-0.22632 +2016-07-01|53.0|-156.0|13.47|-0.22546 +2016-07-01|53.0|-157.0|13.12115|-0.22442 +2016-07-01|53.0|-158.0|12.76364|-0.22317 +2016-07-01|53.0|-159.0|12.39782|-0.22173 +2016-07-01|53.0|-160.0|12.02403|-0.22009 +2016-07-01|53.0|-161.0|11.64262|-0.21824 +2016-07-01|53.0|-162.0|11.25393|-0.21619 +2016-07-01|53.0|-163.0|10.85828|-0.21393 +2016-07-01|53.0|-164.0|10.45599|-0.21145 +2016-07-01|53.0|-165.0|10.0474|-0.20877 +2016-07-01|53.0|-166.0|9.6328|-0.20587 +2016-07-01|53.0|-167.0|9.2125|-0.20277 +2016-07-01|53.0|-168.0|8.78681|-0.19947 +2016-07-01|53.0|-169.0|8.35602|-0.19596 +2016-07-01|53.0|-170.0|7.92043|-0.19226 +2016-07-01|53.0|-171.0|7.48031|-0.18836 +2016-07-01|53.0|-172.0|7.03595|-0.18429 +2016-07-01|53.0|-173.0|6.58763|-0.18003 +2016-07-01|53.0|-174.0|6.13564|-0.17561 +2016-07-01|53.0|-175.0|5.68025|-0.17103 +2016-07-01|53.0|-176.0|5.22173|-0.1663 +2016-07-01|53.0|-177.0|4.76037|-0.16144 +2016-07-01|53.0|-178.0|4.29644|-0.15645 +2016-07-01|53.0|-179.0|3.83022|-0.15134 +2016-07-01|54.0|0.0|-0.91589|0.15655 +2016-07-01|54.0|1.0|-0.54212|0.15498 +2016-07-01|54.0|2.0|-0.17371|0.15347 +2016-07-01|54.0|3.0|0.18934|0.152 +2016-07-01|54.0|4.0|0.54707|0.15059 +2016-07-01|54.0|5.0|0.89954|0.14924 +2016-07-01|54.0|6.0|1.24683|0.14794 +2016-07-01|54.0|7.0|1.58905|0.1467 +2016-07-01|54.0|8.0|1.92631|0.14552 +2016-07-01|54.0|9.0|2.25877|0.1444 +2016-07-01|54.0|10.0|2.58656|0.14333 +2016-07-01|54.0|11.0|2.90985|0.14232 +2016-07-01|54.0|12.0|3.22881|0.14136 +2016-07-01|54.0|13.0|3.54361|0.14045 +2016-07-01|54.0|14.0|3.8544|0.13958 +2016-07-01|54.0|15.0|4.16135|0.13876 +2016-07-01|54.0|16.0|4.46461|0.13798 +2016-07-01|54.0|17.0|4.76433|0.13723 +2016-07-01|54.0|18.0|5.06062|0.13651 +2016-07-01|54.0|19.0|5.35359|0.13581 +2016-07-01|54.0|20.0|5.64332|0.13512 +2016-07-01|54.0|21.0|5.92989|0.13445 +2016-07-01|54.0|22.0|6.21331|0.13378 +2016-07-01|54.0|23.0|6.49362|0.13311 +2016-07-01|54.0|24.0|6.77079|0.13243 +2016-07-01|54.0|25.0|7.04478|0.13173 +2016-07-01|54.0|26.0|7.31552|0.13102 +2016-07-01|54.0|27.0|7.58291|0.13027 +2016-07-01|54.0|28.0|7.84682|0.1295 +2016-07-01|54.0|29.0|8.10711|0.12868 +2016-07-01|54.0|30.0|8.3636|0.12782 +2016-07-01|54.0|31.0|8.61608|0.12692 +2016-07-01|54.0|32.0|8.86432|0.12597 +2016-07-01|54.0|33.0|9.1081|0.12496 +2016-07-01|54.0|34.0|9.34713|0.1239 +2016-07-01|54.0|35.0|9.58113|0.12278 +2016-07-01|54.0|36.0|9.80982|0.1216 +2016-07-01|54.0|37.0|10.03288|0.12037 +2016-07-01|54.0|38.0|10.24998|0.11907 +2016-07-01|54.0|39.0|10.46079|0.11771 +2016-07-01|54.0|40.0|10.66498|0.1163 +2016-07-01|54.0|41.0|10.86219|0.11483 +2016-07-01|54.0|42.0|11.05207|0.11331 +2016-07-01|54.0|43.0|11.23427|0.11173 +2016-07-01|54.0|44.0|11.40842|0.1101 +2016-07-01|54.0|45.0|11.57417|0.10842 +2016-07-01|54.0|46.0|11.73114|0.1067 +2016-07-01|54.0|47.0|11.87898|0.10494 +2016-07-01|54.0|48.0|12.01733|0.10313 +2016-07-01|54.0|49.0|12.1458|0.10128 +2016-07-01|54.0|50.0|12.26406|0.0994 +2016-07-01|54.0|51.0|12.37171|0.09749 +2016-07-01|54.0|52.0|12.46842|0.09554 +2016-07-01|54.0|53.0|12.5538|0.09355 +2016-07-01|54.0|54.0|12.62751|0.09154 +2016-07-01|54.0|55.0|12.68917|0.08949 +2016-07-01|54.0|56.0|12.73841|0.08741 +2016-07-01|54.0|57.0|12.77489|0.0853 +2016-07-01|54.0|58.0|12.79823|0.08316 +2016-07-01|54.0|59.0|12.80808|0.08098 +2016-07-01|54.0|60.0|12.80406|0.07876 +2016-07-01|54.0|61.0|12.78582|0.0765 +2016-07-01|54.0|62.0|12.75301|0.07419 +2016-07-01|54.0|63.0|12.70526|0.07184 +2016-07-01|54.0|64.0|12.64222|0.06944 +2016-07-01|54.0|65.0|12.56354|0.06698 +2016-07-01|54.0|66.0|12.46889|0.06446 +2016-07-01|54.0|67.0|12.35792|0.06188 +2016-07-01|54.0|68.0|12.23032|0.05923 +2016-07-01|54.0|69.0|12.08576|0.0565 +2016-07-01|54.0|70.0|11.92395|0.0537 +2016-07-01|54.0|71.0|11.74459|0.05082 +2016-07-01|54.0|72.0|11.54743|0.04785 +2016-07-01|54.0|73.0|11.33221|0.04479 +2016-07-01|54.0|74.0|11.0987|0.04164 +2016-07-01|54.0|75.0|10.84673|0.0384 +2016-07-01|54.0|76.0|10.5761|0.03507 +2016-07-01|54.0|77.0|10.2867|0.03164 +2016-07-01|54.0|78.0|9.97843|0.02812 +2016-07-01|54.0|79.0|9.65122|0.02451 +2016-07-01|54.0|80.0|9.30508|0.0208 +2016-07-01|54.0|81.0|8.94005|0.01702 +2016-07-01|54.0|82.0|8.55621|0.01315 +2016-07-01|54.0|83.0|8.15373|0.00921 +2016-07-01|54.0|84.0|7.73282|0.00521 +2016-07-01|54.0|85.0|7.29377|0.00115 +2016-07-01|54.0|86.0|6.83693|-0.00295 +2016-07-01|54.0|87.0|6.36274|-0.00708 +2016-07-01|54.0|88.0|5.87172|-0.01123 +2016-07-01|54.0|89.0|5.36446|-0.01537 +2016-07-01|54.0|90.0|4.84167|-0.0195 +2016-07-01|54.0|91.0|4.30411|-0.0236 +2016-07-01|54.0|92.0|3.75267|-0.02764 +2016-07-01|54.0|93.0|3.18832|-0.03161 +2016-07-01|54.0|94.0|2.61211|-0.03548 +2016-07-01|54.0|95.0|2.02521|-0.03924 +2016-07-01|54.0|96.0|1.42888|-0.04286 +2016-07-01|54.0|97.0|0.82445|-0.04633 +2016-07-01|54.0|98.0|0.21335|-0.04961 +2016-07-01|54.0|99.0|-0.4029|-0.05269 +2016-07-01|54.0|100.0|-1.02272|-0.05556 +2016-07-01|54.0|101.0|-1.64447|-0.05819 +2016-07-01|54.0|102.0|-2.26644|-0.06056 +2016-07-01|54.0|103.0|-2.88689|-0.06267 +2016-07-01|54.0|104.0|-3.50403|-0.06449 +2016-07-01|54.0|105.0|-4.11606|-0.06603 +2016-07-01|54.0|106.0|-4.72117|-0.06726 +2016-07-01|54.0|107.0|-5.31757|-0.0682 +2016-07-01|54.0|108.0|-5.90347|-0.06882 +2016-07-01|54.0|109.0|-6.47713|-0.06914 +2016-07-01|54.0|110.0|-7.03684|-0.06916 +2016-07-01|54.0|111.0|-7.58097|-0.06888 +2016-07-01|54.0|112.0|-8.10794|-0.06831 +2016-07-01|54.0|113.0|-8.61628|-0.06746 +2016-07-01|54.0|114.0|-9.10458|-0.06635 +2016-07-01|54.0|115.0|-9.57156|-0.06499 +2016-07-01|54.0|116.0|-10.01602|-0.06339 +2016-07-01|54.0|117.0|-10.43691|-0.06159 +2016-07-01|54.0|118.0|-10.83325|-0.05959 +2016-07-01|54.0|119.0|-11.20422|-0.05742 +2016-07-01|54.0|120.0|-11.5491|-0.0551 +2016-07-01|54.0|121.0|-11.86729|-0.05266 +2016-07-01|54.0|122.0|-12.15831|-0.05011 +2016-07-01|54.0|123.0|-12.4218|-0.04748 +2016-07-01|54.0|124.0|-12.65752|-0.04479 +2016-07-01|54.0|125.0|-12.86531|-0.04207 +2016-07-01|54.0|126.0|-13.04514|-0.03934 +2016-07-01|54.0|127.0|-13.19708|-0.03662 +2016-07-01|54.0|128.0|-13.32126|-0.03393 +2016-07-01|54.0|129.0|-13.41793|-0.03129 +2016-07-01|54.0|130.0|-13.4874|-0.02873 +2016-07-01|54.0|131.0|-13.53005|-0.02626 +2016-07-01|54.0|132.0|-13.54634|-0.0239 +2016-07-01|54.0|133.0|-13.53677|-0.02167 +2016-07-01|54.0|134.0|-13.50192|-0.01958 +2016-07-01|54.0|135.0|-13.44238|-0.01765 +2016-07-01|54.0|136.0|-13.35881|-0.0159 +2016-07-01|54.0|137.0|-13.2519|-0.01433 +2016-07-01|54.0|138.0|-13.12236|-0.01296 +2016-07-01|54.0|139.0|-12.97093|-0.0118 +2016-07-01|54.0|140.0|-12.79837|-0.01086 +2016-07-01|54.0|141.0|-12.60544|-0.01015 +2016-07-01|54.0|142.0|-12.39294|-0.00968 +2016-07-01|54.0|143.0|-12.16166|-0.00945 +2016-07-01|54.0|144.0|-11.91239|-0.00947 +2016-07-01|54.0|145.0|-11.64593|-0.00975 +2016-07-01|54.0|146.0|-11.36306|-0.01028 +2016-07-01|54.0|147.0|-11.06459|-0.01108 +2016-07-01|54.0|148.0|-10.75127|-0.01215 +2016-07-01|54.0|149.0|-10.42389|-0.01347 +2016-07-01|54.0|150.0|-10.08319|-0.01507 +2016-07-01|54.0|151.0|-9.72993|-0.01693 +2016-07-01|54.0|152.0|-9.36482|-0.01905 +2016-07-01|54.0|153.0|-8.98858|-0.02143 +2016-07-01|54.0|154.0|-8.6019|-0.02407 +2016-07-01|54.0|155.0|-8.20546|-0.02696 +2016-07-01|54.0|156.0|-7.79991|-0.03009 +2016-07-01|54.0|157.0|-7.38587|-0.03346 +2016-07-01|54.0|158.0|-6.96398|-0.03707 +2016-07-01|54.0|159.0|-6.53482|-0.04089 +2016-07-01|54.0|160.0|-6.09898|-0.04493 +2016-07-01|54.0|161.0|-5.65699|-0.04918 +2016-07-01|54.0|162.0|-5.2094|-0.05362 +2016-07-01|54.0|163.0|-4.75673|-0.05823 +2016-07-01|54.0|164.0|-4.29946|-0.06302 +2016-07-01|54.0|165.0|-3.83808|-0.06797 +2016-07-01|54.0|166.0|-3.37304|-0.07305 +2016-07-01|54.0|167.0|-2.90479|-0.07827 +2016-07-01|54.0|168.0|-2.43375|-0.0836 +2016-07-01|54.0|169.0|-1.96033|-0.08903 +2016-07-01|54.0|170.0|-1.48493|-0.09455 +2016-07-01|54.0|171.0|-1.00792|-0.10013 +2016-07-01|54.0|172.0|-0.52967|-0.10577 +2016-07-01|54.0|173.0|-0.05054|-0.11145 +2016-07-01|54.0|174.0|0.42914|-0.11715 +2016-07-01|54.0|175.0|0.90902|-0.12285 +2016-07-01|54.0|176.0|1.38879|-0.12855 +2016-07-01|54.0|177.0|1.86814|-0.13422 +2016-07-01|54.0|178.0|2.34674|-0.13984 +2016-07-01|54.0|179.0|2.82432|-0.14542 +2016-07-01|54.0|-1.0|-1.295|0.15816 +2016-07-01|54.0|-2.0|-1.67939|0.15982 +2016-07-01|54.0|-3.0|-2.06898|0.16152 +2016-07-01|54.0|-4.0|-2.46366|0.16325 +2016-07-01|54.0|-5.0|-2.86328|0.16502 +2016-07-01|54.0|-6.0|-3.26767|0.16683 +2016-07-01|54.0|-7.0|-3.67663|0.16866 +2016-07-01|54.0|-8.0|-4.08993|0.17051 +2016-07-01|54.0|-9.0|-4.50733|0.17239 +2016-07-01|54.0|-10.0|-4.92853|0.17429 +2016-07-01|54.0|-11.0|-5.35326|0.1762 +2016-07-01|54.0|-12.0|-5.78118|0.17813 +2016-07-01|54.0|-13.0|-6.21198|0.18006 +2016-07-01|54.0|-14.0|-6.6453|0.18201 +2016-07-01|54.0|-15.0|-7.08078|0.18396 +2016-07-01|54.0|-16.0|-7.51806|0.18592 +2016-07-01|54.0|-17.0|-7.95677|0.18788 +2016-07-01|54.0|-18.0|-8.39651|0.18983 +2016-07-01|54.0|-19.0|-8.83691|0.19179 +2016-07-01|54.0|-20.0|-9.27758|0.19374 +2016-07-01|54.0|-21.0|-9.71812|0.19568 +2016-07-01|54.0|-22.0|-10.15814|0.19762 +2016-07-01|54.0|-23.0|-10.59725|0.19954 +2016-07-01|54.0|-24.0|-11.03506|0.20145 +2016-07-01|54.0|-25.0|-11.47118|0.20335 +2016-07-01|54.0|-26.0|-11.90521|0.20522 +2016-07-01|54.0|-27.0|-12.33676|0.20708 +2016-07-01|54.0|-28.0|-12.76542|0.20891 +2016-07-01|54.0|-29.0|-13.19079|0.21072 +2016-07-01|54.0|-30.0|-13.61248|0.2125 +2016-07-01|54.0|-31.0|-14.03004|0.21424 +2016-07-01|54.0|-32.0|-14.44307|0.21594 +2016-07-01|54.0|-33.0|-14.85111|0.2176 +2016-07-01|54.0|-34.0|-15.25372|0.21922 +2016-07-01|54.0|-35.0|-15.65041|0.22078 +2016-07-01|54.0|-36.0|-16.0407|0.22229 +2016-07-01|54.0|-37.0|-16.42406|0.22374 +2016-07-01|54.0|-38.0|-16.79997|0.22512 +2016-07-01|54.0|-39.0|-17.16784|0.22643 +2016-07-01|54.0|-40.0|-17.52708|0.22766 +2016-07-01|54.0|-41.0|-17.87705|0.22881 +2016-07-01|54.0|-42.0|-18.2171|0.22987 +2016-07-01|54.0|-43.0|-18.54651|0.23083 +2016-07-01|54.0|-44.0|-18.86454|0.23169 +2016-07-01|54.0|-45.0|-19.17043|0.23244 +2016-07-01|54.0|-46.0|-19.46333|0.23307 +2016-07-01|54.0|-47.0|-19.7424|0.23358 +2016-07-01|54.0|-48.0|-20.00674|0.23396 +2016-07-01|54.0|-49.0|-20.25539|0.2342 +2016-07-01|54.0|-50.0|-20.48737|0.23429 +2016-07-01|54.0|-51.0|-20.70166|0.23423 +2016-07-01|54.0|-52.0|-20.89718|0.23401 +2016-07-01|54.0|-53.0|-21.07284|0.23362 +2016-07-01|54.0|-54.0|-21.22748|0.23304 +2016-07-01|54.0|-55.0|-21.35994|0.23228 +2016-07-01|54.0|-56.0|-21.46901|0.23132 +2016-07-01|54.0|-57.0|-21.55344|0.23015 +2016-07-01|54.0|-58.0|-21.61198|0.22876 +2016-07-01|54.0|-59.0|-21.64335|0.22714 +2016-07-01|54.0|-60.0|-21.64625|0.22527 +2016-07-01|54.0|-61.0|-21.61938|0.22315 +2016-07-01|54.0|-62.0|-21.56143|0.22076 +2016-07-01|54.0|-63.0|-21.47111|0.21809 +2016-07-01|54.0|-64.0|-21.34714|0.21513 +2016-07-01|54.0|-65.0|-21.18826|0.21186 +2016-07-01|54.0|-66.0|-20.99327|0.20827 +2016-07-01|54.0|-67.0|-20.76101|0.20433 +2016-07-01|54.0|-68.0|-20.49037|0.20005 +2016-07-01|54.0|-69.0|-20.18035|0.19541 +2016-07-01|54.0|-70.0|-19.83005|0.19038 +2016-07-01|54.0|-71.0|-19.43866|0.18497 +2016-07-01|54.0|-72.0|-19.00554|0.17915 +2016-07-01|54.0|-73.0|-18.53021|0.17293 +2016-07-01|54.0|-74.0|-18.01235|0.16628 +2016-07-01|54.0|-75.0|-17.45188|0.15922 +2016-07-01|54.0|-76.0|-16.84891|0.15173 +2016-07-01|54.0|-77.0|-16.20383|0.14382 +2016-07-01|54.0|-78.0|-15.51728|0.13549 +2016-07-01|54.0|-79.0|-14.79021|0.12675 +2016-07-01|54.0|-80.0|-14.02385|0.11763 +2016-07-01|54.0|-81.0|-13.21976|0.10813 +2016-07-01|54.0|-82.0|-12.37981|0.09828 +2016-07-01|54.0|-83.0|-11.5062|0.08812 +2016-07-01|54.0|-84.0|-10.60143|0.07768 +2016-07-01|54.0|-85.0|-9.66831|0.067 +2016-07-01|54.0|-86.0|-8.70993|0.05613 +2016-07-01|54.0|-87.0|-7.72964|0.04511 +2016-07-01|54.0|-88.0|-6.73099|0.03399 +2016-07-01|54.0|-89.0|-5.71772|0.02284 +2016-07-01|54.0|-90.0|-4.69371|0.0117 +2016-07-01|54.0|-91.0|-3.6629|6.3E-4 +2016-07-01|54.0|-92.0|-2.62928|-0.01032 +2016-07-01|54.0|-93.0|-1.59681|-0.0211 +2016-07-01|54.0|-94.0|-0.56936|-0.03166 +2016-07-01|54.0|-95.0|0.44929|-0.04196 +2016-07-01|54.0|-96.0|1.45556|-0.05197 +2016-07-01|54.0|-97.0|2.44607|-0.06165 +2016-07-01|54.0|-98.0|3.41768|-0.07098 +2016-07-01|54.0|-99.0|4.36753|-0.07994 +2016-07-01|54.0|-100.0|5.29302|-0.08851 +2016-07-01|54.0|-101.0|6.19189|-0.09669 +2016-07-01|54.0|-102.0|7.06214|-0.10448 +2016-07-01|54.0|-103.0|7.90211|-0.11187 +2016-07-01|54.0|-104.0|8.71042|-0.11889 +2016-07-01|54.0|-105.0|9.48595|-0.12552 +2016-07-01|54.0|-106.0|10.22789|-0.1318 +2016-07-01|54.0|-107.0|10.93565|-0.13773 +2016-07-01|54.0|-108.0|11.60886|-0.14334 +2016-07-01|54.0|-109.0|12.24737|-0.14863 +2016-07-01|54.0|-110.0|12.85121|-0.15363 +2016-07-01|54.0|-111.0|13.42057|-0.15836 +2016-07-01|54.0|-112.0|13.95575|-0.16284 +2016-07-01|54.0|-113.0|14.45721|-0.16708 +2016-07-01|54.0|-114.0|14.92547|-0.17111 +2016-07-01|54.0|-115.0|15.36114|-0.17494 +2016-07-01|54.0|-116.0|15.7649|-0.17858 +2016-07-01|54.0|-117.0|16.13747|-0.18206 +2016-07-01|54.0|-118.0|16.47958|-0.18537 +2016-07-01|54.0|-119.0|16.79203|-0.18855 +2016-07-01|54.0|-120.0|17.07558|-0.19159 +2016-07-01|54.0|-121.0|17.33104|-0.19452 +2016-07-01|54.0|-122.0|17.55919|-0.19733 +2016-07-01|54.0|-123.0|17.7608|-0.20003 +2016-07-01|54.0|-124.0|17.93664|-0.20263 +2016-07-01|54.0|-125.0|18.08745|-0.20515 +2016-07-01|54.0|-126.0|18.21398|-0.20757 +2016-07-01|54.0|-127.0|18.31692|-0.20991 +2016-07-01|54.0|-128.0|18.39696|-0.21217 +2016-07-01|54.0|-129.0|18.45478|-0.21435 +2016-07-01|54.0|-130.0|18.491|-0.21645 +2016-07-01|54.0|-131.0|18.50626|-0.21847 +2016-07-01|54.0|-132.0|18.50116|-0.22042 +2016-07-01|54.0|-133.0|18.47627|-0.22228 +2016-07-01|54.0|-134.0|18.43217|-0.22407 +2016-07-01|54.0|-135.0|18.3694|-0.22578 +2016-07-01|54.0|-136.0|18.28848|-0.2274 +2016-07-01|54.0|-137.0|18.18995|-0.22894 +2016-07-01|54.0|-138.0|18.07429|-0.23039 +2016-07-01|54.0|-139.0|17.942|-0.23175 +2016-07-01|54.0|-140.0|17.79356|-0.23301 +2016-07-01|54.0|-141.0|17.62944|-0.23416 +2016-07-01|54.0|-142.0|17.4501|-0.23521 +2016-07-01|54.0|-143.0|17.25599|-0.23615 +2016-07-01|54.0|-144.0|17.04756|-0.23697 +2016-07-01|54.0|-145.0|16.82525|-0.23767 +2016-07-01|54.0|-146.0|16.58949|-0.23824 +2016-07-01|54.0|-147.0|16.34072|-0.23867 +2016-07-01|54.0|-148.0|16.07934|-0.23897 +2016-07-01|54.0|-149.0|15.80578|-0.23911 +2016-07-01|54.0|-150.0|15.52045|-0.2391 +2016-07-01|54.0|-151.0|15.22376|-0.23894 +2016-07-01|54.0|-152.0|14.91611|-0.2386 +2016-07-01|54.0|-153.0|14.59789|-0.2381 +2016-07-01|54.0|-154.0|14.26949|-0.23741 +2016-07-01|54.0|-155.0|13.93131|-0.23654 +2016-07-01|54.0|-156.0|13.58371|-0.23548 +2016-07-01|54.0|-157.0|13.22708|-0.23423 +2016-07-01|54.0|-158.0|12.86178|-0.23278 +2016-07-01|54.0|-159.0|12.48817|-0.23113 +2016-07-01|54.0|-160.0|12.10661|-0.22928 +2016-07-01|54.0|-161.0|11.71745|-0.22721 +2016-07-01|54.0|-162.0|11.32103|-0.22494 +2016-07-01|54.0|-163.0|10.91768|-0.22245 +2016-07-01|54.0|-164.0|10.50774|-0.21976 +2016-07-01|54.0|-165.0|10.09153|-0.21685 +2016-07-01|54.0|-166.0|9.66936|-0.21373 +2016-07-01|54.0|-167.0|9.24155|-0.21041 +2016-07-01|54.0|-168.0|8.80841|-0.20688 +2016-07-01|54.0|-169.0|8.37024|-0.20315 +2016-07-01|54.0|-170.0|7.92732|-0.19922 +2016-07-01|54.0|-171.0|7.47997|-0.19511 +2016-07-01|54.0|-172.0|7.02845|-0.19081 +2016-07-01|54.0|-173.0|6.57307|-0.18633 +2016-07-01|54.0|-174.0|6.11409|-0.18169 +2016-07-01|54.0|-175.0|5.65181|-0.17689 +2016-07-01|54.0|-176.0|5.18649|-0.17195 +2016-07-01|54.0|-177.0|4.71843|-0.16686 +2016-07-01|54.0|-178.0|4.2479|-0.16166 +2016-07-01|54.0|-179.0|3.77519|-0.15634 +2016-07-01|55.0|0.0|-1.04602|0.16089 +2016-07-01|55.0|1.0|-0.65973|0.15931 +2016-07-01|55.0|2.0|-0.27847|0.15777 +2016-07-01|55.0|3.0|0.09774|0.15629 +2016-07-01|55.0|4.0|0.46892|0.15486 +2016-07-01|55.0|5.0|0.83513|0.15349 +2016-07-01|55.0|6.0|1.19642|0.15217 +2016-07-01|55.0|7.0|1.5529|0.1509 +2016-07-01|55.0|8.0|1.90465|0.14969 +2016-07-01|55.0|9.0|2.2518|0.14854 +2016-07-01|55.0|10.0|2.59448|0.14744 +2016-07-01|55.0|11.0|2.93284|0.14639 +2016-07-01|55.0|12.0|3.267|0.14539 +2016-07-01|55.0|13.0|3.59712|0.14444 +2016-07-01|55.0|14.0|3.92335|0.14354 +2016-07-01|55.0|15.0|4.24582|0.14267 +2016-07-01|55.0|16.0|4.56466|0.14184 +2016-07-01|55.0|17.0|4.88|0.14104 +2016-07-01|55.0|18.0|5.19194|0.14027 +2016-07-01|55.0|19.0|5.50057|0.13952 +2016-07-01|55.0|20.0|5.80596|0.13879 +2016-07-01|55.0|21.0|6.10817|0.13806 +2016-07-01|55.0|22.0|6.40721|0.13735 +2016-07-01|55.0|23.0|6.7031|0.13662 +2016-07-01|55.0|24.0|6.99581|0.1359 +2016-07-01|55.0|25.0|7.28529|0.13515 +2016-07-01|55.0|26.0|7.57146|0.13439 +2016-07-01|55.0|27.0|7.85423|0.13361 +2016-07-01|55.0|28.0|8.13346|0.13279 +2016-07-01|55.0|29.0|8.409|0.13194 +2016-07-01|55.0|30.0|8.68068|0.13105 +2016-07-01|55.0|31.0|8.94828|0.13012 +2016-07-01|55.0|32.0|9.21158|0.12914 +2016-07-01|55.0|33.0|9.47034|0.12812 +2016-07-01|55.0|34.0|9.72428|0.12704 +2016-07-01|55.0|35.0|9.97311|0.1259 +2016-07-01|55.0|36.0|10.21654|0.12471 +2016-07-01|55.0|37.0|10.45425|0.12347 +2016-07-01|55.0|38.0|10.6859|0.12216 +2016-07-01|55.0|39.0|10.91115|0.1208 +2016-07-01|55.0|40.0|11.12964|0.11938 +2016-07-01|55.0|41.0|11.34102|0.11791 +2016-07-01|55.0|42.0|11.54491|0.11638 +2016-07-01|55.0|43.0|11.74093|0.11479 +2016-07-01|55.0|44.0|11.9287|0.11316 +2016-07-01|55.0|45.0|12.10784|0.11147 +2016-07-01|55.0|46.0|12.27795|0.10973 +2016-07-01|55.0|47.0|12.43865|0.10795 +2016-07-01|55.0|48.0|12.58953|0.10612 +2016-07-01|55.0|49.0|12.73021|0.10425 +2016-07-01|55.0|50.0|12.86028|0.10233 +2016-07-01|55.0|51.0|12.97935|0.10038 +2016-07-01|55.0|52.0|13.08702|0.09838 +2016-07-01|55.0|53.0|13.18288|0.09634 +2016-07-01|55.0|54.0|13.26654|0.09426 +2016-07-01|55.0|55.0|13.33759|0.09215 +2016-07-01|55.0|56.0|13.39563|0.08999 +2016-07-01|55.0|57.0|13.44027|0.08779 +2016-07-01|55.0|58.0|13.4711|0.08555 +2016-07-01|55.0|59.0|13.48771|0.08326 +2016-07-01|55.0|60.0|13.48972|0.08092 +2016-07-01|55.0|61.0|13.47671|0.07854 +2016-07-01|55.0|62.0|13.4483|0.0761 +2016-07-01|55.0|63.0|13.40409|0.0736 +2016-07-01|55.0|64.0|13.34369|0.07105 +2016-07-01|55.0|65.0|13.26673|0.06843 +2016-07-01|55.0|66.0|13.17281|0.06574 +2016-07-01|55.0|67.0|13.06158|0.06298 +2016-07-01|55.0|68.0|12.93268|0.06014 +2016-07-01|55.0|69.0|12.78575|0.05722 +2016-07-01|55.0|70.0|12.62048|0.05422 +2016-07-01|55.0|71.0|12.43654|0.05113 +2016-07-01|55.0|72.0|12.23364|0.04795 +2016-07-01|55.0|73.0|12.0115|0.04468 +2016-07-01|55.0|74.0|11.76989|0.04131 +2016-07-01|55.0|75.0|11.50859|0.03784 +2016-07-01|55.0|76.0|11.22741|0.03428 +2016-07-01|55.0|77.0|10.92621|0.03062 +2016-07-01|55.0|78.0|10.60489|0.02686 +2016-07-01|55.0|79.0|10.26339|0.02302 +2016-07-01|55.0|80.0|9.9017|0.01908 +2016-07-01|55.0|81.0|9.51986|0.01506 +2016-07-01|55.0|82.0|9.118|0.01096 +2016-07-01|55.0|83.0|8.69629|0.0068 +2016-07-01|55.0|84.0|8.25496|0.00257 +2016-07-01|55.0|85.0|7.79435|-0.0017 +2016-07-01|55.0|86.0|7.31486|-0.00601 +2016-07-01|55.0|87.0|6.81697|-0.01034 +2016-07-01|55.0|88.0|6.30126|-0.01467 +2016-07-01|55.0|89.0|5.76842|-0.01899 +2016-07-01|55.0|90.0|5.2192|-0.02328 +2016-07-01|55.0|91.0|4.65447|-0.02752 +2016-07-01|55.0|92.0|4.07522|-0.03169 +2016-07-01|55.0|93.0|3.48251|-0.03576 +2016-07-01|55.0|94.0|2.87752|-0.03972 +2016-07-01|55.0|95.0|2.26154|-0.04354 +2016-07-01|55.0|96.0|1.63594|-0.0472 +2016-07-01|55.0|97.0|1.0022|-0.05067 +2016-07-01|55.0|98.0|0.36186|-0.05394 +2016-07-01|55.0|99.0|-0.28341|-0.05698 +2016-07-01|55.0|100.0|-0.93192|-0.05978 +2016-07-01|55.0|101.0|-1.58188|-0.06231 +2016-07-01|55.0|102.0|-2.23145|-0.06456 +2016-07-01|55.0|103.0|-2.87878|-0.06652 +2016-07-01|55.0|104.0|-3.52197|-0.06817 +2016-07-01|55.0|105.0|-4.15911|-0.0695 +2016-07-01|55.0|106.0|-4.7883|-0.07051 +2016-07-01|55.0|107.0|-5.40765|-0.0712 +2016-07-01|55.0|108.0|-6.01531|-0.07157 +2016-07-01|55.0|109.0|-6.60948|-0.07161 +2016-07-01|55.0|110.0|-7.1884|-0.07134 +2016-07-01|55.0|111.0|-7.75041|-0.07076 +2016-07-01|55.0|112.0|-8.29392|-0.06988 +2016-07-01|55.0|113.0|-8.81743|-0.06872 +2016-07-01|55.0|114.0|-9.31955|-0.0673 +2016-07-01|55.0|115.0|-9.79901|-0.06562 +2016-07-01|55.0|116.0|-10.25465|-0.06372 +2016-07-01|55.0|117.0|-10.68543|-0.06161 +2016-07-01|55.0|118.0|-11.09044|-0.05932 +2016-07-01|55.0|119.0|-11.46889|-0.05686 +2016-07-01|55.0|120.0|-11.82012|-0.05426 +2016-07-01|55.0|121.0|-12.1436|-0.05156 +2016-07-01|55.0|122.0|-12.43891|-0.04876 +2016-07-01|55.0|123.0|-12.70574|-0.0459 +2016-07-01|55.0|124.0|-12.94393|-0.043 +2016-07-01|55.0|125.0|-13.15339|-0.04008 +2016-07-01|55.0|126.0|-13.33415|-0.03717 +2016-07-01|55.0|127.0|-13.48634|-0.03429 +2016-07-01|55.0|128.0|-13.61016|-0.03146 +2016-07-01|55.0|129.0|-13.70591|-0.0287 +2016-07-01|55.0|130.0|-13.77396|-0.02604 +2016-07-01|55.0|131.0|-13.81475|-0.02348 +2016-07-01|55.0|132.0|-13.82878|-0.02106 +2016-07-01|55.0|133.0|-13.81662|-0.01878 +2016-07-01|55.0|134.0|-13.77885|-0.01666 +2016-07-01|55.0|135.0|-13.71614|-0.01472 +2016-07-01|55.0|136.0|-13.62916|-0.01297 +2016-07-01|55.0|137.0|-13.51864|-0.01142 +2016-07-01|55.0|138.0|-13.38532|-0.01009 +2016-07-01|55.0|139.0|-13.22996|-0.00898 +2016-07-01|55.0|140.0|-13.05335|-0.00811 +2016-07-01|55.0|141.0|-12.85627|-0.00748 +2016-07-01|55.0|142.0|-12.63953|-0.0071 +2016-07-01|55.0|143.0|-12.40393|-0.00697 +2016-07-01|55.0|144.0|-12.15028|-0.00711 +2016-07-01|55.0|145.0|-11.87939|-0.00752 +2016-07-01|55.0|146.0|-11.59205|-0.00819 +2016-07-01|55.0|147.0|-11.28907|-0.00914 +2016-07-01|55.0|148.0|-10.97121|-0.01036 +2016-07-01|55.0|149.0|-10.63926|-0.01186 +2016-07-01|55.0|150.0|-10.29397|-0.01362 +2016-07-01|55.0|151.0|-9.9361|-0.01566 +2016-07-01|55.0|152.0|-9.56635|-0.01797 +2016-07-01|55.0|153.0|-9.18545|-0.02054 +2016-07-01|55.0|154.0|-8.79409|-0.02338 +2016-07-01|55.0|155.0|-8.39295|-0.02647 +2016-07-01|55.0|156.0|-7.98266|-0.02981 +2016-07-01|55.0|157.0|-7.56387|-0.03339 +2016-07-01|55.0|158.0|-7.1372|-0.0372 +2016-07-01|55.0|159.0|-6.70322|-0.04125 +2016-07-01|55.0|160.0|-6.26252|-0.0455 +2016-07-01|55.0|161.0|-5.81565|-0.04996 +2016-07-01|55.0|162.0|-5.36314|-0.05462 +2016-07-01|55.0|163.0|-4.90549|-0.05946 +2016-07-01|55.0|164.0|-4.44321|-0.06447 +2016-07-01|55.0|165.0|-3.97676|-0.06963 +2016-07-01|55.0|166.0|-3.50661|-0.07494 +2016-07-01|55.0|167.0|-3.03318|-0.08038 +2016-07-01|55.0|168.0|-2.55691|-0.08593 +2016-07-01|55.0|169.0|-2.07819|-0.09159 +2016-07-01|55.0|170.0|-1.59742|-0.09732 +2016-07-01|55.0|171.0|-1.11498|-0.10313 +2016-07-01|55.0|172.0|-0.63123|-0.10899 +2016-07-01|55.0|173.0|-0.14651|-0.11488 +2016-07-01|55.0|174.0|0.33882|-0.1208 +2016-07-01|55.0|175.0|0.82444|-0.12673 +2016-07-01|55.0|176.0|1.31003|-0.13264 +2016-07-01|55.0|177.0|1.79528|-0.13853 +2016-07-01|55.0|178.0|2.27987|-0.14438 +2016-07-01|55.0|179.0|2.76352|-0.15018 +2016-07-01|55.0|-1.0|-1.43733|0.16252 +2016-07-01|55.0|-2.0|-1.83359|0.16419 +2016-07-01|55.0|-3.0|-2.23473|0.16591 +2016-07-01|55.0|-4.0|-2.64062|0.16767 +2016-07-01|55.0|-5.0|-3.05112|0.16946 +2016-07-01|55.0|-6.0|-3.46608|0.17128 +2016-07-01|55.0|-7.0|-3.8853|0.17314 +2016-07-01|55.0|-8.0|-4.30855|0.17503 +2016-07-01|55.0|-9.0|-4.73561|0.17693 +2016-07-01|55.0|-10.0|-5.1662|0.17887 +2016-07-01|55.0|-11.0|-5.60004|0.18082 +2016-07-01|55.0|-12.0|-6.03685|0.18278 +2016-07-01|55.0|-13.0|-6.47629|0.18477 +2016-07-01|55.0|-14.0|-6.91804|0.18676 +2016-07-01|55.0|-15.0|-7.36176|0.18876 +2016-07-01|55.0|-16.0|-7.80709|0.19077 +2016-07-01|55.0|-17.0|-8.25368|0.19279 +2016-07-01|55.0|-18.0|-8.70117|0.19481 +2016-07-01|55.0|-19.0|-9.14917|0.19683 +2016-07-01|55.0|-20.0|-9.59731|0.19885 +2016-07-01|55.0|-21.0|-10.04522|0.20086 +2016-07-01|55.0|-22.0|-10.49251|0.20287 +2016-07-01|55.0|-23.0|-10.93879|0.20487 +2016-07-01|55.0|-24.0|-11.3837|0.20687 +2016-07-01|55.0|-25.0|-11.82683|0.20884 +2016-07-01|55.0|-26.0|-12.26779|0.21081 +2016-07-01|55.0|-27.0|-12.7062|0.21275 +2016-07-01|55.0|-28.0|-13.14166|0.21468 +2016-07-01|55.0|-29.0|-13.57376|0.21658 +2016-07-01|55.0|-30.0|-14.0021|0.21846 +2016-07-01|55.0|-31.0|-14.42625|0.2203 +2016-07-01|55.0|-32.0|-14.84578|0.22211 +2016-07-01|55.0|-33.0|-15.26026|0.22388 +2016-07-01|55.0|-34.0|-15.66922|0.22561 +2016-07-01|55.0|-35.0|-16.07218|0.22729 +2016-07-01|55.0|-36.0|-16.46866|0.22892 +2016-07-01|55.0|-37.0|-16.85813|0.2305 +2016-07-01|55.0|-38.0|-17.24005|0.23201 +2016-07-01|55.0|-39.0|-17.61385|0.23346 +2016-07-01|55.0|-40.0|-17.97892|0.23484 +2016-07-01|55.0|-41.0|-18.33465|0.23614 +2016-07-01|55.0|-42.0|-18.68036|0.23735 +2016-07-01|55.0|-43.0|-19.01536|0.23848 +2016-07-01|55.0|-44.0|-19.33891|0.23951 +2016-07-01|55.0|-45.0|-19.65022|0.24045 +2016-07-01|55.0|-46.0|-19.9485|0.24127 +2016-07-01|55.0|-47.0|-20.23289|0.24198 +2016-07-01|55.0|-48.0|-20.50248|0.24257 +2016-07-01|55.0|-49.0|-20.75635|0.24303 +2016-07-01|55.0|-50.0|-20.9935|0.24335 +2016-07-01|55.0|-51.0|-21.21294|0.24353 +2016-07-01|55.0|-52.0|-21.41358|0.24355 +2016-07-01|55.0|-53.0|-21.59434|0.24342 +2016-07-01|55.0|-54.0|-21.75407|0.24311 +2016-07-01|55.0|-55.0|-21.8916|0.24262 +2016-07-01|55.0|-56.0|-22.00572|0.24195 +2016-07-01|55.0|-57.0|-22.09519|0.24107 +2016-07-01|55.0|-58.0|-22.15874|0.23998 +2016-07-01|55.0|-59.0|-22.19508|0.23867 +2016-07-01|55.0|-60.0|-22.20289|0.23711 +2016-07-01|55.0|-61.0|-22.18087|0.23531 +2016-07-01|55.0|-62.0|-22.12767|0.23325 +2016-07-01|55.0|-63.0|-22.04196|0.23091 +2016-07-01|55.0|-64.0|-21.92244|0.22827 +2016-07-01|55.0|-65.0|-21.7678|0.22532 +2016-07-01|55.0|-66.0|-21.57678|0.22205 +2016-07-01|55.0|-67.0|-21.34815|0.21843 +2016-07-01|55.0|-68.0|-21.08076|0.21446 +2016-07-01|55.0|-69.0|-20.77353|0.21011 +2016-07-01|55.0|-70.0|-20.42546|0.20536 +2016-07-01|55.0|-71.0|-20.03567|0.20021 +2016-07-01|55.0|-72.0|-19.60342|0.19463 +2016-07-01|55.0|-73.0|-19.12811|0.18861 +2016-07-01|55.0|-74.0|-18.60935|0.18214 +2016-07-01|55.0|-75.0|-18.04692|0.17522 +2016-07-01|55.0|-76.0|-17.44084|0.16782 +2016-07-01|55.0|-77.0|-16.79137|0.15996 +2016-07-01|55.0|-78.0|-16.09907|0.15163 +2016-07-01|55.0|-79.0|-15.36477|0.14283 +2016-07-01|55.0|-80.0|-14.58961|0.13358 +2016-07-01|55.0|-81.0|-13.77507|0.12389 +2016-07-01|55.0|-82.0|-12.92295|0.11379 +2016-07-01|55.0|-83.0|-12.03539|0.1033 +2016-07-01|55.0|-84.0|-11.11489|0.09246 +2016-07-01|55.0|-85.0|-10.16424|0.0813 +2016-07-01|55.0|-86.0|-9.18654|0.06988 +2016-07-01|55.0|-87.0|-8.18519|0.05823 +2016-07-01|55.0|-88.0|-7.16382|0.04643 +2016-07-01|55.0|-89.0|-6.12626|0.03452 +2016-07-01|55.0|-90.0|-5.07651|0.02256 +2016-07-01|55.0|-91.0|-4.01868|0.01061 +2016-07-01|55.0|-92.0|-2.9569|-0.00126 +2016-07-01|55.0|-93.0|-1.89533|-0.013 +2016-07-01|55.0|-94.0|-0.83804|-0.02455 +2016-07-01|55.0|-95.0|0.211|-0.03587 +2016-07-01|55.0|-96.0|1.24798|-0.0469 +2016-07-01|55.0|-97.0|2.26933|-0.05761 +2016-07-01|55.0|-98.0|3.27169|-0.06797 +2016-07-01|55.0|-99.0|4.252|-0.07795 +2016-07-01|55.0|-100.0|5.20749|-0.08753 +2016-07-01|55.0|-101.0|6.13571|-0.09669 +2016-07-01|55.0|-102.0|7.03454|-0.10543 +2016-07-01|55.0|-103.0|7.90214|-0.11375 +2016-07-01|55.0|-104.0|8.73703|-0.12165 +2016-07-01|55.0|-105.0|9.53801|-0.12913 +2016-07-01|55.0|-106.0|10.30415|-0.13622 +2016-07-01|55.0|-107.0|11.03482|-0.14292 +2016-07-01|55.0|-108.0|11.7296|-0.14924 +2016-07-01|55.0|-109.0|12.3883|-0.15522 +2016-07-01|55.0|-110.0|13.01094|-0.16086 +2016-07-01|55.0|-111.0|13.59768|-0.16619 +2016-07-01|55.0|-112.0|14.14886|-0.17123 +2016-07-01|55.0|-113.0|14.66493|-0.17599 +2016-07-01|55.0|-114.0|15.14644|-0.1805 +2016-07-01|55.0|-115.0|15.59403|-0.18477 +2016-07-01|55.0|-116.0|16.0084|-0.18883 +2016-07-01|55.0|-117.0|16.39033|-0.19268 +2016-07-01|55.0|-118.0|16.74059|-0.19635 +2016-07-01|55.0|-119.0|17.06001|-0.19984 +2016-07-01|55.0|-120.0|17.34942|-0.20317 +2016-07-01|55.0|-121.0|17.60967|-0.20636 +2016-07-01|55.0|-122.0|17.84159|-0.2094 +2016-07-01|55.0|-123.0|18.04601|-0.21232 +2016-07-01|55.0|-124.0|18.22375|-0.21512 +2016-07-01|55.0|-125.0|18.37561|-0.2178 +2016-07-01|55.0|-126.0|18.50237|-0.22037 +2016-07-01|55.0|-127.0|18.60479|-0.22283 +2016-07-01|55.0|-128.0|18.68361|-0.2252 +2016-07-01|55.0|-129.0|18.73953|-0.22747 +2016-07-01|55.0|-130.0|18.77326|-0.22964 +2016-07-01|55.0|-131.0|18.78546|-0.23172 +2016-07-01|55.0|-132.0|18.77678|-0.2337 +2016-07-01|55.0|-133.0|18.74785|-0.23559 +2016-07-01|55.0|-134.0|18.69925|-0.23739 +2016-07-01|55.0|-135.0|18.63159|-0.23909 +2016-07-01|55.0|-136.0|18.54543|-0.2407 +2016-07-01|55.0|-137.0|18.44132|-0.2422 +2016-07-01|55.0|-138.0|18.31979|-0.2436 +2016-07-01|55.0|-139.0|18.18137|-0.2449 +2016-07-01|55.0|-140.0|18.02656|-0.24608 +2016-07-01|55.0|-141.0|17.85586|-0.24715 +2016-07-01|55.0|-142.0|17.66976|-0.24811 +2016-07-01|55.0|-143.0|17.46873|-0.24893 +2016-07-01|55.0|-144.0|17.25325|-0.24964 +2016-07-01|55.0|-145.0|17.02375|-0.2502 +2016-07-01|55.0|-146.0|16.78071|-0.25063 +2016-07-01|55.0|-147.0|16.52456|-0.25091 +2016-07-01|55.0|-148.0|16.25573|-0.25105 +2016-07-01|55.0|-149.0|15.97466|-0.25102 +2016-07-01|55.0|-150.0|15.68178|-0.25084 +2016-07-01|55.0|-151.0|15.37749|-0.25048 +2016-07-01|55.0|-152.0|15.06221|-0.24996 +2016-07-01|55.0|-153.0|14.73635|-0.24925 +2016-07-01|55.0|-154.0|14.4003|-0.24836 +2016-07-01|55.0|-155.0|14.05446|-0.24728 +2016-07-01|55.0|-156.0|13.69921|-0.24601 +2016-07-01|55.0|-157.0|13.33493|-0.24453 +2016-07-01|55.0|-158.0|12.962|-0.24286 +2016-07-01|55.0|-159.0|12.58079|-0.24098 +2016-07-01|55.0|-160.0|12.19164|-0.2389 +2016-07-01|55.0|-161.0|11.79493|-0.2366 +2016-07-01|55.0|-162.0|11.39099|-0.23409 +2016-07-01|55.0|-163.0|10.98017|-0.23137 +2016-07-01|55.0|-164.0|10.56281|-0.22844 +2016-07-01|55.0|-165.0|10.13921|-0.22529 +2016-07-01|55.0|-166.0|9.70973|-0.22194 +2016-07-01|55.0|-167.0|9.27465|-0.21837 +2016-07-01|55.0|-168.0|8.83431|-0.21461 +2016-07-01|55.0|-169.0|8.38899|-0.21064 +2016-07-01|55.0|-170.0|7.93901|-0.20648 +2016-07-01|55.0|-171.0|7.48466|-0.20213 +2016-07-01|55.0|-172.0|7.02622|-0.1976 +2016-07-01|55.0|-173.0|6.56399|-0.19289 +2016-07-01|55.0|-174.0|6.09825|-0.18802 +2016-07-01|55.0|-175.0|5.62928|-0.183 +2016-07-01|55.0|-176.0|5.15738|-0.17782 +2016-07-01|55.0|-177.0|4.68281|-0.17251 +2016-07-01|55.0|-178.0|4.20585|-0.16708 +2016-07-01|55.0|-179.0|3.7268|-0.16154 +2016-07-01|56.0|0.0|-1.18095|0.16547 +2016-07-01|56.0|1.0|-0.78154|0.16387 +2016-07-01|56.0|2.0|-0.38686|0.16232 +2016-07-01|56.0|3.0|0.0031|0.16081 +2016-07-01|56.0|4.0|0.38833|0.15936 +2016-07-01|56.0|5.0|0.76887|0.15796 +2016-07-01|56.0|6.0|1.14477|0.15662 +2016-07-01|56.0|7.0|1.51611|0.15533 +2016-07-01|56.0|8.0|1.88296|0.15409 +2016-07-01|56.0|9.0|2.24542|0.1529 +2016-07-01|56.0|10.0|2.60361|0.15177 +2016-07-01|56.0|11.0|2.95765|0.15068 +2016-07-01|56.0|12.0|3.30765|0.14965 +2016-07-01|56.0|13.0|3.65373|0.14865 +2016-07-01|56.0|14.0|3.99603|0.1477 +2016-07-01|56.0|15.0|4.33466|0.14679 +2016-07-01|56.0|16.0|4.66972|0.14591 +2016-07-01|56.0|17.0|5.00133|0.14507 +2016-07-01|56.0|18.0|5.32956|0.14424 +2016-07-01|56.0|19.0|5.6545|0.14344 +2016-07-01|56.0|20.0|5.9762|0.14266 +2016-07-01|56.0|21.0|6.29468|0.14188 +2016-07-01|56.0|22.0|6.60998|0.14111 +2016-07-01|56.0|23.0|6.92208|0.14034 +2016-07-01|56.0|24.0|7.23094|0.13956 +2016-07-01|56.0|25.0|7.53652|0.13877 +2016-07-01|56.0|26.0|7.83872|0.13796 +2016-07-01|56.0|27.0|8.13745|0.13713 +2016-07-01|56.0|28.0|8.43256|0.13628 +2016-07-01|56.0|29.0|8.72391|0.13539 +2016-07-01|56.0|30.0|9.01131|0.13447 +2016-07-01|56.0|31.0|9.29455|0.1335 +2016-07-01|56.0|32.0|9.5734|0.1325 +2016-07-01|56.0|33.0|9.84761|0.13144 +2016-07-01|56.0|34.0|10.11691|0.13034 +2016-07-01|56.0|35.0|10.38101|0.12919 +2016-07-01|56.0|36.0|10.63959|0.12798 +2016-07-01|56.0|37.0|10.89234|0.12672 +2016-07-01|56.0|38.0|11.13891|0.1254 +2016-07-01|56.0|39.0|11.37895|0.12403 +2016-07-01|56.0|40.0|11.61209|0.1226 +2016-07-01|56.0|41.0|11.83796|0.12112 +2016-07-01|56.0|42.0|12.05617|0.11958 +2016-07-01|56.0|43.0|12.26632|0.11798 +2016-07-01|56.0|44.0|12.46801|0.11633 +2016-07-01|56.0|45.0|12.66084|0.11463 +2016-07-01|56.0|46.0|12.84438|0.11288 +2016-07-01|56.0|47.0|13.01824|0.11108 +2016-07-01|56.0|48.0|13.18197|0.10922 +2016-07-01|56.0|49.0|13.33516|0.10732 +2016-07-01|56.0|50.0|13.47737|0.10537 +2016-07-01|56.0|51.0|13.60818|0.10337 +2016-07-01|56.0|52.0|13.72716|0.10133 +2016-07-01|56.0|53.0|13.83386|0.09923 +2016-07-01|56.0|54.0|13.92786|0.0971 +2016-07-01|56.0|55.0|14.00871|0.09491 +2016-07-01|56.0|56.0|14.07598|0.09267 +2016-07-01|56.0|57.0|14.12922|0.09039 +2016-07-01|56.0|58.0|14.168|0.08805 +2016-07-01|56.0|59.0|14.19187|0.08566 +2016-07-01|56.0|60.0|14.2004|0.08321 +2016-07-01|56.0|61.0|14.19315|0.0807 +2016-07-01|56.0|62.0|14.16968|0.07813 +2016-07-01|56.0|63.0|14.12956|0.07549 +2016-07-01|56.0|64.0|14.07236|0.07279 +2016-07-01|56.0|65.0|13.99767|0.07001 +2016-07-01|56.0|66.0|13.90506|0.06715 +2016-07-01|56.0|67.0|13.79413|0.06422 +2016-07-01|56.0|68.0|13.66448|0.06119 +2016-07-01|56.0|69.0|13.51573|0.05808 +2016-07-01|56.0|70.0|13.34752|0.05488 +2016-07-01|56.0|71.0|13.1595|0.05159 +2016-07-01|56.0|72.0|12.95133|0.04819 +2016-07-01|56.0|73.0|12.72273|0.0447 +2016-07-01|56.0|74.0|12.47341|0.04111 +2016-07-01|56.0|75.0|12.20313|0.03741 +2016-07-01|56.0|76.0|11.9117|0.03361 +2016-07-01|56.0|77.0|11.59894|0.02972 +2016-07-01|56.0|78.0|11.26474|0.02572 +2016-07-01|56.0|79.0|10.90904|0.02163 +2016-07-01|56.0|80.0|10.53182|0.01745 +2016-07-01|56.0|81.0|10.13314|0.01319 +2016-07-01|56.0|82.0|9.71311|0.00885 +2016-07-01|56.0|83.0|9.27194|0.00445 +2016-07-01|56.0|84.0|8.80989|-1.0E-5 +2016-07-01|56.0|85.0|8.32732|-0.00451 +2016-07-01|56.0|86.0|7.82468|-0.00904 +2016-07-01|56.0|87.0|7.3025|-0.01358 +2016-07-01|56.0|88.0|6.76144|-0.01811 +2016-07-01|56.0|89.0|6.20223|-0.02262 +2016-07-01|56.0|90.0|5.62574|-0.02708 +2016-07-01|56.0|91.0|5.03292|-0.03147 +2016-07-01|56.0|92.0|4.42485|-0.03578 +2016-07-01|56.0|93.0|3.80273|-0.03996 +2016-07-01|56.0|94.0|3.16784|-0.04401 +2016-07-01|56.0|95.0|2.52161|-0.0479 +2016-07-01|56.0|96.0|1.86553|-0.0516 +2016-07-01|56.0|97.0|1.20122|-0.05509 +2016-07-01|56.0|98.0|0.53039|-0.05834 +2016-07-01|56.0|99.0|-0.14518|-0.06134 +2016-07-01|56.0|100.0|-0.82363|-0.06407 +2016-07-01|56.0|101.0|-1.50305|-0.0665 +2016-07-01|56.0|102.0|-2.18146|-0.06862 +2016-07-01|56.0|103.0|-2.85686|-0.07042 +2016-07-01|56.0|104.0|-3.52725|-0.07189 +2016-07-01|56.0|105.0|-4.1906|-0.07301 +2016-07-01|56.0|106.0|-4.8449|-0.0738 +2016-07-01|56.0|107.0|-5.48819|-0.07423 +2016-07-01|56.0|108.0|-6.11853|-0.07433 +2016-07-01|56.0|109.0|-6.73405|-0.07409 +2016-07-01|56.0|110.0|-7.33296|-0.07351 +2016-07-01|56.0|111.0|-7.91354|-0.07262 +2016-07-01|56.0|112.0|-8.47421|-0.07143 +2016-07-01|56.0|113.0|-9.01344|-0.06995 +2016-07-01|56.0|114.0|-9.52987|-0.06821 +2016-07-01|56.0|115.0|-10.02222|-0.06621 +2016-07-01|56.0|116.0|-10.48938|-0.064 +2016-07-01|56.0|117.0|-10.93035|-0.06158 +2016-07-01|56.0|118.0|-11.34425|-0.05898 +2016-07-01|56.0|119.0|-11.73037|-0.05624 +2016-07-01|56.0|120.0|-12.08808|-0.05337 +2016-07-01|56.0|121.0|-12.41694|-0.0504 +2016-07-01|56.0|122.0|-12.71658|-0.04736 +2016-07-01|56.0|123.0|-12.98678|-0.04427 +2016-07-01|56.0|124.0|-13.22742|-0.04116 +2016-07-01|56.0|125.0|-13.43851|-0.03806 +2016-07-01|56.0|126.0|-13.62013|-0.03498 +2016-07-01|56.0|127.0|-13.77248|-0.03194 +2016-07-01|56.0|128.0|-13.89584|-0.02898 +2016-07-01|56.0|129.0|-13.99056|-0.02611 +2016-07-01|56.0|130.0|-14.05707|-0.02335 +2016-07-01|56.0|131.0|-14.09587|-0.02073 +2016-07-01|56.0|132.0|-14.10751|-0.01825 +2016-07-01|56.0|133.0|-14.09259|-0.01593 +2016-07-01|56.0|134.0|-14.05177|-0.0138 +2016-07-01|56.0|135.0|-13.98574|-0.01185 +2016-07-01|56.0|136.0|-13.8952|-0.01012 +2016-07-01|56.0|137.0|-13.78093|-0.0086 +2016-07-01|56.0|138.0|-13.64368|-0.00732 +2016-07-01|56.0|139.0|-13.48426|-0.00627 +2016-07-01|56.0|140.0|-13.30345|-0.00548 +2016-07-01|56.0|141.0|-13.10208|-0.00494 +2016-07-01|56.0|142.0|-12.88096|-0.00466 +2016-07-01|56.0|143.0|-12.64092|-0.00465 +2016-07-01|56.0|144.0|-12.38277|-0.00491 +2016-07-01|56.0|145.0|-12.10733|-0.00545 +2016-07-01|56.0|146.0|-11.81541|-0.00627 +2016-07-01|56.0|147.0|-11.50781|-0.00737 +2016-07-01|56.0|148.0|-11.18531|-0.00876 +2016-07-01|56.0|149.0|-10.84869|-0.01042 +2016-07-01|56.0|150.0|-10.49872|-0.01236 +2016-07-01|56.0|151.0|-10.13613|-0.01459 +2016-07-01|56.0|152.0|-9.76166|-0.01708 +2016-07-01|56.0|153.0|-9.37603|-0.01985 +2016-07-01|56.0|154.0|-8.97991|-0.02289 +2016-07-01|56.0|155.0|-8.57398|-0.02618 +2016-07-01|56.0|156.0|-8.1589|-0.02972 +2016-07-01|56.0|157.0|-7.73529|-0.03352 +2016-07-01|56.0|158.0|-7.30376|-0.03754 +2016-07-01|56.0|159.0|-6.86492|-0.0418 +2016-07-01|56.0|160.0|-6.41931|-0.04627 +2016-07-01|56.0|161.0|-5.96751|-0.05095 +2016-07-01|56.0|162.0|-5.51002|-0.05583 +2016-07-01|56.0|163.0|-5.04737|-0.06089 +2016-07-01|56.0|164.0|-4.58003|-0.06612 +2016-07-01|56.0|165.0|-4.10849|-0.0715 +2016-07-01|56.0|166.0|-3.6332|-0.07703 +2016-07-01|56.0|167.0|-3.15458|-0.08269 +2016-07-01|56.0|168.0|-2.67307|-0.08847 +2016-07-01|56.0|169.0|-2.18905|-0.09434 +2016-07-01|56.0|170.0|-1.70293|-0.1003 +2016-07-01|56.0|171.0|-1.21507|-0.10633 +2016-07-01|56.0|172.0|-0.72584|-0.11241 +2016-07-01|56.0|173.0|-0.23559|-0.11853 +2016-07-01|56.0|174.0|0.25535|-0.12467 +2016-07-01|56.0|175.0|0.74665|-0.13082 +2016-07-01|56.0|176.0|1.23798|-0.13695 +2016-07-01|56.0|177.0|1.72905|-0.14307 +2016-07-01|56.0|178.0|2.21954|-0.14914 +2016-07-01|56.0|179.0|2.70915|-0.15516 +2016-07-01|56.0|-1.0|-1.58505|0.16712 +2016-07-01|56.0|-2.0|-1.99376|0.16882 +2016-07-01|56.0|-3.0|-2.40702|0.17055 +2016-07-01|56.0|-4.0|-2.8247|0.17233 +2016-07-01|56.0|-5.0|-3.24667|0.17415 +2016-07-01|56.0|-6.0|-3.67277|0.176 +2016-07-01|56.0|-7.0|-4.10281|0.17788 +2016-07-01|56.0|-8.0|-4.53658|0.1798 +2016-07-01|56.0|-9.0|-4.97386|0.18174 +2016-07-01|56.0|-10.0|-5.41439|0.18371 +2016-07-01|56.0|-11.0|-5.85791|0.1857 +2016-07-01|56.0|-12.0|-6.30414|0.18771 +2016-07-01|56.0|-13.0|-6.75276|0.18973 +2016-07-01|56.0|-14.0|-7.20348|0.19177 +2016-07-01|56.0|-15.0|-7.65596|0.19383 +2016-07-01|56.0|-16.0|-8.10986|0.1959 +2016-07-01|56.0|-17.0|-8.56485|0.19797 +2016-07-01|56.0|-18.0|-9.02057|0.20005 +2016-07-01|56.0|-19.0|-9.47667|0.20214 +2016-07-01|56.0|-20.0|-9.93277|0.20423 +2016-07-01|56.0|-21.0|-10.38852|0.20631 +2016-07-01|56.0|-22.0|-10.84354|0.2084 +2016-07-01|56.0|-23.0|-11.29746|0.21048 +2016-07-01|56.0|-24.0|-11.7499|0.21256 +2016-07-01|56.0|-25.0|-12.20048|0.21462 +2016-07-01|56.0|-26.0|-12.64881|0.21667 +2016-07-01|56.0|-27.0|-13.09451|0.21871 +2016-07-01|56.0|-28.0|-13.53719|0.22073 +2016-07-01|56.0|-29.0|-13.97643|0.22274 +2016-07-01|56.0|-30.0|-14.41183|0.22472 +2016-07-01|56.0|-31.0|-14.84298|0.22667 +2016-07-01|56.0|-32.0|-15.26943|0.22859 +2016-07-01|56.0|-33.0|-15.69075|0.23048 +2016-07-01|56.0|-34.0|-16.10648|0.23233 +2016-07-01|56.0|-35.0|-16.51613|0.23414 +2016-07-01|56.0|-36.0|-16.91921|0.2359 +2016-07-01|56.0|-37.0|-17.31521|0.23761 +2016-07-01|56.0|-38.0|-17.70357|0.23927 +2016-07-01|56.0|-39.0|-18.08374|0.24087 +2016-07-01|56.0|-40.0|-18.4551|0.2424 +2016-07-01|56.0|-41.0|-18.81703|0.24386 +2016-07-01|56.0|-42.0|-19.16887|0.24525 +2016-07-01|56.0|-43.0|-19.50993|0.24656 +2016-07-01|56.0|-44.0|-19.83946|0.24778 +2016-07-01|56.0|-45.0|-20.15671|0.24891 +2016-07-01|56.0|-46.0|-20.46086|0.24994 +2016-07-01|56.0|-47.0|-20.75106|0.25087 +2016-07-01|56.0|-48.0|-21.02644|0.25168 +2016-07-01|56.0|-49.0|-21.28605|0.25237 +2016-07-01|56.0|-50.0|-21.52892|0.25294 +2016-07-01|56.0|-51.0|-21.75405|0.25337 +2016-07-01|56.0|-52.0|-21.96037|0.25367 +2016-07-01|56.0|-53.0|-22.1468|0.25381 +2016-07-01|56.0|-54.0|-22.31219|0.25379 +2016-07-01|56.0|-55.0|-22.45538|0.2536 +2016-07-01|56.0|-56.0|-22.57515|0.25323 +2016-07-01|56.0|-57.0|-22.67025|0.25266 +2016-07-01|56.0|-58.0|-22.73942|0.2519 +2016-07-01|56.0|-59.0|-22.78135|0.25092 +2016-07-01|56.0|-60.0|-22.7947|0.24971 +2016-07-01|56.0|-61.0|-22.77815|0.24825 +2016-07-01|56.0|-62.0|-22.73033|0.24654 +2016-07-01|56.0|-63.0|-22.64988|0.24455 +2016-07-01|56.0|-64.0|-22.53545|0.24227 +2016-07-01|56.0|-65.0|-22.38568|0.23968 +2016-07-01|56.0|-66.0|-22.19927|0.23676 +2016-07-01|56.0|-67.0|-21.97493|0.23349 +2016-07-01|56.0|-68.0|-21.71143|0.22985 +2016-07-01|56.0|-69.0|-21.40761|0.22583 +2016-07-01|56.0|-70.0|-21.06238|0.2214 +2016-07-01|56.0|-71.0|-20.67479|0.21654 +2016-07-01|56.0|-72.0|-20.24398|0.21123 +2016-07-01|56.0|-73.0|-19.76926|0.20545 +2016-07-01|56.0|-74.0|-19.2501|0.19919 +2016-07-01|56.0|-75.0|-18.68617|0.19244 +2016-07-01|56.0|-76.0|-18.07738|0.18517 +2016-07-01|56.0|-77.0|-17.42387|0.17738 +2016-07-01|56.0|-78.0|-16.72608|0.16907 +2016-07-01|56.0|-79.0|-15.98471|0.16024 +2016-07-01|56.0|-80.0|-15.20081|0.15088 +2016-07-01|56.0|-81.0|-14.37577|0.14101 +2016-07-01|56.0|-82.0|-13.5113|0.13066 +2016-07-01|56.0|-83.0|-12.60949|0.11983 +2016-07-01|56.0|-84.0|-11.67279|0.10857 +2016-07-01|56.0|-85.0|-10.70397|0.09692 +2016-07-01|56.0|-86.0|-9.70616|0.08491 +2016-07-01|56.0|-87.0|-8.6828|0.0726 +2016-07-01|56.0|-88.0|-7.63757|0.06005 +2016-07-01|56.0|-89.0|-6.57443|0.04731 +2016-07-01|56.0|-90.0|-5.49749|0.03446 +2016-07-01|56.0|-91.0|-4.41101|0.02156 +2016-07-01|56.0|-92.0|-3.31933|0.00868 +2016-07-01|56.0|-93.0|-2.22678|-0.00412 +2016-07-01|56.0|-94.0|-1.13767|-0.01677 +2016-07-01|56.0|-95.0|-0.05618|-0.02921 +2016-07-01|56.0|-96.0|1.01364|-0.04139 +2016-07-01|56.0|-97.0|2.06798|-0.05325 +2016-07-01|56.0|-98.0|3.10327|-0.06476 +2016-07-01|56.0|-99.0|4.11622|-0.07587 +2016-07-01|56.0|-100.0|5.10385|-0.08657 +2016-07-01|56.0|-101.0|6.06353|-0.09683 +2016-07-01|56.0|-102.0|6.99295|-0.10663 +2016-07-01|56.0|-103.0|7.89015|-0.11598 +2016-07-01|56.0|-104.0|8.75348|-0.12486 +2016-07-01|56.0|-105.0|9.58165|-0.13329 +2016-07-01|56.0|-106.0|10.37364|-0.14126 +2016-07-01|56.0|-107.0|11.12874|-0.14881 +2016-07-01|56.0|-108.0|11.84649|-0.15593 +2016-07-01|56.0|-109.0|12.52667|-0.16266 +2016-07-01|56.0|-110.0|13.16926|-0.169 +2016-07-01|56.0|-111.0|13.77443|-0.17498 +2016-07-01|56.0|-112.0|14.34253|-0.18062 +2016-07-01|56.0|-113.0|14.87402|-0.18595 +2016-07-01|56.0|-114.0|15.36948|-0.19098 +2016-07-01|56.0|-115.0|15.82959|-0.19572 +2016-07-01|56.0|-116.0|16.25509|-0.20022 +2016-07-01|56.0|-117.0|16.64679|-0.20447 +2016-07-01|56.0|-118.0|17.00554|-0.2085 +2016-07-01|56.0|-119.0|17.3322|-0.21232 +2016-07-01|56.0|-120.0|17.62767|-0.21595 +2016-07-01|56.0|-121.0|17.89285|-0.2194 +2016-07-01|56.0|-122.0|18.12863|-0.22268 +2016-07-01|56.0|-123.0|18.33589|-0.22581 +2016-07-01|56.0|-124.0|18.51552|-0.22879 +2016-07-01|56.0|-125.0|18.66838|-0.23163 +2016-07-01|56.0|-126.0|18.79529|-0.23434 +2016-07-01|56.0|-127.0|18.89708|-0.23692 +2016-07-01|56.0|-128.0|18.97454|-0.23938 +2016-07-01|56.0|-129.0|19.02844|-0.24172 +2016-07-01|56.0|-130.0|19.05951|-0.24395 +2016-07-01|56.0|-131.0|19.06849|-0.24607 +2016-07-01|56.0|-132.0|19.05605|-0.24807 +2016-07-01|56.0|-133.0|19.02288|-0.24997 +2016-07-01|56.0|-134.0|18.96961|-0.25175 +2016-07-01|56.0|-135.0|18.89688|-0.25342 +2016-07-01|56.0|-136.0|18.80528|-0.25498 +2016-07-01|56.0|-137.0|18.69542|-0.25643 +2016-07-01|56.0|-138.0|18.56785|-0.25776 +2016-07-01|56.0|-139.0|18.42314|-0.25897 +2016-07-01|56.0|-140.0|18.26182|-0.26006 +2016-07-01|56.0|-141.0|18.0844|-0.26102 +2016-07-01|56.0|-142.0|17.89142|-0.26185 +2016-07-01|56.0|-143.0|17.68336|-0.26254 +2016-07-01|56.0|-144.0|17.46071|-0.2631 +2016-07-01|56.0|-145.0|17.22396|-0.26351 +2016-07-01|56.0|-146.0|16.97356|-0.26378 +2016-07-01|56.0|-147.0|16.70999|-0.26388 +2016-07-01|56.0|-148.0|16.43369|-0.26383 +2016-07-01|56.0|-149.0|16.1451|-0.26362 +2016-07-01|56.0|-150.0|15.84466|-0.26323 +2016-07-01|56.0|-151.0|15.5328|-0.26267 +2016-07-01|56.0|-152.0|15.20994|-0.26193 +2016-07-01|56.0|-153.0|14.8765|-0.261 +2016-07-01|56.0|-154.0|14.53287|-0.25989 +2016-07-01|56.0|-155.0|14.17946|-0.25858 +2016-07-01|56.0|-156.0|13.81667|-0.25707 +2016-07-01|56.0|-157.0|13.44487|-0.25536 +2016-07-01|56.0|-158.0|13.06445|-0.25344 +2016-07-01|56.0|-159.0|12.67578|-0.25131 +2016-07-01|56.0|-160.0|12.27922|-0.24898 +2016-07-01|56.0|-161.0|11.87514|-0.24643 +2016-07-01|56.0|-162.0|11.46387|-0.24367 +2016-07-01|56.0|-163.0|11.04577|-0.2407 +2016-07-01|56.0|-164.0|10.62117|-0.23752 +2016-07-01|56.0|-165.0|10.19041|-0.23412 +2016-07-01|56.0|-166.0|9.75381|-0.23051 +2016-07-01|56.0|-167.0|9.31168|-0.2267 +2016-07-01|56.0|-168.0|8.86435|-0.22268 +2016-07-01|56.0|-169.0|8.41211|-0.21847 +2016-07-01|56.0|-170.0|7.95527|-0.21406 +2016-07-01|56.0|-171.0|7.49412|-0.20947 +2016-07-01|56.0|-172.0|7.02896|-0.20469 +2016-07-01|56.0|-173.0|6.56009|-0.19975 +2016-07-01|56.0|-174.0|6.08778|-0.19463 +2016-07-01|56.0|-175.0|5.61231|-0.18937 +2016-07-01|56.0|-176.0|5.13398|-0.18396 +2016-07-01|56.0|-177.0|4.65306|-0.17842 +2016-07-01|56.0|-178.0|4.16984|-0.17276 +2016-07-01|56.0|-179.0|3.68459|-0.16698 +2016-07-01|57.0|0.0|-1.31988|0.17032 +2016-07-01|57.0|1.0|-0.90678|0.16869 +2016-07-01|57.0|2.0|-0.49809|0.16711 +2016-07-01|57.0|3.0|-0.09381|0.16559 +2016-07-01|57.0|4.0|0.30604|0.16411 +2016-07-01|57.0|5.0|0.70149|0.16269 +2016-07-01|57.0|6.0|1.09258|0.16131 +2016-07-01|57.0|7.0|1.47935|0.15999 +2016-07-01|57.0|8.0|1.86188|0.15872 +2016-07-01|57.0|9.0|2.24025|0.1575 +2016-07-01|57.0|10.0|2.61453|0.15633 +2016-07-01|57.0|11.0|2.98484|0.15521 +2016-07-01|57.0|12.0|3.35126|0.15413 +2016-07-01|57.0|13.0|3.71391|0.15309 +2016-07-01|57.0|14.0|4.07287|0.1521 +2016-07-01|57.0|15.0|4.42826|0.15114 +2016-07-01|57.0|16.0|4.78015|0.15021 +2016-07-01|57.0|17.0|5.12862|0.14931 +2016-07-01|57.0|18.0|5.47376|0.14844 +2016-07-01|57.0|19.0|5.8156|0.14758 +2016-07-01|57.0|20.0|6.1542|0.14674 +2016-07-01|57.0|21.0|6.48957|0.14591 +2016-07-01|57.0|22.0|6.82171|0.14509 +2016-07-01|57.0|23.0|7.1506|0.14426 +2016-07-01|57.0|24.0|7.4762|0.14343 +2016-07-01|57.0|25.0|7.79844|0.14259 +2016-07-01|57.0|26.0|8.11724|0.14174 +2016-07-01|57.0|27.0|8.43248|0.14086 +2016-07-01|57.0|28.0|8.74401|0.13996 +2016-07-01|57.0|29.0|9.05169|0.13903 +2016-07-01|57.0|30.0|9.35531|0.13807 +2016-07-01|57.0|31.0|9.65468|0.13707 +2016-07-01|57.0|32.0|9.94955|0.13603 +2016-07-01|57.0|33.0|10.23968|0.13495 +2016-07-01|57.0|34.0|10.52478|0.13382 +2016-07-01|57.0|35.0|10.80456|0.13264 +2016-07-01|57.0|36.0|11.07871|0.13141 +2016-07-01|57.0|37.0|11.34689|0.13013 +2016-07-01|57.0|38.0|11.60875|0.1288 +2016-07-01|57.0|39.0|11.86394|0.12741 +2016-07-01|57.0|40.0|12.11208|0.12597 +2016-07-01|57.0|41.0|12.35278|0.12447 +2016-07-01|57.0|42.0|12.58563|0.12292 +2016-07-01|57.0|43.0|12.81024|0.12131 +2016-07-01|57.0|44.0|13.02617|0.11965 +2016-07-01|57.0|45.0|13.23301|0.11793 +2016-07-01|57.0|46.0|13.43032|0.11615 +2016-07-01|57.0|47.0|13.61765|0.11433 +2016-07-01|57.0|48.0|13.79457|0.11245 +2016-07-01|57.0|49.0|13.96061|0.11051 +2016-07-01|57.0|50.0|14.11533|0.10853 +2016-07-01|57.0|51.0|14.25826|0.10649 +2016-07-01|57.0|52.0|14.38894|0.1044 +2016-07-01|57.0|53.0|14.50689|0.10225 +2016-07-01|57.0|54.0|14.61166|0.10005 +2016-07-01|57.0|55.0|14.70276|0.0978 +2016-07-01|57.0|56.0|14.77973|0.09549 +2016-07-01|57.0|57.0|14.84207|0.09311 +2016-07-01|57.0|58.0|14.88932|0.09068 +2016-07-01|57.0|59.0|14.921|0.08819 +2016-07-01|57.0|60.0|14.93663|0.08563 +2016-07-01|57.0|61.0|14.93572|0.083 +2016-07-01|57.0|62.0|14.9178|0.08031 +2016-07-01|57.0|63.0|14.8824|0.07753 +2016-07-01|57.0|64.0|14.82904|0.07468 +2016-07-01|57.0|65.0|14.75727|0.07175 +2016-07-01|57.0|66.0|14.66662|0.06873 +2016-07-01|57.0|67.0|14.55664|0.06562 +2016-07-01|57.0|68.0|14.4269|0.06241 +2016-07-01|57.0|69.0|14.27698|0.05912 +2016-07-01|57.0|70.0|14.10646|0.05572 +2016-07-01|57.0|71.0|13.91497|0.05221 +2016-07-01|57.0|72.0|13.70212|0.04861 +2016-07-01|57.0|73.0|13.46759|0.04489 +2016-07-01|57.0|74.0|13.21107|0.04107 +2016-07-01|57.0|75.0|12.93229|0.03714 +2016-07-01|57.0|76.0|12.63101|0.03311 +2016-07-01|57.0|77.0|12.30704|0.02897 +2016-07-01|57.0|78.0|11.96026|0.02473 +2016-07-01|57.0|79.0|11.59057|0.02039 +2016-07-01|57.0|80.0|11.19796|0.01596 +2016-07-01|57.0|81.0|10.78249|0.01144 +2016-07-01|57.0|82.0|10.34426|0.00685 +2016-07-01|57.0|83.0|9.8835|0.0022 +2016-07-01|57.0|84.0|9.4005|-0.0025 +2016-07-01|57.0|85.0|8.89564|-0.00724 +2016-07-01|57.0|86.0|8.36942|-0.012 +2016-07-01|57.0|87.0|7.82243|-0.01676 +2016-07-01|57.0|88.0|7.25538|-0.02151 +2016-07-01|57.0|89.0|6.66908|-0.02621 +2016-07-01|57.0|90.0|6.06449|-0.03086 +2016-07-01|57.0|91.0|5.44265|-0.03542 +2016-07-01|57.0|92.0|4.80477|-0.03986 +2016-07-01|57.0|93.0|4.15215|-0.04418 +2016-07-01|57.0|94.0|3.48621|-0.04833 +2016-07-01|57.0|95.0|2.8085|-0.05229 +2016-07-01|57.0|96.0|2.12068|-0.05603 +2016-07-01|57.0|97.0|1.42452|-0.05954 +2016-07-01|57.0|98.0|0.72186|-0.06278 +2016-07-01|57.0|99.0|0.01465|-0.06574 +2016-07-01|57.0|100.0|-0.6951|-0.0684 +2016-07-01|57.0|101.0|-1.40531|-0.07073 +2016-07-01|57.0|102.0|-2.11387|-0.07272 +2016-07-01|57.0|103.0|-2.81864|-0.07435 +2016-07-01|57.0|104.0|-3.51748|-0.07563 +2016-07-01|57.0|105.0|-4.20823|-0.07655 +2016-07-01|57.0|106.0|-4.88879|-0.07709 +2016-07-01|57.0|107.0|-5.55709|-0.07727 +2016-07-01|57.0|108.0|-6.21111|-0.07708 +2016-07-01|57.0|109.0|-6.84892|-0.07655 +2016-07-01|57.0|110.0|-7.46867|-0.07567 +2016-07-01|57.0|111.0|-8.06862|-0.07446 +2016-07-01|57.0|112.0|-8.64714|-0.07295 +2016-07-01|57.0|113.0|-9.20274|-0.07114 +2016-07-01|57.0|114.0|-9.73402|-0.06907 +2016-07-01|57.0|115.0|-10.23977|-0.06675 +2016-07-01|57.0|116.0|-10.71887|-0.06422 +2016-07-01|57.0|117.0|-11.17038|-0.06149 +2016-07-01|57.0|118.0|-11.59348|-0.0586 +2016-07-01|57.0|119.0|-11.9875|-0.05557 +2016-07-01|57.0|120.0|-12.3519|-0.05243 +2016-07-01|57.0|121.0|-12.68628|-0.0492 +2016-07-01|57.0|122.0|-12.99037|-0.04593 +2016-07-01|57.0|123.0|-13.264|-0.04262 +2016-07-01|57.0|124.0|-13.50715|-0.03931 +2016-07-01|57.0|125.0|-13.71988|-0.03602 +2016-07-01|57.0|126.0|-13.90235|-0.03278 +2016-07-01|57.0|127.0|-14.05484|-0.0296 +2016-07-01|57.0|128.0|-14.17769|-0.02652 +2016-07-01|57.0|129.0|-14.27132|-0.02355 +2016-07-01|57.0|130.0|-14.33622|-0.02071 +2016-07-01|57.0|131.0|-14.37294|-0.01803 +2016-07-01|57.0|132.0|-14.38209|-0.0155 +2016-07-01|57.0|133.0|-14.36433|-0.01317 +2016-07-01|57.0|134.0|-14.32036|-0.01102 +2016-07-01|57.0|135.0|-14.25089|-0.00909 +2016-07-01|57.0|136.0|-14.1567|-0.00739 +2016-07-01|57.0|137.0|-14.03856|-0.00592 +2016-07-01|57.0|138.0|-13.89729|-0.00469 +2016-07-01|57.0|139.0|-13.73369|-0.00372 +2016-07-01|57.0|140.0|-13.5486|-0.00301 +2016-07-01|57.0|141.0|-13.34284|-0.00257 +2016-07-01|57.0|142.0|-13.11725|-0.0024 +2016-07-01|57.0|143.0|-12.87267|-0.00251 +2016-07-01|57.0|144.0|-12.60994|-0.00291 +2016-07-01|57.0|145.0|-12.32986|-0.00359 +2016-07-01|57.0|146.0|-12.03327|-0.00457 +2016-07-01|57.0|147.0|-11.72097|-0.00583 +2016-07-01|57.0|148.0|-11.39376|-0.00738 +2016-07-01|57.0|149.0|-11.0524|-0.00922 +2016-07-01|57.0|150.0|-10.69767|-0.01134 +2016-07-01|57.0|151.0|-10.33032|-0.01375 +2016-07-01|57.0|152.0|-9.95107|-0.01644 +2016-07-01|57.0|153.0|-9.56063|-0.01941 +2016-07-01|57.0|154.0|-9.1597|-0.02264 +2016-07-01|57.0|155.0|-8.74895|-0.02614 +2016-07-01|57.0|156.0|-8.32902|-0.02989 +2016-07-01|57.0|157.0|-7.90054|-0.03389 +2016-07-01|57.0|158.0|-7.46413|-0.03814 +2016-07-01|57.0|159.0|-7.02037|-0.04261 +2016-07-01|57.0|160.0|-6.56983|-0.04729 +2016-07-01|57.0|161.0|-6.11306|-0.05219 +2016-07-01|57.0|162.0|-5.65057|-0.05729 +2016-07-01|57.0|163.0|-5.18289|-0.06256 +2016-07-01|57.0|164.0|-4.71049|-0.06801 +2016-07-01|57.0|165.0|-4.23384|-0.07362 +2016-07-01|57.0|166.0|-3.75339|-0.07937 +2016-07-01|57.0|167.0|-3.26958|-0.08525 +2016-07-01|57.0|168.0|-2.78283|-0.09125 +2016-07-01|57.0|169.0|-2.29353|-0.09734 +2016-07-01|57.0|170.0|-1.80207|-0.10352 +2016-07-01|57.0|171.0|-1.30882|-0.10978 +2016-07-01|57.0|172.0|-0.81414|-0.11608 +2016-07-01|57.0|173.0|-0.31839|-0.12242 +2016-07-01|57.0|174.0|0.17811|-0.12879 +2016-07-01|57.0|175.0|0.67503|-0.13516 +2016-07-01|57.0|176.0|1.17205|-0.14153 +2016-07-01|57.0|177.0|1.66886|-0.14787 +2016-07-01|57.0|178.0|2.16516|-0.15417 +2016-07-01|57.0|179.0|2.66065|-0.16042 +2016-07-01|57.0|-1.0|-1.73733|0.17199 +2016-07-01|57.0|-2.0|-2.15908|0.1737 +2016-07-01|57.0|-3.0|-2.58503|0.17547 +2016-07-01|57.0|-4.0|-3.01507|0.17727 +2016-07-01|57.0|-5.0|-3.44908|0.17911 +2016-07-01|57.0|-6.0|-3.88689|0.18099 +2016-07-01|57.0|-7.0|-4.32832|0.1829 +2016-07-01|57.0|-8.0|-4.77318|0.18485 +2016-07-01|57.0|-9.0|-5.22125|0.18682 +2016-07-01|57.0|-10.0|-5.67229|0.18883 +2016-07-01|57.0|-11.0|-6.12604|0.19085 +2016-07-01|57.0|-12.0|-6.58225|0.19291 +2016-07-01|57.0|-13.0|-7.04061|0.19498 +2016-07-01|57.0|-14.0|-7.50083|0.19707 +2016-07-01|57.0|-15.0|-7.96261|0.19918 +2016-07-01|57.0|-16.0|-8.42561|0.2013 +2016-07-01|57.0|-17.0|-8.88952|0.20344 +2016-07-01|57.0|-18.0|-9.35399|0.20558 +2016-07-01|57.0|-19.0|-9.81869|0.20773 +2016-07-01|57.0|-20.0|-10.28325|0.20989 +2016-07-01|57.0|-21.0|-10.74733|0.21206 +2016-07-01|57.0|-22.0|-11.21056|0.21422 +2016-07-01|57.0|-23.0|-11.67258|0.21638 +2016-07-01|57.0|-24.0|-12.13303|0.21854 +2016-07-01|57.0|-25.0|-12.59152|0.2207 +2016-07-01|57.0|-26.0|-13.04768|0.22284 +2016-07-01|57.0|-27.0|-13.50112|0.22498 +2016-07-01|57.0|-28.0|-13.95146|0.2271 +2016-07-01|57.0|-29.0|-14.39829|0.22921 +2016-07-01|57.0|-30.0|-14.8412|0.2313 +2016-07-01|57.0|-31.0|-15.27978|0.23336 +2016-07-01|57.0|-32.0|-15.7136|0.2354 +2016-07-01|57.0|-33.0|-16.1422|0.23741 +2016-07-01|57.0|-34.0|-16.56514|0.23939 +2016-07-01|57.0|-35.0|-16.98194|0.24134 +2016-07-01|57.0|-36.0|-17.39209|0.24324 +2016-07-01|57.0|-37.0|-17.79507|0.2451 +2016-07-01|57.0|-38.0|-18.19035|0.24691 +2016-07-01|57.0|-39.0|-18.57736|0.24867 +2016-07-01|57.0|-40.0|-18.9555|0.25037 +2016-07-01|57.0|-41.0|-19.32414|0.25201 +2016-07-01|57.0|-42.0|-19.68262|0.25359 +2016-07-01|57.0|-43.0|-20.03026|0.25509 +2016-07-01|57.0|-44.0|-20.36632|0.25651 +2016-07-01|57.0|-45.0|-20.69004|0.25785 +2016-07-01|57.0|-46.0|-21.00063|0.25911 +2016-07-01|57.0|-47.0|-21.29723|0.26026 +2016-07-01|57.0|-48.0|-21.57898|0.26132 +2016-07-01|57.0|-49.0|-21.84493|0.26227 +2016-07-01|57.0|-50.0|-22.09414|0.2631 +2016-07-01|57.0|-51.0|-22.32559|0.26381 +2016-07-01|57.0|-52.0|-22.53823|0.26438 +2016-07-01|57.0|-53.0|-22.73098|0.26482 +2016-07-01|57.0|-54.0|-22.9027|0.26511 +2016-07-01|57.0|-55.0|-23.05222|0.26524 +2016-07-01|57.0|-56.0|-23.17832|0.2652 +2016-07-01|57.0|-57.0|-23.27976|0.26498 +2016-07-01|57.0|-58.0|-23.35526|0.26456 +2016-07-01|57.0|-59.0|-23.4035|0.26394 +2016-07-01|57.0|-60.0|-23.42313|0.2631 +2016-07-01|57.0|-61.0|-23.41279|0.26202 +2016-07-01|57.0|-62.0|-23.3711|0.26069 +2016-07-01|57.0|-63.0|-23.29667|0.25908 +2016-07-01|57.0|-64.0|-23.18809|0.25719 +2016-07-01|57.0|-65.0|-23.04398|0.25499 +2016-07-01|57.0|-66.0|-22.86295|0.25246 +2016-07-01|57.0|-67.0|-22.64367|0.24957 +2016-07-01|57.0|-68.0|-22.38484|0.24632 +2016-07-01|57.0|-69.0|-22.0852|0.24266 +2016-07-01|57.0|-70.0|-21.74359|0.23858 +2016-07-01|57.0|-71.0|-21.35894|0.23405 +2016-07-01|57.0|-72.0|-20.9303|0.22906 +2016-07-01|57.0|-73.0|-20.45685|0.22357 +2016-07-01|57.0|-74.0|-19.93796|0.21756 +2016-07-01|57.0|-75.0|-19.37315|0.21101 +2016-07-01|57.0|-76.0|-18.76221|0.20391 +2016-07-01|57.0|-77.0|-18.10515|0.19623 +2016-07-01|57.0|-78.0|-17.40227|0.18797 +2016-07-01|57.0|-79.0|-16.65415|0.17912 +2016-07-01|57.0|-80.0|-15.86171|0.16967 +2016-07-01|57.0|-81.0|-15.02624|0.15964 +2016-07-01|57.0|-82.0|-14.14936|0.14904 +2016-07-01|57.0|-83.0|-13.23308|0.13788 +2016-07-01|57.0|-84.0|-12.27979|0.12619 +2016-07-01|57.0|-85.0|-11.29225|0.11401 +2016-07-01|57.0|-86.0|-10.27358|0.10139 +2016-07-01|57.0|-87.0|-9.22726|0.08837 +2016-07-01|57.0|-88.0|-8.15705|0.07501 +2016-07-01|57.0|-89.0|-7.06699|0.06138 +2016-07-01|57.0|-90.0|-5.96134|0.04756 +2016-07-01|57.0|-91.0|-4.84454|0.03361 +2016-07-01|57.0|-92.0|-3.72109|0.01961 +2016-07-01|57.0|-93.0|-2.59557|0.00564 +2016-07-01|57.0|-94.0|-1.47251|-0.00822 +2016-07-01|57.0|-95.0|-0.35635|-0.02191 +2016-07-01|57.0|-96.0|0.74862|-0.03536 +2016-07-01|57.0|-97.0|1.83831|-0.04851 +2016-07-01|57.0|-98.0|2.90891|-0.0613 +2016-07-01|57.0|-99.0|3.95688|-0.07369 +2016-07-01|57.0|-100.0|4.97901|-0.08564 +2016-07-01|57.0|-101.0|5.97246|-0.09712 +2016-07-01|57.0|-102.0|6.93472|-0.10812 +2016-07-01|57.0|-103.0|7.86365|-0.11861 +2016-07-01|57.0|-104.0|8.75748|-0.12859 +2016-07-01|57.0|-105.0|9.61478|-0.13806 +2016-07-01|57.0|-106.0|10.43445|-0.14703 +2016-07-01|57.0|-107.0|11.21567|-0.15552 +2016-07-01|57.0|-108.0|11.95795|-0.16352 +2016-07-01|57.0|-109.0|12.66102|-0.17107 +2016-07-01|57.0|-110.0|13.32486|-0.17818 +2016-07-01|57.0|-111.0|13.94963|-0.18487 +2016-07-01|57.0|-112.0|14.53568|-0.19117 +2016-07-01|57.0|-113.0|15.08349|-0.1971 +2016-07-01|57.0|-114.0|15.5937|-0.20268 +2016-07-01|57.0|-115.0|16.06701|-0.20794 +2016-07-01|57.0|-116.0|16.50422|-0.21289 +2016-07-01|57.0|-117.0|16.90619|-0.21756 +2016-07-01|57.0|-118.0|17.27382|-0.22197 +2016-07-01|57.0|-119.0|17.60805|-0.22613 +2016-07-01|57.0|-120.0|17.90983|-0.23006 +2016-07-01|57.0|-121.0|18.18011|-0.23378 +2016-07-01|57.0|-122.0|18.41987|-0.2373 +2016-07-01|57.0|-123.0|18.63006|-0.24063 +2016-07-01|57.0|-124.0|18.81161|-0.24379 +2016-07-01|57.0|-125.0|18.96544|-0.24678 +2016-07-01|57.0|-126.0|19.09247|-0.24961 +2016-07-01|57.0|-127.0|19.19356|-0.25229 +2016-07-01|57.0|-128.0|19.26957|-0.25483 +2016-07-01|57.0|-129.0|19.32132|-0.25722 +2016-07-01|57.0|-130.0|19.34961|-0.25949 +2016-07-01|57.0|-131.0|19.35521|-0.26162 +2016-07-01|57.0|-132.0|19.33887|-0.26362 +2016-07-01|57.0|-133.0|19.3013|-0.26549 +2016-07-01|57.0|-134.0|19.24319|-0.26724 +2016-07-01|57.0|-135.0|19.16523|-0.26886 +2016-07-01|57.0|-136.0|19.06805|-0.27035 +2016-07-01|57.0|-137.0|18.95228|-0.27171 +2016-07-01|57.0|-138.0|18.81853|-0.27294 +2016-07-01|57.0|-139.0|18.66739|-0.27404 +2016-07-01|57.0|-140.0|18.49941|-0.275 +2016-07-01|57.0|-141.0|18.31517|-0.27582 +2016-07-01|57.0|-142.0|18.11519|-0.27651 +2016-07-01|57.0|-143.0|17.9|-0.27704 +2016-07-01|57.0|-144.0|17.67011|-0.27743 +2016-07-01|57.0|-145.0|17.42602|-0.27766 +2016-07-01|57.0|-146.0|17.16822|-0.27773 +2016-07-01|57.0|-147.0|16.89719|-0.27764 +2016-07-01|57.0|-148.0|16.61338|-0.27738 +2016-07-01|57.0|-149.0|16.31726|-0.27695 +2016-07-01|57.0|-150.0|16.00928|-0.27634 +2016-07-01|57.0|-151.0|15.68987|-0.27555 +2016-07-01|57.0|-152.0|15.35947|-0.27457 +2016-07-01|57.0|-153.0|15.01849|-0.2734 +2016-07-01|57.0|-154.0|14.66735|-0.27203 +2016-07-01|57.0|-155.0|14.30646|-0.27047 +2016-07-01|57.0|-156.0|13.93621|-0.26871 +2016-07-01|57.0|-157.0|13.557|-0.26673 +2016-07-01|57.0|-158.0|13.16921|-0.26456 +2016-07-01|57.0|-159.0|12.77321|-0.26217 +2016-07-01|57.0|-160.0|12.36938|-0.25957 +2016-07-01|57.0|-161.0|11.95806|-0.25675 +2016-07-01|57.0|-162.0|11.53963|-0.25373 +2016-07-01|57.0|-163.0|11.11441|-0.25049 +2016-07-01|57.0|-164.0|10.68276|-0.24703 +2016-07-01|57.0|-165.0|10.245|-0.24337 +2016-07-01|57.0|-166.0|9.80146|-0.2395 +2016-07-01|57.0|-167.0|9.35246|-0.23542 +2016-07-01|57.0|-168.0|8.89831|-0.23114 +2016-07-01|57.0|-169.0|8.43933|-0.22667 +2016-07-01|57.0|-170.0|7.97581|-0.222 +2016-07-01|57.0|-171.0|7.50805|-0.21715 +2016-07-01|57.0|-172.0|7.03634|-0.21212 +2016-07-01|57.0|-173.0|6.56099|-0.20693 +2016-07-01|57.0|-174.0|6.08226|-0.20157 +2016-07-01|57.0|-175.0|5.60045|-0.19605 +2016-07-01|57.0|-176.0|5.11585|-0.1904 +2016-07-01|57.0|-177.0|4.62872|-0.18462 +2016-07-01|57.0|-178.0|4.13935|-0.17872 +2016-07-01|57.0|-179.0|3.64803|-0.17271 +2016-07-01|58.0|0.0|-1.46191|0.17543 +2016-07-01|58.0|1.0|-1.03457|0.17378 +2016-07-01|58.0|2.0|-0.61131|0.17218 +2016-07-01|58.0|3.0|-0.19216|0.17063 +2016-07-01|58.0|4.0|0.22286|0.16912 +2016-07-01|58.0|5.0|0.63377|0.16767 +2016-07-01|58.0|6.0|1.04059|0.16627 +2016-07-01|58.0|7.0|1.44335|0.16491 +2016-07-01|58.0|8.0|1.84211|0.16361 +2016-07-01|58.0|9.0|2.23692|0.16235 +2016-07-01|58.0|10.0|2.62784|0.16114 +2016-07-01|58.0|11.0|3.01497|0.15998 +2016-07-01|58.0|12.0|3.39837|0.15885 +2016-07-01|58.0|13.0|3.77812|0.15777 +2016-07-01|58.0|14.0|4.15431|0.15673 +2016-07-01|58.0|15.0|4.527|0.15572 +2016-07-01|58.0|16.0|4.89627|0.15474 +2016-07-01|58.0|17.0|5.26217|0.15379 +2016-07-01|58.0|18.0|5.62476|0.15286 +2016-07-01|58.0|19.0|5.98407|0.15195 +2016-07-01|58.0|20.0|6.34011|0.15106 +2016-07-01|58.0|21.0|6.69291|0.15017 +2016-07-01|58.0|22.0|7.04244|0.14929 +2016-07-01|58.0|23.0|7.38867|0.14841 +2016-07-01|58.0|24.0|7.73154|0.14753 +2016-07-01|58.0|25.0|8.07098|0.14664 +2016-07-01|58.0|26.0|8.40689|0.14573 +2016-07-01|58.0|27.0|8.73915|0.14481 +2016-07-01|58.0|28.0|9.0676|0.14386 +2016-07-01|58.0|29.0|9.3921|0.14289 +2016-07-01|58.0|30.0|9.71243|0.14188 +2016-07-01|58.0|31.0|10.02839|0.14085 +2016-07-01|58.0|32.0|10.33973|0.13977 +2016-07-01|58.0|33.0|10.64621|0.13865 +2016-07-01|58.0|34.0|10.94754|0.1375 +2016-07-01|58.0|35.0|11.24341|0.13629 +2016-07-01|58.0|36.0|11.53352|0.13504 +2016-07-01|58.0|37.0|11.81752|0.13373 +2016-07-01|58.0|38.0|12.09506|0.13238 +2016-07-01|58.0|39.0|12.36577|0.13097 +2016-07-01|58.0|40.0|12.62926|0.12951 +2016-07-01|58.0|41.0|12.88514|0.12799 +2016-07-01|58.0|42.0|13.13299|0.12642 +2016-07-01|58.0|43.0|13.3724|0.12479 +2016-07-01|58.0|44.0|13.60292|0.12311 +2016-07-01|58.0|45.0|13.82412|0.12137 +2016-07-01|58.0|46.0|14.03553|0.11958 +2016-07-01|58.0|47.0|14.23671|0.11773 +2016-07-01|58.0|48.0|14.42718|0.11582 +2016-07-01|58.0|49.0|14.60647|0.11385 +2016-07-01|58.0|50.0|14.77408|0.11183 +2016-07-01|58.0|51.0|14.92955|0.10975 +2016-07-01|58.0|52.0|15.07237|0.10761 +2016-07-01|58.0|53.0|15.20204|0.10542 +2016-07-01|58.0|54.0|15.31806|0.10316 +2016-07-01|58.0|55.0|15.41992|0.10084 +2016-07-01|58.0|56.0|15.50712|0.09845 +2016-07-01|58.0|57.0|15.57913|0.096 +2016-07-01|58.0|58.0|15.63545|0.09348 +2016-07-01|58.0|59.0|15.67554|0.09089 +2016-07-01|58.0|60.0|15.6989|0.08822 +2016-07-01|58.0|61.0|15.705|0.08548 +2016-07-01|58.0|62.0|15.69332|0.08266 +2016-07-01|58.0|63.0|15.66335|0.07976 +2016-07-01|58.0|64.0|15.61456|0.07676 +2016-07-01|58.0|65.0|15.54644|0.07368 +2016-07-01|58.0|66.0|15.45851|0.0705 +2016-07-01|58.0|67.0|15.35024|0.06722 +2016-07-01|58.0|68.0|15.22118|0.06384 +2016-07-01|58.0|69.0|15.07083|0.06035 +2016-07-01|58.0|70.0|14.89876|0.05676 +2016-07-01|58.0|71.0|14.70452|0.05305 +2016-07-01|58.0|72.0|14.4877|0.04923 +2016-07-01|58.0|73.0|14.24793|0.0453 +2016-07-01|58.0|74.0|13.98485|0.04125 +2016-07-01|58.0|75.0|13.69816|0.03709 +2016-07-01|58.0|76.0|13.38758|0.03281 +2016-07-01|58.0|77.0|13.0529|0.02843 +2016-07-01|58.0|78.0|12.69394|0.02393 +2016-07-01|58.0|79.0|12.31062|0.01934 +2016-07-01|58.0|80.0|11.90289|0.01465 +2016-07-01|58.0|81.0|11.47079|0.00988 +2016-07-01|58.0|82.0|11.01445|0.00503 +2016-07-01|58.0|83.0|10.53409|1.2E-4 +2016-07-01|58.0|84.0|10.03001|-0.00484 +2016-07-01|58.0|85.0|9.50263|-0.00983 +2016-07-01|58.0|86.0|8.95249|-0.01484 +2016-07-01|58.0|87.0|8.38022|-0.01984 +2016-07-01|58.0|88.0|7.78661|-0.02481 +2016-07-01|58.0|89.0|7.17254|-0.02973 +2016-07-01|58.0|90.0|6.53905|-0.03457 +2016-07-01|58.0|91.0|5.88731|-0.0393 +2016-07-01|58.0|92.0|5.21861|-0.04391 +2016-07-01|58.0|93.0|4.5344|-0.04836 +2016-07-01|58.0|94.0|3.83623|-0.05262 +2016-07-01|58.0|95.0|3.12581|-0.05666 +2016-07-01|58.0|96.0|2.40494|-0.06046 +2016-07-01|58.0|97.0|1.67555|-0.064 +2016-07-01|58.0|98.0|0.93966|-0.06724 +2016-07-01|58.0|99.0|0.19939|-0.07016 +2016-07-01|58.0|100.0|-0.54309|-0.07274 +2016-07-01|58.0|101.0|-1.28553|-0.07497 +2016-07-01|58.0|102.0|-2.02567|-0.07682 +2016-07-01|58.0|103.0|-2.7612|-0.0783 +2016-07-01|58.0|104.0|-3.48984|-0.07938 +2016-07-01|58.0|105.0|-4.20931|-0.08008 +2016-07-01|58.0|106.0|-4.91737|-0.08038 +2016-07-01|58.0|107.0|-5.61187|-0.08029 +2016-07-01|58.0|108.0|-6.29068|-0.07982 +2016-07-01|58.0|109.0|-6.95182|-0.07898 +2016-07-01|58.0|110.0|-7.59338|-0.07779 +2016-07-01|58.0|111.0|-8.21358|-0.07626 +2016-07-01|58.0|112.0|-8.81077|-0.07442 +2016-07-01|58.0|113.0|-9.38345|-0.07228 +2016-07-01|58.0|114.0|-9.93025|-0.06988 +2016-07-01|58.0|115.0|-10.44996|-0.06724 +2016-07-01|58.0|116.0|-10.94152|-0.06439 +2016-07-01|58.0|117.0|-11.40401|-0.06136 +2016-07-01|58.0|118.0|-11.83669|-0.05817 +2016-07-01|58.0|119.0|-12.23894|-0.05486 +2016-07-01|58.0|120.0|-12.6103|-0.05145 +2016-07-01|58.0|121.0|-12.95043|-0.04798 +2016-07-01|58.0|122.0|-13.25915|-0.04447 +2016-07-01|58.0|123.0|-13.53636|-0.04095 +2016-07-01|58.0|124.0|-13.78212|-0.03745 +2016-07-01|58.0|125.0|-13.99657|-0.03399 +2016-07-01|58.0|126.0|-14.17996|-0.0306 +2016-07-01|58.0|127.0|-14.33263|-0.0273 +2016-07-01|58.0|128.0|-14.45498|-0.02411 +2016-07-01|58.0|129.0|-14.54751|-0.02106 +2016-07-01|58.0|130.0|-14.61078|-0.01815 +2016-07-01|58.0|131.0|-14.6454|-0.01542 +2016-07-01|58.0|132.0|-14.65204|-0.01287 +2016-07-01|58.0|133.0|-14.63139|-0.01052 +2016-07-01|58.0|134.0|-14.58421|-0.00839 +2016-07-01|58.0|135.0|-14.51127|-0.00649 +2016-07-01|58.0|136.0|-14.41336|-0.00482 +2016-07-01|58.0|137.0|-14.29131|-0.00341 +2016-07-01|58.0|138.0|-14.14595|-0.00225 +2016-07-01|58.0|139.0|-13.97812|-0.00137 +2016-07-01|58.0|140.0|-13.78868|-7.6E-4 +2016-07-01|58.0|141.0|-13.57848|-4.3E-4 +2016-07-01|58.0|142.0|-13.34837|-3.8E-4 +2016-07-01|58.0|143.0|-13.0992|-6.3E-4 +2016-07-01|58.0|144.0|-12.83183|-0.00117 +2016-07-01|58.0|145.0|-12.54708|-0.002 +2016-07-01|58.0|146.0|-12.24577|-0.00314 +2016-07-01|58.0|147.0|-11.92873|-0.00456 +2016-07-01|58.0|148.0|-11.59676|-0.00629 +2016-07-01|58.0|149.0|-11.25063|-0.00831 +2016-07-01|58.0|150.0|-10.89111|-0.01062 +2016-07-01|58.0|151.0|-10.51895|-0.01322 +2016-07-01|58.0|152.0|-10.13489|-0.01611 +2016-07-01|58.0|153.0|-9.73963|-0.01927 +2016-07-01|58.0|154.0|-9.33386|-0.02271 +2016-07-01|58.0|155.0|-8.91825|-0.02641 +2016-07-01|58.0|156.0|-8.49345|-0.03037 +2016-07-01|58.0|157.0|-8.06009|-0.03458 +2016-07-01|58.0|158.0|-7.61877|-0.03904 +2016-07-01|58.0|159.0|-7.17008|-0.04372 +2016-07-01|58.0|160.0|-6.71459|-0.04863 +2016-07-01|58.0|161.0|-6.25284|-0.05374 +2016-07-01|58.0|162.0|-5.78535|-0.05905 +2016-07-01|58.0|163.0|-5.31263|-0.06455 +2016-07-01|58.0|164.0|-4.83515|-0.07022 +2016-07-01|58.0|165.0|-4.3534|-0.07604 +2016-07-01|58.0|166.0|-3.86781|-0.08201 +2016-07-01|58.0|167.0|-3.37881|-0.08811 +2016-07-01|58.0|168.0|-2.88683|-0.09433 +2016-07-01|58.0|169.0|-2.39226|-0.10065 +2016-07-01|58.0|170.0|-1.89548|-0.10705 +2016-07-01|58.0|171.0|-1.39687|-0.11352 +2016-07-01|58.0|172.0|-0.89678|-0.12005 +2016-07-01|58.0|173.0|-0.39556|-0.12662 +2016-07-01|58.0|174.0|0.10646|-0.13321 +2016-07-01|58.0|175.0|0.60895|-0.13981 +2016-07-01|58.0|176.0|1.11159|-0.1464 +2016-07-01|58.0|177.0|1.61408|-0.15297 +2016-07-01|58.0|178.0|2.11612|-0.15951 +2016-07-01|58.0|179.0|2.6174|-0.166 +2016-07-01|58.0|-1.0|-1.89328|0.17713 +2016-07-01|58.0|-2.0|-2.32862|0.17887 +2016-07-01|58.0|-3.0|-2.76783|0.18066 +2016-07-01|58.0|-4.0|-3.2108|0.18249 +2016-07-01|58.0|-5.0|-3.6574|0.18436 +2016-07-01|58.0|-6.0|-4.10749|0.18627 +2016-07-01|58.0|-7.0|-4.56088|0.18821 +2016-07-01|58.0|-8.0|-5.01739|0.19019 +2016-07-01|58.0|-9.0|-5.47682|0.1922 +2016-07-01|58.0|-10.0|-5.93893|0.19424 +2016-07-01|58.0|-11.0|-6.40348|0.19631 +2016-07-01|58.0|-12.0|-6.87022|0.19841 +2016-07-01|58.0|-13.0|-7.33887|0.20053 +2016-07-01|58.0|-14.0|-7.80915|0.20267 +2016-07-01|58.0|-15.0|-8.28077|0.20483 +2016-07-01|58.0|-16.0|-8.75341|0.20701 +2016-07-01|58.0|-17.0|-9.22678|0.20921 +2016-07-01|58.0|-18.0|-9.70053|0.21142 +2016-07-01|58.0|-19.0|-10.17434|0.21364 +2016-07-01|58.0|-20.0|-10.64788|0.21587 +2016-07-01|58.0|-21.0|-11.1208|0.21811 +2016-07-01|58.0|-22.0|-11.59274|0.22035 +2016-07-01|58.0|-23.0|-12.06337|0.2226 +2016-07-01|58.0|-24.0|-12.53231|0.22485 +2016-07-01|58.0|-25.0|-12.99919|0.22709 +2016-07-01|58.0|-26.0|-13.46366|0.22934 +2016-07-01|58.0|-27.0|-13.92532|0.23157 +2016-07-01|58.0|-28.0|-14.38379|0.2338 +2016-07-01|58.0|-29.0|-14.83868|0.23602 +2016-07-01|58.0|-30.0|-15.28957|0.23822 +2016-07-01|58.0|-31.0|-15.73606|0.24041 +2016-07-01|58.0|-32.0|-16.17772|0.24257 +2016-07-01|58.0|-33.0|-16.61409|0.24472 +2016-07-01|58.0|-34.0|-17.04473|0.24683 +2016-07-01|58.0|-35.0|-17.46915|0.24892 +2016-07-01|58.0|-36.0|-17.88686|0.25098 +2016-07-01|58.0|-37.0|-18.29735|0.25299 +2016-07-01|58.0|-38.0|-18.70006|0.25497 +2016-07-01|58.0|-39.0|-19.09445|0.2569 +2016-07-01|58.0|-40.0|-19.4799|0.25878 +2016-07-01|58.0|-41.0|-19.85579|0.26061 +2016-07-01|58.0|-42.0|-20.22149|0.26239 +2016-07-01|58.0|-43.0|-20.57629|0.2641 +2016-07-01|58.0|-44.0|-20.91947|0.26574 +2016-07-01|58.0|-45.0|-21.25028|0.26731 +2016-07-01|58.0|-46.0|-21.56793|0.2688 +2016-07-01|58.0|-47.0|-21.87157|0.2702 +2016-07-01|58.0|-48.0|-22.16034|0.27152 +2016-07-01|58.0|-49.0|-22.43332|0.27274 +2016-07-01|58.0|-50.0|-22.68955|0.27385 +2016-07-01|58.0|-51.0|-22.92803|0.27486 +2016-07-01|58.0|-52.0|-23.14772|0.27574 +2016-07-01|58.0|-53.0|-23.34753|0.2765 +2016-07-01|58.0|-54.0|-23.52633|0.27712 +2016-07-01|58.0|-55.0|-23.68295|0.2776 +2016-07-01|58.0|-56.0|-23.81618|0.27791 +2016-07-01|58.0|-57.0|-23.92476|0.27806 +2016-07-01|58.0|-58.0|-24.00741|0.27802 +2016-07-01|58.0|-59.0|-24.06279|0.27779 +2016-07-01|58.0|-60.0|-24.08955|0.27734 +2016-07-01|58.0|-61.0|-24.08629|0.27667 +2016-07-01|58.0|-62.0|-24.05161|0.27575 +2016-07-01|58.0|-63.0|-23.98408|0.27457 +2016-07-01|58.0|-64.0|-23.88227|0.2731 +2016-07-01|58.0|-65.0|-23.74472|0.27133 +2016-07-01|58.0|-66.0|-23.57|0.26923 +2016-07-01|58.0|-67.0|-23.35672|0.26677 +2016-07-01|58.0|-68.0|-23.10348|0.26393 +2016-07-01|58.0|-69.0|-22.80896|0.26069 +2016-07-01|58.0|-70.0|-22.4719|0.25701 +2016-07-01|58.0|-71.0|-22.09111|0.25286 +2016-07-01|58.0|-72.0|-21.66554|0.24823 +2016-07-01|58.0|-73.0|-21.19425|0.24307 +2016-07-01|58.0|-74.0|-20.67646|0.23735 +2016-07-01|58.0|-75.0|-20.11158|0.23106 +2016-07-01|58.0|-76.0|-19.49923|0.22416 +2016-07-01|58.0|-77.0|-18.83929|0.21664 +2016-07-01|58.0|-78.0|-18.1319|0.20847 +2016-07-01|58.0|-79.0|-17.37752|0.19964 +2016-07-01|58.0|-80.0|-16.57692|0.19013 +2016-07-01|58.0|-81.0|-15.73126|0.17996 +2016-07-01|58.0|-82.0|-14.84205|0.16912 +2016-07-01|58.0|-83.0|-13.91122|0.15763 +2016-07-01|58.0|-84.0|-12.94107|0.1455 +2016-07-01|58.0|-85.0|-11.93435|0.13278 +2016-07-01|58.0|-86.0|-10.89415|0.11951 +2016-07-01|58.0|-87.0|-9.82399|0.10573 +2016-07-01|58.0|-88.0|-8.72768|0.09151 +2016-07-01|58.0|-89.0|-7.60938|0.07692 +2016-07-01|58.0|-90.0|-6.47349|0.06203 +2016-07-01|58.0|-91.0|-5.3246|0.04693 +2016-07-01|58.0|-92.0|-4.16746|0.03171 +2016-07-01|58.0|-93.0|-3.00684|0.01644 +2016-07-01|58.0|-94.0|-1.84756|0.00122 +2016-07-01|58.0|-95.0|-0.69433|-0.01387 +2016-07-01|58.0|-96.0|0.44827|-0.02874 +2016-07-01|58.0|-97.0|1.57589|-0.04333 +2016-07-01|58.0|-98.0|2.6844|-0.05756 +2016-07-01|58.0|-99.0|3.77|-0.07138 +2016-07-01|58.0|-100.0|4.82922|-0.08474 +2016-07-01|58.0|-101.0|5.85898|-0.0976 +2016-07-01|58.0|-102.0|6.85655|-0.10992 +2016-07-01|58.0|-103.0|7.81962|-0.1217 +2016-07-01|58.0|-104.0|8.74623|-0.13291 +2016-07-01|58.0|-105.0|9.63482|-0.14355 +2016-07-01|58.0|-106.0|10.48417|-0.15363 +2016-07-01|58.0|-107.0|11.29341|-0.16315 +2016-07-01|58.0|-108.0|12.06196|-0.17213 +2016-07-01|58.0|-109.0|12.78951|-0.18059 +2016-07-01|58.0|-110.0|13.47604|-0.18854 +2016-07-01|58.0|-111.0|14.1217|-0.19601 +2016-07-01|58.0|-112.0|14.72686|-0.20302 +2016-07-01|58.0|-113.0|15.29204|-0.20961 +2016-07-01|58.0|-114.0|15.8179|-0.21578 +2016-07-01|58.0|-115.0|16.3052|-0.22158 +2016-07-01|58.0|-116.0|16.75479|-0.22702 +2016-07-01|58.0|-117.0|17.1676|-0.23213 +2016-07-01|58.0|-118.0|17.54459|-0.23692 +2016-07-01|58.0|-119.0|17.88677|-0.24143 +2016-07-01|58.0|-120.0|18.19516|-0.24567 +2016-07-01|58.0|-121.0|18.4708|-0.24965 +2016-07-01|58.0|-122.0|18.71472|-0.2534 +2016-07-01|58.0|-123.0|18.92794|-0.25693 +2016-07-01|58.0|-124.0|19.11149|-0.26025 +2016-07-01|58.0|-125.0|19.26634|-0.26337 +2016-07-01|58.0|-126.0|19.39348|-0.26631 +2016-07-01|58.0|-127.0|19.49383|-0.26907 +2016-07-01|58.0|-128.0|19.56833|-0.27166 +2016-07-01|58.0|-129.0|19.61786|-0.27409 +2016-07-01|58.0|-130.0|19.64327|-0.27636 +2016-07-01|58.0|-131.0|19.64539|-0.27848 +2016-07-01|58.0|-132.0|19.62502|-0.28045 +2016-07-01|58.0|-133.0|19.58293|-0.28227 +2016-07-01|58.0|-134.0|19.51987|-0.28395 +2016-07-01|58.0|-135.0|19.43654|-0.28549 +2016-07-01|58.0|-136.0|19.33364|-0.28688 +2016-07-01|58.0|-137.0|19.21185|-0.28812 +2016-07-01|58.0|-138.0|19.07179|-0.28923 +2016-07-01|58.0|-139.0|18.91409|-0.29018 +2016-07-01|58.0|-140.0|18.73936|-0.29099 +2016-07-01|58.0|-141.0|18.54818|-0.29165 +2016-07-01|58.0|-142.0|18.34112|-0.29215 +2016-07-01|58.0|-143.0|18.11872|-0.29249 +2016-07-01|58.0|-144.0|17.88152|-0.29268 +2016-07-01|58.0|-145.0|17.63004|-0.2927 +2016-07-01|58.0|-146.0|17.36479|-0.29255 +2016-07-01|58.0|-147.0|17.08625|-0.29223 +2016-07-01|58.0|-148.0|16.79492|-0.29174 +2016-07-01|58.0|-149.0|16.49126|-0.29106 +2016-07-01|58.0|-150.0|16.17574|-0.2902 +2016-07-01|58.0|-151.0|15.8488|-0.28916 +2016-07-01|58.0|-152.0|15.51088|-0.28792 +2016-07-01|58.0|-153.0|15.16241|-0.28648 +2016-07-01|58.0|-154.0|14.80381|-0.28485 +2016-07-01|58.0|-155.0|14.43551|-0.28301 +2016-07-01|58.0|-156.0|14.05789|-0.28097 +2016-07-01|58.0|-157.0|13.67135|-0.27872 +2016-07-01|58.0|-158.0|13.27628|-0.27625 +2016-07-01|58.0|-159.0|12.87307|-0.27358 +2016-07-01|58.0|-160.0|12.46207|-0.2707 +2016-07-01|58.0|-161.0|12.04365|-0.2676 +2016-07-01|58.0|-162.0|11.61817|-0.26429 +2016-07-01|58.0|-163.0|11.18598|-0.26076 +2016-07-01|58.0|-164.0|10.74741|-0.25703 +2016-07-01|58.0|-165.0|10.30279|-0.25308 +2016-07-01|58.0|-166.0|9.85246|-0.24893 +2016-07-01|58.0|-167.0|9.39674|-0.24458 +2016-07-01|58.0|-168.0|8.93593|-0.24003 +2016-07-01|58.0|-169.0|8.47034|-0.23528 +2016-07-01|58.0|-170.0|8.00029|-0.23034 +2016-07-01|58.0|-171.0|7.52606|-0.22523 +2016-07-01|58.0|-172.0|7.04795|-0.21993 +2016-07-01|58.0|-173.0|6.56625|-0.21447 +2016-07-01|58.0|-174.0|6.08124|-0.20886 +2016-07-01|58.0|-175.0|5.59322|-0.20309 +2016-07-01|58.0|-176.0|5.10246|-0.19719 +2016-07-01|58.0|-177.0|4.60924|-0.19116 +2016-07-01|58.0|-178.0|4.11384|-0.18501 +2016-07-01|58.0|-179.0|3.61654|-0.17876 +2016-07-01|59.0|0.0|-1.60607|0.18085 +2016-07-01|59.0|1.0|-1.16396|0.17917 +2016-07-01|59.0|2.0|-0.72561|0.17754 +2016-07-01|59.0|3.0|-0.29107|0.17595 +2016-07-01|59.0|4.0|0.13965|0.17442 +2016-07-01|59.0|5.0|0.56653|0.17293 +2016-07-01|59.0|6.0|0.98959|0.17149 +2016-07-01|59.0|7.0|1.40885|0.17011 +2016-07-01|59.0|8.0|1.82434|0.16876 +2016-07-01|59.0|9.0|2.23609|0.16747 +2016-07-01|59.0|10.0|2.64417|0.16621 +2016-07-01|59.0|11.0|3.04862|0.16501 +2016-07-01|59.0|12.0|3.44949|0.16384 +2016-07-01|59.0|13.0|3.84685|0.16271 +2016-07-01|59.0|14.0|4.24076|0.16161 +2016-07-01|59.0|15.0|4.63126|0.16055 +2016-07-01|59.0|16.0|5.01841|0.15952 +2016-07-01|59.0|17.0|5.40223|0.15852 +2016-07-01|59.0|18.0|5.78277|0.15753 +2016-07-01|59.0|19.0|6.16004|0.15657 +2016-07-01|59.0|20.0|6.53404|0.15562 +2016-07-01|59.0|21.0|6.90476|0.15467 +2016-07-01|59.0|22.0|7.27217|0.15374 +2016-07-01|59.0|23.0|7.63622|0.1528 +2016-07-01|59.0|24.0|7.99685|0.15186 +2016-07-01|59.0|25.0|8.35397|0.15092 +2016-07-01|59.0|26.0|8.70747|0.14996 +2016-07-01|59.0|27.0|9.05722|0.14898 +2016-07-01|59.0|28.0|9.40306|0.14799 +2016-07-01|59.0|29.0|9.74482|0.14697 +2016-07-01|59.0|30.0|10.08231|0.14592 +2016-07-01|59.0|31.0|10.4153|0.14484 +2016-07-01|59.0|32.0|10.74355|0.14373 +2016-07-01|59.0|33.0|11.0668|0.14257 +2016-07-01|59.0|34.0|11.38476|0.14138 +2016-07-01|59.0|35.0|11.69713|0.14014 +2016-07-01|59.0|36.0|12.00359|0.13886 +2016-07-01|59.0|37.0|12.30379|0.13753 +2016-07-01|59.0|38.0|12.59738|0.13615 +2016-07-01|59.0|39.0|12.88398|0.13472 +2016-07-01|59.0|40.0|13.1632|0.13324 +2016-07-01|59.0|41.0|13.43462|0.1317 +2016-07-01|59.0|42.0|13.69784|0.13011 +2016-07-01|59.0|43.0|13.95241|0.12846 +2016-07-01|59.0|44.0|14.19789|0.12675 +2016-07-01|59.0|45.0|14.43382|0.12499 +2016-07-01|59.0|46.0|14.65973|0.12318 +2016-07-01|59.0|47.0|14.87515|0.1213 +2016-07-01|59.0|48.0|15.07958|0.11936 +2016-07-01|59.0|49.0|15.27253|0.11736 +2016-07-01|59.0|50.0|15.45349|0.11531 +2016-07-01|59.0|51.0|15.62196|0.11319 +2016-07-01|59.0|52.0|15.7774|0.111 +2016-07-01|59.0|53.0|15.9193|0.10875 +2016-07-01|59.0|54.0|16.04712|0.10644 +2016-07-01|59.0|55.0|16.16031|0.10405 +2016-07-01|59.0|56.0|16.25834|0.1016 +2016-07-01|59.0|57.0|16.34064|0.09907 +2016-07-01|59.0|58.0|16.40668|0.09647 +2016-07-01|59.0|59.0|16.45589|0.09378 +2016-07-01|59.0|60.0|16.4877|0.09102 +2016-07-01|59.0|61.0|16.50155|0.08817 +2016-07-01|59.0|62.0|16.49689|0.08523 +2016-07-01|59.0|63.0|16.47314|0.0822 +2016-07-01|59.0|64.0|16.42974|0.07907 +2016-07-01|59.0|65.0|16.36614|0.07584 +2016-07-01|59.0|66.0|16.28177|0.07251 +2016-07-01|59.0|67.0|16.17609|0.06906 +2016-07-01|59.0|68.0|16.04857|0.06551 +2016-07-01|59.0|69.0|15.89869|0.06184 +2016-07-01|59.0|70.0|15.72593|0.05806 +2016-07-01|59.0|71.0|15.52981|0.05415 +2016-07-01|59.0|72.0|15.30988|0.05012 +2016-07-01|59.0|73.0|15.06568|0.04597 +2016-07-01|59.0|74.0|14.79684|0.0417 +2016-07-01|59.0|75.0|14.50299|0.0373 +2016-07-01|59.0|76.0|14.18381|0.03278 +2016-07-01|59.0|77.0|13.83905|0.02815 +2016-07-01|59.0|78.0|13.46851|0.0234 +2016-07-01|59.0|79.0|13.07204|0.01854 +2016-07-01|59.0|80.0|12.64961|0.01359 +2016-07-01|59.0|81.0|12.20122|0.00855 +2016-07-01|59.0|82.0|11.72699|0.00343 +2016-07-01|59.0|83.0|11.22714|-0.00175 +2016-07-01|59.0|84.0|10.70199|-0.00697 +2016-07-01|59.0|85.0|10.15199|-0.01223 +2016-07-01|59.0|86.0|9.57769|-0.01749 +2016-07-01|59.0|87.0|8.97979|-0.02274 +2016-07-01|59.0|88.0|8.35912|-0.02795 +2016-07-01|59.0|89.0|7.71667|-0.0331 +2016-07-01|59.0|90.0|7.05355|-0.03815 +2016-07-01|59.0|91.0|6.37103|-0.04308 +2016-07-01|59.0|92.0|5.67055|-0.04786 +2016-07-01|59.0|93.0|4.95365|-0.05246 +2016-07-01|59.0|94.0|4.22207|-0.05684 +2016-07-01|59.0|95.0|3.47765|-0.06098 +2016-07-01|59.0|96.0|2.72237|-0.06485 +2016-07-01|59.0|97.0|1.95834|-0.06842 +2016-07-01|59.0|98.0|1.18775|-0.07166 +2016-07-01|59.0|99.0|0.4129|-0.07454 +2016-07-01|59.0|100.0|-0.36384|-0.07706 +2016-07-01|59.0|101.0|-1.14006|-0.07919 +2016-07-01|59.0|102.0|-1.9133|-0.08091 +2016-07-01|59.0|103.0|-2.6811|-0.08222 +2016-07-01|59.0|104.0|-3.44102|-0.08311 +2016-07-01|59.0|105.0|-4.19063|-0.08358 +2016-07-01|59.0|106.0|-4.92758|-0.08363 +2016-07-01|59.0|107.0|-5.64959|-0.08328 +2016-07-01|59.0|108.0|-6.35445|-0.08252 +2016-07-01|59.0|109.0|-7.04008|-0.08137 +2016-07-01|59.0|110.0|-7.70454|-0.07987 +2016-07-01|59.0|111.0|-8.34599|-0.07801 +2016-07-01|59.0|112.0|-8.96278|-0.07584 +2016-07-01|59.0|113.0|-9.55339|-0.07338 +2016-07-01|59.0|114.0|-10.11646|-0.07065 +2016-07-01|59.0|115.0|-10.65082|-0.06768 +2016-07-01|59.0|116.0|-11.15544|-0.06452 +2016-07-01|59.0|117.0|-11.62947|-0.06118 +2016-07-01|59.0|118.0|-12.07221|-0.0577 +2016-07-01|59.0|119.0|-12.48311|-0.05412 +2016-07-01|59.0|120.0|-12.86178|-0.05045 +2016-07-01|59.0|121.0|-13.20799|-0.04674 +2016-07-01|59.0|122.0|-13.5216|-0.04302 +2016-07-01|59.0|123.0|-13.80262|-0.0393 +2016-07-01|59.0|124.0|-14.05119|-0.03563 +2016-07-01|59.0|125.0|-14.26752|-0.03201 +2016-07-01|59.0|126.0|-14.45196|-0.02849 +2016-07-01|59.0|127.0|-14.6049|-0.02508 +2016-07-01|59.0|128.0|-14.72684|-0.0218 +2016-07-01|59.0|129.0|-14.81835|-0.01867 +2016-07-01|59.0|130.0|-14.88005|-0.01572 +2016-07-01|59.0|131.0|-14.91261|-0.01296 +2016-07-01|59.0|132.0|-14.91675|-0.0104 +2016-07-01|59.0|133.0|-14.89324|-0.00806 +2016-07-01|59.0|134.0|-14.84287|-0.00595 +2016-07-01|59.0|135.0|-14.76645|-0.00409 +2016-07-01|59.0|136.0|-14.66484|-0.00248 +2016-07-01|59.0|137.0|-14.53887|-0.00114 +2016-07-01|59.0|138.0|-14.38942|-8.0E-5 +2016-07-01|59.0|139.0|-14.21735|7.1E-4 +2016-07-01|59.0|140.0|-14.02356|0.00121 +2016-07-01|59.0|141.0|-13.8089|0.00142 +2016-07-01|59.0|142.0|-13.57426|0.00133 +2016-07-01|59.0|143.0|-13.3205|9.4E-4 +2016-07-01|59.0|144.0|-13.04848|2.5E-4 +2016-07-01|59.0|145.0|-12.75904|-7.5E-4 +2016-07-01|59.0|146.0|-12.45302|-0.00205 +2016-07-01|59.0|147.0|-12.13124|-0.00365 +2016-07-01|59.0|148.0|-11.7945|-0.00556 +2016-07-01|59.0|149.0|-11.44359|-0.00776 +2016-07-01|59.0|150.0|-11.07928|-0.01026 +2016-07-01|59.0|151.0|-10.70232|-0.01306 +2016-07-01|59.0|152.0|-10.31344|-0.01614 +2016-07-01|59.0|153.0|-9.91335|-0.01951 +2016-07-01|59.0|154.0|-9.50275|-0.02315 +2016-07-01|59.0|155.0|-9.08229|-0.02706 +2016-07-01|59.0|156.0|-8.65262|-0.03123 +2016-07-01|59.0|157.0|-8.21438|-0.03565 +2016-07-01|59.0|158.0|-7.76817|-0.04032 +2016-07-01|59.0|159.0|-7.31456|-0.04521 +2016-07-01|59.0|160.0|-6.85413|-0.05033 +2016-07-01|59.0|161.0|-6.3874|-0.05566 +2016-07-01|59.0|162.0|-5.91492|-0.06119 +2016-07-01|59.0|163.0|-5.43717|-0.0669 +2016-07-01|59.0|164.0|-4.95464|-0.07279 +2016-07-01|59.0|165.0|-4.46779|-0.07883 +2016-07-01|59.0|166.0|-3.97707|-0.08502 +2016-07-01|59.0|167.0|-3.48291|-0.09134 +2016-07-01|59.0|168.0|-2.98573|-0.09777 +2016-07-01|59.0|169.0|-2.48591|-0.10431 +2016-07-01|59.0|170.0|-1.98384|-0.11093 +2016-07-01|59.0|171.0|-1.4799|-0.11763 +2016-07-01|59.0|172.0|-0.97443|-0.12438 +2016-07-01|59.0|173.0|-0.46778|-0.13117 +2016-07-01|59.0|174.0|0.03971|-0.13799 +2016-07-01|59.0|175.0|0.54772|-0.14482 +2016-07-01|59.0|176.0|1.05593|-0.15164 +2016-07-01|59.0|177.0|1.56404|-0.15845 +2016-07-01|59.0|178.0|2.07175|-0.16522 +2016-07-01|59.0|179.0|2.57875|-0.17194 +2016-07-01|59.0|-1.0|-2.0519|0.18257 +2016-07-01|59.0|-2.0|-2.50136|0.18434 +2016-07-01|59.0|-3.0|-2.95437|0.18616 +2016-07-01|59.0|-4.0|-3.41082|0.18802 +2016-07-01|59.0|-5.0|-3.87057|0.18992 +2016-07-01|59.0|-6.0|-4.33349|0.19185 +2016-07-01|59.0|-7.0|-4.7994|0.19383 +2016-07-01|59.0|-8.0|-5.26813|0.19585 +2016-07-01|59.0|-9.0|-5.73947|0.1979 +2016-07-01|59.0|-10.0|-6.21321|0.19998 +2016-07-01|59.0|-11.0|-6.68911|0.20209 +2016-07-01|59.0|-12.0|-7.16695|0.20423 +2016-07-01|59.0|-13.0|-7.64645|0.2064 +2016-07-01|59.0|-14.0|-8.12734|0.20859 +2016-07-01|59.0|-15.0|-8.60935|0.21081 +2016-07-01|59.0|-16.0|-9.09219|0.21305 +2016-07-01|59.0|-17.0|-9.57555|0.21531 +2016-07-01|59.0|-18.0|-10.05912|0.21758 +2016-07-01|59.0|-19.0|-10.54259|0.21987 +2016-07-01|59.0|-20.0|-11.02563|0.22218 +2016-07-01|59.0|-21.0|-11.50791|0.22449 +2016-07-01|59.0|-22.0|-11.98909|0.22682 +2016-07-01|59.0|-23.0|-12.46882|0.22915 +2016-07-01|59.0|-24.0|-12.94677|0.23149 +2016-07-01|59.0|-25.0|-13.42256|0.23383 +2016-07-01|59.0|-26.0|-13.89583|0.23618 +2016-07-01|59.0|-27.0|-14.36621|0.23852 +2016-07-01|59.0|-28.0|-14.83332|0.24086 +2016-07-01|59.0|-29.0|-15.29677|0.24319 +2016-07-01|59.0|-30.0|-15.75615|0.24551 +2016-07-01|59.0|-31.0|-16.21105|0.24783 +2016-07-01|59.0|-32.0|-16.66106|0.25013 +2016-07-01|59.0|-33.0|-17.10571|0.25241 +2016-07-01|59.0|-34.0|-17.54457|0.25467 +2016-07-01|59.0|-35.0|-17.97716|0.25691 +2016-07-01|59.0|-36.0|-18.40297|0.25913 +2016-07-01|59.0|-37.0|-18.82151|0.26131 +2016-07-01|59.0|-38.0|-19.23222|0.26346 +2016-07-01|59.0|-39.0|-19.63455|0.26558 +2016-07-01|59.0|-40.0|-20.0279|0.26766 +2016-07-01|59.0|-41.0|-20.41166|0.26969 +2016-07-01|59.0|-42.0|-20.78519|0.27167 +2016-07-01|59.0|-43.0|-21.14779|0.2736 +2016-07-01|59.0|-44.0|-21.49875|0.27548 +2016-07-01|59.0|-45.0|-21.83732|0.27729 +2016-07-01|59.0|-46.0|-22.16272|0.27904 +2016-07-01|59.0|-47.0|-22.47412|0.28071 +2016-07-01|59.0|-48.0|-22.77064|0.28231 +2016-07-01|59.0|-49.0|-23.05139|0.28382 +2016-07-01|59.0|-50.0|-23.31541|0.28524 +2016-07-01|59.0|-51.0|-23.56171|0.28656 +2016-07-01|59.0|-52.0|-23.78925|0.28778 +2016-07-01|59.0|-53.0|-23.99695|0.28888 +2016-07-01|59.0|-54.0|-24.18368|0.28986 +2016-07-01|59.0|-55.0|-24.34828|0.2907 +2016-07-01|59.0|-56.0|-24.48953|0.2914 +2016-07-01|59.0|-57.0|-24.60616|0.29194 +2016-07-01|59.0|-58.0|-24.69689|0.29231 +2016-07-01|59.0|-59.0|-24.76037|0.2925 +2016-07-01|59.0|-60.0|-24.79522|0.29249 +2016-07-01|59.0|-61.0|-24.80004|0.29226 +2016-07-01|59.0|-62.0|-24.77339|0.29179 +2016-07-01|59.0|-63.0|-24.7138|0.29107 +2016-07-01|59.0|-64.0|-24.61979|0.29007 +2016-07-01|59.0|-65.0|-24.48988|0.28877 +2016-07-01|59.0|-66.0|-24.32256|0.28714 +2016-07-01|59.0|-67.0|-24.11636|0.28516 +2016-07-01|59.0|-68.0|-23.86983|0.28279 +2016-07-01|59.0|-69.0|-23.58154|0.28001 +2016-07-01|59.0|-70.0|-23.25014|0.27678 +2016-07-01|59.0|-71.0|-22.87434|0.27307 +2016-07-01|59.0|-72.0|-22.45294|0.26884 +2016-07-01|59.0|-73.0|-21.98489|0.26407 +2016-07-01|59.0|-74.0|-21.46926|0.25871 +2016-07-01|59.0|-75.0|-20.90532|0.25272 +2016-07-01|59.0|-76.0|-20.29253|0.24609 +2016-07-01|59.0|-77.0|-19.6306|0.23877 +2016-07-01|59.0|-78.0|-18.91952|0.23074 +2016-07-01|59.0|-79.0|-18.15958|0.22197 +2016-07-01|59.0|-80.0|-17.35141|0.21244 +2016-07-01|59.0|-81.0|-16.496|0.20216 +2016-07-01|59.0|-82.0|-15.59476|0.1911 +2016-07-01|59.0|-83.0|-14.64947|0.17929 +2016-07-01|59.0|-84.0|-13.66238|0.16673 +2016-07-01|59.0|-85.0|-12.63616|0.15345 +2016-07-01|59.0|-86.0|-11.57389|0.1395 +2016-07-01|59.0|-87.0|-10.47909|0.12492 +2016-07-01|59.0|-88.0|-9.35565|0.10977 +2016-07-01|59.0|-89.0|-8.20782|0.09413 +2016-07-01|59.0|-90.0|-7.04013|0.07809 +2016-07-01|59.0|-91.0|-5.85737|0.06173 +2016-07-01|59.0|-92.0|-4.6645|0.04514 +2016-07-01|59.0|-93.0|-3.46657|0.02844 +2016-07-01|59.0|-94.0|-2.26866|0.01171 +2016-07-01|59.0|-95.0|-1.07579|-0.00494 +2016-07-01|59.0|-96.0|0.10715|-0.02141 +2016-07-01|59.0|-97.0|1.27546|-0.03761 +2016-07-01|59.0|-98.0|2.42472|-0.05347 +2016-07-01|59.0|-99.0|3.55081|-0.0689 +2016-07-01|59.0|-100.0|4.64999|-0.08384 +2016-07-01|59.0|-101.0|5.71887|-0.09825 +2016-07-01|59.0|-102.0|6.7545|-0.11208 +2016-07-01|59.0|-103.0|7.75434|-0.1253 +2016-07-01|59.0|-104.0|8.71626|-0.1379 +2016-07-01|59.0|-105.0|9.63854|-0.14985 +2016-07-01|59.0|-106.0|10.51985|-0.16117 +2016-07-01|59.0|-107.0|11.3592|-0.17185 +2016-07-01|59.0|-108.0|12.15596|-0.18191 +2016-07-01|59.0|-109.0|12.9098|-0.19137 +2016-07-01|59.0|-110.0|13.62064|-0.20024 +2016-07-01|59.0|-111.0|14.28867|-0.20856 +2016-07-01|59.0|-112.0|14.91426|-0.21635 +2016-07-01|59.0|-113.0|15.49797|-0.22364 +2016-07-01|59.0|-114.0|16.04051|-0.23045 +2016-07-01|59.0|-115.0|16.5427|-0.23682 +2016-07-01|59.0|-116.0|17.00545|-0.24278 +2016-07-01|59.0|-117.0|17.42976|-0.24834 +2016-07-01|59.0|-118.0|17.81668|-0.25354 +2016-07-01|59.0|-119.0|18.16729|-0.2584 +2016-07-01|59.0|-120.0|18.48268|-0.26294 +2016-07-01|59.0|-121.0|18.76399|-0.26718 +2016-07-01|59.0|-122.0|19.01232|-0.27115 +2016-07-01|59.0|-123.0|19.22877|-0.27486 +2016-07-01|59.0|-124.0|19.41445|-0.27832 +2016-07-01|59.0|-125.0|19.57041|-0.28156 +2016-07-01|59.0|-126.0|19.6977|-0.28458 +2016-07-01|59.0|-127.0|19.79735|-0.28739 +2016-07-01|59.0|-128.0|19.87032|-0.29001 +2016-07-01|59.0|-129.0|19.91759|-0.29244 +2016-07-01|59.0|-130.0|19.94006|-0.29469 +2016-07-01|59.0|-131.0|19.93864|-0.29677 +2016-07-01|59.0|-132.0|19.91416|-0.29868 +2016-07-01|59.0|-133.0|19.86747|-0.30042 +2016-07-01|59.0|-134.0|19.79935|-0.302 +2016-07-01|59.0|-135.0|19.71056|-0.30341 +2016-07-01|59.0|-136.0|19.60185|-0.30467 +2016-07-01|59.0|-137.0|19.47393|-0.30577 +2016-07-01|59.0|-138.0|19.32747|-0.30671 +2016-07-01|59.0|-139.0|19.16313|-0.30749 +2016-07-01|59.0|-140.0|18.98156|-0.30811 +2016-07-01|59.0|-141.0|18.78337|-0.30856 +2016-07-01|59.0|-142.0|18.56915|-0.30885 +2016-07-01|59.0|-143.0|18.33947|-0.30897 +2016-07-01|59.0|-144.0|18.09491|-0.30893 +2016-07-01|59.0|-145.0|17.83599|-0.30871 +2016-07-01|59.0|-146.0|17.56325|-0.30831 +2016-07-01|59.0|-147.0|17.27719|-0.30773 +2016-07-01|59.0|-148.0|16.97832|-0.30697 +2016-07-01|59.0|-149.0|16.66712|-0.30603 +2016-07-01|59.0|-150.0|16.34406|-0.30489 +2016-07-01|59.0|-151.0|16.0096|-0.30356 +2016-07-01|59.0|-152.0|15.66418|-0.30203 +2016-07-01|59.0|-153.0|15.30826|-0.3003 +2016-07-01|59.0|-154.0|14.94225|-0.29837 +2016-07-01|59.0|-155.0|14.56658|-0.29624 +2016-07-01|59.0|-156.0|14.18165|-0.2939 +2016-07-01|59.0|-157.0|13.78786|-0.29134 +2016-07-01|59.0|-158.0|13.38559|-0.28858 +2016-07-01|59.0|-159.0|12.97524|-0.28561 +2016-07-01|59.0|-160.0|12.55718|-0.28242 +2016-07-01|59.0|-161.0|12.13176|-0.27902 +2016-07-01|59.0|-162.0|11.69934|-0.2754 +2016-07-01|59.0|-163.0|11.26027|-0.27158 +2016-07-01|59.0|-164.0|10.81489|-0.26755 +2016-07-01|59.0|-165.0|10.36354|-0.26331 +2016-07-01|59.0|-166.0|9.90653|-0.25886 +2016-07-01|59.0|-167.0|9.4442|-0.25422 +2016-07-01|59.0|-168.0|8.97684|-0.24937 +2016-07-01|59.0|-169.0|8.50478|-0.24434 +2016-07-01|59.0|-170.0|8.02831|-0.23913 +2016-07-01|59.0|-171.0|7.54772|-0.23373 +2016-07-01|59.0|-172.0|7.06332|-0.22817 +2016-07-01|59.0|-173.0|6.57538|-0.22244 +2016-07-01|59.0|-174.0|6.08421|-0.21656 +2016-07-01|59.0|-175.0|5.59007|-0.21053 +2016-07-01|59.0|-176.0|5.09325|-0.20437 +2016-07-01|59.0|-177.0|4.59403|-0.19808 +2016-07-01|59.0|-178.0|4.09269|-0.19168 +2016-07-01|59.0|-179.0|3.58951|-0.18519 +2016-07-01|60.0|0.0|-1.75132|0.18657 +2016-07-01|60.0|1.0|-1.29393|0.18486 +2016-07-01|60.0|2.0|-0.84|0.18319 +2016-07-01|60.0|3.0|-0.38958|0.18158 +2016-07-01|60.0|4.0|0.05731|0.18001 +2016-07-01|60.0|5.0|0.50064|0.17849 +2016-07-01|60.0|6.0|0.94042|0.17701 +2016-07-01|60.0|7.0|1.37663|0.17558 +2016-07-01|60.0|8.0|1.80931|0.1742 +2016-07-01|60.0|9.0|2.23847|0.17286 +2016-07-01|60.0|10.0|2.66414|0.17157 +2016-07-01|60.0|11.0|3.08635|0.17031 +2016-07-01|60.0|12.0|3.50515|0.1691 +2016-07-01|60.0|13.0|3.92057|0.16792 +2016-07-01|60.0|14.0|4.33263|0.16677 +2016-07-01|60.0|15.0|4.74139|0.16566 +2016-07-01|60.0|16.0|5.14685|0.16457 +2016-07-01|60.0|17.0|5.54904|0.16351 +2016-07-01|60.0|18.0|5.94797|0.16247 +2016-07-01|60.0|19.0|6.34364|0.16144 +2016-07-01|60.0|20.0|6.73603|0.16043 +2016-07-01|60.0|21.0|7.12511|0.15943 +2016-07-01|60.0|22.0|7.51084|0.15844 +2016-07-01|60.0|23.0|7.89315|0.15745 +2016-07-01|60.0|24.0|8.27198|0.15645 +2016-07-01|60.0|25.0|8.6472|0.15545 +2016-07-01|60.0|26.0|9.01872|0.15443 +2016-07-01|60.0|27.0|9.38638|0.15341 +2016-07-01|60.0|28.0|9.75003|0.15236 +2016-07-01|60.0|29.0|10.10948|0.15129 +2016-07-01|60.0|30.0|10.46453|0.1502 +2016-07-01|60.0|31.0|10.81496|0.14907 +2016-07-01|60.0|32.0|11.16051|0.14792 +2016-07-01|60.0|33.0|11.50092|0.14673 +2016-07-01|60.0|34.0|11.83591|0.1455 +2016-07-01|60.0|35.0|12.16517|0.14422 +2016-07-01|60.0|36.0|12.48836|0.14291 +2016-07-01|60.0|37.0|12.80515|0.14155 +2016-07-01|60.0|38.0|13.11516|0.14014 +2016-07-01|60.0|39.0|13.41803|0.13868 +2016-07-01|60.0|40.0|13.71334|0.13718 +2016-07-01|60.0|41.0|14.00069|0.13562 +2016-07-01|60.0|42.0|14.27965|0.134 +2016-07-01|60.0|43.0|14.54977|0.13233 +2016-07-01|60.0|44.0|14.81061|0.1306 +2016-07-01|60.0|45.0|15.06168|0.12882 +2016-07-01|60.0|46.0|15.3025|0.12697 +2016-07-01|60.0|47.0|15.53259|0.12507 +2016-07-01|60.0|48.0|15.75144|0.1231 +2016-07-01|60.0|49.0|15.95852|0.12108 +2016-07-01|60.0|50.0|16.15332|0.11898 +2016-07-01|60.0|51.0|16.3353|0.11682 +2016-07-01|60.0|52.0|16.50392|0.1146 +2016-07-01|60.0|53.0|16.65861|0.1123 +2016-07-01|60.0|54.0|16.79882|0.10993 +2016-07-01|60.0|55.0|16.92397|0.10749 +2016-07-01|60.0|56.0|17.0335|0.10497 +2016-07-01|60.0|57.0|17.1268|0.10237 +2016-07-01|60.0|58.0|17.20329|0.09969 +2016-07-01|60.0|59.0|17.26238|0.09692 +2016-07-01|60.0|60.0|17.30345|0.09406 +2016-07-01|60.0|61.0|17.3259|0.0911 +2016-07-01|60.0|62.0|17.32912|0.08805 +2016-07-01|60.0|63.0|17.31249|0.0849 +2016-07-01|60.0|64.0|17.27542|0.08165 +2016-07-01|60.0|65.0|17.21727|0.07828 +2016-07-01|60.0|66.0|17.13745|0.0748 +2016-07-01|60.0|67.0|17.03536|0.0712 +2016-07-01|60.0|68.0|16.9104|0.06748 +2016-07-01|60.0|69.0|16.762|0.06364 +2016-07-01|60.0|70.0|16.58958|0.05967 +2016-07-01|60.0|71.0|16.3926|0.05557 +2016-07-01|60.0|72.0|16.17054|0.05133 +2016-07-01|60.0|73.0|15.92292|0.04697 +2016-07-01|60.0|74.0|15.64927|0.04247 +2016-07-01|60.0|75.0|15.34918|0.03784 +2016-07-01|60.0|76.0|15.02228|0.03308 +2016-07-01|60.0|77.0|14.66826|0.0282 +2016-07-01|60.0|78.0|14.28689|0.02319 +2016-07-01|60.0|79.0|13.87797|0.01807 +2016-07-01|60.0|80.0|13.44142|0.01285 +2016-07-01|60.0|81.0|12.97724|0.00754 +2016-07-01|60.0|82.0|12.48553|0.00214 +2016-07-01|60.0|83.0|11.96648|-0.00332 +2016-07-01|60.0|84.0|11.42043|-0.00882 +2016-07-01|60.0|85.0|10.84783|-0.01435 +2016-07-01|60.0|86.0|10.24928|-0.01989 +2016-07-01|60.0|87.0|9.62552|-0.0254 +2016-07-01|60.0|88.0|8.97743|-0.03087 +2016-07-01|60.0|89.0|8.30607|-0.03625 +2016-07-01|60.0|90.0|7.61265|-0.04153 +2016-07-01|60.0|91.0|6.89856|-0.04668 +2016-07-01|60.0|92.0|6.16534|-0.05164 +2016-07-01|60.0|93.0|5.4147|-0.05641 +2016-07-01|60.0|94.0|4.64852|-0.06093 +2016-07-01|60.0|95.0|3.8688|-0.06518 +2016-07-01|60.0|96.0|3.07772|-0.06913 +2016-07-01|60.0|97.0|2.27756|-0.07274 +2016-07-01|60.0|98.0|1.47072|-0.076 +2016-07-01|60.0|99.0|0.6597|-0.07886 +2016-07-01|60.0|100.0|-0.15294|-0.08132 +2016-07-01|60.0|101.0|-0.96458|-0.08335 +2016-07-01|60.0|102.0|-1.77258|-0.08495 +2016-07-01|60.0|103.0|-2.5743|-0.0861 +2016-07-01|60.0|104.0|-3.36711|-0.08679 +2016-07-01|60.0|105.0|-4.14845|-0.08704 +2016-07-01|60.0|106.0|-4.91581|-0.08685 +2016-07-01|60.0|107.0|-5.66678|-0.08622 +2016-07-01|60.0|108.0|-6.39908|-0.08517 +2016-07-01|60.0|109.0|-7.11052|-0.08372 +2016-07-01|60.0|110.0|-7.7991|-0.0819 +2016-07-01|60.0|111.0|-8.46296|-0.07972 +2016-07-01|60.0|112.0|-9.10041|-0.07722 +2016-07-01|60.0|113.0|-9.70992|-0.07443 +2016-07-01|60.0|114.0|-10.29017|-0.07137 +2016-07-01|60.0|115.0|-10.83999|-0.06809 +2016-07-01|60.0|116.0|-11.35842|-0.06462 +2016-07-01|60.0|117.0|-11.84464|-0.06099 +2016-07-01|60.0|118.0|-12.29803|-0.05723 +2016-07-01|60.0|119.0|-12.71811|-0.05338 +2016-07-01|60.0|120.0|-13.10458|-0.04948 +2016-07-01|60.0|121.0|-13.45727|-0.04554 +2016-07-01|60.0|122.0|-13.77615|-0.04161 +2016-07-01|60.0|123.0|-14.06131|-0.03772 +2016-07-01|60.0|124.0|-14.31297|-0.03388 +2016-07-01|60.0|125.0|-14.53144|-0.03013 +2016-07-01|60.0|126.0|-14.71714|-0.02649 +2016-07-01|60.0|127.0|-14.87056|-0.02299 +2016-07-01|60.0|128.0|-14.99227|-0.01964 +2016-07-01|60.0|129.0|-15.0829|-0.01646 +2016-07-01|60.0|130.0|-15.14315|-0.01348 +2016-07-01|60.0|131.0|-15.17377|-0.0107 +2016-07-01|60.0|132.0|-15.17553|-0.00815 +2016-07-01|60.0|133.0|-15.14924|-0.00584 +2016-07-01|60.0|134.0|-15.09576|-0.00378 +2016-07-01|60.0|135.0|-15.01595|-0.00197 +2016-07-01|60.0|136.0|-14.91068|-4.4E-4 +2016-07-01|60.0|137.0|-14.78085|8.1E-4 +2016-07-01|60.0|138.0|-14.62737|0.00178 +2016-07-01|60.0|139.0|-14.45112|0.00245 +2016-07-01|60.0|140.0|-14.25302|0.00282 +2016-07-01|60.0|141.0|-14.03396|0.0029 +2016-07-01|60.0|142.0|-13.79483|0.00266 +2016-07-01|60.0|143.0|-13.53651|0.00212 +2016-07-01|60.0|144.0|-13.25988|0.00126 +2016-07-01|60.0|145.0|-12.96579|1.0E-4 +2016-07-01|60.0|146.0|-12.65509|-0.00138 +2016-07-01|60.0|147.0|-12.3286|-0.00316 +2016-07-01|60.0|148.0|-11.98713|-0.00525 +2016-07-01|60.0|149.0|-11.63148|-0.00765 +2016-07-01|60.0|150.0|-11.26241|-0.01035 +2016-07-01|60.0|151.0|-10.88069|-0.01334 +2016-07-01|60.0|152.0|-10.48703|-0.01662 +2016-07-01|60.0|153.0|-10.08215|-0.02019 +2016-07-01|60.0|154.0|-9.66674|-0.02404 +2016-07-01|60.0|155.0|-9.24146|-0.02816 +2016-07-01|60.0|156.0|-8.80697|-0.03254 +2016-07-01|60.0|157.0|-8.36388|-0.03717 +2016-07-01|60.0|158.0|-7.91279|-0.04205 +2016-07-01|60.0|159.0|-7.4543|-0.04716 +2016-07-01|60.0|160.0|-6.98895|-0.05249 +2016-07-01|60.0|161.0|-6.5173|-0.05803 +2016-07-01|60.0|162.0|-6.03985|-0.06377 +2016-07-01|60.0|163.0|-5.5571|-0.0697 +2016-07-01|60.0|164.0|-5.06955|-0.07579 +2016-07-01|60.0|165.0|-4.57764|-0.08205 +2016-07-01|60.0|166.0|-4.08183|-0.08846 +2016-07-01|60.0|167.0|-3.58254|-0.09499 +2016-07-01|60.0|168.0|-3.08018|-0.10165 +2016-07-01|60.0|169.0|-2.57516|-0.1084 +2016-07-01|60.0|170.0|-2.06784|-0.11524 +2016-07-01|60.0|171.0|-1.5586|-0.12216 +2016-07-01|60.0|172.0|-1.04779|-0.12913 +2016-07-01|60.0|173.0|-0.53577|-0.13615 +2016-07-01|60.0|174.0|-0.02285|-0.14319 +2016-07-01|60.0|175.0|0.49063|-0.15025 +2016-07-01|60.0|176.0|1.00436|-0.1573 +2016-07-01|60.0|177.0|1.51804|-0.16434 +2016-07-01|60.0|178.0|2.03136|-0.17135 +2016-07-01|60.0|179.0|2.54403|-0.17831 +2016-07-01|60.0|-1.0|-2.2121|0.18832 +2016-07-01|60.0|-2.0|-2.67621|0.19013 +2016-07-01|60.0|-3.0|-3.14354|0.19197 +2016-07-01|60.0|-4.0|-3.61399|0.19386 +2016-07-01|60.0|-5.0|-4.08742|0.1958 +2016-07-01|60.0|-6.0|-4.56371|0.19777 +2016-07-01|60.0|-7.0|-5.04268|0.19978 +2016-07-01|60.0|-8.0|-5.52416|0.20184 +2016-07-01|60.0|-9.0|-6.00797|0.20392 +2016-07-01|60.0|-10.0|-6.49389|0.20605 +2016-07-01|60.0|-11.0|-6.98171|0.2082 +2016-07-01|60.0|-12.0|-7.47119|0.21039 +2016-07-01|60.0|-13.0|-7.96209|0.21261 +2016-07-01|60.0|-14.0|-8.45416|0.21486 +2016-07-01|60.0|-15.0|-8.94712|0.21713 +2016-07-01|60.0|-16.0|-9.44069|0.21943 +2016-07-01|60.0|-17.0|-9.9346|0.22175 +2016-07-01|60.0|-18.0|-10.42853|0.2241 +2016-07-01|60.0|-19.0|-10.9222|0.22646 +2016-07-01|60.0|-20.0|-11.41528|0.22884 +2016-07-01|60.0|-21.0|-11.90746|0.23124 +2016-07-01|60.0|-22.0|-12.39841|0.23365 +2016-07-01|60.0|-23.0|-12.8878|0.23607 +2016-07-01|60.0|-24.0|-13.37527|0.2385 +2016-07-01|60.0|-25.0|-13.8605|0.24094 +2016-07-01|60.0|-26.0|-14.3431|0.24339 +2016-07-01|60.0|-27.0|-14.82273|0.24584 +2016-07-01|60.0|-28.0|-15.29901|0.2483 +2016-07-01|60.0|-29.0|-15.77155|0.25075 +2016-07-01|60.0|-30.0|-16.23995|0.2532 +2016-07-01|60.0|-31.0|-16.70381|0.25565 +2016-07-01|60.0|-32.0|-17.1627|0.25809 +2016-07-01|60.0|-33.0|-17.6162|0.26052 +2016-07-01|60.0|-34.0|-18.06383|0.26293 +2016-07-01|60.0|-35.0|-18.50515|0.26534 +2016-07-01|60.0|-36.0|-18.93965|0.26772 +2016-07-01|60.0|-37.0|-19.36683|0.27008 +2016-07-01|60.0|-38.0|-19.78614|0.27242 +2016-07-01|60.0|-39.0|-20.19704|0.27474 +2016-07-01|60.0|-40.0|-20.59894|0.27702 +2016-07-01|60.0|-41.0|-20.99122|0.27927 +2016-07-01|60.0|-42.0|-21.37325|0.28148 +2016-07-01|60.0|-43.0|-21.74434|0.28365 +2016-07-01|60.0|-44.0|-22.1038|0.28577 +2016-07-01|60.0|-45.0|-22.45087|0.28784 +2016-07-01|60.0|-46.0|-22.78477|0.28986 +2016-07-01|60.0|-47.0|-23.1047|0.29182 +2016-07-01|60.0|-48.0|-23.40978|0.29372 +2016-07-01|60.0|-49.0|-23.69912|0.29554 +2016-07-01|60.0|-50.0|-23.97178|0.29729 +2016-07-01|60.0|-51.0|-24.22678|0.29895 +2016-07-01|60.0|-52.0|-24.46306|0.30052 +2016-07-01|60.0|-53.0|-24.67958|0.30199 +2016-07-01|60.0|-54.0|-24.87519|0.30335 +2016-07-01|60.0|-55.0|-25.04873|0.30459 +2016-07-01|60.0|-56.0|-25.19899|0.3057 +2016-07-01|60.0|-57.0|-25.3247|0.30667 +2016-07-01|60.0|-58.0|-25.42456|0.30748 +2016-07-01|60.0|-59.0|-25.49721|0.30813 +2016-07-01|60.0|-60.0|-25.54126|0.30858 +2016-07-01|60.0|-61.0|-25.55529|0.30883 +2016-07-01|60.0|-62.0|-25.53782|0.30886 +2016-07-01|60.0|-63.0|-25.48735|0.30864 +2016-07-01|60.0|-64.0|-25.40236|0.30815 +2016-07-01|60.0|-65.0|-25.28131|0.30737 +2016-07-01|60.0|-66.0|-25.12264|0.30627 +2016-07-01|60.0|-67.0|-24.92482|0.30481 +2016-07-01|60.0|-68.0|-24.68629|0.30297 +2016-07-01|60.0|-69.0|-24.40555|0.3007 +2016-07-01|60.0|-70.0|-24.08113|0.29799 +2016-07-01|60.0|-71.0|-23.71164|0.29477 +2016-07-01|60.0|-72.0|-23.29575|0.29102 +2016-07-01|60.0|-73.0|-22.83226|0.2867 +2016-07-01|60.0|-74.0|-22.32009|0.28175 +2016-07-01|60.0|-75.0|-21.75836|0.27615 +2016-07-01|60.0|-76.0|-21.14635|0.26984 +2016-07-01|60.0|-77.0|-20.4836|0.26278 +2016-07-01|60.0|-78.0|-19.76991|0.25495 +2016-07-01|60.0|-79.0|-19.0054|0.2463 +2016-07-01|60.0|-80.0|-18.19051|0.2368 +2016-07-01|60.0|-81.0|-17.32607|0.22644 +2016-07-01|60.0|-82.0|-16.41332|0.21521 +2016-07-01|60.0|-83.0|-15.45394|0.20309 +2016-07-01|60.0|-84.0|-14.45004|0.1901 +2016-07-01|60.0|-85.0|-13.40421|0.17626 +2016-07-01|60.0|-86.0|-12.31951|0.1616 +2016-07-01|60.0|-87.0|-11.19944|0.14618 +2016-07-01|60.0|-88.0|-10.04794|0.13005 +2016-07-01|60.0|-89.0|-8.86936|0.11328 +2016-07-01|60.0|-90.0|-7.66837|0.09598 +2016-07-01|60.0|-91.0|-6.44996|0.07823 +2016-07-01|60.0|-92.0|-5.2193|0.06014 +2016-07-01|60.0|-93.0|-3.98174|0.04184 +2016-07-01|60.0|-94.0|-2.74266|0.02343 +2016-07-01|60.0|-95.0|-1.50742|0.00504 +2016-07-01|60.0|-96.0|-0.28126|-0.01323 +2016-07-01|60.0|-97.0|0.93077|-0.03126 +2016-07-01|60.0|-98.0|2.12388|-0.04894 +2016-07-01|60.0|-99.0|3.29361|-0.0662 +2016-07-01|60.0|-100.0|4.43586|-0.08294 +2016-07-01|60.0|-101.0|5.54698|-0.0991 +2016-07-01|60.0|-102.0|6.62371|-0.11463 +2016-07-01|60.0|-103.0|7.66328|-0.12948 +2016-07-01|60.0|-104.0|8.66334|-0.14363 +2016-07-01|60.0|-105.0|9.622|-0.15706 +2016-07-01|60.0|-106.0|10.53779|-0.16976 +2016-07-01|60.0|-107.0|11.40962|-0.18173 +2016-07-01|60.0|-108.0|12.2368|-0.193 +2016-07-01|60.0|-109.0|13.01892|-0.20357 +2016-07-01|60.0|-110.0|13.75593|-0.21346 +2016-07-01|60.0|-111.0|14.44799|-0.22271 +2016-07-01|60.0|-112.0|15.09551|-0.23134 +2016-07-01|60.0|-113.0|15.6991|-0.23939 +2016-07-01|60.0|-114.0|16.25951|-0.24689 +2016-07-01|60.0|-115.0|16.77764|-0.25387 +2016-07-01|60.0|-116.0|17.25447|-0.26036 +2016-07-01|60.0|-117.0|17.69108|-0.2664 +2016-07-01|60.0|-118.0|18.08861|-0.27201 +2016-07-01|60.0|-119.0|18.44822|-0.27722 +2016-07-01|60.0|-120.0|18.77111|-0.28206 +2016-07-01|60.0|-121.0|19.05848|-0.28656 +2016-07-01|60.0|-122.0|19.31154|-0.29073 +2016-07-01|60.0|-123.0|19.53149|-0.2946 +2016-07-01|60.0|-124.0|19.71951|-0.29819 +2016-07-01|60.0|-125.0|19.87673|-0.30151 +2016-07-01|60.0|-126.0|20.00431|-0.30459 +2016-07-01|60.0|-127.0|20.10331|-0.30743 +2016-07-01|60.0|-128.0|20.17482|-0.31004 +2016-07-01|60.0|-129.0|20.21984|-0.31244 +2016-07-01|60.0|-130.0|20.23938|-0.31463 +2016-07-01|60.0|-131.0|20.23439|-0.31663 +2016-07-01|60.0|-132.0|20.20578|-0.31843 +2016-07-01|60.0|-133.0|20.15444|-0.32005 +2016-07-01|60.0|-134.0|20.08121|-0.32149 +2016-07-01|60.0|-135.0|19.98691|-0.32275 +2016-07-01|60.0|-136.0|19.87233|-0.32384 +2016-07-01|60.0|-137.0|19.73821|-0.32475 +2016-07-01|60.0|-138.0|19.58529|-0.32548 +2016-07-01|60.0|-139.0|19.41426|-0.32605 +2016-07-01|60.0|-140.0|19.22579|-0.32644 +2016-07-01|60.0|-141.0|19.02053|-0.32666 +2016-07-01|60.0|-142.0|18.7991|-0.3267 +2016-07-01|60.0|-143.0|18.56211|-0.32656 +2016-07-01|60.0|-144.0|18.31014|-0.32625 +2016-07-01|60.0|-145.0|18.04376|-0.32575 +2016-07-01|60.0|-146.0|17.7635|-0.32507 +2016-07-01|60.0|-147.0|17.46991|-0.3242 +2016-07-01|60.0|-148.0|17.16349|-0.32314 +2016-07-01|60.0|-149.0|16.84474|-0.32189 +2016-07-01|60.0|-150.0|16.51414|-0.32045 +2016-07-01|60.0|-151.0|16.17218|-0.31881 +2016-07-01|60.0|-152.0|15.81929|-0.31697 +2016-07-01|60.0|-153.0|15.45594|-0.31492 +2016-07-01|60.0|-154.0|15.08256|-0.31267 +2016-07-01|60.0|-155.0|14.69956|-0.31021 +2016-07-01|60.0|-156.0|14.30737|-0.30755 +2016-07-01|60.0|-157.0|13.90637|-0.30467 +2016-07-01|60.0|-158.0|13.49698|-0.30159 +2016-07-01|60.0|-159.0|13.07956|-0.29829 +2016-07-01|60.0|-160.0|12.65449|-0.29478 +2016-07-01|60.0|-161.0|12.22214|-0.29105 +2016-07-01|60.0|-162.0|11.78286|-0.28712 +2016-07-01|60.0|-163.0|11.337|-0.28298 +2016-07-01|60.0|-164.0|10.8849|-0.27863 +2016-07-01|60.0|-165.0|10.42689|-0.27408 +2016-07-01|60.0|-166.0|9.9633|-0.26933 +2016-07-01|60.0|-167.0|9.49445|-0.26438 +2016-07-01|60.0|-168.0|9.02064|-0.25924 +2016-07-01|60.0|-169.0|8.54219|-0.25391 +2016-07-01|60.0|-170.0|8.05939|-0.24841 +2016-07-01|60.0|-171.0|7.57254|-0.24272 +2016-07-01|60.0|-172.0|7.08193|-0.23688 +2016-07-01|60.0|-173.0|6.58785|-0.23087 +2016-07-01|60.0|-174.0|6.09058|-0.22471 +2016-07-01|60.0|-175.0|5.59041|-0.21842 +2016-07-01|60.0|-176.0|5.08762|-0.21199 +2016-07-01|60.0|-177.0|4.58248|-0.20545 +2016-07-01|60.0|-178.0|4.07527|-0.1988 +2016-07-01|60.0|-179.0|3.56627|-0.19205 +2016-07-01|61.0|0.0|-1.89652|0.19262 +2016-07-01|61.0|1.0|-1.4234|0.19087 +2016-07-01|61.0|2.0|-0.95344|0.18917 +2016-07-01|61.0|3.0|-0.48669|0.18752 +2016-07-01|61.0|4.0|-0.0232|0.18591 +2016-07-01|61.0|5.0|0.43701|0.18435 +2016-07-01|61.0|6.0|0.89391|0.18284 +2016-07-01|61.0|7.0|1.3475|0.18137 +2016-07-01|61.0|8.0|1.79777|0.17994 +2016-07-01|61.0|9.0|2.24473|0.17856 +2016-07-01|61.0|10.0|2.68839|0.17722 +2016-07-01|61.0|11.0|3.12876|0.17591 +2016-07-01|61.0|12.0|3.56587|0.17465 +2016-07-01|61.0|13.0|3.99972|0.17341 +2016-07-01|61.0|14.0|4.43033|0.17222 +2016-07-01|61.0|15.0|4.85771|0.17105 +2016-07-01|61.0|16.0|5.28186|0.1699 +2016-07-01|61.0|17.0|5.7028|0.16878 +2016-07-01|61.0|18.0|6.12049|0.16768 +2016-07-01|61.0|19.0|6.53494|0.1666 +2016-07-01|61.0|20.0|6.94609|0.16553 +2016-07-01|61.0|21.0|7.35391|0.16447 +2016-07-01|61.0|22.0|7.75834|0.16342 +2016-07-01|61.0|23.0|8.15929|0.16236 +2016-07-01|61.0|24.0|8.55668|0.16131 +2016-07-01|61.0|25.0|8.9504|0.16025 +2016-07-01|61.0|26.0|9.3403|0.15918 +2016-07-01|61.0|27.0|9.72626|0.1581 +2016-07-01|61.0|28.0|10.10809|0.157 +2016-07-01|61.0|29.0|10.4856|0.15588 +2016-07-01|61.0|30.0|10.85859|0.15474 +2016-07-01|61.0|31.0|11.22682|0.15357 +2016-07-01|61.0|32.0|11.59005|0.15237 +2016-07-01|61.0|33.0|11.94801|0.15114 +2016-07-01|61.0|34.0|12.30039|0.14987 +2016-07-01|61.0|35.0|12.6469|0.14856 +2016-07-01|61.0|36.0|12.9872|0.14721 +2016-07-01|61.0|37.0|13.32094|0.14582 +2016-07-01|61.0|38.0|13.64776|0.14438 +2016-07-01|61.0|39.0|13.96727|0.1429 +2016-07-01|61.0|40.0|14.27907|0.14136 +2016-07-01|61.0|41.0|14.58273|0.13977 +2016-07-01|61.0|42.0|14.87784|0.13813 +2016-07-01|61.0|43.0|15.16392|0.13644 +2016-07-01|61.0|44.0|15.44052|0.13469 +2016-07-01|61.0|45.0|15.70717|0.13288 +2016-07-01|61.0|46.0|15.96336|0.13101 +2016-07-01|61.0|47.0|16.20859|0.12908 +2016-07-01|61.0|48.0|16.44234|0.12709 +2016-07-01|61.0|49.0|16.66407|0.12503 +2016-07-01|61.0|50.0|16.87325|0.1229 +2016-07-01|61.0|51.0|17.06931|0.1207 +2016-07-01|61.0|52.0|17.25169|0.11844 +2016-07-01|61.0|53.0|17.41981|0.1161 +2016-07-01|61.0|54.0|17.57308|0.11368 +2016-07-01|61.0|55.0|17.71089|0.11118 +2016-07-01|61.0|56.0|17.83265|0.1086 +2016-07-01|61.0|57.0|17.93772|0.10594 +2016-07-01|61.0|58.0|18.02548|0.10318 +2016-07-01|61.0|59.0|18.0953|0.10033 +2016-07-01|61.0|60.0|18.14652|0.09739 +2016-07-01|61.0|61.0|18.1785|0.09434 +2016-07-01|61.0|62.0|18.19057|0.09119 +2016-07-01|61.0|63.0|18.18209|0.08793 +2016-07-01|61.0|64.0|18.15238|0.08455 +2016-07-01|61.0|65.0|18.10077|0.08106 +2016-07-01|61.0|66.0|18.02661|0.07744 +2016-07-01|61.0|67.0|17.92923|0.0737 +2016-07-01|61.0|68.0|17.80799|0.06982 +2016-07-01|61.0|69.0|17.66223|0.06581 +2016-07-01|61.0|70.0|17.49133|0.06166 +2016-07-01|61.0|71.0|17.29467|0.05737 +2016-07-01|61.0|72.0|17.07168|0.05294 +2016-07-01|61.0|73.0|16.82179|0.04837 +2016-07-01|61.0|74.0|16.54448|0.04365 +2016-07-01|61.0|75.0|16.23927|0.03879 +2016-07-01|61.0|76.0|15.90573|0.0338 +2016-07-01|61.0|77.0|15.54349|0.02866 +2016-07-01|61.0|78.0|15.15225|0.0234 +2016-07-01|61.0|79.0|14.73177|0.01802 +2016-07-01|61.0|80.0|14.28193|0.01252 +2016-07-01|61.0|81.0|13.80268|0.00693 +2016-07-01|61.0|82.0|13.29408|0.00125 +2016-07-01|61.0|83.0|12.75633|-0.0045 +2016-07-01|61.0|84.0|12.18974|-0.01029 +2016-07-01|61.0|85.0|11.59478|-0.01611 +2016-07-01|61.0|86.0|10.97205|-0.02193 +2016-07-01|61.0|87.0|10.32235|-0.02773 +2016-07-01|61.0|88.0|9.6466|-0.03346 +2016-07-01|61.0|89.0|8.94594|-0.03911 +2016-07-01|61.0|90.0|8.22168|-0.04464 +2016-07-01|61.0|91.0|7.4753|-0.05001 +2016-07-01|61.0|92.0|6.70847|-0.05519 +2016-07-01|61.0|93.0|5.92306|-0.06014 +2016-07-01|61.0|94.0|5.1211|-0.06482 +2016-07-01|61.0|95.0|4.30479|-0.0692 +2016-07-01|61.0|96.0|3.47648|-0.07325 +2016-07-01|61.0|97.0|2.63867|-0.07693 +2016-07-01|61.0|98.0|1.79396|-0.08021 +2016-07-01|61.0|99.0|0.94508|-0.08306 +2016-07-01|61.0|100.0|0.0948|-0.08547 +2016-07-01|61.0|101.0|-0.75404|-0.08742 +2016-07-01|61.0|102.0|-1.59859|-0.0889 +2016-07-01|61.0|103.0|-2.43602|-0.08989 +2016-07-01|61.0|104.0|-3.2635|-0.0904 +2016-07-01|61.0|105.0|-4.0783|-0.09043 +2016-07-01|61.0|106.0|-4.87776|-0.08999 +2016-07-01|61.0|107.0|-5.65933|-0.0891 +2016-07-01|61.0|108.0|-6.42062|-0.08776 +2016-07-01|61.0|109.0|-7.15936|-0.08602 +2016-07-01|61.0|110.0|-7.87347|-0.08388 +2016-07-01|61.0|111.0|-8.56105|-0.08138 +2016-07-01|61.0|112.0|-9.22038|-0.07856 +2016-07-01|61.0|113.0|-9.84994|-0.07545 +2016-07-01|61.0|114.0|-10.44842|-0.07208 +2016-07-01|61.0|115.0|-11.01467|-0.06849 +2016-07-01|61.0|116.0|-11.54778|-0.06472 +2016-07-01|61.0|117.0|-12.04701|-0.06081 +2016-07-01|61.0|118.0|-12.51178|-0.05679 +2016-07-01|61.0|119.0|-12.94172|-0.05269 +2016-07-01|61.0|120.0|-13.33659|-0.04856 +2016-07-01|61.0|121.0|-13.69631|-0.04442 +2016-07-01|61.0|122.0|-14.02095|-0.0403 +2016-07-01|61.0|123.0|-14.31069|-0.03625 +2016-07-01|61.0|124.0|-14.56585|-0.03227 +2016-07-01|61.0|125.0|-14.78682|-0.0284 +2016-07-01|61.0|126.0|-14.97411|-0.02467 +2016-07-01|61.0|127.0|-15.12829|-0.0211 +2016-07-01|61.0|128.0|-15.25003|-0.0177 +2016-07-01|61.0|129.0|-15.34004|-0.01449 +2016-07-01|61.0|130.0|-15.39907|-0.0115 +2016-07-01|61.0|131.0|-15.42794|-0.00873 +2016-07-01|61.0|132.0|-15.4275|-0.00621 +2016-07-01|61.0|133.0|-15.39861|-0.00395 +2016-07-01|61.0|134.0|-15.34218|-0.00194 +2016-07-01|61.0|135.0|-15.25911|-2.2E-4 +2016-07-01|61.0|136.0|-15.15033|0.00122 +2016-07-01|61.0|137.0|-15.01678|0.00237 +2016-07-01|61.0|138.0|-14.85938|0.00321 +2016-07-01|61.0|139.0|-14.67906|0.00376 +2016-07-01|61.0|140.0|-14.47676|0.00399 +2016-07-01|61.0|141.0|-14.25339|0.00392 +2016-07-01|61.0|142.0|-14.00987|0.00352 +2016-07-01|61.0|143.0|-13.74709|0.00281 +2016-07-01|61.0|144.0|-13.46594|0.00179 +2016-07-01|61.0|145.0|-13.16729|4.5E-4 +2016-07-01|61.0|146.0|-12.85199|-0.00121 +2016-07-01|61.0|147.0|-12.52088|-0.00319 +2016-07-01|61.0|148.0|-12.17477|-0.00547 +2016-07-01|61.0|149.0|-11.81445|-0.00806 +2016-07-01|61.0|150.0|-11.4407|-0.01096 +2016-07-01|61.0|151.0|-11.05428|-0.01415 +2016-07-01|61.0|152.0|-10.65591|-0.01764 +2016-07-01|61.0|153.0|-10.24631|-0.02142 +2016-07-01|61.0|154.0|-9.82616|-0.02547 +2016-07-01|61.0|155.0|-9.39613|-0.0298 +2016-07-01|61.0|156.0|-8.95687|-0.03439 +2016-07-01|61.0|157.0|-8.50899|-0.03923 +2016-07-01|61.0|158.0|-8.05311|-0.04431 +2016-07-01|61.0|159.0|-7.58978|-0.04963 +2016-07-01|61.0|160.0|-7.11959|-0.05517 +2016-07-01|61.0|161.0|-6.64305|-0.06093 +2016-07-01|61.0|162.0|-6.16069|-0.06688 +2016-07-01|61.0|163.0|-5.67301|-0.07301 +2016-07-01|61.0|164.0|-5.18048|-0.07932 +2016-07-01|61.0|165.0|-4.68357|-0.08579 +2016-07-01|61.0|166.0|-4.18271|-0.09241 +2016-07-01|61.0|167.0|-3.67834|-0.09916 +2016-07-01|61.0|168.0|-3.17086|-0.10602 +2016-07-01|61.0|169.0|-2.66068|-0.11299 +2016-07-01|61.0|170.0|-2.14816|-0.12005 +2016-07-01|61.0|171.0|-1.63367|-0.12719 +2016-07-01|61.0|172.0|-1.11758|-0.13438 +2016-07-01|61.0|173.0|-0.60022|-0.14162 +2016-07-01|61.0|174.0|-0.08193|-0.14888 +2016-07-01|61.0|175.0|0.43698|-0.15617 +2016-07-01|61.0|176.0|0.95618|-0.16345 +2016-07-01|61.0|177.0|1.47537|-0.17072 +2016-07-01|61.0|178.0|1.99426|-0.17797 +2016-07-01|61.0|179.0|2.51254|-0.18517 +2016-07-01|61.0|-1.0|-2.37274|0.19441 +2016-07-01|61.0|-2.0|-2.85197|0.19624 +2016-07-01|61.0|-3.0|-3.33411|0.19813 +2016-07-01|61.0|-4.0|-3.81905|0.20005 +2016-07-01|61.0|-5.0|-4.30668|0.20202 +2016-07-01|61.0|-6.0|-4.79685|0.20403 +2016-07-01|61.0|-7.0|-5.2894|0.20608 +2016-07-01|61.0|-8.0|-5.78417|0.20818 +2016-07-01|61.0|-9.0|-6.28097|0.21031 +2016-07-01|61.0|-10.0|-6.77961|0.21247 +2016-07-01|61.0|-11.0|-7.27989|0.21468 +2016-07-01|61.0|-12.0|-7.78156|0.21692 +2016-07-01|61.0|-13.0|-8.28442|0.21919 +2016-07-01|61.0|-14.0|-8.7882|0.22149 +2016-07-01|61.0|-15.0|-9.29265|0.22382 +2016-07-01|61.0|-16.0|-9.79752|0.22618 +2016-07-01|61.0|-17.0|-10.30252|0.22857 +2016-07-01|61.0|-18.0|-10.80738|0.23098 +2016-07-01|61.0|-19.0|-11.31179|0.23342 +2016-07-01|61.0|-20.0|-11.81547|0.23588 +2016-07-01|61.0|-21.0|-12.3181|0.23836 +2016-07-01|61.0|-22.0|-12.81936|0.24086 +2016-07-01|61.0|-23.0|-13.31894|0.24337 +2016-07-01|61.0|-24.0|-13.8165|0.2459 +2016-07-01|61.0|-25.0|-14.3117|0.24845 +2016-07-01|61.0|-26.0|-14.80419|0.251 +2016-07-01|61.0|-27.0|-15.29362|0.25357 +2016-07-01|61.0|-28.0|-15.77962|0.25614 +2016-07-01|61.0|-29.0|-16.2618|0.25872 +2016-07-01|61.0|-30.0|-16.73979|0.26131 +2016-07-01|61.0|-31.0|-17.21317|0.26389 +2016-07-01|61.0|-32.0|-17.68153|0.26648 +2016-07-01|61.0|-33.0|-18.14445|0.26906 +2016-07-01|61.0|-34.0|-18.60146|0.27164 +2016-07-01|61.0|-35.0|-19.05212|0.27422 +2016-07-01|61.0|-36.0|-19.49592|0.27678 +2016-07-01|61.0|-37.0|-19.93238|0.27933 +2016-07-01|61.0|-38.0|-20.36095|0.28187 +2016-07-01|61.0|-39.0|-20.78109|0.28439 +2016-07-01|61.0|-40.0|-21.19222|0.28689 +2016-07-01|61.0|-41.0|-21.59373|0.28937 +2016-07-01|61.0|-42.0|-21.98499|0.29182 +2016-07-01|61.0|-43.0|-22.36532|0.29425 +2016-07-01|61.0|-44.0|-22.73404|0.29663 +2016-07-01|61.0|-45.0|-23.0904|0.29899 +2016-07-01|61.0|-46.0|-23.43364|0.3013 +2016-07-01|61.0|-47.0|-23.76294|0.30356 +2016-07-01|61.0|-48.0|-24.07745|0.30577 +2016-07-01|61.0|-49.0|-24.37629|0.30793 +2016-07-01|61.0|-50.0|-24.65851|0.31002 +2016-07-01|61.0|-51.0|-24.92314|0.31205 +2016-07-01|61.0|-52.0|-25.16916|0.314 +2016-07-01|61.0|-53.0|-25.3955|0.31586 +2016-07-01|61.0|-54.0|-25.60103|0.31763 +2016-07-01|61.0|-55.0|-25.78459|0.3193 +2016-07-01|61.0|-56.0|-25.94496|0.32086 +2016-07-01|61.0|-57.0|-26.08089|0.32228 +2016-07-01|61.0|-58.0|-26.19104|0.32357 +2016-07-01|61.0|-59.0|-26.27406|0.32471 +2016-07-01|61.0|-60.0|-26.32855|0.32567 +2016-07-01|61.0|-61.0|-26.35305|0.32645 +2016-07-01|61.0|-62.0|-26.34606|0.32701 +2016-07-01|61.0|-63.0|-26.30605|0.32734 +2016-07-01|61.0|-64.0|-26.23146|0.32741 +2016-07-01|61.0|-65.0|-26.12068|0.3272 +2016-07-01|61.0|-66.0|-25.97212|0.32668 +2016-07-01|61.0|-67.0|-25.78413|0.3258 +2016-07-01|61.0|-68.0|-25.55512|0.32454 +2016-07-01|61.0|-69.0|-25.28346|0.32286 +2016-07-01|61.0|-70.0|-24.96759|0.32072 +2016-07-01|61.0|-71.0|-24.60598|0.31808 +2016-07-01|61.0|-72.0|-24.19719|0.31487 +2016-07-01|61.0|-73.0|-23.73984|0.31107 +2016-07-01|61.0|-74.0|-23.23273|0.30662 +2016-07-01|61.0|-75.0|-22.67476|0.30147 +2016-07-01|61.0|-76.0|-22.06506|0.29556 +2016-07-01|61.0|-77.0|-21.40297|0.28885 +2016-07-01|61.0|-78.0|-20.68807|0.28128 +2016-07-01|61.0|-79.0|-19.92029|0.27282 +2016-07-01|61.0|-80.0|-19.09988|0.26342 +2016-07-01|61.0|-81.0|-18.22745|0.25305 +2016-07-01|61.0|-82.0|-17.30408|0.24168 +2016-07-01|61.0|-83.0|-16.33127|0.22929 +2016-07-01|61.0|-84.0|-15.31099|0.21589 +2016-07-01|61.0|-85.0|-14.24574|0.20149 +2016-07-01|61.0|-86.0|-13.13849|0.18612 +2016-07-01|61.0|-87.0|-11.99274|0.16981 +2016-07-01|61.0|-88.0|-10.81246|0.15263 +2016-07-01|61.0|-89.0|-9.60205|0.13466 +2016-07-01|61.0|-90.0|-8.36636|0.11599 +2016-07-01|61.0|-91.0|-7.11055|0.09672 +2016-07-01|61.0|-92.0|-5.84005|0.07698 +2016-07-01|61.0|-93.0|-4.56049|0.0569 +2016-07-01|61.0|-94.0|-3.2776|0.03662 +2016-07-01|61.0|-95.0|-1.99709|0.01626 +2016-07-01|61.0|-96.0|-0.72461|-0.00403 +2016-07-01|61.0|-97.0|0.53438|-0.02411 +2016-07-01|61.0|-98.0|1.77471|-0.04387 +2016-07-01|61.0|-99.0|2.9915|-0.06319 +2016-07-01|61.0|-100.0|4.1803|-0.08197 +2016-07-01|61.0|-101.0|5.33709|-0.10012 +2016-07-01|61.0|-102.0|6.4583|-0.11758 +2016-07-01|61.0|-103.0|7.54088|-0.13428 +2016-07-01|61.0|-104.0|8.58225|-0.15019 +2016-07-01|61.0|-105.0|9.58032|-0.16528 +2016-07-01|61.0|-106.0|10.53344|-0.17954 +2016-07-01|61.0|-107.0|11.44044|-0.19296 +2016-07-01|61.0|-108.0|12.3005|-0.20557 +2016-07-01|61.0|-109.0|13.11322|-0.21737 +2016-07-01|61.0|-110.0|13.87849|-0.22839 +2016-07-01|61.0|-111.0|14.59649|-0.23866 +2016-07-01|61.0|-112.0|15.26768|-0.24822 +2016-07-01|61.0|-113.0|15.89269|-0.25709 +2016-07-01|61.0|-114.0|16.47236|-0.26532 +2016-07-01|61.0|-115.0|17.00764|-0.27294 +2016-07-01|61.0|-116.0|17.49963|-0.28 +2016-07-01|61.0|-117.0|17.94948|-0.28652 +2016-07-01|61.0|-118.0|18.35844|-0.29255 +2016-07-01|61.0|-119.0|18.72775|-0.29811 +2016-07-01|61.0|-120.0|19.05874|-0.30325 +2016-07-01|61.0|-121.0|19.3527|-0.30798 +2016-07-01|61.0|-122.0|19.61093|-0.31234 +2016-07-01|61.0|-123.0|19.83474|-0.31635 +2016-07-01|61.0|-124.0|20.02538|-0.32004 +2016-07-01|61.0|-125.0|20.18412|-0.32341 +2016-07-01|61.0|-126.0|20.31216|-0.32651 +2016-07-01|61.0|-127.0|20.41069|-0.32933 +2016-07-01|61.0|-128.0|20.48084|-0.3319 +2016-07-01|61.0|-129.0|20.52372|-0.33422 +2016-07-01|61.0|-130.0|20.54039|-0.33632 +2016-07-01|61.0|-131.0|20.53187|-0.33819 +2016-07-01|61.0|-132.0|20.49915|-0.33985 +2016-07-01|61.0|-133.0|20.44316|-0.3413 +2016-07-01|61.0|-134.0|20.36483|-0.34256 +2016-07-01|61.0|-135.0|20.26501|-0.34362 +2016-07-01|61.0|-136.0|20.14454|-0.34449 +2016-07-01|61.0|-137.0|20.00421|-0.34516 +2016-07-01|61.0|-138.0|19.8448|-0.34566 +2016-07-01|61.0|-139.0|19.66705|-0.34596 +2016-07-01|61.0|-140.0|19.47166|-0.34609 +2016-07-01|61.0|-141.0|19.25931|-0.34602 +2016-07-01|61.0|-142.0|19.03065|-0.34577 +2016-07-01|61.0|-143.0|18.78633|-0.34534 +2016-07-01|61.0|-144.0|18.52694|-0.34472 +2016-07-01|61.0|-145.0|18.25308|-0.34391 +2016-07-01|61.0|-146.0|17.9653|-0.34291 +2016-07-01|61.0|-147.0|17.66416|-0.34171 +2016-07-01|61.0|-148.0|17.35019|-0.34033 +2016-07-01|61.0|-149.0|17.0239|-0.33874 +2016-07-01|61.0|-150.0|16.68579|-0.33696 +2016-07-01|61.0|-151.0|16.33633|-0.33498 +2016-07-01|61.0|-152.0|15.976|-0.33279 +2016-07-01|61.0|-153.0|15.60524|-0.3304 +2016-07-01|61.0|-154.0|15.22451|-0.3278 +2016-07-01|61.0|-155.0|14.83422|-0.325 +2016-07-01|61.0|-156.0|14.4348|-0.32198 +2016-07-01|61.0|-157.0|14.02665|-0.31876 +2016-07-01|61.0|-158.0|13.61016|-0.31533 +2016-07-01|61.0|-159.0|13.18573|-0.31168 +2016-07-01|61.0|-160.0|12.75371|-0.30783 +2016-07-01|61.0|-161.0|12.31449|-0.30377 +2016-07-01|61.0|-162.0|11.8684|-0.2995 +2016-07-01|61.0|-163.0|11.41582|-0.29502 +2016-07-01|61.0|-164.0|10.95706|-0.29035 +2016-07-01|61.0|-165.0|10.49246|-0.28547 +2016-07-01|61.0|-166.0|10.02235|-0.2804 +2016-07-01|61.0|-167.0|9.54704|-0.27513 +2016-07-01|61.0|-168.0|9.06685|-0.26968 +2016-07-01|61.0|-169.0|8.58207|-0.26405 +2016-07-01|61.0|-170.0|8.09301|-0.25824 +2016-07-01|61.0|-171.0|7.59996|-0.25226 +2016-07-01|61.0|-172.0|7.10322|-0.24612 +2016-07-01|61.0|-173.0|6.60306|-0.23983 +2016-07-01|61.0|-174.0|6.09977|-0.23339 +2016-07-01|61.0|-175.0|5.59363|-0.22682 +2016-07-01|61.0|-176.0|5.08492|-0.22013 +2016-07-01|61.0|-177.0|4.57391|-0.21332 +2016-07-01|61.0|-178.0|4.0609|-0.20641 +2016-07-01|61.0|-179.0|3.54614|-0.1994 +2016-07-01|62.0|0.0|-2.04052|0.19901 +2016-07-01|62.0|1.0|-1.55124|0.19723 +2016-07-01|62.0|2.0|-1.06484|0.19549 +2016-07-01|62.0|3.0|-0.58138|0.1938 +2016-07-01|62.0|4.0|-0.1009|0.19215 +2016-07-01|62.0|5.0|0.37656|0.19055 +2016-07-01|62.0|6.0|0.85095|0.18899 +2016-07-01|62.0|7.0|1.32226|0.18748 +2016-07-01|62.0|8.0|1.79047|0.18601 +2016-07-01|62.0|9.0|2.25557|0.18458 +2016-07-01|62.0|10.0|2.71755|0.18318 +2016-07-01|62.0|11.0|3.17641|0.18183 +2016-07-01|62.0|12.0|3.63214|0.18051 +2016-07-01|62.0|13.0|4.08474|0.17922 +2016-07-01|62.0|14.0|4.53421|0.17797 +2016-07-01|62.0|15.0|4.98053|0.17674 +2016-07-01|62.0|16.0|5.42369|0.17554 +2016-07-01|62.0|17.0|5.86367|0.17436 +2016-07-01|62.0|18.0|6.30045|0.1732 +2016-07-01|62.0|19.0|6.73397|0.17206 +2016-07-01|62.0|20.0|7.1642|0.17093 +2016-07-01|62.0|21.0|7.59107|0.16981 +2016-07-01|62.0|22.0|8.01451|0.16869 +2016-07-01|62.0|23.0|8.43442|0.16758 +2016-07-01|62.0|24.0|8.85069|0.16647 +2016-07-01|62.0|25.0|9.26321|0.16535 +2016-07-01|62.0|26.0|9.67184|0.16422 +2016-07-01|62.0|27.0|10.07641|0.16309 +2016-07-01|62.0|28.0|10.47674|0.16193 +2016-07-01|62.0|29.0|10.87265|0.16076 +2016-07-01|62.0|30.0|11.26391|0.15957 +2016-07-01|62.0|31.0|11.6503|0.15835 +2016-07-01|62.0|32.0|12.03154|0.15711 +2016-07-01|62.0|33.0|12.40738|0.15583 +2016-07-01|62.0|34.0|12.77751|0.15453 +2016-07-01|62.0|35.0|13.14163|0.15318 +2016-07-01|62.0|36.0|13.49939|0.1518 +2016-07-01|62.0|37.0|13.85045|0.15037 +2016-07-01|62.0|38.0|14.19445|0.1489 +2016-07-01|62.0|39.0|14.53098|0.14739 +2016-07-01|62.0|40.0|14.85965|0.14582 +2016-07-01|62.0|41.0|15.18003|0.14421 +2016-07-01|62.0|42.0|15.49169|0.14255 +2016-07-01|62.0|43.0|15.79416|0.14083 +2016-07-01|62.0|44.0|16.08699|0.13905 +2016-07-01|62.0|45.0|16.36967|0.13722 +2016-07-01|62.0|46.0|16.6417|0.13532 +2016-07-01|62.0|47.0|16.90258|0.13337 +2016-07-01|62.0|48.0|17.15176|0.13135 +2016-07-01|62.0|49.0|17.3887|0.12926 +2016-07-01|62.0|50.0|17.61284|0.1271 +2016-07-01|62.0|51.0|17.8236|0.12488 +2016-07-01|62.0|52.0|18.0204|0.12257 +2016-07-01|62.0|53.0|18.20264|0.12019 +2016-07-01|62.0|54.0|18.36969|0.11773 +2016-07-01|62.0|55.0|18.52094|0.11519 +2016-07-01|62.0|56.0|18.65574|0.11255 +2016-07-01|62.0|57.0|18.77343|0.10983 +2016-07-01|62.0|58.0|18.87336|0.10701 +2016-07-01|62.0|59.0|18.95485|0.10409 +2016-07-01|62.0|60.0|19.01722|0.10107 +2016-07-01|62.0|61.0|19.05976|0.09794 +2016-07-01|62.0|62.0|19.08177|0.0947 +2016-07-01|62.0|63.0|19.08255|0.09134 +2016-07-01|62.0|64.0|19.06137|0.08785 +2016-07-01|62.0|65.0|19.01751|0.08424 +2016-07-01|62.0|66.0|18.95025|0.0805 +2016-07-01|62.0|67.0|18.85887|0.07662 +2016-07-01|62.0|68.0|18.74265|0.0726 +2016-07-01|62.0|69.0|18.60087|0.06843 +2016-07-01|62.0|70.0|18.43284|0.06412 +2016-07-01|62.0|71.0|18.23788|0.05965 +2016-07-01|62.0|72.0|18.01533|0.05503 +2016-07-01|62.0|73.0|17.76455|0.05026 +2016-07-01|62.0|74.0|17.48494|0.04533 +2016-07-01|62.0|75.0|17.17596|0.04025 +2016-07-01|62.0|76.0|16.83708|0.03502 +2016-07-01|62.0|77.0|16.46789|0.02964 +2016-07-01|62.0|78.0|16.06799|0.02412 +2016-07-01|62.0|79.0|15.6371|0.01848 +2016-07-01|62.0|80.0|15.17502|0.01271 +2016-07-01|62.0|81.0|14.68166|0.00683 +2016-07-01|62.0|82.0|14.15704|8.6E-4 +2016-07-01|62.0|83.0|13.60132|-0.00518 +2016-07-01|62.0|84.0|13.0148|-0.01127 +2016-07-01|62.0|85.0|12.39793|-0.0174 +2016-07-01|62.0|86.0|11.75133|-0.02352 +2016-07-01|62.0|87.0|11.07582|-0.02961 +2016-07-01|62.0|88.0|10.37238|-0.03564 +2016-07-01|62.0|89.0|9.6422|-0.04157 +2016-07-01|62.0|90.0|8.88668|-0.04737 +2016-07-01|62.0|91.0|8.10741|-0.05299 +2016-07-01|62.0|92.0|7.3062|-0.0584 +2016-07-01|62.0|93.0|6.48507|-0.06356 +2016-07-01|62.0|94.0|5.64621|-0.06843 +2016-07-01|62.0|95.0|4.79201|-0.07296 +2016-07-01|62.0|96.0|3.92505|-0.07713 +2016-07-01|62.0|97.0|3.04802|-0.08089 +2016-07-01|62.0|98.0|2.16377|-0.08422 +2016-07-01|62.0|99.0|1.27525|-0.08709 +2016-07-01|62.0|100.0|0.38548|-0.08947 +2016-07-01|62.0|101.0|-0.50247|-0.09135 +2016-07-01|62.0|102.0|-1.38552|-0.09272 +2016-07-01|62.0|103.0|-2.2606|-0.09358 +2016-07-01|62.0|104.0|-3.1247|-0.09391 +2016-07-01|62.0|105.0|-3.97489|-0.09374 +2016-07-01|62.0|106.0|-4.80833|-0.09307 +2016-07-01|62.0|107.0|-5.62233|-0.09191 +2016-07-01|62.0|108.0|-6.41438|-0.0903 +2016-07-01|62.0|109.0|-7.1821|-0.08826 +2016-07-01|62.0|110.0|-7.92335|-0.08582 +2016-07-01|62.0|111.0|-8.63617|-0.08302 +2016-07-01|62.0|112.0|-9.31881|-0.07989 +2016-07-01|62.0|113.0|-9.96975|-0.07647 +2016-07-01|62.0|114.0|-10.58768|-0.0728 +2016-07-01|62.0|115.0|-11.17152|-0.06892 +2016-07-01|62.0|116.0|-11.72039|-0.06487 +2016-07-01|62.0|117.0|-12.2336|-0.06069 +2016-07-01|62.0|118.0|-12.71066|-0.05642 +2016-07-01|62.0|119.0|-13.15127|-0.0521 +2016-07-01|62.0|120.0|-13.55529|-0.04776 +2016-07-01|62.0|121.0|-13.92274|-0.04343 +2016-07-01|62.0|122.0|-14.25378|-0.03916 +2016-07-01|62.0|123.0|-14.54868|-0.03496 +2016-07-01|62.0|124.0|-14.80787|-0.03087 +2016-07-01|62.0|125.0|-15.03183|-0.02691 +2016-07-01|62.0|126.0|-15.22116|-0.02311 +2016-07-01|62.0|127.0|-15.37653|-0.01949 +2016-07-01|62.0|128.0|-15.49868|-0.01606 +2016-07-01|62.0|129.0|-15.5884|-0.01285 +2016-07-01|62.0|130.0|-15.64654|-0.00987 +2016-07-01|62.0|131.0|-15.67398|-0.00714 +2016-07-01|62.0|132.0|-15.67161|-0.00467 +2016-07-01|62.0|133.0|-15.64039|-0.00247 +2016-07-01|62.0|134.0|-15.58125|-5.5E-4 +2016-07-01|62.0|135.0|-15.49516|0.00107 +2016-07-01|62.0|136.0|-15.38309|0.0024 +2016-07-01|62.0|137.0|-15.24602|0.00343 +2016-07-01|62.0|138.0|-15.08489|0.00414 +2016-07-01|62.0|139.0|-14.90069|0.00454 +2016-07-01|62.0|140.0|-14.69437|0.00462 +2016-07-01|62.0|141.0|-14.46687|0.00438 +2016-07-01|62.0|142.0|-14.21911|0.00382 +2016-07-01|62.0|143.0|-13.95203|0.00293 +2016-07-01|62.0|144.0|-13.66651|0.00172 +2016-07-01|62.0|145.0|-13.36344|1.9E-4 +2016-07-01|62.0|146.0|-13.04368|-0.00166 +2016-07-01|62.0|147.0|-12.70807|-0.00383 +2016-07-01|62.0|148.0|-12.35744|-0.00631 +2016-07-01|62.0|149.0|-11.99257|-0.0091 +2016-07-01|62.0|150.0|-11.61426|-0.0122 +2016-07-01|62.0|151.0|-11.22326|-0.0156 +2016-07-01|62.0|152.0|-10.82029|-0.0193 +2016-07-01|62.0|153.0|-10.40608|-0.02328 +2016-07-01|62.0|154.0|-9.9813|-0.02754 +2016-07-01|62.0|155.0|-9.54662|-0.03207 +2016-07-01|62.0|156.0|-9.10269|-0.03687 +2016-07-01|62.0|157.0|-8.65012|-0.04192 +2016-07-01|62.0|158.0|-8.18952|-0.04721 +2016-07-01|62.0|159.0|-7.72146|-0.05274 +2016-07-01|62.0|160.0|-7.24649|-0.05849 +2016-07-01|62.0|161.0|-6.76516|-0.06445 +2016-07-01|62.0|162.0|-6.27797|-0.0706 +2016-07-01|62.0|163.0|-5.78543|-0.07695 +2016-07-01|62.0|164.0|-5.288|-0.08346 +2016-07-01|62.0|165.0|-4.78616|-0.09014 +2016-07-01|62.0|166.0|-4.28033|-0.09697 +2016-07-01|62.0|167.0|-3.77094|-0.10392 +2016-07-01|62.0|168.0|-3.25841|-0.111 +2016-07-01|62.0|169.0|-2.74313|-0.11818 +2016-07-01|62.0|170.0|-2.22547|-0.12545 +2016-07-01|62.0|171.0|-1.7058|-0.1328 +2016-07-01|62.0|172.0|-1.18448|-0.14021 +2016-07-01|62.0|173.0|-0.66184|-0.14766 +2016-07-01|62.0|174.0|-0.13823|-0.15515 +2016-07-01|62.0|175.0|0.38605|-0.16266 +2016-07-01|62.0|176.0|0.91066|-0.17018 +2016-07-01|62.0|177.0|1.43532|-0.17768 +2016-07-01|62.0|178.0|1.95971|-0.18516 +2016-07-01|62.0|179.0|2.48355|-0.19261 +2016-07-01|62.0|-1.0|-2.53259|0.20084 +2016-07-01|62.0|-2.0|-3.02738|0.20272 +2016-07-01|62.0|-3.0|-3.52478|0.20464 +2016-07-01|62.0|-4.0|-4.02469|0.2066 +2016-07-01|62.0|-5.0|-4.52698|0.20861 +2016-07-01|62.0|-6.0|-5.03151|0.21066 +2016-07-01|62.0|-7.0|-5.53814|0.21275 +2016-07-01|62.0|-8.0|-6.04669|0.21489 +2016-07-01|62.0|-9.0|-6.557|0.21706 +2016-07-01|62.0|-10.0|-7.06888|0.21928 +2016-07-01|62.0|-11.0|-7.58213|0.22153 +2016-07-01|62.0|-12.0|-8.09653|0.22382 +2016-07-01|62.0|-13.0|-8.61187|0.22615 +2016-07-01|62.0|-14.0|-9.1279|0.22851 +2016-07-01|62.0|-15.0|-9.6444|0.2309 +2016-07-01|62.0|-16.0|-10.1611|0.23333 +2016-07-01|62.0|-17.0|-10.67775|0.23578 +2016-07-01|62.0|-18.0|-11.19407|0.23827 +2016-07-01|62.0|-19.0|-11.70979|0.24078 +2016-07-01|62.0|-20.0|-12.22461|0.24332 +2016-07-01|62.0|-21.0|-12.73824|0.24589 +2016-07-01|62.0|-22.0|-13.25038|0.24848 +2016-07-01|62.0|-23.0|-13.76071|0.25109 +2016-07-01|62.0|-24.0|-14.26891|0.25372 +2016-07-01|62.0|-25.0|-14.77465|0.25637 +2016-07-01|62.0|-26.0|-15.2776|0.25904 +2016-07-01|62.0|-27.0|-15.77739|0.26172 +2016-07-01|62.0|-28.0|-16.27369|0.26442 +2016-07-01|62.0|-29.0|-16.7661|0.26714 +2016-07-01|62.0|-30.0|-17.25426|0.26986 +2016-07-01|62.0|-31.0|-17.73776|0.27259 +2016-07-01|62.0|-32.0|-18.2162|0.27534 +2016-07-01|62.0|-33.0|-18.68915|0.27808 +2016-07-01|62.0|-34.0|-19.15618|0.28083 +2016-07-01|62.0|-35.0|-19.61681|0.28359 +2016-07-01|62.0|-36.0|-20.07058|0.28634 +2016-07-01|62.0|-37.0|-20.51699|0.28909 +2016-07-01|62.0|-38.0|-20.95551|0.29184 +2016-07-01|62.0|-39.0|-21.3856|0.29458 +2016-07-01|62.0|-40.0|-21.8067|0.29731 +2016-07-01|62.0|-41.0|-22.21819|0.30004 +2016-07-01|62.0|-42.0|-22.61946|0.30274 +2016-07-01|62.0|-43.0|-23.00984|0.30543 +2016-07-01|62.0|-44.0|-23.38864|0.3081 +2016-07-01|62.0|-45.0|-23.75515|0.31075 +2016-07-01|62.0|-46.0|-24.10859|0.31337 +2016-07-01|62.0|-47.0|-24.44818|0.31596 +2016-07-01|62.0|-48.0|-24.77306|0.31851 +2016-07-01|62.0|-49.0|-25.08235|0.32102 +2016-07-01|62.0|-50.0|-25.37514|0.32348 +2016-07-01|62.0|-51.0|-25.65045|0.32589 +2016-07-01|62.0|-52.0|-25.90727|0.32825 +2016-07-01|62.0|-53.0|-26.14452|0.33053 +2016-07-01|62.0|-54.0|-26.36111|0.33274 +2016-07-01|62.0|-55.0|-26.55586|0.33487 +2016-07-01|62.0|-56.0|-26.72755|0.3369 +2016-07-01|62.0|-57.0|-26.87493|0.33882 +2016-07-01|62.0|-58.0|-26.99667|0.34062 +2016-07-01|62.0|-59.0|-27.09139|0.34229 +2016-07-01|62.0|-60.0|-27.15768|0.3438 +2016-07-01|62.0|-61.0|-27.19407|0.34514 +2016-07-01|62.0|-62.0|-27.19902|0.34628 +2016-07-01|62.0|-63.0|-27.17097|0.34721 +2016-07-01|62.0|-64.0|-27.10832|0.3479 +2016-07-01|62.0|-65.0|-27.00941|0.34832 +2016-07-01|62.0|-66.0|-26.87258|0.34843 +2016-07-01|62.0|-67.0|-26.69613|0.3482 +2016-07-01|62.0|-68.0|-26.47836|0.3476 +2016-07-01|62.0|-69.0|-26.21756|0.34657 +2016-07-01|62.0|-70.0|-25.91204|0.34508 +2016-07-01|62.0|-71.0|-25.56017|0.34308 +2016-07-01|62.0|-72.0|-25.16034|0.34051 +2016-07-01|62.0|-73.0|-24.71104|0.33732 +2016-07-01|62.0|-74.0|-24.21088|0.33344 +2016-07-01|62.0|-75.0|-23.65859|0.32883 +2016-07-01|62.0|-76.0|-23.05308|0.32342 +2016-07-01|62.0|-77.0|-22.39347|0.31714 +2016-07-01|62.0|-78.0|-21.67916|0.30994 +2016-07-01|62.0|-79.0|-20.90982|0.30175 +2016-07-01|62.0|-80.0|-20.08547|0.29252 +2016-07-01|62.0|-81.0|-19.20652|0.28221 +2016-07-01|62.0|-82.0|-18.2738|0.27077 +2016-07-01|62.0|-83.0|-17.28863|0.25817 +2016-07-01|62.0|-84.0|-16.25281|0.24441 +2016-07-01|62.0|-85.0|-15.16869|0.22947 +2016-07-01|62.0|-86.0|-14.03915|0.21337 +2016-07-01|62.0|-87.0|-12.86762|0.19616 +2016-07-01|62.0|-88.0|-11.65809|0.17788 +2016-07-01|62.0|-89.0|-10.41504|0.15862 +2016-07-01|62.0|-90.0|-9.14342|0.13847 +2016-07-01|62.0|-91.0|-7.84858|0.11755 +2016-07-01|62.0|-92.0|-6.53623|0.09599 +2016-07-01|62.0|-93.0|-5.21231|0.07394 +2016-07-01|62.0|-94.0|-3.88289|0.05156 +2016-07-01|62.0|-95.0|-2.55411|0.029 +2016-07-01|62.0|-96.0|-1.23204|0.00643 +2016-07-01|62.0|-97.0|0.07741|-0.01598 +2016-07-01|62.0|-98.0|1.3686|-0.03809 +2016-07-01|62.0|-99.0|2.63622|-0.05976 +2016-07-01|62.0|-100.0|3.87537|-0.08086 +2016-07-01|62.0|-101.0|5.08164|-0.10128 +2016-07-01|62.0|-102.0|6.25111|-0.12092 +2016-07-01|62.0|-103.0|7.38039|-0.13973 +2016-07-01|62.0|-104.0|8.46663|-0.15764 +2016-07-01|62.0|-105.0|9.5075|-0.17461 +2016-07-01|62.0|-106.0|10.50119|-0.19063 +2016-07-01|62.0|-107.0|11.44638|-0.20569 +2016-07-01|62.0|-108.0|12.34218|-0.2198 +2016-07-01|62.0|-109.0|13.18811|-0.23298 +2016-07-01|62.0|-110.0|13.98404|-0.24525 +2016-07-01|62.0|-111.0|14.7302|-0.25664 +2016-07-01|62.0|-112.0|15.42704|-0.2672 +2016-07-01|62.0|-113.0|16.07528|-0.27696 +2016-07-01|62.0|-114.0|16.67581|-0.28598 +2016-07-01|62.0|-115.0|17.2297|-0.29428 +2016-07-01|62.0|-116.0|17.73812|-0.30193 +2016-07-01|62.0|-117.0|18.20234|-0.30896 +2016-07-01|62.0|-118.0|18.6237|-0.31541 +2016-07-01|62.0|-119.0|19.0036|-0.32132 +2016-07-01|62.0|-120.0|19.34343|-0.32673 +2016-07-01|62.0|-121.0|19.64462|-0.33168 +2016-07-01|62.0|-122.0|19.90859|-0.3362 +2016-07-01|62.0|-123.0|20.13673|-0.34032 +2016-07-01|62.0|-124.0|20.33042|-0.34407 +2016-07-01|62.0|-125.0|20.49102|-0.34746 +2016-07-01|62.0|-126.0|20.61982|-0.35053 +2016-07-01|62.0|-127.0|20.71811|-0.3533 +2016-07-01|62.0|-128.0|20.78711|-0.35577 +2016-07-01|62.0|-129.0|20.82801|-0.35798 +2016-07-01|62.0|-130.0|20.84194|-0.35992 +2016-07-01|62.0|-131.0|20.83002|-0.36162 +2016-07-01|62.0|-132.0|20.79328|-0.36309 +2016-07-01|62.0|-133.0|20.73273|-0.36432 +2016-07-01|62.0|-134.0|20.64935|-0.36534 +2016-07-01|62.0|-135.0|20.54405|-0.36615 +2016-07-01|62.0|-136.0|20.41773|-0.36675 +2016-07-01|62.0|-137.0|20.27123|-0.36715 +2016-07-01|62.0|-138.0|20.10536|-0.36735 +2016-07-01|62.0|-139.0|19.9209|-0.36735 +2016-07-01|62.0|-140.0|19.7186|-0.36716 +2016-07-01|62.0|-141.0|19.49917|-0.36677 +2016-07-01|62.0|-142.0|19.26331|-0.36619 +2016-07-01|62.0|-143.0|19.01166|-0.36541 +2016-07-01|62.0|-144.0|18.74486|-0.36444 +2016-07-01|62.0|-145.0|18.46353|-0.36328 +2016-07-01|62.0|-146.0|18.16824|-0.36192 +2016-07-01|62.0|-147.0|17.85958|-0.36036 +2016-07-01|62.0|-148.0|17.53807|-0.3586 +2016-07-01|62.0|-149.0|17.20425|-0.35665 +2016-07-01|62.0|-150.0|16.85864|-0.35449 +2016-07-01|62.0|-151.0|16.50171|-0.35214 +2016-07-01|62.0|-152.0|16.13395|-0.34957 +2016-07-01|62.0|-153.0|15.75581|-0.34681 +2016-07-01|62.0|-154.0|15.36776|-0.34383 +2016-07-01|62.0|-155.0|14.97021|-0.34065 +2016-07-01|62.0|-156.0|14.56359|-0.33727 +2016-07-01|62.0|-157.0|14.14832|-0.33367 +2016-07-01|62.0|-158.0|13.72478|-0.32987 +2016-07-01|62.0|-159.0|13.29336|-0.32586 +2016-07-01|62.0|-160.0|12.85443|-0.32164 +2016-07-01|62.0|-161.0|12.40837|-0.31722 +2016-07-01|62.0|-162.0|11.95553|-0.3126 +2016-07-01|62.0|-163.0|11.49626|-0.30778 +2016-07-01|62.0|-164.0|11.03088|-0.30275 +2016-07-01|62.0|-165.0|10.55974|-0.29754 +2016-07-01|62.0|-166.0|10.08316|-0.29213 +2016-07-01|62.0|-167.0|9.60144|-0.28653 +2016-07-01|62.0|-168.0|9.11491|-0.28076 +2016-07-01|62.0|-169.0|8.62386|-0.27481 +2016-07-01|62.0|-170.0|8.12859|-0.26869 +2016-07-01|62.0|-171.0|7.6294|-0.2624 +2016-07-01|62.0|-172.0|7.12656|-0.25597 +2016-07-01|62.0|-173.0|6.62037|-0.24938 +2016-07-01|62.0|-174.0|6.11111|-0.24266 +2016-07-01|62.0|-175.0|5.59905|-0.23581 +2016-07-01|62.0|-176.0|5.08447|-0.22885 +2016-07-01|62.0|-177.0|4.56766|-0.22177 +2016-07-01|62.0|-178.0|4.04888|-0.2146 +2016-07-01|62.0|-179.0|3.52842|-0.20734 +2016-07-01|63.0|0.0|-2.18207|0.20578 +2016-07-01|63.0|1.0|-1.67628|0.20395 +2016-07-01|63.0|2.0|-1.17309|0.20217 +2016-07-01|63.0|3.0|-0.67257|0.20044 +2016-07-01|63.0|4.0|-0.17478|0.19875 +2016-07-01|63.0|5.0|0.32024|0.1971 +2016-07-01|63.0|6.0|0.81242|0.1955 +2016-07-01|63.0|7.0|1.30175|0.19393 +2016-07-01|63.0|8.0|1.78818|0.19241 +2016-07-01|63.0|9.0|2.27169|0.19093 +2016-07-01|63.0|10.0|2.75225|0.18949 +2016-07-01|63.0|11.0|3.22985|0.18808 +2016-07-01|63.0|12.0|3.70446|0.1867 +2016-07-01|63.0|13.0|4.17606|0.18536 +2016-07-01|63.0|14.0|4.64462|0.18405 +2016-07-01|63.0|15.0|5.11012|0.18277 +2016-07-01|63.0|16.0|5.57253|0.1815 +2016-07-01|63.0|17.0|6.0318|0.18027 +2016-07-01|63.0|18.0|6.48789|0.17905 +2016-07-01|63.0|19.0|6.94074|0.17784 +2016-07-01|63.0|20.0|7.39028|0.17665 +2016-07-01|63.0|21.0|7.83645|0.17547 +2016-07-01|63.0|22.0|8.27914|0.17429 +2016-07-01|63.0|23.0|8.71826|0.17312 +2016-07-01|63.0|24.0|9.15367|0.17195 +2016-07-01|63.0|25.0|9.58526|0.17077 +2016-07-01|63.0|26.0|10.01287|0.16959 +2016-07-01|63.0|27.0|10.43633|0.1684 +2016-07-01|63.0|28.0|10.85545|0.16719 +2016-07-01|63.0|29.0|11.27004|0.16597 +2016-07-01|63.0|30.0|11.67987|0.16473 +2016-07-01|63.0|31.0|12.0847|0.16346 +2016-07-01|63.0|32.0|12.48427|0.16217 +2016-07-01|63.0|33.0|12.8783|0.16085 +2016-07-01|63.0|34.0|13.2665|0.1595 +2016-07-01|63.0|35.0|13.64856|0.15812 +2016-07-01|63.0|36.0|14.02413|0.1567 +2016-07-01|63.0|37.0|14.39287|0.15524 +2016-07-01|63.0|38.0|14.7544|0.15374 +2016-07-01|63.0|39.0|15.10834|0.1522 +2016-07-01|63.0|40.0|15.45427|0.15061 +2016-07-01|63.0|41.0|15.79178|0.14897 +2016-07-01|63.0|42.0|16.12042|0.14728 +2016-07-01|63.0|43.0|16.43973|0.14554 +2016-07-01|63.0|44.0|16.74923|0.14374 +2016-07-01|63.0|45.0|17.04844|0.14188 +2016-07-01|63.0|46.0|17.33684|0.13997 +2016-07-01|63.0|47.0|17.6139|0.13799 +2016-07-01|63.0|48.0|17.87909|0.13594 +2016-07-01|63.0|49.0|18.13184|0.13383 +2016-07-01|63.0|50.0|18.37157|0.13165 +2016-07-01|63.0|51.0|18.59771|0.12939 +2016-07-01|63.0|52.0|18.80964|0.12706 +2016-07-01|63.0|53.0|19.00674|0.12464 +2016-07-01|63.0|54.0|19.18838|0.12215 +2016-07-01|63.0|55.0|19.35389|0.11956 +2016-07-01|63.0|56.0|19.50262|0.11689 +2016-07-01|63.0|57.0|19.63387|0.11411 +2016-07-01|63.0|58.0|19.74696|0.11124 +2016-07-01|63.0|59.0|19.84116|0.10826 +2016-07-01|63.0|60.0|19.91575|0.10517 +2016-07-01|63.0|61.0|19.96999|0.10197 +2016-07-01|63.0|62.0|20.00314|0.09865 +2016-07-01|63.0|63.0|20.01442|0.0952 +2016-07-01|63.0|64.0|20.00307|0.09162 +2016-07-01|63.0|65.0|19.9683|0.08791 +2016-07-01|63.0|66.0|19.90934|0.08405 +2016-07-01|63.0|67.0|19.82539|0.08005 +2016-07-01|63.0|68.0|19.71568|0.0759 +2016-07-01|63.0|69.0|19.5794|0.07159 +2016-07-01|63.0|70.0|19.4158|0.06712 +2016-07-01|63.0|71.0|19.22411|0.06249 +2016-07-01|63.0|72.0|19.00358|0.0577 +2016-07-01|63.0|73.0|18.75351|0.05274 +2016-07-01|63.0|74.0|18.47321|0.04761 +2016-07-01|63.0|75.0|18.16204|0.04232 +2016-07-01|63.0|76.0|17.81941|0.03686 +2016-07-01|63.0|77.0|17.44479|0.03125 +2016-07-01|63.0|78.0|17.03772|0.02548 +2016-07-01|63.0|79.0|16.59785|0.01957 +2016-07-01|63.0|80.0|16.12489|0.01353 +2016-07-01|63.0|81.0|15.61869|0.00737 +2016-07-01|63.0|82.0|15.0792|0.00111 +2016-07-01|63.0|83.0|14.50655|-0.00524 +2016-07-01|63.0|84.0|13.90099|-0.01164 +2016-07-01|63.0|85.0|13.26295|-0.01807 +2016-07-01|63.0|86.0|12.59306|-0.02451 +2016-07-01|63.0|87.0|11.89214|-0.03092 +2016-07-01|63.0|88.0|11.1612|-0.03726 +2016-07-01|63.0|89.0|10.40151|-0.04349 +2016-07-01|63.0|90.0|9.61452|-0.04958 +2016-07-01|63.0|91.0|8.80196|-0.05549 +2016-07-01|63.0|92.0|7.96574|-0.06116 +2016-07-01|63.0|93.0|7.10804|-0.06656 +2016-07-01|63.0|94.0|6.23124|-0.07163 +2016-07-01|63.0|95.0|5.33793|-0.07635 +2016-07-01|63.0|96.0|4.43088|-0.08067 +2016-07-01|63.0|97.0|3.51305|-0.08455 +2016-07-01|63.0|98.0|2.58753|-0.08795 +2016-07-01|63.0|99.0|1.65751|-0.09086 +2016-07-01|63.0|100.0|0.72629|-0.09324 +2016-07-01|63.0|101.0|-0.20281|-0.09509 +2016-07-01|63.0|102.0|-1.12646|-0.09638 +2016-07-01|63.0|103.0|-2.04133|-0.09711 +2016-07-01|63.0|104.0|-2.94419|-0.09729 +2016-07-01|63.0|105.0|-3.8319|-0.09693 +2016-07-01|63.0|106.0|-4.70142|-0.09605 +2016-07-01|63.0|107.0|-5.54992|-0.09466 +2016-07-01|63.0|108.0|-6.37473|-0.09279 +2016-07-01|63.0|109.0|-7.17336|-0.09048 +2016-07-01|63.0|110.0|-7.94359|-0.08775 +2016-07-01|63.0|111.0|-8.68339|-0.08466 +2016-07-01|63.0|112.0|-9.391|-0.08124 +2016-07-01|63.0|113.0|-10.06488|-0.07753 +2016-07-01|63.0|114.0|-10.70375|-0.07357 +2016-07-01|63.0|115.0|-11.30655|-0.06942 +2016-07-01|63.0|116.0|-11.87244|-0.06512 +2016-07-01|63.0|117.0|-12.40081|-0.0607 +2016-07-01|63.0|118.0|-12.89127|-0.0562 +2016-07-01|63.0|119.0|-13.34357|-0.05168 +2016-07-01|63.0|120.0|-13.75769|-0.04716 +2016-07-01|63.0|121.0|-14.13374|-0.04267 +2016-07-01|63.0|122.0|-14.47198|-0.03826 +2016-07-01|63.0|123.0|-14.7728|-0.03395 +2016-07-01|63.0|124.0|-15.0367|-0.02978 +2016-07-01|63.0|125.0|-15.26429|-0.02575 +2016-07-01|63.0|126.0|-15.45626|-0.02191 +2016-07-01|63.0|127.0|-15.61336|-0.01826 +2016-07-01|63.0|128.0|-15.73644|-0.01484 +2016-07-01|63.0|129.0|-15.82637|-0.01165 +2016-07-01|63.0|130.0|-15.88406|-0.00871 +2016-07-01|63.0|131.0|-15.91047|-0.00603 +2016-07-01|63.0|132.0|-15.90658|-0.00364 +2016-07-01|63.0|133.0|-15.87339|-0.00153 +2016-07-01|63.0|134.0|-15.8119|2.9E-4 +2016-07-01|63.0|135.0|-15.72312|0.00179 +2016-07-01|63.0|136.0|-15.60807|0.00299 +2016-07-01|63.0|137.0|-15.46776|0.00387 +2016-07-01|63.0|138.0|-15.3032|0.00444 +2016-07-01|63.0|139.0|-15.11538|0.00467 +2016-07-01|63.0|140.0|-14.90529|0.00459 +2016-07-01|63.0|141.0|-14.67389|0.00417 +2016-07-01|63.0|142.0|-14.42213|0.00342 +2016-07-01|63.0|143.0|-14.15096|0.00235 +2016-07-01|63.0|144.0|-13.86128|9.5E-4 +2016-07-01|63.0|145.0|-13.554|-7.8E-4 +2016-07-01|63.0|146.0|-13.22997|-0.00283 +2016-07-01|63.0|147.0|-12.89005|-0.0052 +2016-07-01|63.0|148.0|-12.53508|-0.00788 +2016-07-01|63.0|149.0|-12.16585|-0.01088 +2016-07-01|63.0|150.0|-11.78314|-0.01419 +2016-07-01|63.0|151.0|-11.38771|-0.0178 +2016-07-01|63.0|152.0|-10.9803|-0.0217 +2016-07-01|63.0|153.0|-10.56162|-0.02589 +2016-07-01|63.0|154.0|-10.13236|-0.03035 +2016-07-01|63.0|155.0|-9.69317|-0.03509 +2016-07-01|63.0|156.0|-9.2447|-0.0401 +2016-07-01|63.0|157.0|-8.78758|-0.04535 +2016-07-01|63.0|158.0|-8.32239|-0.05085 +2016-07-01|63.0|159.0|-7.8497|-0.05658 +2016-07-01|63.0|160.0|-7.37009|-0.06253 +2016-07-01|63.0|161.0|-6.88407|-0.0687 +2016-07-01|63.0|162.0|-6.39216|-0.07506 +2016-07-01|63.0|163.0|-5.89486|-0.0816 +2016-07-01|63.0|164.0|-5.39264|-0.08832 +2016-07-01|63.0|165.0|-4.88595|-0.0952 +2016-07-01|63.0|166.0|-4.37524|-0.10223 +2016-07-01|63.0|167.0|-3.86093|-0.10939 +2016-07-01|63.0|168.0|-3.34343|-0.11667 +2016-07-01|63.0|169.0|-2.82313|-0.12406 +2016-07-01|63.0|170.0|-2.30041|-0.13154 +2016-07-01|63.0|171.0|-1.77563|-0.13909 +2016-07-01|63.0|172.0|-1.24915|-0.14672 +2016-07-01|63.0|173.0|-0.72131|-0.15439 +2016-07-01|63.0|174.0|-0.19244|-0.16209 +2016-07-01|63.0|175.0|0.33714|-0.16983 +2016-07-01|63.0|176.0|0.86711|-0.17756 +2016-07-01|63.0|177.0|1.39717|-0.1853 +2016-07-01|63.0|178.0|1.92702|-0.19302 +2016-07-01|63.0|179.0|2.45636|-0.2007 +2016-07-01|63.0|-1.0|-2.69039|0.20765 +2016-07-01|63.0|-2.0|-3.20113|0.20956 +2016-07-01|63.0|-3.0|-3.7142|0.21152 +2016-07-01|63.0|-4.0|-4.22948|0.21353 +2016-07-01|63.0|-5.0|-4.74687|0.21558 +2016-07-01|63.0|-6.0|-5.26621|0.21768 +2016-07-01|63.0|-7.0|-5.78736|0.21981 +2016-07-01|63.0|-8.0|-6.31018|0.222 +2016-07-01|63.0|-9.0|-6.83447|0.22422 +2016-07-01|63.0|-10.0|-7.36008|0.22648 +2016-07-01|63.0|-11.0|-7.8868|0.22879 +2016-07-01|63.0|-12.0|-8.41443|0.23113 +2016-07-01|63.0|-13.0|-8.94277|0.23352 +2016-07-01|63.0|-14.0|-9.47158|0.23594 +2016-07-01|63.0|-15.0|-10.00065|0.2384 +2016-07-01|63.0|-16.0|-10.52972|0.24089 +2016-07-01|63.0|-17.0|-11.05855|0.24342 +2016-07-01|63.0|-18.0|-11.58688|0.24598 +2016-07-01|63.0|-19.0|-12.11445|0.24857 +2016-07-01|63.0|-20.0|-12.64097|0.2512 +2016-07-01|63.0|-21.0|-13.16615|0.25385 +2016-07-01|63.0|-22.0|-13.68972|0.25653 +2016-07-01|63.0|-23.0|-14.21137|0.25924 +2016-07-01|63.0|-24.0|-14.73078|0.26198 +2016-07-01|63.0|-25.0|-15.24764|0.26474 +2016-07-01|63.0|-26.0|-15.76161|0.26753 +2016-07-01|63.0|-27.0|-16.27236|0.27034 +2016-07-01|63.0|-28.0|-16.77954|0.27317 +2016-07-01|63.0|-29.0|-17.28279|0.27602 +2016-07-01|63.0|-30.0|-17.78173|0.27889 +2016-07-01|63.0|-31.0|-18.27597|0.28178 +2016-07-01|63.0|-32.0|-18.76512|0.28468 +2016-07-01|63.0|-33.0|-19.24875|0.2876 +2016-07-01|63.0|-34.0|-19.72644|0.29053 +2016-07-01|63.0|-35.0|-20.19773|0.29347 +2016-07-01|63.0|-36.0|-20.66216|0.29643 +2016-07-01|63.0|-37.0|-21.11923|0.29939 +2016-07-01|63.0|-38.0|-21.56843|0.30236 +2016-07-01|63.0|-39.0|-22.00923|0.30533 +2016-07-01|63.0|-40.0|-22.44105|0.30831 +2016-07-01|63.0|-41.0|-22.86332|0.31128 +2016-07-01|63.0|-42.0|-23.27542|0.31426 +2016-07-01|63.0|-43.0|-23.6767|0.31723 +2016-07-01|63.0|-44.0|-24.06647|0.3202 +2016-07-01|63.0|-45.0|-24.44403|0.32316 +2016-07-01|63.0|-46.0|-24.80862|0.3261 +2016-07-01|63.0|-47.0|-25.15945|0.32903 +2016-07-01|63.0|-48.0|-25.49569|0.33194 +2016-07-01|63.0|-49.0|-25.81649|0.33483 +2016-07-01|63.0|-50.0|-26.12091|0.33769 +2016-07-01|63.0|-51.0|-26.408|0.34051 +2016-07-01|63.0|-52.0|-26.67675|0.34329 +2016-07-01|63.0|-53.0|-26.92612|0.34603 +2016-07-01|63.0|-54.0|-27.15498|0.34871 +2016-07-01|63.0|-55.0|-27.36218|0.35132 +2016-07-01|63.0|-56.0|-27.54651|0.35386 +2016-07-01|63.0|-57.0|-27.7067|0.35631 +2016-07-01|63.0|-58.0|-27.84142|0.35866 +2016-07-01|63.0|-59.0|-27.9493|0.3609 +2016-07-01|63.0|-60.0|-28.02889|0.363 +2016-07-01|63.0|-61.0|-28.07871|0.36495 +2016-07-01|63.0|-62.0|-28.09722|0.36673 +2016-07-01|63.0|-63.0|-28.0828|0.36831 +2016-07-01|63.0|-64.0|-28.03381|0.36967 +2016-07-01|63.0|-65.0|-27.94856|0.37077 +2016-07-01|63.0|-66.0|-27.82531|0.37158 +2016-07-01|63.0|-67.0|-27.6623|0.37207 +2016-07-01|63.0|-68.0|-27.45773|0.37219 +2016-07-01|63.0|-69.0|-27.20981|0.3719 +2016-07-01|63.0|-70.0|-26.91674|0.37114 +2016-07-01|63.0|-71.0|-26.57674|0.36987 +2016-07-01|63.0|-72.0|-26.18806|0.36802 +2016-07-01|63.0|-73.0|-25.74904|0.36554 +2016-07-01|63.0|-74.0|-25.2581|0.36235 +2016-07-01|63.0|-75.0|-24.71376|0.35838 +2016-07-01|63.0|-76.0|-24.11472|0.35357 +2016-07-01|63.0|-77.0|-23.4599|0.34783 +2016-07-01|63.0|-78.0|-22.7484|0.3411 +2016-07-01|63.0|-79.0|-21.97967|0.3333 +2016-07-01|63.0|-80.0|-21.15347|0.32435 +2016-07-01|63.0|-81.0|-20.26994|0.31419 +2016-07-01|63.0|-82.0|-19.32967|0.30277 +2016-07-01|63.0|-83.0|-18.33372|0.29004 +2016-07-01|63.0|-84.0|-17.28369|0.27596 +2016-07-01|63.0|-85.0|-16.18175|0.26053 +2016-07-01|63.0|-86.0|-15.03063|0.24373 +2016-07-01|63.0|-87.0|-13.83368|0.2256 +2016-07-01|63.0|-88.0|-12.59484|0.20619 +2016-07-01|63.0|-89.0|-11.31865|0.18556 +2016-07-01|63.0|-90.0|-10.01015|0.16383 +2016-07-01|63.0|-91.0|-8.6749|0.14112 +2016-07-01|63.0|-92.0|-7.31884|0.11756 +2016-07-01|63.0|-93.0|-5.94825|0.09334 +2016-07-01|63.0|-94.0|-4.56959|0.06861 +2016-07-01|63.0|-95.0|-3.18944|0.04359 +2016-07-01|63.0|-96.0|-1.81435|0.01845 +2016-07-01|63.0|-97.0|-0.45073|-0.0066 +2016-07-01|63.0|-98.0|0.89526|-0.03139 +2016-07-01|63.0|-99.0|2.21779|-0.05573 +2016-07-01|63.0|-100.0|3.5115|-0.07948 +2016-07-01|63.0|-101.0|4.77148|-0.10249 +2016-07-01|63.0|-102.0|5.9934|-0.12464 +2016-07-01|63.0|-103.0|7.17351|-0.14585 +2016-07-01|63.0|-104.0|8.30862|-0.16604 +2016-07-01|63.0|-105.0|9.39616|-0.18515 +2016-07-01|63.0|-106.0|10.4341|-0.20317 +2016-07-01|63.0|-107.0|11.42096|-0.22008 +2016-07-01|63.0|-108.0|12.35573|-0.23588 +2016-07-01|63.0|-109.0|13.23789|-0.25059 +2016-07-01|63.0|-110.0|14.06728|-0.26425 +2016-07-01|63.0|-111.0|14.84413|-0.27689 +2016-07-01|63.0|-112.0|15.56895|-0.28855 +2016-07-01|63.0|-113.0|16.24252|-0.29928 +2016-07-01|63.0|-114.0|16.86583|-0.30913 +2016-07-01|63.0|-115.0|17.44002|-0.31817 +2016-07-01|63.0|-116.0|17.96639|-0.32643 +2016-07-01|63.0|-117.0|18.44634|-0.33397 +2016-07-01|63.0|-118.0|18.88132|-0.34085 +2016-07-01|63.0|-119.0|19.27285|-0.3471 +2016-07-01|63.0|-120.0|19.62246|-0.35278 +2016-07-01|63.0|-121.0|19.93171|-0.35792 +2016-07-01|63.0|-122.0|20.20212|-0.36256 +2016-07-01|63.0|-123.0|20.43522|-0.36675 +2016-07-01|63.0|-124.0|20.63251|-0.37051 +2016-07-01|63.0|-125.0|20.79543|-0.37388 +2016-07-01|63.0|-126.0|20.92541|-0.37688 +2016-07-01|63.0|-127.0|21.02382|-0.37953 +2016-07-01|63.0|-128.0|21.09198|-0.38186 +2016-07-01|63.0|-129.0|21.13117|-0.38389 +2016-07-01|63.0|-130.0|21.14261|-0.38563 +2016-07-01|63.0|-131.0|21.12747|-0.3871 +2016-07-01|63.0|-132.0|21.08689|-0.38831 +2016-07-01|63.0|-133.0|21.02193|-0.38927 +2016-07-01|63.0|-134.0|20.93363|-0.39 +2016-07-01|63.0|-135.0|20.82298|-0.3905 +2016-07-01|63.0|-136.0|20.6909|-0.39078 +2016-07-01|63.0|-137.0|20.53831|-0.39084 +2016-07-01|63.0|-138.0|20.36606|-0.39069 +2016-07-01|63.0|-139.0|20.17497|-0.39033 +2016-07-01|63.0|-140.0|19.96582|-0.38977 +2016-07-01|63.0|-141.0|19.73938|-0.38901 +2016-07-01|63.0|-142.0|19.49635|-0.38804 +2016-07-01|63.0|-143.0|19.23742|-0.38688 +2016-07-01|63.0|-144.0|18.96326|-0.38552 +2016-07-01|63.0|-145.0|18.6745|-0.38395 +2016-07-01|63.0|-146.0|18.37174|-0.38219 +2016-07-01|63.0|-147.0|18.05558|-0.38023 +2016-07-01|63.0|-148.0|17.72657|-0.37807 +2016-07-01|63.0|-149.0|17.38526|-0.3757 +2016-07-01|63.0|-150.0|17.03217|-0.37314 +2016-07-01|63.0|-151.0|16.6678|-0.37037 +2016-07-01|63.0|-152.0|16.29265|-0.3674 +2016-07-01|63.0|-153.0|15.90716|-0.36423 +2016-07-01|63.0|-154.0|15.51181|-0.36085 +2016-07-01|63.0|-155.0|15.10704|-0.35727 +2016-07-01|63.0|-156.0|14.69325|-0.35348 +2016-07-01|63.0|-157.0|14.27088|-0.34949 +2016-07-01|63.0|-158.0|13.84031|-0.3453 +2016-07-01|63.0|-159.0|13.40194|-0.3409 +2016-07-01|63.0|-160.0|12.95614|-0.3363 +2016-07-01|63.0|-161.0|12.50328|-0.3315 +2016-07-01|63.0|-162.0|12.04371|-0.3265 +2016-07-01|63.0|-163.0|11.57778|-0.32131 +2016-07-01|63.0|-164.0|11.10582|-0.31593 +2016-07-01|63.0|-165.0|10.62817|-0.31035 +2016-07-01|63.0|-166.0|10.14515|-0.3046 +2016-07-01|63.0|-167.0|9.65706|-0.29866 +2016-07-01|63.0|-168.0|9.16423|-0.29255 +2016-07-01|63.0|-169.0|8.66694|-0.28628 +2016-07-01|63.0|-170.0|8.16549|-0.27984 +2016-07-01|63.0|-171.0|7.66019|-0.27324 +2016-07-01|63.0|-172.0|7.1513|-0.2665 +2016-07-01|63.0|-173.0|6.63912|-0.25962 +2016-07-01|63.0|-174.0|6.12392|-0.25261 +2016-07-01|63.0|-175.0|5.60599|-0.24547 +2016-07-01|63.0|-176.0|5.08559|-0.23823 +2016-07-01|63.0|-177.0|4.56301|-0.23088 +2016-07-01|63.0|-178.0|4.03852|-0.22344 +2016-07-01|63.0|-179.0|3.5124|-0.21593 +2016-07-01|64.0|0.0|-2.31994|0.21293 +2016-07-01|64.0|1.0|-1.79733|0.21106 +2016-07-01|64.0|2.0|-1.27705|0.20924 +2016-07-01|64.0|3.0|-0.7592|0.20745 +2016-07-01|64.0|4.0|-0.24383|0.20572 +2016-07-01|64.0|5.0|0.26899|0.20402 +2016-07-01|64.0|6.0|0.77921|0.20237 +2016-07-01|64.0|7.0|1.28677|0.20076 +2016-07-01|64.0|8.0|1.79164|0.19919 +2016-07-01|64.0|9.0|2.29376|0.19765 +2016-07-01|64.0|10.0|2.7931|0.19615 +2016-07-01|64.0|11.0|3.28962|0.19469 +2016-07-01|64.0|12.0|3.78329|0.19326 +2016-07-01|64.0|13.0|4.27406|0.19186 +2016-07-01|64.0|14.0|4.76189|0.19049 +2016-07-01|64.0|15.0|5.24674|0.18915 +2016-07-01|64.0|16.0|5.72855|0.18783 +2016-07-01|64.0|17.0|6.20727|0.18653 +2016-07-01|64.0|18.0|6.68284|0.18525 +2016-07-01|64.0|19.0|7.15518|0.18398 +2016-07-01|64.0|20.0|7.62422|0.18273 +2016-07-01|64.0|21.0|8.08985|0.18148 +2016-07-01|64.0|22.0|8.55198|0.18025 +2016-07-01|64.0|23.0|9.01049|0.17902 +2016-07-01|64.0|24.0|9.46525|0.17779 +2016-07-01|64.0|25.0|9.9161|0.17655 +2016-07-01|64.0|26.0|10.3629|0.17531 +2016-07-01|64.0|27.0|10.80547|0.17407 +2016-07-01|64.0|28.0|11.24361|0.17281 +2016-07-01|64.0|29.0|11.67711|0.17153 +2016-07-01|64.0|30.0|12.10575|0.17024 +2016-07-01|64.0|31.0|12.52929|0.16893 +2016-07-01|64.0|32.0|12.94745|0.1676 +2016-07-01|64.0|33.0|13.35997|0.16624 +2016-07-01|64.0|34.0|13.76654|0.16485 +2016-07-01|64.0|35.0|14.16684|0.16343 +2016-07-01|64.0|36.0|14.56055|0.16197 +2016-07-01|64.0|37.0|14.9473|0.16048 +2016-07-01|64.0|38.0|15.32673|0.15895 +2016-07-01|64.0|39.0|15.69845|0.15738 +2016-07-01|64.0|40.0|16.06204|0.15576 +2016-07-01|64.0|41.0|16.41709|0.1541 +2016-07-01|64.0|42.0|16.76315|0.15238 +2016-07-01|64.0|43.0|17.09975|0.15062 +2016-07-01|64.0|44.0|17.42643|0.1488 +2016-07-01|64.0|45.0|17.74267|0.14692 +2016-07-01|64.0|46.0|18.04797|0.14499 +2016-07-01|64.0|47.0|18.3418|0.14299 +2016-07-01|64.0|48.0|18.62359|0.14093 +2016-07-01|64.0|49.0|18.89279|0.1388 +2016-07-01|64.0|50.0|19.14881|0.13659 +2016-07-01|64.0|51.0|19.39105|0.13432 +2016-07-01|64.0|52.0|19.61887|0.13196 +2016-07-01|64.0|53.0|19.83165|0.12952 +2016-07-01|64.0|54.0|20.02873|0.12699 +2016-07-01|64.0|55.0|20.20942|0.12438 +2016-07-01|64.0|56.0|20.37304|0.12167 +2016-07-01|64.0|57.0|20.51886|0.11886 +2016-07-01|64.0|58.0|20.64617|0.11594 +2016-07-01|64.0|59.0|20.75421|0.11292 +2016-07-01|64.0|60.0|20.84222|0.10978 +2016-07-01|64.0|61.0|20.90942|0.10651 +2016-07-01|64.0|62.0|20.955|0.10313 +2016-07-01|64.0|63.0|20.97816|0.09961 +2016-07-01|64.0|64.0|20.97807|0.09595 +2016-07-01|64.0|65.0|20.95389|0.09215 +2016-07-01|64.0|66.0|20.90478|0.0882 +2016-07-01|64.0|67.0|20.82987|0.08409 +2016-07-01|64.0|68.0|20.72832|0.07983 +2016-07-01|64.0|69.0|20.59925|0.07539 +2016-07-01|64.0|70.0|20.44183|0.07079 +2016-07-01|64.0|71.0|20.2552|0.06602 +2016-07-01|64.0|72.0|20.03853|0.06106 +2016-07-01|64.0|73.0|19.79102|0.05593 +2016-07-01|64.0|74.0|19.51189|0.05062 +2016-07-01|64.0|75.0|19.20041|0.04513 +2016-07-01|64.0|76.0|18.85588|0.03946 +2016-07-01|64.0|77.0|18.47769|0.03362 +2016-07-01|64.0|78.0|18.06528|0.02761 +2016-07-01|64.0|79.0|17.61818|0.02145 +2016-07-01|64.0|80.0|17.13604|0.01514 +2016-07-01|64.0|81.0|16.61861|0.00869 +2016-07-01|64.0|82.0|16.06577|0.00214 +2016-07-01|64.0|83.0|15.47758|-0.00451 +2016-07-01|64.0|84.0|14.85423|-0.01123 +2016-07-01|64.0|85.0|14.19612|-0.01799 +2016-07-01|64.0|86.0|13.50386|-0.02475 +2016-07-01|64.0|87.0|12.77824|-0.03149 +2016-07-01|64.0|88.0|12.02033|-0.03816 +2016-07-01|64.0|89.0|11.23142|-0.04473 +2016-07-01|64.0|90.0|10.41303|-0.05114 +2016-07-01|64.0|91.0|9.56699|-0.05735 +2016-07-01|64.0|92.0|8.69534|-0.06332 +2016-07-01|64.0|93.0|7.80041|-0.06899 +2016-07-01|64.0|94.0|6.88476|-0.07432 +2016-07-01|64.0|95.0|5.95118|-0.07926 +2016-07-01|64.0|96.0|5.00269|-0.08377 +2016-07-01|64.0|97.0|4.04249|-0.0878 +2016-07-01|64.0|98.0|3.07392|-0.09132 +2016-07-01|64.0|99.0|2.10049|-0.0943 +2016-07-01|64.0|100.0|1.12574|-0.09672 +2016-07-01|64.0|101.0|0.15331|-0.09856 +2016-07-01|64.0|102.0|-0.81319|-0.09981 +2016-07-01|64.0|103.0|-1.77019|-0.10046 +2016-07-01|64.0|104.0|-2.71418|-0.10052 +2016-07-01|64.0|105.0|-3.64178|-0.1 +2016-07-01|64.0|106.0|-4.54976|-0.09893 +2016-07-01|64.0|107.0|-5.43507|-0.09733 +2016-07-01|64.0|108.0|-6.2949|-0.09523 +2016-07-01|64.0|109.0|-7.12666|-0.09267 +2016-07-01|64.0|110.0|-7.92798|-0.08969 +2016-07-01|64.0|111.0|-8.69682|-0.08633 +2016-07-01|64.0|112.0|-9.43134|-0.08265 +2016-07-01|64.0|113.0|-10.13|-0.07868 +2016-07-01|64.0|114.0|-10.79154|-0.07447 +2016-07-01|64.0|115.0|-11.41492|-0.07008 +2016-07-01|64.0|116.0|-11.99937|-0.06554 +2016-07-01|64.0|117.0|-12.54435|-0.06091 +2016-07-01|64.0|118.0|-13.04953|-0.05622 +2016-07-01|64.0|119.0|-13.51479|-0.05152 +2016-07-01|64.0|120.0|-13.94017|-0.04685 +2016-07-01|64.0|121.0|-14.32591|-0.04224 +2016-07-01|64.0|122.0|-14.67236|-0.03773 +2016-07-01|64.0|123.0|-14.98003|-0.03334 +2016-07-01|64.0|124.0|-15.24953|-0.0291 +2016-07-01|64.0|125.0|-15.48157|-0.02504 +2016-07-01|64.0|126.0|-15.67693|-0.02118 +2016-07-01|64.0|127.0|-15.8365|-0.01754 +2016-07-01|64.0|128.0|-15.96117|-0.01415 +2016-07-01|64.0|129.0|-16.05192|-0.01101 +2016-07-01|64.0|130.0|-16.10976|-0.00813 +2016-07-01|64.0|131.0|-16.13571|-0.00554 +2016-07-01|64.0|132.0|-16.13082|-0.00324 +2016-07-01|64.0|133.0|-16.09614|-0.00125 +2016-07-01|64.0|134.0|-16.03276|4.4E-4 +2016-07-01|64.0|135.0|-15.94173|0.00181 +2016-07-01|64.0|136.0|-15.82411|0.00285 +2016-07-01|64.0|137.0|-15.68097|0.00358 +2016-07-01|64.0|138.0|-15.51334|0.00397 +2016-07-01|64.0|139.0|-15.32226|0.00403 +2016-07-01|64.0|140.0|-15.10874|0.00376 +2016-07-01|64.0|141.0|-14.87377|0.00315 +2016-07-01|64.0|142.0|-14.61832|0.00221 +2016-07-01|64.0|143.0|-14.34336|9.4E-4 +2016-07-01|64.0|144.0|-14.04981|-6.6E-4 +2016-07-01|64.0|145.0|-13.73857|-0.0026 +2016-07-01|64.0|146.0|-13.41054|-0.00485 +2016-07-01|64.0|147.0|-13.06657|-0.00743 +2016-07-01|64.0|148.0|-12.70749|-0.01033 +2016-07-01|64.0|149.0|-12.33411|-0.01353 +2016-07-01|64.0|150.0|-11.94723|-0.01705 +2016-07-01|64.0|151.0|-11.5476|-0.02087 +2016-07-01|64.0|152.0|-11.13595|-0.02498 +2016-07-01|64.0|153.0|-10.713|-0.02937 +2016-07-01|64.0|154.0|-10.27944|-0.03405 +2016-07-01|64.0|155.0|-9.83592|-0.03899 +2016-07-01|64.0|156.0|-9.3831|-0.0442 +2016-07-01|64.0|157.0|-8.92158|-0.04966 +2016-07-01|64.0|158.0|-8.45196|-0.05536 +2016-07-01|64.0|159.0|-7.97482|-0.06129 +2016-07-01|64.0|160.0|-7.4907|-0.06744 +2016-07-01|64.0|161.0|-7.00014|-0.0738 +2016-07-01|64.0|162.0|-6.50365|-0.08036 +2016-07-01|64.0|163.0|-6.00173|-0.0871 +2016-07-01|64.0|164.0|-5.49483|-0.09402 +2016-07-01|64.0|165.0|-4.98343|-0.10109 +2016-07-01|64.0|166.0|-4.46796|-0.10832 +2016-07-01|64.0|167.0|-3.94884|-0.11567 +2016-07-01|64.0|168.0|-3.42647|-0.12315 +2016-07-01|64.0|169.0|-2.90126|-0.13074 +2016-07-01|64.0|170.0|-2.37357|-0.13842 +2016-07-01|64.0|171.0|-1.84377|-0.14618 +2016-07-01|64.0|172.0|-1.31222|-0.15401 +2016-07-01|64.0|173.0|-0.77926|-0.16189 +2016-07-01|64.0|174.0|-0.24521|-0.16982 +2016-07-01|64.0|175.0|0.2896|-0.17776 +2016-07-01|64.0|176.0|0.82485|-0.18573 +2016-07-01|64.0|177.0|1.36025|-0.19369 +2016-07-01|64.0|178.0|1.89549|-0.20164 +2016-07-01|64.0|179.0|2.43028|-0.20956 +2016-07-01|64.0|-1.0|-2.84481|0.21485 +2016-07-01|64.0|-2.0|-3.37184|0.21681 +2016-07-01|64.0|-3.0|-3.90094|0.21881 +2016-07-01|64.0|-4.0|-4.43197|0.22086 +2016-07-01|64.0|-5.0|-4.96484|0.22296 +2016-07-01|64.0|-6.0|-5.49939|0.2251 +2016-07-01|64.0|-7.0|-6.03549|0.22729 +2016-07-01|64.0|-8.0|-6.57298|0.22952 +2016-07-01|64.0|-9.0|-7.11171|0.2318 +2016-07-01|64.0|-10.0|-7.65149|0.23411 +2016-07-01|64.0|-11.0|-8.19215|0.23647 +2016-07-01|64.0|-12.0|-8.7335|0.23888 +2016-07-01|64.0|-13.0|-9.27532|0.24132 +2016-07-01|64.0|-14.0|-9.81741|0.24381 +2016-07-01|64.0|-15.0|-10.35955|0.24633 +2016-07-01|64.0|-16.0|-10.9015|0.2489 +2016-07-01|64.0|-17.0|-11.44304|0.2515 +2016-07-01|64.0|-18.0|-11.98391|0.25414 +2016-07-01|64.0|-19.0|-12.52386|0.25681 +2016-07-01|64.0|-20.0|-13.06261|0.25953 +2016-07-01|64.0|-21.0|-13.59991|0.26227 +2016-07-01|64.0|-22.0|-14.13547|0.26506 +2016-07-01|64.0|-23.0|-14.66899|0.26787 +2016-07-01|64.0|-24.0|-15.20018|0.27072 +2016-07-01|64.0|-25.0|-15.72873|0.2736 +2016-07-01|64.0|-26.0|-16.25432|0.27651 +2016-07-01|64.0|-27.0|-16.77662|0.27944 +2016-07-01|64.0|-28.0|-17.29529|0.28241 +2016-07-01|64.0|-29.0|-17.80998|0.28541 +2016-07-01|64.0|-30.0|-18.32032|0.28843 +2016-07-01|64.0|-31.0|-18.82594|0.29148 +2016-07-01|64.0|-32.0|-19.32644|0.29455 +2016-07-01|64.0|-33.0|-19.82143|0.29764 +2016-07-01|64.0|-34.0|-20.31046|0.30076 +2016-07-01|64.0|-35.0|-20.79311|0.30391 +2016-07-01|64.0|-36.0|-21.26891|0.30707 +2016-07-01|64.0|-37.0|-21.73738|0.31025 +2016-07-01|64.0|-38.0|-22.19802|0.31345 +2016-07-01|64.0|-39.0|-22.6503|0.31667 +2016-07-01|64.0|-40.0|-23.09367|0.3199 +2016-07-01|64.0|-41.0|-23.52755|0.32315 +2016-07-01|64.0|-42.0|-23.95134|0.32641 +2016-07-01|64.0|-43.0|-24.3644|0.32968 +2016-07-01|64.0|-44.0|-24.76605|0.33296 +2016-07-01|64.0|-45.0|-25.15561|0.33624 +2016-07-01|64.0|-46.0|-25.53233|0.33953 +2016-07-01|64.0|-47.0|-25.89543|0.34282 +2016-07-01|64.0|-48.0|-26.2441|0.34611 +2016-07-01|64.0|-49.0|-26.57748|0.3494 +2016-07-01|64.0|-50.0|-26.89466|0.35267 +2016-07-01|64.0|-51.0|-27.19471|0.35593 +2016-07-01|64.0|-52.0|-27.47662|0.35917 +2016-07-01|64.0|-53.0|-27.73934|0.36238 +2016-07-01|64.0|-54.0|-27.98179|0.36555 +2016-07-01|64.0|-55.0|-28.2028|0.36868 +2016-07-01|64.0|-56.0|-28.40116|0.37176 +2016-07-01|64.0|-57.0|-28.57562|0.37478 +2016-07-01|64.0|-58.0|-28.72484|0.37772 +2016-07-01|64.0|-59.0|-28.84744|0.38056 +2016-07-01|64.0|-60.0|-28.94197|0.3833 +2016-07-01|64.0|-61.0|-29.00693|0.38591 +2016-07-01|64.0|-62.0|-29.04074|0.38837 +2016-07-01|64.0|-63.0|-29.04178|0.39066 +2016-07-01|64.0|-64.0|-29.00836|0.39274 +2016-07-01|64.0|-65.0|-28.93874|0.39459 +2016-07-01|64.0|-66.0|-28.83112|0.39618 +2016-07-01|64.0|-67.0|-28.68368|0.39745 +2016-07-01|64.0|-68.0|-28.49454|0.39838 +2016-07-01|64.0|-69.0|-28.26179|0.3989 +2016-07-01|64.0|-70.0|-27.98354|0.39897 +2016-07-01|64.0|-71.0|-27.65786|0.39853 +2016-07-01|64.0|-72.0|-27.28287|0.3975 +2016-07-01|64.0|-73.0|-26.85672|0.39583 +2016-07-01|64.0|-74.0|-26.37765|0.39344 +2016-07-01|64.0|-75.0|-25.84397|0.39024 +2016-07-01|64.0|-76.0|-25.25416|0.38615 +2016-07-01|64.0|-77.0|-24.60686|0.38109 +2016-07-01|64.0|-78.0|-23.90095|0.37496 +2016-07-01|64.0|-79.0|-23.13555|0.36767 +2016-07-01|64.0|-80.0|-22.31015|0.35913 +2016-07-01|64.0|-81.0|-21.42459|0.34926 +2016-07-01|64.0|-82.0|-20.47916|0.33798 +2016-07-01|64.0|-83.0|-19.47465|0.32522 +2016-07-01|64.0|-84.0|-18.41239|0.31092 +2016-07-01|64.0|-85.0|-17.29429|0.29506 +2016-07-01|64.0|-86.0|-16.12292|0.2776 +2016-07-01|64.0|-87.0|-14.90148|0.25858 +2016-07-01|64.0|-88.0|-13.63383|0.23801 +2016-07-01|64.0|-89.0|-12.3245|0.21598 +2016-07-01|64.0|-90.0|-10.97862|0.19258 +2016-07-01|64.0|-91.0|-9.60191|0.16793 +2016-07-01|64.0|-92.0|-8.20056|0.1422 +2016-07-01|64.0|-93.0|-6.78118|0.11557 +2016-07-01|64.0|-94.0|-5.35065|0.08825 +2016-07-01|64.0|-95.0|-3.91602|0.06046 +2016-07-01|64.0|-96.0|-2.48437|0.03242 +2016-07-01|64.0|-97.0|-1.06267|0.00437 +2016-07-01|64.0|-98.0|0.34232|-0.02346 +2016-07-01|64.0|-99.0|1.72422|-0.05086 +2016-07-01|64.0|-100.0|3.07706|-0.07764 +2016-07-01|64.0|-101.0|4.39543|-0.10362 +2016-07-01|64.0|-102.0|5.6745|-0.12865 +2016-07-01|64.0|-103.0|6.91008|-0.15261 +2016-07-01|64.0|-104.0|8.09862|-0.17541 +2016-07-01|64.0|-105.0|9.23722|-0.19698 +2016-07-01|64.0|-106.0|10.32361|-0.21727 +2016-07-01|64.0|-107.0|11.35611|-0.23628 +2016-07-01|64.0|-108.0|12.33361|-0.25399 +2016-07-01|64.0|-109.0|13.25549|-0.27044 +2016-07-01|64.0|-110.0|14.12158|-0.28565 +2016-07-01|64.0|-111.0|14.9321|-0.29966 +2016-07-01|64.0|-112.0|15.68763|-0.31254 +2016-07-01|64.0|-113.0|16.38902|-0.32432 +2016-07-01|64.0|-114.0|17.03734|-0.33509 +2016-07-01|64.0|-115.0|17.63387|-0.3449 +2016-07-01|64.0|-116.0|18.18002|-0.3538 +2016-07-01|64.0|-117.0|18.67732|-0.36188 +2016-07-01|64.0|-118.0|19.12738|-0.36917 +2016-07-01|64.0|-119.0|19.53185|-0.37575 +2016-07-01|64.0|-120.0|19.89241|-0.38167 +2016-07-01|64.0|-121.0|20.21073|-0.38697 +2016-07-01|64.0|-122.0|20.48851|-0.3917 +2016-07-01|64.0|-123.0|20.72738|-0.39591 +2016-07-01|64.0|-124.0|20.92897|-0.39964 +2016-07-01|64.0|-125.0|21.09486|-0.40292 +2016-07-01|64.0|-126.0|21.22658|-0.40579 +2016-07-01|64.0|-127.0|21.32561|-0.40827 +2016-07-01|64.0|-128.0|21.39337|-0.41039 +2016-07-01|64.0|-129.0|21.43123|-0.41218 +2016-07-01|64.0|-130.0|21.44052|-0.41365 +2016-07-01|64.0|-131.0|21.42248|-0.41482 +2016-07-01|64.0|-132.0|21.37833|-0.41571 +2016-07-01|64.0|-133.0|21.3092|-0.41634 +2016-07-01|64.0|-134.0|21.21621|-0.41671 +2016-07-01|64.0|-135.0|21.10039|-0.41684 +2016-07-01|64.0|-136.0|20.96274|-0.41673 +2016-07-01|64.0|-137.0|20.80422|-0.4164 +2016-07-01|64.0|-138.0|20.62573|-0.41584 +2016-07-01|64.0|-139.0|20.42814|-0.41506 +2016-07-01|64.0|-140.0|20.21227|-0.41408 +2016-07-01|64.0|-141.0|19.97891|-0.41288 +2016-07-01|64.0|-142.0|19.72882|-0.41148 +2016-07-01|64.0|-143.0|19.4627|-0.40988 +2016-07-01|64.0|-144.0|19.18126|-0.40807 +2016-07-01|64.0|-145.0|18.88515|-0.40606 +2016-07-01|64.0|-146.0|18.57499|-0.40385 +2016-07-01|64.0|-147.0|18.2514|-0.40144 +2016-07-01|64.0|-148.0|17.91495|-0.39883 +2016-07-01|64.0|-149.0|17.56621|-0.39602 +2016-07-01|64.0|-150.0|17.2057|-0.39301 +2016-07-01|64.0|-151.0|16.83394|-0.38979 +2016-07-01|64.0|-152.0|16.45142|-0.38638 +2016-07-01|64.0|-153.0|16.05864|-0.38277 +2016-07-01|64.0|-154.0|15.65603|-0.37895 +2016-07-01|64.0|-155.0|15.24406|-0.37494 +2016-07-01|64.0|-156.0|14.82315|-0.37072 +2016-07-01|64.0|-157.0|14.39371|-0.36631 +2016-07-01|64.0|-158.0|13.95615|-0.3617 +2016-07-01|64.0|-159.0|13.51085|-0.35689 +2016-07-01|64.0|-160.0|13.0582|-0.35188 +2016-07-01|64.0|-161.0|12.59856|-0.34669 +2016-07-01|64.0|-162.0|12.13229|-0.3413 +2016-07-01|64.0|-163.0|11.65973|-0.33572 +2016-07-01|64.0|-164.0|11.18122|-0.32996 +2016-07-01|64.0|-165.0|10.69709|-0.32402 +2016-07-01|64.0|-166.0|10.20765|-0.3179 +2016-07-01|64.0|-167.0|9.71322|-0.31162 +2016-07-01|64.0|-168.0|9.21411|-0.30516 +2016-07-01|64.0|-169.0|8.71061|-0.29855 +2016-07-01|64.0|-170.0|8.20303|-0.29178 +2016-07-01|64.0|-171.0|7.69164|-0.28487 +2016-07-01|64.0|-172.0|7.17674|-0.27781 +2016-07-01|64.0|-173.0|6.6586|-0.27063 +2016-07-01|64.0|-174.0|6.13751|-0.26332 +2016-07-01|64.0|-175.0|5.61373|-0.2559 +2016-07-01|64.0|-176.0|5.08756|-0.24838 +2016-07-01|64.0|-177.0|4.55926|-0.24076 +2016-07-01|64.0|-178.0|4.0291|-0.23306 +2016-07-01|64.0|-179.0|3.49737|-0.22528 +2016-07-01|65.0|0.0|-2.45285|0.2205 +2016-07-01|65.0|1.0|-1.91316|0.21859 +2016-07-01|65.0|2.0|-1.37558|0.21671 +2016-07-01|65.0|3.0|-0.84018|0.21488 +2016-07-01|65.0|4.0|-0.30704|0.21309 +2016-07-01|65.0|5.0|0.22377|0.21135 +2016-07-01|65.0|6.0|0.75218|0.20964 +2016-07-01|65.0|7.0|1.27813|0.20798 +2016-07-01|65.0|8.0|1.80157|0.20635 +2016-07-01|65.0|9.0|2.32243|0.20477 +2016-07-01|65.0|10.0|2.84067|0.20321 +2016-07-01|65.0|11.0|3.35623|0.20169 +2016-07-01|65.0|12.0|3.86906|0.20021 +2016-07-01|65.0|13.0|4.3791|0.19875 +2016-07-01|65.0|14.0|4.88629|0.19732 +2016-07-01|65.0|15.0|5.39057|0.19592 +2016-07-01|65.0|16.0|5.89188|0.19453 +2016-07-01|65.0|17.0|6.39015|0.19317 +2016-07-01|65.0|18.0|6.88529|0.19183 +2016-07-01|65.0|19.0|7.37722|0.19051 +2016-07-01|65.0|20.0|7.86585|0.18919 +2016-07-01|65.0|21.0|8.35106|0.18789 +2016-07-01|65.0|22.0|8.83274|0.1866 +2016-07-01|65.0|23.0|9.31076|0.18531 +2016-07-01|65.0|24.0|9.78498|0.18402 +2016-07-01|65.0|25.0|10.25525|0.18273 +2016-07-01|65.0|26.0|10.72139|0.18143 +2016-07-01|65.0|27.0|11.18323|0.18013 +2016-07-01|65.0|28.0|11.64056|0.17882 +2016-07-01|65.0|29.0|12.09317|0.1775 +2016-07-01|65.0|30.0|12.54083|0.17616 +2016-07-01|65.0|31.0|12.98328|0.1748 +2016-07-01|65.0|32.0|13.42028|0.17343 +2016-07-01|65.0|33.0|13.85152|0.17202 +2016-07-01|65.0|34.0|14.27673|0.1706 +2016-07-01|65.0|35.0|14.69557|0.16914 +2016-07-01|65.0|36.0|15.10771|0.16765 +2016-07-01|65.0|37.0|15.5128|0.16613 +2016-07-01|65.0|38.0|15.91048|0.16457 +2016-07-01|65.0|39.0|16.30034|0.16297 +2016-07-01|65.0|40.0|16.68199|0.16133 +2016-07-01|65.0|41.0|17.05499|0.15965 +2016-07-01|65.0|42.0|17.41891|0.15792 +2016-07-01|65.0|43.0|17.77328|0.15614 +2016-07-01|65.0|44.0|18.11763|0.1543 +2016-07-01|65.0|45.0|18.45144|0.15241 +2016-07-01|65.0|46.0|18.77421|0.15046 +2016-07-01|65.0|47.0|19.0854|0.14845 +2016-07-01|65.0|48.0|19.38445|0.14637 +2016-07-01|65.0|49.0|19.67078|0.14423 +2016-07-01|65.0|50.0|19.94381|0.14201 +2016-07-01|65.0|51.0|20.20291|0.13972 +2016-07-01|65.0|52.0|20.44745|0.13735 +2016-07-01|65.0|53.0|20.67677|0.1349 +2016-07-01|65.0|54.0|20.89021|0.13235 +2016-07-01|65.0|55.0|21.08705|0.12972 +2016-07-01|65.0|56.0|21.26659|0.12698 +2016-07-01|65.0|57.0|21.42809|0.12415 +2016-07-01|65.0|58.0|21.57078|0.1212 +2016-07-01|65.0|59.0|21.69388|0.11815 +2016-07-01|65.0|60.0|21.7966|0.11497 +2016-07-01|65.0|61.0|21.87811|0.11166 +2016-07-01|65.0|62.0|21.93756|0.10823 +2016-07-01|65.0|63.0|21.9741|0.10466 +2016-07-01|65.0|64.0|21.98684|0.10094 +2016-07-01|65.0|65.0|21.97489|0.09707 +2016-07-01|65.0|66.0|21.93734|0.09305 +2016-07-01|65.0|67.0|21.87326|0.08886 +2016-07-01|65.0|68.0|21.78172|0.0845 +2016-07-01|65.0|69.0|21.66178|0.07996 +2016-07-01|65.0|70.0|21.51252|0.07525 +2016-07-01|65.0|71.0|21.33298|0.07035 +2016-07-01|65.0|72.0|21.12226|0.06525 +2016-07-01|65.0|73.0|20.87944|0.05997 +2016-07-01|65.0|74.0|20.60364|0.0545 +2016-07-01|65.0|75.0|20.29403|0.04883 +2016-07-01|65.0|76.0|19.9498|0.04296 +2016-07-01|65.0|77.0|19.57023|0.03691 +2016-07-01|65.0|78.0|19.15465|0.03068 +2016-07-01|65.0|79.0|18.70247|0.02427 +2016-07-01|65.0|80.0|18.21324|0.0177 +2016-07-01|65.0|81.0|17.6866|0.01098 +2016-07-01|65.0|82.0|17.12235|0.00414 +2016-07-01|65.0|83.0|16.52043|-0.00282 +2016-07-01|65.0|84.0|15.88098|-0.00985 +2016-07-01|65.0|85.0|15.20433|-0.01694 +2016-07-01|65.0|86.0|14.49103|-0.02405 +2016-07-01|65.0|87.0|13.74187|-0.03114 +2016-07-01|65.0|88.0|12.9579|-0.03816 +2016-07-01|65.0|89.0|12.14043|-0.04508 +2016-07-01|65.0|90.0|11.29107|-0.05185 +2016-07-01|65.0|91.0|10.41169|-0.0584 +2016-07-01|65.0|92.0|9.50447|-0.0647 +2016-07-01|65.0|93.0|8.57189|-0.07069 +2016-07-01|65.0|94.0|7.61668|-0.07632 +2016-07-01|65.0|95.0|6.64185|-0.08153 +2016-07-01|65.0|96.0|5.65065|-0.08627 +2016-07-01|65.0|97.0|4.64656|-0.09051 +2016-07-01|65.0|98.0|3.6332|-0.0942 +2016-07-01|65.0|99.0|2.61438|-0.09731 +2016-07-01|65.0|100.0|1.59396|-0.09982 +2016-07-01|65.0|101.0|0.57588|-0.1017 +2016-07-01|65.0|102.0|-0.43593|-0.10295 +2016-07-01|65.0|103.0|-1.4376|-0.10356 +2016-07-01|65.0|104.0|-2.42532|-0.10355 +2016-07-01|65.0|105.0|-3.39545|-0.10292 +2016-07-01|65.0|106.0|-4.34453|-0.10171 +2016-07-01|65.0|107.0|-5.26931|-0.09994 +2016-07-01|65.0|108.0|-6.16676|-0.09765 +2016-07-01|65.0|109.0|-7.03416|-0.09488 +2016-07-01|65.0|110.0|-7.86906|-0.09168 +2016-07-01|65.0|111.0|-8.66929|-0.0881 +2016-07-01|65.0|112.0|-9.433|-0.08419 +2016-07-01|65.0|113.0|-10.15862|-0.07999 +2016-07-01|65.0|114.0|-10.84488|-0.07557 +2016-07-01|65.0|115.0|-11.49081|-0.07097 +2016-07-01|65.0|116.0|-12.09566|-0.06624 +2016-07-01|65.0|117.0|-12.65898|-0.06143 +2016-07-01|65.0|118.0|-13.18052|-0.05659 +2016-07-01|65.0|119.0|-13.66026|-0.05175 +2016-07-01|65.0|120.0|-14.09834|-0.04697 +2016-07-01|65.0|121.0|-14.4951|-0.04226 +2016-07-01|65.0|122.0|-14.85103|-0.03768 +2016-07-01|65.0|123.0|-15.16673|-0.03324 +2016-07-01|65.0|124.0|-15.44293|-0.02898 +2016-07-01|65.0|125.0|-15.68044|-0.02492 +2016-07-01|65.0|126.0|-15.88018|-0.02108 +2016-07-01|65.0|127.0|-16.0431|-0.01748 +2016-07-01|65.0|128.0|-16.17023|-0.01415 +2016-07-01|65.0|129.0|-16.26262|-0.01108 +2016-07-01|65.0|130.0|-16.32135|-0.0083 +2016-07-01|65.0|131.0|-16.34755|-0.00582 +2016-07-01|65.0|132.0|-16.34232|-0.00365 +2016-07-01|65.0|133.0|-16.30681|-0.00179 +2016-07-01|65.0|134.0|-16.24213|-2.6E-4 +2016-07-01|65.0|135.0|-16.14942|9.5E-4 +2016-07-01|65.0|136.0|-16.02978|0.00183 +2016-07-01|65.0|137.0|-15.88431|0.00237 +2016-07-01|65.0|138.0|-15.71411|0.00258 +2016-07-01|65.0|139.0|-15.52023|0.00244 +2016-07-01|65.0|140.0|-15.30371|0.00197 +2016-07-01|65.0|141.0|-15.06559|0.00117 +2016-07-01|65.0|142.0|-14.80685|2.0E-5 +2016-07-01|65.0|143.0|-14.52848|-0.00146 +2016-07-01|65.0|144.0|-14.23141|-0.00328 +2016-07-01|65.0|145.0|-13.91658|-0.00542 +2016-07-01|65.0|146.0|-13.58487|-0.00789 +2016-07-01|65.0|147.0|-13.23716|-0.01068 +2016-07-01|65.0|148.0|-12.87428|-0.01379 +2016-07-01|65.0|149.0|-12.49706|-0.01721 +2016-07-01|65.0|150.0|-12.10628|-0.02094 +2016-07-01|65.0|151.0|-11.70271|-0.02496 +2016-07-01|65.0|152.0|-11.28709|-0.02928 +2016-07-01|65.0|153.0|-10.86012|-0.03388 +2016-07-01|65.0|154.0|-10.4225|-0.03876 +2016-07-01|65.0|155.0|-9.97488|-0.04391 +2016-07-01|65.0|156.0|-9.51792|-0.04932 +2016-07-01|65.0|157.0|-9.05222|-0.05497 +2016-07-01|65.0|158.0|-8.57838|-0.06087 +2016-07-01|65.0|159.0|-8.09697|-0.067 +2016-07-01|65.0|160.0|-7.60854|-0.07334 +2016-07-01|65.0|161.0|-7.11363|-0.07989 +2016-07-01|65.0|162.0|-6.61273|-0.08664 +2016-07-01|65.0|163.0|-6.10634|-0.09358 +2016-07-01|65.0|164.0|-5.59494|-0.10068 +2016-07-01|65.0|165.0|-5.07898|-0.10795 +2016-07-01|65.0|166.0|-4.55889|-0.11536 +2016-07-01|65.0|167.0|-4.03509|-0.12291 +2016-07-01|65.0|168.0|-3.508|-0.13058 +2016-07-01|65.0|169.0|-2.978|-0.13836 +2016-07-01|65.0|170.0|-2.44547|-0.14624 +2016-07-01|65.0|171.0|-1.91077|-0.1542 +2016-07-01|65.0|172.0|-1.37426|-0.16223 +2016-07-01|65.0|173.0|-0.83627|-0.17032 +2016-07-01|65.0|174.0|-0.29715|-0.17845 +2016-07-01|65.0|175.0|0.2428|-0.18661 +2016-07-01|65.0|176.0|0.78325|-0.19479 +2016-07-01|65.0|177.0|1.3239|-0.20297 +2016-07-01|65.0|178.0|1.86446|-0.21115 +2016-07-01|65.0|179.0|2.40463|-0.21931 +2016-07-01|65.0|-1.0|-2.99454|0.22247 +2016-07-01|65.0|-2.0|-3.53814|0.22448 +2016-07-01|65.0|-3.0|-4.08355|0.22653 +2016-07-01|65.0|-4.0|-4.63065|0.22863 +2016-07-01|65.0|-5.0|-5.17933|0.23078 +2016-07-01|65.0|-6.0|-5.72944|0.23297 +2016-07-01|65.0|-7.0|-6.28085|0.23521 +2016-07-01|65.0|-8.0|-6.83341|0.23749 +2016-07-01|65.0|-9.0|-7.38696|0.23982 +2016-07-01|65.0|-10.0|-7.94133|0.2422 +2016-07-01|65.0|-11.0|-8.49636|0.24462 +2016-07-01|65.0|-12.0|-9.05185|0.24708 +2016-07-01|65.0|-13.0|-9.60761|0.24959 +2016-07-01|65.0|-14.0|-10.16344|0.25214 +2016-07-01|65.0|-15.0|-10.71912|0.25474 +2016-07-01|65.0|-16.0|-11.27445|0.25738 +2016-07-01|65.0|-17.0|-11.82919|0.26006 +2016-07-01|65.0|-18.0|-12.3831|0.26278 +2016-07-01|65.0|-19.0|-12.93595|0.26554 +2016-07-01|65.0|-20.0|-13.48747|0.26835 +2016-07-01|65.0|-21.0|-14.03741|0.27119 +2016-07-01|65.0|-22.0|-14.5855|0.27408 +2016-07-01|65.0|-23.0|-15.13145|0.277 +2016-07-01|65.0|-24.0|-15.67498|0.27996 +2016-07-01|65.0|-25.0|-16.21579|0.28296 +2016-07-01|65.0|-26.0|-16.75358|0.286 +2016-07-01|65.0|-27.0|-17.28802|0.28907 +2016-07-01|65.0|-28.0|-17.81879|0.29218 +2016-07-01|65.0|-29.0|-18.34554|0.29532 +2016-07-01|65.0|-30.0|-18.86792|0.29851 +2016-07-01|65.0|-31.0|-19.38556|0.30172 +2016-07-01|65.0|-32.0|-19.89808|0.30497 +2016-07-01|65.0|-33.0|-20.40509|0.30825 +2016-07-01|65.0|-34.0|-20.90617|0.31157 +2016-07-01|65.0|-35.0|-21.40088|0.31492 +2016-07-01|65.0|-36.0|-21.88879|0.3183 +2016-07-01|65.0|-37.0|-22.36942|0.32171 +2016-07-01|65.0|-38.0|-22.84227|0.32515 +2016-07-01|65.0|-39.0|-23.30684|0.32862 +2016-07-01|65.0|-40.0|-23.76259|0.33213 +2016-07-01|65.0|-41.0|-24.20894|0.33565 +2016-07-01|65.0|-42.0|-24.64531|0.33921 +2016-07-01|65.0|-43.0|-25.07107|0.34279 +2016-07-01|65.0|-44.0|-25.48556|0.3464 +2016-07-01|65.0|-45.0|-25.88811|0.35003 +2016-07-01|65.0|-46.0|-26.27798|0.35368 +2016-07-01|65.0|-47.0|-26.6544|0.35735 +2016-07-01|65.0|-48.0|-27.01659|0.36104 +2016-07-01|65.0|-49.0|-27.3637|0.36474 +2016-07-01|65.0|-50.0|-27.69483|0.36845 +2016-07-01|65.0|-51.0|-28.00906|0.37217 +2016-07-01|65.0|-52.0|-28.3054|0.37588 +2016-07-01|65.0|-53.0|-28.58281|0.3796 +2016-07-01|65.0|-54.0|-28.84022|0.3833 +2016-07-01|65.0|-55.0|-29.07647|0.38698 +2016-07-01|65.0|-56.0|-29.29036|0.39063 +2016-07-01|65.0|-57.0|-29.48063|0.39425 +2016-07-01|65.0|-58.0|-29.64596|0.39781 +2016-07-01|65.0|-59.0|-29.78497|0.40131 +2016-07-01|65.0|-60.0|-29.89619|0.40473 +2016-07-01|65.0|-61.0|-29.9781|0.40804 +2016-07-01|65.0|-62.0|-30.02913|0.41124 +2016-07-01|65.0|-63.0|-30.04761|0.41429 +2016-07-01|65.0|-64.0|-30.03184|0.41716 +2016-07-01|65.0|-65.0|-29.98001|0.41983 +2016-07-01|65.0|-66.0|-29.89029|0.42225 +2016-07-01|65.0|-67.0|-29.76078|0.42439 +2016-07-01|65.0|-68.0|-29.58951|0.4262 +2016-07-01|65.0|-69.0|-29.37451|0.42763 +2016-07-01|65.0|-70.0|-29.11374|0.42862 +2016-07-01|65.0|-71.0|-28.80517|0.42911 +2016-07-01|65.0|-72.0|-28.44675|0.42903 +2016-07-01|65.0|-73.0|-28.03647|0.42829 +2016-07-01|65.0|-74.0|-27.57235|0.42682 +2016-07-01|65.0|-75.0|-27.05252|0.42452 +2016-07-01|65.0|-76.0|-26.47518|0.4213 +2016-07-01|65.0|-77.0|-25.83872|0.41706 +2016-07-01|65.0|-78.0|-25.14171|0.41169 +2016-07-01|65.0|-79.0|-24.383|0.40507 +2016-07-01|65.0|-80.0|-23.56172|0.3971 +2016-07-01|65.0|-81.0|-22.67739|0.38767 +2016-07-01|65.0|-82.0|-21.72995|0.37668 +2016-07-01|65.0|-83.0|-20.71985|0.36404 +2016-07-01|65.0|-84.0|-19.64811|0.34965 +2016-07-01|65.0|-85.0|-18.51633|0.33347 +2016-07-01|65.0|-86.0|-17.32683|0.31546 +2016-07-01|65.0|-87.0|-16.08259|0.29559 +2016-07-01|65.0|-88.0|-14.78735|0.27389 +2016-07-01|65.0|-89.0|-13.44558|0.25042 +2016-07-01|65.0|-90.0|-12.06243|0.22527 +2016-07-01|65.0|-91.0|-10.64375|0.19858 +2016-07-01|65.0|-92.0|-9.19598|0.1705 +2016-07-01|65.0|-93.0|-7.72602|0.14124 +2016-07-01|65.0|-94.0|-6.24121|0.11104 +2016-07-01|65.0|-95.0|-4.74909|0.08016 +2016-07-01|65.0|-96.0|-3.25733|0.04886 +2016-07-01|65.0|-97.0|-1.77351|0.01742 +2016-07-01|65.0|-98.0|-0.30506|-0.01389 +2016-07-01|65.0|-99.0|1.14097|-0.04479 +2016-07-01|65.0|-100.0|2.55798|-0.07505 +2016-07-01|65.0|-101.0|3.93991|-0.10445 +2016-07-01|65.0|-102.0|5.28138|-0.1328 +2016-07-01|65.0|-103.0|6.57767|-0.15993 +2016-07-01|65.0|-104.0|7.82478|-0.18574 +2016-07-01|65.0|-105.0|9.01946|-0.21012 +2016-07-01|65.0|-106.0|10.15912|-0.23303 +2016-07-01|65.0|-107.0|11.24187|-0.25444 +2016-07-01|65.0|-108.0|12.26644|-0.27433 +2016-07-01|65.0|-109.0|13.23211|-0.29274 +2016-07-01|65.0|-110.0|14.13868|-0.3097 +2016-07-01|65.0|-111.0|14.98639|-0.32525 +2016-07-01|65.0|-112.0|15.77585|-0.33947 +2016-07-01|65.0|-113.0|16.508|-0.35242 +2016-07-01|65.0|-114.0|17.18402|-0.36417 +2016-07-01|65.0|-115.0|17.80532|-0.3748 +2016-07-01|65.0|-116.0|18.37346|-0.38438 +2016-07-01|65.0|-117.0|18.89011|-0.393 +2016-07-01|65.0|-118.0|19.35703|-0.40072 +2016-07-01|65.0|-119.0|19.77605|-0.40761 +2016-07-01|65.0|-120.0|20.14898|-0.41373 +2016-07-01|65.0|-121.0|20.47768|-0.41915 +2016-07-01|65.0|-122.0|20.76397|-0.42393 +2016-07-01|65.0|-123.0|21.00965|-0.42811 +2016-07-01|65.0|-124.0|21.21647|-0.43175 +2016-07-01|65.0|-125.0|21.38616|-0.43488 +2016-07-01|65.0|-126.0|21.52035|-0.43754 +2016-07-01|65.0|-127.0|21.62066|-0.43978 +2016-07-01|65.0|-128.0|21.68862|-0.44162 +2016-07-01|65.0|-129.0|21.7257|-0.44309 +2016-07-01|65.0|-130.0|21.73332|-0.44422 +2016-07-01|65.0|-131.0|21.71282|-0.44502 +2016-07-01|65.0|-132.0|21.66549|-0.44552 +2016-07-01|65.0|-133.0|21.59256|-0.44574 +2016-07-01|65.0|-134.0|21.4952|-0.44568 +2016-07-01|65.0|-135.0|21.37451|-0.44536 +2016-07-01|65.0|-136.0|21.23157|-0.4448 +2016-07-01|65.0|-137.0|21.06736|-0.444 +2016-07-01|65.0|-138.0|20.88286|-0.44297 +2016-07-01|65.0|-139.0|20.67897|-0.44171 +2016-07-01|65.0|-140.0|20.45657|-0.44024 +2016-07-01|65.0|-141.0|20.21647|-0.43855 +2016-07-01|65.0|-142.0|19.95947|-0.43666 +2016-07-01|65.0|-143.0|19.68632|-0.43456 +2016-07-01|65.0|-144.0|19.39773|-0.43225 +2016-07-01|65.0|-145.0|19.09439|-0.42974 +2016-07-01|65.0|-146.0|18.77695|-0.42703 +2016-07-01|65.0|-147.0|18.44603|-0.42413 +2016-07-01|65.0|-148.0|18.10224|-0.42102 +2016-07-01|65.0|-149.0|17.74615|-0.41772 +2016-07-01|65.0|-150.0|17.3783|-0.41422 +2016-07-01|65.0|-151.0|16.99922|-0.41052 +2016-07-01|65.0|-152.0|16.60942|-0.40663 +2016-07-01|65.0|-153.0|16.20939|-0.40254 +2016-07-01|65.0|-154.0|15.79959|-0.39826 +2016-07-01|65.0|-155.0|15.38047|-0.39378 +2016-07-01|65.0|-156.0|14.95247|-0.38911 +2016-07-01|65.0|-157.0|14.51602|-0.38424 +2016-07-01|65.0|-158.0|14.0715|-0.37919 +2016-07-01|65.0|-159.0|13.61932|-0.37394 +2016-07-01|65.0|-160.0|13.15986|-0.36851 +2016-07-01|65.0|-161.0|12.69348|-0.3629 +2016-07-01|65.0|-162.0|12.22054|-0.3571 +2016-07-01|65.0|-163.0|11.74138|-0.35112 +2016-07-01|65.0|-164.0|11.25634|-0.34497 +2016-07-01|65.0|-165.0|10.76575|-0.33864 +2016-07-01|65.0|-166.0|10.26993|-0.33215 +2016-07-01|65.0|-167.0|9.76919|-0.3255 +2016-07-01|65.0|-168.0|9.26383|-0.31869 +2016-07-01|65.0|-169.0|8.75416|-0.31173 +2016-07-01|65.0|-170.0|8.24046|-0.30463 +2016-07-01|65.0|-171.0|7.72303|-0.29739 +2016-07-01|65.0|-172.0|7.20214|-0.29002 +2016-07-01|65.0|-173.0|6.67809|-0.28253 +2016-07-01|65.0|-174.0|6.15114|-0.27492 +2016-07-01|65.0|-175.0|5.62157|-0.26721 +2016-07-01|65.0|-176.0|5.08967|-0.25941 +2016-07-01|65.0|-177.0|4.55569|-0.25152 +2016-07-01|65.0|-178.0|4.01993|-0.24355 +2016-07-01|65.0|-179.0|3.48264|-0.23552 +2016-07-01|66.0|0.0|-2.57952|0.22853 +2016-07-01|66.0|1.0|-2.02259|0.22656 +2016-07-01|66.0|2.0|-1.46754|0.22463 +2016-07-01|66.0|3.0|-0.91446|0.22275 +2016-07-01|66.0|4.0|-0.36343|0.22091 +2016-07-01|66.0|5.0|0.18548|0.21911 +2016-07-01|66.0|6.0|0.73218|0.21735 +2016-07-01|66.0|7.0|1.2766|0.21563 +2016-07-01|66.0|8.0|1.81867|0.21395 +2016-07-01|66.0|9.0|2.35833|0.21231 +2016-07-01|66.0|10.0|2.89551|0.2107 +2016-07-01|66.0|11.0|3.43014|0.20912 +2016-07-01|66.0|12.0|3.96216|0.20758 +2016-07-01|66.0|13.0|4.49149|0.20606 +2016-07-01|66.0|14.0|5.01806|0.20457 +2016-07-01|66.0|15.0|5.5418|0.20311 +2016-07-01|66.0|16.0|6.06263|0.20167 +2016-07-01|66.0|17.0|6.58045|0.20025 +2016-07-01|66.0|18.0|7.09519|0.19885 +2016-07-01|66.0|19.0|7.60673|0.19746 +2016-07-01|66.0|20.0|8.11497|0.19609 +2016-07-01|66.0|21.0|8.6198|0.19473 +2016-07-01|66.0|22.0|9.12107|0.19338 +2016-07-01|66.0|23.0|9.61866|0.19203 +2016-07-01|66.0|24.0|10.11242|0.19069 +2016-07-01|66.0|25.0|10.60217|0.18934 +2016-07-01|66.0|26.0|11.08775|0.18799 +2016-07-01|66.0|27.0|11.56897|0.18664 +2016-07-01|66.0|28.0|12.04561|0.18528 +2016-07-01|66.0|29.0|12.51746|0.18391 +2016-07-01|66.0|30.0|12.98429|0.18253 +2016-07-01|66.0|31.0|13.44585|0.18113 +2016-07-01|66.0|32.0|13.90187|0.17971 +2016-07-01|66.0|33.0|14.35206|0.17828 +2016-07-01|66.0|34.0|14.79613|0.17681 +2016-07-01|66.0|35.0|15.23377|0.17533 +2016-07-01|66.0|36.0|15.66463|0.17381 +2016-07-01|66.0|37.0|16.08837|0.17226 +2016-07-01|66.0|38.0|16.50461|0.17068 +2016-07-01|66.0|39.0|16.91298|0.16906 +2016-07-01|66.0|40.0|17.31307|0.1674 +2016-07-01|66.0|41.0|17.70444|0.1657 +2016-07-01|66.0|42.0|18.08667|0.16395 +2016-07-01|66.0|43.0|18.45929|0.16215 +2016-07-01|66.0|44.0|18.82181|0.16031 +2016-07-01|66.0|45.0|19.17375|0.15841 +2016-07-01|66.0|46.0|19.51457|0.15645 +2016-07-01|66.0|47.0|19.84375|0.15444 +2016-07-01|66.0|48.0|20.16072|0.15235 +2016-07-01|66.0|49.0|20.4649|0.15021 +2016-07-01|66.0|50.0|20.75569|0.14799 +2016-07-01|66.0|51.0|21.03247|0.14569 +2016-07-01|66.0|52.0|21.29459|0.14332 +2016-07-01|66.0|53.0|21.54138|0.14086 +2016-07-01|66.0|54.0|21.77215|0.13831 +2016-07-01|66.0|55.0|21.98619|0.13567 +2016-07-01|66.0|56.0|22.18276|0.13292 +2016-07-01|66.0|57.0|22.3611|0.13008 +2016-07-01|66.0|58.0|22.52041|0.12712 +2016-07-01|66.0|59.0|22.6599|0.12405 +2016-07-01|66.0|60.0|22.77871|0.12085 +2016-07-01|66.0|61.0|22.876|0.11753 +2016-07-01|66.0|62.0|22.95086|0.11407 +2016-07-01|66.0|63.0|23.00241|0.11046 +2016-07-01|66.0|64.0|23.0297|0.10671 +2016-07-01|66.0|65.0|23.03177|0.10279 +2016-07-01|66.0|66.0|23.00766|0.09872 +2016-07-01|66.0|67.0|22.95637|0.09447 +2016-07-01|66.0|68.0|22.87691|0.09004 +2016-07-01|66.0|69.0|22.76823|0.08543 +2016-07-01|66.0|70.0|22.62934|0.08063 +2016-07-01|66.0|71.0|22.45919|0.07563 +2016-07-01|66.0|72.0|22.25677|0.07043 +2016-07-01|66.0|73.0|22.02106|0.06502 +2016-07-01|66.0|74.0|21.75108|0.0594 +2016-07-01|66.0|75.0|21.44586|0.05358 +2016-07-01|66.0|76.0|21.1045|0.04755 +2016-07-01|66.0|77.0|20.72613|0.04131 +2016-07-01|66.0|78.0|20.30997|0.03487 +2016-07-01|66.0|79.0|19.8553|0.02824 +2016-07-01|66.0|80.0|19.36153|0.02143 +2016-07-01|66.0|81.0|18.82818|0.01445 +2016-07-01|66.0|82.0|18.25493|0.00732 +2016-07-01|66.0|83.0|17.64162|6.0E-5 +2016-07-01|66.0|84.0|16.98826|-0.00729 +2016-07-01|66.0|85.0|16.29511|-0.01472 +2016-07-01|66.0|86.0|15.56264|-0.02217 +2016-07-01|66.0|87.0|14.79159|-0.02963 +2016-07-01|66.0|88.0|13.98298|-0.03703 +2016-07-01|66.0|89.0|13.13813|-0.04433 +2016-07-01|66.0|90.0|12.25865|-0.05148 +2016-07-01|66.0|91.0|11.34651|-0.05842 +2016-07-01|66.0|92.0|10.40398|-0.0651 +2016-07-01|66.0|93.0|9.43366|-0.07145 +2016-07-01|66.0|94.0|8.43848|-0.07742 +2016-07-01|66.0|95.0|7.42165|-0.08296 +2016-07-01|66.0|96.0|6.38668|-0.08801 +2016-07-01|66.0|97.0|5.3373|-0.09252 +2016-07-01|66.0|98.0|4.27746|-0.09645 +2016-07-01|66.0|99.0|3.21127|-0.09975 +2016-07-01|66.0|100.0|2.14296|-0.10241 +2016-07-01|66.0|101.0|1.0768|-0.10441 +2016-07-01|66.0|102.0|0.01706|-0.10573 +2016-07-01|66.0|103.0|-1.03202|-0.10637 +2016-07-01|66.0|104.0|-2.06635|-0.10634 +2016-07-01|66.0|105.0|-3.08197|-0.10567 +2016-07-01|66.0|106.0|-4.07513|-0.10438 +2016-07-01|66.0|107.0|-5.04235|-0.1025 +2016-07-01|66.0|108.0|-5.9804|-0.10007 +2016-07-01|66.0|109.0|-6.88639|-0.09715 +2016-07-01|66.0|110.0|-7.75771|-0.09379 +2016-07-01|66.0|111.0|-8.59211|-0.09003 +2016-07-01|66.0|112.0|-9.38768|-0.08594 +2016-07-01|66.0|113.0|-10.14283|-0.08156 +2016-07-01|66.0|114.0|-10.85628|-0.07697 +2016-07-01|66.0|115.0|-11.52709|-0.07221 +2016-07-01|66.0|116.0|-12.15457|-0.06733 +2016-07-01|66.0|117.0|-12.73833|-0.0624 +2016-07-01|66.0|118.0|-13.27821|-0.05744 +2016-07-01|66.0|119.0|-13.77429|-0.05251 +2016-07-01|66.0|120.0|-14.22682|-0.04765 +2016-07-01|66.0|121.0|-14.63627|-0.0429 +2016-07-01|66.0|122.0|-15.00322|-0.03829 +2016-07-01|66.0|123.0|-15.32841|-0.03384 +2016-07-01|66.0|124.0|-15.61268|-0.0296 +2016-07-01|66.0|125.0|-15.85697|-0.02557 +2016-07-01|66.0|126.0|-16.0623|-0.02179 +2016-07-01|66.0|127.0|-16.22972|-0.01826 +2016-07-01|66.0|128.0|-16.36037|-0.01502 +2016-07-01|66.0|129.0|-16.4554|-0.01206 +2016-07-01|66.0|130.0|-16.51599|-0.00941 +2016-07-01|66.0|131.0|-16.54333|-0.00706 +2016-07-01|66.0|132.0|-16.53863|-0.00504 +2016-07-01|66.0|133.0|-16.50308|-0.00335 +2016-07-01|66.0|134.0|-16.43787|-0.00199 +2016-07-01|66.0|135.0|-16.34419|-9.6E-4 +2016-07-01|66.0|136.0|-16.22321|-2.7E-4 +2016-07-01|66.0|137.0|-16.07607|7.0E-5 +2016-07-01|66.0|138.0|-15.9039|8.0E-5 +2016-07-01|66.0|139.0|-15.7078|-2.6E-4 +2016-07-01|66.0|140.0|-15.48885|-9.5E-4 +2016-07-01|66.0|141.0|-15.2481|-0.00197 +2016-07-01|66.0|142.0|-14.98657|-0.00333 +2016-07-01|66.0|143.0|-14.70527|-0.00503 +2016-07-01|66.0|144.0|-14.40515|-0.00706 +2016-07-01|66.0|145.0|-14.08715|-0.00943 +2016-07-01|66.0|146.0|-13.75219|-0.01211 +2016-07-01|66.0|147.0|-13.40113|-0.01512 +2016-07-01|66.0|148.0|-13.03484|-0.01845 +2016-07-01|66.0|149.0|-12.65414|-0.02208 +2016-07-01|66.0|150.0|-12.25982|-0.02602 +2016-07-01|66.0|151.0|-11.85264|-0.03026 +2016-07-01|66.0|152.0|-11.43336|-0.03478 +2016-07-01|66.0|153.0|-11.00268|-0.03959 +2016-07-01|66.0|154.0|-10.5613|-0.04467 +2016-07-01|66.0|155.0|-10.10987|-0.05002 +2016-07-01|66.0|156.0|-9.64904|-0.05562 +2016-07-01|66.0|157.0|-9.17942|-0.06147 +2016-07-01|66.0|158.0|-8.70161|-0.06756 +2016-07-01|66.0|159.0|-8.21618|-0.07388 +2016-07-01|66.0|160.0|-7.72368|-0.08041 +2016-07-01|66.0|161.0|-7.22462|-0.08715 +2016-07-01|66.0|162.0|-6.71953|-0.09408 +2016-07-01|66.0|163.0|-6.2089|-0.1012 +2016-07-01|66.0|164.0|-5.69318|-0.10848 +2016-07-01|66.0|165.0|-5.17285|-0.11593 +2016-07-01|66.0|166.0|-4.64832|-0.12353 +2016-07-01|66.0|167.0|-4.12003|-0.13126 +2016-07-01|66.0|168.0|-3.58837|-0.13912 +2016-07-01|66.0|169.0|-3.05374|-0.14708 +2016-07-01|66.0|170.0|-2.51651|-0.15515 +2016-07-01|66.0|171.0|-1.97705|-0.1633 +2016-07-01|66.0|172.0|-1.43572|-0.17152 +2016-07-01|66.0|173.0|-0.89284|-0.1798 +2016-07-01|66.0|174.0|-0.34876|-0.18814 +2016-07-01|66.0|175.0|0.19621|-0.1965 +2016-07-01|66.0|176.0|0.74175|-0.2049 +2016-07-01|66.0|177.0|1.28756|-0.2133 +2016-07-01|66.0|178.0|1.83333|-0.2217 +2016-07-01|66.0|179.0|2.37878|-0.23009 +2016-07-01|66.0|-1.0|-3.13823|0.23054 +2016-07-01|66.0|-2.0|-3.69862|0.2326 +2016-07-01|66.0|-3.0|-4.26058|0.23471 +2016-07-01|66.0|-4.0|-4.824|0.23686 +2016-07-01|66.0|-5.0|-5.38875|0.23906 +2016-07-01|66.0|-6.0|-5.95471|0.2413 +2016-07-01|66.0|-7.0|-6.52174|0.2436 +2016-07-01|66.0|-8.0|-7.08969|0.24594 +2016-07-01|66.0|-9.0|-7.65841|0.24833 +2016-07-01|66.0|-10.0|-8.22774|0.25076 +2016-07-01|66.0|-11.0|-8.7975|0.25325 +2016-07-01|66.0|-12.0|-9.36753|0.25578 +2016-07-01|66.0|-13.0|-9.93764|0.25835 +2016-07-01|66.0|-14.0|-10.50763|0.26098 +2016-07-01|66.0|-15.0|-11.0773|0.26365 +2016-07-01|66.0|-16.0|-11.64645|0.26636 +2016-07-01|66.0|-17.0|-12.21485|0.26913 +2016-07-01|66.0|-18.0|-12.78229|0.27194 +2016-07-01|66.0|-19.0|-13.34852|0.27479 +2016-07-01|66.0|-20.0|-13.91331|0.27769 +2016-07-01|66.0|-21.0|-14.4764|0.28064 +2016-07-01|66.0|-22.0|-15.03754|0.28363 +2016-07-01|66.0|-23.0|-15.59646|0.28666 +2016-07-01|66.0|-24.0|-16.15288|0.28975 +2016-07-01|66.0|-25.0|-16.70651|0.29287 +2016-07-01|66.0|-26.0|-17.25707|0.29604 +2016-07-01|66.0|-27.0|-17.80423|0.29925 +2016-07-01|66.0|-28.0|-18.34769|0.30251 +2016-07-01|66.0|-29.0|-18.88712|0.30581 +2016-07-01|66.0|-30.0|-19.42216|0.30916 +2016-07-01|66.0|-31.0|-19.95247|0.31255 +2016-07-01|66.0|-32.0|-20.47767|0.31598 +2016-07-01|66.0|-33.0|-20.99738|0.31946 +2016-07-01|66.0|-34.0|-21.5112|0.32298 +2016-07-01|66.0|-35.0|-22.01871|0.32655 +2016-07-01|66.0|-36.0|-22.51946|0.33015 +2016-07-01|66.0|-37.0|-23.01301|0.3338 +2016-07-01|66.0|-38.0|-23.49888|0.3375 +2016-07-01|66.0|-39.0|-23.97656|0.34124 +2016-07-01|66.0|-40.0|-24.44552|0.34502 +2016-07-01|66.0|-41.0|-24.90522|0.34884 +2016-07-01|66.0|-42.0|-25.35507|0.35271 +2016-07-01|66.0|-43.0|-25.79447|0.35661 +2016-07-01|66.0|-44.0|-26.22278|0.36056 +2016-07-01|66.0|-45.0|-26.63932|0.36455 +2016-07-01|66.0|-46.0|-27.04339|0.36858 +2016-07-01|66.0|-47.0|-27.43423|0.37265 +2016-07-01|66.0|-48.0|-27.81108|0.37675 +2016-07-01|66.0|-49.0|-28.17308|0.38089 +2016-07-01|66.0|-50.0|-28.51939|0.38506 +2016-07-01|66.0|-51.0|-28.84907|0.38925 +2016-07-01|66.0|-52.0|-29.16116|0.39347 +2016-07-01|66.0|-53.0|-29.45464|0.39771 +2016-07-01|66.0|-54.0|-29.72844|0.40197 +2016-07-01|66.0|-55.0|-29.98142|0.40623 +2016-07-01|66.0|-56.0|-30.2124|0.41049 +2016-07-01|66.0|-57.0|-30.42012|0.41473 +2016-07-01|66.0|-58.0|-30.60326|0.41896 +2016-07-01|66.0|-59.0|-30.76044|0.42315 +2016-07-01|66.0|-60.0|-30.8902|0.42729 +2016-07-01|66.0|-61.0|-30.99102|0.43136 +2016-07-01|66.0|-62.0|-31.0613|0.43534 +2016-07-01|66.0|-63.0|-31.09936|0.43921 +2016-07-01|66.0|-64.0|-31.10346|0.44293 +2016-07-01|66.0|-65.0|-31.07177|0.44648 +2016-07-01|66.0|-66.0|-31.0024|0.44982 +2016-07-01|66.0|-67.0|-30.8934|0.4529 +2016-07-01|66.0|-68.0|-30.74272|0.45569 +2016-07-01|66.0|-69.0|-30.5483|0.45812 +2016-07-01|66.0|-70.0|-30.30799|0.46013 +2016-07-01|66.0|-71.0|-30.01964|0.46166 +2016-07-01|66.0|-72.0|-29.68105|0.46263 +2016-07-01|66.0|-73.0|-29.29002|0.46296 +2016-07-01|66.0|-74.0|-28.8444|0.46256 +2016-07-01|66.0|-75.0|-28.34207|0.46131 +2016-07-01|66.0|-76.0|-27.781|0.45913 +2016-07-01|66.0|-77.0|-27.15928|0.45587 +2016-07-01|66.0|-78.0|-26.47519|0.45143 +2016-07-01|66.0|-79.0|-25.72722|0.44568 +2016-07-01|66.0|-80.0|-24.91415|0.43847 +2016-07-01|66.0|-81.0|-24.03512|0.42969 +2016-07-01|66.0|-82.0|-23.08968|0.41918 +2016-07-01|66.0|-83.0|-22.07789|0.40684 +2016-07-01|66.0|-84.0|-21.00036|0.39256 +2016-07-01|66.0|-85.0|-19.85835|0.37622 +2016-07-01|66.0|-86.0|-18.65382|0.35778 +2016-07-01|66.0|-87.0|-17.38948|0.33718 +2016-07-01|66.0|-88.0|-16.06885|0.31442 +2016-07-01|66.0|-89.0|-14.69625|0.28954 +2016-07-01|66.0|-90.0|-13.27681|0.26261 +2016-07-01|66.0|-91.0|-11.81644|0.23377 +2016-07-01|66.0|-92.0|-10.32176|0.20319 +2016-07-01|66.0|-93.0|-8.80001|0.17109 +2016-07-01|66.0|-94.0|-7.25892|0.13773 +2016-07-01|66.0|-95.0|-5.70658|0.10341 +2016-07-01|66.0|-96.0|-4.15126|0.06844 +2016-07-01|66.0|-97.0|-2.60126|0.03316 +2016-07-01|66.0|-98.0|-1.06472|-0.0021 +2016-07-01|66.0|-99.0|0.45053|-0.03702 +2016-07-01|66.0|-100.0|1.93713|-0.07129 +2016-07-01|66.0|-101.0|3.38833|-0.10464 +2016-07-01|66.0|-102.0|4.79803|-0.13682 +2016-07-01|66.0|-103.0|6.16092|-0.16764 +2016-07-01|66.0|-104.0|7.47248|-0.19693 +2016-07-01|66.0|-105.0|8.72897|-0.22457 +2016-07-01|66.0|-106.0|9.92748|-0.2505 +2016-07-01|66.0|-107.0|11.06582|-0.27467 +2016-07-01|66.0|-108.0|12.14253|-0.29707 +2016-07-01|66.0|-109.0|13.15678|-0.31771 +2016-07-01|66.0|-110.0|14.1083|-0.33665 +2016-07-01|66.0|-111.0|14.99735|-0.35395 +2016-07-01|66.0|-112.0|15.82458|-0.36967 +2016-07-01|66.0|-113.0|16.59101|-0.3839 +2016-07-01|66.0|-114.0|17.29796|-0.39673 +2016-07-01|66.0|-115.0|17.94698|-0.40825 +2016-07-01|66.0|-116.0|18.53977|-0.41855 +2016-07-01|66.0|-117.0|19.07819|-0.42772 +2016-07-01|66.0|-118.0|19.56418|-0.43586 +2016-07-01|66.0|-119.0|19.99972|-0.44304 +2016-07-01|66.0|-120.0|20.38683|-0.44934 +2016-07-01|66.0|-121.0|20.72751|-0.45484 +2016-07-01|66.0|-122.0|21.02378|-0.4596 +2016-07-01|66.0|-123.0|21.27758|-0.46369 +2016-07-01|66.0|-124.0|21.49082|-0.46716 +2016-07-01|66.0|-125.0|21.66537|-0.47007 +2016-07-01|66.0|-126.0|21.80301|-0.47246 +2016-07-01|66.0|-127.0|21.90548|-0.47437 +2016-07-01|66.0|-128.0|21.97443|-0.47585 +2016-07-01|66.0|-129.0|22.01145|-0.47692 +2016-07-01|66.0|-130.0|22.01806|-0.47762 +2016-07-01|66.0|-131.0|21.9957|-0.47797 +2016-07-01|66.0|-132.0|21.94575|-0.47799 +2016-07-01|66.0|-133.0|21.86951|-0.47771 +2016-07-01|66.0|-134.0|21.76823|-0.47714 +2016-07-01|66.0|-135.0|21.6431|-0.47631 +2016-07-01|66.0|-136.0|21.49524|-0.47521 +2016-07-01|66.0|-137.0|21.32571|-0.47387 +2016-07-01|66.0|-138.0|21.13552|-0.47229 +2016-07-01|66.0|-139.0|20.92564|-0.47048 +2016-07-01|66.0|-140.0|20.69697|-0.46845 +2016-07-01|66.0|-141.0|20.4504|-0.46621 +2016-07-01|66.0|-142.0|20.18673|-0.46375 +2016-07-01|66.0|-143.0|19.90675|-0.46109 +2016-07-01|66.0|-144.0|19.61122|-0.45823 +2016-07-01|66.0|-145.0|19.30083|-0.45517 +2016-07-01|66.0|-146.0|18.97627|-0.45191 +2016-07-01|66.0|-147.0|18.63819|-0.44845 +2016-07-01|66.0|-148.0|18.2872|-0.4448 +2016-07-01|66.0|-149.0|17.92389|-0.44096 +2016-07-01|66.0|-150.0|17.54882|-0.43693 +2016-07-01|66.0|-151.0|17.16253|-0.4327 +2016-07-01|66.0|-152.0|16.76555|-0.42829 +2016-07-01|66.0|-153.0|16.35837|-0.42369 +2016-07-01|66.0|-154.0|15.94145|-0.4189 +2016-07-01|66.0|-155.0|15.51527|-0.41393 +2016-07-01|66.0|-156.0|15.08027|-0.40877 +2016-07-01|66.0|-157.0|14.63685|-0.40343 +2016-07-01|66.0|-158.0|14.18545|-0.3979 +2016-07-01|66.0|-159.0|13.72644|-0.3922 +2016-07-01|66.0|-160.0|13.26021|-0.38632 +2016-07-01|66.0|-161.0|12.78714|-0.38026 +2016-07-01|66.0|-162.0|12.30757|-0.37404 +2016-07-01|66.0|-163.0|11.82186|-0.36764 +2016-07-01|66.0|-164.0|11.33034|-0.36108 +2016-07-01|66.0|-165.0|10.83334|-0.35436 +2016-07-01|66.0|-166.0|10.33117|-0.34748 +2016-07-01|66.0|-167.0|9.82416|-0.34046 +2016-07-01|66.0|-168.0|9.3126|-0.33328 +2016-07-01|66.0|-169.0|8.79678|-0.32597 +2016-07-01|66.0|-170.0|8.27702|-0.31852 +2016-07-01|66.0|-171.0|7.75358|-0.31095 +2016-07-01|66.0|-172.0|7.22677|-0.30326 +2016-07-01|66.0|-173.0|6.69684|-0.29546 +2016-07-01|66.0|-174.0|6.16409|-0.28755 +2016-07-01|66.0|-175.0|5.62879|-0.27955 +2016-07-01|66.0|-176.0|5.09121|-0.27146 +2016-07-01|66.0|-177.0|4.55163|-0.2633 +2016-07-01|66.0|-178.0|4.01032|-0.25507 +2016-07-01|66.0|-179.0|3.46756|-0.24679 +2016-07-01|67.0|0.0|-2.69872|0.23703 +2016-07-01|67.0|1.0|-2.12445|0.23501 +2016-07-01|67.0|2.0|-1.55184|0.23303 +2016-07-01|67.0|3.0|-0.98101|0.23109 +2016-07-01|67.0|4.0|-0.41203|0.2292 +2016-07-01|67.0|5.0|0.155|0.22735 +2016-07-01|67.0|6.0|0.72|0.22553 +2016-07-01|67.0|7.0|1.2829|0.22376 +2016-07-01|67.0|8.0|1.8436|0.22202 +2016-07-01|67.0|9.0|2.40203|0.22032 +2016-07-01|67.0|10.0|2.95812|0.21866 +2016-07-01|67.0|11.0|3.51178|0.21702 +2016-07-01|67.0|12.0|4.06294|0.21542 +2016-07-01|67.0|13.0|4.6115|0.21385 +2016-07-01|67.0|14.0|5.1574|0.2123 +2016-07-01|67.0|15.0|5.70054|0.21078 +2016-07-01|67.0|16.0|6.24082|0.20928 +2016-07-01|67.0|17.0|6.77815|0.2078 +2016-07-01|67.0|18.0|7.31243|0.20634 +2016-07-01|67.0|19.0|7.84354|0.2049 +2016-07-01|67.0|20.0|8.37136|0.20347 +2016-07-01|67.0|21.0|8.89576|0.20205 +2016-07-01|67.0|22.0|9.41662|0.20064 +2016-07-01|67.0|23.0|9.93377|0.19924 +2016-07-01|67.0|24.0|10.44706|0.19785 +2016-07-01|67.0|25.0|10.95632|0.19645 +2016-07-01|67.0|26.0|11.46137|0.19505 +2016-07-01|67.0|27.0|11.96201|0.19366 +2016-07-01|67.0|28.0|12.45804|0.19225 +2016-07-01|67.0|29.0|12.94922|0.19084 +2016-07-01|67.0|30.0|13.43534|0.18941 +2016-07-01|67.0|31.0|13.91612|0.18798 +2016-07-01|67.0|32.0|14.39132|0.18652 +2016-07-01|67.0|33.0|14.86063|0.18505 +2016-07-01|67.0|34.0|15.32378|0.18356 +2016-07-01|67.0|35.0|15.78044|0.18204 +2016-07-01|67.0|36.0|16.23027|0.1805 +2016-07-01|67.0|37.0|16.67294|0.17893 +2016-07-01|67.0|38.0|17.10807|0.17733 +2016-07-01|67.0|39.0|17.53529|0.17569 +2016-07-01|67.0|40.0|17.95418|0.17402 +2016-07-01|67.0|41.0|18.36434|0.17231 +2016-07-01|67.0|42.0|18.76532|0.17055 +2016-07-01|67.0|43.0|19.15666|0.16875 +2016-07-01|67.0|44.0|19.53788|0.16691 +2016-07-01|67.0|45.0|19.90849|0.165 +2016-07-01|67.0|46.0|20.26798|0.16305 +2016-07-01|67.0|47.0|20.61579|0.16103 +2016-07-01|67.0|48.0|20.95137|0.15896 +2016-07-01|67.0|49.0|21.27414|0.15682 +2016-07-01|67.0|50.0|21.58349|0.1546 +2016-07-01|67.0|51.0|21.87879|0.15232 +2016-07-01|67.0|52.0|22.1594|0.14995 +2016-07-01|67.0|53.0|22.42462|0.1475 +2016-07-01|67.0|54.0|22.67376|0.14496 +2016-07-01|67.0|55.0|22.9061|0.14233 +2016-07-01|67.0|56.0|23.12086|0.1396 +2016-07-01|67.0|57.0|23.31728|0.13676 +2016-07-01|67.0|58.0|23.49454|0.13381 +2016-07-01|67.0|59.0|23.65181|0.13074 +2016-07-01|67.0|60.0|23.7882|0.12755 +2016-07-01|67.0|61.0|23.90284|0.12422 +2016-07-01|67.0|62.0|23.99479|0.12076 +2016-07-01|67.0|63.0|24.0631|0.11715 +2016-07-01|67.0|64.0|24.10678|0.11338 +2016-07-01|67.0|65.0|24.12483|0.10945 +2016-07-01|67.0|66.0|24.11622|0.10535 +2016-07-01|67.0|67.0|24.07988|0.10107 +2016-07-01|67.0|68.0|24.01473|0.09661 +2016-07-01|67.0|69.0|23.91968|0.09195 +2016-07-01|67.0|70.0|23.79362|0.0871 +2016-07-01|67.0|71.0|23.63541|0.08203 +2016-07-01|67.0|72.0|23.44394|0.07675 +2016-07-01|67.0|73.0|23.21809|0.07125 +2016-07-01|67.0|74.0|22.95675|0.06553 +2016-07-01|67.0|75.0|22.65883|0.05959 +2016-07-01|67.0|76.0|22.3233|0.05342 +2016-07-01|67.0|77.0|21.94915|0.04703 +2016-07-01|67.0|78.0|21.53546|0.04041 +2016-07-01|67.0|79.0|21.08137|0.03358 +2016-07-01|67.0|80.0|20.58613|0.02655 +2016-07-01|67.0|81.0|20.04912|0.01933 +2016-07-01|67.0|82.0|19.46988|0.01194 +2016-07-01|67.0|83.0|18.84808|0.0044 +2016-07-01|67.0|84.0|18.18363|-0.00327 +2016-07-01|67.0|85.0|17.47666|-0.01103 +2016-07-01|67.0|86.0|16.72752|-0.01885 +2016-07-01|67.0|87.0|15.93687|-0.02668 +2016-07-01|67.0|88.0|15.10568|-0.03447 +2016-07-01|67.0|89.0|14.23521|-0.04218 +2016-07-01|67.0|90.0|13.3271|-0.04975 +2016-07-01|67.0|91.0|12.38334|-0.05712 +2016-07-01|67.0|92.0|11.40627|-0.06422 +2016-07-01|67.0|93.0|10.39862|-0.071 +2016-07-01|67.0|94.0|9.36348|-0.07739 +2016-07-01|67.0|95.0|8.30426|-0.08333 +2016-07-01|67.0|96.0|7.22472|-0.08876 +2016-07-01|67.0|97.0|6.12888|-0.09362 +2016-07-01|67.0|98.0|5.021|-0.09787 +2016-07-01|67.0|99.0|3.90555|-0.10146 +2016-07-01|67.0|100.0|2.78712|-0.10436 +2016-07-01|67.0|101.0|1.67036|-0.10656 +2016-07-01|67.0|102.0|0.55993|-0.10804 +2016-07-01|67.0|103.0|-0.53956|-0.1088 +2016-07-01|67.0|104.0|-1.62364|-0.10885 +2016-07-01|67.0|105.0|-2.68802|-0.10821 +2016-07-01|67.0|106.0|-3.72862|-0.10692 +2016-07-01|67.0|107.0|-4.74169|-0.10501 +2016-07-01|67.0|108.0|-5.72375|-0.10253 +2016-07-01|67.0|109.0|-6.6717|-0.09953 +2016-07-01|67.0|110.0|-7.58278|-0.09606 +2016-07-01|67.0|111.0|-8.45462|-0.0922 +2016-07-01|67.0|112.0|-9.28522|-0.088 +2016-07-01|67.0|113.0|-10.07295|-0.08351 +2016-07-01|67.0|114.0|-10.81653|-0.07881 +2016-07-01|67.0|115.0|-11.51502|-0.07395 +2016-07-01|67.0|116.0|-12.1678|-0.06898 +2016-07-01|67.0|117.0|-12.77454|-0.06397 +2016-07-01|67.0|118.0|-13.33518|-0.05895 +2016-07-01|67.0|119.0|-13.84988|-0.05398 +2016-07-01|67.0|120.0|-14.31903|-0.0491 +2016-07-01|67.0|121.0|-14.74319|-0.04434 +2016-07-01|67.0|122.0|-15.12308|-0.03975 +2016-07-01|67.0|123.0|-15.45957|-0.03534 +2016-07-01|67.0|124.0|-15.75361|-0.03115 +2016-07-01|67.0|125.0|-16.00628|-0.0272 +2016-07-01|67.0|126.0|-16.21869|-0.02351 +2016-07-01|67.0|127.0|-16.39204|-0.02009 +2016-07-01|67.0|128.0|-16.52755|-0.01697 +2016-07-01|67.0|129.0|-16.62649|-0.01416 +2016-07-01|67.0|130.0|-16.69012|-0.01166 +2016-07-01|67.0|131.0|-16.71974|-0.00948 +2016-07-01|67.0|132.0|-16.71662|-0.00764 +2016-07-01|67.0|133.0|-16.68203|-0.00613 +2016-07-01|67.0|134.0|-16.61724|-0.00497 +2016-07-01|67.0|135.0|-16.5235|-0.00414 +2016-07-01|67.0|136.0|-16.40202|-0.00367 +2016-07-01|67.0|137.0|-16.25401|-0.00354 +2016-07-01|67.0|138.0|-16.08064|-0.00375 +2016-07-01|67.0|139.0|-15.88305|-0.00431 +2016-07-01|67.0|140.0|-15.66235|-0.00522 +2016-07-01|67.0|141.0|-15.41964|-0.00647 +2016-07-01|67.0|142.0|-15.15595|-0.00806 +2016-07-01|67.0|143.0|-14.87231|-0.00998 +2016-07-01|67.0|144.0|-14.5697|-0.01224 +2016-07-01|67.0|145.0|-14.24908|-0.01483 +2016-07-01|67.0|146.0|-13.91137|-0.01774 +2016-07-01|67.0|147.0|-13.55747|-0.02097 +2016-07-01|67.0|148.0|-13.18824|-0.02451 +2016-07-01|67.0|149.0|-12.8045|-0.02836 +2016-07-01|67.0|150.0|-12.40706|-0.03251 +2016-07-01|67.0|151.0|-11.9967|-0.03696 +2016-07-01|67.0|152.0|-11.57415|-0.04169 +2016-07-01|67.0|153.0|-11.14014|-0.04669 +2016-07-01|67.0|154.0|-10.69536|-0.05197 +2016-07-01|67.0|155.0|-10.24046|-0.05751 +2016-07-01|67.0|156.0|-9.7761|-0.06331 +2016-07-01|67.0|157.0|-9.30289|-0.06935 +2016-07-01|67.0|158.0|-8.82142|-0.07562 +2016-07-01|67.0|159.0|-8.33226|-0.08212 +2016-07-01|67.0|160.0|-7.83596|-0.08883 +2016-07-01|67.0|161.0|-7.33305|-0.09575 +2016-07-01|67.0|162.0|-6.82403|-0.10285 +2016-07-01|67.0|163.0|-6.30939|-0.11015 +2016-07-01|67.0|164.0|-5.78961|-0.11761 +2016-07-01|67.0|165.0|-5.26512|-0.12523 +2016-07-01|67.0|166.0|-4.73638|-0.133 +2016-07-01|67.0|167.0|-4.2038|-0.14091 +2016-07-01|67.0|168.0|-3.66779|-0.14894 +2016-07-01|67.0|169.0|-3.12872|-0.15708 +2016-07-01|67.0|170.0|-2.58699|-0.16532 +2016-07-01|67.0|171.0|-2.04295|-0.17366 +2016-07-01|67.0|172.0|-1.49695|-0.18206 +2016-07-01|67.0|173.0|-0.94935|-0.19054 +2016-07-01|67.0|174.0|-0.40046|-0.19906 +2016-07-01|67.0|175.0|0.14938|-0.20763 +2016-07-01|67.0|176.0|0.69987|-0.21623 +2016-07-01|67.0|177.0|1.2507|-0.22484 +2016-07-01|67.0|178.0|1.80157|-0.23346 +2016-07-01|67.0|179.0|2.35219|-0.24208 +2016-07-01|67.0|-1.0|-3.27457|0.2391 +2016-07-01|67.0|-2.0|-3.85189|0.24122 +2016-07-01|67.0|-3.0|-4.43057|0.24338 +2016-07-01|67.0|-4.0|-5.01049|0.24559 +2016-07-01|67.0|-5.0|-5.59153|0.24784 +2016-07-01|67.0|-6.0|-6.17356|0.25015 +2016-07-01|67.0|-7.0|-6.75645|0.2525 +2016-07-01|67.0|-8.0|-7.34005|0.2549 +2016-07-01|67.0|-9.0|-7.92423|0.25735 +2016-07-01|67.0|-10.0|-8.50881|0.25985 +2016-07-01|67.0|-11.0|-9.09364|0.2624 +2016-07-01|67.0|-12.0|-9.67855|0.265 +2016-07-01|67.0|-13.0|-10.26336|0.26765 +2016-07-01|67.0|-14.0|-10.84788|0.27035 +2016-07-01|67.0|-15.0|-11.43193|0.2731 +2016-07-01|67.0|-16.0|-12.01531|0.2759 +2016-07-01|67.0|-17.0|-12.59779|0.27875 +2016-07-01|67.0|-18.0|-13.17918|0.28165 +2016-07-01|67.0|-19.0|-13.75925|0.2846 +2016-07-01|67.0|-20.0|-14.33777|0.2876 +2016-07-01|67.0|-21.0|-14.91449|0.29065 +2016-07-01|67.0|-22.0|-15.48918|0.29375 +2016-07-01|67.0|-23.0|-16.06157|0.29691 +2016-07-01|67.0|-24.0|-16.6314|0.30011 +2016-07-01|67.0|-25.0|-17.19839|0.30337 +2016-07-01|67.0|-26.0|-17.76226|0.30668 +2016-07-01|67.0|-27.0|-18.32272|0.31004 +2016-07-01|67.0|-28.0|-18.87945|0.31345 +2016-07-01|67.0|-29.0|-19.43214|0.31692 +2016-07-01|67.0|-30.0|-19.98046|0.32043 +2016-07-01|67.0|-31.0|-20.52407|0.324 +2016-07-01|67.0|-32.0|-21.0626|0.32763 +2016-07-01|67.0|-33.0|-21.59569|0.33131 +2016-07-01|67.0|-34.0|-22.12294|0.33504 +2016-07-01|67.0|-35.0|-22.64395|0.33883 +2016-07-01|67.0|-36.0|-23.15829|0.34267 +2016-07-01|67.0|-37.0|-23.66553|0.34657 +2016-07-01|67.0|-38.0|-24.16519|0.35053 +2016-07-01|67.0|-39.0|-24.65679|0.35454 +2016-07-01|67.0|-40.0|-25.13982|0.35861 +2016-07-01|67.0|-41.0|-25.61374|0.36274 +2016-07-01|67.0|-42.0|-26.07799|0.36692 +2016-07-01|67.0|-43.0|-26.53198|0.37117 +2016-07-01|67.0|-44.0|-26.97508|0.37547 +2016-07-01|67.0|-45.0|-27.40664|0.37984 +2016-07-01|67.0|-46.0|-27.82597|0.38426 +2016-07-01|67.0|-47.0|-28.23233|0.38873 +2016-07-01|67.0|-48.0|-28.62497|0.39327 +2016-07-01|67.0|-49.0|-29.00308|0.39786 +2016-07-01|67.0|-50.0|-29.3658|0.40251 +2016-07-01|67.0|-51.0|-29.71223|0.4072 +2016-07-01|67.0|-52.0|-30.04142|0.41195 +2016-07-01|67.0|-53.0|-30.35238|0.41674 +2016-07-01|67.0|-54.0|-30.64405|0.42157 +2016-07-01|67.0|-55.0|-30.91531|0.42644 +2016-07-01|67.0|-56.0|-31.16498|0.43133 +2016-07-01|67.0|-57.0|-31.39183|0.43625 +2016-07-01|67.0|-58.0|-31.59455|0.44117 +2016-07-01|67.0|-59.0|-31.77176|0.44609 +2016-07-01|67.0|-60.0|-31.92201|0.451 +2016-07-01|67.0|-61.0|-32.04377|0.45587 +2016-07-01|67.0|-62.0|-32.13544|0.46068 +2016-07-01|67.0|-63.0|-32.19534|0.46542 +2016-07-01|67.0|-64.0|-32.22168|0.47005 +2016-07-01|67.0|-65.0|-32.21264|0.47455 +2016-07-01|67.0|-66.0|-32.16626|0.47887 +2016-07-01|67.0|-67.0|-32.08054|0.48298 +2016-07-01|67.0|-68.0|-31.95339|0.48683 +2016-07-01|67.0|-69.0|-31.78264|0.49035 +2016-07-01|67.0|-70.0|-31.56606|0.49349 +2016-07-01|67.0|-71.0|-31.30136|0.49619 +2016-07-01|67.0|-72.0|-30.98622|0.49834 +2016-07-01|67.0|-73.0|-30.61827|0.49988 +2016-07-01|67.0|-74.0|-30.19514|0.50069 +2016-07-01|67.0|-75.0|-29.71451|0.50066 +2016-07-01|67.0|-76.0|-29.17407|0.49968 +2016-07-01|67.0|-77.0|-28.57164|0.49762 +2016-07-01|67.0|-78.0|-27.90515|0.49432 +2016-07-01|67.0|-79.0|-27.17275|0.48964 +2016-07-01|67.0|-80.0|-26.37283|0.48343 +2016-07-01|67.0|-81.0|-25.5041|0.47552 +2016-07-01|67.0|-82.0|-24.56568|0.46575 +2016-07-01|67.0|-83.0|-23.55716|0.45396 +2016-07-01|67.0|-84.0|-22.47869|0.44001 +2016-07-01|67.0|-85.0|-21.33108|0.42375 +2016-07-01|67.0|-86.0|-20.11587|0.40509 +2016-07-01|67.0|-87.0|-18.83537|0.38394 +2016-07-01|67.0|-88.0|-17.49279|0.36025 +2016-07-01|67.0|-89.0|-16.09221|0.33405 +2016-07-01|67.0|-90.0|-14.63863|0.30538 +2016-07-01|67.0|-91.0|-13.13794|0.27436 +2016-07-01|67.0|-92.0|-11.59688|0.24116 +2016-07-01|67.0|-93.0|-10.02294|0.20602 +2016-07-01|67.0|-94.0|-8.42427|0.16923 +2016-07-01|67.0|-95.0|-6.80948|0.13112 +2016-07-01|67.0|-96.0|-5.18751|0.09206 +2016-07-01|67.0|-97.0|-3.5674|0.05244 +2016-07-01|67.0|-98.0|-1.95811|0.01267 +2016-07-01|67.0|-99.0|-0.36833|-0.02685 +2016-07-01|67.0|-100.0|1.1937|-0.06574 +2016-07-01|67.0|-101.0|2.72037|-0.10367 +2016-07-01|67.0|-102.0|4.2048|-0.14031 +2016-07-01|67.0|-103.0|5.64093|-0.17541 +2016-07-01|67.0|-104.0|7.02359|-0.20876 +2016-07-01|67.0|-105.0|8.34851|-0.24021 +2016-07-01|67.0|-106.0|9.61232|-0.26965 +2016-07-01|67.0|-107.0|10.81249|-0.29703 +2016-07-01|67.0|-108.0|11.9473|-0.32233 +2016-07-01|67.0|-109.0|13.01577|-0.34556 +2016-07-01|67.0|-110.0|14.01756|-0.36678 +2016-07-01|67.0|-111.0|14.95289|-0.38605 +2016-07-01|67.0|-112.0|15.82249|-0.40347 +2016-07-01|67.0|-113.0|16.62746|-0.41914 +2016-07-01|67.0|-114.0|17.36925|-0.43316 +2016-07-01|67.0|-115.0|18.04955|-0.44565 +2016-07-01|67.0|-116.0|18.67027|-0.45672 +2016-07-01|67.0|-117.0|19.23344|-0.46648 +2016-07-01|67.0|-118.0|19.7412|-0.47503 +2016-07-01|67.0|-119.0|20.19573|-0.48248 +2016-07-01|67.0|-120.0|20.59924|-0.48892 +2016-07-01|67.0|-121.0|20.95394|-0.49444 +2016-07-01|67.0|-122.0|21.26202|-0.49913 +2016-07-01|67.0|-123.0|21.52561|-0.50305 +2016-07-01|67.0|-124.0|21.74679|-0.50628 +2016-07-01|67.0|-125.0|21.92758|-0.50888 +2016-07-01|67.0|-126.0|22.06992|-0.5109 +2016-07-01|67.0|-127.0|22.1757|-0.5124 +2016-07-01|67.0|-128.0|22.24668|-0.51342 +2016-07-01|67.0|-129.0|22.2846|-0.514 +2016-07-01|67.0|-130.0|22.29107|-0.51417 +2016-07-01|67.0|-131.0|22.26764|-0.51397 +2016-07-01|67.0|-132.0|22.21579|-0.51343 +2016-07-01|67.0|-133.0|22.13692|-0.51256 +2016-07-01|67.0|-134.0|22.03235|-0.51139 +2016-07-01|67.0|-135.0|21.90335|-0.50994 +2016-07-01|67.0|-136.0|21.75109|-0.50823 +2016-07-01|67.0|-137.0|21.57672|-0.50626 +2016-07-01|67.0|-138.0|21.3813|-0.50405 +2016-07-01|67.0|-139.0|21.16584|-0.50161 +2016-07-01|67.0|-140.0|20.9313|-0.49895 +2016-07-01|67.0|-141.0|20.67859|-0.49607 +2016-07-01|67.0|-142.0|20.40859|-0.49299 +2016-07-01|67.0|-143.0|20.1221|-0.4897 +2016-07-01|67.0|-144.0|19.8199|-0.48622 +2016-07-01|67.0|-145.0|19.50273|-0.48254 +2016-07-01|67.0|-146.0|19.1713|-0.47867 +2016-07-01|67.0|-147.0|18.82627|-0.47461 +2016-07-01|67.0|-148.0|18.46828|-0.47036 +2016-07-01|67.0|-149.0|18.09794|-0.46594 +2016-07-01|67.0|-150.0|17.71583|-0.46132 +2016-07-01|67.0|-151.0|17.32251|-0.45653 +2016-07-01|67.0|-152.0|16.91849|-0.45155 +2016-07-01|67.0|-153.0|16.50429|-0.4464 +2016-07-01|67.0|-154.0|16.08039|-0.44107 +2016-07-01|67.0|-155.0|15.64727|-0.43557 +2016-07-01|67.0|-156.0|15.20535|-0.42989 +2016-07-01|67.0|-157.0|14.75509|-0.42404 +2016-07-01|67.0|-158.0|14.29688|-0.41802 +2016-07-01|67.0|-159.0|13.83113|-0.41183 +2016-07-01|67.0|-160.0|13.35823|-0.40548 +2016-07-01|67.0|-161.0|12.87853|-0.39896 +2016-07-01|67.0|-162.0|12.39242|-0.39228 +2016-07-01|67.0|-163.0|11.90022|-0.38545 +2016-07-01|67.0|-164.0|11.40228|-0.37847 +2016-07-01|67.0|-165.0|10.89892|-0.37134 +2016-07-01|67.0|-166.0|10.39048|-0.36406 +2016-07-01|67.0|-167.0|9.87725|-0.35665 +2016-07-01|67.0|-168.0|9.35955|-0.3491 +2016-07-01|67.0|-169.0|8.83766|-0.34142 +2016-07-01|67.0|-170.0|8.31189|-0.33363 +2016-07-01|67.0|-171.0|7.78253|-0.32572 +2016-07-01|67.0|-172.0|7.24984|-0.3177 +2016-07-01|67.0|-173.0|6.71412|-0.30959 +2016-07-01|67.0|-174.0|6.17564|-0.30138 +2016-07-01|67.0|-175.0|5.63468|-0.29308 +2016-07-01|67.0|-176.0|5.09152|-0.28472 +2016-07-01|67.0|-177.0|4.54642|-0.27628 +2016-07-01|67.0|-178.0|3.99966|-0.26779 +2016-07-01|67.0|-179.0|3.45151|-0.25925 +2016-07-01|68.0|0.0|-2.80925|0.24608 +2016-07-01|68.0|1.0|-2.21759|0.244 +2016-07-01|68.0|2.0|-1.62743|0.24196 +2016-07-01|68.0|3.0|-1.03885|0.23997 +2016-07-01|68.0|4.0|-0.45196|0.23802 +2016-07-01|68.0|5.0|0.13316|0.23611 +2016-07-01|68.0|6.0|0.71641|0.23424 +2016-07-01|68.0|7.0|1.2977|0.23241 +2016-07-01|68.0|8.0|1.87694|0.23061 +2016-07-01|68.0|9.0|2.45405|0.22886 +2016-07-01|68.0|10.0|3.02894|0.22713 +2016-07-01|68.0|11.0|3.60151|0.22544 +2016-07-01|68.0|12.0|4.17169|0.22378 +2016-07-01|68.0|13.0|4.73937|0.22215 +2016-07-01|68.0|14.0|5.30446|0.22055 +2016-07-01|68.0|15.0|5.86686|0.21897 +2016-07-01|68.0|16.0|6.42647|0.21741 +2016-07-01|68.0|17.0|6.98319|0.21588 +2016-07-01|68.0|18.0|7.53688|0.21436 +2016-07-01|68.0|19.0|8.08744|0.21287 +2016-07-01|68.0|20.0|8.63473|0.21138 +2016-07-01|68.0|21.0|9.17862|0.20991 +2016-07-01|68.0|22.0|9.71896|0.20845 +2016-07-01|68.0|23.0|10.2556|0.207 +2016-07-01|68.0|24.0|10.78837|0.20556 +2016-07-01|68.0|25.0|11.3171|0.20412 +2016-07-01|68.0|26.0|11.8416|0.20268 +2016-07-01|68.0|27.0|12.36166|0.20123 +2016-07-01|68.0|28.0|12.87709|0.19979 +2016-07-01|68.0|29.0|13.38765|0.19834 +2016-07-01|68.0|30.0|13.89311|0.19688 +2016-07-01|68.0|31.0|14.39321|0.19541 +2016-07-01|68.0|32.0|14.8877|0.19393 +2016-07-01|68.0|33.0|15.37628|0.19243 +2016-07-01|68.0|34.0|15.85866|0.19091 +2016-07-01|68.0|35.0|16.33454|0.18937 +2016-07-01|68.0|36.0|16.80357|0.18781 +2016-07-01|68.0|37.0|17.26543|0.18623 +2016-07-01|68.0|38.0|17.71974|0.18461 +2016-07-01|68.0|39.0|18.16612|0.18297 +2016-07-01|68.0|40.0|18.60419|0.18129 +2016-07-01|68.0|41.0|19.03352|0.17958 +2016-07-01|68.0|42.0|19.45368|0.17782 +2016-07-01|68.0|43.0|19.86422|0.17602 +2016-07-01|68.0|44.0|20.26467|0.17418 +2016-07-01|68.0|45.0|20.65452|0.17229 +2016-07-01|68.0|46.0|21.03327|0.17035 +2016-07-01|68.0|47.0|21.40037|0.16835 +2016-07-01|68.0|48.0|21.75527|0.16629 +2016-07-01|68.0|49.0|22.09739|0.16416 +2016-07-01|68.0|50.0|22.42612|0.16197 +2016-07-01|68.0|51.0|22.74082|0.15971 +2016-07-01|68.0|52.0|23.04085|0.15736 +2016-07-01|68.0|53.0|23.32551|0.15494 +2016-07-01|68.0|54.0|23.5941|0.15243 +2016-07-01|68.0|55.0|23.84587|0.14982 +2016-07-01|68.0|56.0|24.08006|0.14712 +2016-07-01|68.0|57.0|24.29587|0.14431 +2016-07-01|68.0|58.0|24.49247|0.14139 +2016-07-01|68.0|59.0|24.66899|0.13835 +2016-07-01|68.0|60.0|24.82455|0.13518 +2016-07-01|68.0|61.0|24.95821|0.13189 +2016-07-01|68.0|62.0|25.06901|0.12845 +2016-07-01|68.0|63.0|25.15596|0.12486 +2016-07-01|68.0|64.0|25.21803|0.12111 +2016-07-01|68.0|65.0|25.25416|0.1172 +2016-07-01|68.0|66.0|25.26327|0.11311 +2016-07-01|68.0|67.0|25.24421|0.10884 +2016-07-01|68.0|68.0|25.19585|0.10437 +2016-07-01|68.0|69.0|25.117|0.09971 +2016-07-01|68.0|70.0|25.00648|0.09484 +2016-07-01|68.0|71.0|24.86305|0.08974 +2016-07-01|68.0|72.0|24.68549|0.08443 +2016-07-01|68.0|73.0|24.47257|0.07888 +2016-07-01|68.0|74.0|24.22306|0.0731 +2016-07-01|68.0|75.0|23.93574|0.06708 +2016-07-01|68.0|76.0|23.60944|0.06081 +2016-07-01|68.0|77.0|23.24301|0.0543 +2016-07-01|68.0|78.0|22.83535|0.04755 +2016-07-01|68.0|79.0|22.38545|0.04056 +2016-07-01|68.0|80.0|21.8924|0.03335 +2016-07-01|68.0|81.0|21.35541|0.02592 +2016-07-01|68.0|82.0|20.77382|0.01829 +2016-07-01|68.0|83.0|20.14716|0.01048 +2016-07-01|68.0|84.0|19.47516|0.00252 +2016-07-01|68.0|85.0|18.75778|-0.00557 +2016-07-01|68.0|86.0|17.99524|-0.01373 +2016-07-01|68.0|87.0|17.18807|-0.02194 +2016-07-01|68.0|88.0|16.33713|-0.03015 +2016-07-01|68.0|89.0|15.44361|-0.03829 +2016-07-01|68.0|90.0|14.5091|-0.04632 +2016-07-01|68.0|91.0|13.5356|-0.05416 +2016-07-01|68.0|92.0|12.52547|-0.06175 +2016-07-01|68.0|93.0|11.48155|-0.06902 +2016-07-01|68.0|94.0|10.40705|-0.0759 +2016-07-01|68.0|95.0|9.30558|-0.08232 +2016-07-01|68.0|96.0|8.18112|-0.08822 +2016-07-01|68.0|97.0|7.03799|-0.09354 +2016-07-01|68.0|98.0|5.88079|-0.09821 +2016-07-01|68.0|99.0|4.71434|-0.1022 +2016-07-01|68.0|100.0|3.54363|-0.10547 +2016-07-01|68.0|101.0|2.37373|-0.10799 +2016-07-01|68.0|102.0|1.20972|-0.10974 +2016-07-01|68.0|103.0|0.05664|-0.11074 +2016-07-01|68.0|104.0|-1.08062|-0.11098 +2016-07-01|68.0|105.0|-2.19737|-0.1105 +2016-07-01|68.0|106.0|-3.28919|-0.10931 +2016-07-01|68.0|107.0|-4.35197|-0.10748 +2016-07-01|68.0|108.0|-5.38196|-0.10504 +2016-07-01|68.0|109.0|-6.3758|-0.10206 +2016-07-01|68.0|110.0|-7.33053|-0.0986 +2016-07-01|68.0|111.0|-8.24365|-0.09472 +2016-07-01|68.0|112.0|-9.11303|-0.09049 +2016-07-01|68.0|113.0|-9.93698|-0.08598 +2016-07-01|68.0|114.0|-10.7142|-0.08125 +2016-07-01|68.0|115.0|-11.44376|-0.07636 +2016-07-01|68.0|116.0|-12.12508|-0.07137 +2016-07-01|68.0|117.0|-12.75789|-0.06635 +2016-07-01|68.0|118.0|-13.34222|-0.06134 +2016-07-01|68.0|119.0|-13.87833|-0.05639 +2016-07-01|68.0|120.0|-14.36674|-0.05154 +2016-07-01|68.0|121.0|-14.80811|-0.04684 +2016-07-01|68.0|122.0|-15.20331|-0.04231 +2016-07-01|68.0|123.0|-15.55332|-0.03799 +2016-07-01|68.0|124.0|-15.85924|-0.0339 +2016-07-01|68.0|125.0|-16.12226|-0.03006 +2016-07-01|68.0|126.0|-16.34363|-0.02651 +2016-07-01|68.0|127.0|-16.52467|-0.02324 +2016-07-01|68.0|128.0|-16.66671|-0.02028 +2016-07-01|68.0|129.0|-16.77112|-0.01764 +2016-07-01|68.0|130.0|-16.83928|-0.01533 +2016-07-01|68.0|131.0|-16.87256|-0.01335 +2016-07-01|68.0|132.0|-16.87234|-0.01171 +2016-07-01|68.0|133.0|-16.83996|-0.01042 +2016-07-01|68.0|134.0|-16.77677|-0.00947 +2016-07-01|68.0|135.0|-16.68408|-0.00887 +2016-07-01|68.0|136.0|-16.56316|-0.00862 +2016-07-01|68.0|137.0|-16.41528|-0.00872 +2016-07-01|68.0|138.0|-16.24166|-0.00917 +2016-07-01|68.0|139.0|-16.04348|-0.00997 +2016-07-01|68.0|140.0|-15.82189|-0.01111 +2016-07-01|68.0|141.0|-15.57801|-0.01259 +2016-07-01|68.0|142.0|-15.31293|-0.01441 +2016-07-01|68.0|143.0|-15.02768|-0.01657 +2016-07-01|68.0|144.0|-14.72328|-0.01906 +2016-07-01|68.0|145.0|-14.4007|-0.02187 +2016-07-01|68.0|146.0|-14.06088|-0.02501 +2016-07-01|68.0|147.0|-13.70474|-0.02846 +2016-07-01|68.0|148.0|-13.33313|-0.03222 +2016-07-01|68.0|149.0|-12.94691|-0.03628 +2016-07-01|68.0|150.0|-12.54688|-0.04064 +2016-07-01|68.0|151.0|-12.13383|-0.04529 +2016-07-01|68.0|152.0|-11.7085|-0.05022 +2016-07-01|68.0|153.0|-11.27162|-0.05543 +2016-07-01|68.0|154.0|-10.82388|-0.0609 +2016-07-01|68.0|155.0|-10.36594|-0.06663 +2016-07-01|68.0|156.0|-9.89846|-0.07261 +2016-07-01|68.0|157.0|-9.42204|-0.07883 +2016-07-01|68.0|158.0|-8.93728|-0.08528 +2016-07-01|68.0|159.0|-8.44475|-0.09195 +2016-07-01|68.0|160.0|-7.945|-0.09883 +2016-07-01|68.0|161.0|-7.43856|-0.10592 +2016-07-01|68.0|162.0|-6.92592|-0.11319 +2016-07-01|68.0|163.0|-6.40759|-0.12065 +2016-07-01|68.0|164.0|-5.88403|-0.12827 +2016-07-01|68.0|165.0|-5.35569|-0.13606 +2016-07-01|68.0|166.0|-4.82301|-0.14399 +2016-07-01|68.0|167.0|-4.2864|-0.15206 +2016-07-01|68.0|168.0|-3.74627|-0.16026 +2016-07-01|68.0|169.0|-3.20301|-0.16857 +2016-07-01|68.0|170.0|-2.657|-0.17698 +2016-07-01|68.0|171.0|-2.1086|-0.18549 +2016-07-01|68.0|172.0|-1.55816|-0.19408 +2016-07-01|68.0|173.0|-1.00603|-0.20273 +2016-07-01|68.0|174.0|-0.45253|-0.21144 +2016-07-01|68.0|175.0|0.10201|-0.2202 +2016-07-01|68.0|176.0|0.65727|-0.229 +2016-07-01|68.0|177.0|1.21295|-0.23782 +2016-07-01|68.0|178.0|1.76876|-0.24665 +2016-07-01|68.0|179.0|2.32439|-0.25549 +2016-07-01|68.0|-1.0|-3.40229|0.2482 +2016-07-01|68.0|-2.0|-3.99661|0.25037 +2016-07-01|68.0|-3.0|-4.59209|0.25259 +2016-07-01|68.0|-4.0|-5.18862|0.25486 +2016-07-01|68.0|-5.0|-5.78608|0.25718 +2016-07-01|68.0|-6.0|-6.38434|0.25954 +2016-07-01|68.0|-7.0|-6.98327|0.26196 +2016-07-01|68.0|-8.0|-7.58273|0.26442 +2016-07-01|68.0|-9.0|-8.18258|0.26694 +2016-07-01|68.0|-10.0|-8.78265|0.26951 +2016-07-01|68.0|-11.0|-9.38281|0.27213 +2016-07-01|68.0|-12.0|-9.98287|0.2748 +2016-07-01|68.0|-13.0|-10.58268|0.27753 +2016-07-01|68.0|-14.0|-11.18206|0.2803 +2016-07-01|68.0|-15.0|-11.78082|0.28314 +2016-07-01|68.0|-16.0|-12.37877|0.28602 +2016-07-01|68.0|-17.0|-12.97571|0.28896 +2016-07-01|68.0|-18.0|-13.57144|0.29196 +2016-07-01|68.0|-19.0|-14.16575|0.29501 +2016-07-01|68.0|-20.0|-14.75841|0.29812 +2016-07-01|68.0|-21.0|-15.3492|0.30128 +2016-07-01|68.0|-22.0|-15.93789|0.3045 +2016-07-01|68.0|-23.0|-16.52421|0.30778 +2016-07-01|68.0|-24.0|-17.10793|0.31111 +2016-07-01|68.0|-25.0|-17.68878|0.31451 +2016-07-01|68.0|-26.0|-18.26649|0.31796 +2016-07-01|68.0|-27.0|-18.84077|0.32147 +2016-07-01|68.0|-28.0|-19.41132|0.32504 +2016-07-01|68.0|-29.0|-19.97785|0.32867 +2016-07-01|68.0|-30.0|-20.54004|0.33237 +2016-07-01|68.0|-31.0|-21.09755|0.33613 +2016-07-01|68.0|-32.0|-21.65004|0.33995 +2016-07-01|68.0|-33.0|-22.19715|0.34384 +2016-07-01|68.0|-34.0|-22.7385|0.34779 +2016-07-01|68.0|-35.0|-23.27371|0.35181 +2016-07-01|68.0|-36.0|-23.80236|0.3559 +2016-07-01|68.0|-37.0|-24.32403|0.36005 +2016-07-01|68.0|-38.0|-24.83826|0.36428 +2016-07-01|68.0|-39.0|-25.34459|0.36857 +2016-07-01|68.0|-40.0|-25.84252|0.37294 +2016-07-01|68.0|-41.0|-26.33153|0.37739 +2016-07-01|68.0|-42.0|-26.81107|0.38191 +2016-07-01|68.0|-43.0|-27.28058|0.3865 +2016-07-01|68.0|-44.0|-27.73945|0.39117 +2016-07-01|68.0|-45.0|-28.18704|0.39592 +2016-07-01|68.0|-46.0|-28.62268|0.40074 +2016-07-01|68.0|-47.0|-29.04566|0.40565 +2016-07-01|68.0|-48.0|-29.45525|0.41063 +2016-07-01|68.0|-49.0|-29.85065|0.41569 +2016-07-01|68.0|-50.0|-30.23103|0.42083 +2016-07-01|68.0|-51.0|-30.59551|0.42605 +2016-07-01|68.0|-52.0|-30.94317|0.43134 +2016-07-01|68.0|-53.0|-31.27303|0.4367 +2016-07-01|68.0|-54.0|-31.58406|0.44213 +2016-07-01|68.0|-55.0|-31.87516|0.44763 +2016-07-01|68.0|-56.0|-32.14517|0.45319 +2016-07-01|68.0|-57.0|-32.39287|0.4588 +2016-07-01|68.0|-58.0|-32.61698|0.46445 +2016-07-01|68.0|-59.0|-32.81612|0.47014 +2016-07-01|68.0|-60.0|-32.98886|0.47584 +2016-07-01|68.0|-61.0|-33.13368|0.48155 +2016-07-01|68.0|-62.0|-33.24897|0.48725 +2016-07-01|68.0|-63.0|-33.33305|0.49291 +2016-07-01|68.0|-64.0|-33.38413|0.49851 +2016-07-01|68.0|-65.0|-33.40036|0.50402 +2016-07-01|68.0|-66.0|-33.37976|0.5094 +2016-07-01|68.0|-67.0|-33.32029|0.5146 +2016-07-01|68.0|-68.0|-33.21979|0.5196 +2016-07-01|68.0|-69.0|-33.07604|0.52431 +2016-07-01|68.0|-70.0|-32.88672|0.52869 +2016-07-01|68.0|-71.0|-32.64943|0.53266 +2016-07-01|68.0|-72.0|-32.3617|0.53613 +2016-07-01|68.0|-73.0|-32.02103|0.53901 +2016-07-01|68.0|-74.0|-31.62485|0.5412 +2016-07-01|68.0|-75.0|-31.17061|0.54257 +2016-07-01|68.0|-76.0|-30.65576|0.543 +2016-07-01|68.0|-77.0|-30.07781|0.54233 +2016-07-01|68.0|-78.0|-29.43438|0.5404 +2016-07-01|68.0|-79.0|-28.72322|0.53706 +2016-07-01|68.0|-80.0|-27.94231|0.53211 +2016-07-01|68.0|-81.0|-27.08991|0.52536 +2016-07-01|68.0|-82.0|-26.16464|0.51662 +2016-07-01|68.0|-83.0|-25.16557|0.50569 +2016-07-01|68.0|-84.0|-24.09232|0.49238 +2016-07-01|68.0|-85.0|-22.94516|0.47651 +2016-07-01|68.0|-86.0|-21.72508|0.45791 +2016-07-01|68.0|-87.0|-20.43392|0.43648 +2016-07-01|68.0|-88.0|-19.07441|0.4121 +2016-07-01|68.0|-89.0|-17.65028|0.38476 +2016-07-01|68.0|-90.0|-16.16627|0.35447 +2016-07-01|68.0|-91.0|-14.62812|0.32132 +2016-07-01|68.0|-92.0|-13.04259|0.28547 +2016-07-01|68.0|-93.0|-11.41736|0.24716 +2016-07-01|68.0|-94.0|-9.76089|0.2067 +2016-07-01|68.0|-95.0|-8.08231|0.16446 +2016-07-01|68.0|-96.0|-6.39123|0.12086 +2016-07-01|68.0|-97.0|-4.69749|0.07638 +2016-07-01|68.0|-98.0|-3.01096|0.0315 +2016-07-01|68.0|-99.0|-1.34129|-0.01329 +2016-07-01|68.0|-100.0|0.30228|-0.05752 +2016-07-01|68.0|-101.0|1.91114|-0.10076 +2016-07-01|68.0|-102.0|3.47744|-0.14261 +2016-07-01|68.0|-103.0|4.99424|-0.18273 +2016-07-01|68.0|-104.0|6.4556|-0.22085 +2016-07-01|68.0|-105.0|7.85655|-0.25677 +2016-07-01|68.0|-106.0|9.19316|-0.29034 +2016-07-01|68.0|-107.0|10.46246|-0.32149 +2016-07-01|68.0|-108.0|11.66242|-0.35018 +2016-07-01|68.0|-109.0|12.79183|-0.37643 +2016-07-01|68.0|-110.0|13.85023|-0.40029 +2016-07-01|68.0|-111.0|14.83782|-0.42186 +2016-07-01|68.0|-112.0|15.75534|-0.44123 +2016-07-01|68.0|-113.0|16.604|-0.45853 +2016-07-01|68.0|-114.0|17.38538|-0.47389 +2016-07-01|68.0|-115.0|18.10136|-0.48746 +2016-07-01|68.0|-116.0|18.75403|-0.49936 +2016-07-01|68.0|-117.0|19.34563|-0.50974 +2016-07-01|68.0|-118.0|19.87852|-0.51871 +2016-07-01|68.0|-119.0|20.3551|-0.52641 +2016-07-01|68.0|-120.0|20.77782|-0.53296 +2016-07-01|68.0|-121.0|21.14909|-0.53845 +2016-07-01|68.0|-122.0|21.4713|-0.54299 +2016-07-01|68.0|-123.0|21.74679|-0.54667 +2016-07-01|68.0|-124.0|21.97784|-0.54957 +2016-07-01|68.0|-125.0|22.16664|-0.55176 +2016-07-01|68.0|-126.0|22.3153|-0.55332 +2016-07-01|68.0|-127.0|22.42585|-0.5543 +2016-07-01|68.0|-128.0|22.50023|-0.55475 +2016-07-01|68.0|-129.0|22.54027|-0.55473 +2016-07-01|68.0|-130.0|22.54774|-0.55427 +2016-07-01|68.0|-131.0|22.52429|-0.55342 +2016-07-01|68.0|-132.0|22.47152|-0.5522 +2016-07-01|68.0|-133.0|22.3909|-0.55064 +2016-07-01|68.0|-134.0|22.28387|-0.54877 +2016-07-01|68.0|-135.0|22.15175|-0.54661 +2016-07-01|68.0|-136.0|21.99581|-0.54417 +2016-07-01|68.0|-137.0|21.81724|-0.54149 +2016-07-01|68.0|-138.0|21.61719|-0.53856 +2016-07-01|68.0|-139.0|21.39671|-0.5354 +2016-07-01|68.0|-140.0|21.15682|-0.53202 +2016-07-01|68.0|-141.0|20.89848|-0.52844 +2016-07-01|68.0|-142.0|20.62258|-0.52465 +2016-07-01|68.0|-143.0|20.32999|-0.52066 +2016-07-01|68.0|-144.0|20.02152|-0.51648 +2016-07-01|68.0|-145.0|19.69793|-0.51212 +2016-07-01|68.0|-146.0|19.35996|-0.50758 +2016-07-01|68.0|-147.0|19.0083|-0.50285 +2016-07-01|68.0|-148.0|18.6436|-0.49796 +2016-07-01|68.0|-149.0|18.26651|-0.49288 +2016-07-01|68.0|-150.0|17.8776|-0.48764 +2016-07-01|68.0|-151.0|17.47746|-0.48223 +2016-07-01|68.0|-152.0|17.06663|-0.47665 +2016-07-01|68.0|-153.0|16.64561|-0.4709 +2016-07-01|68.0|-154.0|16.21492|-0.46499 +2016-07-01|68.0|-155.0|15.77501|-0.45892 +2016-07-01|68.0|-156.0|15.32636|-0.45268 +2016-07-01|68.0|-157.0|14.86939|-0.44629 +2016-07-01|68.0|-158.0|14.40452|-0.43975 +2016-07-01|68.0|-159.0|13.93216|-0.43305 +2016-07-01|68.0|-160.0|13.4527|-0.42619 +2016-07-01|68.0|-161.0|12.96651|-0.41919 +2016-07-01|68.0|-162.0|12.47395|-0.41205 +2016-07-01|68.0|-163.0|11.97537|-0.40476 +2016-07-01|68.0|-164.0|11.47111|-0.39734 +2016-07-01|68.0|-165.0|10.96151|-0.38978 +2016-07-01|68.0|-166.0|10.44688|-0.38209 +2016-07-01|68.0|-167.0|9.92754|-0.37428 +2016-07-01|68.0|-168.0|9.40379|-0.36635 +2016-07-01|68.0|-169.0|8.87593|-0.3583 +2016-07-01|68.0|-170.0|8.34425|-0.35015 +2016-07-01|68.0|-171.0|7.80905|-0.3419 +2016-07-01|68.0|-172.0|7.2706|-0.33355 +2016-07-01|68.0|-173.0|6.72919|-0.32512 +2016-07-01|68.0|-174.0|6.18509|-0.3166 +2016-07-01|68.0|-175.0|5.63859|-0.30802 +2016-07-01|68.0|-176.0|5.08995|-0.29937 +2016-07-01|68.0|-177.0|4.53945|-0.29067 +2016-07-01|68.0|-178.0|3.98736|-0.28192 +2016-07-01|68.0|-179.0|3.43397|-0.27313 +2016-07-01|69.0|0.0|-2.90997|0.25571 +2016-07-01|69.0|1.0|-2.30098|0.25357 +2016-07-01|69.0|2.0|-1.69332|0.25147 +2016-07-01|69.0|3.0|-1.08709|0.24942 +2016-07-01|69.0|4.0|-0.48238|0.24742 +2016-07-01|69.0|5.0|0.1207|0.24545 +2016-07-01|69.0|6.0|0.72206|0.24352 +2016-07-01|69.0|7.0|1.3216|0.24164 +2016-07-01|69.0|8.0|1.91922|0.23979 +2016-07-01|69.0|9.0|2.51484|0.23797 +2016-07-01|69.0|10.0|3.10835|0.23619 +2016-07-01|69.0|11.0|3.69965|0.23445 +2016-07-01|69.0|12.0|4.28865|0.23273 +2016-07-01|69.0|13.0|4.87524|0.23104 +2016-07-01|69.0|14.0|5.45933|0.22938 +2016-07-01|69.0|15.0|6.0408|0.22775 +2016-07-01|69.0|16.0|6.61954|0.22614 +2016-07-01|69.0|17.0|7.19544|0.22456 +2016-07-01|69.0|18.0|7.76836|0.22299 +2016-07-01|69.0|19.0|8.33819|0.22144 +2016-07-01|69.0|20.0|8.90478|0.21991 +2016-07-01|69.0|21.0|9.468|0.21839 +2016-07-01|69.0|22.0|10.02768|0.21688 +2016-07-01|69.0|23.0|10.58368|0.21539 +2016-07-01|69.0|24.0|11.13582|0.2139 +2016-07-01|69.0|25.0|11.68391|0.21242 +2016-07-01|69.0|26.0|12.22778|0.21094 +2016-07-01|69.0|27.0|12.76722|0.20946 +2016-07-01|69.0|28.0|13.30201|0.20798 +2016-07-01|69.0|29.0|13.83194|0.2065 +2016-07-01|69.0|30.0|14.35675|0.20501 +2016-07-01|69.0|31.0|14.87622|0.20351 +2016-07-01|69.0|32.0|15.39006|0.202 +2016-07-01|69.0|33.0|15.89801|0.20049 +2016-07-01|69.0|34.0|16.39976|0.19895 +2016-07-01|69.0|35.0|16.89501|0.1974 +2016-07-01|69.0|36.0|17.38345|0.19583 +2016-07-01|69.0|37.0|17.86472|0.19424 +2016-07-01|69.0|38.0|18.33847|0.19262 +2016-07-01|69.0|39.0|18.80433|0.19098 +2016-07-01|69.0|40.0|19.26191|0.1893 +2016-07-01|69.0|41.0|19.7108|0.18759 +2016-07-01|69.0|42.0|20.15057|0.18585 +2016-07-01|69.0|43.0|20.58077|0.18407 +2016-07-01|69.0|44.0|21.00094|0.18224 +2016-07-01|69.0|45.0|21.41059|0.18037 +2016-07-01|69.0|46.0|21.80921|0.17845 +2016-07-01|69.0|47.0|22.19627|0.17648 +2016-07-01|69.0|48.0|22.57121|0.17445 +2016-07-01|69.0|49.0|22.93345|0.17236 +2016-07-01|69.0|50.0|23.28239|0.1702 +2016-07-01|69.0|51.0|23.61739|0.16798 +2016-07-01|69.0|52.0|23.9378|0.16568 +2016-07-01|69.0|53.0|24.24294|0.1633 +2016-07-01|69.0|54.0|24.53208|0.16083 +2016-07-01|69.0|55.0|24.80449|0.15828 +2016-07-01|69.0|56.0|25.05937|0.15563 +2016-07-01|69.0|57.0|25.29593|0.15287 +2016-07-01|69.0|58.0|25.51332|0.15 +2016-07-01|69.0|59.0|25.71065|0.14702 +2016-07-01|69.0|60.0|25.88701|0.14391 +2016-07-01|69.0|61.0|26.04146|0.14067 +2016-07-01|69.0|62.0|26.17299|0.13729 +2016-07-01|69.0|63.0|26.28057|0.13375 +2016-07-01|69.0|64.0|26.36315|0.13006 +2016-07-01|69.0|65.0|26.41961|0.1262 +2016-07-01|69.0|66.0|26.4488|0.12216 +2016-07-01|69.0|67.0|26.44956|0.11794 +2016-07-01|69.0|68.0|26.42064|0.11352 +2016-07-01|69.0|69.0|26.36081|0.10889 +2016-07-01|69.0|70.0|26.26878|0.10405 +2016-07-01|69.0|71.0|26.14324|0.09898 +2016-07-01|69.0|72.0|25.98286|0.09368 +2016-07-01|69.0|73.0|25.7863|0.08814 +2016-07-01|69.0|74.0|25.55219|0.08234 +2016-07-01|69.0|75.0|25.2792|0.07629 +2016-07-01|69.0|76.0|24.966|0.06998 +2016-07-01|69.0|77.0|24.61126|0.06341 +2016-07-01|69.0|78.0|24.21376|0.05658 +2016-07-01|69.0|79.0|23.77228|0.04948 +2016-07-01|69.0|80.0|23.28573|0.04214 +2016-07-01|69.0|81.0|22.75312|0.03454 +2016-07-01|69.0|82.0|22.1736|0.02672 +2016-07-01|69.0|83.0|21.54649|0.01868 +2016-07-01|69.0|84.0|20.87132|0.01045 +2016-07-01|69.0|85.0|20.14784|0.00207 +2016-07-01|69.0|86.0|19.3761|-0.00644 +2016-07-01|69.0|87.0|18.55643|-0.01503 +2016-07-01|69.0|88.0|17.68955|-0.02365 +2016-07-01|69.0|89.0|16.77651|-0.03224 +2016-07-01|69.0|90.0|15.81882|-0.04075 +2016-07-01|69.0|91.0|14.8184|-0.04911 +2016-07-01|69.0|92.0|13.77763|-0.05724 +2016-07-01|69.0|93.0|12.69937|-0.06507 +2016-07-01|69.0|94.0|11.58692|-0.07253 +2016-07-01|69.0|95.0|10.44407|-0.07954 +2016-07-01|69.0|96.0|9.27501|-0.08603 +2016-07-01|69.0|97.0|8.08433|-0.09192 +2016-07-01|69.0|98.0|6.87695|-0.09716 +2016-07-01|69.0|99.0|5.65809|-0.10168 +2016-07-01|69.0|100.0|4.43314|-0.10546 +2016-07-01|69.0|101.0|3.20764|-0.10845 +2016-07-01|69.0|102.0|1.98713|-0.11064 +2016-07-01|69.0|103.0|0.77712|-0.11203 +2016-07-01|69.0|104.0|-0.41701|-0.11262 +2016-07-01|69.0|105.0|-1.59013|-0.11244 +2016-07-01|69.0|106.0|-2.73737|-0.11152 +2016-07-01|69.0|107.0|-3.85425|-0.1099 +2016-07-01|69.0|108.0|-4.93665|-0.10765 +2016-07-01|69.0|109.0|-5.98093|-0.10482 +2016-07-01|69.0|110.0|-6.98389|-0.10148 +2016-07-01|69.0|111.0|-7.9428|-0.09771 +2016-07-01|69.0|112.0|-8.85542|-0.09357 +2016-07-01|69.0|113.0|-9.71995|-0.08913 +2016-07-01|69.0|114.0|-10.53504|-0.08446 +2016-07-01|69.0|115.0|-11.29975|-0.07964 +2016-07-01|69.0|116.0|-12.01354|-0.07473 +2016-07-01|69.0|117.0|-12.67619|-0.06978 +2016-07-01|69.0|118.0|-13.2878|-0.06485 +2016-07-01|69.0|119.0|-13.84875|-0.05999 +2016-07-01|69.0|120.0|-14.35965|-0.05525 +2016-07-01|69.0|121.0|-14.82132|-0.05066 +2016-07-01|69.0|122.0|-15.23473|-0.04626 +2016-07-01|69.0|123.0|-15.60102|-0.04208 +2016-07-01|69.0|124.0|-15.92141|-0.03814 +2016-07-01|69.0|125.0|-16.19724|-0.03448 +2016-07-01|69.0|126.0|-16.42989|-0.0311 +2016-07-01|69.0|127.0|-16.62079|-0.02802 +2016-07-01|69.0|128.0|-16.77142|-0.02527 +2016-07-01|69.0|129.0|-16.88325|-0.02283 +2016-07-01|69.0|130.0|-16.95777|-0.02074 +2016-07-01|69.0|131.0|-16.99645|-0.01898 +2016-07-01|69.0|132.0|-17.00076|-0.01757 +2016-07-01|69.0|133.0|-16.97214|-0.01651 +2016-07-01|69.0|134.0|-16.912|-0.0158 +2016-07-01|69.0|135.0|-16.82174|-0.01545 +2016-07-01|69.0|136.0|-16.70269|-0.01544 +2016-07-01|69.0|137.0|-16.55617|-0.01579 +2016-07-01|69.0|138.0|-16.38346|-0.01648 +2016-07-01|69.0|139.0|-16.18579|-0.01752 +2016-07-01|69.0|140.0|-15.96436|-0.01891 +2016-07-01|69.0|141.0|-15.72032|-0.02064 +2016-07-01|69.0|142.0|-15.45478|-0.0227 +2016-07-01|69.0|143.0|-15.16883|-0.02509 +2016-07-01|69.0|144.0|-14.86349|-0.02781 +2016-07-01|69.0|145.0|-14.53976|-0.03086 +2016-07-01|69.0|146.0|-14.1986|-0.03422 +2016-07-01|69.0|147.0|-13.84095|-0.03789 +2016-07-01|69.0|148.0|-13.46767|-0.04187 +2016-07-01|69.0|149.0|-13.07964|-0.04614 +2016-07-01|69.0|150.0|-12.67766|-0.0507 +2016-07-01|69.0|151.0|-12.26253|-0.05555 +2016-07-01|69.0|152.0|-11.835|-0.06068 +2016-07-01|69.0|153.0|-11.39581|-0.06607 +2016-07-01|69.0|154.0|-10.94564|-0.07173 +2016-07-01|69.0|155.0|-10.48517|-0.07764 +2016-07-01|69.0|156.0|-10.01506|-0.0838 +2016-07-01|69.0|157.0|-9.5359|-0.09019 +2016-07-01|69.0|158.0|-9.04831|-0.0968 +2016-07-01|69.0|159.0|-8.55285|-0.10364 +2016-07-01|69.0|160.0|-8.05006|-0.11068 +2016-07-01|69.0|161.0|-7.54049|-0.11793 +2016-07-01|69.0|162.0|-7.02464|-0.12536 +2016-07-01|69.0|163.0|-6.50298|-0.13297 +2016-07-01|69.0|164.0|-5.976|-0.14075 +2016-07-01|69.0|165.0|-5.44415|-0.14869 +2016-07-01|69.0|166.0|-4.90785|-0.15678 +2016-07-01|69.0|167.0|-4.36754|-0.165 +2016-07-01|69.0|168.0|-3.82361|-0.17335 +2016-07-01|69.0|169.0|-3.27645|-0.18182 +2016-07-01|69.0|170.0|-2.72645|-0.19039 +2016-07-01|69.0|171.0|-2.17396|-0.19906 +2016-07-01|69.0|172.0|-1.61934|-0.20782 +2016-07-01|69.0|173.0|-1.06293|-0.21664 +2016-07-01|69.0|174.0|-0.50507|-0.22553 +2016-07-01|69.0|175.0|0.05393|-0.23448 +2016-07-01|69.0|176.0|0.61374|-0.24346 +2016-07-01|69.0|177.0|1.17407|-0.25248 +2016-07-01|69.0|178.0|1.7346|-0.26152 +2016-07-01|69.0|179.0|2.29504|-0.27057 +2016-07-01|69.0|-1.0|-3.52017|0.25789 +2016-07-01|69.0|-2.0|-4.13148|0.26012 +2016-07-01|69.0|-3.0|-4.74379|0.2624 +2016-07-01|69.0|-4.0|-5.35697|0.26473 +2016-07-01|69.0|-5.0|-5.97091|0.26711 +2016-07-01|69.0|-6.0|-6.58549|0.26954 +2016-07-01|69.0|-7.0|-7.20056|0.27202 +2016-07-01|69.0|-8.0|-7.81599|0.27456 +2016-07-01|69.0|-9.0|-8.43166|0.27714 +2016-07-01|69.0|-10.0|-9.0474|0.27978 +2016-07-01|69.0|-11.0|-9.66306|0.28248 +2016-07-01|69.0|-12.0|-10.2785|0.28523 +2016-07-01|69.0|-13.0|-10.89354|0.28804 +2016-07-01|69.0|-14.0|-11.50801|0.2909 +2016-07-01|69.0|-15.0|-12.12175|0.29382 +2016-07-01|69.0|-16.0|-12.73457|0.2968 +2016-07-01|69.0|-17.0|-13.34628|0.29983 +2016-07-01|69.0|-18.0|-13.95668|0.30293 +2016-07-01|69.0|-19.0|-14.56557|0.30608 +2016-07-01|69.0|-20.0|-15.17274|0.3093 +2016-07-01|69.0|-21.0|-15.77798|0.31258 +2016-07-01|69.0|-22.0|-16.38106|0.31592 +2016-07-01|69.0|-23.0|-16.98174|0.31933 +2016-07-01|69.0|-24.0|-17.57979|0.3228 +2016-07-01|69.0|-25.0|-18.17495|0.32633 +2016-07-01|69.0|-26.0|-18.76696|0.32993 +2016-07-01|69.0|-27.0|-19.35555|0.3336 +2016-07-01|69.0|-28.0|-19.94044|0.33734 +2016-07-01|69.0|-29.0|-20.52133|0.34115 +2016-07-01|69.0|-30.0|-21.09793|0.34503 +2016-07-01|69.0|-31.0|-21.66991|0.34898 +2016-07-01|69.0|-32.0|-22.23695|0.353 +2016-07-01|69.0|-33.0|-22.7987|0.35711 +2016-07-01|69.0|-34.0|-23.35479|0.36128 +2016-07-01|69.0|-35.0|-23.90486|0.36554 +2016-07-01|69.0|-36.0|-24.44851|0.36988 +2016-07-01|69.0|-37.0|-24.98532|0.3743 +2016-07-01|69.0|-38.0|-25.51486|0.3788 +2016-07-01|69.0|-39.0|-26.03669|0.38339 +2016-07-01|69.0|-40.0|-26.55032|0.38807 +2016-07-01|69.0|-41.0|-27.05526|0.39284 +2016-07-01|69.0|-42.0|-27.55097|0.39769 +2016-07-01|69.0|-43.0|-28.0369|0.40265 +2016-07-01|69.0|-44.0|-28.51248|0.40769 +2016-07-01|69.0|-45.0|-28.97709|0.41284 +2016-07-01|69.0|-46.0|-29.43007|0.41808 +2016-07-01|69.0|-47.0|-29.87075|0.42342 +2016-07-01|69.0|-48.0|-30.2984|0.42886 +2016-07-01|69.0|-49.0|-30.71227|0.43441 +2016-07-01|69.0|-50.0|-31.11154|0.44006 +2016-07-01|69.0|-51.0|-31.49537|0.44581 +2016-07-01|69.0|-52.0|-31.86285|0.45166 +2016-07-01|69.0|-53.0|-32.21303|0.45761 +2016-07-01|69.0|-54.0|-32.5449|0.46367 +2016-07-01|69.0|-55.0|-32.8574|0.46981 +2016-07-01|69.0|-56.0|-33.14938|0.47606 +2016-07-01|69.0|-57.0|-33.41967|0.48239 +2016-07-01|69.0|-58.0|-33.66698|0.4888 +2016-07-01|69.0|-59.0|-33.88998|0.49528 +2016-07-01|69.0|-60.0|-34.08724|0.50182 +2016-07-01|69.0|-61.0|-34.25726|0.50841 +2016-07-01|69.0|-62.0|-34.39845|0.51503 +2016-07-01|69.0|-63.0|-34.50913|0.52166 +2016-07-01|69.0|-64.0|-34.58752|0.52827 +2016-07-01|69.0|-65.0|-34.63174|0.53485 +2016-07-01|69.0|-66.0|-34.63982|0.54135 +2016-07-01|69.0|-67.0|-34.60969|0.54773 +2016-07-01|69.0|-68.0|-34.53915|0.55394 +2016-07-01|69.0|-69.0|-34.42591|0.55994 +2016-07-01|69.0|-70.0|-34.2676|0.56566 +2016-07-01|69.0|-71.0|-34.06172|0.57102 +2016-07-01|69.0|-72.0|-33.8057|0.57593 +2016-07-01|69.0|-73.0|-33.49687|0.58031 +2016-07-01|69.0|-74.0|-33.13251|0.58404 +2016-07-01|69.0|-75.0|-32.70985|0.58699 +2016-07-01|69.0|-76.0|-32.22611|0.58902 +2016-07-01|69.0|-77.0|-31.67851|0.58997 +2016-07-01|69.0|-78.0|-31.06431|0.58968 +2016-07-01|69.0|-79.0|-30.38091|0.58794 +2016-07-01|69.0|-80.0|-29.62584|0.58455 +2016-07-01|69.0|-81.0|-28.79687|0.5793 +2016-07-01|69.0|-82.0|-27.89211|0.57194 +2016-07-01|69.0|-83.0|-26.91004|0.56224 +2016-07-01|69.0|-84.0|-25.84967|0.54996 +2016-07-01|69.0|-85.0|-24.71063|0.53487 +2016-07-01|69.0|-86.0|-23.49327|0.51675 +2016-07-01|69.0|-87.0|-22.19879|0.49541 +2016-07-01|69.0|-88.0|-20.82934|0.4707 +2016-07-01|69.0|-89.0|-19.3881|0.44254 +2016-07-01|69.0|-90.0|-17.87939|0.41088 +2016-07-01|69.0|-91.0|-16.30865|0.37577 +2016-07-01|69.0|-92.0|-14.68249|0.33734 +2016-07-01|69.0|-93.0|-13.00862|0.29583 +2016-07-01|69.0|-94.0|-11.29574|0.25155 +2016-07-01|69.0|-95.0|-9.55343|0.2049 +2016-07-01|69.0|-96.0|-7.79192|0.15636 +2016-07-01|69.0|-97.0|-6.02187|0.10648 +2016-07-01|69.0|-98.0|-4.25412|0.05584 +2016-07-01|69.0|-99.0|-2.49939|0.00502 +2016-07-01|69.0|-100.0|-0.76809|-0.04537 +2016-07-01|69.0|-101.0|0.93003|-0.09479 +2016-07-01|69.0|-102.0|2.58597|-0.14273 +2016-07-01|69.0|-103.0|4.19173|-0.18877 +2016-07-01|69.0|-104.0|5.74037|-0.23253 +2016-07-01|69.0|-105.0|7.22608|-0.27375 +2016-07-01|69.0|-106.0|8.64423|-0.31223 +2016-07-01|69.0|-107.0|9.99127|-0.34785 +2016-07-01|69.0|-108.0|11.26474|-0.38056 +2016-07-01|69.0|-109.0|12.46312|-0.41038 +2016-07-01|69.0|-110.0|13.58578|-0.43737 +2016-07-01|69.0|-111.0|14.63284|-0.46162 +2016-07-01|69.0|-112.0|15.60506|-0.48327 +2016-07-01|69.0|-113.0|16.50373|-0.50247 +2016-07-01|69.0|-114.0|17.33056|-0.51938 +2016-07-01|69.0|-115.0|18.08763|-0.53417 +2016-07-01|69.0|-116.0|18.77723|-0.54701 +2016-07-01|69.0|-117.0|19.40184|-0.55805 +2016-07-01|69.0|-118.0|19.96405|-0.56747 +2016-07-01|69.0|-119.0|20.46654|-0.57542 +2016-07-01|69.0|-120.0|20.91198|-0.58203 +2016-07-01|69.0|-121.0|21.30303|-0.58743 +2016-07-01|69.0|-122.0|21.64232|-0.59175 +2016-07-01|69.0|-123.0|21.93241|-0.5951 +2016-07-01|69.0|-124.0|22.17579|-0.59757 +2016-07-01|69.0|-125.0|22.37485|-0.59926 +2016-07-01|69.0|-126.0|22.5319|-0.60024 +2016-07-01|69.0|-127.0|22.64913|-0.60058 +2016-07-01|69.0|-128.0|22.72863|-0.60035 +2016-07-01|69.0|-129.0|22.77241|-0.59961 +2016-07-01|69.0|-130.0|22.78236|-0.5984 +2016-07-01|69.0|-131.0|22.76026|-0.59677 +2016-07-01|69.0|-132.0|22.70782|-0.59475 +2016-07-01|69.0|-133.0|22.62662|-0.59239 +2016-07-01|69.0|-134.0|22.5182|-0.5897 +2016-07-01|69.0|-135.0|22.38396|-0.58672 +2016-07-01|69.0|-136.0|22.22526|-0.58346 +2016-07-01|69.0|-137.0|22.04337|-0.57995 +2016-07-01|69.0|-138.0|21.83949|-0.5762 +2016-07-01|69.0|-139.0|21.61474|-0.57223 +2016-07-01|69.0|-140.0|21.37019|-0.56804 +2016-07-01|69.0|-141.0|21.10685|-0.56365 +2016-07-01|69.0|-142.0|20.82567|-0.55907 +2016-07-01|69.0|-143.0|20.52754|-0.5543 +2016-07-01|69.0|-144.0|20.21331|-0.54936 +2016-07-01|69.0|-145.0|19.88379|-0.54424 +2016-07-01|69.0|-146.0|19.53973|-0.53895 +2016-07-01|69.0|-147.0|19.18186|-0.5335 +2016-07-01|69.0|-148.0|18.81086|-0.52788 +2016-07-01|69.0|-149.0|18.42737|-0.5221 +2016-07-01|69.0|-150.0|18.03202|-0.51617 +2016-07-01|69.0|-151.0|17.62538|-0.51009 +2016-07-01|69.0|-152.0|17.20803|-0.50385 +2016-07-01|69.0|-153.0|16.78048|-0.49747 +2016-07-01|69.0|-154.0|16.34325|-0.49093 +2016-07-01|69.0|-155.0|15.89682|-0.48425 +2016-07-01|69.0|-156.0|15.44165|-0.47743 +2016-07-01|69.0|-157.0|14.9782|-0.47046 +2016-07-01|69.0|-158.0|14.50688|-0.46336 +2016-07-01|69.0|-159.0|14.0281|-0.45612 +2016-07-01|69.0|-160.0|13.54226|-0.44874 +2016-07-01|69.0|-161.0|13.04975|-0.44123 +2016-07-01|69.0|-162.0|12.55091|-0.43359 +2016-07-01|69.0|-163.0|12.04612|-0.42583 +2016-07-01|69.0|-164.0|11.5357|-0.41795 +2016-07-01|69.0|-165.0|11.02001|-0.40995 +2016-07-01|69.0|-166.0|10.49934|-0.40183 +2016-07-01|69.0|-167.0|9.97403|-0.39361 +2016-07-01|69.0|-168.0|9.44438|-0.38529 +2016-07-01|69.0|-169.0|8.91069|-0.37686 +2016-07-01|69.0|-170.0|8.37325|-0.36835 +2016-07-01|69.0|-171.0|7.83235|-0.35975 +2016-07-01|69.0|-172.0|7.28829|-0.35106 +2016-07-01|69.0|-173.0|6.74134|-0.34231 +2016-07-01|69.0|-174.0|6.19177|-0.33349 +2016-07-01|69.0|-175.0|5.63988|-0.32461 +2016-07-01|69.0|-176.0|5.08593|-0.31568 +2016-07-01|69.0|-177.0|4.5302|-0.30671 +2016-07-01|69.0|-178.0|3.97297|-0.2977 +2016-07-01|69.0|-179.0|3.41451|-0.28867 +2016-07-01|70.0|0.0|-2.99985|0.266 +2016-07-01|70.0|1.0|-2.37365|0.2638 +2016-07-01|70.0|2.0|-1.74863|0.26164 +2016-07-01|70.0|3.0|-1.1249|0.25953 +2016-07-01|70.0|4.0|-0.50255|0.25747 +2016-07-01|70.0|5.0|0.1183|0.25545 +2016-07-01|70.0|6.0|0.73756|0.25346 +2016-07-01|70.0|7.0|1.35513|0.25152 +2016-07-01|70.0|8.0|1.9709|0.24961 +2016-07-01|70.0|9.0|2.58478|0.24774 +2016-07-01|70.0|10.0|3.19665|0.24591 +2016-07-01|70.0|11.0|3.80643|0.24411 +2016-07-01|70.0|12.0|4.41399|0.24234 +2016-07-01|70.0|13.0|5.01923|0.2406 +2016-07-01|70.0|14.0|5.62205|0.23889 +2016-07-01|70.0|15.0|6.22232|0.23721 +2016-07-01|70.0|16.0|6.81993|0.23555 +2016-07-01|70.0|17.0|7.41475|0.23391 +2016-07-01|70.0|18.0|8.00666|0.2323 +2016-07-01|70.0|19.0|8.59552|0.2307 +2016-07-01|70.0|20.0|9.18118|0.22912 +2016-07-01|70.0|21.0|9.7635|0.22756 +2016-07-01|70.0|22.0|10.34232|0.22602 +2016-07-01|70.0|23.0|10.91749|0.22448 +2016-07-01|70.0|24.0|11.48882|0.22295 +2016-07-01|70.0|25.0|12.05614|0.22144 +2016-07-01|70.0|26.0|12.61924|0.21992 +2016-07-01|70.0|27.0|13.17794|0.21842 +2016-07-01|70.0|28.0|13.73202|0.21691 +2016-07-01|70.0|29.0|14.28126|0.2154 +2016-07-01|70.0|30.0|14.82541|0.21389 +2016-07-01|70.0|31.0|15.36423|0.21238 +2016-07-01|70.0|32.0|15.89746|0.21086 +2016-07-01|70.0|33.0|16.42483|0.20933 +2016-07-01|70.0|34.0|16.94605|0.20779 +2016-07-01|70.0|35.0|17.46081|0.20623 +2016-07-01|70.0|36.0|17.9688|0.20466 +2016-07-01|70.0|37.0|18.46968|0.20307 +2016-07-01|70.0|38.0|18.96311|0.20146 +2016-07-01|70.0|39.0|19.44872|0.19983 +2016-07-01|70.0|40.0|19.92613|0.19817 +2016-07-01|70.0|41.0|20.39493|0.19648 +2016-07-01|70.0|42.0|20.85472|0.19476 +2016-07-01|70.0|43.0|21.30504|0.193 +2016-07-01|70.0|44.0|21.74543|0.1912 +2016-07-01|70.0|45.0|22.17543|0.18937 +2016-07-01|70.0|46.0|22.59452|0.18749 +2016-07-01|70.0|47.0|23.00219|0.18556 +2016-07-01|70.0|48.0|23.39788|0.18357 +2016-07-01|70.0|49.0|23.78102|0.18154 +2016-07-01|70.0|50.0|24.15101|0.17943 +2016-07-01|70.0|51.0|24.50722|0.17727 +2016-07-01|70.0|52.0|24.849|0.17503 +2016-07-01|70.0|53.0|25.17567|0.17272 +2016-07-01|70.0|54.0|25.4865|0.17033 +2016-07-01|70.0|55.0|25.78075|0.16784 +2016-07-01|70.0|56.0|26.05764|0.16527 +2016-07-01|70.0|57.0|26.31635|0.16259 +2016-07-01|70.0|58.0|26.55603|0.15981 +2016-07-01|70.0|59.0|26.77578|0.15691 +2016-07-01|70.0|60.0|26.97467|0.15389 +2016-07-01|70.0|61.0|27.15173|0.15074 +2016-07-01|70.0|62.0|27.30595|0.14746 +2016-07-01|70.0|63.0|27.43627|0.14402 +2016-07-01|70.0|64.0|27.54158|0.14042 +2016-07-01|70.0|65.0|27.62075|0.13666 +2016-07-01|70.0|66.0|27.67257|0.13272 +2016-07-01|70.0|67.0|27.69581|0.12859 +2016-07-01|70.0|68.0|27.6892|0.12426 +2016-07-01|70.0|69.0|27.65142|0.11973 +2016-07-01|70.0|70.0|27.58109|0.11497 +2016-07-01|70.0|71.0|27.47684|0.10998 +2016-07-01|70.0|72.0|27.33721|0.10475 +2016-07-01|70.0|73.0|27.16077|0.09927 +2016-07-01|70.0|74.0|26.94604|0.09353 +2016-07-01|70.0|75.0|26.69153|0.08752 +2016-07-01|70.0|76.0|26.39576|0.08124 +2016-07-01|70.0|77.0|26.05726|0.07467 +2016-07-01|70.0|78.0|25.67462|0.06782 +2016-07-01|70.0|79.0|25.24643|0.06069 +2016-07-01|70.0|80.0|24.7714|0.05327 +2016-07-01|70.0|81.0|24.24833|0.04557 +2016-07-01|70.0|82.0|23.67613|0.03761 +2016-07-01|70.0|83.0|23.05389|0.0294 +2016-07-01|70.0|84.0|22.38089|0.02096 +2016-07-01|70.0|85.0|21.65666|0.01232 +2016-07-01|70.0|86.0|20.88098|0.0035 +2016-07-01|70.0|87.0|20.05398|-0.00544 +2016-07-01|70.0|88.0|19.17614|-0.01447 +2016-07-01|70.0|89.0|18.24833|-0.02352 +2016-07-01|70.0|90.0|17.27189|-0.03253 +2016-07-01|70.0|91.0|16.24862|-0.04144 +2016-07-01|70.0|92.0|15.18081|-0.05017 +2016-07-01|70.0|93.0|14.07131|-0.05865 +2016-07-01|70.0|94.0|12.92346|-0.06678 +2016-07-01|70.0|95.0|11.74113|-0.07448 +2016-07-01|70.0|96.0|10.52872|-0.08168 +2016-07-01|70.0|97.0|9.29104|-0.0883 +2016-07-01|70.0|98.0|8.03334|-0.09426 +2016-07-01|70.0|99.0|6.76121|-0.0995 +2016-07-01|70.0|100.0|5.48048|-0.10397 +2016-07-01|70.0|101.0|4.19716|-0.10763 +2016-07-01|70.0|102.0|2.91732|-0.11045 +2016-07-01|70.0|103.0|1.64701|-0.11243 +2016-07-01|70.0|104.0|0.39212|-0.11357 +2016-07-01|70.0|105.0|-0.84168|-0.11389 +2016-07-01|70.0|106.0|-2.04901|-0.11343 +2016-07-01|70.0|107.0|-3.22493|-0.11222 +2016-07-01|70.0|108.0|-4.3649|-0.11034 +2016-07-01|70.0|109.0|-5.4649|-0.10784 +2016-07-01|70.0|110.0|-6.52142|-0.10479 +2016-07-01|70.0|111.0|-7.53148|-0.10128 +2016-07-01|70.0|112.0|-8.49265|-0.09737 +2016-07-01|70.0|113.0|-9.40298|-0.09315 +2016-07-01|70.0|114.0|-10.26105|-0.08869 +2016-07-01|70.0|115.0|-11.06589|-0.08405 +2016-07-01|70.0|116.0|-11.81693|-0.07932 +2016-07-01|70.0|117.0|-12.51402|-0.07455 +2016-07-01|70.0|118.0|-13.15732|-0.0698 +2016-07-01|70.0|119.0|-13.74731|-0.06512 +2016-07-01|70.0|120.0|-14.28471|-0.06056 +2016-07-01|70.0|121.0|-14.77047|-0.05616 +2016-07-01|70.0|122.0|-15.2057|-0.05196 +2016-07-01|70.0|123.0|-15.59167|-0.04798 +2016-07-01|70.0|124.0|-15.92977|-0.04426 +2016-07-01|70.0|125.0|-16.22145|-0.04082 +2016-07-01|70.0|126.0|-16.46825|-0.03766 +2016-07-01|70.0|127.0|-16.67174|-0.03482 +2016-07-01|70.0|128.0|-16.83351|-0.0323 +2016-07-01|70.0|129.0|-16.95517|-0.03011 +2016-07-01|70.0|130.0|-17.03832|-0.02827 +2016-07-01|70.0|131.0|-17.08455|-0.02676 +2016-07-01|70.0|132.0|-17.09542|-0.02561 +2016-07-01|70.0|133.0|-17.07246|-0.02481 +2016-07-01|70.0|134.0|-17.01719|-0.02436 +2016-07-01|70.0|135.0|-16.93105|-0.02426 +2016-07-01|70.0|136.0|-16.81548|-0.02452 +2016-07-01|70.0|137.0|-16.67185|-0.02512 +2016-07-01|70.0|138.0|-16.5015|-0.02607 +2016-07-01|70.0|139.0|-16.3057|-0.02737 +2016-07-01|70.0|140.0|-16.08572|-0.029 +2016-07-01|70.0|141.0|-15.84273|-0.03098 +2016-07-01|70.0|142.0|-15.5779|-0.03328 +2016-07-01|70.0|143.0|-15.29234|-0.03591 +2016-07-01|70.0|144.0|-14.9871|-0.03887 +2016-07-01|70.0|145.0|-14.66322|-0.04214 +2016-07-01|70.0|146.0|-14.32167|-0.04572 +2016-07-01|70.0|147.0|-13.9634|-0.04961 +2016-07-01|70.0|148.0|-13.58932|-0.0538 +2016-07-01|70.0|149.0|-13.20028|-0.05827 +2016-07-01|70.0|150.0|-12.79713|-0.06304 +2016-07-01|70.0|151.0|-12.38067|-0.06808 +2016-07-01|70.0|152.0|-11.95165|-0.07339 +2016-07-01|70.0|153.0|-11.51082|-0.07897 +2016-07-01|70.0|154.0|-11.05888|-0.0848 +2016-07-01|70.0|155.0|-10.59651|-0.09089 +2016-07-01|70.0|156.0|-10.12436|-0.09721 +2016-07-01|70.0|157.0|-9.64304|-0.10376 +2016-07-01|70.0|158.0|-9.15316|-0.11053 +2016-07-01|70.0|159.0|-8.6553|-0.11752 +2016-07-01|70.0|160.0|-8.14999|-0.12472 +2016-07-01|70.0|161.0|-7.63778|-0.13211 +2016-07-01|70.0|162.0|-7.11917|-0.13968 +2016-07-01|70.0|163.0|-6.59465|-0.14744 +2016-07-01|70.0|164.0|-6.06469|-0.15536 +2016-07-01|70.0|165.0|-5.52974|-0.16344 +2016-07-01|70.0|166.0|-4.99024|-0.17167 +2016-07-01|70.0|167.0|-4.44661|-0.18004 +2016-07-01|70.0|168.0|-3.89925|-0.18853 +2016-07-01|70.0|169.0|-3.34857|-0.19715 +2016-07-01|70.0|170.0|-2.79492|-0.20587 +2016-07-01|70.0|171.0|-2.23868|-0.21469 +2016-07-01|70.0|172.0|-1.68021|-0.2236 +2016-07-01|70.0|173.0|-1.11985|-0.23259 +2016-07-01|70.0|174.0|-0.55792|-0.24165 +2016-07-01|70.0|175.0|0.00523|-0.25077 +2016-07-01|70.0|176.0|0.56931|-0.25994 +2016-07-01|70.0|177.0|1.13399|-0.26915 +2016-07-01|70.0|178.0|1.69898|-0.27839 +2016-07-01|70.0|179.0|2.26397|-0.28765 +2016-07-01|70.0|-1.0|-3.62711|0.26824 +2016-07-01|70.0|-2.0|-4.25533|0.27054 +2016-07-01|70.0|-3.0|-4.8844|0.27288 +2016-07-01|70.0|-4.0|-5.51419|0.27527 +2016-07-01|70.0|-5.0|-6.1446|0.27772 +2016-07-01|70.0|-6.0|-6.77548|0.28022 +2016-07-01|70.0|-7.0|-7.40672|0.28277 +2016-07-01|70.0|-8.0|-8.03819|0.28537 +2016-07-01|70.0|-9.0|-8.66974|0.28803 +2016-07-01|70.0|-10.0|-9.30123|0.29075 +2016-07-01|70.0|-11.0|-9.93252|0.29352 +2016-07-01|70.0|-12.0|-10.56346|0.29635 +2016-07-01|70.0|-13.0|-11.19389|0.29925 +2016-07-01|70.0|-14.0|-11.82365|0.3022 +2016-07-01|70.0|-15.0|-12.45257|0.30521 +2016-07-01|70.0|-16.0|-13.08047|0.30828 +2016-07-01|70.0|-17.0|-13.70718|0.31142 +2016-07-01|70.0|-18.0|-14.33251|0.31462 +2016-07-01|70.0|-19.0|-14.95627|0.31789 +2016-07-01|70.0|-20.0|-15.57826|0.32122 +2016-07-01|70.0|-21.0|-16.19826|0.32462 +2016-07-01|70.0|-22.0|-16.81607|0.32809 +2016-07-01|70.0|-23.0|-17.43147|0.33162 +2016-07-01|70.0|-24.0|-18.04422|0.33523 +2016-07-01|70.0|-25.0|-18.65408|0.33892 +2016-07-01|70.0|-26.0|-19.26081|0.34267 +2016-07-01|70.0|-27.0|-19.86415|0.3465 +2016-07-01|70.0|-28.0|-20.46382|0.35041 +2016-07-01|70.0|-29.0|-21.05956|0.3544 +2016-07-01|70.0|-30.0|-21.65107|0.35847 +2016-07-01|70.0|-31.0|-22.23804|0.36262 +2016-07-01|70.0|-32.0|-22.82017|0.36686 +2016-07-01|70.0|-33.0|-23.39711|0.37118 +2016-07-01|70.0|-34.0|-23.96853|0.37559 +2016-07-01|70.0|-35.0|-24.53407|0.38009 +2016-07-01|70.0|-36.0|-25.09335|0.38468 +2016-07-01|70.0|-37.0|-25.64598|0.38937 +2016-07-01|70.0|-38.0|-26.19153|0.39416 +2016-07-01|70.0|-39.0|-26.72958|0.39905 +2016-07-01|70.0|-40.0|-27.25967|0.40404 +2016-07-01|70.0|-41.0|-27.78132|0.40914 +2016-07-01|70.0|-42.0|-28.29403|0.41435 +2016-07-01|70.0|-43.0|-28.79725|0.41966 +2016-07-01|70.0|-44.0|-29.29045|0.42509 +2016-07-01|70.0|-45.0|-29.77301|0.43064 +2016-07-01|70.0|-46.0|-30.24432|0.43631 +2016-07-01|70.0|-47.0|-30.70373|0.4421 +2016-07-01|70.0|-48.0|-31.15054|0.44801 +2016-07-01|70.0|-49.0|-31.584|0.45405 +2016-07-01|70.0|-50.0|-32.00335|0.46021 +2016-07-01|70.0|-51.0|-32.40777|0.46651 +2016-07-01|70.0|-52.0|-32.79638|0.47294 +2016-07-01|70.0|-53.0|-33.16825|0.47949 +2016-07-01|70.0|-54.0|-33.52242|0.48618 +2016-07-01|70.0|-55.0|-33.85784|0.493 +2016-07-01|70.0|-56.0|-34.17342|0.49995 +2016-07-01|70.0|-57.0|-34.46799|0.50701 +2016-07-01|70.0|-58.0|-34.74031|0.5142 +2016-07-01|70.0|-59.0|-34.98907|0.5215 +2016-07-01|70.0|-60.0|-35.21288|0.52891 +2016-07-01|70.0|-61.0|-35.41025|0.53641 +2016-07-01|70.0|-62.0|-35.57963|0.54398 +2016-07-01|70.0|-63.0|-35.71934|0.55162 +2016-07-01|70.0|-64.0|-35.82762|0.55929 +2016-07-01|70.0|-65.0|-35.90262|0.56698 +2016-07-01|70.0|-66.0|-35.94234|0.57466 +2016-07-01|70.0|-67.0|-35.94472|0.58227 +2016-07-01|70.0|-68.0|-35.90753|0.58979 +2016-07-01|70.0|-69.0|-35.82847|0.59715 +2016-07-01|70.0|-70.0|-35.70509|0.6043 +2016-07-01|70.0|-71.0|-35.53483|0.61115 +2016-07-01|70.0|-72.0|-35.31504|0.61764 +2016-07-01|70.0|-73.0|-35.04292|0.62365 +2016-07-01|70.0|-74.0|-34.71562|0.62908 +2016-07-01|70.0|-75.0|-34.33017|0.63379 +2016-07-01|70.0|-76.0|-33.88357|0.63763 +2016-07-01|70.0|-77.0|-33.37276|0.64045 +2016-07-01|70.0|-78.0|-32.7947|0.64204 +2016-07-01|70.0|-79.0|-32.1464|0.64221 +2016-07-01|70.0|-80.0|-31.42496|0.64072 +2016-07-01|70.0|-81.0|-30.62766|0.63732 +2016-07-01|70.0|-82.0|-29.75204|0.63175 +2016-07-01|70.0|-83.0|-28.79596|0.62372 +2016-07-01|70.0|-84.0|-27.75776|0.61295 +2016-07-01|70.0|-85.0|-26.63633|0.59913 +2016-07-01|70.0|-86.0|-25.43127|0.582 +2016-07-01|70.0|-87.0|-24.14301|0.56128 +2016-07-01|70.0|-88.0|-22.77292|0.53676 +2016-07-01|70.0|-89.0|-21.32349|0.50825 +2016-07-01|70.0|-90.0|-19.79838|0.47565 +2016-07-01|70.0|-91.0|-18.20251|0.43894 +2016-07-01|70.0|-92.0|-16.54213|0.39821 +2016-07-01|70.0|-93.0|-14.82478|0.35362 +2016-07-01|70.0|-94.0|-13.05922|0.30551 +2016-07-01|70.0|-95.0|-11.25532|0.25428 +2016-07-01|70.0|-96.0|-9.42386|0.20046 +2016-07-01|70.0|-97.0|-7.57627|0.14468 +2016-07-01|70.0|-98.0|-5.7244|0.08761 +2016-07-01|70.0|-99.0|-3.88014|0.02998 +2016-07-01|70.0|-100.0|-2.05516|-0.0275 +2016-07-01|70.0|-101.0|-0.2606|-0.08411 +2016-07-01|70.0|-102.0|1.49323|-0.13922 +2016-07-01|70.0|-103.0|3.197|-0.19225 +2016-07-01|70.0|-104.0|4.84257|-0.24273 +2016-07-01|70.0|-105.0|6.42307|-0.29029 +2016-07-01|70.0|-106.0|7.93292|-0.33466 +2016-07-01|70.0|-107.0|9.36784|-0.37566 +2016-07-01|70.0|-108.0|10.72478|-0.41322 +2016-07-01|70.0|-109.0|12.0018|-0.44734 +2016-07-01|70.0|-110.0|13.198|-0.47807 +2016-07-01|70.0|-111.0|14.31335|-0.50555 +2016-07-01|70.0|-112.0|15.34858|-0.52992 +2016-07-01|70.0|-113.0|16.30504|-0.55137 +2016-07-01|70.0|-114.0|17.1846|-0.57011 +2016-07-01|70.0|-115.0|17.98949|-0.58633 +2016-07-01|70.0|-116.0|18.72224|-0.60024 +2016-07-01|70.0|-117.0|19.38561|-0.61206 +2016-07-01|70.0|-118.0|19.98244|-0.62197 +2016-07-01|70.0|-119.0|20.51568|-0.63016 +2016-07-01|70.0|-120.0|20.98829|-0.63682 +2016-07-01|70.0|-121.0|21.40321|-0.64208 +2016-07-01|70.0|-122.0|21.76332|-0.64611 +2016-07-01|70.0|-123.0|22.07145|-0.64903 +2016-07-01|70.0|-124.0|22.3303|-0.65097 +2016-07-01|70.0|-125.0|22.54252|-0.65203 +2016-07-01|70.0|-126.0|22.71061|-0.6523 +2016-07-01|70.0|-127.0|22.83696|-0.65188 +2016-07-01|70.0|-128.0|22.92385|-0.65084 +2016-07-01|70.0|-129.0|22.97344|-0.64924 +2016-07-01|70.0|-130.0|22.98777|-0.64714 +2016-07-01|70.0|-131.0|22.96879|-0.6446 +2016-07-01|70.0|-132.0|22.91831|-0.64166 +2016-07-01|70.0|-133.0|22.83806|-0.63836 +2016-07-01|70.0|-134.0|22.72964|-0.63473 +2016-07-01|70.0|-135.0|22.5946|-0.6308 +2016-07-01|70.0|-136.0|22.43435|-0.6266 +2016-07-01|70.0|-137.0|22.25026|-0.62214 +2016-07-01|70.0|-138.0|22.0436|-0.61746 +2016-07-01|70.0|-139.0|21.81555|-0.61256 +2016-07-01|70.0|-140.0|21.56726|-0.60746 +2016-07-01|70.0|-141.0|21.29977|-0.60217 +2016-07-01|70.0|-142.0|21.01409|-0.5967 +2016-07-01|70.0|-143.0|20.71117|-0.59107 +2016-07-01|70.0|-144.0|20.39188|-0.58526 +2016-07-01|70.0|-145.0|20.05707|-0.5793 +2016-07-01|70.0|-146.0|19.70754|-0.57319 +2016-07-01|70.0|-147.0|19.34403|-0.56693 +2016-07-01|70.0|-148.0|18.96725|-0.56053 +2016-07-01|70.0|-149.0|18.57787|-0.55399 +2016-07-01|70.0|-150.0|18.17654|-0.54731 +2016-07-01|70.0|-151.0|17.76385|-0.54049 +2016-07-01|70.0|-152.0|17.34039|-0.53355 +2016-07-01|70.0|-153.0|16.9067|-0.52647 +2016-07-01|70.0|-154.0|16.4633|-0.51926 +2016-07-01|70.0|-155.0|16.01068|-0.51193 +2016-07-01|70.0|-156.0|15.54933|-0.50448 +2016-07-01|70.0|-157.0|15.0797|-0.4969 +2016-07-01|70.0|-158.0|14.60222|-0.4892 +2016-07-01|70.0|-159.0|14.1173|-0.48138 +2016-07-01|70.0|-160.0|13.62536|-0.47345 +2016-07-01|70.0|-161.0|13.12677|-0.46541 +2016-07-01|70.0|-162.0|12.62191|-0.45726 +2016-07-01|70.0|-163.0|12.11114|-0.449 +2016-07-01|70.0|-164.0|11.5948|-0.44063 +2016-07-01|70.0|-165.0|11.07322|-0.43217 +2016-07-01|70.0|-166.0|10.54674|-0.42362 +2016-07-01|70.0|-167.0|10.01568|-0.41497 +2016-07-01|70.0|-168.0|9.48034|-0.40624 +2016-07-01|70.0|-169.0|8.94102|-0.39743 +2016-07-01|70.0|-170.0|8.39803|-0.38854 +2016-07-01|70.0|-171.0|7.85166|-0.37958 +2016-07-01|70.0|-172.0|7.30219|-0.37056 +2016-07-01|70.0|-173.0|6.7499|-0.36148 +2016-07-01|70.0|-174.0|6.19509|-0.35235 +2016-07-01|70.0|-175.0|5.63803|-0.34318 +2016-07-01|70.0|-176.0|5.07899|-0.33397 +2016-07-01|70.0|-177.0|4.51826|-0.32473 +2016-07-01|70.0|-178.0|3.95611|-0.31547 +2016-07-01|70.0|-179.0|3.39282|-0.3062 +2016-07-01|71.0|0.0|-3.07795|0.27703 +2016-07-01|71.0|1.0|-2.43474|0.27477 +2016-07-01|71.0|2.0|-1.79259|0.27256 +2016-07-01|71.0|3.0|-1.15159|0.27039 +2016-07-01|71.0|4.0|-0.51185|0.26826 +2016-07-01|71.0|5.0|0.12651|0.26618 +2016-07-01|71.0|6.0|0.7634|0.26414 +2016-07-01|71.0|7.0|1.39871|0.26215 +2016-07-01|71.0|8.0|2.03233|0.26019 +2016-07-01|71.0|9.0|2.66416|0.25826 +2016-07-01|71.0|10.0|3.29409|0.25638 +2016-07-01|71.0|11.0|3.92201|0.25452 +2016-07-01|71.0|12.0|4.54781|0.2527 +2016-07-01|71.0|13.0|5.17138|0.25092 +2016-07-01|71.0|14.0|5.7926|0.24916 +2016-07-01|71.0|15.0|6.41134|0.24743 +2016-07-01|71.0|16.0|7.0275|0.24572 +2016-07-01|71.0|17.0|7.64093|0.24404 +2016-07-01|71.0|18.0|8.25151|0.24239 +2016-07-01|71.0|19.0|8.8591|0.24075 +2016-07-01|71.0|20.0|9.46355|0.23913 +2016-07-01|71.0|21.0|10.0647|0.23754 +2016-07-01|71.0|22.0|10.66241|0.23595 +2016-07-01|71.0|23.0|11.2565|0.23439 +2016-07-01|71.0|24.0|11.84681|0.23283 +2016-07-01|71.0|25.0|12.43314|0.23129 +2016-07-01|71.0|26.0|13.01532|0.22975 +2016-07-01|71.0|27.0|13.59313|0.22822 +2016-07-01|71.0|28.0|14.16636|0.22669 +2016-07-01|71.0|29.0|14.7348|0.22517 +2016-07-01|71.0|30.0|15.29821|0.22365 +2016-07-01|71.0|31.0|15.85635|0.22213 +2016-07-01|71.0|32.0|16.40896|0.2206 +2016-07-01|71.0|33.0|16.95578|0.21907 +2016-07-01|71.0|34.0|17.49651|0.21753 +2016-07-01|71.0|35.0|18.03087|0.21598 +2016-07-01|71.0|36.0|18.55854|0.21442 +2016-07-01|71.0|37.0|19.07921|0.21285 +2016-07-01|71.0|38.0|19.59252|0.21126 +2016-07-01|71.0|39.0|20.09813|0.20965 +2016-07-01|71.0|40.0|20.59566|0.20801 +2016-07-01|71.0|41.0|21.08471|0.20636 +2016-07-01|71.0|42.0|21.56488|0.20467 +2016-07-01|71.0|43.0|22.03575|0.20296 +2016-07-01|71.0|44.0|22.49685|0.20121 +2016-07-01|71.0|45.0|22.94773|0.19942 +2016-07-01|71.0|46.0|23.38788|0.1976 +2016-07-01|71.0|47.0|23.8168|0.19573 +2016-07-01|71.0|48.0|24.23395|0.19381 +2016-07-01|71.0|49.0|24.63875|0.19184 +2016-07-01|71.0|50.0|25.03063|0.18982 +2016-07-01|71.0|51.0|25.40896|0.18774 +2016-07-01|71.0|52.0|25.77309|0.18559 +2016-07-01|71.0|53.0|26.12235|0.18336 +2016-07-01|71.0|54.0|26.45602|0.18107 +2016-07-01|71.0|55.0|26.77335|0.17869 +2016-07-01|71.0|56.0|27.07358|0.17622 +2016-07-01|71.0|57.0|27.35587|0.17366 +2016-07-01|71.0|58.0|27.61937|0.17099 +2016-07-01|71.0|59.0|27.86319|0.16822 +2016-07-01|71.0|60.0|28.08639|0.16532 +2016-07-01|71.0|61.0|28.28797|0.16231 +2016-07-01|71.0|62.0|28.46691|0.15915 +2016-07-01|71.0|63.0|28.62214|0.15585 +2016-07-01|71.0|64.0|28.75252|0.1524 +2016-07-01|71.0|65.0|28.85687|0.14879 +2016-07-01|71.0|66.0|28.93398|0.145 +2016-07-01|71.0|67.0|28.98257|0.14102 +2016-07-01|71.0|68.0|29.00129|0.13684 +2016-07-01|71.0|69.0|28.98878|0.13246 +2016-07-01|71.0|70.0|28.9436|0.12786 +2016-07-01|71.0|71.0|28.86428|0.12302 +2016-07-01|71.0|72.0|28.74929|0.11793 +2016-07-01|71.0|73.0|28.59708|0.11259 +2016-07-01|71.0|74.0|28.40607|0.10698 +2016-07-01|71.0|75.0|28.17463|0.10109 +2016-07-01|71.0|76.0|27.90113|0.09491 +2016-07-01|71.0|77.0|27.58396|0.08843 +2016-07-01|71.0|78.0|27.2215|0.08165 +2016-07-01|71.0|79.0|26.81216|0.07456 +2016-07-01|71.0|80.0|26.35444|0.06716 +2016-07-01|71.0|81.0|25.84688|0.05945 +2016-07-01|71.0|82.0|25.28817|0.05144 +2016-07-01|71.0|83.0|24.67713|0.04313 +2016-07-01|71.0|84.0|24.01276|0.03455 +2016-07-01|71.0|85.0|23.29429|0.02571 +2016-07-01|71.0|86.0|22.52122|0.01664 +2016-07-01|71.0|87.0|21.69339|0.00739 +2016-07-01|71.0|88.0|20.81099|-0.00201 +2016-07-01|71.0|89.0|19.87463|-0.0115 +2016-07-01|71.0|90.0|18.88539|-0.02102 +2016-07-01|71.0|91.0|17.84486|-0.03051 +2016-07-01|71.0|92.0|16.75519|-0.03988 +2016-07-01|71.0|93.0|15.61908|-0.04906 +2016-07-01|71.0|94.0|14.43985|-0.05795 +2016-07-01|71.0|95.0|13.2214|-0.06648 +2016-07-01|71.0|96.0|11.9682|-0.07453 +2016-07-01|71.0|97.0|10.6853|-0.08204 +2016-07-01|71.0|98.0|9.3782|-0.08892 +2016-07-01|71.0|99.0|8.05284|-0.09508 +2016-07-01|71.0|100.0|6.71551|-0.10047 +2016-07-01|71.0|101.0|5.37269|-0.10504 +2016-07-01|71.0|102.0|4.03103|-0.10875 +2016-07-01|71.0|103.0|2.69715|-0.11158 +2016-07-01|71.0|104.0|1.37755|-0.11354 +2016-07-01|71.0|105.0|0.07851|-0.11462 +2016-07-01|71.0|106.0|-1.194|-0.11487 +2016-07-01|71.0|107.0|-2.43447|-0.11433 +2016-07-01|71.0|108.0|-3.63786|-0.11306 +2016-07-01|71.0|109.0|-4.79967|-0.11112 +2016-07-01|71.0|110.0|-5.91601|-0.10859 +2016-07-01|71.0|111.0|-6.98356|-0.10555 +2016-07-01|71.0|112.0|-7.99961|-0.10207 +2016-07-01|71.0|113.0|-8.96204|-0.09825 +2016-07-01|71.0|114.0|-9.86928|-0.09415 +2016-07-01|71.0|115.0|-10.72026|-0.08987 +2016-07-01|71.0|116.0|-11.51442|-0.08546 +2016-07-01|71.0|117.0|-12.2516|-0.081 +2016-07-01|71.0|118.0|-12.93203|-0.07655 +2016-07-01|71.0|119.0|-13.55626|-0.07216 +2016-07-01|71.0|120.0|-14.12513|-0.06789 +2016-07-01|71.0|121.0|-14.6397|-0.06377 +2016-07-01|71.0|122.0|-15.10123|-0.05984 +2016-07-01|71.0|123.0|-15.51114|-0.05615 +2016-07-01|71.0|124.0|-15.87096|-0.0527 +2016-07-01|71.0|125.0|-16.18229|-0.04953 +2016-07-01|71.0|126.0|-16.44683|-0.04666 +2016-07-01|71.0|127.0|-16.66629|-0.0441 +2016-07-01|71.0|128.0|-16.8424|-0.04186 +2016-07-01|71.0|129.0|-16.9769|-0.03996 +2016-07-01|71.0|130.0|-17.07152|-0.03839 +2016-07-01|71.0|131.0|-17.12797|-0.03717 +2016-07-01|71.0|132.0|-17.14792|-0.0363 +2016-07-01|71.0|133.0|-17.13301|-0.03578 +2016-07-01|71.0|134.0|-17.08483|-0.03561 +2016-07-01|71.0|135.0|-17.00495|-0.03578 +2016-07-01|71.0|136.0|-16.89485|-0.03631 +2016-07-01|71.0|137.0|-16.75599|-0.03718 +2016-07-01|71.0|138.0|-16.58978|-0.03839 +2016-07-01|71.0|139.0|-16.39755|-0.03995 +2016-07-01|71.0|140.0|-16.1806|-0.04184 +2016-07-01|71.0|141.0|-15.94019|-0.04406 +2016-07-01|71.0|142.0|-15.6775|-0.04661 +2016-07-01|71.0|143.0|-15.39368|-0.04947 +2016-07-01|71.0|144.0|-15.08984|-0.05266 +2016-07-01|71.0|145.0|-14.76702|-0.05615 +2016-07-01|71.0|146.0|-14.42624|-0.05995 +2016-07-01|71.0|147.0|-14.06846|-0.06405 +2016-07-01|71.0|148.0|-13.69462|-0.06844 +2016-07-01|71.0|149.0|-13.30558|-0.07312 +2016-07-01|71.0|150.0|-12.90221|-0.07807 +2016-07-01|71.0|151.0|-12.48532|-0.0833 +2016-07-01|71.0|152.0|-12.05569|-0.08879 +2016-07-01|71.0|153.0|-11.61405|-0.09453 +2016-07-01|71.0|154.0|-11.16114|-0.10053 +2016-07-01|71.0|155.0|-10.69762|-0.10677 +2016-07-01|71.0|156.0|-10.22416|-0.11325 +2016-07-01|71.0|157.0|-9.74138|-0.11995 +2016-07-01|71.0|158.0|-9.24989|-0.12687 +2016-07-01|71.0|159.0|-8.75026|-0.134 +2016-07-01|71.0|160.0|-8.24305|-0.14133 +2016-07-01|71.0|161.0|-7.7288|-0.14885 +2016-07-01|71.0|162.0|-7.20801|-0.15656 +2016-07-01|71.0|163.0|-6.68118|-0.16445 +2016-07-01|71.0|164.0|-6.14877|-0.1725 +2016-07-01|71.0|165.0|-5.61124|-0.18071 +2016-07-01|71.0|166.0|-5.06904|-0.18907 +2016-07-01|71.0|167.0|-4.52258|-0.19757 +2016-07-01|71.0|168.0|-3.97227|-0.2062 +2016-07-01|71.0|169.0|-3.4185|-0.21494 +2016-07-01|71.0|170.0|-2.86165|-0.22381 +2016-07-01|71.0|171.0|-2.30209|-0.23277 +2016-07-01|71.0|172.0|-1.74018|-0.24183 +2016-07-01|71.0|173.0|-1.17626|-0.25097 +2016-07-01|71.0|174.0|-0.61066|-0.26019 +2016-07-01|71.0|175.0|-0.04372|-0.26948 +2016-07-01|71.0|176.0|0.52425|-0.27882 +2016-07-01|71.0|177.0|1.09293|-0.28821 +2016-07-01|71.0|178.0|1.66203|-0.29765 +2016-07-01|71.0|179.0|2.23123|-0.30711 +2016-07-01|71.0|-1.0|-3.7221|0.27934 +2016-07-01|71.0|-2.0|-4.36707|0.2817 +2016-07-01|71.0|-3.0|-5.01276|0.28411 +2016-07-01|71.0|-4.0|-5.65905|0.28657 +2016-07-01|71.0|-5.0|-6.30582|0.28908 +2016-07-01|71.0|-6.0|-6.95295|0.29165 +2016-07-01|71.0|-7.0|-7.60031|0.29427 +2016-07-01|71.0|-8.0|-8.24777|0.29695 +2016-07-01|71.0|-9.0|-8.8952|0.29969 +2016-07-01|71.0|-10.0|-9.54247|0.30248 +2016-07-01|71.0|-11.0|-10.18942|0.30534 +2016-07-01|71.0|-12.0|-10.83593|0.30826 +2016-07-01|71.0|-13.0|-11.48183|0.31124 +2016-07-01|71.0|-14.0|-12.12697|0.31428 +2016-07-01|71.0|-15.0|-12.77119|0.31739 +2016-07-01|71.0|-16.0|-13.41432|0.32056 +2016-07-01|71.0|-17.0|-14.0562|0.3238 +2016-07-01|71.0|-18.0|-14.69665|0.32712 +2016-07-01|71.0|-19.0|-15.33548|0.3305 +2016-07-01|71.0|-20.0|-15.9725|0.33395 +2016-07-01|71.0|-21.0|-16.60752|0.33747 +2016-07-01|71.0|-22.0|-17.24033|0.34107 +2016-07-01|71.0|-23.0|-17.87073|0.34475 +2016-07-01|71.0|-24.0|-18.49849|0.3485 +2016-07-01|71.0|-25.0|-19.12338|0.35234 +2016-07-01|71.0|-26.0|-19.74518|0.35625 +2016-07-01|71.0|-27.0|-20.36363|0.36025 +2016-07-01|71.0|-28.0|-20.97848|0.36434 +2016-07-01|71.0|-29.0|-21.58947|0.36851 +2016-07-01|71.0|-30.0|-22.19632|0.37277 +2016-07-01|71.0|-31.0|-22.79874|0.37713 +2016-07-01|71.0|-32.0|-23.39643|0.38158 +2016-07-01|71.0|-33.0|-23.98908|0.38613 +2016-07-01|71.0|-34.0|-24.57635|0.39078 +2016-07-01|71.0|-35.0|-25.15792|0.39553 +2016-07-01|71.0|-36.0|-25.73341|0.40038 +2016-07-01|71.0|-37.0|-26.30245|0.40535 +2016-07-01|71.0|-38.0|-26.86464|0.41043 +2016-07-01|71.0|-39.0|-27.41958|0.41562 +2016-07-01|71.0|-40.0|-27.96683|0.42093 +2016-07-01|71.0|-41.0|-28.50592|0.42636 +2016-07-01|71.0|-42.0|-29.03638|0.43192 +2016-07-01|71.0|-43.0|-29.5577|0.43761 +2016-07-01|71.0|-44.0|-30.06934|0.44343 +2016-07-01|71.0|-45.0|-30.57074|0.44939 +2016-07-01|71.0|-46.0|-31.06131|0.45549 +2016-07-01|71.0|-47.0|-31.54041|0.46173 +2016-07-01|71.0|-48.0|-32.00738|0.46812 +2016-07-01|71.0|-49.0|-32.46152|0.47466 +2016-07-01|71.0|-50.0|-32.90207|0.48135 +2016-07-01|71.0|-51.0|-33.32826|0.4882 +2016-07-01|71.0|-52.0|-33.73924|0.49521 +2016-07-01|71.0|-53.0|-34.13413|0.50238 +2016-07-01|71.0|-54.0|-34.51198|0.50971 +2016-07-01|71.0|-55.0|-34.8718|0.51721 +2016-07-01|71.0|-56.0|-35.21252|0.52487 +2016-07-01|71.0|-57.0|-35.53302|0.53269 +2016-07-01|71.0|-58.0|-35.8321|0.54067 +2016-07-01|71.0|-59.0|-36.10847|0.54881 +2016-07-01|71.0|-60.0|-36.3608|0.55709 +2016-07-01|71.0|-61.0|-36.58763|0.56552 +2016-07-01|71.0|-62.0|-36.78743|0.57407 +2016-07-01|71.0|-63.0|-36.95858|0.58275 +2016-07-01|71.0|-64.0|-37.09933|0.59151 +2016-07-01|71.0|-65.0|-37.20786|0.60036 +2016-07-01|71.0|-66.0|-37.2822|0.60925 +2016-07-01|71.0|-67.0|-37.32027|0.61815 +2016-07-01|71.0|-68.0|-37.31988|0.62702 +2016-07-01|71.0|-69.0|-37.2787|0.63581 +2016-07-01|71.0|-70.0|-37.19426|0.64447 +2016-07-01|71.0|-71.0|-37.06397|0.65292 +2016-07-01|71.0|-72.0|-36.8851|0.66108 +2016-07-01|71.0|-73.0|-36.65478|0.66885 +2016-07-01|71.0|-74.0|-36.37004|0.67613 +2016-07-01|71.0|-75.0|-36.02776|0.68277 +2016-07-01|71.0|-76.0|-35.62474|0.68863 +2016-07-01|71.0|-77.0|-35.1577|0.69354 +2016-07-01|71.0|-78.0|-34.62331|0.69729 +2016-07-01|71.0|-79.0|-34.01821|0.69967 +2016-07-01|71.0|-80.0|-33.33909|0.70043 +2016-07-01|71.0|-81.0|-32.58275|0.69929 +2016-07-01|71.0|-82.0|-31.74616|0.69595 +2016-07-01|71.0|-83.0|-30.82653|0.69009 +2016-07-01|71.0|-84.0|-29.82148|0.68137 +2016-07-01|71.0|-85.0|-28.72911|0.66944 +2016-07-01|71.0|-86.0|-27.54813|0.65393 +2016-07-01|71.0|-87.0|-26.27808|0.63451 +2016-07-01|71.0|-88.0|-24.91939|0.61086 +2016-07-01|71.0|-89.0|-23.47361|0.5827 +2016-07-01|71.0|-90.0|-21.94353|0.54982 +2016-07-01|71.0|-91.0|-20.33328|0.51212 +2016-07-01|71.0|-92.0|-18.64845|0.46958 +2016-07-01|71.0|-93.0|-16.89612|0.42232 +2016-07-01|71.0|-94.0|-15.08485|0.3706 +2016-07-01|71.0|-95.0|-13.22456|0.31483 +2016-07-01|71.0|-96.0|-11.32637|0.25557 +2016-07-01|71.0|-97.0|-9.40241|0.1935 +2016-07-01|71.0|-98.0|-7.46545|0.1294 +2016-07-01|71.0|-99.0|-5.52859|0.06414 +2016-07-01|71.0|-100.0|-3.6049|-0.00141 +2016-07-01|71.0|-101.0|-1.70705|-0.06636 +2016-07-01|71.0|-102.0|0.15304|-0.12988 +2016-07-01|71.0|-103.0|1.9645|-0.19122 +2016-07-01|71.0|-104.0|3.71766|-0.24976 +2016-07-01|71.0|-105.0|5.40429|-0.30498 +2016-07-01|71.0|-106.0|7.01763|-0.35649 +2016-07-01|71.0|-107.0|8.55239|-0.40406 +2016-07-01|71.0|-108.0|10.0047|-0.44754 +2016-07-01|71.0|-109.0|11.37204|-0.48692 +2016-07-01|71.0|-110.0|12.65309|-0.52226 +2016-07-01|71.0|-111.0|13.84757|-0.55368 +2016-07-01|71.0|-112.0|14.9561|-0.58139 +2016-07-01|71.0|-113.0|15.98007|-0.60559 +2016-07-01|71.0|-114.0|16.92143|-0.62655 +2016-07-01|71.0|-115.0|17.78261|-0.6445 +2016-07-01|71.0|-116.0|18.56638|-0.65973 +2016-07-01|71.0|-117.0|19.27576|-0.67246 +2016-07-01|71.0|-118.0|19.91391|-0.68296 +2016-07-01|71.0|-119.0|20.48409|-0.69145 +2016-07-01|71.0|-120.0|20.98955|-0.69814 +2016-07-01|71.0|-121.0|21.43355|-0.70323 +2016-07-01|71.0|-122.0|21.81928|-0.7069 +2016-07-01|71.0|-123.0|22.14985|-0.7093 +2016-07-01|71.0|-124.0|22.42824|-0.7106 +2016-07-01|71.0|-125.0|22.65733|-0.7109 +2016-07-01|71.0|-126.0|22.83988|-0.71034 +2016-07-01|71.0|-127.0|22.9785|-0.70901 +2016-07-01|71.0|-128.0|23.07568|-0.70701 +2016-07-01|71.0|-129.0|23.13376|-0.7044 +2016-07-01|71.0|-130.0|23.15497|-0.70127 +2016-07-01|71.0|-131.0|23.14139|-0.69766 +2016-07-01|71.0|-132.0|23.095|-0.69364 +2016-07-01|71.0|-133.0|23.01765|-0.68925 +2016-07-01|71.0|-134.0|22.91107|-0.68453 +2016-07-01|71.0|-135.0|22.77691|-0.67952 +2016-07-01|71.0|-136.0|22.6167|-0.67423 +2016-07-01|71.0|-137.0|22.43188|-0.66871 +2016-07-01|71.0|-138.0|22.2238|-0.66297 +2016-07-01|71.0|-139.0|21.99374|-0.65702 +2016-07-01|71.0|-140.0|21.7429|-0.65089 +2016-07-01|71.0|-141.0|21.47238|-0.64458 +2016-07-01|71.0|-142.0|21.18325|-0.63812 +2016-07-01|71.0|-143.0|20.87651|-0.63151 +2016-07-01|71.0|-144.0|20.55307|-0.62475 +2016-07-01|71.0|-145.0|20.21384|-0.61786 +2016-07-01|71.0|-146.0|19.85963|-0.61084 +2016-07-01|71.0|-147.0|19.49124|-0.60369 +2016-07-01|71.0|-148.0|19.10939|-0.59642 +2016-07-01|71.0|-149.0|18.7148|-0.58904 +2016-07-01|71.0|-150.0|18.30811|-0.58154 +2016-07-01|71.0|-151.0|17.88997|-0.57393 +2016-07-01|71.0|-152.0|17.46096|-0.56621 +2016-07-01|71.0|-153.0|17.02165|-0.55838 +2016-07-01|71.0|-154.0|16.57258|-0.55045 +2016-07-01|71.0|-155.0|16.11426|-0.54242 +2016-07-01|71.0|-156.0|15.64717|-0.53428 +2016-07-01|71.0|-157.0|15.17179|-0.52605 +2016-07-01|71.0|-158.0|14.68856|-0.51772 +2016-07-01|71.0|-159.0|14.1979|-0.50929 +2016-07-01|71.0|-160.0|13.70022|-0.50077 +2016-07-01|71.0|-161.0|13.19593|-0.49216 +2016-07-01|71.0|-162.0|12.68538|-0.48346 +2016-07-01|71.0|-163.0|12.16896|-0.47468 +2016-07-01|71.0|-164.0|11.64702|-0.46582 +2016-07-01|71.0|-165.0|11.11989|-0.45688 +2016-07-01|71.0|-166.0|10.5879|-0.44786 +2016-07-01|71.0|-167.0|10.05139|-0.43878 +2016-07-01|71.0|-168.0|9.51066|-0.42962 +2016-07-01|71.0|-169.0|8.96602|-0.42041 +2016-07-01|71.0|-170.0|8.41777|-0.41114 +2016-07-01|71.0|-171.0|7.86621|-0.40182 +2016-07-01|71.0|-172.0|7.31163|-0.39245 +2016-07-01|71.0|-173.0|6.75431|-0.38304 +2016-07-01|71.0|-174.0|6.19454|-0.3736 +2016-07-01|71.0|-175.0|5.63261|-0.36413 +2016-07-01|71.0|-176.0|5.06879|-0.35464 +2016-07-01|71.0|-177.0|4.50336|-0.34513 +2016-07-01|71.0|-178.0|3.93661|-0.33562 +2016-07-01|71.0|-179.0|3.36881|-0.32611 +2016-07-01|72.0|0.0|-3.1435|0.28892 +2016-07-01|72.0|1.0|-2.48355|0.28659 +2016-07-01|72.0|2.0|-1.82454|0.28432 +2016-07-01|72.0|3.0|-1.16658|0.28209 +2016-07-01|72.0|4.0|-0.50977|0.27991 +2016-07-01|72.0|5.0|0.14578|0.27777 +2016-07-01|72.0|6.0|0.79995|0.27568 +2016-07-01|72.0|7.0|1.45265|0.27363 +2016-07-01|72.0|8.0|2.10375|0.27161 +2016-07-01|72.0|9.0|2.75317|0.26964 +2016-07-01|72.0|10.0|3.40078|0.2677 +2016-07-01|72.0|11.0|4.04647|0.2658 +2016-07-01|72.0|12.0|4.69012|0.26394 +2016-07-01|72.0|13.0|5.33163|0.2621 +2016-07-01|72.0|14.0|5.97087|0.2603 +2016-07-01|72.0|15.0|6.60772|0.25853 +2016-07-01|72.0|16.0|7.24205|0.25679 +2016-07-01|72.0|17.0|7.87373|0.25507 +2016-07-01|72.0|18.0|8.50263|0.25338 +2016-07-01|72.0|19.0|9.1286|0.25171 +2016-07-01|72.0|20.0|9.75149|0.25006 +2016-07-01|72.0|21.0|10.37116|0.24843 +2016-07-01|72.0|22.0|10.98745|0.24682 +2016-07-01|72.0|23.0|11.60019|0.24523 +2016-07-01|72.0|24.0|12.2092|0.24365 +2016-07-01|72.0|25.0|12.81431|0.24209 +2016-07-01|72.0|26.0|13.41533|0.24054 +2016-07-01|72.0|27.0|14.01205|0.239 +2016-07-01|72.0|28.0|14.60428|0.23746 +2016-07-01|72.0|29.0|15.19178|0.23594 +2016-07-01|72.0|30.0|15.77434|0.23441 +2016-07-01|72.0|31.0|16.35171|0.23289 +2016-07-01|72.0|32.0|16.92365|0.23137 +2016-07-01|72.0|33.0|17.48989|0.22985 +2016-07-01|72.0|34.0|18.05016|0.22833 +2016-07-01|72.0|35.0|18.60418|0.2268 +2016-07-01|72.0|36.0|19.15163|0.22526 +2016-07-01|72.0|37.0|19.6922|0.22372 +2016-07-01|72.0|38.0|20.22557|0.22216 +2016-07-01|72.0|39.0|20.75139|0.22058 +2016-07-01|72.0|40.0|21.2693|0.21899 +2016-07-01|72.0|41.0|21.7789|0.21738 +2016-07-01|72.0|42.0|22.27982|0.21575 +2016-07-01|72.0|43.0|22.77163|0.2141 +2016-07-01|72.0|44.0|23.2539|0.21241 +2016-07-01|72.0|45.0|23.72616|0.2107 +2016-07-01|72.0|46.0|24.18794|0.20895 +2016-07-01|72.0|47.0|24.63874|0.20716 +2016-07-01|72.0|48.0|25.07803|0.20533 +2016-07-01|72.0|49.0|25.50526|0.20346 +2016-07-01|72.0|50.0|25.91985|0.20154 +2016-07-01|72.0|51.0|26.32119|0.19956 +2016-07-01|72.0|52.0|26.70865|0.19752 +2016-07-01|72.0|53.0|27.08156|0.19542 +2016-07-01|72.0|54.0|27.43921|0.19325 +2016-07-01|72.0|55.0|27.78087|0.191 +2016-07-01|72.0|56.0|28.10577|0.18868 +2016-07-01|72.0|57.0|28.41309|0.18626 +2016-07-01|72.0|58.0|28.70198|0.18375 +2016-07-01|72.0|59.0|28.97155|0.18114 +2016-07-01|72.0|60.0|29.22084|0.17841 +2016-07-01|72.0|61.0|29.44889|0.17557 +2016-07-01|72.0|62.0|29.65464|0.1726 +2016-07-01|72.0|63.0|29.83702|0.1695 +2016-07-01|72.0|64.0|29.99487|0.16624 +2016-07-01|72.0|65.0|30.12701|0.16283 +2016-07-01|72.0|66.0|30.23218|0.15925 +2016-07-01|72.0|67.0|30.30906|0.15548 +2016-07-01|72.0|68.0|30.35631|0.15153 +2016-07-01|72.0|69.0|30.37248|0.14737 +2016-07-01|72.0|70.0|30.35608|0.14299 +2016-07-01|72.0|71.0|30.30559|0.13838 +2016-07-01|72.0|72.0|30.2194|0.13352 +2016-07-01|72.0|73.0|30.09586|0.12841 +2016-07-01|72.0|74.0|29.93328|0.12302 +2016-07-01|72.0|75.0|29.72992|0.11734 +2016-07-01|72.0|76.0|29.48403|0.11137 +2016-07-01|72.0|77.0|29.1938|0.10508 +2016-07-01|72.0|78.0|28.85747|0.09848 +2016-07-01|72.0|79.0|28.47325|0.09154 +2016-07-01|72.0|80.0|28.0394|0.08427 +2016-07-01|72.0|81.0|27.55424|0.07665 +2016-07-01|72.0|82.0|27.01618|0.0687 +2016-07-01|72.0|83.0|26.42375|0.0604 +2016-07-01|72.0|84.0|25.77565|0.05178 +2016-07-01|72.0|85.0|25.07078|0.04285 +2016-07-01|72.0|86.0|24.30831|0.03363 +2016-07-01|72.0|87.0|23.4877|0.02414 +2016-07-01|72.0|88.0|22.6088|0.01444 +2016-07-01|72.0|89.0|21.67186|0.00455 +2016-07-01|72.0|90.0|20.67763|-0.00545 +2016-07-01|72.0|91.0|19.62737|-0.01551 +2016-07-01|72.0|92.0|18.52296|-0.02554 +2016-07-01|72.0|93.0|17.36688|-0.03548 +2016-07-01|72.0|94.0|16.16228|-0.04522 +2016-07-01|72.0|95.0|14.91297|-0.05467 +2016-07-01|72.0|96.0|13.62345|-0.06373 +2016-07-01|72.0|97.0|12.29883|-0.07231 +2016-07-01|72.0|98.0|10.94484|-0.08032 +2016-07-01|72.0|99.0|9.56772|-0.08765 +2016-07-01|72.0|100.0|8.17415|-0.09424 +2016-07-01|72.0|101.0|6.77112|-0.10001 +2016-07-01|72.0|102.0|5.36585|-0.10492 +2016-07-01|72.0|103.0|3.96558|-0.10893 +2016-07-01|72.0|104.0|2.5775|-0.11203 +2016-07-01|72.0|105.0|1.2086|-0.11423 +2016-07-01|72.0|106.0|-0.13448|-0.11553 +2016-07-01|72.0|107.0|-1.44555|-0.11599 +2016-07-01|72.0|108.0|-2.71892|-0.11565 +2016-07-01|72.0|109.0|-3.94954|-0.11459 +2016-07-01|72.0|110.0|-5.13297|-0.11287 +2016-07-01|72.0|111.0|-6.26549|-0.11058 +2016-07-01|72.0|112.0|-7.344|-0.1078 +2016-07-01|72.0|113.0|-8.3661|-0.10461 +2016-07-01|72.0|114.0|-9.33002|-0.10111 +2016-07-01|72.0|115.0|-10.23454|-0.09738 +2016-07-01|72.0|116.0|-11.07902|-0.09349 +2016-07-01|72.0|117.0|-11.86329|-0.08951 +2016-07-01|72.0|118.0|-12.58759|-0.08551 +2016-07-01|72.0|119.0|-13.25254|-0.08156 +2016-07-01|72.0|120.0|-13.85906|-0.0777 +2016-07-01|72.0|121.0|-14.40836|-0.07397 +2016-07-01|72.0|122.0|-14.90181|-0.07043 +2016-07-01|72.0|123.0|-15.34098|-0.0671 +2016-07-01|72.0|124.0|-15.72756|-0.06401 +2016-07-01|72.0|125.0|-16.06332|-0.0612 +2016-07-01|72.0|126.0|-16.3501|-0.05867 +2016-07-01|72.0|127.0|-16.58978|-0.05644 +2016-07-01|72.0|128.0|-16.78423|-0.05453 +2016-07-01|72.0|129.0|-16.93536|-0.05295 +2016-07-01|72.0|130.0|-17.04501|-0.0517 +2016-07-01|72.0|131.0|-17.11504|-0.05079 +2016-07-01|72.0|132.0|-17.14723|-0.05023 +2016-07-01|72.0|133.0|-17.14334|-0.05 +2016-07-01|72.0|134.0|-17.10508|-0.05012 +2016-07-01|72.0|135.0|-17.0341|-0.05059 +2016-07-01|72.0|136.0|-16.93197|-0.0514 +2016-07-01|72.0|137.0|-16.80025|-0.05254 +2016-07-01|72.0|138.0|-16.6404|-0.05402 +2016-07-01|72.0|139.0|-16.45383|-0.05584 +2016-07-01|72.0|140.0|-16.24192|-0.05798 +2016-07-01|72.0|141.0|-16.00595|-0.06045 +2016-07-01|72.0|142.0|-15.74718|-0.06323 +2016-07-01|72.0|143.0|-15.46679|-0.06633 +2016-07-01|72.0|144.0|-15.16594|-0.06974 +2016-07-01|72.0|145.0|-14.8457|-0.07345 +2016-07-01|72.0|146.0|-14.50712|-0.07746 +2016-07-01|72.0|147.0|-14.1512|-0.08175 +2016-07-01|72.0|148.0|-13.77889|-0.08633 +2016-07-01|72.0|149.0|-13.39109|-0.09119 +2016-07-01|72.0|150.0|-12.98868|-0.09633 +2016-07-01|72.0|151.0|-12.57249|-0.10172 +2016-07-01|72.0|152.0|-12.1433|-0.10738 +2016-07-01|72.0|153.0|-11.70189|-0.11328 +2016-07-01|72.0|154.0|-11.24897|-0.11943 +2016-07-01|72.0|155.0|-10.78524|-0.12581 +2016-07-01|72.0|156.0|-10.31137|-0.13243 +2016-07-01|72.0|157.0|-9.82799|-0.13926 +2016-07-01|72.0|158.0|-9.33571|-0.14631 +2016-07-01|72.0|159.0|-8.83512|-0.15357 +2016-07-01|72.0|160.0|-8.32678|-0.16103 +2016-07-01|72.0|161.0|-7.81122|-0.16867 +2016-07-01|72.0|162.0|-7.28896|-0.1765 +2016-07-01|72.0|163.0|-6.76049|-0.1845 +2016-07-01|72.0|164.0|-6.2263|-0.19267 +2016-07-01|72.0|165.0|-5.68684|-0.20099 +2016-07-01|72.0|166.0|-5.14255|-0.20947 +2016-07-01|72.0|167.0|-4.59385|-0.21809 +2016-07-01|72.0|168.0|-4.04116|-0.22684 +2016-07-01|72.0|169.0|-3.48488|-0.23571 +2016-07-01|72.0|170.0|-2.92538|-0.2447 +2016-07-01|72.0|171.0|-2.36303|-0.2538 +2016-07-01|72.0|172.0|-1.79819|-0.26299 +2016-07-01|72.0|173.0|-1.23122|-0.27228 +2016-07-01|72.0|174.0|-0.66244|-0.28165 +2016-07-01|72.0|175.0|-0.0922|-0.2911 +2016-07-01|72.0|176.0|0.4792|-0.30061 +2016-07-01|72.0|177.0|1.05142|-0.31018 +2016-07-01|72.0|178.0|1.62418|-0.3198 +2016-07-01|72.0|179.0|2.19716|-0.32947 +2016-07-01|72.0|-1.0|-3.80428|0.29129 +2016-07-01|72.0|-2.0|-4.46578|0.29371 +2016-07-01|72.0|-3.0|-5.12789|0.29619 +2016-07-01|72.0|-4.0|-5.79048|0.29872 +2016-07-01|72.0|-5.0|-6.45344|0.3013 +2016-07-01|72.0|-6.0|-7.11666|0.30394 +2016-07-01|72.0|-7.0|-7.78001|0.30664 +2016-07-01|72.0|-8.0|-8.44336|0.3094 +2016-07-01|72.0|-9.0|-9.10659|0.31221 +2016-07-01|72.0|-10.0|-9.76956|0.31509 +2016-07-01|72.0|-11.0|-10.43214|0.31803 +2016-07-01|72.0|-12.0|-11.09418|0.32104 +2016-07-01|72.0|-13.0|-11.75555|0.32411 +2016-07-01|72.0|-14.0|-12.4161|0.32725 +2016-07-01|72.0|-15.0|-13.07567|0.33046 +2016-07-01|72.0|-16.0|-13.7341|0.33374 +2016-07-01|72.0|-17.0|-14.39124|0.33709 +2016-07-01|72.0|-18.0|-15.04691|0.34052 +2016-07-01|72.0|-19.0|-15.70094|0.34401 +2016-07-01|72.0|-20.0|-16.35314|0.34759 +2016-07-01|72.0|-21.0|-17.00335|0.35125 +2016-07-01|72.0|-22.0|-17.65135|0.35498 +2016-07-01|72.0|-23.0|-18.29696|0.3588 +2016-07-01|72.0|-24.0|-18.93996|0.36271 +2016-07-01|72.0|-25.0|-19.58014|0.3667 +2016-07-01|72.0|-26.0|-20.21727|0.37078 +2016-07-01|72.0|-27.0|-20.85114|0.37495 +2016-07-01|72.0|-28.0|-21.48148|0.37921 +2016-07-01|72.0|-29.0|-22.10806|0.38358 +2016-07-01|72.0|-30.0|-22.7306|0.38804 +2016-07-01|72.0|-31.0|-23.34885|0.3926 +2016-07-01|72.0|-32.0|-23.96251|0.39727 +2016-07-01|72.0|-33.0|-24.57128|0.40205 +2016-07-01|72.0|-34.0|-25.17486|0.40694 +2016-07-01|72.0|-35.0|-25.77293|0.41195 +2016-07-01|72.0|-36.0|-26.36513|0.41707 +2016-07-01|72.0|-37.0|-26.95111|0.42231 +2016-07-01|72.0|-38.0|-27.53051|0.42768 +2016-07-01|72.0|-39.0|-28.10292|0.43319 +2016-07-01|72.0|-40.0|-28.66794|0.43882 +2016-07-01|72.0|-41.0|-29.22513|0.44459 +2016-07-01|72.0|-42.0|-29.77403|0.45051 +2016-07-01|72.0|-43.0|-30.31416|0.45657 +2016-07-01|72.0|-44.0|-30.84501|0.46279 +2016-07-01|72.0|-45.0|-31.36605|0.46916 +2016-07-01|72.0|-46.0|-31.8767|0.47569 +2016-07-01|72.0|-47.0|-32.37639|0.48238 +2016-07-01|72.0|-48.0|-32.86445|0.48925 +2016-07-01|72.0|-49.0|-33.34024|0.49629 +2016-07-01|72.0|-50.0|-33.80304|0.50352 +2016-07-01|72.0|-51.0|-34.25209|0.51092 +2016-07-01|72.0|-52.0|-34.68661|0.51852 +2016-07-01|72.0|-53.0|-35.10573|0.5263 +2016-07-01|72.0|-54.0|-35.50856|0.53428 +2016-07-01|72.0|-55.0|-35.89415|0.54246 +2016-07-01|72.0|-56.0|-36.26147|0.55084 +2016-07-01|72.0|-57.0|-36.60945|0.55942 +2016-07-01|72.0|-58.0|-36.93693|0.5682 +2016-07-01|72.0|-59.0|-37.24269|0.57718 +2016-07-01|72.0|-60.0|-37.52542|0.58635 +2016-07-01|72.0|-61.0|-37.78372|0.59572 +2016-07-01|72.0|-62.0|-38.01611|0.60527 +2016-07-01|72.0|-63.0|-38.22101|0.61499 +2016-07-01|72.0|-64.0|-38.39673|0.62487 +2016-07-01|72.0|-65.0|-38.54148|0.63489 +2016-07-01|72.0|-66.0|-38.65333|0.64502 +2016-07-01|72.0|-67.0|-38.73024|0.65524 +2016-07-01|72.0|-68.0|-38.77005|0.66551 +2016-07-01|72.0|-69.0|-38.77044|0.67579 +2016-07-01|72.0|-70.0|-38.72895|0.68601 +2016-07-01|72.0|-71.0|-38.64299|0.69613 +2016-07-01|72.0|-72.0|-38.50979|0.70605 +2016-07-01|72.0|-73.0|-38.32646|0.71569 +2016-07-01|72.0|-74.0|-38.08993|0.72494 +2016-07-01|72.0|-75.0|-37.79698|0.73366 +2016-07-01|72.0|-76.0|-37.44429|0.74172 +2016-07-01|72.0|-77.0|-37.02836|0.74893 +2016-07-01|72.0|-78.0|-36.54562|0.7551 +2016-07-01|72.0|-79.0|-35.99243|0.75999 +2016-07-01|72.0|-80.0|-35.3651|0.76335 +2016-07-01|72.0|-81.0|-34.65995|0.76487 +2016-07-01|72.0|-82.0|-33.87342|0.76424 +2016-07-01|72.0|-83.0|-33.0021|0.7611 +2016-07-01|72.0|-84.0|-32.04284|0.75505 +2016-07-01|72.0|-85.0|-30.99291|0.74568 +2016-07-01|72.0|-86.0|-29.8501|0.73257 +2016-07-01|72.0|-87.0|-28.61289|0.71528 +2016-07-01|72.0|-88.0|-27.28062|0.69338 +2016-07-01|72.0|-89.0|-25.85371|0.6665 +2016-07-01|72.0|-90.0|-24.33378|0.63429 +2016-07-01|72.0|-91.0|-22.72387|0.59651 +2016-07-01|72.0|-92.0|-21.02857|0.55302 +2016-07-01|72.0|-93.0|-19.25414|0.50383 +2016-07-01|72.0|-94.0|-17.40851|0.4491 +2016-07-01|72.0|-95.0|-15.50131|0.38919 +2016-07-01|72.0|-96.0|-13.5437|0.32463 +2016-07-01|72.0|-97.0|-11.54819|0.25613 +2016-07-01|72.0|-98.0|-9.52836|0.18458 +2016-07-01|72.0|-99.0|-7.49843|0.11097 +2016-07-01|72.0|-100.0|-5.47293|0.03635 +2016-07-01|72.0|-101.0|-3.46618|-0.03816 +2016-07-01|72.0|-102.0|-1.49195|-0.11152 +2016-07-01|72.0|-103.0|0.437|-0.18274 +2016-07-01|72.0|-104.0|2.30917|-0.25098 +2016-07-01|72.0|-105.0|4.11458|-0.31551 +2016-07-01|72.0|-106.0|5.84491|-0.37581 +2016-07-01|72.0|-107.0|7.4935|-0.4315 +2016-07-01|72.0|-108.0|9.0554|-0.48235 +2016-07-01|72.0|-109.0|10.52721|-0.52831 +2016-07-01|72.0|-110.0|11.90698|-0.56941 +2016-07-01|72.0|-111.0|13.19401|-0.6058 +2016-07-01|72.0|-112.0|14.3887|-0.63771 +2016-07-01|72.0|-113.0|15.49235|-0.66538 +2016-07-01|72.0|-114.0|16.50699|-0.68914 +2016-07-01|72.0|-115.0|17.43521|-0.7093 +2016-07-01|72.0|-116.0|18.28001|-0.72618 +2016-07-01|72.0|-117.0|19.04469|-0.74009 +2016-07-01|72.0|-118.0|19.73276|-0.75135 +2016-07-01|72.0|-119.0|20.3478|-0.76023 +2016-07-01|72.0|-120.0|20.89343|-0.767 +2016-07-01|74.0|42.0|23.71928|0.24218 +2016-07-01|74.0|43.0|24.25407|0.24071 +2016-07-01|74.0|44.0|24.7799|0.23921 +2016-07-01|74.0|45.0|25.29635|0.23771 +2016-07-01|74.0|46.0|25.80297|0.23618 +2016-07-01|74.0|47.0|26.2993|0.23463 +2016-07-01|74.0|48.0|26.78484|0.23305 +2016-07-01|74.0|49.0|27.25908|0.23145 +2016-07-01|74.0|50.0|27.72148|0.22981 +2016-07-01|74.0|51.0|28.17145|0.22813 +2016-07-01|74.0|52.0|28.60841|0.22642 +2016-07-01|74.0|53.0|29.03173|0.22466 +2016-07-01|74.0|54.0|29.44072|0.22284 +2016-07-01|74.0|55.0|29.8347|0.22098 +2016-07-01|74.0|56.0|30.21292|0.21905 +2016-07-01|74.0|57.0|30.57461|0.21705 +2016-07-01|74.0|58.0|30.91894|0.21498 +2016-07-01|74.0|59.0|31.24504|0.21283 +2016-07-01|74.0|60.0|31.552|0.21059 +2016-07-01|74.0|61.0|31.83886|0.20826 +2016-07-01|74.0|62.0|32.1046|0.20582 +2016-07-01|74.0|63.0|32.34813|0.20327 +2016-07-01|74.0|64.0|32.56834|0.2006 +2016-07-01|74.0|65.0|32.76402|0.19779 +2016-07-01|74.0|66.0|32.93392|0.19484 +2016-07-01|74.0|67.0|33.0767|0.19173 +2016-07-01|74.0|68.0|33.19097|0.18845 +2016-07-01|74.0|69.0|33.27526|0.18499 +2016-07-01|74.0|70.0|33.32802|0.18133 +2016-07-01|74.0|71.0|33.34765|0.17746 +2016-07-01|74.0|72.0|33.33243|0.17336 +2016-07-01|74.0|73.0|33.28061|0.16902 +2016-07-01|74.0|74.0|33.19033|0.16441 +2016-07-01|74.0|75.0|33.05968|0.15952 +2016-07-01|74.0|76.0|32.88668|0.15433 +2016-07-01|74.0|77.0|32.66928|0.14882 +2016-07-01|74.0|78.0|32.4054|0.14298 +2016-07-01|74.0|79.0|32.09289|0.13678 +2016-07-01|74.0|80.0|31.72963|0.1302 +2016-07-01|74.0|81.0|31.31344|0.12324 +2016-07-01|74.0|82.0|30.84222|0.11587 +2016-07-01|74.0|83.0|30.31389|0.10808 +2016-07-01|74.0|84.0|29.72648|0.09986 +2016-07-01|74.0|85.0|29.07815|0.09121 +2016-07-01|74.0|86.0|28.36727|0.08213 +2016-07-01|74.0|87.0|27.59243|0.07263 +2016-07-01|74.0|88.0|26.75254|0.06271 +2016-07-01|74.0|89.0|25.8469|0.0524 +2016-07-01|74.0|90.0|24.87526|0.04174 +2016-07-01|74.0|91.0|23.83791|0.03077 +2016-07-01|74.0|92.0|22.73575|0.01955 +2016-07-01|74.0|93.0|21.57035|0.00814 +2016-07-01|74.0|94.0|20.34406|-0.00338 +2016-07-01|74.0|95.0|19.06003|-0.0149 +2016-07-01|74.0|96.0|17.72223|-0.02634 +2016-07-01|74.0|97.0|16.33552|-0.03757 +2016-07-01|74.0|98.0|14.90555|-0.04849 +2016-07-01|74.0|99.0|13.43882|-0.05897 +2016-07-01|74.0|100.0|11.9425|-0.06889 +2016-07-01|74.0|101.0|10.42438|-0.07816 +2016-07-01|74.0|102.0|8.89272|-0.08668 +2016-07-01|74.0|103.0|7.35607|-0.09435 +2016-07-01|74.0|104.0|5.8231|-0.10113 +2016-07-01|74.0|105.0|4.30243|-0.10696 +2016-07-01|74.0|106.0|2.80243|-0.11183 +2016-07-01|74.0|107.0|1.33105|-0.11574 +2016-07-01|74.0|108.0|-0.1043|-0.11872 +2016-07-01|74.0|109.0|-1.49693|-0.1208 +2016-07-01|74.0|110.0|-2.84088|-0.12205 +2016-07-01|74.0|111.0|-4.13106|-0.12254 +2016-07-01|74.0|112.0|-5.3632|-0.12236 +2016-07-01|74.0|113.0|-6.53392|-0.12158 +2016-07-01|74.0|114.0|-7.64062|-0.12031 +2016-07-01|74.0|115.0|-8.68153|-0.11864 +2016-07-01|74.0|116.0|-9.65554|-0.11664 +2016-07-01|74.0|117.0|-10.56223|-0.11442 +2016-07-01|74.0|118.0|-11.40172|-0.11204 +2016-07-01|74.0|119.0|-12.17461|-0.10958 +2016-07-01|74.0|120.0|-12.88194|-0.1071 +2016-07-01|74.0|121.0|-13.52506|-0.10467 +2016-07-01|74.0|122.0|-14.10561|-0.10232 +2016-07-01|74.0|123.0|-14.62542|-0.10012 +2016-07-01|74.0|124.0|-15.08651|-0.09809 +2016-07-01|74.0|125.0|-15.49099|-0.09626 +2016-07-01|74.0|126.0|-15.84104|-0.09466 +2016-07-01|74.0|127.0|-16.13888|-0.09332 +2016-07-01|74.0|128.0|-16.38675|-0.09225 +2016-07-01|74.0|129.0|-16.58687|-0.09147 +2016-07-01|74.0|130.0|-16.74143|-0.09098 +2016-07-01|74.0|131.0|-16.85259|-0.09079 +2016-07-01|74.0|132.0|-16.92243|-0.09092 +2016-07-01|74.0|133.0|-16.95298|-0.09136 +2016-07-01|74.0|134.0|-16.94621|-0.09211 +2016-07-01|74.0|135.0|-16.904|-0.09319 +2016-07-01|74.0|136.0|-16.82818|-0.09457 +2016-07-01|74.0|137.0|-16.72047|-0.09628 +2016-07-01|74.0|138.0|-16.58254|-0.09829 +2016-07-01|74.0|139.0|-16.41598|-0.10062 +2016-07-01|74.0|140.0|-16.22231|-0.10325 +2016-07-01|74.0|141.0|-16.00297|-0.10618 +2016-07-01|74.0|142.0|-15.75934|-0.10941 +2016-07-01|74.0|143.0|-15.49274|-0.11293 +2016-07-01|74.0|144.0|-15.2044|-0.11675 +2016-07-01|74.0|145.0|-14.89552|-0.12084 +2016-07-01|74.0|146.0|-14.56722|-0.12522 +2016-07-01|74.0|147.0|-14.22059|-0.12987 +2016-07-01|74.0|148.0|-13.85665|-0.13478 +2016-07-01|74.0|149.0|-13.47636|-0.13996 +2016-07-01|74.0|150.0|-13.08065|-0.14539 +2016-07-01|74.0|151.0|-12.67041|-0.15107 +2016-07-01|74.0|152.0|-12.24648|-0.157 +2016-07-01|74.0|153.0|-11.80966|-0.16316 +2016-07-01|74.0|154.0|-11.36071|-0.16955 +2016-07-01|74.0|155.0|-10.90036|-0.17617 +2016-07-01|74.0|156.0|-10.4293|-0.18301 +2016-07-01|74.0|157.0|-9.94821|-0.19006 +2016-07-01|74.0|158.0|-9.4577|-0.19732 +2016-07-01|74.0|159.0|-8.9584|-0.20478 +2016-07-01|74.0|160.0|-8.45087|-0.21243 +2016-07-01|74.0|161.0|-7.93568|-0.22026 +2016-07-01|74.0|162.0|-7.41335|-0.22828 +2016-07-01|74.0|163.0|-6.88441|-0.23647 +2016-07-01|74.0|164.0|-6.34933|-0.24483 +2016-07-01|74.0|165.0|-5.80859|-0.25334 +2016-07-01|74.0|166.0|-5.26264|-0.26201 +2016-07-01|74.0|167.0|-4.71192|-0.27083 +2016-07-01|74.0|168.0|-4.15685|-0.27978 +2016-07-01|74.0|169.0|-3.59784|-0.28887 +2016-07-01|74.0|170.0|-3.03527|-0.29808 +2016-07-01|74.0|171.0|-2.46953|-0.30742 +2016-07-01|74.0|172.0|-1.90098|-0.31686 +2016-07-01|74.0|173.0|-1.32999|-0.32642 +2016-07-01|74.0|174.0|-0.7569|-0.33607 +2016-07-01|74.0|175.0|-0.18205|-0.34582 +2016-07-01|74.0|176.0|0.39423|-0.35566 +2016-07-01|74.0|177.0|0.97162|-0.36557 +2016-07-01|74.0|178.0|1.54979|-0.37557 +2016-07-01|74.0|179.0|2.12844|-0.38563 +2016-07-01|74.0|-1.0|-3.92775|0.31829 +2016-07-01|74.0|-2.0|-4.62133|0.32085 +2016-07-01|74.0|-3.0|-5.31535|0.32346 +2016-07-01|74.0|-4.0|-6.0097|0.32613 +2016-07-01|74.0|-5.0|-6.70426|0.32886 +2016-07-01|74.0|-6.0|-7.39892|0.33165 +2016-07-01|74.0|-7.0|-8.09357|0.3345 +2016-07-01|74.0|-8.0|-8.78808|0.33742 +2016-07-01|74.0|-9.0|-9.48234|0.34041 +2016-07-01|74.0|-10.0|-10.17623|0.34346 +2016-07-01|74.0|-11.0|-10.86962|0.34658 +2016-07-01|74.0|-12.0|-11.56238|0.34978 +2016-07-01|74.0|-13.0|-12.25438|0.35304 +2016-07-01|74.0|-14.0|-12.94549|0.35639 +2016-07-01|74.0|-15.0|-13.63556|0.35981 +2016-07-01|74.0|-16.0|-14.32447|0.36331 +2016-07-01|74.0|-17.0|-15.01205|0.36689 +2016-07-01|74.0|-18.0|-15.69817|0.37055 +2016-07-01|74.0|-19.0|-16.38266|0.3743 +2016-07-01|74.0|-20.0|-17.06536|0.37814 +2016-07-01|74.0|-21.0|-17.74611|0.38207 +2016-07-01|74.0|-22.0|-18.42474|0.38609 +2016-07-01|74.0|-23.0|-19.10108|0.3902 +2016-07-01|74.0|-24.0|-19.77492|0.39442 +2016-07-01|74.0|-25.0|-20.4461|0.39874 +2016-07-01|74.0|-26.0|-21.1144|0.40316 +2016-07-01|74.0|-27.0|-21.77963|0.40769 +2016-07-01|74.0|-28.0|-22.44157|0.41232 +2016-07-01|74.0|-29.0|-23.1|0.41708 +2016-07-01|74.0|-30.0|-23.75468|0.42195 +2016-07-01|74.0|-31.0|-24.40539|0.42694 +2016-07-01|74.0|-32.0|-25.05186|0.43206 +2016-07-01|74.0|-33.0|-25.69383|0.43731 +2016-07-01|74.0|-34.0|-26.33104|0.44269 +2016-07-01|74.0|-35.0|-26.96318|0.44821 +2016-07-01|74.0|-36.0|-27.58997|0.45387 +2016-07-01|74.0|-37.0|-28.21109|0.45968 +2016-07-01|74.0|-38.0|-28.8262|0.46564 +2016-07-01|74.0|-39.0|-29.43497|0.47176 +2016-07-01|74.0|-40.0|-30.03702|0.47805 +2016-07-01|74.0|-41.0|-30.63197|0.4845 +2016-07-01|74.0|-42.0|-31.21943|0.49113 +2016-07-01|74.0|-43.0|-31.79895|0.49794 +2016-07-01|74.0|-44.0|-32.37011|0.50494 +2016-07-01|74.0|-45.0|-32.93241|0.51213 +2016-07-01|74.0|-46.0|-33.48537|0.51952 +2016-07-01|74.0|-47.0|-34.02844|0.52712 +2016-07-01|74.0|-48.0|-34.56108|0.53494 +2016-07-01|74.0|-49.0|-35.08269|0.54298 +2016-07-01|74.0|-50.0|-35.59263|0.55125 +2016-07-01|74.0|-51.0|-36.09025|0.55975 +2016-07-01|74.0|-52.0|-36.57483|0.5685 +2016-07-01|74.0|-53.0|-37.04561|0.5775 +2016-07-01|74.0|-54.0|-37.50181|0.58676 +2016-07-01|74.0|-55.0|-37.94256|0.59628 +2016-07-01|74.0|-56.0|-38.36696|0.60608 +2016-07-01|74.0|-57.0|-38.77403|0.61615 +2016-07-01|74.0|-58.0|-39.16274|0.62651 +2016-07-01|74.0|-59.0|-39.532|0.63715 +2016-07-01|74.0|-60.0|-39.88061|0.64808 +2016-07-01|74.0|-61.0|-40.20733|0.6593 +2016-07-01|74.0|-62.0|-40.51079|0.67082 +2016-07-01|74.0|-63.0|-40.78957|0.68262 +2016-07-01|74.0|-64.0|-41.0421|0.69471 +2016-07-01|74.0|-65.0|-41.26675|0.70707 +2016-07-01|74.0|-66.0|-41.46172|0.7197 +2016-07-01|74.0|-67.0|-41.62514|0.73257 +2016-07-01|74.0|-68.0|-41.75496|0.74566 +2016-07-01|74.0|-69.0|-41.84899|0.75895 +2016-07-01|74.0|-70.0|-41.90491|0.77238 +2016-07-01|74.0|-71.0|-41.92021|0.78592 +2016-07-01|74.0|-72.0|-41.89222|0.79951 +2016-07-01|74.0|-73.0|-41.81808|0.81306 +2016-07-01|74.0|-74.0|-41.69475|0.82649 +2016-07-01|74.0|-75.0|-41.51898|0.83969 +2016-07-01|74.0|-76.0|-41.28732|0.85252 +2016-07-01|74.0|-77.0|-40.99613|0.86484 +2016-07-01|74.0|-78.0|-40.64156|0.87644 +2016-07-01|74.0|-79.0|-40.21959|0.88711 +2016-07-01|74.0|-80.0|-39.726|0.8966 +2016-07-01|74.0|-81.0|-39.15646|0.90459 +2016-07-01|74.0|-82.0|-38.50651|0.91075 +2016-07-01|74.0|-83.0|-37.77165|0.91467 +2016-07-01|74.0|-84.0|-36.94743|0.9159 +2016-07-01|74.0|-85.0|-36.02948|0.91395 +2016-07-01|74.0|-86.0|-35.01369|0.90827 +2016-07-01|74.0|-87.0|-33.89636|0.89825 +2016-07-01|74.0|-88.0|-32.67433|0.88326 +2016-07-01|74.0|-89.0|-31.34521|0.86268 +2016-07-01|74.0|-90.0|-29.90764|0.83584 +2016-07-01|74.0|-91.0|-28.36151|0.80217 +2016-07-01|74.0|-92.0|-26.70822|0.76114 +2016-07-01|74.0|-93.0|-24.95093|0.71235 +2016-07-01|74.0|-94.0|-23.09481|0.6556 +2016-07-01|74.0|-95.0|-21.14716|0.59087 +2016-07-01|74.0|-96.0|-19.1175|0.51844 +2016-07-01|74.0|-97.0|-17.01757|0.43885 +2016-07-01|74.0|-98.0|-14.86114|0.35298 +2016-07-01|74.0|-99.0|-12.66371|0.26196 +2016-07-01|74.0|-100.0|-10.44209|0.16717 +2016-07-01|74.0|-101.0|-8.21389|0.07018 +2016-07-01|74.0|-102.0|-5.99691|-0.02739 +2016-07-01|74.0|-103.0|-3.80852|-0.12388 +2016-07-01|74.0|-104.0|-1.66509|-0.21775 +2016-07-01|74.0|-105.0|0.41849|-0.30764 +2016-07-01|74.0|-106.0|2.42919|-0.39241 +2016-07-01|74.0|-107.0|4.35612|-0.47119 +2016-07-01|74.0|-108.0|6.19057|-0.54338 +2016-07-01|74.0|-109.0|7.92606|-0.60865 +2016-07-01|74.0|-110.0|9.55822|-0.66689 +2016-07-01|74.0|-111.0|11.08454|-0.71821 +2016-07-01|74.0|-112.0|12.50422|-0.76286 +2016-07-01|74.0|-113.0|13.81785|-0.80119 +2016-07-01|74.0|-114.0|15.0272|-0.83366 +2016-07-01|74.0|-115.0|16.13494|-0.86073 +2016-07-01|74.0|-116.0|17.14442|-0.88293 +2016-07-01|74.0|-117.0|18.05949|-0.90074 +2016-07-01|74.0|-118.0|18.88434|-0.91464 +2016-07-01|74.0|-119.0|19.62334|-0.9251 +2016-07-01|74.0|-120.0|20.28094|-0.93252 +2016-07-01|74.0|-121.0|20.86159|-0.93731 +2016-07-01|74.0|-122.0|21.36965|-0.93979 +2016-07-01|74.0|-123.0|21.80938|-0.94028 +2016-07-01|74.0|-124.0|22.18489|-0.93906 +2016-07-01|74.0|-125.0|22.50008|-0.93637 +2016-07-01|74.0|-126.0|22.75867|-0.93243 +2016-07-01|74.0|-127.0|22.96421|-0.9274 +2016-07-01|74.0|-128.0|23.12|-0.92147 +2016-07-01|74.0|-129.0|23.22918|-0.91476 +2016-07-01|74.0|-130.0|23.29466|-0.9074 +2016-07-01|74.0|-131.0|23.3192|-0.89948 +2016-07-01|74.0|-132.0|23.30535|-0.89111 +2016-07-01|74.0|-133.0|23.25551|-0.88234 +2016-07-01|74.0|-134.0|23.17191|-0.87326 +2016-07-01|74.0|-135.0|23.05663|-0.8639 +2016-07-01|74.0|-136.0|22.91161|-0.85432 +2016-07-01|74.0|-137.0|22.73866|-0.84456 +2016-07-01|74.0|-138.0|22.53947|-0.83465 +2016-07-01|74.0|-139.0|22.31562|-0.82461 +2016-07-01|74.0|-140.0|22.06856|-0.81447 +2016-07-01|74.0|-141.0|21.79968|-0.80425 +2016-07-01|74.0|-142.0|21.51025|-0.79397 +2016-07-01|74.0|-143.0|21.20147|-0.78363 +2016-07-01|74.0|-144.0|20.87446|-0.77325 +2016-07-01|74.0|-145.0|20.53027|-0.76284 +2016-07-01|74.0|-146.0|20.16988|-0.7524 +2016-07-01|74.0|-147.0|19.79421|-0.74194 +2016-07-01|74.0|-148.0|19.40413|-0.73146 +2016-07-01|74.0|-149.0|19.00045|-0.72097 +2016-07-01|74.0|-150.0|18.58393|-0.71046 +2016-07-01|74.0|-151.0|18.1553|-0.69995 +2016-07-01|74.0|-152.0|17.71524|-0.68943 +2016-07-01|74.0|-153.0|17.26439|-0.6789 +2016-07-01|74.0|-154.0|16.80335|-0.66836 +2016-07-01|74.0|-155.0|16.33271|-0.65782 +2016-07-01|74.0|-156.0|15.85301|-0.64728 +2016-07-01|74.0|-157.0|15.36476|-0.63673 +2016-07-01|74.0|-158.0|14.86847|-0.62617 +2016-07-01|74.0|-159.0|14.36461|-0.61561 +2016-07-01|74.0|-160.0|13.85362|-0.60505 +2016-07-01|74.0|-161.0|13.33593|-0.59448 +2016-07-01|74.0|-162.0|12.81197|-0.58392 +2016-07-01|74.0|-163.0|12.28212|-0.57335 +2016-07-01|74.0|-164.0|11.74677|-0.56278 +2016-07-01|74.0|-165.0|11.20629|-0.55222 +2016-07-01|74.0|-166.0|10.66104|-0.54166 +2016-07-01|74.0|-167.0|10.11136|-0.5311 +2016-07-01|74.0|-168.0|9.55759|-0.52056 +2016-07-01|74.0|-169.0|9.00005|-0.51002 +2016-07-01|74.0|-170.0|8.43908|-0.49949 +2016-07-01|74.0|-171.0|7.87497|-0.48899 +2016-07-01|74.0|-172.0|7.30805|-0.4785 +2016-07-01|74.0|-173.0|6.73862|-0.46803 +2016-07-01|74.0|-174.0|6.16697|-0.4576 +2016-07-01|74.0|-175.0|5.59341|-0.44719 +2016-07-01|74.0|-176.0|5.01824|-0.43681 +2016-07-01|74.0|-177.0|4.44174|-0.42648 +2016-07-01|74.0|-178.0|3.86421|-0.41619 +2016-07-01|74.0|-179.0|3.28595|-0.40595 +2016-07-01|75.0|0.0|-3.25976|0.33115 +2016-07-01|75.0|1.0|-2.55179|0.32864 +2016-07-01|75.0|2.0|-1.84451|0.32619 +2016-07-01|75.0|3.0|-1.13803|0.3238 +2016-07-01|75.0|4.0|-0.43245|0.32146 +2016-07-01|75.0|5.0|0.27213|0.31916 +2016-07-01|75.0|6.0|0.97559|0.31692 +2016-07-01|75.0|7.0|1.67783|0.31473 +2016-07-01|75.0|8.0|2.37875|0.31258 +2016-07-01|75.0|9.0|3.07823|0.31048 +2016-07-01|75.0|10.0|3.77616|0.30842 +2016-07-01|75.0|11.0|4.47243|0.3064 +2016-07-01|75.0|12.0|5.16693|0.30443 +2016-07-01|75.0|13.0|5.85955|0.30249 +2016-07-01|75.0|14.0|6.55015|0.3006 +2016-07-01|75.0|15.0|7.23863|0.29874 +2016-07-01|75.0|16.0|7.92485|0.29692 +2016-07-01|75.0|17.0|8.60869|0.29513 +2016-07-01|75.0|18.0|9.29002|0.29338 +2016-07-01|75.0|19.0|9.96869|0.29166 +2016-07-01|75.0|20.0|10.64457|0.28997 +2016-07-01|75.0|21.0|11.31751|0.28831 +2016-07-01|75.0|22.0|11.98736|0.28668 +2016-07-01|75.0|23.0|12.65397|0.28507 +2016-07-01|75.0|24.0|13.31717|0.2835 +2016-07-01|75.0|25.0|13.9768|0.28194 +2016-07-01|75.0|26.0|14.63268|0.28041 +2016-07-01|75.0|27.0|15.28462|0.27891 +2016-07-01|75.0|28.0|15.93245|0.27742 +2016-07-01|75.0|29.0|16.57596|0.27595 +2016-07-01|75.0|30.0|17.21494|0.27451 +2016-07-01|75.0|31.0|17.84919|0.27307 +2016-07-01|75.0|32.0|18.47848|0.27166 +2016-07-01|75.0|33.0|19.10257|0.27026 +2016-07-01|75.0|34.0|19.72123|0.26887 +2016-07-01|75.0|35.0|20.3342|0.26749 +2016-07-01|75.0|36.0|20.94121|0.26612 +2016-07-01|75.0|37.0|21.54199|0.26476 +2016-07-01|75.0|38.0|22.13624|0.2634 +2016-07-01|75.0|39.0|22.72366|0.26205 +2016-07-01|75.0|40.0|23.30393|0.2607 +2016-07-01|75.0|41.0|23.87672|0.25936 +2016-07-01|75.0|42.0|24.44168|0.25801 +2016-07-01|75.0|43.0|24.99844|0.25666 +2016-07-01|75.0|44.0|25.54661|0.2553 +2016-07-01|75.0|45.0|26.08579|0.25393 +2016-07-01|75.0|46.0|26.61556|0.25256 +2016-07-01|75.0|47.0|27.13547|0.25117 +2016-07-01|75.0|48.0|27.64506|0.24976 +2016-07-01|75.0|49.0|28.14382|0.24834 +2016-07-01|75.0|50.0|28.63124|0.24689 +2016-07-01|75.0|51.0|29.10678|0.24542 +2016-07-01|75.0|52.0|29.56985|0.24392 +2016-07-01|75.0|53.0|30.01986|0.24238 +2016-07-01|75.0|54.0|30.45616|0.24081 +2016-07-01|75.0|55.0|30.87807|0.2392 +2016-07-01|75.0|56.0|31.28489|0.23753 +2016-07-01|75.0|57.0|31.67587|0.23582 +2016-07-01|75.0|58.0|32.0502|0.23404 +2016-07-01|75.0|59.0|32.40706|0.23221 +2016-07-01|75.0|60.0|32.74555|0.23029 +2016-07-01|75.0|61.0|33.06474|0.2283 +2016-07-01|75.0|62.0|33.36363|0.22623 +2016-07-01|75.0|63.0|33.64119|0.22405 +2016-07-01|75.0|64.0|33.89629|0.22178 +2016-07-01|75.0|65.0|34.12777|0.21939 +2016-07-01|75.0|66.0|34.33439|0.21687 +2016-07-01|75.0|67.0|34.51485|0.21421 +2016-07-01|75.0|68.0|34.66775|0.21141 +2016-07-01|75.0|69.0|34.79163|0.20844 +2016-07-01|75.0|70.0|34.88497|0.2053 +2016-07-01|75.0|71.0|34.94614|0.20196 +2016-07-01|75.0|72.0|34.97342|0.19841 +2016-07-01|75.0|73.0|34.96504|0.19464 +2016-07-01|75.0|74.0|34.91911|0.19062 +2016-07-01|75.0|75.0|34.83367|0.18633 +2016-07-01|75.0|76.0|34.70668|0.18176 +2016-07-01|75.0|77.0|34.536|0.17688 +2016-07-01|75.0|78.0|34.31944|0.17167 +2016-07-01|75.0|79.0|34.05475|0.16611 +2016-07-01|75.0|80.0|33.7396|0.16017 +2016-07-01|75.0|81.0|33.37165|0.15383 +2016-07-01|75.0|82.0|32.94855|0.14707 +2016-07-01|75.0|83.0|32.46795|0.13986 +2016-07-01|75.0|84.0|31.92755|0.13218 +2016-07-01|75.0|85.0|31.32515|0.12402 +2016-07-01|75.0|86.0|30.65867|0.11537 +2016-07-01|75.0|87.0|29.92624|0.1062 +2016-07-01|75.0|88.0|29.12624|0.09653 +2016-07-01|75.0|89.0|28.25736|0.08635 +2016-07-01|75.0|90.0|27.31872|0.07568 +2016-07-01|75.0|91.0|26.30994|0.06454 +2016-07-01|75.0|92.0|25.2312|0.05297 +2016-07-01|75.0|93.0|24.08338|0.04102 +2016-07-01|75.0|94.0|22.86811|0.02875 +2016-07-01|75.0|95.0|21.58786|0.01624 +2016-07-01|75.0|96.0|20.24601|0.00358 +2016-07-01|75.0|97.0|18.84688|-0.00911 +2016-07-01|75.0|98.0|17.39575|-0.02173 +2016-07-01|75.0|99.0|15.89886|-0.03414 +2016-07-01|75.0|100.0|14.36331|-0.04621 +2016-07-01|75.0|101.0|12.79703|-0.05781 +2016-07-01|75.0|102.0|11.20859|-0.06882 +2016-07-01|75.0|103.0|9.60706|-0.07913 +2016-07-01|75.0|104.0|8.00182|-0.08862 +2016-07-01|75.0|105.0|6.40236|-0.09722 +2016-07-01|75.0|106.0|4.81804|-0.10487 +2016-07-01|75.0|107.0|3.2579|-0.11154 +2016-07-01|75.0|108.0|1.73045|-0.11721 +2016-07-01|75.0|109.0|0.24355|-0.12191 +2016-07-01|75.0|110.0|-1.19578|-0.12566 +2016-07-01|75.0|111.0|-2.58139|-0.12853 +2016-07-01|75.0|112.0|-3.90809|-0.13057 +2016-07-01|75.0|113.0|-5.17167|-0.13189 +2016-07-01|75.0|114.0|-6.36884|-0.13255 +2016-07-01|75.0|115.0|-7.49724|-0.13266 +2016-07-01|75.0|116.0|-8.55532|-0.13231 +2016-07-01|75.0|117.0|-9.54232|-0.13159 +2016-07-01|75.0|118.0|-10.45813|-0.13058 +2016-07-01|75.0|119.0|-11.30324|-0.12937 +2016-07-01|75.0|120.0|-12.0786|-0.12804 +2016-07-01|75.0|121.0|-12.78561|-0.12664 +2016-07-01|75.0|122.0|-13.42595|-0.12524 +2016-07-01|75.0|123.0|-14.0016|-0.1239 +2016-07-01|75.0|124.0|-14.51469|-0.12265 +2016-07-01|75.0|125.0|-14.96752|-0.12154 +2016-07-01|75.0|126.0|-15.36244|-0.1206 +2016-07-01|75.0|127.0|-15.70188|-0.11986 +2016-07-01|75.0|128.0|-15.98826|-0.11934 +2016-07-01|75.0|129.0|-16.22401|-0.11907 +2016-07-01|75.0|130.0|-16.41151|-0.11905 +2016-07-01|75.0|131.0|-16.5531|-0.1193 +2016-07-01|75.0|132.0|-16.65105|-0.11982 +2016-07-01|75.0|133.0|-16.70756|-0.12064 +2016-07-01|75.0|134.0|-16.72475|-0.12174 +2016-07-01|75.0|135.0|-16.70467|-0.12313 +2016-07-01|75.0|136.0|-16.64926|-0.12482 +2016-07-01|75.0|137.0|-16.56041|-0.1268 +2016-07-01|75.0|138.0|-16.4399|-0.12907 +2016-07-01|75.0|139.0|-16.28942|-0.13164 +2016-07-01|75.0|140.0|-16.1106|-0.1345 +2016-07-01|75.0|141.0|-15.90498|-0.13764 +2016-07-01|75.0|142.0|-15.67403|-0.14107 +2016-07-01|75.0|143.0|-15.41913|-0.14478 +2016-07-01|75.0|144.0|-15.14161|-0.14876 +2016-07-01|75.0|145.0|-14.84272|-0.15302 +2016-07-01|75.0|146.0|-14.52365|-0.15754 +2016-07-01|75.0|147.0|-14.18554|-0.16233 +2016-07-01|75.0|148.0|-13.82944|-0.16737 +2016-07-01|75.0|149.0|-13.45639|-0.17267 +2016-07-01|75.0|150.0|-13.06736|-0.17822 +2016-07-01|75.0|151.0|-12.66325|-0.184 +2016-07-01|75.0|152.0|-12.24495|-0.19003 +2016-07-01|75.0|153.0|-11.81329|-0.19628 +2016-07-01|75.0|154.0|-11.36906|-0.20276 +2016-07-01|75.0|155.0|-10.91301|-0.20946 +2016-07-01|75.0|156.0|-10.44587|-0.21638 +2016-07-01|75.0|157.0|-9.96831|-0.2235 +2016-07-01|75.0|158.0|-9.48099|-0.23083 +2016-07-01|75.0|159.0|-8.98454|-0.23836 +2016-07-01|75.0|160.0|-8.47955|-0.24608 +2016-07-01|75.0|161.0|-7.96659|-0.25398 +2016-07-01|75.0|162.0|-7.44621|-0.26206 +2016-07-01|75.0|163.0|-6.91893|-0.27032 +2016-07-01|75.0|164.0|-6.38525|-0.27875 +2016-07-01|75.0|165.0|-5.84565|-0.28733 +2016-07-01|75.0|166.0|-5.30061|-0.29608 +2016-07-01|75.0|167.0|-4.75056|-0.30497 +2016-07-01|75.0|168.0|-4.19593|-0.31401 +2016-07-01|75.0|169.0|-3.63714|-0.32319 +2016-07-01|75.0|170.0|-3.07459|-0.33251 +2016-07-01|75.0|171.0|-2.50867|-0.34195 +2016-07-01|75.0|172.0|-1.93975|-0.35151 +2016-07-01|75.0|173.0|-1.36821|-0.36119 +2016-07-01|75.0|174.0|-0.79438|-0.37098 +2016-07-01|75.0|175.0|-0.21863|-0.38088 +2016-07-01|75.0|176.0|0.35872|-0.39088 +2016-07-01|75.0|177.0|0.93733|-0.40098 +2016-07-01|75.0|178.0|1.51688|-0.41116 +2016-07-01|75.0|179.0|2.09704|-0.42143 +2016-07-01|75.0|-1.0|-3.96832|0.33371 +2016-07-01|75.0|-2.0|-4.67736|0.33633 +2016-07-01|75.0|-3.0|-5.38677|0.33901 +2016-07-01|75.0|-4.0|-6.09645|0.34175 +2016-07-01|75.0|-5.0|-6.80629|0.34455 +2016-07-01|75.0|-6.0|-7.51618|0.34742 +2016-07-01|75.0|-7.0|-8.22601|0.35035 +2016-07-01|75.0|-8.0|-8.93566|0.35335 +2016-07-01|75.0|-9.0|-9.64503|0.35642 +2016-07-01|75.0|-10.0|-10.35398|0.35957 +2016-07-01|75.0|-11.0|-11.06242|0.36278 +2016-07-01|75.0|-12.0|-11.7702|0.36608 +2016-07-01|75.0|-13.0|-12.47722|0.36945 +2016-07-01|75.0|-14.0|-13.18334|0.37289 +2016-07-01|75.0|-15.0|-13.88843|0.37642 +2016-07-01|75.0|-16.0|-14.59235|0.38004 +2016-07-01|75.0|-17.0|-15.29497|0.38374 +2016-07-01|75.0|-18.0|-15.99616|0.38753 +2016-07-01|75.0|-19.0|-16.69575|0.39141 +2016-07-01|75.0|-20.0|-17.3936|0.39538 +2016-07-01|75.0|-21.0|-18.08956|0.39945 +2016-07-01|75.0|-22.0|-18.78346|0.40362 +2016-07-01|75.0|-23.0|-19.47515|0.40789 +2016-07-01|75.0|-24.0|-20.16444|0.41227 +2016-07-01|75.0|-25.0|-20.85116|0.41675 +2016-07-01|75.0|-26.0|-21.53512|0.42135 +2016-07-01|75.0|-27.0|-22.21614|0.42606 +2016-07-01|75.0|-28.0|-22.89402|0.43089 +2016-07-01|75.0|-29.0|-23.56854|0.43584 +2016-07-01|75.0|-30.0|-24.23949|0.44092 +2016-07-01|75.0|-31.0|-24.90665|0.44613 +2016-07-01|75.0|-32.0|-25.56979|0.45147 +2016-07-01|75.0|-33.0|-26.22866|0.45696 +2016-07-01|75.0|-34.0|-26.883|0.46258 +2016-07-01|75.0|-35.0|-27.53255|0.46836 +2016-07-01|75.0|-36.0|-28.17703|0.47429 +2016-07-01|75.0|-37.0|-28.81614|0.48038 +2016-07-01|75.0|-38.0|-29.44959|0.48664 +2016-07-01|75.0|-39.0|-30.07703|0.49307 +2016-07-01|75.0|-40.0|-30.69815|0.49968 +2016-07-01|75.0|-41.0|-31.31258|0.50646 +2016-07-01|75.0|-42.0|-31.91994|0.51345 +2016-07-01|75.0|-43.0|-32.51985|0.52062 +2016-07-01|75.0|-44.0|-33.11188|0.528 +2016-07-01|75.0|-45.0|-33.69559|0.5356 +2016-07-01|75.0|-46.0|-34.27052|0.54341 +2016-07-01|75.0|-47.0|-34.83618|0.55145 +2016-07-01|75.0|-48.0|-35.39205|0.55973 +2016-07-01|75.0|-49.0|-35.93758|0.56825 +2016-07-01|75.0|-50.0|-36.47218|0.57703 +2016-07-01|75.0|-51.0|-36.99523|0.58606 +2016-07-01|75.0|-52.0|-37.50608|0.59537 +2016-07-01|75.0|-53.0|-38.00402|0.60495 +2016-07-01|75.0|-54.0|-38.48831|0.61482 +2016-07-01|75.0|-55.0|-38.95816|0.62499 +2016-07-01|75.0|-56.0|-39.41271|0.63547 +2016-07-01|75.0|-57.0|-39.85108|0.64625 +2016-07-01|75.0|-58.0|-40.27228|0.65736 +2016-07-01|75.0|-59.0|-40.67531|0.6688 +2016-07-01|75.0|-60.0|-41.05905|0.68057 +2016-07-01|75.0|-61.0|-41.42233|0.69268 +2016-07-01|75.0|-62.0|-41.76388|0.70514 +2016-07-01|75.0|-63.0|-42.08236|0.71794 +2016-07-01|75.0|-64.0|-42.37632|0.73109 +2016-07-01|75.0|-65.0|-42.6442|0.74458 +2016-07-01|75.0|-66.0|-42.88434|0.7584 +2016-07-01|75.0|-67.0|-43.09493|0.77255 +2016-07-01|75.0|-68.0|-43.27406|0.78701 +2016-07-01|75.0|-69.0|-43.41966|0.80176 +2016-07-01|75.0|-70.0|-43.52951|0.81677 +2016-07-01|75.0|-71.0|-43.60122|0.832 +2016-07-01|75.0|-72.0|-43.63222|0.8474 +2016-07-01|75.0|-73.0|-43.61976|0.86291 +2016-07-01|75.0|-74.0|-43.56089|0.87845 +2016-07-01|75.0|-75.0|-43.45246|0.89393 +2016-07-01|75.0|-76.0|-43.29107|0.90923 +2016-07-01|75.0|-77.0|-43.07313|0.92422 +2016-07-01|75.0|-78.0|-42.7948|0.93872 +2016-07-01|75.0|-79.0|-42.452|0.95252 +2016-07-01|75.0|-80.0|-42.04045|0.9654 +2016-07-01|75.0|-81.0|-41.55563|0.97706 +2016-07-01|75.0|-82.0|-40.99285|0.98716 +2016-07-01|75.0|-83.0|-40.34726|0.99532 +2016-07-01|75.0|-84.0|-39.61391|1.00108 +2016-07-01|75.0|-85.0|-38.78782|1.00393 +2016-07-01|75.0|-86.0|-37.86407|1.00329 +2016-07-01|75.0|-87.0|-36.83795|0.99852 +2016-07-01|75.0|-88.0|-35.70509|0.98891 +2016-07-01|75.0|-89.0|-34.46165|0.9737 +2016-07-01|75.0|-90.0|-33.10458|0.95212 +2016-07-01|75.0|-91.0|-31.63186|0.92337 +2016-07-01|75.0|-92.0|-30.04277|0.88672 +2016-07-01|75.0|-93.0|-28.33824|0.8415 +2016-07-01|75.0|-94.0|-26.52113|0.78718 +2016-07-01|75.0|-95.0|-24.59651|0.72345 +2016-07-01|75.0|-96.0|-22.57186|0.65027 +2016-07-01|75.0|-97.0|-20.45723|0.56791 +2016-07-01|75.0|-98.0|-18.26519|0.47703 +2016-07-01|75.0|-99.0|-16.01068|0.37866 +2016-07-01|75.0|-100.0|-13.71073|0.27418 +2016-07-01|75.0|-101.0|-11.38387|0.16531 +2016-07-01|75.0|-102.0|-9.04963|0.05396 +2016-07-01|75.0|-103.0|-6.72773|-0.05783 +2016-07-01|75.0|-104.0|-4.43742|-0.16805 +2016-07-01|75.0|-105.0|-2.19679|-0.27481 +2016-07-01|75.0|-106.0|-0.02215|-0.37647 +2016-07-01|75.0|-107.0|2.07233|-0.47169 +2016-07-01|75.0|-108.0|4.07499|-0.55949 +2016-07-01|75.0|-109.0|5.97666|-0.63921 +2016-07-01|75.0|-110.0|7.77074|-0.71056 +2016-07-01|75.0|-111.0|9.45295|-0.77349 +2016-07-01|75.0|-112.0|11.02113|-0.82821 +2016-07-01|75.0|-113.0|12.47496|-0.87511 +2016-07-01|75.0|-114.0|13.81563|-0.9147 +2016-07-01|75.0|-115.0|15.04553|-0.94757 +2016-07-01|75.0|-116.0|16.16801|-0.97432 +2016-07-01|75.0|-117.0|17.18708|-0.9956 +2016-07-01|75.0|-118.0|18.10722|-1.01202 +2016-07-01|75.0|-119.0|18.93322|-1.02415 +2016-07-01|75.0|-120.0|19.67|-1.03255 +2016-07-01|75.0|-121.0|20.32249|-1.03769 +2016-07-01|75.0|-122.0|20.8956|-1.04004 +2016-07-01|75.0|-123.0|21.3941|-1.03998 +2016-07-01|75.0|-124.0|21.82257|-1.03786 +2016-07-01|75.0|-125.0|22.18542|-1.034 +2016-07-01|75.0|-126.0|22.48683|-1.02866 +2016-07-01|75.0|-127.0|22.73076|-1.02207 +2016-07-01|75.0|-128.0|22.92091|-1.01444 +2016-07-01|75.0|-129.0|23.06079|-1.00595 +2016-07-01|75.0|-130.0|23.15366|-0.99672 +2016-07-01|75.0|-131.0|23.20257|-0.98691 +2016-07-01|75.0|-132.0|23.21036|-0.9766 +2016-07-01|75.0|-133.0|23.17969|-0.9659 +2016-07-01|75.0|-134.0|23.11302|-0.95488 +2016-07-01|75.0|-135.0|23.01264|-0.9436 +2016-07-01|75.0|-136.0|22.88069|-0.93213 +2016-07-01|75.0|-137.0|22.71915|-0.9205 +2016-07-01|75.0|-138.0|22.52987|-0.90875 +2016-07-01|75.0|-139.0|22.31456|-0.89693 +2016-07-01|75.0|-140.0|22.07483|-0.88504 +2016-07-01|75.0|-141.0|21.81217|-0.87312 +2016-07-01|75.0|-142.0|21.52796|-0.86118 +2016-07-01|75.0|-143.0|21.22349|-0.84924 +2016-07-01|75.0|-144.0|20.89997|-0.83731 +2016-07-01|75.0|-145.0|20.55854|-0.82539 +2016-07-01|75.0|-146.0|20.20024|-0.81349 +2016-07-01|75.0|-147.0|19.82607|-0.80163 +2016-07-01|75.0|-148.0|19.43694|-0.78979 +2016-07-01|75.0|-149.0|19.03373|-0.77799 +2016-07-01|75.0|-150.0|18.61726|-0.76623 +2016-07-01|75.0|-151.0|18.18828|-0.75451 +2016-07-01|75.0|-152.0|17.74752|-0.74282 +2016-07-01|75.0|-153.0|17.29567|-0.73118 +2016-07-01|75.0|-154.0|16.83336|-0.71957 +2016-07-01|75.0|-155.0|16.3612|-0.70801 +2016-07-01|75.0|-156.0|15.87977|-0.69648 +2016-07-01|75.0|-157.0|15.38962|-0.68498 +2016-07-01|75.0|-158.0|14.89126|-0.67353 +2016-07-01|75.0|-159.0|14.38519|-0.66211 +2016-07-01|75.0|-160.0|13.87187|-0.65073 +2016-07-01|75.0|-161.0|13.35177|-0.63938 +2016-07-01|75.0|-162.0|12.82531|-0.62807 +2016-07-01|75.0|-163.0|12.2929|-0.6168 +2016-07-01|75.0|-164.0|11.75495|-0.60556 +2016-07-01|75.0|-165.0|11.21183|-0.59436 +2016-07-01|75.0|-166.0|10.66393|-0.5832 +2016-07-01|75.0|-167.0|10.11159|-0.57207 +2016-07-01|75.0|-168.0|9.55518|-0.56098 +2016-07-01|75.0|-169.0|8.99502|-0.54994 +2016-07-01|75.0|-170.0|8.43145|-0.53893 +2016-07-01|75.0|-171.0|7.86479|-0.52797 +2016-07-01|75.0|-172.0|7.29537|-0.51706 +2016-07-01|75.0|-173.0|6.7235|-0.5062 +2016-07-01|75.0|-174.0|6.14948|-0.49539 +2016-07-01|75.0|-175.0|5.57363|-0.48463 +2016-07-01|75.0|-176.0|4.99625|-0.47393 +2016-07-01|75.0|-177.0|4.41764|-0.46329 +2016-07-01|75.0|-178.0|3.83812|-0.45272 +2016-07-01|75.0|-179.0|3.25797|-0.44222 +2016-07-01|76.0|0.0|-3.27113|0.3481 +2016-07-01|76.0|1.0|-2.54804|0.34554 +2016-07-01|76.0|2.0|-1.82558|0.34304 +2016-07-01|76.0|3.0|-1.10385|0.34059 +2016-07-01|76.0|4.0|-0.38296|0.3382 +2016-07-01|76.0|5.0|0.33699|0.33586 +2016-07-01|76.0|6.0|1.05591|0.33358 +2016-07-01|76.0|7.0|1.77368|0.33135 +2016-07-01|76.0|8.0|2.4902|0.32916 +2016-07-01|76.0|9.0|3.20536|0.32703 +2016-07-01|76.0|10.0|3.91907|0.32494 +2016-07-01|76.0|11.0|4.6312|0.3229 +2016-07-01|76.0|12.0|5.34165|0.3209 +2016-07-01|76.0|13.0|6.05031|0.31895 +2016-07-01|76.0|14.0|6.75706|0.31704 +2016-07-01|76.0|15.0|7.46177|0.31517 +2016-07-01|76.0|16.0|8.16434|0.31334 +2016-07-01|76.0|17.0|8.86463|0.31155 +2016-07-01|76.0|18.0|9.56251|0.3098 +2016-07-01|76.0|19.0|10.25787|0.30808 +2016-07-01|76.0|20.0|10.95055|0.3064 +2016-07-01|76.0|21.0|11.64042|0.30475 +2016-07-01|76.0|22.0|12.32733|0.30313 +2016-07-01|76.0|23.0|13.01114|0.30155 +2016-07-01|76.0|24.0|13.69169|0.3 +2016-07-01|76.0|25.0|14.36881|0.29847 +2016-07-01|76.0|26.0|15.04235|0.29698 +2016-07-01|76.0|27.0|15.71212|0.29551 +2016-07-01|76.0|28.0|16.37796|0.29407 +2016-07-01|76.0|29.0|17.03966|0.29266 +2016-07-01|76.0|30.0|17.69704|0.29126 +2016-07-01|76.0|31.0|18.34989|0.2899 +2016-07-01|76.0|32.0|18.998|0.28855 +2016-07-01|76.0|33.0|19.64115|0.28722 +2016-07-01|76.0|34.0|20.27912|0.28591 +2016-07-01|76.0|35.0|20.91165|0.28462 +2016-07-01|76.0|36.0|21.5385|0.28335 +2016-07-01|76.0|37.0|22.1594|0.28209 +2016-07-01|76.0|38.0|22.77409|0.28085 +2016-07-01|76.0|39.0|23.38228|0.27961 +2016-07-01|76.0|40.0|23.98365|0.27839 +2016-07-01|76.0|41.0|24.57791|0.27718 +2016-07-01|76.0|42.0|25.16471|0.27598 +2016-07-01|76.0|43.0|25.74372|0.27478 +2016-07-01|76.0|44.0|26.31457|0.27358 +2016-07-01|76.0|45.0|26.87687|0.27239 +2016-07-01|76.0|46.0|27.43023|0.2712 +2016-07-01|76.0|47.0|27.97423|0.27 +2016-07-01|76.0|48.0|28.50842|0.2688 +2016-07-01|76.0|49.0|29.03234|0.2676 +2016-07-01|76.0|50.0|29.54549|0.26638 +2016-07-01|76.0|51.0|30.04737|0.26515 +2016-07-01|76.0|52.0|30.53741|0.2639 +2016-07-01|76.0|53.0|31.01505|0.26264 +2016-07-01|76.0|54.0|31.47969|0.26135 +2016-07-01|76.0|55.0|31.93068|0.26004 +2016-07-01|76.0|56.0|32.36733|0.25869 +2016-07-01|76.0|57.0|32.78895|0.25731 +2016-07-01|76.0|58.0|33.19476|0.25588 +2016-07-01|76.0|59.0|33.58398|0.25441 +2016-07-01|76.0|60.0|33.95574|0.25289 +2016-07-01|76.0|61.0|34.30916|0.25131 +2016-07-01|76.0|62.0|34.64328|0.24966 +2016-07-01|76.0|63.0|34.95709|0.24794 +2016-07-01|76.0|64.0|35.24953|0.24614 +2016-07-01|76.0|65.0|35.51947|0.24425 +2016-07-01|76.0|66.0|35.7657|0.24225 +2016-07-01|76.0|67.0|35.98696|0.24015 +2016-07-01|76.0|68.0|36.18189|0.23792 +2016-07-01|76.0|69.0|36.34908|0.23555 +2016-07-01|76.0|70.0|36.48702|0.23304 +2016-07-01|76.0|71.0|36.59411|0.23036 +2016-07-01|76.0|72.0|36.66867|0.22749 +2016-07-01|76.0|73.0|36.70892|0.22443 +2016-07-01|76.0|74.0|36.71298|0.22115 +2016-07-01|76.0|75.0|36.67888|0.21763 +2016-07-01|76.0|76.0|36.60456|0.21385 +2016-07-01|76.0|77.0|36.48786|0.20979 +2016-07-01|76.0|78.0|36.32651|0.20542 +2016-07-01|76.0|79.0|36.11817|0.20071 +2016-07-01|76.0|80.0|35.86042|0.19563 +2016-07-01|76.0|81.0|35.55077|0.19016 +2016-07-01|76.0|82.0|35.18667|0.18427 +2016-07-01|76.0|83.0|34.76555|0.17792 +2016-07-01|76.0|84.0|34.28483|0.17108 +2016-07-01|76.0|85.0|33.74197|0.16372 +2016-07-01|76.0|86.0|33.1345|0.15582 +2016-07-01|76.0|87.0|32.46006|0.14735 +2016-07-01|76.0|88.0|31.7165|0.13827 +2016-07-01|76.0|89.0|30.90189|0.12858 +2016-07-01|76.0|90.0|30.01466|0.11826 +2016-07-01|76.0|91.0|29.05366|0.10732 +2016-07-01|76.0|92.0|28.01825|0.09575 +2016-07-01|76.0|93.0|26.90841|0.08358 +2016-07-01|76.0|94.0|25.72486|0.07085 +2016-07-01|76.0|95.0|24.46914|0.0576 +2016-07-01|76.0|96.0|23.14372|0.04391 +2016-07-01|76.0|97.0|21.75207|0.02986 +2016-07-01|76.0|98.0|20.29871|0.01556 +2016-07-01|76.0|99.0|18.78925|0.00114 +2016-07-01|76.0|100.0|17.23035|-0.01327 +2016-07-01|76.0|101.0|15.6297|-0.02752 +2016-07-01|76.0|102.0|13.99587|-0.04146 +2016-07-01|76.0|103.0|12.3382|-0.05495 +2016-07-01|76.0|104.0|10.66659|-0.06782 +2016-07-01|76.0|105.0|8.99128|-0.07996 +2016-07-01|76.0|106.0|7.32261|-0.09125 +2016-07-01|76.0|107.0|5.67076|-0.1016 +2016-07-01|76.0|108.0|4.04556|-0.11095 +2016-07-01|76.0|109.0|2.45619|-0.11926 +2016-07-01|76.0|110.0|0.91107|-0.12652 +2016-07-01|76.0|111.0|-0.58233|-0.13276 +2016-07-01|76.0|112.0|-2.01753|-0.13802 +2016-07-01|76.0|113.0|-3.38916|-0.14235 +2016-07-01|76.0|114.0|-4.69291|-0.14584 +2016-07-01|76.0|115.0|-5.92554|-0.14856 +2016-07-01|76.0|116.0|-7.08479|-0.15061 +2016-07-01|76.0|117.0|-8.1693|-0.15209 +2016-07-01|76.0|118.0|-9.17855|-0.15309 +2016-07-01|76.0|119.0|-10.1127|-0.1537 +2016-07-01|76.0|120.0|-10.97256|-0.15401 +2016-07-01|76.0|121.0|-11.75939|-0.1541 +2016-07-01|76.0|122.0|-12.47491|-0.15404 +2016-07-01|76.0|123.0|-13.12112|-0.15389 +2016-07-01|76.0|124.0|-13.70029|-0.15373 +2016-07-01|76.0|125.0|-14.21485|-0.15359 +2016-07-01|76.0|126.0|-14.66735|-0.15352 +2016-07-01|76.0|127.0|-15.0604|-0.15357 +2016-07-01|76.0|128.0|-15.39666|-0.15375 +2016-07-01|76.0|129.0|-15.67875|-0.15411 +2016-07-01|76.0|130.0|-15.90929|-0.15466 +2016-07-01|76.0|131.0|-16.09081|-0.15543 +2016-07-01|76.0|132.0|-16.22581|-0.15642 +2016-07-01|76.0|133.0|-16.31668|-0.15765 +2016-07-01|76.0|134.0|-16.36574|-0.15913 +2016-07-01|76.0|135.0|-16.37521|-0.16087 +2016-07-01|76.0|136.0|-16.34722|-0.16287 +2016-07-01|76.0|137.0|-16.2838|-0.16513 +2016-07-01|76.0|138.0|-16.18688|-0.16766 +2016-07-01|76.0|139.0|-16.05831|-0.17046 +2016-07-01|76.0|140.0|-15.89982|-0.17353 +2016-07-01|76.0|141.0|-15.71309|-0.17686 +2016-07-01|76.0|142.0|-15.49968|-0.18046 +2016-07-01|76.0|143.0|-15.26108|-0.18433 +2016-07-01|76.0|144.0|-14.99872|-0.18846 +2016-07-01|76.0|145.0|-14.71391|-0.19284 +2016-07-01|76.0|146.0|-14.40795|-0.19748 +2016-07-01|76.0|147.0|-14.08202|-0.20238 +2016-07-01|76.0|148.0|-13.73726|-0.20752 +2016-07-01|76.0|149.0|-13.37475|-0.2129 +2016-07-01|76.0|150.0|-12.99551|-0.21852 +2016-07-01|76.0|151.0|-12.60052|-0.22438 +2016-07-01|76.0|152.0|-12.19068|-0.23047 +2016-07-01|76.0|153.0|-11.76688|-0.23679 +2016-07-01|76.0|154.0|-11.32995|-0.24332 +2016-07-01|76.0|155.0|-10.88066|-0.25007 +2016-07-01|76.0|156.0|-10.41978|-0.25704 +2016-07-01|76.0|157.0|-9.94802|-0.26421 +2016-07-01|76.0|158.0|-9.46604|-0.27158 +2016-07-01|76.0|159.0|-8.97452|-0.27915 +2016-07-01|76.0|160.0|-8.47405|-0.28691 +2016-07-01|76.0|161.0|-7.96524|-0.29486 +2016-07-01|76.0|162.0|-7.44864|-0.30299 +2016-07-01|76.0|163.0|-6.92481|-0.31129 +2016-07-01|76.0|164.0|-6.39426|-0.31977 +2016-07-01|76.0|165.0|-5.85748|-0.32842 +2016-07-01|76.0|166.0|-5.31495|-0.33722 +2016-07-01|76.0|167.0|-4.76714|-0.34619 +2016-07-01|76.0|168.0|-4.21449|-0.3553 +2016-07-01|76.0|169.0|-3.65741|-0.36457 +2016-07-01|76.0|170.0|-3.09634|-0.37397 +2016-07-01|76.0|171.0|-2.53165|-0.38352 +2016-07-01|76.0|172.0|-1.96375|-0.3932 +2016-07-01|76.0|173.0|-1.39301|-0.40301 +2016-07-01|76.0|174.0|-0.81979|-0.41294 +2016-07-01|76.0|175.0|-0.24444|-0.42299 +2016-07-01|76.0|176.0|0.33268|-0.43316 +2016-07-01|76.0|177.0|0.91123|-0.44344 +2016-07-01|76.0|178.0|1.49088|-0.45383 +2016-07-01|76.0|179.0|2.0713|-0.46433 +2016-07-01|76.0|-1.0|-3.99475|0.35072 +2016-07-01|76.0|-2.0|-4.71879|0.3534 +2016-07-01|76.0|-3.0|-5.44317|0.35615 +2016-07-01|76.0|-4.0|-6.16776|0.35896 +2016-07-01|76.0|-5.0|-6.89247|0.36183 +2016-07-01|76.0|-6.0|-7.61719|0.36478 +2016-07-01|76.0|-7.0|-8.34182|0.36779 +2016-07-01|76.0|-8.0|-9.06625|0.37087 +2016-07-01|76.0|-9.0|-9.79037|0.37403 +2016-07-01|76.0|-10.0|-10.51407|0.37727 +2016-07-01|76.0|-11.0|-11.23723|0.38058 +2016-07-01|76.0|-12.0|-11.95975|0.38397 +2016-07-01|76.0|-13.0|-12.6815|0.38744 +2016-07-01|76.0|-14.0|-13.40236|0.391 +2016-07-01|76.0|-15.0|-14.12221|0.39464 +2016-07-01|76.0|-16.0|-14.84093|0.39837 +2016-07-01|76.0|-17.0|-15.55838|0.40219 +2016-07-01|76.0|-18.0|-16.27443|0.40611 +2016-07-01|76.0|-19.0|-16.98895|0.41012 +2016-07-01|76.0|-20.0|-17.70179|0.41423 +2016-07-01|76.0|-21.0|-18.41282|0.41845 +2016-07-01|76.0|-22.0|-19.12187|0.42277 +2016-07-01|76.0|-23.0|-19.8288|0.42719 +2016-07-01|76.0|-24.0|-20.53344|0.43173 +2016-07-01|76.0|-25.0|-21.23564|0.43639 +2016-07-01|76.0|-26.0|-21.93522|0.44116 +2016-07-01|76.0|-27.0|-22.63199|0.44605 +2016-07-01|76.0|-28.0|-23.32579|0.45107 +2016-07-01|76.0|-29.0|-24.01641|0.45623 +2016-07-01|76.0|-30.0|-24.70366|0.46151 +2016-07-01|76.0|-31.0|-25.38732|0.46694 +2016-07-01|76.0|-32.0|-26.06719|0.47251 +2016-07-01|76.0|-33.0|-26.74303|0.47823 +2016-07-01|76.0|-34.0|-27.41462|0.4841 +2016-07-01|76.0|-35.0|-28.08169|0.49014 +2016-07-01|76.0|-36.0|-28.744|0.49634 +2016-07-01|76.0|-37.0|-29.40128|0.5027 +2016-07-01|76.0|-38.0|-30.05324|0.50925 +2016-07-01|76.0|-39.0|-30.69959|0.51598 +2016-07-01|76.0|-40.0|-31.34|0.5229 +2016-07-01|76.0|-41.0|-31.97417|0.53002 +2016-07-01|76.0|-42.0|-32.60173|0.53735 +2016-07-01|76.0|-43.0|-33.22232|0.54488 +2016-07-01|76.0|-44.0|-33.83557|0.55264 +2016-07-01|76.0|-45.0|-34.44107|0.56062 +2016-07-01|76.0|-46.0|-35.03838|0.56884 +2016-07-01|76.0|-47.0|-35.62707|0.57731 +2016-07-01|76.0|-48.0|-36.20664|0.58603 +2016-07-01|76.0|-49.0|-36.7766|0.59502 +2016-07-01|76.0|-50.0|-37.3364|0.60428 +2016-07-01|76.0|-51.0|-37.88548|0.61382 +2016-07-01|76.0|-52.0|-38.42323|0.62366 +2016-07-01|76.0|-53.0|-38.94901|0.6338 +2016-07-01|76.0|-54.0|-39.46213|0.64426 +2016-07-01|76.0|-55.0|-39.96187|0.65504 +2016-07-01|76.0|-56.0|-40.44745|0.66616 +2016-07-01|76.0|-57.0|-40.91803|0.67763 +2016-07-01|76.0|-58.0|-41.37274|0.68945 +2016-07-01|76.0|-59.0|-41.81062|0.70164 +2016-07-01|76.0|-60.0|-42.23066|0.71421 +2016-07-01|76.0|-61.0|-42.63179|0.72716 +2016-07-01|76.0|-62.0|-43.01283|0.7405 +2016-07-01|76.0|-63.0|-43.37254|0.75425 +2016-07-01|76.0|-64.0|-43.70959|0.76839 +2016-07-01|76.0|-65.0|-44.02253|0.78295 +2016-07-01|76.0|-66.0|-44.30982|0.79791 +2016-07-01|76.0|-67.0|-44.56979|0.81327 +2016-07-01|76.0|-68.0|-44.80067|0.82903 +2016-07-01|76.0|-69.0|-45.00053|0.84516 +2016-07-01|76.0|-70.0|-45.16728|0.86167 +2016-07-01|76.0|-71.0|-45.2987|0.87851 +2016-07-01|76.0|-72.0|-45.39238|0.89565 +2016-07-01|76.0|-73.0|-45.44573|0.91304 +2016-07-01|76.0|-74.0|-45.45594|0.93063 +2016-07-01|76.0|-75.0|-45.42002|0.94833 +2016-07-01|76.0|-76.0|-45.33473|0.96606 +2016-07-01|76.0|-77.0|-45.19659|0.98369 +2016-07-01|76.0|-78.0|-45.00189|1.00108 +2016-07-01|76.0|-79.0|-44.74663|1.01805 +2016-07-01|76.0|-80.0|-44.42657|1.03438 +2016-07-01|76.0|-81.0|-44.0372|1.04983 +2016-07-01|76.0|-82.0|-43.57373|1.06409 +2016-07-01|76.0|-83.0|-43.03115|1.07678 +2016-07-01|76.0|-84.0|-42.40424|1.08749 +2016-07-01|76.0|-85.0|-41.68759|1.09571 +2016-07-01|76.0|-86.0|-40.87571|1.10086 +2016-07-01|76.0|-87.0|-39.96307|1.1023 +2016-07-01|76.0|-88.0|-38.9443|1.09928 +2016-07-01|76.0|-89.0|-37.81424|1.09097 +2016-07-01|76.0|-90.0|-36.56826|1.0765 +2016-07-01|76.0|-91.0|-35.2024|1.05491 +2016-07-01|76.0|-92.0|-33.71373|1.02526 +2016-07-01|76.0|-93.0|-32.10064|0.98659 +2016-07-01|76.0|-94.0|-30.36319|0.93805 +2016-07-01|76.0|-95.0|-28.50353|0.87893 +2016-07-01|76.0|-96.0|-26.52615|0.80875 +2016-07-01|76.0|-97.0|-24.43829|0.72735 +2016-07-01|76.0|-98.0|-22.25005|0.63496 +2016-07-01|76.0|-99.0|-19.97445|0.53226 +2016-07-01|76.0|-100.0|-17.62733|0.42042 +2016-07-01|76.0|-101.0|-15.22703|0.30109 +2016-07-01|76.0|-102.0|-12.7938|0.17632 +2016-07-01|76.0|-103.0|-10.34914|0.04846 +2016-07-01|76.0|-104.0|-7.91496|-0.07998 +2016-07-01|76.0|-105.0|-5.51271|-0.2065 +2016-07-01|76.0|-106.0|-3.1626|-0.32879 +2016-07-01|76.0|-107.0|-0.88284|-0.44481 +2016-07-01|76.0|-108.0|1.31083|-0.55295 +2016-07-01|76.0|-109.0|3.40551|-0.65201 +2016-07-01|76.0|-110.0|5.39121|-0.74126 +2016-07-01|76.0|-111.0|7.26083|-0.82039 +2016-07-01|76.0|-112.0|9.00996|-0.88945 +2016-07-01|76.0|-113.0|10.63656|-0.94874 +2016-07-01|76.0|-114.0|12.14061|-0.99882 +2016-07-01|76.0|-115.0|13.52378|-1.04036 +2016-07-01|76.0|-116.0|14.78905|-1.07411 +2016-07-01|76.0|-117.0|15.94037|-1.10087 +2016-07-01|76.0|-118.0|16.9824|-1.12142 +2016-07-01|76.0|-119.0|17.92028|-1.13651 +2016-07-01|76.0|-120.0|18.75939|-1.14684 +2016-07-01|76.0|-121.0|19.50521|-1.15307 +2016-07-01|76.0|-122.0|20.16322|-1.15578 +2016-07-01|76.0|-123.0|20.73878|-1.15548 +2016-07-01|76.0|-124.0|21.23711|-1.15264 +2016-07-01|76.0|-125.0|21.66316|-1.14766 +2016-07-01|76.0|-126.0|22.02169|-1.14088 +2016-07-01|76.0|-127.0|22.31717|-1.13261 +2016-07-01|76.0|-128.0|22.5538|-1.1231 +2016-07-01|76.0|-129.0|22.73554|-1.11258 +2016-07-01|76.0|-130.0|22.86608|-1.10123 +2016-07-01|76.0|-131.0|22.94885|-1.08922 +2016-07-01|76.0|-132.0|22.98704|-1.07668 +2016-07-01|76.0|-133.0|22.98363|-1.06372 +2016-07-01|76.0|-134.0|22.94139|-1.05044 +2016-07-01|76.0|-135.0|22.86286|-1.03692 +2016-07-01|76.0|-136.0|22.75042|-1.02323 +2016-07-01|76.0|-137.0|22.60628|-1.00942 +2016-07-01|76.0|-138.0|22.43249|-0.99553 +2016-07-01|76.0|-139.0|22.23093|-0.98161 +2016-07-01|76.0|-140.0|22.00338|-0.96768 +2016-07-01|76.0|-141.0|21.75146|-0.95377 +2016-07-01|76.0|-142.0|21.4767|-0.93991 +2016-07-01|76.0|-143.0|21.18052|-0.92609 +2016-07-01|76.0|-144.0|20.86423|-0.91235 +2016-07-01|76.0|-145.0|20.52907|-0.89868 +2016-07-01|76.0|-146.0|20.17617|-0.8851 +2016-07-01|76.0|-147.0|19.8066|-0.87161 +2016-07-01|76.0|-148.0|19.42138|-0.8582 +2016-07-01|76.0|-149.0|19.02143|-0.8449 +2016-07-01|76.0|-150.0|18.60763|-0.83169 +2016-07-01|76.0|-151.0|18.18081|-0.81857 +2016-07-01|76.0|-152.0|17.74175|-0.80555 +2016-07-01|76.0|-153.0|17.29116|-0.79263 +2016-07-01|76.0|-154.0|16.82973|-0.77979 +2016-07-01|76.0|-155.0|16.35812|-0.76705 +2016-07-01|76.0|-156.0|15.87694|-0.7544 +2016-07-01|76.0|-157.0|15.38677|-0.74184 +2016-07-01|76.0|-158.0|14.88815|-0.72936 +2016-07-01|76.0|-159.0|14.38162|-0.71697 +2016-07-01|76.0|-160.0|13.86767|-0.70466 +2016-07-01|76.0|-161.0|13.34677|-0.69243 +2016-07-01|76.0|-162.0|12.81939|-0.68028 +2016-07-01|76.0|-163.0|12.28595|-0.66821 +2016-07-01|76.0|-164.0|11.74688|-0.65621 +2016-07-01|76.0|-165.0|11.20257|-0.64429 +2016-07-01|76.0|-166.0|10.65343|-0.63245 +2016-07-01|76.0|-167.0|10.09981|-0.62068 +2016-07-01|76.0|-168.0|9.5421|-0.60899 +2016-07-01|76.0|-169.0|8.98064|-0.59738 +2016-07-01|76.0|-170.0|8.41578|-0.58584 +2016-07-01|76.0|-171.0|7.84785|-0.57437 +2016-07-01|76.0|-172.0|7.2772|-0.56299 +2016-07-01|76.0|-173.0|6.70414|-0.55168 +2016-07-01|76.0|-174.0|6.129|-0.54046 +2016-07-01|76.0|-175.0|5.5521|-0.52932 +2016-07-01|76.0|-176.0|4.97375|-0.51826 +2016-07-01|76.0|-177.0|4.39427|-0.50729 +2016-07-01|76.0|-178.0|3.81397|-0.49641 +2016-07-01|76.0|-179.0|3.23316|-0.48562 +2016-07-01|77.0|0.0|-3.26919|0.36696 +2016-07-01|77.0|1.0|-2.53146|0.36435 +2016-07-01|77.0|2.0|-1.79431|0.36179 +2016-07-01|77.0|3.0|-1.05784|0.3593 +2016-07-01|77.0|4.0|-0.32215|0.35687 +2016-07-01|77.0|5.0|0.41268|0.35449 +2016-07-01|77.0|6.0|1.14653|0.35217 +2016-07-01|77.0|7.0|1.87931|0.34991 +2016-07-01|77.0|8.0|2.61093|0.3477 +2016-07-01|77.0|9.0|3.34127|0.34554 +2016-07-01|77.0|10.0|4.07023|0.34343 +2016-07-01|77.0|11.0|4.79771|0.34137 +2016-07-01|77.0|12.0|5.5236|0.33936 +2016-07-01|77.0|13.0|6.24779|0.3374 +2016-07-01|77.0|14.0|6.97018|0.33548 +2016-07-01|77.0|15.0|7.69064|0.33361 +2016-07-01|77.0|16.0|8.40907|0.33179 +2016-07-01|77.0|17.0|9.12534|0.33 +2016-07-01|77.0|18.0|9.83933|0.32826 +2016-07-01|77.0|19.0|10.55091|0.32656 +2016-07-01|77.0|20.0|11.25996|0.3249 +2016-07-01|77.0|21.0|11.96634|0.32327 +2016-07-01|77.0|22.0|12.66992|0.32169 +2016-07-01|77.0|23.0|13.37054|0.32014 +2016-07-01|77.0|24.0|14.06807|0.31863 +2016-07-01|77.0|25.0|14.76235|0.31715 +2016-07-01|77.0|26.0|15.45323|0.31571 +2016-07-01|77.0|27.0|16.14053|0.3143 +2016-07-01|77.0|28.0|16.8241|0.31292 +2016-07-01|77.0|29.0|17.50375|0.31158 +2016-07-01|77.0|30.0|18.1793|0.31026 +2016-07-01|77.0|31.0|18.85056|0.30897 +2016-07-01|77.0|32.0|19.51734|0.30772 +2016-07-01|77.0|33.0|20.17942|0.30649 +2016-07-01|77.0|34.0|20.83658|0.30528 +2016-07-01|77.0|35.0|21.48861|0.3041 +2016-07-01|77.0|36.0|22.13527|0.30295 +2016-07-01|77.0|37.0|22.77632|0.30182 +2016-07-01|77.0|38.0|23.41149|0.30071 +2016-07-01|77.0|39.0|24.04051|0.29962 +2016-07-01|77.0|40.0|24.66312|0.29855 +2016-07-01|77.0|41.0|25.27901|0.2975 +2016-07-01|77.0|42.0|25.88787|0.29647 +2016-07-01|77.0|43.0|26.48939|0.29546 +2016-07-01|77.0|44.0|27.08322|0.29446 +2016-07-01|77.0|45.0|27.66901|0.29347 +2016-07-01|77.0|46.0|28.24637|0.2925 +2016-07-01|77.0|47.0|28.81493|0.29153 +2016-07-01|77.0|48.0|29.37427|0.29058 +2016-07-01|77.0|49.0|29.92394|0.28963 +2016-07-01|77.0|50.0|30.46349|0.28868 +2016-07-01|77.0|51.0|30.99244|0.28774 +2016-07-01|77.0|52.0|31.51028|0.28679 +2016-07-01|77.0|53.0|32.01647|0.28584 +2016-07-01|77.0|54.0|32.51043|0.28489 +2016-07-01|77.0|55.0|32.99157|0.28393 +2016-07-01|77.0|56.0|33.45926|0.28295 +2016-07-01|77.0|57.0|33.91281|0.28196 +2016-07-01|77.0|58.0|34.35153|0.28095 +2016-07-01|77.0|59.0|34.77465|0.27991 +2016-07-01|77.0|60.0|35.18137|0.27884 +2016-07-01|77.0|61.0|35.57086|0.27774 +2016-07-01|77.0|62.0|35.9422|0.2766 +2016-07-01|77.0|63.0|36.29446|0.27541 +2016-07-01|77.0|64.0|36.62661|0.27417 +2016-07-01|77.0|65.0|36.93758|0.27286 +2016-07-01|77.0|66.0|37.22624|0.27148 +2016-07-01|77.0|67.0|37.49137|0.27002 +2016-07-01|77.0|68.0|37.73168|0.26847 +2016-07-01|77.0|69.0|37.94582|0.26682 +2016-07-01|77.0|70.0|38.13233|0.26506 +2016-07-01|77.0|71.0|38.28967|0.26316 +2016-07-01|77.0|72.0|38.41623|0.26112 +2016-07-01|77.0|73.0|38.51026|0.25892 +2016-07-01|77.0|74.0|38.56994|0.25654 +2016-07-01|77.0|75.0|38.59334|0.25397 +2016-07-01|77.0|76.0|38.57841|0.25116 +2016-07-01|77.0|77.0|38.52302|0.24812 +2016-07-01|77.0|78.0|38.4249|0.2448 +2016-07-01|77.0|79.0|38.28168|0.24117 +2016-07-01|77.0|80.0|38.0909|0.23722 +2016-07-01|77.0|81.0|37.84999|0.23289 +2016-07-01|77.0|82.0|37.55628|0.22817 +2016-07-01|77.0|83.0|37.20706|0.223 +2016-07-01|77.0|84.0|36.79954|0.21735 +2016-07-01|77.0|85.0|36.3309|0.21117 +2016-07-01|77.0|86.0|35.79835|0.20443 +2016-07-01|77.0|87.0|35.19911|0.19707 +2016-07-01|77.0|88.0|34.53054|0.18906 +2016-07-01|77.0|89.0|33.79012|0.18034 +2016-07-01|77.0|90.0|32.97558|0.17089 +2016-07-01|77.0|91.0|32.08498|0.16066 +2016-07-01|77.0|92.0|31.11678|0.14962 +2016-07-01|77.0|93.0|30.06995|0.13777 +2016-07-01|77.0|94.0|28.94412|0.1251 +2016-07-01|77.0|95.0|27.73967|0.11161 +2016-07-01|77.0|96.0|26.45785|0.09734 +2016-07-01|77.0|97.0|25.10091|0.08233 +2016-07-01|77.0|98.0|23.67217|0.06665 +2016-07-01|77.0|99.0|22.17615|0.05042 +2016-07-01|77.0|100.0|20.61853|0.03374 +2016-07-01|77.0|101.0|19.00624|0.01676 +2016-07-01|77.0|102.0|17.34733|-3.6E-4 +2016-07-01|77.0|103.0|15.6509|-0.01744 +2016-07-01|77.0|104.0|13.92696|-0.03429 +2016-07-01|77.0|105.0|12.18619|-0.05073 +2016-07-01|77.0|106.0|10.43969|-0.06659 +2016-07-01|77.0|107.0|8.69872|-0.08169 +2016-07-01|77.0|108.0|6.9744|-0.0959 +2016-07-01|77.0|109.0|5.27746|-0.1091 +2016-07-01|77.0|110.0|3.61794|-0.12122 +2016-07-01|77.0|111.0|2.00503|-0.13221 +2016-07-01|77.0|112.0|0.44686|-0.14204 +2016-07-01|77.0|113.0|-1.04958|-0.15075 +2016-07-01|77.0|114.0|-2.47851|-0.15835 +2016-07-01|77.0|115.0|-3.83535|-0.16493 +2016-07-01|77.0|116.0|-5.11671|-0.17055 +2016-07-01|77.0|117.0|-6.32027|-0.17531 +2016-07-01|77.0|118.0|-7.44475|-0.1793 +2016-07-01|77.0|119.0|-8.48972|-0.18263 +2016-07-01|77.0|120.0|-9.45555|-0.18539 +2016-07-01|77.0|121.0|-10.34325|-0.18768 +2016-07-01|77.0|122.0|-11.15436|-0.18959 +2016-07-01|77.0|123.0|-11.89085|-0.19121 +2016-07-01|77.0|124.0|-12.55501|-0.19261 +2016-07-01|77.0|125.0|-13.14938|-0.19386 +2016-07-01|77.0|126.0|-13.67666|-0.19502 +2016-07-01|77.0|127.0|-14.13966|-0.19616 +2016-07-01|77.0|128.0|-14.54124|-0.19731 +2016-07-01|77.0|129.0|-14.88427|-0.19851 +2016-07-01|77.0|130.0|-15.17161|-0.19981 +2016-07-01|77.0|131.0|-15.40603|-0.20123 +2016-07-01|77.0|132.0|-15.59028|-0.2028 +2016-07-01|77.0|133.0|-15.727|-0.20454 +2016-07-01|77.0|134.0|-15.81871|-0.20647 +2016-07-01|77.0|135.0|-15.86788|-0.2086 +2016-07-01|77.0|136.0|-15.87684|-0.21094 +2016-07-01|77.0|137.0|-15.8478|-0.2135 +2016-07-01|77.0|138.0|-15.7829|-0.2163 +2016-07-01|77.0|139.0|-15.68415|-0.21932 +2016-07-01|77.0|140.0|-15.55345|-0.22259 +2016-07-01|77.0|141.0|-15.39261|-0.2261 +2016-07-01|77.0|142.0|-15.20335|-0.22985 +2016-07-01|77.0|143.0|-14.98729|-0.23384 +2016-07-01|77.0|144.0|-14.74595|-0.23808 +2016-07-01|77.0|145.0|-14.48078|-0.24256 +2016-07-01|77.0|146.0|-14.19316|-0.24727 +2016-07-01|77.0|147.0|-13.88437|-0.25223 +2016-07-01|77.0|148.0|-13.55564|-0.25743 +2016-07-01|77.0|149.0|-13.20811|-0.26286 +2016-07-01|77.0|150.0|-12.84289|-0.26852 +2016-07-01|77.0|151.0|-12.46102|-0.2744 +2016-07-01|77.0|152.0|-12.06346|-0.28052 +2016-07-01|77.0|153.0|-11.65114|-0.28685 +2016-07-01|77.0|154.0|-11.22495|-0.2934 +2016-07-01|77.0|155.0|-10.78573|-0.30017 +2016-07-01|77.0|156.0|-10.33425|-0.30714 +2016-07-01|77.0|157.0|-9.87129|-0.31432 +2016-07-01|77.0|158.0|-9.39754|-0.32171 +2016-07-01|77.0|159.0|-8.91371|-0.32929 +2016-07-01|77.0|160.0|-8.42042|-0.33707 +2016-07-01|77.0|161.0|-7.91831|-0.34503 +2016-07-01|77.0|162.0|-7.40797|-0.35318 +2016-07-01|77.0|163.0|-6.88996|-0.36152 +2016-07-01|77.0|164.0|-6.36482|-0.37003 +2016-07-01|77.0|165.0|-5.83307|-0.37872 +2016-07-01|77.0|166.0|-5.29522|-0.38757 +2016-07-01|77.0|167.0|-4.75173|-0.39659 +2016-07-01|77.0|168.0|-4.20308|-0.40578 +2016-07-01|77.0|169.0|-3.64969|-0.41512 +2016-07-01|77.0|170.0|-3.09202|-0.42462 +2016-07-01|77.0|171.0|-2.53045|-0.43427 +2016-07-01|77.0|172.0|-1.96541|-0.44407 +2016-07-01|77.0|173.0|-1.39728|-0.45401 +2016-07-01|77.0|174.0|-0.82643|-0.46409 +2016-07-01|77.0|175.0|-0.25325|-0.47432 +2016-07-01|77.0|176.0|0.32192|-0.48467 +2016-07-01|77.0|177.0|0.89872|-0.49516 +2016-07-01|77.0|178.0|1.47679|-0.50578 +2016-07-01|77.0|179.0|2.0558|-0.51653 +2016-07-01|77.0|-1.0|-4.00739|0.36964 +2016-07-01|77.0|-2.0|-4.74598|0.37238 +2016-07-01|77.0|-3.0|-5.48485|0.37519 +2016-07-01|77.0|-4.0|-6.22391|0.37807 +2016-07-01|77.0|-5.0|-6.96306|0.38101 +2016-07-01|77.0|-6.0|-7.7022|0.38403 +2016-07-01|77.0|-7.0|-8.44122|0.38712 +2016-07-01|77.0|-8.0|-9.18003|0.39029 +2016-07-01|77.0|-9.0|-9.91852|0.39354 +2016-07-01|77.0|-10.0|-10.65659|0.39686 +2016-07-01|77.0|-11.0|-11.39413|0.40027 +2016-07-01|77.0|-12.0|-12.13104|0.40376 +2016-07-01|77.0|-13.0|-12.8672|0.40734 +2016-07-01|77.0|-14.0|-13.60249|0.411 +2016-07-01|77.0|-15.0|-14.33681|0.41476 +2016-07-01|77.0|-16.0|-15.07004|0.4186 +2016-07-01|77.0|-17.0|-15.80206|0.42255 +2016-07-01|77.0|-18.0|-16.53274|0.42659 +2016-07-01|77.0|-19.0|-17.26196|0.43074 +2016-07-01|77.0|-20.0|-17.98958|0.43499 +2016-07-01|77.0|-21.0|-18.71547|0.43935 +2016-07-01|77.0|-22.0|-19.43949|0.44382 +2016-07-01|77.0|-23.0|-20.16151|0.4484 +2016-07-01|77.0|-24.0|-20.88136|0.4531 +2016-07-01|77.0|-25.0|-21.59891|0.45793 +2016-07-01|77.0|-26.0|-22.31398|0.46288 +2016-07-01|77.0|-27.0|-23.02642|0.46795 +2016-07-01|77.0|-28.0|-23.73606|0.47317 +2016-07-01|77.0|-29.0|-24.44272|0.47852 +2016-07-01|77.0|-30.0|-25.14622|0.48401 +2016-07-01|77.0|-31.0|-25.84637|0.48965 +2016-07-01|77.0|-32.0|-26.54296|0.49545 +2016-07-01|77.0|-33.0|-27.23579|0.5014 +2016-07-01|77.0|-34.0|-27.92464|0.50752 +2016-07-01|77.0|-35.0|-28.6093|0.5138 +2016-07-01|77.0|-36.0|-29.28952|0.52026 +2016-07-01|77.0|-37.0|-29.96505|0.5269 +2016-07-01|77.0|-38.0|-30.63564|0.53373 +2016-07-01|77.0|-39.0|-31.30101|0.54076 +2016-07-01|77.0|-40.0|-31.96089|0.54799 +2016-07-01|77.0|-41.0|-32.61496|0.55542 +2016-07-01|77.0|-42.0|-33.26292|0.56308 +2016-07-01|77.0|-43.0|-33.90443|0.57096 +2016-07-01|77.0|-44.0|-34.53915|0.57907 +2016-07-01|77.0|-45.0|-35.1667|0.58743 +2016-07-01|77.0|-46.0|-35.78671|0.59604 +2016-07-01|77.0|-47.0|-36.39874|0.60492 +2016-07-01|77.0|-48.0|-37.00238|0.61406 +2016-07-01|77.0|-49.0|-37.59717|0.62349 +2016-07-01|77.0|-50.0|-38.1826|0.63321 +2016-07-01|77.0|-51.0|-38.75818|0.64323 +2016-07-01|77.0|-52.0|-39.32334|0.65357 +2016-07-01|77.0|-53.0|-39.87751|0.66424 +2016-07-01|77.0|-54.0|-40.42006|0.67524 +2016-07-01|77.0|-55.0|-40.95034|0.6866 +2016-07-01|77.0|-56.0|-41.46763|0.69832 +2016-07-01|77.0|-57.0|-41.9712|0.71041 +2016-07-01|77.0|-58.0|-42.46022|0.7229 +2016-07-01|77.0|-59.0|-42.93386|0.73578 +2016-07-01|77.0|-60.0|-43.39118|0.74908 +2016-07-01|77.0|-61.0|-43.83121|0.76281 +2016-07-01|77.0|-62.0|-44.2529|0.77697 +2016-07-01|77.0|-63.0|-44.6551|0.79158 +2016-07-01|77.0|-64.0|-45.03662|0.80664 +2016-07-01|77.0|-65.0|-45.39614|0.82217 +2016-07-01|77.0|-66.0|-45.73226|0.83817 +2016-07-01|77.0|-67.0|-46.04347|0.85465 +2016-07-01|77.0|-68.0|-46.32813|0.87159 +2016-07-01|77.0|-69.0|-46.5845|0.88901 +2016-07-01|77.0|-70.0|-46.81068|0.90689 +2016-07-01|77.0|-71.0|-47.00462|0.92522 +2016-07-01|77.0|-72.0|-47.16412|0.94397 +2016-07-01|77.0|-73.0|-47.28679|0.96312 +2016-07-01|77.0|-74.0|-47.37004|0.98261 +2016-07-01|77.0|-75.0|-47.41109|1.0024 +2016-07-01|77.0|-76.0|-47.40694|1.02242 +2016-07-01|77.0|-77.0|-47.35433|1.04257 +2016-07-01|77.0|-78.0|-47.24975|1.06273 +2016-07-01|77.0|-79.0|-47.08944|1.08276 +2016-07-01|77.0|-80.0|-46.86932|1.1025 +2016-07-01|77.0|-81.0|-46.58504|1.12171 +2016-07-01|77.0|-82.0|-46.23193|1.14013 +2016-07-01|77.0|-83.0|-45.80503|1.15746 +2016-07-01|77.0|-84.0|-45.29907|1.1733 +2016-07-01|77.0|-85.0|-44.7085|1.18721 +2016-07-01|77.0|-86.0|-44.02753|1.19865 +2016-07-01|77.0|-87.0|-43.25018|1.207 +2016-07-01|77.0|-88.0|-42.37034|1.21153 +2016-07-01|77.0|-89.0|-41.38191|1.21142 +2016-07-01|77.0|-90.0|-40.27895|1.20574 +2016-07-01|77.0|-91.0|-39.05584|1.19346 +2016-07-01|77.0|-92.0|-37.70755|1.17348 +2016-07-01|77.0|-93.0|-36.22997|1.14462 +2016-07-01|77.0|-94.0|-34.62019|1.10573 +2016-07-01|77.0|-95.0|-32.87697|1.05569 +2016-07-01|77.0|-96.0|-31.00115|0.99351 +2016-07-01|77.0|-97.0|-28.99604|0.91846 +2016-07-01|77.0|-98.0|-26.86787|0.83013 +2016-07-01|77.0|-99.0|-24.62607|0.72858 +2016-07-01|77.0|-100.0|-22.28344|0.61441 +2016-07-01|77.0|-101.0|-19.85607|0.48884 +2016-07-01|77.0|-102.0|-17.36313|0.3537 +2016-07-01|77.0|-103.0|-14.82629|0.21135 +2016-07-01|77.0|-104.0|-12.26899|0.06463 +2016-07-01|77.0|-105.0|-9.71547|-0.08341 +2016-07-01|77.0|-106.0|-7.1898|-0.22964 +2016-07-01|77.0|-107.0|-4.71482|-0.37114 +2016-07-01|77.0|-108.0|-2.31132|-0.50533 +2016-07-01|77.0|-109.0|0.00267|-0.63013 +2016-07-01|77.0|-110.0|2.21229|-0.74404 +2016-07-01|77.0|-111.0|4.30607|-0.84613 +2016-07-01|77.0|-112.0|6.27582|-0.93601 +2016-07-01|77.0|-113.0|8.11649|-1.01375 +2016-07-01|77.0|-114.0|9.82574|-1.07979 +2016-07-01|77.0|-115.0|11.4036|-1.13484 +2016-07-01|77.0|-116.0|12.85199|-1.17975 +2016-07-01|77.0|-117.0|14.1743|-1.2155 +2016-07-01|77.0|-118.0|15.37504|-1.24308 +2016-07-01|77.0|-119.0|16.45948|-1.26348 +2016-07-01|77.0|-120.0|17.43337|-1.27763 +2016-07-01|77.0|-121.0|18.30272|-1.28638 +2016-07-01|77.0|-122.0|19.07364|-1.29051 +2016-07-01|77.0|-123.0|19.75217|-1.29075 +2016-07-01|77.0|-124.0|20.34422|-1.28769 +2016-07-01|77.0|-125.0|20.85548|-1.28188 +2016-07-01|77.0|-126.0|21.29135|-1.27378 +2016-07-01|77.0|-127.0|21.65699|-1.26381 +2016-07-01|77.0|-128.0|21.95722|-1.25231 +2016-07-01|77.0|-129.0|22.19656|-1.23956 +2016-07-01|77.0|-130.0|22.37925|-1.22581 +2016-07-01|77.0|-131.0|22.50922|-1.21129 +2016-07-01|77.0|-132.0|22.59011|-1.19615 +2016-07-01|77.0|-133.0|22.62532|-1.18056 +2016-07-01|77.0|-134.0|22.61798|-1.16462 +2016-07-01|77.0|-135.0|22.571|-1.14845 +2016-07-01|77.0|-136.0|22.48706|-1.13213 +2016-07-01|77.0|-137.0|22.36865|-1.11572 +2016-07-01|77.0|-138.0|22.21808|-1.09929 +2016-07-01|77.0|-139.0|22.03747|-1.08287 +2016-07-01|77.0|-140.0|21.8288|-1.06652 +2016-07-01|77.0|-141.0|21.59389|-1.05025 +2016-07-01|77.0|-142.0|21.33444|-1.03408 +2016-07-01|77.0|-143.0|21.05202|-1.01805 +2016-07-01|77.0|-144.0|20.74808|-1.00215 +2016-07-01|77.0|-145.0|20.424|-0.98641 +2016-07-01|77.0|-146.0|20.08103|-0.97083 +2016-07-01|77.0|-147.0|19.72034|-0.95541 +2016-07-01|77.0|-148.0|19.34305|-0.94015 +2016-07-01|77.0|-149.0|18.95016|-0.92506 +2016-07-01|77.0|-150.0|18.54264|-0.91014 +2016-07-01|77.0|-151.0|18.12139|-0.89539 +2016-07-01|77.0|-152.0|17.68725|-0.8808 +2016-07-01|77.0|-153.0|17.24101|-0.86637 +2016-07-01|77.0|-154.0|16.78341|-0.8521 +2016-07-01|77.0|-155.0|16.31515|-0.83798 +2016-07-01|77.0|-156.0|15.8369|-0.82402 +2016-07-01|77.0|-157.0|15.34928|-0.8102 +2016-07-01|77.0|-158.0|14.85287|-0.79653 +2016-07-01|77.0|-159.0|14.34825|-0.783 +2016-07-01|77.0|-160.0|13.83594|-0.76961 +2016-07-01|77.0|-161.0|13.31646|-0.75635 +2016-07-01|77.0|-162.0|12.79028|-0.74322 +2016-07-01|77.0|-163.0|12.25788|-0.73022 +2016-07-01|77.0|-164.0|11.71969|-0.71735 +2016-07-01|77.0|-165.0|11.17614|-0.7046 +2016-07-01|77.0|-166.0|10.62766|-0.69197 +2016-07-01|77.0|-167.0|10.07462|-0.67946 +2016-07-01|77.0|-168.0|9.51743|-0.66707 +2016-07-01|77.0|-169.0|8.95645|-0.6548 +2016-07-01|77.0|-170.0|8.39205|-0.64264 +2016-07-01|77.0|-171.0|7.82458|-0.63059 +2016-07-01|77.0|-172.0|7.25439|-0.61866 +2016-07-01|77.0|-173.0|6.68184|-0.60685 +2016-07-01|77.0|-174.0|6.10724|-0.59515 +2016-07-01|77.0|-175.0|5.53094|-0.58357 +2016-07-01|77.0|-176.0|4.95327|-0.5721 +2016-07-01|77.0|-177.0|4.37456|-0.56074 +2016-07-01|77.0|-178.0|3.79512|-0.54951 +2016-07-01|77.0|-179.0|3.2153|-0.53839 +2016-07-01|78.0|0.0|-3.25466|0.38813 +2016-07-01|78.0|1.0|-2.50278|0.38546 +2016-07-01|78.0|2.0|-1.75143|0.38287 +2016-07-01|78.0|3.0|-1.0007|0.38034 +2016-07-01|78.0|4.0|-0.25069|0.37787 +2016-07-01|78.0|5.0|0.49851|0.37546 +2016-07-01|78.0|6.0|1.2468|0.37311 +2016-07-01|78.0|7.0|1.9941|0.37082 +2016-07-01|78.0|8.0|2.7403|0.36859 +2016-07-01|78.0|9.0|3.48532|0.36642 +2016-07-01|78.0|10.0|4.22904|0.3643 +2016-07-01|78.0|11.0|4.97137|0.36223 +2016-07-01|78.0|12.0|5.71222|0.36022 +2016-07-01|78.0|13.0|6.45147|0.35826 +2016-07-01|78.0|14.0|7.18902|0.35635 +2016-07-01|78.0|15.0|7.92477|0.35449 +2016-07-01|78.0|16.0|8.65859|0.35267 +2016-07-01|78.0|17.0|9.39039|0.35091 +2016-07-01|78.0|18.0|10.12005|0.34919 +2016-07-01|78.0|19.0|10.84744|0.34752 +2016-07-01|78.0|20.0|11.57245|0.3459 +2016-07-01|78.0|21.0|12.29494|0.34432 +2016-07-01|78.0|22.0|13.0148|0.34278 +2016-07-01|78.0|23.0|13.73188|0.34128 +2016-07-01|78.0|24.0|14.44605|0.33983 +2016-07-01|78.0|25.0|15.15716|0.33842 +2016-07-01|78.0|26.0|15.86508|0.33704 +2016-07-01|78.0|27.0|16.56964|0.33571 +2016-07-01|78.0|28.0|17.27068|0.33442 +2016-07-01|78.0|29.0|17.96805|0.33316 +2016-07-01|78.0|30.0|18.66157|0.33194 +2016-07-01|78.0|31.0|19.35106|0.33076 +2016-07-01|78.0|32.0|20.03635|0.32961 +2016-07-01|78.0|33.0|20.71723|0.3285 +2016-07-01|78.0|34.0|21.39351|0.32743 +2016-07-01|78.0|35.0|22.06498|0.32639 +2016-07-01|78.0|36.0|22.73143|0.32538 +2016-07-01|78.0|37.0|23.39261|0.3244 +2016-07-01|78.0|38.0|24.04831|0.32346 +2016-07-01|78.0|39.0|24.69827|0.32254 +2016-07-01|78.0|40.0|25.34222|0.32166 +2016-07-01|78.0|41.0|25.97991|0.32081 +2016-07-01|78.0|42.0|26.61104|0.31998 +2016-07-01|78.0|43.0|27.23532|0.31919 +2016-07-01|78.0|44.0|27.85243|0.31842 +2016-07-01|78.0|45.0|28.46205|0.31767 +2016-07-01|78.0|46.0|29.06383|0.31695 +2016-07-01|78.0|47.0|29.65741|0.31626 +2016-07-01|78.0|48.0|30.2424|0.31559 +2016-07-01|78.0|49.0|30.8184|0.31494 +2016-07-01|78.0|50.0|31.385|0.31431 +2016-07-01|78.0|51.0|31.94174|0.31369 +2016-07-01|78.0|52.0|32.48816|0.3131 +2016-07-01|78.0|53.0|33.02376|0.31252 +2016-07-01|78.0|54.0|33.548|0.31195 +2016-07-01|78.0|55.0|34.06035|0.3114 +2016-07-01|78.0|56.0|34.56021|0.31085 +2016-07-01|78.0|57.0|35.04695|0.31031 +2016-07-01|78.0|58.0|35.51993|0.30977 +2016-07-01|78.0|59.0|35.97844|0.30924 +2016-07-01|78.0|60.0|36.42175|0.30869 +2016-07-01|78.0|61.0|36.84907|0.30815 +2016-07-01|78.0|62.0|37.25956|0.30758 +2016-07-01|78.0|63.0|37.65235|0.30701 +2016-07-01|78.0|64.0|38.02649|0.30641 +2016-07-01|78.0|65.0|38.38099|0.30578 +2016-07-01|78.0|66.0|38.71478|0.30511 +2016-07-01|78.0|67.0|39.02674|0.30441 +2016-07-01|78.0|68.0|39.31565|0.30365 +2016-07-01|78.0|69.0|39.58025|0.30283 +2016-07-01|78.0|70.0|39.81917|0.30194 +2016-07-01|78.0|71.0|40.03096|0.30096 +2016-07-01|78.0|72.0|40.21409|0.29989 +2016-07-01|78.0|73.0|40.36692|0.2987 +2016-07-01|78.0|74.0|40.48772|0.29739 +2016-07-01|78.0|75.0|40.57462|0.29592 +2016-07-01|78.0|76.0|40.62569|0.29429 +2016-07-01|78.0|77.0|40.63884|0.29247 +2016-07-01|78.0|78.0|40.61188|0.29043 +2016-07-01|78.0|79.0|40.54249|0.28814 +2016-07-01|78.0|80.0|40.42825|0.28557 +2016-07-01|78.0|81.0|40.26658|0.28269 +2016-07-01|78.0|82.0|40.05482|0.27945 +2016-07-01|78.0|83.0|39.79018|0.27582 +2016-07-01|78.0|84.0|39.46977|0.27174 +2016-07-01|78.0|85.0|39.09063|0.26717 +2016-07-01|78.0|86.0|38.64973|0.26205 +2016-07-01|78.0|87.0|38.144|0.25632 +2016-07-01|78.0|88.0|37.57041|0.24991 +2016-07-01|78.0|89.0|36.92596|0.24277 +2016-07-01|78.0|90.0|36.20776|0.23483 +2016-07-01|78.0|91.0|35.41312|0.22601 +2016-07-01|78.0|92.0|34.53964|0.21626 +2016-07-01|78.0|93.0|33.58527|0.20551 +2016-07-01|78.0|94.0|32.54846|0.19371 +2016-07-01|78.0|95.0|31.42826|0.1808 +2016-07-01|78.0|96.0|30.22449|0.16678 +2016-07-01|78.0|97.0|28.93784|0.15161 +2016-07-01|78.0|98.0|27.57003|0.13532 +2016-07-01|78.0|99.0|26.12393|0.11794 +2016-07-01|78.0|100.0|24.60365|0.09954 +2016-07-01|78.0|101.0|23.01463|0.08024 +2016-07-01|78.0|102.0|21.36368|0.06016 +2016-07-01|78.0|103.0|19.65889|0.03949 +2016-07-01|78.0|104.0|17.90963|0.01841 +2016-07-01|78.0|105.0|16.12634|-0.00284 +2016-07-01|78.0|106.0|14.32032|-0.02402 +2016-07-01|78.0|107.0|12.50347|-0.04491 +2016-07-01|78.0|108.0|10.688|-0.06525 +2016-07-01|78.0|109.0|8.88606|-0.08483 +2016-07-01|78.0|110.0|7.10948|-0.10347 +2016-07-01|78.0|111.0|5.36939|-0.12099 +2016-07-01|78.0|112.0|3.67603|-0.13728 +2016-07-01|78.0|113.0|2.03853|-0.15227 +2016-07-01|78.0|114.0|0.46473|-0.16592 +2016-07-01|78.0|115.0|-1.03885|-0.17822 +2016-07-01|78.0|116.0|-2.46704|-0.18922 +2016-07-01|78.0|117.0|-3.816|-0.19897 +2016-07-01|78.0|118.0|-5.08311|-0.20756 +2016-07-01|78.0|119.0|-6.26689|-0.21508 +2016-07-01|78.0|120.0|-7.36685|-0.22164 +2016-07-01|78.0|121.0|-8.38337|-0.22734 +2016-07-01|78.0|122.0|-9.31755|-0.23232 +2016-07-01|78.0|123.0|-10.1711|-0.23666 +2016-07-01|78.0|124.0|-10.94615|-0.24047 +2016-07-01|78.0|125.0|-11.64524|-0.24385 +2016-07-01|78.0|126.0|-12.27114|-0.24688 +2016-07-01|78.0|127.0|-12.82681|-0.24965 +2016-07-01|78.0|128.0|-13.31529|-0.25223 +2016-07-01|78.0|129.0|-13.7397|-0.25469 +2016-07-01|78.0|130.0|-14.10314|-0.25706 +2016-07-01|78.0|131.0|-14.40869|-0.25942 +2016-07-01|78.0|132.0|-14.65935|-0.26179 +2016-07-01|78.0|133.0|-14.85804|-0.26422 +2016-07-01|78.0|134.0|-15.0076|-0.26674 +2016-07-01|78.0|135.0|-15.11074|-0.26937 +2016-07-01|78.0|136.0|-15.17004|-0.27214 +2016-07-01|78.0|137.0|-15.18799|-0.27506 +2016-07-01|78.0|138.0|-15.16694|-0.27815 +2016-07-01|78.0|139.0|-15.10913|-0.28143 +2016-07-01|78.0|140.0|-15.01667|-0.2849 +2016-07-01|78.0|141.0|-14.89157|-0.28857 +2016-07-01|78.0|142.0|-14.73571|-0.29245 +2016-07-01|78.0|143.0|-14.55089|-0.29654 +2016-07-01|78.0|144.0|-14.3388|-0.30085 +2016-07-01|78.0|145.0|-14.10101|-0.30538 +2016-07-01|78.0|146.0|-13.83904|-0.31014 +2016-07-01|78.0|147.0|-13.5543|-0.31511 +2016-07-01|78.0|148.0|-13.24812|-0.32031 +2016-07-01|78.0|149.0|-12.92176|-0.32574 +2016-07-01|78.0|150.0|-12.57642|-0.33139 +2016-07-01|78.0|151.0|-12.21321|-0.33725 +2016-07-01|78.0|152.0|-11.83319|-0.34334 +2016-07-01|78.0|153.0|-11.43738|-0.34964 +2016-07-01|78.0|154.0|-11.02671|-0.35616 +2016-07-01|78.0|155.0|-10.60209|-0.3629 +2016-07-01|78.0|156.0|-10.16436|-0.36984 +2016-07-01|78.0|157.0|-9.71434|-0.37699 +2016-07-01|78.0|158.0|-9.25279|-0.38435 +2016-07-01|78.0|159.0|-8.78044|-0.39191 +2016-07-01|78.0|160.0|-8.29798|-0.39966 +2016-07-01|78.0|161.0|-7.80608|-0.40762 +2016-07-01|78.0|162.0|-7.30535|-0.41577 +2016-07-01|78.0|163.0|-6.79641|-0.42411 +2016-07-01|78.0|164.0|-6.27982|-0.43263 +2016-07-01|78.0|165.0|-5.75613|-0.44134 +2016-07-01|78.0|166.0|-5.22588|-0.45024 +2016-07-01|78.0|167.0|-4.68956|-0.45931 +2016-07-01|78.0|168.0|-4.14767|-0.46856 +2016-07-01|78.0|169.0|-3.60066|-0.47798 +2016-07-01|78.0|170.0|-3.049|-0.48758 +2016-07-01|78.0|171.0|-2.49312|-0.49734 +2016-07-01|78.0|172.0|-1.93344|-0.50727 +2016-07-01|78.0|173.0|-1.37037|-0.51737 +2016-07-01|78.0|174.0|-0.80431|-0.52763 +2016-07-01|78.0|175.0|-0.23564|-0.53805 +2016-07-01|78.0|176.0|0.33524|-0.54862 +2016-07-01|78.0|177.0|0.90797|-0.55936 +2016-07-01|78.0|178.0|1.48219|-0.57025 +2016-07-01|78.0|179.0|2.05753|-0.58129 +2016-07-01|78.0|-1.0|-4.00698|0.39086 +2016-07-01|78.0|-2.0|-4.75964|0.39366 +2016-07-01|78.0|-3.0|-5.51256|0.39652 +2016-07-01|78.0|-4.0|-6.26564|0.39947 +2016-07-01|78.0|-5.0|-7.01879|0.40248 +2016-07-01|78.0|-6.0|-7.77191|0.40557 +2016-07-01|78.0|-7.0|-8.52491|0.40874 +2016-07-01|78.0|-8.0|-9.27769|0.41199 +2016-07-01|78.0|-9.0|-10.03016|0.41532 +2016-07-01|78.0|-10.0|-10.78222|0.41873 +2016-07-01|78.0|-11.0|-11.53377|0.42223 +2016-07-01|78.0|-12.0|-12.28471|0.42582 +2016-07-01|78.0|-13.0|-13.03493|0.4295 +2016-07-01|78.0|-14.0|-13.78433|0.43327 +2016-07-01|78.0|-15.0|-14.53281|0.43714 +2016-07-01|78.0|-16.0|-15.28025|0.44111 +2016-07-01|78.0|-17.0|-16.02654|0.44518 +2016-07-01|78.0|-18.0|-16.77158|0.44935 +2016-07-01|78.0|-19.0|-17.51523|0.45363 +2016-07-01|78.0|-20.0|-18.25738|0.45802 +2016-07-01|78.0|-21.0|-18.99792|0.46252 +2016-07-01|78.0|-22.0|-19.7367|0.46714 +2016-07-01|78.0|-23.0|-20.4736|0.47188 +2016-07-01|78.0|-24.0|-21.20848|0.47674 +2016-07-01|78.0|-25.0|-21.94121|0.48173 +2016-07-01|78.0|-26.0|-22.67163|0.48686 +2016-07-01|78.0|-27.0|-23.3996|0.49212 +2016-07-01|78.0|-28.0|-24.12497|0.49752 +2016-07-01|78.0|-29.0|-24.84757|0.50307 +2016-07-01|78.0|-30.0|-25.56723|0.50876 +2016-07-01|78.0|-31.0|-26.28378|0.51461 +2016-07-01|78.0|-32.0|-26.99705|0.52063 +2016-07-01|78.0|-33.0|-27.70683|0.52681 +2016-07-01|78.0|-34.0|-28.41295|0.53316 +2016-07-01|78.0|-35.0|-29.11518|0.53969 +2016-07-01|78.0|-36.0|-29.81332|0.5464 +2016-07-01|78.0|-37.0|-30.50714|0.55331 +2016-07-01|78.0|-38.0|-31.19642|0.56041 +2016-07-01|78.0|-39.0|-31.8809|0.56772 +2016-07-01|78.0|-40.0|-32.56032|0.57524 +2016-07-01|78.0|-41.0|-33.23442|0.58298 +2016-07-01|78.0|-42.0|-33.90292|0.59095 +2016-07-01|78.0|-43.0|-34.5655|0.59916 +2016-07-01|78.0|-44.0|-35.22187|0.60761 +2016-07-01|78.0|-45.0|-35.87169|0.61632 +2016-07-01|78.0|-46.0|-36.51461|0.6253 +2016-07-01|78.0|-47.0|-37.15026|0.63455 +2016-07-01|78.0|-48.0|-37.77825|0.64409 +2016-07-01|78.0|-49.0|-38.39816|0.65392 +2016-07-01|78.0|-50.0|-39.00957|0.66407 +2016-07-01|78.0|-51.0|-39.61201|0.67453 +2016-07-01|78.0|-52.0|-40.20499|0.68533 +2016-07-01|78.0|-53.0|-40.78799|0.69648 +2016-07-01|78.0|-54.0|-41.36045|0.70798 +2016-07-01|78.0|-55.0|-41.92178|0.71986 +2016-07-01|78.0|-56.0|-42.47136|0.73212 +2016-07-01|78.0|-57.0|-43.00851|0.74479 +2016-07-01|78.0|-58.0|-43.53253|0.75787 +2016-07-01|78.0|-59.0|-44.04264|0.77138 +2016-07-01|78.0|-60.0|-44.53803|0.78534 +2016-07-01|78.0|-61.0|-45.01782|0.79975 +2016-07-01|78.0|-62.0|-45.48108|0.81464 +2016-07-01|78.0|-63.0|-45.9268|0.83002 +2016-07-01|78.0|-64.0|-46.3539|0.84589 +2016-07-01|78.0|-65.0|-46.76123|0.86229 +2016-07-01|78.0|-66.0|-47.14752|0.87921 +2016-07-01|78.0|-67.0|-47.51144|0.89666 +2016-07-01|78.0|-68.0|-47.85154|0.91466 +2016-07-01|78.0|-69.0|-48.16624|0.93321 +2016-07-01|78.0|-70.0|-48.45387|0.9523 +2016-07-01|78.0|-71.0|-48.7126|0.97195 +2016-07-01|78.0|-72.0|-48.94044|0.99213 +2016-07-01|78.0|-73.0|-49.13526|1.01283 +2016-07-01|78.0|-74.0|-49.29475|1.03403 +2016-07-01|78.0|-75.0|-49.41641|1.05569 +2016-07-01|78.0|-76.0|-49.4975|1.07777 +2016-07-01|78.0|-77.0|-49.53509|1.10021 +2016-07-01|78.0|-78.0|-49.52599|1.12291 +2016-07-01|78.0|-79.0|-49.46674|1.14577 +2016-07-01|78.0|-80.0|-49.3536|1.16866 +2016-07-01|78.0|-81.0|-49.18252|1.19142 +2016-07-01|78.0|-82.0|-48.94915|1.21383 +2016-07-01|78.0|-83.0|-48.64878|1.23563 +2016-07-01|78.0|-84.0|-48.27637|1.25653 +2016-07-01|78.0|-85.0|-47.82652|1.27612 +2016-07-01|78.0|-86.0|-47.29348|1.29397 +2016-07-01|78.0|-87.0|-46.6712|1.30952 +2016-07-01|78.0|-88.0|-45.95329|1.32213 +2016-07-01|78.0|-89.0|-45.13317|1.33103 +2016-07-01|78.0|-90.0|-44.20408|1.33534 +2016-07-01|78.0|-91.0|-43.15927|1.33405 +2016-07-01|78.0|-92.0|-41.99213|1.32601 +2016-07-01|78.0|-93.0|-40.69643|1.30996 +2016-07-01|78.0|-94.0|-39.26662|1.28453 +2016-07-01|78.0|-95.0|-37.69816|1.24831 +2016-07-01|78.0|-96.0|-35.98799|1.19987 +2016-07-01|78.0|-97.0|-34.13495|1.13787 +2016-07-01|78.0|-98.0|-32.14035|1.06117 +2016-07-01|78.0|-99.0|-30.00842|0.96899 +2016-07-01|78.0|-100.0|-27.74681|0.86098 +2016-07-01|78.0|-101.0|-25.3669|0.73745 +2016-07-01|78.0|-102.0|-22.88393|0.59944 +2016-07-01|78.0|-103.0|-20.31687|0.44874 +2016-07-01|78.0|-104.0|-17.68803|0.28794 +2016-07-01|78.0|-105.0|-15.0223|0.12028 +2016-07-01|78.0|-106.0|-12.34618|-0.05057 +2016-07-01|78.0|-107.0|-9.68657|-0.22075 +2016-07-01|78.0|-108.0|-7.06961|-0.38648 +2016-07-01|78.0|-109.0|-4.51952|-0.54437 +2016-07-01|78.0|-110.0|-2.0577|-0.69163 +2016-07-01|78.0|-111.0|0.29795|-0.82614 +2016-07-01|78.0|-112.0|2.53331|-0.94656 +2016-07-01|78.0|-113.0|4.63813|-1.05227 +2016-07-01|78.0|-114.0|6.6058|-1.14325 +2016-07-01|78.0|-115.0|8.43299|-1.22 +2016-07-01|78.0|-116.0|10.11918|-1.28337 +2016-07-01|78.0|-117.0|11.66611|-1.33444 +2016-07-01|78.0|-118.0|13.07734|-1.37443 +2016-07-01|78.0|-119.0|14.35772|-1.4046 +2016-07-01|78.0|-120.0|15.51303|-1.42618 +2016-07-01|78.0|-121.0|16.54963|-1.44035 +2016-07-01|78.0|-122.0|17.47418|-1.44818 +2016-07-01|78.0|-123.0|18.29345|-1.45064 +2016-07-01|78.0|-124.0|19.01414|-1.4486 +2016-07-01|78.0|-125.0|19.64277|-1.44282 +2016-07-01|78.0|-126.0|20.18562|-1.43395 +2016-07-01|78.0|-127.0|20.64865|-1.42256 +2016-07-01|78.0|-128.0|21.0375|-1.40912 +2016-07-01|78.0|-129.0|21.35743|-1.39405 +2016-07-01|78.0|-130.0|21.6134|-1.37769 +2016-07-01|78.0|-131.0|21.80998|-1.36033 +2016-07-01|78.0|-132.0|21.95143|-1.3422 +2016-07-01|78.0|-133.0|22.0417|-1.32352 +2016-07-01|78.0|-134.0|22.08443|-1.30444 +2016-07-01|78.0|-135.0|22.08299|-1.2851 +2016-07-01|78.0|-136.0|22.04047|-1.26561 +2016-07-01|78.0|-137.0|21.95976|-1.24607 +2016-07-01|78.0|-138.0|21.8435|-1.22655 +2016-07-01|78.0|-139.0|21.69412|-1.20711 +2016-07-01|78.0|-140.0|21.51389|-1.18779 +2016-07-01|78.0|-141.0|21.30489|-1.16864 +2016-07-01|78.0|-142.0|21.06904|-1.14967 +2016-07-01|78.0|-143.0|20.80813|-1.13093 +2016-07-01|78.0|-144.0|20.5238|-1.11241 +2016-07-01|78.0|-145.0|20.21759|-1.09414 +2016-07-01|78.0|-146.0|19.89092|-1.07611 +2016-07-01|78.0|-147.0|19.54511|-1.05834 +2016-07-01|78.0|-148.0|19.18138|-1.04083 +2016-07-01|78.0|-149.0|18.80088|-1.02358 +2016-07-01|78.0|-150.0|18.40467|-1.00658 +2016-07-01|78.0|-151.0|17.99375|-0.98983 +2016-07-01|78.0|-152.0|17.56905|-0.97333 +2016-07-01|78.0|-153.0|17.13144|-0.95708 +2016-07-01|78.0|-154.0|16.68174|-0.94107 +2016-07-01|78.0|-155.0|16.22073|-0.92529 +2016-07-01|78.0|-156.0|15.74912|-0.90973 +2016-07-01|78.0|-157.0|15.2676|-0.8944 +2016-07-01|78.0|-158.0|14.77682|-0.87929 +2016-07-01|78.0|-159.0|14.27738|-0.86439 +2016-07-01|78.0|-160.0|13.76986|-0.84969 +2016-07-01|78.0|-161.0|13.25482|-0.83519 +2016-07-01|78.0|-162.0|12.73279|-0.82089 +2016-07-01|78.0|-163.0|12.20425|-0.80677 +2016-07-01|78.0|-164.0|11.6697|-0.79284 +2016-07-01|78.0|-165.0|11.12959|-0.77909 +2016-07-01|78.0|-166.0|10.58436|-0.76552 +2016-07-01|78.0|-167.0|10.03445|-0.75212 +2016-07-01|78.0|-168.0|9.48026|-0.73888 +2016-07-01|78.0|-169.0|8.92219|-0.72582 +2016-07-01|78.0|-170.0|8.36064|-0.71292 +2016-07-01|78.0|-171.0|7.79598|-0.70017 +2016-07-01|78.0|-172.0|7.22859|-0.68759 +2016-07-01|78.0|-173.0|6.65882|-0.67517 +2016-07-01|78.0|-174.0|6.08704|-0.66289 +2016-07-01|78.0|-175.0|5.5136|-0.65078 +2016-07-01|78.0|-176.0|4.93885|-0.63882 +2016-07-01|78.0|-177.0|4.36313|-0.62701 +2016-07-01|78.0|-178.0|3.78679|-0.61535 +2016-07-01|78.0|-179.0|3.21018|-0.60384 +2016-07-01|79.0|0.0|-3.22867|0.41211 +2016-07-01|79.0|1.0|-2.46308|0.4094 +2016-07-01|79.0|2.0|-1.69798|0.40677 +2016-07-01|79.0|3.0|-0.93345|0.4042 +2016-07-01|79.0|4.0|-0.16959|0.40171 +2016-07-01|79.0|5.0|0.59353|0.39927 +2016-07-01|79.0|6.0|1.35581|0.39691 +2016-07-01|79.0|7.0|2.11716|0.3946 +2016-07-01|79.0|8.0|2.8775|0.39236 +2016-07-01|79.0|9.0|3.63673|0.39018 +2016-07-01|79.0|10.0|4.39476|0.38806 +2016-07-01|79.0|11.0|5.1515|0.386 +2016-07-01|79.0|12.0|5.90686|0.384 +2016-07-01|79.0|13.0|6.66073|0.38205 +2016-07-01|79.0|14.0|7.41302|0.38016 +2016-07-01|79.0|15.0|8.16362|0.37832 +2016-07-01|79.0|16.0|8.91244|0.37654 +2016-07-01|79.0|17.0|9.65937|0.37481 +2016-07-01|79.0|18.0|10.4043|0.37314 +2016-07-01|79.0|19.0|11.14713|0.37151 +2016-07-01|79.0|20.0|11.88773|0.36994 +2016-07-01|79.0|21.0|12.62599|0.36842 +2016-07-01|79.0|22.0|13.36179|0.36694 +2016-07-01|79.0|23.0|14.09502|0.36552 +2016-07-01|79.0|24.0|14.82553|0.36414 +2016-07-01|79.0|25.0|15.5532|0.36282 +2016-07-01|79.0|26.0|16.27789|0.36154 +2016-07-01|79.0|27.0|16.99946|0.3603 +2016-07-01|79.0|28.0|17.71777|0.35911 +2016-07-01|79.0|29.0|18.43266|0.35797 +2016-07-01|79.0|30.0|19.14398|0.35687 +2016-07-01|79.0|31.0|19.85157|0.35582 +2016-07-01|79.0|32.0|20.55525|0.35482 +2016-07-01|79.0|33.0|21.25485|0.35385 +2016-07-01|79.0|34.0|21.95018|0.35293 +2016-07-01|79.0|35.0|22.64106|0.35206 +2016-07-01|79.0|36.0|23.32729|0.35122 +2016-07-01|79.0|37.0|24.00866|0.35043 +2016-07-01|79.0|38.0|24.68495|0.34969 +2016-07-01|79.0|39.0|25.35595|0.34898 +2016-07-01|79.0|40.0|26.0214|0.34831 +2016-07-01|79.0|41.0|26.68106|0.34769 +2016-07-01|79.0|42.0|27.33469|0.34711 +2016-07-01|79.0|43.0|27.98199|0.34657 +2016-07-01|79.0|44.0|28.6227|0.34607 +2016-07-01|79.0|45.0|29.2565|0.34561 +2016-07-01|79.0|46.0|29.8831|0.34519 +2016-07-01|79.0|47.0|30.50215|0.34481 +2016-07-01|79.0|48.0|31.11332|0.34446 +2016-07-01|79.0|49.0|31.71623|0.34416 +2016-07-01|79.0|50.0|32.31051|0.34389 +2016-07-01|79.0|51.0|32.89575|0.34366 +2016-07-01|79.0|52.0|33.47152|0.34347 +2016-07-01|79.0|53.0|34.03737|0.34331 +2016-07-01|79.0|54.0|34.59283|0.34319 +2016-07-01|79.0|55.0|35.13739|0.3431 +2016-07-01|79.0|56.0|35.67052|0.34304 +2016-07-01|79.0|57.0|36.19166|0.34301 +2016-07-01|79.0|58.0|36.70021|0.34302 +2016-07-01|79.0|59.0|37.19555|0.34305 +2016-07-01|79.0|60.0|37.67699|0.3431 +2016-07-01|79.0|61.0|38.14383|0.34318 +2016-07-01|79.0|62.0|38.59531|0.34328 +2016-07-01|79.0|63.0|39.03063|0.3434 +2016-07-01|79.0|64.0|39.44894|0.34353 +2016-07-01|79.0|65.0|39.84932|0.34367 +2016-07-01|79.0|66.0|40.23082|0.34382 +2016-07-01|79.0|67.0|40.5924|0.34396 +2016-07-01|79.0|68.0|40.93296|0.3441 +2016-07-01|79.0|69.0|41.25135|0.34423 +2016-07-01|79.0|70.0|41.54631|0.34433 +2016-07-01|79.0|71.0|41.81653|0.3444 +2016-07-01|79.0|72.0|42.06058|0.34444 +2016-07-01|79.0|73.0|42.27696|0.34441 +2016-07-01|79.0|74.0|42.46407|0.34432 +2016-07-01|79.0|75.0|42.6202|0.34415 +2016-07-01|79.0|76.0|42.74352|0.34388 +2016-07-01|79.0|77.0|42.8321|0.34348 +2016-07-01|79.0|78.0|42.88389|0.34294 +2016-07-01|79.0|79.0|42.89669|0.34223 +2016-07-01|79.0|80.0|42.86819|0.34132 +2016-07-01|79.0|81.0|42.79595|0.34017 +2016-07-01|79.0|82.0|42.67736|0.33875 +2016-07-01|79.0|83.0|42.50971|0.33701 +2016-07-01|79.0|84.0|42.29015|0.3349 +2016-07-01|79.0|85.0|42.01569|0.33238 +2016-07-01|79.0|86.0|41.68324|0.32937 +2016-07-01|79.0|87.0|41.28961|0.32582 +2016-07-01|79.0|88.0|40.83153|0.32164 +2016-07-01|79.0|89.0|40.30569|0.31676 +2016-07-01|79.0|90.0|39.70879|0.31109 +2016-07-01|79.0|91.0|39.03756|0.30454 +2016-07-01|79.0|92.0|38.28886|0.29699 +2016-07-01|79.0|93.0|37.45977|0.28836 +2016-07-01|79.0|94.0|36.54762|0.27853 +2016-07-01|79.0|95.0|35.5502|0.26741 +2016-07-01|79.0|96.0|34.46578|0.25489 +2016-07-01|79.0|97.0|33.29337|0.24089 +2016-07-01|79.0|98.0|32.03277|0.22534 +2016-07-01|79.0|99.0|30.68477|0.20817 +2016-07-01|79.0|100.0|29.25134|0.18938 +2016-07-01|79.0|101.0|27.73571|0.16898 +2016-07-01|79.0|102.0|26.14251|0.14703 +2016-07-01|79.0|103.0|24.47785|0.12363 +2016-07-01|79.0|104.0|22.74936|0.09894 +2016-07-01|79.0|105.0|20.9661|0.07315 +2016-07-01|79.0|106.0|19.13849|0.04654 +2016-07-01|79.0|107.0|17.27808|0.01937 +2016-07-01|79.0|108.0|15.39733|-0.00802 +2016-07-01|79.0|109.0|13.50923|-0.03531 +2016-07-01|79.0|110.0|11.62703|-0.06217 +2016-07-01|79.0|111.0|9.76376|-0.08828 +2016-07-01|79.0|112.0|7.93195|-0.11338 +2016-07-01|79.0|113.0|6.14328|-0.13721 +2016-07-01|79.0|114.0|4.40829|-0.15959 +2016-07-01|79.0|115.0|2.73621|-0.1804 +2016-07-01|79.0|116.0|1.1348|-0.19955 +2016-07-01|79.0|117.0|-0.38965|-0.21702 +2016-07-01|79.0|118.0|-1.83236|-0.23283 +2016-07-01|79.0|119.0|-3.18995|-0.24702 +2016-07-01|79.0|120.0|-4.46037|-0.2597 +2016-07-01|79.0|121.0|-5.6427|-0.27097 +2016-07-01|79.0|122.0|-6.73705|-0.28095 +2016-07-01|79.0|123.0|-7.74439|-0.28977 +2016-07-01|79.0|124.0|-8.66637|-0.29756 +2016-07-01|79.0|125.0|-9.50521|-0.30446 +2016-07-01|79.0|126.0|-10.26355|-0.31058 +2016-07-01|79.0|127.0|-10.94433|-0.31606 +2016-07-01|79.0|128.0|-11.55072|-0.32099 +2016-07-01|79.0|129.0|-12.08601|-0.32547 +2016-07-01|79.0|130.0|-12.55354|-0.3296 +2016-07-01|79.0|131.0|-12.95667|-0.33346 +2016-07-01|79.0|132.0|-13.29873|-0.33711 +2016-07-01|79.0|133.0|-13.58297|-0.34062 +2016-07-01|79.0|134.0|-13.81253|-0.34405 +2016-07-01|79.0|135.0|-13.99048|-0.34745 +2016-07-01|79.0|136.0|-14.11973|-0.35085 +2016-07-01|79.0|137.0|-14.20307|-0.35429 +2016-07-01|79.0|138.0|-14.24316|-0.3578 +2016-07-01|79.0|139.0|-14.24254|-0.36141 +2016-07-01|79.0|140.0|-14.20358|-0.36514 +2016-07-01|79.0|141.0|-14.12855|-0.36901 +2016-07-01|79.0|142.0|-14.01958|-0.37304 +2016-07-01|79.0|143.0|-13.87869|-0.37723 +2016-07-01|79.0|144.0|-13.70778|-0.3816 +2016-07-01|79.0|145.0|-13.50862|-0.38615 +2016-07-01|79.0|146.0|-13.2829|-0.3909 +2016-07-01|79.0|147.0|-13.0322|-0.39586 +2016-07-01|79.0|148.0|-12.75802|-0.40101 +2016-07-01|79.0|149.0|-12.46176|-0.40638 +2016-07-01|79.0|150.0|-12.14473|-0.41195 +2016-07-01|79.0|151.0|-11.80819|-0.41774 +2016-07-01|79.0|152.0|-11.45331|-0.42375 +2016-07-01|79.0|153.0|-11.0812|-0.42996 +2016-07-01|79.0|154.0|-10.69289|-0.43639 +2016-07-01|79.0|155.0|-10.28939|-0.44304 +2016-07-01|79.0|156.0|-9.87162|-0.4499 +2016-07-01|79.0|157.0|-9.44046|-0.45697 +2016-07-01|79.0|158.0|-8.99676|-0.46425 +2016-07-01|79.0|159.0|-8.54131|-0.47175 +2016-07-01|79.0|160.0|-8.07486|-0.47945 +2016-07-01|79.0|161.0|-7.59813|-0.48736 +2016-07-01|79.0|162.0|-7.1118|-0.49547 +2016-07-01|79.0|163.0|-6.61652|-0.50379 +2016-07-01|79.0|164.0|-6.11291|-0.51232 +2016-07-01|79.0|165.0|-5.60157|-0.52104 +2016-07-01|79.0|166.0|-5.08305|-0.52996 +2016-07-01|79.0|167.0|-4.55791|-0.53909 +2016-07-01|79.0|168.0|-4.02666|-0.5484 +2016-07-01|79.0|169.0|-3.48982|-0.55792 +2016-07-01|79.0|170.0|-2.94785|-0.56762 +2016-07-01|79.0|171.0|-2.40123|-0.57752 +2016-07-01|79.0|172.0|-1.85042|-0.58762 +2016-07-01|79.0|173.0|-1.29584|-0.5979 +2016-07-01|79.0|174.0|-0.73794|-0.60837 +2016-07-01|79.0|175.0|-0.17711|-0.61904 +2016-07-01|79.0|176.0|0.38623|-0.62989 +2016-07-01|79.0|177.0|0.95168|-0.64093 +2016-07-01|79.0|178.0|1.51886|-0.65216 +2016-07-01|79.0|179.0|2.08738|-0.66359 +2016-07-01|79.0|-1.0|-3.99466|0.41488 +2016-07-01|79.0|-2.0|-4.76097|0.41773 +2016-07-01|79.0|-3.0|-5.5275|0.42065 +2016-07-01|79.0|-4.0|-6.29418|0.42365 +2016-07-01|79.0|-5.0|-7.06091|0.42673 +2016-07-01|79.0|-6.0|-7.82761|0.42989 +2016-07-01|79.0|-7.0|-8.59419|0.43313 +2016-07-01|79.0|-8.0|-9.36056|0.43646 +2016-07-01|79.0|-9.0|-10.12663|0.43987 +2016-07-01|79.0|-10.0|-10.89231|0.44337 +2016-07-01|79.0|-11.0|-11.6575|0.44696 +2016-07-01|79.0|-12.0|-12.42213|0.45065 +2016-07-01|79.0|-13.0|-13.18608|0.45443 +2016-07-01|79.0|-14.0|-13.94926|0.4583 +2016-07-01|79.0|-15.0|-14.71158|0.46228 +2016-07-01|79.0|-16.0|-15.47294|0.46636 +2016-07-01|79.0|-17.0|-16.23322|0.47055 +2016-07-01|79.0|-18.0|-16.99234|0.47485 +2016-07-01|79.0|-19.0|-17.75017|0.47926 +2016-07-01|79.0|-20.0|-18.50662|0.48378 +2016-07-01|79.0|-21.0|-19.26156|0.48842 +2016-07-01|79.0|-22.0|-20.01488|0.49319 +2016-07-01|79.0|-23.0|-20.76646|0.49808 +2016-07-01|79.0|-24.0|-21.51619|0.5031 +2016-07-01|79.0|-25.0|-22.26392|0.50826 +2016-07-01|79.0|-26.0|-23.00953|0.51355 +2016-07-01|79.0|-27.0|-23.75289|0.51899 +2016-07-01|79.0|-28.0|-24.49385|0.52458 +2016-07-01|79.0|-29.0|-25.23227|0.53031 +2016-07-01|79.0|-30.0|-25.968|0.53621 +2016-07-01|79.0|-31.0|-26.70088|0.54226 +2016-07-01|79.0|-32.0|-27.43076|0.54849 +2016-07-01|79.0|-33.0|-28.15745|0.55488 +2016-07-01|79.0|-34.0|-28.88078|0.56146 +2016-07-01|79.0|-35.0|-29.60058|0.56822 +2016-07-01|79.0|-36.0|-30.31664|0.57518 +2016-07-01|79.0|-37.0|-31.02878|0.58233 +2016-07-01|79.0|-38.0|-31.73677|0.58969 +2016-07-01|79.0|-39.0|-32.44041|0.59727 +2016-07-01|79.0|-40.0|-33.13945|0.60506 +2016-07-01|79.0|-41.0|-33.83367|0.61309 +2016-07-01|79.0|-42.0|-34.52281|0.62135 +2016-07-01|79.0|-43.0|-35.2066|0.62986 +2016-07-01|79.0|-44.0|-35.88477|0.63863 +2016-07-01|79.0|-45.0|-36.55702|0.64766 +2016-07-01|79.0|-46.0|-37.22305|0.65697 +2016-07-01|79.0|-47.0|-37.88252|0.66657 +2016-07-01|79.0|-48.0|-38.53509|0.67646 +2016-07-01|79.0|-49.0|-39.18041|0.68667 +2016-07-01|79.0|-50.0|-39.81808|0.6972 +2016-07-01|79.0|-51.0|-40.44769|0.70806 +2016-07-01|79.0|-52.0|-41.06883|0.71927 +2016-07-01|79.0|-53.0|-41.68102|0.73084 +2016-07-01|79.0|-54.0|-42.28379|0.74278 +2016-07-01|79.0|-55.0|-42.87661|0.75512 +2016-07-01|79.0|-56.0|-43.45894|0.76785 +2016-07-01|79.0|-57.0|-44.03019|0.78101 +2016-07-01|79.0|-58.0|-44.58974|0.79461 +2016-07-01|79.0|-59.0|-45.13691|0.80866 +2016-07-01|79.0|-60.0|-45.671|0.82317 +2016-07-01|79.0|-61.0|-46.19125|0.83817 +2016-07-01|79.0|-62.0|-46.69683|0.85368 +2016-07-01|79.0|-63.0|-47.18687|0.86971 +2016-07-01|79.0|-64.0|-47.66045|0.88627 +2016-07-01|79.0|-65.0|-48.11653|0.90339 +2016-07-01|79.0|-66.0|-48.55405|0.92108 +2016-07-01|79.0|-67.0|-48.97183|0.93935 +2016-07-01|79.0|-68.0|-49.36862|0.95822 +2016-07-01|79.0|-69.0|-49.74305|0.97771 +2016-07-01|79.0|-70.0|-50.09367|0.99782 +2016-07-01|79.0|-71.0|-50.41888|1.01856 +2016-07-01|79.0|-72.0|-50.71697|1.03993 +2016-07-01|79.0|-73.0|-50.98609|1.06194 +2016-07-01|79.0|-74.0|-51.22422|1.08457 +2016-07-01|79.0|-75.0|-51.42917|1.10781 +2016-07-01|79.0|-76.0|-51.59859|1.13164 +2016-07-01|79.0|-77.0|-51.72989|1.15602 +2016-07-01|79.0|-78.0|-51.82027|1.18091 +2016-07-01|79.0|-79.0|-51.8667|1.20622 +2016-07-01|79.0|-80.0|-51.86587|1.23188 +2016-07-01|79.0|-81.0|-51.8142|1.25777 +2016-07-01|79.0|-82.0|-51.70777|1.28374 +2016-07-01|79.0|-83.0|-51.54237|1.30961 +2016-07-01|79.0|-84.0|-51.31341|1.33514 +2016-07-01|79.0|-85.0|-51.01592|1.36005 +2016-07-01|79.0|-86.0|-50.64456|1.38398 +2016-07-01|79.0|-87.0|-50.19358|1.40651 +2016-07-01|79.0|-88.0|-49.65683|1.4271 +2016-07-01|79.0|-89.0|-49.02778|1.44512 +2016-07-01|79.0|-90.0|-48.29952|1.45983 +2016-07-01|79.0|-91.0|-47.46485|1.47032 +2016-07-01|79.0|-92.0|-46.51637|1.47557 +2016-07-01|79.0|-93.0|-45.44658|1.47435 +2016-07-01|79.0|-94.0|-44.24809|1.46532 +2016-07-01|79.0|-95.0|-42.91384|1.44693 +2016-07-01|79.0|-96.0|-41.43746|1.41754 +2016-07-01|79.0|-97.0|-39.81365|1.37541 +2016-07-01|79.0|-98.0|-38.03866|1.31879 +2016-07-01|79.0|-99.0|-36.11085|1.24605 +2016-07-01|79.0|-100.0|-34.0313|1.15579 +2016-07-01|79.0|-101.0|-31.8044|1.04703 +2016-07-01|79.0|-102.0|-29.43839|0.91943 +2016-07-01|79.0|-103.0|-26.9458|0.77343 +2016-07-01|79.0|-104.0|-24.34357|0.6104 +2016-07-01|79.0|-105.0|-21.6529|0.43274 +2016-07-01|79.0|-106.0|-18.89876|0.24382 +2016-07-01|79.0|-107.0|-16.10898|0.04777 +2016-07-01|79.0|-108.0|-13.31305|-0.15074 +2016-07-01|79.0|-109.0|-10.54069|-0.3469 +2016-07-01|79.0|-110.0|-7.82048|-0.53613 +2016-07-01|79.0|-111.0|-5.1785|-0.71443 +2016-07-01|79.0|-112.0|-2.63739|-0.87863 +2016-07-01|79.0|-113.0|-0.21564|-1.02651 +2016-07-01|79.0|-114.0|2.07269|-1.15681 +2016-07-01|79.0|-115.0|4.21787|-1.26915 +2016-07-01|79.0|-116.0|6.21419|-1.36389 +2016-07-01|79.0|-117.0|8.05946|-1.44194 +2016-07-01|79.0|-118.0|9.75444|-1.50457 +2016-07-01|79.0|-119.0|11.30218|-1.55328 +2016-07-01|79.0|-120.0|12.7075|-1.58965 +2016-07-01|79.0|-121.0|13.97644|-1.61528 +2016-07-01|79.0|-122.0|15.11584|-1.63165 +2016-07-01|79.0|-123.0|16.133|-1.64017 +2016-07-01|79.0|-124.0|17.03541|-1.64209 +2016-07-01|79.0|-125.0|17.83051|-1.63852 +2016-07-01|79.0|-126.0|18.52558|-1.63042 +2016-07-01|79.0|-127.0|19.12764|-1.61865 +2016-07-01|79.0|-128.0|19.64334|-1.6039 +2016-07-01|79.0|-129.0|20.07898|-1.58679 +2016-07-01|79.0|-130.0|20.44043|-1.56782 +2016-07-01|79.0|-131.0|20.73319|-1.54742 +2016-07-01|79.0|-132.0|20.96234|-1.52594 +2016-07-01|79.0|-133.0|21.1326|-1.50367 +2016-07-01|79.0|-134.0|21.24831|-1.48086 +2016-07-01|79.0|-135.0|21.31349|-1.4577 +2016-07-01|79.0|-136.0|21.33184|-1.43435 +2016-07-01|79.0|-137.0|21.30675|-1.41095 +2016-07-01|79.0|-138.0|21.24135|-1.3876 +2016-07-01|79.0|-139.0|21.13854|-1.36437 +2016-07-01|79.0|-140.0|21.00095|-1.34135 +2016-07-01|79.0|-141.0|20.83103|-1.31857 +2016-07-01|79.0|-142.0|20.63104|-1.29609 +2016-07-01|79.0|-143.0|20.40304|-1.27392 +2016-07-01|79.0|-144.0|20.14897|-1.25209 +2016-07-01|79.0|-145.0|19.87058|-1.23062 +2016-07-01|79.0|-146.0|19.56951|-1.20951 +2016-07-01|79.0|-147.0|19.24729|-1.18877 +2016-07-01|79.0|-148.0|18.90533|-1.16841 +2016-07-01|79.0|-149.0|18.54492|-1.14842 +2016-07-01|79.0|-150.0|18.16729|-1.12879 +2016-07-01|79.0|-151.0|17.77356|-1.10953 +2016-07-01|79.0|-152.0|17.3648|-1.09062 +2016-07-01|79.0|-153.0|16.94198|-1.07207 +2016-07-01|79.0|-154.0|16.50603|-1.05386 +2016-07-01|79.0|-155.0|16.05782|-1.03598 +2016-07-01|79.0|-156.0|15.59815|-1.01842 +2016-07-01|79.0|-157.0|15.1278|-1.00119 +2016-07-01|79.0|-158.0|14.64748|-0.98426 +2016-07-01|79.0|-159.0|14.15786|-0.96763 +2016-07-01|79.0|-160.0|13.6596|-0.95128 +2016-07-01|79.0|-161.0|13.1533|-0.93523 +2016-07-01|79.0|-162.0|12.63955|-0.91944 +2016-07-01|79.0|-163.0|12.11889|-0.90392 +2016-07-01|79.0|-164.0|11.59185|-0.88866 +2016-07-01|79.0|-165.0|11.05893|-0.87366 +2016-07-01|79.0|-166.0|10.52063|-0.85889 +2016-07-01|79.0|-167.0|9.9774|-0.84437 +2016-07-01|79.0|-168.0|9.4297|-0.83008 +2016-07-01|79.0|-169.0|8.87797|-0.81602 +2016-07-01|79.0|-170.0|8.32261|-0.80218 +2016-07-01|79.0|-171.0|7.76405|-0.78856 +2016-07-01|79.0|-172.0|7.20269|-0.77515 +2016-07-01|79.0|-173.0|6.63891|-0.76195 +2016-07-01|79.0|-174.0|6.07311|-0.74896 +2016-07-01|79.0|-175.0|5.50567|-0.73617 +2016-07-01|79.0|-176.0|4.93696|-0.72359 +2016-07-01|79.0|-177.0|4.36735|-0.7112 +2016-07-01|79.0|-178.0|3.79722|-0.699 +2016-07-01|79.0|-179.0|3.22693|-0.68701 +2016-07-01|80.0|0.0|-3.19284|0.43955 +2016-07-01|80.0|1.0|-2.41393|0.43681 +2016-07-01|80.0|2.0|-1.63546|0.43415 +2016-07-01|80.0|3.0|-0.85751|0.43157 +2016-07-01|80.0|4.0|-0.08018|0.42905 +2016-07-01|80.0|5.0|0.69647|0.42661 +2016-07-01|80.0|6.0|1.47234|0.42423 +2016-07-01|80.0|7.0|2.24737|0.42192 +2016-07-01|80.0|8.0|3.02146|0.41969 +2016-07-01|80.0|9.0|3.79453|0.41751 +2016-07-01|80.0|10.0|4.56649|0.41541 +2016-07-01|80.0|11.0|5.33727|0.41336 +2016-07-01|80.0|12.0|6.10677|0.41138 +2016-07-01|80.0|13.0|6.8749|0.40947 +2016-07-01|80.0|14.0|7.64157|0.40761 +2016-07-01|80.0|15.0|8.40669|0.40582 +2016-07-01|80.0|16.0|9.17017|0.40408 +2016-07-01|80.0|17.0|9.93191|0.40241 +2016-07-01|80.0|18.0|10.6918|0.40079 +2016-07-01|80.0|19.0|11.44976|0.39923 +2016-07-01|80.0|20.0|12.20567|0.39773 +2016-07-01|80.0|21.0|12.95943|0.39629 +2016-07-01|80.0|22.0|13.71092|0.3949 +2016-07-01|80.0|23.0|14.46004|0.39357 +2016-07-01|80.0|24.0|15.20667|0.39229 +2016-07-01|80.0|25.0|15.95069|0.39107 +2016-07-01|80.0|26.0|16.69198|0.38991 +2016-07-01|80.0|27.0|17.4304|0.3888 +2016-07-01|80.0|28.0|18.16582|0.38774 +2016-07-01|80.0|29.0|18.89812|0.38674 +2016-07-01|80.0|30.0|19.62714|0.38579 +2016-07-01|80.0|31.0|20.35274|0.3849 +2016-07-01|80.0|32.0|21.07476|0.38406 +2016-07-01|80.0|33.0|21.79305|0.38327 +2016-07-01|80.0|34.0|22.50744|0.38254 +2016-07-01|80.0|35.0|23.21777|0.38186 +2016-07-01|80.0|36.0|23.92384|0.38124 +2016-07-01|80.0|37.0|24.62549|0.38067 +2016-07-01|80.0|38.0|25.3225|0.38015 +2016-07-01|80.0|39.0|26.01468|0.37969 +2016-07-01|80.0|40.0|26.70182|0.37928 +2016-07-01|80.0|41.0|27.3837|0.37893 +2016-07-01|80.0|42.0|28.06008|0.37863 +2016-07-01|80.0|43.0|28.73072|0.37838 +2016-07-01|80.0|44.0|29.39537|0.37819 +2016-07-01|80.0|45.0|30.05376|0.37806 +2016-07-01|80.0|46.0|30.70561|0.37798 +2016-07-01|80.0|47.0|31.35063|0.37796 +2016-07-01|80.0|48.0|31.98851|0.37799 +2016-07-01|80.0|49.0|32.61893|0.37808 +2016-07-01|80.0|50.0|33.24154|0.37823 +2016-07-01|80.0|51.0|33.85599|0.37844 +2016-07-01|80.0|52.0|34.46189|0.3787 +2016-07-01|80.0|53.0|35.05885|0.37902 +2016-07-01|80.0|54.0|35.64645|0.3794 +2016-07-01|80.0|55.0|36.22423|0.37984 +2016-07-01|80.0|56.0|36.79172|0.38033 +2016-07-01|80.0|57.0|37.34844|0.38088 +2016-07-01|80.0|58.0|37.89384|0.38149 +2016-07-01|80.0|59.0|38.42738|0.38216 +2016-07-01|80.0|60.0|38.94845|0.38289 +2016-07-01|80.0|61.0|39.45643|0.38367 +2016-07-01|80.0|62.0|39.95065|0.38451 +2016-07-01|80.0|63.0|40.4304|0.3854 +2016-07-01|80.0|64.0|40.89492|0.38635 +2016-07-01|80.0|65.0|41.34342|0.38735 +2016-07-01|80.0|66.0|41.77503|0.3884 +2016-07-01|80.0|67.0|42.18885|0.38949 +2016-07-01|80.0|68.0|42.58391|0.39063 +2016-07-01|80.0|69.0|42.95917|0.39181 +2016-07-01|80.0|70.0|43.31354|0.39302 +2016-07-01|80.0|71.0|43.64583|0.39426 +2016-07-01|80.0|72.0|43.9548|0.39552 +2016-07-01|80.0|73.0|44.2391|0.3968 +2016-07-01|80.0|74.0|44.4973|0.39808 +2016-07-01|80.0|75.0|44.72787|0.39935 +2016-07-01|80.0|76.0|44.92919|0.4006 +2016-07-01|80.0|77.0|45.09952|0.40182 +2016-07-01|80.0|78.0|45.237|0.40298 +2016-07-01|80.0|79.0|45.33964|0.40406 +2016-07-01|80.0|80.0|45.40535|0.40505 +2016-07-01|80.0|81.0|45.43188|0.4059 +2016-07-01|80.0|82.0|45.41684|0.40659 +2016-07-01|80.0|83.0|45.35769|0.40708 +2016-07-01|80.0|84.0|45.25177|0.40732 +2016-07-01|80.0|85.0|45.09624|0.40726 +2016-07-01|80.0|86.0|44.88812|0.40685 +2016-07-01|80.0|87.0|44.62429|0.40601 +2016-07-01|80.0|88.0|44.30148|0.40468 +2016-07-01|80.0|89.0|43.91634|0.40276 +2016-07-01|80.0|90.0|43.46536|0.40015 +2016-07-01|80.0|91.0|42.94503|0.39676 +2016-07-01|80.0|92.0|42.35176|0.39246 +2016-07-01|80.0|93.0|41.68201|0.38711 +2016-07-01|80.0|94.0|40.93233|0.38059 +2016-07-01|80.0|95.0|40.09945|0.37273 +2016-07-01|80.0|96.0|39.18036|0.36338 +2016-07-01|80.0|97.0|38.17247|0.35237 +2016-07-01|80.0|98.0|37.07371|0.33954 +2016-07-01|80.0|99.0|35.8827|0.32474 +2016-07-01|80.0|100.0|34.59892|0.30783 +2016-07-01|80.0|101.0|33.22289|0.28868 +2016-07-01|80.0|102.0|31.75635|0.26722 +2016-07-01|80.0|103.0|30.20239|0.24339 +2016-07-01|80.0|104.0|28.56567|0.21723 +2016-07-01|80.0|105.0|26.8524|0.18882 +2016-07-01|80.0|106.0|25.0705|0.1583 +2016-07-01|80.0|107.0|23.22948|0.12591 +2016-07-01|80.0|108.0|21.34035|0.09196 +2016-07-01|80.0|109.0|19.41543|0.05682 +2016-07-01|80.0|110.0|17.46803|0.0209 +2016-07-01|80.0|111.0|15.51213|-0.01533 +2016-07-01|80.0|112.0|13.56194|-0.0514 +2016-07-01|80.0|113.0|11.6315|-0.08687 +2016-07-01|80.0|114.0|9.73429|-0.12129 +2016-07-01|80.0|115.0|7.8828|-0.1543 +2016-07-01|80.0|116.0|6.08829|-0.1856 +2016-07-01|80.0|117.0|4.36056|-0.21494 +2016-07-01|80.0|118.0|2.70778|-0.24218 +2016-07-01|80.0|119.0|1.13647|-0.26723 +2016-07-01|80.0|120.0|-0.34845|-0.29007 +2016-07-01|80.0|121.0|-1.74365|-0.31074 +2016-07-01|80.0|122.0|-3.04717|-0.32933 +2016-07-01|80.0|123.0|-4.25831|-0.34597 +2016-07-01|80.0|124.0|-5.37744|-0.36079 +2016-07-01|80.0|125.0|-6.40582|-0.37395 +2016-07-01|80.0|126.0|-7.34544|-0.38563 +2016-07-01|80.0|127.0|-8.19884|-0.39599 +2016-07-01|80.0|128.0|-8.96899|-0.40519 +2016-07-01|80.0|129.0|-9.65917|-0.41338 +2016-07-01|80.0|130.0|-10.27282|-0.42071 +2016-07-01|80.0|131.0|-10.81353|-0.42732 +2016-07-01|80.0|132.0|-11.2849|-0.43333 +2016-07-01|80.0|133.0|-11.69052|-0.43883 +2016-07-01|80.0|134.0|-12.03393|-0.44394 +2016-07-01|80.0|135.0|-12.31856|-0.44874 +2016-07-01|80.0|136.0|-12.54775|-0.4533 +2016-07-01|80.0|137.0|-12.72469|-0.45769 +2016-07-01|80.0|138.0|-12.85244|-0.46198 +2016-07-01|80.0|139.0|-12.9339|-0.4662 +2016-07-01|80.0|140.0|-12.97183|-0.47041 +2016-07-01|80.0|141.0|-12.96884|-0.47464 +2016-07-01|80.0|142.0|-12.9274|-0.47893 +2016-07-01|80.0|143.0|-12.84983|-0.4833 +2016-07-01|80.0|144.0|-12.73833|-0.48778 +2016-07-01|80.0|145.0|-12.59495|-0.49238 +2016-07-01|80.0|146.0|-12.42164|-0.49714 +2016-07-01|80.0|147.0|-12.22021|-0.50205 +2016-07-01|80.0|148.0|-11.99238|-0.50713 +2016-07-01|80.0|149.0|-11.73975|-0.5124 +2016-07-01|80.0|150.0|-11.46384|-0.51785 +2016-07-01|80.0|151.0|-11.16607|-0.52351 +2016-07-01|80.0|152.0|-10.84777|-0.52937 +2016-07-01|80.0|153.0|-10.51021|-0.53544 +2016-07-01|80.0|154.0|-10.15457|-0.54172 +2016-07-01|80.0|155.0|-9.78197|-0.54822 +2016-07-01|80.0|156.0|-9.39346|-0.55493 +2016-07-01|80.0|157.0|-8.99003|-0.56187 +2016-07-01|80.0|158.0|-8.57263|-0.56903 +2016-07-01|80.0|159.0|-8.14215|-0.57641 +2016-07-01|80.0|160.0|-7.69943|-0.58401 +2016-07-01|80.0|161.0|-7.24527|-0.59184 +2016-07-01|80.0|162.0|-6.78042|-0.59989 +2016-07-01|80.0|163.0|-6.30562|-0.60817 +2016-07-01|80.0|164.0|-5.82154|-0.61667 +2016-07-01|80.0|165.0|-5.32885|-0.6254 +2016-07-01|80.0|166.0|-4.82817|-0.63435 +2016-07-01|80.0|167.0|-4.3201|-0.64353 +2016-07-01|80.0|168.0|-3.80521|-0.65293 +2016-07-01|80.0|169.0|-3.28406|-0.66256 +2016-07-01|80.0|170.0|-2.75717|-0.67242 +2016-07-01|80.0|171.0|-2.22507|-0.6825 +2016-07-01|80.0|172.0|-1.68824|-0.69281 +2016-07-01|80.0|173.0|-1.14717|-0.70334 +2016-07-01|80.0|174.0|-0.60233|-0.71411 +2016-07-01|80.0|175.0|-0.05416|-0.7251 +2016-07-01|80.0|176.0|0.4969|-0.73633 +2016-07-01|80.0|177.0|1.05039|-0.74779 +2016-07-01|80.0|178.0|1.60591|-0.75949 +2016-07-01|80.0|179.0|2.16304|-0.77142 +2016-07-01|80.0|-1.0|-3.97213|0.44236 +2016-07-01|80.0|-2.0|-4.7517|0.44526 +2016-07-01|80.0|-3.0|-5.53149|0.44823 +2016-07-01|80.0|-4.0|-6.3114|0.45128 +2016-07-01|80.0|-5.0|-7.09136|0.45441 +2016-07-01|80.0|-6.0|-7.87128|0.45763 +2016-07-01|80.0|-7.0|-8.6511|0.46094 +2016-07-01|80.0|-8.0|-9.43072|0.46434 +2016-07-01|80.0|-9.0|-10.21006|0.46782 +2016-07-01|80.0|-10.0|-10.98904|0.47141 +2016-07-01|80.0|-11.0|-11.76758|0.47508 +2016-07-01|80.0|-12.0|-12.54559|0.47885 +2016-07-01|80.0|-13.0|-13.32298|0.48273 +2016-07-01|80.0|-14.0|-14.09967|0.48671 +2016-07-01|80.0|-15.0|-14.87557|0.49079 +2016-07-01|80.0|-16.0|-15.65058|0.49498 +2016-07-01|80.0|-17.0|-16.42462|0.49928 +2016-07-01|80.0|-18.0|-17.19758|0.5037 +2016-07-01|80.0|-19.0|-17.96938|0.50823 +2016-07-01|80.0|-20.0|-18.7399|0.51288 +2016-07-01|80.0|-21.0|-19.50906|0.51766 +2016-07-01|80.0|-22.0|-20.27674|0.52257 +2016-07-01|80.0|-23.0|-21.04284|0.52761 +2016-07-01|80.0|-24.0|-21.80725|0.53278 +2016-07-01|80.0|-25.0|-22.56985|0.53809 +2016-07-01|80.0|-26.0|-23.33052|0.54355 +2016-07-01|80.0|-27.0|-24.08916|0.54916 +2016-07-01|80.0|-28.0|-24.84562|0.55492 +2016-07-01|80.0|-29.0|-25.59978|0.56083 +2016-07-01|80.0|-30.0|-26.35151|0.56691 +2016-07-01|80.0|-31.0|-27.10067|0.57316 +2016-07-01|80.0|-32.0|-27.84711|0.57958 +2016-07-01|80.0|-33.0|-28.59068|0.58618 +2016-07-01|80.0|-34.0|-29.33124|0.59297 +2016-07-01|80.0|-35.0|-30.06861|0.59995 +2016-07-01|80.0|-36.0|-30.80262|0.60713 +2016-07-01|80.0|-37.0|-31.53311|0.61451 +2016-07-01|80.0|-38.0|-32.25988|0.62211 +2016-07-01|80.0|-39.0|-32.98275|0.62992 +2016-07-01|80.0|-40.0|-33.70152|0.63797 +2016-07-01|80.0|-41.0|-34.41597|0.64625 +2016-07-01|80.0|-42.0|-35.12588|0.65478 +2016-07-01|80.0|-43.0|-35.83103|0.66356 +2016-07-01|80.0|-44.0|-36.53116|0.67261 +2016-07-01|80.0|-45.0|-37.22603|0.68193 +2016-07-01|80.0|-46.0|-37.91537|0.69153 +2016-07-01|80.0|-47.0|-38.59889|0.70143 +2016-07-01|80.0|-48.0|-39.27629|0.71164 +2016-07-01|80.0|-49.0|-39.94727|0.72216 +2016-07-01|80.0|-50.0|-40.61149|0.73302 +2016-07-01|80.0|-51.0|-41.26859|0.74422 +2016-07-01|80.0|-52.0|-41.91822|0.75578 +2016-07-01|80.0|-53.0|-42.55996|0.7677 +2016-07-01|80.0|-54.0|-43.19341|0.78002 +2016-07-01|80.0|-55.0|-43.81813|0.79273 +2016-07-01|80.0|-56.0|-44.43364|0.80586 +2016-07-01|80.0|-57.0|-45.03944|0.81942 +2016-07-01|80.0|-58.0|-45.635|0.83343 +2016-07-01|80.0|-59.0|-46.21976|0.84791 +2016-07-01|80.0|-60.0|-46.79309|0.86288 +2016-07-01|80.0|-61.0|-47.35437|0.87835 +2016-07-01|80.0|-62.0|-47.9029|0.89434 +2016-07-01|80.0|-63.0|-48.43793|0.91087 +2016-07-01|80.0|-64.0|-48.95867|0.92797 +2016-07-01|80.0|-65.0|-49.46427|0.94564 +2016-07-01|80.0|-66.0|-49.95381|0.96392 +2016-07-01|80.0|-67.0|-50.42632|0.98282 +2016-07-01|80.0|-68.0|-50.88073|1.00236 +2016-07-01|80.0|-69.0|-51.31589|1.02256 +2016-07-01|80.0|-70.0|-51.73058|1.04344 +2016-07-01|80.0|-71.0|-52.12347|1.06501 +2016-07-01|80.0|-72.0|-52.49312|1.08729 +2016-07-01|80.0|-73.0|-52.83797|1.11029 +2016-07-01|80.0|-74.0|-53.15634|1.13402 +2016-07-01|80.0|-75.0|-53.44639|1.15847 +2016-07-01|80.0|-76.0|-53.70613|1.18365 +2016-07-01|80.0|-77.0|-53.93341|1.20955 +2016-07-01|80.0|-78.0|-54.12587|1.23614 +2016-07-01|80.0|-79.0|-54.28097|1.2634 +2016-07-01|80.0|-80.0|-54.3959|1.29128 +2016-07-01|80.0|-81.0|-54.46764|1.31971 +2016-07-01|80.0|-82.0|-54.49288|1.3486 +2016-07-01|80.0|-83.0|-54.46802|1.37784 +2016-07-01|80.0|-84.0|-54.38911|1.40728 +2016-07-01|80.0|-85.0|-54.25187|1.43674 +2016-07-01|80.0|-86.0|-54.05165|1.46596 +2016-07-01|80.0|-87.0|-53.78337|1.49466 +2016-07-01|80.0|-88.0|-53.44155|1.52246 +2016-07-01|80.0|-89.0|-53.02024|1.54889 +2016-07-01|80.0|-90.0|-52.51305|1.57339 +2016-07-01|80.0|-91.0|-51.91311|1.59529 +2016-07-01|80.0|-92.0|-51.21313|1.61375 +2016-07-01|80.0|-93.0|-50.4054|1.62779 +2016-07-01|80.0|-94.0|-49.48191|1.63624 +2016-07-01|80.0|-95.0|-48.43441|1.63774 +2016-07-01|80.0|-96.0|-47.25462|1.63072 +2016-07-01|80.0|-97.0|-45.93446|1.61341 +2016-07-01|80.0|-98.0|-44.46637|1.58384 +2016-07-01|80.0|-99.0|-42.84372|1.53993 +2016-07-01|80.0|-100.0|-41.06133|1.47951 +2016-07-01|80.0|-101.0|-39.11608|1.4005 +2016-07-01|80.0|-102.0|-37.0076|1.30105 +2016-07-01|80.0|-103.0|-34.739|1.17976 +2016-07-01|80.0|-104.0|-32.31753|1.03594 +2016-07-01|80.0|-105.0|-29.75516|0.86984 +2016-07-01|80.0|-106.0|-27.06889|0.68288 +2016-07-01|80.0|-107.0|-24.28072|0.47776 +2016-07-01|80.0|-108.0|-21.41715|0.25845 +2016-07-01|80.0|-109.0|-18.50829|0.02999 +2016-07-01|80.0|-110.0|-15.58646|-0.20186 +2016-07-01|80.0|-111.0|-12.68462|-0.43107 +2016-07-01|80.0|-112.0|-9.83467|-0.65189 +2016-07-01|80.0|-113.0|-7.06585|-0.85928 +2016-07-01|80.0|-114.0|-4.40354|-1.04928 +2016-07-01|80.0|-115.0|-1.86842|-1.21917 +2016-07-01|80.0|-116.0|0.52388|-1.36748 +2016-07-01|80.0|-117.0|2.76268|-1.49387 +2016-07-01|80.0|-118.0|4.84191|-1.59893 +2016-07-01|80.0|-119.0|6.75947|-1.68393 +2016-07-01|80.0|-120.0|8.51652|-1.75058 +2016-07-01|80.0|-121.0|10.11681|-1.80084 +2016-07-01|80.0|-122.0|11.56596|-1.83674 +2016-07-01|80.0|-123.0|12.87088|-1.86026 +2016-07-01|80.0|-124.0|14.03933|-1.87329 +2016-07-01|80.0|-125.0|15.07946|-1.87751 +2016-07-01|80.0|-126.0|15.99957|-1.87444 +2016-07-01|80.0|-127.0|16.80784|-1.8654 +2016-07-01|80.0|-128.0|17.51224|-1.85154 +2016-07-01|80.0|-129.0|18.12035|-1.83382 +2016-07-01|80.0|-130.0|18.63937|-1.81307 +2016-07-01|80.0|-131.0|19.07602|-1.78997 +2016-07-01|80.0|-132.0|19.43659|-1.76508 +2016-07-01|80.0|-133.0|19.7269|-1.73889 +2016-07-01|80.0|-134.0|19.95234|-1.71177 +2016-07-01|80.0|-135.0|20.11785|-1.68403 +2016-07-01|80.0|-136.0|20.22801|-1.65594 +2016-07-01|80.0|-137.0|20.287|-1.62771 +2016-07-01|80.0|-138.0|20.29868|-1.59948 +2016-07-01|80.0|-139.0|20.26657|-1.57141 +2016-07-01|80.0|-140.0|20.19393|-1.54359 +2016-07-01|80.0|-141.0|20.08372|-1.51609 +2016-07-01|80.0|-142.0|19.93868|-1.48899 +2016-07-01|80.0|-143.0|19.76133|-1.46233 +2016-07-01|80.0|-144.0|19.55397|-1.43613 +2016-07-01|80.0|-145.0|19.31873|-1.41044 +2016-07-01|80.0|-146.0|19.05757|-1.38525 +2016-07-01|80.0|-147.0|18.77231|-1.36058 +2016-07-01|80.0|-148.0|18.46462|-1.33643 +2016-07-01|80.0|-149.0|18.13604|-1.31281 +2016-07-01|80.0|-150.0|17.788|-1.2897 +2016-07-01|80.0|-151.0|17.42184|-1.2671 +2016-07-01|80.0|-152.0|17.0388|-1.245 +2016-07-01|80.0|-153.0|16.64002|-1.22339 +2016-07-01|80.0|-154.0|16.22657|-1.20226 +2016-07-01|80.0|-155.0|15.79947|-1.18159 +2016-07-01|80.0|-156.0|15.35965|-1.16138 +2016-07-01|80.0|-157.0|14.90798|-1.14162 +2016-07-01|80.0|-158.0|14.4453|-1.12228 +2016-07-01|80.0|-159.0|13.97237|-1.10335 +2016-07-01|80.0|-160.0|13.48995|-1.08483 +2016-07-01|80.0|-161.0|12.99871|-1.06671 +2016-07-01|80.0|-162.0|12.49932|-1.04896 +2016-07-01|80.0|-163.0|11.99241|-1.03158 +2016-07-01|80.0|-164.0|11.47856|-1.01455 +2016-07-01|80.0|-165.0|10.95834|-0.99787 +2016-07-01|80.0|-166.0|10.4323|-0.98153 +2016-07-01|80.0|-167.0|9.90096|-0.96552 +2016-07-01|80.0|-168.0|9.36482|-0.94982 +2016-07-01|80.0|-169.0|8.82437|-0.93443 +2016-07-01|80.0|-170.0|8.28007|-0.91934 +2016-07-01|80.0|-171.0|7.73238|-0.90455 +2016-07-01|80.0|-172.0|7.18175|-0.89004 +2016-07-01|80.0|-173.0|6.62861|-0.87581 +2016-07-01|80.0|-174.0|6.07338|-0.86186 +2016-07-01|80.0|-175.0|5.51648|-0.84817 +2016-07-01|80.0|-176.0|4.95833|-0.83475 +2016-07-01|80.0|-177.0|4.39934|-0.82158 +2016-07-01|80.0|-178.0|3.83991|-0.80867 +2016-07-01|80.0|-179.0|3.28044|-0.79601 +2016-07-01|81.0|0.0|-3.14939|0.47132 +2016-07-01|81.0|1.0|-2.35742|0.46857 +2016-07-01|81.0|2.0|-1.56585|0.46589 +2016-07-01|81.0|3.0|-0.77476|0.46329 +2016-07-01|81.0|4.0|0.01577|0.46077 +2016-07-01|81.0|5.0|0.80567|0.45833 +2016-07-01|81.0|6.0|1.59487|0.45596 +2016-07-01|81.0|7.0|2.38329|0.45367 +2016-07-01|81.0|8.0|3.17087|0.45145 +2016-07-01|81.0|9.0|3.95751|0.4493 +2016-07-01|81.0|10.0|4.74315|0.44722 +2016-07-01|81.0|11.0|5.52771|0.44521 +2016-07-01|81.0|12.0|6.3111|0.44327 +2016-07-01|81.0|13.0|7.09325|0.4414 +2016-07-01|81.0|14.0|7.87408|0.4396 +2016-07-01|81.0|15.0|8.65349|0.43787 +2016-07-01|81.0|16.0|9.43141|0.4362 +2016-07-01|81.0|17.0|10.20775|0.4346 +2016-07-01|81.0|18.0|10.98242|0.43307 +2016-07-01|81.0|19.0|11.75532|0.4316 +2016-07-01|81.0|20.0|12.52637|0.43019 +2016-07-01|81.0|21.0|13.29547|0.42885 +2016-07-01|81.0|22.0|14.06252|0.42757 +2016-07-01|81.0|23.0|14.82741|0.42636 +2016-07-01|81.0|24.0|15.59005|0.42521 +2016-07-01|81.0|25.0|16.35033|0.42413 +2016-07-01|81.0|26.0|17.10813|0.4231 +2016-07-01|81.0|27.0|17.86335|0.42215 +2016-07-01|81.0|28.0|18.61586|0.42125 +2016-07-01|81.0|29.0|19.36554|0.42042 +2016-07-01|81.0|30.0|20.11227|0.41965 +2016-07-01|81.0|31.0|20.85592|0.41895 +2016-07-01|81.0|32.0|21.59634|0.41831 +2016-07-01|81.0|33.0|22.3334|0.41774 +2016-07-01|81.0|34.0|23.06696|0.41723 +2016-07-01|81.0|35.0|23.79686|0.41678 +2016-07-01|81.0|36.0|24.52295|0.4164 +2016-07-01|81.0|37.0|25.24505|0.41609 +2016-07-01|81.0|38.0|25.96301|0.41584 +2016-07-01|81.0|39.0|26.67663|0.41566 +2016-07-01|81.0|40.0|27.38575|0.41555 +2016-07-01|81.0|41.0|28.09015|0.41551 +2016-07-01|81.0|42.0|28.78965|0.41553 +2016-07-01|81.0|43.0|29.48402|0.41563 +2016-07-01|81.0|44.0|30.17304|0.4158 +2016-07-01|81.0|45.0|30.85649|0.41604 +2016-07-01|81.0|46.0|31.53412|0.41635 +2016-07-01|81.0|47.0|32.20567|0.41673 +2016-07-01|81.0|48.0|32.87088|0.4172 +2016-07-01|81.0|49.0|33.52946|0.41773 +2016-07-01|81.0|50.0|34.18112|0.41835 +2016-07-01|81.0|51.0|34.82555|0.41904 +2016-07-01|81.0|52.0|35.46241|0.41982 +2016-07-01|81.0|53.0|36.09137|0.42067 +2016-07-01|81.0|54.0|36.71206|0.42161 +2016-07-01|81.0|55.0|37.32408|0.42263 +2016-07-01|81.0|56.0|37.92705|0.42374 +2016-07-01|81.0|57.0|38.52052|0.42494 +2016-07-01|81.0|58.0|39.10404|0.42622 +2016-07-01|81.0|59.0|39.67714|0.42759 +2016-07-01|81.0|60.0|40.2393|0.42906 +2016-07-01|81.0|61.0|40.78998|0.43061 +2016-07-01|81.0|62.0|41.32862|0.43226 +2016-07-01|81.0|63.0|41.8546|0.434 +2016-07-01|81.0|64.0|42.36727|0.43584 +2016-07-01|81.0|65.0|42.86596|0.43778 +2016-07-01|81.0|66.0|43.34992|0.43981 +2016-07-01|81.0|67.0|43.8184|0.44194 +2016-07-01|81.0|68.0|44.27055|0.44417 +2016-07-01|81.0|69.0|44.70549|0.44649 +2016-07-01|81.0|70.0|45.12229|0.4489 +2016-07-01|81.0|71.0|45.51994|0.45141 +2016-07-01|81.0|72.0|45.89737|0.45401 +2016-07-01|81.0|73.0|46.25344|0.45669 +2016-07-01|81.0|74.0|46.58693|0.45946 +2016-07-01|81.0|75.0|46.89652|0.4623 +2016-07-01|81.0|76.0|47.18084|0.46521 +2016-07-01|81.0|77.0|47.43837|0.46818 +2016-07-01|81.0|78.0|47.66753|0.4712 +2016-07-01|81.0|79.0|47.86662|0.47425 +2016-07-01|81.0|80.0|48.03381|0.47731 +2016-07-01|81.0|81.0|48.16715|0.48037 +2016-07-01|81.0|82.0|48.26455|0.48341 +2016-07-01|81.0|83.0|48.32381|0.48638 +2016-07-01|81.0|84.0|48.34256|0.48926 +2016-07-01|81.0|85.0|48.31827|0.49201 +2016-07-01|81.0|86.0|48.24826|0.49457 +2016-07-01|81.0|87.0|48.1297|0.49689 +2016-07-01|81.0|88.0|47.95957|0.49891 +2016-07-01|81.0|89.0|47.73473|0.50055 +2016-07-01|81.0|90.0|47.45183|0.50172 +2016-07-01|81.0|91.0|47.10741|0.50231 +2016-07-01|81.0|92.0|46.69786|0.50221 +2016-07-01|81.0|93.0|46.21948|0.50128 +2016-07-01|81.0|94.0|45.66847|0.49938 +2016-07-01|81.0|95.0|45.04102|0.49633 +2016-07-01|81.0|96.0|44.33335|0.49194 +2016-07-01|81.0|97.0|43.54179|0.48601 +2016-07-01|81.0|98.0|42.66285|0.47832 +2016-07-01|81.0|99.0|41.69338|0.46861 +2016-07-01|81.0|100.0|40.63065|0.45665 +2016-07-01|81.0|101.0|39.47258|0.44219 +2016-07-01|81.0|102.0|38.21785|0.42498 +2016-07-01|81.0|103.0|36.86609|0.40478 +2016-07-01|81.0|104.0|35.41815|0.38141 +2016-07-01|81.0|105.0|33.87621|0.35472 +2016-07-01|81.0|106.0|32.24402|0.32462 +2016-07-01|81.0|107.0|30.52702|0.29111 +2016-07-01|81.0|108.0|28.73241|0.25429 +2016-07-01|81.0|109.0|26.86921|0.21436 +2016-07-01|81.0|110.0|24.94817|0.17164 +2016-07-01|81.0|111.0|22.98159|0.12655 +2016-07-01|81.0|112.0|20.9831|0.07963 +2016-07-01|81.0|113.0|18.96725|0.03149 +2016-07-01|81.0|114.0|16.94911|-0.01723 +2016-07-01|81.0|115.0|14.94384|-0.06584 +2016-07-01|81.0|116.0|12.96617|-0.11371 +2016-07-01|81.0|117.0|11.02999|-0.16021 +2016-07-01|81.0|118.0|9.14797|-0.20483 +2016-07-01|81.0|119.0|7.33128|-0.24713 +2016-07-01|81.0|120.0|5.5894|-0.28679 +2016-07-01|81.0|121.0|3.93|-0.3236 +2016-07-01|81.0|122.0|2.35894|-0.35744 +2016-07-01|81.0|123.0|0.8804|-0.38829 +2016-07-01|81.0|124.0|-0.50307|-0.41621 +2016-07-01|81.0|125.0|-1.79031|-0.44131 +2016-07-01|81.0|126.0|-2.98142|-0.46376 +2016-07-01|81.0|127.0|-4.07748|-0.48375 +2016-07-01|81.0|128.0|-5.08046|-0.5015 +2016-07-01|81.0|129.0|-5.99293|-0.51722 +2016-07-01|81.0|130.0|-6.818|-0.53114 +2016-07-01|81.0|131.0|-7.55908|-0.54347 +2016-07-01|81.0|132.0|-8.21986|-0.55442 +2016-07-01|81.0|133.0|-8.80413|-0.56416 +2016-07-01|81.0|134.0|-9.31573|-0.57288 +2016-07-01|81.0|135.0|-9.75851|-0.58073 +2016-07-01|81.0|136.0|-10.13623|-0.58786 +2016-07-01|81.0|137.0|-10.45257|-0.59439 +2016-07-01|81.0|138.0|-10.71108|-0.60044 +2016-07-01|81.0|139.0|-10.91518|-0.60611 +2016-07-01|81.0|140.0|-11.06811|-0.61148 +2016-07-01|81.0|141.0|-11.17297|-0.61663 +2016-07-01|81.0|142.0|-11.23269|-0.62164 +2016-07-01|81.0|143.0|-11.25005|-0.62654 +2016-07-01|81.0|144.0|-11.22765|-0.63141 +2016-07-01|81.0|145.0|-11.16796|-0.63628 +2016-07-01|81.0|146.0|-11.07329|-0.64119 +2016-07-01|81.0|147.0|-10.94581|-0.64617 +2016-07-01|81.0|148.0|-10.78757|-0.65126 +2016-07-01|81.0|149.0|-10.60048|-0.65646 +2016-07-01|81.0|150.0|-10.38633|-0.66182 +2016-07-01|81.0|151.0|-10.14682|-0.66734 +2016-07-01|81.0|152.0|-9.88353|-0.67303 +2016-07-01|81.0|153.0|-9.59794|-0.67892 +2016-07-01|81.0|154.0|-9.29146|-0.68501 +2016-07-01|81.0|155.0|-8.9654|-0.69132 +2016-07-01|81.0|156.0|-8.62099|-0.69784 +2016-07-01|81.0|157.0|-8.2594|-0.70459 +2016-07-01|81.0|158.0|-7.88173|-0.71158 +2016-07-01|81.0|159.0|-7.48901|-0.71881 +2016-07-01|81.0|160.0|-7.08222|-0.72628 +2016-07-01|81.0|161.0|-6.66229|-0.73399 +2016-07-01|81.0|162.0|-6.2301|-0.74196 +2016-07-01|81.0|163.0|-5.78647|-0.75019 +2016-07-01|81.0|164.0|-5.3322|-0.75867 +2016-07-01|81.0|165.0|-4.86805|-0.76741 +2016-07-01|81.0|166.0|-4.39472|-0.77641 +2016-07-01|81.0|167.0|-3.9129|-0.78568 +2016-07-01|81.0|168.0|-3.42325|-0.79521 +2016-07-01|81.0|169.0|-2.9264|-0.80502 +2016-07-01|81.0|170.0|-2.42294|-0.8151 +2016-07-01|81.0|171.0|-1.91347|-0.82545 +2016-07-01|81.0|172.0|-1.39853|-0.83608 +2016-07-01|81.0|173.0|-0.87868|-0.84699 +2016-07-01|81.0|174.0|-0.35445|-0.85819 +2016-07-01|81.0|175.0|0.17367|-0.86967 +2016-07-01|81.0|176.0|0.70517|-0.88144 +2016-07-01|81.0|177.0|1.23955|-0.89352 +2016-07-01|81.0|178.0|1.77635|-0.90589 +2016-07-01|81.0|179.0|2.31508|-0.91856 +2016-07-01|81.0|-1.0|-3.9417|0.47416 +2016-07-01|81.0|-2.0|-4.73428|0.47708 +2016-07-01|81.0|-3.0|-5.52705|0.48009 +2016-07-01|81.0|-4.0|-6.31994|0.48318 +2016-07-01|81.0|-5.0|-7.11287|0.48637 +2016-07-01|81.0|-6.0|-7.90578|0.48964 +2016-07-01|81.0|-7.0|-8.69859|0.493 +2016-07-01|81.0|-8.0|-9.49122|0.49646 +2016-07-01|81.0|-9.0|-10.28361|0.50001 +2016-07-01|81.0|-10.0|-11.07568|0.50366 +2016-07-01|81.0|-11.0|-11.86735|0.50741 +2016-07-01|81.0|-12.0|-12.65855|0.51127 +2016-07-01|81.0|-13.0|-13.44919|0.51523 +2016-07-01|81.0|-14.0|-14.2392|0.5193 +2016-07-01|81.0|-15.0|-15.0285|0.52347 +2016-07-01|81.0|-16.0|-15.81701|0.52776 +2016-07-01|81.0|-17.0|-16.60464|0.53217 +2016-07-01|81.0|-18.0|-17.39132|0.5367 +2016-07-01|81.0|-19.0|-18.17694|0.54135 +2016-07-01|81.0|-20.0|-18.96144|0.54612 +2016-07-01|81.0|-21.0|-19.7447|0.55102 +2016-07-01|81.0|-22.0|-20.52665|0.55606 +2016-07-01|81.0|-23.0|-21.30719|0.56123 +2016-07-01|81.0|-24.0|-22.08622|0.56654 +2016-07-01|81.0|-25.0|-22.86363|0.572 +2016-07-01|81.0|-26.0|-23.63934|0.57761 +2016-07-01|81.0|-27.0|-24.41322|0.58337 +2016-07-01|81.0|-28.0|-25.18517|0.58928 +2016-07-01|81.0|-29.0|-25.95508|0.59536 +2016-07-01|81.0|-30.0|-26.72283|0.60161 +2016-07-01|81.0|-31.0|-27.4883|0.60803 +2016-07-01|81.0|-32.0|-28.25136|0.61463 +2016-07-01|81.0|-33.0|-29.01189|0.62142 +2016-07-01|81.0|-34.0|-29.76974|0.62839 +2016-07-01|81.0|-35.0|-30.52478|0.63557 +2016-07-01|81.0|-36.0|-31.27686|0.64294 +2016-07-01|81.0|-37.0|-32.02584|0.65053 +2016-07-01|81.0|-38.0|-32.77154|0.65833 +2016-07-01|81.0|-39.0|-33.51381|0.66636 +2016-07-01|81.0|-40.0|-34.25248|0.67463 +2016-07-01|81.0|-41.0|-34.98735|0.68313 +2016-07-01|81.0|-42.0|-35.71826|0.69188 +2016-07-01|81.0|-43.0|-36.44499|0.7009 +2016-07-01|81.0|-44.0|-37.16734|0.71018 +2016-07-01|81.0|-45.0|-37.8851|0.71974 +2016-07-01|81.0|-46.0|-38.59804|0.72959 +2016-07-01|81.0|-47.0|-39.30591|0.73974 +2016-07-01|81.0|-48.0|-40.00847|0.7502 +2016-07-01|81.0|-49.0|-40.70545|0.76098 +2016-07-01|81.0|-50.0|-41.39657|0.7721 +2016-07-01|81.0|-51.0|-42.08154|0.78357 +2016-07-01|81.0|-52.0|-42.76004|0.7954 +2016-07-01|81.0|-53.0|-43.43175|0.8076 +2016-07-01|81.0|-54.0|-44.09632|0.82019 +2016-07-01|81.0|-55.0|-44.75338|0.83319 +2016-07-01|81.0|-56.0|-45.40253|0.84661 +2016-07-01|81.0|-57.0|-46.04337|0.86047 +2016-07-01|81.0|-58.0|-46.67545|0.87478 +2016-07-01|81.0|-59.0|-47.2983|0.88957 +2016-07-01|81.0|-60.0|-47.91142|0.90485 +2016-07-01|81.0|-61.0|-48.51428|0.92064 +2016-07-01|81.0|-62.0|-49.10631|0.93696 +2016-07-01|81.0|-63.0|-49.68691|0.95384 +2016-07-01|81.0|-64.0|-50.25542|0.97128 +2016-07-01|81.0|-65.0|-50.81115|0.98933 +2016-07-01|81.0|-66.0|-51.35335|1.00799 +2016-07-01|81.0|-67.0|-51.88123|1.02729 +2016-07-01|81.0|-68.0|-52.39393|1.04726 +2016-07-01|81.0|-69.0|-52.89051|1.06791 +2016-07-01|81.0|-70.0|-53.37|1.08927 +2016-07-01|81.0|-71.0|-53.8313|1.11136 +2016-07-01|81.0|-72.0|-54.27328|1.13421 +2016-07-01|81.0|-73.0|-54.69466|1.15784 +2016-07-01|81.0|-74.0|-55.09411|1.18226 +2016-07-01|81.0|-75.0|-55.47015|1.20749 +2016-07-01|81.0|-76.0|-55.82119|1.23355 +2016-07-01|81.0|-77.0|-56.14551|1.26044 +2016-07-01|81.0|-78.0|-56.44122|1.28818 +2016-07-01|81.0|-79.0|-56.70629|1.31675 +2016-07-01|81.0|-80.0|-56.9385|1.34615 +2016-07-01|81.0|-81.0|-57.1354|1.37636 +2016-07-01|81.0|-82.0|-57.29436|1.40734 +2016-07-01|81.0|-83.0|-57.41249|1.43904 +2016-07-01|81.0|-84.0|-57.48662|1.47138 +2016-07-01|81.0|-85.0|-57.5133|1.50427 +2016-07-01|81.0|-86.0|-57.48876|1.53757 +2016-07-01|81.0|-87.0|-57.40887|1.57111 +2016-07-01|81.0|-88.0|-57.26911|1.60467 +2016-07-01|81.0|-89.0|-57.06454|1.63796 +2016-07-01|81.0|-90.0|-56.78981|1.67065 +2016-07-01|81.0|-91.0|-56.43903|1.70228 +2016-07-01|81.0|-92.0|-56.00586|1.7323 +2016-07-01|81.0|-93.0|-55.48342|1.76005 +2016-07-01|81.0|-94.0|-54.8643|1.78469 +2016-07-01|81.0|-95.0|-54.14058|1.80524 +2016-07-01|81.0|-96.0|-53.30387|1.82049 +2016-07-01|81.0|-97.0|-52.34535|1.82903 +2016-07-01|81.0|-98.0|-51.25597|1.82916 +2016-07-01|81.0|-99.0|-50.02654|1.81897 +2016-07-01|81.0|-100.0|-48.64807|1.79625 +2016-07-01|81.0|-101.0|-47.11212|1.75857 +2016-07-01|81.0|-102.0|-45.41123|1.70333 +2016-07-01|81.0|-103.0|-43.53959|1.62787 +2016-07-01|81.0|-104.0|-41.49373|1.52961 +2016-07-01|81.0|-105.0|-39.27331|1.40632 +2016-07-01|81.0|-106.0|-36.882|1.25641 +2016-07-01|81.0|-107.0|-34.32829|1.07923 +2016-07-01|81.0|-108.0|-31.6261|0.87542 +2016-07-01|81.0|-109.0|-28.79514|0.6472 +2016-07-01|81.0|-110.0|-25.86075|0.39844 +2016-07-01|81.0|-111.0|-22.85329|0.13462 +2016-07-01|81.0|-112.0|-19.80685|-0.13752 +2016-07-01|81.0|-113.0|-16.75762|-0.41051 +2016-07-01|81.0|-114.0|-13.74185|-0.6768 +2016-07-01|81.0|-115.0|-10.79397|-0.92948 +2016-07-01|81.0|-116.0|-7.94476|-1.16279 +2016-07-01|81.0|-117.0|-5.22014|-1.37254 +2016-07-01|81.0|-118.0|-2.64039|-1.55619 +2016-07-01|81.0|-119.0|-0.22003|-1.7128 +2016-07-01|81.0|-120.0|2.03192|-1.84274 +2016-07-01|81.0|-121.0|4.11134|-1.94741 +2016-07-01|81.0|-122.0|6.01819|-2.02888 +2016-07-01|81.0|-123.0|7.75565|-2.08963 +2016-07-01|81.0|-124.0|9.32936|-2.13226 +2016-07-01|81.0|-125.0|10.7466|-2.15936 +2016-07-01|81.0|-126.0|12.01577|-2.17334 +2016-07-01|81.0|-127.0|13.14582|-2.17644 +2016-07-01|81.0|-128.0|14.14593|-2.1706 +2016-07-01|81.0|-129.0|15.0252|-2.15754 +2016-07-01|81.0|-130.0|15.79246|-2.13871 +2016-07-01|81.0|-131.0|16.45618|-2.11536 +2016-07-01|81.0|-132.0|17.02432|-2.0885 +2016-07-01|81.0|-133.0|17.50436|-2.05899 +2016-07-01|81.0|-134.0|17.90324|-2.02755 +2016-07-01|81.0|-135.0|18.22739|-1.99473 +2016-07-01|81.0|-136.0|18.48272|-1.96102 +2016-07-01|81.0|-137.0|18.67467|-1.92679 +2016-07-01|81.0|-138.0|18.80824|-1.89233 +2016-07-01|81.0|-139.0|18.88799|-1.85788 +2016-07-01|81.0|-140.0|18.91811|-1.82365 +2016-07-01|81.0|-141.0|18.90243|-1.78976 +2016-07-01|81.0|-142.0|18.84445|-1.75634 +2016-07-01|81.0|-143.0|18.74738|-1.72347 +2016-07-01|81.0|-144.0|18.61416|-1.69122 +2016-07-01|81.0|-145.0|18.4475|-1.65962 +2016-07-01|81.0|-146.0|18.24985|-1.62872 +2016-07-01|81.0|-147.0|18.0235|-1.59852 +2016-07-01|81.0|-148.0|17.77053|-1.56905 +2016-07-01|81.0|-149.0|17.49288|-1.5403 +2016-07-01|81.0|-150.0|17.19231|-1.51226 +2016-07-01|81.0|-151.0|16.87048|-1.48494 +2016-07-01|81.0|-152.0|16.52889|-1.45832 +2016-07-01|81.0|-153.0|16.16896|-1.43238 +2016-07-01|81.0|-154.0|15.792|-1.40712 +2016-07-01|81.0|-155.0|15.39921|-1.38251 +2016-07-01|81.0|-156.0|14.99173|-1.35854 +2016-07-01|81.0|-157.0|14.57063|-1.33518 +2016-07-01|81.0|-158.0|14.13688|-1.31243 +2016-07-01|81.0|-159.0|13.69143|-1.29026 +2016-07-01|81.0|-160.0|13.23513|-1.26865 +2016-07-01|81.0|-161.0|12.76882|-1.24759 +2016-07-01|81.0|-162.0|12.29326|-1.22705 +2016-07-01|81.0|-163.0|11.80919|-1.20703 +2016-07-01|81.0|-164.0|11.31731|-1.1875 +2016-07-01|81.0|-165.0|10.81828|-1.16845 +2016-07-01|81.0|-166.0|10.31274|-1.14986 +2016-07-01|81.0|-167.0|9.80128|-1.13173 +2016-07-01|81.0|-168.0|9.28448|-1.11403 +2016-07-01|81.0|-169.0|8.76292|-1.09675 +2016-07-01|81.0|-170.0|8.23711|-1.07988 +2016-07-01|81.0|-171.0|7.7076|-1.06341 +2016-07-01|81.0|-172.0|7.17487|-1.04733 +2016-07-01|81.0|-173.0|6.63944|-1.03163 +2016-07-01|81.0|-174.0|6.10178|-1.0163 +2016-07-01|81.0|-175.0|5.56237|-1.00132 +2016-07-01|81.0|-176.0|5.02168|-0.9867 +2016-07-01|81.0|-177.0|4.48017|-0.97241 +2016-07-01|81.0|-178.0|3.93829|-0.95847 +2016-07-01|81.0|-179.0|3.39652|-0.94484 +2016-07-01|82.0|0.0|-3.1013|0.50858 +2016-07-01|82.0|1.0|-2.29637|0.50582 +2016-07-01|82.0|2.0|-1.49181|0.50315 +2016-07-01|82.0|3.0|-0.68769|0.50056 +2016-07-01|82.0|4.0|0.11594|0.49805 +2016-07-01|82.0|5.0|0.91899|0.49562 +2016-07-01|82.0|6.0|1.72142|0.49328 +2016-07-01|82.0|7.0|2.52315|0.49102 +2016-07-01|82.0|8.0|3.32411|0.48883 +2016-07-01|82.0|9.0|4.12424|0.48673 +2016-07-01|82.0|10.0|4.92346|0.4847 +2016-07-01|82.0|11.0|5.72172|0.48275 +2016-07-01|82.0|12.0|6.51894|0.48088 +2016-07-01|82.0|13.0|7.31504|0.47908 +2016-07-01|82.0|14.0|8.10996|0.47735 +2016-07-01|82.0|15.0|8.90361|0.4757 +2016-07-01|82.0|16.0|9.69594|0.47413 +2016-07-01|82.0|17.0|10.48685|0.47263 +2016-07-01|82.0|18.0|11.27626|0.4712 +2016-07-01|82.0|19.0|12.06411|0.46984 +2016-07-01|82.0|20.0|12.85031|0.46856 +2016-07-01|82.0|21.0|13.63476|0.46735 +2016-07-01|82.0|22.0|14.41739|0.46621 +2016-07-01|82.0|23.0|15.19811|0.46515 +2016-07-01|82.0|24.0|15.97682|0.46415 +2016-07-01|82.0|25.0|16.75344|0.46323 +2016-07-01|82.0|26.0|17.52786|0.46239 +2016-07-01|82.0|27.0|18.29999|0.46161 +2016-07-01|82.0|28.0|19.06972|0.46091 +2016-07-01|82.0|29.0|19.83694|0.46029 +2016-07-01|82.0|30.0|20.60156|0.45973 +2016-07-01|82.0|31.0|21.36344|0.45926 +2016-07-01|82.0|32.0|22.12249|0.45885 +2016-07-01|82.0|33.0|22.87857|0.45853 +2016-07-01|82.0|34.0|23.63156|0.45828 +2016-07-01|82.0|35.0|24.38133|0.45811 +2016-07-01|82.0|36.0|25.12775|0.45801 +2016-07-01|82.0|37.0|25.87066|0.458 +2016-07-01|82.0|38.0|26.60994|0.45806 +2016-07-01|82.0|39.0|27.34542|0.45821 +2016-07-01|82.0|40.0|28.07694|0.45843 +2016-07-01|82.0|41.0|28.80435|0.45875 +2016-07-01|82.0|42.0|29.52746|0.45914 +2016-07-01|82.0|43.0|30.2461|0.45963 +2016-07-01|82.0|44.0|30.96008|0.4602 +2016-07-01|82.0|45.0|31.6692|0.46086 +2016-07-01|82.0|46.0|32.37326|0.46161 +2016-07-01|82.0|47.0|33.07204|0.46245 +2016-07-01|82.0|48.0|33.76531|0.46339 +2016-07-01|82.0|49.0|34.45284|0.46443 +2016-07-01|82.0|50.0|35.13438|0.46556 +2016-07-01|82.0|51.0|35.80966|0.4668 +2016-07-01|82.0|52.0|36.47842|0.46814 +2016-07-01|82.0|53.0|37.14036|0.46958 +2016-07-01|82.0|54.0|37.79517|0.47114 +2016-07-01|82.0|55.0|38.44255|0.4728 +2016-07-01|82.0|56.0|39.08215|0.47458 +2016-07-01|82.0|57.0|39.71361|0.47648 +2016-07-01|82.0|58.0|40.33655|0.47849 +2016-07-01|82.0|59.0|40.95059|0.48063 +2016-07-01|82.0|60.0|41.55529|0.48289 +2016-07-01|82.0|61.0|42.15022|0.48528 +2016-07-01|82.0|62.0|42.7349|0.4878 +2016-07-01|82.0|63.0|43.30884|0.49045 +2016-07-01|82.0|64.0|43.87149|0.49325 +2016-07-01|82.0|65.0|44.42231|0.49618 +2016-07-01|82.0|66.0|44.96069|0.49926 +2016-07-01|82.0|67.0|45.486|0.50249 +2016-07-01|82.0|68.0|45.99757|0.50586 +2016-07-01|82.0|69.0|46.49467|0.50939 +2016-07-01|82.0|70.0|46.97654|0.51307 +2016-07-01|82.0|71.0|47.44237|0.51691 +2016-07-01|82.0|72.0|47.89129|0.52091 +2016-07-01|82.0|73.0|48.32237|0.52508 +2016-07-01|82.0|74.0|48.73461|0.5294 +2016-07-01|82.0|75.0|49.12697|0.53388 +2016-07-01|82.0|76.0|49.49832|0.53852 +2016-07-01|82.0|77.0|49.84743|0.54332 +2016-07-01|82.0|78.0|50.17303|0.54828 +2016-07-01|82.0|79.0|50.47373|0.55338 +2016-07-01|82.0|80.0|50.74804|0.55862 +2016-07-01|82.0|81.0|50.99439|0.56399 +2016-07-01|82.0|82.0|51.21108|0.56948 +2016-07-01|82.0|83.0|51.39629|0.57507 +2016-07-01|82.0|84.0|51.54809|0.58075 +2016-07-01|82.0|85.0|51.66438|0.58647 +2016-07-01|82.0|86.0|51.74295|0.59222 +2016-07-01|82.0|87.0|51.78143|0.59795 +2016-07-01|82.0|88.0|51.77728|0.60363 +2016-07-01|82.0|89.0|51.72781|0.60918 +2016-07-01|82.0|90.0|51.63014|0.61456 +2016-07-01|82.0|91.0|51.48122|0.61967 +2016-07-01|82.0|92.0|51.27785|0.62443 +2016-07-01|82.0|93.0|51.01662|0.62872 +2016-07-01|82.0|94.0|50.69398|0.63242 +2016-07-01|82.0|95.0|50.3062|0.63539 +2016-07-01|82.0|96.0|49.84944|0.63744 +2016-07-01|82.0|97.0|49.31974|0.63838 +2016-07-01|82.0|98.0|48.71309|0.63798 +2016-07-01|82.0|99.0|48.02547|0.636 +2016-07-01|82.0|100.0|47.2529|0.63215 +2016-07-01|82.0|101.0|46.3916|0.62612 +2016-07-01|82.0|102.0|45.43801|0.61756 +2016-07-01|82.0|103.0|44.38901|0.60612 +2016-07-01|82.0|104.0|43.24202|0.59142 +2016-07-01|82.0|105.0|41.99522|0.57308 +2016-07-01|82.0|106.0|40.64772|0.55074 +2016-07-01|82.0|107.0|39.1998|0.52405 +2016-07-01|82.0|108.0|37.65312|0.49273 +2016-07-01|82.0|109.0|36.01092|0.45657 +2016-07-01|82.0|110.0|34.2782|0.41547 +2016-07-01|82.0|111.0|32.46184|0.36946 +2016-07-01|82.0|112.0|30.57065|0.31871 +2016-07-01|82.0|113.0|28.61537|0.26357 +2016-07-01|82.0|114.0|26.60846|0.20457 +2016-07-01|82.0|115.0|24.5639|0.14237 +2016-07-01|82.0|116.0|22.49679|0.07779 +2016-07-01|82.0|117.0|20.42295|0.01173 +2016-07-01|82.0|118.0|18.35839|-0.05483 +2016-07-01|82.0|119.0|16.3188|-0.12094 +2016-07-01|82.0|120.0|14.31907|-0.18569 +2016-07-01|82.0|121.0|12.37288|-0.24825 +2016-07-01|82.0|122.0|10.49232|-0.30794 +2016-07-01|82.0|123.0|8.68768|-0.36422 +2016-07-01|82.0|124.0|6.96735|-0.4167 +2016-07-01|82.0|125.0|5.33778|-0.46514 +2016-07-01|82.0|126.0|3.80354|-0.50945 +2016-07-01|82.0|127.0|2.36751|-0.54966 +2016-07-01|82.0|128.0|1.03099|-0.58588 +2016-07-01|82.0|129.0|-0.20603|-0.61831 +2016-07-01|82.0|130.0|-1.34469|-0.64721 +2016-07-01|82.0|131.0|-2.387|-0.67284 +2016-07-01|82.0|132.0|-3.33572|-0.69551 +2016-07-01|82.0|133.0|-4.1941|-0.71552 +2016-07-01|82.0|134.0|-4.96578|-0.73317 +2016-07-01|82.0|135.0|-5.65464|-0.74873 +2016-07-01|82.0|136.0|-6.26469|-0.76248 +2016-07-01|82.0|137.0|-6.80001|-0.77466 +2016-07-01|82.0|138.0|-7.26462|-0.78549 +2016-07-01|82.0|139.0|-7.66251|-0.79518 +2016-07-01|82.0|140.0|-7.99753|-0.80392 +2016-07-01|82.0|141.0|-8.27342|-0.81186 +2016-07-01|82.0|142.0|-8.49373|-0.81915 +2016-07-01|82.0|143.0|-8.66188|-0.82591 +2016-07-01|82.0|144.0|-8.7811|-0.83226 +2016-07-01|82.0|145.0|-8.85443|-0.8383 +2016-07-01|82.0|146.0|-8.88477|-0.84412 +2016-07-01|82.0|147.0|-8.87483|-0.84977 +2016-07-01|82.0|148.0|-8.82715|-0.85535 +2016-07-01|82.0|149.0|-8.74415|-0.86088 +2016-07-01|82.0|150.0|-8.62807|-0.86644 +2016-07-01|82.0|151.0|-8.48102|-0.87206 +2016-07-01|82.0|152.0|-8.30498|-0.87777 +2016-07-01|82.0|153.0|-8.10181|-0.88361 +2016-07-01|82.0|154.0|-7.87324|-0.88961 +2016-07-01|82.0|155.0|-7.62091|-0.8958 +2016-07-01|82.0|156.0|-7.34635|-0.90218 +2016-07-01|82.0|157.0|-7.05101|-0.90878 +2016-07-01|82.0|158.0|-6.73624|-0.91563 +2016-07-01|82.0|159.0|-6.4033|-0.92272 +2016-07-01|82.0|160.0|-6.05341|-0.93008 +2016-07-01|82.0|161.0|-5.68769|-0.93771 +2016-07-01|82.0|162.0|-5.30722|-0.94562 +2016-07-01|82.0|163.0|-4.913|-0.95383 +2016-07-01|82.0|164.0|-4.506|-0.96235 +2016-07-01|82.0|165.0|-4.08713|-0.97117 +2016-07-01|82.0|166.0|-3.65724|-0.98031 +2016-07-01|82.0|167.0|-3.21716|-0.98977 +2016-07-01|82.0|168.0|-2.76769|-0.99956 +2016-07-01|82.0|169.0|-2.30956|-1.00969 +2016-07-01|82.0|170.0|-1.8435|-1.02016 +2016-07-01|82.0|171.0|-1.3702|-1.03097 +2016-07-01|82.0|172.0|-0.89033|-1.04215 +2016-07-01|82.0|173.0|-0.40453|-1.05368 +2016-07-01|82.0|174.0|0.08658|-1.06559 +2016-07-01|82.0|175.0|0.58238|-1.07786 +2016-07-01|82.0|176.0|1.0823|-1.09052 +2016-07-01|82.0|177.0|1.58576|-1.10358 +2016-07-01|82.0|178.0|2.09218|-1.11703 +2016-07-01|82.0|179.0|2.60102|-1.13088 +2016-07-01|82.0|-1.0|-3.90654|0.51143 +2016-07-01|82.0|-2.0|-4.71202|0.51437 +2016-07-01|82.0|-3.0|-5.51768|0.51739 +2016-07-01|82.0|-4.0|-6.32346|0.52051 +2016-07-01|82.0|-5.0|-7.12928|0.52373 +2016-07-01|82.0|-6.0|-7.93509|0.52703 +2016-07-01|82.0|-7.0|-8.74081|0.53044 +2016-07-01|82.0|-8.0|-9.5464|0.53394 +2016-07-01|82.0|-9.0|-10.35177|0.53755 +2016-07-01|82.0|-10.0|-11.15686|0.54125 +2016-07-01|82.0|-11.0|-11.96162|0.54507 +2016-07-01|82.0|-12.0|-12.76596|0.54899 +2016-07-01|82.0|-13.0|-13.56982|0.55302 +2016-07-01|82.0|-14.0|-14.37313|0.55716 +2016-07-01|82.0|-15.0|-15.17582|0.56142 +2016-07-01|82.0|-16.0|-15.97783|0.5658 +2016-07-01|82.0|-17.0|-16.77906|0.57029 +2016-07-01|82.0|-18.0|-17.57947|0.57491 +2016-07-01|82.0|-19.0|-18.37896|0.57966 +2016-07-01|82.0|-20.0|-19.17746|0.58454 +2016-07-01|82.0|-21.0|-19.97489|0.58955 +2016-07-01|82.0|-22.0|-20.77118|0.5947 +2016-07-01|82.0|-23.0|-21.56624|0.59999 +2016-07-01|82.0|-24.0|-22.35998|0.60542 +2016-07-01|82.0|-25.0|-23.15232|0.611 +2016-07-01|82.0|-26.0|-23.94317|0.61673 +2016-07-01|82.0|-27.0|-24.73244|0.62263 +2016-07-01|82.0|-28.0|-25.52004|0.62868 +2016-07-01|82.0|-29.0|-26.30587|0.6349 +2016-07-01|82.0|-30.0|-27.08982|0.64129 +2016-07-01|82.0|-31.0|-27.8718|0.64786 +2016-07-01|82.0|-32.0|-28.6517|0.65461 +2016-07-01|82.0|-33.0|-29.42941|0.66155 +2016-07-01|82.0|-34.0|-30.20481|0.66868 +2016-07-01|82.0|-35.0|-30.97778|0.67602 +2016-07-01|82.0|-36.0|-31.74821|0.68355 +2016-07-01|82.0|-37.0|-32.51597|0.69131 +2016-07-01|82.0|-38.0|-33.28092|0.69928 +2016-07-01|82.0|-39.0|-34.04292|0.70748 +2016-07-01|82.0|-40.0|-34.80183|0.71591 +2016-07-01|82.0|-41.0|-35.55751|0.72459 +2016-07-01|82.0|-42.0|-36.30979|0.73352 +2016-07-01|82.0|-43.0|-37.05851|0.74272 +2016-07-01|82.0|-44.0|-37.8035|0.75218 +2016-07-01|82.0|-45.0|-38.54459|0.76192 +2016-07-01|82.0|-46.0|-39.28157|0.77195 +2016-07-01|82.0|-47.0|-40.01427|0.78228 +2016-07-01|82.0|-48.0|-40.74247|0.79292 +2016-07-01|82.0|-49.0|-41.46595|0.80388 +2016-07-01|82.0|-50.0|-42.1845|0.81518 +2016-07-01|82.0|-51.0|-42.89786|0.82682 +2016-07-01|82.0|-52.0|-43.60579|0.83883 +2016-07-01|82.0|-53.0|-44.30802|0.85121 +2016-07-01|82.0|-54.0|-45.00427|0.86397 +2016-07-01|82.0|-55.0|-45.69425|0.87714 +2016-07-01|82.0|-56.0|-46.37764|0.89073 +2016-07-01|82.0|-57.0|-47.0541|0.90476 +2016-07-01|82.0|-58.0|-47.7233|0.91923 +2016-07-01|82.0|-59.0|-48.38485|0.93418 +2016-07-01|82.0|-60.0|-49.03836|0.94961 +2016-07-01|82.0|-61.0|-49.68341|0.96556 +2016-07-01|82.0|-62.0|-50.31955|0.98203 +2016-07-01|82.0|-63.0|-50.94631|0.99905 +2016-07-01|82.0|-64.0|-51.56317|1.01664 +2016-07-01|82.0|-65.0|-52.1696|1.03483 +2016-07-01|82.0|-66.0|-52.76501|1.05363 +2016-07-01|82.0|-67.0|-53.34879|1.07307 +2016-07-01|82.0|-68.0|-53.92026|1.09318 +2016-07-01|82.0|-69.0|-54.47872|1.11399 +2016-07-01|82.0|-70.0|-55.02341|1.1355 +2016-07-01|82.0|-71.0|-55.55349|1.15777 +2016-07-01|82.0|-72.0|-56.06809|1.18081 +2016-07-01|82.0|-73.0|-56.56625|1.20464 +2016-07-01|82.0|-74.0|-57.04694|1.2293 +2016-07-01|82.0|-75.0|-57.50906|1.25481 +2016-07-01|82.0|-76.0|-57.95139|1.28121 +2016-07-01|82.0|-77.0|-58.37265|1.3085 +2016-07-01|82.0|-78.0|-58.77141|1.33672 +2016-07-01|82.0|-79.0|-59.14615|1.36588 +2016-07-01|82.0|-80.0|-59.4952|1.39601 +2016-07-01|82.0|-81.0|-59.81676|1.42711 +2016-07-01|82.0|-82.0|-60.10883|1.45918 +2016-07-01|82.0|-83.0|-60.36929|1.49223 +2016-07-01|82.0|-84.0|-60.59576|1.52623 +2016-07-01|82.0|-85.0|-60.78568|1.56117 +2016-07-01|82.0|-86.0|-60.93624|1.59699 +2016-07-01|82.0|-87.0|-61.04435|1.63363 +2016-07-01|82.0|-88.0|-61.10665|1.67099 +2016-07-01|82.0|-89.0|-61.11941|1.70895 +2016-07-01|82.0|-90.0|-61.07859|1.74734 +2016-07-01|82.0|-91.0|-60.97973|1.78594 +2016-07-01|82.0|-92.0|-60.81793|1.82448 +2016-07-01|82.0|-93.0|-60.58783|1.86258 +2016-07-01|82.0|-94.0|-60.28359|1.8998 +2016-07-01|82.0|-95.0|-59.89877|1.93558 +2016-07-01|82.0|-96.0|-59.42641|1.9692 +2016-07-01|82.0|-97.0|-58.85892|1.9998 +2016-07-01|82.0|-98.0|-58.18811|2.02631 +2016-07-01|82.0|-99.0|-57.40522|2.04743 +2016-07-01|82.0|-100.0|-56.50091|2.0616 +2016-07-01|82.0|-101.0|-55.4654|2.06695 +2016-07-01|82.0|-102.0|-54.2886|2.06131 +2016-07-01|82.0|-103.0|-52.96033|2.04214 +2016-07-01|82.0|-104.0|-51.47068|2.00657 +2016-07-01|82.0|-105.0|-49.81043|1.95147 +2016-07-01|82.0|-106.0|-47.97166|1.87351 +2016-07-01|82.0|-107.0|-45.9485|1.76934 +2016-07-01|82.0|-108.0|-43.73803|1.63587 +2016-07-01|82.0|-109.0|-41.34123|1.4706 +2016-07-01|82.0|-110.0|-38.76402|1.27204 +2016-07-01|82.0|-111.0|-36.01818|1.04019 +2016-07-01|82.0|-112.0|-33.12193|0.77695 +2016-07-01|82.0|-113.0|-30.10014|0.48636 +2016-07-01|82.0|-114.0|-26.98387|0.17469 +2016-07-01|82.0|-115.0|-23.80927|-0.14994 +2016-07-01|82.0|-116.0|-20.61576|-0.47813 +2016-07-01|82.0|-117.0|-17.44382|-0.80012 +2016-07-01|82.0|-118.0|-14.3326|-1.10671 +2016-07-01|82.0|-119.0|-11.31774|-1.39012 +2016-07-01|82.0|-120.0|-8.42962|-1.64454 +2016-07-01|82.0|-121.0|-5.69235|-1.86642 +2016-07-01|82.0|-122.0|-3.12339|-2.05432 +2016-07-01|82.0|-123.0|-0.73378|-2.20868 +2016-07-01|82.0|-124.0|1.47118|-2.33129 +2016-07-01|82.0|-125.0|3.491|-2.4249 +2016-07-01|82.0|-126.0|5.32903|-2.49277 +2016-07-01|82.0|-127.0|6.9914|-2.53834 +2016-07-01|82.0|-128.0|8.48624|-2.56498 +2016-07-01|82.0|-129.0|9.82288|-2.57583 +2016-07-01|82.0|-130.0|11.0113|-2.57374 +2016-07-01|82.0|-131.0|12.06169|-2.5612 +2016-07-01|82.0|-132.0|12.98414|-2.54035 +2016-07-01|82.0|-133.0|13.7884|-2.513 +2016-07-01|82.0|-134.0|14.48373|-2.48066 +2016-07-01|82.0|-135.0|15.07889|-2.44459 +2016-07-01|82.0|-136.0|15.58198|-2.4058 +2016-07-01|82.0|-137.0|16.00056|-2.36513 +2016-07-01|82.0|-138.0|16.34154|-2.32325 +2016-07-01|82.0|-139.0|16.6113|-2.28069 +2016-07-01|82.0|-140.0|16.81567|-2.23787 +2016-07-01|82.0|-141.0|16.95998|-2.19513 +2016-07-01|82.0|-142.0|17.04909|-2.15273 +2016-07-01|82.0|-143.0|17.08743|-2.11086 +2016-07-01|82.0|-144.0|17.07907|-2.06968 +2016-07-01|82.0|-145.0|17.0277|-2.02931 +2016-07-01|82.0|-146.0|16.93669|-1.98981 +2016-07-01|82.0|-147.0|16.80914|-1.95125 +2016-07-01|82.0|-148.0|16.64786|-1.91367 +2016-07-01|82.0|-149.0|16.45545|-1.87709 +2016-07-01|82.0|-150.0|16.23428|-1.8415 +2016-07-01|82.0|-151.0|15.98654|-1.80692 +2016-07-01|82.0|-152.0|15.71422|-1.77334 +2016-07-01|82.0|-153.0|15.41918|-1.74073 +2016-07-01|82.0|-154.0|15.10312|-1.70908 +2016-07-01|82.0|-155.0|14.76763|-1.67837 +2016-07-01|82.0|-156.0|14.41416|-1.64858 +2016-07-01|82.0|-157.0|14.04408|-1.61968 +2016-07-01|82.0|-158.0|13.65865|-1.59164 +2016-07-01|82.0|-159.0|13.25906|-1.56444 +2016-07-01|82.0|-160.0|12.84639|-1.53805 +2016-07-01|82.0|-161.0|12.4217|-1.51244 +2016-07-01|82.0|-162.0|11.98594|-1.48759 +2016-07-01|82.0|-163.0|11.54003|-1.46347 +2016-07-01|82.0|-164.0|11.08484|-1.44006 +2016-07-01|82.0|-165.0|10.62119|-1.41733 +2016-07-01|82.0|-166.0|10.14984|-1.39527 +2016-07-01|82.0|-167.0|9.67154|-1.37384 +2016-07-01|82.0|-168.0|9.18699|-1.35303 +2016-07-01|82.0|-169.0|8.69688|-1.33282 +2016-07-01|82.0|-170.0|8.20185|-1.31319 +2016-07-01|82.0|-171.0|7.70253|-1.29412 +2016-07-01|82.0|-172.0|7.19953|-1.27559 +2016-07-01|82.0|-173.0|6.69345|-1.25759 +2016-07-01|82.0|-174.0|6.18486|-1.2401 +2016-07-01|82.0|-175.0|5.67432|-1.22311 +2016-07-01|82.0|-176.0|5.1624|-1.2066 +2016-07-01|82.0|-177.0|4.64964|-1.19057 +2016-07-01|82.0|-178.0|4.13658|-1.17499 +2016-07-01|82.0|-179.0|3.62376|-1.15985 +2016-07-01|83.0|0.0|-3.0526|0.55292 +2016-07-01|83.0|1.0|-2.23457|0.55017 +2016-07-01|83.0|2.0|-1.41686|0.54752 +2016-07-01|83.0|3.0|-0.59955|0.54496 +2016-07-01|83.0|4.0|0.21731|0.54249 +2016-07-01|83.0|5.0|1.03368|0.54011 +2016-07-01|83.0|6.0|1.84948|0.53782 +2016-07-01|83.0|7.0|2.66466|0.53561 +2016-07-01|83.0|8.0|3.47917|0.53349 +2016-07-01|83.0|9.0|4.29295|0.53145 +2016-07-01|83.0|10.0|5.10593|0.5295 +2016-07-01|83.0|11.0|5.91806|0.52763 +2016-07-01|83.0|12.0|6.72928|0.52585 +2016-07-01|83.0|13.0|7.53952|0.52415 +2016-07-01|83.0|14.0|8.34873|0.52253 +2016-07-01|83.0|15.0|9.15683|0.52099 +2016-07-01|83.0|16.0|9.96377|0.51954 +2016-07-01|83.0|17.0|10.76947|0.51817 +2016-07-01|83.0|18.0|11.57387|0.51687 +2016-07-01|83.0|19.0|12.37691|0.51566 +2016-07-01|83.0|20.0|13.17851|0.51454 +2016-07-01|83.0|21.0|13.97859|0.51349 +2016-07-01|83.0|22.0|14.77709|0.51252 +2016-07-01|83.0|23.0|15.57393|0.51164 +2016-07-01|83.0|24.0|16.36904|0.51084 +2016-07-01|83.0|25.0|17.16232|0.51012 +2016-07-01|83.0|26.0|17.95371|0.50948 +2016-07-01|83.0|27.0|18.74311|0.50893 +2016-07-01|83.0|28.0|19.53045|0.50846 +2016-07-01|83.0|29.0|20.31562|0.50808 +2016-07-01|83.0|30.0|21.09855|0.50778 +2016-07-01|83.0|31.0|21.87912|0.50756 +2016-07-01|83.0|32.0|22.65726|0.50744 +2016-07-01|83.0|33.0|23.43285|0.5074 +2016-07-01|83.0|34.0|24.20579|0.50745 +2016-07-01|83.0|35.0|24.97597|0.50759 +2016-07-01|83.0|36.0|25.74328|0.50782 +2016-07-01|83.0|37.0|26.5076|0.50815 +2016-07-01|83.0|38.0|27.26881|0.50857 +2016-07-01|83.0|39.0|28.02679|0.50909 +2016-07-01|83.0|40.0|28.7814|0.5097 +2016-07-01|83.0|41.0|29.53252|0.51041 +2016-07-01|83.0|42.0|30.27998|0.51122 +2016-07-01|83.0|43.0|31.02366|0.51214 +2016-07-01|83.0|44.0|31.76339|0.51316 +2016-07-01|83.0|45.0|32.49902|0.51429 +2016-07-01|83.0|46.0|33.23038|0.51552 +2016-07-01|83.0|47.0|33.95729|0.51687 +2016-07-01|83.0|48.0|34.67957|0.51834 +2016-07-01|83.0|49.0|35.39703|0.51992 +2016-07-01|83.0|50.0|36.10947|0.52162 +2016-07-01|83.0|51.0|36.81667|0.52345 +2016-07-01|83.0|52.0|37.51843|0.5254 +2016-07-01|83.0|53.0|38.2145|0.52749 +2016-07-01|83.0|54.0|38.90465|0.5297 +2016-07-01|83.0|55.0|39.58862|0.53206 +2016-07-01|83.0|56.0|40.26613|0.53455 +2016-07-01|83.0|57.0|40.93692|0.53719 +2016-07-01|83.0|58.0|41.60069|0.53998 +2016-07-01|83.0|59.0|42.25711|0.54292 +2016-07-01|83.0|60.0|42.90586|0.54602 +2016-07-01|83.0|61.0|43.54659|0.54929 +2016-07-01|83.0|62.0|44.17894|0.55272 +2016-07-01|83.0|63.0|44.80251|0.55632 +2016-07-01|83.0|64.0|45.4169|0.5601 +2016-07-01|83.0|65.0|46.02166|0.56407 +2016-07-01|83.0|66.0|46.61634|0.56823 +2016-07-01|83.0|67.0|47.20045|0.57257 +2016-07-01|83.0|68.0|47.77347|0.57712 +2016-07-01|83.0|69.0|48.33484|0.58188 +2016-07-01|83.0|70.0|48.884|0.58685 +2016-07-01|83.0|71.0|49.4203|0.59204 +2016-07-01|83.0|72.0|49.9431|0.59745 +2016-07-01|83.0|73.0|50.45168|0.60309 +2016-07-01|83.0|74.0|50.9453|0.60896 +2016-07-01|83.0|75.0|51.42317|0.61508 +2016-07-01|83.0|76.0|51.88442|0.62144 +2016-07-01|83.0|77.0|52.32815|0.62805 +2016-07-01|83.0|78.0|52.75338|0.63492 +2016-07-01|83.0|79.0|53.15909|0.64204 +2016-07-01|83.0|80.0|53.54415|0.64942 +2016-07-01|83.0|81.0|53.90739|0.65706 +2016-07-01|83.0|82.0|54.24753|0.66496 +2016-07-01|83.0|83.0|54.56321|0.67312 +2016-07-01|83.0|84.0|54.85297|0.68152 +2016-07-01|83.0|85.0|55.11527|0.69017 +2016-07-01|83.0|86.0|55.34842|0.69905 +2016-07-01|83.0|87.0|55.55064|0.70814 +2016-07-01|83.0|88.0|55.72|0.71743 +2016-07-01|83.0|89.0|55.85446|0.72688 +2016-07-01|83.0|90.0|55.95181|0.73647 +2016-07-01|83.0|91.0|56.00971|0.74614 +2016-07-01|83.0|92.0|56.02565|0.75585 +2016-07-01|83.0|93.0|55.99693|0.76553 +2016-07-01|83.0|94.0|55.9207|0.7751 +2016-07-01|83.0|95.0|55.79392|0.78447 +2016-07-01|83.0|96.0|55.61337|0.79353 +2016-07-01|83.0|97.0|55.37564|0.80213 +2016-07-01|83.0|98.0|55.07714|0.81011 +2016-07-01|83.0|99.0|54.7141|0.8173 +2016-07-01|83.0|100.0|54.28262|0.82346 +2016-07-01|83.0|101.0|53.77865|0.82834 +2016-07-01|83.0|102.0|53.19805|0.83164 +2016-07-01|83.0|103.0|52.53664|0.83302 +2016-07-01|83.0|104.0|51.79027|0.83211 +2016-07-01|83.0|105.0|50.95487|0.82846 +2016-07-01|83.0|106.0|50.02662|0.82162 +2016-07-01|83.0|107.0|49.00203|0.81106 +2016-07-01|83.0|108.0|47.87809|0.79624 +2016-07-01|83.0|109.0|46.65251|0.77661 +2016-07-01|83.0|110.0|45.32386|0.75159 +2016-07-01|83.0|111.0|43.89183|0.72064 +2016-07-01|83.0|112.0|42.35746|0.68329 +2016-07-01|83.0|113.0|40.72333|0.63912 +2016-07-01|83.0|114.0|38.99381|0.58789 +2016-07-01|83.0|115.0|37.17521|0.52948 +2016-07-01|83.0|116.0|35.27582|0.46402 +2016-07-01|83.0|117.0|33.30601|0.39185 +2016-07-01|83.0|118.0|31.278|0.31357 +2016-07-01|83.0|119.0|29.20576|0.23003 +2016-07-01|83.0|120.0|27.10456|0.1423 +2016-07-01|83.0|121.0|24.99061|0.05163 +2016-07-01|83.0|122.0|22.8805|-0.04063 +2016-07-01|83.0|123.0|20.79066|-0.13308 +2016-07-01|83.0|124.0|18.73684|-0.22436 +2016-07-01|83.0|125.0|16.73365|-0.31321 +2016-07-01|83.0|126.0|14.79412|-0.39855 +2016-07-01|83.0|127.0|12.92947|-0.47947 +2016-07-01|83.0|128.0|11.14892|-0.55533 +2016-07-01|83.0|129.0|9.45965|-0.62566 +2016-07-01|83.0|130.0|7.86687|-0.69025 +2016-07-01|83.0|131.0|6.37393|-0.74904 +2016-07-01|83.0|132.0|4.98253|-0.80214 +2016-07-01|83.0|133.0|3.6929|-0.84977 +2016-07-01|83.0|134.0|2.50408|-0.89226 +2016-07-01|83.0|135.0|1.4141|-0.92997 +2016-07-01|83.0|136.0|0.42023|-0.96331 +2016-07-01|83.0|137.0|-0.48084|-0.99269 +2016-07-01|83.0|138.0|-1.29286|-1.01854 +2016-07-01|83.0|139.0|-2.01981|-1.04126 +2016-07-01|83.0|140.0|-2.66586|-1.06124 +2016-07-01|83.0|141.0|-3.23523|-1.07882 +2016-07-01|83.0|142.0|-3.73211|-1.09433 +2016-07-01|83.0|143.0|-4.16066|-1.10808 +2016-07-01|83.0|144.0|-4.52487|-1.12032 +2016-07-01|83.0|145.0|-4.82865|-1.13131 +2016-07-01|83.0|146.0|-5.0757|-1.14125 +2016-07-01|83.0|147.0|-5.26956|-1.15032 +2016-07-01|83.0|148.0|-5.41361|-1.15871 +2016-07-01|83.0|149.0|-5.51102|-1.16654 +2016-07-01|83.0|150.0|-5.56479|-1.17397 +2016-07-01|83.0|151.0|-5.57775|-1.18108 +2016-07-01|83.0|152.0|-5.55255|-1.18799 +2016-07-01|83.0|153.0|-5.49168|-1.19477 +2016-07-01|83.0|154.0|-5.39749|-1.20152 +2016-07-01|83.0|155.0|-5.27217|-1.20828 +2016-07-01|83.0|156.0|-5.11778|-1.21512 +2016-07-01|83.0|157.0|-4.93625|-1.22208 +2016-07-01|83.0|158.0|-4.72939|-1.22922 +2016-07-01|83.0|159.0|-4.4989|-1.23657 +2016-07-01|83.0|160.0|-4.24638|-1.24416 +2016-07-01|83.0|161.0|-3.97333|-1.25203 +2016-07-01|83.0|162.0|-3.68117|-1.2602 +2016-07-01|83.0|163.0|-3.37124|-1.2687 +2016-07-01|83.0|164.0|-3.04478|-1.27755 +2016-07-01|83.0|165.0|-2.70301|-1.28677 +2016-07-01|83.0|166.0|-2.34704|-1.29637 +2016-07-01|83.0|167.0|-1.97795|-1.30638 +2016-07-01|83.0|168.0|-1.59675|-1.31681 +2016-07-01|83.0|169.0|-1.20442|-1.32767 +2016-07-01|83.0|170.0|-0.80188|-1.33898 +2016-07-01|83.0|171.0|-0.39003|-1.35076 +2016-07-01|83.0|172.0|0.03028|-1.36301 +2016-07-01|83.0|173.0|0.45824|-1.37576 +2016-07-01|83.0|174.0|0.89304|-1.38901 +2016-07-01|83.0|175.0|1.33391|-1.40278 +2016-07-01|83.0|176.0|1.78011|-1.41708 +2016-07-01|83.0|177.0|2.23091|-1.43194 +2016-07-01|83.0|178.0|2.68559|-1.44735 +2016-07-01|83.0|179.0|3.14345|-1.46334 +2016-07-01|83.0|-1.0|-3.87092|0.55575 +2016-07-01|83.0|-2.0|-4.68946|0.55868 +2016-07-01|83.0|-3.0|-5.50816|0.56171 +2016-07-01|83.0|-4.0|-6.32698|0.56483 +2016-07-01|83.0|-5.0|-7.14586|0.56805 +2016-07-01|83.0|-6.0|-7.96473|0.57137 +2016-07-01|83.0|-7.0|-8.78355|0.5748 +2016-07-01|83.0|-8.0|-9.60226|0.57833 +2016-07-01|83.0|-9.0|-10.4208|0.58196 +2016-07-01|83.0|-10.0|-11.23912|0.5857 +2016-07-01|83.0|-11.0|-12.05716|0.58956 +2016-07-01|83.0|-12.0|-12.87485|0.59352 +2016-07-01|83.0|-13.0|-13.69215|0.5976 +2016-07-01|83.0|-14.0|-14.50899|0.6018 +2016-07-01|83.0|-15.0|-15.32531|0.60611 +2016-07-01|83.0|-16.0|-16.14106|0.61055 +2016-07-01|83.0|-17.0|-16.95617|0.61511 +2016-07-01|83.0|-18.0|-17.77057|0.6198 +2016-07-01|83.0|-19.0|-18.58421|0.62463 +2016-07-01|83.0|-20.0|-19.39701|0.62958 +2016-07-01|83.0|-21.0|-20.20892|0.63467 +2016-07-01|83.0|-22.0|-21.01987|0.63991 +2016-07-01|83.0|-23.0|-21.82978|0.64528 +2016-07-01|83.0|-24.0|-22.63859|0.65081 +2016-07-01|83.0|-25.0|-23.44622|0.65648 +2016-07-01|83.0|-26.0|-24.25261|0.66231 +2016-07-01|83.0|-27.0|-25.05766|0.66831 +2016-07-01|83.0|-28.0|-25.86132|0.67446 +2016-07-01|83.0|-29.0|-26.66349|0.68079 +2016-07-01|83.0|-30.0|-27.46409|0.68728 +2016-07-01|83.0|-31.0|-28.26304|0.69396 +2016-07-01|83.0|-32.0|-29.06026|0.70082 +2016-07-01|83.0|-33.0|-29.85564|0.70787 +2016-07-01|83.0|-34.0|-30.6491|0.71512 +2016-07-01|83.0|-35.0|-31.44055|0.72256 +2016-07-01|83.0|-36.0|-32.22988|0.73021 +2016-07-01|83.0|-37.0|-33.01698|0.73808 +2016-07-01|83.0|-38.0|-33.80176|0.74616 +2016-07-01|83.0|-39.0|-34.5841|0.75448 +2016-07-01|83.0|-40.0|-35.36389|0.76302 +2016-07-01|83.0|-41.0|-36.141|0.77181 +2016-07-01|83.0|-42.0|-36.91531|0.78085 +2016-07-01|83.0|-43.0|-37.6867|0.79015 +2016-07-01|83.0|-44.0|-38.45502|0.79971 +2016-07-01|83.0|-45.0|-39.22013|0.80955 +2016-07-01|83.0|-46.0|-39.9819|0.81968 +2016-07-01|83.0|-47.0|-40.74015|0.8301 +2016-07-01|83.0|-48.0|-41.49474|0.84083 +2016-07-01|83.0|-49.0|-42.2455|0.85187 +2016-07-01|83.0|-50.0|-42.99224|0.86324 +2016-07-01|83.0|-51.0|-43.73479|0.87495 +2016-07-01|83.0|-52.0|-44.47294|0.88702 +2016-07-01|83.0|-53.0|-45.2065|0.89945 +2016-07-01|83.0|-54.0|-45.93524|0.91225 +2016-07-01|83.0|-55.0|-46.65895|0.92545 +2016-07-01|83.0|-56.0|-47.37739|0.93906 +2016-07-01|83.0|-57.0|-48.09029|0.95309 +2016-07-01|83.0|-58.0|-48.79741|0.96756 +2016-07-01|83.0|-59.0|-49.49845|0.98249 +2016-07-01|83.0|-60.0|-50.19312|0.99789 +2016-07-01|83.0|-61.0|-50.88112|1.01378 +2016-07-01|83.0|-62.0|-51.56209|1.03019 +2016-07-01|83.0|-63.0|-52.2357|1.04712 +2016-07-01|83.0|-64.0|-52.90156|1.06461 +2016-07-01|83.0|-65.0|-53.55928|1.08268 +2016-07-01|83.0|-66.0|-54.20844|1.10134 +2016-07-01|83.0|-67.0|-54.84858|1.12063 +2016-07-01|83.0|-68.0|-55.47922|1.14056 +2016-07-01|83.0|-69.0|-56.09985|1.16116 +2016-07-01|83.0|-70.0|-56.70991|1.18247 +2016-07-01|83.0|-71.0|-57.30882|1.2045 +2016-07-01|83.0|-72.0|-57.89595|1.22729 +2016-07-01|83.0|-73.0|-58.47061|1.25086 +2016-07-01|83.0|-74.0|-59.0321|1.27525 +2016-07-01|83.0|-75.0|-59.57961|1.30049 +2016-07-01|83.0|-76.0|-60.11232|1.32661 +2016-07-01|83.0|-77.0|-60.62931|1.35364 +2016-07-01|83.0|-78.0|-61.12961|1.38162 +2016-07-01|83.0|-79.0|-61.61215|1.41057 +2016-07-01|83.0|-80.0|-62.0758|1.44053 +2016-07-01|83.0|-81.0|-62.51931|1.47153 +2016-07-01|83.0|-82.0|-62.94134|1.50361 +2016-07-01|83.0|-83.0|-63.34042|1.53677 +2016-07-01|83.0|-84.0|-63.71497|1.57106 +2016-07-01|83.0|-85.0|-64.06324|1.60649 +2016-07-01|83.0|-86.0|-64.38335|1.64307 +2016-07-01|83.0|-87.0|-64.67324|1.6808 +2016-07-01|83.0|-88.0|-64.93063|1.71969 +2016-07-01|83.0|-89.0|-65.15307|1.75971 +2016-07-01|83.0|-90.0|-65.33783|1.80083 +2016-07-01|83.0|-91.0|-65.48194|1.84299 +2016-07-01|83.0|-92.0|-65.58213|1.8861 +2016-07-01|83.0|-93.0|-65.6348|1.93005 +2016-07-01|83.0|-94.0|-65.636|1.97467 +2016-07-01|83.0|-95.0|-65.58136|2.01976 +2016-07-01|83.0|-96.0|-65.4661|2.06502 +2016-07-01|83.0|-97.0|-65.28492|2.11011 +2016-07-01|83.0|-98.0|-65.03202|2.15455 +2016-07-01|83.0|-99.0|-64.70101|2.19777 +2016-07-01|83.0|-100.0|-64.28488|2.23902 +2016-07-01|83.0|-101.0|-63.77597|2.27738 +2016-07-01|83.0|-102.0|-63.1659|2.31172 +2016-07-01|83.0|-103.0|-62.44563|2.34062 +2016-07-01|83.0|-104.0|-61.60538|2.36238 +2016-07-01|83.0|-105.0|-60.63476|2.37491 +2016-07-01|83.0|-106.0|-59.52282|2.37573 +2016-07-01|83.0|-107.0|-58.25824|2.36192 +2016-07-01|83.0|-108.0|-56.82962|2.3301 +2016-07-01|83.0|-109.0|-55.22586|2.27645 +2016-07-01|83.0|-110.0|-53.43675|2.1968 +2016-07-01|83.0|-111.0|-51.45369|2.08677 +2016-07-01|83.0|-112.0|-49.27062|1.94206 +2016-07-01|83.0|-113.0|-46.88513|1.75887 +2016-07-01|83.0|-114.0|-44.29965|1.53439 +2016-07-01|83.0|-115.0|-41.5227|1.26743 +2016-07-01|83.0|-116.0|-38.56985|0.9591 +2016-07-01|83.0|-117.0|-35.46434|0.61332 +2016-07-01|83.0|-118.0|-32.23704|0.23703 +2016-07-01|83.0|-119.0|-28.92555|-0.15997 +2016-07-01|83.0|-120.0|-25.57248|-0.56574 +2016-07-01|83.0|-121.0|-22.22298|-0.96728 +2016-07-01|83.0|-122.0|-18.9219|-1.35195 +2016-07-01|83.0|-123.0|-15.71097|-1.70869 +2016-07-01|83.0|-124.0|-12.62651|-2.02907 +2016-07-01|83.0|-125.0|-9.69784|-2.30769 +2016-07-01|83.0|-126.0|-6.94656|-2.54222 +2016-07-01|83.0|-127.0|-4.3867|-2.73301 +2016-07-01|83.0|-128.0|-2.0254|-2.88241 +2016-07-01|83.0|-129.0|0.13603|-2.99414 +2016-07-01|83.0|-130.0|2.10087|-3.07265 +2016-07-01|83.0|-131.0|3.87582|-3.12263 +2016-07-01|83.0|-132.0|5.46989|-3.14868 +2016-07-01|83.0|-133.0|6.89356|-3.15502 +2016-07-01|83.0|-134.0|8.15805|-3.14545 +2016-07-01|83.0|-135.0|9.2748|-3.12326 +2016-07-01|83.0|-136.0|10.25508|-3.09124 +2016-07-01|83.0|-137.0|11.10977|-3.05172 +2016-07-01|83.0|-138.0|11.84917|-3.00662 +2016-07-01|83.0|-139.0|12.48293|-2.95751 +2016-07-01|83.0|-140.0|13.02|-2.90565 +2016-07-01|83.0|-141.0|13.46863|-2.85204 +2016-07-01|83.0|-142.0|13.83638|-2.79748 +2016-07-01|83.0|-143.0|14.13016|-2.74261 +2016-07-01|83.0|-144.0|14.35629|-2.6879 +2016-07-01|83.0|-145.0|14.52051|-2.63373 +2016-07-01|83.0|-146.0|14.62804|-2.58038 +2016-07-01|83.0|-147.0|14.68363|-2.52806 +2016-07-01|83.0|-148.0|14.69161|-2.47694 +2016-07-01|83.0|-149.0|14.65591|-2.42711 +2016-07-01|83.0|-150.0|14.58012|-2.37865 +2016-07-01|83.0|-151.0|14.46751|-2.33159 +2016-07-01|83.0|-152.0|14.32107|-2.28597 +2016-07-01|83.0|-153.0|14.14353|-2.24179 +2016-07-01|83.0|-154.0|13.9374|-2.19903 +2016-07-01|83.0|-155.0|13.70497|-2.15768 +2016-07-01|83.0|-156.0|13.44837|-2.11772 +2016-07-01|83.0|-157.0|13.16953|-2.0791 +2016-07-01|83.0|-158.0|12.87025|-2.0418 +2016-07-01|83.0|-159.0|12.55221|-2.00578 +2016-07-01|83.0|-160.0|12.21694|-1.971 +2016-07-01|83.0|-161.0|11.86588|-1.93742 +2016-07-01|83.0|-162.0|11.50037|-1.905 +2016-07-01|83.0|-163.0|11.12167|-1.8737 +2016-07-01|83.0|-164.0|10.73095|-1.84348 +2016-07-01|83.0|-165.0|10.32931|-1.8143 +2016-07-01|83.0|-166.0|9.9178|-1.78613 +2016-07-01|83.0|-167.0|9.4974|-1.75893 +2016-07-01|83.0|-168.0|9.06906|-1.73266 +2016-07-01|83.0|-169.0|8.63365|-1.7073 +2016-07-01|83.0|-170.0|8.19205|-1.68281 +2016-07-01|83.0|-171.0|7.74507|-1.65916 +2016-07-01|83.0|-172.0|7.2935|-1.63633 +2016-07-01|83.0|-173.0|6.8381|-1.61428 +2016-07-01|83.0|-174.0|6.37962|-1.59299 +2016-07-01|83.0|-175.0|5.91879|-1.57244 +2016-07-01|83.0|-176.0|5.4563|-1.5526 +2016-07-01|83.0|-177.0|4.99288|-1.53345 +2016-07-01|83.0|-178.0|4.52919|-1.51497 +2016-07-01|83.0|-179.0|4.06594|-1.49713 +2016-07-01|84.0|0.0|-3.00879|0.60658 +2016-07-01|84.0|1.0|-2.17713|0.60389 +2016-07-01|84.0|2.0|-1.34576|0.6013 +2016-07-01|84.0|3.0|-0.51474|0.5988 +2016-07-01|84.0|4.0|0.31589|0.5964 +2016-07-01|84.0|5.0|1.14608|0.59409 +2016-07-01|84.0|6.0|1.97578|0.59188 +2016-07-01|84.0|7.0|2.80495|0.58976 +2016-07-01|84.0|8.0|3.63354|0.58773 +2016-07-01|84.0|9.0|4.4615|0.5858 +2016-07-01|84.0|10.0|5.28878|0.58396 +2016-07-01|84.0|11.0|6.11533|0.5822 +2016-07-01|84.0|12.0|6.9411|0.58054 +2016-07-01|84.0|13.0|7.76604|0.57898 +2016-07-01|84.0|14.0|8.5901|0.5775 +2016-07-01|84.0|15.0|9.41322|0.57611 +2016-07-01|84.0|16.0|10.23536|0.57481 +2016-07-01|84.0|17.0|11.05645|0.5736 +2016-07-01|84.0|18.0|11.87644|0.57248 +2016-07-01|84.0|19.0|12.69528|0.57145 +2016-07-01|84.0|20.0|13.51291|0.57052 +2016-07-01|84.0|21.0|14.32927|0.56967 +2016-07-01|84.0|22.0|15.1443|0.56891 +2016-07-01|84.0|23.0|15.95793|0.56825 +2016-07-01|84.0|24.0|16.77011|0.56768 +2016-07-01|84.0|25.0|17.58077|0.5672 +2016-07-01|84.0|26.0|18.38985|0.56681 +2016-07-01|84.0|27.0|19.19727|0.56652 +2016-07-01|84.0|28.0|20.00296|0.56632 +2016-07-01|84.0|29.0|20.80686|0.56622 +2016-07-01|84.0|30.0|21.60889|0.56621 +2016-07-01|84.0|31.0|22.40898|0.56631 +2016-07-01|84.0|32.0|23.20704|0.5665 +2016-07-01|84.0|33.0|24.00299|0.56679 +2016-07-01|84.0|34.0|24.79676|0.56718 +2016-07-01|84.0|35.0|25.58826|0.56768 +2016-07-01|84.0|36.0|26.37739|0.56828 +2016-07-01|84.0|37.0|27.16407|0.56899 +2016-07-01|84.0|38.0|27.9482|0.56981 +2016-07-01|84.0|39.0|28.72968|0.57073 +2016-07-01|84.0|40.0|29.50841|0.57177 +2016-07-01|84.0|41.0|30.28429|0.57293 +2016-07-01|84.0|42.0|31.05719|0.5742 +2016-07-01|84.0|43.0|31.82702|0.57559 +2016-07-01|84.0|44.0|32.59365|0.5771 +2016-07-01|84.0|45.0|33.35696|0.57873 +2016-07-01|84.0|46.0|34.11681|0.5805 +2016-07-01|84.0|47.0|34.87309|0.58239 +2016-07-01|84.0|48.0|35.62563|0.58442 +2016-07-01|84.0|49.0|36.37431|0.58658 +2016-07-01|84.0|50.0|37.11897|0.58889 +2016-07-01|84.0|51.0|37.85945|0.59134 +2016-07-01|84.0|52.0|38.59558|0.59394 +2016-07-01|84.0|53.0|39.3272|0.59669 +2016-07-01|84.0|54.0|40.05412|0.5996 +2016-07-01|84.0|55.0|40.77615|0.60266 +2016-07-01|84.0|56.0|41.49309|0.6059 +2016-07-01|84.0|57.0|42.20474|0.6093 +2016-07-01|84.0|58.0|42.91087|0.61289 +2016-07-01|84.0|59.0|43.61126|0.61665 +2016-07-01|84.0|60.0|44.30567|0.6206 +2016-07-01|84.0|61.0|44.99384|0.62474 +2016-07-01|84.0|62.0|45.6755|0.62909 +2016-07-01|84.0|63.0|46.35038|0.63364 +2016-07-01|84.0|64.0|47.01818|0.6384 +2016-07-01|84.0|65.0|47.67859|0.64338 +2016-07-01|84.0|66.0|48.33128|0.64859 +2016-07-01|84.0|67.0|48.97589|0.65403 +2016-07-01|84.0|68.0|49.61208|0.65972 +2016-07-01|84.0|69.0|50.23944|0.66566 +2016-07-01|84.0|70.0|50.85758|0.67185 +2016-07-01|84.0|71.0|51.46604|0.67832 +2016-07-01|84.0|72.0|52.06438|0.68506 +2016-07-01|84.0|73.0|52.65211|0.69209 +2016-07-01|84.0|74.0|53.22871|0.69941 +2016-07-01|84.0|75.0|53.79363|0.70704 +2016-07-01|84.0|76.0|54.34629|0.71499 +2016-07-01|84.0|77.0|54.88607|0.72326 +2016-07-01|84.0|78.0|55.41231|0.73186 +2016-07-01|84.0|79.0|55.92431|0.74081 +2016-07-01|84.0|80.0|56.42132|0.75012 +2016-07-01|84.0|81.0|56.90254|0.75979 +2016-07-01|84.0|82.0|57.36713|0.76983 +2016-07-01|84.0|83.0|57.81418|0.78026 +2016-07-01|84.0|84.0|58.24272|0.79107 +2016-07-01|84.0|85.0|58.65171|0.80228 +2016-07-01|84.0|86.0|59.04006|0.8139 +2016-07-01|84.0|87.0|59.40657|0.82592 +2016-07-01|84.0|88.0|59.74999|0.83835 +2016-07-01|84.0|89.0|60.06895|0.85118 +2016-07-01|84.0|90.0|60.362|0.86442 +2016-07-01|84.0|91.0|60.6276|0.87806 +2016-07-01|84.0|92.0|60.86407|0.89208 +2016-07-01|84.0|93.0|61.06963|0.90646 +2016-07-01|84.0|94.0|61.24238|0.92118 +2016-07-01|84.0|95.0|61.38025|0.93621 +2016-07-01|84.0|96.0|61.48107|0.9515 +2016-07-01|84.0|97.0|61.54248|0.96699 +2016-07-01|84.0|98.0|61.56198|0.98263 +2016-07-01|84.0|99.0|61.5369|0.99832 +2016-07-01|84.0|100.0|61.46438|1.01396 +2016-07-01|84.0|101.0|61.34138|1.02941 +2016-07-01|84.0|102.0|61.16469|1.04453 +2016-07-01|84.0|103.0|60.93089|1.05913 +2016-07-01|84.0|104.0|60.63641|1.07299 +2016-07-01|84.0|105.0|60.27747|1.08585 +2016-07-01|84.0|106.0|59.85015|1.09739 +2016-07-01|84.0|107.0|59.3504|1.10726 +2016-07-01|84.0|108.0|58.77406|1.11504 +2016-07-01|84.0|109.0|58.11692|1.12026 +2016-07-01|84.0|110.0|57.37478|1.12236 +2016-07-01|84.0|111.0|56.54355|1.12074 +2016-07-01|84.0|112.0|55.61932|1.11471 +2016-07-01|84.0|113.0|54.59853|1.10353 +2016-07-01|84.0|114.0|53.47809|1.08641 +2016-07-01|84.0|115.0|52.25557|1.06252 +2016-07-01|84.0|116.0|50.92943|1.03101 +2016-07-01|84.0|117.0|49.4992|0.99108 +2016-07-01|84.0|118.0|47.96575|0.94196 +2016-07-01|84.0|119.0|46.33147|0.88302 +2016-07-01|84.0|120.0|44.60056|0.81381 +2016-07-01|84.0|121.0|42.77911|0.73411 +2016-07-01|84.0|122.0|40.87526|0.64398 +2016-07-01|84.0|123.0|38.89919|0.54384 +2016-07-01|84.0|124.0|36.86301|0.43446 +2016-07-01|84.0|125.0|34.78059|0.317 +2016-07-01|84.0|126.0|32.66718|0.19291 +2016-07-01|84.0|127.0|30.53899|0.06397 +2016-07-01|84.0|128.0|28.41267|-0.0679 +2016-07-01|84.0|129.0|26.3048|-0.20066 +2016-07-01|84.0|130.0|24.2313|-0.33232 +2016-07-01|84.0|131.0|22.20695|-0.46102 +2016-07-01|84.0|132.0|20.24501|-0.58512 +2016-07-01|84.0|133.0|18.35692|-0.70325 +2016-07-01|84.0|134.0|16.55212|-0.81438 +2016-07-01|84.0|135.0|14.838|-0.91778 +2016-07-01|84.0|136.0|13.21992|-1.01304 +2016-07-01|84.0|137.0|11.7014|-1.10004 +2016-07-01|84.0|138.0|10.28424|-1.17886 +2016-07-01|84.0|139.0|8.96878|-1.24978 +2016-07-01|84.0|140.0|7.7541|-1.31322 +2016-07-01|84.0|141.0|6.63828|-1.36969 +2016-07-01|84.0|142.0|5.6186|-1.41976 +2016-07-01|84.0|143.0|4.69175|-1.46401 +2016-07-01|84.0|144.0|3.85397|-1.50304 +2016-07-01|84.0|145.0|3.10123|-1.53743 +2016-07-01|84.0|146.0|2.42934|-1.56774 +2016-07-01|84.0|147.0|1.83404|-1.59448 +2016-07-01|84.0|148.0|1.31107|-1.61812 +2016-07-01|84.0|149.0|0.85624|-1.63911 +2016-07-01|84.0|150.0|0.46548|-1.65783 +2016-07-01|84.0|151.0|0.13484|-1.67464 +2016-07-01|84.0|152.0|-0.13945|-1.68986 +2016-07-01|84.0|153.0|-0.36099|-1.70377 +2016-07-01|84.0|154.0|-0.53321|-1.71662 +2016-07-01|84.0|155.0|-0.65935|-1.72862 +2016-07-01|84.0|156.0|-0.74248|-1.73998 +2016-07-01|84.0|157.0|-0.78547|-1.75087 +2016-07-01|84.0|158.0|-0.79105|-1.76144 +2016-07-01|84.0|159.0|-0.76178|-1.77181 +2016-07-01|84.0|160.0|-0.70007|-1.78212 +2016-07-01|84.0|161.0|-0.60818|-1.79246 +2016-07-01|84.0|162.0|-0.48823|-1.80292 +2016-07-01|84.0|163.0|-0.34223|-1.81359 +2016-07-01|84.0|164.0|-0.17207|-1.82454 +2016-07-01|84.0|165.0|0.02047|-1.83583 +2016-07-01|84.0|166.0|0.23371|-1.84753 +2016-07-01|84.0|167.0|0.46607|-1.85969 +2016-07-01|84.0|168.0|0.71602|-1.87235 +2016-07-01|84.0|169.0|0.98215|-1.88557 +2016-07-01|84.0|170.0|1.26309|-1.89938 +2016-07-01|84.0|171.0|1.55754|-1.91382 +2016-07-01|84.0|172.0|1.86425|-1.92893 +2016-07-01|84.0|173.0|2.18204|-1.94475 +2016-07-01|84.0|174.0|2.50974|-1.96132 +2016-07-01|84.0|175.0|2.84625|-1.97865 +2016-07-01|84.0|176.0|3.1905|-1.9968 +2016-07-01|84.0|177.0|3.54142|-2.01579 +2016-07-01|84.0|178.0|3.898|-2.03566 +2016-07-01|84.0|179.0|4.25922|-2.05645 +2016-07-01|84.0|-1.0|-3.84071|0.60937 +2016-07-01|84.0|-2.0|-4.67283|0.61227 +2016-07-01|84.0|-3.0|-5.50511|0.61526 +2016-07-01|84.0|-4.0|-6.33751|0.61835 +2016-07-01|84.0|-5.0|-7.16997|0.62155 +2016-07-01|84.0|-6.0|-8.00246|0.62486 +2016-07-01|84.0|-7.0|-8.83492|0.62827 +2016-07-01|84.0|-8.0|-9.66731|0.63179 +2016-07-01|84.0|-9.0|-10.49958|0.63543 +2016-07-01|84.0|-10.0|-11.33168|0.63917 +2016-07-01|84.0|-11.0|-12.16358|0.64303 +2016-07-01|84.0|-12.0|-12.99522|0.647 +2016-07-01|84.0|-13.0|-13.82655|0.6511 +2016-07-01|84.0|-14.0|-14.65752|0.65531 +2016-07-01|84.0|-15.0|-15.48809|0.65965 +2016-07-01|84.0|-16.0|-16.31821|0.66412 +2016-07-01|84.0|-17.0|-17.14782|0.66871 +2016-07-01|84.0|-18.0|-17.97688|0.67343 +2016-07-01|84.0|-19.0|-18.80533|0.67829 +2016-07-01|84.0|-20.0|-19.63312|0.68328 +2016-07-01|84.0|-21.0|-20.4602|0.68841 +2016-07-01|84.0|-22.0|-21.28651|0.69369 +2016-07-01|84.0|-23.0|-22.112|0.69911 +2016-07-01|84.0|-24.0|-22.93661|0.70468 +2016-07-01|84.0|-25.0|-23.76029|0.7104 +2016-07-01|84.0|-26.0|-24.58298|0.71628 +2016-07-01|84.0|-27.0|-25.40461|0.72232 +2016-07-01|84.0|-28.0|-26.22512|0.72853 +2016-07-01|84.0|-29.0|-27.04446|0.73491 +2016-07-01|84.0|-30.0|-27.86255|0.74145 +2016-07-01|84.0|-31.0|-28.67933|0.74818 +2016-07-01|84.0|-32.0|-29.49474|0.75509 +2016-07-01|84.0|-33.0|-30.3087|0.76219 +2016-07-01|84.0|-34.0|-31.12114|0.76948 +2016-07-01|84.0|-35.0|-31.93199|0.77697 +2016-07-01|84.0|-36.0|-32.74116|0.78466 +2016-07-01|84.0|-37.0|-33.54859|0.79257 +2016-07-01|84.0|-38.0|-34.35419|0.80069 +2016-07-01|84.0|-39.0|-35.15787|0.80903 +2016-07-01|84.0|-40.0|-35.95955|0.8176 +2016-07-01|84.0|-41.0|-36.75914|0.82641 +2016-07-01|84.0|-42.0|-37.55654|0.83546 +2016-07-01|84.0|-43.0|-38.35167|0.84477 +2016-07-01|84.0|-44.0|-39.14441|0.85433 +2016-07-01|84.0|-45.0|-39.93466|0.86416 +2016-07-01|84.0|-46.0|-40.72232|0.87427 +2016-07-01|84.0|-47.0|-41.50727|0.88466 +2016-07-01|84.0|-48.0|-42.28939|0.89535 +2016-07-01|84.0|-49.0|-43.06857|0.90634 +2016-07-01|84.0|-50.0|-43.84467|0.91765 +2016-07-01|84.0|-51.0|-44.61756|0.92928 +2016-07-01|84.0|-52.0|-45.3871|0.94125 +2016-07-01|84.0|-53.0|-46.15314|0.95356 +2016-07-01|84.0|-54.0|-46.91554|0.96624 +2016-07-01|84.0|-55.0|-47.67413|0.97929 +2016-07-01|84.0|-56.0|-48.42874|0.99273 +2016-07-01|84.0|-57.0|-49.1792|1.00657 +2016-07-01|84.0|-58.0|-49.92532|1.02082 +2016-07-01|84.0|-59.0|-50.66692|1.0355 +2016-07-01|84.0|-60.0|-51.40377|1.05063 +2016-07-01|84.0|-61.0|-52.13568|1.06623 +2016-07-01|84.0|-62.0|-52.86241|1.0823 +2016-07-01|84.0|-63.0|-53.58372|1.09888 +2016-07-01|84.0|-64.0|-54.29936|1.11597 +2016-07-01|84.0|-65.0|-55.00906|1.1336 +2016-07-01|84.0|-66.0|-55.71254|1.15179 +2016-07-01|84.0|-67.0|-56.4095|1.17057 +2016-07-01|84.0|-68.0|-57.09962|1.18994 +2016-07-01|84.0|-69.0|-57.78256|1.20995 +2016-07-01|84.0|-70.0|-58.45796|1.23061 +2016-07-01|84.0|-71.0|-59.12545|1.25195 +2016-07-01|84.0|-72.0|-59.78462|1.27399 +2016-07-01|84.0|-73.0|-60.43502|1.29678 +2016-07-01|84.0|-74.0|-61.07621|1.32032 +2016-07-01|84.0|-75.0|-61.70769|1.34467 +2016-07-01|84.0|-76.0|-62.32892|1.36985 +2016-07-01|84.0|-77.0|-62.93935|1.39588 +2016-07-01|84.0|-78.0|-63.53837|1.42282 +2016-07-01|84.0|-79.0|-64.12532|1.45069 +2016-07-01|84.0|-80.0|-64.69951|1.47954 +2016-07-01|84.0|-81.0|-65.26019|1.50939 +2016-07-01|84.0|-82.0|-65.80654|1.54029 +2016-07-01|84.0|-83.0|-66.33769|1.57229 +2016-07-01|84.0|-84.0|-66.85269|1.60541 +2016-07-01|84.0|-85.0|-67.35052|1.63971 +2016-07-01|84.0|-86.0|-67.83008|1.67522 +2016-07-01|84.0|-87.0|-68.29015|1.71198 +2016-07-01|84.0|-88.0|-68.72944|1.75004 +2016-07-01|84.0|-89.0|-69.14653|1.78942 +2016-07-01|84.0|-90.0|-69.53986|1.83017 +2016-07-01|84.0|-91.0|-69.90775|1.87231 +2016-07-01|84.0|-92.0|-70.24835|1.91588 +2016-07-01|84.0|-93.0|-70.55964|1.96087 +2016-07-01|84.0|-94.0|-70.83942|2.0073 +2016-07-01|84.0|-95.0|-71.08524|2.05515 +2016-07-01|84.0|-96.0|-71.29445|2.1044 +2016-07-01|84.0|-97.0|-71.46411|2.155 +2016-07-01|84.0|-98.0|-71.59097|2.20687 +2016-07-01|84.0|-99.0|-71.67148|2.25988 +2016-07-01|84.0|-100.0|-71.70169|2.31387 +2016-07-01|84.0|-101.0|-71.67725|2.36862 +2016-07-01|84.0|-102.0|-71.59334|2.42382 +2016-07-01|84.0|-103.0|-71.44463|2.47907 +2016-07-01|84.0|-104.0|-71.22523|2.53387 +2016-07-01|84.0|-105.0|-70.92862|2.58756 +2016-07-01|84.0|-106.0|-70.54761|2.63929 +2016-07-01|84.0|-107.0|-70.07424|2.68802 +2016-07-01|84.0|-108.0|-69.4998|2.7324 +2016-07-01|84.0|-109.0|-68.81472|2.77078 +2016-07-01|84.0|-110.0|-68.00858|2.80112 +2016-07-01|84.0|-111.0|-67.07014|2.82088 +2016-07-01|84.0|-112.0|-65.98734|2.82702 +2016-07-01|84.0|-113.0|-64.74751|2.81587 +2016-07-01|84.0|-114.0|-63.33756|2.78313 +2016-07-01|84.0|-115.0|-61.74434|2.7238 +2016-07-01|84.0|-116.0|-59.95524|2.63232 +2016-07-01|84.0|-117.0|-57.95889|2.50265 +2016-07-01|84.0|-118.0|-55.74623|2.32867 +2016-07-01|84.0|-119.0|-53.31169|2.10463 +2016-07-01|84.0|-120.0|-50.65474|1.82589 +2016-07-01|84.0|-121.0|-47.78139|1.48987 +2016-07-01|84.0|-122.0|-44.70561|1.097 +2016-07-01|84.0|-123.0|-41.45043|0.6517 +2016-07-01|84.0|-124.0|-38.0482|0.16286 +2016-07-01|84.0|-125.0|-34.53994|-0.35623 +2016-07-01|84.0|-126.0|-30.97341|-0.88875 +2016-07-01|84.0|-127.0|-27.40028|-1.41609 +2016-07-01|84.0|-128.0|-23.87255|-1.9199 +2016-07-01|84.0|-129.0|-20.43899|-2.38418 +2016-07-01|84.0|-130.0|-17.14207|-2.79687 +2016-07-01|84.0|-131.0|-14.01587|-3.1506 +2016-07-01|84.0|-132.0|-11.0852|-3.44264 +2016-07-01|84.0|-133.0|-8.36569|-3.67418 +2016-07-01|84.0|-134.0|-5.86474|-3.84934 +2016-07-01|84.0|-135.0|-3.58293|-3.97405 +2016-07-01|84.0|-136.0|-1.51551|-4.0551 +2016-07-01|84.0|-137.0|0.34605|-4.09944 +2016-07-01|84.0|-138.0|2.01279|-4.11366 +2016-07-01|84.0|-139.0|3.49719|-4.10369 +2016-07-01|84.0|-140.0|4.81237|-4.07474 +2016-07-01|84.0|-141.0|5.97153|-4.03118 +2016-07-01|84.0|-142.0|6.98748|-3.97668 +2016-07-01|84.0|-143.0|7.87245|-3.91422 +2016-07-01|84.0|-144.0|8.6379|-3.84619 +2016-07-01|84.0|-145.0|9.29447|-3.77452 +2016-07-01|84.0|-146.0|9.85196|-3.7007 +2016-07-01|84.0|-147.0|10.31931|-3.62591 +2016-07-01|84.0|-148.0|10.70468|-3.55104 +2016-07-01|84.0|-149.0|11.01548|-3.47679 +2016-07-01|84.0|-150.0|11.25844|-3.40368 +2016-07-01|84.0|-151.0|11.43966|-3.33207 +2016-07-01|84.0|-152.0|11.56465|-3.26225 +2016-07-01|84.0|-153.0|11.63844|-3.19441 +2016-07-01|84.0|-154.0|11.66555|-3.12866 +2016-07-01|84.0|-155.0|11.65012|-3.06509 +2016-07-01|84.0|-156.0|11.5959|-3.00372 +2016-07-01|84.0|-157.0|11.50631|-2.94456 +2016-07-01|84.0|-158.0|11.38448|-2.88759 +2016-07-01|84.0|-159.0|11.23326|-2.83279 +2016-07-01|84.0|-160.0|11.05528|-2.7801 +2016-07-01|84.0|-161.0|10.85293|-2.72948 +2016-07-01|84.0|-162.0|10.62846|-2.68086 +2016-07-01|84.0|-163.0|10.3839|-2.63418 +2016-07-01|84.0|-164.0|10.12116|-2.58938 +2016-07-01|84.0|-165.0|9.84201|-2.54639 +2016-07-01|84.0|-166.0|9.54811|-2.50514 +2016-07-01|84.0|-167.0|9.24101|-2.46557 +2016-07-01|84.0|-168.0|8.92216|-2.42762 +2016-07-01|84.0|-169.0|8.59293|-2.39123 +2016-07-01|84.0|-170.0|8.25464|-2.35633 +2016-07-01|84.0|-171.0|7.90851|-2.32287 +2016-07-01|84.0|-172.0|7.55574|-2.29079 +2016-07-01|84.0|-173.0|7.19746|-2.26005 +2016-07-01|84.0|-174.0|6.83477|-2.23059 +2016-07-01|84.0|-175.0|6.46874|-2.20236 +2016-07-01|84.0|-176.0|6.1004|-2.17532 +2016-07-01|84.0|-177.0|5.73077|-2.14942 +2016-07-01|84.0|-178.0|5.36086|-2.12463 +2016-07-01|84.0|-179.0|4.99164|-2.10089 +2016-07-01|85.0|0.0|-2.9776|0.67289 +2016-07-01|85.0|1.0|-2.13123|0.67029 +2016-07-01|85.0|2.0|-1.28512|0.6678 +2016-07-01|85.0|3.0|-0.43932|0.66541 +2016-07-01|85.0|4.0|0.40615|0.66312 +2016-07-01|85.0|5.0|1.25125|0.66093 +2016-07-01|85.0|6.0|2.09593|0.65884 +2016-07-01|85.0|7.0|2.94017|0.65685 +2016-07-01|85.0|8.0|3.78393|0.65496 +2016-07-01|85.0|9.0|4.62716|0.65318 +2016-07-01|85.0|10.0|5.46983|0.65148 +2016-07-01|85.0|11.0|6.3119|0.64989 +2016-07-01|85.0|12.0|7.15333|0.6484 +2016-07-01|85.0|13.0|7.99408|0.647 +2016-07-01|85.0|14.0|8.83412|0.64571 +2016-07-01|85.0|15.0|9.6734|0.64451 +2016-07-01|85.0|16.0|10.51187|0.64341 +2016-07-01|85.0|17.0|11.34951|0.64241 +2016-07-01|85.0|18.0|12.18625|0.6415 +2016-07-01|85.0|19.0|13.02207|0.6407 +2016-07-01|85.0|20.0|13.85692|0.63999 +2016-07-01|85.0|21.0|14.69075|0.63939 +2016-07-01|85.0|22.0|15.52352|0.63888 +2016-07-01|85.0|23.0|16.35518|0.63848 +2016-07-01|85.0|24.0|17.18567|0.63818 +2016-07-01|85.0|25.0|18.01497|0.63798 +2016-07-01|85.0|26.0|18.843|0.63788 +2016-07-01|85.0|27.0|19.66973|0.63789 +2016-07-01|85.0|28.0|20.49509|0.63801 +2016-07-01|85.0|29.0|21.31904|0.63823 +2016-07-01|85.0|30.0|22.14152|0.63856 +2016-07-01|85.0|31.0|22.96248|0.63899 +2016-07-01|85.0|32.0|23.78185|0.63954 +2016-07-01|85.0|33.0|24.59958|0.6402 +2016-07-01|85.0|34.0|25.41561|0.64097 +2016-07-01|85.0|35.0|26.22986|0.64186 +2016-07-01|85.0|36.0|27.04229|0.64287 +2016-07-01|85.0|37.0|27.85281|0.64399 +2016-07-01|85.0|38.0|28.66137|0.64524 +2016-07-01|85.0|39.0|29.46789|0.64661 +2016-07-01|85.0|40.0|30.27229|0.64811 +2016-07-01|85.0|41.0|31.0745|0.64973 +2016-07-01|85.0|42.0|31.87445|0.65149 +2016-07-01|85.0|43.0|32.67205|0.65338 +2016-07-01|85.0|44.0|33.46721|0.65541 +2016-07-01|85.0|45.0|34.25986|0.65757 +2016-07-01|85.0|46.0|35.0499|0.65988 +2016-07-01|85.0|47.0|35.83723|0.66234 +2016-07-01|85.0|48.0|36.62177|0.66494 +2016-07-01|85.0|49.0|37.4034|0.6677 +2016-07-01|85.0|50.0|38.18203|0.67062 +2016-07-01|85.0|51.0|38.95755|0.67369 +2016-07-01|85.0|52.0|39.72985|0.67694 +2016-07-01|85.0|53.0|40.4988|0.68035 +2016-07-01|85.0|54.0|41.26428|0.68394 +2016-07-01|85.0|55.0|42.02617|0.68771 +2016-07-01|85.0|56.0|42.78434|0.69167 +2016-07-01|85.0|57.0|43.53865|0.69581 +2016-07-01|85.0|58.0|44.28895|0.70016 +2016-07-01|85.0|59.0|45.03509|0.7047 +2016-07-01|85.0|60.0|45.77691|0.70946 +2016-07-01|85.0|61.0|46.51426|0.71443 +2016-07-01|85.0|62.0|47.24695|0.71962 +2016-07-01|85.0|63.0|47.97481|0.72504 +2016-07-01|85.0|64.0|48.69765|0.7307 +2016-07-01|85.0|65.0|49.41527|0.73661 +2016-07-01|85.0|66.0|50.12747|0.74276 +2016-07-01|85.0|67.0|50.83402|0.74918 +2016-07-01|85.0|68.0|51.5347|0.75587 +2016-07-01|85.0|69.0|52.22927|0.76284 +2016-07-01|85.0|70.0|52.91748|0.7701 +2016-07-01|85.0|71.0|53.59906|0.77766 +2016-07-01|85.0|72.0|54.27373|0.78553 +2016-07-01|85.0|73.0|54.94119|0.79372 +2016-07-01|85.0|74.0|55.60115|0.80225 +2016-07-01|85.0|75.0|56.25327|0.81112 +2016-07-01|85.0|76.0|56.89721|0.82034 +2016-07-01|85.0|77.0|57.5326|0.82994 +2016-07-01|85.0|78.0|58.15907|0.83992 +2016-07-01|85.0|79.0|58.7762|0.85029 +2016-07-01|85.0|80.0|59.38356|0.86108 +2016-07-01|85.0|81.0|59.9807|0.87229 +2016-07-01|85.0|82.0|60.56714|0.88394 +2016-07-01|85.0|83.0|61.14237|0.89605 +2016-07-01|85.0|84.0|61.70585|0.90863 +2016-07-01|85.0|85.0|62.257|0.9217 +2016-07-01|85.0|86.0|62.79521|0.93527 +2016-07-01|85.0|87.0|63.31984|0.94936 +2016-07-01|85.0|88.0|63.83019|0.96399 +2016-07-01|85.0|89.0|64.32553|0.97916 +2016-07-01|85.0|90.0|64.80508|0.99491 +2016-07-01|85.0|91.0|65.26801|1.01123 +2016-07-01|85.0|92.0|65.71343|1.02816 +2016-07-01|85.0|93.0|66.1404|1.04569 +2016-07-01|85.0|94.0|66.54791|1.06385 +2016-07-01|85.0|95.0|66.93487|1.08264 +2016-07-01|85.0|96.0|67.30015|1.10206 +2016-07-01|85.0|97.0|67.6425|1.12214 +2016-07-01|85.0|98.0|67.96062|1.14285 +2016-07-01|85.0|99.0|68.2531|1.16421 +2016-07-01|85.0|100.0|68.51844|1.1862 +2016-07-01|85.0|101.0|68.75503|1.20881 +2016-07-01|85.0|102.0|68.96114|1.23201 +2016-07-01|85.0|103.0|69.13494|1.25576 +2016-07-01|85.0|104.0|69.27447|1.28003 +2016-07-01|85.0|105.0|69.37762|1.30474 +2016-07-01|85.0|106.0|69.44215|1.32982 +2016-07-01|85.0|107.0|69.46566|1.35518 +2016-07-01|85.0|108.0|69.4456|1.38068 +2016-07-01|85.0|109.0|69.37925|1.40618 +2016-07-01|85.0|110.0|69.26373|1.43149 +2016-07-01|85.0|111.0|69.09598|1.4564 +2016-07-01|85.0|112.0|68.87278|1.48063 +2016-07-01|85.0|113.0|68.59073|1.50386 +2016-07-01|85.0|114.0|68.24628|1.52572 +2016-07-01|85.0|115.0|67.83573|1.54576 +2016-07-01|85.0|116.0|67.35525|1.56345 +2016-07-01|85.0|117.0|66.80094|1.57821 +2016-07-01|85.0|118.0|66.16883|1.58933 +2016-07-01|85.0|119.0|65.45497|1.59602 +2016-07-01|85.0|120.0|64.65549|1.59739 +2016-07-01|85.0|121.0|63.7667|1.59246 +2016-07-01|85.0|122.0|62.78519|1.58012 +2016-07-01|85.0|123.0|61.70801|1.55922 +2016-07-01|85.0|124.0|60.53275|1.52853 +2016-07-01|85.0|125.0|59.2578|1.48677 +2016-07-01|85.0|126.0|57.8825|1.43271 +2016-07-01|85.0|127.0|56.40738|1.36515 +2016-07-01|85.0|128.0|54.83433|1.28308 +2016-07-01|85.0|129.0|53.16682|1.18566 +2016-07-01|85.0|130.0|51.41008|1.0724 +2016-07-01|85.0|131.0|49.57115|0.94318 +2016-07-01|85.0|132.0|47.65897|0.79835 +2016-07-01|85.0|133.0|45.68431|0.63877 +2016-07-01|85.0|134.0|43.6596|0.46583 +2016-07-01|85.0|135.0|41.59868|0.28145 +2016-07-01|85.0|136.0|39.51643|0.08799 +2016-07-01|85.0|137.0|37.42834|-0.11187 +2016-07-01|85.0|138.0|35.35|-0.31522 +2016-07-01|85.0|139.0|33.29667|-0.51909 +2016-07-01|85.0|140.0|31.28273|-0.72064 +2016-07-01|85.0|141.0|29.32134|-0.91726 +2016-07-01|85.0|142.0|27.4241|-1.10667 +2016-07-01|85.0|143.0|25.60084|-1.28703 +2016-07-01|85.0|144.0|23.85952|-1.45696 +2016-07-01|85.0|145.0|22.20623|-1.61554 +2016-07-01|85.0|146.0|20.64524|-1.76225 +2016-07-01|85.0|147.0|19.17915|-1.89697 +2016-07-01|85.0|148.0|17.8091|-2.01988 +2016-07-01|85.0|149.0|16.53491|-2.13141 +2016-07-01|85.0|150.0|15.35535|-2.23219 +2016-07-01|85.0|151.0|14.2683|-2.32295 +2016-07-01|85.0|152.0|13.27098|-2.40451 +2016-07-01|85.0|153.0|12.36008|-2.47773 +2016-07-01|85.0|154.0|11.53192|-2.54346 +2016-07-01|85.0|155.0|10.7826|-2.60254 +2016-07-01|85.0|156.0|10.10808|-2.65577 +2016-07-01|85.0|157.0|9.50424|-2.70391 +2016-07-01|85.0|158.0|8.96701|-2.74764 +2016-07-01|85.0|159.0|8.49235|-2.78763 +2016-07-01|85.0|160.0|8.07632|-2.82446 +2016-07-01|85.0|161.0|7.71513|-2.85866 +2016-07-01|85.0|162.0|7.40509|-2.89071 +2016-07-01|85.0|163.0|7.14268|-2.92106 +2016-07-01|85.0|164.0|6.92455|-2.95008 +2016-07-01|85.0|165.0|6.74747|-2.97814 +2016-07-01|85.0|166.0|6.6084|-3.00554 +2016-07-01|85.0|167.0|6.50441|-3.03258 +2016-07-01|85.0|168.0|6.43274|-3.05951 +2016-07-01|85.0|169.0|6.39074|-3.08656 +2016-07-01|85.0|170.0|6.37591|-3.11394 +2016-07-01|85.0|171.0|6.38584|-3.14185 +2016-07-01|85.0|172.0|6.41824|-3.17046 +2016-07-01|85.0|173.0|6.47088|-3.19994 +2016-07-01|85.0|174.0|6.54166|-3.23044 +2016-07-01|85.0|175.0|6.62852|-3.26212 +2016-07-01|85.0|176.0|6.72947|-3.2951 +2016-07-01|85.0|177.0|6.84259|-3.32952 +2016-07-01|85.0|178.0|6.96596|-3.36551 +2016-07-01|85.0|179.0|7.09774|-3.4032 +2016-07-01|85.0|-1.0|-3.82419|0.6756 +2016-07-01|85.0|-2.0|-4.67098|0.6784 +2016-07-01|85.0|-3.0|-5.51792|0.68132 +2016-07-01|85.0|-4.0|-6.36499|0.68434 +2016-07-01|85.0|-5.0|-7.21214|0.68747 +2016-07-01|85.0|-6.0|-8.05933|0.69071 +2016-07-01|85.0|-7.0|-8.90654|0.69407 +2016-07-01|85.0|-8.0|-9.75372|0.69753 +2016-07-01|85.0|-9.0|-10.60085|0.70111 +2016-07-01|85.0|-10.0|-11.44788|0.70481 +2016-07-01|85.0|-11.0|-12.29477|0.70863 +2016-07-01|85.0|-12.0|-13.1415|0.71256 +2016-07-01|85.0|-13.0|-13.98802|0.71662 +2016-07-01|85.0|-14.0|-14.8343|0.7208 +2016-07-01|85.0|-15.0|-15.6803|0.7251 +2016-07-01|85.0|-16.0|-16.52598|0.72953 +2016-07-01|85.0|-17.0|-17.37131|0.7341 +2016-07-01|85.0|-18.0|-18.21624|0.73879 +2016-07-01|85.0|-19.0|-19.06074|0.74362 +2016-07-01|85.0|-20.0|-19.90476|0.74859 +2016-07-01|85.0|-21.0|-20.74828|0.7537 +2016-07-01|85.0|-22.0|-21.59124|0.75895 +2016-07-01|85.0|-23.0|-22.4336|0.76435 +2016-07-01|85.0|-24.0|-23.27533|0.7699 +2016-07-01|85.0|-25.0|-24.11639|0.7756 +2016-07-01|85.0|-26.0|-24.95672|0.78145 +2016-07-01|85.0|-27.0|-25.79629|0.78746 +2016-07-01|85.0|-28.0|-26.63505|0.79364 +2016-07-01|85.0|-29.0|-27.47295|0.79998 +2016-07-01|85.0|-30.0|-28.30995|0.8065 +2016-07-01|85.0|-31.0|-29.146|0.81319 +2016-07-01|85.0|-32.0|-29.98106|0.82005 +2016-07-01|85.0|-33.0|-30.81507|0.8271 +2016-07-01|85.0|-34.0|-31.64797|0.83434 +2016-07-01|85.0|-35.0|-32.47973|0.84177 +2016-07-01|85.0|-36.0|-33.31028|0.8494 +2016-07-01|85.0|-37.0|-34.13958|0.85723 +2016-07-01|85.0|-38.0|-34.96756|0.86527 +2016-07-01|85.0|-39.0|-35.79416|0.87352 +2016-07-01|85.0|-40.0|-36.61933|0.882 +2016-07-01|85.0|-41.0|-37.44301|0.8907 +2016-07-01|85.0|-42.0|-38.26513|0.89963 +2016-07-01|85.0|-43.0|-39.08562|0.9088 +2016-07-01|85.0|-44.0|-39.90443|0.91821 +2016-07-01|85.0|-45.0|-40.72147|0.92788 +2016-07-01|85.0|-46.0|-41.53669|0.93781 +2016-07-01|85.0|-47.0|-42.34999|0.948 +2016-07-01|85.0|-48.0|-43.16132|0.95848 +2016-07-01|85.0|-49.0|-43.97058|0.96923 +2016-07-01|85.0|-50.0|-44.7777|0.98028 +2016-07-01|85.0|-51.0|-45.58258|0.99164 +2016-07-01|85.0|-52.0|-46.38515|1.0033 +2016-07-01|85.0|-53.0|-47.18531|1.01529 +2016-07-01|85.0|-54.0|-47.98295|1.02761 +2016-07-01|85.0|-55.0|-48.77799|1.04027 +2016-07-01|85.0|-56.0|-49.57032|1.05329 +2016-07-01|85.0|-57.0|-50.35983|1.06667 +2016-07-01|85.0|-58.0|-51.14641|1.08043 +2016-07-01|85.0|-59.0|-51.92994|1.09459 +2016-07-01|85.0|-60.0|-52.71029|1.10915 +2016-07-01|85.0|-61.0|-53.48734|1.12413 +2016-07-01|85.0|-62.0|-54.26096|1.13954 +2016-07-01|85.0|-63.0|-55.03099|1.1554 +2016-07-01|85.0|-64.0|-55.7973|1.17173 +2016-07-01|85.0|-65.0|-56.55973|1.18854 +2016-07-01|85.0|-66.0|-57.31812|1.20586 +2016-07-01|85.0|-67.0|-58.07229|1.22369 +2016-07-01|85.0|-68.0|-58.82207|1.24205 +2016-07-01|85.0|-69.0|-59.56727|1.26098 +2016-07-01|85.0|-70.0|-60.30768|1.28049 +2016-07-01|85.0|-71.0|-61.0431|1.30059 +2016-07-01|85.0|-72.0|-61.77331|1.32133 +2016-07-01|85.0|-73.0|-62.49807|1.34271 +2016-07-01|85.0|-74.0|-63.21713|1.36477 +2016-07-01|85.0|-75.0|-63.93023|1.38753 +2016-07-01|85.0|-76.0|-64.6371|1.41102 +2016-07-01|85.0|-77.0|-65.33744|1.43526 +2016-07-01|85.0|-78.0|-66.03093|1.4603 +2016-07-01|85.0|-79.0|-66.71725|1.48617 +2016-07-01|85.0|-80.0|-67.39604|1.51288 +2016-07-01|85.0|-81.0|-68.06693|1.54049 +2016-07-01|85.0|-82.0|-68.72951|1.56903 +2016-07-01|85.0|-83.0|-69.38336|1.59854 +2016-07-01|85.0|-84.0|-70.02801|1.62906 +2016-07-01|85.0|-85.0|-70.66299|1.66063 +2016-07-01|85.0|-86.0|-71.28776|1.6933 +2016-07-01|85.0|-87.0|-71.90176|1.7271 +2016-07-01|85.0|-88.0|-72.50439|1.7621 +2016-07-01|85.0|-89.0|-73.095|1.79834 +2016-07-01|85.0|-90.0|-73.67288|1.83588 +2016-07-01|85.0|-91.0|-74.2373|1.87476 +2016-07-01|85.0|-92.0|-74.78742|1.91505 +2016-07-01|85.0|-93.0|-75.32239|1.9568 +2016-07-01|85.0|-94.0|-75.84123|2.00007 +2016-07-01|85.0|-95.0|-76.34292|2.04492 +2016-07-01|85.0|-96.0|-76.82633|2.0914 +2016-07-01|85.0|-97.0|-77.29026|2.13959 +2016-07-01|85.0|-98.0|-77.73336|2.18954 +2016-07-01|85.0|-99.0|-78.1542|2.2413 +2016-07-01|85.0|-100.0|-78.55118|2.29494 +2016-07-01|85.0|-101.0|-78.92258|2.35049 +2016-07-01|85.0|-102.0|-79.26648|2.40801 +2016-07-01|85.0|-103.0|-79.58082|2.46752 +2016-07-01|85.0|-104.0|-79.86328|2.52904 +2016-07-01|85.0|-105.0|-80.11134|2.59257 +2016-07-01|85.0|-106.0|-80.32221|2.65809 +2016-07-01|85.0|-107.0|-80.49279|2.72555 +2016-07-01|85.0|-108.0|-80.61967|2.79484 +2016-07-01|85.0|-109.0|-80.69905|2.86584 +2016-07-01|85.0|-110.0|-80.72672|2.93831 +2016-07-01|85.0|-111.0|-80.69799|3.01198 +2016-07-01|85.0|-112.0|-80.60764|3.08644 +2016-07-01|85.0|-113.0|-80.44985|3.16114 +2016-07-01|85.0|-114.0|-80.21815|3.2354 +2016-07-01|85.0|-115.0|-79.90528|3.30826 +2016-07-01|85.0|-116.0|-79.50318|3.37855 +2016-07-01|85.0|-117.0|-79.00287|3.44473 +2016-07-01|85.0|-118.0|-78.39435|3.50483 +2016-07-01|85.0|-119.0|-77.66655|3.55637 +2016-07-01|85.0|-120.0|-76.80725|3.59623 +2016-07-01|85.0|-121.0|-75.80305|3.62052 +2016-07-01|85.0|-122.0|-74.63944|3.62442 +2016-07-01|85.0|-123.0|-73.30085|3.60208 +2016-07-01|85.0|-124.0|-71.77095|3.54648 +2016-07-01|85.0|-125.0|-70.03303|3.44938 +2016-07-01|85.0|-126.0|-68.0707|3.30141 +2016-07-01|85.0|-127.0|-65.8689|3.09237 +2016-07-01|85.0|-128.0|-63.41521|2.81175 +2016-07-01|85.0|-129.0|-60.70167|2.4498 +2016-07-01|85.0|-130.0|-57.72686|1.99894 +2016-07-01|85.0|-131.0|-54.49823|1.45563 +2016-07-01|85.0|-132.0|-51.03417|0.82245 +2016-07-01|85.0|-133.0|-47.36556|0.10974 +2016-07-01|85.0|-134.0|-43.53595|-0.6635 +2016-07-01|85.0|-135.0|-39.60018|-1.47048 +2016-07-01|85.0|-136.0|-35.62109|-2.27918 +2016-07-01|85.0|-137.0|-31.66479|-3.05634 +2016-07-01|85.0|-138.0|-27.7953|-3.77196 +2016-07-01|85.0|-139.0|-24.06961|-4.40297 +2016-07-01|85.0|-140.0|-20.53397|-4.93526 +2016-07-01|85.0|-141.0|-17.22214|-5.36386 +2016-07-01|85.0|-142.0|-14.15519|-5.69148 +2016-07-01|85.0|-143.0|-11.34282|-5.92643 +2016-07-01|85.0|-144.0|-8.78537|-6.08019 +2016-07-01|85.0|-145.0|-6.47608|-6.16556 +2016-07-01|85.0|-146.0|-4.40331|-6.19518 +2016-07-01|85.0|-147.0|-2.55238|-6.18068 +2016-07-01|85.0|-148.0|-0.90699|-6.13221 +2016-07-01|85.0|-149.0|0.54964|-6.05832 +2016-07-01|85.0|-150.0|1.8341|-5.96604 +2016-07-01|85.0|-151.0|2.96226|-5.86097 +2016-07-01|85.0|-152.0|3.94904|-5.74754 +2016-07-01|85.0|-153.0|4.80822|-5.62918 +2016-07-01|85.0|-154.0|5.55243|-5.50852 +2016-07-01|85.0|-155.0|6.19319|-5.38754 +2016-07-01|85.0|-156.0|6.74088|-5.2677 +2016-07-01|85.0|-157.0|7.20492|-5.15008 +2016-07-01|85.0|-158.0|7.59378|-5.03544 +2016-07-01|85.0|-159.0|7.91509|-4.92429 +2016-07-01|85.0|-160.0|8.17574|-4.81699 +2016-07-01|85.0|-161.0|8.38194|-4.71374 +2016-07-01|85.0|-162.0|8.53931|-4.61464 +2016-07-01|85.0|-163.0|8.65295|-4.51972 +2016-07-01|85.0|-164.0|8.72747|-4.42895 +2016-07-01|85.0|-165.0|8.7671|-4.34225 +2016-07-01|85.0|-166.0|8.77567|-4.25954 +2016-07-01|85.0|-167.0|8.75673|-4.18069 +2016-07-01|85.0|-168.0|8.71353|-4.10556 +2016-07-01|85.0|-169.0|8.64909|-4.03402 +2016-07-01|85.0|-170.0|8.5662|-3.96592 +2016-07-01|85.0|-171.0|8.46748|-3.90111 +2016-07-01|85.0|-172.0|8.3554|-3.83945 +2016-07-01|85.0|-173.0|8.23227|-3.78079 +2016-07-01|85.0|-174.0|8.10031|-3.72499 +2016-07-01|85.0|-175.0|7.9616|-3.67192 +2016-07-01|85.0|-176.0|7.8182|-3.62143 +2016-07-01|85.0|-177.0|7.67205|-3.57339 +2016-07-01|85.0|-178.0|7.52507|-3.52768 +2016-07-01|85.0|-179.0|7.37912|-3.48416 +2016-07-01|86.0|0.0|-2.97032|0.75692 +2016-07-01|86.0|1.0|-2.10731|0.75448 +2016-07-01|86.0|2.0|-1.24453|0.75214 +2016-07-01|86.0|3.0|-0.382|0.74992 +2016-07-01|86.0|4.0|0.48024|0.7478 +2016-07-01|86.0|5.0|1.34218|0.74579 +2016-07-01|86.0|6.0|2.20379|0.74388 +2016-07-01|86.0|7.0|3.06503|0.74208 +2016-07-01|86.0|8.0|3.9259|0.74039 +2016-07-01|86.0|9.0|4.78635|0.7388 +2016-07-01|86.0|10.0|5.64636|0.73732 +2016-07-01|86.0|11.0|6.50591|0.73594 +2016-07-01|86.0|12.0|7.36497|0.73466 +2016-07-01|86.0|13.0|8.22351|0.73349 +2016-07-01|86.0|14.0|9.0815|0.73243 +2016-07-01|86.0|15.0|9.93892|0.73147 +2016-07-01|86.0|16.0|10.79573|0.73061 +2016-07-01|86.0|17.0|11.65191|0.72987 +2016-07-01|86.0|18.0|12.50743|0.72922 +2016-07-01|86.0|19.0|13.36225|0.72869 +2016-07-01|86.0|20.0|14.21636|0.72826 +2016-07-01|86.0|21.0|15.06971|0.72794 +2016-07-01|86.0|22.0|15.92228|0.72773 +2016-07-01|86.0|23.0|16.77403|0.72763 +2016-07-01|86.0|24.0|17.62494|0.72763 +2016-07-01|86.0|25.0|18.47497|0.72775 +2016-07-01|86.0|26.0|19.32408|0.72798 +2016-07-01|86.0|27.0|20.17225|0.72833 +2016-07-01|86.0|28.0|21.01943|0.72878 +2016-07-01|86.0|29.0|21.8656|0.72936 +2016-07-01|86.0|30.0|22.71071|0.73005 +2016-07-01|86.0|31.0|23.55473|0.73086 +2016-07-01|86.0|32.0|24.39762|0.73179 +2016-07-01|86.0|33.0|25.23935|0.73284 +2016-07-01|86.0|34.0|26.07987|0.73401 +2016-07-01|86.0|35.0|26.91915|0.73531 +2016-07-01|86.0|36.0|27.75713|0.73674 +2016-07-01|86.0|37.0|28.59379|0.73829 +2016-07-01|86.0|38.0|29.42907|0.73998 +2016-07-01|86.0|39.0|30.26294|0.7418 +2016-07-01|86.0|40.0|31.09534|0.74376 +2016-07-01|86.0|41.0|31.92623|0.74585 +2016-07-01|86.0|42.0|32.75557|0.74809 +2016-07-01|86.0|43.0|33.58329|0.75047 +2016-07-01|86.0|44.0|34.40936|0.75299 +2016-07-01|86.0|45.0|35.23371|0.75567 +2016-07-01|86.0|46.0|36.0563|0.7585 +2016-07-01|86.0|47.0|36.87707|0.76149 +2016-07-01|86.0|48.0|37.69596|0.76464 +2016-07-01|86.0|49.0|38.51292|0.76795 +2016-07-01|86.0|50.0|39.32788|0.77143 +2016-07-01|86.0|51.0|40.14078|0.77508 +2016-07-01|86.0|52.0|40.95155|0.77891 +2016-07-01|86.0|53.0|41.76014|0.78292 +2016-07-01|86.0|54.0|42.56647|0.78711 +2016-07-01|86.0|55.0|43.37046|0.79149 +2016-07-01|86.0|56.0|44.17205|0.79607 +2016-07-01|86.0|57.0|44.97117|0.80085 +2016-07-01|86.0|58.0|45.76772|0.80584 +2016-07-01|86.0|59.0|46.56164|0.81103 +2016-07-01|86.0|60.0|47.35283|0.81645 +2016-07-01|86.0|61.0|48.1412|0.82209 +2016-07-01|86.0|62.0|48.92668|0.82796 +2016-07-01|86.0|63.0|49.70916|0.83406 +2016-07-01|86.0|64.0|50.48855|0.84042 +2016-07-01|86.0|65.0|51.26474|0.84702 +2016-07-01|86.0|66.0|52.03763|0.85389 +2016-07-01|86.0|67.0|52.80712|0.86102 +2016-07-01|86.0|68.0|53.57308|0.86843 +2016-07-01|86.0|69.0|54.3354|0.87613 +2016-07-01|86.0|70.0|55.09396|0.88412 +2016-07-01|86.0|71.0|55.84863|0.89241 +2016-07-01|86.0|72.0|56.59927|0.90102 +2016-07-01|86.0|73.0|57.34575|0.90996 +2016-07-01|86.0|74.0|58.08793|0.91923 +2016-07-01|86.0|75.0|58.82565|0.92885 +2016-07-01|86.0|76.0|59.55875|0.93883 +2016-07-01|86.0|77.0|60.28708|0.94918 +2016-07-01|86.0|78.0|61.01046|0.95992 +2016-07-01|86.0|79.0|61.72871|0.97105 +2016-07-01|86.0|80.0|62.44164|0.9826 +2016-07-01|86.0|81.0|63.14906|0.99458 +2016-07-01|86.0|82.0|63.85077|1.007 +2016-07-01|86.0|83.0|64.54656|1.01987 +2016-07-01|86.0|84.0|65.23619|1.03322 +2016-07-01|86.0|85.0|65.91943|1.04707 +2016-07-01|86.0|86.0|66.59604|1.06142 +2016-07-01|86.0|87.0|67.26576|1.07631 +2016-07-01|86.0|88.0|67.92832|1.09174 +2016-07-01|86.0|89.0|68.58344|1.10774 +2016-07-01|86.0|90.0|69.23081|1.12433 +2016-07-01|86.0|91.0|69.87012|1.14152 +2016-07-01|86.0|92.0|70.50106|1.15935 +2016-07-01|86.0|93.0|71.12326|1.17784 +2016-07-01|86.0|94.0|71.73636|1.19701 +2016-07-01|86.0|95.0|72.33999|1.21688 +2016-07-01|86.0|96.0|72.93373|1.23747 +2016-07-01|86.0|97.0|73.51716|1.25883 +2016-07-01|86.0|98.0|74.08983|1.28096 +2016-07-01|86.0|99.0|74.65128|1.3039 +2016-07-01|86.0|100.0|75.20099|1.32767 +2016-07-01|86.0|101.0|75.73844|1.35231 +2016-07-01|86.0|102.0|76.26308|1.37783 +2016-07-01|86.0|103.0|76.77431|1.40428 +2016-07-01|86.0|104.0|77.27152|1.43167 +2016-07-01|86.0|105.0|77.75404|1.46003 +2016-07-01|86.0|106.0|78.22117|1.48938 +2016-07-01|86.0|107.0|78.67218|1.51977 +2016-07-01|86.0|108.0|79.10629|1.5512 +2016-07-01|86.0|109.0|79.52266|1.58369 +2016-07-01|86.0|110.0|79.92043|1.61728 +2016-07-01|86.0|111.0|80.29865|1.65197 +2016-07-01|86.0|112.0|80.65635|1.68778 +2016-07-01|86.0|113.0|80.99248|1.72471 +2016-07-01|86.0|114.0|81.30592|1.76276 +2016-07-01|86.0|115.0|81.5955|1.80193 +2016-07-01|86.0|116.0|81.85998|1.84219 +2016-07-01|86.0|117.0|82.09802|1.88353 +2016-07-01|86.0|118.0|82.30823|1.9259 +2016-07-01|86.0|119.0|82.48912|1.96924 +2016-07-01|86.0|120.0|82.63912|2.01348 +2016-07-01|86.0|121.0|82.75655|2.05852 +2016-07-01|86.0|122.0|82.83965|2.10423 +2016-07-01|86.0|123.0|82.88656|2.15047 +2016-07-01|86.0|124.0|82.89532|2.19705 +2016-07-01|86.0|125.0|82.86386|2.24373 +2016-07-01|86.0|126.0|82.78999|2.29025 +2016-07-01|86.0|127.0|82.67146|2.33626 +2016-07-01|86.0|128.0|82.50586|2.38137 +2016-07-01|86.0|129.0|82.29072|2.42512 +2016-07-01|86.0|130.0|82.02347|2.46697 +2016-07-01|86.0|131.0|81.70147|2.50626 +2016-07-01|86.0|132.0|81.32199|2.54228 +2016-07-01|86.0|133.0|80.88227|2.57415 +2016-07-01|86.0|134.0|80.37954|2.60093 +2016-07-01|86.0|135.0|79.81104|2.62149 +2016-07-01|86.0|136.0|79.17406|2.6346 +2016-07-01|86.0|137.0|78.46599|2.63887 +2016-07-01|86.0|138.0|77.68442|2.63279 +2016-07-01|86.0|139.0|76.82714|2.61468 +2016-07-01|86.0|140.0|75.89228|2.58276 +2016-07-01|86.0|141.0|74.87838|2.53515 +2016-07-01|86.0|142.0|73.78448|2.4699 +2016-07-01|86.0|143.0|72.61025|2.38504 +2016-07-01|86.0|144.0|71.35607|2.27864 +2016-07-01|86.0|145.0|70.02317|2.14889 +2016-07-01|86.0|146.0|68.61371|1.99418 +2016-07-01|86.0|147.0|67.13087|1.81319 +2016-07-01|86.0|148.0|65.57892|1.60499 +2016-07-01|86.0|149.0|63.96324|1.36916 +2016-07-01|86.0|150.0|62.29028|1.10582 +2016-07-01|86.0|151.0|60.56759|0.81572 +2016-07-01|86.0|152.0|58.80362|0.50028 +2016-07-01|86.0|153.0|57.00762|0.16155 +2016-07-01|86.0|154.0|55.18943|-0.19782 +2016-07-01|86.0|155.0|53.35924|-0.57467 +2016-07-01|86.0|156.0|51.52734|-0.96547 +2016-07-01|86.0|157.0|49.70386|-1.36645 +2016-07-01|86.0|158.0|47.8985|-1.7738 +2016-07-01|86.0|159.0|46.12031|-2.18378 +2016-07-01|86.0|160.0|44.37748|-2.59292 +2016-07-01|86.0|161.0|42.6772|-2.9981 +2016-07-01|86.0|162.0|41.02554|-3.39668 +2016-07-01|86.0|163.0|39.4274|-3.78653 +2016-07-01|86.0|164.0|37.88648|-4.16606 +2016-07-01|86.0|165.0|36.40535|-4.53422 +2016-07-01|86.0|166.0|34.98544|-4.89048 +2016-07-01|86.0|167.0|33.62717|-5.23475 +2016-07-01|86.0|168.0|32.33004|-5.56736 +2016-07-01|86.0|169.0|31.09269|-5.88899 +2016-07-01|86.0|170.0|29.91302|-6.2006 +2016-07-01|86.0|171.0|28.7883|-6.50338 +2016-07-01|86.0|172.0|27.71522|-6.79871 +2016-07-01|86.0|173.0|26.69|-7.08809 +2016-07-01|86.0|174.0|25.70841|-7.37316 +2016-07-01|86.0|175.0|24.76583|-7.65559 +2016-07-01|86.0|176.0|23.85729|-7.93715 +2016-07-01|86.0|177.0|22.97747|-8.21964 +2016-07-01|86.0|178.0|22.12072|-8.50489 +2016-07-01|86.0|179.0|21.28102|-8.79477 +2016-07-01|86.0|-1.0|-3.83354|0.75947 +2016-07-01|86.0|-2.0|-4.69694|0.76212 +2016-07-01|86.0|-3.0|-5.56049|0.76489 +2016-07-01|86.0|-4.0|-6.42417|0.76777 +2016-07-01|86.0|-5.0|-7.28796|0.77077 +2016-07-01|86.0|-6.0|-8.15183|0.77387 +2016-07-01|86.0|-7.0|-9.01575|0.77709 +2016-07-01|86.0|-8.0|-9.87971|0.78043 +2016-07-01|86.0|-9.0|-10.74366|0.78388 +2016-07-01|86.0|-10.0|-11.60761|0.78745 +2016-07-01|86.0|-11.0|-12.4715|0.79114 +2016-07-01|86.0|-12.0|-13.33533|0.79495 +2016-07-01|86.0|-13.0|-14.19906|0.79889 +2016-07-01|86.0|-14.0|-15.06268|0.80295 +2016-07-01|86.0|-15.0|-15.92615|0.80713 +2016-07-01|86.0|-16.0|-16.78945|0.81144 +2016-07-01|86.0|-17.0|-17.65256|0.81588 +2016-07-01|86.0|-18.0|-18.51545|0.82046 +2016-07-01|86.0|-19.0|-19.37809|0.82516 +2016-07-01|86.0|-20.0|-20.24046|0.83001 +2016-07-01|86.0|-21.0|-21.10253|0.83499 +2016-07-01|86.0|-22.0|-21.96427|0.84011 +2016-07-01|86.0|-23.0|-22.82567|0.84537 +2016-07-01|86.0|-24.0|-23.68669|0.85078 +2016-07-01|86.0|-25.0|-24.5473|0.85634 +2016-07-01|86.0|-26.0|-25.40748|0.86205 +2016-07-01|86.0|-27.0|-26.2672|0.86791 +2016-07-01|86.0|-28.0|-27.12643|0.87393 +2016-07-01|86.0|-29.0|-27.98514|0.88011 +2016-07-01|86.0|-30.0|-28.84332|0.88645 +2016-07-01|86.0|-31.0|-29.70091|0.89296 +2016-07-01|86.0|-32.0|-30.5579|0.89964 +2016-07-01|86.0|-33.0|-31.41426|0.90649 +2016-07-01|86.0|-34.0|-32.26995|0.91352 +2016-07-01|86.0|-35.0|-33.12495|0.92074 +2016-07-01|86.0|-36.0|-33.97922|0.92813 +2016-07-01|86.0|-37.0|-34.83273|0.93572 +2016-07-01|86.0|-38.0|-35.68545|0.9435 +2016-07-01|86.0|-39.0|-36.53735|0.95148 +2016-07-01|86.0|-40.0|-37.38838|0.95966 +2016-07-01|86.0|-41.0|-38.23852|0.96805 +2016-07-01|86.0|-42.0|-39.08774|0.97666 +2016-07-01|86.0|-43.0|-39.93598|0.98548 +2016-07-01|86.0|-44.0|-40.78323|0.99452 +2016-07-01|86.0|-45.0|-41.62944|1.0038 +2016-07-01|86.0|-46.0|-42.47456|1.01331 +2016-07-01|86.0|-47.0|-43.31858|1.02307 +2016-07-01|86.0|-48.0|-44.16143|1.03307 +2016-07-01|86.0|-49.0|-45.00308|1.04333 +2016-07-01|86.0|-50.0|-45.8435|1.05385 +2016-07-01|86.0|-51.0|-46.68263|1.06464 +2016-07-01|86.0|-52.0|-47.52043|1.0757 +2016-07-01|86.0|-53.0|-48.35685|1.08705 +2016-07-01|86.0|-54.0|-49.19185|1.09869 +2016-07-01|86.0|-55.0|-50.02538|1.11064 +2016-07-01|86.0|-56.0|-50.85739|1.12289 +2016-07-01|86.0|-57.0|-51.68783|1.13546 +2016-07-01|86.0|-58.0|-52.51664|1.14836 +2016-07-01|86.0|-59.0|-53.34377|1.1616 +2016-07-01|86.0|-60.0|-54.16917|1.17518 +2016-07-01|86.0|-61.0|-54.99277|1.18912 +2016-07-01|86.0|-62.0|-55.81452|1.20344 +2016-07-01|86.0|-63.0|-56.63436|1.21813 +2016-07-01|86.0|-64.0|-57.45221|1.23322 +2016-07-01|86.0|-65.0|-58.26802|1.24872 +2016-07-01|86.0|-66.0|-59.08172|1.26463 +2016-07-01|86.0|-67.0|-59.89323|1.28098 +2016-07-01|86.0|-68.0|-60.70248|1.29777 +2016-07-01|86.0|-69.0|-61.5094|1.31503 +2016-07-01|86.0|-70.0|-62.3139|1.33276 +2016-07-01|86.0|-71.0|-63.11591|1.35099 +2016-07-01|86.0|-72.0|-63.91533|1.36973 +2016-07-01|86.0|-73.0|-64.71208|1.389 +2016-07-01|86.0|-74.0|-65.50608|1.40881 +2016-07-01|86.0|-75.0|-66.29721|1.4292 +2016-07-01|86.0|-76.0|-67.08538|1.45017 +2016-07-01|86.0|-77.0|-67.87048|1.47174 +2016-07-01|86.0|-78.0|-68.65242|1.49395 +2016-07-01|86.0|-79.0|-69.43106|1.51682 +2016-07-01|86.0|-80.0|-70.20629|1.54036 +2016-07-01|86.0|-81.0|-70.978|1.56461 +2016-07-01|86.0|-82.0|-71.74604|1.58958 +2016-07-01|86.0|-83.0|-72.51028|1.61532 +2016-07-01|86.0|-84.0|-73.27058|1.64185 +2016-07-01|86.0|-85.0|-74.02678|1.6692 +2016-07-01|86.0|-86.0|-74.77873|1.6974 +2016-07-01|86.0|-87.0|-75.52626|1.72649 +2016-07-01|86.0|-88.0|-76.2692|1.75651 +2016-07-01|86.0|-89.0|-77.00735|1.78749 +2016-07-01|86.0|-90.0|-77.74054|1.81947 +2016-07-01|86.0|-91.0|-78.46855|1.85249 +2016-07-01|86.0|-92.0|-79.19116|1.88661 +2016-07-01|86.0|-93.0|-79.90816|1.92186 +2016-07-01|86.0|-94.0|-80.61929|1.9583 +2016-07-01|86.0|-95.0|-81.32429|1.99598 +2016-07-01|86.0|-96.0|-82.02291|2.03495 +2016-07-01|86.0|-97.0|-82.71484|2.07528 +2016-07-01|86.0|-98.0|-83.39978|2.11702 +2016-07-01|86.0|-99.0|-84.07741|2.16024 +2016-07-01|86.0|-100.0|-84.74738|2.20501 +2016-07-01|86.0|-101.0|-85.40932|2.25139 +2016-07-01|86.0|-102.0|-86.06282|2.29948 +2016-07-01|86.0|-103.0|-86.70748|2.34934 +2016-07-01|86.0|-104.0|-87.34283|2.40107 +2016-07-01|86.0|-105.0|-87.96839|2.45475 +2016-07-01|86.0|-106.0|-88.58364|2.51049 +2016-07-01|86.0|-107.0|-89.18801|2.56837 +2016-07-01|86.0|-108.0|-89.78092|2.62852 +2016-07-01|86.0|-109.0|-90.36169|2.69104 +2016-07-01|86.0|-110.0|-90.92963|2.75605 +2016-07-01|86.0|-111.0|-91.48399|2.82368 +2016-07-01|86.0|-112.0|-92.02392|2.89406 +2016-07-01|86.0|-113.0|-92.54855|2.96733 +2016-07-01|86.0|-114.0|-93.05689|3.04364 +2016-07-01|86.0|-115.0|-93.54789|3.12314 +2016-07-01|86.0|-116.0|-94.02037|3.20598 +2016-07-01|86.0|-117.0|-94.47308|3.29234 +2016-07-01|86.0|-118.0|-94.90463|3.38238 +2016-07-01|86.0|-119.0|-95.31347|3.47628 +2016-07-01|86.0|-120.0|-95.69793|3.57422 +2016-07-01|86.0|-121.0|-96.05615|3.67636 +2016-07-01|86.0|-122.0|-96.38606|3.78289 +2016-07-01|86.0|-123.0|-96.68538|3.89398 +2016-07-01|86.0|-124.0|-96.95157|4.00977 +2016-07-01|86.0|-125.0|-97.18177|4.13039 +2016-07-01|86.0|-126.0|-97.37281|4.25594 +2016-07-01|86.0|-127.0|-97.52114|4.38647 +2016-07-01|86.0|-128.0|-97.62272|4.52197 +2016-07-01|86.0|-129.0|-97.67303|4.66233 +2016-07-01|86.0|-130.0|-97.66693|4.80732 +2016-07-01|86.0|-131.0|-97.59859|4.95652 +2016-07-01|86.0|-132.0|-97.46136|5.1093 +2016-07-01|86.0|-133.0|-97.24764|5.26471 +2016-07-01|86.0|-134.0|-96.94871|5.42138 +2016-07-01|86.0|-135.0|-96.55454|5.57737 +2016-07-01|86.0|-136.0|-96.05358|5.72997 +2016-07-01|86.0|-137.0|-95.43247|5.87549 +2016-07-01|86.0|-138.0|-94.67574|6.00885 +2016-07-01|86.0|-139.0|-93.76549|6.1232 +2016-07-01|86.0|-140.0|-92.68099|6.20929 +2016-07-01|86.0|-141.0|-91.39827|6.25473 +2016-07-01|86.0|-142.0|-89.8898|6.24311 +2016-07-01|86.0|-143.0|-88.12418|6.15284 +2016-07-01|86.0|-144.0|-86.06611|5.95602 +2016-07-01|86.0|-145.0|-83.6768|5.61739 +2016-07-01|86.0|-146.0|-80.91507|5.09388 +2016-07-01|86.0|-147.0|-77.73979|4.33562 +2016-07-01|86.0|-148.0|-74.11392|3.28972 +2016-07-01|86.0|-149.0|-70.01089|1.90839 +2016-07-01|86.0|-150.0|-65.42335|0.16268 +2016-07-01|86.0|-151.0|-60.37323|-1.93894 +2016-07-01|86.0|-152.0|-54.92082|-4.33254 +2016-07-01|86.0|-153.0|-49.16871|-6.89077 +2016-07-01|86.0|-154.0|-43.25638|-9.43593 +2016-07-01|86.0|-155.0|-37.34428|-11.77575 +2016-07-01|86.0|-156.0|-31.59085|-13.74938 +2016-07-01|86.0|-157.0|-26.13033|-15.26203 +2016-07-01|86.0|-158.0|-21.05833|-16.29395 +2016-07-01|86.0|-159.0|-16.42823|-16.88558 +2016-07-01|86.0|-160.0|-12.25622|-17.11175 +2016-07-01|86.0|-161.0|-8.53074|-17.05769 +2016-07-01|86.0|-162.0|-5.22254|-16.80308 +2016-07-01|86.0|-163.0|-2.293|-16.41436 +2016-07-01|86.0|-164.0|0.29988|-15.94293 +2016-07-01|86.0|-165.0|2.59771|-15.42641 +2016-07-01|86.0|-166.0|4.63956|-14.89117 +2016-07-01|86.0|-167.0|6.461|-14.35497 +2016-07-01|86.0|-168.0|8.09375|-13.82926 +2016-07-01|86.0|-169.0|9.56582|-13.32099 +2016-07-01|86.0|-170.0|10.90175|-12.83402 +2016-07-01|86.0|-171.0|12.12307|-12.37008 +2016-07-01|86.0|-172.0|13.24862|-11.92948 +2016-07-01|86.0|-173.0|14.29495|-11.51162 +2016-07-01|86.0|-174.0|15.27669|-11.11529 +2016-07-01|86.0|-175.0|16.20682|-10.73892 +2016-07-01|86.0|-176.0|17.09692|-10.38074 +2016-07-01|86.0|-177.0|17.95743|-10.03883 +2016-07-01|86.0|-178.0|18.7978|-9.71124 +2016-07-01|86.0|-179.0|19.62665|-9.39601 +2016-07-01|87.0|0.0|-3.0045|0.86683 +2016-07-01|87.0|1.0|-2.12152|0.86464 +2016-07-01|87.0|2.0|-1.23874|0.86256 +2016-07-01|87.0|3.0|-0.35617|0.8606 +2016-07-01|87.0|4.0|0.52618|0.85874 +2016-07-01|87.0|5.0|1.40828|0.85698 +2016-07-01|87.0|6.0|2.29013|0.85534 +2016-07-01|87.0|7.0|3.17172|0.85381 +2016-07-01|87.0|8.0|4.05302|0.85238 +2016-07-01|87.0|9.0|4.93403|0.85106 +2016-07-01|87.0|10.0|5.81472|0.84985 +2016-07-01|87.0|11.0|6.69509|0.84875 +2016-07-01|87.0|12.0|7.57512|0.84776 +2016-07-01|87.0|13.0|8.4548|0.84687 +2016-07-01|87.0|14.0|9.33411|0.8461 +2016-07-01|87.0|15.0|10.21303|0.84543 +2016-07-01|87.0|16.0|11.09155|0.84487 +2016-07-01|87.0|17.0|11.96965|0.84442 +2016-07-01|87.0|18.0|12.84732|0.84409 +2016-07-01|87.0|19.0|13.72455|0.84386 +2016-07-01|87.0|20.0|14.60131|0.84375 +2016-07-01|87.0|21.0|15.47759|0.84374 +2016-07-01|87.0|22.0|16.35338|0.84385 +2016-07-01|87.0|23.0|17.22865|0.84408 +2016-07-01|87.0|24.0|18.1034|0.84442 +2016-07-01|87.0|25.0|18.9776|0.84487 +2016-07-01|87.0|26.0|19.85124|0.84544 +2016-07-01|87.0|27.0|20.7243|0.84613 +2016-07-01|87.0|28.0|21.59677|0.84694 +2016-07-01|87.0|29.0|22.46861|0.84787 +2016-07-01|87.0|30.0|23.33983|0.84892 +2016-07-01|87.0|31.0|24.2104|0.85009 +2016-07-01|87.0|32.0|25.0803|0.85138 +2016-07-01|87.0|33.0|25.94951|0.85281 +2016-07-01|87.0|34.0|26.81801|0.85435 +2016-07-01|87.0|35.0|27.68579|0.85603 +2016-07-01|87.0|36.0|28.55283|0.85784 +2016-07-01|87.0|37.0|29.4191|0.85978 +2016-07-01|87.0|38.0|30.28459|0.86186 +2016-07-01|87.0|39.0|31.14928|0.86407 +2016-07-01|87.0|40.0|32.01314|0.86642 +2016-07-01|87.0|41.0|32.87616|0.86891 +2016-07-01|87.0|42.0|33.73832|0.87155 +2016-07-01|87.0|43.0|34.59958|0.87433 +2016-07-01|87.0|44.0|35.45994|0.87726 +2016-07-01|87.0|45.0|36.31937|0.88034 +2016-07-01|87.0|46.0|37.17785|0.88358 +2016-07-01|87.0|47.0|38.03535|0.88697 +2016-07-01|87.0|48.0|38.89185|0.89052 +2016-07-01|87.0|49.0|39.74734|0.89424 +2016-07-01|87.0|50.0|40.60178|0.89812 +2016-07-01|87.0|51.0|41.45515|0.90217 +2016-07-01|87.0|52.0|42.30742|0.9064 +2016-07-01|87.0|53.0|43.15858|0.9108 +2016-07-01|87.0|54.0|44.0086|0.91538 +2016-07-01|87.0|55.0|44.85744|0.92015 +2016-07-01|87.0|56.0|45.7051|0.9251 +2016-07-01|87.0|57.0|46.55153|0.93025 +2016-07-01|87.0|58.0|47.39671|0.9356 +2016-07-01|87.0|59.0|48.24062|0.94115 +2016-07-01|87.0|60.0|49.08323|0.9469 +2016-07-01|87.0|61.0|49.9245|0.95287 +2016-07-01|87.0|62.0|50.76442|0.95906 +2016-07-01|87.0|63.0|51.60294|0.96547 +2016-07-01|87.0|64.0|52.44005|0.9721 +2016-07-01|87.0|65.0|53.27571|0.97898 +2016-07-01|87.0|66.0|54.10989|0.98609 +2016-07-01|87.0|67.0|54.94257|0.99345 +2016-07-01|87.0|68.0|55.7737|1.00106 +2016-07-01|87.0|69.0|56.60326|1.00893 +2016-07-01|87.0|70.0|57.43121|1.01707 +2016-07-01|87.0|71.0|58.25753|1.02548 +2016-07-01|87.0|72.0|59.08218|1.03418 +2016-07-01|87.0|73.0|59.90512|1.04316 +2016-07-01|87.0|74.0|60.72632|1.05244 +2016-07-01|87.0|75.0|61.54575|1.06203 +2016-07-01|87.0|76.0|62.36338|1.07193 +2016-07-01|87.0|77.0|63.17915|1.08216 +2016-07-01|87.0|78.0|63.99305|1.09272 +2016-07-01|87.0|79.0|64.80504|1.10362 +2016-07-01|87.0|80.0|65.61507|1.11488 +2016-07-01|87.0|81.0|66.42311|1.1265 +2016-07-01|87.0|82.0|67.22913|1.13849 +2016-07-01|87.0|83.0|68.03308|1.15087 +2016-07-01|87.0|84.0|68.83493|1.16365 +2016-07-01|87.0|85.0|69.63464|1.17684 +2016-07-01|87.0|86.0|70.43218|1.19045 +2016-07-01|87.0|87.0|71.2275|1.20449 +2016-07-01|87.0|88.0|72.02056|1.21899 +2016-07-01|87.0|89.0|72.81133|1.23394 +2016-07-01|87.0|90.0|73.59977|1.24938 +2016-07-01|87.0|91.0|74.38584|1.2653 +2016-07-01|87.0|92.0|75.1695|1.28174 +2016-07-01|87.0|93.0|75.95072|1.2987 +2016-07-01|87.0|94.0|76.72946|1.3162 +2016-07-01|87.0|95.0|77.50568|1.33426 +2016-07-01|87.0|96.0|78.27934|1.3529 +2016-07-01|87.0|97.0|79.05041|1.37213 +2016-07-01|87.0|98.0|79.81886|1.39198 +2016-07-01|87.0|99.0|80.58466|1.41246 +2016-07-01|87.0|100.0|81.34776|1.43361 +2016-07-01|87.0|101.0|82.10814|1.45543 +2016-07-01|87.0|102.0|82.86578|1.47795 +2016-07-01|87.0|103.0|83.62064|1.50119 +2016-07-01|87.0|104.0|84.3727|1.52518 +2016-07-01|87.0|105.0|85.12194|1.54995 +2016-07-01|87.0|106.0|85.86834|1.57552 +2016-07-01|87.0|107.0|86.61189|1.60191 +2016-07-01|87.0|108.0|87.35256|1.62916 +2016-07-01|87.0|109.0|88.09036|1.65729 +2016-07-01|87.0|110.0|88.82528|1.68634 +2016-07-01|87.0|111.0|89.55731|1.71633 +2016-07-01|87.0|112.0|90.28647|1.7473 +2016-07-01|87.0|113.0|91.01277|1.77929 +2016-07-01|87.0|114.0|91.73622|1.81231 +2016-07-01|87.0|115.0|92.45685|1.84643 +2016-07-01|87.0|116.0|93.1747|1.88166 +2016-07-01|87.0|117.0|93.88981|1.91805 +2016-07-01|87.0|118.0|94.60222|1.95563 +2016-07-01|87.0|119.0|95.312|1.99446 +2016-07-01|87.0|120.0|96.01923|2.03458 +2016-07-01|87.0|121.0|96.72399|2.07602 +2016-07-01|87.0|122.0|97.42638|2.11884 +2016-07-01|87.0|123.0|98.12652|2.16309 +2016-07-01|87.0|124.0|98.82453|2.20881 +2016-07-01|87.0|125.0|99.52057|2.25606 +2016-07-01|87.0|126.0|100.21481|2.30489 +2016-07-01|87.0|127.0|100.90744|2.35537 +2016-07-01|87.0|128.0|101.59866|2.40754 +2016-07-01|87.0|129.0|102.28872|2.46147 +2016-07-01|87.0|130.0|102.97788|2.51722 +2016-07-01|87.0|131.0|103.66643|2.57487 +2016-07-01|87.0|132.0|104.35471|2.63448 +2016-07-01|87.0|133.0|105.04307|2.69612 +2016-07-01|87.0|134.0|105.73191|2.75988 +2016-07-01|87.0|135.0|106.42166|2.82582 +2016-07-01|87.0|136.0|107.11282|2.89405 +2016-07-01|87.0|137.0|107.80591|2.96463 +2016-07-01|87.0|138.0|108.5015|3.03767 +2016-07-01|87.0|139.0|109.20023|3.11327 +2016-07-01|87.0|140.0|109.90279|3.19152 +2016-07-01|87.0|141.0|110.60993|3.27254 +2016-07-01|87.0|142.0|111.32248|3.35644 +2016-07-01|87.0|143.0|112.04133|3.44334 +2016-07-01|87.0|144.0|112.76744|3.53337 +2016-07-01|87.0|145.0|113.50188|3.62667 +2016-07-01|87.0|146.0|114.24577|3.72337 +2016-07-01|87.0|147.0|115.00035|3.82364 +2016-07-01|87.0|148.0|115.76694|3.92762 +2016-07-01|87.0|149.0|116.54698|4.0355 +2016-07-01|87.0|150.0|117.342|4.14745 +2016-07-01|87.0|151.0|118.15367|4.26367 +2016-07-01|87.0|152.0|118.98376|4.38435 +2016-07-01|87.0|153.0|119.83415|4.50969 +2016-07-01|87.0|154.0|120.70689|4.63993 +2016-07-01|87.0|155.0|121.60413|4.77528 +2016-07-01|87.0|156.0|122.52816|4.91598 +2016-07-01|87.0|157.0|123.4814|5.06226 +2016-07-01|87.0|158.0|124.46643|5.21435 +2016-07-01|87.0|159.0|125.48593|5.37249 +2016-07-01|87.0|160.0|126.54273|5.5369 +2016-07-01|87.0|161.0|127.63977|5.70777 +2016-07-01|87.0|162.0|128.78009|5.88529 +2016-07-01|87.0|163.0|129.96682|6.06958 +2016-07-01|87.0|164.0|131.20317|6.26073 +2016-07-01|87.0|165.0|132.49237|6.45874 +2016-07-01|87.0|166.0|133.83766|6.66353 +2016-07-01|87.0|167.0|135.24221|6.8749 +2016-07-01|87.0|168.0|136.70912|7.09252 +2016-07-01|87.0|169.0|138.24131|7.31586 +2016-07-01|87.0|170.0|139.84146|7.54422 +2016-07-01|87.0|171.0|141.5119|7.77664 +2016-07-01|87.0|172.0|143.25457|8.01191 +2016-07-01|87.0|173.0|145.07085|8.24854 +2016-07-01|87.0|174.0|146.9615|8.48472 +2016-07-01|87.0|175.0|148.9265|8.71833 +2016-07-01|87.0|176.0|150.965|8.94693 +2016-07-01|87.0|177.0|153.07515|9.16781 +2016-07-01|87.0|178.0|155.25408|9.37802 +2016-07-01|87.0|179.0|157.49779|9.57444 +2016-07-01|87.0|-1.0|-3.88766|0.86913 +2016-07-01|87.0|-2.0|-4.77099|0.87154 +2016-07-01|87.0|-3.0|-5.65448|0.87405 +2016-07-01|87.0|-4.0|-6.53811|0.87669 +2016-07-01|87.0|-5.0|-7.42187|0.87943 +2016-07-01|87.0|-6.0|-8.30575|0.88229 +2016-07-01|87.0|-7.0|-9.18973|0.88525 +2016-07-01|87.0|-8.0|-10.0738|0.88834 +2016-07-01|87.0|-9.0|-10.95795|0.89154 +2016-07-01|87.0|-10.0|-11.84216|0.89486 +2016-07-01|87.0|-11.0|-12.72642|0.89829 +2016-07-01|87.0|-12.0|-13.61072|0.90184 +2016-07-01|87.0|-13.0|-14.49505|0.90551 +2016-07-01|87.0|-14.0|-15.37939|0.90931 +2016-07-01|87.0|-15.0|-16.26372|0.91322 +2016-07-01|87.0|-16.0|-17.14804|0.91726 +2016-07-01|87.0|-17.0|-18.03234|0.92142 +2016-07-01|87.0|-18.0|-18.9166|0.92571 +2016-07-01|87.0|-19.0|-19.80081|0.93013 +2016-07-01|87.0|-20.0|-20.68495|0.93468 +2016-07-01|87.0|-21.0|-21.56902|0.93935 +2016-07-01|87.0|-22.0|-22.453|0.94416 +2016-07-01|87.0|-23.0|-23.33687|0.94911 +2016-07-01|87.0|-24.0|-24.22064|0.95419 +2016-07-01|87.0|-25.0|-25.10428|0.95941 +2016-07-01|87.0|-26.0|-25.98778|0.96477 +2016-07-01|87.0|-27.0|-26.87112|0.97027 +2016-07-01|87.0|-28.0|-27.75431|0.97592 +2016-07-01|87.0|-29.0|-28.63732|0.98171 +2016-07-01|87.0|-30.0|-29.52015|0.98765 +2016-07-01|87.0|-31.0|-30.40278|0.99375 +2016-07-01|87.0|-32.0|-31.28519|1.0 +2016-07-01|87.0|-33.0|-32.16739|1.0064 +2016-07-01|87.0|-34.0|-33.04935|1.01297 +2016-07-01|87.0|-35.0|-33.93106|1.01969 +2016-07-01|87.0|-36.0|-34.81252|1.02658 +2016-07-01|87.0|-37.0|-35.6937|1.03364 +2016-07-01|87.0|-38.0|-36.5746|1.04087 +2016-07-01|87.0|-39.0|-37.45521|1.04828 +2016-07-01|87.0|-40.0|-38.33552|1.05586 +2016-07-01|87.0|-41.0|-39.21551|1.06363 +2016-07-01|87.0|-42.0|-40.09517|1.07158 +2016-07-01|87.0|-43.0|-40.97449|1.07971 +2016-07-01|87.0|-44.0|-41.85347|1.08804 +2016-07-01|87.0|-45.0|-42.73208|1.09657 +2016-07-01|87.0|-46.0|-43.61032|1.1053 +2016-07-01|87.0|-47.0|-44.48817|1.11423 +2016-07-01|87.0|-48.0|-45.36563|1.12336 +2016-07-01|87.0|-49.0|-46.24269|1.13272 +2016-07-01|87.0|-50.0|-47.11933|1.14229 +2016-07-01|87.0|-51.0|-47.99555|1.15208 +2016-07-01|87.0|-52.0|-48.87133|1.1621 +2016-07-01|87.0|-53.0|-49.74666|1.17235 +2016-07-01|87.0|-54.0|-50.62154|1.18284 +2016-07-01|87.0|-55.0|-51.49595|1.19357 +2016-07-01|87.0|-56.0|-52.36989|1.20456 +2016-07-01|87.0|-57.0|-53.24334|1.21579 +2016-07-01|87.0|-58.0|-54.1163|1.22729 +2016-07-01|87.0|-59.0|-54.98876|1.23905 +2016-07-01|87.0|-60.0|-55.8607|1.25109 +2016-07-01|87.0|-61.0|-56.73213|1.26341 +2016-07-01|87.0|-62.0|-57.60303|1.27602 +2016-07-01|87.0|-63.0|-58.4734|1.28892 +2016-07-01|87.0|-64.0|-59.34322|1.30212 +2016-07-01|87.0|-65.0|-60.2125|1.31563 +2016-07-01|87.0|-66.0|-61.08122|1.32945 +2016-07-01|87.0|-67.0|-61.94938|1.34361 +2016-07-01|87.0|-68.0|-62.81697|1.35809 +2016-07-01|87.0|-69.0|-63.68399|1.37292 +2016-07-01|87.0|-70.0|-64.55044|1.3881 +2016-07-01|87.0|-71.0|-65.41631|1.40364 +2016-07-01|87.0|-72.0|-66.2816|1.41956 +2016-07-01|87.0|-73.0|-67.1463|1.43585 +2016-07-01|87.0|-74.0|-68.01042|1.45253 +2016-07-01|87.0|-75.0|-68.87395|1.46962 +2016-07-01|87.0|-76.0|-69.7369|1.48712 +2016-07-01|87.0|-77.0|-70.59926|1.50504 +2016-07-01|87.0|-78.0|-71.46104|1.52341 +2016-07-01|87.0|-79.0|-72.32224|1.54222 +2016-07-01|87.0|-80.0|-73.18286|1.56149 +2016-07-01|87.0|-81.0|-74.04292|1.58125 +2016-07-01|87.0|-82.0|-74.90241|1.60149 +2016-07-01|87.0|-83.0|-75.76135|1.62223 +2016-07-01|87.0|-84.0|-76.61975|1.6435 +2016-07-01|87.0|-85.0|-77.47761|1.6653 +2016-07-01|87.0|-86.0|-78.33496|1.68766 +2016-07-01|87.0|-87.0|-79.19181|1.71058 +2016-07-01|87.0|-88.0|-80.04817|1.7341 +2016-07-01|87.0|-89.0|-80.90407|1.75821 +2016-07-01|87.0|-90.0|-81.75953|1.78296 +2016-07-01|87.0|-91.0|-82.61457|1.80834 +2016-07-01|87.0|-92.0|-83.46922|1.8344 +2016-07-01|87.0|-93.0|-84.32351|1.86114 +2016-07-01|87.0|-94.0|-85.17748|1.88859 +2016-07-01|87.0|-95.0|-86.03117|1.91677 +2016-07-01|87.0|-96.0|-86.88461|1.94571 +2016-07-01|87.0|-97.0|-87.73785|1.97544 +2016-07-01|87.0|-98.0|-88.59094|2.00597 +2016-07-01|87.0|-99.0|-89.44394|2.03735 +2016-07-01|87.0|-100.0|-90.2969|2.06959 +2016-07-01|87.0|-101.0|-91.14989|2.10273 +2016-07-01|87.0|-102.0|-92.00298|2.1368 +2016-07-01|87.0|-103.0|-92.85624|2.17183 +2016-07-01|87.0|-104.0|-93.70977|2.20786 +2016-07-01|87.0|-105.0|-94.56364|2.24492 +2016-07-01|87.0|-106.0|-95.41797|2.28306 +2016-07-01|87.0|-107.0|-96.27284|2.32231 +2016-07-01|87.0|-108.0|-97.1284|2.36272 +2016-07-01|87.0|-109.0|-97.98474|2.40432 +2016-07-01|87.0|-110.0|-98.84202|2.44717 +2016-07-01|87.0|-111.0|-99.70038|2.49131 +2016-07-01|87.0|-112.0|-100.55998|2.53679 +2016-07-01|87.0|-113.0|-101.42099|2.58368 +2016-07-01|87.0|-114.0|-102.2836|2.63201 +2016-07-01|87.0|-115.0|-103.14801|2.68185 +2016-07-01|87.0|-116.0|-104.01443|2.73327 +2016-07-01|87.0|-117.0|-104.8831|2.78633 +2016-07-01|87.0|-118.0|-105.75429|2.84109 +2016-07-01|87.0|-119.0|-106.62825|2.89763 +2016-07-01|87.0|-120.0|-107.50528|2.95602 +2016-07-01|87.0|-121.0|-108.38572|3.01635 +2016-07-01|87.0|-122.0|-109.26989|3.07869 +2016-07-01|87.0|-123.0|-110.15818|3.14314 +2016-07-01|87.0|-124.0|-111.05099|3.20979 +2016-07-01|87.0|-125.0|-111.94875|3.27873 +2016-07-01|87.0|-126.0|-112.85193|3.35008 +2016-07-01|87.0|-127.0|-113.76104|3.42393 +2016-07-01|87.0|-128.0|-114.67661|3.5004 +2016-07-01|87.0|-129.0|-115.59924|3.57962 +2016-07-01|87.0|-130.0|-116.52957|3.6617 +2016-07-01|87.0|-131.0|-117.46826|3.74679 +2016-07-01|87.0|-132.0|-118.41607|3.83502 +2016-07-01|87.0|-133.0|-119.37377|3.92654 +2016-07-01|87.0|-134.0|-120.34223|4.02151 +2016-07-01|87.0|-135.0|-121.32236|4.12008 +2016-07-01|87.0|-136.0|-122.31513|4.22242 +2016-07-01|87.0|-137.0|-123.32163|4.32872 +2016-07-01|87.0|-138.0|-124.34297|4.43914 +2016-07-01|87.0|-139.0|-125.38039|4.55388 +2016-07-01|87.0|-140.0|-126.43518|4.67314 +2016-07-01|87.0|-141.0|-127.50876|4.7971 +2016-07-01|87.0|-142.0|-128.60261|4.92598 +2016-07-01|87.0|-143.0|-129.71833|5.05997 +2016-07-01|87.0|-144.0|-130.85764|5.19927 +2016-07-01|87.0|-145.0|-132.02233|5.34409 +2016-07-01|87.0|-146.0|-133.21433|5.4946 +2016-07-01|87.0|-147.0|-134.43567|5.65099 +2016-07-01|87.0|-148.0|-135.68849|5.8134 +2016-07-01|87.0|-149.0|-136.97503|5.98198 +2016-07-01|87.0|-150.0|-138.29766|6.1568 +2016-07-01|87.0|-151.0|-139.6588|6.33792 +2016-07-01|87.0|-152.0|-141.06098|6.52532 +2016-07-01|87.0|-153.0|-142.50679|6.71892 +2016-07-01|87.0|-154.0|-143.99884|6.91853 +2016-07-01|87.0|-155.0|-145.53977|7.12387 +2016-07-01|87.0|-156.0|-147.13218|7.3345 +2016-07-01|87.0|-157.0|-148.77859|7.54985 +2016-07-01|87.0|-158.0|-150.48141|7.76916 +2016-07-01|87.0|-159.0|-152.24281|7.99145 +2016-07-01|87.0|-160.0|-154.06473|8.21552 +2016-07-01|87.0|-161.0|-155.94872|8.43992 +2016-07-01|87.0|-162.0|-157.89589|8.66291 +2016-07-01|87.0|-163.0|-159.90676|8.8825 +2016-07-01|87.0|-164.0|-161.98121|9.0964 +2016-07-01|87.0|-165.0|-164.11832|9.30207 +2016-07-01|87.0|-166.0|-166.3163|9.49677 +2016-07-01|87.0|-167.0|-168.57239|9.67756 +2016-07-01|87.0|-168.0|-170.88279|9.84143 +2016-07-01|87.0|-169.0|-173.24261|9.9854 +2016-07-01|87.0|-170.0|-175.64588|10.10659 +2016-07-01|87.0|-171.0|-178.08562|10.2024 +2016-07-01|87.0|-172.0|179.44615|10.2706 +2016-07-01|87.0|-173.0|176.95819|10.30948 +2016-07-01|87.0|-174.0|174.4599|10.31792 +2016-07-01|87.0|-175.0|171.96112|10.29551 +2016-07-01|87.0|-176.0|169.47182|10.24252 +2016-07-01|87.0|-177.0|167.00193|10.15996 +2016-07-01|87.0|-178.0|164.56099|10.04945 +2016-07-01|87.0|-179.0|162.158|9.91321 +2016-07-01|88.0|0.0|-3.10933|1.01674 +2016-07-01|88.0|1.0|-2.20068|1.01496 +2016-07-01|88.0|2.0|-1.2922|1.01328 +2016-07-01|88.0|3.0|-0.38387|1.0117 +2016-07-01|88.0|4.0|0.52428|1.01022 +2016-07-01|88.0|5.0|1.43226|1.00885 +2016-07-01|88.0|6.0|2.34008|1.00758 +2016-07-01|88.0|7.0|3.24772|1.00642 +2016-07-01|88.0|8.0|4.15518|1.00535 +2016-07-01|88.0|9.0|5.06246|1.0044 +2016-07-01|88.0|10.0|5.96956|1.00354 +2016-07-01|88.0|11.0|6.87647|1.00279 +2016-07-01|88.0|12.0|7.78319|1.00215 +2016-07-01|88.0|13.0|8.68972|1.0016 +2016-07-01|88.0|14.0|9.59606|1.00117 +2016-07-01|88.0|15.0|10.50221|1.00084 +2016-07-01|88.0|16.0|11.40815|1.00061 +2016-07-01|88.0|17.0|12.31389|1.00049 +2016-07-01|88.0|18.0|13.21942|1.00047 +2016-07-01|88.0|19.0|14.12475|1.00057 +2016-07-01|88.0|20.0|15.02987|1.00077 +2016-07-01|88.0|21.0|15.93478|1.00107 +2016-07-01|88.0|22.0|16.83947|1.00149 +2016-07-01|88.0|23.0|17.74394|1.00201 +2016-07-01|88.0|24.0|18.64819|1.00265 +2016-07-01|88.0|25.0|19.55223|1.00339 +2016-07-01|88.0|26.0|20.45603|1.00425 +2016-07-01|88.0|27.0|21.35961|1.00522 +2016-07-01|88.0|28.0|22.26296|1.0063 +2016-07-01|88.0|29.0|23.16608|1.0075 +2016-07-01|88.0|30.0|24.06896|1.00881 +2016-07-01|88.0|31.0|24.97161|1.01023 +2016-07-01|88.0|32.0|25.87402|1.01178 +2016-07-01|88.0|33.0|26.7762|1.01344 +2016-07-01|88.0|34.0|27.67813|1.01522 +2016-07-01|88.0|35.0|28.57982|1.01712 +2016-07-01|88.0|36.0|29.48127|1.01914 +2016-07-01|88.0|37.0|30.38248|1.02129 +2016-07-01|88.0|38.0|31.28344|1.02356 +2016-07-01|88.0|39.0|32.18416|1.02595 +2016-07-01|88.0|40.0|33.08463|1.02848 +2016-07-01|88.0|41.0|33.98485|1.03113 +2016-07-01|88.0|42.0|34.88483|1.03391 +2016-07-01|88.0|43.0|35.78456|1.03682 +2016-07-01|88.0|44.0|36.68405|1.03987 +2016-07-01|88.0|45.0|37.58329|1.04305 +2016-07-01|88.0|46.0|38.48228|1.04637 +2016-07-01|88.0|47.0|39.38103|1.04983 +2016-07-01|88.0|48.0|40.27954|1.05343 +2016-07-01|88.0|49.0|41.17781|1.05717 +2016-07-01|88.0|50.0|42.07584|1.06106 +2016-07-01|88.0|51.0|42.97363|1.06509 +2016-07-01|88.0|52.0|43.87119|1.06927 +2016-07-01|88.0|53.0|44.76852|1.07361 +2016-07-01|88.0|54.0|45.66562|1.0781 +2016-07-01|88.0|55.0|46.5625|1.08274 +2016-07-01|88.0|56.0|47.45916|1.08754 +2016-07-01|88.0|57.0|48.3556|1.0925 +2016-07-01|88.0|58.0|49.25184|1.09763 +2016-07-01|88.0|59.0|50.14787|1.10292 +2016-07-01|88.0|60.0|51.0437|1.10838 +2016-07-01|88.0|61.0|51.93934|1.11401 +2016-07-01|88.0|62.0|52.8348|1.11982 +2016-07-01|88.0|63.0|53.73008|1.12581 +2016-07-01|88.0|64.0|54.6252|1.13197 +2016-07-01|88.0|65.0|55.52016|1.13832 +2016-07-01|88.0|66.0|56.41497|1.14485 +2016-07-01|88.0|67.0|57.30964|1.15158 +2016-07-01|88.0|68.0|58.20418|1.15849 +2016-07-01|88.0|69.0|59.09861|1.16561 +2016-07-01|88.0|70.0|59.99294|1.17292 +2016-07-01|88.0|71.0|60.88718|1.18044 +2016-07-01|88.0|72.0|61.78134|1.18816 +2016-07-01|88.0|73.0|62.67545|1.1961 +2016-07-01|88.0|74.0|63.56952|1.20425 +2016-07-01|88.0|75.0|64.46356|1.21262 +2016-07-01|88.0|76.0|65.3576|1.22121 +2016-07-01|88.0|77.0|66.25165|1.23003 +2016-07-01|88.0|78.0|67.14574|1.23907 +2016-07-01|88.0|79.0|68.03989|1.24836 +2016-07-01|88.0|80.0|68.93411|1.25788 +2016-07-01|88.0|81.0|69.82845|1.26765 +2016-07-01|88.0|82.0|70.72291|1.27766 +2016-07-01|88.0|83.0|71.61753|1.28793 +2016-07-01|88.0|84.0|72.51235|1.29846 +2016-07-01|88.0|85.0|73.40738|1.30924 +2016-07-01|88.0|86.0|74.30266|1.3203 +2016-07-01|88.0|87.0|75.19823|1.33163 +2016-07-01|88.0|88.0|76.09411|1.34323 +2016-07-01|88.0|89.0|76.99036|1.35512 +2016-07-01|88.0|90.0|77.887|1.36729 +2016-07-01|88.0|91.0|78.78409|1.37975 +2016-07-01|88.0|92.0|79.68165|1.39251 +2016-07-01|88.0|93.0|80.57974|1.40558 +2016-07-01|88.0|94.0|81.47841|1.41895 +2016-07-01|88.0|95.0|82.37771|1.43264 +2016-07-01|88.0|96.0|83.27768|1.44664 +2016-07-01|88.0|97.0|84.17839|1.46098 +2016-07-01|88.0|98.0|85.07989|1.47564 +2016-07-01|88.0|99.0|85.98224|1.49063 +2016-07-01|88.0|100.0|86.88551|1.50597 +2016-07-01|88.0|101.0|87.78976|1.52165 +2016-07-01|88.0|102.0|88.69505|1.53769 +2016-07-01|88.0|103.0|89.60147|1.55409 +2016-07-01|88.0|104.0|90.50908|1.57085 +2016-07-01|88.0|105.0|91.41797|1.58797 +2016-07-01|88.0|106.0|92.32821|1.60548 +2016-07-01|88.0|107.0|93.23989|1.62336 +2016-07-01|88.0|108.0|94.1531|1.64163 +2016-07-01|88.0|109.0|95.06794|1.6603 +2016-07-01|88.0|110.0|95.98449|1.67936 +2016-07-01|88.0|111.0|96.90285|1.69882 +2016-07-01|88.0|112.0|97.82313|1.71869 +2016-07-01|88.0|113.0|98.74544|1.73897 +2016-07-01|88.0|114.0|99.66989|1.75967 +2016-07-01|88.0|115.0|100.59659|1.78078 +2016-07-01|88.0|116.0|101.52567|1.80233 +2016-07-01|88.0|117.0|102.45723|1.8243 +2016-07-01|88.0|118.0|103.39143|1.84671 +2016-07-01|88.0|119.0|104.32837|1.86955 +2016-07-01|88.0|120.0|105.26821|1.89284 +2016-07-01|88.0|121.0|106.21109|1.91657 +2016-07-01|88.0|122.0|107.15714|1.94074 +2016-07-01|88.0|123.0|108.10651|1.96536 +2016-07-01|88.0|124.0|109.05937|1.99043 +2016-07-01|88.0|125.0|110.01586|2.01595 +2016-07-01|88.0|126.0|110.97615|2.04191 +2016-07-01|88.0|127.0|111.94041|2.06833 +2016-07-01|88.0|128.0|112.9088|2.09519 +2016-07-01|88.0|129.0|113.8815|2.1225 +2016-07-01|88.0|130.0|114.85868|2.15025 +2016-07-01|88.0|131.0|115.84052|2.17845 +2016-07-01|88.0|132.0|116.82722|2.20707 +2016-07-01|88.0|133.0|117.81894|2.23613 +2016-07-01|88.0|134.0|118.81589|2.26561 +2016-07-01|88.0|135.0|119.81825|2.2955 +2016-07-01|88.0|136.0|120.82621|2.3258 +2016-07-01|88.0|137.0|121.83997|2.35649 +2016-07-01|88.0|138.0|122.85973|2.38757 +2016-07-01|88.0|139.0|123.88567|2.41901 +2016-07-01|88.0|140.0|124.91799|2.45081 +2016-07-01|88.0|141.0|125.95688|2.48295 +2016-07-01|88.0|142.0|127.00253|2.51541 +2016-07-01|88.0|143.0|128.05515|2.54816 +2016-07-01|88.0|144.0|129.11489|2.58119 +2016-07-01|88.0|145.0|130.18196|2.61447 +2016-07-01|88.0|146.0|131.25653|2.64798 +2016-07-01|88.0|147.0|132.33877|2.68169 +2016-07-01|88.0|148.0|133.42883|2.71556 +2016-07-01|88.0|149.0|134.52689|2.74956 +2016-07-01|88.0|150.0|135.63307|2.78367 +2016-07-01|88.0|151.0|136.74753|2.81783 +2016-07-01|88.0|152.0|137.87037|2.85201 +2016-07-01|88.0|153.0|139.00172|2.88616 +2016-07-01|88.0|154.0|140.14168|2.92025 +2016-07-01|88.0|155.0|141.29032|2.95422 +2016-07-01|88.0|156.0|142.44771|2.98802 +2016-07-01|88.0|157.0|143.61389|3.0216 +2016-07-01|88.0|158.0|144.78891|3.05491 +2016-07-01|88.0|159.0|145.97277|3.08789 +2016-07-01|88.0|160.0|147.16545|3.12047 +2016-07-01|88.0|161.0|148.36692|3.1526 +2016-07-01|88.0|162.0|149.57713|3.18422 +2016-07-01|88.0|163.0|150.79599|3.21525 +2016-07-01|88.0|164.0|152.02339|3.24564 +2016-07-01|88.0|165.0|153.25921|3.27532 +2016-07-01|88.0|166.0|154.50328|3.30422 +2016-07-01|88.0|167.0|155.75541|3.33227 +2016-07-01|88.0|168.0|157.0154|3.35941 +2016-07-01|88.0|169.0|158.283|3.38556 +2016-07-01|88.0|170.0|159.55795|3.41067 +2016-07-01|88.0|171.0|160.83994|3.43466 +2016-07-01|88.0|172.0|162.12867|3.45747 +2016-07-01|88.0|173.0|163.42378|3.47905 +2016-07-01|88.0|174.0|164.72491|3.49932 +2016-07-01|88.0|175.0|166.03165|3.51824 +2016-07-01|88.0|176.0|167.3436|3.53575 +2016-07-01|88.0|177.0|168.66031|3.55181 +2016-07-01|88.0|178.0|169.98133|3.56636 +2016-07-01|88.0|179.0|171.30619|3.57937 +2016-07-01|88.0|-1.0|-4.01814|1.01863 +2016-07-01|88.0|-2.0|-4.9271|1.02063 +2016-07-01|88.0|-3.0|-5.83622|1.02273 +2016-07-01|88.0|-4.0|-6.74549|1.02493 +2016-07-01|88.0|-5.0|-7.65491|1.02724 +2016-07-01|88.0|-6.0|-8.56448|1.02965 +2016-07-01|88.0|-7.0|-9.47419|1.03217 +2016-07-01|88.0|-8.0|-10.38405|1.03479 +2016-07-01|88.0|-9.0|-11.29405|1.03752 +2016-07-01|88.0|-10.0|-12.20419|1.04036 +2016-07-01|88.0|-11.0|-13.11447|1.0433 +2016-07-01|88.0|-12.0|-14.02489|1.04636 +2016-07-01|88.0|-13.0|-14.93544|1.04952 +2016-07-01|88.0|-14.0|-15.84613|1.05279 +2016-07-01|88.0|-15.0|-16.75695|1.05617 +2016-07-01|88.0|-16.0|-17.6679|1.05965 +2016-07-01|88.0|-17.0|-18.57898|1.06326 +2016-07-01|88.0|-18.0|-19.49019|1.06697 +2016-07-01|88.0|-19.0|-20.40154|1.07079 +2016-07-01|88.0|-20.0|-21.31301|1.07473 +2016-07-01|88.0|-21.0|-22.22461|1.07879 +2016-07-01|88.0|-22.0|-23.13634|1.08296 +2016-07-01|88.0|-23.0|-24.04819|1.08724 +2016-07-01|88.0|-24.0|-24.96018|1.09165 +2016-07-01|88.0|-25.0|-25.87229|1.09617 +2016-07-01|88.0|-26.0|-26.78454|1.10081 +2016-07-01|88.0|-27.0|-27.69691|1.10557 +2016-07-01|88.0|-28.0|-28.60942|1.11045 +2016-07-01|88.0|-29.0|-29.52206|1.11546 +2016-07-01|88.0|-30.0|-30.43484|1.12059 +2016-07-01|88.0|-31.0|-31.34775|1.12584 +2016-07-01|88.0|-32.0|-32.26079|1.13122 +2016-07-01|88.0|-33.0|-33.17398|1.13673 +2016-07-01|88.0|-34.0|-34.08732|1.14237 +2016-07-01|88.0|-35.0|-35.00079|1.14814 +2016-07-01|88.0|-36.0|-35.91442|1.15404 +2016-07-01|88.0|-37.0|-36.8282|1.16008 +2016-07-01|88.0|-38.0|-37.74213|1.16625 +2016-07-01|88.0|-39.0|-38.65623|1.17256 +2016-07-01|88.0|-40.0|-39.57049|1.17901 +2016-07-01|88.0|-41.0|-40.48492|1.1856 +2016-07-01|88.0|-42.0|-41.39952|1.19233 +2016-07-01|88.0|-43.0|-42.31431|1.1992 +2016-07-01|88.0|-44.0|-43.22928|1.20622 +2016-07-01|88.0|-45.0|-44.14444|1.21339 +2016-07-01|88.0|-46.0|-45.05981|1.2207 +2016-07-01|88.0|-47.0|-45.97538|1.22817 +2016-07-01|88.0|-48.0|-46.89116|1.23579 +2016-07-01|88.0|-49.0|-47.80717|1.24357 +2016-07-01|88.0|-50.0|-48.72341|1.2515 +2016-07-01|88.0|-51.0|-49.63989|1.2596 +2016-07-01|88.0|-52.0|-50.55663|1.26785 +2016-07-01|88.0|-53.0|-51.47362|1.27627 +2016-07-01|88.0|-54.0|-52.39089|1.28486 +2016-07-01|88.0|-55.0|-53.30844|1.29362 +2016-07-01|88.0|-56.0|-54.22629|1.30254 +2016-07-01|88.0|-57.0|-55.14445|1.31165 +2016-07-01|88.0|-58.0|-56.06294|1.32092 +2016-07-01|88.0|-59.0|-56.98176|1.33038 +2016-07-01|88.0|-60.0|-57.90094|1.34002 +2016-07-01|88.0|-61.0|-58.82048|1.34984 +2016-07-01|88.0|-62.0|-59.74041|1.35985 +2016-07-01|88.0|-63.0|-60.66075|1.37005 +2016-07-01|88.0|-64.0|-61.5815|1.38044 +2016-07-01|88.0|-65.0|-62.5027|1.39102 +2016-07-01|88.0|-66.0|-63.42436|1.40181 +2016-07-01|88.0|-67.0|-64.34651|1.41279 +2016-07-01|88.0|-68.0|-65.26916|1.42398 +2016-07-01|88.0|-69.0|-66.19234|1.43538 +2016-07-01|88.0|-70.0|-67.11607|1.44699 +2016-07-01|88.0|-71.0|-68.04038|1.45881 +2016-07-01|88.0|-72.0|-68.96529|1.47084 +2016-07-01|88.0|-73.0|-69.89084|1.4831 +2016-07-01|88.0|-74.0|-70.81706|1.49558 +2016-07-01|88.0|-75.0|-71.74396|1.50829 +2016-07-01|88.0|-76.0|-72.67159|1.52122 +2016-07-01|88.0|-77.0|-73.59998|1.5344 +2016-07-01|88.0|-78.0|-74.52916|1.5478 +2016-07-01|88.0|-79.0|-75.45917|1.56145 +2016-07-01|88.0|-80.0|-76.39004|1.57534 +2016-07-01|88.0|-81.0|-77.32183|1.58948 +2016-07-01|88.0|-82.0|-78.25455|1.60387 +2016-07-01|88.0|-83.0|-79.18827|1.61852 +2016-07-01|88.0|-84.0|-80.12302|1.63342 +2016-07-01|88.0|-85.0|-81.05884|1.64858 +2016-07-01|88.0|-86.0|-81.9958|1.66402 +2016-07-01|88.0|-87.0|-82.93393|1.67972 +2016-07-01|88.0|-88.0|-83.87329|1.69569 +2016-07-01|88.0|-89.0|-84.81393|1.71194 +2016-07-01|88.0|-90.0|-85.75591|1.72847 +2016-07-01|88.0|-91.0|-86.69928|1.74529 +2016-07-01|88.0|-92.0|-87.64411|1.76239 +2016-07-01|88.0|-93.0|-88.59047|1.77979 +2016-07-01|88.0|-94.0|-89.5384|1.79748 +2016-07-01|88.0|-95.0|-90.48799|1.81547 +2016-07-01|88.0|-96.0|-91.4393|1.83376 +2016-07-01|88.0|-97.0|-92.39241|1.85236 +2016-07-01|88.0|-98.0|-93.34738|1.87126 +2016-07-01|88.0|-99.0|-94.30431|1.89048 +2016-07-01|88.0|-100.0|-95.26326|1.91002 +2016-07-01|88.0|-101.0|-96.22432|1.92987 +2016-07-01|88.0|-102.0|-97.18757|1.95005 +2016-07-01|88.0|-103.0|-98.15312|1.97055 +2016-07-01|88.0|-104.0|-99.12104|1.99137 +2016-07-01|88.0|-105.0|-100.09143|2.01253 +2016-07-01|88.0|-106.0|-101.0644|2.03402 +2016-07-01|88.0|-107.0|-102.04004|2.05584 +2016-07-01|88.0|-108.0|-103.01845|2.078 +2016-07-01|88.0|-109.0|-103.99975|2.10049 +2016-07-01|88.0|-110.0|-104.98403|2.12332 +2016-07-01|88.0|-111.0|-105.97143|2.14649 +2016-07-01|88.0|-112.0|-106.96205|2.17001 +2016-07-01|88.0|-113.0|-107.95601|2.19386 +2016-07-01|88.0|-114.0|-108.95344|2.21804 +2016-07-01|88.0|-115.0|-109.95446|2.24257 +2016-07-01|88.0|-116.0|-110.9592|2.26744 +2016-07-01|88.0|-117.0|-111.96779|2.29263 +2016-07-01|88.0|-118.0|-112.98037|2.31817 +2016-07-01|88.0|-119.0|-113.99707|2.34403 +2016-07-01|88.0|-120.0|-115.01803|2.37021 +2016-07-01|88.0|-121.0|-116.0434|2.39672 +2016-07-01|88.0|-122.0|-117.07332|2.42354 +2016-07-01|88.0|-123.0|-118.10793|2.45066 +2016-07-01|88.0|-124.0|-119.14739|2.47809 +2016-07-01|88.0|-125.0|-120.19185|2.50581 +2016-07-01|88.0|-126.0|-121.24144|2.53382 +2016-07-01|88.0|-127.0|-122.29634|2.5621 +2016-07-01|88.0|-128.0|-123.35668|2.59063 +2016-07-01|88.0|-129.0|-124.42263|2.61942 +2016-07-01|88.0|-130.0|-125.49434|2.64844 +2016-07-01|88.0|-131.0|-126.57195|2.67768 +2016-07-01|88.0|-132.0|-127.65562|2.70711 +2016-07-01|88.0|-133.0|-128.74549|2.73673 +2016-07-01|88.0|-134.0|-129.84172|2.76651 +2016-07-01|88.0|-135.0|-130.94445|2.79642 +2016-07-01|88.0|-136.0|-132.05381|2.82645 +2016-07-01|88.0|-137.0|-133.16995|2.85657 +2016-07-01|88.0|-138.0|-134.29299|2.88674 +2016-07-01|88.0|-139.0|-135.42305|2.91695 +2016-07-01|88.0|-140.0|-136.56026|2.94715 +2016-07-01|88.0|-141.0|-137.70472|2.97732 +2016-07-01|88.0|-142.0|-138.85653|3.00741 +2016-07-01|88.0|-143.0|-140.01578|3.03739 +2016-07-01|88.0|-144.0|-141.18255|3.06722 +2016-07-01|88.0|-145.0|-142.35692|3.09685 +2016-07-01|88.0|-146.0|-143.53892|3.12624 +2016-07-01|88.0|-147.0|-144.72861|3.15535 +2016-07-01|88.0|-148.0|-145.926|3.18411 +2016-07-01|88.0|-149.0|-147.13111|3.21249 +2016-07-01|88.0|-150.0|-148.34392|3.24042 +2016-07-01|88.0|-151.0|-149.56442|3.26785 +2016-07-01|88.0|-152.0|-150.79254|3.29473 +2016-07-01|88.0|-153.0|-152.02822|3.32099 +2016-07-01|88.0|-154.0|-153.27138|3.34658 +2016-07-01|88.0|-155.0|-154.5219|3.37143 +2016-07-01|88.0|-156.0|-155.77965|3.39548 +2016-07-01|88.0|-157.0|-157.04446|3.41868 +2016-07-01|88.0|-158.0|-158.31615|3.44095 +2016-07-01|88.0|-159.0|-159.59452|3.46223 +2016-07-01|88.0|-160.0|-160.87932|3.48247 +2016-07-01|88.0|-161.0|-162.17031|3.50159 +2016-07-01|88.0|-162.0|-163.4672|3.51954 +2016-07-01|88.0|-163.0|-164.76968|3.53627 +2016-07-01|88.0|-164.0|-166.07741|3.5517 +2016-07-01|88.0|-165.0|-167.39004|3.5658 +2016-07-01|88.0|-166.0|-168.70719|3.5785 +2016-07-01|88.0|-167.0|-170.02845|3.58975 +2016-07-01|88.0|-168.0|-171.3534|3.59952 +2016-07-01|88.0|-169.0|-172.6816|3.60777 +2016-07-01|88.0|-170.0|-174.01258|3.61444 +2016-07-01|88.0|-171.0|-175.34588|3.61952 +2016-07-01|88.0|-172.0|-176.68099|3.62298 +2016-07-01|88.0|-173.0|-178.01742|3.62479 +2016-07-01|88.0|-174.0|-179.35465|3.62494 +2016-07-01|88.0|-175.0|179.30783|3.62341 +2016-07-01|88.0|-176.0|177.97056|3.62022 +2016-07-01|88.0|-177.0|176.63405|3.61535 +2016-07-01|88.0|-178.0|175.29884|3.60881 +2016-07-01|88.0|-179.0|173.96545|3.60062 +2016-07-01|89.0|0.0|-3.33858|1.23327 +2016-07-01|89.0|1.0|-2.3941|1.23214 +2016-07-01|89.0|2.0|-1.44972|1.23108 +2016-07-01|89.0|3.0|-0.50545|1.23011 +2016-07-01|89.0|4.0|0.43872|1.22921 +2016-07-01|89.0|5.0|1.3828|1.22839 +2016-07-01|89.0|6.0|2.32679|1.22765 +2016-07-01|89.0|7.0|3.2707|1.22699 +2016-07-01|89.0|8.0|4.21453|1.22641 +2016-07-01|89.0|9.0|5.15829|1.22591 +2016-07-01|89.0|10.0|6.10198|1.22549 +2016-07-01|89.0|11.0|7.04562|1.22515 +2016-07-01|89.0|12.0|7.9892|1.22489 +2016-07-01|89.0|13.0|8.93273|1.22471 +2016-07-01|89.0|14.0|9.87622|1.22461 +2016-07-01|89.0|15.0|10.81968|1.22459 +2016-07-01|89.0|16.0|11.7631|1.22465 +2016-07-01|89.0|17.0|12.7065|1.2248 +2016-07-01|89.0|18.0|13.64989|1.22502 +2016-07-01|89.0|19.0|14.59326|1.22533 +2016-07-01|89.0|20.0|15.53662|1.22571 +2016-07-01|89.0|21.0|16.47999|1.22618 +2016-07-01|89.0|22.0|17.42336|1.22673 +2016-07-01|89.0|23.0|18.36675|1.22737 +2016-07-01|89.0|24.0|19.31015|1.22808 +2016-07-01|89.0|25.0|20.25358|1.22888 +2016-07-01|89.0|26.0|21.19705|1.22977 +2016-07-01|89.0|27.0|22.14055|1.23073 +2016-07-01|89.0|28.0|23.08411|1.23178 +2016-07-01|89.0|29.0|24.02771|1.23292 +2016-07-01|89.0|30.0|24.97138|1.23414 +2016-07-01|89.0|31.0|25.91511|1.23544 +2016-07-01|89.0|32.0|26.85892|1.23683 +2016-07-01|89.0|33.0|27.80282|1.2383 +2016-07-01|89.0|34.0|28.7468|1.23986 +2016-07-01|89.0|35.0|29.69089|1.24151 +2016-07-01|89.0|36.0|30.63508|1.24324 +2016-07-01|89.0|37.0|31.57939|1.24506 +2016-07-01|89.0|38.0|32.52382|1.24697 +2016-07-01|89.0|39.0|33.46838|1.24896 +2016-07-01|89.0|40.0|34.41308|1.25105 +2016-07-01|89.0|41.0|35.35793|1.25322 +2016-07-01|89.0|42.0|36.30293|1.25548 +2016-07-01|89.0|43.0|37.24811|1.25783 +2016-07-01|89.0|44.0|38.19346|1.26027 +2016-07-01|89.0|45.0|39.139|1.2628 +2016-07-01|89.0|46.0|40.08473|1.26542 +2016-07-01|89.0|47.0|41.03067|1.26813 +2016-07-01|89.0|48.0|41.97683|1.27093 +2016-07-01|89.0|49.0|42.92321|1.27382 +2016-07-01|89.0|50.0|43.86982|1.27681 +2016-07-01|89.0|51.0|44.81669|1.27989 +2016-07-01|89.0|52.0|45.76381|1.28306 +2016-07-01|89.0|53.0|46.71121|1.28632 +2016-07-01|89.0|54.0|47.65889|1.28968 +2016-07-01|89.0|55.0|48.60686|1.29313 +2016-07-01|89.0|56.0|49.55513|1.29668 +2016-07-01|89.0|57.0|50.50372|1.30032 +2016-07-01|89.0|58.0|51.45265|1.30406 +2016-07-01|89.0|59.0|52.40191|1.30789 +2016-07-01|89.0|60.0|53.35154|1.31182 +2016-07-01|89.0|61.0|54.30153|1.31585 +2016-07-01|89.0|62.0|55.2519|1.31997 +2016-07-01|89.0|63.0|56.20268|1.32419 +2016-07-01|89.0|64.0|57.15386|1.32851 +2016-07-01|89.0|65.0|58.10548|1.33293 +2016-07-01|89.0|66.0|59.05753|1.33744 +2016-07-01|89.0|67.0|60.01004|1.34205 +2016-07-01|89.0|68.0|60.96302|1.34677 +2016-07-01|89.0|69.0|61.91649|1.35158 +2016-07-01|89.0|70.0|62.87046|1.35649 +2016-07-01|89.0|71.0|63.82495|1.3615 +2016-07-01|89.0|72.0|64.77998|1.36661 +2016-07-01|89.0|73.0|65.73556|1.37182 +2016-07-01|89.0|74.0|66.69172|1.37714 +2016-07-01|89.0|75.0|67.64846|1.38255 +2016-07-01|89.0|76.0|68.60581|1.38806 +2016-07-01|89.0|77.0|69.56379|1.39368 +2016-07-01|89.0|78.0|70.52241|1.39939 +2016-07-01|89.0|79.0|71.4817|1.40521 +2016-07-01|89.0|80.0|72.44166|1.41113 +2016-07-01|89.0|81.0|73.40233|1.41714 +2016-07-01|89.0|82.0|74.36372|1.42326 +2016-07-01|89.0|83.0|75.32586|1.42949 +2016-07-01|89.0|84.0|76.28875|1.43581 +2016-07-01|89.0|85.0|77.25244|1.44223 +2016-07-01|89.0|86.0|78.21692|1.44875 +2016-07-01|89.0|87.0|79.18224|1.45538 +2016-07-01|89.0|88.0|80.1484|1.4621 +2016-07-01|89.0|89.0|81.11544|1.46892 +2016-07-01|89.0|90.0|82.08336|1.47584 +2016-07-01|89.0|91.0|83.05221|1.48286 +2016-07-01|89.0|92.0|84.02199|1.48998 +2016-07-01|89.0|93.0|84.99274|1.4972 +2016-07-01|89.0|94.0|85.96448|1.50451 +2016-07-01|89.0|95.0|86.93722|1.51192 +2016-07-01|89.0|96.0|87.911|1.51943 +2016-07-01|89.0|97.0|88.88584|1.52702 +2016-07-01|89.0|98.0|89.86176|1.53472 +2016-07-01|89.0|99.0|90.83878|1.5425 +2016-07-01|89.0|100.0|91.81694|1.55038 +2016-07-01|89.0|101.0|92.79626|1.55835 +2016-07-01|89.0|102.0|93.77676|1.56641 +2016-07-01|89.0|103.0|94.75847|1.57455 +2016-07-01|89.0|104.0|95.74141|1.58278 +2016-07-01|89.0|105.0|96.72561|1.5911 +2016-07-01|89.0|106.0|97.71109|1.5995 +2016-07-01|89.0|107.0|98.69788|1.60798 +2016-07-01|89.0|108.0|99.68601|1.61654 +2016-07-01|89.0|109.0|100.6755|1.62518 +2016-07-01|89.0|110.0|101.66637|1.63389 +2016-07-01|89.0|111.0|102.65865|1.64268 +2016-07-01|89.0|112.0|103.65237|1.65154 +2016-07-01|89.0|113.0|104.64754|1.66047 +2016-07-01|89.0|114.0|105.64421|1.66946 +2016-07-01|89.0|115.0|106.64238|1.67852 +2016-07-01|89.0|116.0|107.64208|1.68764 +2016-07-01|89.0|117.0|108.64335|1.69682 +2016-07-01|89.0|118.0|109.64619|1.70606 +2016-07-01|89.0|119.0|110.65064|1.71534 +2016-07-01|89.0|120.0|111.65671|1.72468 +2016-07-01|89.0|121.0|112.66443|1.73406 +2016-07-01|89.0|122.0|113.67382|1.74348 +2016-07-01|89.0|123.0|114.68491|1.75294 +2016-07-01|89.0|124.0|115.6977|1.76244 +2016-07-01|89.0|125.0|116.71222|1.77196 +2016-07-01|89.0|126.0|117.7285|1.78152 +2016-07-01|89.0|127.0|118.74654|1.79109 +2016-07-01|89.0|128.0|119.76637|1.80069 +2016-07-01|89.0|129.0|120.788|1.81029 +2016-07-01|89.0|130.0|121.81144|1.81991 +2016-07-01|89.0|131.0|122.83672|1.82953 +2016-07-01|89.0|132.0|123.86384|1.83915 +2016-07-01|89.0|133.0|124.89281|1.84877 +2016-07-01|89.0|134.0|125.92365|1.85837 +2016-07-01|89.0|135.0|126.95637|1.86796 +2016-07-01|89.0|136.0|127.99098|1.87753 +2016-07-01|89.0|137.0|129.02747|1.88707 +2016-07-01|89.0|138.0|130.06586|1.89657 +2016-07-01|89.0|139.0|131.10616|1.90604 +2016-07-01|89.0|140.0|132.14836|1.91547 +2016-07-01|89.0|141.0|133.19246|1.92484 +2016-07-01|89.0|142.0|134.23847|1.93416 +2016-07-01|89.0|143.0|135.28638|1.94341 +2016-07-01|89.0|144.0|136.33618|1.9526 +2016-07-01|89.0|145.0|137.38788|1.96171 +2016-07-01|89.0|146.0|138.44147|1.97074 +2016-07-01|89.0|147.0|139.49693|1.97969 +2016-07-01|89.0|148.0|140.55425|1.98853 +2016-07-01|89.0|149.0|141.61342|1.99728 +2016-07-01|89.0|150.0|142.67443|2.00592 +2016-07-01|89.0|151.0|143.73726|2.01444 +2016-07-01|89.0|152.0|144.80188|2.02285 +2016-07-01|89.0|153.0|145.86828|2.03112 +2016-07-01|89.0|154.0|146.93644|2.03926 +2016-07-01|89.0|155.0|148.00632|2.04726 +2016-07-01|89.0|156.0|149.07791|2.05511 +2016-07-01|89.0|157.0|150.15117|2.06281 +2016-07-01|89.0|158.0|151.22607|2.07035 +2016-07-01|89.0|159.0|152.30257|2.07772 +2016-07-01|89.0|160.0|153.38065|2.08491 +2016-07-01|89.0|161.0|154.46026|2.09193 +2016-07-01|89.0|162.0|155.54137|2.09875 +2016-07-01|89.0|163.0|156.62392|2.10539 +2016-07-01|89.0|164.0|157.70789|2.11183 +2016-07-01|89.0|165.0|158.79322|2.11806 +2016-07-01|89.0|166.0|159.87986|2.12408 +2016-07-01|89.0|167.0|160.96778|2.12988 +2016-07-01|89.0|168.0|162.0569|2.13547 +2016-07-01|89.0|169.0|163.1472|2.14082 +2016-07-01|89.0|170.0|164.2386|2.14595 +2016-07-01|89.0|171.0|165.33105|2.15084 +2016-07-01|89.0|172.0|166.42451|2.15549 +2016-07-01|89.0|173.0|167.5189|2.15989 +2016-07-01|89.0|174.0|168.61416|2.16405 +2016-07-01|89.0|175.0|169.71025|2.16795 +2016-07-01|89.0|176.0|170.80709|2.17159 +2016-07-01|89.0|177.0|171.90462|2.17498 +2016-07-01|89.0|178.0|173.00278|2.1781 +2016-07-01|89.0|179.0|174.10151|2.18095 +2016-07-01|89.0|-1.0|-4.28319|1.23448 +2016-07-01|89.0|-2.0|-5.22791|1.23577 +2016-07-01|89.0|-3.0|-6.17276|1.23714 +2016-07-01|89.0|-4.0|-7.11775|1.23859 +2016-07-01|89.0|-5.0|-8.06288|1.24012 +2016-07-01|89.0|-6.0|-9.00815|1.24172 +2016-07-01|89.0|-7.0|-9.95357|1.24341 +2016-07-01|89.0|-8.0|-10.89915|1.24517 +2016-07-01|89.0|-9.0|-11.84489|1.24701 +2016-07-01|89.0|-10.0|-12.7908|1.24893 +2016-07-01|89.0|-11.0|-13.73689|1.25093 +2016-07-01|89.0|-12.0|-14.68316|1.25301 +2016-07-01|89.0|-13.0|-15.62961|1.25516 +2016-07-01|89.0|-14.0|-16.57626|1.25739 +2016-07-01|89.0|-15.0|-17.5231|1.2597 +2016-07-01|89.0|-16.0|-18.47015|1.26209 +2016-07-01|89.0|-17.0|-19.41742|1.26456 +2016-07-01|89.0|-18.0|-20.3649|1.26711 +2016-07-01|89.0|-19.0|-21.31261|1.26974 +2016-07-01|89.0|-20.0|-22.26055|1.27244 +2016-07-01|89.0|-21.0|-23.20873|1.27522 +2016-07-01|89.0|-22.0|-24.15716|1.27809 +2016-07-01|89.0|-23.0|-25.10584|1.28103 +2016-07-01|89.0|-24.0|-26.05478|1.28405 +2016-07-01|89.0|-25.0|-27.00398|1.28715 +2016-07-01|89.0|-26.0|-27.95346|1.29033 +2016-07-01|89.0|-27.0|-28.90322|1.29358 +2016-07-01|89.0|-28.0|-29.85328|1.29692 +2016-07-01|89.0|-29.0|-30.80363|1.30033 +2016-07-01|89.0|-30.0|-31.75428|1.30383 +2016-07-01|89.0|-31.0|-32.70525|1.30741 +2016-07-01|89.0|-32.0|-33.65654|1.31106 +2016-07-01|89.0|-33.0|-34.60816|1.31479 +2016-07-01|89.0|-34.0|-35.56012|1.31861 +2016-07-01|89.0|-35.0|-36.51242|1.3225 +2016-07-01|89.0|-36.0|-37.46508|1.32647 +2016-07-01|89.0|-37.0|-38.41811|1.33053 +2016-07-01|89.0|-38.0|-39.37151|1.33466 +2016-07-01|89.0|-39.0|-40.32529|1.33888 +2016-07-01|89.0|-40.0|-41.27946|1.34317 +2016-07-01|89.0|-41.0|-42.23404|1.34754 +2016-07-01|89.0|-42.0|-43.18903|1.352 +2016-07-01|89.0|-43.0|-44.14444|1.35653 +2016-07-01|89.0|-44.0|-45.10028|1.36115 +2016-07-01|89.0|-45.0|-46.05657|1.36584 +2016-07-01|89.0|-46.0|-47.01331|1.37062 +2016-07-01|89.0|-47.0|-47.97051|1.37548 +2016-07-01|89.0|-48.0|-48.92819|1.38041 +2016-07-01|89.0|-49.0|-49.88636|1.38543 +2016-07-01|89.0|-50.0|-50.84502|1.39053 +2016-07-01|89.0|-51.0|-51.80419|1.39571 +2016-07-01|89.0|-52.0|-52.76389|1.40097 +2016-07-01|89.0|-53.0|-53.72412|1.40631 +2016-07-01|89.0|-54.0|-54.68489|1.41173 +2016-07-01|89.0|-55.0|-55.64623|1.41723 +2016-07-01|89.0|-56.0|-56.60813|1.42281 +2016-07-01|89.0|-57.0|-57.57062|1.42847 +2016-07-01|89.0|-58.0|-58.53371|1.43421 +2016-07-01|89.0|-59.0|-59.49741|1.44003 +2016-07-01|89.0|-60.0|-60.46174|1.44593 +2016-07-01|89.0|-61.0|-61.4267|1.45191 +2016-07-01|89.0|-62.0|-62.39232|1.45797 +2016-07-01|89.0|-63.0|-63.35861|1.46411 +2016-07-01|89.0|-64.0|-64.32558|1.47033 +2016-07-01|89.0|-65.0|-65.29325|1.47662 +2016-07-01|89.0|-66.0|-66.26163|1.483 +2016-07-01|89.0|-67.0|-67.23074|1.48945 +2016-07-01|89.0|-68.0|-68.2006|1.49598 +2016-07-01|89.0|-69.0|-69.17121|1.50259 +2016-07-01|89.0|-70.0|-70.14261|1.50927 +2016-07-01|89.0|-71.0|-71.11479|1.51603 +2016-07-01|89.0|-72.0|-72.08779|1.52286 +2016-07-01|89.0|-73.0|-73.06161|1.52977 +2016-07-01|89.0|-74.0|-74.03628|1.53676 +2016-07-01|89.0|-75.0|-75.01181|1.54382 +2016-07-01|89.0|-76.0|-75.98822|1.55095 +2016-07-01|89.0|-77.0|-76.96553|1.55815 +2016-07-01|89.0|-78.0|-77.94376|1.56543 +2016-07-01|89.0|-79.0|-78.92291|1.57278 +2016-07-01|89.0|-80.0|-79.90302|1.5802 +2016-07-01|89.0|-81.0|-80.88411|1.58768 +2016-07-01|89.0|-82.0|-81.86618|1.59524 +2016-07-01|89.0|-83.0|-82.84926|1.60286 +2016-07-01|89.0|-84.0|-83.83337|1.61055 +2016-07-01|89.0|-85.0|-84.81852|1.6183 +2016-07-01|89.0|-86.0|-85.80475|1.62612 +2016-07-01|89.0|-87.0|-86.79206|1.634 +2016-07-01|89.0|-88.0|-87.78048|1.64194 +2016-07-01|89.0|-89.0|-88.77002|1.64994 +2016-07-01|89.0|-90.0|-89.76072|1.65799 +2016-07-01|89.0|-91.0|-90.75258|1.66611 +2016-07-01|89.0|-92.0|-91.74562|1.67428 +2016-07-01|89.0|-93.0|-92.73988|1.6825 +2016-07-01|89.0|-94.0|-93.73536|1.69078 +2016-07-01|89.0|-95.0|-94.73209|1.6991 +2016-07-01|89.0|-96.0|-95.73009|1.70747 +2016-07-01|89.0|-97.0|-96.72938|1.71589 +2016-07-01|89.0|-98.0|-97.72998|1.72435 +2016-07-01|89.0|-99.0|-98.73191|1.73285 +2016-07-01|89.0|-100.0|-99.73518|1.7414 +2016-07-01|89.0|-101.0|-100.73983|1.74997 +2016-07-01|89.0|-102.0|-101.74586|1.75859 +2016-07-01|89.0|-103.0|-102.7533|1.76723 +2016-07-01|89.0|-104.0|-103.76217|1.7759 +2016-07-01|89.0|-105.0|-104.77248|1.7846 +2016-07-01|89.0|-106.0|-105.78426|1.79332 +2016-07-01|89.0|-107.0|-106.79753|1.80206 +2016-07-01|89.0|-108.0|-107.81229|1.81082 +2016-07-01|89.0|-109.0|-108.82858|1.81959 +2016-07-01|89.0|-110.0|-109.8464|1.82837 +2016-07-01|89.0|-111.0|-110.86577|1.83716 +2016-07-01|89.0|-112.0|-111.88672|1.84595 +2016-07-01|89.0|-113.0|-112.90925|1.85475 +2016-07-01|89.0|-114.0|-113.93338|1.86353 +2016-07-01|89.0|-115.0|-114.95912|1.87231 +2016-07-01|89.0|-116.0|-115.9865|1.88108 +2016-07-01|89.0|-117.0|-117.01551|1.88983 +2016-07-01|89.0|-118.0|-118.04619|1.89856 +2016-07-01|89.0|-119.0|-119.07852|1.90727 +2016-07-01|89.0|-120.0|-120.11254|1.91595 +2016-07-01|89.0|-121.0|-121.14824|1.92459 +2016-07-01|89.0|-122.0|-122.18564|1.9332 +2016-07-01|89.0|-123.0|-123.22473|1.94176 +2016-07-01|89.0|-124.0|-124.26554|1.95027 +2016-07-01|89.0|-125.0|-125.30807|1.95873 +2016-07-01|89.0|-126.0|-126.35231|1.96713 +2016-07-01|89.0|-127.0|-127.39828|1.97547 +2016-07-01|89.0|-128.0|-128.44597|1.98374 +2016-07-01|89.0|-129.0|-129.49539|1.99194 +2016-07-01|89.0|-130.0|-130.54654|2.00006 +2016-07-01|89.0|-131.0|-131.5994|2.00809 +2016-07-01|89.0|-132.0|-132.65399|2.01603 +2016-07-01|89.0|-133.0|-133.71029|2.02388 +2016-07-01|89.0|-134.0|-134.7683|2.03162 +2016-07-01|89.0|-135.0|-135.82801|2.03926 +2016-07-01|89.0|-136.0|-136.88941|2.04678 +2016-07-01|89.0|-137.0|-137.95249|2.05418 +2016-07-01|89.0|-138.0|-139.01724|2.06146 +2016-07-01|89.0|-139.0|-140.08363|2.0686 +2016-07-01|89.0|-140.0|-141.15166|2.07561 +2016-07-01|89.0|-141.0|-142.22131|2.08248 +2016-07-01|89.0|-142.0|-143.29255|2.08919 +2016-07-01|89.0|-143.0|-144.36536|2.09575 +2016-07-01|89.0|-144.0|-145.43973|2.10215 +2016-07-01|89.0|-145.0|-146.51562|2.10838 +2016-07-01|89.0|-146.0|-147.593|2.11444 +2016-07-01|89.0|-147.0|-148.67185|2.12032 +2016-07-01|89.0|-148.0|-149.75214|2.12601 +2016-07-01|89.0|-149.0|-150.83382|2.13152 +2016-07-01|89.0|-150.0|-151.91688|2.13682 +2016-07-01|89.0|-151.0|-153.00126|2.14193 +2016-07-01|89.0|-152.0|-154.08693|2.14683 +2016-07-01|89.0|-153.0|-155.17385|2.15151 +2016-07-01|89.0|-154.0|-156.26198|2.15598 +2016-07-01|89.0|-155.0|-157.35126|2.16023 +2016-07-01|89.0|-156.0|-158.44167|2.16425 +2016-07-01|89.0|-157.0|-159.53313|2.16803 +2016-07-01|89.0|-158.0|-160.62562|2.17158 +2016-07-01|89.0|-159.0|-161.71907|2.17489 +2016-07-01|89.0|-160.0|-162.81343|2.17795 +2016-07-01|89.0|-161.0|-163.90865|2.18077 +2016-07-01|89.0|-162.0|-165.00467|2.18333 +2016-07-01|89.0|-163.0|-166.10143|2.18563 +2016-07-01|89.0|-164.0|-167.19888|2.18768 +2016-07-01|89.0|-165.0|-168.29695|2.18946 +2016-07-01|89.0|-166.0|-169.39558|2.19098 +2016-07-01|89.0|-167.0|-170.49472|2.19223 +2016-07-01|89.0|-168.0|-171.59429|2.19321 +2016-07-01|89.0|-169.0|-172.69424|2.19392 +2016-07-01|89.0|-170.0|-173.79449|2.19435 +2016-07-01|89.0|-171.0|-174.89498|2.19451 +2016-07-01|89.0|-172.0|-175.99566|2.1944 +2016-07-01|89.0|-173.0|-177.09644|2.194 +2016-07-01|89.0|-174.0|-178.19726|2.19334 +2016-07-01|89.0|-175.0|-179.29805|2.19239 +2016-07-01|89.0|-176.0|179.60125|2.19117 +2016-07-01|89.0|-177.0|178.5007|2.18967 +2016-07-01|89.0|-178.0|177.40039|2.1879 +2016-07-01|89.0|-179.0|176.30038|2.18586 +2016-07-01|-1.0|0.0|-5.64429|0.12803 +2016-07-01|-1.0|1.0|-5.28608|0.12918 +2016-07-01|-1.0|2.0|-4.93399|0.13034 +2016-07-01|-1.0|3.0|-4.58777|0.1315 +2016-07-01|-1.0|4.0|-4.24714|0.13264 +2016-07-01|-1.0|5.0|-3.9119|0.13376 +2016-07-01|-1.0|6.0|-3.58189|0.13483 +2016-07-01|-1.0|7.0|-3.25705|0.13583 +2016-07-01|-1.0|8.0|-2.93739|0.13674 +2016-07-01|-1.0|9.0|-2.62304|0.13753 +2016-07-01|-1.0|10.0|-2.31424|0.13817 +2016-07-01|-1.0|11.0|-2.01138|0.13863 +2016-07-01|-1.0|12.0|-1.71495|0.13887 +2016-07-01|-1.0|13.0|-1.4256|0.13886 +2016-07-01|-1.0|14.0|-1.14413|0.13856 +2016-07-01|-1.0|15.0|-0.87144|0.13793 +2016-07-01|-1.0|16.0|-0.60858|0.13694 +2016-07-01|-1.0|17.0|-0.35671|0.13557 +2016-07-01|-1.0|18.0|-0.11709|0.13378 +2016-07-01|-1.0|19.0|0.10895|0.13155 +2016-07-01|-1.0|20.0|0.32003|0.12886 +2016-07-01|-1.0|21.0|0.51473|0.12571 +2016-07-01|-1.0|22.0|0.69163|0.12209 +2016-07-01|-1.0|23.0|0.84935|0.11801 +2016-07-01|-1.0|24.0|0.98659|0.11348 +2016-07-01|-1.0|25.0|1.10211|0.10853 +2016-07-01|-1.0|26.0|1.19484|0.10318 +2016-07-01|-1.0|27.0|1.26385|0.09749 +2016-07-01|-1.0|28.0|1.3084|0.0915 +2016-07-01|-1.0|29.0|1.32796|0.08527 +2016-07-01|-1.0|30.0|1.32226|0.07885 +2016-07-01|-1.0|31.0|1.29125|0.07233 +2016-07-01|-1.0|32.0|1.23519|0.06578 +2016-07-01|-1.0|33.0|1.15457|0.05927 +2016-07-01|-1.0|34.0|1.05019|0.05287 +2016-07-01|-1.0|35.0|0.9231|0.04668 +2016-07-01|-1.0|36.0|0.77462|0.04076 +2016-07-01|-1.0|37.0|0.60631|0.03518 +2016-07-01|-1.0|38.0|0.41994|0.03003 +2016-07-01|-1.0|39.0|0.21749|0.02534 +2016-07-01|-1.0|40.0|0.00109|0.02119 +2016-07-01|-1.0|41.0|-0.22698|0.01761 +2016-07-01|-1.0|42.0|-0.46439|0.01465 +2016-07-01|-1.0|43.0|-0.70873|0.01232 +2016-07-01|-1.0|44.0|-0.95759|0.01064 +2016-07-01|-1.0|45.0|-1.20859|0.00962 +2016-07-01|-1.0|46.0|-1.45942|0.00924 +2016-07-01|-1.0|47.0|-1.70788|0.0095 +2016-07-01|-1.0|48.0|-1.95192|0.01036 +2016-07-01|-1.0|49.0|-2.18962|0.01179 +2016-07-01|-1.0|50.0|-2.4193|0.01375 +2016-07-01|-1.0|51.0|-2.63945|0.01618 +2016-07-01|-1.0|52.0|-2.8488|0.01904 +2016-07-01|-1.0|53.0|-3.04631|0.02225 +2016-07-01|-1.0|54.0|-3.23115|0.02577 +2016-07-01|-1.0|55.0|-3.40273|0.02953 +2016-07-01|-1.0|56.0|-3.56067|0.03346 +2016-07-01|-1.0|57.0|-3.70478|0.0375 +2016-07-01|-1.0|58.0|-3.83505|0.0416 +2016-07-01|-1.0|59.0|-3.9516|0.04569 +2016-07-01|-1.0|60.0|-4.05472|0.04972 +2016-07-01|-1.0|61.0|-4.14476|0.05365 +2016-07-01|-1.0|62.0|-4.22215|0.05744 +2016-07-01|-1.0|63.0|-4.28736|0.06105 +2016-07-01|-1.0|64.0|-4.34087|0.06444 +2016-07-01|-1.0|65.0|-4.38316|0.06761 +2016-07-01|-1.0|66.0|-4.41466|0.07052 +2016-07-01|-1.0|67.0|-4.43574|0.07317 +2016-07-01|-1.0|68.0|-4.44671|0.07556 +2016-07-01|-1.0|69.0|-4.44781|0.07767 +2016-07-01|-1.0|70.0|-4.43915|0.07952 +2016-07-01|-1.0|71.0|-4.42079|0.0811 +2016-07-01|-1.0|72.0|-4.3927|0.08244 +2016-07-01|-1.0|73.0|-4.35475|0.08352 +2016-07-01|-1.0|74.0|-4.30677|0.08438 +2016-07-01|-1.0|75.0|-4.24852|0.08501 +2016-07-01|-1.0|76.0|-4.17976|0.08544 +2016-07-01|-1.0|77.0|-4.10023|0.08565 +2016-07-01|-1.0|78.0|-4.00968|0.08568 +2016-07-01|-1.0|79.0|-3.90791|0.08551 +2016-07-01|-1.0|80.0|-3.79481|0.08515 +2016-07-01|-1.0|81.0|-3.67035|0.08461 +2016-07-01|-1.0|82.0|-3.5346|0.08387 +2016-07-01|-1.0|83.0|-3.3878|0.08293 +2016-07-01|-1.0|84.0|-3.23033|0.08178 +2016-07-01|-1.0|85.0|-3.06272|0.08041 +2016-07-01|-1.0|86.0|-2.88571|0.07881 +2016-07-01|-1.0|87.0|-2.70019|0.07695 +2016-07-01|-1.0|88.0|-2.50723|0.07483 +2016-07-01|-1.0|89.0|-2.3081|0.07243 +2016-07-01|-1.0|90.0|-2.10418|0.06972 +2016-07-01|-1.0|91.0|-1.89702|0.0667 +2016-07-01|-1.0|92.0|-1.68828|0.06335 +2016-07-01|-1.0|93.0|-1.47969|0.05967 +2016-07-01|-1.0|94.0|-1.27305|0.05563 +2016-07-01|-1.0|95.0|-1.07018|0.05124 +2016-07-01|-1.0|96.0|-0.87288|0.0465 +2016-07-01|-1.0|97.0|-0.68289|0.04142 +2016-07-01|-1.0|98.0|-0.50188|0.03599 +2016-07-01|-1.0|99.0|-0.33137|0.03025 +2016-07-01|-1.0|100.0|-0.17271|0.0242 +2016-07-01|-1.0|101.0|-0.02708|0.01788 +2016-07-01|-1.0|102.0|0.10458|0.01131 +2016-07-01|-1.0|103.0|0.22158|0.00453 +2016-07-01|-1.0|104.0|0.32349|-0.00243 +2016-07-01|-1.0|105.0|0.41017|-0.00951 +2016-07-01|-1.0|106.0|0.48175|-0.01667 +2016-07-01|-1.0|107.0|0.53867|-0.02387 +2016-07-01|-1.0|108.0|0.58162|-0.03105 +2016-07-01|-1.0|109.0|0.61158|-0.03817 +2016-07-01|-1.0|110.0|0.62976|-0.04516 +2016-07-01|-1.0|111.0|0.63761|-0.05198 +2016-07-01|-1.0|112.0|0.63675|-0.05859 +2016-07-01|-1.0|113.0|0.62898|-0.06492 +2016-07-01|-1.0|114.0|0.61622|-0.07094 +2016-07-01|-1.0|115.0|0.60046|-0.0766 +2016-07-01|-1.0|116.0|0.58374|-0.08188 +2016-07-01|-1.0|117.0|0.56808|-0.08672 +2016-07-01|-1.0|118.0|0.5555|-0.09112 +2016-07-01|-1.0|119.0|0.5479|-0.09503 +2016-07-01|-1.0|120.0|0.54708|-0.09846 +2016-07-01|-1.0|121.0|0.55468|-0.10138 +2016-07-01|-1.0|122.0|0.57218|-0.10379 +2016-07-01|-1.0|123.0|0.60084|-0.10568 +2016-07-01|-1.0|124.0|0.64172|-0.10707 +2016-07-01|-1.0|125.0|0.69564|-0.10795 +2016-07-01|-1.0|126.0|0.76319|-0.10835 +2016-07-01|-1.0|127.0|0.84471|-0.10828 +2016-07-01|-1.0|128.0|0.94033|-0.10776 +2016-07-01|-1.0|129.0|1.04996|-0.10681 +2016-07-01|-1.0|130.0|1.17329|-0.10546 +2016-07-01|-1.0|131.0|1.30984|-0.10374 +2016-07-01|-1.0|132.0|1.45898|-0.10167 +2016-07-01|-1.0|133.0|1.61993|-0.09929 +2016-07-01|-1.0|134.0|1.7918|-0.09663 +2016-07-01|-1.0|135.0|1.97365|-0.09371 +2016-07-01|-1.0|136.0|2.16447|-0.09057 +2016-07-01|-1.0|137.0|2.36322|-0.08724 +2016-07-01|-1.0|138.0|2.56887|-0.08374 +2016-07-01|-1.0|139.0|2.78043|-0.08011 +2016-07-01|-1.0|140.0|2.99694|-0.07636 +2016-07-01|-1.0|141.0|3.21749|-0.07252 +2016-07-01|-1.0|142.0|3.44126|-0.06861 +2016-07-01|-1.0|143.0|3.66751|-0.06466 +2016-07-01|-1.0|144.0|3.89556|-0.06068 +2016-07-01|-1.0|145.0|4.12483|-0.05668 +2016-07-01|-1.0|146.0|4.35483|-0.05269 +2016-07-01|-1.0|147.0|4.58511|-0.0487 +2016-07-01|-1.0|148.0|4.81532|-0.04474 +2016-07-01|-1.0|149.0|5.04512|-0.04082 +2016-07-01|-1.0|150.0|5.27423|-0.03694 +2016-07-01|-1.0|151.0|5.50238|-0.0331 +2016-07-01|-1.0|152.0|5.72931|-0.02932 +2016-07-01|-1.0|153.0|5.95474|-0.02561 +2016-07-01|-1.0|154.0|6.17837|-0.02195 +2016-07-01|-1.0|155.0|6.39989|-0.01837 +2016-07-01|-1.0|156.0|6.61891|-0.01485 +2016-07-01|-1.0|157.0|6.83501|-0.01142 +2016-07-01|-1.0|158.0|7.04771|-0.00806 +2016-07-01|-1.0|159.0|7.25649|-0.00478 +2016-07-01|-1.0|160.0|7.46075|-0.00159 +2016-07-01|-1.0|161.0|7.65987|0.00151 +2016-07-01|-1.0|162.0|7.85319|0.00452 +2016-07-01|-1.0|163.0|8.04|0.00743 +2016-07-01|-1.0|164.0|8.21961|0.01025 +2016-07-01|-1.0|165.0|8.39131|0.01296 +2016-07-01|-1.0|166.0|8.55441|0.01556 +2016-07-01|-1.0|167.0|8.70825|0.01805 +2016-07-01|-1.0|168.0|8.85223|0.02042 +2016-07-01|-1.0|169.0|8.9858|0.02266 +2016-07-01|-1.0|170.0|9.10852|0.02477 +2016-07-01|-1.0|171.0|9.22|0.02675 +2016-07-01|-1.0|172.0|9.31999|0.02858 +2016-07-01|-1.0|173.0|9.40834|0.03026 +2016-07-01|-1.0|174.0|9.48501|0.03179 +2016-07-01|-1.0|175.0|9.5501|0.03315 +2016-07-01|-1.0|176.0|9.60382|0.03434 +2016-07-01|-1.0|177.0|9.64651|0.03535 +2016-07-01|-1.0|178.0|9.67863|0.03618 +2016-07-01|-1.0|179.0|9.70073|0.03682 +2016-07-01|-1.0|-1.0|-6.00894|0.1269 +2016-07-01|-1.0|-2.0|-6.3803|0.12579 +2016-07-01|-1.0|-3.0|-6.75863|0.1247 +2016-07-01|-1.0|-4.0|-7.14414|0.12363 +2016-07-01|-1.0|-5.0|-7.53701|0.12259 +2016-07-01|-1.0|-6.0|-7.93732|0.12158 +2016-07-01|-1.0|-7.0|-8.34508|0.12059 +2016-07-01|-1.0|-8.0|-8.76022|0.11963 +2016-07-01|-1.0|-9.0|-9.18257|0.11868 +2016-07-01|-1.0|-10.0|-9.61182|0.11776 +2016-07-01|-1.0|-11.0|-10.0476|0.11685 +2016-07-01|-1.0|-12.0|-10.48938|0.11595 +2016-07-01|-1.0|-13.0|-10.93654|0.11505 +2016-07-01|-1.0|-14.0|-11.38833|0.11416 +2016-07-01|-1.0|-15.0|-11.8439|0.11326 +2016-07-01|-1.0|-16.0|-12.30227|0.11235 +2016-07-01|-1.0|-17.0|-12.76237|0.11141 +2016-07-01|-1.0|-18.0|-13.22302|0.11044 +2016-07-01|-1.0|-19.0|-13.68295|0.10942 +2016-07-01|-1.0|-20.0|-14.14082|0.10833 +2016-07-01|-1.0|-21.0|-14.5952|0.10717 +2016-07-01|-1.0|-22.0|-15.0446|0.1059 +2016-07-01|-1.0|-23.0|-15.48749|0.10451 +2016-07-01|-1.0|-24.0|-15.92231|0.10298 +2016-07-01|-1.0|-25.0|-16.34743|0.10129 +2016-07-01|-1.0|-26.0|-16.76125|0.0994 +2016-07-01|-1.0|-27.0|-17.16213|0.0973 +2016-07-01|-1.0|-28.0|-17.54847|0.09496 +2016-07-01|-1.0|-29.0|-17.91865|0.09236 +2016-07-01|-1.0|-30.0|-18.27111|0.08948 +2016-07-01|-1.0|-31.0|-18.60429|0.0863 +2016-07-01|-1.0|-32.0|-18.91671|0.0828 +2016-07-01|-1.0|-33.0|-19.20692|0.07896 +2016-07-01|-1.0|-34.0|-19.47355|0.07479 +2016-07-01|-1.0|-35.0|-19.71526|0.07026 +2016-07-01|-1.0|-36.0|-19.93082|0.06537 +2016-07-01|-1.0|-37.0|-20.11905|0.06013 +2016-07-01|-1.0|-38.0|-20.27888|0.05454 +2016-07-01|-1.0|-39.0|-20.40931|0.0486 +2016-07-01|-1.0|-40.0|-20.50941|0.04233 +2016-07-01|-1.0|-41.0|-20.57839|0.03575 +2016-07-01|-1.0|-42.0|-20.61551|0.02888 +2016-07-01|-1.0|-43.0|-20.62015|0.02173 +2016-07-01|-1.0|-44.0|-20.5918|0.01435 +2016-07-01|-1.0|-45.0|-20.53003|0.00675 +2016-07-01|-1.0|-46.0|-20.43454|-0.00103 +2016-07-01|-1.0|-47.0|-20.30512|-0.00896 +2016-07-01|-1.0|-48.0|-20.14167|-0.01699 +2016-07-01|-1.0|-49.0|-19.94421|-0.02509 +2016-07-01|-1.0|-50.0|-19.71287|-0.03322 +2016-07-01|-1.0|-51.0|-19.44788|-0.04134 +2016-07-01|-1.0|-52.0|-19.1496|-0.04941 +2016-07-01|-1.0|-53.0|-18.81849|-0.05739 +2016-07-01|-1.0|-54.0|-18.45515|-0.06525 +2016-07-01|-1.0|-55.0|-18.06028|-0.07294 +2016-07-01|-1.0|-56.0|-17.63469|-0.08044 +2016-07-01|-1.0|-57.0|-17.17932|-0.0877 +2016-07-01|-1.0|-58.0|-16.69521|-0.09471 +2016-07-01|-1.0|-59.0|-16.18352|-0.10142 +2016-07-01|-1.0|-60.0|-15.64552|-0.10782 +2016-07-01|-1.0|-61.0|-15.0826|-0.11388 +2016-07-01|-1.0|-62.0|-14.49624|-0.11958 +2016-07-01|-1.0|-63.0|-13.88802|-0.12491 +2016-07-01|-1.0|-64.0|-13.25963|-0.12986 +2016-07-01|-1.0|-65.0|-12.61282|-0.13441 +2016-07-01|-1.0|-66.0|-11.94945|-0.13856 +2016-07-01|-1.0|-67.0|-11.27146|-0.1423 +2016-07-01|-1.0|-68.0|-10.58083|-0.14563 +2016-07-01|-1.0|-69.0|-9.87961|-0.14855 +2016-07-01|-1.0|-70.0|-9.1699|-0.15107 +2016-07-01|-1.0|-71.0|-8.45385|-0.15318 +2016-07-01|-1.0|-72.0|-7.7336|-0.1549 +2016-07-01|-1.0|-73.0|-7.01134|-0.15622 +2016-07-01|-1.0|-74.0|-6.28924|-0.15717 +2016-07-01|-1.0|-75.0|-5.56946|-0.15774 +2016-07-01|-1.0|-76.0|-4.85413|-0.15795 +2016-07-01|-1.0|-77.0|-4.14537|-0.15782 +2016-07-01|-1.0|-78.0|-3.4452|-0.15734 +2016-07-01|-1.0|-79.0|-2.75562|-0.15655 +2016-07-01|-1.0|-80.0|-2.07851|-0.15545 +2016-07-01|-1.0|-81.0|-1.4157|-0.15406 +2016-07-01|-1.0|-82.0|-0.76889|-0.15239 +2016-07-01|-1.0|-83.0|-0.13967|-0.15047 +2016-07-01|-1.0|-84.0|0.47049|-0.14831 +2016-07-01|-1.0|-85.0|1.06025|-0.14594 +2016-07-01|-1.0|-86.0|1.62841|-0.14337 +2016-07-01|-1.0|-87.0|2.17393|-0.14062 +2016-07-01|-1.0|-88.0|2.6959|-0.13773 +2016-07-01|-1.0|-89.0|3.19359|-0.1347 +2016-07-01|-1.0|-90.0|3.66641|-0.13157 +2016-07-01|-1.0|-91.0|4.11396|-0.12836 +2016-07-01|-1.0|-92.0|4.53597|-0.12509 +2016-07-01|-1.0|-93.0|4.93235|-0.12179 +2016-07-01|-1.0|-94.0|5.30316|-0.11847 +2016-07-01|-1.0|-95.0|5.64863|-0.11516 +2016-07-01|-1.0|-96.0|5.96913|-0.11188 +2016-07-01|-1.0|-97.0|6.26517|-0.10864 +2016-07-01|-1.0|-98.0|6.53741|-0.10547 +2016-07-01|-1.0|-99.0|6.78663|-0.10237 +2016-07-01|-1.0|-100.0|7.01374|-0.09937 +2016-07-01|-1.0|-101.0|7.21976|-0.09646 +2016-07-01|-1.0|-102.0|7.40578|-0.09366 +2016-07-01|-1.0|-103.0|7.573|-0.09098 +2016-07-01|-1.0|-104.0|7.72269|-0.08841 +2016-07-01|-1.0|-105.0|7.85617|-0.08595 +2016-07-01|-1.0|-106.0|7.97479|-0.0836 +2016-07-01|-1.0|-107.0|8.07994|-0.08137 +2016-07-01|-1.0|-108.0|8.173|-0.07923 +2016-07-01|-1.0|-109.0|8.25535|-0.07717 +2016-07-01|-1.0|-110.0|8.32834|-0.0752 +2016-07-01|-1.0|-111.0|8.39328|-0.0733 +2016-07-01|-1.0|-112.0|8.45144|-0.07145 +2016-07-01|-1.0|-113.0|8.50398|-0.06964 +2016-07-01|-1.0|-114.0|8.552|-0.06786 +2016-07-01|-1.0|-115.0|8.59652|-0.0661 +2016-07-01|-1.0|-116.0|8.63844|-0.06433 +2016-07-01|-1.0|-117.0|8.67853|-0.06256 +2016-07-01|-1.0|-118.0|8.71748|-0.06078 +2016-07-01|-1.0|-119.0|8.75584|-0.05896 +2016-07-01|-1.0|-120.0|8.79404|-0.05712 +2016-07-01|-1.0|-121.0|8.83241|-0.05525 +2016-07-01|-1.0|-122.0|8.87114|-0.05334 +2016-07-01|-1.0|-123.0|8.91033|-0.05139 +2016-07-01|-1.0|-124.0|8.94999|-0.04942 +2016-07-01|-1.0|-125.0|8.99001|-0.04742 +2016-07-01|-1.0|-126.0|9.03024|-0.0454 +2016-07-01|-1.0|-127.0|9.07043|-0.04337 +2016-07-01|-1.0|-128.0|9.11029|-0.04134 +2016-07-01|-1.0|-129.0|9.1495|-0.03931 +2016-07-01|-1.0|-130.0|9.1877|-0.03731 +2016-07-01|-1.0|-131.0|9.2245|-0.03533 +2016-07-01|-1.0|-132.0|9.25955|-0.03339 +2016-07-01|-1.0|-133.0|9.29248|-0.0315 +2016-07-01|-1.0|-134.0|9.32294|-0.02966 +2016-07-01|-1.0|-135.0|9.35063|-0.02788 +2016-07-01|-1.0|-136.0|9.37528|-0.02616 +2016-07-01|-1.0|-137.0|9.39667|-0.02451 +2016-07-01|-1.0|-138.0|9.41464|-0.02293 +2016-07-01|-1.0|-139.0|9.42908|-0.0214 +2016-07-01|-1.0|-140.0|9.43994|-0.01993 +2016-07-01|-1.0|-141.0|9.44724|-0.01852 +2016-07-01|-1.0|-142.0|9.45107|-0.01714 +2016-07-01|-1.0|-143.0|9.45156|-0.0158 +2016-07-01|-1.0|-144.0|9.44894|-0.01448 +2016-07-01|-1.0|-145.0|9.44346|-0.01318 +2016-07-01|-1.0|-146.0|9.43545|-0.01187 +2016-07-01|-1.0|-147.0|9.42526|-0.01054 +2016-07-01|-1.0|-148.0|9.41332|-0.00918 +2016-07-01|-1.0|-149.0|9.40006|-0.00779 +2016-07-01|-1.0|-150.0|9.38595|-0.00635 +2016-07-01|-1.0|-151.0|9.37148|-0.00485 +2016-07-01|-1.0|-152.0|9.35716|-0.00328 +2016-07-01|-1.0|-153.0|9.34348|-0.00164 +2016-07-01|-1.0|-154.0|9.33095|7.0E-5 +2016-07-01|-1.0|-155.0|9.32003|0.00186 +2016-07-01|-1.0|-156.0|9.31117|0.00372 +2016-07-01|-1.0|-157.0|9.30478|0.00565 +2016-07-01|-1.0|-158.0|9.30124|0.00763 +2016-07-01|-1.0|-159.0|9.30084|0.00967 +2016-07-01|-1.0|-160.0|9.30384|0.01175 +2016-07-01|-1.0|-161.0|9.3104|0.01385 +2016-07-01|-1.0|-162.0|9.32063|0.01596 +2016-07-01|-1.0|-163.0|9.33453|0.01807 +2016-07-01|-1.0|-164.0|9.35202|0.02015 +2016-07-01|-1.0|-165.0|9.37292|0.02219 +2016-07-01|-1.0|-166.0|9.39697|0.02417 +2016-07-01|-1.0|-167.0|9.42381|0.02608 +2016-07-01|-1.0|-168.0|9.45296|0.02788 +2016-07-01|-1.0|-169.0|9.48387|0.02957 +2016-07-01|-1.0|-170.0|9.51591|0.03114 +2016-07-01|-1.0|-171.0|9.54835|0.03256 +2016-07-01|-1.0|-172.0|9.5804|0.03382 +2016-07-01|-1.0|-173.0|9.6112|0.03491 +2016-07-01|-1.0|-174.0|9.63985|0.03583 +2016-07-01|-1.0|-175.0|9.66542|0.03656 +2016-07-01|-1.0|-176.0|9.68694|0.03709 +2016-07-01|-1.0|-177.0|9.70344|0.03744 +2016-07-01|-1.0|-178.0|9.71397|0.03758 +2016-07-01|-1.0|-179.0|9.71761|0.03752 +2016-07-01|-2.0|0.0|-6.0392|0.13213 +2016-07-01|-2.0|1.0|-5.66787|0.13348 +2016-07-01|-2.0|2.0|-5.30242|0.13481 +2016-07-01|-2.0|3.0|-4.94268|0.13611 +2016-07-01|-2.0|4.0|-4.5885|0.13736 +2016-07-01|-2.0|5.0|-4.23976|0.13855 +2016-07-01|-2.0|6.0|-3.89641|0.13966 +2016-07-01|-2.0|7.0|-3.55849|0.14066 +2016-07-01|-2.0|8.0|-3.22612|0.14153 +2016-07-01|-2.0|9.0|-2.89951|0.14225 +2016-07-01|-2.0|10.0|-2.579|0.14278 +2016-07-01|-2.0|11.0|-2.26507|0.1431 +2016-07-01|-2.0|12.0|-1.95831|0.14316 +2016-07-01|-2.0|13.0|-1.65943|0.14293 +2016-07-01|-2.0|14.0|-1.36929|0.14239 +2016-07-01|-2.0|15.0|-1.08888|0.14149 +2016-07-01|-2.0|16.0|-0.8193|0.14021 +2016-07-01|-2.0|17.0|-0.56174|0.13852 +2016-07-01|-2.0|18.0|-0.31751|0.13638 +2016-07-01|-2.0|19.0|-0.08796|0.1338 +2016-07-01|-2.0|20.0|0.12551|0.13074 +2016-07-01|-2.0|21.0|0.32148|0.12721 +2016-07-01|-2.0|22.0|0.49853|0.1232 +2016-07-01|-2.0|23.0|0.65531|0.11873 +2016-07-01|-2.0|24.0|0.79053|0.11382 +2016-07-01|-2.0|25.0|0.90301|0.10849 +2016-07-01|-2.0|26.0|0.99171|0.10278 +2016-07-01|-2.0|27.0|1.05577|0.09674 +2016-07-01|-2.0|28.0|1.09451|0.09042 +2016-07-01|-2.0|29.0|1.10748|0.08387 +2016-07-01|-2.0|30.0|1.0945|0.07717 +2016-07-01|-2.0|31.0|1.05561|0.07039 +2016-07-01|-2.0|32.0|0.99114|0.06361 +2016-07-01|-2.0|33.0|0.90171|0.0569 +2016-07-01|-2.0|34.0|0.78819|0.05034 +2016-07-01|-2.0|35.0|0.65174|0.04402 +2016-07-01|-2.0|36.0|0.49378|0.038 +2016-07-01|-2.0|37.0|0.31595|0.03236 +2016-07-01|-2.0|38.0|0.12013|0.02716 +2016-07-01|-2.0|39.0|-0.09162|0.02248 +2016-07-01|-2.0|40.0|-0.31709|0.01835 +2016-07-01|-2.0|41.0|-0.55394|0.01483 +2016-07-01|-2.0|42.0|-0.79975|0.01194 +2016-07-01|-2.0|43.0|-1.05207|0.0097 +2016-07-01|-2.0|44.0|-1.30842|0.00814 +2016-07-01|-2.0|45.0|-1.5664|0.00725 +2016-07-01|-2.0|46.0|-1.82366|0.00702 +2016-07-01|-2.0|47.0|-2.07796|0.00744 +2016-07-01|-2.0|48.0|-2.32723|0.00846 +2016-07-01|-2.0|49.0|-2.56957|0.01007 +2016-07-01|-2.0|50.0|-2.80325|0.01221 +2016-07-01|-2.0|51.0|-3.02677|0.01482 +2016-07-01|-2.0|52.0|-3.23888|0.01786 +2016-07-01|-2.0|53.0|-3.43853|0.02126 +2016-07-01|-2.0|54.0|-3.6249|0.02496 +2016-07-01|-2.0|55.0|-3.79742|0.0289 +2016-07-01|-2.0|56.0|-3.9557|0.033 +2016-07-01|-2.0|57.0|-4.09958|0.03722 +2016-07-01|-2.0|58.0|-4.22905|0.04149 +2016-07-01|-2.0|59.0|-4.34427|0.04574 +2016-07-01|-2.0|60.0|-4.44551|0.04994 +2016-07-01|-2.0|61.0|-4.53314|0.05403 +2016-07-01|-2.0|62.0|-4.60761|0.05798 +2016-07-01|-2.0|63.0|-4.66938|0.06174 +2016-07-01|-2.0|64.0|-4.71897|0.06528 +2016-07-01|-2.0|65.0|-4.75683|0.06859 +2016-07-01|-2.0|66.0|-4.78342|0.07165 +2016-07-01|-2.0|67.0|-4.79911|0.07444 +2016-07-01|-2.0|68.0|-4.80422|0.07696 +2016-07-01|-2.0|69.0|-4.79898|0.07921 +2016-07-01|-2.0|70.0|-4.78353|0.08118 +2016-07-01|-2.0|71.0|-4.75791|0.08289 +2016-07-01|-2.0|72.0|-4.72211|0.08433 +2016-07-01|-2.0|73.0|-4.67601|0.08553 +2016-07-01|-2.0|74.0|-4.61944|0.08649 +2016-07-01|-2.0|75.0|-4.55219|0.08722 +2016-07-01|-2.0|76.0|-4.47401|0.08773 +2016-07-01|-2.0|77.0|-4.38465|0.08803 +2016-07-01|-2.0|78.0|-4.2839|0.08812 +2016-07-01|-2.0|79.0|-4.17157|0.08801 +2016-07-01|-2.0|80.0|-4.04756|0.08771 +2016-07-01|-2.0|81.0|-3.91186|0.0872 +2016-07-01|-2.0|82.0|-3.76459|0.08649 +2016-07-01|-2.0|83.0|-3.606|0.08557 +2016-07-01|-2.0|84.0|-3.4365|0.08442 +2016-07-01|-2.0|85.0|-3.25667|0.08305 +2016-07-01|-2.0|86.0|-3.06726|0.08143 +2016-07-01|-2.0|87.0|-2.86922|0.07954 +2016-07-01|-2.0|88.0|-2.66367|0.07738 +2016-07-01|-2.0|89.0|-2.45189|0.07493 +2016-07-01|-2.0|90.0|-2.23534|0.07216 +2016-07-01|-2.0|91.0|-2.01558|0.06907 +2016-07-01|-2.0|92.0|-1.79433|0.06565 +2016-07-01|-2.0|93.0|-1.57336|0.06187 +2016-07-01|-2.0|94.0|-1.35453|0.05775 +2016-07-01|-2.0|95.0|-1.13967|0.05326 +2016-07-01|-2.0|96.0|-0.93064|0.04842 +2016-07-01|-2.0|97.0|-0.72921|0.04323 +2016-07-01|-2.0|98.0|-0.53708|0.03771 +2016-07-01|-2.0|99.0|-0.35578|0.03186 +2016-07-01|-2.0|100.0|-0.18671|0.02571 +2016-07-01|-2.0|101.0|-0.03104|0.01928 +2016-07-01|-2.0|102.0|0.11026|0.01262 +2016-07-01|-2.0|103.0|0.2365|0.00574 +2016-07-01|-2.0|104.0|0.34726|-0.0013 +2016-07-01|-2.0|105.0|0.44238|-0.00846 +2016-07-01|-2.0|106.0|0.52201|-0.0157 +2016-07-01|-2.0|107.0|0.58659|-0.02297 +2016-07-01|-2.0|108.0|0.63683|-0.03021 +2016-07-01|-2.0|109.0|0.67372|-0.03738 +2016-07-01|-2.0|110.0|0.69849|-0.04441 +2016-07-01|-2.0|111.0|0.7126|-0.05128 +2016-07-01|-2.0|112.0|0.71771|-0.05791 +2016-07-01|-2.0|113.0|0.71562|-0.06426 +2016-07-01|-2.0|114.0|0.70827|-0.0703 +2016-07-01|-2.0|115.0|0.69768|-0.07598 +2016-07-01|-2.0|116.0|0.68589|-0.08126 +2016-07-01|-2.0|117.0|0.67497|-0.08611 +2016-07-01|-2.0|118.0|0.66691|-0.0905 +2016-07-01|-2.0|119.0|0.66365|-0.09441 +2016-07-01|-2.0|120.0|0.66699|-0.09783 +2016-07-01|-2.0|121.0|0.6786|-0.10074 +2016-07-01|-2.0|122.0|0.69995|-0.10313 +2016-07-01|-2.0|123.0|0.73231|-0.10501 +2016-07-01|-2.0|124.0|0.77674|-0.10638 +2016-07-01|-2.0|125.0|0.83408|-0.10725 +2016-07-01|-2.0|126.0|0.90489|-0.10763 +2016-07-01|-2.0|127.0|0.98954|-0.10754 +2016-07-01|-2.0|128.0|1.08813|-0.10699 +2016-07-01|-2.0|129.0|1.20058|-0.10602 +2016-07-01|-2.0|130.0|1.32658|-0.10465 +2016-07-01|-2.0|131.0|1.46563|-0.1029 +2016-07-01|-2.0|132.0|1.6171|-0.10081 +2016-07-01|-2.0|133.0|1.78019|-0.09841 +2016-07-01|-2.0|134.0|1.95403|-0.09572 +2016-07-01|-2.0|135.0|2.13764|-0.09277 +2016-07-01|-2.0|136.0|2.33001|-0.08961 +2016-07-01|-2.0|137.0|2.53011|-0.08625 +2016-07-01|-2.0|138.0|2.73689|-0.08273 +2016-07-01|-2.0|139.0|2.94936|-0.07907 +2016-07-01|-2.0|140.0|3.16655|-0.07529 +2016-07-01|-2.0|141.0|3.38755|-0.07143 +2016-07-01|-2.0|142.0|3.61155|-0.06751 +2016-07-01|-2.0|143.0|3.83778|-0.06353 +2016-07-01|-2.0|144.0|4.0656|-0.05953 +2016-07-01|-2.0|145.0|4.29441|-0.05552 +2016-07-01|-2.0|146.0|4.52372|-0.05151 +2016-07-01|-2.0|147.0|4.7531|-0.04752 +2016-07-01|-2.0|148.0|4.98219|-0.04355 +2016-07-01|-2.0|149.0|5.21067|-0.03962 +2016-07-01|-2.0|150.0|5.43826|-0.03574 +2016-07-01|-2.0|151.0|5.66469|-0.03191 +2016-07-01|-2.0|152.0|5.88972|-0.02813 +2016-07-01|-2.0|153.0|6.11308|-0.02442 +2016-07-01|-2.0|154.0|6.33448|-0.02077 +2016-07-01|-2.0|155.0|6.55361|-0.0172 +2016-07-01|-2.0|156.0|6.7701|-0.0137 +2016-07-01|-2.0|157.0|6.98353|-0.01028 +2016-07-01|-2.0|158.0|7.19345|-0.00693 +2016-07-01|-2.0|159.0|7.39934|-0.00368 +2016-07-01|-2.0|160.0|7.60063|-5.1E-4 +2016-07-01|-2.0|161.0|7.79671|0.00258 +2016-07-01|-2.0|162.0|7.98692|0.00557 +2016-07-01|-2.0|163.0|8.1706|0.00846 +2016-07-01|-2.0|164.0|8.34705|0.01125 +2016-07-01|-2.0|165.0|8.51559|0.01394 +2016-07-01|-2.0|166.0|8.67556|0.01652 +2016-07-01|-2.0|167.0|8.82631|0.01899 +2016-07-01|-2.0|168.0|8.96728|0.02135 +2016-07-01|-2.0|169.0|9.09793|0.02357 +2016-07-01|-2.0|170.0|9.21783|0.02567 +2016-07-01|-2.0|171.0|9.32664|0.02764 +2016-07-01|-2.0|172.0|9.42411|0.02946 +2016-07-01|-2.0|173.0|9.51012|0.03113 +2016-07-01|-2.0|174.0|9.58465|0.03265 +2016-07-01|-2.0|175.0|9.64781|0.03401 +2016-07-01|-2.0|176.0|9.69983|0.0352 +2016-07-01|-2.0|177.0|9.74106|0.03621 +2016-07-01|-2.0|178.0|9.77197|0.03704 +2016-07-01|-2.0|179.0|9.79312|0.03769 +2016-07-01|-2.0|-1.0|-6.41663|0.13076 +2016-07-01|-2.0|-2.0|-6.80032|0.12939 +2016-07-01|-2.0|-3.0|-7.19047|0.12802 +2016-07-01|-2.0|-4.0|-7.58719|0.12665 +2016-07-01|-2.0|-5.0|-7.99057|0.1253 +2016-07-01|-2.0|-6.0|-8.40065|0.12395 +2016-07-01|-2.0|-7.0|-8.81736|0.12261 +2016-07-01|-2.0|-8.0|-9.24057|0.12129 +2016-07-01|-2.0|-9.0|-9.67005|0.11999 +2016-07-01|-2.0|-10.0|-10.1055|0.1187 +2016-07-01|-2.0|-11.0|-10.54646|0.11742 +2016-07-01|-2.0|-12.0|-10.99242|0.11616 +2016-07-01|-2.0|-13.0|-11.44272|0.11491 +2016-07-01|-2.0|-14.0|-11.89662|0.11368 +2016-07-01|-2.0|-15.0|-12.35325|0.11244 +2016-07-01|-2.0|-16.0|-12.81165|0.1112 +2016-07-01|-2.0|-17.0|-13.27076|0.10996 +2016-07-01|-2.0|-18.0|-13.72943|0.10869 +2016-07-01|-2.0|-19.0|-14.1864|0.10739 +2016-07-01|-2.0|-20.0|-14.64035|0.10603 +2016-07-01|-2.0|-21.0|-15.0899|0.10462 +2016-07-01|-2.0|-22.0|-15.5336|0.10312 +2016-07-01|-2.0|-23.0|-15.96994|0.10151 +2016-07-01|-2.0|-24.0|-16.39739|0.09977 +2016-07-01|-2.0|-25.0|-16.81438|0.09788 +2016-07-01|-2.0|-26.0|-17.21934|0.09582 +2016-07-01|-2.0|-27.0|-17.61068|0.09355 +2016-07-01|-2.0|-28.0|-17.98682|0.09105 +2016-07-01|-2.0|-29.0|-18.3462|0.0883 +2016-07-01|-2.0|-30.0|-18.6873|0.08528 +2016-07-01|-2.0|-31.0|-19.0086|0.08197 +2016-07-01|-2.0|-32.0|-19.30865|0.07834 +2016-07-01|-2.0|-33.0|-19.58606|0.07439 +2016-07-01|-2.0|-34.0|-19.83947|0.0701 +2016-07-01|-2.0|-35.0|-20.06761|0.06546 +2016-07-01|-2.0|-36.0|-20.26927|0.06047 +2016-07-01|-2.0|-37.0|-20.44333|0.05512 +2016-07-01|-2.0|-38.0|-20.58873|0.04944 +2016-07-01|-2.0|-39.0|-20.70452|0.04341 +2016-07-01|-2.0|-40.0|-20.78982|0.03706 +2016-07-01|-2.0|-41.0|-20.84385|0.03039 +2016-07-01|-2.0|-42.0|-20.86593|0.02345 +2016-07-01|-2.0|-43.0|-20.85546|0.01623 +2016-07-01|-2.0|-44.0|-20.81195|0.00878 +2016-07-01|-2.0|-45.0|-20.73503|0.00113 +2016-07-01|-2.0|-46.0|-20.62439|-0.0067 +2016-07-01|-2.0|-47.0|-20.47987|-0.01466 +2016-07-01|-2.0|-48.0|-20.30138|-0.02272 +2016-07-01|-2.0|-49.0|-20.08896|-0.03084 +2016-07-01|-2.0|-50.0|-19.84277|-0.03899 +2016-07-01|-2.0|-51.0|-19.56304|-0.04711 +2016-07-01|-2.0|-52.0|-19.25015|-0.05517 +2016-07-01|-2.0|-53.0|-18.90458|-0.06313 +2016-07-01|-2.0|-54.0|-18.52692|-0.07096 +2016-07-01|-2.0|-55.0|-18.11789|-0.07861 +2016-07-01|-2.0|-56.0|-17.6783|-0.08605 +2016-07-01|-2.0|-57.0|-17.20909|-0.09325 +2016-07-01|-2.0|-58.0|-16.71132|-0.10017 +2016-07-01|-2.0|-59.0|-16.18615|-0.10679 +2016-07-01|-2.0|-60.0|-15.63486|-0.11308 +2016-07-01|-2.0|-61.0|-15.05884|-0.11902 +2016-07-01|-2.0|-62.0|-14.45959|-0.12459 +2016-07-01|-2.0|-63.0|-13.8387|-0.12977 +2016-07-01|-2.0|-64.0|-13.19787|-0.13456 +2016-07-01|-2.0|-65.0|-12.53889|-0.13893 +2016-07-01|-2.0|-66.0|-11.86363|-0.14288 +2016-07-01|-2.0|-67.0|-11.17405|-0.14642 +2016-07-01|-2.0|-68.0|-10.47218|-0.14953 +2016-07-01|-2.0|-69.0|-9.7601|-0.15222 +2016-07-01|-2.0|-70.0|-9.03994|-0.15449 +2016-07-01|-2.0|-71.0|-8.31389|-0.15635 +2016-07-01|-2.0|-72.0|-7.58414|-0.1578 +2016-07-01|-2.0|-73.0|-6.85291|-0.15886 +2016-07-01|-2.0|-74.0|-6.12242|-0.15952 +2016-07-01|-2.0|-75.0|-5.39487|-0.15981 +2016-07-01|-2.0|-76.0|-4.67244|-0.15974 +2016-07-01|-2.0|-77.0|-3.95725|-0.15932 +2016-07-01|-2.0|-78.0|-3.25139|-0.15856 +2016-07-01|-2.0|-79.0|-2.55686|-0.15749 +2016-07-01|-2.0|-80.0|-1.87557|-0.15611 +2016-07-01|-2.0|-81.0|-1.20936|-0.15445 +2016-07-01|-2.0|-82.0|-0.55993|-0.15252 +2016-07-01|-2.0|-83.0|0.07112|-0.15036 +2016-07-01|-2.0|-84.0|0.68233|-0.14796 +2016-07-01|-2.0|-85.0|1.27238|-0.14537 +2016-07-01|-2.0|-86.0|1.84009|-0.14259 +2016-07-01|-2.0|-87.0|2.38445|-0.13966 +2016-07-01|-2.0|-88.0|2.9046|-0.1366 +2016-07-01|-2.0|-89.0|3.39983|-0.13342 +2016-07-01|-2.0|-90.0|3.86962|-0.13016 +2016-07-01|-2.0|-91.0|4.31359|-0.12684 +2016-07-01|-2.0|-92.0|4.73155|-0.12347 +2016-07-01|-2.0|-93.0|5.12347|-0.12009 +2016-07-01|-2.0|-94.0|5.48946|-0.11672 +2016-07-01|-2.0|-95.0|5.82982|-0.11337 +2016-07-01|-2.0|-96.0|6.14496|-0.11006 +2016-07-01|-2.0|-97.0|6.43547|-0.10682 +2016-07-01|-2.0|-98.0|6.70207|-0.10365 +2016-07-01|-2.0|-99.0|6.9456|-0.10058 +2016-07-01|-2.0|-100.0|7.16702|-0.09761 +2016-07-01|-2.0|-101.0|7.36739|-0.09475 +2016-07-01|-2.0|-102.0|7.54787|-0.092 +2016-07-01|-2.0|-103.0|7.70971|-0.08938 +2016-07-01|-2.0|-104.0|7.85421|-0.08688 +2016-07-01|-2.0|-105.0|7.98271|-0.0845 +2016-07-01|-2.0|-106.0|8.09662|-0.08224 +2016-07-01|-2.0|-107.0|8.19734|-0.08008 +2016-07-01|-2.0|-108.0|8.28628|-0.07803 +2016-07-01|-2.0|-109.0|8.36483|-0.07607 +2016-07-01|-2.0|-110.0|8.43436|-0.07418 +2016-07-01|-2.0|-111.0|8.49617|-0.07237 +2016-07-01|-2.0|-112.0|8.55154|-0.0706 +2016-07-01|-2.0|-113.0|8.60163|-0.06887 +2016-07-01|-2.0|-114.0|8.64753|-0.06717 +2016-07-01|-2.0|-115.0|8.69025|-0.06547 +2016-07-01|-2.0|-116.0|8.73065|-0.06378 +2016-07-01|-2.0|-117.0|8.76953|-0.06207 +2016-07-01|-2.0|-118.0|8.80752|-0.06033 +2016-07-01|-2.0|-119.0|8.84517|-0.05857 +2016-07-01|-2.0|-120.0|8.88289|-0.05677 +2016-07-01|-2.0|-121.0|8.92098|-0.05493 +2016-07-01|-2.0|-122.0|8.95961|-0.05305 +2016-07-01|-2.0|-123.0|8.99887|-0.05113 +2016-07-01|-2.0|-124.0|9.03874|-0.04917 +2016-07-01|-2.0|-125.0|9.0791|-0.04718 +2016-07-01|-2.0|-126.0|9.11978|-0.04517 +2016-07-01|-2.0|-127.0|9.16052|-0.04314 +2016-07-01|-2.0|-128.0|9.20102|-0.04111 +2016-07-01|-2.0|-129.0|9.24094|-0.03908 +2016-07-01|-2.0|-130.0|9.27992|-0.03706 +2016-07-01|-2.0|-131.0|9.31757|-0.03507 +2016-07-01|-2.0|-132.0|9.35352|-0.03312 +2016-07-01|-2.0|-133.0|9.38741|-0.03121 +2016-07-01|-2.0|-134.0|9.41887|-0.02935 +2016-07-01|-2.0|-135.0|9.44762|-0.02755 +2016-07-01|-2.0|-136.0|9.47336|-0.02581 +2016-07-01|-2.0|-137.0|9.49589|-0.02414 +2016-07-01|-2.0|-138.0|9.51502|-0.02253 +2016-07-01|-2.0|-139.0|9.53064|-0.02098 +2016-07-01|-2.0|-140.0|9.54271|-0.01949 +2016-07-01|-2.0|-141.0|9.55123|-0.01805 +2016-07-01|-2.0|-142.0|9.55628|-0.01665 +2016-07-01|-2.0|-143.0|9.55798|-0.01529 +2016-07-01|-2.0|-144.0|9.55654|-0.01395 +2016-07-01|-2.0|-145.0|9.55221|-0.01262 +2016-07-01|-2.0|-146.0|9.54528|-0.01128 +2016-07-01|-2.0|-147.0|9.53611|-0.00993 +2016-07-01|-2.0|-148.0|9.5251|-0.00856 +2016-07-01|-2.0|-149.0|9.51267|-0.00714 +2016-07-01|-2.0|-150.0|9.49927|-0.00567 +2016-07-01|-2.0|-151.0|9.48538|-0.00415 +2016-07-01|-2.0|-152.0|9.4715|-0.00256 +2016-07-01|-2.0|-153.0|9.4581|-9.0E-4 +2016-07-01|-2.0|-154.0|9.44567|8.4E-4 +2016-07-01|-2.0|-155.0|9.43469|0.00264 +2016-07-01|-2.0|-156.0|9.42559|0.00452 +2016-07-01|-2.0|-157.0|9.41879|0.00647 +2016-07-01|-2.0|-158.0|9.41465|0.00848 +2016-07-01|-2.0|-159.0|9.41349|0.01053 +2016-07-01|-2.0|-160.0|9.41557|0.01262 +2016-07-01|-2.0|-161.0|9.42105|0.01474 +2016-07-01|-2.0|-162.0|9.43007|0.01687 +2016-07-01|-2.0|-163.0|9.44264|0.01898 +2016-07-01|-2.0|-164.0|9.4587|0.02107 +2016-07-01|-2.0|-165.0|9.47811|0.02312 +2016-07-01|-2.0|-166.0|9.50061|0.02511 +2016-07-01|-2.0|-167.0|9.52588|0.02702 +2016-07-01|-2.0|-168.0|9.55346|0.02882 +2016-07-01|-2.0|-169.0|9.58285|0.03051 +2016-07-01|-2.0|-170.0|9.61342|0.03208 +2016-07-01|-2.0|-171.0|9.64448|0.03349 +2016-07-01|-2.0|-172.0|9.67527|0.03475 +2016-07-01|-2.0|-173.0|9.70496|0.03584 +2016-07-01|-2.0|-174.0|9.73267|0.03675 +2016-07-01|-2.0|-175.0|9.75748|0.03747 +2016-07-01|-2.0|-176.0|9.77845|0.038 +2016-07-01|-2.0|-177.0|9.79463|0.03833 +2016-07-01|-2.0|-178.0|9.80508|0.03847 +2016-07-01|-2.0|-179.0|9.80889|0.0384 +2016-07-01|-3.0|0.0|-6.45626|0.13637 +2016-07-01|-3.0|1.0|-6.0713|0.13794 +2016-07-01|-3.0|2.0|-5.69196|0.13946 +2016-07-01|-3.0|3.0|-5.31818|0.1409 +2016-07-01|-3.0|4.0|-4.94991|0.14226 +2016-07-01|-3.0|5.0|-4.58715|0.14352 +2016-07-01|-3.0|6.0|-4.22997|0.14466 +2016-07-01|-3.0|7.0|-3.87849|0.14566 +2016-07-01|-3.0|8.0|-3.53297|0.14649 +2016-07-01|-3.0|9.0|-3.19371|0.14712 +2016-07-01|-3.0|10.0|-2.86117|0.14753 +2016-07-01|-3.0|11.0|-2.5359|0.14768 +2016-07-01|-3.0|12.0|-2.21859|0.14754 +2016-07-01|-3.0|13.0|-1.91003|0.14708 +2016-07-01|-3.0|14.0|-1.61117|0.14627 +2016-07-01|-3.0|15.0|-1.32304|0.14507 +2016-07-01|-3.0|16.0|-1.04681|0.14346 +2016-07-01|-3.0|17.0|-0.78373|0.14142 +2016-07-01|-3.0|18.0|-0.53511|0.13891 +2016-07-01|-3.0|19.0|-0.30236|0.13594 +2016-07-01|-3.0|20.0|-0.08687|0.13248 +2016-07-01|-3.0|21.0|0.10992|0.12854 +2016-07-01|-3.0|22.0|0.28662|0.12412 +2016-07-01|-3.0|23.0|0.44189|0.11924 +2016-07-01|-3.0|24.0|0.57449|0.11392 +2016-07-01|-3.0|25.0|0.68327|0.1082 +2016-07-01|-3.0|26.0|0.76725|0.10211 +2016-07-01|-3.0|27.0|0.82565|0.0957 +2016-07-01|-3.0|28.0|0.85785|0.08903 +2016-07-01|-3.0|29.0|0.86351|0.08217 +2016-07-01|-3.0|30.0|0.84251|0.07518 +2016-07-01|-3.0|31.0|0.79501|0.06814 +2016-07-01|-3.0|32.0|0.72143|0.06113 +2016-07-01|-3.0|33.0|0.62249|0.05423 +2016-07-01|-3.0|34.0|0.49918|0.04752 +2016-07-01|-3.0|35.0|0.35275|0.04107 +2016-07-01|-3.0|36.0|0.18472|0.03497 +2016-07-01|-3.0|37.0|-0.00315|0.02928 +2016-07-01|-3.0|38.0|-0.2089|0.02407 +2016-07-01|-3.0|39.0|-0.43038|0.01939 +2016-07-01|-3.0|40.0|-0.6653|0.01531 +2016-07-01|-3.0|41.0|-0.91123|0.01186 +2016-07-01|-3.0|42.0|-1.16571|0.00906 +2016-07-01|-3.0|43.0|-1.42619|0.00695 +2016-07-01|-3.0|44.0|-1.69019|0.00552 +2016-07-01|-3.0|45.0|-1.95523|0.00479 +2016-07-01|-3.0|46.0|-2.21894|0.00473 +2016-07-01|-3.0|47.0|-2.47907|0.00532 +2016-07-01|-3.0|48.0|-2.73351|0.00653 +2016-07-01|-3.0|49.0|-2.98035|0.00833 +2016-07-01|-3.0|50.0|-3.21787|0.01066 +2016-07-01|-3.0|51.0|-3.44457|0.01347 +2016-07-01|-3.0|52.0|-3.65919|0.0167 +2016-07-01|-3.0|53.0|-3.86069|0.0203 +2016-07-01|-3.0|54.0|-4.04828|0.02419 +2016-07-01|-3.0|55.0|-4.22138|0.02832 +2016-07-01|-3.0|56.0|-4.37963|0.03262 +2016-07-01|-3.0|57.0|-4.52288|0.03702 +2016-07-01|-3.0|58.0|-4.65112|0.04146 +2016-07-01|-3.0|59.0|-4.76454|0.0459 +2016-07-01|-3.0|60.0|-4.86341|0.05027 +2016-07-01|-3.0|61.0|-4.94813|0.05453 +2016-07-01|-3.0|62.0|-5.01914|0.05864 +2016-07-01|-3.0|63.0|-5.07695|0.06256 +2016-07-01|-3.0|64.0|-5.12203|0.06627 +2016-07-01|-3.0|65.0|-5.1549|0.06974 +2016-07-01|-3.0|66.0|-5.17598|0.07294 +2016-07-01|-3.0|67.0|-5.18567|0.07588 +2016-07-01|-3.0|68.0|-5.1843|0.07854 +2016-07-01|-3.0|69.0|-5.1721|0.08093 +2016-07-01|-3.0|70.0|-5.14922|0.08304 +2016-07-01|-3.0|71.0|-5.11572|0.08487 +2016-07-01|-3.0|72.0|-5.07159|0.08644 +2016-07-01|-3.0|73.0|-5.01671|0.08775 +2016-07-01|-3.0|74.0|-4.95094|0.08882 +2016-07-01|-3.0|75.0|-4.87406|0.08965 +2016-07-01|-3.0|76.0|-4.78586|0.09025 +2016-07-01|-3.0|77.0|-4.6861|0.09063 +2016-07-01|-3.0|78.0|-4.57457|0.09079 +2016-07-01|-3.0|79.0|-4.45112|0.09075 +2016-07-01|-3.0|80.0|-4.31567|0.09049 +2016-07-01|-3.0|81.0|-4.16824|0.09002 +2016-07-01|-3.0|82.0|-4.00896|0.08933 +2016-07-01|-3.0|83.0|-3.83812|0.08842 +2016-07-01|-3.0|84.0|-3.65616|0.08728 +2016-07-01|-3.0|85.0|-3.4637|0.08589 +2016-07-01|-3.0|86.0|-3.26152|0.08425 +2016-07-01|-3.0|87.0|-3.05062|0.08233 +2016-07-01|-3.0|88.0|-2.83214|0.08012 +2016-07-01|-3.0|89.0|-2.60742|0.0776 +2016-07-01|-3.0|90.0|-2.37794|0.07477 +2016-07-01|-3.0|91.0|-2.14534|0.0716 +2016-07-01|-3.0|92.0|-1.91135|0.06809 +2016-07-01|-3.0|93.0|-1.6778|0.06422 +2016-07-01|-3.0|94.0|-1.44658|0.05999 +2016-07-01|-3.0|95.0|-1.21956|0.0554 +2016-07-01|-3.0|96.0|-0.99864|0.05045 +2016-07-01|-3.0|97.0|-0.78561|0.04515 +2016-07-01|-3.0|98.0|-0.5822|0.03951 +2016-07-01|-3.0|99.0|-0.38998|0.03355 +2016-07-01|-3.0|100.0|-0.21035|0.02729 +2016-07-01|-3.0|101.0|-0.04452|0.02076 +2016-07-01|-3.0|102.0|0.10657|0.01399 +2016-07-01|-3.0|103.0|0.2422|0.00702 +2016-07-01|-3.0|104.0|0.36194|-1.1E-4 +2016-07-01|-3.0|105.0|0.46566|-0.00735 +2016-07-01|-3.0|106.0|0.5535|-0.01466 +2016-07-01|-3.0|107.0|0.62591|-0.022 +2016-07-01|-3.0|108.0|0.68363|-0.0293 +2016-07-01|-3.0|109.0|0.72764|-0.03651 +2016-07-01|-3.0|110.0|0.7592|-0.04359 +2016-07-01|-3.0|111.0|0.77979|-0.05049 +2016-07-01|-3.0|112.0|0.79107|-0.05715 +2016-07-01|-3.0|113.0|0.79488|-0.06352 +2016-07-01|-3.0|114.0|0.79316|-0.06957 +2016-07-01|-3.0|115.0|0.78795|-0.07526 +2016-07-01|-3.0|116.0|0.78131|-0.08054 +2016-07-01|-3.0|117.0|0.77531|-0.08538 +2016-07-01|-3.0|118.0|0.77197|-0.08977 +2016-07-01|-3.0|119.0|0.77323|-0.09367 +2016-07-01|-3.0|120.0|0.78091|-0.09708 +2016-07-01|-3.0|121.0|0.79668|-0.09997 +2016-07-01|-3.0|122.0|0.82201|-0.10235 +2016-07-01|-3.0|123.0|0.8582|-0.10422 +2016-07-01|-3.0|124.0|0.90629|-0.10557 +2016-07-01|-3.0|125.0|0.96712|-0.10642 +2016-07-01|-3.0|126.0|1.04127|-0.10678 +2016-07-01|-3.0|127.0|1.12909|-0.10667 +2016-07-01|-3.0|128.0|1.2307|-0.1061 +2016-07-01|-3.0|129.0|1.34599|-0.10511 +2016-07-01|-3.0|130.0|1.47466|-0.10372 +2016-07-01|-3.0|131.0|1.61622|-0.10195 +2016-07-01|-3.0|132.0|1.77001|-0.09984 +2016-07-01|-3.0|133.0|1.93524|-0.09742 +2016-07-01|-3.0|134.0|2.11103|-0.09471 +2016-07-01|-3.0|135.0|2.29639|-0.09174 +2016-07-01|-3.0|136.0|2.49032|-0.08856 +2016-07-01|-3.0|137.0|2.69177|-0.08518 +2016-07-01|-3.0|138.0|2.8997|-0.08164 +2016-07-01|-3.0|139.0|3.1131|-0.07796 +2016-07-01|-3.0|140.0|3.33101|-0.07417 +2016-07-01|-3.0|141.0|3.55252|-0.07029 +2016-07-01|-3.0|142.0|3.7768|-0.06635 +2016-07-01|-3.0|143.0|4.00312|-0.06236 +2016-07-01|-3.0|144.0|4.2308|-0.05835 +2016-07-01|-3.0|145.0|4.45927|-0.05433 +2016-07-01|-3.0|146.0|4.68804|-0.05032 +2016-07-01|-3.0|147.0|4.91667|-0.04632 +2016-07-01|-3.0|148.0|5.14482|-0.04235 +2016-07-01|-3.0|149.0|5.37216|-0.03842 +2016-07-01|-3.0|150.0|5.59843|-0.03454 +2016-07-01|-3.0|151.0|5.82337|-0.03071 +2016-07-01|-3.0|152.0|6.04673|-0.02694 +2016-07-01|-3.0|153.0|6.26826|-0.02324 +2016-07-01|-3.0|154.0|6.48768|-0.01961 +2016-07-01|-3.0|155.0|6.70468|-0.01605 +2016-07-01|-3.0|156.0|6.91891|-0.01257 +2016-07-01|-3.0|157.0|7.12997|-0.00916 +2016-07-01|-3.0|158.0|7.33741|-0.00584 +2016-07-01|-3.0|159.0|7.54072|-0.00261 +2016-07-01|-3.0|160.0|7.73935|5.4E-4 +2016-07-01|-3.0|161.0|7.9327|0.0036 +2016-07-01|-3.0|162.0|8.12014|0.00657 +2016-07-01|-3.0|163.0|8.30101|0.00943 +2016-07-01|-3.0|164.0|8.47465|0.0122 +2016-07-01|-3.0|165.0|8.6404|0.01487 +2016-07-01|-3.0|166.0|8.79759|0.01743 +2016-07-01|-3.0|167.0|8.94563|0.01988 +2016-07-01|-3.0|168.0|9.08396|0.02221 +2016-07-01|-3.0|169.0|9.21207|0.02442 +2016-07-01|-3.0|170.0|9.32955|0.0265 +2016-07-01|-3.0|171.0|9.43608|0.02845 +2016-07-01|-3.0|172.0|9.53144|0.03026 +2016-07-01|-3.0|173.0|9.61552|0.03193 +2016-07-01|-3.0|174.0|9.68832|0.03344 +2016-07-01|-3.0|175.0|9.74996|0.03479 +2016-07-01|-3.0|176.0|9.8007|0.03597 +2016-07-01|-3.0|177.0|9.84088|0.03699 +2016-07-01|-3.0|178.0|9.87099|0.03782 +2016-07-01|-3.0|179.0|9.8916|0.03847 +2016-07-01|-3.0|-1.0|-6.84693|0.13476 +2016-07-01|-3.0|-2.0|-7.24341|0.13311 +2016-07-01|-3.0|-3.0|-7.64575|0.13143 +2016-07-01|-3.0|-4.0|-8.05401|0.12974 +2016-07-01|-3.0|-5.0|-8.46818|0.12804 +2016-07-01|-3.0|-6.0|-8.8882|0.12633 +2016-07-01|-3.0|-7.0|-9.31396|0.12461 +2016-07-01|-3.0|-8.0|-9.74526|0.12291 +2016-07-01|-3.0|-9.0|-10.18181|0.12121 +2016-07-01|-3.0|-10.0|-10.62326|0.11952 +2016-07-01|-3.0|-11.0|-11.06913|0.11785 +2016-07-01|-3.0|-12.0|-11.51888|0.1162 +2016-07-01|-3.0|-13.0|-11.97183|0.11457 +2016-07-01|-3.0|-14.0|-12.42724|0.11295 +2016-07-01|-3.0|-15.0|-12.88424|0.11135 +2016-07-01|-3.0|-16.0|-13.34188|0.10977 +2016-07-01|-3.0|-17.0|-13.79912|0.10818 +2016-07-01|-3.0|-18.0|-14.25482|0.1066 +2016-07-01|-3.0|-19.0|-14.70777|0.105 +2016-07-01|-3.0|-20.0|-15.15669|0.10336 +2016-07-01|-3.0|-21.0|-15.60023|0.10168 +2016-07-01|-3.0|-22.0|-16.03698|0.09993 +2016-07-01|-3.0|-23.0|-16.46548|0.0981 +2016-07-01|-3.0|-24.0|-16.88426|0.09615 +2016-07-01|-3.0|-25.0|-17.29179|0.09407 +2016-07-01|-3.0|-26.0|-17.68656|0.09182 +2016-07-01|-3.0|-27.0|-18.06702|0.08939 +2016-07-01|-3.0|-28.0|-18.43165|0.08674 +2016-07-01|-3.0|-29.0|-18.77895|0.08385 +2016-07-01|-3.0|-30.0|-19.10742|0.0807 +2016-07-01|-3.0|-31.0|-19.41563|0.07727 +2016-07-01|-3.0|-32.0|-19.70215|0.07353 +2016-07-01|-3.0|-33.0|-19.96564|0.06947 +2016-07-01|-3.0|-34.0|-20.20481|0.06508 +2016-07-01|-3.0|-35.0|-20.4184|0.06035 +2016-07-01|-3.0|-36.0|-20.60527|0.05528 +2016-07-01|-3.0|-37.0|-20.76433|0.04985 +2016-07-01|-3.0|-38.0|-20.89456|0.04409 +2016-07-01|-3.0|-39.0|-20.99505|0.03799 +2016-07-01|-3.0|-40.0|-21.06496|0.03157 +2016-07-01|-3.0|-41.0|-21.10353|0.02485 +2016-07-01|-3.0|-42.0|-21.11012|0.01784 +2016-07-01|-3.0|-43.0|-21.08416|0.01058 +2016-07-01|-3.0|-44.0|-21.0252|0.00309 +2016-07-01|-3.0|-45.0|-20.93287|-0.0046 +2016-07-01|-3.0|-46.0|-20.8069|-0.01246 +2016-07-01|-3.0|-47.0|-20.64714|-0.02044 +2016-07-01|-3.0|-48.0|-20.45353|-0.02852 +2016-07-01|-3.0|-49.0|-20.22612|-0.03665 +2016-07-01|-3.0|-50.0|-19.96506|-0.04479 +2016-07-01|-3.0|-51.0|-19.67062|-0.0529 +2016-07-01|-3.0|-52.0|-19.34317|-0.06094 +2016-07-01|-3.0|-53.0|-18.98321|-0.06888 +2016-07-01|-3.0|-54.0|-18.59131|-0.07666 +2016-07-01|-3.0|-55.0|-18.16821|-0.08426 +2016-07-01|-3.0|-56.0|-17.71472|-0.09164 +2016-07-01|-3.0|-57.0|-17.23178|-0.09876 +2016-07-01|-3.0|-58.0|-16.72046|-0.1056 +2016-07-01|-3.0|-59.0|-16.18191|-0.11212 +2016-07-01|-3.0|-60.0|-15.61743|-0.1183 +2016-07-01|-3.0|-61.0|-15.0284|-0.12411 +2016-07-01|-3.0|-62.0|-14.41635|-0.12954 +2016-07-01|-3.0|-63.0|-13.78287|-0.13457 +2016-07-01|-3.0|-64.0|-13.12968|-0.13919 +2016-07-01|-3.0|-65.0|-12.4586|-0.14338 +2016-07-01|-3.0|-66.0|-11.77151|-0.14714 +2016-07-01|-3.0|-67.0|-11.07041|-0.15046 +2016-07-01|-3.0|-68.0|-10.35736|-0.15335 +2016-07-01|-3.0|-69.0|-9.63447|-0.15581 +2016-07-01|-3.0|-70.0|-8.90392|-0.15783 +2016-07-01|-3.0|-71.0|-8.16793|-0.15943 +2016-07-01|-3.0|-72.0|-7.42874|-0.16062 +2016-07-01|-3.0|-73.0|-6.68861|-0.1614 +2016-07-01|-3.0|-74.0|-5.94981|-0.16178 +2016-07-01|-3.0|-75.0|-5.21456|-0.16178 +2016-07-01|-3.0|-76.0|-4.48509|-0.16142 +2016-07-01|-3.0|-77.0|-3.76356|-0.16071 +2016-07-01|-3.0|-78.0|-3.05208|-0.15966 +2016-07-01|-3.0|-79.0|-2.35268|-0.1583 +2016-07-01|-3.0|-80.0|-1.6673|-0.15665 +2016-07-01|-3.0|-81.0|-0.99776|-0.15471 +2016-07-01|-3.0|-82.0|-0.34579|-0.15253 +2016-07-01|-3.0|-83.0|0.28702|-0.15011 +2016-07-01|-3.0|-84.0|0.89922|-0.14748 +2016-07-01|-3.0|-85.0|1.48951|-0.14466 +2016-07-01|-3.0|-86.0|2.05674|-0.14169 +2016-07-01|-3.0|-87.0|2.59992|-0.13857 +2016-07-01|-3.0|-88.0|3.11823|-0.13533 +2016-07-01|-3.0|-89.0|3.61102|-0.132 +2016-07-01|-3.0|-90.0|4.07779|-0.12861 +2016-07-01|-3.0|-91.0|4.51825|-0.12517 +2016-07-01|-3.0|-92.0|4.93224|-0.12172 +2016-07-01|-3.0|-93.0|5.31979|-0.11826 +2016-07-01|-3.0|-94.0|5.68107|-0.11483 +2016-07-01|-3.0|-95.0|6.01645|-0.11144 +2016-07-01|-3.0|-96.0|6.3264|-0.10812 +2016-07-01|-3.0|-97.0|6.61157|-0.10487 +2016-07-01|-3.0|-98.0|6.87273|-0.10171 +2016-07-01|-3.0|-99.0|7.11079|-0.09866 +2016-07-01|-3.0|-100.0|7.32676|-0.09573 +2016-07-01|-3.0|-101.0|7.52175|-0.09291 +2016-07-01|-3.0|-102.0|7.69698|-0.09023 +2016-07-01|-3.0|-103.0|7.85372|-0.08767 +2016-07-01|-3.0|-104.0|7.99333|-0.08525 +2016-07-01|-3.0|-105.0|8.11719|-0.08295 +2016-07-01|-3.0|-106.0|8.22672|-0.08077 +2016-07-01|-3.0|-107.0|8.32336|-0.0787 +2016-07-01|-3.0|-108.0|8.40852|-0.07674 +2016-07-01|-3.0|-109.0|8.48363|-0.07487 +2016-07-01|-3.0|-110.0|8.55004|-0.07308 +2016-07-01|-3.0|-111.0|8.60909|-0.07135 +2016-07-01|-3.0|-112.0|8.66201|-0.06968 +2016-07-01|-3.0|-113.0|8.70999|-0.06803 +2016-07-01|-3.0|-114.0|8.75411|-0.06641 +2016-07-01|-3.0|-115.0|8.79535|-0.0648 +2016-07-01|-3.0|-116.0|8.83457|-0.06317 +2016-07-01|-3.0|-117.0|8.87252|-0.06153 +2016-07-01|-3.0|-118.0|8.90985|-0.05986 +2016-07-01|-3.0|-119.0|8.94707|-0.05815 +2016-07-01|-3.0|-120.0|8.98456|-0.0564 +2016-07-01|-3.0|-121.0|9.0226|-0.0546 +2016-07-01|-3.0|-122.0|9.06136|-0.05275 +2016-07-01|-3.0|-123.0|9.10088|-0.05086 +2016-07-01|-3.0|-124.0|9.14114|-0.04893 +2016-07-01|-3.0|-125.0|9.18201|-0.04695 +2016-07-01|-3.0|-126.0|9.22327|-0.04495 +2016-07-01|-3.0|-127.0|9.26468|-0.04293 +2016-07-01|-3.0|-128.0|9.30592|-0.0409 +2016-07-01|-3.0|-129.0|9.34664|-0.03887 +2016-07-01|-3.0|-130.0|9.38647|-0.03685 +2016-07-01|-3.0|-131.0|9.42502|-0.03485 +2016-07-01|-3.0|-132.0|9.46191|-0.03288 +2016-07-01|-3.0|-133.0|9.49676|-0.03096 +2016-07-01|-3.0|-134.0|9.52924|-0.02909 +2016-07-01|-3.0|-135.0|9.55903|-0.02727 +2016-07-01|-3.0|-136.0|9.58585|-0.02551 +2016-07-01|-3.0|-137.0|9.60947|-0.02381 +2016-07-01|-3.0|-138.0|9.62972|-0.02218 +2016-07-01|-3.0|-139.0|9.64649|-0.02061 +2016-07-01|-3.0|-140.0|9.6597|-0.0191 +2016-07-01|-3.0|-141.0|9.66937|-0.01763 +2016-07-01|-3.0|-142.0|9.67556|-0.01621 +2016-07-01|-3.0|-143.0|9.67839|-0.01483 +2016-07-01|-3.0|-144.0|9.67804|-0.01346 +2016-07-01|-3.0|-145.0|9.67475|-0.0121 +2016-07-01|-3.0|-146.0|9.66881|-0.01074 +2016-07-01|-3.0|-147.0|9.66056|-0.00937 +2016-07-01|-3.0|-148.0|9.65037|-0.00797 +2016-07-01|-3.0|-149.0|9.63865|-0.00653 +2016-07-01|-3.0|-150.0|9.62586|-0.00504 +2016-07-01|-3.0|-151.0|9.61243|-0.00349 +2016-07-01|-3.0|-152.0|9.59886|-0.00188 +2016-07-01|-3.0|-153.0|9.58562|-2.0E-4 +2016-07-01|-3.0|-154.0|9.57318|0.00156 +2016-07-01|-3.0|-155.0|9.56201|0.00339 +2016-07-01|-3.0|-156.0|9.55254|0.00529 +2016-07-01|-3.0|-157.0|9.54519|0.00725 +2016-07-01|-3.0|-158.0|9.54032|0.00927 +2016-07-01|-3.0|-159.0|9.53825|0.01134 +2016-07-01|-3.0|-160.0|9.53925|0.01345 +2016-07-01|-3.0|-161.0|9.5435|0.01557 +2016-07-01|-3.0|-162.0|9.55114|0.01771 +2016-07-01|-3.0|-163.0|9.5622|0.01983 +2016-07-01|-3.0|-164.0|9.57666|0.02193 +2016-07-01|-3.0|-165.0|9.59437|0.02398 +2016-07-01|-3.0|-166.0|9.61512|0.02597 +2016-07-01|-3.0|-167.0|9.63859|0.02788 +2016-07-01|-3.0|-168.0|9.66438|0.02968 +2016-07-01|-3.0|-169.0|9.69199|0.03137 +2016-07-01|-3.0|-170.0|9.72083|0.03293 +2016-07-01|-3.0|-171.0|9.75023|0.03434 +2016-07-01|-3.0|-172.0|9.77947|0.03559 +2016-07-01|-3.0|-173.0|9.80774|0.03667 +2016-07-01|-3.0|-174.0|9.83417|0.03757 +2016-07-01|-3.0|-175.0|9.85789|0.03828 +2016-07-01|-3.0|-176.0|9.87796|0.03881 +2016-07-01|-3.0|-177.0|9.89346|0.03913 +2016-07-01|-3.0|-178.0|9.90346|0.03926 +2016-07-01|-3.0|-179.0|9.90705|0.03919 +2016-07-01|-4.0|0.0|-6.89631|0.14074 +2016-07-01|-4.0|1.0|-6.49729|0.14254 +2016-07-01|-4.0|2.0|-6.10362|0.14425 +2016-07-01|-4.0|3.0|-5.71532|0.14585 +2016-07-01|-4.0|4.0|-5.33249|0.14733 +2016-07-01|-4.0|5.0|-4.95526|0.14866 +2016-07-01|-4.0|6.0|-4.58379|0.14983 +2016-07-01|-4.0|7.0|-4.21836|0.15081 +2016-07-01|-4.0|8.0|-3.85931|0.15159 +2016-07-01|-4.0|9.0|-3.50709|0.15212 +2016-07-01|-4.0|10.0|-3.16223|0.15238 +2016-07-01|-4.0|11.0|-2.82541|0.15234 +2016-07-01|-4.0|12.0|-2.4974|0.15198 +2016-07-01|-4.0|13.0|-2.17909|0.15126 +2016-07-01|-4.0|14.0|-1.87149|0.15015 +2016-07-01|-4.0|15.0|-1.57573|0.14863 +2016-07-01|-4.0|16.0|-1.29301|0.14666 +2016-07-01|-4.0|17.0|-1.02462|0.14424 +2016-07-01|-4.0|18.0|-0.77194|0.14133 +2016-07-01|-4.0|19.0|-0.53636|0.13794 +2016-07-01|-4.0|20.0|-0.31932|0.13405 +2016-07-01|-4.0|21.0|-0.12222|0.12967 +2016-07-01|-4.0|22.0|0.05355|0.12481 +2016-07-01|-4.0|23.0|0.20668|0.1195 +2016-07-01|-4.0|24.0|0.33597|0.11375 +2016-07-01|-4.0|25.0|0.44034|0.10761 +2016-07-01|-4.0|26.0|0.51886|0.10111 +2016-07-01|-4.0|27.0|0.57082|0.09433 +2016-07-01|-4.0|28.0|0.59571|0.08731 +2016-07-01|-4.0|29.0|0.59327|0.08012 +2016-07-01|-4.0|30.0|0.56347|0.07284 +2016-07-01|-4.0|31.0|0.50659|0.06555 +2016-07-01|-4.0|32.0|0.42316|0.05832 +2016-07-01|-4.0|33.0|0.314|0.05123 +2016-07-01|-4.0|34.0|0.18022|0.04437 +2016-07-01|-4.0|35.0|0.02318|0.03782 +2016-07-01|-4.0|36.0|-0.15549|0.03165 +2016-07-01|-4.0|37.0|-0.35393|0.02592 +2016-07-01|-4.0|38.0|-0.57008|0.02072 +2016-07-01|-4.0|39.0|-0.8017|0.01608 +2016-07-01|-4.0|40.0|-1.04641|0.01206 +2016-07-01|-4.0|41.0|-1.30171|0.00871 +2016-07-01|-4.0|42.0|-1.56506|0.00603 +2016-07-01|-4.0|43.0|-1.83388|0.00406 +2016-07-01|-4.0|44.0|-2.10561|0.00279 +2016-07-01|-4.0|45.0|-2.37775|0.00223 +2016-07-01|-4.0|46.0|-2.64789|0.00235 +2016-07-01|-4.0|47.0|-2.91377|0.00314 +2016-07-01|-4.0|48.0|-3.17325|0.00456 +2016-07-01|-4.0|49.0|-3.42442|0.00656 +2016-07-01|-4.0|50.0|-3.66556|0.00911 +2016-07-01|-4.0|51.0|-3.89517|0.01213 +2016-07-01|-4.0|52.0|-4.112|0.01558 +2016-07-01|-4.0|53.0|-4.31502|0.01938 +2016-07-01|-4.0|54.0|-4.50345|0.02348 +2016-07-01|-4.0|55.0|-4.67673|0.02781 +2016-07-01|-4.0|56.0|-4.83451|0.03231 +2016-07-01|-4.0|57.0|-4.97666|0.03691 +2016-07-01|-4.0|58.0|-5.10319|0.04154 +2016-07-01|-4.0|59.0|-5.21429|0.04617 +2016-07-01|-4.0|60.0|-5.31026|0.05072 +2016-07-01|-4.0|61.0|-5.39151|0.05516 +2016-07-01|-4.0|62.0|-5.4585|0.05945 +2016-07-01|-4.0|63.0|-5.51173|0.06354 +2016-07-01|-4.0|64.0|-5.55172|0.06742 +2016-07-01|-4.0|65.0|-5.57896|0.07105 +2016-07-01|-4.0|66.0|-5.5939|0.07441 +2016-07-01|-4.0|67.0|-5.59696|0.07751 +2016-07-01|-4.0|68.0|-5.58846|0.08032 +2016-07-01|-4.0|69.0|-5.56865|0.08285 +2016-07-01|-4.0|70.0|-5.53768|0.0851 +2016-07-01|-4.0|71.0|-5.49564|0.08707 +2016-07-01|-4.0|72.0|-5.44252|0.08877 +2016-07-01|-4.0|73.0|-5.37821|0.0902 +2016-07-01|-4.0|74.0|-5.3026|0.09138 +2016-07-01|-4.0|75.0|-5.21547|0.09231 +2016-07-01|-4.0|76.0|-5.11663|0.09301 +2016-07-01|-4.0|77.0|-5.00586|0.09347 +2016-07-01|-4.0|78.0|-4.88297|0.0937 +2016-07-01|-4.0|79.0|-4.74785|0.09372 +2016-07-01|-4.0|80.0|-4.60041|0.09351 +2016-07-01|-4.0|81.0|-4.44072|0.09307 +2016-07-01|-4.0|82.0|-4.26894|0.09241 +2016-07-01|-4.0|83.0|-4.08538|0.09151 +2016-07-01|-4.0|84.0|-3.89052|0.09036 +2016-07-01|-4.0|85.0|-3.685|0.08895 +2016-07-01|-4.0|86.0|-3.46967|0.08728 +2016-07-01|-4.0|87.0|-3.24554|0.08531 +2016-07-01|-4.0|88.0|-3.01379|0.08305 +2016-07-01|-4.0|89.0|-2.77582|0.08046 +2016-07-01|-4.0|90.0|-2.53314|0.07755 +2016-07-01|-4.0|91.0|-2.28742|0.07429 +2016-07-01|-4.0|92.0|-2.04045|0.07068 +2016-07-01|-4.0|93.0|-1.7941|0.06671 +2016-07-01|-4.0|94.0|-1.55027|0.06237 +2016-07-01|-4.0|95.0|-1.3109|0.05767 +2016-07-01|-4.0|96.0|-1.0779|0.0526 +2016-07-01|-4.0|97.0|-0.8531|0.04718 +2016-07-01|-4.0|98.0|-0.63826|0.04142 +2016-07-01|-4.0|99.0|-0.43495|0.03534 +2016-07-01|-4.0|100.0|-0.2446|0.02897 +2016-07-01|-4.0|101.0|-0.06843|0.02232 +2016-07-01|-4.0|102.0|0.09261|0.01545 +2016-07-01|-4.0|103.0|0.2378|0.00838 +2016-07-01|-4.0|104.0|0.36672|0.00116 +2016-07-01|-4.0|105.0|0.47922|-0.00617 +2016-07-01|-4.0|106.0|0.57548|-0.01356 +2016-07-01|-4.0|107.0|0.65594|-0.02096 +2016-07-01|-4.0|108.0|0.72135|-0.02831 +2016-07-01|-4.0|109.0|0.77271|-0.03558 +2016-07-01|-4.0|110.0|0.81131|-0.0427 +2016-07-01|-4.0|111.0|0.83862|-0.04962 +2016-07-01|-4.0|112.0|0.85633|-0.0563 +2016-07-01|-4.0|113.0|0.86629|-0.06269 +2016-07-01|-4.0|114.0|0.87046|-0.06875 +2016-07-01|-4.0|115.0|0.87088|-0.07444 +2016-07-01|-4.0|116.0|0.86964|-0.07972 +2016-07-01|-4.0|117.0|0.86881|-0.08456 +2016-07-01|-4.0|118.0|0.87043|-0.08893 +2016-07-01|-4.0|119.0|0.87644|-0.09282 +2016-07-01|-4.0|120.0|0.88867|-0.09621 +2016-07-01|-4.0|121.0|0.90878|-0.09909 +2016-07-01|-4.0|122.0|0.93828|-0.10145 +2016-07-01|-4.0|123.0|0.97845|-0.1033 +2016-07-01|-4.0|124.0|1.03034|-0.10463 +2016-07-01|-4.0|125.0|1.09478|-0.10546 +2016-07-01|-4.0|126.0|1.17237|-0.1058 +2016-07-01|-4.0|127.0|1.26345|-0.10567 +2016-07-01|-4.0|128.0|1.36814|-0.10509 +2016-07-01|-4.0|129.0|1.48634|-0.10409 +2016-07-01|-4.0|130.0|1.61773|-0.10267 +2016-07-01|-4.0|131.0|1.76182|-0.10089 +2016-07-01|-4.0|132.0|1.91796|-0.09876 +2016-07-01|-4.0|133.0|2.08535|-0.09632 +2016-07-01|-4.0|134.0|2.2631|-0.0936 +2016-07-01|-4.0|135.0|2.45024|-0.09062 +2016-07-01|-4.0|136.0|2.64575|-0.08742 +2016-07-01|-4.0|137.0|2.84858|-0.08403 +2016-07-01|-4.0|138.0|3.05769|-0.08047 +2016-07-01|-4.0|139.0|3.27207|-0.07678 +2016-07-01|-4.0|140.0|3.49076|-0.07298 +2016-07-01|-4.0|141.0|3.71285|-0.06909 +2016-07-01|-4.0|142.0|3.93752|-0.06515 +2016-07-01|-4.0|143.0|4.16402|-0.06115 +2016-07-01|-4.0|144.0|4.39169|-0.05714 +2016-07-01|-4.0|145.0|4.61997|-0.05311 +2016-07-01|-4.0|146.0|4.84834|-0.0491 +2016-07-01|-4.0|147.0|5.0764|-0.0451 +2016-07-01|-4.0|148.0|5.3038|-0.04113 +2016-07-01|-4.0|149.0|5.53021|-0.03721 +2016-07-01|-4.0|150.0|5.75538|-0.03334 +2016-07-01|-4.0|151.0|5.97906|-0.02952 +2016-07-01|-4.0|152.0|6.20101|-0.02576 +2016-07-01|-4.0|153.0|6.42097|-0.02208 +2016-07-01|-4.0|154.0|6.63868|-0.01846 +2016-07-01|-4.0|155.0|6.85384|-0.01492 +2016-07-01|-4.0|156.0|7.0661|-0.01146 +2016-07-01|-4.0|157.0|7.27508|-0.00808 +2016-07-01|-4.0|158.0|7.48034|-0.00478 +2016-07-01|-4.0|159.0|7.68138|-0.00157 +2016-07-01|-4.0|160.0|7.87767|0.00155 +2016-07-01|-4.0|161.0|8.06863|0.00458 +2016-07-01|-4.0|162.0|8.25363|0.00752 +2016-07-01|-4.0|163.0|8.43204|0.01036 +2016-07-01|-4.0|164.0|8.60322|0.0131 +2016-07-01|-4.0|165.0|8.76652|0.01574 +2016-07-01|-4.0|166.0|8.92131|0.01828 +2016-07-01|-4.0|167.0|9.06701|0.0207 +2016-07-01|-4.0|168.0|9.20307|0.02301 +2016-07-01|-4.0|169.0|9.32902|0.0252 +2016-07-01|-4.0|170.0|9.44447|0.02727 +2016-07-01|-4.0|171.0|9.54911|0.0292 +2016-07-01|-4.0|172.0|9.64275|0.03099 +2016-07-01|-4.0|173.0|9.72529|0.03265 +2016-07-01|-4.0|174.0|9.79675|0.03415 +2016-07-01|-4.0|175.0|9.85728|0.03549 +2016-07-01|-4.0|176.0|9.90712|0.03667 +2016-07-01|-4.0|177.0|9.94666|0.03768 +2016-07-01|-4.0|178.0|9.97636|0.03851 +2016-07-01|-4.0|179.0|9.9968|0.03916 +2016-07-01|-4.0|-1.0|-7.30064|0.13886 +2016-07-01|-4.0|-2.0|-7.71024|0.13691 +2016-07-01|-4.0|-3.0|-8.1251|0.13491 +2016-07-01|-4.0|-4.0|-8.54513|0.13286 +2016-07-01|-4.0|-5.0|-8.97026|0.13078 +2016-07-01|-4.0|-6.0|-9.40033|0.12868 +2016-07-01|-4.0|-7.0|-9.83515|0.12656 +2016-07-01|-4.0|-8.0|-10.27445|0.12443 +2016-07-01|-4.0|-9.0|-10.71789|0.12231 +2016-07-01|-4.0|-10.0|-11.16506|0.1202 +2016-07-01|-4.0|-11.0|-11.61546|0.1181 +2016-07-01|-4.0|-12.0|-12.0685|0.11603 +2016-07-01|-4.0|-13.0|-12.52351|0.11398 +2016-07-01|-4.0|-14.0|-12.97973|0.11196 +2016-07-01|-4.0|-15.0|-13.4363|0.10997 +2016-07-01|-4.0|-16.0|-13.89228|0.10801 +2016-07-01|-4.0|-17.0|-14.34666|0.10607 +2016-07-01|-4.0|-18.0|-14.79834|0.10415 +2016-07-01|-4.0|-19.0|-15.24614|0.10223 +2016-07-01|-4.0|-20.0|-15.68882|0.1003 +2016-07-01|-4.0|-21.0|-16.12508|0.09834 +2016-07-01|-4.0|-22.0|-16.55357|0.09634 +2016-07-01|-4.0|-23.0|-16.9729|0.09427 +2016-07-01|-4.0|-24.0|-17.38165|0.09211 +2016-07-01|-4.0|-25.0|-17.77835|0.08983 +2016-07-01|-4.0|-26.0|-18.16155|0.08741 +2016-07-01|-4.0|-27.0|-18.52978|0.08482 +2016-07-01|-4.0|-28.0|-18.88158|0.08203 +2016-07-01|-4.0|-29.0|-19.21549|0.07901 +2016-07-01|-4.0|-30.0|-19.53009|0.07574 +2016-07-01|-4.0|-31.0|-19.82399|0.0722 +2016-07-01|-4.0|-32.0|-20.09584|0.06837 +2016-07-01|-4.0|-33.0|-20.34434|0.06422 +2016-07-01|-4.0|-34.0|-20.56824|0.05975 +2016-07-01|-4.0|-35.0|-20.76636|0.05495 +2016-07-01|-4.0|-36.0|-20.93758|0.04981 +2016-07-01|-4.0|-37.0|-21.08085|0.04432 +2016-07-01|-4.0|-38.0|-21.19522|0.0385 +2016-07-01|-4.0|-39.0|-21.27978|0.03236 +2016-07-01|-4.0|-40.0|-21.33375|0.02589 +2016-07-01|-4.0|-41.0|-21.3564|0.01913 +2016-07-01|-4.0|-42.0|-21.3471|0.01209 +2016-07-01|-4.0|-43.0|-21.30534|0.0048 +2016-07-01|-4.0|-44.0|-21.23066|-0.00272 +2016-07-01|-4.0|-45.0|-21.12272|-0.01043 +2016-07-01|-4.0|-46.0|-20.98127|-0.0183 +2016-07-01|-4.0|-47.0|-20.80618|-0.02629 +2016-07-01|-4.0|-48.0|-20.59739|-0.03437 +2016-07-01|-4.0|-49.0|-20.35497|-0.04249 +2016-07-01|-4.0|-50.0|-20.07906|-0.05062 +2016-07-01|-4.0|-51.0|-19.76995|-0.05871 +2016-07-01|-4.0|-52.0|-19.42801|-0.06672 +2016-07-01|-4.0|-53.0|-19.05372|-0.07461 +2016-07-01|-4.0|-54.0|-18.64768|-0.08235 +2016-07-01|-4.0|-55.0|-18.21061|-0.08989 +2016-07-01|-4.0|-56.0|-17.74332|-0.09719 +2016-07-01|-4.0|-57.0|-17.24675|-0.10424 +2016-07-01|-4.0|-58.0|-16.72197|-0.11098 +2016-07-01|-4.0|-59.0|-16.17014|-0.11739 +2016-07-01|-4.0|-60.0|-15.59256|-0.12346 +2016-07-01|-4.0|-61.0|-14.99061|-0.12914 +2016-07-01|-4.0|-62.0|-14.36583|-0.13443 +2016-07-01|-4.0|-63.0|-13.71984|-0.1393 +2016-07-01|-4.0|-64.0|-13.05436|-0.14374 +2016-07-01|-4.0|-65.0|-12.37123|-0.14775 +2016-07-01|-4.0|-66.0|-11.67237|-0.15131 +2016-07-01|-4.0|-67.0|-10.95981|-0.15442 +2016-07-01|-4.0|-68.0|-10.23563|-0.15709 +2016-07-01|-4.0|-69.0|-9.50199|-0.1593 +2016-07-01|-4.0|-70.0|-8.76111|-0.16108 +2016-07-01|-4.0|-71.0|-8.01525|-0.16242 +2016-07-01|-4.0|-72.0|-7.26669|-0.16333 +2016-07-01|-4.0|-73.0|-6.51773|-0.16383 +2016-07-01|-4.0|-74.0|-5.77068|-0.16393 +2016-07-01|-4.0|-75.0|-5.02783|-0.16364 +2016-07-01|-4.0|-76.0|-4.29141|-0.16298 +2016-07-01|-4.0|-77.0|-3.56364|-0.16198 +2016-07-01|-4.0|-78.0|-2.84664|-0.16064 +2016-07-01|-4.0|-79.0|-2.14247|-0.15899 +2016-07-01|-4.0|-80.0|-1.45309|-0.15705 +2016-07-01|-4.0|-81.0|-0.78033|-0.15485 +2016-07-01|-4.0|-82.0|-0.12591|-0.1524 +2016-07-01|-4.0|-83.0|0.50857|-0.14973 +2016-07-01|-4.0|-84.0|1.12168|-0.14687 +2016-07-01|-4.0|-85.0|1.71214|-0.14383 +2016-07-01|-4.0|-86.0|2.27884|-0.14064 +2016-07-01|-4.0|-87.0|2.8208|-0.13734 +2016-07-01|-4.0|-88.0|3.33725|-0.13393 +2016-07-01|-4.0|-89.0|3.82759|-0.13045 +2016-07-01|-4.0|-90.0|4.29137|-0.12693 +2016-07-01|-4.0|-91.0|4.72835|-0.12338 +2016-07-01|-4.0|-92.0|5.13842|-0.11983 +2016-07-01|-4.0|-93.0|5.52168|-0.11631 +2016-07-01|-4.0|-94.0|5.87837|-0.11282 +2016-07-01|-4.0|-95.0|6.20889|-0.10939 +2016-07-01|-4.0|-96.0|6.5138|-0.10605 +2016-07-01|-4.0|-97.0|6.7938|-0.1028 +2016-07-01|-4.0|-98.0|7.04972|-0.09965 +2016-07-01|-4.0|-99.0|7.28252|-0.09663 +2016-07-01|-4.0|-100.0|7.49327|-0.09373 +2016-07-01|-4.0|-101.0|7.68314|-0.09097 +2016-07-01|-4.0|-102.0|7.85338|-0.08834 +2016-07-01|-4.0|-103.0|8.00532|-0.08586 +2016-07-01|-4.0|-104.0|8.14033|-0.08351 +2016-07-01|-4.0|-105.0|8.25985|-0.08129 +2016-07-01|-4.0|-106.0|8.36532|-0.0792 +2016-07-01|-4.0|-107.0|8.4582|-0.07723 +2016-07-01|-4.0|-108.0|8.53992|-0.07536 +2016-07-01|-4.0|-109.0|8.61191|-0.07359 +2016-07-01|-4.0|-110.0|8.67555|-0.07189 +2016-07-01|-4.0|-111.0|8.73215|-0.07026 +2016-07-01|-4.0|-112.0|8.78297|-0.06868 +2016-07-01|-4.0|-113.0|8.82916|-0.06713 +2016-07-01|-4.0|-114.0|8.87181|-0.06559 +2016-07-01|-4.0|-115.0|8.91187|-0.06406 +2016-07-01|-4.0|-116.0|8.95019|-0.06251 +2016-07-01|-4.0|-117.0|8.98751|-0.06094 +2016-07-01|-4.0|-118.0|9.02444|-0.05934 +2016-07-01|-4.0|-119.0|9.06147|-0.05769 +2016-07-01|-4.0|-120.0|9.09896|-0.05599 +2016-07-01|-4.0|-121.0|9.13718|-0.05424 +2016-07-01|-4.0|-122.0|9.17625|-0.05244 +2016-07-01|-4.0|-123.0|9.21623|-0.05058 +2016-07-01|-4.0|-124.0|9.25704|-0.04868 +2016-07-01|-4.0|-125.0|9.29854|-0.04673 +2016-07-01|-4.0|-126.0|9.34053|-0.04475 +2016-07-01|-4.0|-127.0|9.38272|-0.04274 +2016-07-01|-4.0|-128.0|9.42479|-0.04071 +2016-07-01|-4.0|-129.0|9.46639|-0.03869 +2016-07-01|-4.0|-130.0|9.50712|-0.03666 +2016-07-01|-4.0|-131.0|9.54661|-0.03466 +2016-07-01|-4.0|-132.0|9.58447|-0.03269 +2016-07-01|-4.0|-133.0|9.62032|-0.03075 +2016-07-01|-4.0|-134.0|9.65382|-0.02886 +2016-07-01|-4.0|-135.0|9.68464|-0.02703 +2016-07-01|-4.0|-136.0|9.71252|-0.02525 +2016-07-01|-4.0|-137.0|9.73721|-0.02354 +2016-07-01|-4.0|-138.0|9.75855|-0.02188 +2016-07-01|-4.0|-139.0|9.7764|-0.02029 +2016-07-01|-4.0|-140.0|9.79071|-0.01875 +2016-07-01|-4.0|-141.0|9.80146|-0.01726 +2016-07-01|-4.0|-142.0|9.80872|-0.01582 +2016-07-01|-4.0|-143.0|9.8126|-0.0144 +2016-07-01|-4.0|-144.0|9.81326|-0.01301 +2016-07-01|-4.0|-145.0|9.81094|-0.01163 +2016-07-01|-4.0|-146.0|9.8059|-0.01025 +2016-07-01|-4.0|-147.0|9.79847|-0.00885 +2016-07-01|-4.0|-148.0|9.78901|-0.00742 +2016-07-01|-4.0|-149.0|9.77792|-0.00596 +2016-07-01|-4.0|-150.0|9.76562|-0.00444 +2016-07-01|-4.0|-151.0|9.75256|-0.00287 +2016-07-01|-4.0|-152.0|9.7392|-0.00124 +2016-07-01|-4.0|-153.0|9.72601|4.7E-4 +2016-07-01|-4.0|-154.0|9.71345|0.00224 +2016-07-01|-4.0|-155.0|9.70198|0.00409 +2016-07-01|-4.0|-156.0|9.69203|0.006 +2016-07-01|-4.0|-157.0|9.68401|0.00798 +2016-07-01|-4.0|-158.0|9.67828|0.01002 +2016-07-01|-4.0|-159.0|9.67518|0.0121 +2016-07-01|-4.0|-160.0|9.67497|0.01422 +2016-07-01|-4.0|-161.0|9.67785|0.01635 +2016-07-01|-4.0|-162.0|9.68397|0.01849 +2016-07-01|-4.0|-163.0|9.69338|0.02062 +2016-07-01|-4.0|-164.0|9.70606|0.02272 +2016-07-01|-4.0|-165.0|9.72191|0.02478 +2016-07-01|-4.0|-166.0|9.74072|0.02676 +2016-07-01|-4.0|-167.0|9.76221|0.02867 +2016-07-01|-4.0|-168.0|9.78599|0.03047 +2016-07-01|-4.0|-169.0|9.81159|0.03215 +2016-07-01|-4.0|-170.0|9.83847|0.0337 +2016-07-01|-4.0|-171.0|9.86597|0.0351 +2016-07-01|-4.0|-172.0|9.89339|0.03635 +2016-07-01|-4.0|-173.0|9.91995|0.03742 +2016-07-01|-4.0|-174.0|9.94482|0.03831 +2016-07-01|-4.0|-175.0|9.96713|0.03901 +2016-07-01|-4.0|-176.0|9.98598|0.03953 +2016-07-01|-4.0|-177.0|10.00046|0.03984 +2016-07-01|-4.0|-178.0|10.00966|0.03996 +2016-07-01|-4.0|-179.0|10.01268|0.03989 +2016-07-01|-5.0|0.0|-7.36013|0.14519 +2016-07-01|-5.0|1.0|-6.94671|0.14724 +2016-07-01|-5.0|2.0|-6.53832|0.14916 +2016-07-01|-5.0|3.0|-6.13514|0.15092 +2016-07-01|-5.0|4.0|-5.73737|0.15252 +2016-07-01|-5.0|5.0|-5.34527|0.15393 +2016-07-01|-5.0|6.0|-4.95917|0.15513 +2016-07-01|-5.0|7.0|-4.57944|0.15609 +2016-07-01|-5.0|8.0|-4.20658|0.15679 +2016-07-01|-5.0|9.0|-3.84113|0.15721 +2016-07-01|-5.0|10.0|-3.48376|0.15731 +2016-07-01|-5.0|11.0|-3.13525|0.15707 +2016-07-01|-5.0|12.0|-2.79648|0.15646 +2016-07-01|-5.0|13.0|-2.46842|0.15545 +2016-07-01|-5.0|14.0|-2.15217|0.15401 +2016-07-01|-5.0|15.0|-1.84893|0.15213 +2016-07-01|-5.0|16.0|-1.55995|0.14978 +2016-07-01|-5.0|17.0|-1.28658|0.14693 +2016-07-01|-5.0|18.0|-1.03022|0.14359 +2016-07-01|-5.0|19.0|-0.79229|0.13975 +2016-07-01|-5.0|20.0|-0.57422|0.1354 +2016-07-01|-5.0|21.0|-0.37742|0.13055 +2016-07-01|-5.0|22.0|-0.20324|0.12523 +2016-07-01|-5.0|23.0|-0.05296|0.11945 +2016-07-01|-5.0|24.0|0.07227|0.11325 +2016-07-01|-5.0|25.0|0.17142|0.10667 +2016-07-01|-5.0|26.0|0.24367|0.09976 +2016-07-01|-5.0|27.0|0.28837|0.09259 +2016-07-01|-5.0|28.0|0.3051|0.08521 +2016-07-01|-5.0|29.0|0.29371|0.07769 +2016-07-01|-5.0|30.0|0.2543|0.07012 +2016-07-01|-5.0|31.0|0.18724|0.06258 +2016-07-01|-5.0|32.0|0.09318|0.05513 +2016-07-01|-5.0|33.0|-0.02692|0.04788 +2016-07-01|-5.0|34.0|-0.17185|0.04089 +2016-07-01|-5.0|35.0|-0.34013|0.03424 +2016-07-01|-5.0|36.0|-0.53001|0.02802 +2016-07-01|-5.0|37.0|-0.73954|0.02229 +2016-07-01|-5.0|38.0|-0.96653|0.01711 +2016-07-01|-5.0|39.0|-1.20867|0.01253 +2016-07-01|-5.0|40.0|-1.46348|0.0086 +2016-07-01|-5.0|41.0|-1.72839|0.00536 +2016-07-01|-5.0|42.0|-2.00079|0.00283 +2016-07-01|-5.0|43.0|-2.27804|0.00103 +2016-07-01|-5.0|44.0|-2.55755|-6.0E-5 +2016-07-01|-5.0|45.0|-2.83676|-4.2E-4 +2016-07-01|-5.0|46.0|-3.11326|-8.0E-5 +2016-07-01|-5.0|47.0|-3.38473|9.2E-4 +2016-07-01|-5.0|48.0|-3.64907|0.00256 +2016-07-01|-5.0|49.0|-3.90433|0.00479 +2016-07-01|-5.0|50.0|-4.1488|0.00756 +2016-07-01|-5.0|51.0|-4.38099|0.01082 +2016-07-01|-5.0|52.0|-4.59966|0.01449 +2016-07-01|-5.0|53.0|-4.8038|0.01852 +2016-07-01|-5.0|54.0|-4.99263|0.02284 +2016-07-01|-5.0|55.0|-5.16562|0.02739 +2016-07-01|-5.0|56.0|-5.32244|0.03209 +2016-07-01|-5.0|57.0|-5.46296|0.0369 +2016-07-01|-5.0|58.0|-5.58723|0.04174 +2016-07-01|-5.0|59.0|-5.69545|0.04656 +2016-07-01|-5.0|60.0|-5.78794|0.05131 +2016-07-01|-5.0|61.0|-5.86512|0.05594 +2016-07-01|-5.0|62.0|-5.92747|0.06041 +2016-07-01|-5.0|63.0|-5.97549|0.06468 +2016-07-01|-5.0|64.0|-6.00973|0.06873 +2016-07-01|-5.0|65.0|-6.03068|0.07253 +2016-07-01|-5.0|66.0|-6.03882|0.07607 +2016-07-01|-5.0|67.0|-6.03456|0.07933 +2016-07-01|-5.0|68.0|-6.01825|0.0823 +2016-07-01|-5.0|69.0|-5.99014|0.08499 +2016-07-01|-5.0|70.0|-5.95042|0.08738 +2016-07-01|-5.0|71.0|-5.89915|0.0895 +2016-07-01|-5.0|72.0|-5.83635|0.09133 +2016-07-01|-5.0|73.0|-5.76196|0.09289 +2016-07-01|-5.0|74.0|-5.67583|0.09418 +2016-07-01|-5.0|75.0|-5.57781|0.09522 +2016-07-01|-5.0|76.0|-5.46769|0.09601 +2016-07-01|-5.0|77.0|-5.3453|0.09656 +2016-07-01|-5.0|78.0|-5.21046|0.09686 +2016-07-01|-5.0|79.0|-5.06307|0.09694 +2016-07-01|-5.0|80.0|-4.9031|0.09677 +2016-07-01|-5.0|81.0|-4.73061|0.09637 +2016-07-01|-5.0|82.0|-4.54582|0.09572 +2016-07-01|-5.0|83.0|-4.34906|0.09483 +2016-07-01|-5.0|84.0|-4.14084|0.09367 +2016-07-01|-5.0|85.0|-3.92185|0.09224 +2016-07-01|-5.0|86.0|-3.69296|0.09052 +2016-07-01|-5.0|87.0|-3.45522|0.0885 +2016-07-01|-5.0|88.0|-3.20987|0.08617 +2016-07-01|-5.0|89.0|-2.95831|0.08351 +2016-07-01|-5.0|90.0|-2.70213|0.08051 +2016-07-01|-5.0|91.0|-2.44302|0.07716 +2016-07-01|-5.0|92.0|-2.18281|0.07344 +2016-07-01|-5.0|93.0|-1.9234|0.06935 +2016-07-01|-5.0|94.0|-1.66675|0.06489 +2016-07-01|-5.0|95.0|-1.41481|0.06006 +2016-07-01|-5.0|96.0|-1.16953|0.05487 +2016-07-01|-5.0|97.0|-0.93276|0.04932 +2016-07-01|-5.0|98.0|-0.70628|0.04343 +2016-07-01|-5.0|99.0|-0.4917|0.03722 +2016-07-01|-5.0|100.0|-0.29044|0.03073 +2016-07-01|-5.0|101.0|-0.10373|0.02397 +2016-07-01|-5.0|102.0|0.06746|0.01698 +2016-07-01|-5.0|103.0|0.22242|0.00981 +2016-07-01|-5.0|104.0|0.36073|0.0025 +2016-07-01|-5.0|105.0|0.48226|-0.00492 +2016-07-01|-5.0|106.0|0.58717|-0.01238 +2016-07-01|-5.0|107.0|0.67593|-0.01984 +2016-07-01|-5.0|108.0|0.74929|-0.02726 +2016-07-01|-5.0|109.0|0.80829|-0.03457 +2016-07-01|-5.0|110.0|0.8542|-0.04172 +2016-07-01|-5.0|111.0|0.88853|-0.04867 +2016-07-01|-5.0|112.0|0.91297|-0.05537 +2016-07-01|-5.0|113.0|0.92938|-0.06178 +2016-07-01|-5.0|114.0|0.93974|-0.06784 +2016-07-01|-5.0|115.0|0.9461|-0.07352 +2016-07-01|-5.0|116.0|0.95055|-0.07879 +2016-07-01|-5.0|117.0|0.95518|-0.08362 +2016-07-01|-5.0|118.0|0.96203|-0.08799 +2016-07-01|-5.0|119.0|0.97306|-0.09186 +2016-07-01|-5.0|120.0|0.99008|-0.09523 +2016-07-01|-5.0|121.0|1.01479|-0.09809 +2016-07-01|-5.0|122.0|1.04867|-0.10043 +2016-07-01|-5.0|123.0|1.093|-0.10226 +2016-07-01|-5.0|124.0|1.14887|-0.10357 +2016-07-01|-5.0|125.0|1.21709|-0.10438 +2016-07-01|-5.0|126.0|1.29825|-0.10471 +2016-07-01|-5.0|127.0|1.39272|-0.10456 +2016-07-01|-5.0|128.0|1.50059|-0.10396 +2016-07-01|-5.0|129.0|1.62178|-0.10294 +2016-07-01|-5.0|130.0|1.75596|-0.10152 +2016-07-01|-5.0|131.0|1.90265|-0.09972 +2016-07-01|-5.0|132.0|2.06119|-0.09758 +2016-07-01|-5.0|133.0|2.23079|-0.09513 +2016-07-01|-5.0|134.0|2.41056|-0.09239 +2016-07-01|-5.0|135.0|2.59952|-0.0894 +2016-07-01|-5.0|136.0|2.79666|-0.0862 +2016-07-01|-5.0|137.0|3.00092|-0.0828 +2016-07-01|-5.0|138.0|3.21128|-0.07924 +2016-07-01|-5.0|139.0|3.42671|-0.07554 +2016-07-01|-5.0|140.0|3.64627|-0.07173 +2016-07-01|-5.0|141.0|3.86904|-0.06785 +2016-07-01|-5.0|142.0|4.0942|-0.06389 +2016-07-01|-5.0|143.0|4.32102|-0.0599 +2016-07-01|-5.0|144.0|4.54883|-0.05589 +2016-07-01|-5.0|145.0|4.77706|-0.05187 +2016-07-01|-5.0|146.0|5.00523|-0.04785 +2016-07-01|-5.0|147.0|5.23291|-0.04386 +2016-07-01|-5.0|148.0|5.45976|-0.03991 +2016-07-01|-5.0|149.0|5.68547|-0.036 +2016-07-01|-5.0|150.0|5.90979|-0.03213 +2016-07-01|-5.0|151.0|6.13245|-0.02833 +2016-07-01|-5.0|152.0|6.35324|-0.02459 +2016-07-01|-5.0|153.0|6.57191|-0.02093 +2016-07-01|-5.0|154.0|6.7882|-0.01733 +2016-07-01|-5.0|155.0|7.00181|-0.01381 +2016-07-01|-5.0|156.0|7.21241|-0.01038 +2016-07-01|-5.0|157.0|7.41962|-0.00702 +2016-07-01|-5.0|158.0|7.62301|-0.00375 +2016-07-01|-5.0|159.0|7.82211|-5.7E-4 +2016-07-01|-5.0|160.0|8.01639|0.00252 +2016-07-01|-5.0|161.0|8.20528|0.00552 +2016-07-01|-5.0|162.0|8.38818|0.00843 +2016-07-01|-5.0|163.0|8.56449|0.01124 +2016-07-01|-5.0|164.0|8.73355|0.01396 +2016-07-01|-5.0|165.0|8.89476|0.01657 +2016-07-01|-5.0|166.0|9.04751|0.01907 +2016-07-01|-5.0|167.0|9.19122|0.02147 +2016-07-01|-5.0|168.0|9.32539|0.02376 +2016-07-01|-5.0|169.0|9.44955|0.02592 +2016-07-01|-5.0|170.0|9.56334|0.02796 +2016-07-01|-5.0|171.0|9.66647|0.02988 +2016-07-01|-5.0|172.0|9.75877|0.03166 +2016-07-01|-5.0|173.0|9.84015|0.03329 +2016-07-01|-5.0|174.0|9.91066|0.03478 +2016-07-01|-5.0|175.0|9.97045|0.03612 +2016-07-01|-5.0|176.0|10.01978|0.03729 +2016-07-01|-5.0|177.0|10.05904|0.03829 +2016-07-01|-5.0|178.0|10.0887|0.03912 +2016-07-01|-5.0|179.0|10.10934|0.03977 +2016-07-01|-5.0|-1.0|-7.77841|0.14302 +2016-07-01|-5.0|-2.0|-8.20141|0.14076 +2016-07-01|-5.0|-3.0|-8.62898|0.1384 +2016-07-01|-5.0|-4.0|-9.06094|0.13598 +2016-07-01|-5.0|-5.0|-9.49708|0.13349 +2016-07-01|-5.0|-6.0|-9.93718|0.13097 +2016-07-01|-5.0|-7.0|-10.38096|0.12841 +2016-07-01|-5.0|-8.0|-10.82806|0.12584 +2016-07-01|-5.0|-9.0|-11.27809|0.12326 +2016-07-01|-5.0|-10.0|-11.73058|0.12068 +2016-07-01|-5.0|-11.0|-12.185|0.11813 +2016-07-01|-5.0|-12.0|-12.64073|0.1156 +2016-07-01|-5.0|-13.0|-13.09709|0.11311 +2016-07-01|-5.0|-14.0|-13.55331|0.11066 +2016-07-01|-5.0|-15.0|-14.00854|0.10826 +2016-07-01|-5.0|-16.0|-14.46187|0.1059 +2016-07-01|-5.0|-17.0|-14.91232|0.10358 +2016-07-01|-5.0|-18.0|-15.35881|0.1013 +2016-07-01|-5.0|-19.0|-15.80023|0.09905 +2016-07-01|-5.0|-20.0|-16.23539|0.09681 +2016-07-01|-5.0|-21.0|-16.66305|0.09458 +2016-07-01|-5.0|-22.0|-17.08192|0.09232 +2016-07-01|-5.0|-23.0|-17.49069|0.09001 +2016-07-01|-5.0|-24.0|-17.88801|0.08764 +2016-07-01|-5.0|-25.0|-18.27248|0.08517 +2016-07-01|-5.0|-26.0|-18.64274|0.08258 +2016-07-01|-5.0|-27.0|-18.99737|0.07983 +2016-07-01|-5.0|-28.0|-19.33499|0.07691 +2016-07-01|-5.0|-29.0|-19.65422|0.07378 +2016-07-01|-5.0|-30.0|-19.95371|0.07041 +2016-07-01|-5.0|-31.0|-20.23213|0.06678 +2016-07-01|-5.0|-32.0|-20.48819|0.06286 +2016-07-01|-5.0|-33.0|-20.72066|0.05865 +2016-07-01|-5.0|-34.0|-20.92833|0.05412 +2016-07-01|-5.0|-35.0|-21.11008|0.04926 +2016-07-01|-5.0|-36.0|-21.26484|0.04408 +2016-07-01|-5.0|-37.0|-21.39161|0.03855 +2016-07-01|-5.0|-38.0|-21.48946|0.0327 +2016-07-01|-5.0|-39.0|-21.55754|0.02652 +2016-07-01|-5.0|-40.0|-21.59508|0.02004 +2016-07-01|-5.0|-41.0|-21.60139|0.01325 +2016-07-01|-5.0|-42.0|-21.57588|0.0062 +2016-07-01|-5.0|-43.0|-21.51802|-0.00111 +2016-07-01|-5.0|-44.0|-21.42741|-0.00863 +2016-07-01|-5.0|-45.0|-21.30371|-0.01634 +2016-07-01|-5.0|-46.0|-21.14668|-0.02421 +2016-07-01|-5.0|-47.0|-20.95619|-0.03219 +2016-07-01|-5.0|-48.0|-20.7322|-0.04025 +2016-07-01|-5.0|-49.0|-20.47477|-0.04835 +2016-07-01|-5.0|-50.0|-20.18406|-0.05645 +2016-07-01|-5.0|-51.0|-19.86034|-0.06451 +2016-07-01|-5.0|-52.0|-19.50397|-0.07248 +2016-07-01|-5.0|-53.0|-19.11545|-0.08032 +2016-07-01|-5.0|-54.0|-18.69536|-0.088 +2016-07-01|-5.0|-55.0|-18.24441|-0.09547 +2016-07-01|-5.0|-56.0|-17.76342|-0.1027 +2016-07-01|-5.0|-57.0|-17.25333|-0.10965 +2016-07-01|-5.0|-58.0|-16.71518|-0.1163 +2016-07-01|-5.0|-59.0|-16.15016|-0.12261 +2016-07-01|-5.0|-60.0|-15.55955|-0.12854 +2016-07-01|-5.0|-61.0|-14.94476|-0.13409 +2016-07-01|-5.0|-62.0|-14.30732|-0.13923 +2016-07-01|-5.0|-63.0|-13.64886|-0.14394 +2016-07-01|-5.0|-64.0|-12.97115|-0.14821 +2016-07-01|-5.0|-65.0|-12.27603|-0.15203 +2016-07-01|-5.0|-66.0|-11.56546|-0.15539 +2016-07-01|-5.0|-67.0|-10.84149|-0.15829 +2016-07-01|-5.0|-68.0|-10.10624|-0.16072 +2016-07-01|-5.0|-69.0|-9.36191|-0.16269 +2016-07-01|-5.0|-70.0|-8.61076|-0.16421 +2016-07-01|-5.0|-71.0|-7.85508|-0.16528 +2016-07-01|-5.0|-72.0|-7.09723|-0.16592 +2016-07-01|-5.0|-73.0|-6.33953|-0.16614 +2016-07-01|-5.0|-74.0|-5.58433|-0.16595 +2016-07-01|-5.0|-75.0|-4.83396|-0.16537 +2016-07-01|-5.0|-76.0|-4.09071|-0.16442 +2016-07-01|-5.0|-77.0|-3.3568|-0.16312 +2016-07-01|-5.0|-78.0|-2.6344|-0.16149 +2016-07-01|-5.0|-79.0|-1.92559|-0.15955 +2016-07-01|-5.0|-80.0|-1.23232|-0.15733 +2016-07-01|-5.0|-81.0|-0.55645|-0.15485 +2016-07-01|-5.0|-82.0|0.10029|-0.15214 +2016-07-01|-5.0|-83.0|0.73634|-0.14922 +2016-07-01|-5.0|-84.0|1.35028|-0.14611 +2016-07-01|-5.0|-85.0|1.94083|-0.14285 +2016-07-01|-5.0|-86.0|2.50691|-0.13947 +2016-07-01|-5.0|-87.0|3.0476|-0.13597 +2016-07-01|-5.0|-88.0|3.56216|-0.1324 +2016-07-01|-5.0|-89.0|4.05004|-0.12877 +2016-07-01|-5.0|-90.0|4.51083|-0.12512 +2016-07-01|-5.0|-91.0|4.94435|-0.12146 +2016-07-01|-5.0|-92.0|5.35056|-0.11782 +2016-07-01|-5.0|-93.0|5.7296|-0.11422 +2016-07-01|-5.0|-94.0|6.08178|-0.11068 +2016-07-01|-5.0|-95.0|6.40757|-0.10722 +2016-07-01|-5.0|-96.0|6.70758|-0.10386 +2016-07-01|-5.0|-97.0|6.98257|-0.10061 +2016-07-01|-5.0|-98.0|7.23343|-0.09748 +2016-07-01|-5.0|-99.0|7.46118|-0.09448 +2016-07-01|-5.0|-100.0|7.66693|-0.09162 +2016-07-01|-5.0|-101.0|7.85191|-0.08891 +2016-07-01|-5.0|-102.0|8.01742|-0.08635 +2016-07-01|-5.0|-103.0|8.16482|-0.08394 +2016-07-01|-5.0|-104.0|8.29552|-0.08167 +2016-07-01|-5.0|-105.0|8.41099|-0.07954 +2016-07-01|-5.0|-106.0|8.5127|-0.07754 +2016-07-01|-5.0|-107.0|8.60212|-0.07566 +2016-07-01|-5.0|-108.0|8.68071|-0.0739 +2016-07-01|-5.0|-109.0|8.74989|-0.07222 +2016-07-01|-5.0|-110.0|8.81106|-0.07063 +2016-07-01|-5.0|-111.0|8.86552|-0.0691 +2016-07-01|-5.0|-112.0|8.91453|-0.06761 +2016-07-01|-5.0|-113.0|8.95924|-0.06615 +2016-07-01|-5.0|-114.0|9.0007|-0.06471 +2016-07-01|-5.0|-115.0|9.03986|-0.06326 +2016-07-01|-5.0|-116.0|9.07755|-0.0618 +2016-07-01|-5.0|-117.0|9.11448|-0.06031 +2016-07-01|-5.0|-118.0|9.15125|-0.05878 +2016-07-01|-5.0|-119.0|9.18831|-0.05719 +2016-07-01|-5.0|-120.0|9.22602|-0.05556 +2016-07-01|-5.0|-121.0|9.2646|-0.05386 +2016-07-01|-5.0|-122.0|9.30417|-0.0521 +2016-07-01|-5.0|-123.0|9.34475|-0.05029 +2016-07-01|-5.0|-124.0|9.38626|-0.04842 +2016-07-01|-5.0|-125.0|9.42853|-0.0465 +2016-07-01|-5.0|-126.0|9.47135|-0.04454 +2016-07-01|-5.0|-127.0|9.51441|-0.04255 +2016-07-01|-5.0|-128.0|9.5574|-0.04054 +2016-07-01|-5.0|-129.0|9.59993|-0.03852 +2016-07-01|-5.0|-130.0|9.64163|-0.0365 +2016-07-01|-5.0|-131.0|9.6821|-0.0345 +2016-07-01|-5.0|-132.0|9.72096|-0.03252 +2016-07-01|-5.0|-133.0|9.75782|-0.03057 +2016-07-01|-5.0|-134.0|9.79234|-0.02867 +2016-07-01|-5.0|-135.0|9.82419|-0.02682 +2016-07-01|-5.0|-136.0|9.85311|-0.02503 +2016-07-01|-5.0|-137.0|9.87885|-0.0233 +2016-07-01|-5.0|-138.0|9.90124|-0.02162 +2016-07-01|-5.0|-139.0|9.92014|-0.02001 +2016-07-01|-5.0|-140.0|9.9355|-0.01845 +2016-07-01|-5.0|-141.0|9.94729|-0.01693 +2016-07-01|-5.0|-142.0|9.95556|-0.01546 +2016-07-01|-5.0|-143.0|9.96042|-0.01402 +2016-07-01|-5.0|-144.0|9.96203|-0.01261 +2016-07-01|-5.0|-145.0|9.9606|-0.0112 +2016-07-01|-5.0|-146.0|9.95638|-0.00979 +2016-07-01|-5.0|-147.0|9.9497|-0.00836 +2016-07-01|-5.0|-148.0|9.94089|-0.00691 +2016-07-01|-5.0|-149.0|9.93033|-0.00542 +2016-07-01|-5.0|-150.0|9.91845|-0.00388 +2016-07-01|-5.0|-151.0|9.90566|-0.00229 +2016-07-01|-5.0|-152.0|9.89243|-6.3E-4 +2016-07-01|-5.0|-153.0|9.8792|0.00109 +2016-07-01|-5.0|-154.0|9.86642|0.00289 +2016-07-01|-5.0|-155.0|9.85456|0.00475 +2016-07-01|-5.0|-156.0|9.84403|0.00668 +2016-07-01|-5.0|-157.0|9.83525|0.00868 +2016-07-01|-5.0|-158.0|9.82857|0.01072 +2016-07-01|-5.0|-159.0|9.82433|0.01281 +2016-07-01|-5.0|-160.0|9.8228|0.01494 +2016-07-01|-5.0|-161.0|9.8242|0.01708 +2016-07-01|-5.0|-162.0|9.82867|0.01922 +2016-07-01|-5.0|-163.0|9.8363|0.02136 +2016-07-01|-5.0|-164.0|9.84707|0.02346 +2016-07-01|-5.0|-165.0|9.86091|0.02551 +2016-07-01|-5.0|-166.0|9.87762|0.02749 +2016-07-01|-5.0|-167.0|9.89695|0.02939 +2016-07-01|-5.0|-168.0|9.91855|0.03118 +2016-07-01|-5.0|-169.0|9.94196|0.03286 +2016-07-01|-5.0|-170.0|9.96666|0.0344 +2016-07-01|-5.0|-171.0|9.99203|0.03579 +2016-07-01|-5.0|-172.0|10.0174|0.03702 +2016-07-01|-5.0|-173.0|10.042|0.03808 +2016-07-01|-5.0|-174.0|10.06504|0.03896 +2016-07-01|-5.0|-175.0|10.08567|0.03966 +2016-07-01|-5.0|-176.0|10.103|0.04016 +2016-07-01|-5.0|-177.0|10.11615|0.04047 +2016-07-01|-5.0|-178.0|10.12422|0.04058 +2016-07-01|-5.0|-179.0|10.12634|0.0405 +2016-07-01|-6.0|0.0|-7.84837|0.14969 +2016-07-01|-6.0|1.0|-7.42032|0.152 +2016-07-01|-6.0|2.0|-6.99696|0.15414 +2016-07-01|-6.0|3.0|-6.5786|0.15608 +2016-07-01|-6.0|4.0|-6.16561|0.1578 +2016-07-01|-6.0|5.0|-5.75838|0.15929 +2016-07-01|-6.0|6.0|-5.35737|0.16051 +2016-07-01|-6.0|7.0|-4.96312|0.16144 +2016-07-01|-6.0|8.0|-4.57624|0.16206 +2016-07-01|-6.0|9.0|-4.19741|0.16235 +2016-07-01|-6.0|10.0|-3.82744|0.16227 +2016-07-01|-6.0|11.0|-3.4672|0.1618 +2016-07-01|-6.0|12.0|-3.11769|0.16092 +2016-07-01|-6.0|13.0|-2.77998|0.15959 +2016-07-01|-6.0|14.0|-2.45526|0.1578 +2016-07-01|-6.0|15.0|-2.14478|0.15552 +2016-07-01|-6.0|16.0|-1.84988|0.15275 +2016-07-01|-6.0|17.0|-1.57194|0.14946 +2016-07-01|-6.0|18.0|-1.31239|0.14565 +2016-07-01|-6.0|19.0|-1.07267|0.14132 +2016-07-01|-6.0|20.0|-0.85421|0.13647 +2016-07-01|-6.0|21.0|-0.6584|0.13113 +2016-07-01|-6.0|22.0|-0.48657|0.12531 +2016-07-01|-6.0|23.0|-0.33994|0.11904 +2016-07-01|-6.0|24.0|-0.21962|0.11237 +2016-07-01|-6.0|25.0|-0.12654|0.10534 +2016-07-01|-6.0|26.0|-0.06146|0.09801 +2016-07-01|-6.0|27.0|-0.02492|0.09043 +2016-07-01|-6.0|28.0|-0.01723|0.08269 +2016-07-01|-6.0|29.0|-0.03844|0.07485 +2016-07-01|-6.0|30.0|-0.08833|0.06699 +2016-07-01|-6.0|31.0|-0.1664|0.0592 +2016-07-01|-6.0|32.0|-0.27187|0.05155 +2016-07-01|-6.0|33.0|-0.40366|0.04414 +2016-07-01|-6.0|34.0|-0.56043|0.03703 +2016-07-01|-6.0|35.0|-0.74057|0.03032 +2016-07-01|-6.0|36.0|-0.94222|0.02407 +2016-07-01|-6.0|37.0|-1.16331|0.01835 +2016-07-01|-6.0|38.0|-1.40157|0.01322 +2016-07-01|-6.0|39.0|-1.65456|0.00873 +2016-07-01|-6.0|40.0|-1.91972|0.00493 +2016-07-01|-6.0|41.0|-2.19443|0.00183 +2016-07-01|-6.0|42.0|-2.47599|-5.3E-4 +2016-07-01|-6.0|43.0|-2.76172|-0.00214 +2016-07-01|-6.0|44.0|-3.04897|-0.00301 +2016-07-01|-6.0|45.0|-3.33517|-0.00315 +2016-07-01|-6.0|46.0|-3.61786|-0.00259 +2016-07-01|-6.0|47.0|-3.89473|-0.00134 +2016-07-01|-6.0|48.0|-4.16365|5.5E-4 +2016-07-01|-6.0|49.0|-4.42268|0.00303 +2016-07-01|-6.0|50.0|-4.67012|0.00604 +2016-07-01|-6.0|51.0|-4.9045|0.00954 +2016-07-01|-6.0|52.0|-5.12457|0.01346 +2016-07-01|-6.0|53.0|-5.32934|0.01772 +2016-07-01|-6.0|54.0|-5.51807|0.02228 +2016-07-01|-6.0|55.0|-5.69024|0.02705 +2016-07-01|-6.0|56.0|-5.84554|0.03198 +2016-07-01|-6.0|57.0|-5.98386|0.037 +2016-07-01|-6.0|58.0|-6.10527|0.04206 +2016-07-01|-6.0|59.0|-6.21|0.04708 +2016-07-01|-6.0|60.0|-6.29837|0.05203 +2016-07-01|-6.0|61.0|-6.37082|0.05686 +2016-07-01|-6.0|62.0|-6.42785|0.06153 +2016-07-01|-6.0|63.0|-6.47|0.06599 +2016-07-01|-6.0|64.0|-6.4978|0.07023 +2016-07-01|-6.0|65.0|-6.51177|0.07421 +2016-07-01|-6.0|66.0|-6.5124|0.07793 +2016-07-01|-6.0|67.0|-6.50012|0.08136 +2016-07-01|-6.0|68.0|-6.47529|0.0845 +2016-07-01|-6.0|69.0|-6.43818|0.08734 +2016-07-01|-6.0|70.0|-6.38897|0.08989 +2016-07-01|-6.0|71.0|-6.32778|0.09215 +2016-07-01|-6.0|72.0|-6.25462|0.09412 +2016-07-01|-6.0|73.0|-6.16943|0.09581 +2016-07-01|-6.0|74.0|-6.07212|0.09723 +2016-07-01|-6.0|75.0|-5.96253|0.09838 +2016-07-01|-6.0|76.0|-5.84049|0.09926 +2016-07-01|-6.0|77.0|-5.70584|0.0999 +2016-07-01|-6.0|78.0|-5.55844|0.10028 +2016-07-01|-6.0|79.0|-5.3982|0.10041 +2016-07-01|-6.0|80.0|-5.22512|0.10029 +2016-07-01|-6.0|81.0|-5.0393|0.09991 +2016-07-01|-6.0|82.0|-4.84098|0.09928 +2016-07-01|-6.0|83.0|-4.63052|0.09838 +2016-07-01|-6.0|84.0|-4.40849|0.09721 +2016-07-01|-6.0|85.0|-4.17558|0.09575 +2016-07-01|-6.0|86.0|-3.93271|0.09398 +2016-07-01|-6.0|87.0|-3.68098|0.09191 +2016-07-01|-6.0|88.0|-3.42165|0.0895 +2016-07-01|-6.0|89.0|-3.15618|0.08675 +2016-07-01|-6.0|90.0|-2.88617|0.08365 +2016-07-01|-6.0|91.0|-2.61337|0.08019 +2016-07-01|-6.0|92.0|-2.33965|0.07635 +2016-07-01|-6.0|93.0|-2.06692|0.07214 +2016-07-01|-6.0|94.0|-1.7972|0.06755 +2016-07-01|-6.0|95.0|-1.53245|0.06259 +2016-07-01|-6.0|96.0|-1.27466|0.05726 +2016-07-01|-6.0|97.0|-1.02571|0.05157 +2016-07-01|-6.0|98.0|-0.78737|0.04555 +2016-07-01|-6.0|99.0|-0.56129|0.03921 +2016-07-01|-6.0|100.0|-0.3489|0.03258 +2016-07-01|-6.0|101.0|-0.15142|0.0257 +2016-07-01|-6.0|102.0|0.03016|0.0186 +2016-07-01|-6.0|103.0|0.19514|0.01132 +2016-07-01|-6.0|104.0|0.3431|0.00391 +2016-07-01|-6.0|105.0|0.47392|-0.00359 +2016-07-01|-6.0|106.0|0.58777|-0.01113 +2016-07-01|-6.0|107.0|0.68512|-0.01866 +2016-07-01|-6.0|108.0|0.76676|-0.02613 +2016-07-01|-6.0|109.0|0.8337|-0.03348 +2016-07-01|-6.0|110.0|0.88726|-0.04067 +2016-07-01|-6.0|111.0|0.92893|-0.04764 +2016-07-01|-6.0|112.0|0.96044|-0.05436 +2016-07-01|-6.0|113.0|0.98365|-0.06077 +2016-07-01|-6.0|114.0|1.00055|-0.06683 +2016-07-01|-6.0|115.0|1.01319|-0.07251 +2016-07-01|-6.0|116.0|1.02368|-0.07777 +2016-07-01|-6.0|117.0|1.03411|-0.08259 +2016-07-01|-6.0|118.0|1.04651|-0.08693 +2016-07-01|-6.0|119.0|1.06286|-0.09079 +2016-07-01|-6.0|120.0|1.08498|-0.09414 +2016-07-01|-6.0|121.0|1.11455|-0.09697 +2016-07-01|-6.0|122.0|1.15306|-0.0993 +2016-07-01|-6.0|123.0|1.20181|-0.1011 +2016-07-01|-6.0|124.0|1.26187|-0.10239 +2016-07-01|-6.0|125.0|1.33406|-0.10319 +2016-07-01|-6.0|126.0|1.41898|-0.10349 +2016-07-01|-6.0|127.0|1.51698|-0.10333 +2016-07-01|-6.0|128.0|1.62818|-0.10272 +2016-07-01|-6.0|129.0|1.75247|-0.10168 +2016-07-01|-6.0|130.0|1.88956|-0.10025 +2016-07-01|-6.0|131.0|2.03894|-0.09844 +2016-07-01|-6.0|132.0|2.19997|-0.09629 +2016-07-01|-6.0|133.0|2.37186|-0.09383 +2016-07-01|-6.0|134.0|2.55372|-0.09109 +2016-07-01|-6.0|135.0|2.74458|-0.0881 +2016-07-01|-6.0|136.0|2.94342|-0.08489 +2016-07-01|-6.0|137.0|3.1492|-0.08149 +2016-07-01|-6.0|138.0|3.36088|-0.07793 +2016-07-01|-6.0|139.0|3.57747|-0.07423 +2016-07-01|-6.0|140.0|3.798|-0.07043 +2016-07-01|-6.0|141.0|4.02158|-0.06655 +2016-07-01|-6.0|142.0|4.24737|-0.0626 +2016-07-01|-6.0|143.0|4.47465|-0.05861 +2016-07-01|-6.0|144.0|4.70277|-0.05461 +2016-07-01|-6.0|145.0|4.93114|-0.05059 +2016-07-01|-6.0|146.0|5.15929|-0.04659 +2016-07-01|-6.0|147.0|5.38681|-0.04262 +2016-07-01|-6.0|148.0|5.61335|-0.03867 +2016-07-01|-6.0|149.0|5.8386|-0.03478 +2016-07-01|-6.0|150.0|6.0623|-0.03093 +2016-07-01|-6.0|151.0|6.28423|-0.02715 +2016-07-01|-6.0|152.0|6.50414|-0.02343 +2016-07-01|-6.0|153.0|6.72181|-0.01979 +2016-07-01|-6.0|154.0|6.93696|-0.01622 +2016-07-01|-6.0|155.0|7.14933|-0.01273 +2016-07-01|-6.0|156.0|7.35857|-0.00932 +2016-07-01|-6.0|157.0|7.56433|-0.006 +2016-07-01|-6.0|158.0|7.76619|-0.00276 +2016-07-01|-6.0|159.0|7.96367|3.9E-4 +2016-07-01|-6.0|160.0|8.15627|0.00345 +2016-07-01|-6.0|161.0|8.34344|0.00642 +2016-07-01|-6.0|162.0|8.52459|0.0093 +2016-07-01|-6.0|163.0|8.69912|0.01208 +2016-07-01|-6.0|164.0|8.86643|0.01476 +2016-07-01|-6.0|165.0|9.0259|0.01734 +2016-07-01|-6.0|166.0|9.17696|0.01982 +2016-07-01|-6.0|167.0|9.31905|0.02219 +2016-07-01|-6.0|168.0|9.45168|0.02445 +2016-07-01|-6.0|169.0|9.57442|0.02659 +2016-07-01|-6.0|170.0|9.68692|0.02861 +2016-07-01|-6.0|171.0|9.78891|0.0305 +2016-07-01|-6.0|172.0|9.88023|0.03226 +2016-07-01|-6.0|173.0|9.96083|0.03388 +2016-07-01|-6.0|174.0|10.03074|0.03535 +2016-07-01|-6.0|175.0|10.09015|0.03667 +2016-07-01|-6.0|176.0|10.13933|0.03783 +2016-07-01|-6.0|177.0|10.17866|0.03883 +2016-07-01|-6.0|178.0|10.20862|0.03966 +2016-07-01|-6.0|179.0|10.22981|0.0403 +2016-07-01|-6.0|-1.0|-8.2808|0.14722 +2016-07-01|-6.0|-2.0|-8.71734|0.14461 +2016-07-01|-6.0|-3.0|-9.1577|0.14188 +2016-07-01|-6.0|-4.0|-9.60159|0.13905 +2016-07-01|-6.0|-5.0|-10.04869|0.13613 +2016-07-01|-6.0|-6.0|-10.49868|0.13315 +2016-07-01|-6.0|-7.0|-10.95116|0.13013 +2016-07-01|-6.0|-8.0|-11.40573|0.12707 +2016-07-01|-6.0|-9.0|-11.86192|0.124 +2016-07-01|-6.0|-10.0|-12.3192|0.12094 +2016-07-01|-6.0|-11.0|-12.77701|0.1179 +2016-07-01|-6.0|-12.0|-13.2347|0.1149 +2016-07-01|-6.0|-13.0|-13.69157|0.11194 +2016-07-01|-6.0|-14.0|-14.14686|0.10903 +2016-07-01|-6.0|-15.0|-14.59974|0.10619 +2016-07-01|-6.0|-16.0|-15.04932|0.10341 +2016-07-01|-6.0|-17.0|-15.49465|0.1007 +2016-07-01|-6.0|-18.0|-15.93472|0.09805 +2016-07-01|-6.0|-19.0|-16.36845|0.09546 +2016-07-01|-6.0|-20.0|-16.79474|0.0929 +2016-07-01|-6.0|-21.0|-17.21241|0.09038 +2016-07-01|-6.0|-22.0|-17.62026|0.08785 +2016-07-01|-6.0|-23.0|-18.01706|0.08531 +2016-07-01|-6.0|-24.0|-18.40151|0.08273 +2016-07-01|-6.0|-25.0|-18.77235|0.08008 +2016-07-01|-6.0|-26.0|-19.12826|0.07732 +2016-07-01|-6.0|-27.0|-19.46794|0.07444 +2016-07-01|-6.0|-28.0|-19.79007|0.07139 +2016-07-01|-6.0|-29.0|-20.09336|0.06816 +2016-07-01|-6.0|-30.0|-20.37653|0.0647 +2016-07-01|-6.0|-31.0|-20.63833|0.061 +2016-07-01|-6.0|-32.0|-20.87754|0.05703 +2016-07-01|-6.0|-33.0|-21.09298|0.05277 +2016-07-01|-6.0|-34.0|-21.28352|0.0482 +2016-07-01|-6.0|-35.0|-21.44808|0.04331 +2016-07-01|-6.0|-36.0|-21.58563|0.0381 +2016-07-01|-6.0|-37.0|-21.69523|0.03256 +2016-07-01|-6.0|-38.0|-21.77599|0.0267 +2016-07-01|-6.0|-39.0|-21.82708|0.02051 +2016-07-01|-6.0|-40.0|-21.84777|0.01402 +2016-07-01|-6.0|-41.0|-21.83739|0.00724 +2016-07-01|-6.0|-42.0|-21.79538|1.9E-4 +2016-07-01|-6.0|-43.0|-21.72122|-0.00711 +2016-07-01|-6.0|-44.0|-21.61451|-0.01462 +2016-07-01|-6.0|-45.0|-21.47494|-0.02232 +2016-07-01|-6.0|-46.0|-21.30226|-0.03016 +2016-07-01|-6.0|-47.0|-21.09636|-0.03812 +2016-07-01|-6.0|-48.0|-20.85717|-0.04615 +2016-07-01|-6.0|-49.0|-20.58477|-0.05422 +2016-07-01|-6.0|-50.0|-20.27931|-0.06228 +2016-07-01|-6.0|-51.0|-19.94105|-0.07029 +2016-07-01|-6.0|-52.0|-19.57035|-0.07821 +2016-07-01|-6.0|-53.0|-19.16769|-0.08599 +2016-07-01|-6.0|-54.0|-18.73365|-0.0936 +2016-07-01|-6.0|-55.0|-18.26892|-0.101 +2016-07-01|-6.0|-56.0|-17.77433|-0.10815 +2016-07-01|-6.0|-57.0|-17.25079|-0.11501 +2016-07-01|-6.0|-58.0|-16.69937|-0.12155 +2016-07-01|-6.0|-59.0|-16.12123|-0.12774 +2016-07-01|-6.0|-60.0|-15.51766|-0.13355 +2016-07-01|-6.0|-61.0|-14.89009|-0.13896 +2016-07-01|-6.0|-62.0|-14.24005|-0.14395 +2016-07-01|-6.0|-63.0|-13.56919|-0.14849 +2016-07-01|-6.0|-64.0|-12.8793|-0.15258 +2016-07-01|-6.0|-65.0|-12.17224|-0.15621 +2016-07-01|-6.0|-66.0|-11.45|-0.15936 +2016-07-01|-6.0|-67.0|-10.71466|-0.16203 +2016-07-01|-6.0|-68.0|-9.96839|-0.16423 +2016-07-01|-6.0|-69.0|-9.21343|-0.16596 +2016-07-01|-6.0|-70.0|-8.45208|-0.16722 +2016-07-01|-6.0|-71.0|-7.68668|-0.16803 +2016-07-01|-6.0|-72.0|-6.91961|-0.16839 +2016-07-01|-6.0|-73.0|-6.15326|-0.16832 +2016-07-01|-6.0|-74.0|-5.39002|-0.16784 +2016-07-01|-6.0|-75.0|-4.63226|-0.16696 +2016-07-01|-6.0|-76.0|-3.88228|-0.16572 +2016-07-01|-6.0|-77.0|-3.14237|-0.16412 +2016-07-01|-6.0|-78.0|-2.4147|-0.16219 +2016-07-01|-6.0|-79.0|-1.70137|-0.15997 +2016-07-01|-6.0|-80.0|-1.00435|-0.15746 +2016-07-01|-6.0|-81.0|-0.32551|-0.15471 +2016-07-01|-6.0|-82.0|0.33344|-0.15174 +2016-07-01|-6.0|-83.0|0.97094|-0.14856 +2016-07-01|-6.0|-84.0|1.58558|-0.14523 +2016-07-01|-6.0|-85.0|2.17613|-0.14175 +2016-07-01|-6.0|-86.0|2.74152|-0.13816 +2016-07-01|-6.0|-87.0|3.28088|-0.13448 +2016-07-01|-6.0|-88.0|3.7935|-0.13074 +2016-07-01|-6.0|-89.0|4.27888|-0.12697 +2016-07-01|-6.0|-90.0|4.73669|-0.12319 +2016-07-01|-6.0|-91.0|5.16677|-0.11942 +2016-07-01|-6.0|-92.0|5.56915|-0.11569 +2016-07-01|-6.0|-93.0|5.94404|-0.11202 +2016-07-01|-6.0|-94.0|6.2918|-0.10843 +2016-07-01|-6.0|-95.0|6.61296|-0.10494 +2016-07-01|-6.0|-96.0|6.9082|-0.10156 +2016-07-01|-6.0|-97.0|7.17833|-0.09831 +2016-07-01|-6.0|-98.0|7.42431|-0.09519 +2016-07-01|-6.0|-99.0|7.64719|-0.09223 +2016-07-01|-6.0|-100.0|7.84816|-0.08941 +2016-07-01|-6.0|-101.0|8.02848|-0.08676 +2016-07-01|-6.0|-102.0|8.18949|-0.08426 +2016-07-01|-6.0|-103.0|8.3326|-0.08192 +2016-07-01|-6.0|-104.0|8.45926|-0.07973 +2016-07-01|-6.0|-105.0|8.57095|-0.07769 +2016-07-01|-6.0|-106.0|8.66918|-0.07579 +2016-07-01|-6.0|-107.0|8.75542|-0.07401 +2016-07-01|-6.0|-108.0|8.83115|-0.07234 +2016-07-01|-6.0|-109.0|8.89782|-0.07077 +2016-07-01|-6.0|-110.0|8.9568|-0.06928 +2016-07-01|-6.0|-111.0|9.00941|-0.06785 +2016-07-01|-6.0|-112.0|9.05688|-0.06646 +2016-07-01|-6.0|-113.0|9.10036|-0.06511 +2016-07-01|-6.0|-114.0|9.14089|-0.06376 +2016-07-01|-6.0|-115.0|9.17939|-0.06241 +2016-07-01|-6.0|-116.0|9.21669|-0.06103 +2016-07-01|-6.0|-117.0|9.25346|-0.05962 +2016-07-01|-6.0|-118.0|9.29027|-0.05817 +2016-07-01|-6.0|-119.0|9.32756|-0.05666 +2016-07-01|-6.0|-120.0|9.36566|-0.05508 +2016-07-01|-6.0|-121.0|9.40477|-0.05345 +2016-07-01|-6.0|-122.0|9.44498|-0.05174 +2016-07-01|-6.0|-123.0|9.4863|-0.04997 +2016-07-01|-6.0|-124.0|9.52862|-0.04814 +2016-07-01|-6.0|-125.0|9.57177|-0.04626 +2016-07-01|-6.0|-126.0|9.6155|-0.04433 +2016-07-01|-6.0|-127.0|9.65952|-0.04236 +2016-07-01|-6.0|-128.0|9.70348|-0.04037 +2016-07-01|-6.0|-129.0|9.74701|-0.03836 +2016-07-01|-6.0|-130.0|9.78972|-0.03635 +2016-07-01|-6.0|-131.0|9.83121|-0.03435 +2016-07-01|-6.0|-132.0|9.87108|-0.03237 +2016-07-01|-6.0|-133.0|9.90896|-0.03042 +2016-07-01|-6.0|-134.0|9.9445|-0.02851 +2016-07-01|-6.0|-135.0|9.97739|-0.02665 +2016-07-01|-6.0|-136.0|10.00733|-0.02484 +2016-07-01|-6.0|-137.0|10.0341|-0.02309 +2016-07-01|-6.0|-138.0|10.05751|-0.0214 +2016-07-01|-6.0|-139.0|10.07744|-0.01976 +2016-07-01|-6.0|-140.0|10.0938|-0.01818 +2016-07-01|-6.0|-141.0|10.10658|-0.01664 +2016-07-01|-6.0|-142.0|10.11582|-0.01514 +2016-07-01|-6.0|-143.0|10.12162|-0.01368 +2016-07-01|-6.0|-144.0|10.12411|-0.01223 +2016-07-01|-6.0|-145.0|10.12351|-0.0108 +2016-07-01|-6.0|-146.0|10.12006|-0.00936 +2016-07-01|-6.0|-147.0|10.11405|-0.00791 +2016-07-01|-6.0|-148.0|10.10582|-0.00643 +2016-07-01|-6.0|-149.0|10.09574|-0.00491 +2016-07-01|-6.0|-150.0|10.0842|-0.00335 +2016-07-01|-6.0|-151.0|10.07162|-0.00174 +2016-07-01|-6.0|-152.0|10.05843|-6.0E-5 +2016-07-01|-6.0|-153.0|10.04509|0.00169 +2016-07-01|-6.0|-154.0|10.03203|0.0035 +2016-07-01|-6.0|-155.0|10.0197|0.00538 +2016-07-01|-6.0|-156.0|10.00852|0.00732 +2016-07-01|-6.0|-157.0|9.99889|0.00933 +2016-07-01|-6.0|-158.0|9.99118|0.01138 +2016-07-01|-6.0|-159.0|9.98572|0.01348 +2016-07-01|-6.0|-160.0|9.98279|0.01561 +2016-07-01|-6.0|-161.0|9.98261|0.01775 +2016-07-01|-6.0|-162.0|9.98534|0.0199 +2016-07-01|-6.0|-163.0|9.99108|0.02203 +2016-07-01|-6.0|-164.0|9.99983|0.02413 +2016-07-01|-6.0|-165.0|10.01153|0.02617 +2016-07-01|-6.0|-166.0|10.02601|0.02815 +2016-07-01|-6.0|-167.0|10.04305|0.03004 +2016-07-01|-6.0|-168.0|10.0623|0.03182 +2016-07-01|-6.0|-169.0|10.08335|0.03349 +2016-07-01|-6.0|-170.0|10.10569|0.03502 +2016-07-01|-6.0|-171.0|10.12874|0.0364 +2016-07-01|-6.0|-172.0|10.15184|0.03762 +2016-07-01|-6.0|-173.0|10.17426|0.03867 +2016-07-01|-6.0|-174.0|10.19523|0.03954 +2016-07-01|-6.0|-175.0|10.21392|0.04022 +2016-07-01|-6.0|-176.0|10.22947|0.04072 +2016-07-01|-6.0|-177.0|10.24101|0.04102 +2016-07-01|-6.0|-178.0|10.24766|0.04113 +2016-07-01|-6.0|-179.0|10.24856|0.04104 +2016-07-01|-7.0|0.0|-8.36154|0.15418 +2016-07-01|-7.0|1.0|-7.91877|0.15678 +2016-07-01|-7.0|2.0|-7.48031|0.15915 +2016-07-01|-7.0|3.0|-7.04664|0.16127 +2016-07-01|-7.0|4.0|-6.61827|0.16313 +2016-07-01|-7.0|5.0|-6.19575|0.16469 +2016-07-01|-7.0|6.0|-5.7797|0.16593 +2016-07-01|-7.0|7.0|-5.3708|0.16683 +2016-07-01|-7.0|8.0|-4.96981|0.16736 +2016-07-01|-7.0|9.0|-4.57757|0.1675 +2016-07-01|-7.0|10.0|-4.195|0.16722 +2016-07-01|-7.0|11.0|-3.82311|0.1665 +2016-07-01|-7.0|12.0|-3.463|0.16531 +2016-07-01|-7.0|13.0|-3.11586|0.16364 +2016-07-01|-7.0|14.0|-2.78295|0.16146 +2016-07-01|-7.0|15.0|-2.46561|0.15876 +2016-07-01|-7.0|16.0|-2.16524|0.15552 +2016-07-01|-7.0|17.0|-1.88325|0.15175 +2016-07-01|-7.0|18.0|-1.62112|0.14744 +2016-07-01|-7.0|19.0|-1.38028|0.14259 +2016-07-01|-7.0|20.0|-1.16217|0.13722 +2016-07-01|-7.0|21.0|-0.96815|0.13135 +2016-07-01|-7.0|22.0|-0.79952|0.12501 +2016-07-01|-7.0|23.0|-0.65744|0.11823 +2016-07-01|-7.0|24.0|-0.54294|0.11107 +2016-07-01|-7.0|25.0|-0.45688|0.10357 +2016-07-01|-7.0|26.0|-0.39993|0.0958 +2016-07-01|-7.0|27.0|-0.37251|0.08782 +2016-07-01|-7.0|28.0|-0.37481|0.0797 +2016-07-01|-7.0|29.0|-0.40677|0.07154 +2016-07-01|-7.0|30.0|-0.46803|0.0634 +2016-07-01|-7.0|31.0|-0.55796|0.05537 +2016-07-01|-7.0|32.0|-0.67563|0.04754 +2016-07-01|-7.0|33.0|-0.81985|0.03998 +2016-07-01|-7.0|34.0|-0.98913|0.03279 +2016-07-01|-7.0|35.0|-1.18174|0.02603 +2016-07-01|-7.0|36.0|-1.39569|0.01978 +2016-07-01|-7.0|37.0|-1.62879|0.01411 +2016-07-01|-7.0|38.0|-1.87867|0.00906 +2016-07-01|-7.0|39.0|-2.14279|0.00469 +2016-07-01|-7.0|40.0|-2.41852|0.00103 +2016-07-01|-7.0|41.0|-2.70314|-0.00189 +2016-07-01|-7.0|42.0|-2.9939|-0.00405 +2016-07-01|-7.0|43.0|-3.28807|-0.00544 +2016-07-01|-7.0|44.0|-3.58296|-0.00608 +2016-07-01|-7.0|45.0|-3.87597|-0.00597 +2016-07-01|-7.0|46.0|-4.16461|-0.00514 +2016-07-01|-7.0|47.0|-4.44658|-0.00363 +2016-07-01|-7.0|48.0|-4.71973|-0.00148 +2016-07-01|-7.0|49.0|-4.98214|0.00127 +2016-07-01|-7.0|50.0|-5.23212|0.00455 +2016-07-01|-7.0|51.0|-5.46819|0.00831 +2016-07-01|-7.0|52.0|-5.68915|0.01248 +2016-07-01|-7.0|53.0|-5.89402|0.017 +2016-07-01|-7.0|54.0|-6.08208|0.0218 +2016-07-01|-7.0|55.0|-6.25282|0.02682 +2016-07-01|-7.0|56.0|-6.40598|0.03198 +2016-07-01|-7.0|57.0|-6.54146|0.03723 +2016-07-01|-7.0|58.0|-6.65936|0.04251 +2016-07-01|-7.0|59.0|-6.75991|0.04775 +2016-07-01|-7.0|60.0|-6.84348|0.05292 +2016-07-01|-7.0|61.0|-6.91051|0.05795 +2016-07-01|-7.0|62.0|-6.96153|0.06282 +2016-07-01|-7.0|63.0|-6.99707|0.06748 +2016-07-01|-7.0|64.0|-7.01771|0.07191 +2016-07-01|-7.0|65.0|-7.02397|0.07609 +2016-07-01|-7.0|66.0|-7.01636|0.07999 +2016-07-01|-7.0|67.0|-6.99533|0.0836 +2016-07-01|-7.0|68.0|-6.96123|0.08691 +2016-07-01|-7.0|69.0|-6.91438|0.08993 +2016-07-01|-7.0|70.0|-6.85497|0.09264 +2016-07-01|-7.0|71.0|-6.78312|0.09505 +2016-07-01|-7.0|72.0|-6.69887|0.09716 +2016-07-01|-7.0|73.0|-6.6022|0.09899 +2016-07-01|-7.0|74.0|-6.49301|0.10053 +2016-07-01|-7.0|75.0|-6.37117|0.10179 +2016-07-01|-7.0|76.0|-6.23655|0.10278 +2016-07-01|-7.0|77.0|-6.089|0.10349 +2016-07-01|-7.0|78.0|-5.9284|0.10395 +2016-07-01|-7.0|79.0|-5.75471|0.10414 +2016-07-01|-7.0|80.0|-5.56794|0.10406 +2016-07-01|-7.0|81.0|-5.36824|0.10371 +2016-07-01|-7.0|82.0|-5.15586|0.10309 +2016-07-01|-7.0|83.0|-4.93121|0.10219 +2016-07-01|-7.0|84.0|-4.69487|0.10099 +2016-07-01|-7.0|85.0|-4.4476|0.09949 +2016-07-01|-7.0|86.0|-4.19033|0.09767 +2016-07-01|-7.0|87.0|-3.9242|0.09552 +2016-07-01|-7.0|88.0|-3.65052|0.09304 +2016-07-01|-7.0|89.0|-3.37078|0.09019 +2016-07-01|-7.0|90.0|-3.08661|0.08698 +2016-07-01|-7.0|91.0|-2.79981|0.0834 +2016-07-01|-7.0|92.0|-2.51227|0.07944 +2016-07-01|-7.0|93.0|-2.22595|0.07509 +2016-07-01|-7.0|94.0|-1.94288|0.07036 +2016-07-01|-7.0|95.0|-1.66506|0.06525 +2016-07-01|-7.0|96.0|-1.3945|0.05977 +2016-07-01|-7.0|97.0|-1.13311|0.05394 +2016-07-01|-7.0|98.0|-0.88267|0.04777 +2016-07-01|-7.0|99.0|-0.64483|0.04129 +2016-07-01|-7.0|100.0|-0.42104|0.03453 +2016-07-01|-7.0|101.0|-0.21253|0.02752 +2016-07-01|-7.0|102.0|-0.02028|0.0203 +2016-07-01|-7.0|103.0|0.15501|0.01291 +2016-07-01|-7.0|104.0|0.31292|0.0054 +2016-07-01|-7.0|105.0|0.45334|-0.00219 +2016-07-01|-7.0|106.0|0.57645|-0.00981 +2016-07-01|-7.0|107.0|0.68274|-0.0174 +2016-07-01|-7.0|108.0|0.77299|-0.02492 +2016-07-01|-7.0|109.0|0.84826|-0.03232 +2016-07-01|-7.0|110.0|0.90983|-0.03954 +2016-07-01|-7.0|111.0|0.95924|-0.04653 +2016-07-01|-7.0|112.0|0.99821|-0.05326 +2016-07-01|-7.0|113.0|1.02862|-0.05968 +2016-07-01|-7.0|114.0|1.05244|-0.06574 +2016-07-01|-7.0|115.0|1.07176|-0.07141 +2016-07-01|-7.0|116.0|1.08867|-0.07665 +2016-07-01|-7.0|117.0|1.10526|-0.08145 +2016-07-01|-7.0|118.0|1.12359|-0.08577 +2016-07-01|-7.0|119.0|1.14561|-0.08961 +2016-07-01|-7.0|120.0|1.17316|-0.09293 +2016-07-01|-7.0|121.0|1.20791|-0.09575 +2016-07-01|-7.0|122.0|1.25137|-0.09804 +2016-07-01|-7.0|123.0|1.30481|-0.09982 +2016-07-01|-7.0|124.0|1.36932|-0.1011 +2016-07-01|-7.0|125.0|1.44571|-0.10187 +2016-07-01|-7.0|126.0|1.5346|-0.10216 +2016-07-01|-7.0|127.0|1.63633|-0.10198 +2016-07-01|-7.0|128.0|1.75102|-0.10136 +2016-07-01|-7.0|129.0|1.87858|-0.10031 +2016-07-01|-7.0|130.0|2.01871|-0.09887 +2016-07-01|-7.0|131.0|2.17092|-0.09706 +2016-07-01|-7.0|132.0|2.33455|-0.09491 +2016-07-01|-7.0|133.0|2.50884|-0.09245 +2016-07-01|-7.0|134.0|2.6929|-0.08971 +2016-07-01|-7.0|135.0|2.88576|-0.08672 +2016-07-01|-7.0|136.0|3.0864|-0.08351 +2016-07-01|-7.0|137.0|3.29381|-0.08011 +2016-07-01|-7.0|138.0|3.50694|-0.07656 +2016-07-01|-7.0|139.0|3.72481|-0.07287 +2016-07-01|-7.0|140.0|3.94645|-0.06908 +2016-07-01|-7.0|141.0|4.17097|-0.0652 +2016-07-01|-7.0|142.0|4.39756|-0.06126 +2016-07-01|-7.0|143.0|4.62548|-0.05729 +2016-07-01|-7.0|144.0|4.85408|-0.0533 +2016-07-01|-7.0|145.0|5.0828|-0.0493 +2016-07-01|-7.0|146.0|5.31115|-0.04532 +2016-07-01|-7.0|147.0|5.53874|-0.04136 +2016-07-01|-7.0|148.0|5.7652|-0.03743 +2016-07-01|-7.0|149.0|5.99024|-0.03356 +2016-07-01|-7.0|150.0|6.21362|-0.02974 +2016-07-01|-7.0|151.0|6.43508|-0.02598 +2016-07-01|-7.0|152.0|6.65441|-0.02229 +2016-07-01|-7.0|153.0|6.87136|-0.01867 +2016-07-01|-7.0|154.0|7.0857|-0.01513 +2016-07-01|-7.0|155.0|7.29714|-0.01167 +2016-07-01|-7.0|156.0|7.50535|-0.00829 +2016-07-01|-7.0|157.0|7.70999|-0.005 +2016-07-01|-7.0|158.0|7.91063|-0.00179 +2016-07-01|-7.0|159.0|8.10684|0.00133 +2016-07-01|-7.0|160.0|8.2981|0.00436 +2016-07-01|-7.0|161.0|8.48388|0.00729 +2016-07-01|-7.0|162.0|8.66362|0.01013 +2016-07-01|-7.0|163.0|8.83674|0.01288 +2016-07-01|-7.0|164.0|9.00263|0.01553 +2016-07-01|-7.0|165.0|9.16071|0.01807 +2016-07-01|-7.0|166.0|9.31043|0.02052 +2016-07-01|-7.0|167.0|9.45126|0.02286 +2016-07-01|-7.0|168.0|9.58271|0.02509 +2016-07-01|-7.0|169.0|9.70438|0.0272 +2016-07-01|-7.0|170.0|9.81594|0.02919 +2016-07-01|-7.0|171.0|9.91714|0.03106 +2016-07-01|-7.0|172.0|10.00784|0.0328 +2016-07-01|-7.0|173.0|10.088|0.0344 +2016-07-01|-7.0|174.0|10.15767|0.03586 +2016-07-01|-7.0|175.0|10.21704|0.03717 +2016-07-01|-7.0|176.0|10.2664|0.03832 +2016-07-01|-7.0|177.0|10.30613|0.03931 +2016-07-01|-7.0|178.0|10.33672|0.04012 +2016-07-01|-7.0|179.0|10.35876|0.04077 +2016-07-01|-7.0|-1.0|-8.80818|0.15139 +2016-07-01|-7.0|-2.0|-9.25825|0.14841 +2016-07-01|-7.0|-3.0|-9.71134|0.14528 +2016-07-01|-7.0|-4.0|-10.16703|0.14201 +2016-07-01|-7.0|-5.0|-10.62488|0.13864 +2016-07-01|-7.0|-6.0|-11.08444|0.13518 +2016-07-01|-7.0|-7.0|-11.54525|0.13165 +2016-07-01|-7.0|-8.0|-12.00681|0.12809 +2016-07-01|-7.0|-9.0|-12.46857|0.12451 +2016-07-01|-7.0|-10.0|-12.92997|0.12093 +2016-07-01|-7.0|-11.0|-13.39038|0.11738 +2016-07-01|-7.0|-12.0|-13.84916|0.11386 +2016-07-01|-7.0|-13.0|-14.30558|0.11041 +2016-07-01|-7.0|-14.0|-14.75889|0.10703 +2016-07-01|-7.0|-15.0|-15.20829|0.10373 +2016-07-01|-7.0|-16.0|-15.65291|0.10052 +2016-07-01|-7.0|-17.0|-16.09186|0.09741 +2016-07-01|-7.0|-18.0|-16.52417|0.09438 +2016-07-01|-7.0|-19.0|-16.94885|0.09143 +2016-07-01|-7.0|-20.0|-17.36487|0.08856 +2016-07-01|-7.0|-21.0|-17.77112|0.08574 +2016-07-01|-7.0|-22.0|-18.16651|0.08295 +2016-07-01|-7.0|-23.0|-18.54988|0.08018 +2016-07-01|-7.0|-24.0|-18.92006|0.07739 +2016-07-01|-7.0|-25.0|-19.27585|0.07456 +2016-07-01|-7.0|-26.0|-19.61605|0.07166 +2016-07-01|-7.0|-27.0|-19.93944|0.06865 +2016-07-01|-7.0|-28.0|-20.2448|0.0655 +2016-07-01|-7.0|-29.0|-20.53093|0.06217 +2016-07-01|-7.0|-30.0|-20.79664|0.05865 +2016-07-01|-7.0|-31.0|-21.04074|0.0549 +2016-07-01|-7.0|-32.0|-21.26209|0.05088 +2016-07-01|-7.0|-33.0|-21.45958|0.0466 +2016-07-01|-7.0|-34.0|-21.63214|0.04201 +2016-07-01|-7.0|-35.0|-21.77875|0.03712 +2016-07-01|-7.0|-36.0|-21.89844|0.0319 +2016-07-01|-7.0|-37.0|-21.99028|0.02637 +2016-07-01|-7.0|-38.0|-22.05343|0.02051 +2016-07-01|-7.0|-39.0|-22.08711|0.01434 +2016-07-01|-7.0|-40.0|-22.0906|0.00787 +2016-07-01|-7.0|-41.0|-22.06325|0.00111 +2016-07-01|-7.0|-42.0|-22.00451|-0.00592 +2016-07-01|-7.0|-43.0|-21.91389|-0.01319 +2016-07-01|-7.0|-44.0|-21.79098|-0.02067 +2016-07-01|-7.0|-45.0|-21.63547|-0.02833 +2016-07-01|-7.0|-46.0|-21.44712|-0.03614 +2016-07-01|-7.0|-47.0|-21.22581|-0.04407 +2016-07-01|-7.0|-48.0|-20.97148|-0.05206 +2016-07-01|-7.0|-49.0|-20.68417|-0.06008 +2016-07-01|-7.0|-50.0|-20.36404|-0.06808 +2016-07-01|-7.0|-51.0|-20.01133|-0.07604 +2016-07-01|-7.0|-52.0|-19.6264|-0.08389 +2016-07-01|-7.0|-53.0|-19.2097|-0.09161 +2016-07-01|-7.0|-54.0|-18.7618|-0.09915 +2016-07-01|-7.0|-55.0|-18.2834|-0.10646 +2016-07-01|-7.0|-56.0|-17.7753|-0.11352 +2016-07-01|-7.0|-57.0|-17.23841|-0.12028 +2016-07-01|-7.0|-58.0|-16.67378|-0.12671 +2016-07-01|-7.0|-59.0|-16.08259|-0.13277 +2016-07-01|-7.0|-60.0|-15.46614|-0.13845 +2016-07-01|-7.0|-61.0|-14.82584|-0.14372 +2016-07-01|-7.0|-62.0|-14.16325|-0.14855 +2016-07-01|-7.0|-63.0|-13.48004|-0.15292 +2016-07-01|-7.0|-64.0|-12.778|-0.15683 +2016-07-01|-7.0|-65.0|-12.05905|-0.16026 +2016-07-01|-7.0|-66.0|-11.32519|-0.1632 +2016-07-01|-7.0|-67.0|-10.57854|-0.16565 +2016-07-01|-7.0|-68.0|-9.82131|-0.16762 +2016-07-01|-7.0|-69.0|-9.05579|-0.16909 +2016-07-01|-7.0|-70.0|-8.2843|-0.17009 +2016-07-01|-7.0|-71.0|-7.50926|-0.17063 +2016-07-01|-7.0|-72.0|-6.73307|-0.17071 +2016-07-01|-7.0|-73.0|-5.95818|-0.17035 +2016-07-01|-7.0|-74.0|-5.18702|-0.16958 +2016-07-01|-7.0|-75.0|-4.42198|-0.16841 +2016-07-01|-7.0|-76.0|-3.66542|-0.16686 +2016-07-01|-7.0|-77.0|-2.91964|-0.16497 +2016-07-01|-7.0|-78.0|-2.18685|-0.16275 +2016-07-01|-7.0|-79.0|-1.46915|-0.16023 +2016-07-01|-7.0|-80.0|-0.76853|-0.15745 +2016-07-01|-7.0|-81.0|-0.08686|-0.15443 +2016-07-01|-7.0|-82.0|0.57416|-0.15119 +2016-07-01|-7.0|-83.0|1.21297|-0.14777 +2016-07-01|-7.0|-84.0|1.8282|-0.1442 +2016-07-01|-7.0|-85.0|2.41864|-0.1405 +2016-07-01|-7.0|-86.0|2.98325|-0.13671 +2016-07-01|-7.0|-87.0|3.5212|-0.13285 +2016-07-01|-7.0|-88.0|4.03183|-0.12895 +2016-07-01|-7.0|-89.0|4.51469|-0.12504 +2016-07-01|-7.0|-90.0|4.96949|-0.12113 +2016-07-01|-7.0|-91.0|5.39615|-0.11726 +2016-07-01|-7.0|-92.0|5.79474|-0.11345 +2016-07-01|-7.0|-93.0|6.16554|-0.10971 +2016-07-01|-7.0|-94.0|6.50896|-0.10607 +2016-07-01|-7.0|-95.0|6.8256|-0.10255 +2016-07-01|-7.0|-96.0|7.11619|-0.09916 +2016-07-01|-7.0|-97.0|7.38161|-0.09591 +2016-07-01|-7.0|-98.0|7.62286|-0.09281 +2016-07-01|-7.0|-99.0|7.84106|-0.08987 +2016-07-01|-7.0|-100.0|8.03744|-0.08711 +2016-07-01|-7.0|-101.0|8.21331|-0.08451 +2016-07-01|-7.0|-102.0|8.37005|-0.08208 +2016-07-01|-7.0|-103.0|8.50911|-0.07981 +2016-07-01|-7.0|-104.0|8.63196|-0.07771 +2016-07-01|-7.0|-105.0|8.74013|-0.07576 +2016-07-01|-7.0|-106.0|8.83512|-0.07395 +2016-07-01|-7.0|-107.0|8.91844|-0.07227 +2016-07-01|-7.0|-108.0|8.99158|-0.0707 +2016-07-01|-7.0|-109.0|9.05599|-0.06924 +2016-07-01|-7.0|-110.0|9.11303|-0.06785 +2016-07-01|-7.0|-111.0|9.16403|-0.06653 +2016-07-01|-7.0|-112.0|9.2102|-0.06525 +2016-07-01|-7.0|-113.0|9.25269|-0.06399 +2016-07-01|-7.0|-114.0|9.29251|-0.06274 +2016-07-01|-7.0|-115.0|9.33057|-0.06148 +2016-07-01|-7.0|-116.0|9.36767|-0.0602 +2016-07-01|-7.0|-117.0|9.40446|-0.05888 +2016-07-01|-7.0|-118.0|9.44149|-0.0575 +2016-07-01|-7.0|-119.0|9.47917|-0.05607 +2016-07-01|-7.0|-120.0|9.51781|-0.05457 +2016-07-01|-7.0|-121.0|9.55757|-0.05299 +2016-07-01|-7.0|-122.0|9.59855|-0.05135 +2016-07-01|-7.0|-123.0|9.64071|-0.04963 +2016-07-01|-7.0|-124.0|9.68394|-0.04785 +2016-07-01|-7.0|-125.0|9.72804|-0.046 +2016-07-01|-7.0|-126.0|9.77277|-0.0441 +2016-07-01|-7.0|-127.0|9.8178|-0.04216 +2016-07-01|-7.0|-128.0|9.86279|-0.04019 +2016-07-01|-7.0|-129.0|9.90735|-0.0382 +2016-07-01|-7.0|-130.0|9.95109|-0.0362 +2016-07-01|-7.0|-131.0|9.99362|-0.03421 +2016-07-01|-7.0|-132.0|10.03452|-0.03223 +2016-07-01|-7.0|-133.0|10.07344|-0.03028 +2016-07-01|-7.0|-134.0|10.11001|-0.02837 +2016-07-01|-7.0|-135.0|10.14391|-0.0265 +2016-07-01|-7.0|-136.0|10.17487|-0.02468 +2016-07-01|-7.0|-137.0|10.20265|-0.02291 +2016-07-01|-7.0|-138.0|10.22707|-0.0212 +2016-07-01|-7.0|-139.0|10.24799|-0.01954 +2016-07-01|-7.0|-140.0|10.26533|-0.01793 +2016-07-01|-7.0|-141.0|10.27907|-0.01637 +2016-07-01|-7.0|-142.0|10.28923|-0.01485 +2016-07-01|-7.0|-143.0|10.29592|-0.01336 +2016-07-01|-7.0|-144.0|10.29926|-0.01189 +2016-07-01|-7.0|-145.0|10.29944|-0.01043 +2016-07-01|-7.0|-146.0|10.2967|-0.00896 +2016-07-01|-7.0|-147.0|10.29133|-0.00748 +2016-07-01|-7.0|-148.0|10.28363|-0.00598 +2016-07-01|-7.0|-149.0|10.27396|-0.00444 +2016-07-01|-7.0|-150.0|10.26271|-0.00286 +2016-07-01|-7.0|-151.0|10.25028|-0.00122 +2016-07-01|-7.0|-152.0|10.23709|4.8E-4 +2016-07-01|-7.0|-153.0|10.22358|0.00224 +2016-07-01|-7.0|-154.0|10.21019|0.00407 +2016-07-01|-7.0|-155.0|10.19733|0.00597 +2016-07-01|-7.0|-156.0|10.18544|0.00792 +2016-07-01|-7.0|-157.0|10.17491|0.00994 +2016-07-01|-7.0|-158.0|10.1661|0.012 +2016-07-01|-7.0|-159.0|10.15936|0.0141 +2016-07-01|-7.0|-160.0|10.15495|0.01623 +2016-07-01|-7.0|-161.0|10.15312|0.01838 +2016-07-01|-7.0|-162.0|10.15404|0.02052 +2016-07-01|-7.0|-163.0|10.1578|0.02265 +2016-07-01|-7.0|-164.0|10.16444|0.02474 +2016-07-01|-7.0|-165.0|10.17391|0.02678 +2016-07-01|-7.0|-166.0|10.18606|0.02874 +2016-07-01|-7.0|-167.0|10.20068|0.03062 +2016-07-01|-7.0|-168.0|10.21746|0.03239 +2016-07-01|-7.0|-169.0|10.236|0.03405 +2016-07-01|-7.0|-170.0|10.25583|0.03556 +2016-07-01|-7.0|-171.0|10.27639|0.03693 +2016-07-01|-7.0|-172.0|10.29704|0.03814 +2016-07-01|-7.0|-173.0|10.31709|0.03918 +2016-07-01|-7.0|-174.0|10.33578|0.04004 +2016-07-01|-7.0|-175.0|10.3523|0.04071 +2016-07-01|-7.0|-176.0|10.36583|0.0412 +2016-07-01|-7.0|-177.0|10.3755|0.04149 +2016-07-01|-7.0|-178.0|10.38047|0.04159 +2016-07-01|-7.0|-179.0|10.37988|0.04151 +2016-07-01|-8.0|0.0|-8.89998|0.15862 +2016-07-01|-8.0|1.0|-8.44255|0.16151 +2016-07-01|-8.0|2.0|-7.98903|0.16413 +2016-07-01|-8.0|3.0|-7.54005|0.16644 +2016-07-01|-8.0|4.0|-7.09629|0.16843 +2016-07-01|-8.0|5.0|-6.65847|0.17007 +2016-07-01|-8.0|6.0|-6.22738|0.17133 +2016-07-01|-8.0|7.0|-5.80386|0.17218 +2016-07-01|-8.0|8.0|-5.38883|0.17261 +2016-07-01|-8.0|9.0|-4.98328|0.17259 +2016-07-01|-8.0|10.0|-4.58826|0.17209 +2016-07-01|-8.0|11.0|-4.20493|0.17109 +2016-07-01|-8.0|12.0|-3.83451|0.16957 +2016-07-01|-8.0|13.0|-3.47829|0.16753 +2016-07-01|-8.0|14.0|-3.13762|0.16493 +2016-07-01|-8.0|15.0|-2.81392|0.16177 +2016-07-01|-8.0|16.0|-2.50865|0.15804 +2016-07-01|-8.0|17.0|-2.22328|0.15375 +2016-07-01|-8.0|18.0|-1.95928|0.1489 +2016-07-01|-8.0|19.0|-1.71813|0.1435 +2016-07-01|-8.0|20.0|-1.50122|0.13757 +2016-07-01|-8.0|21.0|-1.3099|0.13115 +2016-07-01|-8.0|22.0|-1.14542|0.12426 +2016-07-01|-8.0|23.0|-1.00887|0.11695 +2016-07-01|-8.0|24.0|-0.90122|0.10928 +2016-07-01|-8.0|25.0|-0.82321|0.1013 +2016-07-01|-8.0|26.0|-0.77541|0.09308 +2016-07-01|-8.0|27.0|-0.75812|0.08469 +2016-07-01|-8.0|28.0|-0.77142|0.07621 +2016-07-01|-8.0|29.0|-0.81509|0.06773 +2016-07-01|-8.0|30.0|-0.88864|0.05932 +2016-07-01|-8.0|31.0|-0.99128|0.05107 +2016-07-01|-8.0|32.0|-1.12197|0.04307 +2016-07-01|-8.0|33.0|-1.27934|0.0354 +2016-07-01|-8.0|34.0|-1.46179|0.02814 +2016-07-01|-8.0|35.0|-1.66742|0.02137 +2016-07-01|-8.0|36.0|-1.89415|0.01515 +2016-07-01|-8.0|37.0|-2.13966|0.00954 +2016-07-01|-8.0|38.0|-2.40146|0.00461 +2016-07-01|-8.0|39.0|-2.67693|3.9E-4 +2016-07-01|-8.0|40.0|-2.96334|-0.00309 +2016-07-01|-8.0|41.0|-3.25791|-0.0058 +2016-07-01|-8.0|42.0|-3.55784|-0.00772 +2016-07-01|-8.0|43.0|-3.86032|-0.00886 +2016-07-01|-8.0|44.0|-4.16265|-0.00923 +2016-07-01|-8.0|45.0|-4.4622|-0.00885 +2016-07-01|-8.0|46.0|-4.75647|-0.00774 +2016-07-01|-8.0|47.0|-5.04315|-0.00594 +2016-07-01|-8.0|48.0|-5.3201|-0.0035 +2016-07-01|-8.0|49.0|-5.5854|-4.7E-4 +2016-07-01|-8.0|50.0|-5.83738|0.0031 +2016-07-01|-8.0|51.0|-6.0746|0.00714 +2016-07-01|-8.0|52.0|-6.29585|0.01158 +2016-07-01|-8.0|53.0|-6.50019|0.01637 +2016-07-01|-8.0|54.0|-6.68694|0.02143 +2016-07-01|-8.0|55.0|-6.8556|0.0267 +2016-07-01|-8.0|56.0|-7.00594|0.03211 +2016-07-01|-8.0|57.0|-7.13788|0.03759 +2016-07-01|-8.0|58.0|-7.25155|0.0431 +2016-07-01|-8.0|59.0|-7.34721|0.04857 +2016-07-01|-8.0|60.0|-7.42524|0.05396 +2016-07-01|-8.0|61.0|-7.48611|0.05921 +2016-07-01|-8.0|62.0|-7.53036|0.06429 +2016-07-01|-8.0|63.0|-7.55856|0.06916 +2016-07-01|-8.0|64.0|-7.57127|0.07379 +2016-07-01|-8.0|65.0|-7.56906|0.07816 +2016-07-01|-8.0|66.0|-7.55245|0.08226 +2016-07-01|-8.0|67.0|-7.5219|0.08605 +2016-07-01|-8.0|68.0|-7.47779|0.08955 +2016-07-01|-8.0|69.0|-7.42044|0.09274 +2016-07-01|-8.0|70.0|-7.35007|0.09562 +2016-07-01|-8.0|71.0|-7.26683|0.09819 +2016-07-01|-8.0|72.0|-7.17077|0.10045 +2016-07-01|-8.0|73.0|-7.06188|0.10241 +2016-07-01|-8.0|74.0|-6.9401|0.10408 +2016-07-01|-8.0|75.0|-6.80533|0.10546 +2016-07-01|-8.0|76.0|-6.65745|0.10655 +2016-07-01|-8.0|77.0|-6.49634|0.10735 +2016-07-01|-8.0|78.0|-6.32192|0.10788 +2016-07-01|-8.0|79.0|-6.13416|0.10813 +2016-07-01|-8.0|80.0|-5.93312|0.10809 +2016-07-01|-8.0|81.0|-5.71896|0.10776 +2016-07-01|-8.0|82.0|-5.49198|0.10715 +2016-07-01|-8.0|83.0|-5.25262|0.10623 +2016-07-01|-8.0|84.0|-5.00149|0.10501 +2016-07-01|-8.0|85.0|-4.73939|0.10346 +2016-07-01|-8.0|86.0|-4.46728|0.10158 +2016-07-01|-8.0|87.0|-4.18635|0.09936 +2016-07-01|-8.0|88.0|-3.89792|0.09678 +2016-07-01|-8.0|89.0|-3.60353|0.09383 +2016-07-01|-8.0|90.0|-3.30486|0.0905 +2016-07-01|-8.0|91.0|-3.00372|0.08679 +2016-07-01|-8.0|92.0|-2.70204|0.08269 +2016-07-01|-8.0|93.0|-2.40182|0.0782 +2016-07-01|-8.0|94.0|-2.1051|0.07332 +2016-07-01|-8.0|95.0|-1.81393|0.06805 +2016-07-01|-8.0|96.0|-1.53032|0.06242 +2016-07-01|-8.0|97.0|-1.25619|0.05643 +2016-07-01|-8.0|98.0|-0.99336|0.05011 +2016-07-01|-8.0|99.0|-0.74347|0.04348 +2016-07-01|-8.0|100.0|-0.50799|0.03658 +2016-07-01|-8.0|101.0|-0.28814|0.02944 +2016-07-01|-8.0|102.0|-0.0849|0.02209 +2016-07-01|-8.0|103.0|0.10102|0.01459 +2016-07-01|-8.0|104.0|0.26923|0.00698 +2016-07-01|-8.0|105.0|0.41961|-7.0E-4 +2016-07-01|-8.0|106.0|0.55236|-0.0084 +2016-07-01|-8.0|107.0|0.66798|-0.01606 +2016-07-01|-8.0|108.0|0.76725|-0.02363 +2016-07-01|-8.0|109.0|0.85124|-0.03107 +2016-07-01|-8.0|110.0|0.92126|-0.03832 +2016-07-01|-8.0|111.0|0.97884|-0.04534 +2016-07-01|-8.0|112.0|1.02571|-0.05208 +2016-07-01|-8.0|113.0|1.06374|-0.05849 +2016-07-01|-8.0|114.0|1.09494|-0.06455 +2016-07-01|-8.0|115.0|1.12137|-0.0702 +2016-07-01|-8.0|116.0|1.14513|-0.07544 +2016-07-01|-8.0|117.0|1.16832|-0.08021 +2016-07-01|-8.0|118.0|1.19299|-0.08451 +2016-07-01|-8.0|119.0|1.22108|-0.08832 +2016-07-01|-8.0|120.0|1.25444|-0.09162 +2016-07-01|-8.0|121.0|1.29474|-0.09441 +2016-07-01|-8.0|122.0|1.34347|-0.09668 +2016-07-01|-8.0|123.0|1.40192|-0.09844 +2016-07-01|-8.0|124.0|1.47117|-0.09969 +2016-07-01|-8.0|125.0|1.55205|-0.10044 +2016-07-01|-8.0|126.0|1.64516|-0.10072 +2016-07-01|-8.0|127.0|1.75085|-0.10053 +2016-07-01|-8.0|128.0|1.86925|-0.09989 +2016-07-01|-8.0|129.0|2.00027|-0.09884 +2016-07-01|-8.0|130.0|2.14361|-0.09739 +2016-07-01|-8.0|131.0|2.2988|-0.09558 +2016-07-01|-8.0|132.0|2.4652|-0.09343 +2016-07-01|-8.0|133.0|2.64203|-0.09097 +2016-07-01|-8.0|134.0|2.82842|-0.08823 +2016-07-01|-8.0|135.0|3.02341|-0.08525 +2016-07-01|-8.0|136.0|3.22601|-0.08205 +2016-07-01|-8.0|137.0|3.43517|-0.07867 +2016-07-01|-8.0|138.0|3.6499|-0.07512 +2016-07-01|-8.0|139.0|3.86919|-0.07145 +2016-07-01|-8.0|140.0|4.09209|-0.06767 +2016-07-01|-8.0|141.0|4.31773|-0.06381 +2016-07-01|-8.0|142.0|4.54529|-0.05989 +2016-07-01|-8.0|143.0|4.77404|-0.05594 +2016-07-01|-8.0|144.0|5.00334|-0.05196 +2016-07-01|-8.0|145.0|5.23263|-0.04798 +2016-07-01|-8.0|146.0|5.46142|-0.04402 +2016-07-01|-8.0|147.0|5.68932|-0.04009 +2016-07-01|-8.0|148.0|5.91597|-0.03619 +2016-07-01|-8.0|149.0|6.14108|-0.03234 +2016-07-01|-8.0|150.0|6.3644|-0.02854 +2016-07-01|-8.0|151.0|6.5857|-0.02481 +2016-07-01|-8.0|152.0|6.80474|-0.02115 +2016-07-01|-8.0|153.0|7.02131|-0.01756 +2016-07-01|-8.0|154.0|7.23514|-0.01405 +2016-07-01|-8.0|155.0|7.44597|-0.01062 +2016-07-01|-8.0|156.0|7.65348|-0.00728 +2016-07-01|-8.0|157.0|7.85733|-0.00402 +2016-07-01|-8.0|158.0|8.0571|-8.5E-4 +2016-07-01|-8.0|159.0|8.25236|0.00223 +2016-07-01|-8.0|160.0|8.44263|0.00523 +2016-07-01|-8.0|161.0|8.62737|0.00812 +2016-07-01|-8.0|162.0|8.80605|0.01093 +2016-07-01|-8.0|163.0|8.97808|0.01364 +2016-07-01|-8.0|164.0|9.14291|0.01625 +2016-07-01|-8.0|165.0|9.29995|0.01877 +2016-07-01|-8.0|166.0|9.44868|0.02118 +2016-07-01|-8.0|167.0|9.58858|0.02348 +2016-07-01|-8.0|168.0|9.7192|0.02568 +2016-07-01|-8.0|169.0|9.84015|0.02777 +2016-07-01|-8.0|170.0|9.95111|0.02973 +2016-07-01|-8.0|171.0|10.05186|0.03158 +2016-07-01|-8.0|172.0|10.14228|0.03329 +2016-07-01|-8.0|173.0|10.22232|0.03487 +2016-07-01|-8.0|174.0|10.29208|0.03631 +2016-07-01|-8.0|175.0|10.35174|0.0376 +2016-07-01|-8.0|176.0|10.40159|0.03874 +2016-07-01|-8.0|177.0|10.44203|0.03972 +2016-07-01|-8.0|178.0|10.47355|0.04053 +2016-07-01|-8.0|179.0|10.49673|0.04117 +2016-07-01|-8.0|-1.0|-9.3607|0.15547 +2016-07-01|-8.0|-2.0|-9.82414|0.15211 +2016-07-01|-8.0|-3.0|-10.28973|0.14855 +2016-07-01|-8.0|-4.0|-10.7569|0.14483 +2016-07-01|-8.0|-5.0|-11.22511|0.14097 +2016-07-01|-8.0|-6.0|-11.69379|0.137 +2016-07-01|-8.0|-7.0|-12.16236|0.13295 +2016-07-01|-8.0|-8.0|-12.63025|0.12885 +2016-07-01|-8.0|-9.0|-13.09684|0.12472 +2016-07-01|-8.0|-10.0|-13.56152|0.1206 +2016-07-01|-8.0|-11.0|-14.02362|0.11651 +2016-07-01|-8.0|-12.0|-14.48246|0.11247 +2016-07-01|-8.0|-13.0|-14.93734|0.10851 +2016-07-01|-8.0|-14.0|-15.3875|0.10463 +2016-07-01|-8.0|-15.0|-15.83217|0.10087 +2016-07-01|-8.0|-16.0|-16.27054|0.09721 +2016-07-01|-8.0|-17.0|-16.70174|0.09368 +2016-07-01|-8.0|-18.0|-17.12491|0.09026 +2016-07-01|-8.0|-19.0|-17.53911|0.08696 +2016-07-01|-8.0|-20.0|-17.9434|0.08376 +2016-07-01|-8.0|-21.0|-18.33679|0.08065 +2016-07-01|-8.0|-22.0|-18.71826|0.07761 +2016-07-01|-8.0|-23.0|-19.08677|0.07462 +2016-07-01|-8.0|-24.0|-19.44125|0.07164 +2016-07-01|-8.0|-25.0|-19.78061|0.06864 +2016-07-01|-8.0|-26.0|-20.10376|0.0656 +2016-07-01|-8.0|-27.0|-20.40958|0.06248 +2016-07-01|-8.0|-28.0|-20.69695|0.05924 +2016-07-01|-8.0|-29.0|-20.96477|0.05585 +2016-07-01|-8.0|-30.0|-21.21192|0.05228 +2016-07-01|-8.0|-31.0|-21.43732|0.04849 +2016-07-01|-8.0|-32.0|-21.63989|0.04446 +2016-07-01|-8.0|-33.0|-21.8186|0.04017 +2016-07-01|-8.0|-34.0|-21.97243|0.03559 +2016-07-01|-8.0|-35.0|-22.10043|0.03071 +2016-07-01|-8.0|-36.0|-22.20166|0.02551 +2016-07-01|-8.0|-37.0|-22.27524|0.02001 +2016-07-01|-8.0|-38.0|-22.32037|0.01418 +2016-07-01|-8.0|-39.0|-22.33629|0.00805 +2016-07-01|-8.0|-40.0|-22.32229|0.00161 +2016-07-01|-8.0|-41.0|-22.27777|-0.00511 +2016-07-01|-8.0|-42.0|-22.20215|-0.01209 +2016-07-01|-8.0|-43.0|-22.09495|-0.01932 +2016-07-01|-8.0|-44.0|-21.95579|-0.02676 +2016-07-01|-8.0|-45.0|-21.78433|-0.03437 +2016-07-01|-8.0|-46.0|-21.58034|-0.04213 +2016-07-01|-8.0|-47.0|-21.34367|-0.05 +2016-07-01|-8.0|-48.0|-21.07426|-0.05794 +2016-07-01|-8.0|-49.0|-20.77214|-0.0659 +2016-07-01|-8.0|-50.0|-20.43743|-0.07385 +2016-07-01|-8.0|-51.0|-20.07039|-0.08173 +2016-07-01|-8.0|-52.0|-19.67133|-0.08952 +2016-07-01|-8.0|-53.0|-19.2407|-0.09716 +2016-07-01|-8.0|-54.0|-18.77906|-0.10461 +2016-07-01|-8.0|-55.0|-18.28708|-0.11183 +2016-07-01|-8.0|-56.0|-17.76556|-0.11879 +2016-07-01|-8.0|-57.0|-17.2154|-0.12545 +2016-07-01|-8.0|-58.0|-16.63765|-0.13176 +2016-07-01|-8.0|-59.0|-16.03348|-0.1377 +2016-07-01|-8.0|-60.0|-15.40419|-0.14324 +2016-07-01|-8.0|-61.0|-14.75122|-0.14836 +2016-07-01|-8.0|-62.0|-14.07612|-0.15303 +2016-07-01|-8.0|-63.0|-13.3806|-0.15723 +2016-07-01|-8.0|-64.0|-12.66646|-0.16095 +2016-07-01|-8.0|-65.0|-11.93565|-0.16417 +2016-07-01|-8.0|-66.0|-11.19022|-0.1669 +2016-07-01|-8.0|-67.0|-10.43232|-0.16913 +2016-07-01|-8.0|-68.0|-9.66419|-0.17085 +2016-07-01|-8.0|-69.0|-8.88817|-0.17207 +2016-07-01|-8.0|-70.0|-8.10664|-0.17281 +2016-07-01|-8.0|-71.0|-7.32205|-0.17307 +2016-07-01|-8.0|-72.0|-6.53685|-0.17287 +2016-07-01|-8.0|-73.0|-5.75354|-0.17223 +2016-07-01|-8.0|-74.0|-4.97458|-0.17116 +2016-07-01|-8.0|-75.0|-4.2024|-0.16969 +2016-07-01|-8.0|-76.0|-3.43941|-0.16785 +2016-07-01|-8.0|-77.0|-2.68792|-0.16566 +2016-07-01|-8.0|-78.0|-1.95017|-0.16315 +2016-07-01|-8.0|-79.0|-1.22826|-0.16035 +2016-07-01|-8.0|-80.0|-0.52421|-0.15729 +2016-07-01|-8.0|-81.0|0.16014|-0.15399 +2016-07-01|-8.0|-82.0|0.82307|-0.1505 +2016-07-01|-8.0|-83.0|1.46307|-0.14684 +2016-07-01|-8.0|-84.0|2.07876|-0.14304 +2016-07-01|-8.0|-85.0|2.66896|-0.13913 +2016-07-01|-8.0|-86.0|3.2327|-0.13514 +2016-07-01|-8.0|-87.0|3.76916|-0.1311 +2016-07-01|-8.0|-88.0|4.27775|-0.12704 +2016-07-01|-8.0|-89.0|4.75805|-0.12299 +2016-07-01|-8.0|-90.0|5.20984|-0.11896 +2016-07-01|-8.0|-91.0|5.63308|-0.11499 +2016-07-01|-8.0|-92.0|6.02791|-0.1111 +2016-07-01|-8.0|-93.0|6.39467|-0.1073 +2016-07-01|-8.0|-94.0|6.73383|-0.10362 +2016-07-01|-8.0|-95.0|7.04604|-0.10007 +2016-07-01|-8.0|-96.0|7.3321|-0.09666 +2016-07-01|-8.0|-97.0|7.59294|-0.09342 +2016-07-01|-8.0|-98.0|7.82962|-0.09034 +2016-07-01|-8.0|-99.0|8.04332|-0.08744 +2016-07-01|-8.0|-100.0|8.23529|-0.08471 +2016-07-01|-8.0|-101.0|8.40691|-0.08217 +2016-07-01|-8.0|-102.0|8.55959|-0.07981 +2016-07-01|-8.0|-103.0|8.69481|-0.07762 +2016-07-01|-8.0|-104.0|8.81408|-0.0756 +2016-07-01|-8.0|-105.0|8.91895|-0.07374 +2016-07-01|-8.0|-106.0|9.01094|-0.07203 +2016-07-01|-8.0|-107.0|9.09158|-0.07045 +2016-07-01|-8.0|-108.0|9.16236|-0.06899 +2016-07-01|-8.0|-109.0|9.22472|-0.06763 +2016-07-01|-8.0|-110.0|9.28005|-0.06635 +2016-07-01|-8.0|-111.0|9.32965|-0.06513 +2016-07-01|-8.0|-112.0|9.37474|-0.06396 +2016-07-01|-8.0|-113.0|9.41643|-0.0628 +2016-07-01|-8.0|-114.0|9.45573|-0.06166 +2016-07-01|-8.0|-115.0|9.49352|-0.0605 +2016-07-01|-8.0|-116.0|9.53058|-0.05931 +2016-07-01|-8.0|-117.0|9.56754|-0.05807 +2016-07-01|-8.0|-118.0|9.60492|-0.05678 +2016-07-01|-8.0|-119.0|9.64312|-0.05543 +2016-07-01|-8.0|-120.0|9.6824|-0.054 +2016-07-01|-8.0|-121.0|9.72293|-0.05249 +2016-07-01|-8.0|-122.0|9.76475|-0.05091 +2016-07-01|-8.0|-123.0|9.80783|-0.04925 +2016-07-01|-8.0|-124.0|9.85203|-0.04752 +2016-07-01|-8.0|-125.0|9.89715|-0.04572 +2016-07-01|-8.0|-126.0|9.94291|-0.04386 +2016-07-01|-8.0|-127.0|9.98899|-0.04195 +2016-07-01|-8.0|-128.0|10.03503|-0.04001 +2016-07-01|-8.0|-129.0|10.08065|-0.03804 +2016-07-01|-8.0|-130.0|10.12545|-0.03605 +2016-07-01|-8.0|-131.0|10.16902|-0.03407 +2016-07-01|-8.0|-132.0|10.21097|-0.0321 +2016-07-01|-8.0|-133.0|10.25091|-0.03015 +2016-07-01|-8.0|-134.0|10.2885|-0.02823 +2016-07-01|-8.0|-135.0|10.32342|-0.02635 +2016-07-01|-8.0|-136.0|10.35539|-0.02452 +2016-07-01|-8.0|-137.0|10.38417|-0.02274 +2016-07-01|-8.0|-138.0|10.40957|-0.02102 +2016-07-01|-8.0|-139.0|10.43146|-0.01934 +2016-07-01|-8.0|-140.0|10.44976|-0.01771 +2016-07-01|-8.0|-141.0|10.46443|-0.01613 +2016-07-01|-8.0|-142.0|10.4755|-0.01458 +2016-07-01|-8.0|-143.0|10.48304|-0.01307 +2016-07-01|-8.0|-144.0|10.48719|-0.01157 +2016-07-01|-8.0|-145.0|10.48813|-0.01008 +2016-07-01|-8.0|-146.0|10.48607|-0.00859 +2016-07-01|-8.0|-147.0|10.48129|-0.00708 +2016-07-01|-8.0|-148.0|10.47408|-0.00556 +2016-07-01|-8.0|-149.0|10.46479|-0.00399 +2016-07-01|-8.0|-150.0|10.4538|-0.00238 +2016-07-01|-8.0|-151.0|10.44148|-7.2E-4 +2016-07-01|-8.0|-152.0|10.42825|9.9E-4 +2016-07-01|-8.0|-153.0|10.41454|0.00277 +2016-07-01|-8.0|-154.0|10.40077|0.00461 +2016-07-01|-8.0|-155.0|10.38735|0.00652 +2016-07-01|-8.0|-156.0|10.37471|0.00849 +2016-07-01|-8.0|-157.0|10.36324|0.01051 +2016-07-01|-8.0|-158.0|10.3533|0.01258 +2016-07-01|-8.0|-159.0|10.34522|0.01468 +2016-07-01|-8.0|-160.0|10.33931|0.01681 +2016-07-01|-8.0|-161.0|10.33578|0.01896 +2016-07-01|-8.0|-162.0|10.33483|0.02109 +2016-07-01|-8.0|-163.0|10.33656|0.02321 +2016-07-01|-8.0|-164.0|10.34102|0.0253 +2016-07-01|-8.0|-165.0|10.34818|0.02732 +2016-07-01|-8.0|-166.0|10.35791|0.02928 +2016-07-01|-8.0|-167.0|10.37002|0.03114 +2016-07-01|-8.0|-168.0|10.38423|0.0329 +2016-07-01|-8.0|-169.0|10.40015|0.03454 +2016-07-01|-8.0|-170.0|10.41734|0.03605 +2016-07-01|-8.0|-171.0|10.43526|0.0374 +2016-07-01|-8.0|-172.0|10.45331|0.03859 +2016-07-01|-8.0|-173.0|10.47081|0.03962 +2016-07-01|-8.0|-174.0|10.48703|0.04047 +2016-07-01|-8.0|-175.0|10.50119|0.04113 +2016-07-01|-8.0|-176.0|10.51248|0.04161 +2016-07-01|-8.0|-177.0|10.52006|0.0419 +2016-07-01|-8.0|-178.0|10.5231|0.04199 +2016-07-01|-8.0|-179.0|10.52076|0.0419 +2016-07-01|-9.0|0.0|-9.46377|0.16292 +2016-07-01|-9.0|1.0|-8.99194|0.16613 +2016-07-01|-9.0|2.0|-8.52357|0.169 +2016-07-01|-9.0|3.0|-8.05948|0.17152 +2016-07-01|-9.0|4.0|-7.60051|0.17365 +2016-07-01|-9.0|5.0|-7.14757|0.17537 +2016-07-01|-9.0|6.0|-6.70162|0.17664 +2016-07-01|-9.0|7.0|-6.26368|0.17745 +2016-07-01|-9.0|8.0|-5.83484|0.17776 +2016-07-01|-9.0|9.0|-5.41624|0.17755 +2016-07-01|-9.0|10.0|-5.0091|0.17681 +2016-07-01|-9.0|11.0|-4.61471|0.17551 +2016-07-01|-9.0|12.0|-4.23441|0.17364 +2016-07-01|-9.0|13.0|-3.86961|0.17118 +2016-07-01|-9.0|14.0|-3.52176|0.16813 +2016-07-01|-9.0|15.0|-3.19236|0.16448 +2016-07-01|-9.0|16.0|-2.88292|0.16023 +2016-07-01|-9.0|17.0|-2.59496|0.15538 +2016-07-01|-9.0|18.0|-2.32998|0.14996 +2016-07-01|-9.0|19.0|-2.08943|0.14398 +2016-07-01|-9.0|20.0|-1.87471|0.13746 +2016-07-01|-9.0|21.0|-1.68713|0.13046 +2016-07-01|-9.0|22.0|-1.52786|0.123 +2016-07-01|-9.0|23.0|-1.39795|0.11514 +2016-07-01|-9.0|24.0|-1.29824|0.10694 +2016-07-01|-9.0|25.0|-1.22939|0.09847 +2016-07-01|-9.0|26.0|-1.19184|0.0898 +2016-07-01|-9.0|27.0|-1.18576|0.081 +2016-07-01|-9.0|28.0|-1.21109|0.07217 +2016-07-01|-9.0|29.0|-1.26746|0.06337 +2016-07-01|-9.0|30.0|-1.35422|0.05471 +2016-07-01|-9.0|31.0|-1.47046|0.04626 +2016-07-01|-9.0|32.0|-1.61494|0.03812 +2016-07-01|-9.0|33.0|-1.78617|0.03036 +2016-07-01|-9.0|34.0|-1.98239|0.02306 +2016-07-01|-9.0|35.0|-2.20158|0.01631 +2016-07-01|-9.0|36.0|-2.44151|0.01015 +2016-07-01|-9.0|37.0|-2.69975|0.00466 +2016-07-01|-9.0|38.0|-2.9737|-1.3E-4 +2016-07-01|-9.0|39.0|-3.26064|-0.00416 +2016-07-01|-9.0|40.0|-3.55777|-0.00742 +2016-07-01|-9.0|41.0|-3.86224|-0.00988 +2016-07-01|-9.0|42.0|-4.17117|-0.01154 +2016-07-01|-9.0|43.0|-4.48175|-0.0124 +2016-07-01|-9.0|44.0|-4.79122|-0.01247 +2016-07-01|-9.0|45.0|-5.09694|-0.01178 +2016-07-01|-9.0|46.0|-5.39641|-0.01036 +2016-07-01|-9.0|47.0|-5.68731|-0.00826 +2016-07-01|-9.0|48.0|-5.96752|-0.0055 +2016-07-01|-9.0|49.0|-6.23515|-0.00217 +2016-07-01|-9.0|50.0|-6.48852|0.0017 +2016-07-01|-9.0|51.0|-6.72622|0.00603 +2016-07-01|-9.0|52.0|-6.9471|0.01077 +2016-07-01|-9.0|53.0|-7.15023|0.01583 +2016-07-01|-9.0|54.0|-7.33494|0.02116 +2016-07-01|-9.0|55.0|-7.50079|0.02669 +2016-07-01|-9.0|56.0|-7.64756|0.03236 +2016-07-01|-9.0|57.0|-7.77522|0.03809 +2016-07-01|-9.0|58.0|-7.8839|0.04384 +2016-07-01|-9.0|59.0|-7.9739|0.04955 +2016-07-01|-9.0|60.0|-8.04562|0.05516 +2016-07-01|-9.0|61.0|-8.09955|0.06064 +2016-07-01|-9.0|62.0|-8.13625|0.06594 +2016-07-01|-9.0|63.0|-8.15631|0.07102 +2016-07-01|-9.0|64.0|-8.16032|0.07586 +2016-07-01|-9.0|65.0|-8.14886|0.08044 +2016-07-01|-9.0|66.0|-8.12246|0.08473 +2016-07-01|-9.0|67.0|-8.08161|0.08872 +2016-07-01|-9.0|68.0|-8.02671|0.09241 +2016-07-01|-9.0|69.0|-7.95809|0.09578 +2016-07-01|-9.0|70.0|-7.876|0.09883 +2016-07-01|-9.0|71.0|-7.7806|0.10156 +2016-07-01|-9.0|72.0|-7.67198|0.10398 +2016-07-01|-9.0|73.0|-7.55015|0.10609 +2016-07-01|-9.0|74.0|-7.41507|0.10789 +2016-07-01|-9.0|75.0|-7.26667|0.10938 +2016-07-01|-9.0|76.0|-7.10484|0.11058 +2016-07-01|-9.0|77.0|-6.92951|0.11147 +2016-07-01|-9.0|78.0|-6.74062|0.11207 +2016-07-01|-9.0|79.0|-6.53818|0.11237 +2016-07-01|-9.0|80.0|-6.32227|0.11237 +2016-07-01|-9.0|81.0|-6.09309|0.11207 +2016-07-01|-9.0|82.0|-5.85096|0.11146 +2016-07-01|-9.0|83.0|-5.59636|0.11053 +2016-07-01|-9.0|84.0|-5.32995|0.10927 +2016-07-01|-9.0|85.0|-5.05253|0.10767 +2016-07-01|-9.0|86.0|-4.76514|0.10572 +2016-07-01|-9.0|87.0|-4.46896|0.10341 +2016-07-01|-9.0|88.0|-4.16538|0.10073 +2016-07-01|-9.0|89.0|-3.85596|0.09767 +2016-07-01|-9.0|90.0|-3.5424|0.09422 +2016-07-01|-9.0|91.0|-3.22657|0.09037 +2016-07-01|-9.0|92.0|-2.91041|0.08612 +2016-07-01|-9.0|93.0|-2.59595|0.08147 +2016-07-01|-9.0|94.0|-2.28526|0.07642 +2016-07-01|-9.0|95.0|-1.98041|0.071 +2016-07-01|-9.0|96.0|-1.68342|0.0652 +2016-07-01|-9.0|97.0|-1.39624|0.05905 +2016-07-01|-9.0|98.0|-1.12069|0.05257 +2016-07-01|-9.0|99.0|-0.85843|0.04578 +2016-07-01|-9.0|100.0|-0.61091|0.03873 +2016-07-01|-9.0|101.0|-0.37937|0.03145 +2016-07-01|-9.0|102.0|-0.16478|0.02398 +2016-07-01|-9.0|103.0|0.03216|0.01636 +2016-07-01|-9.0|104.0|0.21105|0.00863 +2016-07-01|-9.0|105.0|0.3718|8.6E-4 +2016-07-01|-9.0|106.0|0.51461|-0.00691 +2016-07-01|-9.0|107.0|0.63999|-0.01464 +2016-07-01|-9.0|108.0|0.74873|-0.02227 +2016-07-01|-9.0|109.0|0.84191|-0.02975 +2016-07-01|-9.0|110.0|0.92085|-0.03703 +2016-07-01|-9.0|111.0|0.98708|-0.04406 +2016-07-01|-9.0|112.0|1.04234|-0.05081 +2016-07-01|-9.0|113.0|1.08849|-0.05722 +2016-07-01|-9.0|114.0|1.12755|-0.06327 +2016-07-01|-9.0|115.0|1.16158|-0.06891 +2016-07-01|-9.0|116.0|1.19268|-0.07412 +2016-07-01|-9.0|117.0|1.22294|-0.07887 +2016-07-01|-9.0|118.0|1.2544|-0.08315 +2016-07-01|-9.0|119.0|1.289|-0.08692 +2016-07-01|-9.0|120.0|1.3286|-0.0902 +2016-07-01|-9.0|121.0|1.37484|-0.09296 +2016-07-01|-9.0|122.0|1.42924|-0.0952 +2016-07-01|-9.0|123.0|1.49307|-0.09694 +2016-07-01|-9.0|124.0|1.5674|-0.09817 +2016-07-01|-9.0|125.0|1.65308|-0.09891 +2016-07-01|-9.0|126.0|1.75069|-0.09917 +2016-07-01|-9.0|127.0|1.86061|-0.09896 +2016-07-01|-9.0|128.0|1.98297|-0.09832 +2016-07-01|-9.0|129.0|2.11768|-0.09726 +2016-07-01|-9.0|130.0|2.26446|-0.09581 +2016-07-01|-9.0|131.0|2.42283|-0.094 +2016-07-01|-9.0|132.0|2.59217|-0.09185 +2016-07-01|-9.0|133.0|2.77172|-0.0894 +2016-07-01|-9.0|134.0|2.96061|-0.08668 +2016-07-01|-9.0|135.0|3.1579|-0.08371 +2016-07-01|-9.0|136.0|3.3626|-0.08052 +2016-07-01|-9.0|137.0|3.5737|-0.07715 +2016-07-01|-9.0|138.0|3.79018|-0.07363 +2016-07-01|-9.0|139.0|4.01107|-0.06997 +2016-07-01|-9.0|140.0|4.23543|-0.06621 +2016-07-01|-9.0|141.0|4.46238|-0.06238 +2016-07-01|-9.0|142.0|4.69111|-0.05848 +2016-07-01|-9.0|143.0|4.92091|-0.05455 +2016-07-01|-9.0|144.0|5.15113|-0.0506 +2016-07-01|-9.0|145.0|5.38123|-0.04665 +2016-07-01|-9.0|146.0|5.61071|-0.04271 +2016-07-01|-9.0|147.0|5.83919|-0.0388 +2016-07-01|-9.0|148.0|6.06631|-0.03493 +2016-07-01|-9.0|149.0|6.29178|-0.03111 +2016-07-01|-9.0|150.0|6.51535|-0.02735 +2016-07-01|-9.0|151.0|6.73678|-0.02365 +2016-07-01|-9.0|152.0|6.95586|-0.02002 +2016-07-01|-9.0|153.0|7.17234|-0.01647 +2016-07-01|-9.0|154.0|7.386|-0.01299 +2016-07-01|-9.0|155.0|7.59656|-0.0096 +2016-07-01|-9.0|156.0|7.8037|-0.00629 +2016-07-01|-9.0|157.0|8.00709|-0.00307 +2016-07-01|-9.0|158.0|8.20634|7.0E-5 +2016-07-01|-9.0|159.0|8.401|0.00311 +2016-07-01|-9.0|160.0|8.59061|0.00607 +2016-07-01|-9.0|161.0|8.77466|0.00893 +2016-07-01|-9.0|162.0|8.95261|0.0117 +2016-07-01|-9.0|163.0|9.12391|0.01437 +2016-07-01|-9.0|164.0|9.28801|0.01695 +2016-07-01|-9.0|165.0|9.44436|0.01942 +2016-07-01|-9.0|166.0|9.59243|0.0218 +2016-07-01|-9.0|167.0|9.73174|0.02407 +2016-07-01|-9.0|168.0|9.86186|0.02624 +2016-07-01|-9.0|169.0|9.98242|0.02829 +2016-07-01|-9.0|170.0|10.09312|0.03023 +2016-07-01|-9.0|171.0|10.19374|0.03205 +2016-07-01|-9.0|172.0|10.28419|0.03374 +2016-07-01|-9.0|173.0|10.36445|0.03529 +2016-07-01|-9.0|174.0|10.4346|0.03671 +2016-07-01|-9.0|175.0|10.49485|0.03799 +2016-07-01|-9.0|176.0|10.54549|0.03911 +2016-07-01|-9.0|177.0|10.58693|0.04008 +2016-07-01|-9.0|178.0|10.61965|0.04088 +2016-07-01|-9.0|179.0|10.64424|0.04151 +2016-07-01|-9.0|-1.0|-9.93828|0.15941 +2016-07-01|-9.0|-2.0|-10.41472|0.15564 +2016-07-01|-9.0|-3.0|-10.89237|0.15163 +2016-07-01|-9.0|-4.0|-11.37053|0.14743 +2016-07-01|-9.0|-5.0|-11.84852|0.14305 +2016-07-01|-9.0|-6.0|-12.32564|0.13855 +2016-07-01|-9.0|-7.0|-12.80123|0.13395 +2016-07-01|-9.0|-8.0|-13.27462|0.12928 +2016-07-01|-9.0|-9.0|-13.74513|0.12459 +2016-07-01|-9.0|-10.0|-14.21207|0.11991 +2016-07-01|-9.0|-11.0|-14.67477|0.11526 +2016-07-01|-9.0|-12.0|-15.13253|0.11068 +2016-07-01|-9.0|-13.0|-15.58463|0.10619 +2016-07-01|-9.0|-14.0|-16.03035|0.10181 +2016-07-01|-9.0|-15.0|-16.46895|0.09756 +2016-07-01|-9.0|-16.0|-16.89966|0.09346 +2016-07-01|-9.0|-17.0|-17.3217|0.08951 +2016-07-01|-9.0|-18.0|-17.73426|0.0857 +2016-07-01|-9.0|-19.0|-18.13652|0.08205 +2016-07-01|-9.0|-20.0|-18.52762|0.07853 +2016-07-01|-9.0|-21.0|-18.90667|0.07514 +2016-07-01|-9.0|-22.0|-19.27278|0.07185 +2016-07-01|-9.0|-23.0|-19.62501|0.06864 +2016-07-01|-9.0|-24.0|-19.96241|0.06548 +2016-07-01|-9.0|-25.0|-20.28402|0.06234 +2016-07-01|-9.0|-26.0|-20.58883|0.05918 +2016-07-01|-9.0|-27.0|-20.87587|0.05596 +2016-07-01|-9.0|-28.0|-21.1441|0.05265 +2016-07-01|-9.0|-29.0|-21.39253|0.04921 +2016-07-01|-9.0|-30.0|-21.62014|0.04561 +2016-07-01|-9.0|-31.0|-21.82593|0.04181 +2016-07-01|-9.0|-32.0|-22.0089|0.03779 +2016-07-01|-9.0|-33.0|-22.16809|0.03351 +2016-07-01|-9.0|-34.0|-22.30255|0.02896 +2016-07-01|-9.0|-35.0|-22.41136|0.02411 +2016-07-01|-9.0|-36.0|-22.49364|0.01896 +2016-07-01|-9.0|-37.0|-22.54856|0.0135 +2016-07-01|-9.0|-38.0|-22.57534|0.00773 +2016-07-01|-9.0|-39.0|-22.57323|0.00165 +2016-07-01|-9.0|-40.0|-22.54156|-0.00473 +2016-07-01|-9.0|-41.0|-22.47971|-0.01139 +2016-07-01|-9.0|-42.0|-22.38713|-0.01831 +2016-07-01|-9.0|-43.0|-22.26333|-0.02548 +2016-07-01|-9.0|-44.0|-22.10791|-0.03285 +2016-07-01|-9.0|-45.0|-21.92055|-0.04041 +2016-07-01|-9.0|-46.0|-21.70097|-0.0481 +2016-07-01|-9.0|-47.0|-21.44903|-0.05591 +2016-07-01|-9.0|-48.0|-21.16464|-0.06378 +2016-07-01|-9.0|-49.0|-20.84782|-0.07167 +2016-07-01|-9.0|-50.0|-20.49867|-0.07954 +2016-07-01|-9.0|-51.0|-20.1174|-0.08736 +2016-07-01|-9.0|-52.0|-19.70434|-0.09506 +2016-07-01|-9.0|-53.0|-19.2599|-0.10262 +2016-07-01|-9.0|-54.0|-18.78462|-0.10998 +2016-07-01|-9.0|-55.0|-18.27916|-0.1171 +2016-07-01|-9.0|-56.0|-17.74431|-0.12396 +2016-07-01|-9.0|-57.0|-17.18096|-0.1305 +2016-07-01|-9.0|-58.0|-16.59015|-0.13669 +2016-07-01|-9.0|-59.0|-15.97306|-0.1425 +2016-07-01|-9.0|-60.0|-15.33099|-0.1479 +2016-07-01|-9.0|-61.0|-14.66539|-0.15286 +2016-07-01|-9.0|-62.0|-13.97784|-0.15736 +2016-07-01|-9.0|-63.0|-13.27004|-0.16139 +2016-07-01|-9.0|-64.0|-12.54385|-0.16491 +2016-07-01|-9.0|-65.0|-11.80124|-0.16793 +2016-07-01|-9.0|-66.0|-11.04428|-0.17044 +2016-07-01|-9.0|-67.0|-10.27518|-0.17244 +2016-07-01|-9.0|-68.0|-9.49623|-0.17392 +2016-07-01|-9.0|-69.0|-8.70979|-0.17489 +2016-07-01|-9.0|-70.0|-7.91831|-0.17536 +2016-07-01|-9.0|-71.0|-7.12427|-0.17535 +2016-07-01|-9.0|-72.0|-6.33019|-0.17486 +2016-07-01|-9.0|-73.0|-5.53859|-0.17393 +2016-07-01|-9.0|-74.0|-4.75197|-0.17257 +2016-07-01|-9.0|-75.0|-3.97282|-0.17081 +2016-07-01|-9.0|-76.0|-3.20356|-0.16867 +2016-07-01|-9.0|-77.0|-2.44653|-0.16619 +2016-07-01|-9.0|-78.0|-1.70398|-0.16339 +2016-07-01|-9.0|-79.0|-0.97805|-0.1603 +2016-07-01|-9.0|-80.0|-0.27073|-0.15697 +2016-07-01|-9.0|-81.0|0.41613|-0.15341 +2016-07-01|-9.0|-82.0|1.08083|-0.14966 +2016-07-01|-9.0|-83.0|1.72185|-0.14576 +2016-07-01|-9.0|-84.0|2.33787|-0.14174 +2016-07-01|-9.0|-85.0|2.92773|-0.13762 +2016-07-01|-9.0|-86.0|3.49049|-0.13344 +2016-07-01|-9.0|-87.0|4.02539|-0.12923 +2016-07-01|-9.0|-88.0|4.53187|-0.12502 +2016-07-01|-9.0|-89.0|5.00957|-0.12083 +2016-07-01|-9.0|-90.0|5.45833|-0.11669 +2016-07-01|-9.0|-91.0|5.87816|-0.11262 +2016-07-01|-9.0|-92.0|6.26927|-0.10865 +2016-07-01|-9.0|-93.0|6.63204|-0.10479 +2016-07-01|-9.0|-94.0|6.96701|-0.10107 +2016-07-01|-9.0|-95.0|7.27489|-0.09749 +2016-07-01|-9.0|-96.0|7.55654|-0.09408 +2016-07-01|-9.0|-97.0|7.81293|-0.09084 +2016-07-01|-9.0|-98.0|8.0452|-0.08779 +2016-07-01|-9.0|-99.0|8.25454|-0.08492 +2016-07-01|-9.0|-100.0|8.44229|-0.08224 +2016-07-01|-9.0|-101.0|8.60984|-0.07976 +2016-07-01|-9.0|-102.0|8.75865|-0.07746 +2016-07-01|-9.0|-103.0|8.89023|-0.07535 +2016-07-01|-9.0|-104.0|9.00613|-0.07342 +2016-07-01|-9.0|-105.0|9.1079|-0.07165 +2016-07-01|-9.0|-106.0|9.1971|-0.07004 +2016-07-01|-9.0|-107.0|9.27526|-0.06856 +2016-07-01|-9.0|-108.0|9.34388|-0.0672 +2016-07-01|-9.0|-109.0|9.4044|-0.06595 +2016-07-01|-9.0|-110.0|9.4582|-0.06477 +2016-07-01|-9.0|-111.0|9.50659|-0.06366 +2016-07-01|-9.0|-112.0|9.55075|-0.0626 +2016-07-01|-9.0|-113.0|9.5918|-0.06155 +2016-07-01|-9.0|-114.0|9.63073|-0.06051 +2016-07-01|-9.0|-115.0|9.66839|-0.05944 +2016-07-01|-9.0|-116.0|9.70553|-0.05835 +2016-07-01|-9.0|-117.0|9.74277|-0.05721 +2016-07-01|-9.0|-118.0|9.7806|-0.05601 +2016-07-01|-9.0|-119.0|9.81939|-0.05473 +2016-07-01|-9.0|-120.0|9.8594|-0.05338 +2016-07-01|-9.0|-121.0|9.90075|-0.05195 +2016-07-01|-9.0|-122.0|9.94347|-0.05043 +2016-07-01|-9.0|-123.0|9.98752|-0.04883 +2016-07-01|-9.0|-124.0|10.03272|-0.04715 +2016-07-01|-9.0|-125.0|10.07888|-0.0454 +2016-07-01|-9.0|-126.0|10.12569|-0.04358 +2016-07-01|-9.0|-127.0|10.17284|-0.04171 +2016-07-01|-9.0|-128.0|10.21995|-0.03979 +2016-07-01|-9.0|-129.0|10.26663|-0.03785 +2016-07-01|-9.0|-130.0|10.31248|-0.03589 +2016-07-01|-9.0|-131.0|10.3571|-0.03392 +2016-07-01|-9.0|-132.0|10.40008|-0.03196 +2016-07-01|-9.0|-133.0|10.44105|-0.03001 +2016-07-01|-9.0|-134.0|10.47966|-0.0281 +2016-07-01|-9.0|-135.0|10.51558|-0.02622 +2016-07-01|-9.0|-136.0|10.54855|-0.02438 +2016-07-01|-9.0|-137.0|10.57831|-0.02259 +2016-07-01|-9.0|-138.0|10.60468|-0.02084 +2016-07-01|-9.0|-139.0|10.62753|-0.01915 +2016-07-01|-9.0|-140.0|10.64676|-0.0175 +2016-07-01|-9.0|-141.0|10.66235|-0.0159 +2016-07-01|-9.0|-142.0|10.6743|-0.01433 +2016-07-01|-9.0|-143.0|10.68268|-0.01279 +2016-07-01|-9.0|-144.0|10.68763|-0.01126 +2016-07-01|-9.0|-145.0|10.68929|-0.00975 +2016-07-01|-9.0|-146.0|10.68789|-0.00823 +2016-07-01|-9.0|-147.0|10.68368|-0.0067 +2016-07-01|-9.0|-148.0|10.67695|-0.00515 +2016-07-01|-9.0|-149.0|10.66802|-0.00356 +2016-07-01|-9.0|-150.0|10.65726|-0.00194 +2016-07-01|-9.0|-151.0|10.64503|-2.6E-4 +2016-07-01|-9.0|-152.0|10.63175|0.00148 +2016-07-01|-9.0|-153.0|10.61781|0.00327 +2016-07-01|-9.0|-154.0|10.60364|0.00513 +2016-07-01|-9.0|-155.0|10.58965|0.00705 +2016-07-01|-9.0|-156.0|10.57625|0.00902 +2016-07-01|-9.0|-157.0|10.56381|0.01105 +2016-07-01|-9.0|-158.0|10.55272|0.01312 +2016-07-01|-9.0|-159.0|10.5433|0.01522 +2016-07-01|-9.0|-160.0|10.53584|0.01735 +2016-07-01|-9.0|-161.0|10.53059|0.01949 +2016-07-01|-9.0|-162.0|10.52773|0.02162 +2016-07-01|-9.0|-163.0|10.5274|0.02373 +2016-07-01|-9.0|-164.0|10.52964|0.0258 +2016-07-01|-9.0|-165.0|10.53444|0.02781 +2016-07-01|-9.0|-166.0|10.54169|0.02975 +2016-07-01|-9.0|-167.0|10.55123|0.03161 +2016-07-01|-9.0|-168.0|10.56278|0.03335 +2016-07-01|-9.0|-169.0|10.57599|0.03497 +2016-07-01|-9.0|-170.0|10.59044|0.03646 +2016-07-01|-9.0|-171.0|10.60561|0.0378 +2016-07-01|-9.0|-172.0|10.62092|0.03898 +2016-07-01|-9.0|-173.0|10.63573|0.04 +2016-07-01|-9.0|-174.0|10.64932|0.04083 +2016-07-01|-9.0|-175.0|10.66095|0.04149 +2016-07-01|-9.0|-176.0|10.66981|0.04196 +2016-07-01|-9.0|-177.0|10.6751|0.04224 +2016-07-01|-9.0|-178.0|10.67599|0.04233 +2016-07-01|-9.0|-179.0|10.67167|0.04224 +2016-07-01|-10.0|0.0|-10.05273|0.16702 +2016-07-01|-10.0|1.0|-9.56698|0.17055 +2016-07-01|-10.0|2.0|-9.0842|0.1737 +2016-07-01|-10.0|3.0|-8.60539|0.17643 +2016-07-01|-10.0|4.0|-8.1316|0.17871 +2016-07-01|-10.0|5.0|-7.66392|0.1805 +2016-07-01|-10.0|6.0|-7.2035|0.18179 +2016-07-01|-10.0|7.0|-6.75154|0.18253 +2016-07-01|-10.0|8.0|-6.30931|0.18271 +2016-07-01|-10.0|9.0|-5.87813|0.18231 +2016-07-01|-10.0|10.0|-5.45938|0.1813 +2016-07-01|-10.0|11.0|-5.05449|0.17968 +2016-07-01|-10.0|12.0|-4.66494|0.17742 +2016-07-01|-10.0|13.0|-4.29226|0.17453 +2016-07-01|-10.0|14.0|-3.938|0.17099 +2016-07-01|-10.0|15.0|-3.60373|0.16681 +2016-07-01|-10.0|16.0|-3.29102|0.16199 +2016-07-01|-10.0|17.0|-3.00143|0.15656 +2016-07-01|-10.0|18.0|-2.73648|0.15054 +2016-07-01|-10.0|19.0|-2.49762|0.14394 +2016-07-01|-10.0|20.0|-2.28622|0.13681 +2016-07-01|-10.0|21.0|-2.10353|0.1292 +2016-07-01|-10.0|22.0|-1.95067|0.12115 +2016-07-01|-10.0|23.0|-1.82858|0.11273 +2016-07-01|-10.0|24.0|-1.73802|0.10399 +2016-07-01|-10.0|25.0|-1.67952|0.09503 +2016-07-01|-10.0|26.0|-1.65338|0.0859 +2016-07-01|-10.0|27.0|-1.65964|0.0767 +2016-07-01|-10.0|28.0|-1.69806|0.06752 +2016-07-01|-10.0|29.0|-1.76814|0.05843 +2016-07-01|-10.0|30.0|-1.86906|0.04954 +2016-07-01|-10.0|31.0|-1.99973|0.04091 +2016-07-01|-10.0|32.0|-2.15877|0.03266 +2016-07-01|-10.0|33.0|-2.34452|0.02484 +2016-07-01|-10.0|34.0|-2.55508|0.01755 +2016-07-01|-10.0|35.0|-2.78828|0.01084 +2016-07-01|-10.0|36.0|-3.04175|0.00479 +2016-07-01|-10.0|37.0|-3.31295|-5.6E-4 +2016-07-01|-10.0|38.0|-3.59918|-0.00515 +2016-07-01|-10.0|39.0|-3.89762|-0.00896 +2016-07-01|-10.0|40.0|-4.2054|-0.01196 +2016-07-01|-10.0|41.0|-4.51958|-0.01415 +2016-07-01|-10.0|42.0|-4.83727|-0.0155 +2016-07-01|-10.0|43.0|-5.15561|-0.01605 +2016-07-01|-10.0|44.0|-5.47181|-0.01579 +2016-07-01|-10.0|45.0|-5.78322|-0.01477 +2016-07-01|-10.0|46.0|-6.08735|-0.01301 +2016-07-01|-10.0|47.0|-6.38189|-0.01057 +2016-07-01|-10.0|48.0|-6.66473|-0.00749 +2016-07-01|-10.0|49.0|-6.934|-0.00382 +2016-07-01|-10.0|50.0|-7.18806|3.6E-4 +2016-07-01|-10.0|51.0|-7.42553|0.00501 +2016-07-01|-10.0|52.0|-7.64527|0.01004 +2016-07-01|-10.0|53.0|-7.84642|0.0154 +2016-07-01|-10.0|54.0|-8.02832|0.02101 +2016-07-01|-10.0|55.0|-8.19057|0.02681 +2016-07-01|-10.0|56.0|-8.33297|0.03274 +2016-07-01|-10.0|57.0|-8.45554|0.03873 +2016-07-01|-10.0|58.0|-8.55843|0.04473 +2016-07-01|-10.0|59.0|-8.64195|0.05068 +2016-07-01|-10.0|60.0|-8.70655|0.05653 +2016-07-01|-10.0|61.0|-8.75273|0.06224 +2016-07-01|-10.0|62.0|-8.78108|0.06776 +2016-07-01|-10.0|63.0|-8.79219|0.07307 +2016-07-01|-10.0|64.0|-8.78669|0.07813 +2016-07-01|-10.0|65.0|-8.76517|0.08291 +2016-07-01|-10.0|66.0|-8.72819|0.08741 +2016-07-01|-10.0|67.0|-8.67624|0.09161 +2016-07-01|-10.0|68.0|-8.60976|0.09548 +2016-07-01|-10.0|69.0|-8.52909|0.09904 +2016-07-01|-10.0|70.0|-8.43452|0.10227 +2016-07-01|-10.0|71.0|-8.32621|0.10517 +2016-07-01|-10.0|72.0|-8.20428|0.10775 +2016-07-01|-10.0|73.0|-8.06877|0.11001 +2016-07-01|-10.0|74.0|-7.91967|0.11194 +2016-07-01|-10.0|75.0|-7.75692|0.11356 +2016-07-01|-10.0|76.0|-7.58047|0.11486 +2016-07-01|-10.0|77.0|-7.39025|0.11585 +2016-07-01|-10.0|78.0|-7.18625|0.11652 +2016-07-01|-10.0|79.0|-6.96849|0.11688 +2016-07-01|-10.0|80.0|-6.7371|0.11692 +2016-07-01|-10.0|81.0|-6.49231|0.11663 +2016-07-01|-10.0|82.0|-6.23448|0.11602 +2016-07-01|-10.0|83.0|-5.96412|0.11507 +2016-07-01|-10.0|84.0|-5.6819|0.11377 +2016-07-01|-10.0|85.0|-5.38869|0.11211 +2016-07-01|-10.0|86.0|-5.08554|0.11009 +2016-07-01|-10.0|87.0|-4.77367|0.10769 +2016-07-01|-10.0|88.0|-4.4545|0.1049 +2016-07-01|-10.0|89.0|-4.12964|0.10171 +2016-07-01|-10.0|90.0|-3.80081|0.09812 +2016-07-01|-10.0|91.0|-3.46989|0.09412 +2016-07-01|-10.0|92.0|-3.13888|0.08972 +2016-07-01|-10.0|93.0|-2.80982|0.0849 +2016-07-01|-10.0|94.0|-2.4848|0.07969 +2016-07-01|-10.0|95.0|-2.16591|0.07409 +2016-07-01|-10.0|96.0|-1.85519|0.06812 +2016-07-01|-10.0|97.0|-1.5546|0.06179 +2016-07-01|-10.0|98.0|-1.26597|0.05514 +2016-07-01|-10.0|99.0|-0.99095|0.0482 +2016-07-01|-10.0|100.0|-0.73102|0.04099 +2016-07-01|-10.0|101.0|-0.48739|0.03356 +2016-07-01|-10.0|102.0|-0.26104|0.02596 +2016-07-01|-10.0|103.0|-0.05266|0.01821 +2016-07-01|-10.0|104.0|0.13736|0.01038 +2016-07-01|-10.0|105.0|0.30894|0.00251 +2016-07-01|-10.0|106.0|0.46228|-0.00534 +2016-07-01|-10.0|107.0|0.59791|-0.01314 +2016-07-01|-10.0|108.0|0.71663|-0.02082 +2016-07-01|-10.0|109.0|0.81952|-0.02834 +2016-07-01|-10.0|110.0|0.9079|-0.03565 +2016-07-01|-10.0|111.0|0.98331|-0.0427 +2016-07-01|-10.0|112.0|1.04749|-0.04945 +2016-07-01|-10.0|113.0|1.10231|-0.05586 +2016-07-01|-10.0|114.0|1.14977|-0.06189 +2016-07-01|-10.0|115.0|1.19194|-0.06752 +2016-07-01|-10.0|116.0|1.2309|-0.07271 +2016-07-01|-10.0|117.0|1.26874|-0.07744 +2016-07-01|-10.0|118.0|1.30749|-0.08168 +2016-07-01|-10.0|119.0|1.3491|-0.08543 +2016-07-01|-10.0|120.0|1.3954|-0.08867 +2016-07-01|-10.0|121.0|1.44804|-0.09141 +2016-07-01|-10.0|122.0|1.50853|-0.09363 +2016-07-01|-10.0|123.0|1.57814|-0.09534 +2016-07-01|-10.0|124.0|1.65794|-0.09655 +2016-07-01|-10.0|125.0|1.74876|-0.09727 +2016-07-01|-10.0|126.0|1.85122|-0.09751 +2016-07-01|-10.0|127.0|1.96569|-0.0973 +2016-07-01|-10.0|128.0|2.09229|-0.09665 +2016-07-01|-10.0|129.0|2.23096|-0.09559 +2016-07-01|-10.0|130.0|2.38142|-0.09414 +2016-07-01|-10.0|131.0|2.54321|-0.09233 +2016-07-01|-10.0|132.0|2.71571|-0.09019 +2016-07-01|-10.0|133.0|2.89819|-0.08776 +2016-07-01|-10.0|134.0|3.08979|-0.08504 +2016-07-01|-10.0|135.0|3.28958|-0.08209 +2016-07-01|-10.0|136.0|3.49658|-0.07893 +2016-07-01|-10.0|137.0|3.7098|-0.07558 +2016-07-01|-10.0|138.0|3.92824|-0.07208 +2016-07-01|-10.0|139.0|4.15093|-0.06845 +2016-07-01|-10.0|140.0|4.37695|-0.06471 +2016-07-01|-10.0|141.0|4.60542|-0.0609 +2016-07-01|-10.0|142.0|4.83556|-0.05704 +2016-07-01|-10.0|143.0|5.06664|-0.05313 +2016-07-01|-10.0|144.0|5.29804|-0.04921 +2016-07-01|-10.0|145.0|5.5292|-0.04529 +2016-07-01|-10.0|146.0|5.75965|-0.04139 +2016-07-01|-10.0|147.0|5.98898|-0.03751 +2016-07-01|-10.0|148.0|6.21686|-0.03368 +2016-07-01|-10.0|149.0|6.44299|-0.02989 +2016-07-01|-10.0|150.0|6.66712|-0.02616 +2016-07-01|-10.0|151.0|6.88901|-0.02249 +2016-07-01|-10.0|152.0|7.10844|-0.0189 +2016-07-01|-10.0|153.0|7.32518|-0.01538 +2016-07-01|-10.0|154.0|7.539|-0.01194 +2016-07-01|-10.0|155.0|7.74962|-0.00859 +2016-07-01|-10.0|156.0|7.95674|-0.00532 +2016-07-01|-10.0|157.0|8.16002|-0.00213 +2016-07-01|-10.0|158.0|8.35907|9.6E-4 +2016-07-01|-10.0|159.0|8.55348|0.00397 +2016-07-01|-10.0|160.0|8.74278|0.00688 +2016-07-01|-10.0|161.0|8.92647|0.00971 +2016-07-01|-10.0|162.0|9.10404|0.01244 +2016-07-01|-10.0|163.0|9.27494|0.01507 +2016-07-01|-10.0|164.0|9.43865|0.01761 +2016-07-01|-10.0|165.0|9.59464|0.02005 +2016-07-01|-10.0|166.0|9.74239|0.02239 +2016-07-01|-10.0|167.0|9.88145|0.02463 +2016-07-01|-10.0|168.0|10.01139|0.02676 +2016-07-01|-10.0|169.0|10.13187|0.02878 +2016-07-01|-10.0|170.0|10.24262|0.03069 +2016-07-01|-10.0|171.0|10.34343|0.03248 +2016-07-01|-10.0|172.0|10.43422|0.03414 +2016-07-01|-10.0|173.0|10.51498|0.03568 +2016-07-01|-10.0|174.0|10.58582|0.03707 +2016-07-01|-10.0|175.0|10.64694|0.03833 +2016-07-01|-10.0|176.0|10.69865|0.03944 +2016-07-01|-10.0|177.0|10.74134|0.04039 +2016-07-01|-10.0|178.0|10.77552|0.04118 +2016-07-01|-10.0|179.0|10.80176|0.0418 +2016-07-01|-10.0|-1.0|-10.54049|0.16313 +2016-07-01|-10.0|-2.0|-11.02935|0.15893 +2016-07-01|-10.0|-3.0|-11.51842|0.15445 +2016-07-01|-10.0|-4.0|-12.00685|0.14974 +2016-07-01|-10.0|-5.0|-12.49382|0.14483 +2016-07-01|-10.0|-6.0|-12.97852|0.13977 +2016-07-01|-10.0|-7.0|-13.46018|0.13459 +2016-07-01|-10.0|-8.0|-13.93803|0.12935 +2016-07-01|-10.0|-9.0|-14.41135|0.12408 +2016-07-01|-10.0|-10.0|-14.87939|0.11882 +2016-07-01|-10.0|-11.0|-15.34144|0.1136 +2016-07-01|-10.0|-12.0|-15.7968|0.10846 +2016-07-01|-10.0|-13.0|-16.24477|0.10344 +2016-07-01|-10.0|-14.0|-16.68464|0.09855 +2016-07-01|-10.0|-15.0|-17.11572|0.09382 +2016-07-01|-10.0|-16.0|-17.53731|0.08926 +2016-07-01|-10.0|-17.0|-17.94871|0.08489 +2016-07-01|-10.0|-18.0|-18.34918|0.0807 +2016-07-01|-10.0|-19.0|-18.738|0.0767 +2016-07-01|-10.0|-20.0|-19.11443|0.07288 +2016-07-01|-10.0|-21.0|-19.4777|0.06922 +2016-07-01|-10.0|-22.0|-19.82703|0.06569 +2016-07-01|-10.0|-23.0|-20.16161|0.06228 +2016-07-01|-10.0|-24.0|-20.48061|0.05896 +2016-07-01|-10.0|-25.0|-20.7832|0.05568 +2016-07-01|-10.0|-26.0|-21.06849|0.05242 +2016-07-01|-10.0|-27.0|-21.33562|0.04913 +2016-07-01|-10.0|-28.0|-21.58367|0.04577 +2016-07-01|-10.0|-29.0|-21.81175|0.0423 +2016-07-01|-10.0|-30.0|-22.01894|0.0387 +2016-07-01|-10.0|-31.0|-22.20432|0.03491 +2016-07-01|-10.0|-32.0|-22.36698|0.03091 +2016-07-01|-10.0|-33.0|-22.50602|0.02667 +2016-07-01|-10.0|-34.0|-22.62056|0.02217 +2016-07-01|-10.0|-35.0|-22.70973|0.01738 +2016-07-01|-10.0|-36.0|-22.77269|0.01229 +2016-07-01|-10.0|-37.0|-22.80865|0.0069 +2016-07-01|-10.0|-38.0|-22.81683|0.0012 +2016-07-01|-10.0|-39.0|-22.79653|-0.00481 +2016-07-01|-10.0|-40.0|-22.74706|-0.01111 +2016-07-01|-10.0|-41.0|-22.66783|-0.0177 +2016-07-01|-10.0|-42.0|-22.55827|-0.02455 +2016-07-01|-10.0|-43.0|-22.4179|-0.03163 +2016-07-01|-10.0|-44.0|-22.24629|-0.03893 +2016-07-01|-10.0|-45.0|-22.04309|-0.04641 +2016-07-01|-10.0|-46.0|-21.80805|-0.05403 +2016-07-01|-10.0|-47.0|-21.54096|-0.06176 +2016-07-01|-10.0|-48.0|-21.24172|-0.06955 +2016-07-01|-10.0|-49.0|-20.91033|-0.07736 +2016-07-01|-10.0|-50.0|-20.54687|-0.08516 +2016-07-01|-10.0|-51.0|-20.15153|-0.09288 +2016-07-01|-10.0|-52.0|-19.72459|-0.1005 +2016-07-01|-10.0|-53.0|-19.26645|-0.10796 +2016-07-01|-10.0|-54.0|-18.77765|-0.11523 +2016-07-01|-10.0|-55.0|-18.25882|-0.12225 +2016-07-01|-10.0|-56.0|-17.71072|-0.12899 +2016-07-01|-10.0|-57.0|-17.13426|-0.13541 +2016-07-01|-10.0|-58.0|-16.53046|-0.14148 +2016-07-01|-10.0|-59.0|-15.90051|-0.14715 +2016-07-01|-10.0|-60.0|-15.24572|-0.1524 +2016-07-01|-10.0|-61.0|-14.56753|-0.15721 +2016-07-01|-10.0|-62.0|-13.86756|-0.16154 +2016-07-01|-10.0|-63.0|-13.14754|-0.16537 +2016-07-01|-10.0|-64.0|-12.40934|-0.16871 +2016-07-01|-10.0|-65.0|-11.65497|-0.17152 +2016-07-01|-10.0|-66.0|-10.88655|-0.17381 +2016-07-01|-10.0|-67.0|-10.10633|-0.17557 +2016-07-01|-10.0|-68.0|-9.31663|-0.1768 +2016-07-01|-10.0|-69.0|-8.51987|-0.17751 +2016-07-01|-10.0|-70.0|-7.71854|-0.17772 +2016-07-01|-10.0|-71.0|-6.91518|-0.17743 +2016-07-01|-10.0|-72.0|-6.11234|-0.17667 +2016-07-01|-10.0|-73.0|-5.31259|-0.17545 +2016-07-01|-10.0|-74.0|-4.51849|-0.1738 +2016-07-01|-10.0|-75.0|-3.73253|-0.17174 +2016-07-01|-10.0|-76.0|-2.95717|-0.16931 +2016-07-01|-10.0|-77.0|-2.19478|-0.16654 +2016-07-01|-10.0|-78.0|-1.44763|-0.16345 +2016-07-01|-10.0|-79.0|-0.71785|-0.16009 +2016-07-01|-10.0|-80.0|-0.00744|-0.15648 +2016-07-01|-10.0|-81.0|0.68175|-0.15267 +2016-07-01|-10.0|-82.0|1.34804|-0.14868 +2016-07-01|-10.0|-83.0|1.98995|-0.14454 +2016-07-01|-10.0|-84.0|2.60616|-0.1403 +2016-07-01|-10.0|-85.0|3.19556|-0.13599 +2016-07-01|-10.0|-86.0|3.75724|-0.13162 +2016-07-01|-10.0|-87.0|4.2905|-0.12725 +2016-07-01|-10.0|-88.0|4.79481|-0.12289 +2016-07-01|-10.0|-89.0|5.26989|-0.11857 +2016-07-01|-10.0|-90.0|5.7156|-0.11432 +2016-07-01|-10.0|-91.0|6.13204|-0.11016 +2016-07-01|-10.0|-92.0|6.51945|-0.10612 +2016-07-01|-10.0|-93.0|6.87828|-0.1022 +2016-07-01|-10.0|-94.0|7.20914|-0.09844 +2016-07-01|-10.0|-95.0|7.51279|-0.09485 +2016-07-01|-10.0|-96.0|7.79013|-0.09143 +2016-07-01|-10.0|-97.0|8.04222|-0.0882 +2016-07-01|-10.0|-98.0|8.2702|-0.08517 +2016-07-01|-10.0|-99.0|8.47535|-0.08233 +2016-07-01|-10.0|-100.0|8.65904|-0.07971 +2016-07-01|-10.0|-101.0|8.82269|-0.07728 +2016-07-01|-10.0|-102.0|8.96781|-0.07506 +2016-07-01|-10.0|-103.0|9.09594|-0.07302 +2016-07-01|-10.0|-104.0|9.20865|-0.07117 +2016-07-01|-10.0|-105.0|9.30751|-0.0695 +2016-07-01|-10.0|-106.0|9.3941|-0.06798 +2016-07-01|-10.0|-107.0|9.46996|-0.0666 +2016-07-01|-10.0|-108.0|9.53658|-0.06535 +2016-07-01|-10.0|-109.0|9.59542|-0.0642 +2016-07-01|-10.0|-110.0|9.64786|-0.06313 +2016-07-01|-10.0|-111.0|9.69517|-0.06213 +2016-07-01|-10.0|-112.0|9.73855|-0.06117 +2016-07-01|-10.0|-113.0|9.77908|-0.06023 +2016-07-01|-10.0|-114.0|9.81773|-0.05929 +2016-07-01|-10.0|-115.0|9.85535|-0.05833 +2016-07-01|-10.0|-116.0|9.89266|-0.05733 +2016-07-01|-10.0|-117.0|9.93025|-0.05628 +2016-07-01|-10.0|-118.0|9.96859|-0.05516 +2016-07-01|-10.0|-119.0|10.00803|-0.05398 +2016-07-01|-10.0|-120.0|10.04878|-0.0527 +2016-07-01|-10.0|-121.0|10.09098|-0.05134 +2016-07-01|-10.0|-122.0|10.13462|-0.04989 +2016-07-01|-10.0|-123.0|10.17964|-0.04836 +2016-07-01|-10.0|-124.0|10.22585|-0.04673 +2016-07-01|-10.0|-125.0|10.27304|-0.04503 +2016-07-01|-10.0|-126.0|10.3209|-0.04326 +2016-07-01|-10.0|-127.0|10.3691|-0.04143 +2016-07-01|-10.0|-128.0|10.41726|-0.03955 +2016-07-01|-10.0|-129.0|10.46499|-0.03764 +2016-07-01|-10.0|-130.0|10.51189|-0.0357 +2016-07-01|-10.0|-131.0|10.55753|-0.03375 +2016-07-01|-10.0|-132.0|10.60153|-0.0318 +2016-07-01|-10.0|-133.0|10.64351|-0.02986 +2016-07-01|-10.0|-134.0|10.68312|-0.02795 +2016-07-01|-10.0|-135.0|10.72003|-0.02607 +2016-07-01|-10.0|-136.0|10.75398|-0.02422 +2016-07-01|-10.0|-137.0|10.78471|-0.02242 +2016-07-01|-10.0|-138.0|10.81204|-0.02067 +2016-07-01|-10.0|-139.0|10.83584|-0.01896 +2016-07-01|-10.0|-140.0|10.856|-0.01729 +2016-07-01|-10.0|-141.0|10.87248|-0.01567 +2016-07-01|-10.0|-142.0|10.8853|-0.01408 +2016-07-01|-10.0|-143.0|10.89452|-0.01251 +2016-07-01|-10.0|-144.0|10.90025|-0.01097 +2016-07-01|-10.0|-145.0|10.90263|-0.00943 +2016-07-01|-10.0|-146.0|10.90188|-0.00789 +2016-07-01|-10.0|-147.0|10.89824|-0.00634 +2016-07-01|-10.0|-148.0|10.89197|-0.00476 +2016-07-01|-10.0|-149.0|10.8834|-0.00315 +2016-07-01|-10.0|-150.0|10.87287|-0.0015 +2016-07-01|-10.0|-151.0|10.86074|1.9E-4 +2016-07-01|-10.0|-152.0|10.84739|0.00194 +2016-07-01|-10.0|-153.0|10.83324|0.00375 +2016-07-01|-10.0|-154.0|10.81867|0.00562 +2016-07-01|-10.0|-155.0|10.80411|0.00754 +2016-07-01|-10.0|-156.0|10.78994|0.00952 +2016-07-01|-10.0|-157.0|10.77655|0.01155 +2016-07-01|-10.0|-158.0|10.7643|0.01362 +2016-07-01|-10.0|-159.0|10.75353|0.01572 +2016-07-01|-10.0|-160.0|10.74453|0.01785 +2016-07-01|-10.0|-161.0|10.73755|0.01997 +2016-07-01|-10.0|-162.0|10.73279|0.0221 +2016-07-01|-10.0|-163.0|10.73037|0.02419 +2016-07-01|-10.0|-164.0|10.73037|0.02625 +2016-07-01|-10.0|-165.0|10.73278|0.02825 +2016-07-01|-10.0|-166.0|10.73752|0.03018 +2016-07-01|-10.0|-167.0|10.74444|0.03201 +2016-07-01|-10.0|-168.0|10.75327|0.03374 +2016-07-01|-10.0|-169.0|10.76371|0.03535 +2016-07-01|-10.0|-170.0|10.77533|0.03682 +2016-07-01|-10.0|-171.0|10.78766|0.03815 +2016-07-01|-10.0|-172.0|10.80014|0.03931 +2016-07-01|-10.0|-173.0|10.81214|0.04031 +2016-07-01|-10.0|-174.0|10.82297|0.04114 +2016-07-01|-10.0|-175.0|10.83191|0.04178 +2016-07-01|-10.0|-176.0|10.83818|0.04225 +2016-07-01|-10.0|-177.0|10.841|0.04252 +2016-07-01|-10.0|-178.0|10.83955|0.04262 +2016-07-01|-10.0|-179.0|10.83305|0.04252 +2016-07-01|-11.0|0.0|-10.66632|0.17083 +2016-07-01|-11.0|1.0|-10.16737|0.17471 +2016-07-01|-11.0|2.0|-9.67087|0.17814 +2016-07-01|-11.0|3.0|-9.178|0.18109 +2016-07-01|-11.0|4.0|-8.69002|0.18351 +2016-07-01|-11.0|5.0|-8.20822|0.18539 +2016-07-01|-11.0|6.0|-7.73395|0.18667 +2016-07-01|-11.0|7.0|-7.26861|0.18735 +2016-07-01|-11.0|8.0|-6.81366|0.18739 +2016-07-01|-11.0|9.0|-6.3706|0.18677 +2016-07-01|-11.0|10.0|-5.94097|0.18548 +2016-07-01|-11.0|11.0|-5.52637|0.1835 +2016-07-01|-11.0|12.0|-5.12841|0.18083 +2016-07-01|-11.0|13.0|-4.74875|0.17746 +2016-07-01|-11.0|14.0|-4.38904|0.1734 +2016-07-01|-11.0|15.0|-4.05092|0.16866 +2016-07-01|-11.0|16.0|-3.73604|0.16325 +2016-07-01|-11.0|17.0|-3.44597|0.1572 +2016-07-01|-11.0|18.0|-3.18225|0.15054 +2016-07-01|-11.0|19.0|-2.94632|0.1433 +2016-07-01|-11.0|20.0|-2.73951|0.13553 +2016-07-01|-11.0|21.0|-2.56302|0.12729 +2016-07-01|-11.0|22.0|-2.41787|0.11864 +2016-07-01|-11.0|23.0|-2.30492|0.10964 +2016-07-01|-11.0|24.0|-2.22479|0.10036 +2016-07-01|-11.0|25.0|-2.1779|0.0909 +2016-07-01|-11.0|26.0|-2.16439|0.08133 +2016-07-01|-11.0|27.0|-2.18414|0.07174 +2016-07-01|-11.0|28.0|-2.23676|0.06223 +2016-07-01|-11.0|29.0|-2.32155|0.05287 +2016-07-01|-11.0|30.0|-2.43755|0.04377 +2016-07-01|-11.0|31.0|-2.58348|0.035 +2016-07-01|-11.0|32.0|-2.75779|0.02666 +2016-07-01|-11.0|33.0|-2.95867|0.01883 +2016-07-01|-11.0|34.0|-3.18404|0.01158 +2016-07-01|-11.0|35.0|-3.43161|0.00497 +2016-07-01|-11.0|36.0|-3.69888|-9.4E-4 +2016-07-01|-11.0|37.0|-3.98318|-0.00609 +2016-07-01|-11.0|38.0|-4.2817|-0.01046 +2016-07-01|-11.0|39.0|-4.59155|-0.014 +2016-07-01|-11.0|40.0|-4.90977|-0.01671 +2016-07-01|-11.0|41.0|-5.23339|-0.01857 +2016-07-01|-11.0|42.0|-5.55946|-0.01959 +2016-07-01|-11.0|43.0|-5.88508|-0.01978 +2016-07-01|-11.0|44.0|-6.20747|-0.01917 +2016-07-01|-11.0|45.0|-6.52399|-0.01779 +2016-07-01|-11.0|46.0|-6.83213|-0.01567 +2016-07-01|-11.0|47.0|-7.1296|-0.01287 +2016-07-01|-11.0|48.0|-7.41434|-0.00943 +2016-07-01|-11.0|49.0|-7.68448|-0.00543 +2016-07-01|-11.0|50.0|-7.93844|-9.1E-4 +2016-07-01|-11.0|51.0|-8.17486|0.00406 +2016-07-01|-11.0|52.0|-8.39265|0.0094 +2016-07-01|-11.0|53.0|-8.59097|0.01506 +2016-07-01|-11.0|54.0|-8.76921|0.02097 +2016-07-01|-11.0|55.0|-8.92701|0.02705 +2016-07-01|-11.0|56.0|-9.06421|0.03325 +2016-07-01|-11.0|57.0|-9.18083|0.03951 +2016-07-01|-11.0|58.0|-9.27708|0.04576 +2016-07-01|-11.0|59.0|-9.3533|0.05196 +2016-07-01|-11.0|60.0|-9.40994|0.05805 +2016-07-01|-11.0|61.0|-9.44753|0.064 +2016-07-01|-11.0|62.0|-9.46669|0.06975 +2016-07-01|-11.0|63.0|-9.46804|0.07529 +2016-07-01|-11.0|64.0|-9.45221|0.08057 +2016-07-01|-11.0|65.0|-9.41982|0.08558 +2016-07-01|-11.0|66.0|-9.37144|0.09029 +2016-07-01|-11.0|67.0|-9.3076|0.09469 +2016-07-01|-11.0|68.0|-9.22875|0.09877 +2016-07-01|-11.0|69.0|-9.13526|0.10252 +2016-07-01|-11.0|70.0|-9.02742|0.10593 +2016-07-01|-11.0|71.0|-8.90544|0.10901 +2016-07-01|-11.0|72.0|-8.76945|0.11175 +2016-07-01|-11.0|73.0|-8.61953|0.11416 +2016-07-01|-11.0|74.0|-8.45568|0.11624 +2016-07-01|-11.0|75.0|-8.27789|0.11798 +2016-07-01|-11.0|76.0|-8.08612|0.11939 +2016-07-01|-11.0|77.0|-7.88035|0.12047 +2016-07-01|-11.0|78.0|-7.66058|0.12121 +2016-07-01|-11.0|79.0|-7.42689|0.12163 +2016-07-01|-11.0|80.0|-7.17942|0.1217 +2016-07-01|-11.0|81.0|-6.91843|0.12144 +2016-07-01|-11.0|82.0|-6.64433|0.12082 +2016-07-01|-11.0|83.0|-6.35765|0.11985 +2016-07-01|-11.0|84.0|-6.05911|0.1185 +2016-07-01|-11.0|85.0|-5.7496|0.11679 +2016-07-01|-11.0|86.0|-5.43021|0.11468 +2016-07-01|-11.0|87.0|-5.10219|0.11218 +2016-07-01|-11.0|88.0|-4.76699|0.10927 +2016-07-01|-11.0|89.0|-4.42625|0.10596 +2016-07-01|-11.0|90.0|-4.08172|0.10222 +2016-07-01|-11.0|91.0|-3.73532|0.09806 +2016-07-01|-11.0|92.0|-3.38905|0.09349 +2016-07-01|-11.0|93.0|-3.04499|0.0885 +2016-07-01|-11.0|94.0|-2.70525|0.08311 +2016-07-01|-11.0|95.0|-2.37193|0.07733 +2016-07-01|-11.0|96.0|-2.04709|0.07117 +2016-07-01|-11.0|97.0|-1.73268|0.06467 +2016-07-01|-11.0|98.0|-1.43056|0.05784 +2016-07-01|-11.0|99.0|-1.14237|0.05073 +2016-07-01|-11.0|100.0|-0.86958|0.04336 +2016-07-01|-11.0|101.0|-0.61342|0.03578 +2016-07-01|-11.0|102.0|-0.37485|0.02804 +2016-07-01|-11.0|103.0|-0.15455|0.02017 +2016-07-01|-11.0|104.0|0.0471|0.01222 +2016-07-01|-11.0|105.0|0.23001|0.00426 +2016-07-01|-11.0|106.0|0.39442|-0.00368 +2016-07-01|-11.0|107.0|0.54084|-0.01155 +2016-07-01|-11.0|108.0|0.67009|-0.01928 +2016-07-01|-11.0|109.0|0.78326|-0.02684 +2016-07-01|-11.0|110.0|0.88166|-0.03418 +2016-07-01|-11.0|111.0|0.96684|-0.04124 +2016-07-01|-11.0|112.0|1.04053|-0.048 +2016-07-01|-11.0|113.0|1.10461|-0.05441 +2016-07-01|-11.0|114.0|1.16106|-0.06043 +2016-07-01|-11.0|115.0|1.21195|-0.06604 +2016-07-01|-11.0|116.0|1.25934|-0.0712 +2016-07-01|-11.0|117.0|1.30533|-0.0759 +2016-07-01|-11.0|118.0|1.35193|-0.08012 +2016-07-01|-11.0|119.0|1.40109|-0.08384 +2016-07-01|-11.0|120.0|1.4546|-0.08705 +2016-07-01|-11.0|121.0|1.51414|-0.08975 +2016-07-01|-11.0|122.0|1.58119|-0.09194 +2016-07-01|-11.0|123.0|1.65702|-0.09363 +2016-07-01|-11.0|124.0|1.74271|-0.09482 +2016-07-01|-11.0|125.0|1.83909|-0.09552 +2016-07-01|-11.0|126.0|1.94677|-0.09575 +2016-07-01|-11.0|127.0|2.06612|-0.09553 +2016-07-01|-11.0|128.0|2.1973|-0.09488 +2016-07-01|-11.0|129.0|2.34023|-0.09382 +2016-07-01|-11.0|130.0|2.49466|-0.09238 +2016-07-01|-11.0|131.0|2.66014|-0.09058 +2016-07-01|-11.0|132.0|2.83607|-0.08845 +2016-07-01|-11.0|133.0|3.02172|-0.08603 +2016-07-01|-11.0|134.0|3.21626|-0.08334 +2016-07-01|-11.0|135.0|3.41878|-0.0804 +2016-07-01|-11.0|136.0|3.62831|-0.07726 +2016-07-01|-11.0|137.0|3.84388|-0.07394 +2016-07-01|-11.0|138.0|4.0645|-0.07047 +2016-07-01|-11.0|139.0|4.28923|-0.06687 +2016-07-01|-11.0|140.0|4.51714|-0.06317 +2016-07-01|-11.0|141.0|4.74738|-0.05939 +2016-07-01|-11.0|142.0|4.97917|-0.05556 +2016-07-01|-11.0|143.0|5.2118|-0.05169 +2016-07-01|-11.0|144.0|5.44464|-0.04781 +2016-07-01|-11.0|145.0|5.67715|-0.04392 +2016-07-01|-11.0|146.0|5.90885|-0.04005 +2016-07-01|-11.0|147.0|6.13934|-0.03621 +2016-07-01|-11.0|148.0|6.36828|-0.03241 +2016-07-01|-11.0|149.0|6.59538|-0.02866 +2016-07-01|-11.0|150.0|6.82039|-0.02497 +2016-07-01|-11.0|151.0|7.04306|-0.02134 +2016-07-01|-11.0|152.0|7.26318|-0.01779 +2016-07-01|-11.0|153.0|7.48052|-0.01431 +2016-07-01|-11.0|154.0|7.69484|-0.01091 +2016-07-01|-11.0|155.0|7.90587|-0.00759 +2016-07-01|-11.0|156.0|8.11331|-0.00436 +2016-07-01|-11.0|157.0|8.31682|-0.00122 +2016-07-01|-11.0|158.0|8.51603|0.00184 +2016-07-01|-11.0|159.0|8.71053|0.00481 +2016-07-01|-11.0|160.0|8.89986|0.00768 +2016-07-01|-11.0|161.0|9.08353|0.01046 +2016-07-01|-11.0|162.0|9.26105|0.01315 +2016-07-01|-11.0|163.0|9.4319|0.01575 +2016-07-01|-11.0|164.0|9.59555|0.01825 +2016-07-01|-11.0|165.0|9.75149|0.02065 +2016-07-01|-11.0|166.0|9.89924|0.02296 +2016-07-01|-11.0|167.0|10.03836|0.02516 +2016-07-01|-11.0|168.0|10.16844|0.02726 +2016-07-01|-11.0|169.0|10.28916|0.02924 +2016-07-01|-11.0|170.0|10.40025|0.03112 +2016-07-01|-11.0|171.0|10.50155|0.03288 +2016-07-01|-11.0|172.0|10.59296|0.03452 +2016-07-01|-11.0|173.0|10.67451|0.03602 +2016-07-01|-11.0|174.0|10.74631|0.0374 +2016-07-01|-11.0|175.0|10.80856|0.03863 +2016-07-01|-11.0|176.0|10.86159|0.03972 +2016-07-01|-11.0|177.0|10.90579|0.04066 +2016-07-01|-11.0|178.0|10.94166|0.04144 +2016-07-01|-11.0|179.0|10.96977|0.04205 +2016-07-01|-11.0|-1.0|-11.16657|0.16654 +2016-07-01|-11.0|-2.0|-11.66702|0.16189 +2016-07-01|-11.0|-3.0|-12.16662|0.15693 +2016-07-01|-11.0|-4.0|-12.66436|0.15169 +2016-07-01|-11.0|-5.0|-13.15928|0.14623 +2016-07-01|-11.0|-6.0|-13.65047|0.1406 +2016-07-01|-11.0|-7.0|-14.13703|0.13484 +2016-07-01|-11.0|-8.0|-14.61812|0.129 +2016-07-01|-11.0|-9.0|-15.09295|0.12313 +2016-07-01|-11.0|-10.0|-15.56073|0.11728 +2016-07-01|-11.0|-11.0|-16.02074|0.11148 +2016-07-01|-11.0|-12.0|-16.47226|0.10579 +2016-07-01|-11.0|-13.0|-16.91461|0.10022 +2016-07-01|-11.0|-14.0|-17.34713|0.09482 +2016-07-01|-11.0|-15.0|-17.76917|0.08961 +2016-07-01|-11.0|-16.0|-18.18012|0.08461 +2016-07-01|-11.0|-17.0|-18.57933|0.07983 +2016-07-01|-11.0|-18.0|-18.96621|0.07527 +2016-07-01|-11.0|-19.0|-19.34011|0.07094 +2016-07-01|-11.0|-20.0|-19.70042|0.06682 +2016-07-01|-11.0|-21.0|-20.0465|0.0629 +2016-07-01|-11.0|-22.0|-20.37769|0.05916 +2016-07-01|-11.0|-23.0|-20.69332|0.05557 +2016-07-01|-11.0|-24.0|-20.99269|0.0521 +2016-07-01|-11.0|-25.0|-21.27509|0.04871 +2016-07-01|-11.0|-26.0|-21.53978|0.04537 +2016-07-01|-11.0|-27.0|-21.78599|0.04202 +2016-07-01|-11.0|-28.0|-22.01294|0.03864 +2016-07-01|-11.0|-29.0|-22.21983|0.03517 +2016-07-01|-11.0|-30.0|-22.40584|0.03158 +2016-07-01|-11.0|-31.0|-22.57015|0.02782 +2016-07-01|-11.0|-32.0|-22.71192|0.02387 +2016-07-01|-11.0|-33.0|-22.83033|0.01969 +2016-07-01|-11.0|-34.0|-22.92453|0.01526 +2016-07-01|-11.0|-35.0|-22.99372|0.01054 +2016-07-01|-11.0|-36.0|-23.03709|0.00554 +2016-07-01|-11.0|-37.0|-23.05388|2.3E-4 +2016-07-01|-11.0|-38.0|-23.04334|-0.00538 +2016-07-01|-11.0|-39.0|-23.00476|-0.01129 +2016-07-01|-11.0|-40.0|-22.93748|-0.01751 +2016-07-01|-11.0|-41.0|-22.84088|-0.024 +2016-07-01|-11.0|-42.0|-22.7144|-0.03076 +2016-07-01|-11.0|-43.0|-22.55753|-0.03776 +2016-07-01|-11.0|-44.0|-22.36984|-0.04497 +2016-07-01|-11.0|-45.0|-22.15096|-0.05236 +2016-07-01|-11.0|-46.0|-21.90058|-0.05989 +2016-07-01|-11.0|-47.0|-21.6185|-0.06753 +2016-07-01|-11.0|-48.0|-21.30458|-0.07523 +2016-07-01|-11.0|-49.0|-20.95878|-0.08296 +2016-07-01|-11.0|-50.0|-20.58117|-0.09066 +2016-07-01|-11.0|-51.0|-20.17189|-0.0983 +2016-07-01|-11.0|-52.0|-19.73121|-0.10582 +2016-07-01|-11.0|-53.0|-19.25952|-0.11318 +2016-07-01|-11.0|-54.0|-18.7573|-0.12034 +2016-07-01|-11.0|-55.0|-18.22519|-0.12725 +2016-07-01|-11.0|-56.0|-17.66394|-0.13388 +2016-07-01|-11.0|-57.0|-17.07444|-0.14017 +2016-07-01|-11.0|-58.0|-16.45773|-0.1461 +2016-07-01|-11.0|-59.0|-15.81498|-0.15163 +2016-07-01|-11.0|-60.0|-15.1475|-0.15673 +2016-07-01|-11.0|-61.0|-14.45679|-0.16137 +2016-07-01|-11.0|-62.0|-13.74445|-0.16552 +2016-07-01|-11.0|-63.0|-13.01225|-0.16918 +2016-07-01|-11.0|-64.0|-12.2621|-0.17231 +2016-07-01|-11.0|-65.0|-11.49603|-0.17491 +2016-07-01|-11.0|-66.0|-10.71622|-0.17697 +2016-07-01|-11.0|-67.0|-9.92495|-0.17849 +2016-07-01|-11.0|-68.0|-9.12459|-0.17948 +2016-07-01|-11.0|-69.0|-8.31763|-0.17994 +2016-07-01|-11.0|-70.0|-7.50658|-0.17988 +2016-07-01|-11.0|-71.0|-6.69403|-0.17931 +2016-07-01|-11.0|-72.0|-5.88259|-0.17827 +2016-07-01|-11.0|-73.0|-5.07486|-0.17676 +2016-07-01|-11.0|-74.0|-4.27343|-0.17482 +2016-07-01|-11.0|-75.0|-3.48085|-0.17248 +2016-07-01|-11.0|-76.0|-2.69959|-0.16976 +2016-07-01|-11.0|-77.0|-1.93204|-0.16671 +2016-07-01|-11.0|-78.0|-1.18047|-0.16334 +2016-07-01|-11.0|-79.0|-0.44704|-0.15971 +2016-07-01|-11.0|-80.0|0.26627|-0.15584 +2016-07-01|-11.0|-81.0|0.95762|-0.15177 +2016-07-01|-11.0|-82.0|1.62534|-0.14754 +2016-07-01|-11.0|-83.0|2.26797|-0.14319 +2016-07-01|-11.0|-84.0|2.88424|-0.13874 +2016-07-01|-11.0|-85.0|3.47306|-0.13423 +2016-07-01|-11.0|-86.0|4.03357|-0.12969 +2016-07-01|-11.0|-87.0|4.56511|-0.12516 +2016-07-01|-11.0|-88.0|5.06721|-0.12066 +2016-07-01|-11.0|-89.0|5.53963|-0.11622 +2016-07-01|-11.0|-90.0|5.98229|-0.11187 +2016-07-01|-11.0|-91.0|6.39534|-0.10762 +2016-07-01|-11.0|-92.0|6.7791|-0.10351 +2016-07-01|-11.0|-93.0|7.13406|-0.09955 +2016-07-01|-11.0|-94.0|7.46089|-0.09575 +2016-07-01|-11.0|-95.0|7.7604|-0.09214 +2016-07-01|-11.0|-96.0|8.03355|-0.08872 +2016-07-01|-11.0|-97.0|8.28144|-0.0855 +2016-07-01|-11.0|-98.0|8.50529|-0.08249 +2016-07-01|-11.0|-99.0|8.7064|-0.0797 +2016-07-01|-11.0|-100.0|8.88618|-0.07712 +2016-07-01|-11.0|-101.0|9.0461|-0.07475 +2016-07-01|-11.0|-102.0|9.1877|-0.0726 +2016-07-01|-11.0|-103.0|9.31254|-0.07064 +2016-07-01|-11.0|-104.0|9.42223|-0.06888 +2016-07-01|-11.0|-105.0|9.51834|-0.06729 +2016-07-01|-11.0|-106.0|9.60248|-0.06587 +2016-07-01|-11.0|-107.0|9.67618|-0.06459 +2016-07-01|-11.0|-108.0|9.74095|-0.06344 +2016-07-01|-11.0|-109.0|9.79825|-0.06239 +2016-07-01|-11.0|-110.0|9.84943|-0.06143 +2016-07-01|-11.0|-111.0|9.89577|-0.06054 +2016-07-01|-11.0|-112.0|9.93846|-0.05968 +2016-07-01|-11.0|-113.0|9.97855|-0.05884 +2016-07-01|-11.0|-114.0|10.017|-0.058 +2016-07-01|-11.0|-115.0|10.05463|-0.05714 +2016-07-01|-11.0|-116.0|10.09215|-0.05624 +2016-07-01|-11.0|-117.0|10.13011|-0.05529 +2016-07-01|-11.0|-118.0|10.16897|-0.05426 +2016-07-01|-11.0|-119.0|10.20906|-0.05316 +2016-07-01|-11.0|-120.0|10.25056|-0.05196 +2016-07-01|-11.0|-121.0|10.29359|-0.05068 +2016-07-01|-11.0|-122.0|10.33813|-0.0493 +2016-07-01|-11.0|-123.0|10.38408|-0.04783 +2016-07-01|-11.0|-124.0|10.43128|-0.04626 +2016-07-01|-11.0|-125.0|10.47946|-0.04462 +2016-07-01|-11.0|-126.0|10.52834|-0.04289 +2016-07-01|-11.0|-127.0|10.57755|-0.04111 +2016-07-01|-11.0|-128.0|10.62673|-0.03927 +2016-07-01|-11.0|-129.0|10.67547|-0.03738 +2016-07-01|-11.0|-130.0|10.72337|-0.03547 +2016-07-01|-11.0|-131.0|10.77001|-0.03354 +2016-07-01|-11.0|-132.0|10.815|-0.03161 +2016-07-01|-11.0|-133.0|10.85796|-0.02968 +2016-07-01|-11.0|-134.0|10.89854|-0.02778 +2016-07-01|-11.0|-135.0|10.93643|-0.0259 +2016-07-01|-11.0|-136.0|10.97133|-0.02405 +2016-07-01|-11.0|-137.0|11.00302|-0.02225 +2016-07-01|-11.0|-138.0|11.0313|-0.02048 +2016-07-01|-11.0|-139.0|11.05603|-0.01876 +2016-07-01|-11.0|-140.0|11.07711|-0.01708 +2016-07-01|-11.0|-141.0|11.09449|-0.01544 +2016-07-01|-11.0|-142.0|11.10818|-0.01383 +2016-07-01|-11.0|-143.0|11.11823|-0.01224 +2016-07-01|-11.0|-144.0|11.12474|-0.01067 +2016-07-01|-11.0|-145.0|11.12786|-0.00911 +2016-07-01|-11.0|-146.0|11.12776|-0.00755 +2016-07-01|-11.0|-147.0|11.12469|-0.00598 +2016-07-01|-11.0|-148.0|11.1189|-0.00438 +2016-07-01|-11.0|-149.0|11.1107|-0.00275 +2016-07-01|-11.0|-150.0|11.10041|-0.00109 +2016-07-01|-11.0|-151.0|11.08838|6.3E-4 +2016-07-01|-11.0|-152.0|11.075|0.00239 +2016-07-01|-11.0|-153.0|11.06064|0.00421 +2016-07-01|-11.0|-154.0|11.0457|0.00608 +2016-07-01|-11.0|-155.0|11.03058|0.00801 +2016-07-01|-11.0|-156.0|11.01567|0.01 +2016-07-01|-11.0|-157.0|11.00134|0.01202 +2016-07-01|-11.0|-158.0|10.98797|0.01409 +2016-07-01|-11.0|-159.0|10.97587|0.01619 +2016-07-01|-11.0|-160.0|10.96535|0.0183 +2016-07-01|-11.0|-161.0|10.95666|0.02042 +2016-07-01|-11.0|-162.0|10.94999|0.02253 +2016-07-01|-11.0|-163.0|10.9455|0.02461 +2016-07-01|-11.0|-164.0|10.94326|0.02666 +2016-07-01|-11.0|-165.0|10.94328|0.02864 +2016-07-01|-11.0|-166.0|10.9455|0.03055 +2016-07-01|-11.0|-167.0|10.94976|0.03237 +2016-07-01|-11.0|-168.0|10.95586|0.03408 +2016-07-01|-11.0|-169.0|10.96347|0.03567 +2016-07-01|-11.0|-170.0|10.97222|0.03712 +2016-07-01|-11.0|-171.0|10.98164|0.03843 +2016-07-01|-11.0|-172.0|10.9912|0.03959 +2016-07-01|-11.0|-173.0|11.00029|0.04057 +2016-07-01|-11.0|-174.0|11.00826|0.04139 +2016-07-01|-11.0|-175.0|11.01439|0.04203 +2016-07-01|-11.0|-176.0|11.01793|0.04248 +2016-07-01|-11.0|-177.0|11.01813|0.04276 +2016-07-01|-11.0|-178.0|11.01418|0.04285 +2016-07-01|-11.0|-179.0|11.00531|0.04276 +2016-07-01|-12.0|0.0|-11.30363|0.17426 +2016-07-01|-12.0|1.0|-10.79248|0.17849 +2016-07-01|-12.0|2.0|-10.28321|0.18222 +2016-07-01|-12.0|3.0|-9.77721|0.18539 +2016-07-01|-12.0|4.0|-9.27595|0.18796 +2016-07-01|-12.0|5.0|-8.78093|0.18991 +2016-07-01|-12.0|6.0|-8.29371|0.1912 +2016-07-01|-12.0|7.0|-7.8159|0.19179 +2016-07-01|-12.0|8.0|-7.34915|0.19167 +2016-07-01|-12.0|9.0|-6.89516|0.19082 +2016-07-01|-12.0|10.0|-6.45565|0.18922 +2016-07-01|-12.0|11.0|-6.03238|0.18686 +2016-07-01|-12.0|12.0|-5.62711|0.18375 +2016-07-01|-12.0|13.0|-5.24161|0.17988 +2016-07-01|-12.0|14.0|-4.87764|0.17527 +2016-07-01|-12.0|15.0|-4.53693|0.16994 +2016-07-01|-12.0|16.0|-4.22117|0.1639 +2016-07-01|-12.0|17.0|-3.93197|0.1572 +2016-07-01|-12.0|18.0|-3.67087|0.14987 +2016-07-01|-12.0|19.0|-3.43928|0.14196 +2016-07-01|-12.0|20.0|-3.2385|0.13354 +2016-07-01|-12.0|21.0|-3.06963|0.12465 +2016-07-01|-12.0|22.0|-2.93363|0.11538 +2016-07-01|-12.0|23.0|-2.83122|0.1058 +2016-07-01|-12.0|24.0|-2.76291|0.09599 +2016-07-01|-12.0|25.0|-2.72895|0.08603 +2016-07-01|-12.0|26.0|-2.72934|0.07603 +2016-07-01|-12.0|27.0|-2.76377|0.06607 +2016-07-01|-12.0|28.0|-2.83168|0.05625 +2016-07-01|-12.0|29.0|-2.9322|0.04665 +2016-07-01|-12.0|30.0|-3.06416|0.03737 +2016-07-01|-12.0|31.0|-3.22612|0.02851 +2016-07-01|-12.0|32.0|-3.41635|0.02013 +2016-07-01|-12.0|33.0|-3.63287|0.01232 +2016-07-01|-12.0|34.0|-3.87345|0.00515 +2016-07-01|-12.0|35.0|-4.13566|-0.00132 +2016-07-01|-12.0|36.0|-4.41685|-0.00703 +2016-07-01|-12.0|37.0|-4.71425|-0.01195 +2016-07-01|-12.0|38.0|-5.02495|-0.01603 +2016-07-01|-12.0|39.0|-5.34598|-0.01927 +2016-07-01|-12.0|40.0|-5.67432|-0.02164 +2016-07-01|-12.0|41.0|-6.00694|-0.02314 +2016-07-01|-12.0|42.0|-6.34087|-0.02379 +2016-07-01|-12.0|43.0|-6.67319|-0.0236 +2016-07-01|-12.0|44.0|-7.00112|-0.0226 +2016-07-01|-12.0|45.0|-7.32201|-0.02083 +2016-07-01|-12.0|46.0|-7.63339|-0.01832 +2016-07-01|-12.0|47.0|-7.933|-0.01514 +2016-07-01|-12.0|48.0|-8.21879|-0.01134 +2016-07-01|-12.0|49.0|-8.48895|-0.00697 +2016-07-01|-12.0|50.0|-8.74192|-0.00211 +2016-07-01|-12.0|51.0|-8.9764|0.00319 +2016-07-01|-12.0|52.0|-9.19134|0.00886 +2016-07-01|-12.0|53.0|-9.38594|0.01483 +2016-07-01|-12.0|54.0|-9.55963|0.02103 +2016-07-01|-12.0|55.0|-9.71209|0.02741 +2016-07-01|-12.0|56.0|-9.84319|0.03389 +2016-07-01|-12.0|57.0|-9.953|0.04041 +2016-07-01|-12.0|58.0|-10.04174|0.04693 +2016-07-01|-12.0|59.0|-10.10978|0.05338 +2016-07-01|-12.0|60.0|-10.1576|0.05972 +2016-07-01|-12.0|61.0|-10.18576|0.06591 +2016-07-01|-12.0|62.0|-10.1949|0.0719 +2016-07-01|-12.0|63.0|-10.18565|0.07767 +2016-07-01|-12.0|64.0|-10.15867|0.08318 +2016-07-01|-12.0|65.0|-10.1146|0.08841 +2016-07-01|-12.0|66.0|-10.05403|0.09334 +2016-07-01|-12.0|67.0|-9.9775|0.09795 +2016-07-01|-12.0|68.0|-9.88549|0.10224 +2016-07-01|-12.0|69.0|-9.7784|0.10619 +2016-07-01|-12.0|70.0|-9.65653|0.1098 +2016-07-01|-12.0|71.0|-9.52012|0.11306 +2016-07-01|-12.0|72.0|-9.36934|0.11597 +2016-07-01|-12.0|73.0|-9.20427|0.11854 +2016-07-01|-12.0|74.0|-9.02496|0.12075 +2016-07-01|-12.0|75.0|-8.83143|0.12263 +2016-07-01|-12.0|76.0|-8.62367|0.12415 +2016-07-01|-12.0|77.0|-8.40167|0.12532 +2016-07-01|-12.0|78.0|-8.1655|0.12615 +2016-07-01|-12.0|79.0|-7.91523|0.12662 +2016-07-01|-12.0|80.0|-7.65107|0.12673 +2016-07-01|-12.0|81.0|-7.37331|0.12648 +2016-07-01|-12.0|82.0|-7.08236|0.12586 +2016-07-01|-12.0|83.0|-6.77882|0.12486 +2016-07-01|-12.0|84.0|-6.46343|0.12347 +2016-07-01|-12.0|85.0|-6.1371|0.12168 +2016-07-01|-12.0|86.0|-5.80097|0.11949 +2016-07-01|-12.0|87.0|-5.45632|0.11689 +2016-07-01|-12.0|88.0|-5.10463|0.11386 +2016-07-01|-12.0|89.0|-4.74755|0.1104 +2016-07-01|-12.0|90.0|-4.38688|0.10651 +2016-07-01|-12.0|91.0|-4.02455|0.10219 +2016-07-01|-12.0|92.0|-3.66259|0.09744 +2016-07-01|-12.0|93.0|-3.30311|0.09227 +2016-07-01|-12.0|94.0|-2.94821|0.08669 +2016-07-01|-12.0|95.0|-2.60003|0.08072 +2016-07-01|-12.0|96.0|-2.26062|0.07437 +2016-07-01|-12.0|97.0|-1.93196|0.06768 +2016-07-01|-12.0|98.0|-1.61589|0.06067 +2016-07-01|-12.0|99.0|-1.31406|0.05338 +2016-07-01|-12.0|100.0|-1.02794|0.04585 +2016-07-01|-12.0|101.0|-0.75874|0.03811 +2016-07-01|-12.0|102.0|-0.50743|0.03022 +2016-07-01|-12.0|103.0|-0.27468|0.02222 +2016-07-01|-12.0|104.0|-0.06086|0.01416 +2016-07-01|-12.0|105.0|0.13396|0.0061 +2016-07-01|-12.0|106.0|0.31002|-0.00193 +2016-07-01|-12.0|107.0|0.46783|-0.00986 +2016-07-01|-12.0|108.0|0.60823|-0.01765 +2016-07-01|-12.0|109.0|0.7323|-0.02525 +2016-07-01|-12.0|110.0|0.84135|-0.03262 +2016-07-01|-12.0|111.0|0.93694|-0.0397 +2016-07-01|-12.0|112.0|1.02079|-0.04646 +2016-07-01|-12.0|113.0|1.09477|-0.05286 +2016-07-01|-12.0|114.0|1.16086|-0.05887 +2016-07-01|-12.0|115.0|1.22109|-0.06446 +2016-07-01|-12.0|116.0|1.27756|-0.0696 +2016-07-01|-12.0|117.0|1.33231|-0.07427 +2016-07-01|-12.0|118.0|1.38736|-0.07845 +2016-07-01|-12.0|119.0|1.44463|-0.08214 +2016-07-01|-12.0|120.0|1.50593|-0.08532 +2016-07-01|-12.0|121.0|1.5729|-0.088 +2016-07-01|-12.0|122.0|1.64702|-0.09016 +2016-07-01|-12.0|123.0|1.72958|-0.09183 +2016-07-01|-12.0|124.0|1.82162|-0.09299 +2016-07-01|-12.0|125.0|1.924|-0.09368 +2016-07-01|-12.0|126.0|2.03731|-0.0939 +2016-07-01|-12.0|127.0|2.16195|-0.09367 +2016-07-01|-12.0|128.0|2.29807|-0.09302 +2016-07-01|-12.0|129.0|2.44562|-0.09196 +2016-07-01|-12.0|130.0|2.60434|-0.09052 +2016-07-01|-12.0|131.0|2.77382|-0.08874 +2016-07-01|-12.0|132.0|2.95347|-0.08663 +2016-07-01|-12.0|133.0|3.14258|-0.08422 +2016-07-01|-12.0|134.0|3.34033|-0.08156 +2016-07-01|-12.0|135.0|3.54584|-0.07865 +2016-07-01|-12.0|136.0|3.75816|-0.07554 +2016-07-01|-12.0|137.0|3.97634|-0.07225 +2016-07-01|-12.0|138.0|4.1994|-0.06881 +2016-07-01|-12.0|139.0|4.42642|-0.06525 +2016-07-01|-12.0|140.0|4.65649|-0.06158 +2016-07-01|-12.0|141.0|4.88877|-0.05784 +2016-07-01|-12.0|142.0|5.12248|-0.05405 +2016-07-01|-12.0|143.0|5.35694|-0.05022 +2016-07-01|-12.0|144.0|5.59151|-0.04637 +2016-07-01|-12.0|145.0|5.82565|-0.04253 +2016-07-01|-12.0|146.0|6.05891|-0.0387 +2016-07-01|-12.0|147.0|6.29087|-0.0349 +2016-07-01|-12.0|148.0|6.5212|-0.03114 +2016-07-01|-12.0|149.0|6.7496|-0.02743 +2016-07-01|-12.0|150.0|6.97582|-0.02378 +2016-07-01|-12.0|151.0|7.19962|-0.0202 +2016-07-01|-12.0|152.0|7.42077|-0.01668 +2016-07-01|-12.0|153.0|7.63905|-0.01324 +2016-07-01|-12.0|154.0|7.85422|-0.00988 +2016-07-01|-12.0|155.0|8.066|-0.00661 +2016-07-01|-12.0|156.0|8.2741|-0.00342 +2016-07-01|-12.0|157.0|8.4782|-3.1E-4 +2016-07-01|-12.0|158.0|8.67791|0.0027 +2016-07-01|-12.0|159.0|8.87284|0.00563 +2016-07-01|-12.0|160.0|9.06254|0.00846 +2016-07-01|-12.0|161.0|9.24654|0.0112 +2016-07-01|-12.0|162.0|9.42434|0.01385 +2016-07-01|-12.0|163.0|9.59546|0.01641 +2016-07-01|-12.0|164.0|9.75937|0.01887 +2016-07-01|-12.0|165.0|9.91559|0.02124 +2016-07-01|-12.0|166.0|10.06366|0.0235 +2016-07-01|-12.0|167.0|10.20314|0.02567 +2016-07-01|-12.0|168.0|10.33366|0.02773 +2016-07-01|-12.0|169.0|10.45491|0.02968 +2016-07-01|-12.0|170.0|10.56664|0.03153 +2016-07-01|-12.0|171.0|10.66869|0.03325 +2016-07-01|-12.0|172.0|10.76101|0.03486 +2016-07-01|-12.0|173.0|10.8436|0.03634 +2016-07-01|-12.0|174.0|10.91661|0.03769 +2016-07-01|-12.0|175.0|10.98024|0.03891 +2016-07-01|-12.0|176.0|11.03482|0.03997 +2016-07-01|-12.0|177.0|11.08075|0.04089 +2016-07-01|-12.0|178.0|11.11852|0.04165 +2016-07-01|-12.0|179.0|11.14869|0.04226 +2016-07-01|-12.0|-1.0|-11.81531|0.16957 +2016-07-01|-12.0|-2.0|-12.32626|0.16446 +2016-07-01|-12.0|-3.0|-12.83523|0.15899 +2016-07-01|-12.0|-4.0|-13.34107|0.15322 +2016-07-01|-12.0|-5.0|-13.84268|0.14719 +2016-07-01|-12.0|-6.0|-14.33901|0.14097 +2016-07-01|-12.0|-7.0|-14.82909|0.13461 +2016-07-01|-12.0|-8.0|-15.31199|0.12817 +2016-07-01|-12.0|-9.0|-15.78684|0.1217 +2016-07-01|-12.0|-10.0|-16.25285|0.11526 +2016-07-01|-12.0|-11.0|-16.70926|0.10889 +2016-07-01|-12.0|-12.0|-17.15537|0.10263 +2016-07-01|-12.0|-13.0|-17.59052|0.09654 +2016-07-01|-12.0|-14.0|-18.0141|0.09064 +2016-07-01|-12.0|-15.0|-18.42553|0.08496 +2016-07-01|-12.0|-16.0|-18.82426|0.07953 +2016-07-01|-12.0|-17.0|-19.20977|0.07435 +2016-07-01|-12.0|-18.0|-19.58154|0.06944 +2016-07-01|-12.0|-19.0|-19.93908|0.06479 +2016-07-01|-12.0|-20.0|-20.28187|0.0604 +2016-07-01|-12.0|-21.0|-20.60942|0.05625 +2016-07-01|-12.0|-22.0|-20.9212|0.05231 +2016-07-01|-12.0|-23.0|-21.21668|0.04856 +2016-07-01|-12.0|-24.0|-21.49529|0.04497 +2016-07-01|-12.0|-25.0|-21.75647|0.04149 +2016-07-01|-12.0|-26.0|-21.99959|0.03808 +2016-07-01|-12.0|-27.0|-22.22402|0.03471 +2016-07-01|-12.0|-28.0|-22.42908|0.03132 +2016-07-01|-12.0|-29.0|-22.61409|0.02786 +2016-07-01|-12.0|-30.0|-22.77833|0.02431 +2016-07-01|-12.0|-31.0|-22.92104|0.02061 +2016-07-01|-12.0|-32.0|-23.04148|0.01672 +2016-07-01|-12.0|-33.0|-23.13888|0.01262 +2016-07-01|-12.0|-34.0|-23.21247|0.00827 +2016-07-01|-12.0|-35.0|-23.26146|0.00366 +2016-07-01|-12.0|-36.0|-23.2851|-0.00125 +2016-07-01|-12.0|-37.0|-23.28264|-0.00645 +2016-07-01|-12.0|-38.0|-23.25334|-0.01196 +2016-07-01|-12.0|-39.0|-23.1965|-0.01777 +2016-07-01|-12.0|-40.0|-23.11146|-0.02387 +2016-07-01|-12.0|-41.0|-22.99759|-0.03026 +2016-07-01|-12.0|-42.0|-22.85432|-0.03692 +2016-07-01|-12.0|-43.0|-22.68111|-0.04382 +2016-07-01|-12.0|-44.0|-22.4775|-0.05092 +2016-07-01|-12.0|-45.0|-22.2431|-0.05822 +2016-07-01|-12.0|-46.0|-21.97758|-0.06565 +2016-07-01|-12.0|-47.0|-21.6807|-0.07319 +2016-07-01|-12.0|-48.0|-21.35228|-0.0808 +2016-07-01|-12.0|-49.0|-20.99225|-0.08843 +2016-07-01|-12.0|-50.0|-20.60065|-0.09603 +2016-07-01|-12.0|-51.0|-20.1776|-0.10357 +2016-07-01|-12.0|-52.0|-19.72333|-0.11098 +2016-07-01|-12.0|-53.0|-19.2382|-0.11824 +2016-07-01|-12.0|-54.0|-18.72269|-0.12529 +2016-07-01|-12.0|-55.0|-18.17741|-0.13209 +2016-07-01|-12.0|-56.0|-17.6031|-0.13859 +2016-07-01|-12.0|-57.0|-17.00065|-0.14475 +2016-07-01|-12.0|-58.0|-16.37108|-0.15054 +2016-07-01|-12.0|-59.0|-15.71559|-0.15593 +2016-07-01|-12.0|-60.0|-15.0355|-0.16086 +2016-07-01|-12.0|-61.0|-14.33231|-0.16533 +2016-07-01|-12.0|-62.0|-13.60765|-0.16931 +2016-07-01|-12.0|-63.0|-12.86333|-0.17277 +2016-07-01|-12.0|-64.0|-12.10129|-0.1757 +2016-07-01|-12.0|-65.0|-11.32361|-0.17808 +2016-07-01|-12.0|-66.0|-10.53249|-0.17992 +2016-07-01|-12.0|-67.0|-9.73027|-0.1812 +2016-07-01|-12.0|-68.0|-8.91937|-0.18194 +2016-07-01|-12.0|-69.0|-8.10231|-0.18214 +2016-07-01|-12.0|-70.0|-7.28168|-0.18181 +2016-07-01|-12.0|-71.0|-6.4601|-0.18098 +2016-07-01|-12.0|-72.0|-5.64023|-0.17965 +2016-07-01|-12.0|-73.0|-4.8247|-0.17787 +2016-07-01|-12.0|-74.0|-4.01615|-0.17564 +2016-07-01|-12.0|-75.0|-3.21714|-0.17302 +2016-07-01|-12.0|-76.0|-2.43018|-0.17002 +2016-07-01|-12.0|-77.0|-1.65768|-0.16668 +2016-07-01|-12.0|-78.0|-0.9019|-0.16305 +2016-07-01|-12.0|-79.0|-0.16501|-0.15915 +2016-07-01|-12.0|-80.0|0.55101|-0.15503 +2016-07-01|-12.0|-81.0|1.24433|-0.15072 +2016-07-01|-12.0|-82.0|1.91331|-0.14626 +2016-07-01|-12.0|-83.0|2.55652|-0.14169 +2016-07-01|-12.0|-84.0|3.17271|-0.13704 +2016-07-01|-12.0|-85.0|3.76085|-0.13235 +2016-07-01|-12.0|-86.0|4.3201|-0.12765 +2016-07-01|-12.0|-87.0|4.84985|-0.12297 +2016-07-01|-12.0|-88.0|5.34969|-0.11834 +2016-07-01|-12.0|-89.0|5.81942|-0.11378 +2016-07-01|-12.0|-90.0|6.25904|-0.10934 +2016-07-01|-12.0|-91.0|6.66874|-0.10501 +2016-07-01|-12.0|-92.0|7.04889|-0.10084 +2016-07-01|-12.0|-93.0|7.40004|-0.09683 +2016-07-01|-12.0|-94.0|7.72291|-0.09301 +2016-07-01|-12.0|-95.0|8.01838|-0.08938 +2016-07-01|-12.0|-96.0|8.28746|-0.08596 +2016-07-01|-12.0|-97.0|8.53129|-0.08276 +2016-07-01|-12.0|-98.0|8.75114|-0.07978 +2016-07-01|-12.0|-99.0|8.94835|-0.07702 +2016-07-01|-12.0|-100.0|9.12437|-0.07449 +2016-07-01|-12.0|-101.0|9.28072|-0.07219 +2016-07-01|-12.0|-102.0|9.41895|-0.0701 +2016-07-01|-12.0|-103.0|9.54066|-0.06822 +2016-07-01|-12.0|-104.0|9.64747|-0.06654 +2016-07-01|-12.0|-105.0|9.74098|-0.06504 +2016-07-01|-12.0|-106.0|9.82279|-0.06371 +2016-07-01|-12.0|-107.0|9.89446|-0.06253 +2016-07-01|-12.0|-108.0|9.9575|-0.06148 +2016-07-01|-12.0|-109.0|10.01334|-0.06054 +2016-07-01|-12.0|-110.0|10.06335|-0.05968 +2016-07-01|-12.0|-111.0|10.1088|-0.05889 +2016-07-01|-12.0|-112.0|10.15085|-0.05813 +2016-07-01|-12.0|-113.0|10.19054|-0.0574 +2016-07-01|-12.0|-114.0|10.22882|-0.05666 +2016-07-01|-12.0|-115.0|10.26647|-0.0559 +2016-07-01|-12.0|-116.0|10.30419|-0.05509 +2016-07-01|-12.0|-117.0|10.34251|-0.05423 +2016-07-01|-12.0|-118.0|10.38187|-0.05329 +2016-07-01|-12.0|-119.0|10.42256|-0.05227 +2016-07-01|-12.0|-120.0|10.46477|-0.05116 +2016-07-01|-12.0|-121.0|10.50857|-0.04995 +2016-07-01|-12.0|-122.0|10.55395|-0.04864 +2016-07-01|-12.0|-123.0|10.60079|-0.04723 +2016-07-01|-12.0|-124.0|10.64889|-0.04573 +2016-07-01|-12.0|-125.0|10.69801|-0.04414 +2016-07-01|-12.0|-126.0|10.74782|-0.04247 +2016-07-01|-12.0|-127.0|10.79799|-0.04073 +2016-07-01|-12.0|-128.0|10.84812|-0.03893 +2016-07-01|-12.0|-129.0|10.89781|-0.03708 +2016-07-01|-12.0|-130.0|10.94665|-0.0352 +2016-07-01|-12.0|-131.0|10.99424|-0.03329 +2016-07-01|-12.0|-132.0|11.04017|-0.03138 +2016-07-01|-12.0|-133.0|11.08407|-0.02947 +2016-07-01|-12.0|-134.0|11.1256|-0.02757 +2016-07-01|-12.0|-135.0|11.16442|-0.0257 +2016-07-01|-12.0|-136.0|11.20027|-0.02385 +2016-07-01|-12.0|-137.0|11.23289|-0.02204 +2016-07-01|-12.0|-138.0|11.26211|-0.02027 +2016-07-01|-12.0|-139.0|11.28776|-0.01854 +2016-07-01|-12.0|-140.0|11.30976|-0.01685 +2016-07-01|-12.0|-141.0|11.32804|-0.01519 +2016-07-01|-12.0|-142.0|11.3426|-0.01356 +2016-07-01|-12.0|-143.0|11.35349|-0.01196 +2016-07-01|-12.0|-144.0|11.36079|-0.01037 +2016-07-01|-12.0|-145.0|11.36465|-0.00879 +2016-07-01|-12.0|-146.0|11.36523|-0.00721 +2016-07-01|-12.0|-147.0|11.36275|-0.00561 +2016-07-01|-12.0|-148.0|11.35746|-0.004 +2016-07-01|-12.0|-149.0|11.34965|-0.00235 +2016-07-01|-12.0|-150.0|11.33963|-6.7E-4 +2016-07-01|-12.0|-151.0|11.32774|0.00105 +2016-07-01|-12.0|-152.0|11.31435|0.00283 +2016-07-01|-12.0|-153.0|11.29983|0.00465 +2016-07-01|-12.0|-154.0|11.28455|0.00653 +2016-07-01|-12.0|-155.0|11.26892|0.00847 +2016-07-01|-12.0|-156.0|11.25331|0.01045 +2016-07-01|-12.0|-157.0|11.23809|0.01247 +2016-07-01|-12.0|-158.0|11.22363|0.01454 +2016-07-01|-12.0|-159.0|11.21024|0.01662 +2016-07-01|-12.0|-160.0|11.19824|0.01873 +2016-07-01|-12.0|-161.0|11.18787|0.02083 +2016-07-01|-12.0|-162.0|11.17934|0.02293 +2016-07-01|-12.0|-163.0|11.1728|0.02499 +2016-07-01|-12.0|-164.0|11.16835|0.02702 +2016-07-01|-12.0|-165.0|11.166|0.02898 +2016-07-01|-12.0|-166.0|11.1657|0.03087 +2016-07-01|-12.0|-167.0|11.16732|0.03267 +2016-07-01|-12.0|-168.0|11.17066|0.03437 +2016-07-01|-12.0|-169.0|11.17544|0.03594 +2016-07-01|-12.0|-170.0|11.18128|0.03738 +2016-07-01|-12.0|-171.0|11.18775|0.03867 +2016-07-01|-12.0|-172.0|11.19433|0.03981 +2016-07-01|-12.0|-173.0|11.20044|0.04078 +2016-07-01|-12.0|-174.0|11.20546|0.04159 +2016-07-01|-12.0|-175.0|11.20868|0.04222 +2016-07-01|-12.0|-176.0|11.20939|0.04267 +2016-07-01|-12.0|-177.0|11.20683|0.04294 +2016-07-01|-12.0|-178.0|11.20024|0.04304 +2016-07-01|-12.0|-179.0|11.18885|0.04295 +2016-07-01|-13.0|0.0|-11.96325|0.17722 +2016-07-01|-13.0|1.0|-11.44121|0.18181 +2016-07-01|-13.0|2.0|-10.92044|0.18583 +2016-07-01|-13.0|3.0|-10.40255|0.18922 +2016-07-01|-13.0|4.0|-9.88923|0.19195 +2016-07-01|-13.0|5.0|-9.38219|0.19397 +2016-07-01|-13.0|6.0|-8.88323|0.19524 +2016-07-01|-13.0|7.0|-8.39415|0.19575 +2016-07-01|-13.0|8.0|-7.91684|0.19545 +2016-07-01|-13.0|9.0|-7.45317|0.19434 +2016-07-01|-13.0|10.0|-7.00507|0.19241 +2016-07-01|-13.0|11.0|-6.57444|0.18965 +2016-07-01|-13.0|12.0|-6.16322|0.18606 +2016-07-01|-13.0|13.0|-5.77329|0.18167 +2016-07-01|-13.0|14.0|-5.40652|0.17647 +2016-07-01|-13.0|15.0|-5.06471|0.17051 +2016-07-01|-13.0|16.0|-4.74961|0.16382 +2016-07-01|-13.0|17.0|-4.46284|0.15644 +2016-07-01|-13.0|18.0|-4.20594|0.14843 +2016-07-01|-13.0|19.0|-3.9803|0.13983 +2016-07-01|-13.0|20.0|-3.78713|0.13073 +2016-07-01|-13.0|21.0|-3.62748|0.12119 +2016-07-01|-13.0|22.0|-3.50218|0.1113 +2016-07-01|-13.0|23.0|-3.41184|0.10113 +2016-07-01|-13.0|24.0|-3.3568|0.09079 +2016-07-01|-13.0|25.0|-3.33716|0.08036 +2016-07-01|-13.0|26.0|-3.35274|0.06995 +2016-07-01|-13.0|27.0|-3.40305|0.05964 +2016-07-01|-13.0|28.0|-3.48734|0.04954 +2016-07-01|-13.0|29.0|-3.60454|0.03974 +2016-07-01|-13.0|30.0|-3.75331|0.03033 +2016-07-01|-13.0|31.0|-3.932|0.0214 +2016-07-01|-13.0|32.0|-4.13871|0.01304 +2016-07-01|-13.0|33.0|-4.37129|0.0053 +2016-07-01|-13.0|34.0|-4.62735|-0.00173 +2016-07-01|-13.0|35.0|-4.90432|-0.00801 +2016-07-01|-13.0|36.0|-5.19943|-0.01348 +2016-07-01|-13.0|37.0|-5.50979|-0.01811 +2016-07-01|-13.0|38.0|-5.83242|-0.02187 +2016-07-01|-13.0|39.0|-6.16426|-0.02475 +2016-07-01|-13.0|40.0|-6.50223|-0.02674 +2016-07-01|-13.0|41.0|-6.84328|-0.02785 +2016-07-01|-13.0|42.0|-7.18441|-0.02808 +2016-07-01|-13.0|43.0|-7.5227|-0.02748 +2016-07-01|-13.0|44.0|-7.85537|-0.02606 +2016-07-01|-13.0|45.0|-8.1798|-0.02388 +2016-07-01|-13.0|46.0|-8.49355|-0.02097 +2016-07-01|-13.0|47.0|-8.79437|-0.01739 +2016-07-01|-13.0|48.0|-9.08028|-0.0132 +2016-07-01|-13.0|49.0|-9.34951|-0.00846 +2016-07-01|-13.0|50.0|-9.60054|-0.00324 +2016-07-01|-13.0|51.0|-9.83213|0.00241 +2016-07-01|-13.0|52.0|-10.04326|0.00841 +2016-07-01|-13.0|53.0|-10.23319|0.01469 +2016-07-01|-13.0|54.0|-10.4014|0.0212 +2016-07-01|-13.0|55.0|-10.54759|0.02787 +2016-07-01|-13.0|56.0|-10.67168|0.03463 +2016-07-01|-13.0|57.0|-10.77377|0.04143 +2016-07-01|-13.0|58.0|-10.85411|0.04821 +2016-07-01|-13.0|59.0|-10.9131|0.05492 +2016-07-01|-13.0|60.0|-10.95125|0.06151 +2016-07-01|-13.0|61.0|-10.96914|0.06795 +2016-07-01|-13.0|62.0|-10.96742|0.07418 +2016-07-01|-13.0|63.0|-10.94675|0.08019 +2016-07-01|-13.0|64.0|-10.90781|0.08594 +2016-07-01|-13.0|65.0|-10.85126|0.0914 +2016-07-01|-13.0|66.0|-10.7777|0.09655 +2016-07-01|-13.0|67.0|-10.68771|0.10139 +2016-07-01|-13.0|68.0|-10.58178|0.10588 +2016-07-01|-13.0|69.0|-10.46032|0.11004 +2016-07-01|-13.0|70.0|-10.32368|0.11384 +2016-07-01|-13.0|71.0|-10.17211|0.11729 +2016-07-01|-13.0|72.0|-10.0058|0.12038 +2016-07-01|-13.0|73.0|-9.82488|0.12311 +2016-07-01|-13.0|74.0|-9.62942|0.12548 +2016-07-01|-13.0|75.0|-9.41946|0.12748 +2016-07-01|-13.0|76.0|-9.19503|0.12912 +2016-07-01|-13.0|77.0|-8.95616|0.13039 +2016-07-01|-13.0|78.0|-8.70293|0.1313 +2016-07-01|-13.0|79.0|-8.43548|0.13183 +2016-07-01|-13.0|80.0|-8.15402|0.13198 +2016-07-01|-13.0|81.0|-7.85888|0.13174 +2016-07-01|-13.0|82.0|-7.55053|0.13112 +2016-07-01|-13.0|83.0|-7.22957|0.13009 +2016-07-01|-13.0|84.0|-6.89678|0.12865 +2016-07-01|-13.0|85.0|-6.55312|0.1268 +2016-07-01|-13.0|86.0|-6.19973|0.12451 +2016-07-01|-13.0|87.0|-5.83795|0.1218 +2016-07-01|-13.0|88.0|-5.46927|0.11864 +2016-07-01|-13.0|89.0|-5.09538|0.11504 +2016-07-01|-13.0|90.0|-4.7181|0.11099 +2016-07-01|-13.0|91.0|-4.33938|0.1065 +2016-07-01|-13.0|92.0|-3.96127|0.10157 +2016-07-01|-13.0|93.0|-3.58589|0.09621 +2016-07-01|-13.0|94.0|-3.21537|0.09043 +2016-07-01|-13.0|95.0|-2.85185|0.08426 +2016-07-01|-13.0|96.0|-2.4974|0.07772 +2016-07-01|-13.0|97.0|-2.15398|0.07083 +2016-07-01|-13.0|98.0|-1.82345|0.06363 +2016-07-01|-13.0|99.0|-1.50746|0.05616 +2016-07-01|-13.0|100.0|-1.20747|0.04845 +2016-07-01|-13.0|101.0|-0.92468|0.04056 +2016-07-01|-13.0|102.0|-0.66006|0.03252 +2016-07-01|-13.0|103.0|-0.41427|0.02438 +2016-07-01|-13.0|104.0|-0.18766|0.01621 +2016-07-01|-13.0|105.0|0.0197|0.00804 +2016-07-01|-13.0|106.0|0.20804|-8.0E-5 +2016-07-01|-13.0|107.0|0.37791|-0.00808 +2016-07-01|-13.0|108.0|0.53012|-0.01593 +2016-07-01|-13.0|109.0|0.66577|-0.02357 +2016-07-01|-13.0|110.0|0.78617|-0.03096 +2016-07-01|-13.0|111.0|0.89287|-0.03806 +2016-07-01|-13.0|112.0|0.98757|-0.04483 +2016-07-01|-13.0|113.0|1.07215|-0.05122 +2016-07-01|-13.0|114.0|1.14856|-0.05722 +2016-07-01|-13.0|115.0|1.21884|-0.06279 +2016-07-01|-13.0|116.0|1.28505|-0.0679 +2016-07-01|-13.0|117.0|1.34922|-0.07254 +2016-07-01|-13.0|118.0|1.41337|-0.07669 +2016-07-01|-13.0|119.0|1.47939|-0.08035 +2016-07-01|-13.0|120.0|1.54908|-0.0835 +2016-07-01|-13.0|121.0|1.62407|-0.08615 +2016-07-01|-13.0|122.0|1.70584|-0.08828 +2016-07-01|-13.0|123.0|1.79565|-0.08992 +2016-07-01|-13.0|124.0|1.89456|-0.09107 +2016-07-01|-13.0|125.0|2.00341|-0.09174 +2016-07-01|-13.0|126.0|2.12283|-0.09195 +2016-07-01|-13.0|127.0|2.25319|-0.09172 +2016-07-01|-13.0|128.0|2.39466|-0.09107 +2016-07-01|-13.0|129.0|2.54721|-0.09001 +2016-07-01|-13.0|130.0|2.7106|-0.08859 +2016-07-01|-13.0|131.0|2.88443|-0.08682 +2016-07-01|-13.0|132.0|3.06813|-0.08473 +2016-07-01|-13.0|133.0|3.26101|-0.08235 +2016-07-01|-13.0|134.0|3.46229|-0.07971 +2016-07-01|-13.0|135.0|3.67108|-0.07683 +2016-07-01|-13.0|136.0|3.88649|-0.07376 +2016-07-01|-13.0|137.0|4.10756|-0.0705 +2016-07-01|-13.0|138.0|4.33335|-0.0671 +2016-07-01|-13.0|139.0|4.56295|-0.06358 +2016-07-01|-13.0|140.0|4.79546|-0.05996 +2016-07-01|-13.0|141.0|5.03007|-0.05626 +2016-07-01|-13.0|142.0|5.26601|-0.05251 +2016-07-01|-13.0|143.0|5.50259|-0.04872 +2016-07-01|-13.0|144.0|5.73921|-0.04492 +2016-07-01|-13.0|145.0|5.97531|-0.04112 +2016-07-01|-13.0|146.0|6.21044|-0.03734 +2016-07-01|-13.0|147.0|6.4442|-0.03358 +2016-07-01|-13.0|148.0|6.67625|-0.02987 +2016-07-01|-13.0|149.0|6.90629|-0.0262 +2016-07-01|-13.0|150.0|7.13407|-0.02259 +2016-07-01|-13.0|151.0|7.35934|-0.01905 +2016-07-01|-13.0|152.0|7.58187|-0.01558 +2016-07-01|-13.0|153.0|7.80144|-0.01218 +2016-07-01|-13.0|154.0|8.01781|-0.00887 +2016-07-01|-13.0|155.0|8.2307|-0.00563 +2016-07-01|-13.0|156.0|8.43982|-0.00248 +2016-07-01|-13.0|157.0|8.64484|5.8E-4 +2016-07-01|-13.0|158.0|8.84541|0.00355 +2016-07-01|-13.0|159.0|9.04111|0.00644 +2016-07-01|-13.0|160.0|9.23151|0.00923 +2016-07-01|-13.0|161.0|9.41617|0.01193 +2016-07-01|-13.0|162.0|9.59459|0.01454 +2016-07-01|-13.0|163.0|9.76629|0.01706 +2016-07-01|-13.0|164.0|9.93078|0.01948 +2016-07-01|-13.0|165.0|10.08759|0.0218 +2016-07-01|-13.0|166.0|10.23627|0.02403 +2016-07-01|-13.0|167.0|10.37642|0.02616 +2016-07-01|-13.0|168.0|10.50766|0.02818 +2016-07-01|-13.0|169.0|10.62972|0.0301 +2016-07-01|-13.0|170.0|10.74235|0.03191 +2016-07-01|-13.0|171.0|10.84543|0.03361 +2016-07-01|-13.0|172.0|10.9389|0.03519 +2016-07-01|-13.0|173.0|11.02279|0.03664 +2016-07-01|-13.0|174.0|11.09724|0.03796 +2016-07-01|-13.0|175.0|11.16248|0.03915 +2016-07-01|-13.0|176.0|11.21882|0.0402 +2016-07-01|-13.0|177.0|11.26667|0.0411 +2016-07-01|-13.0|178.0|11.30653|0.04184 +2016-07-01|-13.0|179.0|11.33895|0.04243 +2016-07-01|-13.0|-1.0|-12.48504|0.17211 +2016-07-01|-13.0|-2.0|-13.00509|0.16653 +2016-07-01|-13.0|-3.0|-13.522|0.16056 +2016-07-01|-13.0|-4.0|-14.03447|0.15424 +2016-07-01|-13.0|-5.0|-14.54124|0.14764 +2016-07-01|-13.0|-6.0|-15.04115|0.14083 +2016-07-01|-13.0|-7.0|-15.53314|0.13387 +2016-07-01|-13.0|-8.0|-16.0162|0.12683 +2016-07-01|-13.0|-9.0|-16.48943|0.11977 +2016-07-01|-13.0|-10.0|-16.95199|0.11274 +2016-07-01|-13.0|-11.0|-17.40311|0.1058 +2016-07-01|-13.0|-12.0|-17.84213|0.099 +2016-07-01|-13.0|-13.0|-18.26841|0.09239 +2016-07-01|-13.0|-14.0|-18.68141|0.086 +2016-07-01|-13.0|-15.0|-19.08061|0.07987 +2016-07-01|-13.0|-16.0|-19.46556|0.07403 +2016-07-01|-13.0|-17.0|-19.83584|0.06848 +2016-07-01|-13.0|-18.0|-20.19106|0.06323 +2016-07-01|-13.0|-19.0|-20.53082|0.0583 +2016-07-01|-13.0|-20.0|-20.85478|0.05365 +2016-07-01|-13.0|-21.0|-21.16256|0.04929 +2016-07-01|-13.0|-22.0|-21.45377|0.04518 +2016-07-01|-13.0|-23.0|-21.72803|0.0413 +2016-07-01|-13.0|-24.0|-21.98491|0.03761 +2016-07-01|-13.0|-25.0|-22.22397|0.03406 +2016-07-01|-13.0|-26.0|-22.44473|0.03062 +2016-07-01|-13.0|-27.0|-22.64666|0.02724 +2016-07-01|-13.0|-28.0|-22.82922|0.02386 +2016-07-01|-13.0|-29.0|-22.99182|0.02045 +2016-07-01|-13.0|-30.0|-23.13383|0.01695 +2016-07-01|-13.0|-31.0|-23.25459|0.01332 +2016-07-01|-13.0|-32.0|-23.35341|0.00952 +2016-07-01|-13.0|-33.0|-23.4296|0.00552 +2016-07-01|-13.0|-34.0|-23.48242|0.00127 +2016-07-01|-13.0|-35.0|-23.51114|-0.00323 +2016-07-01|-13.0|-36.0|-23.51502|-0.00802 +2016-07-01|-13.0|-37.0|-23.49333|-0.01311 +2016-07-01|-13.0|-38.0|-23.44535|-0.0185 +2016-07-01|-13.0|-39.0|-23.37037|-0.02419 +2016-07-01|-13.0|-40.0|-23.26771|-0.03018 +2016-07-01|-13.0|-41.0|-23.13674|-0.03645 +2016-07-01|-13.0|-42.0|-22.97686|-0.04299 +2016-07-01|-13.0|-43.0|-22.78751|-0.04977 +2016-07-01|-13.0|-44.0|-22.56821|-0.05677 +2016-07-01|-13.0|-45.0|-22.31851|-0.06396 +2016-07-01|-13.0|-46.0|-22.03807|-0.07128 +2016-07-01|-13.0|-47.0|-21.72659|-0.07872 +2016-07-01|-13.0|-48.0|-21.38387|-0.08622 +2016-07-01|-13.0|-49.0|-21.00982|-0.09375 +2016-07-01|-13.0|-50.0|-20.60441|-0.10125 +2016-07-01|-13.0|-51.0|-20.16775|-0.10867 +2016-07-01|-13.0|-52.0|-19.70004|-0.11598 +2016-07-01|-13.0|-53.0|-19.20162|-0.12312 +2016-07-01|-13.0|-54.0|-18.67294|-0.13006 +2016-07-01|-13.0|-55.0|-18.11459|-0.13673 +2016-07-01|-13.0|-56.0|-17.52732|-0.1431 +2016-07-01|-13.0|-57.0|-16.91199|-0.14913 +2016-07-01|-13.0|-58.0|-16.26965|-0.15478 +2016-07-01|-13.0|-59.0|-15.60148|-0.16 +2016-07-01|-13.0|-60.0|-14.90884|-0.16478 +2016-07-01|-13.0|-61.0|-14.19323|-0.16908 +2016-07-01|-13.0|-62.0|-13.45633|-0.17287 +2016-07-01|-13.0|-63.0|-12.69996|-0.17613 +2016-07-01|-13.0|-64.0|-11.92611|-0.17885 +2016-07-01|-13.0|-65.0|-11.1369|-0.18102 +2016-07-01|-13.0|-66.0|-10.33457|-0.18263 +2016-07-01|-13.0|-67.0|-9.52152|-0.18367 +2016-07-01|-13.0|-68.0|-8.70021|-0.18416 +2016-07-01|-13.0|-69.0|-7.87322|-0.18411 +2016-07-01|-13.0|-70.0|-7.04317|-0.18351 +2016-07-01|-13.0|-71.0|-6.21273|-0.18241 +2016-07-01|-13.0|-72.0|-5.38461|-0.18081 +2016-07-01|-13.0|-73.0|-4.56149|-0.17874 +2016-07-01|-13.0|-74.0|-3.74602|-0.17624 +2016-07-01|-13.0|-75.0|-2.9408|-0.17334 +2016-07-01|-13.0|-76.0|-2.14836|-0.17007 +2016-07-01|-13.0|-77.0|-1.37111|-0.16646 +2016-07-01|-13.0|-78.0|-0.61134|-0.16257 +2016-07-01|-13.0|-79.0|0.1288|-0.15842 +2016-07-01|-13.0|-80.0|0.84733|-0.15405 +2016-07-01|-13.0|-81.0|1.54244|-0.14952 +2016-07-01|-13.0|-82.0|2.21252|-0.14484 +2016-07-01|-13.0|-83.0|2.85616|-0.14006 +2016-07-01|-13.0|-84.0|3.47215|-0.13523 +2016-07-01|-13.0|-85.0|4.05949|-0.13036 +2016-07-01|-13.0|-86.0|4.6174|-0.12551 +2016-07-01|-13.0|-87.0|5.1453|-0.12069 +2016-07-01|-13.0|-88.0|5.64285|-0.11593 +2016-07-01|-13.0|-89.0|6.1099|-0.11128 +2016-07-01|-13.0|-90.0|6.54648|-0.10674 +2016-07-01|-13.0|-91.0|6.95286|-0.10235 +2016-07-01|-13.0|-92.0|7.32945|-0.09812 +2016-07-01|-13.0|-93.0|7.67687|-0.09407 +2016-07-01|-13.0|-94.0|7.99589|-0.09022 +2016-07-01|-13.0|-95.0|8.28743|-0.08659 +2016-07-01|-13.0|-96.0|8.55255|-0.08317 +2016-07-01|-13.0|-97.0|8.79245|-0.07998 +2016-07-01|-13.0|-98.0|9.00843|-0.07703 +2016-07-01|-13.0|-99.0|9.20189|-0.07432 +2016-07-01|-13.0|-100.0|9.37431|-0.07184 +2016-07-01|-13.0|-101.0|9.52722|-0.0696 +2016-07-01|-13.0|-102.0|9.66223|-0.06758 +2016-07-01|-13.0|-103.0|9.78095|-0.06577 +2016-07-01|-13.0|-104.0|9.88501|-0.06417 +2016-07-01|-13.0|-105.0|9.97603|-0.06276 +2016-07-01|-13.0|-106.0|10.05564|-0.06152 +2016-07-01|-13.0|-107.0|10.12537|-0.06043 +2016-07-01|-13.0|-108.0|10.18675|-0.05948 +2016-07-01|-13.0|-109.0|10.24122|-0.05864 +2016-07-01|-13.0|-110.0|10.29011|-0.05788 +2016-07-01|-13.0|-111.0|10.3347|-0.05719 +2016-07-01|-13.0|-112.0|10.37613|-0.05653 +2016-07-01|-13.0|-113.0|10.41542|-0.0559 +2016-07-01|-13.0|-114.0|10.45351|-0.05525 +2016-07-01|-13.0|-115.0|10.49115|-0.05459 +2016-07-01|-13.0|-116.0|10.52903|-0.05387 +2016-07-01|-13.0|-117.0|10.56765|-0.0531 +2016-07-01|-13.0|-118.0|10.60743|-0.05225 +2016-07-01|-13.0|-119.0|10.64865|-0.05131 +2016-07-01|-13.0|-120.0|10.69148|-0.05028 +2016-07-01|-13.0|-121.0|10.73596|-0.04915 +2016-07-01|-13.0|-122.0|10.78208|-0.04791 +2016-07-01|-13.0|-123.0|10.82969|-0.04657 +2016-07-01|-13.0|-124.0|10.8786|-0.04513 +2016-07-01|-13.0|-125.0|10.92855|-0.0436 +2016-07-01|-13.0|-126.0|10.97921|-0.04198 +2016-07-01|-13.0|-127.0|11.03023|-0.04029 +2016-07-01|-13.0|-128.0|11.08122|-0.03853 +2016-07-01|-13.0|-129.0|11.13178|-0.03671 +2016-07-01|-13.0|-130.0|11.18149|-0.03486 +2016-07-01|-13.0|-131.0|11.22996|-0.03299 +2016-07-01|-13.0|-132.0|11.27677|-0.0311 +2016-07-01|-13.0|-133.0|11.32156|-0.0292 +2016-07-01|-13.0|-134.0|11.36398|-0.02732 +2016-07-01|-13.0|-135.0|11.4037|-0.02545 +2016-07-01|-13.0|-136.0|11.44046|-0.02361 +2016-07-01|-13.0|-137.0|11.474|-0.0218 +2016-07-01|-13.0|-138.0|11.50413|-0.02003 +2016-07-01|-13.0|-139.0|11.5307|-0.01829 +2016-07-01|-13.0|-140.0|11.55361|-0.01658 +2016-07-01|-13.0|-141.0|11.57279|-0.01491 +2016-07-01|-13.0|-142.0|11.58823|-0.01327 +2016-07-01|-13.0|-143.0|11.59997|-0.01165 +2016-07-01|-13.0|-144.0|11.60809|-0.01005 +2016-07-01|-13.0|-145.0|11.61271|-0.00845 +2016-07-01|-13.0|-146.0|11.61399|-0.00685 +2016-07-01|-13.0|-147.0|11.61213|-0.00524 +2016-07-01|-13.0|-148.0|11.60738|-0.00361 +2016-07-01|-13.0|-149.0|11.6|-0.00195 +2016-07-01|-13.0|-150.0|11.5903|-2.6E-4 +2016-07-01|-13.0|-151.0|11.5786|0.00148 +2016-07-01|-13.0|-152.0|11.56525|0.00326 +2016-07-01|-13.0|-153.0|11.55062|0.00509 +2016-07-01|-13.0|-154.0|11.53506|0.00697 +2016-07-01|-13.0|-155.0|11.51897|0.00891 +2016-07-01|-13.0|-156.0|11.50272|0.01088 +2016-07-01|-13.0|-157.0|11.48667|0.0129 +2016-07-01|-13.0|-158.0|11.47118|0.01496 +2016-07-01|-13.0|-159.0|11.45657|0.01703 +2016-07-01|-13.0|-160.0|11.44315|0.01912 +2016-07-01|-13.0|-161.0|11.43116|0.02121 +2016-07-01|-13.0|-162.0|11.42082|0.02329 +2016-07-01|-13.0|-163.0|11.41229|0.02534 +2016-07-01|-13.0|-164.0|11.40566|0.02734 +2016-07-01|-13.0|-165.0|11.40098|0.02929 +2016-07-01|-13.0|-166.0|11.39819|0.03116 +2016-07-01|-13.0|-167.0|11.3972|0.03294 +2016-07-01|-13.0|-168.0|11.3978|0.03461 +2016-07-01|-13.0|-169.0|11.39974|0.03616 +2016-07-01|-13.0|-170.0|11.40266|0.03759 +2016-07-01|-13.0|-171.0|11.40616|0.03886 +2016-07-01|-13.0|-172.0|11.40973|0.03999 +2016-07-01|-13.0|-173.0|11.41282|0.04095 +2016-07-01|-13.0|-174.0|11.41482|0.04175 +2016-07-01|-13.0|-175.0|11.41506|0.04237 +2016-07-01|-13.0|-176.0|11.41284|0.04282 +2016-07-01|-13.0|-177.0|11.40743|0.04309 +2016-07-01|-13.0|-178.0|11.39807|0.04319 +2016-07-01|-13.0|-179.0|11.38403|0.04311 +2016-07-01|-14.0|0.0|-12.64329|0.17961 +2016-07-01|-14.0|1.0|-12.11197|0.18456 +2016-07-01|-14.0|2.0|-11.58129|0.18887 +2016-07-01|-14.0|3.0|-11.05309|0.19248 +2016-07-01|-14.0|4.0|-10.52927|0.19535 +2016-07-01|-14.0|5.0|-10.01176|0.19743 +2016-07-01|-14.0|6.0|-9.50259|0.19869 +2016-07-01|-14.0|7.0|-9.00381|0.19908 +2016-07-01|-14.0|8.0|-8.51749|0.19859 +2016-07-01|-14.0|9.0|-8.04573|0.19721 +2016-07-01|-14.0|10.0|-7.59064|0.19492 +2016-07-01|-14.0|11.0|-7.15431|0.19173 +2016-07-01|-14.0|12.0|-6.73881|0.18765 +2016-07-01|-14.0|13.0|-6.34615|0.18269 +2016-07-01|-14.0|14.0|-5.97831|0.17688 +2016-07-01|-14.0|15.0|-5.63717|0.17027 +2016-07-01|-14.0|16.0|-5.3245|0.1629 +2016-07-01|-14.0|17.0|-5.04196|0.15482 +2016-07-01|-14.0|18.0|-4.79106|0.14609 +2016-07-01|-14.0|19.0|-4.57314|0.1368 +2016-07-01|-14.0|20.0|-4.38936|0.12701 +2016-07-01|-14.0|21.0|-4.24065|0.11681 +2016-07-01|-14.0|22.0|-4.12773|0.1063 +2016-07-01|-14.0|23.0|-4.05105|0.09557 +2016-07-01|-14.0|24.0|-4.01081|0.08471 +2016-07-01|-14.0|25.0|-4.00691|0.07383 +2016-07-01|-14.0|26.0|-4.03899|0.06303 +2016-07-01|-14.0|27.0|-4.10638|0.05241 +2016-07-01|-14.0|28.0|-4.2081|0.04208 +2016-07-01|-14.0|29.0|-4.3429|0.03212 +2016-07-01|-14.0|30.0|-4.50922|0.02263 +2016-07-01|-14.0|31.0|-4.70525|0.01369 +2016-07-01|-14.0|32.0|-4.92888|0.00538 +2016-07-01|-14.0|33.0|-5.17781|-0.00222 +2016-07-01|-14.0|34.0|-5.44949|-0.00906 +2016-07-01|-14.0|35.0|-5.74121|-0.01509 +2016-07-01|-14.0|36.0|-6.05008|-0.02027 +2016-07-01|-14.0|37.0|-6.37311|-0.02456 +2016-07-01|-14.0|38.0|-6.70724|-0.02795 +2016-07-01|-14.0|39.0|-7.04935|-0.03043 +2016-07-01|-14.0|40.0|-7.39633|-0.032 +2016-07-01|-14.0|41.0|-7.74508|-0.03267 +2016-07-01|-14.0|42.0|-8.09261|-0.03247 +2016-07-01|-14.0|43.0|-8.436|-0.03142 +2016-07-01|-14.0|44.0|-8.7725|-0.02956 +2016-07-01|-14.0|45.0|-9.09951|-0.02694 +2016-07-01|-14.0|46.0|-9.41462|-0.0236 +2016-07-01|-14.0|47.0|-9.71566|-0.01961 +2016-07-01|-14.0|48.0|-10.00067|-0.01502 +2016-07-01|-14.0|49.0|-10.26795|-0.0099 +2016-07-01|-14.0|50.0|-10.51602|-0.00431 +2016-07-01|-14.0|51.0|-10.7437|0.00169 +2016-07-01|-14.0|52.0|-10.95004|0.00802 +2016-07-01|-14.0|53.0|-11.13432|0.01463 +2016-07-01|-14.0|54.0|-11.29607|0.02145 +2016-07-01|-14.0|55.0|-11.43505|0.02841 +2016-07-01|-14.0|56.0|-11.55121|0.03546 +2016-07-01|-14.0|57.0|-11.64467|0.04253 +2016-07-01|-14.0|58.0|-11.71573|0.04958 +2016-07-01|-14.0|59.0|-11.76482|0.05655 +2016-07-01|-14.0|60.0|-11.79245|0.0634 +2016-07-01|-14.0|61.0|-11.79924|0.07009 +2016-07-01|-14.0|62.0|-11.78585|0.07657 +2016-07-01|-14.0|63.0|-11.75297|0.08282 +2016-07-01|-14.0|64.0|-11.70129|0.08881 +2016-07-01|-14.0|65.0|-11.63148|0.0945 +2016-07-01|-14.0|66.0|-11.54418|0.09989 +2016-07-01|-14.0|67.0|-11.43998|0.10495 +2016-07-01|-14.0|68.0|-11.31938|0.10967 +2016-07-01|-14.0|69.0|-11.18283|0.11403 +2016-07-01|-14.0|70.0|-11.0307|0.11804 +2016-07-01|-14.0|71.0|-10.86326|0.12169 +2016-07-01|-14.0|72.0|-10.68073|0.12496 +2016-07-01|-14.0|73.0|-10.48327|0.12786 +2016-07-01|-14.0|74.0|-10.27098|0.13038 +2016-07-01|-14.0|75.0|-10.04392|0.13252 +2016-07-01|-14.0|76.0|-9.80217|0.13428 +2016-07-01|-14.0|77.0|-9.54579|0.13566 +2016-07-01|-14.0|78.0|-9.27489|0.13665 +2016-07-01|-14.0|79.0|-8.98964|0.13724 +2016-07-01|-14.0|80.0|-8.69028|0.13743 +2016-07-01|-14.0|81.0|-8.37719|0.13721 +2016-07-01|-14.0|82.0|-8.05085|0.13658 +2016-07-01|-14.0|83.0|-7.71191|0.13553 +2016-07-01|-14.0|84.0|-7.36118|0.13404 +2016-07-01|-14.0|85.0|-6.99965|0.13211 +2016-07-01|-14.0|86.0|-6.6285|0.12974 +2016-07-01|-14.0|87.0|-6.24907|0.12691 +2016-07-01|-14.0|88.0|-5.8629|0.12362 +2016-07-01|-14.0|89.0|-5.47169|0.11986 +2016-07-01|-14.0|90.0|-5.0773|0.11565 +2016-07-01|-14.0|91.0|-4.68168|0.11098 +2016-07-01|-14.0|92.0|-4.28692|0.10586 +2016-07-01|-14.0|93.0|-3.89514|0.10031 +2016-07-01|-14.0|94.0|-3.5085|0.09433 +2016-07-01|-14.0|95.0|-3.12911|0.08796 +2016-07-01|-14.0|96.0|-2.75908|0.08121 +2016-07-01|-14.0|97.0|-2.40037|0.07412 +2016-07-01|-14.0|98.0|-2.05481|0.06673 +2016-07-01|-14.0|99.0|-1.72409|0.05907 +2016-07-01|-14.0|100.0|-1.40963|0.05118 +2016-07-01|-14.0|101.0|-1.11264|0.04312 +2016-07-01|-14.0|102.0|-0.83408|0.03493 +2016-07-01|-14.0|103.0|-0.57459|0.02666 +2016-07-01|-14.0|104.0|-0.33452|0.01836 +2016-07-01|-14.0|105.0|-0.11395|0.01008 +2016-07-01|-14.0|106.0|0.08739|0.00188 +2016-07-01|-14.0|107.0|0.27003|-0.0062 +2016-07-01|-14.0|108.0|0.43479|-0.01411 +2016-07-01|-14.0|109.0|0.58276|-0.02179 +2016-07-01|-14.0|110.0|0.71526|-0.02921 +2016-07-01|-14.0|111.0|0.83381|-0.03633 +2016-07-01|-14.0|112.0|0.94013|-0.0431 +2016-07-01|-14.0|113.0|1.03605|-0.04949 +2016-07-01|-14.0|114.0|1.12354|-0.05547 +2016-07-01|-14.0|115.0|1.2046|-0.06101 +2016-07-01|-14.0|116.0|1.28128|-0.0661 +2016-07-01|-14.0|117.0|1.3556|-0.07072 +2016-07-01|-14.0|118.0|1.42954|-0.07484 +2016-07-01|-14.0|119.0|1.50499|-0.07846 +2016-07-01|-14.0|120.0|1.58373|-0.08158 +2016-07-01|-14.0|121.0|1.66737|-0.0842 +2016-07-01|-14.0|122.0|1.75739|-0.08631 +2016-07-01|-14.0|123.0|1.85504|-0.08793 +2016-07-01|-14.0|124.0|1.96138|-0.08906 +2016-07-01|-14.0|125.0|2.07725|-0.08971 +2016-07-01|-14.0|126.0|2.20326|-0.08992 +2016-07-01|-14.0|127.0|2.33982|-0.08968 +2016-07-01|-14.0|128.0|2.4871|-0.08903 +2016-07-01|-14.0|129.0|2.64508|-0.08799 +2016-07-01|-14.0|130.0|2.81355|-0.08657 +2016-07-01|-14.0|131.0|2.99212|-0.08482 +2016-07-01|-14.0|132.0|3.18024|-0.08276 +2016-07-01|-14.0|133.0|3.37726|-0.0804 +2016-07-01|-14.0|134.0|3.5824|-0.07779 +2016-07-01|-14.0|135.0|3.79483|-0.07496 +2016-07-01|-14.0|136.0|4.01364|-0.07192 +2016-07-01|-14.0|137.0|4.23793|-0.06871 +2016-07-01|-14.0|138.0|4.46677|-0.06535 +2016-07-01|-14.0|139.0|4.69926|-0.06187 +2016-07-01|-14.0|140.0|4.93454|-0.05829 +2016-07-01|-14.0|141.0|5.17179|-0.05464 +2016-07-01|-14.0|142.0|5.41028|-0.05094 +2016-07-01|-14.0|143.0|5.64932|-0.0472 +2016-07-01|-14.0|144.0|5.8883|-0.04345 +2016-07-01|-14.0|145.0|6.12669|-0.0397 +2016-07-01|-14.0|146.0|6.36404|-0.03596 +2016-07-01|-14.0|147.0|6.59994|-0.03225 +2016-07-01|-14.0|148.0|6.83406|-0.02858 +2016-07-01|-14.0|149.0|7.06609|-0.02496 +2016-07-01|-14.0|150.0|7.29577|-0.0214 +2016-07-01|-14.0|151.0|7.52287|-0.0179 +2016-07-01|-14.0|152.0|7.74714|-0.01448 +2016-07-01|-14.0|153.0|7.96836|-0.01113 +2016-07-01|-14.0|154.0|8.18628|-0.00785 +2016-07-01|-14.0|155.0|8.40063|-0.00466 +2016-07-01|-14.0|156.0|8.61112|-0.00156 +2016-07-01|-14.0|157.0|8.81743|0.00146 +2016-07-01|-14.0|158.0|9.01918|0.00439 +2016-07-01|-14.0|159.0|9.21599|0.00724 +2016-07-01|-14.0|160.0|9.40744|0.00999 +2016-07-01|-14.0|161.0|9.59308|0.01265 +2016-07-01|-14.0|162.0|9.77243|0.01522 +2016-07-01|-14.0|163.0|9.94503|0.01769 +2016-07-01|-14.0|164.0|10.11041|0.02007 +2016-07-01|-14.0|165.0|10.26811|0.02236 +2016-07-01|-14.0|166.0|10.4177|0.02455 +2016-07-01|-14.0|167.0|10.55879|0.02664 +2016-07-01|-14.0|168.0|10.69104|0.02863 +2016-07-01|-14.0|169.0|10.81416|0.03051 +2016-07-01|-14.0|170.0|10.92797|0.03229 +2016-07-01|-14.0|171.0|11.03232|0.03395 +2016-07-01|-14.0|172.0|11.12717|0.0355 +2016-07-01|-14.0|173.0|11.21258|0.03692 +2016-07-01|-14.0|174.0|11.2887|0.03822 +2016-07-01|-14.0|175.0|11.35574|0.03938 +2016-07-01|-14.0|176.0|11.41404|0.0404 +2016-07-01|-14.0|177.0|11.464|0.04128 +2016-07-01|-14.0|178.0|11.50611|0.04201 +2016-07-01|-14.0|179.0|11.54093|0.04258 +2016-07-01|-14.0|-1.0|-13.17352|0.17408 +2016-07-01|-14.0|-2.0|-13.70099|0.16804 +2016-07-01|-14.0|-3.0|-14.22413|0.16155 +2016-07-01|-14.0|-4.0|-14.74146|0.15469 +2016-07-01|-14.0|-5.0|-15.25161|0.14752 +2016-07-01|-14.0|-6.0|-15.75331|0.14013 +2016-07-01|-14.0|-7.0|-16.24539|0.13258 +2016-07-01|-14.0|-8.0|-16.7268|0.12494 +2016-07-01|-14.0|-9.0|-17.19657|0.11729 +2016-07-01|-14.0|-10.0|-17.65386|0.10969 +2016-07-01|-14.0|-11.0|-18.09791|0.1022 +2016-07-01|-14.0|-12.0|-18.52807|0.09488 +2016-07-01|-14.0|-13.0|-18.94377|0.08778 +2016-07-01|-14.0|-14.0|-19.34451|0.08093 +2016-07-01|-14.0|-15.0|-19.72987|0.07438 +2016-07-01|-14.0|-16.0|-20.0995|0.06815 +2016-07-01|-14.0|-17.0|-20.45308|0.06225 +2016-07-01|-14.0|-18.0|-20.79035|0.05671 +2016-07-01|-14.0|-19.0|-21.11106|0.05151 +2016-07-01|-14.0|-20.0|-21.41497|0.04664 +2016-07-01|-14.0|-21.0|-21.70186|0.0421 +2016-07-01|-14.0|-22.0|-21.97149|0.03784 +2016-07-01|-14.0|-23.0|-22.22361|0.03386 +2016-07-01|-14.0|-24.0|-22.45794|0.03009 +2016-07-01|-14.0|-25.0|-22.67417|0.0265 +2016-07-01|-14.0|-26.0|-22.87193|0.02305 +2016-07-01|-14.0|-27.0|-23.05084|0.01968 +2016-07-01|-14.0|-28.0|-23.21046|0.01634 +2016-07-01|-14.0|-29.0|-23.35029|0.01299 +2016-07-01|-14.0|-30.0|-23.4698|0.00956 +2016-07-01|-14.0|-31.0|-23.5684|0.00602 +2016-07-01|-14.0|-32.0|-23.64549|0.00233 +2016-07-01|-14.0|-33.0|-23.7004|-0.00156 +2016-07-01|-14.0|-34.0|-23.73246|-0.00569 +2016-07-01|-14.0|-35.0|-23.74096|-0.01007 +2016-07-01|-14.0|-36.0|-23.72518|-0.01473 +2016-07-01|-14.0|-37.0|-23.68441|-0.01969 +2016-07-01|-14.0|-38.0|-23.61791|-0.02495 +2016-07-01|-14.0|-39.0|-23.52499|-0.03051 +2016-07-01|-14.0|-40.0|-23.40494|-0.03637 +2016-07-01|-14.0|-41.0|-23.25711|-0.04252 +2016-07-01|-14.0|-42.0|-23.08088|-0.04893 +2016-07-01|-14.0|-43.0|-22.87565|-0.0556 +2016-07-01|-14.0|-44.0|-22.6409|-0.06248 +2016-07-01|-14.0|-45.0|-22.37617|-0.06955 +2016-07-01|-14.0|-46.0|-22.08104|-0.07676 +2016-07-01|-14.0|-47.0|-21.75521|-0.08409 +2016-07-01|-14.0|-48.0|-21.39842|-0.09148 +2016-07-01|-14.0|-49.0|-21.01054|-0.09889 +2016-07-01|-14.0|-50.0|-20.59152|-0.10628 +2016-07-01|-14.0|-51.0|-20.14143|-0.11359 +2016-07-01|-14.0|-52.0|-19.66044|-0.12078 +2016-07-01|-14.0|-53.0|-19.14886|-0.12781 +2016-07-01|-14.0|-54.0|-18.60714|-0.13461 +2016-07-01|-14.0|-55.0|-18.03584|-0.14116 +2016-07-01|-14.0|-56.0|-17.43569|-0.1474 +2016-07-01|-14.0|-57.0|-16.80758|-0.15328 +2016-07-01|-14.0|-58.0|-16.15254|-0.15878 +2016-07-01|-14.0|-59.0|-15.47177|-0.16385 +2016-07-01|-14.0|-60.0|-14.76665|-0.16846 +2016-07-01|-14.0|-61.0|-14.03871|-0.17258 +2016-07-01|-14.0|-62.0|-13.28964|-0.17618 +2016-07-01|-14.0|-63.0|-12.52132|-0.17924 +2016-07-01|-14.0|-64.0|-11.73576|-0.18175 +2016-07-01|-14.0|-65.0|-10.93512|-0.1837 +2016-07-01|-14.0|-66.0|-10.12172|-0.18508 +2016-07-01|-14.0|-67.0|-9.29797|-0.18589 +2016-07-01|-14.0|-68.0|-8.46641|-0.18613 +2016-07-01|-14.0|-69.0|-7.62965|-0.18582 +2016-07-01|-14.0|-70.0|-6.79037|-0.18496 +2016-07-01|-14.0|-71.0|-5.95128|-0.18359 +2016-07-01|-14.0|-72.0|-5.11513|-0.18172 +2016-07-01|-14.0|-73.0|-4.28463|-0.17939 +2016-07-01|-14.0|-74.0|-3.46247|-0.17662 +2016-07-01|-14.0|-75.0|-2.65127|-0.17344 +2016-07-01|-14.0|-76.0|-1.85358|-0.16991 +2016-07-01|-14.0|-77.0|-1.07182|-0.16605 +2016-07-01|-14.0|-78.0|-0.30828|-0.1619 +2016-07-01|-14.0|-79.0|0.4349|-0.15751 +2016-07-01|-14.0|-80.0|1.15575|-0.15291 +2016-07-01|-14.0|-81.0|1.85248|-0.14816 +2016-07-01|-14.0|-82.0|2.5235|-0.14328 +2016-07-01|-14.0|-83.0|3.16742|-0.13831 +2016-07-01|-14.0|-84.0|3.78309|-0.1333 +2016-07-01|-14.0|-85.0|4.36954|-0.12827 +2016-07-01|-14.0|-86.0|4.92603|-0.12327 +2016-07-01|-14.0|-87.0|5.45205|-0.11832 +2016-07-01|-14.0|-88.0|5.94729|-0.11346 +2016-07-01|-14.0|-89.0|6.41165|-0.10871 +2016-07-01|-14.0|-90.0|6.84523|-0.10409 +2016-07-01|-14.0|-91.0|7.24833|-0.09964 +2016-07-01|-14.0|-92.0|7.62144|-0.09536 +2016-07-01|-14.0|-93.0|7.96522|-0.09128 +2016-07-01|-14.0|-94.0|8.28048|-0.08741 +2016-07-01|-14.0|-95.0|8.56821|-0.08377 +2016-07-01|-14.0|-96.0|8.82951|-0.08036 +2016-07-01|-14.0|-97.0|9.06561|-0.0772 +2016-07-01|-14.0|-98.0|9.27787|-0.07428 +2016-07-01|-14.0|-99.0|9.46772|-0.07161 +2016-07-01|-14.0|-100.0|9.63667|-0.06918 +2016-07-01|-14.0|-101.0|9.78629|-0.06699 +2016-07-01|-14.0|-102.0|9.91821|-0.06504 +2016-07-01|-14.0|-103.0|10.03406|-0.06331 +2016-07-01|-14.0|-104.0|10.13549|-0.06179 +2016-07-01|-14.0|-105.0|10.22414|-0.06046 +2016-07-01|-14.0|-106.0|10.30162|-0.05931 +2016-07-01|-14.0|-107.0|10.3695|-0.05831 +2016-07-01|-14.0|-108.0|10.42928|-0.05745 +2016-07-01|-14.0|-109.0|10.4824|-0.0567 +2016-07-01|-14.0|-110.0|10.5302|-0.05604 +2016-07-01|-14.0|-111.0|10.57393|-0.05544 +2016-07-01|-14.0|-112.0|10.61471|-0.05489 +2016-07-01|-14.0|-113.0|10.65358|-0.05434 +2016-07-01|-14.0|-114.0|10.69141|-0.0538 +2016-07-01|-14.0|-115.0|10.72898|-0.05322 +2016-07-01|-14.0|-116.0|10.76693|-0.0526 +2016-07-01|-14.0|-117.0|10.80575|-0.05191 +2016-07-01|-14.0|-118.0|10.84585|-0.05114 +2016-07-01|-14.0|-119.0|10.88748|-0.05029 +2016-07-01|-14.0|-120.0|10.93079|-0.04933 +2016-07-01|-14.0|-121.0|10.97582|-0.04827 +2016-07-01|-14.0|-122.0|11.02254|-0.04711 +2016-07-01|-14.0|-123.0|11.07079|-0.04583 +2016-07-01|-14.0|-124.0|11.12038|-0.04446 +2016-07-01|-14.0|-125.0|11.17102|-0.04298 +2016-07-01|-14.0|-126.0|11.2224|-0.04142 +2016-07-01|-14.0|-127.0|11.27415|-0.03977 +2016-07-01|-14.0|-128.0|11.32588|-0.03805 +2016-07-01|-14.0|-129.0|11.3772|-0.03628 +2016-07-01|-14.0|-130.0|11.42768|-0.03447 +2016-07-01|-14.0|-131.0|11.47693|-0.03262 +2016-07-01|-14.0|-132.0|11.52454|-0.03075 +2016-07-01|-14.0|-133.0|11.57015|-0.02888 +2016-07-01|-14.0|-134.0|11.6134|-0.02701 +2016-07-01|-14.0|-135.0|11.65398|-0.02515 +2016-07-01|-14.0|-136.0|11.6916|-0.02332 +2016-07-01|-14.0|-137.0|11.72602|-0.02151 +2016-07-01|-14.0|-138.0|11.75705|-0.01974 +2016-07-01|-14.0|-139.0|11.78453|-0.01799 +2016-07-01|-14.0|-140.0|11.80834|-0.01628 +2016-07-01|-14.0|-141.0|11.82843|-0.0146 +2016-07-01|-14.0|-142.0|11.84476|-0.01295 +2016-07-01|-14.0|-143.0|11.85737|-0.01132 +2016-07-01|-14.0|-144.0|11.86633|-0.0097 +2016-07-01|-14.0|-145.0|11.87174|-0.00809 +2016-07-01|-14.0|-146.0|11.87376|-0.00647 +2016-07-01|-14.0|-147.0|11.87257|-0.00485 +2016-07-01|-14.0|-148.0|11.86841|-0.00321 +2016-07-01|-14.0|-149.0|11.86152|-0.00154 +2016-07-01|-14.0|-150.0|11.85219|1.7E-4 +2016-07-01|-14.0|-151.0|11.84074|0.00191 +2016-07-01|-14.0|-152.0|11.8275|0.00369 +2016-07-01|-14.0|-153.0|11.81282|0.00553 +2016-07-01|-14.0|-154.0|11.79706|0.00741 +2016-07-01|-14.0|-155.0|11.78058|0.00934 +2016-07-01|-14.0|-156.0|11.76377|0.01131 +2016-07-01|-14.0|-157.0|11.74697|0.01332 +2016-07-01|-14.0|-158.0|11.73053|0.01536 +2016-07-01|-14.0|-159.0|11.71478|0.01742 +2016-07-01|-14.0|-160.0|11.70001|0.0195 +2016-07-01|-14.0|-161.0|11.68648|0.02157 +2016-07-01|-14.0|-162.0|11.6744|0.02362 +2016-07-01|-14.0|-163.0|11.66395|0.02565 +2016-07-01|-14.0|-164.0|11.65522|0.02764 +2016-07-01|-14.0|-165.0|11.64826|0.02956 +2016-07-01|-14.0|-166.0|11.64304|0.03141 +2016-07-01|-14.0|-167.0|11.63947|0.03316 +2016-07-01|-14.0|-168.0|11.63737|0.03482 +2016-07-01|-14.0|-169.0|11.6365|0.03635 +2016-07-01|-14.0|-170.0|11.63652|0.03776 +2016-07-01|-14.0|-171.0|11.63704|0.03902 +2016-07-01|-14.0|-172.0|11.63759|0.04013 +2016-07-01|-14.0|-173.0|11.63764|0.04108 +2016-07-01|-14.0|-174.0|11.63658|0.04187 +2016-07-01|-14.0|-175.0|11.63379|0.04249 +2016-07-01|-14.0|-176.0|11.62857|0.04293 +2016-07-01|-14.0|-177.0|11.62022|0.04321 +2016-07-01|-14.0|-178.0|11.608|0.04331 +2016-07-01|-14.0|-179.0|11.59119|0.04323 +2016-07-01|-15.0|0.0|-13.34125|0.18132 +2016-07-01|-15.0|1.0|-12.80261|0.18662 +2016-07-01|-15.0|2.0|-12.26398|0.19122 +2016-07-01|-15.0|3.0|-11.72739|0.19505 +2016-07-01|-15.0|4.0|-11.19498|0.19805 +2016-07-01|-15.0|5.0|-10.66892|0.20018 +2016-07-01|-15.0|6.0|-10.15147|0.2014 +2016-07-01|-15.0|7.0|-9.64489|0.20166 +2016-07-01|-15.0|8.0|-9.1515|0.20096 +2016-07-01|-15.0|9.0|-8.67359|0.19928 +2016-07-01|-15.0|10.0|-8.21348|0.19661 +2016-07-01|-15.0|11.0|-7.77342|0.19296 +2016-07-01|-15.0|12.0|-7.35564|0.18835 +2016-07-01|-15.0|13.0|-6.96228|0.18281 +2016-07-01|-15.0|14.0|-6.59541|0.17637 +2016-07-01|-15.0|15.0|-6.25697|0.16908 +2016-07-01|-15.0|16.0|-5.94878|0.161 +2016-07-01|-15.0|17.0|-5.6725|0.15221 +2016-07-01|-15.0|18.0|-5.42962|0.14276 +2016-07-01|-15.0|19.0|-5.22141|0.13276 +2016-07-01|-15.0|20.0|-5.04894|0.12228 +2016-07-01|-15.0|21.0|-4.91304|0.11144 +2016-07-01|-15.0|22.0|-4.81428|0.10032 +2016-07-01|-15.0|23.0|-4.75295|0.08903 +2016-07-01|-15.0|24.0|-4.72907|0.07768 +2016-07-01|-15.0|25.0|-4.74237|0.06638 +2016-07-01|-15.0|26.0|-4.79226|0.05524 +2016-07-01|-15.0|27.0|-4.87787|0.04435 +2016-07-01|-15.0|28.0|-4.99802|0.03383 +2016-07-01|-15.0|29.0|-5.15125|0.02377 +2016-07-01|-15.0|30.0|-5.33579|0.01425 +2016-07-01|-15.0|31.0|-5.54962|0.00536 +2016-07-01|-15.0|32.0|-5.7905|-0.00283 +2016-07-01|-15.0|33.0|-6.05591|-0.01024 +2016-07-01|-15.0|34.0|-6.34319|-0.01683 +2016-07-01|-15.0|35.0|-6.64947|-0.02256 +2016-07-01|-15.0|36.0|-6.97177|-0.02739 +2016-07-01|-15.0|37.0|-7.30701|-0.03129 +2016-07-01|-15.0|38.0|-7.65206|-0.03426 +2016-07-01|-15.0|39.0|-8.00374|-0.03629 +2016-07-01|-15.0|40.0|-8.35892|-0.0374 +2016-07-01|-15.0|41.0|-8.7145|-0.0376 +2016-07-01|-15.0|42.0|-9.06749|-0.03692 +2016-07-01|-15.0|43.0|-9.41499|-0.0354 +2016-07-01|-15.0|44.0|-9.75427|-0.03308 +2016-07-01|-15.0|45.0|-10.08279|-0.03 +2016-07-01|-15.0|46.0|-10.3982|-0.02622 +2016-07-01|-15.0|47.0|-10.69836|-0.02181 +2016-07-01|-15.0|48.0|-10.98138|-0.01681 +2016-07-01|-15.0|49.0|-11.24562|-0.0113 +2016-07-01|-15.0|50.0|-11.48968|-0.00533 +2016-07-01|-15.0|51.0|-11.71241|0.00102 +2016-07-01|-15.0|52.0|-11.91292|0.00769 +2016-07-01|-15.0|53.0|-12.09055|0.01462 +2016-07-01|-15.0|54.0|-12.24489|0.02175 +2016-07-01|-15.0|55.0|-12.37572|0.02901 +2016-07-01|-15.0|56.0|-12.48303|0.03634 +2016-07-01|-15.0|57.0|-12.56699|0.04369 +2016-07-01|-15.0|58.0|-12.62792|0.05101 +2016-07-01|-15.0|59.0|-12.66626|0.05824 +2016-07-01|-15.0|60.0|-12.68256|0.06535 +2016-07-01|-15.0|61.0|-12.67746|0.07229 +2016-07-01|-15.0|62.0|-12.65163|0.07903 +2016-07-01|-15.0|63.0|-12.60578|0.08552 +2016-07-01|-15.0|64.0|-12.54062|0.09175 +2016-07-01|-15.0|65.0|-12.45683|0.09769 +2016-07-01|-15.0|66.0|-12.35508|0.10331 +2016-07-01|-15.0|67.0|-12.23596|0.1086 +2016-07-01|-15.0|68.0|-12.10001|0.11355 +2016-07-01|-15.0|69.0|-11.94768|0.11814 +2016-07-01|-15.0|70.0|-11.77938|0.12236 +2016-07-01|-15.0|71.0|-11.5954|0.1262 +2016-07-01|-15.0|72.0|-11.396|0.12967 +2016-07-01|-15.0|73.0|-11.18134|0.13274 +2016-07-01|-15.0|74.0|-10.95158|0.13543 +2016-07-01|-15.0|75.0|-10.7068|0.13772 +2016-07-01|-15.0|76.0|-10.4471|0.13961 +2016-07-01|-15.0|77.0|-10.1726|0.14109 +2016-07-01|-15.0|78.0|-9.88342|0.14217 +2016-07-01|-15.0|79.0|-9.57977|0.14283 +2016-07-01|-15.0|80.0|-9.26194|0.14306 +2016-07-01|-15.0|81.0|-8.93031|0.14287 +2016-07-01|-15.0|82.0|-8.58543|0.14224 +2016-07-01|-15.0|83.0|-8.22796|0.14115 +2016-07-01|-15.0|84.0|-7.85874|0.13962 +2016-07-01|-15.0|85.0|-7.4788|0.13762 +2016-07-01|-15.0|86.0|-7.08934|0.13515 +2016-07-01|-15.0|87.0|-6.69173|0.1322 +2016-07-01|-15.0|88.0|-6.28755|0.12878 +2016-07-01|-15.0|89.0|-5.8785|0.12487 +2016-07-01|-15.0|90.0|-5.46647|0.12049 +2016-07-01|-15.0|91.0|-5.05343|0.11564 +2016-07-01|-15.0|92.0|-4.64148|0.11033 +2016-07-01|-15.0|93.0|-4.23276|0.10457 +2016-07-01|-15.0|94.0|-3.82942|0.09839 +2016-07-01|-15.0|95.0|-3.43362|0.09181 +2016-07-01|-15.0|96.0|-3.04742|0.08485 +2016-07-01|-15.0|97.0|-2.67281|0.07756 +2016-07-01|-15.0|98.0|-2.31163|0.06996 +2016-07-01|-15.0|99.0|-1.96552|0.06211 +2016-07-01|-15.0|100.0|-1.63594|0.05404 +2016-07-01|-15.0|101.0|-1.32409|0.04581 +2016-07-01|-15.0|102.0|-1.03088|0.03746 +2016-07-01|-15.0|103.0|-0.75698|0.02905 +2016-07-01|-15.0|104.0|-0.50273|0.02062 +2016-07-01|-15.0|105.0|-0.26818|0.01224 +2016-07-01|-15.0|106.0|-0.05308|0.00394 +2016-07-01|-15.0|107.0|0.14311|-0.00421 +2016-07-01|-15.0|108.0|0.32122|-0.01218 +2016-07-01|-15.0|109.0|0.48231|-0.01991 +2016-07-01|-15.0|110.0|0.62771|-0.02736 +2016-07-01|-15.0|111.0|0.75893|-0.03449 +2016-07-01|-15.0|112.0|0.87767|-0.04126 +2016-07-01|-15.0|113.0|0.98576|-0.04765 +2016-07-01|-15.0|114.0|1.08512|-0.05362 +2016-07-01|-15.0|115.0|1.17776|-0.05914 +2016-07-01|-15.0|116.0|1.26569|-0.06421 +2016-07-01|-15.0|117.0|1.35092|-0.06879 +2016-07-01|-15.0|118.0|1.4354|-0.07289 +2016-07-01|-15.0|119.0|1.52101|-0.07648 +2016-07-01|-15.0|120.0|1.6095|-0.07957 +2016-07-01|-15.0|121.0|1.70249|-0.08215 +2016-07-01|-15.0|122.0|1.80142|-0.08424 +2016-07-01|-15.0|123.0|1.90754|-0.08584 +2016-07-01|-15.0|124.0|2.02191|-0.08695 +2016-07-01|-15.0|125.0|2.14536|-0.0876 +2016-07-01|-15.0|126.0|2.27853|-0.08779 +2016-07-01|-15.0|127.0|2.42181|-0.08756 +2016-07-01|-15.0|128.0|2.5754|-0.08691 +2016-07-01|-15.0|129.0|2.73929|-0.08588 +2016-07-01|-15.0|130.0|2.91329|-0.08448 +2016-07-01|-15.0|131.0|3.09703|-0.08275 +2016-07-01|-15.0|132.0|3.28999|-0.08071 +2016-07-01|-15.0|133.0|3.49154|-0.07839 +2016-07-01|-15.0|134.0|3.70094|-0.07582 +2016-07-01|-15.0|135.0|3.91736|-0.07302 +2016-07-01|-15.0|136.0|4.13995|-0.07002 +2016-07-01|-15.0|137.0|4.36781|-0.06686 +2016-07-01|-15.0|138.0|4.60004|-0.06355 +2016-07-01|-15.0|139.0|4.83577|-0.06012 +2016-07-01|-15.0|140.0|5.07416|-0.05659 +2016-07-01|-15.0|141.0|5.31441|-0.05299 +2016-07-01|-15.0|142.0|5.55579|-0.04934 +2016-07-01|-15.0|143.0|5.79763|-0.04565 +2016-07-01|-15.0|144.0|6.03933|-0.04195 +2016-07-01|-15.0|145.0|6.28037|-0.03825 +2016-07-01|-15.0|146.0|6.52029|-0.03457 +2016-07-01|-15.0|147.0|6.75869|-0.03091 +2016-07-01|-15.0|148.0|6.99523|-0.02729 +2016-07-01|-15.0|149.0|7.22962|-0.02372 +2016-07-01|-15.0|150.0|7.46157|-0.02021 +2016-07-01|-15.0|151.0|7.69086|-0.01676 +2016-07-01|-15.0|152.0|7.91723|-0.01337 +2016-07-01|-15.0|153.0|8.14046|-0.01007 +2016-07-01|-15.0|154.0|8.36029|-0.00684 +2016-07-01|-15.0|155.0|8.57646|-0.00369 +2016-07-01|-15.0|156.0|8.78867|-6.3E-4 +2016-07-01|-15.0|157.0|8.9966|0.00234 +2016-07-01|-15.0|158.0|9.19989|0.00523 +2016-07-01|-15.0|159.0|9.39815|0.00803 +2016-07-01|-15.0|160.0|9.59097|0.01074 +2016-07-01|-15.0|161.0|9.77791|0.01336 +2016-07-01|-15.0|162.0|9.95851|0.01589 +2016-07-01|-15.0|163.0|10.13232|0.01832 +2016-07-01|-15.0|164.0|10.29889|0.02066 +2016-07-01|-15.0|165.0|10.45776|0.02291 +2016-07-01|-15.0|166.0|10.60854|0.02506 +2016-07-01|-15.0|167.0|10.75084|0.02712 +2016-07-01|-15.0|168.0|10.88435|0.02907 +2016-07-01|-15.0|169.0|11.00881|0.03091 +2016-07-01|-15.0|170.0|11.12401|0.03266 +2016-07-01|-15.0|171.0|11.22987|0.03428 +2016-07-01|-15.0|172.0|11.32633|0.0358 +2016-07-01|-15.0|173.0|11.41347|0.03719 +2016-07-01|-15.0|174.0|11.49144|0.03846 +2016-07-01|-15.0|175.0|11.56048|0.03959 +2016-07-01|-15.0|176.0|11.6209|0.04059 +2016-07-01|-15.0|177.0|11.67313|0.04145 +2016-07-01|-15.0|178.0|11.71764|0.04215 +2016-07-01|-15.0|179.0|11.75499|0.04271 +2016-07-01|-15.0|-1.0|-13.87794|0.17538 +2016-07-01|-15.0|-2.0|-14.41084|0.16888 +2016-07-01|-15.0|-3.0|-14.93819|0.16189 +2016-07-01|-15.0|-4.0|-15.45837|0.1545 +2016-07-01|-15.0|-5.0|-15.96988|0.14678 +2016-07-01|-15.0|-6.0|-16.47134|0.13881 +2016-07-01|-15.0|-7.0|-16.96151|0.13069 +2016-07-01|-15.0|-8.0|-17.43926|0.12248 +2016-07-01|-15.0|-9.0|-17.90362|0.11427 +2016-07-01|-15.0|-10.0|-18.35372|0.10613 +2016-07-01|-15.0|-11.0|-18.78883|0.09811 +2016-07-01|-15.0|-12.0|-19.20832|0.0903 +2016-07-01|-15.0|-13.0|-19.61168|0.08273 +2016-07-01|-15.0|-14.0|-19.9985|0.07546 +2016-07-01|-15.0|-15.0|-20.36845|0.06852 +2016-07-01|-15.0|-16.0|-20.72128|0.06193 +2016-07-01|-15.0|-17.0|-21.05678|0.05573 +2016-07-01|-15.0|-18.0|-21.37483|0.04992 +2016-07-01|-15.0|-19.0|-21.6753|0.04449 +2016-07-01|-15.0|-20.0|-21.9581|0.03943 +2016-07-01|-15.0|-21.0|-22.22316|0.03474 +2016-07-01|-15.0|-22.0|-22.47036|0.03037 +2016-07-01|-15.0|-23.0|-22.69961|0.0263 +2016-07-01|-15.0|-24.0|-22.91076|0.02249 +2016-07-01|-15.0|-25.0|-23.10362|0.01889 +2016-07-01|-15.0|-26.0|-23.27797|0.01545 +2016-07-01|-15.0|-27.0|-23.43352|0.01211 +2016-07-01|-15.0|-28.0|-23.56994|0.00883 +2016-07-01|-15.0|-29.0|-23.68683|0.00555 +2016-07-01|-15.0|-30.0|-23.78374|0.00222 +2016-07-01|-15.0|-31.0|-23.86017|-0.00121 +2016-07-01|-15.0|-32.0|-23.91555|-0.00479 +2016-07-01|-15.0|-33.0|-23.94929|-0.00856 +2016-07-01|-15.0|-34.0|-23.96072|-0.01255 +2016-07-01|-15.0|-35.0|-23.94919|-0.0168 +2016-07-01|-15.0|-36.0|-23.91397|-0.02133 +2016-07-01|-15.0|-37.0|-23.85436|-0.02614 +2016-07-01|-15.0|-38.0|-23.76963|-0.03126 +2016-07-01|-15.0|-39.0|-23.65905|-0.03669 +2016-07-01|-15.0|-40.0|-23.52192|-0.04242 +2016-07-01|-15.0|-41.0|-23.35754|-0.04843 +2016-07-01|-15.0|-42.0|-23.16525|-0.05472 +2016-07-01|-15.0|-43.0|-22.94445|-0.06125 +2016-07-01|-15.0|-44.0|-22.69456|-0.06801 +2016-07-01|-15.0|-45.0|-22.41507|-0.07496 +2016-07-01|-15.0|-46.0|-22.10553|-0.08205 +2016-07-01|-15.0|-47.0|-21.7656|-0.08926 +2016-07-01|-15.0|-48.0|-21.39498|-0.09653 +2016-07-01|-15.0|-49.0|-20.9935|-0.10383 +2016-07-01|-15.0|-50.0|-20.56107|-0.1111 +2016-07-01|-15.0|-51.0|-20.09773|-0.11829 +2016-07-01|-15.0|-52.0|-19.60362|-0.12536 +2016-07-01|-15.0|-53.0|-19.07903|-0.13226 +2016-07-01|-15.0|-54.0|-18.52438|-0.13894 +2016-07-01|-15.0|-55.0|-17.94024|-0.14535 +2016-07-01|-15.0|-56.0|-17.32733|-0.15145 +2016-07-01|-15.0|-57.0|-16.68653|-0.15719 +2016-07-01|-15.0|-58.0|-16.01889|-0.16253 +2016-07-01|-15.0|-59.0|-15.32561|-0.16744 +2016-07-01|-15.0|-60.0|-14.6081|-0.17187 +2016-07-01|-15.0|-61.0|-13.86792|-0.17581 +2016-07-01|-15.0|-62.0|-13.10679|-0.17922 +2016-07-01|-15.0|-63.0|-12.32662|-0.18208 +2016-07-01|-15.0|-64.0|-11.52947|-0.18438 +2016-07-01|-15.0|-65.0|-10.71755|-0.18611 +2016-07-01|-15.0|-66.0|-9.89322|-0.18726 +2016-07-01|-15.0|-67.0|-9.05895|-0.18782 +2016-07-01|-15.0|-68.0|-8.21732|-0.18782 +2016-07-01|-15.0|-69.0|-7.37099|-0.18726 +2016-07-01|-15.0|-70.0|-6.52268|-0.18615 +2016-07-01|-15.0|-71.0|-5.67517|-0.18451 +2016-07-01|-15.0|-72.0|-4.83122|-0.18238 +2016-07-01|-15.0|-73.0|-3.99358|-0.17979 +2016-07-01|-15.0|-74.0|-3.16498|-0.17675 +2016-07-01|-15.0|-75.0|-2.34805|-0.17332 +2016-07-01|-15.0|-76.0|-1.54535|-0.16954 +2016-07-01|-15.0|-77.0|-0.75931|-0.16543 +2016-07-01|-15.0|-78.0|0.00777|-0.16104 +2016-07-01|-15.0|-79.0|0.75378|-0.15642 +2016-07-01|-15.0|-80.0|1.47674|-0.15161 +2016-07-01|-15.0|-81.0|2.17491|-0.14665 +2016-07-01|-15.0|-82.0|2.8467|-0.14158 +2016-07-01|-15.0|-83.0|3.49079|-0.13643 +2016-07-01|-15.0|-84.0|4.10603|-0.13126 +2016-07-01|-15.0|-85.0|4.6915|-0.12609 +2016-07-01|-15.0|-86.0|5.24653|-0.12095 +2016-07-01|-15.0|-87.0|5.77063|-0.11589 +2016-07-01|-15.0|-88.0|6.26355|-0.11093 +2016-07-01|-15.0|-89.0|6.72525|-0.10609 +2016-07-01|-15.0|-90.0|7.15587|-0.10141 +2016-07-01|-15.0|-91.0|7.55576|-0.0969 +2016-07-01|-15.0|-92.0|7.92547|-0.09258 +2016-07-01|-15.0|-93.0|8.26571|-0.08847 +2016-07-01|-15.0|-94.0|8.57734|-0.08459 +2016-07-01|-15.0|-95.0|8.86138|-0.08095 +2016-07-01|-15.0|-96.0|9.11899|-0.07756 +2016-07-01|-15.0|-97.0|9.35144|-0.07441 +2016-07-01|-15.0|-98.0|9.56013|-0.07153 +2016-07-01|-15.0|-99.0|9.74651|-0.0689 +2016-07-01|-15.0|-100.0|9.91214|-0.06652 +2016-07-01|-15.0|-101.0|10.05861|-0.06439 +2016-07-01|-15.0|-102.0|10.18757|-0.0625 +2016-07-01|-15.0|-103.0|10.30066|-0.06084 +2016-07-01|-15.0|-104.0|10.39957|-0.0594 +2016-07-01|-15.0|-105.0|10.48593|-0.05815 +2016-07-01|-15.0|-106.0|10.56136|-0.05708 +2016-07-01|-15.0|-107.0|10.62743|-0.05617 +2016-07-01|-15.0|-108.0|10.68564|-0.0554 +2016-07-01|-15.0|-109.0|10.73743|-0.05474 +2016-07-01|-15.0|-110.0|10.78412|-0.05417 +2016-07-01|-15.0|-111.0|10.82696|-0.05366 +2016-07-01|-15.0|-112.0|10.86705|-0.0532 +2016-07-01|-15.0|-113.0|10.90541|-0.05275 +2016-07-01|-15.0|-114.0|10.94291|-0.05229 +2016-07-01|-15.0|-115.0|10.98029|-0.0518 +2016-07-01|-15.0|-116.0|11.01818|-0.05126 +2016-07-01|-15.0|-117.0|11.05708|-0.05065 +2016-07-01|-15.0|-118.0|11.09734|-0.04997 +2016-07-01|-15.0|-119.0|11.13921|-0.04919 +2016-07-01|-15.0|-120.0|11.18284|-0.04831 +2016-07-01|-15.0|-121.0|11.22826|-0.04732 +2016-07-01|-15.0|-122.0|11.2754|-0.04622 +2016-07-01|-15.0|-123.0|11.32412|-0.04502 +2016-07-01|-15.0|-124.0|11.37421|-0.0437 +2016-07-01|-15.0|-125.0|11.42538|-0.04228 +2016-07-01|-15.0|-126.0|11.47731|-0.04077 +2016-07-01|-15.0|-127.0|11.52964|-0.03917 +2016-07-01|-15.0|-128.0|11.58197|-0.0375 +2016-07-01|-15.0|-129.0|11.63391|-0.03577 +2016-07-01|-15.0|-130.0|11.68504|-0.03399 +2016-07-01|-15.0|-131.0|11.73496|-0.03217 +2016-07-01|-15.0|-132.0|11.78328|-0.03033 +2016-07-01|-15.0|-133.0|11.82961|-0.02848 +2016-07-01|-15.0|-134.0|11.87362|-0.02663 +2016-07-01|-15.0|-135.0|11.91499|-0.02479 +2016-07-01|-15.0|-136.0|11.95342|-0.02296 +2016-07-01|-15.0|-137.0|11.98869|-0.02116 +2016-07-01|-15.0|-138.0|12.02059|-0.01939 +2016-07-01|-15.0|-139.0|12.04896|-0.01764 +2016-07-01|-15.0|-140.0|12.07367|-0.01593 +2016-07-01|-15.0|-141.0|12.09466|-0.01424 +2016-07-01|-15.0|-142.0|12.1119|-0.01258 +2016-07-01|-15.0|-143.0|12.12541|-0.01094 +2016-07-01|-15.0|-144.0|12.13523|-0.00931 +2016-07-01|-15.0|-145.0|12.14148|-0.00769 +2016-07-01|-15.0|-146.0|12.14428|-0.00606 +2016-07-01|-15.0|-147.0|12.14381|-0.00443 +2016-07-01|-15.0|-148.0|12.14028|-0.00278 +2016-07-01|-15.0|-149.0|12.13394|-0.0011 +2016-07-01|-15.0|-150.0|12.12506|6.1E-4 +2016-07-01|-15.0|-151.0|12.11393|0.00235 +2016-07-01|-15.0|-152.0|12.10088|0.00414 +2016-07-01|-15.0|-153.0|12.08624|0.00597 +2016-07-01|-15.0|-154.0|12.07036|0.00785 +2016-07-01|-15.0|-155.0|12.0536|0.00977 +2016-07-01|-15.0|-156.0|12.03632|0.01173 +2016-07-01|-15.0|-157.0|12.01886|0.01373 +2016-07-01|-15.0|-158.0|12.00158|0.01575 +2016-07-01|-15.0|-159.0|11.98478|0.0178 +2016-07-01|-15.0|-160.0|11.96876|0.01985 +2016-07-01|-15.0|-161.0|11.95379|0.0219 +2016-07-01|-15.0|-162.0|11.94007|0.02394 +2016-07-01|-15.0|-163.0|11.92778|0.02594 +2016-07-01|-15.0|-164.0|11.91703|0.0279 +2016-07-01|-15.0|-165.0|11.90787|0.0298 +2016-07-01|-15.0|-166.0|11.9003|0.03163 +2016-07-01|-15.0|-167.0|11.89421|0.03336 +2016-07-01|-15.0|-168.0|11.88947|0.03499 +2016-07-01|-15.0|-169.0|11.88582|0.03651 +2016-07-01|-15.0|-170.0|11.88298|0.03789 +2016-07-01|-15.0|-171.0|11.88055|0.03914 +2016-07-01|-15.0|-172.0|11.87809|0.04024 +2016-07-01|-15.0|-173.0|11.87508|0.04118 +2016-07-01|-15.0|-174.0|11.87096|0.04196 +2016-07-01|-15.0|-175.0|11.8651|0.04258 +2016-07-01|-15.0|-176.0|11.85684|0.04302 +2016-07-01|-15.0|-177.0|11.84549|0.0433 +2016-07-01|-15.0|-178.0|11.83033|0.0434 +2016-07-01|-15.0|-179.0|11.81067|0.04333 +2016-07-01|-16.0|0.0|-14.05401|0.18227 +2016-07-01|-16.0|1.0|-13.51036|0.18791 +2016-07-01|-16.0|2.0|-12.96607|0.19277 +2016-07-01|-16.0|3.0|-12.4234|0.19679 +2016-07-01|-16.0|4.0|-11.8847|0.19991 +2016-07-01|-16.0|5.0|-11.3524|0.20207 +2016-07-01|-16.0|6.0|-10.82896|0.20323 +2016-07-01|-16.0|7.0|-10.3169|0.20335 +2016-07-01|-16.0|8.0|-9.81876|0.20241 +2016-07-01|-16.0|9.0|-9.33704|0.20041 +2016-07-01|-16.0|10.0|-8.87424|0.19733 +2016-07-01|-16.0|11.0|-8.4328|0.1932 +2016-07-01|-16.0|12.0|-8.0151|0.18804 +2016-07-01|-16.0|13.0|-7.62339|0.18188 +2016-07-01|-16.0|14.0|-7.25984|0.17478 +2016-07-01|-16.0|15.0|-6.92646|0.1668 +2016-07-01|-16.0|16.0|-6.62507|0.15801 +2016-07-01|-16.0|17.0|-6.35733|0.14848 +2016-07-01|-16.0|18.0|-6.12469|0.13832 +2016-07-01|-16.0|19.0|-5.92836|0.12761 +2016-07-01|-16.0|20.0|-5.76929|0.11645 +2016-07-01|-16.0|21.0|-5.64818|0.10497 +2016-07-01|-16.0|22.0|-5.56545|0.09327 +2016-07-01|-16.0|23.0|-5.52122|0.08146 +2016-07-01|-16.0|24.0|-5.51531|0.06966 +2016-07-01|-16.0|25.0|-5.54724|0.05798 +2016-07-01|-16.0|26.0|-5.61622|0.04654 +2016-07-01|-16.0|27.0|-5.72115|0.03544 +2016-07-01|-16.0|28.0|-5.86065|0.02479 +2016-07-01|-16.0|29.0|-6.03301|0.01468 +2016-07-01|-16.0|30.0|-6.2363|0.0052 +2016-07-01|-16.0|31.0|-6.46829|-0.00357 +2016-07-01|-16.0|32.0|-6.72655|-0.01157 +2016-07-01|-16.0|33.0|-7.00843|-0.01874 +2016-07-01|-16.0|34.0|-7.31109|-0.02502 +2016-07-01|-16.0|35.0|-7.63158|-0.03038 +2016-07-01|-16.0|36.0|-7.9668|-0.0348 +2016-07-01|-16.0|37.0|-8.31361|-0.03827 +2016-07-01|-16.0|38.0|-8.66881|-0.04077 +2016-07-01|-16.0|39.0|-9.0292|-0.04231 +2016-07-01|-16.0|40.0|-9.39164|-0.04292 +2016-07-01|-16.0|41.0|-9.75303|-0.04262 +2016-07-01|-16.0|42.0|-10.1104|-0.04144 +2016-07-01|-16.0|43.0|-10.46089|-0.03942 +2016-07-01|-16.0|44.0|-10.80182|-0.03662 +2016-07-01|-16.0|45.0|-11.1307|-0.03307 +2016-07-01|-16.0|46.0|-11.44523|-0.02884 +2016-07-01|-16.0|47.0|-11.74337|-0.02399 +2016-07-01|-16.0|48.0|-12.02327|-0.01858 +2016-07-01|-16.0|49.0|-12.28336|-0.01267 +2016-07-01|-16.0|50.0|-12.52231|-0.00633 +2016-07-01|-16.0|51.0|-12.73904|3.7E-4 +2016-07-01|-16.0|52.0|-12.93271|0.00738 +2016-07-01|-16.0|53.0|-13.10272|0.01464 +2016-07-01|-16.0|54.0|-13.2487|0.02207 +2016-07-01|-16.0|55.0|-13.37047|0.02962 +2016-07-01|-16.0|56.0|-13.46806|0.03724 +2016-07-01|-16.0|57.0|-13.54167|0.04487 +2016-07-01|-16.0|58.0|-13.59165|0.05245 +2016-07-01|-16.0|59.0|-13.61847|0.05995 +2016-07-01|-16.0|60.0|-13.62269|0.06732 +2016-07-01|-16.0|61.0|-13.60497|0.07451 +2016-07-01|-16.0|62.0|-13.56599|0.0815 +2016-07-01|-16.0|63.0|-13.50648|0.08825 +2016-07-01|-16.0|64.0|-13.42716|0.09473 +2016-07-01|-16.0|65.0|-13.32874|0.10091 +2016-07-01|-16.0|66.0|-13.21188|0.10678 +2016-07-01|-16.0|67.0|-13.0772|0.11231 +2016-07-01|-16.0|68.0|-12.92526|0.11749 +2016-07-01|-16.0|69.0|-12.75654|0.1223 +2016-07-01|-16.0|70.0|-12.57145|0.12674 +2016-07-01|-16.0|71.0|-12.37033|0.1308 +2016-07-01|-16.0|72.0|-12.15344|0.13446 +2016-07-01|-16.0|73.0|-11.921|0.13772 +2016-07-01|-16.0|74.0|-11.67316|0.14058 +2016-07-01|-16.0|75.0|-11.41007|0.14303 +2016-07-01|-16.0|76.0|-11.13185|0.14505 +2016-07-01|-16.0|77.0|-10.83864|0.14666 +2016-07-01|-16.0|78.0|-10.53061|0.14783 +2016-07-01|-16.0|79.0|-10.208|0.14856 +2016-07-01|-16.0|80.0|-9.87112|0.14885 +2016-07-01|-16.0|81.0|-9.52041|0.14868 +2016-07-01|-16.0|82.0|-9.15643|0.14805 +2016-07-01|-16.0|83.0|-8.77988|0.14695 +2016-07-01|-16.0|84.0|-8.39163|0.14536 +2016-07-01|-16.0|85.0|-7.99274|0.14329 +2016-07-01|-16.0|86.0|-7.58443|0.14073 +2016-07-01|-16.0|87.0|-7.16811|0.13767 +2016-07-01|-16.0|88.0|-6.74536|0.13411 +2016-07-01|-16.0|89.0|-6.31792|0.13005 +2016-07-01|-16.0|90.0|-5.8877|0.1255 +2016-07-01|-16.0|91.0|-5.45668|0.12047 +2016-07-01|-16.0|92.0|-5.02697|0.11496 +2016-07-01|-16.0|93.0|-4.60072|0.109 +2016-07-01|-16.0|94.0|-4.1801|0.10261 +2016-07-01|-16.0|95.0|-3.76725|0.09581 +2016-07-01|-16.0|96.0|-3.36426|0.08864 +2016-07-01|-16.0|97.0|-2.9731|0.08114 +2016-07-01|-16.0|98.0|-2.59561|0.07334 +2016-07-01|-16.0|99.0|-2.23344|0.06529 +2016-07-01|-16.0|100.0|-1.88802|0.05704 +2016-07-01|-16.0|101.0|-1.56055|0.04863 +2016-07-01|-16.0|102.0|-1.25195|0.04012 +2016-07-01|-16.0|103.0|-0.96285|0.03157 +2016-07-01|-16.0|104.0|-0.69361|0.02301 +2016-07-01|-16.0|105.0|-0.44427|0.01452 +2016-07-01|-16.0|106.0|-0.21458|0.00613 +2016-07-01|-16.0|107.0|-0.00399|-0.00211 +2016-07-01|-16.0|108.0|0.18831|-0.01013 +2016-07-01|-16.0|109.0|0.3634|-0.01791 +2016-07-01|-16.0|110.0|0.52257|-0.02539 +2016-07-01|-16.0|111.0|0.66734|-0.03254 +2016-07-01|-16.0|112.0|0.79938|-0.03932 +2016-07-01|-16.0|113.0|0.92049|-0.04571 +2016-07-01|-16.0|114.0|1.03259|-0.05166 +2016-07-01|-16.0|115.0|1.13766|-0.05717 +2016-07-01|-16.0|116.0|1.23767|-0.06221 +2016-07-01|-16.0|117.0|1.33463|-0.06677 +2016-07-01|-16.0|118.0|1.43046|-0.07083 +2016-07-01|-16.0|119.0|1.527|-0.0744 +2016-07-01|-16.0|120.0|1.62601|-0.07746 +2016-07-01|-16.0|121.0|1.72907|-0.08002 +2016-07-01|-16.0|122.0|1.83761|-0.08208 +2016-07-01|-16.0|123.0|1.95288|-0.08366 +2016-07-01|-16.0|124.0|2.07594|-0.08476 +2016-07-01|-16.0|125.0|2.20761|-0.08539 +2016-07-01|-16.0|126.0|2.34852|-0.08558 +2016-07-01|-16.0|127.0|2.4991|-0.08535 +2016-07-01|-16.0|128.0|2.65955|-0.08471 +2016-07-01|-16.0|129.0|2.82987|-0.08369 +2016-07-01|-16.0|130.0|3.0099|-0.08232 +2016-07-01|-16.0|131.0|3.19928|-0.08061 +2016-07-01|-16.0|132.0|3.39754|-0.0786 +2016-07-01|-16.0|133.0|3.60406|-0.07632 +2016-07-01|-16.0|134.0|3.81813|-0.07378 +2016-07-01|-16.0|135.0|4.03896|-0.07103 +2016-07-01|-16.0|136.0|4.26572|-0.06808 +2016-07-01|-16.0|137.0|4.49755|-0.06496 +2016-07-01|-16.0|138.0|4.73356|-0.0617 +2016-07-01|-16.0|139.0|4.97292|-0.05832 +2016-07-01|-16.0|140.0|5.21479|-0.05485 +2016-07-01|-16.0|141.0|5.4584|-0.0513 +2016-07-01|-16.0|142.0|5.70305|-0.04771 +2016-07-01|-16.0|143.0|5.94806|-0.04408 +2016-07-01|-16.0|144.0|6.19285|-0.04043 +2016-07-01|-16.0|145.0|6.4369|-0.03679 +2016-07-01|-16.0|146.0|6.67977|-0.03316 +2016-07-01|-16.0|147.0|6.92104|-0.02955 +2016-07-01|-16.0|148.0|7.16038|-0.02599 +2016-07-01|-16.0|149.0|7.39749|-0.02247 +2016-07-01|-16.0|150.0|7.63209|-0.019 +2016-07-01|-16.0|151.0|7.86393|-0.0156 +2016-07-01|-16.0|152.0|8.09277|-0.01227 +2016-07-01|-16.0|153.0|8.31838|-0.00901 +2016-07-01|-16.0|154.0|8.54048|-0.00583 +2016-07-01|-16.0|155.0|8.75883|-0.00273 +2016-07-01|-16.0|156.0|8.97311|2.9E-4 +2016-07-01|-16.0|157.0|9.18301|0.00322 +2016-07-01|-16.0|158.0|9.38817|0.00607 +2016-07-01|-16.0|159.0|9.58821|0.00883 +2016-07-01|-16.0|160.0|9.78272|0.01149 +2016-07-01|-16.0|161.0|9.97128|0.01407 +2016-07-01|-16.0|162.0|10.15344|0.01656 +2016-07-01|-16.0|163.0|10.32875|0.01895 +2016-07-01|-16.0|164.0|10.49679|0.02126 +2016-07-01|-16.0|165.0|10.65712|0.02346 +2016-07-01|-16.0|166.0|10.80935|0.02558 +2016-07-01|-16.0|167.0|10.95313|0.02759 +2016-07-01|-16.0|168.0|11.08815|0.02951 +2016-07-01|-16.0|169.0|11.21417|0.03132 +2016-07-01|-16.0|170.0|11.33101|0.03302 +2016-07-01|-16.0|171.0|11.43858|0.03462 +2016-07-01|-16.0|172.0|11.53686|0.0361 +2016-07-01|-16.0|173.0|11.62592|0.03746 +2016-07-01|-16.0|174.0|11.70593|0.03869 +2016-07-01|-16.0|175.0|11.77712|0.0398 +2016-07-01|-16.0|176.0|11.83983|0.04077 +2016-07-01|-16.0|177.0|11.89447|0.0416 +2016-07-01|-16.0|178.0|11.94151|0.04229 +2016-07-01|-16.0|179.0|11.9815|0.04282 +2016-07-01|-16.0|-1.0|-14.59487|0.17594 +2016-07-01|-16.0|-2.0|-15.13089|0.169 +2016-07-01|-16.0|-3.0|-15.66016|0.16153 +2016-07-01|-16.0|-4.0|-16.18092|0.15362 +2016-07-01|-16.0|-5.0|-16.69154|0.14537 +2016-07-01|-16.0|-6.0|-17.19054|0.13686 +2016-07-01|-16.0|-7.0|-17.67661|0.12819 +2016-07-01|-16.0|-8.0|-18.14859|0.11945 +2016-07-01|-16.0|-9.0|-18.60546|0.11071 +2016-07-01|-16.0|-10.0|-19.04638|0.10205 +2016-07-01|-16.0|-11.0|-19.47062|0.09356 +2016-07-01|-16.0|-12.0|-19.87762|0.08528 +2016-07-01|-16.0|-13.0|-20.26693|0.07729 +2016-07-01|-16.0|-14.0|-20.63822|0.06964 +2016-07-01|-16.0|-15.0|-20.99126|0.06235 +2016-07-01|-16.0|-16.0|-21.32589|0.05545 +2016-07-01|-16.0|-17.0|-21.64206|0.04898 +2016-07-01|-16.0|-18.0|-21.93975|0.04293 +2016-07-01|-16.0|-19.0|-22.21898|0.03731 +2016-07-01|-16.0|-20.0|-22.47979|0.03211 +2016-07-01|-16.0|-21.0|-22.72224|0.0273 +2016-07-01|-16.0|-22.0|-22.94638|0.02285 +2016-07-01|-16.0|-23.0|-23.15222|0.01873 +2016-07-01|-16.0|-24.0|-23.33976|0.0149 +2016-07-01|-16.0|-25.0|-23.50894|0.0113 +2016-07-01|-16.0|-26.0|-23.65965|0.00789 +2016-07-01|-16.0|-27.0|-23.79171|0.00461 +2016-07-01|-16.0|-28.0|-23.90488|0.00141 +2016-07-01|-16.0|-29.0|-23.99886|-0.00178 +2016-07-01|-16.0|-30.0|-24.07327|-0.00501 +2016-07-01|-16.0|-31.0|-24.12767|-0.00832 +2016-07-01|-16.0|-32.0|-24.16155|-0.01178 +2016-07-01|-16.0|-33.0|-24.17435|-0.01541 +2016-07-01|-16.0|-34.0|-24.16545|-0.01927 +2016-07-01|-16.0|-35.0|-24.13419|-0.02337 +2016-07-01|-16.0|-36.0|-24.07987|-0.02775 +2016-07-01|-16.0|-37.0|-24.00178|-0.03243 +2016-07-01|-16.0|-38.0|-23.89917|-0.0374 +2016-07-01|-16.0|-39.0|-23.77131|-0.04269 +2016-07-01|-16.0|-40.0|-23.61746|-0.04827 +2016-07-01|-16.0|-41.0|-23.43689|-0.05415 +2016-07-01|-16.0|-42.0|-23.22892|-0.0603 +2016-07-01|-16.0|-43.0|-22.99288|-0.06671 +2016-07-01|-16.0|-44.0|-22.72817|-0.07334 +2016-07-01|-16.0|-45.0|-22.43424|-0.08016 +2016-07-01|-16.0|-46.0|-22.11059|-0.08713 +2016-07-01|-16.0|-47.0|-21.75683|-0.09421 +2016-07-01|-16.0|-48.0|-21.37263|-0.10136 +2016-07-01|-16.0|-49.0|-20.95777|-0.10854 +2016-07-01|-16.0|-50.0|-20.51213|-0.11568 +2016-07-01|-16.0|-51.0|-20.03572|-0.12276 +2016-07-01|-16.0|-52.0|-19.52866|-0.1297 +2016-07-01|-16.0|-53.0|-18.99121|-0.13647 +2016-07-01|-16.0|-54.0|-18.42378|-0.14301 +2016-07-01|-16.0|-55.0|-17.82692|-0.14929 +2016-07-01|-16.0|-56.0|-17.20136|-0.15524 +2016-07-01|-16.0|-57.0|-16.54797|-0.16082 +2016-07-01|-16.0|-58.0|-15.86782|-0.16601 +2016-07-01|-16.0|-59.0|-15.16215|-0.17074 +2016-07-01|-16.0|-60.0|-14.43235|-0.175 +2016-07-01|-16.0|-61.0|-13.68004|-0.17875 +2016-07-01|-16.0|-62.0|-12.90697|-0.18197 +2016-07-01|-16.0|-63.0|-12.11509|-0.18463 +2016-07-01|-16.0|-64.0|-11.3065|-0.18672 +2016-07-01|-16.0|-65.0|-10.48347|-0.18822 +2016-07-01|-16.0|-66.0|-9.6484|-0.18914 +2016-07-01|-16.0|-67.0|-8.8038|-0.18947 +2016-07-01|-16.0|-68.0|-7.95231|-0.18923 +2016-07-01|-16.0|-69.0|-7.09664|-0.18841 +2016-07-01|-16.0|-70.0|-6.23956|-0.18705 +2016-07-01|-16.0|-71.0|-5.38387|-0.18517 +2016-07-01|-16.0|-72.0|-4.53238|-0.18278 +2016-07-01|-16.0|-73.0|-3.68787|-0.17993 +2016-07-01|-16.0|-74.0|-2.85309|-0.17665 +2016-07-01|-16.0|-75.0|-2.0307|-0.17297 +2016-07-01|-16.0|-76.0|-1.22325|-0.16895 +2016-07-01|-16.0|-77.0|-0.43318|-0.16461 +2016-07-01|-16.0|-78.0|0.33722|-0.16 +2016-07-01|-16.0|-79.0|1.08583|-0.15517 +2016-07-01|-16.0|-80.0|1.81072|-0.15015 +2016-07-01|-16.0|-81.0|2.51014|-0.145 +2016-07-01|-16.0|-82.0|3.18257|-0.13975 +2016-07-01|-16.0|-83.0|3.82669|-0.13445 +2016-07-01|-16.0|-84.0|4.4414|-0.12912 +2016-07-01|-16.0|-85.0|5.02584|-0.12382 +2016-07-01|-16.0|-86.0|5.57936|-0.11857 +2016-07-01|-16.0|-87.0|6.10153|-0.1134 +2016-07-01|-16.0|-88.0|6.59215|-0.10835 +2016-07-01|-16.0|-89.0|7.05122|-0.10344 +2016-07-01|-16.0|-90.0|7.47894|-0.0987 +2016-07-01|-16.0|-91.0|7.87572|-0.09414 +2016-07-01|-16.0|-92.0|8.24214|-0.08979 +2016-07-01|-16.0|-93.0|8.57895|-0.08567 +2016-07-01|-16.0|-94.0|8.88707|-0.08178 +2016-07-01|-16.0|-95.0|9.16757|-0.07814 +2016-07-01|-16.0|-96.0|9.42164|-0.07476 +2016-07-01|-16.0|-97.0|9.6506|-0.07165 +2016-07-01|-16.0|-98.0|9.85586|-0.06879 +2016-07-01|-16.0|-99.0|10.03894|-0.06621 +2016-07-01|-16.0|-100.0|10.20139|-0.06388 +2016-07-01|-16.0|-101.0|10.34484|-0.06181 +2016-07-01|-16.0|-102.0|10.47096|-0.05998 +2016-07-01|-16.0|-103.0|10.58142|-0.05839 +2016-07-01|-16.0|-104.0|10.67789|-0.05702 +2016-07-01|-16.0|-105.0|10.76204|-0.05585 +2016-07-01|-16.0|-106.0|10.83547|-0.05486 +2016-07-01|-16.0|-107.0|10.89977|-0.05403 +2016-07-01|-16.0|-108.0|10.95642|-0.05334 +2016-07-01|-16.0|-109.0|11.00686|-0.05277 +2016-07-01|-16.0|-110.0|11.05241|-0.05228 +2016-07-01|-16.0|-111.0|11.09429|-0.05186 +2016-07-01|-16.0|-112.0|11.13361|-0.05147 +2016-07-01|-16.0|-113.0|11.17136|-0.05111 +2016-07-01|-16.0|-114.0|11.20839|-0.05073 +2016-07-01|-16.0|-115.0|11.24545|-0.05032 +2016-07-01|-16.0|-116.0|11.28313|-0.04986 +2016-07-01|-16.0|-117.0|11.32191|-0.04934 +2016-07-01|-16.0|-118.0|11.36215|-0.04873 +2016-07-01|-16.0|-119.0|11.40408|-0.04802 +2016-07-01|-16.0|-120.0|11.44783|-0.04721 +2016-07-01|-16.0|-121.0|11.49341|-0.04629 +2016-07-01|-16.0|-122.0|11.54078|-0.04526 +2016-07-01|-16.0|-123.0|11.58976|-0.04411 +2016-07-01|-16.0|-124.0|11.64014|-0.04286 +2016-07-01|-16.0|-125.0|11.69164|-0.0415 +2016-07-01|-16.0|-126.0|11.74393|-0.04004 +2016-07-01|-16.0|-127.0|11.79666|-0.03849 +2016-07-01|-16.0|-128.0|11.84942|-0.03686 +2016-07-01|-16.0|-129.0|11.90182|-0.03517 +2016-07-01|-16.0|-130.0|11.95345|-0.03343 +2016-07-01|-16.0|-131.0|12.00391|-0.03164 +2016-07-01|-16.0|-132.0|12.0528|-0.02983 +2016-07-01|-16.0|-133.0|12.09976|-0.02801 +2016-07-01|-16.0|-134.0|12.14444|-0.02617 +2016-07-01|-16.0|-135.0|12.18651|-0.02435 +2016-07-01|-16.0|-136.0|12.22571|-0.02254 +2016-07-01|-16.0|-137.0|12.26177|-0.02074 +2016-07-01|-16.0|-138.0|12.2945|-0.01897 +2016-07-01|-16.0|-139.0|12.32373|-0.01723 +2016-07-01|-16.0|-140.0|12.34934|-0.01551 +2016-07-01|-16.0|-141.0|12.37124|-0.01382 +2016-07-01|-16.0|-142.0|12.38939|-0.01216 +2016-07-01|-16.0|-143.0|12.40381|-0.01051 +2016-07-01|-16.0|-144.0|12.41454|-0.00887 +2016-07-01|-16.0|-145.0|12.42165|-0.00724 +2016-07-01|-16.0|-146.0|12.42529|-0.00561 +2016-07-01|-16.0|-147.0|12.4256|-0.00397 +2016-07-01|-16.0|-148.0|12.42278|-0.00232 +2016-07-01|-16.0|-149.0|12.41706|-6.4E-4 +2016-07-01|-16.0|-150.0|12.4087|0.00107 +2016-07-01|-16.0|-151.0|12.39798|0.00282 +2016-07-01|-16.0|-152.0|12.38521|0.0046 +2016-07-01|-16.0|-153.0|12.37071|0.00643 +2016-07-01|-16.0|-154.0|12.35482|0.0083 +2016-07-01|-16.0|-155.0|12.33787|0.01021 +2016-07-01|-16.0|-156.0|12.32023|0.01215 +2016-07-01|-16.0|-157.0|12.30223|0.01414 +2016-07-01|-16.0|-158.0|12.28421|0.01614 +2016-07-01|-16.0|-159.0|12.26648|0.01817 +2016-07-01|-16.0|-160.0|12.24933|0.0202 +2016-07-01|-16.0|-161.0|12.23303|0.02223 +2016-07-01|-16.0|-162.0|12.21778|0.02424 +2016-07-01|-16.0|-163.0|12.20376|0.02621 +2016-07-01|-16.0|-164.0|12.1911|0.02815 +2016-07-01|-16.0|-165.0|12.17985|0.03002 +2016-07-01|-16.0|-166.0|12.17|0.03182 +2016-07-01|-16.0|-167.0|12.16149|0.03353 +2016-07-01|-16.0|-168.0|12.15417|0.03514 +2016-07-01|-16.0|-169.0|12.14782|0.03664 +2016-07-01|-16.0|-170.0|12.14216|0.03801 +2016-07-01|-16.0|-171.0|12.13683|0.03924 +2016-07-01|-16.0|-172.0|12.13139|0.04032 +2016-07-01|-16.0|-173.0|12.12535|0.04126 +2016-07-01|-16.0|-174.0|12.11816|0.04203 +2016-07-01|-16.0|-175.0|12.10922|0.04264 +2016-07-01|-16.0|-176.0|12.09789|0.04309 +2016-07-01|-16.0|-177.0|12.0835|0.04337 +2016-07-01|-16.0|-178.0|12.06536|0.04348 +2016-07-01|-16.0|-179.0|12.04277|0.04342 +2016-07-01|-17.0|0.0|-14.7778|0.18237 +2016-07-01|-17.0|1.0|-14.23177|0.18831 +2016-07-01|-17.0|2.0|-13.68449|0.19342 +2016-07-01|-17.0|3.0|-13.13841|0.19761 +2016-07-01|-17.0|4.0|-12.59612|0.20082 +2016-07-01|-17.0|5.0|-12.06026|0.20298 +2016-07-01|-17.0|6.0|-11.53356|0.20405 +2016-07-01|-17.0|7.0|-11.01874|0.204 +2016-07-01|-17.0|8.0|-10.51857|0.2028 +2016-07-01|-17.0|9.0|-10.03577|0.20044 +2016-07-01|-17.0|10.0|-9.57302|0.19693 +2016-07-01|-17.0|11.0|-9.13294|0.19229 +2016-07-01|-17.0|12.0|-8.71803|0.18655 +2016-07-01|-17.0|13.0|-8.33069|0.17977 +2016-07-01|-17.0|14.0|-7.97314|0.172 +2016-07-01|-17.0|15.0|-7.64745|0.16331 +2016-07-01|-17.0|16.0|-7.35545|0.15379 +2016-07-01|-17.0|17.0|-7.09878|0.14354 +2016-07-01|-17.0|18.0|-6.87883|0.13265 +2016-07-01|-17.0|19.0|-6.69671|0.12125 +2016-07-01|-17.0|20.0|-6.55327|0.10944 +2016-07-01|-17.0|21.0|-6.44905|0.09734 +2016-07-01|-17.0|22.0|-6.3843|0.08509 +2016-07-01|-17.0|23.0|-6.35895|0.0728 +2016-07-01|-17.0|24.0|-6.37261|0.0606 +2016-07-01|-17.0|25.0|-6.42459|0.0486 +2016-07-01|-17.0|26.0|-6.51386|0.03692 +2016-07-01|-17.0|27.0|-6.63913|0.02568 +2016-07-01|-17.0|28.0|-6.79875|0.01496 +2016-07-01|-17.0|29.0|-6.99085|0.00488 +2016-07-01|-17.0|30.0|-7.21326|-0.0045 +2016-07-01|-17.0|31.0|-7.46358|-0.01309 +2016-07-01|-17.0|32.0|-7.7392|-0.02084 +2016-07-01|-17.0|33.0|-8.03732|-0.02768 +2016-07-01|-17.0|34.0|-8.35499|-0.03359 +2016-07-01|-17.0|35.0|-8.68914|-0.03853 +2016-07-01|-17.0|36.0|-9.03659|-0.04249 +2016-07-01|-17.0|37.0|-9.39415|-0.04547 +2016-07-01|-17.0|38.0|-9.75857|-0.04746 +2016-07-01|-17.0|39.0|-10.12666|-0.04848 +2016-07-01|-17.0|40.0|-10.49526|-0.04856 +2016-07-01|-17.0|41.0|-10.86131|-0.04772 +2016-07-01|-17.0|42.0|-11.22187|-0.04602 +2016-07-01|-17.0|43.0|-11.57414|-0.04349 +2016-07-01|-17.0|44.0|-11.9155|-0.04018 +2016-07-01|-17.0|45.0|-12.24352|-0.03616 +2016-07-01|-17.0|46.0|-12.55599|-0.03147 +2016-07-01|-17.0|47.0|-12.85091|-0.02619 +2016-07-01|-17.0|48.0|-13.12654|-0.02036 +2016-07-01|-17.0|49.0|-13.38138|-0.01406 +2016-07-01|-17.0|50.0|-13.61415|-0.00735 +2016-07-01|-17.0|51.0|-13.82385|-2.9E-4 +2016-07-01|-17.0|52.0|-14.00969|0.00706 +2016-07-01|-17.0|53.0|-14.17114|0.01462 +2016-07-01|-17.0|54.0|-14.30785|0.02236 +2016-07-01|-17.0|55.0|-14.41972|0.0302 +2016-07-01|-17.0|56.0|-14.50678|0.0381 +2016-07-01|-17.0|57.0|-14.56928|0.046 +2016-07-01|-17.0|58.0|-14.60758|0.05385 +2016-07-01|-17.0|59.0|-14.62217|0.06162 +2016-07-01|-17.0|60.0|-14.61364|0.06924 +2016-07-01|-17.0|61.0|-14.58265|0.07669 +2016-07-01|-17.0|62.0|-14.5299|0.08394 +2016-07-01|-17.0|63.0|-14.45613|0.09094 +2016-07-01|-17.0|64.0|-14.36207|0.09767 +2016-07-01|-17.0|65.0|-14.24843|0.10411 +2016-07-01|-17.0|66.0|-14.1159|0.11022 +2016-07-01|-17.0|67.0|-13.96512|0.116 +2016-07-01|-17.0|68.0|-13.79664|0.12142 +2016-07-01|-17.0|69.0|-13.61098|0.12648 +2016-07-01|-17.0|70.0|-13.40857|0.13115 +2016-07-01|-17.0|71.0|-13.18976|0.13542 +2016-07-01|-17.0|72.0|-12.95485|0.13929 +2016-07-01|-17.0|73.0|-12.70408|0.14275 +2016-07-01|-17.0|74.0|-12.43764|0.14579 +2016-07-01|-17.0|75.0|-12.15571|0.1484 +2016-07-01|-17.0|76.0|-11.85843|0.15058 +2016-07-01|-17.0|77.0|-11.54598|0.15231 +2016-07-01|-17.0|78.0|-11.21856|0.15359 +2016-07-01|-17.0|79.0|-10.87646|0.1544 +2016-07-01|-17.0|80.0|-10.52001|0.15475 +2016-07-01|-17.0|81.0|-10.14968|0.15462 +2016-07-01|-17.0|82.0|-9.76607|0.154 +2016-07-01|-17.0|83.0|-9.36991|0.15288 +2016-07-01|-17.0|84.0|-8.96209|0.15125 +2016-07-01|-17.0|85.0|-8.54371|0.14912 +2016-07-01|-17.0|86.0|-8.11601|0.14647 +2016-07-01|-17.0|87.0|-7.68042|0.14329 +2016-07-01|-17.0|88.0|-7.23855|0.1396 +2016-07-01|-17.0|89.0|-6.79216|0.13539 +2016-07-01|-17.0|90.0|-6.34316|0.13067 +2016-07-01|-17.0|91.0|-5.89357|0.12545 +2016-07-01|-17.0|92.0|-5.44549|0.11975 +2016-07-01|-17.0|93.0|-5.00109|0.11358 +2016-07-01|-17.0|94.0|-4.56254|0.10698 +2016-07-01|-17.0|95.0|-4.13198|0.09997 +2016-07-01|-17.0|96.0|-3.71151|0.09258 +2016-07-01|-17.0|97.0|-3.3031|0.08487 +2016-07-01|-17.0|98.0|-2.90857|0.07686 +2016-07-01|-17.0|99.0|-2.52957|0.06861 +2016-07-01|-17.0|100.0|-2.16754|0.06017 +2016-07-01|-17.0|101.0|-1.82365|0.05159 +2016-07-01|-17.0|102.0|-1.49882|0.04292 +2016-07-01|-17.0|103.0|-1.19369|0.03421 +2016-07-01|-17.0|104.0|-0.90859|0.02553 +2016-07-01|-17.0|105.0|-0.64357|0.01692 +2016-07-01|-17.0|106.0|-0.39838|0.00843 +2016-07-01|-17.0|107.0|-0.17248|1.2E-4 +2016-07-01|-17.0|108.0|0.03494|-0.00797 +2016-07-01|-17.0|109.0|0.22495|-0.0158 +2016-07-01|-17.0|110.0|0.39884|-0.02331 +2016-07-01|-17.0|111.0|0.55808|-0.03048 +2016-07-01|-17.0|112.0|0.70435|-0.03727 +2016-07-01|-17.0|113.0|0.83941|-0.04365 +2016-07-01|-17.0|114.0|0.96517|-0.0496 +2016-07-01|-17.0|115.0|1.08357|-0.05509 +2016-07-01|-17.0|116.0|1.19657|-0.06011 +2016-07-01|-17.0|117.0|1.30613|-0.06464 +2016-07-01|-17.0|118.0|1.41415|-0.06868 +2016-07-01|-17.0|119.0|1.52247|-0.07221 +2016-07-01|-17.0|120.0|1.6328|-0.07525 +2016-07-01|-17.0|121.0|1.74672|-0.07778 +2016-07-01|-17.0|122.0|1.86563|-0.07983 +2016-07-01|-17.0|123.0|1.99079|-0.08138 +2016-07-01|-17.0|124.0|2.12323|-0.08247 +2016-07-01|-17.0|125.0|2.26379|-0.0831 +2016-07-01|-17.0|126.0|2.41311|-0.08329 +2016-07-01|-17.0|127.0|2.5716|-0.08306 +2016-07-01|-17.0|128.0|2.73949|-0.08243 +2016-07-01|-17.0|129.0|2.91681|-0.08143 +2016-07-01|-17.0|130.0|3.10341|-0.08008 +2016-07-01|-17.0|131.0|3.29897|-0.0784 +2016-07-01|-17.0|132.0|3.50302|-0.07642 +2016-07-01|-17.0|133.0|3.715|-0.07418 +2016-07-01|-17.0|134.0|3.93421|-0.07169 +2016-07-01|-17.0|135.0|4.1599|-0.06898 +2016-07-01|-17.0|136.0|4.39127|-0.06608 +2016-07-01|-17.0|137.0|4.62749|-0.06301 +2016-07-01|-17.0|138.0|4.8677|-0.05981 +2016-07-01|-17.0|139.0|5.11109|-0.05649 +2016-07-01|-17.0|140.0|5.35685|-0.05307 +2016-07-01|-17.0|141.0|5.60423|-0.04959 +2016-07-01|-17.0|142.0|5.85253|-0.04605 +2016-07-01|-17.0|143.0|6.10111|-0.04248 +2016-07-01|-17.0|144.0|6.34938|-0.03889 +2016-07-01|-17.0|145.0|6.59684|-0.0353 +2016-07-01|-17.0|146.0|6.84303|-0.03173 +2016-07-01|-17.0|147.0|7.08757|-0.02818 +2016-07-01|-17.0|148.0|7.33009|-0.02467 +2016-07-01|-17.0|149.0|7.5703|-0.0212 +2016-07-01|-17.0|150.0|7.80793|-0.01779 +2016-07-01|-17.0|151.0|8.0427|-0.01444 +2016-07-01|-17.0|152.0|8.27439|-0.01116 +2016-07-01|-17.0|153.0|8.50273|-0.00794 +2016-07-01|-17.0|154.0|8.72748|-0.00481 +2016-07-01|-17.0|155.0|8.94835|-0.00175 +2016-07-01|-17.0|156.0|9.16506|0.00122 +2016-07-01|-17.0|157.0|9.37727|0.00411 +2016-07-01|-17.0|158.0|9.58463|0.00691 +2016-07-01|-17.0|159.0|9.78678|0.00963 +2016-07-01|-17.0|160.0|9.9833|0.01225 +2016-07-01|-17.0|161.0|10.17379|0.01479 +2016-07-01|-17.0|162.0|10.3578|0.01724 +2016-07-01|-17.0|163.0|10.53491|0.01959 +2016-07-01|-17.0|164.0|10.7047|0.02185 +2016-07-01|-17.0|165.0|10.86676|0.02402 +2016-07-01|-17.0|166.0|11.0207|0.0261 +2016-07-01|-17.0|167.0|11.1662|0.02807 +2016-07-01|-17.0|168.0|11.30296|0.02995 +2016-07-01|-17.0|169.0|11.43077|0.03172 +2016-07-01|-17.0|170.0|11.54945|0.03339 +2016-07-01|-17.0|171.0|11.65894|0.03495 +2016-07-01|-17.0|172.0|11.75922|0.0364 +2016-07-01|-17.0|173.0|11.85038|0.03772 +2016-07-01|-17.0|174.0|11.93258|0.03893 +2016-07-01|-17.0|175.0|12.00608|0.04001 +2016-07-01|-17.0|176.0|12.07121|0.04095 +2016-07-01|-17.0|177.0|12.12838|0.04176 +2016-07-01|-17.0|178.0|12.17805|0.04242 +2016-07-01|-17.0|179.0|12.22078|0.04294 +2016-07-01|-17.0|-1.0|-15.3202|0.17567 +2016-07-01|-17.0|-2.0|-15.85676|0.16832 +2016-07-01|-17.0|-3.0|-16.3854|0.1604 +2016-07-01|-17.0|-4.0|-16.90423|0.15201 +2016-07-01|-17.0|-5.0|-17.4115|0.14327 +2016-07-01|-17.0|-6.0|-17.90566|0.13426 +2016-07-01|-17.0|-7.0|-18.38532|0.12508 +2016-07-01|-17.0|-8.0|-18.84929|0.11584 +2016-07-01|-17.0|-9.0|-19.29655|0.10662 +2016-07-01|-17.0|-10.0|-19.72626|0.0975 +2016-07-01|-17.0|-11.0|-20.13773|0.08857 +2016-07-01|-17.0|-12.0|-20.53046|0.07989 +2016-07-01|-17.0|-13.0|-20.90406|0.07153 +2016-07-01|-17.0|-14.0|-21.25829|0.06353 +2016-07-01|-17.0|-15.0|-21.59303|0.05594 +2016-07-01|-17.0|-16.0|-21.90824|0.04878 +2016-07-01|-17.0|-17.0|-22.20397|0.04208 +2016-07-01|-17.0|-18.0|-22.48035|0.03585 +2016-07-01|-17.0|-19.0|-22.73751|0.03008 +2016-07-01|-17.0|-20.0|-22.97565|0.02475 +2016-07-01|-17.0|-21.0|-23.19495|0.01986 +2016-07-01|-17.0|-22.0|-23.39559|0.01536 +2016-07-01|-17.0|-23.0|-23.57772|0.01122 +2016-07-01|-17.0|-24.0|-23.74146|0.0074 +2016-07-01|-17.0|-25.0|-23.88686|0.00383 +2016-07-01|-17.0|-26.0|-24.01391|4.7E-4 +2016-07-01|-17.0|-27.0|-24.12256|-0.00273 +2016-07-01|-17.0|-28.0|-24.21263|-0.00585 +2016-07-01|-17.0|-29.0|-24.28392|-0.00894 +2016-07-01|-17.0|-30.0|-24.3361|-0.01205 +2016-07-01|-17.0|-31.0|-24.3688|-0.01524 +2016-07-01|-17.0|-32.0|-24.38154|-0.01856 +2016-07-01|-17.0|-33.0|-24.3738|-0.02205 +2016-07-01|-17.0|-34.0|-24.34498|-0.02576 +2016-07-01|-17.0|-35.0|-24.29443|-0.02972 +2016-07-01|-17.0|-36.0|-24.22146|-0.03396 +2016-07-01|-17.0|-37.0|-24.12533|-0.03848 +2016-07-01|-17.0|-38.0|-24.0053|-0.04331 +2016-07-01|-17.0|-39.0|-23.86059|-0.04845 +2016-07-01|-17.0|-40.0|-23.69045|-0.0539 +2016-07-01|-17.0|-41.0|-23.49411|-0.05964 +2016-07-01|-17.0|-42.0|-23.27085|-0.06565 +2016-07-01|-17.0|-43.0|-23.01996|-0.07193 +2016-07-01|-17.0|-44.0|-22.74079|-0.07842 +2016-07-01|-17.0|-45.0|-22.43274|-0.08511 +2016-07-01|-17.0|-46.0|-22.09528|-0.09196 +2016-07-01|-17.0|-47.0|-21.72797|-0.09892 +2016-07-01|-17.0|-48.0|-21.33044|-0.10594 +2016-07-01|-17.0|-49.0|-20.90244|-0.11299 +2016-07-01|-17.0|-50.0|-20.4438|-0.12001 +2016-07-01|-17.0|-51.0|-19.95451|-0.12696 +2016-07-01|-17.0|-52.0|-19.43466|-0.13377 +2016-07-01|-17.0|-53.0|-18.8845|-0.1404 +2016-07-01|-17.0|-54.0|-18.30442|-0.14681 +2016-07-01|-17.0|-55.0|-17.69498|-0.15294 +2016-07-01|-17.0|-56.0|-17.05688|-0.15874 +2016-07-01|-17.0|-57.0|-16.39104|-0.16417 +2016-07-01|-17.0|-58.0|-15.6985|-0.16918 +2016-07-01|-17.0|-59.0|-14.98055|-0.17375 +2016-07-01|-17.0|-60.0|-14.23861|-0.17783 +2016-07-01|-17.0|-61.0|-13.4743|-0.18139 +2016-07-01|-17.0|-62.0|-12.68945|-0.18441 +2016-07-01|-17.0|-63.0|-11.88602|-0.18686 +2016-07-01|-17.0|-64.0|-11.06619|-0.18874 +2016-07-01|-17.0|-65.0|-10.23224|-0.19002 +2016-07-01|-17.0|-66.0|-9.38663|-0.19071 +2016-07-01|-17.0|-67.0|-8.53194|-0.19081 +2016-07-01|-17.0|-68.0|-7.67085|-0.19033 +2016-07-01|-17.0|-69.0|-6.8061|-0.18928 +2016-07-01|-17.0|-70.0|-5.94051|-0.18767 +2016-07-01|-17.0|-71.0|-5.07693|-0.18554 +2016-07-01|-17.0|-72.0|-4.21818|-0.18291 +2016-07-01|-17.0|-73.0|-3.3671|-0.17982 +2016-07-01|-17.0|-74.0|-2.52643|-0.1763 +2016-07-01|-17.0|-75.0|-1.69884|-0.17239 +2016-07-01|-17.0|-76.0|-0.88691|-0.16814 +2016-07-01|-17.0|-77.0|-0.09307|-0.16358 +2016-07-01|-17.0|-78.0|0.6804|-0.15877 +2016-07-01|-17.0|-79.0|1.4314|-0.15374 +2016-07-01|-17.0|-80.0|2.15802|-0.14854 +2016-07-01|-17.0|-81.0|2.85853|-0.14321 +2016-07-01|-17.0|-82.0|3.53145|-0.1378 +2016-07-01|-17.0|-83.0|4.17549|-0.13235 +2016-07-01|-17.0|-84.0|4.7896|-0.1269 +2016-07-01|-17.0|-85.0|5.37295|-0.12148 +2016-07-01|-17.0|-86.0|5.92494|-0.11612 +2016-07-01|-17.0|-87.0|6.44519|-0.11086 +2016-07-01|-17.0|-88.0|6.93354|-0.10574 +2016-07-01|-17.0|-89.0|7.39005|-0.10077 +2016-07-01|-17.0|-90.0|7.81496|-0.09597 +2016-07-01|-17.0|-91.0|8.20872|-0.09138 +2016-07-01|-17.0|-92.0|8.57196|-0.08701 +2016-07-01|-17.0|-93.0|8.90549|-0.08287 +2016-07-01|-17.0|-94.0|9.21026|-0.07899 +2016-07-01|-17.0|-95.0|9.48738|-0.07536 +2016-07-01|-17.0|-96.0|9.73808|-0.072 +2016-07-01|-17.0|-97.0|9.96371|-0.06891 +2016-07-01|-17.0|-98.0|10.16571|-0.06609 +2016-07-01|-17.0|-99.0|10.34563|-0.06355 +2016-07-01|-17.0|-100.0|10.50506|-0.06127 +2016-07-01|-17.0|-101.0|10.64563|-0.05925 +2016-07-01|-17.0|-102.0|10.76904|-0.05749 +2016-07-01|-17.0|-103.0|10.87696|-0.05596 +2016-07-01|-17.0|-104.0|10.97109|-0.05466 +2016-07-01|-17.0|-105.0|11.05308|-0.05356 +2016-07-01|-17.0|-106.0|11.12456|-0.05264 +2016-07-01|-17.0|-107.0|11.1871|-0.05189 +2016-07-01|-17.0|-108.0|11.24219|-0.05128 +2016-07-01|-17.0|-109.0|11.29125|-0.05078 +2016-07-01|-17.0|-110.0|11.33559|-0.05037 +2016-07-01|-17.0|-111.0|11.37643|-0.05003 +2016-07-01|-17.0|-112.0|11.41487|-0.04972 +2016-07-01|-17.0|-113.0|11.45187|-0.04943 +2016-07-01|-17.0|-114.0|11.48828|-0.04913 +2016-07-01|-17.0|-115.0|11.52483|-0.0488 +2016-07-01|-17.0|-116.0|11.56211|-0.04841 +2016-07-01|-17.0|-117.0|11.60057|-0.04796 +2016-07-01|-17.0|-118.0|11.64057|-0.04742 +2016-07-01|-17.0|-119.0|11.68232|-0.04678 +2016-07-01|-17.0|-120.0|11.72595|-0.04604 +2016-07-01|-17.0|-121.0|11.77148|-0.04518 +2016-07-01|-17.0|-122.0|11.81881|-0.04421 +2016-07-01|-17.0|-123.0|11.86782|-0.04312 +2016-07-01|-17.0|-124.0|11.91826|-0.04193 +2016-07-01|-17.0|-125.0|11.96986|-0.04062 +2016-07-01|-17.0|-126.0|12.0223|-0.03921 +2016-07-01|-17.0|-127.0|12.0752|-0.03771 +2016-07-01|-17.0|-128.0|12.12819|-0.03613 +2016-07-01|-17.0|-129.0|12.18087|-0.03448 +2016-07-01|-17.0|-130.0|12.23283|-0.03277 +2016-07-01|-17.0|-131.0|12.28367|-0.03102 +2016-07-01|-17.0|-132.0|12.33301|-0.02924 +2016-07-01|-17.0|-133.0|12.38047|-0.02744 +2016-07-01|-17.0|-134.0|12.4257|-0.02563 +2016-07-01|-17.0|-135.0|12.4684|-0.02382 +2016-07-01|-17.0|-136.0|12.50827|-0.02202 +2016-07-01|-17.0|-137.0|12.54507|-0.02024 +2016-07-01|-17.0|-138.0|12.57859|-0.01848 +2016-07-01|-17.0|-139.0|12.60865|-0.01674 +2016-07-01|-17.0|-140.0|12.63512|-0.01503 +2016-07-01|-17.0|-141.0|12.65793|-0.01334 +2016-07-01|-17.0|-142.0|12.67701|-0.01167 +2016-07-01|-17.0|-143.0|12.69236|-0.01002 +2016-07-01|-17.0|-144.0|12.70402|-0.00838 +2016-07-01|-17.0|-145.0|12.71205|-0.00675 +2016-07-01|-17.0|-146.0|12.71657|-0.00511 +2016-07-01|-17.0|-147.0|12.71772|-0.00347 +2016-07-01|-17.0|-148.0|12.71568|-0.00181 +2016-07-01|-17.0|-149.0|12.71067|-1.3E-4 +2016-07-01|-17.0|-150.0|12.70292|0.00158 +2016-07-01|-17.0|-151.0|12.69271|0.00332 +2016-07-01|-17.0|-152.0|12.68032|0.00509 +2016-07-01|-17.0|-153.0|12.66606|0.00691 +2016-07-01|-17.0|-154.0|12.65027|0.00877 +2016-07-01|-17.0|-155.0|12.63326|0.01066 +2016-07-01|-17.0|-156.0|12.61539|0.01259 +2016-07-01|-17.0|-157.0|12.59697|0.01455 +2016-07-01|-17.0|-158.0|12.57835|0.01654 +2016-07-01|-17.0|-159.0|12.55981|0.01854 +2016-07-01|-17.0|-160.0|12.54167|0.02054 +2016-07-01|-17.0|-161.0|12.52416|0.02254 +2016-07-01|-17.0|-162.0|12.50751|0.02453 +2016-07-01|-17.0|-163.0|12.49189|0.02648 +2016-07-01|-17.0|-164.0|12.47743|0.02838 +2016-07-01|-17.0|-165.0|12.4642|0.03023 +2016-07-01|-17.0|-166.0|12.45219|0.032 +2016-07-01|-17.0|-167.0|12.44136|0.03369 +2016-07-01|-17.0|-168.0|12.43156|0.03528 +2016-07-01|-17.0|-169.0|12.42259|0.03675 +2016-07-01|-17.0|-170.0|12.41419|0.0381 +2016-07-01|-17.0|-171.0|12.40601|0.03932 +2016-07-01|-17.0|-172.0|12.39764|0.04039 +2016-07-01|-17.0|-173.0|12.3886|0.04132 +2016-07-01|-17.0|-174.0|12.37837|0.04209 +2016-07-01|-17.0|-175.0|12.36636|0.0427 +2016-07-01|-17.0|-176.0|12.35196|0.04314 +2016-07-01|-17.0|-177.0|12.33451|0.04342 +2016-07-01|-17.0|-178.0|12.31334|0.04354 +2016-07-01|-17.0|-179.0|12.28778|0.0435 +2016-07-01|-18.0|0.0|-15.50814|0.18154 +2016-07-01|-18.0|1.0|-14.96271|0.18775 +2016-07-01|-18.0|2.0|-14.41543|0.19306 +2016-07-01|-18.0|3.0|-13.86899|0.19738 +2016-07-01|-18.0|4.0|-13.32617|0.20064 +2016-07-01|-18.0|5.0|-12.78987|0.20277 +2016-07-01|-18.0|6.0|-12.26301|0.20373 +2016-07-01|-18.0|7.0|-11.74857|0.20347 +2016-07-01|-18.0|8.0|-11.24951|0.20197 +2016-07-01|-18.0|9.0|-10.76876|0.19923 +2016-07-01|-18.0|10.0|-10.3092|0.19526 +2016-07-01|-18.0|11.0|-9.87359|0.19009 +2016-07-01|-18.0|12.0|-9.46458|0.18376 +2016-07-01|-18.0|13.0|-9.08466|0.17633 +2016-07-01|-18.0|14.0|-8.73611|0.16787 +2016-07-01|-18.0|15.0|-8.42104|0.15847 +2016-07-01|-18.0|16.0|-8.14129|0.14823 +2016-07-01|-18.0|17.0|-7.89844|0.13726 +2016-07-01|-18.0|18.0|-7.69381|0.12567 +2016-07-01|-18.0|19.0|-7.52841|0.1136 +2016-07-01|-18.0|20.0|-7.40294|0.10116 +2016-07-01|-18.0|21.0|-7.31779|0.0885 +2016-07-01|-18.0|22.0|-7.273|0.07574 +2016-07-01|-18.0|23.0|-7.26831|0.06303 +2016-07-01|-18.0|24.0|-7.30312|0.05048 +2016-07-01|-18.0|25.0|-7.37649|0.03823 +2016-07-01|-18.0|26.0|-7.48719|0.02638 +2016-07-01|-18.0|27.0|-7.63367|0.01506 +2016-07-01|-18.0|28.0|-7.81409|0.00436 +2016-07-01|-18.0|29.0|-8.02634|-0.00563 +2016-07-01|-18.0|30.0|-8.26807|-0.01482 +2016-07-01|-18.0|31.0|-8.53671|-0.02316 +2016-07-01|-18.0|32.0|-8.82947|-0.03058 +2016-07-01|-18.0|33.0|-9.14344|-0.03704 +2016-07-01|-18.0|34.0|-9.47554|-0.04251 +2016-07-01|-18.0|35.0|-9.82261|-0.04698 +2016-07-01|-18.0|36.0|-10.18143|-0.05043 +2016-07-01|-18.0|37.0|-10.54875|-0.05286 +2016-07-01|-18.0|38.0|-10.92132|-0.0543 +2016-07-01|-18.0|39.0|-11.29595|-0.05477 +2016-07-01|-18.0|40.0|-11.66951|-0.05429 +2016-07-01|-18.0|41.0|-12.03898|-0.0529 +2016-07-01|-18.0|42.0|-12.40146|-0.05066 +2016-07-01|-18.0|43.0|-12.75424|-0.0476 +2016-07-01|-18.0|44.0|-13.09476|-0.04379 +2016-07-01|-18.0|45.0|-13.42068|-0.03928 +2016-07-01|-18.0|46.0|-13.72986|-0.03414 +2016-07-01|-18.0|47.0|-14.0204|-0.02842 +2016-07-01|-18.0|48.0|-14.29063|-0.02218 +2016-07-01|-18.0|49.0|-14.53913|-0.01549 +2016-07-01|-18.0|50.0|-14.7647|-0.00842 +2016-07-01|-18.0|51.0|-14.96639|-0.00101 +2016-07-01|-18.0|52.0|-15.1435|0.00666 +2016-07-01|-18.0|53.0|-15.29552|0.01453 +2016-07-01|-18.0|54.0|-15.42217|0.02257 +2016-07-01|-18.0|55.0|-15.52336|0.03069 +2016-07-01|-18.0|56.0|-15.59919|0.03887 +2016-07-01|-18.0|57.0|-15.64991|0.04703 +2016-07-01|-18.0|58.0|-15.67591|0.05515 +2016-07-01|-18.0|59.0|-15.67768|0.06317 +2016-07-01|-18.0|60.0|-15.65584|0.07106 +2016-07-01|-18.0|61.0|-15.61105|0.07877 +2016-07-01|-18.0|62.0|-15.54402|0.08627 +2016-07-01|-18.0|63.0|-15.4555|0.09353 +2016-07-01|-18.0|64.0|-15.34622|0.10052 +2016-07-01|-18.0|65.0|-15.2169|0.10721 +2016-07-01|-18.0|66.0|-15.06825|0.11358 +2016-07-01|-18.0|67.0|-14.90091|0.11962 +2016-07-01|-18.0|68.0|-14.71546|0.12529 +2016-07-01|-18.0|69.0|-14.51241|0.13059 +2016-07-01|-18.0|70.0|-14.29223|0.1355 +2016-07-01|-18.0|71.0|-14.05529|0.14001 +2016-07-01|-18.0|72.0|-13.80191|0.1441 +2016-07-01|-18.0|73.0|-13.53237|0.14777 +2016-07-01|-18.0|74.0|-13.24687|0.15101 +2016-07-01|-18.0|75.0|-12.94563|0.15379 +2016-07-01|-18.0|76.0|-12.62883|0.15613 +2016-07-01|-18.0|77.0|-12.29667|0.158 +2016-07-01|-18.0|78.0|-11.94939|0.1594 +2016-07-01|-18.0|79.0|-11.58731|0.16031 +2016-07-01|-18.0|80.0|-11.2108|0.16072 +2016-07-01|-18.0|81.0|-10.82036|0.16064 +2016-07-01|-18.0|82.0|-10.41661|0.16004 +2016-07-01|-18.0|83.0|-10.00033|0.15891 +2016-07-01|-18.0|84.0|-9.57243|0.15726 +2016-07-01|-18.0|85.0|-9.13402|0.15506 +2016-07-01|-18.0|86.0|-8.68639|0.15233 +2016-07-01|-18.0|87.0|-8.23098|0.14905 +2016-07-01|-18.0|88.0|-7.76942|0.14523 +2016-07-01|-18.0|89.0|-7.30349|0.14087 +2016-07-01|-18.0|90.0|-6.83512|0.13598 +2016-07-01|-18.0|91.0|-6.36633|0.13058 +2016-07-01|-18.0|92.0|-5.89924|0.12468 +2016-07-01|-18.0|93.0|-5.43603|0.11831 +2016-07-01|-18.0|94.0|-4.97886|0.1115 +2016-07-01|-18.0|95.0|-4.52989|0.10427 +2016-07-01|-18.0|96.0|-4.09119|0.09667 +2016-07-01|-18.0|97.0|-3.66476|0.08874 +2016-07-01|-18.0|98.0|-3.2524|0.08053 +2016-07-01|-18.0|99.0|-2.85576|0.07208 +2016-07-01|-18.0|100.0|-2.47626|0.06345 +2016-07-01|-18.0|101.0|-2.11508|0.05469 +2016-07-01|-18.0|102.0|-1.77313|0.04586 +2016-07-01|-18.0|103.0|-1.45104|0.037 +2016-07-01|-18.0|104.0|-1.14915|0.02818 +2016-07-01|-18.0|105.0|-0.8675|0.01946 +2016-07-01|-18.0|106.0|-0.60584|0.01087 +2016-07-01|-18.0|107.0|-0.36365|0.00248 +2016-07-01|-18.0|108.0|-0.14011|-0.00568 +2016-07-01|-18.0|109.0|0.06582|-0.01356 +2016-07-01|-18.0|110.0|0.25542|-0.02111 +2016-07-01|-18.0|111.0|0.43014|-0.0283 +2016-07-01|-18.0|112.0|0.59163|-0.0351 +2016-07-01|-18.0|113.0|0.74164|-0.04149 +2016-07-01|-18.0|114.0|0.88204|-0.04743 +2016-07-01|-18.0|115.0|1.01473|-0.0529 +2016-07-01|-18.0|116.0|1.14166|-0.0579 +2016-07-01|-18.0|117.0|1.26476|-0.06241 +2016-07-01|-18.0|118.0|1.3859|-0.06642 +2016-07-01|-18.0|119.0|1.50688|-0.06993 +2016-07-01|-18.0|120.0|1.62939|-0.07294 +2016-07-01|-18.0|121.0|1.755|-0.07545 +2016-07-01|-18.0|122.0|1.8851|-0.07748 +2016-07-01|-18.0|123.0|2.02093|-0.07902 +2016-07-01|-18.0|124.0|2.16351|-0.0801 +2016-07-01|-18.0|125.0|2.31368|-0.08072 +2016-07-01|-18.0|126.0|2.4721|-0.08091 +2016-07-01|-18.0|127.0|2.63918|-0.08069 +2016-07-01|-18.0|128.0|2.81516|-0.08007 +2016-07-01|-18.0|129.0|3.0001|-0.07909 +2016-07-01|-18.0|130.0|3.19386|-0.07776 +2016-07-01|-18.0|131.0|3.39616|-0.07612 +2016-07-01|-18.0|132.0|3.60656|-0.07418 +2016-07-01|-18.0|133.0|3.82451|-0.07197 +2016-07-01|-18.0|134.0|4.04937|-0.06953 +2016-07-01|-18.0|135.0|4.28042|-0.06687 +2016-07-01|-18.0|136.0|4.51688|-0.06402 +2016-07-01|-18.0|137.0|4.75795|-0.06102 +2016-07-01|-18.0|138.0|5.00281|-0.05787 +2016-07-01|-18.0|139.0|5.25067|-0.05461 +2016-07-01|-18.0|140.0|5.50076|-0.05126 +2016-07-01|-18.0|141.0|5.75234|-0.04783 +2016-07-01|-18.0|142.0|6.00472|-0.04436 +2016-07-01|-18.0|143.0|6.25728|-0.04085 +2016-07-01|-18.0|144.0|6.50945|-0.03732 +2016-07-01|-18.0|145.0|6.76073|-0.0338 +2016-07-01|-18.0|146.0|7.01066|-0.03028 +2016-07-01|-18.0|147.0|7.25885|-0.02679 +2016-07-01|-18.0|148.0|7.50495|-0.02333 +2016-07-01|-18.0|149.0|7.74867|-0.01992 +2016-07-01|-18.0|150.0|7.9897|-0.01656 +2016-07-01|-18.0|151.0|8.22779|-0.01327 +2016-07-01|-18.0|152.0|8.4627|-0.01003 +2016-07-01|-18.0|153.0|8.69415|-0.00687 +2016-07-01|-18.0|154.0|8.9219|-0.00378 +2016-07-01|-18.0|155.0|9.14566|-7.7E-4 +2016-07-01|-18.0|156.0|9.36513|0.00216 +2016-07-01|-18.0|157.0|9.57999|0.005 +2016-07-01|-18.0|158.0|9.7899|0.00776 +2016-07-01|-18.0|159.0|9.99447|0.01043 +2016-07-01|-18.0|160.0|10.19331|0.01302 +2016-07-01|-18.0|161.0|10.38602|0.01551 +2016-07-01|-18.0|162.0|10.57218|0.01792 +2016-07-01|-18.0|163.0|10.75137|0.02024 +2016-07-01|-18.0|164.0|10.92317|0.02246 +2016-07-01|-18.0|165.0|11.08721|0.02459 +2016-07-01|-18.0|166.0|11.24311|0.02662 +2016-07-01|-18.0|167.0|11.39056|0.02856 +2016-07-01|-18.0|168.0|11.52929|0.0304 +2016-07-01|-18.0|169.0|11.65909|0.03214 +2016-07-01|-18.0|170.0|11.77982|0.03377 +2016-07-01|-18.0|171.0|11.8914|0.03529 +2016-07-01|-18.0|172.0|11.99385|0.03671 +2016-07-01|-18.0|173.0|12.08727|0.038 +2016-07-01|-18.0|174.0|12.17181|0.03917 +2016-07-01|-18.0|175.0|12.24775|0.04022 +2016-07-01|-18.0|176.0|12.31541|0.04114 +2016-07-01|-18.0|177.0|12.37521|0.04192 +2016-07-01|-18.0|178.0|12.42761|0.04256 +2016-07-01|-18.0|179.0|12.47314|0.04305 +2016-07-01|-18.0|-1.0|-16.04918|0.17452 +2016-07-01|-18.0|-2.0|-16.58343|0.1668 +2016-07-01|-18.0|-3.0|-17.10867|0.15847 +2016-07-01|-18.0|-4.0|-17.62286|0.14966 +2016-07-01|-18.0|-5.0|-18.12418|0.14047 +2016-07-01|-18.0|-6.0|-18.61098|0.13101 +2016-07-01|-18.0|-7.0|-19.08184|0.12138 +2016-07-01|-18.0|-8.0|-19.53553|0.1117 +2016-07-01|-18.0|-9.0|-19.97103|0.10205 +2016-07-01|-18.0|-10.0|-20.38752|0.09252 +2016-07-01|-18.0|-11.0|-20.78437|0.08321 +2016-07-01|-18.0|-12.0|-21.16111|0.07418 +2016-07-01|-18.0|-13.0|-21.51746|0.0655 +2016-07-01|-18.0|-14.0|-21.85325|0.05722 +2016-07-01|-18.0|-15.0|-22.16847|0.04938 +2016-07-01|-18.0|-16.0|-22.46319|0.04201 +2016-07-01|-18.0|-17.0|-22.73758|0.03513 +2016-07-01|-18.0|-18.0|-22.99189|0.02876 +2016-07-01|-18.0|-19.0|-23.2264|0.02287 +2016-07-01|-18.0|-20.0|-23.44141|0.01747 +2016-07-01|-18.0|-21.0|-23.63724|0.01253 +2016-07-01|-18.0|-22.0|-23.81419|0.00801 +2016-07-01|-18.0|-23.0|-23.97254|0.00388 +2016-07-01|-18.0|-24.0|-24.1125|8.0E-5 +2016-07-01|-18.0|-25.0|-24.23425|-0.00343 +2016-07-01|-18.0|-26.0|-24.33788|-0.00672 +2016-07-01|-18.0|-27.0|-24.42339|-0.00984 +2016-07-01|-18.0|-28.0|-24.49074|-0.01286 +2016-07-01|-18.0|-29.0|-24.53974|-0.01583 +2016-07-01|-18.0|-30.0|-24.57015|-0.01882 +2016-07-01|-18.0|-31.0|-24.58163|-0.02188 +2016-07-01|-18.0|-32.0|-24.57375|-0.02507 +2016-07-01|-18.0|-33.0|-24.546|-0.02842 +2016-07-01|-18.0|-34.0|-24.4978|-0.03199 +2016-07-01|-18.0|-35.0|-24.42851|-0.0358 +2016-07-01|-18.0|-36.0|-24.33742|-0.03989 +2016-07-01|-18.0|-37.0|-24.22379|-0.04427 +2016-07-01|-18.0|-38.0|-24.08685|-0.04896 +2016-07-01|-18.0|-39.0|-23.92581|-0.05395 +2016-07-01|-18.0|-40.0|-23.73986|-0.05926 +2016-07-01|-18.0|-41.0|-23.5282|-0.06486 +2016-07-01|-18.0|-42.0|-23.29008|-0.07074 +2016-07-01|-18.0|-43.0|-23.02473|-0.07688 +2016-07-01|-18.0|-44.0|-22.73147|-0.08324 +2016-07-01|-18.0|-45.0|-22.40965|-0.0898 +2016-07-01|-18.0|-46.0|-22.0587|-0.09652 +2016-07-01|-18.0|-47.0|-21.67812|-0.10335 +2016-07-01|-18.0|-48.0|-21.26752|-0.11025 +2016-07-01|-18.0|-49.0|-20.8266|-0.11717 +2016-07-01|-18.0|-50.0|-20.35518|-0.12406 +2016-07-01|-18.0|-51.0|-19.8532|-0.13087 +2016-07-01|-18.0|-52.0|-19.32073|-0.13755 +2016-07-01|-18.0|-53.0|-18.75802|-0.14404 +2016-07-01|-18.0|-54.0|-18.16544|-0.1503 +2016-07-01|-18.0|-55.0|-17.54355|-0.15628 +2016-07-01|-18.0|-56.0|-16.89306|-0.16193 +2016-07-01|-18.0|-57.0|-16.21488|-0.1672 +2016-07-01|-18.0|-58.0|-15.51011|-0.17204 +2016-07-01|-18.0|-59.0|-14.78002|-0.17644 +2016-07-01|-18.0|-60.0|-14.02609|-0.18033 +2016-07-01|-18.0|-61.0|-13.24997|-0.1837 +2016-07-01|-18.0|-62.0|-12.45351|-0.18652 +2016-07-01|-18.0|-63.0|-11.63875|-0.18877 +2016-07-01|-18.0|-64.0|-10.80787|-0.19043 +2016-07-01|-18.0|-65.0|-9.96325|-0.1915 +2016-07-01|-18.0|-66.0|-9.10737|-0.19196 +2016-07-01|-18.0|-67.0|-8.24285|-0.19183 +2016-07-01|-18.0|-68.0|-7.37243|-0.19112 +2016-07-01|-18.0|-69.0|-6.4989|-0.18983 +2016-07-01|-18.0|-70.0|-5.62512|-0.18799 +2016-07-01|-18.0|-71.0|-4.75395|-0.18563 +2016-07-01|-18.0|-72.0|-3.88827|-0.18277 +2016-07-01|-18.0|-73.0|-3.03092|-0.17945 +2016-07-01|-18.0|-74.0|-2.18467|-0.1757 +2016-07-01|-18.0|-75.0|-1.35219|-0.17158 +2016-07-01|-18.0|-76.0|-0.53607|-0.16711 +2016-07-01|-18.0|-77.0|0.26128|-0.16236 +2016-07-01|-18.0|-78.0|1.03759|-0.15735 +2016-07-01|-18.0|-79.0|1.79076|-0.15214 +2016-07-01|-18.0|-80.0|2.51891|-0.14677 +2016-07-01|-18.0|-81.0|3.22036|-0.14129 +2016-07-01|-18.0|-82.0|3.89363|-0.13574 +2016-07-01|-18.0|-83.0|4.53749|-0.13016 +2016-07-01|-18.0|-84.0|5.15093|-0.12459 +2016-07-01|-18.0|-85.0|5.73316|-0.11907 +2016-07-01|-18.0|-86.0|6.28362|-0.11363 +2016-07-01|-18.0|-87.0|6.80198|-0.10829 +2016-07-01|-18.0|-88.0|7.28812|-0.1031 +2016-07-01|-18.0|-89.0|7.74214|-0.09808 +2016-07-01|-18.0|-90.0|8.16435|-0.09325 +2016-07-01|-18.0|-91.0|8.55522|-0.08863 +2016-07-01|-18.0|-92.0|8.91544|-0.08425 +2016-07-01|-18.0|-93.0|9.24585|-0.08011 +2016-07-01|-18.0|-94.0|9.54744|-0.07622 +2016-07-01|-18.0|-95.0|9.82135|-0.07261 +2016-07-01|-18.0|-96.0|10.06886|-0.06927 +2016-07-01|-18.0|-97.0|10.29134|-0.06621 +2016-07-01|-18.0|-98.0|10.49026|-0.06343 +2016-07-01|-18.0|-99.0|10.6672|-0.06093 +2016-07-01|-18.0|-100.0|10.82375|-0.0587 +2016-07-01|-18.0|-101.0|10.96159|-0.05674 +2016-07-01|-18.0|-102.0|11.08241|-0.05503 +2016-07-01|-18.0|-103.0|11.18791|-0.05357 +2016-07-01|-18.0|-104.0|11.27977|-0.05233 +2016-07-01|-18.0|-105.0|11.35967|-0.0513 +2016-07-01|-18.0|-106.0|11.42922|-0.05045 +2016-07-01|-18.0|-107.0|11.49001|-0.04977 +2016-07-01|-18.0|-108.0|11.54351|-0.04922 +2016-07-01|-18.0|-109.0|11.59113|-0.0488 +2016-07-01|-18.0|-110.0|11.63419|-0.04846 +2016-07-01|-18.0|-111.0|11.67389|-0.04819 +2016-07-01|-18.0|-112.0|11.7113|-0.04795 +2016-07-01|-18.0|-113.0|11.7474|-0.04773 +2016-07-01|-18.0|-114.0|11.78301|-0.04749 +2016-07-01|-18.0|-115.0|11.81885|-0.04723 +2016-07-01|-18.0|-116.0|11.8555|-0.04691 +2016-07-01|-18.0|-117.0|11.89341|-0.04652 +2016-07-01|-18.0|-118.0|11.93292|-0.04604 +2016-07-01|-18.0|-119.0|11.97424|-0.04547 +2016-07-01|-18.0|-120.0|12.01748|-0.04479 +2016-07-01|-18.0|-121.0|12.06267|-0.04399 +2016-07-01|-18.0|-122.0|12.10971|-0.04308 +2016-07-01|-18.0|-123.0|12.15847|-0.04205 +2016-07-01|-18.0|-124.0|12.20871|-0.0409 +2016-07-01|-18.0|-125.0|12.26016|-0.03964 +2016-07-01|-18.0|-126.0|12.31249|-0.03829 +2016-07-01|-18.0|-127.0|12.36534|-0.03683 +2016-07-01|-18.0|-128.0|12.41834|-0.03529 +2016-07-01|-18.0|-129.0|12.47108|-0.03368 +2016-07-01|-18.0|-130.0|12.52318|-0.03201 +2016-07-01|-18.0|-131.0|12.57423|-0.0303 +2016-07-01|-18.0|-132.0|12.62384|-0.02855 +2016-07-01|-18.0|-133.0|12.67165|-0.02677 +2016-07-01|-18.0|-134.0|12.71732|-0.02499 +2016-07-01|-18.0|-135.0|12.76053|-0.0232 +2016-07-01|-18.0|-136.0|12.80099|-0.02142 +2016-07-01|-18.0|-137.0|12.83845|-0.01965 +2016-07-01|-18.0|-138.0|12.87269|-0.0179 +2016-07-01|-18.0|-139.0|12.90354|-0.01617 +2016-07-01|-18.0|-140.0|12.93087|-0.01446 +2016-07-01|-18.0|-141.0|12.95456|-0.01277 +2016-07-01|-18.0|-142.0|12.97457|-0.01111 +2016-07-01|-18.0|-143.0|12.99087|-0.00946 +2016-07-01|-18.0|-144.0|13.00349|-0.00782 +2016-07-01|-18.0|-145.0|13.01248|-0.00618 +2016-07-01|-18.0|-146.0|13.01794|-0.00455 +2016-07-01|-18.0|-147.0|13.01999|-0.00291 +2016-07-01|-18.0|-148.0|13.01881|-0.00125 +2016-07-01|-18.0|-149.0|13.01459|4.2E-4 +2016-07-01|-18.0|-150.0|13.00754|0.00212 +2016-07-01|-18.0|-151.0|12.99794|0.00385 +2016-07-01|-18.0|-152.0|12.98605|0.00562 +2016-07-01|-18.0|-153.0|12.97216|0.00742 +2016-07-01|-18.0|-154.0|12.95659|0.00926 +2016-07-01|-18.0|-155.0|12.93965|0.01114 +2016-07-01|-18.0|-156.0|12.92167|0.01305 +2016-07-01|-18.0|-157.0|12.90298|0.01499 +2016-07-01|-18.0|-158.0|12.88389|0.01695 +2016-07-01|-18.0|-159.0|12.8647|0.01892 +2016-07-01|-18.0|-160.0|12.8457|0.0209 +2016-07-01|-18.0|-161.0|12.82714|0.02287 +2016-07-01|-18.0|-162.0|12.80923|0.02482 +2016-07-01|-18.0|-163.0|12.79215|0.02674 +2016-07-01|-18.0|-164.0|12.77603|0.02862 +2016-07-01|-18.0|-165.0|12.76095|0.03044 +2016-07-01|-18.0|-166.0|12.74691|0.03218 +2016-07-01|-18.0|-167.0|12.73387|0.03384 +2016-07-01|-18.0|-168.0|12.7217|0.03541 +2016-07-01|-18.0|-169.0|12.71022|0.03686 +2016-07-01|-18.0|-170.0|12.69917|0.03819 +2016-07-01|-18.0|-171.0|12.68822|0.03939 +2016-07-01|-18.0|-172.0|12.67698|0.04045 +2016-07-01|-18.0|-173.0|12.665|0.04137 +2016-07-01|-18.0|-174.0|12.65177|0.04213 +2016-07-01|-18.0|-175.0|12.63673|0.04274 +2016-07-01|-18.0|-176.0|12.61927|0.04319 +2016-07-01|-18.0|-177.0|12.59876|0.04348 +2016-07-01|-18.0|-178.0|12.57455|0.04361 +2016-07-01|-18.0|-179.0|12.54598|0.04358 +2016-07-01|-19.0|0.0|-16.23992|0.17973 +2016-07-01|-19.0|1.0|-15.69833|0.18615 +2016-07-01|-19.0|2.0|-15.15438|0.19162 +2016-07-01|-19.0|3.0|-14.61095|0.19602 +2016-07-01|-19.0|4.0|-14.07105|0.19929 +2016-07-01|-19.0|5.0|-13.53777|0.20134 +2016-07-01|-19.0|6.0|-13.01427|0.20214 +2016-07-01|-19.0|7.0|-12.50373|0.20163 +2016-07-01|-19.0|8.0|-12.00932|0.1998 +2016-07-01|-19.0|9.0|-11.53417|0.19665 +2016-07-01|-19.0|10.0|-11.08132|0.1922 +2016-07-01|-19.0|11.0|-10.65367|0.18647 +2016-07-01|-19.0|12.0|-10.25401|0.17953 +2016-07-01|-19.0|13.0|-9.88488|0.17144 +2016-07-01|-19.0|14.0|-9.54865|0.16229 +2016-07-01|-19.0|15.0|-9.24742|0.15218 +2016-07-01|-19.0|16.0|-8.983|0.14123 +2016-07-01|-19.0|17.0|-8.75693|0.12956 +2016-07-01|-19.0|18.0|-8.57042|0.1173 +2016-07-01|-19.0|19.0|-8.42436|0.10459 +2016-07-01|-19.0|20.0|-8.31929|0.09158 +2016-07-01|-19.0|21.0|-8.25541|0.0784 +2016-07-01|-19.0|22.0|-8.23258|0.0652 +2016-07-01|-19.0|23.0|-8.25031|0.05213 +2016-07-01|-19.0|24.0|-8.30777|0.03931 +2016-07-01|-19.0|25.0|-8.4038|0.02688 +2016-07-01|-19.0|26.0|-8.53692|0.01495 +2016-07-01|-19.0|27.0|-8.70536|0.00363 +2016-07-01|-19.0|28.0|-8.90706|-0.00698 +2016-07-01|-19.0|29.0|-9.13972|-0.01679 +2016-07-01|-19.0|30.0|-9.40079|-0.02572 +2016-07-01|-19.0|31.0|-9.68753|-0.03373 +2016-07-01|-19.0|32.0|-9.99703|-0.04075 +2016-07-01|-19.0|33.0|-10.32625|-0.04676 +2016-07-01|-19.0|34.0|-10.67202|-0.05174 +2016-07-01|-19.0|35.0|-11.03111|-0.05567 +2016-07-01|-19.0|36.0|-11.40028|-0.05857 +2016-07-01|-19.0|37.0|-11.77624|-0.06043 +2016-07-01|-19.0|38.0|-12.15576|-0.06128 +2016-07-01|-19.0|39.0|-12.53567|-0.06116 +2016-07-01|-19.0|40.0|-12.91289|-0.0601 +2016-07-01|-19.0|41.0|-13.28446|-0.05815 +2016-07-01|-19.0|42.0|-13.64757|-0.05536 +2016-07-01|-19.0|43.0|-13.99956|-0.05178 +2016-07-01|-19.0|44.0|-14.33797|-0.04746 +2016-07-01|-19.0|45.0|-14.66056|-0.04247 +2016-07-01|-19.0|46.0|-14.96528|-0.03688 +2016-07-01|-19.0|47.0|-15.25031|-0.03073 +2016-07-01|-19.0|48.0|-15.51408|-0.02409 +2016-07-01|-19.0|49.0|-15.75523|-0.01703 +2016-07-01|-19.0|50.0|-15.97266|-0.0096 +2016-07-01|-19.0|51.0|-16.16549|-0.00186 +2016-07-01|-19.0|52.0|-16.33305|0.00612 +2016-07-01|-19.0|53.0|-16.4749|0.0143 +2016-07-01|-19.0|54.0|-16.5908|0.02262 +2016-07-01|-19.0|55.0|-16.6807|0.03102 +2016-07-01|-19.0|56.0|-16.74472|0.03946 +2016-07-01|-19.0|57.0|-16.78313|0.04789 +2016-07-01|-19.0|58.0|-16.79633|0.05627 +2016-07-01|-19.0|59.0|-16.78485|0.06455 +2016-07-01|-19.0|60.0|-16.74928|0.07269 +2016-07-01|-19.0|61.0|-16.6903|0.08066 +2016-07-01|-19.0|62.0|-16.60862|0.08842 +2016-07-01|-19.0|63.0|-16.505|0.09594 +2016-07-01|-19.0|64.0|-16.38017|0.10319 +2016-07-01|-19.0|65.0|-16.23486|0.11015 +2016-07-01|-19.0|66.0|-16.06977|0.11678 +2016-07-01|-19.0|67.0|-15.88555|0.12308 +2016-07-01|-19.0|68.0|-15.6828|0.12902 +2016-07-01|-19.0|69.0|-15.46205|0.13458 +2016-07-01|-19.0|70.0|-15.22377|0.13974 +2016-07-01|-19.0|71.0|-14.96837|0.14449 +2016-07-01|-19.0|72.0|-14.69619|0.14882 +2016-07-01|-19.0|73.0|-14.40752|0.15271 +2016-07-01|-19.0|74.0|-14.10261|0.15616 +2016-07-01|-19.0|75.0|-13.78169|0.15914 +2016-07-01|-19.0|76.0|-13.44498|0.16165 +2016-07-01|-19.0|77.0|-13.09271|0.16367 +2016-07-01|-19.0|78.0|-12.72517|0.1652 +2016-07-01|-19.0|79.0|-12.34269|0.16622 +2016-07-01|-19.0|80.0|-11.94569|0.16673 +2016-07-01|-19.0|81.0|-11.53469|0.1667 +2016-07-01|-19.0|82.0|-11.11034|0.16613 +2016-07-01|-19.0|83.0|-10.67345|0.16501 +2016-07-01|-19.0|84.0|-10.22497|0.16334 +2016-07-01|-19.0|85.0|-9.76603|0.1611 +2016-07-01|-19.0|86.0|-9.29794|0.15829 +2016-07-01|-19.0|87.0|-8.82216|0.15491 +2016-07-01|-19.0|88.0|-8.34034|0.15097 +2016-07-01|-19.0|89.0|-7.85428|0.14647 +2016-07-01|-19.0|90.0|-7.36591|0.14142 +2016-07-01|-19.0|91.0|-6.87728|0.13585 +2016-07-01|-19.0|92.0|-6.39051|0.12976 +2016-07-01|-19.0|93.0|-5.90778|0.12319 +2016-07-01|-19.0|94.0|-5.43126|0.11616 +2016-07-01|-19.0|95.0|-4.96311|0.10873 +2016-07-01|-19.0|96.0|-4.50541|0.10091 +2016-07-01|-19.0|97.0|-4.06012|0.09277 +2016-07-01|-19.0|98.0|-3.62908|0.08435 +2016-07-01|-19.0|99.0|-3.21391|0.0757 +2016-07-01|-19.0|100.0|-2.81604|0.06688 +2016-07-01|-19.0|101.0|-2.43663|0.05794 +2016-07-01|-19.0|102.0|-2.07659|0.04894 +2016-07-01|-19.0|103.0|-1.73656|0.03994 +2016-07-01|-19.0|104.0|-1.41686|0.03098 +2016-07-01|-19.0|105.0|-1.11756|0.02214 +2016-07-01|-19.0|106.0|-0.83839|0.01345 +2016-07-01|-19.0|107.0|-0.57884|0.00497 +2016-07-01|-19.0|108.0|-0.33812|-0.00325 +2016-07-01|-19.0|109.0|-0.11521|-0.01118 +2016-07-01|-19.0|110.0|0.09117|-0.01877 +2016-07-01|-19.0|111.0|0.28244|-0.02599 +2016-07-01|-19.0|112.0|0.46021|-0.03281 +2016-07-01|-19.0|113.0|0.62622|-0.03919 +2016-07-01|-19.0|114.0|0.7823|-0.04513 +2016-07-01|-19.0|115.0|0.93032|-0.05059 +2016-07-01|-19.0|116.0|1.07219|-0.05558 +2016-07-01|-19.0|117.0|1.20981|-0.06006 +2016-07-01|-19.0|118.0|1.34503|-0.06405 +2016-07-01|-19.0|119.0|1.47961|-0.06754 +2016-07-01|-19.0|120.0|1.61524|-0.07053 +2016-07-01|-19.0|121.0|1.75343|-0.07302 +2016-07-01|-19.0|122.0|1.89559|-0.07503 +2016-07-01|-19.0|123.0|2.04292|-0.07656 +2016-07-01|-19.0|124.0|2.19645|-0.07763 +2016-07-01|-19.0|125.0|2.35702|-0.07825 +2016-07-01|-19.0|126.0|2.52529|-0.07845 +2016-07-01|-19.0|127.0|2.70168|-0.07824 +2016-07-01|-19.0|128.0|2.88645|-0.07764 +2016-07-01|-19.0|129.0|3.07967|-0.07668 +2016-07-01|-19.0|130.0|3.28124|-0.07538 +2016-07-01|-19.0|131.0|3.49089|-0.07377 +2016-07-01|-19.0|132.0|3.70823|-0.07187 +2016-07-01|-19.0|133.0|3.93274|-0.06971 +2016-07-01|-19.0|134.0|4.1638|-0.06731 +2016-07-01|-19.0|135.0|4.40074|-0.06471 +2016-07-01|-19.0|136.0|4.6428|-0.06192 +2016-07-01|-19.0|137.0|4.88923|-0.05897 +2016-07-01|-19.0|138.0|5.13924|-0.05589 +2016-07-01|-19.0|139.0|5.39206|-0.05269 +2016-07-01|-19.0|140.0|5.64694|-0.0494 +2016-07-01|-19.0|141.0|5.90317|-0.04604 +2016-07-01|-19.0|142.0|6.16009|-0.04263 +2016-07-01|-19.0|143.0|6.41707|-0.03919 +2016-07-01|-19.0|144.0|6.67357|-0.03573 +2016-07-01|-19.0|145.0|6.92909|-0.03226 +2016-07-01|-19.0|146.0|7.18318|-0.02881 +2016-07-01|-19.0|147.0|7.43545|-0.02538 +2016-07-01|-19.0|148.0|7.68554|-0.02198 +2016-07-01|-19.0|149.0|7.93315|-0.01863 +2016-07-01|-19.0|150.0|8.17799|-0.01532 +2016-07-01|-19.0|151.0|8.4198|-0.01208 +2016-07-01|-19.0|152.0|8.6583|-0.00889 +2016-07-01|-19.0|153.0|8.89324|-0.00578 +2016-07-01|-19.0|154.0|9.12435|-0.00274 +2016-07-01|-19.0|155.0|9.35135|2.2E-4 +2016-07-01|-19.0|156.0|9.57394|0.0031 +2016-07-01|-19.0|157.0|9.79179|0.0059 +2016-07-01|-19.0|158.0|10.00455|0.00862 +2016-07-01|-19.0|159.0|10.21186|0.01125 +2016-07-01|-19.0|160.0|10.41333|0.0138 +2016-07-01|-19.0|161.0|10.60856|0.01625 +2016-07-01|-19.0|162.0|10.79714|0.01862 +2016-07-01|-19.0|163.0|10.97867|0.02089 +2016-07-01|-19.0|164.0|11.15275|0.02308 +2016-07-01|-19.0|165.0|11.319|0.02517 +2016-07-01|-19.0|166.0|11.47709|0.02717 +2016-07-01|-19.0|167.0|11.62672|0.02907 +2016-07-01|-19.0|168.0|11.76762|0.03087 +2016-07-01|-19.0|169.0|11.89961|0.03257 +2016-07-01|-19.0|170.0|12.02255|0.03417 +2016-07-01|-19.0|171.0|12.1364|0.03565 +2016-07-01|-19.0|172.0|12.24118|0.03703 +2016-07-01|-19.0|173.0|12.33699|0.03829 +2016-07-01|-19.0|174.0|12.42401|0.03943 +2016-07-01|-19.0|175.0|12.5025|0.04045 +2016-07-01|-19.0|176.0|12.5728|0.04133 +2016-07-01|-19.0|177.0|12.63531|0.04209 +2016-07-01|-19.0|178.0|12.6905|0.0427 +2016-07-01|-19.0|179.0|12.7389|0.04317 +2016-07-01|-19.0|-1.0|-16.77643|0.17244 +2016-07-01|-19.0|-2.0|-17.3053|0.16441 +2016-07-01|-19.0|-3.0|-17.82417|0.15574 +2016-07-01|-19.0|-4.0|-18.33089|0.14656 +2016-07-01|-19.0|-5.0|-18.82353|0.13699 +2016-07-01|-19.0|-6.0|-19.3004|0.12714 +2016-07-01|-19.0|-7.0|-19.76002|0.11713 +2016-07-01|-19.0|-8.0|-20.20115|0.10707 +2016-07-01|-19.0|-9.0|-20.62279|0.09706 +2016-07-01|-19.0|-10.0|-21.02413|0.08719 +2016-07-01|-19.0|-11.0|-21.40459|0.07757 +2016-07-01|-19.0|-12.0|-21.76378|0.06825 +2016-07-01|-19.0|-13.0|-22.10148|0.05931 +2016-07-01|-19.0|-14.0|-22.41763|0.05081 +2016-07-01|-19.0|-15.0|-22.7123|0.04277 +2016-07-01|-19.0|-16.0|-22.98568|0.03524 +2016-07-01|-19.0|-17.0|-23.23806|0.02824 +2016-07-01|-19.0|-18.0|-23.4698|0.02176 +2016-07-01|-19.0|-19.0|-23.68129|0.01581 +2016-07-01|-19.0|-20.0|-23.87297|0.01037 +2016-07-01|-19.0|-21.0|-24.04526|0.00541 +2016-07-01|-19.0|-22.0|-24.19858|9.0E-4 +2016-07-01|-19.0|-23.0|-24.33331|-0.00321 +2016-07-01|-19.0|-24.0|-24.44978|-0.00695 +2016-07-01|-19.0|-25.0|-24.54823|-0.0104 +2016-07-01|-19.0|-26.0|-24.62886|-0.01361 +2016-07-01|-19.0|-27.0|-24.69176|-0.01663 +2016-07-01|-19.0|-28.0|-24.73691|-0.01955 +2016-07-01|-19.0|-29.0|-24.76422|-0.0224 +2016-07-01|-19.0|-30.0|-24.77349|-0.02527 +2016-07-01|-19.0|-31.0|-24.76439|-0.02819 +2016-07-01|-19.0|-32.0|-24.73655|-0.03124 +2016-07-01|-19.0|-33.0|-24.68945|-0.03446 +2016-07-01|-19.0|-34.0|-24.62253|-0.03788 +2016-07-01|-19.0|-35.0|-24.53514|-0.04156 +2016-07-01|-19.0|-36.0|-24.42657|-0.0455 +2016-07-01|-19.0|-37.0|-24.29605|-0.04974 +2016-07-01|-19.0|-38.0|-24.14278|-0.05429 +2016-07-01|-19.0|-39.0|-23.96594|-0.05914 +2016-07-01|-19.0|-40.0|-23.7647|-0.06431 +2016-07-01|-19.0|-41.0|-23.53822|-0.06977 +2016-07-01|-19.0|-42.0|-23.28568|-0.07552 +2016-07-01|-19.0|-43.0|-23.0063|-0.08153 +2016-07-01|-19.0|-44.0|-22.69933|-0.08776 +2016-07-01|-19.0|-45.0|-22.36409|-0.09419 +2016-07-01|-19.0|-46.0|-21.99996|-0.10078 +2016-07-01|-19.0|-47.0|-21.60641|-0.10748 +2016-07-01|-19.0|-48.0|-21.18299|-0.11425 +2016-07-01|-19.0|-49.0|-20.72939|-0.12104 +2016-07-01|-19.0|-50.0|-20.24539|-0.12779 +2016-07-01|-19.0|-51.0|-19.7309|-0.13447 +2016-07-01|-19.0|-52.0|-19.186|-0.14101 +2016-07-01|-19.0|-53.0|-18.6109|-0.14736 +2016-07-01|-19.0|-54.0|-18.00598|-0.15347 +2016-07-01|-19.0|-55.0|-17.37178|-0.1593 +2016-07-01|-19.0|-56.0|-16.70906|-0.16479 +2016-07-01|-19.0|-57.0|-16.01871|-0.16989 +2016-07-01|-19.0|-58.0|-15.30186|-0.17457 +2016-07-01|-19.0|-59.0|-14.55981|-0.17878 +2016-07-01|-19.0|-60.0|-13.79407|-0.18249 +2016-07-01|-19.0|-61.0|-13.00634|-0.18567 +2016-07-01|-19.0|-62.0|-12.1985|-0.18829 +2016-07-01|-19.0|-63.0|-11.37263|-0.19033 +2016-07-01|-19.0|-64.0|-10.53099|-0.19178 +2016-07-01|-19.0|-65.0|-9.67596|-0.19263 +2016-07-01|-19.0|-66.0|-8.8101|-0.19288 +2016-07-01|-19.0|-67.0|-7.93608|-0.19253 +2016-07-01|-19.0|-68.0|-7.05666|-0.19159 +2016-07-01|-19.0|-69.0|-6.17469|-0.19007 +2016-07-01|-19.0|-70.0|-5.29305|-0.18801 +2016-07-01|-19.0|-71.0|-4.41464|-0.18542 +2016-07-01|-19.0|-72.0|-3.54238|-0.18234 +2016-07-01|-19.0|-73.0|-2.67909|-0.17881 +2016-07-01|-19.0|-74.0|-1.82758|-0.17486 +2016-07-01|-19.0|-75.0|-0.99053|-0.17053 +2016-07-01|-19.0|-76.0|-0.17051|-0.16587 +2016-07-01|-19.0|-77.0|0.63007|-0.16094 +2016-07-01|-19.0|-78.0|1.40896|-0.15576 +2016-07-01|-19.0|-79.0|2.16408|-0.15039 +2016-07-01|-19.0|-80.0|2.89358|-0.14487 +2016-07-01|-19.0|-81.0|3.59581|-0.13926 +2016-07-01|-19.0|-82.0|4.26932|-0.13358 +2016-07-01|-19.0|-83.0|4.91292|-0.12789 +2016-07-01|-19.0|-84.0|5.52564|-0.12222 +2016-07-01|-19.0|-85.0|6.10672|-0.11661 +2016-07-01|-19.0|-86.0|6.65567|-0.11109 +2016-07-01|-19.0|-87.0|7.17219|-0.1057 +2016-07-01|-19.0|-88.0|7.6562|-0.10046 +2016-07-01|-19.0|-89.0|8.10786|-0.0954 +2016-07-01|-19.0|-90.0|8.52749|-0.09055 +2016-07-01|-19.0|-91.0|8.91563|-0.08591 +2016-07-01|-19.0|-92.0|9.27299|-0.08152 +2016-07-01|-19.0|-93.0|9.60046|-0.07738 +2016-07-01|-19.0|-94.0|9.89906|-0.07351 +2016-07-01|-19.0|-95.0|10.16996|-0.06991 +2016-07-01|-19.0|-96.0|10.41448|-0.0666 +2016-07-01|-19.0|-97.0|10.634|-0.06357 +2016-07-01|-19.0|-98.0|10.83004|-0.06083 +2016-07-01|-19.0|-99.0|11.00417|-0.05838 +2016-07-01|-19.0|-100.0|11.15802|-0.0562 +2016-07-01|-19.0|-101.0|11.29328|-0.05429 +2016-07-01|-19.0|-102.0|11.41164|-0.05263 +2016-07-01|-19.0|-103.0|11.51481|-0.05122 +2016-07-01|-19.0|-104.0|11.6045|-0.05004 +2016-07-01|-19.0|-105.0|11.68236|-0.04907 +2016-07-01|-19.0|-106.0|11.75002|-0.04829 +2016-07-01|-19.0|-107.0|11.80904|-0.04767 +2016-07-01|-19.0|-108.0|11.86091|-0.04719 +2016-07-01|-19.0|-109.0|11.90704|-0.04682 +2016-07-01|-19.0|-110.0|11.94872|-0.04655 +2016-07-01|-19.0|-111.0|11.98714|-0.04634 +2016-07-01|-19.0|-112.0|12.02339|-0.04616 +2016-07-01|-19.0|-113.0|12.0584|-0.046 +2016-07-01|-19.0|-114.0|12.09301|-0.04583 +2016-07-01|-19.0|-115.0|12.12792|-0.04562 +2016-07-01|-19.0|-116.0|12.1637|-0.04536 +2016-07-01|-19.0|-117.0|12.20079|-0.04503 +2016-07-01|-19.0|-118.0|12.23953|-0.04461 +2016-07-01|-19.0|-119.0|12.28013|-0.04409 +2016-07-01|-19.0|-120.0|12.3227|-0.04346 +2016-07-01|-19.0|-121.0|12.36726|-0.04272 +2016-07-01|-19.0|-122.0|12.41372|-0.04186 +2016-07-01|-19.0|-123.0|12.46193|-0.04088 +2016-07-01|-19.0|-124.0|12.51168|-0.03978 +2016-07-01|-19.0|-125.0|12.56269|-0.03858 +2016-07-01|-19.0|-126.0|12.61464|-0.03726 +2016-07-01|-19.0|-127.0|12.66718|-0.03585 +2016-07-01|-19.0|-128.0|12.71994|-0.03436 +2016-07-01|-19.0|-129.0|12.77252|-0.03279 +2016-07-01|-19.0|-130.0|12.82453|-0.03115 +2016-07-01|-19.0|-131.0|12.87559|-0.02947 +2016-07-01|-19.0|-132.0|12.9253|-0.02775 +2016-07-01|-19.0|-133.0|12.97331|-0.026 +2016-07-01|-19.0|-134.0|13.01927|-0.02424 +2016-07-01|-19.0|-135.0|13.06286|-0.02247 +2016-07-01|-19.0|-136.0|13.10379|-0.02071 +2016-07-01|-19.0|-137.0|13.14182|-0.01896 +2016-07-01|-19.0|-138.0|13.17673|-0.01722 +2016-07-01|-19.0|-139.0|13.20832|-0.0155 +2016-07-01|-19.0|-140.0|13.23645|-0.0138 +2016-07-01|-19.0|-141.0|13.26101|-0.01212 +2016-07-01|-19.0|-142.0|13.28195|-0.01046 +2016-07-01|-19.0|-143.0|13.29921|-0.00881 +2016-07-01|-19.0|-144.0|13.31281|-0.00718 +2016-07-01|-19.0|-145.0|13.3228|-0.00555 +2016-07-01|-19.0|-146.0|13.32925|-0.00392 +2016-07-01|-19.0|-147.0|13.33227|-0.00228 +2016-07-01|-19.0|-148.0|13.33202|-6.3E-4 +2016-07-01|-19.0|-149.0|13.32867|0.00103 +2016-07-01|-19.0|-150.0|13.32244|0.00272 +2016-07-01|-19.0|-151.0|13.31355|0.00444 +2016-07-01|-19.0|-152.0|13.30227|0.0062 +2016-07-01|-19.0|-153.0|13.28888|0.00798 +2016-07-01|-19.0|-154.0|13.27366|0.0098 +2016-07-01|-19.0|-155.0|13.25693|0.01165 +2016-07-01|-19.0|-156.0|13.239|0.01354 +2016-07-01|-19.0|-157.0|13.22018|0.01545 +2016-07-01|-19.0|-158.0|13.20078|0.01738 +2016-07-01|-19.0|-159.0|13.18109|0.01932 +2016-07-01|-19.0|-160.0|13.16139|0.02127 +2016-07-01|-19.0|-161.0|13.14193|0.02321 +2016-07-01|-19.0|-162.0|13.12292|0.02513 +2016-07-01|-19.0|-163.0|13.10454|0.02702 +2016-07-01|-19.0|-164.0|13.08691|0.02886 +2016-07-01|-19.0|-165.0|13.07013|0.03065 +2016-07-01|-19.0|-166.0|13.0542|0.03236 +2016-07-01|-19.0|-167.0|13.03908|0.034 +2016-07-01|-19.0|-168.0|13.02467|0.03553 +2016-07-01|-19.0|-169.0|13.01079|0.03697 +2016-07-01|-19.0|-170.0|12.9972|0.03828 +2016-07-01|-19.0|-171.0|12.98358|0.03946 +2016-07-01|-19.0|-172.0|12.96957|0.04052 +2016-07-01|-19.0|-173.0|12.95472|0.04142 +2016-07-01|-19.0|-174.0|12.93855|0.04218 +2016-07-01|-19.0|-175.0|12.92051|0.04279 +2016-07-01|-19.0|-176.0|12.90002|0.04324 +2016-07-01|-19.0|-177.0|12.87647|0.04354 +2016-07-01|-19.0|-178.0|12.84923|0.04368 +2016-07-01|-19.0|-179.0|12.81765|0.04366 +2016-07-01|-20.0|0.0|-16.9674|0.17691 +2016-07-01|-20.0|1.0|-16.43313|0.18348 +2016-07-01|-20.0|2.0|-15.8961|0.18903 +2016-07-01|-20.0|3.0|-15.35937|0.19346 +2016-07-01|-20.0|4.0|-14.82614|0.19667 +2016-07-01|-20.0|5.0|-14.29971|0.1986 +2016-07-01|-20.0|6.0|-13.78343|0.19918 +2016-07-01|-20.0|7.0|-13.28068|0.19838 +2016-07-01|-20.0|8.0|-12.79484|0.19618 +2016-07-01|-20.0|9.0|-12.32918|0.19259 +2016-07-01|-20.0|10.0|-11.88691|0.18761 +2016-07-01|-20.0|11.0|-11.47107|0.18131 +2016-07-01|-20.0|12.0|-11.08451|0.17374 +2016-07-01|-20.0|13.0|-10.72987|0.16499 +2016-07-01|-20.0|14.0|-10.40953|0.15516 +2016-07-01|-20.0|15.0|-10.12558|0.14436 +2016-07-01|-20.0|16.0|-9.87979|0.13272 +2016-07-01|-20.0|17.0|-9.67362|0.12038 +2016-07-01|-20.0|18.0|-9.50815|0.10749 +2016-07-01|-20.0|19.0|-9.38413|0.0942 +2016-07-01|-20.0|20.0|-9.30193|0.08067 +2016-07-01|-20.0|21.0|-9.26155|0.06704 +2016-07-01|-20.0|22.0|-9.26263|0.05348 +2016-07-01|-20.0|23.0|-9.30447|0.04012 +2016-07-01|-20.0|24.0|-9.38598|0.02712 +2016-07-01|-20.0|25.0|-9.50579|0.01459 +2016-07-01|-20.0|26.0|-9.66217|0.00266 +2016-07-01|-20.0|27.0|-9.85315|-0.00857 +2016-07-01|-20.0|28.0|-10.07644|-0.01899 +2016-07-01|-20.0|29.0|-10.32956|-0.02854 +2016-07-01|-20.0|30.0|-10.60979|-0.03713 +2016-07-01|-20.0|31.0|-10.91424|-0.04473 +2016-07-01|-20.0|32.0|-11.23989|-0.05129 +2016-07-01|-20.0|33.0|-11.58358|-0.0568 +2016-07-01|-20.0|34.0|-11.9421|-0.06122 +2016-07-01|-20.0|35.0|-12.31218|-0.06458 +2016-07-01|-20.0|36.0|-12.69053|-0.06687 +2016-07-01|-20.0|37.0|-13.0739|-0.06813 +2016-07-01|-20.0|38.0|-13.45909|-0.06838 +2016-07-01|-20.0|39.0|-13.84297|-0.06765 +2016-07-01|-20.0|40.0|-14.22253|-0.06601 +2016-07-01|-20.0|41.0|-14.59488|-0.06348 +2016-07-01|-20.0|42.0|-14.9573|-0.06014 +2016-07-01|-20.0|43.0|-15.30724|-0.05603 +2016-07-01|-20.0|44.0|-15.64233|-0.05122 +2016-07-01|-20.0|45.0|-15.96043|-0.04576 +2016-07-01|-20.0|46.0|-16.25959|-0.03973 +2016-07-01|-20.0|47.0|-16.53809|-0.03316 +2016-07-01|-20.0|48.0|-16.79444|-0.02614 +2016-07-01|-20.0|49.0|-17.02738|-0.01872 +2016-07-01|-20.0|50.0|-17.23588|-0.01095 +2016-07-01|-20.0|51.0|-17.4191|-0.0029 +2016-07-01|-20.0|52.0|-17.57646|0.00538 +2016-07-01|-20.0|53.0|-17.70756|0.01385 +2016-07-01|-20.0|54.0|-17.8122|0.02244 +2016-07-01|-20.0|55.0|-17.89035|0.03111 +2016-07-01|-20.0|56.0|-17.94215|0.0398 +2016-07-01|-20.0|57.0|-17.9679|0.04849 +2016-07-01|-20.0|58.0|-17.968|0.05712 +2016-07-01|-20.0|59.0|-17.94298|0.06565 +2016-07-01|-20.0|60.0|-17.89344|0.07405 +2016-07-01|-20.0|61.0|-17.82006|0.08227 +2016-07-01|-20.0|62.0|-17.72355|0.09029 +2016-07-01|-20.0|63.0|-17.60465|0.09808 +2016-07-01|-20.0|64.0|-17.4641|0.1056 +2016-07-01|-20.0|65.0|-17.30263|0.11283 +2016-07-01|-20.0|66.0|-17.12095|0.11974 +2016-07-01|-20.0|67.0|-16.91969|0.12631 +2016-07-01|-20.0|68.0|-16.69949|0.13252 +2016-07-01|-20.0|69.0|-16.46086|0.13835 +2016-07-01|-20.0|70.0|-16.20431|0.14377 +2016-07-01|-20.0|71.0|-15.93026|0.14879 +2016-07-01|-20.0|72.0|-15.63906|0.15337 +2016-07-01|-20.0|73.0|-15.33104|0.1575 +2016-07-01|-20.0|74.0|-15.00647|0.16117 +2016-07-01|-20.0|75.0|-14.66561|0.16436 +2016-07-01|-20.0|76.0|-14.30871|0.16707 +2016-07-01|-20.0|77.0|-13.93604|0.16926 +2016-07-01|-20.0|78.0|-13.54792|0.17095 +2016-07-01|-20.0|79.0|-13.1447|0.17209 +2016-07-01|-20.0|80.0|-12.72683|0.1727 +2016-07-01|-20.0|81.0|-12.29488|0.17275 +2016-07-01|-20.0|82.0|-11.84953|0.17223 +2016-07-01|-20.0|83.0|-11.39161|0.17113 +2016-07-01|-20.0|84.0|-10.92209|0.16945 +2016-07-01|-20.0|85.0|-10.44213|0.16718 +2016-07-01|-20.0|86.0|-9.95306|0.16431 +2016-07-01|-20.0|87.0|-9.45637|0.16085 +2016-07-01|-20.0|88.0|-8.95372|0.1568 +2016-07-01|-20.0|89.0|-8.44693|0.15217 +2016-07-01|-20.0|90.0|-7.93794|0.14698 +2016-07-01|-20.0|91.0|-7.4288|0.14123 +2016-07-01|-20.0|92.0|-6.92165|0.13496 +2016-07-01|-20.0|93.0|-6.41867|0.1282 +2016-07-01|-20.0|94.0|-5.92203|0.12097 +2016-07-01|-20.0|95.0|-5.4339|0.11332 +2016-07-01|-20.0|96.0|-4.95634|0.1053 +2016-07-01|-20.0|97.0|-4.49133|0.09695 +2016-07-01|-20.0|98.0|-4.04069|0.08832 +2016-07-01|-20.0|99.0|-3.60605|0.07948 +2016-07-01|-20.0|100.0|-3.18882|0.07046 +2016-07-01|-20.0|101.0|-2.79017|0.06135 +2016-07-01|-20.0|102.0|-2.41101|0.05218 +2016-07-01|-20.0|103.0|-2.05197|0.04303 +2016-07-01|-20.0|104.0|-1.7134|0.03394 +2016-07-01|-20.0|105.0|-1.39533|0.02497 +2016-07-01|-20.0|106.0|-1.09754|0.01618 +2016-07-01|-20.0|107.0|-0.81951|0.00762 +2016-07-01|-20.0|108.0|-0.56048|-6.8E-4 +2016-07-01|-20.0|109.0|-0.31943|-0.00866 +2016-07-01|-20.0|110.0|-0.09514|-0.01629 +2016-07-01|-20.0|111.0|0.11381|-0.02354 +2016-07-01|-20.0|112.0|0.309|-0.03038 +2016-07-01|-20.0|113.0|0.49213|-0.03677 +2016-07-01|-20.0|114.0|0.66498|-0.0427 +2016-07-01|-20.0|115.0|0.82942|-0.04816 +2016-07-01|-20.0|116.0|0.98731|-0.05313 +2016-07-01|-20.0|117.0|1.14051|-0.0576 +2016-07-01|-20.0|118.0|1.29084|-0.06157 +2016-07-01|-20.0|119.0|1.44004|-0.06504 +2016-07-01|-20.0|120.0|1.58975|-0.06801 +2016-07-01|-20.0|121.0|1.74148|-0.07049 +2016-07-01|-20.0|122.0|1.89661|-0.07248 +2016-07-01|-20.0|123.0|2.05634|-0.074 +2016-07-01|-20.0|124.0|2.22169|-0.07507 +2016-07-01|-20.0|125.0|2.3935|-0.07569 +2016-07-01|-20.0|126.0|2.57242|-0.0759 +2016-07-01|-20.0|127.0|2.75889|-0.0757 +2016-07-01|-20.0|128.0|2.9532|-0.07512 +2016-07-01|-20.0|129.0|3.15543|-0.07419 +2016-07-01|-20.0|130.0|3.3655|-0.07292 +2016-07-01|-20.0|131.0|3.58318|-0.07135 +2016-07-01|-20.0|132.0|3.8081|-0.06949 +2016-07-01|-20.0|133.0|4.03979|-0.06738 +2016-07-01|-20.0|134.0|4.27766|-0.06504 +2016-07-01|-20.0|135.0|4.52106|-0.06249 +2016-07-01|-20.0|136.0|4.7693|-0.05976 +2016-07-01|-20.0|137.0|5.02163|-0.05687 +2016-07-01|-20.0|138.0|5.27731|-0.05385 +2016-07-01|-20.0|139.0|5.5356|-0.05072 +2016-07-01|-20.0|140.0|5.79578|-0.0475 +2016-07-01|-20.0|141.0|6.05715|-0.04421 +2016-07-01|-20.0|142.0|6.31908|-0.04087 +2016-07-01|-20.0|143.0|6.58096|-0.03749 +2016-07-01|-20.0|144.0|6.84225|-0.0341 +2016-07-01|-20.0|145.0|7.10246|-0.0307 +2016-07-01|-20.0|146.0|7.36115|-0.02731 +2016-07-01|-20.0|147.0|7.61792|-0.02394 +2016-07-01|-20.0|148.0|7.87243|-0.0206 +2016-07-01|-20.0|149.0|8.12435|-0.01731 +2016-07-01|-20.0|150.0|8.3734|-0.01406 +2016-07-01|-20.0|151.0|8.6193|-0.01087 +2016-07-01|-20.0|152.0|8.86178|-0.00774 +2016-07-01|-20.0|153.0|9.10058|-0.00468 +2016-07-01|-20.0|154.0|9.33542|-0.00169 +2016-07-01|-20.0|155.0|9.56602|0.00123 +2016-07-01|-20.0|156.0|9.79206|0.00407 +2016-07-01|-20.0|157.0|10.01323|0.00683 +2016-07-01|-20.0|158.0|10.22917|0.0095 +2016-07-01|-20.0|159.0|10.43953|0.01209 +2016-07-01|-20.0|160.0|10.64392|0.01459 +2016-07-01|-20.0|161.0|10.84195|0.01701 +2016-07-01|-20.0|162.0|11.03322|0.01934 +2016-07-01|-20.0|163.0|11.21735|0.02157 +2016-07-01|-20.0|164.0|11.39395|0.02372 +2016-07-01|-20.0|165.0|11.56266|0.02577 +2016-07-01|-20.0|166.0|11.72316|0.02773 +2016-07-01|-20.0|167.0|11.87516|0.02959 +2016-07-01|-20.0|168.0|12.01842|0.03136 +2016-07-01|-20.0|169.0|12.15278|0.03302 +2016-07-01|-20.0|170.0|12.27811|0.03458 +2016-07-01|-20.0|171.0|12.39438|0.03603 +2016-07-01|-20.0|172.0|12.50163|0.03737 +2016-07-01|-20.0|173.0|12.59995|0.0386 +2016-07-01|-20.0|174.0|12.68955|0.03971 +2016-07-01|-20.0|175.0|12.77069|0.04069 +2016-07-01|-20.0|176.0|12.8437|0.04155 +2016-07-01|-20.0|177.0|12.90899|0.04227 +2016-07-01|-20.0|178.0|12.96703|0.04286 +2016-07-01|-20.0|179.0|13.01834|0.0433 +2016-07-01|-20.0|-1.0|-17.49601|0.16943 +2016-07-01|-20.0|-2.0|-18.01626|0.16115 +2016-07-01|-20.0|-3.0|-18.52567|0.15222 +2016-07-01|-20.0|-4.0|-19.02198|0.14275 +2016-07-01|-20.0|-5.0|-19.50318|0.13287 +2016-07-01|-20.0|-6.0|-19.96752|0.12271 +2016-07-01|-20.0|-7.0|-20.41349|0.11239 +2016-07-01|-20.0|-8.0|-20.83986|0.10202 +2016-07-01|-20.0|-9.0|-21.24561|0.09173 +2016-07-01|-20.0|-10.0|-21.63|0.0816 +2016-07-01|-20.0|-11.0|-21.99248|0.07173 +2016-07-01|-20.0|-12.0|-22.33272|0.0622 +2016-07-01|-20.0|-13.0|-22.65058|0.05307 +2016-07-01|-20.0|-14.0|-22.94609|0.0444 +2016-07-01|-20.0|-15.0|-23.21942|0.03623 +2016-07-01|-20.0|-16.0|-23.47086|0.02859 +2016-07-01|-20.0|-17.0|-23.7008|0.0215 +2016-07-01|-20.0|-18.0|-23.90971|0.01497 +2016-07-01|-20.0|-19.0|-24.0981|0.00899 +2016-07-01|-20.0|-20.0|-24.26649|0.00354 +2016-07-01|-20.0|-21.0|-24.41543|-0.0014 +2016-07-01|-20.0|-22.0|-24.54543|-0.00588 +2016-07-01|-20.0|-23.0|-24.65696|-0.00993 +2016-07-01|-20.0|-24.0|-24.75043|-0.01361 +2016-07-01|-20.0|-25.0|-24.82618|-0.01698 +2016-07-01|-20.0|-26.0|-24.88446|-0.0201 +2016-07-01|-20.0|-27.0|-24.92543|-0.02302 +2016-07-01|-20.0|-28.0|-24.94914|-0.02582 +2016-07-01|-20.0|-29.0|-24.95552|-0.02856 +2016-07-01|-20.0|-30.0|-24.94442|-0.0313 +2016-07-01|-20.0|-31.0|-24.91554|-0.03411 +2016-07-01|-20.0|-32.0|-24.86851|-0.03702 +2016-07-01|-20.0|-33.0|-24.80283|-0.04011 +2016-07-01|-20.0|-34.0|-24.71795|-0.0434 +2016-07-01|-20.0|-35.0|-24.61318|-0.04694 +2016-07-01|-20.0|-36.0|-24.48782|-0.05075 +2016-07-01|-20.0|-37.0|-24.34107|-0.05485 +2016-07-01|-20.0|-38.0|-24.17211|-0.05926 +2016-07-01|-20.0|-39.0|-23.98007|-0.06399 +2016-07-01|-20.0|-40.0|-23.76409|-0.06902 +2016-07-01|-20.0|-41.0|-23.52328|-0.07435 +2016-07-01|-20.0|-42.0|-23.2568|-0.07997 +2016-07-01|-20.0|-43.0|-22.96381|-0.08585 +2016-07-01|-20.0|-44.0|-22.64352|-0.09196 +2016-07-01|-20.0|-45.0|-22.2952|-0.09826 +2016-07-01|-20.0|-46.0|-21.91821|-0.10472 +2016-07-01|-20.0|-47.0|-21.51196|-0.11129 +2016-07-01|-20.0|-48.0|-21.07599|-0.11793 +2016-07-01|-20.0|-49.0|-20.60993|-0.12458 +2016-07-01|-20.0|-50.0|-20.11356|-0.1312 +2016-07-01|-20.0|-51.0|-19.58677|-0.13774 +2016-07-01|-20.0|-52.0|-19.02961|-0.14413 +2016-07-01|-20.0|-53.0|-18.44229|-0.15034 +2016-07-01|-20.0|-54.0|-17.82519|-0.1563 +2016-07-01|-20.0|-55.0|-17.17887|-0.16197 +2016-07-01|-20.0|-56.0|-16.50407|-0.16729 +2016-07-01|-20.0|-57.0|-15.80173|-0.17223 +2016-07-01|-20.0|-58.0|-15.07299|-0.17673 +2016-07-01|-20.0|-59.0|-14.3192|-0.18076 +2016-07-01|-20.0|-60.0|-13.54187|-0.18429 +2016-07-01|-20.0|-61.0|-12.74277|-0.18727 +2016-07-01|-20.0|-62.0|-11.92382|-0.18969 +2016-07-01|-20.0|-63.0|-11.08714|-0.19153 +2016-07-01|-20.0|-64.0|-10.23502|-0.19278 +2016-07-01|-20.0|-65.0|-9.36991|-0.19341 +2016-07-01|-20.0|-66.0|-8.49441|-0.19345 +2016-07-01|-20.0|-67.0|-7.61124|-0.19288 +2016-07-01|-20.0|-68.0|-6.72319|-0.19172 +2016-07-01|-20.0|-69.0|-5.83315|-0.19 +2016-07-01|-20.0|-70.0|-4.94403|-0.18772 +2016-07-01|-20.0|-71.0|-4.05878|-0.18492 +2016-07-01|-20.0|-72.0|-3.18029|-0.18164 +2016-07-01|-20.0|-73.0|-2.31145|-0.17791 +2016-07-01|-20.0|-74.0|-1.45504|-0.17376 +2016-07-01|-20.0|-75.0|-0.61375|-0.16926 +2016-07-01|-20.0|-76.0|0.20987|-0.16443 +2016-07-01|-20.0|-77.0|1.0134|-0.15932 +2016-07-01|-20.0|-78.0|1.79461|-0.15399 +2016-07-01|-20.0|-79.0|2.55147|-0.14848 +2016-07-01|-20.0|-80.0|3.28214|-0.14284 +2016-07-01|-20.0|-81.0|3.98499|-0.1371 +2016-07-01|-20.0|-82.0|4.65863|-0.13133 +2016-07-01|-20.0|-83.0|5.3019|-0.12554 +2016-07-01|-20.0|-84.0|5.91386|-0.11979 +2016-07-01|-20.0|-85.0|6.49382|-0.11411 +2016-07-01|-20.0|-86.0|7.04129|-0.10854 +2016-07-01|-20.0|-87.0|7.55604|-0.1031 +2016-07-01|-20.0|-88.0|8.03803|-0.09782 +2016-07-01|-20.0|-89.0|8.48744|-0.09274 +2016-07-01|-20.0|-90.0|8.90466|-0.08787 +2016-07-01|-20.0|-91.0|9.29024|-0.08323 +2016-07-01|-20.0|-92.0|9.64494|-0.07883 +2016-07-01|-20.0|-93.0|9.96967|-0.07471 +2016-07-01|-20.0|-94.0|10.2655|-0.07085 +2016-07-01|-20.0|-95.0|10.53362|-0.06728 +2016-07-01|-20.0|-96.0|10.77536|-0.064 +2016-07-01|-20.0|-97.0|10.99215|-0.061 +2016-07-01|-20.0|-98.0|11.18551|-0.0583 +2016-07-01|-20.0|-99.0|11.35703|-0.05589 +2016-07-01|-20.0|-100.0|11.50836|-0.05376 +2016-07-01|-20.0|-101.0|11.6412|-0.05189 +2016-07-01|-20.0|-102.0|11.75724|-0.05029 +2016-07-01|-20.0|-103.0|11.8582|-0.04894 +2016-07-01|-20.0|-104.0|11.94579|-0.04781 +2016-07-01|-20.0|-105.0|12.02166|-0.04689 +2016-07-01|-20.0|-106.0|12.08745|-0.04616 +2016-07-01|-20.0|-107.0|12.14471|-0.0456 +2016-07-01|-20.0|-108.0|12.19492|-0.04518 +2016-07-01|-20.0|-109.0|12.23947|-0.04487 +2016-07-01|-20.0|-110.0|12.27967|-0.04465 +2016-07-01|-20.0|-111.0|12.31668|-0.04449 +2016-07-01|-20.0|-112.0|12.35159|-0.04437 +2016-07-01|-20.0|-113.0|12.38533|-0.04426 +2016-07-01|-20.0|-114.0|12.41871|-0.04414 +2016-07-01|-20.0|-115.0|12.45245|-0.04398 +2016-07-01|-20.0|-116.0|12.48709|-0.04377 +2016-07-01|-20.0|-117.0|12.52309|-0.04349 +2016-07-01|-20.0|-118.0|12.56078|-0.04312 +2016-07-01|-20.0|-119.0|12.60036|-0.04265 +2016-07-01|-20.0|-120.0|12.64194|-0.04207 +2016-07-01|-20.0|-121.0|12.68555|-0.04137 +2016-07-01|-20.0|-122.0|12.7311|-0.04056 +2016-07-01|-20.0|-123.0|12.77846|-0.03963 +2016-07-01|-20.0|-124.0|12.82741|-0.03857 +2016-07-01|-20.0|-125.0|12.87767|-0.03741 +2016-07-01|-20.0|-126.0|12.92895|-0.03614 +2016-07-01|-20.0|-127.0|12.9809|-0.03477 +2016-07-01|-20.0|-128.0|13.03315|-0.03331 +2016-07-01|-20.0|-129.0|13.08532|-0.03178 +2016-07-01|-20.0|-130.0|13.13701|-0.03018 +2016-07-01|-20.0|-131.0|13.18785|-0.02853 +2016-07-01|-20.0|-132.0|13.23746|-0.02684 +2016-07-01|-20.0|-133.0|13.28548|-0.02512 +2016-07-01|-20.0|-134.0|13.33157|-0.02339 +2016-07-01|-20.0|-135.0|13.3754|-0.02164 +2016-07-01|-20.0|-136.0|13.41669|-0.0199 +2016-07-01|-20.0|-137.0|13.45519|-0.01816 +2016-07-01|-20.0|-138.0|13.49066|-0.01644 +2016-07-01|-20.0|-139.0|13.52292|-0.01473 +2016-07-01|-20.0|-140.0|13.55182|-0.01304 +2016-07-01|-20.0|-141.0|13.57722|-0.01137 +2016-07-01|-20.0|-142.0|13.59906|-0.00972 +2016-07-01|-20.0|-143.0|13.61729|-0.00808 +2016-07-01|-20.0|-144.0|13.6319|-0.00645 +2016-07-01|-20.0|-145.0|13.64292|-0.00483 +2016-07-01|-20.0|-146.0|13.6504|-0.00321 +2016-07-01|-20.0|-147.0|13.65446|-0.00158 +2016-07-01|-20.0|-148.0|13.65522|6.0E-5 +2016-07-01|-20.0|-149.0|13.65284|0.00171 +2016-07-01|-20.0|-150.0|13.64751|0.00339 +2016-07-01|-20.0|-151.0|13.63945|0.00509 +2016-07-01|-20.0|-152.0|13.6289|0.00682 +2016-07-01|-20.0|-153.0|13.61613|0.00859 +2016-07-01|-20.0|-154.0|13.60141|0.01039 +2016-07-01|-20.0|-155.0|13.58503|0.01221 +2016-07-01|-20.0|-156.0|13.5673|0.01407 +2016-07-01|-20.0|-157.0|13.54851|0.01595 +2016-07-01|-20.0|-158.0|13.52896|0.01785 +2016-07-01|-20.0|-159.0|13.50894|0.01976 +2016-07-01|-20.0|-160.0|13.48871|0.02167 +2016-07-01|-20.0|-161.0|13.46852|0.02357 +2016-07-01|-20.0|-162.0|13.44858|0.02545 +2016-07-01|-20.0|-163.0|13.42906|0.02731 +2016-07-01|-20.0|-164.0|13.41009|0.02912 +2016-07-01|-20.0|-165.0|13.39177|0.03087 +2016-07-01|-20.0|-166.0|13.3741|0.03256 +2016-07-01|-20.0|-167.0|13.35706|0.03416 +2016-07-01|-20.0|-168.0|13.34055|0.03568 +2016-07-01|-20.0|-169.0|13.3244|0.03708 +2016-07-01|-20.0|-170.0|13.30839|0.03838 +2016-07-01|-20.0|-171.0|13.29222|0.03955 +2016-07-01|-20.0|-172.0|13.27553|0.04059 +2016-07-01|-20.0|-173.0|13.2579|0.04149 +2016-07-01|-20.0|-174.0|13.23886|0.04224 +2016-07-01|-20.0|-175.0|13.21789|0.04285 +2016-07-01|-20.0|-176.0|13.19443|0.04331 +2016-07-01|-20.0|-177.0|13.16787|0.04361 +2016-07-01|-20.0|-178.0|13.13761|0.04376 +2016-07-01|-20.0|-179.0|13.10302|0.04376 +2016-07-01|-21.0|0.0|-17.68429|0.17307 +2016-07-01|-21.0|1.0|-17.161|0.17971 +2016-07-01|-21.0|2.0|-16.6347|0.18527 +2016-07-01|-21.0|3.0|-16.10859|0.18964 +2016-07-01|-21.0|4.0|-15.58605|0.19273 +2016-07-01|-21.0|5.0|-15.07057|0.19446 +2016-07-01|-21.0|6.0|-14.56567|0.19478 +2016-07-01|-21.0|7.0|-14.07493|0.19364 +2016-07-01|-21.0|8.0|-13.60187|0.19102 +2016-07-01|-21.0|9.0|-13.14992|0.18694 +2016-07-01|-21.0|10.0|-12.72242|0.18143 +2016-07-01|-21.0|11.0|-12.3225|0.17453 +2016-07-01|-21.0|12.0|-11.9531|0.16633 +2016-07-01|-21.0|13.0|-11.61688|0.15692 +2016-07-01|-21.0|14.0|-11.31622|0.14642 +2016-07-01|-21.0|15.0|-11.05317|0.13495 +2016-07-01|-21.0|16.0|-10.82945|0.12266 +2016-07-01|-21.0|17.0|-10.64639|0.1097 +2016-07-01|-21.0|18.0|-10.50494|0.09623 +2016-07-01|-21.0|19.0|-10.40569|0.08243 +2016-07-01|-21.0|20.0|-10.34881|0.06845 +2016-07-01|-21.0|21.0|-10.3341|0.05445 +2016-07-01|-21.0|22.0|-10.36098|0.04061 +2016-07-01|-21.0|23.0|-10.42848|0.02707 +2016-07-01|-21.0|24.0|-10.53533|0.01396 +2016-07-01|-21.0|25.0|-10.67987|0.00144 +2016-07-01|-21.0|26.0|-10.8602|-0.0104 +2016-07-01|-21.0|27.0|-11.07409|-0.02144 +2016-07-01|-21.0|28.0|-11.3191|-0.03159 +2016-07-01|-21.0|29.0|-11.59254|-0.04079 +2016-07-01|-21.0|30.0|-11.89156|-0.04898 +2016-07-01|-21.0|31.0|-12.21315|-0.0561 +2016-07-01|-21.0|32.0|-12.55418|-0.06214 +2016-07-01|-21.0|33.0|-12.91144|-0.06707 +2016-07-01|-21.0|34.0|-13.28166|-0.0709 +2016-07-01|-21.0|35.0|-13.66155|-0.07364 +2016-07-01|-21.0|36.0|-14.04787|-0.07531 +2016-07-01|-21.0|37.0|-14.43737|-0.07594 +2016-07-01|-21.0|38.0|-14.82691|-0.07557 +2016-07-01|-21.0|39.0|-15.21344|-0.07423 +2016-07-01|-21.0|40.0|-15.59402|-0.072 +2016-07-01|-21.0|41.0|-15.96588|-0.06891 +2016-07-01|-21.0|42.0|-16.32638|-0.06502 +2016-07-01|-21.0|43.0|-16.67309|-0.0604 +2016-07-01|-21.0|44.0|-17.00376|-0.05511 +2016-07-01|-21.0|45.0|-17.31633|-0.0492 +2016-07-01|-21.0|46.0|-17.60898|-0.04274 +2016-07-01|-21.0|47.0|-17.88008|-0.03579 +2016-07-01|-21.0|48.0|-18.12824|-0.0284 +2016-07-01|-21.0|49.0|-18.35227|-0.02064 +2016-07-01|-21.0|50.0|-18.55121|-0.01255 +2016-07-01|-21.0|51.0|-18.72431|-0.0042 +2016-07-01|-21.0|52.0|-18.87101|0.00436 +2016-07-01|-21.0|53.0|-18.99098|0.01309 +2016-07-01|-21.0|54.0|-19.08404|0.02194 +2016-07-01|-21.0|55.0|-19.15018|0.03086 +2016-07-01|-21.0|56.0|-19.18958|0.03981 +2016-07-01|-21.0|57.0|-19.20252|0.04874 +2016-07-01|-21.0|58.0|-19.18942|0.05761 +2016-07-01|-21.0|59.0|-19.15081|0.06639 +2016-07-01|-21.0|60.0|-19.08727|0.07504 +2016-07-01|-21.0|61.0|-18.99949|0.08352 +2016-07-01|-21.0|62.0|-18.88815|0.09181 +2016-07-01|-21.0|63.0|-18.754|0.09986 +2016-07-01|-21.0|64.0|-18.59777|0.10765 +2016-07-01|-21.0|65.0|-18.42018|0.11516 +2016-07-01|-21.0|66.0|-18.22192|0.12235 +2016-07-01|-21.0|67.0|-18.00367|0.1292 +2016-07-01|-21.0|68.0|-17.76602|0.1357 +2016-07-01|-21.0|69.0|-17.50952|0.14181 +2016-07-01|-21.0|70.0|-17.23469|0.14752 +2016-07-01|-21.0|71.0|-16.94194|0.15281 +2016-07-01|-21.0|72.0|-16.63168|0.15766 +2016-07-01|-21.0|73.0|-16.30422|0.16205 +2016-07-01|-21.0|74.0|-15.95989|0.16597 +2016-07-01|-21.0|75.0|-15.59896|0.16939 +2016-07-01|-21.0|76.0|-15.22172|0.17231 +2016-07-01|-21.0|77.0|-14.82847|0.1747 +2016-07-01|-21.0|78.0|-14.41954|0.17656 +2016-07-01|-21.0|79.0|-13.99534|0.17785 +2016-07-01|-21.0|80.0|-13.55634|0.17858 +2016-07-01|-21.0|81.0|-13.10313|0.17873 +2016-07-01|-21.0|82.0|-12.63644|0.17828 +2016-07-01|-21.0|83.0|-12.1571|0.17723 +2016-07-01|-21.0|84.0|-11.66614|0.17556 +2016-07-01|-21.0|85.0|-11.16472|0.17327 +2016-07-01|-21.0|86.0|-10.6542|0.17037 +2016-07-01|-21.0|87.0|-10.13608|0.16684 +2016-07-01|-21.0|88.0|-9.61205|0.1627 +2016-07-01|-21.0|89.0|-9.08393|0.15795 +2016-07-01|-21.0|90.0|-8.55368|0.15262 +2016-07-01|-21.0|91.0|-8.02336|0.14672 +2016-07-01|-21.0|92.0|-7.49511|0.14028 +2016-07-01|-21.0|93.0|-6.97111|0.13333 +2016-07-01|-21.0|94.0|-6.45355|0.12591 +2016-07-01|-21.0|95.0|-5.94458|0.11806 +2016-07-01|-21.0|96.0|-5.44628|0.10984 +2016-07-01|-21.0|97.0|-4.96062|0.10128 +2016-07-01|-21.0|98.0|-4.48941|0.09245 +2016-07-01|-21.0|99.0|-4.03429|0.08341 +2016-07-01|-21.0|100.0|-3.59665|0.07421 +2016-07-01|-21.0|101.0|-3.17769|0.06492 +2016-07-01|-21.0|102.0|-2.7783|0.05559 +2016-07-01|-21.0|103.0|-2.39913|0.04628 +2016-07-01|-21.0|104.0|-2.0405|0.03706 +2016-07-01|-21.0|105.0|-1.7025|0.02797 +2016-07-01|-21.0|106.0|-1.38489|0.01908 +2016-07-01|-21.0|107.0|-1.08719|0.01042 +2016-07-01|-21.0|108.0|-0.80864|0.00205 +2016-07-01|-21.0|109.0|-0.54825|-0.00599 +2016-07-01|-21.0|110.0|-0.30483|-0.01366 +2016-07-01|-21.0|111.0|-0.07699|-0.02094 +2016-07-01|-21.0|112.0|0.13681|-0.0278 +2016-07-01|-21.0|113.0|0.33825|-0.0342 +2016-07-01|-21.0|114.0|0.52906|-0.04014 +2016-07-01|-21.0|115.0|0.71108|-0.04559 +2016-07-01|-21.0|116.0|0.88612|-0.05055 +2016-07-01|-21.0|117.0|1.05601|-0.05501 +2016-07-01|-21.0|118.0|1.22254|-0.05897 +2016-07-01|-21.0|119.0|1.38742|-0.06242 +2016-07-01|-21.0|120.0|1.55226|-0.06538 +2016-07-01|-21.0|121.0|1.71855|-0.06785 +2016-07-01|-21.0|122.0|1.88764|-0.06983 +2016-07-01|-21.0|123.0|2.06073|-0.07135 +2016-07-01|-21.0|124.0|2.23882|-0.07241 +2016-07-01|-21.0|125.0|2.42276|-0.07304 +2016-07-01|-21.0|126.0|2.61319|-0.07326 +2016-07-01|-21.0|127.0|2.81059|-0.07307 +2016-07-01|-21.0|128.0|3.01525|-0.07252 +2016-07-01|-21.0|129.0|3.22726|-0.07161 +2016-07-01|-21.0|130.0|3.44658|-0.07038 +2016-07-01|-21.0|131.0|3.67301|-0.06885 +2016-07-01|-21.0|132.0|3.90621|-0.06704 +2016-07-01|-21.0|133.0|4.14575|-0.06498 +2016-07-01|-21.0|134.0|4.39108|-0.0627 +2016-07-01|-21.0|135.0|4.64158|-0.06021 +2016-07-01|-21.0|136.0|4.89659|-0.05754 +2016-07-01|-21.0|137.0|5.15542|-0.05472 +2016-07-01|-21.0|138.0|5.41734|-0.05177 +2016-07-01|-21.0|139.0|5.68165|-0.04871 +2016-07-01|-21.0|140.0|5.94766|-0.04556 +2016-07-01|-21.0|141.0|6.2147|-0.04234 +2016-07-01|-21.0|142.0|6.48215|-0.03907 +2016-07-01|-21.0|143.0|6.74942|-0.03576 +2016-07-01|-21.0|144.0|7.01598|-0.03244 +2016-07-01|-21.0|145.0|7.28135|-0.0291 +2016-07-01|-21.0|146.0|7.54509|-0.02578 +2016-07-01|-21.0|147.0|7.80682|-0.02248 +2016-07-01|-21.0|148.0|8.06617|-0.0192 +2016-07-01|-21.0|149.0|8.32283|-0.01596 +2016-07-01|-21.0|150.0|8.5765|-0.01277 +2016-07-01|-21.0|151.0|8.8269|-0.00964 +2016-07-01|-21.0|152.0|9.07375|-0.00656 +2016-07-01|-21.0|153.0|9.31679|-0.00355 +2016-07-01|-21.0|154.0|9.55572|-6.1E-4 +2016-07-01|-21.0|155.0|9.79026|0.00226 +2016-07-01|-21.0|156.0|10.02009|0.00505 +2016-07-01|-21.0|157.0|10.2449|0.00777 +2016-07-01|-21.0|158.0|10.46434|0.0104 +2016-07-01|-21.0|159.0|10.67804|0.01295 +2016-07-01|-21.0|160.0|10.88564|0.01541 +2016-07-01|-21.0|161.0|11.08674|0.01779 +2016-07-01|-21.0|162.0|11.28097|0.02007 +2016-07-01|-21.0|163.0|11.46794|0.02227 +2016-07-01|-21.0|164.0|11.64729|0.02438 +2016-07-01|-21.0|165.0|11.81867|0.0264 +2016-07-01|-21.0|166.0|11.98178|0.02832 +2016-07-01|-21.0|167.0|12.13635|0.03014 +2016-07-01|-21.0|168.0|12.28216|0.03187 +2016-07-01|-21.0|169.0|12.41905|0.0335 +2016-07-01|-21.0|170.0|12.54692|0.03502 +2016-07-01|-21.0|171.0|12.66575|0.03644 +2016-07-01|-21.0|172.0|12.77558|0.03774 +2016-07-01|-21.0|173.0|12.87653|0.03894 +2016-07-01|-21.0|174.0|12.96881|0.04001 +2016-07-01|-21.0|175.0|13.05267|0.04096 +2016-07-01|-21.0|176.0|13.12847|0.04179 +2016-07-01|-21.0|177.0|13.1966|0.04248 +2016-07-01|-21.0|178.0|13.25752|0.04304 +2016-07-01|-21.0|179.0|13.31175|0.04346 +2016-07-01|-21.0|-1.0|-18.20149|0.16548 +2016-07-01|-21.0|-2.0|-18.70979|0.15706 +2016-07-01|-21.0|-3.0|-19.20658|0.14794 +2016-07-01|-21.0|-4.0|-19.68951|0.13826 +2016-07-01|-21.0|-5.0|-20.15652|0.12816 +2016-07-01|-21.0|-6.0|-20.60579|0.11778 +2016-07-01|-21.0|-7.0|-21.0358|0.10724 +2016-07-01|-21.0|-8.0|-21.44531|0.09666 +2016-07-01|-21.0|-9.0|-21.83332|0.08616 +2016-07-01|-21.0|-10.0|-22.19912|0.07585 +2016-07-01|-21.0|-11.0|-22.54221|0.06581 +2016-07-01|-21.0|-12.0|-22.86232|0.05613 +2016-07-01|-21.0|-13.0|-23.15939|0.04688 +2016-07-01|-21.0|-14.0|-23.43352|0.03811 +2016-07-01|-21.0|-15.0|-23.68498|0.02986 +2016-07-01|-21.0|-16.0|-23.91414|0.02217 +2016-07-01|-21.0|-17.0|-24.12149|0.01505 +2016-07-01|-21.0|-18.0|-24.30759|0.00851 +2016-07-01|-21.0|-19.0|-24.47304|0.00254 +2016-07-01|-21.0|-20.0|-24.61847|-0.00289 +2016-07-01|-21.0|-21.0|-24.7445|-0.00779 +2016-07-01|-21.0|-22.0|-24.85173|-0.01221 +2016-07-01|-21.0|-23.0|-24.9407|-0.0162 +2016-07-01|-21.0|-24.0|-25.0119|-0.0198 +2016-07-01|-21.0|-25.0|-25.06574|-0.02308 +2016-07-01|-21.0|-26.0|-25.10252|-0.0261 +2016-07-01|-21.0|-27.0|-25.12245|-0.02893 +2016-07-01|-21.0|-28.0|-25.12562|-0.03162 +2016-07-01|-21.0|-29.0|-25.112|-0.03425 +2016-07-01|-21.0|-30.0|-25.08144|-0.03687 +2016-07-01|-21.0|-31.0|-25.03369|-0.03956 +2016-07-01|-21.0|-32.0|-24.96836|-0.04235 +2016-07-01|-21.0|-33.0|-24.88498|-0.04531 +2016-07-01|-21.0|-34.0|-24.78296|-0.04848 +2016-07-01|-21.0|-35.0|-24.66162|-0.05189 +2016-07-01|-21.0|-36.0|-24.52022|-0.05558 +2016-07-01|-21.0|-37.0|-24.35796|-0.05956 +2016-07-01|-21.0|-38.0|-24.17396|-0.06385 +2016-07-01|-21.0|-39.0|-23.96733|-0.06845 +2016-07-01|-21.0|-40.0|-23.73717|-0.07336 +2016-07-01|-21.0|-41.0|-23.48257|-0.07857 +2016-07-01|-21.0|-42.0|-23.20261|-0.08406 +2016-07-01|-21.0|-43.0|-22.89643|-0.08982 +2016-07-01|-21.0|-44.0|-22.56321|-0.0958 +2016-07-01|-21.0|-45.0|-22.20217|-0.10197 +2016-07-01|-21.0|-46.0|-21.81261|-0.10831 +2016-07-01|-21.0|-47.0|-21.39395|-0.11475 +2016-07-01|-21.0|-48.0|-20.94567|-0.12126 +2016-07-01|-21.0|-49.0|-20.46739|-0.12778 +2016-07-01|-21.0|-50.0|-19.95885|-0.13426 +2016-07-01|-21.0|-51.0|-19.41995|-0.14066 +2016-07-01|-21.0|-52.0|-18.85071|-0.14691 +2016-07-01|-21.0|-53.0|-18.25136|-0.15296 +2016-07-01|-21.0|-54.0|-17.62226|-0.15877 +2016-07-01|-21.0|-55.0|-16.964|-0.16428 +2016-07-01|-21.0|-56.0|-16.27733|-0.16944 +2016-07-01|-21.0|-57.0|-15.56321|-0.1742 +2016-07-01|-21.0|-58.0|-14.82282|-0.17852 +2016-07-01|-21.0|-59.0|-14.05751|-0.18237 +2016-07-01|-21.0|-60.0|-13.26887|-0.18571 +2016-07-01|-21.0|-61.0|-12.45869|-0.1885 +2016-07-01|-21.0|-62.0|-11.62893|-0.19073 +2016-07-01|-21.0|-63.0|-10.78176|-0.19236 +2016-07-01|-21.0|-64.0|-9.91952|-0.1934 +2016-07-01|-21.0|-65.0|-9.04471|-0.19384 +2016-07-01|-21.0|-66.0|-8.15997|-0.19366 +2016-07-01|-21.0|-67.0|-7.26804|-0.19289 +2016-07-01|-21.0|-68.0|-6.37177|-0.19153 +2016-07-01|-21.0|-69.0|-5.47408|-0.1896 +2016-07-01|-21.0|-70.0|-4.57792|-0.18712 +2016-07-01|-21.0|-71.0|-3.68622|-0.18413 +2016-07-01|-21.0|-72.0|-2.80193|-0.18066 +2016-07-01|-21.0|-73.0|-1.92792|-0.17674 +2016-07-01|-21.0|-74.0|-1.06698|-0.17243 +2016-07-01|-21.0|-75.0|-0.2218|-0.16776 +2016-07-01|-21.0|-76.0|0.60508|-0.16277 +2016-07-01|-21.0|-77.0|1.41127|-0.15753 +2016-07-01|-21.0|-78.0|2.19456|-0.15207 +2016-07-01|-21.0|-79.0|2.95293|-0.14644 +2016-07-01|-21.0|-80.0|3.68457|-0.14068 +2016-07-01|-21.0|-81.0|4.38792|-0.13485 +2016-07-01|-21.0|-82.0|5.06159|-0.12899 +2016-07-01|-21.0|-83.0|5.70447|-0.12313 +2016-07-01|-21.0|-84.0|6.31567|-0.11731 +2016-07-01|-21.0|-85.0|6.89451|-0.11158 +2016-07-01|-21.0|-86.0|7.44058|-0.10597 +2016-07-01|-21.0|-87.0|7.95365|-0.1005 +2016-07-01|-21.0|-88.0|8.43375|-0.0952 +2016-07-01|-21.0|-89.0|8.88107|-0.0901 +2016-07-01|-21.0|-90.0|9.29605|-0.08523 +2016-07-01|-21.0|-91.0|9.67928|-0.08059 +2016-07-01|-21.0|-92.0|10.03154|-0.07621 +2016-07-01|-21.0|-93.0|10.35377|-0.0721 +2016-07-01|-21.0|-94.0|10.64707|-0.06827 +2016-07-01|-21.0|-95.0|10.91265|-0.06472 +2016-07-01|-21.0|-96.0|11.15186|-0.06147 +2016-07-01|-21.0|-97.0|11.36615|-0.05852 +2016-07-01|-21.0|-98.0|11.55705|-0.05585 +2016-07-01|-21.0|-99.0|11.72618|-0.05348 +2016-07-01|-21.0|-100.0|11.87518|-0.05139 +2016-07-01|-21.0|-101.0|12.00577|-0.04958 +2016-07-01|-21.0|-102.0|12.11964|-0.04803 +2016-07-01|-21.0|-103.0|12.21852|-0.04672 +2016-07-01|-21.0|-104.0|12.3041|-0.04564 +2016-07-01|-21.0|-105.0|12.37805|-0.04477 +2016-07-01|-21.0|-106.0|12.442|-0.04409 +2016-07-01|-21.0|-107.0|12.49748|-0.04357 +2016-07-01|-21.0|-108.0|12.54599|-0.0432 +2016-07-01|-21.0|-109.0|12.5889|-0.04293 +2016-07-01|-21.0|-110.0|12.6275|-0.04276 +2016-07-01|-21.0|-111.0|12.66296|-0.04265 +2016-07-01|-21.0|-112.0|12.69636|-0.04257 +2016-07-01|-21.0|-113.0|12.72862|-0.0425 +2016-07-01|-21.0|-114.0|12.76056|-0.04242 +2016-07-01|-21.0|-115.0|12.79286|-0.04231 +2016-07-01|-21.0|-116.0|12.8261|-0.04214 +2016-07-01|-21.0|-117.0|12.86071|-0.0419 +2016-07-01|-21.0|-118.0|12.89703|-0.04157 +2016-07-01|-21.0|-119.0|12.93527|-0.04114 +2016-07-01|-21.0|-120.0|12.97554|-0.0406 +2016-07-01|-21.0|-121.0|13.01787|-0.03995 +2016-07-01|-21.0|-122.0|13.06219|-0.03918 +2016-07-01|-21.0|-123.0|13.10836|-0.03828 +2016-07-01|-21.0|-124.0|13.15618|-0.03727 +2016-07-01|-21.0|-125.0|13.20538|-0.03615 +2016-07-01|-21.0|-126.0|13.25568|-0.03491 +2016-07-01|-21.0|-127.0|13.30673|-0.03358 +2016-07-01|-21.0|-128.0|13.35819|-0.03216 +2016-07-01|-21.0|-129.0|13.40966|-0.03067 +2016-07-01|-21.0|-130.0|13.46079|-0.0291 +2016-07-01|-21.0|-131.0|13.51118|-0.02748 +2016-07-01|-21.0|-132.0|13.56047|-0.02582 +2016-07-01|-21.0|-133.0|13.6083|-0.02413 +2016-07-01|-21.0|-134.0|13.65433|-0.02242 +2016-07-01|-21.0|-135.0|13.69824|-0.0207 +2016-07-01|-21.0|-136.0|13.73975|-0.01897 +2016-07-01|-21.0|-137.0|13.77859|-0.01725 +2016-07-01|-21.0|-138.0|13.81454|-0.01555 +2016-07-01|-21.0|-139.0|13.84739|-0.01385 +2016-07-01|-21.0|-140.0|13.87698|-0.01218 +2016-07-01|-21.0|-141.0|13.90319|-0.01052 +2016-07-01|-21.0|-142.0|13.92591|-0.00888 +2016-07-01|-21.0|-143.0|13.9451|-0.00725 +2016-07-01|-21.0|-144.0|13.96072|-0.00563 +2016-07-01|-21.0|-145.0|13.97279|-0.00402 +2016-07-01|-21.0|-146.0|13.98136|-0.00241 +2016-07-01|-21.0|-147.0|13.98651|-8.0E-4 +2016-07-01|-21.0|-148.0|13.98835|8.3E-4 +2016-07-01|-21.0|-149.0|13.98702|0.00247 +2016-07-01|-21.0|-150.0|13.98269|0.00413 +2016-07-01|-21.0|-151.0|13.97557|0.00581 +2016-07-01|-21.0|-152.0|13.96588|0.00752 +2016-07-01|-21.0|-153.0|13.95386|0.00926 +2016-07-01|-21.0|-154.0|13.93978|0.01103 +2016-07-01|-21.0|-155.0|13.92391|0.01283 +2016-07-01|-21.0|-156.0|13.90653|0.01465 +2016-07-01|-21.0|-157.0|13.88794|0.0165 +2016-07-01|-21.0|-158.0|13.86842|0.01836 +2016-07-01|-21.0|-159.0|13.84823|0.02023 +2016-07-01|-21.0|-160.0|13.82765|0.0221 +2016-07-01|-21.0|-161.0|13.80691|0.02397 +2016-07-01|-21.0|-162.0|13.78621|0.02582 +2016-07-01|-21.0|-163.0|13.76573|0.02763 +2016-07-01|-21.0|-164.0|13.74561|0.02941 +2016-07-01|-21.0|-165.0|13.72591|0.03113 +2016-07-01|-21.0|-166.0|13.70668|0.03278 +2016-07-01|-21.0|-167.0|13.68787|0.03435 +2016-07-01|-21.0|-168.0|13.66942|0.03584 +2016-07-01|-21.0|-169.0|13.65115|0.03722 +2016-07-01|-21.0|-170.0|13.63285|0.0385 +2016-07-01|-21.0|-171.0|13.61425|0.03965 +2016-07-01|-21.0|-172.0|13.595|0.04068 +2016-07-01|-21.0|-173.0|13.5747|0.04157 +2016-07-01|-21.0|-174.0|13.55289|0.04232 +2016-07-01|-21.0|-175.0|13.52907|0.04293 +2016-07-01|-21.0|-176.0|13.50269|0.04339 +2016-07-01|-21.0|-177.0|13.47318|0.0437 +2016-07-01|-21.0|-178.0|13.43995|0.04386 +2016-07-01|-21.0|-179.0|13.40237|0.04388 +2016-07-01|-22.0|0.0|-18.38389|0.16825 +2016-07-01|-22.0|1.0|-17.87536|0.17486 +2016-07-01|-22.0|2.0|-17.36371|0.18033 +2016-07-01|-22.0|3.0|-16.8523|0.18457 +2016-07-01|-22.0|4.0|-16.34467|0.18745 +2016-07-01|-22.0|5.0|-15.84445|0.18892 +2016-07-01|-22.0|6.0|-15.35534|0.1889 +2016-07-01|-22.0|7.0|-14.88104|0.18736 +2016-07-01|-22.0|8.0|-14.42522|0.18428 +2016-07-01|-22.0|9.0|-13.99144|0.17968 +2016-07-01|-22.0|10.0|-13.58312|0.1736 +2016-07-01|-22.0|11.0|-13.20347|0.1661 +2016-07-01|-22.0|12.0|-12.85545|0.15726 +2016-07-01|-22.0|13.0|-12.54174|0.1472 +2016-07-01|-22.0|14.0|-12.26468|0.13605 +2016-07-01|-22.0|15.0|-12.02627|0.12395 +2016-07-01|-22.0|16.0|-11.82812|0.11105 +2016-07-01|-22.0|17.0|-11.67142|0.09753 +2016-07-01|-22.0|18.0|-11.55699|0.08356 +2016-07-01|-22.0|19.0|-11.48519|0.06932 +2016-07-01|-22.0|20.0|-11.45602|0.05497 +2016-07-01|-22.0|21.0|-11.46905|0.04071 +2016-07-01|-22.0|22.0|-11.52345|0.02668 +2016-07-01|-22.0|23.0|-11.61804|0.01305 +2016-07-01|-22.0|24.0|-11.7513|-5.0E-5 +2016-07-01|-22.0|25.0|-11.92137|-0.01248 +2016-07-01|-22.0|26.0|-12.12611|-0.02412 +2016-07-01|-22.0|27.0|-12.36312|-0.03488 +2016-07-01|-22.0|28.0|-12.62976|-0.04469 +2016-07-01|-22.0|29.0|-12.92321|-0.05346 +2016-07-01|-22.0|30.0|-13.24049|-0.06115 +2016-07-01|-22.0|31.0|-13.57849|-0.06774 +2016-07-01|-22.0|32.0|-13.93401|-0.07319 +2016-07-01|-22.0|33.0|-14.30381|-0.07752 +2016-07-01|-22.0|34.0|-14.6846|-0.08072 +2016-07-01|-22.0|35.0|-15.07312|-0.08282 +2016-07-01|-22.0|36.0|-15.46614|-0.08384 +2016-07-01|-22.0|37.0|-15.8605|-0.08383 +2016-07-01|-22.0|38.0|-16.25311|-0.08283 +2016-07-01|-22.0|39.0|-16.64103|-0.0809 +2016-07-01|-22.0|40.0|-17.02142|-0.07808 +2016-07-01|-22.0|41.0|-17.39162|-0.07444 +2016-07-01|-22.0|42.0|-17.7491|-0.07003 +2016-07-01|-22.0|43.0|-18.09156|-0.06492 +2016-07-01|-22.0|44.0|-18.41686|-0.05917 +2016-07-01|-22.0|45.0|-18.72307|-0.05284 +2016-07-01|-22.0|46.0|-19.00845|-0.04598 +2016-07-01|-22.0|47.0|-19.27149|-0.03866 +2016-07-01|-22.0|48.0|-19.51089|-0.03094 +2016-07-01|-22.0|49.0|-19.72554|-0.02286 +2016-07-01|-22.0|50.0|-19.91454|-0.01448 +2016-07-01|-22.0|51.0|-20.07722|-0.00586 +2016-07-01|-22.0|52.0|-20.21306|0.00297 +2016-07-01|-22.0|53.0|-20.32176|0.01195 +2016-07-01|-22.0|54.0|-20.40317|0.02104 +2016-07-01|-22.0|55.0|-20.45731|0.0302 +2016-07-01|-22.0|56.0|-20.48435|0.03938 +2016-07-01|-22.0|57.0|-20.48459|0.04854 +2016-07-01|-22.0|58.0|-20.45843|0.05766 +2016-07-01|-22.0|59.0|-20.4064|0.06668 +2016-07-01|-22.0|60.0|-20.32908|0.07557 +2016-07-01|-22.0|61.0|-20.22712|0.08431 +2016-07-01|-22.0|62.0|-20.1012|0.09286 +2016-07-01|-22.0|63.0|-19.95206|0.10118 +2016-07-01|-22.0|64.0|-19.7804|0.10925 +2016-07-01|-22.0|65.0|-19.58695|0.11704 +2016-07-01|-22.0|66.0|-19.37238|0.12452 +2016-07-01|-22.0|67.0|-19.13736|0.13167 +2016-07-01|-22.0|68.0|-18.8825|0.13847 +2016-07-01|-22.0|69.0|-18.60834|0.14488 +2016-07-01|-22.0|70.0|-18.3154|0.15089 +2016-07-01|-22.0|71.0|-18.00412|0.15647 +2016-07-01|-22.0|72.0|-17.67491|0.16161 +2016-07-01|-22.0|73.0|-17.32812|0.16628 +2016-07-01|-22.0|74.0|-16.96409|0.17046 +2016-07-01|-22.0|75.0|-16.58312|0.17414 +2016-07-01|-22.0|76.0|-16.18553|0.17729 +2016-07-01|-22.0|77.0|-15.77164|0.17991 +2016-07-01|-22.0|78.0|-15.34182|0.18196 +2016-07-01|-22.0|79.0|-14.8965|0.18343 +2016-07-01|-22.0|80.0|-14.4362|0.18431 +2016-07-01|-22.0|81.0|-13.96154|0.18458 +2016-07-01|-22.0|82.0|-13.47324|0.18422 +2016-07-01|-22.0|83.0|-12.9722|0.18324 +2016-07-01|-22.0|84.0|-12.45945|0.18161 +2016-07-01|-22.0|85.0|-11.93619|0.17933 +2016-07-01|-22.0|86.0|-11.40378|0.1764 +2016-07-01|-22.0|87.0|-10.86376|0.17283 +2016-07-01|-22.0|88.0|-10.31782|0.16862 +2016-07-01|-22.0|89.0|-9.76779|0.16377 +2016-07-01|-22.0|90.0|-9.21565|0.15832 +2016-07-01|-22.0|91.0|-8.66347|0.15228 +2016-07-01|-22.0|92.0|-8.11339|0.14569 +2016-07-01|-22.0|93.0|-7.56759|0.13857 +2016-07-01|-22.0|94.0|-7.02827|0.13097 +2016-07-01|-22.0|95.0|-6.49758|0.12293 +2016-07-01|-22.0|96.0|-5.97761|0.11451 +2016-07-01|-22.0|97.0|-5.47031|0.10576 +2016-07-01|-22.0|98.0|-4.97751|0.09674 +2016-07-01|-22.0|99.0|-4.50083|0.08751 +2016-07-01|-22.0|100.0|-4.04169|0.07813 +2016-07-01|-22.0|101.0|-3.60127|0.06866 +2016-07-01|-22.0|102.0|-3.18047|0.05917 +2016-07-01|-22.0|103.0|-2.77995|0.04972 +2016-07-01|-22.0|104.0|-2.40006|0.04036 +2016-07-01|-22.0|105.0|-2.04087|0.03115 +2016-07-01|-22.0|106.0|-1.70218|0.02215 +2016-07-01|-22.0|107.0|-1.38352|0.01341 +2016-07-01|-22.0|108.0|-1.08416|0.00496 +2016-07-01|-22.0|109.0|-0.80315|-0.00314 +2016-07-01|-22.0|110.0|-0.53931|-0.01087 +2016-07-01|-22.0|111.0|-0.2913|-0.01818 +2016-07-01|-22.0|112.0|-0.05761|-0.02506 +2016-07-01|-22.0|113.0|0.16339|-0.03148 +2016-07-01|-22.0|114.0|0.37341|-0.03743 +2016-07-01|-22.0|115.0|0.57422|-0.04288 +2016-07-01|-22.0|116.0|0.76762|-0.04784 +2016-07-01|-22.0|117.0|0.9554|-0.05229 +2016-07-01|-22.0|118.0|1.13929|-0.05624 +2016-07-01|-22.0|119.0|1.32098|-0.05968 +2016-07-01|-22.0|120.0|1.50206|-0.06263 +2016-07-01|-22.0|121.0|1.68398|-0.06509 +2016-07-01|-22.0|122.0|1.86808|-0.06707 +2016-07-01|-22.0|123.0|2.05554|-0.06858 +2016-07-01|-22.0|124.0|2.24736|-0.06965 +2016-07-01|-22.0|125.0|2.44439|-0.07029 +2016-07-01|-22.0|126.0|2.64727|-0.07052 +2016-07-01|-22.0|127.0|2.8565|-0.07036 +2016-07-01|-22.0|128.0|3.07236|-0.06983 +2016-07-01|-22.0|129.0|3.29499|-0.06896 +2016-07-01|-22.0|130.0|3.52437|-0.06777 +2016-07-01|-22.0|131.0|3.76033|-0.06628 +2016-07-01|-22.0|132.0|4.00257|-0.06452 +2016-07-01|-22.0|133.0|4.25068|-0.06251 +2016-07-01|-22.0|134.0|4.50417|-0.06029 +2016-07-01|-22.0|135.0|4.76244|-0.05786 +2016-07-01|-22.0|136.0|5.02489|-0.05526 +2016-07-01|-22.0|137.0|5.29084|-0.05251 +2016-07-01|-22.0|138.0|5.55962|-0.04963 +2016-07-01|-22.0|139.0|5.83055|-0.04664 +2016-07-01|-22.0|140.0|6.10297|-0.04357 +2016-07-01|-22.0|141.0|6.37623|-0.04042 +2016-07-01|-22.0|142.0|6.64973|-0.03722 +2016-07-01|-22.0|143.0|6.92291|-0.03399 +2016-07-01|-22.0|144.0|7.19525|-0.03073 +2016-07-01|-22.0|145.0|7.46628|-0.02747 +2016-07-01|-22.0|146.0|7.73555|-0.02422 +2016-07-01|-22.0|147.0|8.00269|-0.02098 +2016-07-01|-22.0|148.0|8.26733|-0.01777 +2016-07-01|-22.0|149.0|8.52916|-0.01459 +2016-07-01|-22.0|150.0|8.78787|-0.01146 +2016-07-01|-22.0|151.0|9.04318|-0.00838 +2016-07-01|-22.0|152.0|9.29479|-0.00536 +2016-07-01|-22.0|153.0|9.54243|-0.0024 +2016-07-01|-22.0|154.0|9.78582|5.0E-4 +2016-07-01|-22.0|155.0|10.02465|0.00332 +2016-07-01|-22.0|156.0|10.25861|0.00606 +2016-07-01|-22.0|157.0|10.48739|0.00873 +2016-07-01|-22.0|158.0|10.71062|0.01132 +2016-07-01|-22.0|159.0|10.92796|0.01383 +2016-07-01|-22.0|160.0|11.13904|0.01625 +2016-07-01|-22.0|161.0|11.34348|0.01859 +2016-07-01|-22.0|162.0|11.54091|0.02084 +2016-07-01|-22.0|163.0|11.73096|0.023 +2016-07-01|-22.0|164.0|11.91328|0.02507 +2016-07-01|-22.0|165.0|12.08755|0.02705 +2016-07-01|-22.0|166.0|12.25346|0.02893 +2016-07-01|-22.0|167.0|12.41078|0.03072 +2016-07-01|-22.0|168.0|12.5593|0.03241 +2016-07-01|-22.0|169.0|12.69887|0.03401 +2016-07-01|-22.0|170.0|12.82941|0.03549 +2016-07-01|-22.0|171.0|12.95092|0.03687 +2016-07-01|-22.0|172.0|13.06344|0.03814 +2016-07-01|-22.0|173.0|13.16712|0.0393 +2016-07-01|-22.0|174.0|13.26215|0.04034 +2016-07-01|-22.0|175.0|13.3488|0.04126 +2016-07-01|-22.0|176.0|13.42743|0.04206 +2016-07-01|-22.0|177.0|13.49843|0.04272 +2016-07-01|-22.0|178.0|13.56225|0.04326 +2016-07-01|-22.0|179.0|13.61941|0.04365 +2016-07-01|-22.0|-1.0|-18.88612|0.16064 +2016-07-01|-22.0|-2.0|-19.3791|0.15216 +2016-07-01|-22.0|-3.0|-19.86012|0.14296 +2016-07-01|-22.0|-4.0|-20.32677|0.13318 +2016-07-01|-22.0|-5.0|-20.7769|0.12297 +2016-07-01|-22.0|-6.0|-21.20867|0.11246 +2016-07-01|-22.0|-7.0|-21.62055|0.10179 +2016-07-01|-22.0|-8.0|-22.01128|0.09109 +2016-07-01|-22.0|-9.0|-22.37989|0.08048 +2016-07-01|-22.0|-10.0|-22.72569|0.07006 +2016-07-01|-22.0|-11.0|-23.04823|0.05994 +2016-07-01|-22.0|-12.0|-23.34729|0.05019 +2016-07-01|-22.0|-13.0|-23.62288|0.04088 +2016-07-01|-22.0|-14.0|-23.87517|0.03207 +2016-07-01|-22.0|-15.0|-24.10449|0.0238 +2016-07-01|-22.0|-16.0|-24.31131|0.01611 +2016-07-01|-22.0|-17.0|-24.4962|0.00901 +2016-07-01|-22.0|-18.0|-24.65978|0.00249 +2016-07-01|-22.0|-19.0|-24.80273|-0.00344 +2016-07-01|-22.0|-20.0|-24.92577|-0.00882 +2016-07-01|-22.0|-21.0|-25.02958|-0.01366 +2016-07-01|-22.0|-22.0|-25.11483|-0.01801 +2016-07-01|-22.0|-23.0|-25.18212|-0.02192 +2016-07-01|-22.0|-24.0|-25.232|-0.02544 +2016-07-01|-22.0|-25.0|-25.26491|-0.02863 +2016-07-01|-22.0|-26.0|-25.28122|-0.03155 +2016-07-01|-22.0|-27.0|-25.28115|-0.03428 +2016-07-01|-22.0|-28.0|-25.26483|-0.03687 +2016-07-01|-22.0|-29.0|-25.23225|-0.03939 +2016-07-01|-22.0|-30.0|-25.18329|-0.04191 +2016-07-01|-22.0|-31.0|-25.11767|-0.04449 +2016-07-01|-22.0|-32.0|-25.03503|-0.04718 +2016-07-01|-22.0|-33.0|-24.93488|-0.05003 +2016-07-01|-22.0|-34.0|-24.81662|-0.05309 +2016-07-01|-22.0|-35.0|-24.67955|-0.05639 +2016-07-01|-22.0|-36.0|-24.52292|-0.05996 +2016-07-01|-22.0|-37.0|-24.34587|-0.06383 +2016-07-01|-22.0|-38.0|-24.14752|-0.06801 +2016-07-01|-22.0|-39.0|-23.92694|-0.0725 +2016-07-01|-22.0|-40.0|-23.68318|-0.07729 +2016-07-01|-22.0|-41.0|-23.41528|-0.08239 +2016-07-01|-22.0|-42.0|-23.12232|-0.08777 +2016-07-01|-22.0|-43.0|-22.80338|-0.0934 +2016-07-01|-22.0|-44.0|-22.4576|-0.09926 +2016-07-01|-22.0|-45.0|-22.08416|-0.10532 +2016-07-01|-22.0|-46.0|-21.68236|-0.11153 +2016-07-01|-22.0|-47.0|-21.25155|-0.11784 +2016-07-01|-22.0|-48.0|-20.79121|-0.12422 +2016-07-01|-22.0|-49.0|-20.30093|-0.13061 +2016-07-01|-22.0|-50.0|-19.78044|-0.13695 +2016-07-01|-22.0|-51.0|-19.22962|-0.1432 +2016-07-01|-22.0|-52.0|-18.64851|-0.14931 +2016-07-01|-22.0|-53.0|-18.03731|-0.15521 +2016-07-01|-22.0|-54.0|-17.39643|-0.16086 +2016-07-01|-22.0|-55.0|-16.72644|-0.1662 +2016-07-01|-22.0|-56.0|-16.02812|-0.17119 +2016-07-01|-22.0|-57.0|-15.30246|-0.17578 +2016-07-01|-22.0|-58.0|-14.55067|-0.17993 +2016-07-01|-22.0|-59.0|-13.77414|-0.1836 +2016-07-01|-22.0|-60.0|-12.9745|-0.18674 +2016-07-01|-22.0|-61.0|-12.15357|-0.18934 +2016-07-01|-22.0|-62.0|-11.31336|-0.19137 +2016-07-01|-22.0|-63.0|-10.45609|-0.19282 +2016-07-01|-22.0|-64.0|-9.58414|-0.19366 +2016-07-01|-22.0|-65.0|-8.70004|-0.19389 +2016-07-01|-22.0|-66.0|-7.80649|-0.19352 +2016-07-01|-22.0|-67.0|-6.90627|-0.19255 +2016-07-01|-22.0|-68.0|-6.00225|-0.19099 +2016-07-01|-22.0|-69.0|-5.09737|-0.18887 +2016-07-01|-22.0|-70.0|-4.19461|-0.18621 +2016-07-01|-22.0|-71.0|-3.29694|-0.18304 +2016-07-01|-22.0|-72.0|-2.40728|-0.1794 +2016-07-01|-22.0|-73.0|-1.52853|-0.17532 +2016-07-01|-22.0|-74.0|-0.66346|-0.17086 +2016-07-01|-22.0|-75.0|0.18524|-0.16604 +2016-07-01|-22.0|-76.0|1.01505|-0.16093 +2016-07-01|-22.0|-77.0|1.82359|-0.15556 +2016-07-01|-22.0|-78.0|2.60868|-0.14999 +2016-07-01|-22.0|-79.0|3.36835|-0.14426 +2016-07-01|-22.0|-80.0|4.1008|-0.13841 +2016-07-01|-22.0|-81.0|4.8045|-0.13251 +2016-07-01|-22.0|-82.0|5.47812|-0.12657 +2016-07-01|-22.0|-83.0|6.12057|-0.12066 +2016-07-01|-22.0|-84.0|6.731|-0.1148 +2016-07-01|-22.0|-85.0|7.30878|-0.10904 +2016-07-01|-22.0|-86.0|7.85352|-0.1034 +2016-07-01|-22.0|-87.0|8.36504|-0.09791 +2016-07-01|-22.0|-88.0|8.84339|-0.09261 +2016-07-01|-22.0|-89.0|9.28881|-0.08751 +2016-07-01|-22.0|-90.0|9.70176|-0.08264 +2016-07-01|-22.0|-91.0|10.08287|-0.07801 +2016-07-01|-22.0|-92.0|10.43293|-0.07365 +2016-07-01|-22.0|-93.0|10.75292|-0.06956 +2016-07-01|-22.0|-94.0|11.04395|-0.06576 +2016-07-01|-22.0|-95.0|11.30726|-0.06225 +2016-07-01|-22.0|-96.0|11.54421|-0.05903 +2016-07-01|-22.0|-97.0|11.75626|-0.05612 +2016-07-01|-22.0|-98.0|11.94496|-0.05349 +2016-07-01|-22.0|-99.0|12.11192|-0.05116 +2016-07-01|-22.0|-100.0|12.25881|-0.04912 +2016-07-01|-22.0|-101.0|12.38734|-0.04735 +2016-07-01|-22.0|-102.0|12.4992|-0.04584 +2016-07-01|-22.0|-103.0|12.59613|-0.04457 +2016-07-01|-22.0|-104.0|12.67981|-0.04354 +2016-07-01|-22.0|-105.0|12.75192|-0.04271 +2016-07-01|-22.0|-106.0|12.81405|-0.04207 +2016-07-01|-22.0|-107.0|12.86776|-0.0416 +2016-07-01|-22.0|-108.0|12.91453|-0.04126 +2016-07-01|-22.0|-109.0|12.95572|-0.04103 +2016-07-01|-22.0|-110.0|12.99262|-0.04089 +2016-07-01|-22.0|-111.0|13.0264|-0.04082 +2016-07-01|-22.0|-112.0|13.05811|-0.04077 +2016-07-01|-22.0|-113.0|13.08869|-0.04074 +2016-07-01|-22.0|-114.0|13.11894|-0.0407 +2016-07-01|-22.0|-115.0|13.14957|-0.04061 +2016-07-01|-22.0|-116.0|13.18112|-0.04048 +2016-07-01|-22.0|-117.0|13.21405|-0.04027 +2016-07-01|-22.0|-118.0|13.24869|-0.03997 +2016-07-01|-22.0|-119.0|13.28526|-0.03958 +2016-07-01|-22.0|-120.0|13.32389|-0.03907 +2016-07-01|-22.0|-121.0|13.3646|-0.03845 +2016-07-01|-22.0|-122.0|13.40733|-0.03771 +2016-07-01|-22.0|-123.0|13.45197|-0.03686 +2016-07-01|-22.0|-124.0|13.49832|-0.03588 +2016-07-01|-22.0|-125.0|13.54613|-0.03479 +2016-07-01|-22.0|-126.0|13.59512|-0.03359 +2016-07-01|-22.0|-127.0|13.64497|-0.03229 +2016-07-01|-22.0|-128.0|13.69532|-0.03091 +2016-07-01|-22.0|-129.0|13.74582|-0.02944 +2016-07-01|-22.0|-130.0|13.7961|-0.02791 +2016-07-01|-22.0|-131.0|13.84579|-0.02632 +2016-07-01|-22.0|-132.0|13.89453|-0.02469 +2016-07-01|-22.0|-133.0|13.94195|-0.02302 +2016-07-01|-22.0|-134.0|13.98773|-0.02134 +2016-07-01|-22.0|-135.0|14.03155|-0.01964 +2016-07-01|-22.0|-136.0|14.07312|-0.01794 +2016-07-01|-22.0|-137.0|14.11217|-0.01624 +2016-07-01|-22.0|-138.0|14.14847|-0.01455 +2016-07-01|-22.0|-139.0|14.18181|-0.01287 +2016-07-01|-22.0|-140.0|14.21203|-0.01121 +2016-07-01|-22.0|-141.0|14.23898|-0.00956 +2016-07-01|-22.0|-142.0|14.26255|-0.00793 +2016-07-01|-22.0|-143.0|14.28267|-0.00632 +2016-07-01|-22.0|-144.0|14.29931|-0.00472 +2016-07-01|-22.0|-145.0|14.31246|-0.00312 +2016-07-01|-22.0|-146.0|14.32214|-0.00152 +2016-07-01|-22.0|-147.0|14.32843|8.0E-5 +2016-07-01|-22.0|-148.0|14.33141|0.00168 +2016-07-01|-22.0|-149.0|14.33121|0.0033 +2016-07-01|-22.0|-150.0|14.32798|0.00494 +2016-07-01|-22.0|-151.0|14.32191|0.0066 +2016-07-01|-22.0|-152.0|14.3132|0.00829 +2016-07-01|-22.0|-153.0|14.30206|0.01 +2016-07-01|-22.0|-154.0|14.28876|0.01174 +2016-07-01|-22.0|-155.0|14.27355|0.0135 +2016-07-01|-22.0|-156.0|14.2567|0.01529 +2016-07-01|-22.0|-157.0|14.23847|0.0171 +2016-07-01|-22.0|-158.0|14.21914|0.01892 +2016-07-01|-22.0|-159.0|14.19898|0.02075 +2016-07-01|-22.0|-160.0|14.17823|0.02259 +2016-07-01|-22.0|-161.0|14.15712|0.02441 +2016-07-01|-22.0|-162.0|14.13586|0.02622 +2016-07-01|-22.0|-163.0|14.11461|0.028 +2016-07-01|-22.0|-164.0|14.0935|0.02973 +2016-07-01|-22.0|-165.0|14.07262|0.03142 +2016-07-01|-22.0|-166.0|14.052|0.03303 +2016-07-01|-22.0|-167.0|14.0316|0.03458 +2016-07-01|-22.0|-168.0|14.01137|0.03604 +2016-07-01|-22.0|-169.0|13.99114|0.0374 +2016-07-01|-22.0|-170.0|13.97071|0.03865 +2016-07-01|-22.0|-171.0|13.94982|0.03979 +2016-07-01|-22.0|-172.0|13.92814|0.0408 +2016-07-01|-22.0|-173.0|13.90528|0.04168 +2016-07-01|-22.0|-174.0|13.8808|0.04243 +2016-07-01|-22.0|-175.0|13.85422|0.04304 +2016-07-01|-22.0|-176.0|13.82502|0.0435 +2016-07-01|-22.0|-177.0|13.79262|0.04382 +2016-07-01|-22.0|-178.0|13.75646|0.044 +2016-07-01|-22.0|-179.0|13.71593|0.04403 +2016-07-01|-23.0|0.0|-19.05929|0.16249 +2016-07-01|-23.0|1.0|-18.56928|0.16897 +2016-07-01|-23.0|2.0|-18.07626|0.17426 +2016-07-01|-23.0|3.0|-17.58371|0.17826 +2016-07-01|-23.0|4.0|-17.0953|0.18085 +2016-07-01|-23.0|5.0|-16.61477|0.18197 +2016-07-01|-23.0|6.0|-16.14596|0.18154 +2016-07-01|-23.0|7.0|-15.69269|0.17954 +2016-07-01|-23.0|8.0|-15.25872|0.17595 +2016-07-01|-23.0|9.0|-14.8477|0.17079 +2016-07-01|-23.0|10.0|-14.46309|0.16412 +2016-07-01|-23.0|11.0|-14.10815|0.156 +2016-07-01|-23.0|12.0|-13.78585|0.14654 +2016-07-01|-23.0|13.0|-13.49881|0.13586 +2016-07-01|-23.0|14.0|-13.24933|0.12409 +2016-07-01|-23.0|15.0|-13.0393|0.1114 +2016-07-01|-23.0|16.0|-12.87019|0.09796 +2016-07-01|-23.0|17.0|-12.74307|0.08395 +2016-07-01|-23.0|18.0|-12.65853|0.06956 +2016-07-01|-23.0|19.0|-12.61677|0.05497 +2016-07-01|-23.0|20.0|-12.61755|0.04036 +2016-07-01|-23.0|21.0|-12.66021|0.02592 +2016-07-01|-23.0|22.0|-12.7437|0.01182 +2016-07-01|-23.0|23.0|-12.8666|-0.0018 +2016-07-01|-23.0|24.0|-13.02717|-0.01479 +2016-07-01|-23.0|25.0|-13.22334|-0.02701 +2016-07-01|-23.0|26.0|-13.45277|-0.03837 +2016-07-01|-23.0|27.0|-13.71289|-0.04877 +2016-07-01|-23.0|28.0|-14.00091|-0.05814 +2016-07-01|-23.0|29.0|-14.31389|-0.06641 +2016-07-01|-23.0|30.0|-14.64876|-0.07355 +2016-07-01|-23.0|31.0|-15.00233|-0.07955 +2016-07-01|-23.0|32.0|-15.37138|-0.08438 +2016-07-01|-23.0|33.0|-15.75264|-0.08806 +2016-07-01|-23.0|34.0|-16.14286|-0.09061 +2016-07-01|-23.0|35.0|-16.53881|-0.09205 +2016-07-01|-23.0|36.0|-16.93734|-0.09243 +2016-07-01|-23.0|37.0|-17.33534|-0.09179 +2016-07-01|-23.0|38.0|-17.72987|-0.09017 +2016-07-01|-23.0|39.0|-18.11805|-0.08765 +2016-07-01|-23.0|40.0|-18.49719|-0.08427 +2016-07-01|-23.0|41.0|-18.86473|-0.0801 +2016-07-01|-23.0|42.0|-19.21831|-0.0752 +2016-07-01|-23.0|43.0|-19.55571|-0.06963 +2016-07-01|-23.0|44.0|-19.87494|-0.06345 +2016-07-01|-23.0|45.0|-20.17417|-0.05673 +2016-07-01|-23.0|46.0|-20.45179|-0.04951 +2016-07-01|-23.0|47.0|-20.70638|-0.04186 +2016-07-01|-23.0|48.0|-20.93672|-0.03382 +2016-07-01|-23.0|49.0|-21.14179|-0.02546 +2016-07-01|-23.0|50.0|-21.32077|-0.01682 +2016-07-01|-23.0|51.0|-21.47301|-0.00794 +2016-07-01|-23.0|52.0|-21.59805|0.00113 +2016-07-01|-23.0|53.0|-21.69563|0.01034 +2016-07-01|-23.0|54.0|-21.7656|0.01965 +2016-07-01|-23.0|55.0|-21.80802|0.02902 +2016-07-01|-23.0|56.0|-21.82303|0.03842 +2016-07-01|-23.0|57.0|-21.81094|0.04781 +2016-07-01|-23.0|58.0|-21.77215|0.05715 +2016-07-01|-23.0|59.0|-21.70715|0.06641 +2016-07-01|-23.0|60.0|-21.61652|0.07554 +2016-07-01|-23.0|61.0|-21.50088|0.08453 +2016-07-01|-23.0|62.0|-21.3609|0.09334 +2016-07-01|-23.0|63.0|-21.19727|0.10194 +2016-07-01|-23.0|64.0|-21.01071|0.11029 +2016-07-01|-23.0|65.0|-20.8019|0.11837 +2016-07-01|-23.0|66.0|-20.57152|0.12615 +2016-07-01|-23.0|67.0|-20.32021|0.13361 +2016-07-01|-23.0|68.0|-20.04858|0.14071 +2016-07-01|-23.0|69.0|-19.75719|0.14744 +2016-07-01|-23.0|70.0|-19.44655|0.15376 +2016-07-01|-23.0|71.0|-19.11711|0.15966 +2016-07-01|-23.0|72.0|-18.76929|0.16511 +2016-07-01|-23.0|73.0|-18.40346|0.17008 +2016-07-01|-23.0|74.0|-18.01998|0.17456 +2016-07-01|-23.0|75.0|-17.61918|0.17851 +2016-07-01|-23.0|76.0|-17.20139|0.18193 +2016-07-01|-23.0|77.0|-16.76698|0.18479 +2016-07-01|-23.0|78.0|-16.31634|0.18707 +2016-07-01|-23.0|79.0|-15.84993|0.18874 +2016-07-01|-23.0|80.0|-15.36829|0.1898 +2016-07-01|-23.0|81.0|-14.87207|0.19022 +2016-07-01|-23.0|82.0|-14.36204|0.18999 +2016-07-01|-23.0|83.0|-13.8391|0.1891 +2016-07-01|-23.0|84.0|-13.30431|0.18754 +2016-07-01|-23.0|85.0|-12.75889|0.1853 +2016-07-01|-23.0|86.0|-12.20423|0.18238 +2016-07-01|-23.0|87.0|-11.64187|0.17879 +2016-07-01|-23.0|88.0|-11.07353|0.17453 +2016-07-01|-23.0|89.0|-10.50105|0.16961 +2016-07-01|-23.0|90.0|-9.92641|0.16406 +2016-07-01|-23.0|91.0|-9.35169|0.15791 +2016-07-01|-23.0|92.0|-8.77904|0.15117 +2016-07-01|-23.0|93.0|-8.21066|0.1439 +2016-07-01|-23.0|94.0|-7.64873|0.13614 +2016-07-01|-23.0|95.0|-7.09541|0.12793 +2016-07-01|-23.0|96.0|-6.55278|0.11933 +2016-07-01|-23.0|97.0|-6.02283|0.1104 +2016-07-01|-23.0|98.0|-5.50735|0.10119 +2016-07-01|-23.0|99.0|-5.008|0.09178 +2016-07-01|-23.0|100.0|-4.52618|0.08222 +2016-07-01|-23.0|101.0|-4.06309|0.07259 +2016-07-01|-23.0|102.0|-3.61965|0.06294 +2016-07-01|-23.0|103.0|-3.1965|0.05334 +2016-07-01|-23.0|104.0|-2.79403|0.04385 +2016-07-01|-23.0|105.0|-2.41233|0.03452 +2016-07-01|-23.0|106.0|-2.05122|0.02541 +2016-07-01|-23.0|107.0|-1.71025|0.01657 +2016-07-01|-23.0|108.0|-1.38873|0.00805 +2016-07-01|-23.0|109.0|-1.08572|-1.2E-4 +2016-07-01|-23.0|110.0|-0.80011|-0.00789 +2016-07-01|-23.0|111.0|-0.53057|-0.01525 +2016-07-01|-23.0|112.0|-0.27564|-0.02216 +2016-07-01|-23.0|113.0|-0.03374|-0.0286 +2016-07-01|-23.0|114.0|0.1968|-0.03456 +2016-07-01|-23.0|115.0|0.41772|-0.04002 +2016-07-01|-23.0|116.0|0.63076|-0.04497 +2016-07-01|-23.0|117.0|0.83767|-0.04942 +2016-07-01|-23.0|118.0|1.04015|-0.05336 +2016-07-01|-23.0|119.0|1.23986|-0.0568 +2016-07-01|-23.0|120.0|1.43835|-0.05975 +2016-07-01|-23.0|121.0|1.63705|-0.0622 +2016-07-01|-23.0|122.0|1.83728|-0.06418 +2016-07-01|-23.0|123.0|2.0402|-0.0657 +2016-07-01|-23.0|124.0|2.24681|-0.06678 +2016-07-01|-23.0|125.0|2.45794|-0.06743 +2016-07-01|-23.0|126.0|2.67427|-0.06768 +2016-07-01|-23.0|127.0|2.89627|-0.06755 +2016-07-01|-23.0|128.0|3.12427|-0.06705 +2016-07-01|-23.0|129.0|3.35842|-0.06621 +2016-07-01|-23.0|130.0|3.59873|-0.06506 +2016-07-01|-23.0|131.0|3.84507|-0.06362 +2016-07-01|-23.0|132.0|4.09715|-0.06192 +2016-07-01|-23.0|133.0|4.35463|-0.05997 +2016-07-01|-23.0|134.0|4.61702|-0.05781 +2016-07-01|-23.0|135.0|4.8838|-0.05545 +2016-07-01|-23.0|136.0|5.15439|-0.05292 +2016-07-01|-23.0|137.0|5.42814|-0.05024 +2016-07-01|-23.0|138.0|5.70444|-0.04743 +2016-07-01|-23.0|139.0|5.98262|-0.04452 +2016-07-01|-23.0|140.0|6.26205|-0.04152 +2016-07-01|-23.0|141.0|6.54213|-0.03845 +2016-07-01|-23.0|142.0|6.82226|-0.03533 +2016-07-01|-23.0|143.0|7.1019|-0.03217 +2016-07-01|-23.0|144.0|7.38055|-0.02899 +2016-07-01|-23.0|145.0|7.65774|-0.0258 +2016-07-01|-23.0|146.0|7.93305|-0.02261 +2016-07-01|-23.0|147.0|8.20607|-0.01944 +2016-07-01|-23.0|148.0|8.47647|-0.01629 +2016-07-01|-23.0|149.0|8.74392|-0.01318 +2016-07-01|-23.0|150.0|9.00809|-0.01011 +2016-07-01|-23.0|151.0|9.26871|-0.00709 +2016-07-01|-23.0|152.0|9.52548|-0.00412 +2016-07-01|-23.0|153.0|9.77811|-0.00121 +2016-07-01|-23.0|154.0|10.02631|0.00163 +2016-07-01|-23.0|155.0|10.26978|0.0044 +2016-07-01|-23.0|156.0|10.5082|0.0071 +2016-07-01|-23.0|157.0|10.74125|0.00973 +2016-07-01|-23.0|158.0|10.96858|0.01228 +2016-07-01|-23.0|159.0|11.18985|0.01474 +2016-07-01|-23.0|160.0|11.40468|0.01713 +2016-07-01|-23.0|161.0|11.61271|0.01942 +2016-07-01|-23.0|162.0|11.81357|0.02164 +2016-07-01|-23.0|163.0|12.00693|0.02376 +2016-07-01|-23.0|164.0|12.19243|0.02579 +2016-07-01|-23.0|165.0|12.36977|0.02774 +2016-07-01|-23.0|166.0|12.53867|0.02958 +2016-07-01|-23.0|167.0|12.6989|0.03134 +2016-07-01|-23.0|168.0|12.85027|0.03299 +2016-07-01|-23.0|169.0|12.99266|0.03455 +2016-07-01|-23.0|170.0|13.126|0.036 +2016-07-01|-23.0|171.0|13.25029|0.03734 +2016-07-01|-23.0|172.0|13.3656|0.03858 +2016-07-01|-23.0|173.0|13.47208|0.03971 +2016-07-01|-23.0|174.0|13.56992|0.04071 +2016-07-01|-23.0|175.0|13.65942|0.0416 +2016-07-01|-23.0|176.0|13.74091|0.04236 +2016-07-01|-23.0|177.0|13.8148|0.043 +2016-07-01|-23.0|178.0|13.88153|0.04351 +2016-07-01|-23.0|179.0|13.94161|0.04388 +2016-07-01|-23.0|-1.0|-19.54298|0.15498 +2016-07-01|-23.0|-2.0|-20.01732|0.14656 +2016-07-01|-23.0|-3.0|-20.47951|0.13739 +2016-07-01|-23.0|-4.0|-20.92706|0.12761 +2016-07-01|-23.0|-5.0|-21.35779|0.11739 +2016-07-01|-23.0|-6.0|-21.76982|0.10686 +2016-07-01|-23.0|-7.0|-22.16159|0.09616 +2016-07-01|-23.0|-8.0|-22.53184|0.08544 +2016-07-01|-23.0|-9.0|-22.87962|0.0748 +2016-07-01|-23.0|-10.0|-23.20427|0.06437 +2016-07-01|-23.0|-11.0|-23.50536|0.05424 +2016-07-01|-23.0|-12.0|-23.78274|0.04449 +2016-07-01|-23.0|-13.0|-24.03644|0.03519 +2016-07-01|-23.0|-14.0|-24.2667|0.02641 +2016-07-01|-23.0|-15.0|-24.47392|0.01818 +2016-07-01|-23.0|-16.0|-24.65863|0.01053 +2016-07-01|-23.0|-17.0|-24.82144|0.00347 +2016-07-01|-23.0|-18.0|-24.96305|-0.00298 +2016-07-01|-23.0|-19.0|-25.08422|-0.00885 +2016-07-01|-23.0|-20.0|-25.18568|-0.01414 +2016-07-01|-23.0|-21.0|-25.26819|-0.01891 +2016-07-01|-23.0|-22.0|-25.33246|-0.02318 +2016-07-01|-23.0|-23.0|-25.37915|-0.027 +2016-07-01|-23.0|-24.0|-25.40883|-0.03043 +2016-07-01|-23.0|-25.0|-25.42198|-0.03353 +2016-07-01|-23.0|-26.0|-25.41899|-0.03637 +2016-07-01|-23.0|-27.0|-25.40012|-0.039 +2016-07-01|-23.0|-28.0|-25.36549|-0.0415 +2016-07-01|-23.0|-29.0|-25.31512|-0.04394 +2016-07-01|-23.0|-30.0|-25.24887|-0.04637 +2016-07-01|-23.0|-31.0|-25.16649|-0.04885 +2016-07-01|-23.0|-32.0|-25.06759|-0.05145 +2016-07-01|-23.0|-33.0|-24.95166|-0.05421 +2016-07-01|-23.0|-34.0|-24.8181|-0.05718 +2016-07-01|-23.0|-35.0|-24.66619|-0.06038 +2016-07-01|-23.0|-36.0|-24.49513|-0.06386 +2016-07-01|-23.0|-37.0|-24.30405|-0.06764 +2016-07-01|-23.0|-38.0|-24.09204|-0.07172 +2016-07-01|-23.0|-39.0|-23.85813|-0.0761 +2016-07-01|-23.0|-40.0|-23.60134|-0.0808 +2016-07-01|-23.0|-41.0|-23.32068|-0.08579 +2016-07-01|-23.0|-42.0|-23.01517|-0.09106 +2016-07-01|-23.0|-43.0|-22.68388|-0.09659 +2016-07-01|-23.0|-44.0|-22.3259|-0.10234 +2016-07-01|-23.0|-45.0|-21.9404|-0.10827 +2016-07-01|-23.0|-46.0|-21.52664|-0.11436 +2016-07-01|-23.0|-47.0|-21.08395|-0.12055 +2016-07-01|-23.0|-48.0|-20.61178|-0.1268 +2016-07-01|-23.0|-49.0|-20.10973|-0.13305 +2016-07-01|-23.0|-50.0|-19.5775|-0.13926 +2016-07-01|-23.0|-51.0|-19.01498|-0.14536 +2016-07-01|-23.0|-52.0|-18.4222|-0.15132 +2016-07-01|-23.0|-53.0|-17.79938|-0.15707 +2016-07-01|-23.0|-54.0|-17.14693|-0.16256 +2016-07-01|-23.0|-55.0|-16.46545|-0.16774 +2016-07-01|-23.0|-56.0|-15.75575|-0.17256 +2016-07-01|-23.0|-57.0|-15.01884|-0.17697 +2016-07-01|-23.0|-58.0|-14.25596|-0.18094 +2016-07-01|-23.0|-59.0|-13.46854|-0.18442 +2016-07-01|-23.0|-60.0|-12.65825|-0.18738 +2016-07-01|-23.0|-61.0|-11.82696|-0.18979 +2016-07-01|-23.0|-62.0|-10.97671|-0.19163 +2016-07-01|-23.0|-63.0|-10.10978|-0.19288 +2016-07-01|-23.0|-64.0|-9.22858|-0.19353 +2016-07-01|-23.0|-65.0|-8.33569|-0.19357 +2016-07-01|-23.0|-66.0|-7.43382|-0.19301 +2016-07-01|-23.0|-67.0|-6.5258|-0.19185 +2016-07-01|-23.0|-68.0|-5.61454|-0.19012 +2016-07-01|-23.0|-69.0|-4.703|-0.18782 +2016-07-01|-23.0|-70.0|-3.79415|-0.18499 +2016-07-01|-23.0|-71.0|-2.89099|-0.18167 +2016-07-01|-23.0|-72.0|-1.99644|-0.17787 +2016-07-01|-23.0|-73.0|-1.1134|-0.17365 +2016-07-01|-23.0|-74.0|-0.24463|-0.16905 +2016-07-01|-23.0|-75.0|0.6072|-0.16412 +2016-07-01|-23.0|-76.0|1.43958|-0.15889 +2016-07-01|-23.0|-77.0|2.25017|-0.15342 +2016-07-01|-23.0|-78.0|3.0368|-0.14776 +2016-07-01|-23.0|-79.0|3.79753|-0.14195 +2016-07-01|-23.0|-80.0|4.53062|-0.13604 +2016-07-01|-23.0|-81.0|5.23456|-0.13008 +2016-07-01|-23.0|-82.0|5.90804|-0.1241 +2016-07-01|-23.0|-83.0|6.55003|-0.11815 +2016-07-01|-23.0|-84.0|7.15971|-0.11227 +2016-07-01|-23.0|-85.0|7.73649|-0.10648 +2016-07-01|-23.0|-86.0|8.28|-0.10083 +2016-07-01|-23.0|-87.0|8.79011|-0.09534 +2016-07-01|-23.0|-88.0|9.26689|-0.09005 +2016-07-01|-23.0|-89.0|9.71062|-0.08496 +2016-07-01|-23.0|-90.0|10.12177|-0.0801 +2016-07-01|-23.0|-91.0|10.50101|-0.0755 +2016-07-01|-23.0|-92.0|10.84915|-0.07117 +2016-07-01|-23.0|-93.0|11.16718|-0.06711 +2016-07-01|-23.0|-94.0|11.45623|-0.06334 +2016-07-01|-23.0|-95.0|11.71756|-0.05987 +2016-07-01|-23.0|-96.0|11.95253|-0.05669 +2016-07-01|-23.0|-97.0|12.16263|-0.05381 +2016-07-01|-23.0|-98.0|12.3494|-0.05123 +2016-07-01|-23.0|-99.0|12.51445|-0.04894 +2016-07-01|-23.0|-100.0|12.65947|-0.04694 +2016-07-01|-23.0|-101.0|12.78615|-0.04521 +2016-07-01|-23.0|-102.0|12.89619|-0.04374 +2016-07-01|-23.0|-103.0|12.99132|-0.04251 +2016-07-01|-23.0|-104.0|13.07323|-0.04151 +2016-07-01|-23.0|-105.0|13.14356|-0.04072 +2016-07-01|-23.0|-106.0|13.20394|-0.04012 +2016-07-01|-23.0|-107.0|13.25589|-0.03967 +2016-07-01|-23.0|-108.0|13.30089|-0.03936 +2016-07-01|-23.0|-109.0|13.3403|-0.03917 +2016-07-01|-23.0|-110.0|13.3754|-0.03906 +2016-07-01|-23.0|-111.0|13.40736|-0.03901 +2016-07-01|-23.0|-112.0|13.43722|-0.03899 +2016-07-01|-23.0|-113.0|13.46592|-0.03898 +2016-07-01|-23.0|-114.0|13.49427|-0.03896 +2016-07-01|-23.0|-115.0|13.52295|-0.0389 +2016-07-01|-23.0|-116.0|13.55255|-0.03879 +2016-07-01|-23.0|-117.0|13.5835|-0.0386 +2016-07-01|-23.0|-118.0|13.61614|-0.03833 +2016-07-01|-23.0|-119.0|13.65072|-0.03796 +2016-07-01|-23.0|-120.0|13.68736|-0.03748 +2016-07-01|-23.0|-121.0|13.72611|-0.03689 +2016-07-01|-23.0|-122.0|13.76691|-0.03618 +2016-07-01|-23.0|-123.0|13.80967|-0.03535 +2016-07-01|-23.0|-124.0|13.8542|-0.0344 +2016-07-01|-23.0|-125.0|13.90028|-0.03334 +2016-07-01|-23.0|-126.0|13.94763|-0.03217 +2016-07-01|-23.0|-127.0|13.99594|-0.03091 +2016-07-01|-23.0|-128.0|14.04488|-0.02955 +2016-07-01|-23.0|-129.0|14.09411|-0.02811 +2016-07-01|-23.0|-130.0|14.14327|-0.02661 +2016-07-01|-23.0|-131.0|14.19199|-0.02505 +2016-07-01|-23.0|-132.0|14.23991|-0.02344 +2016-07-01|-23.0|-133.0|14.2867|-0.0218 +2016-07-01|-23.0|-134.0|14.33202|-0.02014 +2016-07-01|-23.0|-135.0|14.37555|-0.01846 +2016-07-01|-23.0|-136.0|14.417|-0.01678 +2016-07-01|-23.0|-137.0|14.45611|-0.0151 +2016-07-01|-23.0|-138.0|14.49264|-0.01343 +2016-07-01|-23.0|-139.0|14.52637|-0.01177 +2016-07-01|-23.0|-140.0|14.55711|-0.01013 +2016-07-01|-23.0|-141.0|14.58473|-0.0085 +2016-07-01|-23.0|-142.0|14.6091|-0.00688 +2016-07-01|-23.0|-143.0|14.63013|-0.00528 +2016-07-01|-23.0|-144.0|14.64777|-0.00369 +2016-07-01|-23.0|-145.0|14.66199|-0.00211 +2016-07-01|-23.0|-146.0|14.67282|-5.3E-4 +2016-07-01|-23.0|-147.0|14.68029|0.00105 +2016-07-01|-23.0|-148.0|14.68447|0.00263 +2016-07-01|-23.0|-149.0|14.68548|0.00423 +2016-07-01|-23.0|-150.0|14.68344|0.00585 +2016-07-01|-23.0|-151.0|14.67852|0.00748 +2016-07-01|-23.0|-152.0|14.6709|0.00913 +2016-07-01|-23.0|-153.0|14.66078|0.01081 +2016-07-01|-23.0|-154.0|14.64841|0.01252 +2016-07-01|-23.0|-155.0|14.634|0.01425 +2016-07-01|-23.0|-156.0|14.61783|0.016 +2016-07-01|-23.0|-157.0|14.60014|0.01777 +2016-07-01|-23.0|-158.0|14.58118|0.01955 +2016-07-01|-23.0|-159.0|14.56122|0.02134 +2016-07-01|-23.0|-160.0|14.54049|0.02313 +2016-07-01|-23.0|-161.0|14.51921|0.02491 +2016-07-01|-23.0|-162.0|14.49758|0.02668 +2016-07-01|-23.0|-163.0|14.47575|0.02841 +2016-07-01|-23.0|-164.0|14.45385|0.03011 +2016-07-01|-23.0|-165.0|14.43198|0.03175 +2016-07-01|-23.0|-166.0|14.41015|0.03334 +2016-07-01|-23.0|-167.0|14.38835|0.03485 +2016-07-01|-23.0|-168.0|14.36651|0.03628 +2016-07-01|-23.0|-169.0|14.34449|0.03761 +2016-07-01|-23.0|-170.0|14.3221|0.03884 +2016-07-01|-23.0|-171.0|14.29907|0.03996 +2016-07-01|-23.0|-172.0|14.2751|0.04096 +2016-07-01|-23.0|-173.0|14.24981|0.04183 +2016-07-01|-23.0|-174.0|14.22279|0.04258 +2016-07-01|-23.0|-175.0|14.19356|0.04318 +2016-07-01|-23.0|-176.0|14.16162|0.04365 +2016-07-01|-23.0|-177.0|14.12642|0.04398 +2016-07-01|-23.0|-178.0|14.08739|0.04417 +2016-07-01|-23.0|-179.0|14.04397|0.04421 +2016-07-01|-24.0|0.0|-19.70349|0.1559 +2016-07-01|-24.0|1.0|-19.23571|0.16212 +2016-07-01|-24.0|2.0|-18.76525|0.16712 +2016-07-01|-24.0|3.0|-18.29569|0.17078 +2016-07-01|-24.0|4.0|-17.83079|0.17299 +2016-07-01|-24.0|5.0|-17.3744|0.17367 +2016-07-01|-24.0|6.0|-16.93044|0.17276 +2016-07-01|-24.0|7.0|-16.50279|0.17023 +2016-07-01|-24.0|8.0|-16.0953|0.16608 +2016-07-01|-24.0|9.0|-15.71164|0.16034 +2016-07-01|-24.0|10.0|-15.3553|0.15306 +2016-07-01|-24.0|11.0|-15.02952|0.14432 +2016-07-01|-24.0|12.0|-14.73723|0.13425 +2016-07-01|-24.0|13.0|-14.48098|0.12297 +2016-07-01|-24.0|14.0|-14.26298|0.11063 +2016-07-01|-24.0|15.0|-14.08497|0.09742 +2016-07-01|-24.0|16.0|-13.94827|0.08351 +2016-07-01|-24.0|17.0|-13.85376|0.06909 +2016-07-01|-24.0|18.0|-13.80186|0.05437 +2016-07-01|-24.0|19.0|-13.79251|0.03953 +2016-07-01|-24.0|20.0|-13.82527|0.02477 +2016-07-01|-24.0|21.0|-13.89924|0.01026 +2016-07-01|-24.0|22.0|-14.01315|-0.00382 +2016-07-01|-24.0|23.0|-14.16535|-0.01731 +2016-07-01|-24.0|24.0|-14.3539|-0.03008 +2016-07-01|-24.0|25.0|-14.57653|-0.04201 +2016-07-01|-24.0|26.0|-14.83073|-0.05299 +2016-07-01|-24.0|27.0|-15.11379|-0.06294 +2016-07-01|-24.0|28.0|-15.42279|-0.0718 +2016-07-01|-24.0|29.0|-15.7547|-0.07951 +2016-07-01|-24.0|30.0|-16.10639|-0.08606 +2016-07-01|-24.0|31.0|-16.47464|-0.09142 +2016-07-01|-24.0|32.0|-16.85622|-0.0956 +2016-07-01|-24.0|33.0|-17.2479|-0.09862 +2016-07-01|-24.0|34.0|-17.64645|-0.10051 +2016-07-01|-24.0|35.0|-18.04874|-0.1013 +2016-07-01|-24.0|36.0|-18.45167|-0.10104 +2016-07-01|-24.0|37.0|-18.85229|-0.09978 +2016-07-01|-24.0|38.0|-19.24772|-0.09757 +2016-07-01|-24.0|39.0|-19.63525|-0.09449 +2016-07-01|-24.0|40.0|-20.0123|-0.09058 +2016-07-01|-24.0|41.0|-20.37645|-0.08592 +2016-07-01|-24.0|42.0|-20.72548|-0.08056 +2016-07-01|-24.0|43.0|-21.0573|-0.07457 +2016-07-01|-24.0|44.0|-21.37004|-0.06801 +2016-07-01|-24.0|45.0|-21.662|-0.06092 +2016-07-01|-24.0|46.0|-21.93167|-0.05338 +2016-07-01|-24.0|47.0|-22.17772|-0.04543 +2016-07-01|-24.0|48.0|-22.39903|-0.03713 +2016-07-01|-24.0|49.0|-22.59464|-0.02851 +2016-07-01|-24.0|50.0|-22.7638|-0.01963 +2016-07-01|-24.0|51.0|-22.9059|-0.01053 +2016-07-01|-24.0|52.0|-23.02054|-0.00126 +2016-07-01|-24.0|53.0|-23.10744|0.00816 +2016-07-01|-24.0|54.0|-23.16651|0.01767 +2016-07-01|-24.0|55.0|-23.19777|0.02725 +2016-07-01|-24.0|56.0|-23.2014|0.03685 +2016-07-01|-24.0|57.0|-23.17766|0.04645 +2016-07-01|-24.0|58.0|-23.12695|0.056 +2016-07-01|-24.0|59.0|-23.04974|0.06548 +2016-07-01|-24.0|60.0|-22.94656|0.07486 +2016-07-01|-24.0|61.0|-22.81802|0.08409 +2016-07-01|-24.0|62.0|-22.66477|0.09316 +2016-07-01|-24.0|63.0|-22.48746|0.10203 +2016-07-01|-24.0|64.0|-22.28678|0.11067 +2016-07-01|-24.0|65.0|-22.06339|0.11905 +2016-07-01|-24.0|66.0|-21.81796|0.12714 +2016-07-01|-24.0|67.0|-21.55111|0.13491 +2016-07-01|-24.0|68.0|-21.26344|0.14234 +2016-07-01|-24.0|69.0|-20.9555|0.1494 +2016-07-01|-24.0|70.0|-20.6278|0.15605 +2016-07-01|-24.0|71.0|-20.28081|0.16228 +2016-07-01|-24.0|72.0|-19.91494|0.16806 +2016-07-01|-24.0|73.0|-19.53059|0.17336 +2016-07-01|-24.0|74.0|-19.12813|0.17815 +2016-07-01|-24.0|75.0|-18.70791|0.18242 +2016-07-01|-24.0|76.0|-18.27029|0.18613 +2016-07-01|-24.0|77.0|-17.81566|0.18926 +2016-07-01|-24.0|78.0|-17.34444|0.1918 +2016-07-01|-24.0|79.0|-16.85711|0.19371 +2016-07-01|-24.0|80.0|-16.35426|0.19497 +2016-07-01|-24.0|81.0|-15.83654|0.19558 +2016-07-01|-24.0|82.0|-15.30476|0.19551 +2016-07-01|-24.0|83.0|-14.75985|0.19475 +2016-07-01|-24.0|84.0|-14.20287|0.19329 +2016-07-01|-24.0|85.0|-13.63509|0.19112 +2016-07-01|-24.0|86.0|-13.05789|0.18824 +2016-07-01|-24.0|87.0|-12.47284|0.18466 +2016-07-01|-24.0|88.0|-11.88167|0.18038 +2016-07-01|-24.0|89.0|-11.28623|0.17542 +2016-07-01|-24.0|90.0|-10.68852|0.16981 +2016-07-01|-24.0|91.0|-10.09062|0.16356 +2016-07-01|-24.0|92.0|-9.49469|0.15671 +2016-07-01|-24.0|93.0|-8.90292|0.14931 +2016-07-01|-24.0|94.0|-8.31751|0.14141 +2016-07-01|-24.0|95.0|-7.74063|0.13304 +2016-07-01|-24.0|96.0|-7.17437|0.12428 +2016-07-01|-24.0|97.0|-6.62069|0.11518 +2016-07-01|-24.0|98.0|-6.08143|0.1058 +2016-07-01|-24.0|99.0|-5.55822|0.09622 +2016-07-01|-24.0|100.0|-5.05251|0.0865 +2016-07-01|-24.0|101.0|-4.56548|0.0767 +2016-07-01|-24.0|102.0|-4.09807|0.0669 +2016-07-01|-24.0|103.0|-3.65096|0.05716 +2016-07-01|-24.0|104.0|-3.22454|0.04754 +2016-07-01|-24.0|105.0|-2.81892|0.03809 +2016-07-01|-24.0|106.0|-2.43397|0.02888 +2016-07-01|-24.0|107.0|-2.06926|0.01995 +2016-07-01|-24.0|108.0|-1.72413|0.01134 +2016-07-01|-24.0|109.0|-1.39769|0.00311 +2016-07-01|-24.0|110.0|-1.08886|-0.00473 +2016-07-01|-24.0|111.0|-0.79636|-0.01213 +2016-07-01|-24.0|112.0|-0.51877|-0.01907 +2016-07-01|-24.0|113.0|-0.25455|-0.02553 +2016-07-01|-24.0|114.0|-0.00209|-0.03151 +2016-07-01|-24.0|115.0|0.24031|-0.03698 +2016-07-01|-24.0|116.0|0.47434|-0.04194 +2016-07-01|-24.0|117.0|0.70172|-0.0464 +2016-07-01|-24.0|118.0|0.9241|-0.05034 +2016-07-01|-24.0|119.0|1.14311|-0.05378 +2016-07-01|-24.0|120.0|1.36025|-0.05672 +2016-07-01|-24.0|121.0|1.57695|-0.05918 +2016-07-01|-24.0|122.0|1.7945|-0.06117 +2016-07-01|-24.0|123.0|2.01403|-0.0627 +2016-07-01|-24.0|124.0|2.23655|-0.06379 +2016-07-01|-24.0|125.0|2.46289|-0.06446 +2016-07-01|-24.0|126.0|2.69372|-0.06473 +2016-07-01|-24.0|127.0|2.92953|-0.06463 +2016-07-01|-24.0|128.0|3.17067|-0.06417 +2016-07-01|-24.0|129.0|3.41731|-0.06337 +2016-07-01|-24.0|130.0|3.66949|-0.06227 +2016-07-01|-24.0|131.0|3.92709|-0.06088 +2016-07-01|-24.0|132.0|4.1899|-0.05923 +2016-07-01|-24.0|133.0|4.45758|-0.05735 +2016-07-01|-24.0|134.0|4.7297|-0.05525 +2016-07-01|-24.0|135.0|5.00577|-0.05296 +2016-07-01|-24.0|136.0|5.28525|-0.0505 +2016-07-01|-24.0|137.0|5.56755|-0.0479 +2016-07-01|-24.0|138.0|5.85205|-0.04517 +2016-07-01|-24.0|139.0|6.13816|-0.04234 +2016-07-01|-24.0|140.0|6.42527|-0.03941 +2016-07-01|-24.0|141.0|6.71279|-0.03642 +2016-07-01|-24.0|142.0|7.00016|-0.03338 +2016-07-01|-24.0|143.0|7.28685|-0.0303 +2016-07-01|-24.0|144.0|7.57237|-0.02719 +2016-07-01|-24.0|145.0|7.85626|-0.02408 +2016-07-01|-24.0|146.0|8.13811|-0.02096 +2016-07-01|-24.0|147.0|8.41752|-0.01786 +2016-07-01|-24.0|148.0|8.69415|-0.01478 +2016-07-01|-24.0|149.0|8.96766|-0.01173 +2016-07-01|-24.0|150.0|9.23774|-0.00872 +2016-07-01|-24.0|151.0|9.50409|-0.00576 +2016-07-01|-24.0|152.0|9.76641|-0.00285 +2016-07-01|-24.0|153.0|10.0244|1.0E-5 +2016-07-01|-24.0|154.0|10.27778|0.0028 +2016-07-01|-24.0|155.0|10.52623|0.00553 +2016-07-01|-24.0|156.0|10.76944|0.00818 +2016-07-01|-24.0|157.0|11.00708|0.01076 +2016-07-01|-24.0|158.0|11.2388|0.01327 +2016-07-01|-24.0|159.0|11.46426|0.01569 +2016-07-01|-24.0|160.0|11.6831|0.01804 +2016-07-01|-24.0|161.0|11.89496|0.0203 +2016-07-01|-24.0|162.0|12.0995|0.02247 +2016-07-01|-24.0|163.0|12.29636|0.02456 +2016-07-01|-24.0|164.0|12.48524|0.02655 +2016-07-01|-24.0|165.0|12.66584|0.02846 +2016-07-01|-24.0|166.0|12.83789|0.03027 +2016-07-01|-24.0|167.0|13.00118|0.03199 +2016-07-01|-24.0|168.0|13.15555|0.03361 +2016-07-01|-24.0|169.0|13.30087|0.03513 +2016-07-01|-24.0|170.0|13.43712|0.03655 +2016-07-01|-24.0|171.0|13.56428|0.03786 +2016-07-01|-24.0|172.0|13.68246|0.03906 +2016-07-01|-24.0|173.0|13.7918|0.04015 +2016-07-01|-24.0|174.0|13.89251|0.04113 +2016-07-01|-24.0|175.0|13.98488|0.04198 +2016-07-01|-24.0|176.0|14.06926|0.04272 +2016-07-01|-24.0|177.0|14.14603|0.04332 +2016-07-01|-24.0|178.0|14.21567|0.0438 +2016-07-01|-24.0|179.0|14.27864|0.04415 +2016-07-01|-24.0|-1.0|-20.16519|0.14859 +2016-07-01|-24.0|-2.0|-20.61769|0.14035 +2016-07-01|-24.0|-3.0|-21.05814|0.13132 +2016-07-01|-24.0|-4.0|-21.48398|0.12167 +2016-07-01|-24.0|-5.0|-21.89298|0.11155 +2016-07-01|-24.0|-6.0|-22.28323|0.1011 +2016-07-01|-24.0|-7.0|-22.65316|0.09049 +2016-07-01|-24.0|-8.0|-23.0015|0.07984 +2016-07-01|-24.0|-9.0|-23.32731|0.06927 +2016-07-01|-24.0|-10.0|-23.62992|0.05891 +2016-07-01|-24.0|-11.0|-23.90896|0.04884 +2016-07-01|-24.0|-12.0|-24.16429|0.03917 +2016-07-01|-24.0|-13.0|-24.39599|0.02995 +2016-07-01|-24.0|-14.0|-24.60434|0.02125 +2016-07-01|-24.0|-15.0|-24.78977|0.0131 +2016-07-01|-24.0|-16.0|-24.95285|0.00554 +2016-07-01|-24.0|-17.0|-25.09424|-0.00143 +2016-07-01|-24.0|-18.0|-25.2147|-0.00779 +2016-07-01|-24.0|-19.0|-25.315|-0.01357 +2016-07-01|-24.0|-20.0|-25.39593|-0.01878 +2016-07-01|-24.0|-21.0|-25.45827|-0.02345 +2016-07-01|-24.0|-22.0|-25.50277|-0.02763 +2016-07-01|-24.0|-23.0|-25.5301|-0.03137 +2016-07-01|-24.0|-24.0|-25.54087|-0.03472 +2016-07-01|-24.0|-25.0|-25.53556|-0.03774 +2016-07-01|-24.0|-26.0|-25.51459|-0.04049 +2016-07-01|-24.0|-27.0|-25.4782|-0.04305 +2016-07-01|-24.0|-28.0|-25.42655|-0.04547 +2016-07-01|-24.0|-29.0|-25.35963|-0.04783 +2016-07-01|-24.0|-30.0|-25.2773|-0.05019 +2016-07-01|-24.0|-31.0|-25.1793|-0.05261 +2016-07-01|-24.0|-32.0|-25.06522|-0.05513 +2016-07-01|-24.0|-33.0|-24.93455|-0.05782 +2016-07-01|-24.0|-34.0|-24.78666|-0.06071 +2016-07-01|-24.0|-35.0|-24.62079|-0.06385 +2016-07-01|-24.0|-36.0|-24.43614|-0.06725 +2016-07-01|-24.0|-37.0|-24.2318|-0.07095 +2016-07-01|-24.0|-38.0|-24.00681|-0.07494 +2016-07-01|-24.0|-39.0|-23.7602|-0.07925 +2016-07-01|-24.0|-40.0|-23.49093|-0.08385 +2016-07-01|-24.0|-41.0|-23.198|-0.08875 +2016-07-01|-24.0|-42.0|-22.8804|-0.09393 +2016-07-01|-24.0|-43.0|-22.53715|-0.09935 +2016-07-01|-24.0|-44.0|-22.16733|-0.10499 +2016-07-01|-24.0|-45.0|-21.77009|-0.11082 +2016-07-01|-24.0|-46.0|-21.34465|-0.11679 +2016-07-01|-24.0|-47.0|-20.89033|-0.12286 +2016-07-01|-24.0|-48.0|-20.40659|-0.12897 +2016-07-01|-24.0|-49.0|-19.89298|-0.13509 +2016-07-01|-24.0|-50.0|-19.34924|-0.14116 +2016-07-01|-24.0|-51.0|-18.77524|-0.14712 +2016-07-01|-24.0|-52.0|-18.17102|-0.15293 +2016-07-01|-24.0|-53.0|-17.53682|-0.15852 +2016-07-01|-24.0|-54.0|-16.87306|-0.16385 +2016-07-01|-24.0|-55.0|-16.18037|-0.16886 +2016-07-01|-24.0|-56.0|-15.45958|-0.17351 +2016-07-01|-24.0|-57.0|-14.71175|-0.17775 +2016-07-01|-24.0|-58.0|-13.93813|-0.18154 +2016-07-01|-24.0|-59.0|-13.14021|-0.18484 +2016-07-01|-24.0|-60.0|-12.31969|-0.18761 +2016-07-01|-24.0|-61.0|-11.47848|-0.18984 +2016-07-01|-24.0|-62.0|-10.61868|-0.19149 +2016-07-01|-24.0|-63.0|-9.74258|-0.19256 +2016-07-01|-24.0|-64.0|-8.85265|-0.19302 +2016-07-01|-24.0|-65.0|-7.9515|-0.19288 +2016-07-01|-24.0|-66.0|-7.04187|-0.19214 +2016-07-01|-24.0|-67.0|-6.12663|-0.19081 +2016-07-01|-24.0|-68.0|-5.20869|-0.18891 +2016-07-01|-24.0|-69.0|-4.29103|-0.18646 +2016-07-01|-24.0|-70.0|-3.37665|-0.18348 +2016-07-01|-24.0|-71.0|-2.46853|-0.18001 +2016-07-01|-24.0|-72.0|-1.56961|-0.17608 +2016-07-01|-24.0|-73.0|-0.68275|-0.17174 +2016-07-01|-24.0|-74.0|0.18927|-0.16703 +2016-07-01|-24.0|-75.0|1.04381|-0.16199 +2016-07-01|-24.0|-76.0|1.87839|-0.15667 +2016-07-01|-24.0|-77.0|2.6907|-0.15113 +2016-07-01|-24.0|-78.0|3.4786|-0.1454 +2016-07-01|-24.0|-79.0|4.24018|-0.13953 +2016-07-01|-24.0|-80.0|4.97373|-0.13358 +2016-07-01|-24.0|-81.0|5.67777|-0.12758 +2016-07-01|-24.0|-82.0|6.35106|-0.12158 +2016-07-01|-24.0|-83.0|6.99257|-0.11561 +2016-07-01|-24.0|-84.0|7.60153|-0.10972 +2016-07-01|-24.0|-85.0|8.17738|-0.10393 +2016-07-01|-24.0|-86.0|8.71978|-0.09829 +2016-07-01|-24.0|-87.0|9.22864|-0.09281 +2016-07-01|-24.0|-88.0|9.70405|-0.08753 +2016-07-01|-24.0|-89.0|10.14632|-0.08247 +2016-07-01|-24.0|-90.0|10.55594|-0.07764 +2016-07-01|-24.0|-91.0|10.93358|-0.07307 +2016-07-01|-24.0|-92.0|11.2801|-0.06877 +2016-07-01|-24.0|-93.0|11.59648|-0.06475 +2016-07-01|-24.0|-94.0|11.88387|-0.06102 +2016-07-01|-24.0|-95.0|12.14354|-0.05758 +2016-07-01|-24.0|-96.0|12.37686|-0.05445 +2016-07-01|-24.0|-97.0|12.58531|-0.05161 +2016-07-01|-24.0|-98.0|12.77044|-0.04907 +2016-07-01|-24.0|-99.0|12.93387|-0.04682 +2016-07-01|-24.0|-100.0|13.07727|-0.04485 +2016-07-01|-24.0|-101.0|13.20233|-0.04316 +2016-07-01|-24.0|-102.0|13.31076|-0.04173 +2016-07-01|-24.0|-103.0|13.40427|-0.04053 +2016-07-01|-24.0|-104.0|13.48454|-0.03957 +2016-07-01|-24.0|-105.0|13.55321|-0.0388 +2016-07-01|-24.0|-106.0|13.6119|-0.03823 +2016-07-01|-24.0|-107.0|13.66212|-0.03781 +2016-07-01|-24.0|-108.0|13.70535|-0.03752 +2016-07-01|-24.0|-109.0|13.74293|-0.03734 +2016-07-01|-24.0|-110.0|13.77615|-0.03725 +2016-07-01|-24.0|-111.0|13.80617|-0.03722 +2016-07-01|-24.0|-112.0|13.83403|-0.03722 +2016-07-01|-24.0|-113.0|13.86066|-0.03722 +2016-07-01|-24.0|-114.0|13.88688|-0.03722 +2016-07-01|-24.0|-115.0|13.91339|-0.03717 +2016-07-01|-24.0|-116.0|13.94075|-0.03708 +2016-07-01|-24.0|-117.0|13.96943|-0.03691 +2016-07-01|-24.0|-118.0|13.99978|-0.03665 +2016-07-01|-24.0|-119.0|14.03204|-0.0363 +2016-07-01|-24.0|-120.0|14.06637|-0.03584 +2016-07-01|-24.0|-121.0|14.1028|-0.03527 +2016-07-01|-24.0|-122.0|14.14134|-0.03458 +2016-07-01|-24.0|-123.0|14.18186|-0.03377 +2016-07-01|-24.0|-124.0|14.22423|-0.03284 +2016-07-01|-24.0|-125.0|14.26823|-0.03181 +2016-07-01|-24.0|-126.0|14.3136|-0.03066 +2016-07-01|-24.0|-127.0|14.36005|-0.02942 +2016-07-01|-24.0|-128.0|14.40726|-0.02809 +2016-07-01|-24.0|-129.0|14.45491|-0.02668 +2016-07-01|-24.0|-130.0|14.50265|-0.0252 +2016-07-01|-24.0|-131.0|14.55011|-0.02367 +2016-07-01|-24.0|-132.0|14.59697|-0.02209 +2016-07-01|-24.0|-133.0|14.64288|-0.02047 +2016-07-01|-24.0|-134.0|14.68751|-0.01883 +2016-07-01|-24.0|-135.0|14.73055|-0.01718 +2016-07-01|-24.0|-136.0|14.7717|-0.01552 +2016-07-01|-24.0|-137.0|14.81071|-0.01386 +2016-07-01|-24.0|-138.0|14.84731|-0.0122 +2016-07-01|-24.0|-139.0|14.88129|-0.01056 +2016-07-01|-24.0|-140.0|14.91246|-0.00893 +2016-07-01|-24.0|-141.0|14.94067|-0.00732 +2016-07-01|-24.0|-142.0|14.96576|-0.00572 +2016-07-01|-24.0|-143.0|14.98765|-0.00414 +2016-07-01|-24.0|-144.0|15.00627|-0.00257 +2016-07-01|-24.0|-145.0|15.02157|-0.001 +2016-07-01|-24.0|-146.0|15.03354|5.6E-4 +2016-07-01|-24.0|-147.0|15.04222|0.00212 +2016-07-01|-24.0|-148.0|15.04766|0.00368 +2016-07-01|-24.0|-149.0|15.04994|0.00525 +2016-07-01|-24.0|-150.0|15.04917|0.00684 +2016-07-01|-24.0|-151.0|15.04549|0.00845 +2016-07-01|-24.0|-152.0|15.03908|0.01007 +2016-07-01|-24.0|-153.0|15.03011|0.01172 +2016-07-01|-24.0|-154.0|15.01879|0.01339 +2016-07-01|-24.0|-155.0|15.00535|0.01508 +2016-07-01|-24.0|-156.0|14.99001|0.01679 +2016-07-01|-24.0|-157.0|14.97302|0.01851 +2016-07-01|-24.0|-158.0|14.95462|0.02025 +2016-07-01|-24.0|-159.0|14.93505|0.022 +2016-07-01|-24.0|-160.0|14.91453|0.02374 +2016-07-01|-24.0|-161.0|14.89327|0.02548 +2016-07-01|-24.0|-162.0|14.87146|0.0272 +2016-07-01|-24.0|-163.0|14.84925|0.02889 +2016-07-01|-24.0|-164.0|14.82677|0.03054 +2016-07-01|-24.0|-165.0|14.80409|0.03215 +2016-07-01|-24.0|-166.0|14.78125|0.0337 +2016-07-01|-24.0|-167.0|14.75824|0.03517 +2016-07-01|-24.0|-168.0|14.73498|0.03657 +2016-07-01|-24.0|-169.0|14.71135|0.03788 +2016-07-01|-24.0|-170.0|14.68715|0.03909 +2016-07-01|-24.0|-171.0|14.66215|0.04019 +2016-07-01|-24.0|-172.0|14.63605|0.04117 +2016-07-01|-24.0|-173.0|14.60848|0.04204 +2016-07-01|-24.0|-174.0|14.57904|0.04277 +2016-07-01|-24.0|-175.0|14.54728|0.04338 +2016-07-01|-24.0|-176.0|14.51271|0.04385 +2016-07-01|-24.0|-177.0|14.4748|0.04419 +2016-07-01|-24.0|-178.0|14.433|0.04439 +2016-07-01|-24.0|-179.0|14.38675|0.04444 +2016-07-01|-25.0|0.0|-20.30971|0.14857 +2016-07-01|-25.0|1.0|-19.86771|0.15442 +2016-07-01|-25.0|2.0|-19.42359|0.15902 +2016-07-01|-25.0|3.0|-18.98102|0.16223 +2016-07-01|-25.0|4.0|-18.54381|0.16395 +2016-07-01|-25.0|5.0|-18.11589|0.16411 +2016-07-01|-25.0|6.0|-17.7012|0.16265 +2016-07-01|-25.0|7.0|-17.30369|0.15954 +2016-07-01|-25.0|8.0|-16.92719|0.15479 +2016-07-01|-25.0|9.0|-16.57539|0.14843 +2016-07-01|-25.0|10.0|-16.25174|0.14053 +2016-07-01|-25.0|11.0|-15.95943|0.13118 +2016-07-01|-25.0|12.0|-15.70129|0.12052 +2016-07-01|-25.0|13.0|-15.47978|0.10868 +2016-07-01|-25.0|14.0|-15.29695|0.09583 +2016-07-01|-25.0|15.0|-15.15439|0.08216 +2016-07-01|-25.0|16.0|-15.05323|0.06786 +2016-07-01|-25.0|17.0|-14.99415|0.05314 +2016-07-01|-25.0|18.0|-14.97733|0.03818 +2016-07-01|-25.0|19.0|-15.00251|0.0232 +2016-07-01|-25.0|20.0|-15.06901|0.00839 +2016-07-01|-25.0|21.0|-15.1757|-0.00607 +2016-07-01|-25.0|22.0|-15.32109|-0.02001 +2016-07-01|-25.0|23.0|-15.50334|-0.03327 +2016-07-01|-25.0|24.0|-15.7203|-0.04573 +2016-07-01|-25.0|25.0|-15.96954|-0.05727 +2016-07-01|-25.0|26.0|-16.24841|-0.0678 +2016-07-01|-25.0|27.0|-16.55407|-0.07723 +2016-07-01|-25.0|28.0|-16.88354|-0.08552 +2016-07-01|-25.0|29.0|-17.23371|-0.09262 +2016-07-01|-25.0|30.0|-17.60142|-0.09853 +2016-07-01|-25.0|31.0|-17.98347|-0.10324 +2016-07-01|-25.0|32.0|-18.37664|-0.10676 +2016-07-01|-25.0|33.0|-18.77776|-0.10912 +2016-07-01|-25.0|34.0|-19.18368|-0.11035 +2016-07-01|-25.0|35.0|-19.59135|-0.11051 +2016-07-01|-25.0|36.0|-19.9978|-0.10963 +2016-07-01|-25.0|37.0|-20.40019|-0.10778 +2016-07-01|-25.0|38.0|-20.79579|-0.10503 +2016-07-01|-25.0|39.0|-21.18201|-0.10142 +2016-07-01|-25.0|40.0|-21.55643|-0.09703 +2016-07-01|-25.0|41.0|-21.91677|-0.09192 +2016-07-01|-25.0|42.0|-22.26093|-0.08615 +2016-07-01|-25.0|43.0|-22.58697|-0.07979 +2016-07-01|-25.0|44.0|-22.89315|-0.07288 +2016-07-01|-25.0|45.0|-23.17787|-0.06549 +2016-07-01|-25.0|46.0|-23.43973|-0.05766 +2016-07-01|-25.0|47.0|-23.67751|-0.04945 +2016-07-01|-25.0|48.0|-23.89015|-0.04091 +2016-07-01|-25.0|49.0|-24.07678|-0.03208 +2016-07-01|-25.0|50.0|-24.23667|-0.023 +2016-07-01|-25.0|51.0|-24.36928|-0.01371 +2016-07-01|-25.0|52.0|-24.47422|-0.00426 +2016-07-01|-25.0|53.0|-24.55125|0.00534 +2016-07-01|-25.0|54.0|-24.60026|0.01503 +2016-07-01|-25.0|55.0|-24.62129|0.02478 +2016-07-01|-25.0|56.0|-24.61448|0.03457 +2016-07-01|-25.0|57.0|-24.58009|0.04436 +2016-07-01|-25.0|58.0|-24.51849|0.05412 +2016-07-01|-25.0|59.0|-24.43011|0.06382 +2016-07-01|-25.0|60.0|-24.31547|0.07342 +2016-07-01|-25.0|61.0|-24.17513|0.0829 +2016-07-01|-25.0|62.0|-24.00969|0.09222 +2016-07-01|-25.0|63.0|-23.8198|0.10136 +2016-07-01|-25.0|64.0|-23.60608|0.11029 +2016-07-01|-25.0|65.0|-23.3692|0.11897 +2016-07-01|-25.0|66.0|-23.10977|0.12738 +2016-07-01|-25.0|67.0|-22.8284|0.13548 +2016-07-01|-25.0|68.0|-22.52568|0.14324 +2016-07-01|-25.0|69.0|-22.20215|0.15065 +2016-07-01|-25.0|70.0|-21.85832|0.15765 +2016-07-01|-25.0|71.0|-21.49463|0.16423 +2016-07-01|-25.0|72.0|-21.11154|0.17037 +2016-07-01|-25.0|73.0|-20.70943|0.17601 +2016-07-01|-25.0|74.0|-20.2887|0.18115 +2016-07-01|-25.0|75.0|-19.84971|0.18575 +2016-07-01|-25.0|76.0|-19.39284|0.18979 +2016-07-01|-25.0|77.0|-18.91851|0.19323 +2016-07-01|-25.0|78.0|-18.42716|0.19605 +2016-07-01|-25.0|79.0|-17.9193|0.19823 +2016-07-01|-25.0|80.0|-17.39553|0.19975 +2016-07-01|-25.0|81.0|-16.85655|0.20058 +2016-07-01|-25.0|82.0|-16.30317|0.2007 +2016-07-01|-25.0|83.0|-15.73635|0.20011 +2016-07-01|-25.0|84.0|-15.15718|0.19879 +2016-07-01|-25.0|85.0|-14.56693|0.19673 +2016-07-01|-25.0|86.0|-13.96702|0.19393 +2016-07-01|-25.0|87.0|-13.35902|0.19039 +2016-07-01|-25.0|88.0|-12.74467|0.18614 +2016-07-01|-25.0|89.0|-12.12585|0.18117 +2016-07-01|-25.0|90.0|-11.50455|0.17552 +2016-07-01|-25.0|91.0|-10.88286|0.16921 +2016-07-01|-25.0|92.0|-10.26295|0.16228 +2016-07-01|-25.0|93.0|-9.64702|0.15478 +2016-07-01|-25.0|94.0|-9.03729|0.14676 +2016-07-01|-25.0|95.0|-8.43591|0.13826 +2016-07-01|-25.0|96.0|-7.84499|0.12936 +2016-07-01|-25.0|97.0|-7.26651|0.12011 +2016-07-01|-25.0|98.0|-6.70231|0.11058 +2016-07-01|-25.0|99.0|-6.15404|0.10084 +2016-07-01|-25.0|100.0|-5.62315|0.09096 +2016-07-01|-25.0|101.0|-5.11086|0.08102 +2016-07-01|-25.0|102.0|-4.61812|0.07107 +2016-07-01|-25.0|103.0|-4.14563|0.06119 +2016-07-01|-25.0|104.0|-3.69381|0.05144 +2016-07-01|-25.0|105.0|-3.26281|0.04188 +2016-07-01|-25.0|106.0|-2.85252|0.03256 +2016-07-01|-25.0|107.0|-2.46256|0.02354 +2016-07-01|-25.0|108.0|-2.0923|0.01485 +2016-07-01|-25.0|109.0|-1.74091|0.00655 +2016-07-01|-25.0|110.0|-1.40733|-0.00134 +2016-07-01|-25.0|111.0|-1.09035|-0.00879 +2016-07-01|-25.0|112.0|-0.78859|-0.01578 +2016-07-01|-25.0|113.0|-0.50057|-0.02227 +2016-07-01|-25.0|114.0|-0.2247|-0.02827 +2016-07-01|-25.0|115.0|0.04063|-0.03376 +2016-07-01|-25.0|116.0|0.2971|-0.03874 +2016-07-01|-25.0|117.0|0.54635|-0.0432 +2016-07-01|-25.0|118.0|0.79002|-0.04715 +2016-07-01|-25.0|119.0|1.02968|-0.0506 +2016-07-01|-25.0|120.0|1.26681|-0.05355 +2016-07-01|-25.0|121.0|1.50281|-0.05602 +2016-07-01|-25.0|122.0|1.73893|-0.05802 +2016-07-01|-25.0|123.0|1.97632|-0.05956 +2016-07-01|-25.0|124.0|2.21595|-0.06067 +2016-07-01|-25.0|125.0|2.45867|-0.06137 +2016-07-01|-25.0|126.0|2.70513|-0.06167 +2016-07-01|-25.0|127.0|2.95586|-0.0616 +2016-07-01|-25.0|128.0|3.2112|-0.06118 +2016-07-01|-25.0|129.0|3.47137|-0.06043 +2016-07-01|-25.0|130.0|3.73641|-0.05938 +2016-07-01|-25.0|131.0|4.00627|-0.05804 +2016-07-01|-25.0|132.0|4.28073|-0.05646 +2016-07-01|-25.0|133.0|4.55952|-0.05464 +2016-07-01|-25.0|134.0|4.84224|-0.05261 +2016-07-01|-25.0|135.0|5.12845|-0.05039 +2016-07-01|-25.0|136.0|5.41764|-0.04801 +2016-07-01|-25.0|137.0|5.70925|-0.04549 +2016-07-01|-25.0|138.0|6.00273|-0.04284 +2016-07-01|-25.0|139.0|6.29749|-0.04008 +2016-07-01|-25.0|140.0|6.59297|-0.03724 +2016-07-01|-25.0|141.0|6.8886|-0.03433 +2016-07-01|-25.0|142.0|7.18384|-0.03137 +2016-07-01|-25.0|143.0|7.47819|-0.02836 +2016-07-01|-25.0|144.0|7.77117|-0.02534 +2016-07-01|-25.0|145.0|8.06233|-0.0223 +2016-07-01|-25.0|146.0|8.35126|-0.01926 +2016-07-01|-25.0|147.0|8.63758|-0.01623 +2016-07-01|-25.0|148.0|8.92093|-0.01322 +2016-07-01|-25.0|149.0|9.20097|-0.01023 +2016-07-01|-25.0|150.0|9.4774|-0.00729 +2016-07-01|-25.0|151.0|9.7499|-0.00438 +2016-07-01|-25.0|152.0|10.01817|-0.00153 +2016-07-01|-25.0|153.0|10.28192|0.00127 +2016-07-01|-25.0|154.0|10.54084|0.00401 +2016-07-01|-25.0|155.0|10.79461|0.00669 +2016-07-01|-25.0|156.0|11.04293|0.0093 +2016-07-01|-25.0|157.0|11.28545|0.01184 +2016-07-01|-25.0|158.0|11.52184|0.0143 +2016-07-01|-25.0|159.0|11.75177|0.01668 +2016-07-01|-25.0|160.0|11.97486|0.01899 +2016-07-01|-25.0|161.0|12.19079|0.02121 +2016-07-01|-25.0|162.0|12.39921|0.02334 +2016-07-01|-25.0|163.0|12.59979|0.02539 +2016-07-01|-25.0|164.0|12.79223|0.02736 +2016-07-01|-25.0|165.0|12.97625|0.02923 +2016-07-01|-25.0|166.0|13.1516|0.031 +2016-07-01|-25.0|167.0|13.31809|0.03269 +2016-07-01|-25.0|168.0|13.47558|0.03427 +2016-07-01|-25.0|169.0|13.62395|0.03576 +2016-07-01|-25.0|170.0|13.76319|0.03714 +2016-07-01|-25.0|171.0|13.89331|0.03842 +2016-07-01|-25.0|172.0|14.01442|0.03959 +2016-07-01|-25.0|173.0|14.12666|0.04065 +2016-07-01|-25.0|174.0|14.23028|0.04159 +2016-07-01|-25.0|175.0|14.32554|0.04241 +2016-07-01|-25.0|176.0|14.41281|0.04312 +2016-07-01|-25.0|177.0|14.49247|0.0437 +2016-07-01|-25.0|178.0|14.56497|0.04415 +2016-07-01|-25.0|179.0|14.6308|0.04448 +2016-07-01|-25.0|-1.0|-20.74615|0.14159 +2016-07-01|-25.0|-2.0|-21.17383|0.13365 +2016-07-01|-25.0|-3.0|-21.58984|0.12489 +2016-07-01|-25.0|-4.0|-21.99157|0.11548 +2016-07-01|-25.0|-5.0|-22.37677|0.10557 +2016-07-01|-25.0|-6.0|-22.74348|0.09533 +2016-07-01|-25.0|-7.0|-23.0901|0.0849 +2016-07-01|-25.0|-8.0|-23.41537|0.07442 +2016-07-01|-25.0|-9.0|-23.71834|0.06401 +2016-07-01|-25.0|-10.0|-23.99835|0.0538 +2016-07-01|-25.0|-11.0|-24.25502|0.04389 +2016-07-01|-25.0|-12.0|-24.48823|0.03435 +2016-07-01|-25.0|-13.0|-24.6981|0.02527 +2016-07-01|-25.0|-14.0|-24.8849|0.0167 +2016-07-01|-25.0|-15.0|-25.0491|0.00868 +2016-07-01|-25.0|-16.0|-25.1913|0.00124 +2016-07-01|-25.0|-17.0|-25.31219|-0.0056 +2016-07-01|-25.0|-18.0|-25.41251|-0.01185 +2016-07-01|-25.0|-19.0|-25.49309|-0.01752 +2016-07-01|-25.0|-20.0|-25.55472|-0.02263 +2016-07-01|-25.0|-21.0|-25.5982|-0.02721 +2016-07-01|-25.0|-22.0|-25.62428|-0.0313 +2016-07-01|-25.0|-23.0|-25.63365|-0.03495 +2016-07-01|-25.0|-24.0|-25.62691|-0.03822 +2016-07-01|-25.0|-25.0|-25.60457|-0.04117 +2016-07-01|-25.0|-26.0|-25.56701|-0.04387 +2016-07-01|-25.0|-27.0|-25.5145|-0.04636 +2016-07-01|-25.0|-28.0|-25.44716|-0.04873 +2016-07-01|-25.0|-29.0|-25.36498|-0.05104 +2016-07-01|-25.0|-30.0|-25.26782|-0.05335 +2016-07-01|-25.0|-31.0|-25.15538|-0.05571 +2016-07-01|-25.0|-32.0|-25.02725|-0.05819 +2016-07-01|-25.0|-33.0|-24.88289|-0.06083 +2016-07-01|-25.0|-34.0|-24.72163|-0.06367 +2016-07-01|-25.0|-35.0|-24.54271|-0.06675 +2016-07-01|-25.0|-36.0|-24.34528|-0.0701 +2016-07-01|-25.0|-37.0|-24.12842|-0.07373 +2016-07-01|-25.0|-38.0|-23.89114|-0.07767 +2016-07-01|-25.0|-39.0|-23.63242|-0.0819 +2016-07-01|-25.0|-40.0|-23.35123|-0.08643 +2016-07-01|-25.0|-41.0|-23.04651|-0.09125 +2016-07-01|-25.0|-42.0|-22.71724|-0.09634 +2016-07-01|-25.0|-43.0|-22.36242|-0.10167 +2016-07-01|-25.0|-44.0|-21.9811|-0.10722 +2016-07-01|-25.0|-45.0|-21.57241|-0.11294 +2016-07-01|-25.0|-46.0|-21.13557|-0.11879 +2016-07-01|-25.0|-47.0|-20.66989|-0.12474 +2016-07-01|-25.0|-48.0|-20.17481|-0.13074 +2016-07-01|-25.0|-49.0|-19.6499|-0.13672 +2016-07-01|-25.0|-50.0|-19.09488|-0.14265 +2016-07-01|-25.0|-51.0|-18.50964|-0.14847 +2016-07-01|-25.0|-52.0|-17.89424|-0.15412 +2016-07-01|-25.0|-53.0|-17.24893|-0.15956 +2016-07-01|-25.0|-54.0|-16.57416|-0.16472 +2016-07-01|-25.0|-55.0|-15.87057|-0.16957 +2016-07-01|-25.0|-56.0|-15.13904|-0.17405 +2016-07-01|-25.0|-57.0|-14.38066|-0.17811 +2016-07-01|-25.0|-58.0|-13.59672|-0.18172 +2016-07-01|-25.0|-59.0|-12.78874|-0.18484 +2016-07-01|-25.0|-60.0|-11.95847|-0.18744 +2016-07-01|-25.0|-61.0|-11.10785|-0.18948 +2016-07-01|-25.0|-62.0|-10.23902|-0.19095 +2016-07-01|-25.0|-63.0|-9.35432|-0.19184 +2016-07-01|-25.0|-64.0|-8.45624|-0.19213 +2016-07-01|-25.0|-65.0|-7.54743|-0.19182 +2016-07-01|-25.0|-66.0|-6.63066|-0.19092 +2016-07-01|-25.0|-67.0|-5.7088|-0.18943 +2016-07-01|-25.0|-68.0|-4.7848|-0.18738 +2016-07-01|-25.0|-69.0|-3.86164|-0.18478 +2016-07-01|-25.0|-70.0|-2.94232|-0.18167 +2016-07-01|-25.0|-71.0|-2.02982|-0.17807 +2016-07-01|-25.0|-72.0|-1.12707|-0.17403 +2016-07-01|-25.0|-73.0|-0.23693|-0.16959 +2016-07-01|-25.0|-74.0|0.63787|-0.16479 +2016-07-01|-25.0|-75.0|1.49469|-0.15967 +2016-07-01|-25.0|-76.0|2.33109|-0.15429 +2016-07-01|-25.0|-77.0|3.14478|-0.14869 +2016-07-01|-25.0|-78.0|3.93366|-0.14291 +2016-07-01|-25.0|-79.0|4.69586|-0.13701 +2016-07-01|-25.0|-80.0|5.4297|-0.13104 +2016-07-01|-25.0|-81.0|6.13374|-0.12502 +2016-07-01|-25.0|-82.0|6.80676|-0.11901 +2016-07-01|-25.0|-83.0|7.44779|-0.11304 +2016-07-01|-25.0|-84.0|8.05607|-0.10716 +2016-07-01|-25.0|-85.0|8.63108|-0.10139 +2016-07-01|-25.0|-86.0|9.17253|-0.09577 +2016-07-01|-25.0|-87.0|9.68031|-0.09032 +2016-07-01|-25.0|-88.0|10.15457|-0.08507 +2016-07-01|-25.0|-89.0|10.59563|-0.08004 +2016-07-01|-25.0|-90.0|11.00399|-0.07525 +2016-07-01|-25.0|-91.0|11.38035|-0.07072 +2016-07-01|-25.0|-92.0|11.72556|-0.06646 +2016-07-01|-25.0|-93.0|12.04063|-0.06248 +2016-07-01|-25.0|-94.0|12.32671|-0.05879 +2016-07-01|-25.0|-95.0|12.58506|-0.0554 +2016-07-01|-25.0|-96.0|12.81707|-0.05231 +2016-07-01|-25.0|-97.0|13.02421|-0.04951 +2016-07-01|-25.0|-98.0|13.20802|-0.04701 +2016-07-01|-25.0|-99.0|13.37014|-0.0448 +2016-07-01|-25.0|-100.0|13.5122|-0.04287 +2016-07-01|-25.0|-101.0|13.63591|-0.04121 +2016-07-01|-25.0|-102.0|13.74295|-0.03981 +2016-07-01|-25.0|-103.0|13.83504|-0.03864 +2016-07-01|-25.0|-104.0|13.91383|-0.0377 +2016-07-01|-25.0|-105.0|13.98098|-0.03696 +2016-07-01|-25.0|-106.0|14.03806|-0.0364 +2016-07-01|-25.0|-107.0|14.08662|-0.036 +2016-07-01|-25.0|-108.0|14.12808|-0.03573 +2016-07-01|-25.0|-109.0|14.16382|-0.03557 +2016-07-01|-25.0|-110.0|14.1951|-0.03548 +2016-07-01|-25.0|-111.0|14.22307|-0.03546 +2016-07-01|-25.0|-112.0|14.24879|-0.03546 +2016-07-01|-25.0|-113.0|14.2732|-0.03548 +2016-07-01|-25.0|-114.0|14.2971|-0.03548 +2016-07-01|-25.0|-115.0|14.3212|-0.03544 +2016-07-01|-25.0|-116.0|14.34608|-0.03535 +2016-07-01|-25.0|-117.0|14.37222|-0.03519 +2016-07-01|-25.0|-118.0|14.39998|-0.03494 +2016-07-01|-25.0|-119.0|14.42962|-0.0346 +2016-07-01|-25.0|-120.0|14.4613|-0.03415 +2016-07-01|-25.0|-121.0|14.4951|-0.03359 +2016-07-01|-25.0|-122.0|14.53102|-0.03291 +2016-07-01|-25.0|-123.0|14.56898|-0.03212 +2016-07-01|-25.0|-124.0|14.60884|-0.03121 +2016-07-01|-25.0|-125.0|14.65042|-0.03019 +2016-07-01|-25.0|-126.0|14.69347|-0.02907 +2016-07-01|-25.0|-127.0|14.73773|-0.02785 +2016-07-01|-25.0|-128.0|14.78289|-0.02654 +2016-07-01|-25.0|-129.0|14.82865|-0.02515 +2016-07-01|-25.0|-130.0|14.87466|-0.0237 +2016-07-01|-25.0|-131.0|14.9206|-0.02219 +2016-07-01|-25.0|-132.0|14.96612|-0.02063 +2016-07-01|-25.0|-133.0|15.0109|-0.01903 +2016-07-01|-25.0|-134.0|15.0546|-0.01742 +2016-07-01|-25.0|-135.0|15.09693|-0.01578 +2016-07-01|-25.0|-136.0|15.13758|-0.01414 +2016-07-01|-25.0|-137.0|15.17629|-0.0125 +2016-07-01|-25.0|-138.0|15.21281|-0.01087 +2016-07-01|-25.0|-139.0|15.24691|-0.00924 +2016-07-01|-25.0|-140.0|15.27839|-0.00763 +2016-07-01|-25.0|-141.0|15.30707|-0.00603 +2016-07-01|-25.0|-142.0|15.33282|-0.00445 +2016-07-01|-25.0|-143.0|15.35551|-0.00289 +2016-07-01|-25.0|-144.0|15.37506|-0.00133 +2016-07-01|-25.0|-145.0|15.39141|2.1E-4 +2016-07-01|-25.0|-146.0|15.40454|0.00175 +2016-07-01|-25.0|-147.0|15.41445|0.00329 +2016-07-01|-25.0|-148.0|15.42117|0.00483 +2016-07-01|-25.0|-149.0|15.42477|0.00638 +2016-07-01|-25.0|-150.0|15.42534|0.00794 +2016-07-01|-25.0|-151.0|15.423|0.00951 +2016-07-01|-25.0|-152.0|15.41789|0.0111 +2016-07-01|-25.0|-153.0|15.41018|0.01271 +2016-07-01|-25.0|-154.0|15.40006|0.01434 +2016-07-01|-25.0|-155.0|15.38772|0.01599 +2016-07-01|-25.0|-156.0|15.37338|0.01766 +2016-07-01|-25.0|-157.0|15.35726|0.01934 +2016-07-01|-25.0|-158.0|15.33959|0.02103 +2016-07-01|-25.0|-159.0|15.32058|0.02273 +2016-07-01|-25.0|-160.0|15.30046|0.02443 +2016-07-01|-25.0|-161.0|15.27942|0.02612 +2016-07-01|-25.0|-162.0|15.25763|0.0278 +2016-07-01|-25.0|-163.0|15.23524|0.02944 +2016-07-01|-25.0|-164.0|15.21237|0.03105 +2016-07-01|-25.0|-165.0|15.18909|0.03262 +2016-07-01|-25.0|-166.0|15.16545|0.03412 +2016-07-01|-25.0|-167.0|15.14142|0.03557 +2016-07-01|-25.0|-168.0|15.11693|0.03693 +2016-07-01|-25.0|-169.0|15.09187|0.03821 +2016-07-01|-25.0|-170.0|15.06606|0.03939 +2016-07-01|-25.0|-171.0|15.03926|0.04047 +2016-07-01|-25.0|-172.0|15.01118|0.04144 +2016-07-01|-25.0|-173.0|14.98148|0.0423 +2016-07-01|-25.0|-174.0|14.94978|0.04303 +2016-07-01|-25.0|-175.0|14.91562|0.04363 +2016-07-01|-25.0|-176.0|14.87853|0.04411 +2016-07-01|-25.0|-177.0|14.83802|0.04445 +2016-07-01|-25.0|-178.0|14.79354|0.04466 +2016-07-01|-25.0|-179.0|14.74454|0.04473 +2016-07-01|-26.0|0.0|-20.87162|0.14064 +2016-07-01|-26.0|1.0|-20.45869|0.14601 +2016-07-01|-26.0|2.0|-20.04446|0.15008 +2016-07-01|-26.0|3.0|-19.63265|0.15274 +2016-07-01|-26.0|4.0|-19.22708|0.15389 +2016-07-01|-26.0|5.0|-18.83172|0.15344 +2016-07-01|-26.0|6.0|-18.45052|0.15136 +2016-07-01|-26.0|7.0|-18.0874|0.14761 +2016-07-01|-26.0|8.0|-17.74618|0.14221 +2016-07-01|-26.0|9.0|-17.43048|0.13522 +2016-07-01|-26.0|10.0|-17.14368|0.1267 +2016-07-01|-26.0|11.0|-16.88887|0.11676 +2016-07-01|-26.0|12.0|-16.66874|0.10554 +2016-07-01|-26.0|13.0|-16.4856|0.09319 +2016-07-01|-26.0|14.0|-16.34132|0.0799 +2016-07-01|-26.0|15.0|-16.23731|0.06586 +2016-07-01|-26.0|16.0|-16.17447|0.05126 +2016-07-01|-26.0|17.0|-16.15327|0.03632 +2016-07-01|-26.0|18.0|-16.17365|0.02125 +2016-07-01|-26.0|19.0|-16.23514|0.00624 +2016-07-01|-26.0|20.0|-16.3368|-0.00851 +2016-07-01|-26.0|21.0|-16.47731|-0.02282 +2016-07-01|-26.0|22.0|-16.65496|-0.03651 +2016-07-01|-26.0|23.0|-16.86773|-0.04946 +2016-07-01|-26.0|24.0|-17.1133|-0.06152 +2016-07-01|-26.0|25.0|-17.38911|-0.07259 +2016-07-01|-26.0|26.0|-17.69239|-0.08259 +2016-07-01|-26.0|27.0|-18.02022|-0.09145 +2016-07-01|-26.0|28.0|-18.36956|-0.09913 +2016-07-01|-26.0|29.0|-18.73729|-0.1056 +2016-07-01|-26.0|30.0|-19.12026|-0.11085 +2016-07-01|-26.0|31.0|-19.51528|-0.1149 +2016-07-01|-26.0|32.0|-19.91921|-0.11776 +2016-07-01|-26.0|33.0|-20.32895|-0.11948 +2016-07-01|-26.0|34.0|-20.74145|-0.12008 +2016-07-01|-26.0|35.0|-21.15379|-0.11963 +2016-07-01|-26.0|36.0|-21.56312|-0.11818 +2016-07-01|-26.0|37.0|-21.96673|-0.11579 +2016-07-01|-26.0|38.0|-22.36205|-0.11253 +2016-07-01|-26.0|39.0|-22.74664|-0.10845 +2016-07-01|-26.0|40.0|-23.11822|-0.10363 +2016-07-01|-26.0|41.0|-23.47466|-0.09813 +2016-07-01|-26.0|42.0|-23.814|-0.092 +2016-07-01|-26.0|43.0|-24.13444|-0.08531 +2016-07-01|-26.0|44.0|-24.43434|-0.07811 +2016-07-01|-26.0|45.0|-24.71223|-0.07045 +2016-07-01|-26.0|46.0|-24.96682|-0.06239 +2016-07-01|-26.0|47.0|-25.19695|-0.05397 +2016-07-01|-26.0|48.0|-25.40165|-0.04524 +2016-07-01|-26.0|49.0|-25.58011|-0.03623 +2016-07-01|-26.0|50.0|-25.73165|-0.02698 +2016-07-01|-26.0|51.0|-25.85576|-0.01754 +2016-07-01|-26.0|52.0|-25.95207|-0.00793 +2016-07-01|-26.0|53.0|-26.02035|0.00181 +2016-07-01|-26.0|54.0|-26.0605|0.01166 +2016-07-01|-26.0|55.0|-26.07252|0.02157 +2016-07-01|-26.0|56.0|-26.05656|0.03152 +2016-07-01|-26.0|57.0|-26.01285|0.04149 +2016-07-01|-26.0|58.0|-25.94171|0.05143 +2016-07-01|-26.0|59.0|-25.84355|0.06133 +2016-07-01|-26.0|60.0|-25.71883|0.07115 +2016-07-01|-26.0|61.0|-25.56809|0.08087 +2016-07-01|-26.0|62.0|-25.39188|0.09044 +2016-07-01|-26.0|63.0|-25.19079|0.09985 +2016-07-01|-26.0|64.0|-24.96544|0.10907 +2016-07-01|-26.0|65.0|-24.71642|0.11805 +2016-07-01|-26.0|66.0|-24.44435|0.12678 +2016-07-01|-26.0|67.0|-24.1498|0.13521 +2016-07-01|-26.0|68.0|-23.83332|0.14333 +2016-07-01|-26.0|69.0|-23.49545|0.15108 +2016-07-01|-26.0|70.0|-23.13668|0.15846 +2016-07-01|-26.0|71.0|-22.75747|0.16541 +2016-07-01|-26.0|72.0|-22.35825|0.17192 +2016-07-01|-26.0|73.0|-21.93943|0.17794 +2016-07-01|-26.0|74.0|-21.5014|0.18345 +2016-07-01|-26.0|75.0|-21.04454|0.18842 +2016-07-01|-26.0|76.0|-20.56927|0.19281 +2016-07-01|-26.0|77.0|-20.07599|0.19659 +2016-07-01|-26.0|78.0|-19.56519|0.19974 +2016-07-01|-26.0|79.0|-19.0374|0.20223 +2016-07-01|-26.0|80.0|-18.49323|0.20404 +2016-07-01|-26.0|81.0|-17.93341|0.20513 +2016-07-01|-26.0|82.0|-17.35877|0.20549 +2016-07-01|-26.0|83.0|-16.77028|0.20511 +2016-07-01|-26.0|84.0|-16.16908|0.20397 +2016-07-01|-26.0|85.0|-15.55642|0.20206 +2016-07-01|-26.0|86.0|-14.93375|0.19938 +2016-07-01|-26.0|87.0|-14.30267|0.19594 +2016-07-01|-26.0|88.0|-13.6649|0.19174 +2016-07-01|-26.0|89.0|-13.02235|0.18681 +2016-07-01|-26.0|90.0|-12.37701|0.18116 +2016-07-01|-26.0|91.0|-11.731|0.17483 +2016-07-01|-26.0|92.0|-11.08647|0.16786 +2016-07-01|-26.0|93.0|-10.44565|0.16029 +2016-07-01|-26.0|94.0|-9.81076|0.15217 +2016-07-01|-26.0|95.0|-9.18396|0.14357 +2016-07-01|-26.0|96.0|-8.56738|0.13455 +2016-07-01|-26.0|97.0|-7.963|0.12518 +2016-07-01|-26.0|98.0|-7.37268|0.11551 +2016-07-01|-26.0|99.0|-6.7981|0.10564 +2016-07-01|-26.0|100.0|-6.24073|0.09562 +2016-07-01|-26.0|101.0|-5.7018|0.08554 +2016-07-01|-26.0|102.0|-5.1823|0.07546 +2016-07-01|-26.0|103.0|-4.68296|0.06545 +2016-07-01|-26.0|104.0|-4.20423|0.05558 +2016-07-01|-26.0|105.0|-3.74631|0.04591 +2016-07-01|-26.0|106.0|-3.30911|0.03648 +2016-07-01|-26.0|107.0|-2.89231|0.02737 +2016-07-01|-26.0|108.0|-2.49533|0.0186 +2016-07-01|-26.0|109.0|-2.11737|0.01022 +2016-07-01|-26.0|110.0|-1.75744|0.00227 +2016-07-01|-26.0|111.0|-1.41438|-0.00524 +2016-07-01|-26.0|112.0|-1.08685|-0.01226 +2016-07-01|-26.0|113.0|-0.77344|-0.0188 +2016-07-01|-26.0|114.0|-0.47262|-0.02483 +2016-07-01|-26.0|115.0|-0.1828|-0.03034 +2016-07-01|-26.0|116.0|0.09762|-0.03534 +2016-07-01|-26.0|117.0|0.37025|-0.03982 +2016-07-01|-26.0|118.0|0.63668|-0.04379 +2016-07-01|-26.0|119.0|0.89843|-0.04725 +2016-07-01|-26.0|120.0|1.15696|-0.05021 +2016-07-01|-26.0|121.0|1.41363|-0.0527 +2016-07-01|-26.0|122.0|1.66969|-0.05472 +2016-07-01|-26.0|123.0|1.92624|-0.05628 +2016-07-01|-26.0|124.0|2.18427|-0.05742 +2016-07-01|-26.0|125.0|2.44461|-0.05814 +2016-07-01|-26.0|126.0|2.70793|-0.05848 +2016-07-01|-26.0|127.0|2.97475|-0.05845 +2016-07-01|-26.0|128.0|3.24545|-0.05807 +2016-07-01|-26.0|129.0|3.52025|-0.05737 +2016-07-01|-26.0|130.0|3.79924|-0.05637 +2016-07-01|-26.0|131.0|4.08238|-0.0551 +2016-07-01|-26.0|132.0|4.36952|-0.05358 +2016-07-01|-26.0|133.0|4.66039|-0.05183 +2016-07-01|-26.0|134.0|4.95466|-0.04987 +2016-07-01|-26.0|135.0|5.25191|-0.04773 +2016-07-01|-26.0|136.0|5.55167|-0.04543 +2016-07-01|-26.0|137.0|5.85345|-0.04299 +2016-07-01|-26.0|138.0|6.1567|-0.04042 +2016-07-01|-26.0|139.0|6.46089|-0.03775 +2016-07-01|-26.0|140.0|6.76548|-0.03499 +2016-07-01|-26.0|141.0|7.06993|-0.03217 +2016-07-01|-26.0|142.0|7.37373|-0.02929 +2016-07-01|-26.0|143.0|7.67639|-0.02637 +2016-07-01|-26.0|144.0|7.97744|-0.02342 +2016-07-01|-26.0|145.0|8.27646|-0.02046 +2016-07-01|-26.0|146.0|8.57304|-0.01749 +2016-07-01|-26.0|147.0|8.86679|-0.01454 +2016-07-01|-26.0|148.0|9.15737|-0.01159 +2016-07-01|-26.0|149.0|9.44443|-0.00868 +2016-07-01|-26.0|150.0|9.72766|-0.0058 +2016-07-01|-26.0|151.0|10.00675|-0.00295 +2016-07-01|-26.0|152.0|10.28138|-1.6E-4 +2016-07-01|-26.0|153.0|10.55126|0.00259 +2016-07-01|-26.0|154.0|10.81608|0.00528 +2016-07-01|-26.0|155.0|11.07551|0.0079 +2016-07-01|-26.0|156.0|11.32925|0.01046 +2016-07-01|-26.0|157.0|11.57696|0.01296 +2016-07-01|-26.0|158.0|11.81831|0.01537 +2016-07-01|-26.0|159.0|12.05295|0.01772 +2016-07-01|-26.0|160.0|12.28055|0.01998 +2016-07-01|-26.0|161.0|12.50077|0.02217 +2016-07-01|-26.0|162.0|12.71327|0.02427 +2016-07-01|-26.0|163.0|12.91775|0.02628 +2016-07-01|-26.0|164.0|13.11392|0.02821 +2016-07-01|-26.0|165.0|13.30152|0.03004 +2016-07-01|-26.0|166.0|13.48032|0.03178 +2016-07-01|-26.0|167.0|13.65013|0.03343 +2016-07-01|-26.0|168.0|13.81084|0.03498 +2016-07-01|-26.0|169.0|13.96236|0.03644 +2016-07-01|-26.0|170.0|14.10466|0.03779 +2016-07-01|-26.0|171.0|14.23781|0.03903 +2016-07-01|-26.0|172.0|14.36189|0.04017 +2016-07-01|-26.0|173.0|14.47708|0.04119 +2016-07-01|-26.0|174.0|14.58361|0.04211 +2016-07-01|-26.0|175.0|14.68178|0.0429 +2016-07-01|-26.0|176.0|14.77192|0.04358 +2016-07-01|-26.0|177.0|14.85444|0.04413 +2016-07-01|-26.0|178.0|14.92978|0.04456 +2016-07-01|-26.0|179.0|14.99842|0.04486 +2016-07-01|-26.0|-1.0|-21.27977|0.13411 +2016-07-01|-26.0|-2.0|-21.6799|0.12659 +2016-07-01|-26.0|-3.0|-22.06904|0.11822 +2016-07-01|-26.0|-4.0|-22.44456|0.10917 +2016-07-01|-26.0|-5.0|-22.80415|0.0996 +2016-07-01|-26.0|-6.0|-23.14584|0.08966 +2016-07-01|-26.0|-7.0|-23.468|0.07952 +2016-07-01|-26.0|-8.0|-23.76933|0.06931 +2016-07-01|-26.0|-9.0|-24.04888|0.05916 +2016-07-01|-26.0|-10.0|-24.30597|0.04918 +2016-07-01|-26.0|-11.0|-24.54024|0.03948 +2016-07-01|-26.0|-12.0|-24.75154|0.03016 +2016-07-01|-26.0|-13.0|-24.93999|0.02127 +2016-07-01|-26.0|-14.0|-25.10587|0.01288 +2016-07-01|-26.0|-15.0|-25.24966|0.00502 +2016-07-01|-26.0|-16.0|-25.37194|-0.00226 +2016-07-01|-26.0|-17.0|-25.47341|-0.00896 +2016-07-01|-26.0|-18.0|-25.55482|-0.01508 +2016-07-01|-26.0|-19.0|-25.61699|-0.02063 +2016-07-01|-26.0|-20.0|-25.6607|-0.02563 +2016-07-01|-26.0|-21.0|-25.68676|-0.03011 +2016-07-01|-26.0|-22.0|-25.6959|-0.03412 +2016-07-01|-26.0|-23.0|-25.68881|-0.0377 +2016-07-01|-26.0|-24.0|-25.66608|-0.04091 +2016-07-01|-26.0|-25.0|-25.62819|-0.04381 +2016-07-01|-26.0|-26.0|-25.57552|-0.04645 +2016-07-01|-26.0|-27.0|-25.50831|-0.04891 +2016-07-01|-26.0|-28.0|-25.42666|-0.05125 +2016-07-01|-26.0|-29.0|-25.33056|-0.05352 +2016-07-01|-26.0|-30.0|-25.21982|-0.0558 +2016-07-01|-26.0|-31.0|-25.09414|-0.05814 +2016-07-01|-26.0|-32.0|-24.95307|-0.0606 +2016-07-01|-26.0|-33.0|-24.79605|-0.06321 +2016-07-01|-26.0|-34.0|-24.62238|-0.06603 +2016-07-01|-26.0|-35.0|-24.43129|-0.06908 +2016-07-01|-26.0|-36.0|-24.22189|-0.07239 +2016-07-01|-26.0|-37.0|-23.99323|-0.07598 +2016-07-01|-26.0|-38.0|-23.74431|-0.07987 +2016-07-01|-26.0|-39.0|-23.47408|-0.08405 +2016-07-01|-26.0|-40.0|-23.18148|-0.08853 +2016-07-01|-26.0|-41.0|-22.86544|-0.09328 +2016-07-01|-26.0|-42.0|-22.52491|-0.09829 +2016-07-01|-26.0|-43.0|-22.15888|-0.10354 +2016-07-01|-26.0|-44.0|-21.7664|-0.10899 +2016-07-01|-26.0|-45.0|-21.34657|-0.11462 +2016-07-01|-26.0|-46.0|-20.89861|-0.12037 +2016-07-01|-26.0|-47.0|-20.42182|-0.1262 +2016-07-01|-26.0|-48.0|-19.91566|-0.13207 +2016-07-01|-26.0|-49.0|-19.37969|-0.13793 +2016-07-01|-26.0|-50.0|-18.81365|-0.14372 +2016-07-01|-26.0|-51.0|-18.21744|-0.14939 +2016-07-01|-26.0|-52.0|-17.59114|-0.15489 +2016-07-01|-26.0|-53.0|-16.93503|-0.16017 +2016-07-01|-26.0|-54.0|-16.24957|-0.16518 +2016-07-01|-26.0|-55.0|-15.53546|-0.16985 +2016-07-01|-26.0|-56.0|-14.7936|-0.17416 +2016-07-01|-26.0|-57.0|-14.0251|-0.17805 +2016-07-01|-26.0|-58.0|-13.2313|-0.18149 +2016-07-01|-26.0|-59.0|-12.41378|-0.18443 +2016-07-01|-26.0|-60.0|-11.5743|-0.18685 +2016-07-01|-26.0|-61.0|-10.71484|-0.18872 +2016-07-01|-26.0|-62.0|-9.8376|-0.19002 +2016-07-01|-26.0|-63.0|-8.94492|-0.19073 +2016-07-01|-26.0|-64.0|-8.03935|-0.19086 +2016-07-01|-26.0|-65.0|-7.12354|-0.19039 +2016-07-01|-26.0|-66.0|-6.2003|-0.18933 +2016-07-01|-26.0|-67.0|-5.27251|-0.1877 +2016-07-01|-26.0|-68.0|-4.34311|-0.18552 +2016-07-01|-26.0|-69.0|-3.41511|-0.18279 +2016-07-01|-26.0|-70.0|-2.49149|-0.17957 +2016-07-01|-26.0|-71.0|-1.57523|-0.17587 +2016-07-01|-26.0|-72.0|-0.66924|-0.17174 +2016-07-01|-26.0|-73.0|0.22365|-0.16722 +2016-07-01|-26.0|-74.0|1.10071|-0.16235 +2016-07-01|-26.0|-75.0|1.95936|-0.15718 +2016-07-01|-26.0|-76.0|2.79717|-0.15175 +2016-07-01|-26.0|-77.0|3.61189|-0.14611 +2016-07-01|-26.0|-78.0|4.40146|-0.14032 +2016-07-01|-26.0|-79.0|5.16404|-0.1344 +2016-07-01|-26.0|-80.0|5.898|-0.12842 +2016-07-01|-26.0|-81.0|6.60191|-0.12241 +2016-07-01|-26.0|-82.0|7.27462|-0.11641 +2016-07-01|-26.0|-83.0|7.91516|-0.11047 +2016-07-01|-26.0|-84.0|8.52283|-0.10461 +2016-07-01|-26.0|-85.0|9.09711|-0.09887 +2016-07-01|-26.0|-86.0|9.63774|-0.09328 +2016-07-01|-26.0|-87.0|10.14465|-0.08787 +2016-07-01|-26.0|-88.0|10.618|-0.08266 +2016-07-01|-26.0|-89.0|11.05811|-0.07768 +2016-07-01|-26.0|-90.0|11.46552|-0.07294 +2016-07-01|-26.0|-91.0|11.84092|-0.06845 +2016-07-01|-26.0|-92.0|12.18517|-0.06424 +2016-07-01|-26.0|-93.0|12.49929|-0.06031 +2016-07-01|-26.0|-94.0|12.78442|-0.05667 +2016-07-01|-26.0|-95.0|13.04183|-0.05333 +2016-07-01|-26.0|-96.0|13.2729|-0.05028 +2016-07-01|-26.0|-97.0|13.47909|-0.04753 +2016-07-01|-26.0|-98.0|13.66194|-0.04507 +2016-07-01|-26.0|-99.0|13.82307|-0.04289 +2016-07-01|-26.0|-100.0|13.96412|-0.04099 +2016-07-01|-26.0|-101.0|14.08676|-0.03936 +2016-07-01|-26.0|-102.0|14.19268|-0.03799 +2016-07-01|-26.0|-103.0|14.28357|-0.03685 +2016-07-01|-26.0|-104.0|14.36109|-0.03592 +2016-07-01|-26.0|-105.0|14.42686|-0.0352 +2016-07-01|-26.0|-106.0|14.48247|-0.03465 +2016-07-01|-26.0|-107.0|14.52943|-0.03426 +2016-07-01|-26.0|-108.0|14.56918|-0.03399 +2016-07-01|-26.0|-109.0|14.60308|-0.03383 +2016-07-01|-26.0|-110.0|14.63238|-0.03375 +2016-07-01|-26.0|-111.0|14.65825|-0.03373 +2016-07-01|-26.0|-112.0|14.68173|-0.03373 +2016-07-01|-26.0|-113.0|14.70376|-0.03374 +2016-07-01|-26.0|-114.0|14.72517|-0.03374 +2016-07-01|-26.0|-115.0|14.74667|-0.0337 +2016-07-01|-26.0|-116.0|14.76885|-0.03361 +2016-07-01|-26.0|-117.0|14.7922|-0.03345 +2016-07-01|-26.0|-118.0|14.8171|-0.0332 +2016-07-01|-26.0|-119.0|14.84382|-0.03286 +2016-07-01|-26.0|-120.0|14.87256|-0.03241 +2016-07-01|-26.0|-121.0|14.90342|-0.03186 +2016-07-01|-26.0|-122.0|14.9364|-0.03119 +2016-07-01|-26.0|-123.0|14.97146|-0.03041 +2016-07-01|-26.0|-124.0|15.00849|-0.02951 +2016-07-01|-26.0|-125.0|15.04731|-0.02851 +2016-07-01|-26.0|-126.0|15.08771|-0.0274 +2016-07-01|-26.0|-127.0|15.12946|-0.0262 +2016-07-01|-26.0|-128.0|15.17225|-0.02491 +2016-07-01|-26.0|-129.0|15.21581|-0.02354 +2016-07-01|-26.0|-130.0|15.2598|-0.0221 +2016-07-01|-26.0|-131.0|15.30392|-0.02061 +2016-07-01|-26.0|-132.0|15.34783|-0.01907 +2016-07-01|-26.0|-133.0|15.39121|-0.0175 +2016-07-01|-26.0|-134.0|15.43374|-0.0159 +2016-07-01|-26.0|-135.0|15.47513|-0.01428 +2016-07-01|-26.0|-136.0|15.51507|-0.01266 +2016-07-01|-26.0|-137.0|15.5533|-0.01104 +2016-07-01|-26.0|-138.0|15.58956|-0.00942 +2016-07-01|-26.0|-139.0|15.62362|-0.00781 +2016-07-01|-26.0|-140.0|15.65527|-0.00622 +2016-07-01|-26.0|-141.0|15.68432|-0.00464 +2016-07-01|-26.0|-142.0|15.71062|-0.00308 +2016-07-01|-26.0|-143.0|15.73404|-0.00153 +2016-07-01|-26.0|-144.0|15.75446|1.0E-5 +2016-07-01|-26.0|-145.0|15.77183|0.00153 +2016-07-01|-26.0|-146.0|15.78609|0.00305 +2016-07-01|-26.0|-147.0|15.79723|0.00457 +2016-07-01|-26.0|-148.0|15.80527|0.00608 +2016-07-01|-26.0|-149.0|15.81023|0.0076 +2016-07-01|-26.0|-150.0|15.8122|0.00913 +2016-07-01|-26.0|-151.0|15.81127|0.01067 +2016-07-01|-26.0|-152.0|15.80756|0.01223 +2016-07-01|-26.0|-153.0|15.80122|0.0138 +2016-07-01|-26.0|-154.0|15.79241|0.01539 +2016-07-01|-26.0|-155.0|15.78131|0.017 +2016-07-01|-26.0|-156.0|15.76811|0.01862 +2016-07-01|-26.0|-157.0|15.75302|0.02026 +2016-07-01|-26.0|-158.0|15.73625|0.02191 +2016-07-01|-26.0|-159.0|15.718|0.02356 +2016-07-01|-26.0|-160.0|15.69846|0.02521 +2016-07-01|-26.0|-161.0|15.67783|0.02685 +2016-07-01|-26.0|-162.0|15.65625|0.02848 +2016-07-01|-26.0|-163.0|15.63389|0.03008 +2016-07-01|-26.0|-164.0|15.61083|0.03164 +2016-07-01|-26.0|-165.0|15.58717|0.03316 +2016-07-01|-26.0|-166.0|15.56292|0.03463 +2016-07-01|-26.0|-167.0|15.53807|0.03604 +2016-07-01|-26.0|-168.0|15.51256|0.03737 +2016-07-01|-26.0|-169.0|15.48626|0.03862 +2016-07-01|-26.0|-170.0|15.45902|0.03977 +2016-07-01|-26.0|-171.0|15.43059|0.04083 +2016-07-01|-26.0|-172.0|15.40072|0.04179 +2016-07-01|-26.0|-173.0|15.36905|0.04263 +2016-07-01|-26.0|-174.0|15.33522|0.04335 +2016-07-01|-26.0|-175.0|15.29881|0.04395 +2016-07-01|-26.0|-176.0|15.25935|0.04443 +2016-07-01|-26.0|-177.0|15.21634|0.04478 +2016-07-01|-26.0|-178.0|15.16929|0.045 +2016-07-01|-26.0|-179.0|15.11764|0.04508 +2016-07-01|-27.0|0.0|-21.38359|0.13225 +2016-07-01|-27.0|1.0|-21.0027|0.13702 +2016-07-01|-27.0|2.0|-20.6216|0.14047 +2016-07-01|-27.0|3.0|-20.24397|0.14248 +2016-07-01|-27.0|4.0|-19.87368|0.14296 +2016-07-01|-27.0|5.0|-19.51464|0.14183 +2016-07-01|-27.0|6.0|-19.17078|0.13906 +2016-07-01|-27.0|7.0|-18.84596|0.13463 +2016-07-01|-27.0|8.0|-18.54392|0.12857 +2016-07-01|-27.0|9.0|-18.26818|0.12093 +2016-07-01|-27.0|10.0|-18.02199|0.11179 +2016-07-01|-27.0|11.0|-17.80829|0.10129 +2016-07-01|-27.0|12.0|-17.62959|0.08956 +2016-07-01|-27.0|13.0|-17.48803|0.07677 +2016-07-01|-27.0|14.0|-17.38525|0.06311 +2016-07-01|-27.0|15.0|-17.32244|0.04878 +2016-07-01|-27.0|16.0|-17.30028|0.03398 +2016-07-01|-27.0|17.0|-17.31898|0.01893 +2016-07-01|-27.0|18.0|-17.37827|0.00384 +2016-07-01|-27.0|19.0|-17.47743|-0.01109 +2016-07-01|-27.0|20.0|-17.61531|-0.02567 +2016-07-01|-27.0|21.0|-17.79039|-0.03972 +2016-07-01|-27.0|22.0|-18.00077|-0.05309 +2016-07-01|-27.0|23.0|-18.24427|-0.06562 +2016-07-01|-27.0|24.0|-18.51843|-0.07721 +2016-07-01|-27.0|25.0|-18.82059|-0.08775 +2016-07-01|-27.0|26.0|-19.14789|-0.09717 +2016-07-01|-27.0|27.0|-19.49738|-0.10542 +2016-07-01|-27.0|28.0|-19.86599|-0.11247 +2016-07-01|-27.0|29.0|-20.25062|-0.11829 +2016-07-01|-27.0|30.0|-20.64814|-0.12289 +2016-07-01|-27.0|31.0|-21.05545|-0.12629 +2016-07-01|-27.0|32.0|-21.46947|-0.12852 +2016-07-01|-27.0|33.0|-21.88721|-0.12962 +2016-07-01|-27.0|34.0|-22.30577|-0.12963 +2016-07-01|-27.0|35.0|-22.72232|-0.12863 +2016-07-01|-27.0|36.0|-23.13419|-0.12665 +2016-07-01|-27.0|37.0|-23.53881|-0.12377 +2016-07-01|-27.0|38.0|-23.93375|-0.12006 +2016-07-01|-27.0|39.0|-24.31674|-0.11558 +2016-07-01|-27.0|40.0|-24.68564|-0.11038 +2016-07-01|-27.0|41.0|-25.03848|-0.10454 +2016-07-01|-27.0|42.0|-25.37342|-0.09811 +2016-07-01|-27.0|43.0|-25.6888|-0.09115 +2016-07-01|-27.0|44.0|-25.98309|-0.08372 +2016-07-01|-27.0|45.0|-26.25495|-0.07585 +2016-07-01|-27.0|46.0|-26.50314|-0.06761 +2016-07-01|-27.0|47.0|-26.72663|-0.05902 +2016-07-01|-27.0|48.0|-26.92449|-0.05014 +2016-07-01|-27.0|49.0|-27.09596|-0.04099 +2016-07-01|-27.0|50.0|-27.24041|-0.03162 +2016-07-01|-27.0|51.0|-27.35736|-0.02205 +2016-07-01|-27.0|52.0|-27.44645|-0.01232 +2016-07-01|-27.0|53.0|-27.50745|-0.00246 +2016-07-01|-27.0|54.0|-27.54024|0.00751 +2016-07-01|-27.0|55.0|-27.54483|0.01755 +2016-07-01|-27.0|56.0|-27.52133|0.02765 +2016-07-01|-27.0|57.0|-27.46993|0.03777 +2016-07-01|-27.0|58.0|-27.39092|0.04789 +2016-07-01|-27.0|59.0|-27.28466|0.05797 +2016-07-01|-27.0|60.0|-27.15157|0.068 +2016-07-01|-27.0|61.0|-26.99214|0.07793 +2016-07-01|-27.0|62.0|-26.80687|0.08775 +2016-07-01|-27.0|63.0|-26.5963|0.09743 +2016-07-01|-27.0|64.0|-26.36101|0.10692 +2016-07-01|-27.0|65.0|-26.10156|0.11621 +2016-07-01|-27.0|66.0|-25.8185|0.12526 +2016-07-01|-27.0|67.0|-25.51239|0.13403 +2016-07-01|-27.0|68.0|-25.18375|0.1425 +2016-07-01|-27.0|69.0|-24.8331|0.15063 +2016-07-01|-27.0|70.0|-24.4609|0.15838 +2016-07-01|-27.0|71.0|-24.06762|0.16572 +2016-07-01|-27.0|72.0|-23.65367|0.17262 +2016-07-01|-27.0|73.0|-23.21947|0.17904 +2016-07-01|-27.0|74.0|-22.7654|0.18495 +2016-07-01|-27.0|75.0|-22.29187|0.19031 +2016-07-01|-27.0|76.0|-21.7993|0.19509 +2016-07-01|-27.0|77.0|-21.28811|0.19925 +2016-07-01|-27.0|78.0|-20.7588|0.20277 +2016-07-01|-27.0|79.0|-20.21192|0.20561 +2016-07-01|-27.0|80.0|-19.64811|0.20774 +2016-07-01|-27.0|81.0|-19.0681|0.20914 +2016-07-01|-27.0|82.0|-18.47276|0.20979 +2016-07-01|-27.0|83.0|-17.86307|0.20966 +2016-07-01|-27.0|84.0|-17.24016|0.20875 +2016-07-01|-27.0|85.0|-16.60534|0.20704 +2016-07-01|-27.0|86.0|-15.96004|0.20453 +2016-07-01|-27.0|87.0|-15.30587|0.20123 +2016-07-01|-27.0|88.0|-14.64459|0.19714 +2016-07-01|-27.0|89.0|-13.97809|0.19228 +2016-07-01|-27.0|90.0|-13.30839|0.18668 +2016-07-01|-27.0|91.0|-12.63759|0.18037 +2016-07-01|-27.0|92.0|-11.96789|0.1734 +2016-07-01|-27.0|93.0|-11.3015|0.1658 +2016-07-01|-27.0|94.0|-10.64066|0.15763 +2016-07-01|-27.0|95.0|-9.98755|0.14896 +2016-07-01|-27.0|96.0|-9.34431|0.13986 +2016-07-01|-27.0|97.0|-8.71295|0.13038 +2016-07-01|-27.0|98.0|-8.09534|0.12061 +2016-07-01|-27.0|99.0|-7.49318|0.11062 +2016-07-01|-27.0|100.0|-6.90798|0.10048 +2016-07-01|-27.0|101.0|-6.34101|0.09028 +2016-07-01|-27.0|102.0|-5.79328|0.08008 +2016-07-01|-27.0|103.0|-5.26556|0.06995 +2016-07-01|-27.0|104.0|-4.75835|0.05997 +2016-07-01|-27.0|105.0|-4.27189|0.05018 +2016-07-01|-27.0|106.0|-3.80615|0.04066 +2016-07-01|-27.0|107.0|-3.36085|0.03145 +2016-07-01|-27.0|108.0|-2.93546|0.0226 +2016-07-01|-27.0|109.0|-2.52925|0.01415 +2016-07-01|-27.0|110.0|-2.14128|0.00613 +2016-07-01|-27.0|111.0|-1.77044|-0.00143 +2016-07-01|-27.0|112.0|-1.41547|-0.00851 +2016-07-01|-27.0|113.0|-1.07499|-0.01509 +2016-07-01|-27.0|114.0|-0.74755|-0.02115 +2016-07-01|-27.0|115.0|-0.43162|-0.0267 +2016-07-01|-27.0|116.0|-0.12563|-0.03173 +2016-07-01|-27.0|117.0|0.17197|-0.03623 +2016-07-01|-27.0|118.0|0.46271|-0.04022 +2016-07-01|-27.0|119.0|0.74809|-0.04371 +2016-07-01|-27.0|120.0|1.02952|-0.04669 +2016-07-01|-27.0|121.0|1.30834|-0.0492 +2016-07-01|-27.0|122.0|1.58577|-0.05124 +2016-07-01|-27.0|123.0|1.8629|-0.05284 +2016-07-01|-27.0|124.0|2.1407|-0.05401 +2016-07-01|-27.0|125.0|2.42|-0.05477 +2016-07-01|-27.0|126.0|2.70147|-0.05515 +2016-07-01|-27.0|127.0|2.98566|-0.05516 +2016-07-01|-27.0|128.0|3.27294|-0.05483 +2016-07-01|-27.0|129.0|3.56357|-0.05419 +2016-07-01|-27.0|130.0|3.85767|-0.05325 +2016-07-01|-27.0|131.0|4.15522|-0.05204 +2016-07-01|-27.0|132.0|4.4561|-0.05059 +2016-07-01|-27.0|133.0|4.7601|-0.04891 +2016-07-01|-27.0|134.0|5.06692|-0.04703 +2016-07-01|-27.0|135.0|5.37619|-0.04497 +2016-07-01|-27.0|136.0|5.68747|-0.04276 +2016-07-01|-27.0|137.0|6.0003|-0.0404 +2016-07-01|-27.0|138.0|6.3142|-0.03792 +2016-07-01|-27.0|139.0|6.62864|-0.03533 +2016-07-01|-27.0|140.0|6.94313|-0.03266 +2016-07-01|-27.0|141.0|7.25716|-0.02992 +2016-07-01|-27.0|142.0|7.57023|-0.02713 +2016-07-01|-27.0|143.0|7.88189|-0.02429 +2016-07-01|-27.0|144.0|8.19168|-0.02143 +2016-07-01|-27.0|145.0|8.49918|-0.01855 +2016-07-01|-27.0|146.0|8.80398|-0.01566 +2016-07-01|-27.0|147.0|9.10573|-0.01278 +2016-07-01|-27.0|148.0|9.40406|-0.00991 +2016-07-01|-27.0|149.0|9.69864|-0.00706 +2016-07-01|-27.0|150.0|9.98914|-0.00425 +2016-07-01|-27.0|151.0|10.27525|-0.00147 +2016-07-01|-27.0|152.0|10.55666|0.00127 +2016-07-01|-27.0|153.0|10.83306|0.00396 +2016-07-01|-27.0|154.0|11.10413|0.00659 +2016-07-01|-27.0|155.0|11.36957|0.00917 +2016-07-01|-27.0|156.0|11.62904|0.01168 +2016-07-01|-27.0|157.0|11.88223|0.01413 +2016-07-01|-27.0|158.0|12.1288|0.0165 +2016-07-01|-27.0|159.0|12.36842|0.01881 +2016-07-01|-27.0|160.0|12.60075|0.02103 +2016-07-01|-27.0|161.0|12.82546|0.02318 +2016-07-01|-27.0|162.0|13.04225|0.02524 +2016-07-01|-27.0|163.0|13.25081|0.02722 +2016-07-01|-27.0|164.0|13.45087|0.02911 +2016-07-01|-27.0|165.0|13.64218|0.03091 +2016-07-01|-27.0|166.0|13.82455|0.03262 +2016-07-01|-27.0|167.0|13.9978|0.03423 +2016-07-01|-27.0|168.0|14.16183|0.03575 +2016-07-01|-27.0|169.0|14.31656|0.03717 +2016-07-01|-27.0|170.0|14.46201|0.03849 +2016-07-01|-27.0|171.0|14.59822|0.0397 +2016-07-01|-27.0|172.0|14.72531|0.04081 +2016-07-01|-27.0|173.0|14.84347|0.0418 +2016-07-01|-27.0|174.0|14.95293|0.04269 +2016-07-01|-27.0|175.0|15.05398|0.04345 +2016-07-01|-27.0|176.0|15.14698|0.0441 +2016-07-01|-27.0|177.0|15.23233|0.04463 +2016-07-01|-27.0|178.0|15.31045|0.04504 +2016-07-01|-27.0|179.0|15.38183|0.04532 +2016-07-01|-27.0|-1.0|-21.76074|0.1263 +2016-07-01|-27.0|-2.0|-22.13089|0.11931 +2016-07-01|-27.0|-3.0|-22.49105|0.11145 +2016-07-01|-27.0|-4.0|-22.83854|0.10288 +2016-07-01|-27.0|-5.0|-23.17103|0.09375 +2016-07-01|-27.0|-6.0|-23.48651|0.08423 +2016-07-01|-27.0|-7.0|-23.78331|0.07448 +2016-07-01|-27.0|-8.0|-24.06012|0.06462 +2016-07-01|-27.0|-9.0|-24.31595|0.05481 +2016-07-01|-27.0|-10.0|-24.55009|0.04514 +2016-07-01|-27.0|-11.0|-24.76215|0.03573 +2016-07-01|-27.0|-12.0|-24.95198|0.02667 +2016-07-01|-27.0|-13.0|-25.11965|0.01802 +2016-07-01|-27.0|-14.0|-25.26545|0.00985 +2016-07-01|-27.0|-15.0|-25.38981|0.0022 +2016-07-01|-27.0|-16.0|-25.49331|-0.0049 +2016-07-01|-27.0|-17.0|-25.57662|-0.01144 +2016-07-01|-27.0|-18.0|-25.64049|-0.01742 +2016-07-01|-27.0|-19.0|-25.68568|-0.02284 +2016-07-01|-27.0|-20.0|-25.71298|-0.02773 +2016-07-01|-27.0|-21.0|-25.72315|-0.03212 +2016-07-01|-27.0|-22.0|-25.71692|-0.03606 +2016-07-01|-27.0|-23.0|-25.69493|-0.03958 +2016-07-01|-27.0|-24.0|-25.65775|-0.04274 +2016-07-01|-27.0|-25.0|-25.60584|-0.0456 +2016-07-01|-27.0|-26.0|-25.53955|-0.04822 +2016-07-01|-27.0|-27.0|-25.45909|-0.05066 +2016-07-01|-27.0|-28.0|-25.36454|-0.05299 +2016-07-01|-27.0|-29.0|-25.25583|-0.05526 +2016-07-01|-27.0|-30.0|-25.13277|-0.05754 +2016-07-01|-27.0|-31.0|-24.99503|-0.05988 +2016-07-01|-27.0|-32.0|-24.84212|-0.06233 +2016-07-01|-27.0|-33.0|-24.67345|-0.06495 +2016-07-01|-27.0|-34.0|-24.48832|-0.06776 +2016-07-01|-27.0|-35.0|-24.2859|-0.0708 +2016-07-01|-27.0|-36.0|-24.06531|-0.0741 +2016-07-01|-27.0|-37.0|-23.82555|-0.07768 +2016-07-01|-27.0|-38.0|-23.56562|-0.08154 +2016-07-01|-27.0|-39.0|-23.28443|-0.08569 +2016-07-01|-27.0|-40.0|-22.98092|-0.09012 +2016-07-01|-27.0|-41.0|-22.654|-0.09482 +2016-07-01|-27.0|-42.0|-22.30261|-0.09977 +2016-07-01|-27.0|-43.0|-21.92573|-0.10494 +2016-07-01|-27.0|-44.0|-21.5224|-0.11032 +2016-07-01|-27.0|-45.0|-21.09172|-0.11585 +2016-07-01|-27.0|-46.0|-20.63292|-0.1215 +2016-07-01|-27.0|-47.0|-20.1453|-0.12722 +2016-07-01|-27.0|-48.0|-19.62832|-0.13297 +2016-07-01|-27.0|-49.0|-19.08157|-0.1387 +2016-07-01|-27.0|-50.0|-18.50479|-0.14435 +2016-07-01|-27.0|-51.0|-17.89792|-0.14988 +2016-07-01|-27.0|-52.0|-17.26105|-0.15523 +2016-07-01|-27.0|-53.0|-16.59449|-0.16036 +2016-07-01|-27.0|-54.0|-15.89874|-0.1652 +2016-07-01|-27.0|-55.0|-15.17453|-0.16971 +2016-07-01|-27.0|-56.0|-14.42278|-0.17385 +2016-07-01|-27.0|-57.0|-13.64467|-0.17757 +2016-07-01|-27.0|-58.0|-12.84156|-0.18083 +2016-07-01|-27.0|-59.0|-12.01506|-0.1836 +2016-07-01|-27.0|-60.0|-11.16698|-0.18585 +2016-07-01|-27.0|-61.0|-10.29934|-0.18755 +2016-07-01|-27.0|-62.0|-9.41435|-0.18869 +2016-07-01|-27.0|-63.0|-8.5144|-0.18924 +2016-07-01|-27.0|-64.0|-7.60205|-0.18921 +2016-07-01|-27.0|-65.0|-6.67998|-0.1886 +2016-07-01|-27.0|-66.0|-5.751|-0.18741 +2016-07-01|-27.0|-67.0|-4.81801|-0.18565 +2016-07-01|-27.0|-68.0|-3.88395|-0.18334 +2016-07-01|-27.0|-69.0|-2.95182|-0.18052 +2016-07-01|-27.0|-70.0|-2.0246|-0.1772 +2016-07-01|-27.0|-71.0|-1.10523|-0.17342 +2016-07-01|-27.0|-72.0|-0.19662|-0.16922 +2016-07-01|-27.0|-73.0|0.69843|-0.16464 +2016-07-01|-27.0|-74.0|1.57723|-0.15972 +2016-07-01|-27.0|-75.0|2.43723|-0.15451 +2016-07-01|-27.0|-76.0|3.27602|-0.14906 +2016-07-01|-27.0|-77.0|4.09141|-0.14341 +2016-07-01|-27.0|-78.0|4.88137|-0.13761 +2016-07-01|-27.0|-79.0|5.64409|-0.13171 +2016-07-01|-27.0|-80.0|6.37798|-0.12574 +2016-07-01|-27.0|-81.0|7.08166|-0.11975 +2016-07-01|-27.0|-82.0|7.754|-0.11379 +2016-07-01|-27.0|-83.0|8.39406|-0.10788 +2016-07-01|-27.0|-84.0|9.00116|-0.10206 +2016-07-01|-27.0|-85.0|9.57483|-0.09637 +2016-07-01|-27.0|-86.0|10.11481|-0.09083 +2016-07-01|-27.0|-87.0|10.62107|-0.08547 +2016-07-01|-27.0|-88.0|11.09375|-0.08032 +2016-07-01|-27.0|-89.0|11.53321|-0.07539 +2016-07-01|-27.0|-90.0|11.93998|-0.07071 +2016-07-01|-27.0|-91.0|12.31477|-0.06628 +2016-07-01|-27.0|-92.0|12.65844|-0.06212 +2016-07-01|-27.0|-93.0|12.97199|-0.05825 +2016-07-01|-27.0|-94.0|13.25656|-0.05466 +2016-07-01|-27.0|-95.0|13.51343|-0.05136 +2016-07-01|-27.0|-96.0|13.74395|-0.04836 +2016-07-01|-27.0|-97.0|13.94958|-0.04565 +2016-07-01|-27.0|-98.0|14.13186|-0.04323 +2016-07-01|-27.0|-99.0|14.29236|-0.04109 +2016-07-01|-27.0|-100.0|14.43273|-0.03922 +2016-07-01|-27.0|-101.0|14.55463|-0.03762 +2016-07-01|-27.0|-102.0|14.65972|-0.03626 +2016-07-01|-27.0|-103.0|14.74967|-0.03514 +2016-07-01|-27.0|-104.0|14.82614|-0.03423 +2016-07-01|-27.0|-105.0|14.89074|-0.03352 +2016-07-01|-27.0|-106.0|14.94503|-0.03297 +2016-07-01|-27.0|-107.0|14.99052|-0.03258 +2016-07-01|-27.0|-108.0|15.02864|-0.03232 +2016-07-01|-27.0|-109.0|15.06073|-0.03215 +2016-07-01|-27.0|-110.0|15.08807|-0.03207 +2016-07-01|-27.0|-111.0|15.11179|-0.03203 +2016-07-01|-27.0|-112.0|15.13296|-0.03203 +2016-07-01|-27.0|-113.0|15.15252|-0.03203 +2016-07-01|-27.0|-114.0|15.17131|-0.03201 +2016-07-01|-27.0|-115.0|15.19003|-0.03197 +2016-07-01|-27.0|-116.0|15.20932|-0.03186 +2016-07-01|-27.0|-117.0|15.22966|-0.03169 +2016-07-01|-27.0|-118.0|15.25145|-0.03144 +2016-07-01|-27.0|-119.0|15.27501|-0.03109 +2016-07-01|-27.0|-120.0|15.30053|-0.03065 +2016-07-01|-27.0|-121.0|15.32815|-0.03009 +2016-07-01|-27.0|-122.0|15.3579|-0.02942 +2016-07-01|-27.0|-123.0|15.38975|-0.02864 +2016-07-01|-27.0|-124.0|15.42363|-0.02776 +2016-07-01|-27.0|-125.0|15.45938|-0.02676 +2016-07-01|-27.0|-126.0|15.49683|-0.02566 +2016-07-01|-27.0|-127.0|15.53574|-0.02447 +2016-07-01|-27.0|-128.0|15.57586|-0.02319 +2016-07-01|-27.0|-129.0|15.6169|-0.02184 +2016-07-01|-27.0|-130.0|15.65859|-0.02042 +2016-07-01|-27.0|-131.0|15.70059|-0.01894 +2016-07-01|-27.0|-132.0|15.74261|-0.01742 +2016-07-01|-27.0|-133.0|15.78434|-0.01586 +2016-07-01|-27.0|-134.0|15.82545|-0.01428 +2016-07-01|-27.0|-135.0|15.86566|-0.01269 +2016-07-01|-27.0|-136.0|15.90468|-0.01108 +2016-07-01|-27.0|-137.0|15.94222|-0.00947 +2016-07-01|-27.0|-138.0|15.97804|-0.00787 +2016-07-01|-27.0|-139.0|16.01189|-0.00628 +2016-07-01|-27.0|-140.0|16.04356|-0.00471 +2016-07-01|-27.0|-141.0|16.07286|-0.00314 +2016-07-01|-27.0|-142.0|16.0996|-0.0016 +2016-07-01|-27.0|-143.0|16.12365|-7.0E-5 +2016-07-01|-27.0|-144.0|16.14488|0.00145 +2016-07-01|-27.0|-145.0|16.16322|0.00296 +2016-07-01|-27.0|-146.0|16.17858|0.00445 +2016-07-01|-27.0|-147.0|16.19094|0.00595 +2016-07-01|-27.0|-148.0|16.20029|0.00744 +2016-07-01|-27.0|-149.0|16.20665|0.00893 +2016-07-01|-27.0|-150.0|16.21006|0.01043 +2016-07-01|-27.0|-151.0|16.2106|0.01194 +2016-07-01|-27.0|-152.0|16.20837|0.01346 +2016-07-01|-27.0|-153.0|16.20349|0.01499 +2016-07-01|-27.0|-154.0|16.19611|0.01654 +2016-07-01|-27.0|-155.0|16.18637|0.01811 +2016-07-01|-27.0|-156.0|16.17447|0.01969 +2016-07-01|-27.0|-157.0|16.16056|0.02128 +2016-07-01|-27.0|-158.0|16.14485|0.02288 +2016-07-01|-27.0|-159.0|16.12752|0.02448 +2016-07-01|-27.0|-160.0|16.10875|0.02608 +2016-07-01|-27.0|-161.0|16.08871|0.02767 +2016-07-01|-27.0|-162.0|16.06756|0.02925 +2016-07-01|-27.0|-163.0|16.04541|0.0308 +2016-07-01|-27.0|-164.0|16.02238|0.03232 +2016-07-01|-27.0|-165.0|15.99852|0.0338 +2016-07-01|-27.0|-166.0|15.97387|0.03523 +2016-07-01|-27.0|-167.0|15.94841|0.03659 +2016-07-01|-27.0|-168.0|15.92207|0.03789 +2016-07-01|-27.0|-169.0|15.89474|0.03911 +2016-07-01|-27.0|-170.0|15.86626|0.04024 +2016-07-01|-27.0|-171.0|15.8364|0.04128 +2016-07-01|-27.0|-172.0|15.8049|0.04221 +2016-07-01|-27.0|-173.0|15.77144|0.04304 +2016-07-01|-27.0|-174.0|15.73565|0.04376 +2016-07-01|-27.0|-175.0|15.69713|0.04435 +2016-07-01|-27.0|-176.0|15.65543|0.04483 +2016-07-01|-27.0|-177.0|15.61008|0.04518 +2016-07-01|-27.0|-178.0|15.56056|0.04541 +2016-07-01|-27.0|-179.0|15.50636|0.0455 +2016-07-01|-28.0|0.0|-21.84092|0.12356 +2016-07-01|-28.0|1.0|-21.4947|0.12763 +2016-07-01|-28.0|2.0|-21.14955|0.13035 +2016-07-01|-28.0|3.0|-20.80917|0.13162 +2016-07-01|-28.0|4.0|-20.47735|0.13136 +2016-07-01|-28.0|5.0|-20.15795|0.12948 +2016-07-01|-28.0|6.0|-19.85483|0.12597 +2016-07-01|-28.0|7.0|-19.57175|0.12083 +2016-07-01|-28.0|8.0|-19.3123|0.11408 +2016-07-01|-28.0|9.0|-19.07987|0.1058 +2016-07-01|-28.0|10.0|-18.87753|0.09608 +2016-07-01|-28.0|11.0|-18.70802|0.08505 +2016-07-01|-28.0|12.0|-18.57365|0.07287 +2016-07-01|-28.0|13.0|-18.47632|0.0597 +2016-07-01|-28.0|14.0|-18.41745|0.04575 +2016-07-01|-28.0|15.0|-18.39796|0.03122 +2016-07-01|-28.0|16.0|-18.4183|0.01632 +2016-07-01|-28.0|17.0|-18.47844|0.00127 +2016-07-01|-28.0|18.0|-18.57786|-0.01374 +2016-07-01|-28.0|19.0|-18.71564|-0.02849 +2016-07-01|-28.0|20.0|-18.8904|-0.0428 +2016-07-01|-28.0|21.0|-19.10044|-0.05651 +2016-07-01|-28.0|22.0|-19.34372|-0.06945 +2016-07-01|-28.0|23.0|-19.6179|-0.08151 +2016-07-01|-28.0|24.0|-19.92043|-0.09256 +2016-07-01|-28.0|25.0|-20.24857|-0.10253 +2016-07-01|-28.0|26.0|-20.59944|-0.11135 +2016-07-01|-28.0|27.0|-20.97004|-0.11897 +2016-07-01|-28.0|28.0|-21.35734|-0.12537 +2016-07-01|-28.0|29.0|-21.75827|-0.13055 +2016-07-01|-28.0|30.0|-22.16977|-0.13452 +2016-07-01|-28.0|31.0|-22.58883|-0.13731 +2016-07-01|-28.0|32.0|-23.01249|-0.13894 +2016-07-01|-28.0|33.0|-23.43788|-0.13947 +2016-07-01|-28.0|34.0|-23.86223|-0.13895 +2016-07-01|-28.0|35.0|-24.28286|-0.13745 +2016-07-01|-28.0|36.0|-24.69726|-0.13501 +2016-07-01|-28.0|37.0|-25.103|-0.13171 +2016-07-01|-28.0|38.0|-25.49783|-0.12761 +2016-07-01|-28.0|39.0|-25.87962|-0.12278 +2016-07-01|-28.0|40.0|-26.24638|-0.11728 +2016-07-01|-28.0|41.0|-26.59627|-0.11117 +2016-07-01|-28.0|42.0|-26.92762|-0.1045 +2016-07-01|-28.0|43.0|-27.23886|-0.09734 +2016-07-01|-28.0|44.0|-27.52859|-0.08972 +2016-07-01|-28.0|45.0|-27.79555|-0.0817 +2016-07-01|-28.0|46.0|-28.03862|-0.07332 +2016-07-01|-28.0|47.0|-28.25681|-0.06461 +2016-07-01|-28.0|48.0|-28.44927|-0.05562 +2016-07-01|-28.0|49.0|-28.61528|-0.04638 +2016-07-01|-28.0|50.0|-28.75424|-0.03692 +2016-07-01|-28.0|51.0|-28.86569|-0.02727 +2016-07-01|-28.0|52.0|-28.94928|-0.01746 +2016-07-01|-28.0|53.0|-29.00477|-0.00751 +2016-07-01|-28.0|54.0|-29.03204|0.00256 +2016-07-01|-28.0|55.0|-29.03107|0.01271 +2016-07-01|-28.0|56.0|-29.00193|0.02292 +2016-07-01|-28.0|57.0|-28.94478|0.03317 +2016-07-01|-28.0|58.0|-28.85986|0.04344 +2016-07-01|-28.0|59.0|-28.74749|0.05369 +2016-07-01|-28.0|60.0|-28.60804|0.0639 +2016-07-01|-28.0|61.0|-28.44192|0.07405 +2016-07-01|-28.0|62.0|-28.2496|0.0841 +2016-07-01|-28.0|63.0|-28.03157|0.09403 +2016-07-01|-28.0|64.0|-27.78834|0.1038 +2016-07-01|-28.0|65.0|-27.52043|0.11339 +2016-07-01|-28.0|66.0|-27.22836|0.12275 +2016-07-01|-28.0|67.0|-26.91263|0.13187 +2016-07-01|-28.0|68.0|-26.57374|0.14069 +2016-07-01|-28.0|69.0|-26.21217|0.14919 +2016-07-01|-28.0|70.0|-25.82837|0.15734 +2016-07-01|-28.0|71.0|-25.42277|0.16508 +2016-07-01|-28.0|72.0|-24.9958|0.17239 +2016-07-01|-28.0|73.0|-24.54785|0.17923 +2016-07-01|-28.0|74.0|-24.07932|0.18556 +2016-07-01|-28.0|75.0|-23.59061|0.19134 +2016-07-01|-28.0|76.0|-23.08214|0.19654 +2016-07-01|-28.0|77.0|-22.55436|0.20112 +2016-07-01|-28.0|78.0|-22.00777|0.20503 +2016-07-01|-28.0|79.0|-21.44293|0.20826 +2016-07-01|-28.0|80.0|-20.8605|0.21077 +2016-07-01|-28.0|81.0|-20.26123|0.21252 +2016-07-01|-28.0|82.0|-19.64599|0.2135 +2016-07-01|-28.0|83.0|-19.01578|0.21368 +2016-07-01|-28.0|84.0|-18.37175|0.21305 +2016-07-01|-28.0|85.0|-17.7152|0.21159 +2016-07-01|-28.0|86.0|-17.0476|0.20931 +2016-07-01|-28.0|87.0|-16.37054|0.2062 +2016-07-01|-28.0|88.0|-15.68581|0.20227 +2016-07-01|-28.0|89.0|-14.9953|0.19754 +2016-07-01|-28.0|90.0|-14.30103|0.19204 +2016-07-01|-28.0|91.0|-13.60512|0.1858 +2016-07-01|-28.0|92.0|-12.90978|0.17887 +2016-07-01|-28.0|93.0|-12.21724|0.17129 +2016-07-01|-28.0|94.0|-11.52974|0.16311 +2016-07-01|-28.0|95.0|-10.84949|0.15441 +2016-07-01|-28.0|96.0|-10.17864|0.14526 +2016-07-01|-28.0|97.0|-9.51923|0.13572 +2016-07-01|-28.0|98.0|-8.87316|0.12587 +2016-07-01|-28.0|99.0|-8.24217|0.11579 +2016-07-01|-28.0|100.0|-7.62779|0.10555 +2016-07-01|-28.0|101.0|-7.03133|0.09524 +2016-07-01|-28.0|102.0|-6.45386|0.08494 +2016-07-01|-28.0|103.0|-5.8962|0.0747 +2016-07-01|-28.0|104.0|-5.35889|0.06461 +2016-07-01|-28.0|105.0|-4.84222|0.05473 +2016-07-01|-28.0|106.0|-4.34623|0.04511 +2016-07-01|-28.0|107.0|-3.87068|0.03581 +2016-07-01|-28.0|108.0|-3.41513|0.02688 +2016-07-01|-28.0|109.0|-2.97889|0.01835 +2016-07-01|-28.0|110.0|-2.5611|0.01026 +2016-07-01|-28.0|111.0|-2.1607|0.00264 +2016-07-01|-28.0|112.0|-1.77651|-0.0045 +2016-07-01|-28.0|113.0|-1.40721|-0.01112 +2016-07-01|-28.0|114.0|-1.0514|-0.01723 +2016-07-01|-28.0|115.0|-0.70761|-0.02282 +2016-07-01|-28.0|116.0|-0.37434|-0.02788 +2016-07-01|-28.0|117.0|-0.0501|-0.03242 +2016-07-01|-28.0|118.0|0.26663|-0.03644 +2016-07-01|-28.0|119.0|0.57727|-0.03996 +2016-07-01|-28.0|120.0|0.88321|-0.04298 +2016-07-01|-28.0|121.0|1.18575|-0.04552 +2016-07-01|-28.0|122.0|1.48608|-0.04759 +2016-07-01|-28.0|123.0|1.78529|-0.04922 +2016-07-01|-28.0|124.0|2.08433|-0.05043 +2016-07-01|-28.0|125.0|2.38401|-0.05124 +2016-07-01|-28.0|126.0|2.68504|-0.05166 +2016-07-01|-28.0|127.0|2.98794|-0.05172 +2016-07-01|-28.0|128.0|3.29313|-0.05145 +2016-07-01|-28.0|129.0|3.60087|-0.05087 +2016-07-01|-28.0|130.0|3.91131|-0.05 +2016-07-01|-28.0|131.0|4.22448|-0.04886 +2016-07-01|-28.0|132.0|4.54028|-0.04748 +2016-07-01|-28.0|133.0|4.85854|-0.04588 +2016-07-01|-28.0|134.0|5.17899|-0.04408 +2016-07-01|-28.0|135.0|5.50132|-0.04211 +2016-07-01|-28.0|136.0|5.82512|-0.03997 +2016-07-01|-28.0|137.0|6.14998|-0.0377 +2016-07-01|-28.0|138.0|6.47543|-0.03531 +2016-07-01|-28.0|139.0|6.80102|-0.03282 +2016-07-01|-28.0|140.0|7.12625|-0.03024 +2016-07-01|-28.0|141.0|7.45066|-0.02759 +2016-07-01|-28.0|142.0|7.77378|-0.02488 +2016-07-01|-28.0|143.0|8.09516|-0.02213 +2016-07-01|-28.0|144.0|8.41437|-0.01935 +2016-07-01|-28.0|145.0|8.73099|-0.01655 +2016-07-01|-28.0|146.0|9.04465|-0.01375 +2016-07-01|-28.0|147.0|9.35497|-0.01094 +2016-07-01|-28.0|148.0|9.6616|-0.00815 +2016-07-01|-28.0|149.0|9.96421|-0.00537 +2016-07-01|-28.0|150.0|10.26246|-0.00262 +2016-07-01|-28.0|151.0|10.55604|9.0E-5 +2016-07-01|-28.0|152.0|10.84464|0.00277 +2016-07-01|-28.0|153.0|11.12795|0.0054 +2016-07-01|-28.0|154.0|11.40565|0.00798 +2016-07-01|-28.0|155.0|11.67742|0.0105 +2016-07-01|-28.0|156.0|11.94295|0.01296 +2016-07-01|-28.0|157.0|12.2019|0.01536 +2016-07-01|-28.0|158.0|12.45396|0.01769 +2016-07-01|-28.0|159.0|12.69879|0.01995 +2016-07-01|-28.0|160.0|12.93607|0.02214 +2016-07-01|-28.0|161.0|13.16549|0.02425 +2016-07-01|-28.0|162.0|13.38674|0.02627 +2016-07-01|-28.0|163.0|13.59954|0.02821 +2016-07-01|-28.0|164.0|13.80364|0.03007 +2016-07-01|-28.0|165.0|13.9988|0.03184 +2016-07-01|-28.0|166.0|14.18485|0.03351 +2016-07-01|-28.0|167.0|14.36164|0.0351 +2016-07-01|-28.0|168.0|14.52906|0.03658 +2016-07-01|-28.0|169.0|14.68708|0.03797 +2016-07-01|-28.0|170.0|14.83572|0.03926 +2016-07-01|-28.0|171.0|14.97503|0.04044 +2016-07-01|-28.0|172.0|15.10516|0.04151 +2016-07-01|-28.0|173.0|15.22629|0.04248 +2016-07-01|-28.0|174.0|15.33867|0.04333 +2016-07-01|-28.0|175.0|15.44259|0.04408 +2016-07-01|-28.0|176.0|15.53841|0.0447 +2016-07-01|-28.0|177.0|15.62653|0.0452 +2016-07-01|-28.0|178.0|15.70737|0.04559 +2016-07-01|-28.0|179.0|15.78141|0.04585 +2016-07-01|-28.0|-1.0|-22.18471|0.11829 +2016-07-01|-28.0|-2.0|-22.5228|0.11195 +2016-07-01|-28.0|-3.0|-22.85218|0.10471 +2016-07-01|-28.0|-4.0|-23.17015|0.09672 +2016-07-01|-28.0|-5.0|-23.47433|0.08814 +2016-07-01|-28.0|-6.0|-23.76269|0.07914 +2016-07-01|-28.0|-7.0|-24.03353|0.06987 +2016-07-01|-28.0|-8.0|-24.28548|0.06046 +2016-07-01|-28.0|-9.0|-24.51751|0.05105 +2016-07-01|-28.0|-10.0|-24.72889|0.04177 +2016-07-01|-28.0|-11.0|-24.91916|0.03271 +2016-07-01|-28.0|-12.0|-25.08813|0.02396 +2016-07-01|-28.0|-13.0|-25.23585|0.0156 +2016-07-01|-28.0|-14.0|-25.36255|0.00769 +2016-07-01|-28.0|-15.0|-25.46863|2.7E-4 +2016-07-01|-28.0|-16.0|-25.55461|-0.00663 +2016-07-01|-28.0|-17.0|-25.62113|-0.01299 +2016-07-01|-28.0|-18.0|-25.66889|-0.01881 +2016-07-01|-28.0|-19.0|-25.69862|-0.02411 +2016-07-01|-28.0|-20.0|-25.71106|-0.0289 +2016-07-01|-28.0|-21.0|-25.70694|-0.03321 +2016-07-01|-28.0|-22.0|-25.68692|-0.03707 +2016-07-01|-28.0|-23.0|-25.65162|-0.04055 +2016-07-01|-28.0|-24.0|-25.60157|-0.04368 +2016-07-01|-28.0|-25.0|-25.53718|-0.04653 +2016-07-01|-28.0|-26.0|-25.45875|-0.04914 +2016-07-01|-28.0|-27.0|-25.36647|-0.05159 +2016-07-01|-28.0|-28.0|-25.26037|-0.05394 +2016-07-01|-28.0|-29.0|-25.14036|-0.05623 +2016-07-01|-28.0|-30.0|-25.00621|-0.05854 +2016-07-01|-28.0|-31.0|-24.85754|-0.06091 +2016-07-01|-28.0|-32.0|-24.69385|-0.06339 +2016-07-01|-28.0|-33.0|-24.51452|-0.06603 +2016-07-01|-28.0|-34.0|-24.31882|-0.06887 +2016-07-01|-28.0|-35.0|-24.10589|-0.07193 +2016-07-01|-28.0|-36.0|-23.87483|-0.07524 +2016-07-01|-28.0|-37.0|-23.62465|-0.07881 +2016-07-01|-28.0|-38.0|-23.35429|-0.08266 +2016-07-01|-28.0|-39.0|-23.06268|-0.08679 +2016-07-01|-28.0|-40.0|-22.74873|-0.0912 +2016-07-01|-28.0|-41.0|-22.41136|-0.09586 +2016-07-01|-28.0|-42.0|-22.04949|-0.10076 +2016-07-01|-28.0|-43.0|-21.6621|-0.10587 +2016-07-01|-28.0|-44.0|-21.24824|-0.11117 +2016-07-01|-28.0|-45.0|-20.80702|-0.11662 +2016-07-01|-28.0|-46.0|-20.33767|-0.12217 +2016-07-01|-28.0|-47.0|-19.8395|-0.12779 +2016-07-01|-28.0|-48.0|-19.312|-0.13342 +2016-07-01|-28.0|-49.0|-18.75477|-0.13903 +2016-07-01|-28.0|-50.0|-18.16758|-0.14455 +2016-07-01|-28.0|-51.0|-17.55039|-0.14993 +2016-07-01|-28.0|-52.0|-16.90332|-0.15514 +2016-07-01|-28.0|-53.0|-16.22672|-0.1601 +2016-07-01|-28.0|-54.0|-15.52113|-0.16479 +2016-07-01|-28.0|-55.0|-14.7873|-0.16914 +2016-07-01|-28.0|-56.0|-14.0262|-0.17311 +2016-07-01|-28.0|-57.0|-13.23904|-0.17666 +2016-07-01|-28.0|-58.0|-12.42723|-0.17976 +2016-07-01|-28.0|-59.0|-11.5924|-0.18236 +2016-07-01|-28.0|-60.0|-10.73641|-0.18444 +2016-07-01|-28.0|-61.0|-9.8613|-0.18598 +2016-07-01|-28.0|-62.0|-8.96931|-0.18696 +2016-07-01|-28.0|-63.0|-8.06287|-0.18737 +2016-07-01|-28.0|-64.0|-7.14452|-0.1872 +2016-07-01|-28.0|-65.0|-6.21699|-0.18646 +2016-07-01|-28.0|-66.0|-5.28308|-0.18514 +2016-07-01|-28.0|-67.0|-4.34569|-0.18328 +2016-07-01|-28.0|-68.0|-3.40775|-0.18087 +2016-07-01|-28.0|-69.0|-2.47225|-0.17796 +2016-07-01|-28.0|-70.0|-1.54216|-0.17456 +2016-07-01|-28.0|-71.0|-0.62039|-0.17072 +2016-07-01|-28.0|-72.0|0.29018|-0.16647 +2016-07-01|-28.0|-73.0|1.18678|-0.16185 +2016-07-01|-28.0|-74.0|2.06676|-0.15691 +2016-07-01|-28.0|-75.0|2.92759|-0.15169 +2016-07-01|-28.0|-76.0|3.76693|-0.14624 +2016-07-01|-28.0|-77.0|4.58261|-0.1406 +2016-07-01|-28.0|-78.0|5.37264|-0.13482 +2016-07-01|-28.0|-79.0|6.13525|-0.12894 +2016-07-01|-28.0|-80.0|6.86889|-0.12301 +2016-07-01|-28.0|-81.0|7.57222|-0.11707 +2016-07-01|-28.0|-82.0|8.24412|-0.11115 +2016-07-01|-28.0|-83.0|8.88371|-0.10529 +2016-07-01|-28.0|-84.0|9.49032|-0.09953 +2016-07-01|-28.0|-85.0|10.0635|-0.0939 +2016-07-01|-28.0|-86.0|10.60301|-0.08842 +2016-07-01|-28.0|-87.0|11.10883|-0.08313 +2016-07-01|-28.0|-88.0|11.58112|-0.07804 +2016-07-01|-28.0|-89.0|12.02023|-0.07318 +2016-07-01|-28.0|-90.0|12.42671|-0.06856 +2016-07-01|-28.0|-91.0|12.80125|-0.06419 +2016-07-01|-28.0|-92.0|13.14471|-0.06009 +2016-07-01|-28.0|-93.0|13.45809|-0.05628 +2016-07-01|-28.0|-94.0|13.74253|-0.05274 +2016-07-01|-28.0|-95.0|13.99928|-0.0495 +2016-07-01|-28.0|-96.0|14.22968|-0.04654 +2016-07-01|-28.0|-97.0|14.43517|-0.04387 +2016-07-01|-28.0|-98.0|14.61727|-0.04149 +2016-07-01|-28.0|-99.0|14.77755|-0.03938 +2016-07-01|-28.0|-100.0|14.91762|-0.03755 +2016-07-01|-28.0|-101.0|15.03912|-0.03597 +2016-07-01|-28.0|-102.0|15.14371|-0.03463 +2016-07-01|-28.0|-103.0|15.23303|-0.03352 +2016-07-01|-28.0|-104.0|15.30872|-0.03262 +2016-07-01|-28.0|-105.0|15.37237|-0.03191 +2016-07-01|-28.0|-106.0|15.42553|-0.03137 +2016-07-01|-28.0|-107.0|15.46971|-0.03097 +2016-07-01|-28.0|-108.0|15.50631|-0.0307 +2016-07-01|-28.0|-109.0|15.53669|-0.03052 +2016-07-01|-28.0|-110.0|15.5621|-0.03042 +2016-07-01|-28.0|-111.0|15.5837|-0.03037 +2016-07-01|-28.0|-112.0|15.60253|-0.03035 +2016-07-01|-28.0|-113.0|15.61956|-0.03033 +2016-07-01|-28.0|-114.0|15.63562|-0.0303 +2016-07-01|-28.0|-115.0|15.65146|-0.03024 +2016-07-01|-28.0|-116.0|15.66769|-0.03012 +2016-07-01|-28.0|-117.0|15.68484|-0.02993 +2016-07-01|-28.0|-118.0|15.70334|-0.02967 +2016-07-01|-28.0|-119.0|15.7235|-0.02931 +2016-07-01|-28.0|-120.0|15.74557|-0.02885 +2016-07-01|-28.0|-121.0|15.76969|-0.02829 +2016-07-01|-28.0|-122.0|15.79593|-0.02762 +2016-07-01|-28.0|-123.0|15.8243|-0.02684 +2016-07-01|-28.0|-124.0|15.85474|-0.02595 +2016-07-01|-28.0|-125.0|15.88713|-0.02496 +2016-07-01|-28.0|-126.0|15.92132|-0.02387 +2016-07-01|-28.0|-127.0|15.95711|-0.02268 +2016-07-01|-28.0|-128.0|15.99425|-0.02141 +2016-07-01|-28.0|-129.0|16.0325|-0.02007 +2016-07-01|-28.0|-130.0|16.07158|-0.01866 +2016-07-01|-28.0|-131.0|16.1112|-0.0172 +2016-07-01|-28.0|-132.0|16.15106|-0.01569 +2016-07-01|-28.0|-133.0|16.19087|-0.01415 +2016-07-01|-28.0|-134.0|16.23032|-0.01258 +2016-07-01|-28.0|-135.0|16.26911|-0.011 +2016-07-01|-28.0|-136.0|16.30697|-0.00941 +2016-07-01|-28.0|-137.0|16.34363|-0.00782 +2016-07-01|-28.0|-138.0|16.37881|-0.00623 +2016-07-01|-28.0|-139.0|16.41228|-0.00466 +2016-07-01|-28.0|-140.0|16.44381|-0.00309 +2016-07-01|-28.0|-141.0|16.47319|-0.00155 +2016-07-01|-28.0|-142.0|16.50026|-2.0E-5 +2016-07-01|-28.0|-143.0|16.52484|0.0015 +2016-07-01|-28.0|-144.0|16.5468|0.003 +2016-07-01|-28.0|-145.0|16.56603|0.00448 +2016-07-01|-28.0|-146.0|16.58245|0.00596 +2016-07-01|-28.0|-147.0|16.596|0.00743 +2016-07-01|-28.0|-148.0|16.60666|0.00889 +2016-07-01|-28.0|-149.0|16.61442|0.01036 +2016-07-01|-28.0|-150.0|16.6193|0.01183 +2016-07-01|-28.0|-151.0|16.62137|0.01331 +2016-07-01|-28.0|-152.0|16.62069|0.01479 +2016-07-01|-28.0|-153.0|16.61736|0.01629 +2016-07-01|-28.0|-154.0|16.6115|0.0178 +2016-07-01|-28.0|-155.0|16.60324|0.01932 +2016-07-01|-28.0|-156.0|16.59275|0.02086 +2016-07-01|-28.0|-157.0|16.58017|0.0224 +2016-07-01|-28.0|-158.0|16.56568|0.02395 +2016-07-01|-28.0|-159.0|16.54944|0.0255 +2016-07-01|-28.0|-160.0|16.53161|0.02705 +2016-07-01|-28.0|-161.0|16.51236|0.0286 +2016-07-01|-28.0|-162.0|16.49181|0.03012 +2016-07-01|-28.0|-163.0|16.47008|0.03163 +2016-07-01|-28.0|-164.0|16.44727|0.0331 +2016-07-01|-28.0|-165.0|16.42343|0.03453 +2016-07-01|-28.0|-166.0|16.39858|0.03592 +2016-07-01|-28.0|-167.0|16.37271|0.03725 +2016-07-01|-28.0|-168.0|16.34575|0.03851 +2016-07-01|-28.0|-169.0|16.31758|0.03969 +2016-07-01|-28.0|-170.0|16.28805|0.0408 +2016-07-01|-28.0|-171.0|16.25695|0.04181 +2016-07-01|-28.0|-172.0|16.22402|0.04273 +2016-07-01|-28.0|-173.0|16.18894|0.04354 +2016-07-01|-28.0|-174.0|16.15137|0.04425 +2016-07-01|-28.0|-175.0|16.1109|0.04484 +2016-07-01|-28.0|-176.0|16.06711|0.04531 +2016-07-01|-28.0|-177.0|16.01954|0.04566 +2016-07-01|-28.0|-178.0|15.96769|0.0459 +2016-07-01|-28.0|-179.0|15.91106|0.04601 +2016-07-01|-29.0|0.0|-22.24008|0.1147 +2016-07-01|-29.0|1.0|-21.93073|0.11797 +2016-07-01|-29.0|2.0|-21.62396|0.11989 +2016-07-01|-29.0|3.0|-21.32339|0.12035 +2016-07-01|-29.0|4.0|-21.03276|0.11927 +2016-07-01|-29.0|5.0|-20.75582|0.1166 +2016-07-01|-29.0|6.0|-20.4963|0.11233 +2016-07-01|-29.0|7.0|-20.25782|0.10646 +2016-07-01|-29.0|8.0|-20.0438|0.09903 +2016-07-01|-29.0|9.0|-19.85743|0.09012 +2016-07-01|-29.0|10.0|-19.70156|0.07985 +2016-07-01|-29.0|11.0|-19.5787|0.06834 +2016-07-01|-29.0|12.0|-19.49093|0.05577 +2016-07-01|-29.0|13.0|-19.43987|0.04231 +2016-07-01|-29.0|14.0|-19.42669|0.02816 +2016-07-01|-29.0|15.0|-19.45206|0.01352 +2016-07-01|-29.0|16.0|-19.51616|-0.00138 +2016-07-01|-29.0|17.0|-19.61873|-0.01635 +2016-07-01|-29.0|18.0|-19.75902|-0.03117 +2016-07-01|-29.0|19.0|-19.93588|-0.04565 +2016-07-01|-29.0|20.0|-20.14777|-0.05961 +2016-07-01|-29.0|21.0|-20.39283|-0.0729 +2016-07-01|-29.0|22.0|-20.66886|-0.08536 +2016-07-01|-29.0|23.0|-20.97344|-0.09689 +2016-07-01|-29.0|24.0|-21.30395|-0.10737 +2016-07-01|-29.0|25.0|-21.6576|-0.11673 +2016-07-01|-29.0|26.0|-22.03149|-0.12493 +2016-07-01|-29.0|27.0|-22.42267|-0.13193 +2016-07-01|-29.0|28.0|-22.82813|-0.13771 +2016-07-01|-29.0|29.0|-23.24488|-0.14228 +2016-07-01|-29.0|30.0|-23.66995|-0.14565 +2016-07-01|-29.0|31.0|-24.10044|-0.14786 +2016-07-01|-29.0|32.0|-24.53352|-0.14895 +2016-07-01|-29.0|33.0|-24.96646|-0.14898 +2016-07-01|-29.0|34.0|-25.39662|-0.14799 +2016-07-01|-29.0|35.0|-25.82151|-0.14605 +2016-07-01|-29.0|36.0|-26.23875|-0.14322 +2016-07-01|-29.0|37.0|-26.64608|-0.13957 +2016-07-01|-29.0|38.0|-27.0414|-0.13516 +2016-07-01|-29.0|39.0|-27.42274|-0.13005 +2016-07-01|-29.0|40.0|-27.78825|-0.12431 +2016-07-01|-29.0|41.0|-28.13623|-0.118 +2016-07-01|-29.0|42.0|-28.46513|-0.11115 +2016-07-01|-29.0|43.0|-28.7735|-0.10384 +2016-07-01|-29.0|44.0|-29.06006|-0.0961 +2016-07-01|-29.0|45.0|-29.32361|-0.08798 +2016-07-01|-29.0|46.0|-29.56314|-0.07951 +2016-07-01|-29.0|47.0|-29.7777|-0.07074 +2016-07-01|-29.0|48.0|-29.96651|-0.06169 +2016-07-01|-29.0|49.0|-30.12887|-0.0524 +2016-07-01|-29.0|50.0|-30.26423|-0.04289 +2016-07-01|-29.0|51.0|-30.37214|-0.0332 +2016-07-01|-29.0|52.0|-30.45223|-0.02333 +2016-07-01|-29.0|53.0|-30.50428|-0.01332 +2016-07-01|-29.0|54.0|-30.52813|-0.00319 +2016-07-01|-29.0|55.0|-30.52373|0.00703 +2016-07-01|-29.0|56.0|-30.49113|0.01734 +2016-07-01|-29.0|57.0|-30.43044|0.0277 +2016-07-01|-29.0|58.0|-30.34185|0.03808 +2016-07-01|-29.0|59.0|-30.22562|0.04848 +2016-07-01|-29.0|60.0|-30.08207|0.05886 +2016-07-01|-29.0|61.0|-29.91155|0.0692 +2016-07-01|-29.0|62.0|-29.71447|0.07946 +2016-07-01|-29.0|63.0|-29.49127|0.08963 +2016-07-01|-29.0|64.0|-29.24239|0.09966 +2016-07-01|-29.0|65.0|-28.9683|0.10954 +2016-07-01|-29.0|66.0|-28.66947|0.11921 +2016-07-01|-29.0|67.0|-28.34635|0.12866 +2016-07-01|-29.0|68.0|-27.99942|0.13784 +2016-07-01|-29.0|69.0|-27.62909|0.14672 +2016-07-01|-29.0|70.0|-27.23582|0.15526 +2016-07-01|-29.0|71.0|-26.81999|0.16342 +2016-07-01|-29.0|72.0|-26.38201|0.17116 +2016-07-01|-29.0|73.0|-25.92228|0.17843 +2016-07-01|-29.0|74.0|-25.44117|0.1852 +2016-07-01|-29.0|75.0|-24.93908|0.19143 +2016-07-01|-29.0|76.0|-24.41644|0.19707 +2016-07-01|-29.0|77.0|-23.8737|0.20209 +2016-07-01|-29.0|78.0|-23.31136|0.20645 +2016-07-01|-29.0|79.0|-22.73|0.21011 +2016-07-01|-29.0|80.0|-22.13027|0.21303 +2016-07-01|-29.0|81.0|-21.51294|0.21519 +2016-07-01|-29.0|82.0|-20.87889|0.21655 +2016-07-01|-29.0|83.0|-20.22912|0.21709 +2016-07-01|-29.0|84.0|-19.5648|0.21679 +2016-07-01|-29.0|85.0|-18.88723|0.21564 +2016-07-01|-29.0|86.0|-18.19787|0.21364 +2016-07-01|-29.0|87.0|-17.49835|0.21078 +2016-07-01|-29.0|88.0|-16.79043|0.20707 +2016-07-01|-29.0|89.0|-16.07602|0.20253 +2016-07-01|-29.0|90.0|-15.35716|0.19719 +2016-07-01|-29.0|91.0|-14.63598|0.19107 +2016-07-01|-29.0|92.0|-13.91468|0.18423 +2016-07-01|-29.0|93.0|-13.19552|0.17672 +2016-07-01|-29.0|94.0|-12.48075|0.16859 +2016-07-01|-29.0|95.0|-11.77261|0.1599 +2016-07-01|-29.0|96.0|-11.07326|0.15074 +2016-07-01|-29.0|97.0|-10.3848|0.14117 +2016-07-01|-29.0|98.0|-9.70914|0.13127 +2016-07-01|-29.0|99.0|-9.04807|0.12113 +2016-07-01|-29.0|100.0|-8.40317|0.11083 +2016-07-01|-29.0|101.0|-7.77579|0.10044 +2016-07-01|-29.0|102.0|-7.16706|0.09005 +2016-07-01|-29.0|103.0|-6.57784|0.07973 +2016-07-01|-29.0|104.0|-6.00876|0.06954 +2016-07-01|-29.0|105.0|-5.46016|0.05957 +2016-07-01|-29.0|106.0|-4.93214|0.04986 +2016-07-01|-29.0|107.0|-4.42454|0.04047 +2016-07-01|-29.0|108.0|-3.93699|0.03146 +2016-07-01|-29.0|109.0|-3.46887|0.02285 +2016-07-01|-29.0|110.0|-3.01938|0.01469 +2016-07-01|-29.0|111.0|-2.58756|0.007 +2016-07-01|-29.0|112.0|-2.17227|-2.0E-4 +2016-07-01|-29.0|113.0|-1.77227|-0.00688 +2016-07-01|-29.0|114.0|-1.38624|-0.01304 +2016-07-01|-29.0|115.0|-1.01276|-0.01868 +2016-07-01|-29.0|116.0|-0.65039|-0.02378 +2016-07-01|-29.0|117.0|-0.2977|-0.02836 +2016-07-01|-29.0|118.0|0.04677|-0.03243 +2016-07-01|-29.0|119.0|0.38442|-0.03598 +2016-07-01|-29.0|120.0|0.71657|-0.03904 +2016-07-01|-29.0|121.0|1.04451|-0.04162 +2016-07-01|-29.0|122.0|1.36939|-0.04374 +2016-07-01|-29.0|123.0|1.69228|-0.04541 +2016-07-01|-29.0|124.0|2.01413|-0.04667 +2016-07-01|-29.0|125.0|2.33575|-0.04752 +2016-07-01|-29.0|126.0|2.65782|-0.048 +2016-07-01|-29.0|127.0|2.9809|-0.04812 +2016-07-01|-29.0|128.0|3.30541|-0.04791 +2016-07-01|-29.0|129.0|3.63164|-0.0474 +2016-07-01|-29.0|130.0|3.95976|-0.0466 +2016-07-01|-29.0|131.0|4.28984|-0.04554 +2016-07-01|-29.0|132.0|4.6218|-0.04424 +2016-07-01|-29.0|133.0|4.95553|-0.04272 +2016-07-01|-29.0|134.0|5.29079|-0.041 +2016-07-01|-29.0|135.0|5.62729|-0.03912 +2016-07-01|-29.0|136.0|5.9647|-0.03707 +2016-07-01|-29.0|137.0|6.30261|-0.03489 +2016-07-01|-29.0|138.0|6.64062|-0.03259 +2016-07-01|-29.0|139.0|6.97828|-0.03019 +2016-07-01|-29.0|140.0|7.31516|-0.02771 +2016-07-01|-29.0|141.0|7.65081|-0.02515 +2016-07-01|-29.0|142.0|7.98478|-0.02253 +2016-07-01|-29.0|143.0|8.31666|-0.01988 +2016-07-01|-29.0|144.0|8.64601|-0.01718 +2016-07-01|-29.0|145.0|8.97246|-0.01447 +2016-07-01|-29.0|146.0|9.29561|-0.01175 +2016-07-01|-29.0|147.0|9.61511|-0.00902 +2016-07-01|-29.0|148.0|9.9306|-0.00631 +2016-07-01|-29.0|149.0|10.24176|-0.0036 +2016-07-01|-29.0|150.0|10.54826|-9.3E-4 +2016-07-01|-29.0|151.0|10.84978|0.00172 +2016-07-01|-29.0|152.0|11.146|0.00434 +2016-07-01|-29.0|153.0|11.43661|0.00691 +2016-07-01|-29.0|154.0|11.7213|0.00943 +2016-07-01|-29.0|155.0|11.99975|0.0119 +2016-07-01|-29.0|156.0|12.27164|0.01431 +2016-07-01|-29.0|157.0|12.53664|0.01667 +2016-07-01|-29.0|158.0|12.79445|0.01895 +2016-07-01|-29.0|159.0|13.04473|0.02117 +2016-07-01|-29.0|160.0|13.28717|0.02331 +2016-07-01|-29.0|161.0|13.52149|0.02538 +2016-07-01|-29.0|162.0|13.74737|0.02737 +2016-07-01|-29.0|163.0|13.96457|0.02928 +2016-07-01|-29.0|164.0|14.17284|0.0311 +2016-07-01|-29.0|165.0|14.37197|0.03283 +2016-07-01|-29.0|166.0|14.5618|0.03447 +2016-07-01|-29.0|167.0|14.74221|0.03602 +2016-07-01|-29.0|168.0|14.9131|0.03748 +2016-07-01|-29.0|169.0|15.07446|0.03884 +2016-07-01|-29.0|170.0|15.22632|0.04009 +2016-07-01|-29.0|171.0|15.36877|0.04124 +2016-07-01|-29.0|172.0|15.50193|0.04229 +2016-07-01|-29.0|173.0|15.62603|0.04323 +2016-07-01|-29.0|174.0|15.7413|0.04406 +2016-07-01|-29.0|175.0|15.84805|0.04477 +2016-07-01|-29.0|176.0|15.94665|0.04537 +2016-07-01|-29.0|177.0|16.03747|0.04586 +2016-07-01|-29.0|178.0|16.12096|0.04622 +2016-07-01|-29.0|179.0|16.19758|0.04647 +2016-07-01|-29.0|-1.0|-22.54853|0.1102 +2016-07-01|-29.0|-2.0|-22.85282|0.10462 +2016-07-01|-29.0|-3.0|-23.14994|0.09809 +2016-07-01|-29.0|-4.0|-23.43718|0.09079 +2016-07-01|-29.0|-5.0|-23.71214|0.08286 +2016-07-01|-29.0|-6.0|-23.97273|0.07447 +2016-07-01|-29.0|-7.0|-24.21722|0.06576 +2016-07-01|-29.0|-8.0|-24.44419|0.05688 +2016-07-01|-29.0|-9.0|-24.65255|0.04796 +2016-07-01|-29.0|-10.0|-24.84151|0.03912 +2016-07-01|-29.0|-11.0|-25.01056|0.03046 +2016-07-01|-29.0|-12.0|-25.15945|0.02208 +2016-07-01|-29.0|-13.0|-25.28815|0.01405 +2016-07-01|-29.0|-14.0|-25.39683|0.00643 +2016-07-01|-29.0|-15.0|-25.48584|-7.4E-4 +2016-07-01|-29.0|-16.0|-25.55564|-0.00741 +2016-07-01|-29.0|-17.0|-25.60679|-0.01359 +2016-07-01|-29.0|-18.0|-25.63993|-0.01926 +2016-07-01|-29.0|-19.0|-25.65574|-0.02443 +2016-07-01|-29.0|-20.0|-25.65489|-0.02911 +2016-07-01|-29.0|-21.0|-25.63805|-0.03335 +2016-07-01|-29.0|-22.0|-25.60583|-0.03717 +2016-07-01|-29.0|-23.0|-25.55879|-0.04061 +2016-07-01|-29.0|-24.0|-25.4974|-0.04374 +2016-07-01|-29.0|-25.0|-25.42202|-0.04659 +2016-07-01|-29.0|-26.0|-25.3329|-0.04923 +2016-07-01|-29.0|-27.0|-25.23018|-0.05171 +2016-07-01|-29.0|-28.0|-25.11386|-0.0541 +2016-07-01|-29.0|-29.0|-24.98379|-0.05644 +2016-07-01|-29.0|-30.0|-24.83971|-0.0588 +2016-07-01|-29.0|-31.0|-24.6812|-0.06123 +2016-07-01|-29.0|-32.0|-24.50774|-0.06376 +2016-07-01|-29.0|-33.0|-24.31867|-0.06645 +2016-07-01|-29.0|-34.0|-24.11324|-0.06934 +2016-07-01|-29.0|-35.0|-23.89058|-0.07243 +2016-07-01|-29.0|-36.0|-23.64975|-0.07578 +2016-07-01|-29.0|-37.0|-23.38975|-0.07937 +2016-07-01|-29.0|-38.0|-23.10953|-0.08324 +2016-07-01|-29.0|-39.0|-22.808|-0.08737 +2016-07-01|-29.0|-40.0|-22.48407|-0.09176 +2016-07-01|-29.0|-41.0|-22.13664|-0.09639 +2016-07-01|-29.0|-42.0|-21.76467|-0.10125 +2016-07-01|-29.0|-43.0|-21.36712|-0.10632 +2016-07-01|-29.0|-44.0|-20.94306|-0.11155 +2016-07-01|-29.0|-45.0|-20.49161|-0.11692 +2016-07-01|-29.0|-46.0|-20.01201|-0.12238 +2016-07-01|-29.0|-47.0|-19.50362|-0.1279 +2016-07-01|-29.0|-48.0|-18.96592|-0.13342 +2016-07-01|-29.0|-49.0|-18.39855|-0.13891 +2016-07-01|-29.0|-50.0|-17.80131|-0.1443 +2016-07-01|-29.0|-51.0|-17.1742|-0.14954 +2016-07-01|-29.0|-52.0|-16.51737|-0.1546 +2016-07-01|-29.0|-53.0|-15.8312|-0.15942 +2016-07-01|-29.0|-54.0|-15.11628|-0.16394 +2016-07-01|-29.0|-55.0|-14.37339|-0.16813 +2016-07-01|-29.0|-56.0|-13.60354|-0.17194 +2016-07-01|-29.0|-57.0|-12.80798|-0.17533 +2016-07-01|-29.0|-58.0|-11.98815|-0.17826 +2016-07-01|-29.0|-59.0|-11.14573|-0.18071 +2016-07-01|-29.0|-60.0|-10.28259|-0.18264 +2016-07-01|-29.0|-61.0|-9.40081|-0.18403 +2016-07-01|-29.0|-62.0|-8.50265|-0.18486 +2016-07-01|-29.0|-63.0|-7.59054|-0.18513 +2016-07-01|-29.0|-64.0|-6.66707|-0.18484 +2016-07-01|-29.0|-65.0|-5.73494|-0.18398 +2016-07-01|-29.0|-66.0|-4.79696|-0.18256 +2016-07-01|-29.0|-67.0|-3.85602|-0.18059 +2016-07-01|-29.0|-68.0|-2.91504|-0.17811 +2016-07-01|-29.0|-69.0|-1.97699|-0.17513 +2016-07-01|-29.0|-70.0|-1.04481|-0.17168 +2016-07-01|-29.0|-71.0|-0.12138|-0.16779 +2016-07-01|-29.0|-72.0|0.79045|-0.16351 +2016-07-01|-29.0|-73.0|1.68795|-0.15888 +2016-07-01|-29.0|-74.0|2.56851|-0.15394 +2016-07-01|-29.0|-75.0|3.42966|-0.14873 +2016-07-01|-29.0|-76.0|4.26908|-0.1433 +2016-07-01|-29.0|-77.0|5.08464|-0.13769 +2016-07-01|-29.0|-78.0|5.87441|-0.13195 +2016-07-01|-29.0|-79.0|6.63666|-0.12611 +2016-07-01|-29.0|-80.0|7.36986|-0.12024 +2016-07-01|-29.0|-81.0|8.07271|-0.11435 +2016-07-01|-29.0|-82.0|8.74413|-0.1085 +2016-07-01|-29.0|-83.0|9.38325|-0.10271 +2016-07-01|-29.0|-84.0|9.98944|-0.09702 +2016-07-01|-29.0|-85.0|10.56225|-0.09146 +2016-07-01|-29.0|-86.0|11.10147|-0.08606 +2016-07-01|-29.0|-87.0|11.60708|-0.08084 +2016-07-01|-29.0|-88.0|12.07925|-0.07583 +2016-07-01|-29.0|-89.0|12.51833|-0.07104 +2016-07-01|-29.0|-90.0|12.92486|-0.06649 +2016-07-01|-29.0|-91.0|13.29953|-0.06219 +2016-07-01|-29.0|-92.0|13.6432|-0.05816 +2016-07-01|-29.0|-93.0|13.95684|-0.05441 +2016-07-01|-29.0|-94.0|14.24158|-0.05093 +2016-07-01|-29.0|-95.0|14.49865|-0.04774 +2016-07-01|-29.0|-96.0|14.72937|-0.04483 +2016-07-01|-29.0|-97.0|14.93517|-0.0422 +2016-07-01|-29.0|-98.0|15.11753|-0.03986 +2016-07-01|-29.0|-99.0|15.27801|-0.03778 +2016-07-01|-29.0|-100.0|15.41819|-0.03597 +2016-07-01|-29.0|-101.0|15.53969|-0.03441 +2016-07-01|-29.0|-102.0|15.64414|-0.03309 +2016-07-01|-29.0|-103.0|15.73316|-0.03199 +2016-07-01|-29.0|-104.0|15.80837|-0.03109 +2016-07-01|-29.0|-105.0|15.87135|-0.03038 +2016-07-01|-29.0|-106.0|15.92364|-0.02983 +2016-07-01|-29.0|-107.0|15.9667|-0.02942 +2016-07-01|-29.0|-108.0|16.00197|-0.02913 +2016-07-01|-29.0|-109.0|16.03076|-0.02894 +2016-07-01|-29.0|-110.0|16.05434|-0.02882 +2016-07-01|-29.0|-111.0|16.07386|-0.02875 +2016-07-01|-29.0|-112.0|16.09038|-0.0287 +2016-07-01|-29.0|-113.0|16.10487|-0.02866 +2016-07-01|-29.0|-114.0|16.11817|-0.02861 +2016-07-01|-29.0|-115.0|16.13103|-0.02852 +2016-07-01|-29.0|-116.0|16.14411|-0.02838 +2016-07-01|-29.0|-117.0|16.15794|-0.02817 +2016-07-01|-29.0|-118.0|16.17298|-0.02788 +2016-07-01|-29.0|-119.0|16.18957|-0.02751 +2016-07-01|-29.0|-120.0|16.20798|-0.02704 +2016-07-01|-29.0|-121.0|16.22839|-0.02646 +2016-07-01|-29.0|-122.0|16.2509|-0.02578 +2016-07-01|-29.0|-123.0|16.27554|-0.02499 +2016-07-01|-29.0|-124.0|16.30229|-0.0241 +2016-07-01|-29.0|-125.0|16.33106|-0.02311 +2016-07-01|-29.0|-126.0|16.36173|-0.02202 +2016-07-01|-29.0|-127.0|16.39411|-0.02084 +2016-07-01|-29.0|-128.0|16.42801|-0.01958 +2016-07-01|-29.0|-129.0|16.46319|-0.01824 +2016-07-01|-29.0|-130.0|16.49939|-0.01684 +2016-07-01|-29.0|-131.0|16.53636|-0.01539 +2016-07-01|-29.0|-132.0|16.5738|-0.01389 +2016-07-01|-29.0|-133.0|16.61143|-0.01236 +2016-07-01|-29.0|-134.0|16.64896|-0.01081 +2016-07-01|-29.0|-135.0|16.68611|-0.00924 +2016-07-01|-29.0|-136.0|16.72259|-0.00766 +2016-07-01|-29.0|-137.0|16.75813|-0.00608 +2016-07-01|-29.0|-138.0|16.79248|-0.00451 +2016-07-01|-29.0|-139.0|16.82538|-0.00295 +2016-07-01|-29.0|-140.0|16.8566|-0.0014 +2016-07-01|-29.0|-141.0|16.88593|1.4E-4 +2016-07-01|-29.0|-142.0|16.91318|0.00165 +2016-07-01|-29.0|-143.0|16.93817|0.00315 +2016-07-01|-29.0|-144.0|16.96075|0.00463 +2016-07-01|-29.0|-145.0|16.9808|0.0061 +2016-07-01|-29.0|-146.0|16.99822|0.00756 +2016-07-01|-29.0|-147.0|17.01292|0.00901 +2016-07-01|-29.0|-148.0|17.02486|0.01045 +2016-07-01|-29.0|-149.0|17.03402|0.01189 +2016-07-01|-29.0|-150.0|17.0404|0.01333 +2016-07-01|-29.0|-151.0|17.04402|0.01477 +2016-07-01|-29.0|-152.0|17.04493|0.01623 +2016-07-01|-29.0|-153.0|17.04322|0.01769 +2016-07-01|-29.0|-154.0|17.03897|0.01916 +2016-07-01|-29.0|-155.0|17.0323|0.02064 +2016-07-01|-29.0|-156.0|17.02334|0.02213 +2016-07-01|-29.0|-157.0|17.01222|0.02363 +2016-07-01|-29.0|-158.0|16.99909|0.02513 +2016-07-01|-29.0|-159.0|16.98409|0.02663 +2016-07-01|-29.0|-160.0|16.96738|0.02813 +2016-07-01|-29.0|-161.0|16.94908|0.02963 +2016-07-01|-29.0|-162.0|16.92933|0.03111 +2016-07-01|-29.0|-163.0|16.90821|0.03256 +2016-07-01|-29.0|-164.0|16.88582|0.03399 +2016-07-01|-29.0|-165.0|16.86219|0.03538 +2016-07-01|-29.0|-166.0|16.83735|0.03672 +2016-07-01|-29.0|-167.0|16.81128|0.038 +2016-07-01|-29.0|-168.0|16.78389|0.03923 +2016-07-01|-29.0|-169.0|16.7551|0.04038 +2016-07-01|-29.0|-170.0|16.72473|0.04146 +2016-07-01|-29.0|-171.0|16.69258|0.04245 +2016-07-01|-29.0|-172.0|16.6584|0.04334 +2016-07-01|-29.0|-173.0|16.62189|0.04414 +2016-07-01|-29.0|-174.0|16.5827|0.04483 +2016-07-01|-29.0|-175.0|16.54046|0.04542 +2016-07-01|-29.0|-176.0|16.49474|0.04589 +2016-07-01|-29.0|-177.0|16.4451|0.04624 +2016-07-01|-29.0|-178.0|16.39106|0.04648 +2016-07-01|-29.0|-179.0|16.33212|0.04659 +2016-07-01|-30.0|0.0|-22.57882|0.1058 +2016-07-01|-30.0|1.0|-22.30814|0.10819 +2016-07-01|-30.0|2.0|-22.04169|0.10924 +2016-07-01|-30.0|3.0|-21.78303|0.10883 +2016-07-01|-30.0|4.0|-21.53577|0.1069 +2016-07-01|-30.0|5.0|-21.30354|0.10341 +2016-07-01|-30.0|6.0|-21.08989|0.09836 +2016-07-01|-30.0|7.0|-20.89826|0.09176 +2016-07-01|-30.0|8.0|-20.73185|0.08366 +2016-07-01|-30.0|9.0|-20.59361|0.07417 +2016-07-01|-30.0|10.0|-20.48616|0.06339 +2016-07-01|-30.0|11.0|-20.41173|0.05147 +2016-07-01|-30.0|12.0|-20.37213|0.03858 +2016-07-01|-30.0|13.0|-20.36871|0.02491 +2016-07-01|-30.0|14.0|-20.40236|0.01064 +2016-07-01|-30.0|15.0|-20.47349|-0.004 +2016-07-01|-30.0|16.0|-20.58202|-0.01882 +2016-07-01|-30.0|17.0|-20.72745|-0.0336 +2016-07-01|-30.0|18.0|-20.90883|-0.04816 +2016-07-01|-30.0|19.0|-21.12481|-0.06229 +2016-07-01|-30.0|20.0|-21.37369|-0.07584 +2016-07-01|-30.0|21.0|-21.65346|-0.08864 +2016-07-01|-30.0|22.0|-21.96184|-0.10058 +2016-07-01|-30.0|23.0|-22.29633|-0.11154 +2016-07-01|-30.0|24.0|-22.65427|-0.12143 +2016-07-01|-30.0|25.0|-23.03287|-0.13019 +2016-07-01|-30.0|26.0|-23.42924|-0.13778 +2016-07-01|-30.0|27.0|-23.84048|-0.14417 +2016-07-01|-30.0|28.0|-24.26365|-0.14935 +2016-07-01|-30.0|29.0|-24.69586|-0.15335 +2016-07-01|-30.0|30.0|-25.13426|-0.15618 +2016-07-01|-30.0|31.0|-25.57605|-0.15787 +2016-07-01|-30.0|32.0|-26.01856|-0.15849 +2016-07-01|-30.0|33.0|-26.4592|-0.15807 +2016-07-01|-30.0|34.0|-26.8955|-0.15668 +2016-07-01|-30.0|35.0|-27.32511|-0.15438 +2016-07-01|-30.0|36.0|-27.74581|-0.15124 +2016-07-01|-30.0|37.0|-28.15551|-0.14731 +2016-07-01|-30.0|38.0|-28.55225|-0.14266 +2016-07-01|-30.0|39.0|-28.93421|-0.13735 +2016-07-01|-30.0|40.0|-29.29967|-0.13144 +2016-07-01|-30.0|41.0|-29.64708|-0.12499 +2016-07-01|-30.0|42.0|-29.97498|-0.11804 +2016-07-01|-30.0|43.0|-30.28206|-0.11064 +2016-07-01|-30.0|44.0|-30.5671|-0.10283 +2016-07-01|-30.0|45.0|-30.82902|-0.09466 +2016-07-01|-30.0|46.0|-31.06685|-0.08617 +2016-07-01|-30.0|47.0|-31.27972|-0.07737 +2016-07-01|-30.0|48.0|-31.46688|-0.06831 +2016-07-01|-30.0|49.0|-31.62768|-0.05901 +2016-07-01|-30.0|50.0|-31.76158|-0.0495 +2016-07-01|-30.0|51.0|-31.86812|-0.03979 +2016-07-01|-30.0|52.0|-31.94697|-0.02991 +2016-07-01|-30.0|53.0|-31.99785|-0.01988 +2016-07-01|-30.0|54.0|-32.02061|-0.00972 +2016-07-01|-30.0|55.0|-32.01516|5.5E-4 +2016-07-01|-30.0|56.0|-31.9815|0.01092 +2016-07-01|-30.0|57.0|-31.9197|0.02135 +2016-07-01|-30.0|58.0|-31.82989|0.03184 +2016-07-01|-30.0|59.0|-31.71229|0.04235 +2016-07-01|-30.0|60.0|-31.56714|0.05288 +2016-07-01|-30.0|61.0|-31.39474|0.06338 +2016-07-01|-30.0|62.0|-31.19543|0.07384 +2016-07-01|-30.0|63.0|-30.96959|0.08422 +2016-07-01|-30.0|64.0|-30.7176|0.0945 +2016-07-01|-30.0|65.0|-30.43987|0.10465 +2016-07-01|-30.0|66.0|-30.1368|0.11462 +2016-07-01|-30.0|67.0|-29.80882|0.12439 +2016-07-01|-30.0|68.0|-29.45633|0.13393 +2016-07-01|-30.0|69.0|-29.07972|0.14318 +2016-07-01|-30.0|70.0|-28.67938|0.15211 +2016-07-01|-30.0|71.0|-28.25571|0.16068 +2016-07-01|-30.0|72.0|-27.80906|0.16885 +2016-07-01|-30.0|73.0|-27.33981|0.17657 +2016-07-01|-30.0|74.0|-26.84832|0.1838 +2016-07-01|-30.0|75.0|-26.33499|0.1905 +2016-07-01|-30.0|76.0|-25.80023|0.19661 +2016-07-01|-30.0|77.0|-25.24449|0.20211 +2016-07-01|-30.0|78.0|-24.66826|0.20694 +2016-07-01|-30.0|79.0|-24.07213|0.21106 +2016-07-01|-30.0|80.0|-23.45675|0.21444 +2016-07-01|-30.0|81.0|-22.82288|0.21705 +2016-07-01|-30.0|82.0|-22.17142|0.21884 +2016-07-01|-30.0|83.0|-21.50336|0.21979 +2016-07-01|-30.0|84.0|-20.81986|0.21989 +2016-07-01|-30.0|85.0|-20.12224|0.21911 +2016-07-01|-30.0|86.0|-19.41196|0.21744 +2016-07-01|-30.0|87.0|-18.69064|0.2149 +2016-07-01|-30.0|88.0|-17.96005|0.21147 +2016-07-01|-30.0|89.0|-17.22211|0.20718 +2016-07-01|-30.0|90.0|-16.47885|0.20206 +2016-07-01|-30.0|91.0|-15.73241|0.19613 +2016-07-01|-30.0|92.0|-14.98501|0.18945 +2016-07-01|-30.0|93.0|-14.23891|0.18206 +2016-07-01|-30.0|94.0|-13.4964|0.17402 +2016-07-01|-30.0|95.0|-12.75974|0.1654 +2016-07-01|-30.0|96.0|-12.03113|0.15628 +2016-07-01|-30.0|97.0|-11.31268|0.14673 +2016-07-01|-30.0|98.0|-10.60637|0.13683 +2016-07-01|-30.0|99.0|-9.91403|0.12666 +2016-07-01|-30.0|100.0|-9.23728|0.11632 +2016-07-01|-30.0|101.0|-8.57755|0.10588 +2016-07-01|-30.0|102.0|-7.93602|0.09542 +2016-07-01|-30.0|103.0|-7.31363|0.08503 +2016-07-01|-30.0|104.0|-6.71107|0.07477 +2016-07-01|-30.0|105.0|-6.12877|0.06471 +2016-07-01|-30.0|106.0|-5.5669|0.05492 +2016-07-01|-30.0|107.0|-5.02538|0.04545 +2016-07-01|-30.0|108.0|-4.50391|0.03636 +2016-07-01|-30.0|109.0|-4.00197|0.02767 +2016-07-01|-30.0|110.0|-3.51884|0.01943 +2016-07-01|-30.0|111.0|-3.05361|0.01167 +2016-07-01|-30.0|112.0|-2.60525|0.00441 +2016-07-01|-30.0|113.0|-2.17259|-0.00234 +2016-07-01|-30.0|114.0|-1.75437|-0.00856 +2016-07-01|-30.0|115.0|-1.34924|-0.01425 +2016-07-01|-30.0|116.0|-0.95585|-0.01941 +2016-07-01|-30.0|117.0|-0.57279|-0.02404 +2016-07-01|-30.0|118.0|-0.19869|-0.02815 +2016-07-01|-30.0|119.0|0.16782|-0.03175 +2016-07-01|-30.0|120.0|0.52802|-0.03486 +2016-07-01|-30.0|121.0|0.88314|-0.03749 +2016-07-01|-30.0|122.0|1.23434|-0.03966 +2016-07-01|-30.0|123.0|1.58264|-0.04139 +2016-07-01|-30.0|124.0|1.92898|-0.0427 +2016-07-01|-30.0|125.0|2.27417|-0.04362 +2016-07-01|-30.0|126.0|2.6189|-0.04415 +2016-07-01|-30.0|127.0|2.96372|-0.04434 +2016-07-01|-30.0|128.0|3.30908|-0.0442 +2016-07-01|-30.0|129.0|3.65529|-0.04376 +2016-07-01|-30.0|130.0|4.00253|-0.04304 +2016-07-01|-30.0|131.0|4.3509|-0.04206 +2016-07-01|-30.0|132.0|4.70039|-0.04084 +2016-07-01|-30.0|133.0|5.05088|-0.03941 +2016-07-01|-30.0|134.0|5.40219|-0.03779 +2016-07-01|-30.0|135.0|5.75408|-0.03599 +2016-07-01|-30.0|136.0|6.10624|-0.03404 +2016-07-01|-30.0|137.0|6.45832|-0.03196 +2016-07-01|-30.0|138.0|6.80994|-0.02975 +2016-07-01|-30.0|139.0|7.1607|-0.02745 +2016-07-01|-30.0|140.0|7.51019|-0.02506 +2016-07-01|-30.0|141.0|7.85799|-0.0226 +2016-07-01|-30.0|142.0|8.20368|-0.02008 +2016-07-01|-30.0|143.0|8.54686|-0.01751 +2016-07-01|-30.0|144.0|8.88714|-0.01491 +2016-07-01|-30.0|145.0|9.22412|-0.01229 +2016-07-01|-30.0|146.0|9.55745|-0.00965 +2016-07-01|-30.0|147.0|9.88676|-0.00701 +2016-07-01|-30.0|148.0|10.21172|-0.00437 +2016-07-01|-30.0|149.0|10.53199|-0.00174 +2016-07-01|-30.0|150.0|10.84724|8.6E-4 +2016-07-01|-30.0|151.0|11.15717|0.00344 +2016-07-01|-30.0|152.0|11.46145|0.00599 +2016-07-01|-30.0|153.0|11.75977|0.0085 +2016-07-01|-30.0|154.0|12.05181|0.01097 +2016-07-01|-30.0|155.0|12.33727|0.01338 +2016-07-01|-30.0|156.0|12.61583|0.01574 +2016-07-01|-30.0|157.0|12.88717|0.01805 +2016-07-01|-30.0|158.0|13.15097|0.02029 +2016-07-01|-30.0|159.0|13.40693|0.02246 +2016-07-01|-30.0|160.0|13.65475|0.02456 +2016-07-01|-30.0|161.0|13.89414|0.02659 +2016-07-01|-30.0|162.0|14.12483|0.02854 +2016-07-01|-30.0|163.0|14.34656|0.03041 +2016-07-01|-30.0|164.0|14.55913|0.0322 +2016-07-01|-30.0|165.0|14.76234|0.0339 +2016-07-01|-30.0|166.0|14.95604|0.03551 +2016-07-01|-30.0|167.0|15.14013|0.03703 +2016-07-01|-30.0|168.0|15.31454|0.03845 +2016-07-01|-30.0|169.0|15.47929|0.03978 +2016-07-01|-30.0|170.0|15.6344|0.04101 +2016-07-01|-30.0|171.0|15.77997|0.04213 +2016-07-01|-30.0|172.0|15.91618|0.04315 +2016-07-01|-30.0|173.0|16.04322|0.04406 +2016-07-01|-30.0|174.0|16.16135|0.04486 +2016-07-01|-30.0|175.0|16.27089|0.04556 +2016-07-01|-30.0|176.0|16.37219|0.04613 +2016-07-01|-30.0|177.0|16.46565|0.0466 +2016-07-01|-30.0|178.0|16.5517|0.04694 +2016-07-01|-30.0|179.0|16.63078|0.04717 +2016-07-01|-30.0|-1.0|-22.85032|0.10216 +2016-07-01|-30.0|-2.0|-23.11942|0.09741 +2016-07-01|-30.0|-3.0|-23.38313|0.09169 +2016-07-01|-30.0|-4.0|-23.63872|0.08516 +2016-07-01|-30.0|-5.0|-23.88376|0.07796 +2016-07-01|-30.0|-6.0|-24.11616|0.07026 +2016-07-01|-30.0|-7.0|-24.3341|0.0622 +2016-07-01|-30.0|-8.0|-24.53613|0.05392 +2016-07-01|-30.0|-9.0|-24.72108|0.04555 +2016-07-01|-30.0|-10.0|-24.88809|0.03721 +2016-07-01|-30.0|-11.0|-25.03658|0.02901 +2016-07-01|-30.0|-12.0|-25.16621|0.02104 +2016-07-01|-30.0|-13.0|-25.27688|0.01337 +2016-07-01|-30.0|-14.0|-25.36867|0.00607 +2016-07-01|-30.0|-15.0|-25.44185|-8.2E-4 +2016-07-01|-30.0|-16.0|-25.49679|-0.00726 +2016-07-01|-30.0|-17.0|-25.53398|-0.01324 +2016-07-01|-30.0|-18.0|-25.55398|-0.01875 +2016-07-01|-30.0|-19.0|-25.55737|-0.02379 +2016-07-01|-30.0|-20.0|-25.54476|-0.02839 +2016-07-01|-30.0|-21.0|-25.51673|-0.03256 +2016-07-01|-30.0|-22.0|-25.47383|-0.03635 +2016-07-01|-30.0|-23.0|-25.41655|-0.03978 +2016-07-01|-30.0|-24.0|-25.34528|-0.04292 +2016-07-01|-30.0|-25.0|-25.26033|-0.0458 +2016-07-01|-30.0|-26.0|-25.1619|-0.04848 +2016-07-01|-30.0|-27.0|-25.05005|-0.05102 +2016-07-01|-30.0|-28.0|-24.92474|-0.05348 +2016-07-01|-30.0|-29.0|-24.78578|-0.0559 +2016-07-01|-30.0|-30.0|-24.63286|-0.05834 +2016-07-01|-30.0|-31.0|-24.46553|-0.06084 +2016-07-01|-30.0|-32.0|-24.28324|-0.06346 +2016-07-01|-30.0|-33.0|-24.08529|-0.06622 +2016-07-01|-30.0|-34.0|-23.87091|-0.06917 +2016-07-01|-30.0|-35.0|-23.63923|-0.07233 +2016-07-01|-30.0|-36.0|-23.38928|-0.07573 +2016-07-01|-30.0|-37.0|-23.12006|-0.07937 +2016-07-01|-30.0|-38.0|-22.8305|-0.08326 +2016-07-01|-30.0|-39.0|-22.51953|-0.0874 +2016-07-01|-30.0|-40.0|-22.18604|-0.09179 +2016-07-01|-30.0|-41.0|-21.82897|-0.09642 +2016-07-01|-30.0|-42.0|-21.44725|-0.10125 +2016-07-01|-30.0|-43.0|-21.03989|-0.10627 +2016-07-01|-30.0|-44.0|-20.60596|-0.11145 +2016-07-01|-30.0|-45.0|-20.14462|-0.11675 +2016-07-01|-30.0|-46.0|-19.65512|-0.12213 +2016-07-01|-30.0|-47.0|-19.13684|-0.12756 +2016-07-01|-30.0|-48.0|-18.58931|-0.13297 +2016-07-01|-30.0|-49.0|-18.0122|-0.13834 +2016-07-01|-30.0|-50.0|-17.40534|-0.1436 +2016-07-01|-30.0|-51.0|-16.76877|-0.14871 +2016-07-01|-30.0|-52.0|-16.10268|-0.15363 +2016-07-01|-30.0|-53.0|-15.40748|-0.15829 +2016-07-01|-30.0|-54.0|-14.68381|-0.16266 +2016-07-01|-30.0|-55.0|-13.93249|-0.1667 +2016-07-01|-30.0|-56.0|-13.15458|-0.17035 +2016-07-01|-30.0|-57.0|-12.35134|-0.17358 +2016-07-01|-30.0|-58.0|-11.52427|-0.17636 +2016-07-01|-30.0|-59.0|-10.67505|-0.17865 +2016-07-01|-30.0|-60.0|-9.80561|-0.18044 +2016-07-01|-30.0|-61.0|-8.91803|-0.18169 +2016-07-01|-30.0|-62.0|-8.0146|-0.18239 +2016-07-01|-30.0|-63.0|-7.09775|-0.18254 +2016-07-01|-30.0|-64.0|-6.17008|-0.18213 +2016-07-01|-30.0|-65.0|-5.23428|-0.18117 +2016-07-01|-30.0|-66.0|-4.29316|-0.17966 +2016-07-01|-30.0|-67.0|-3.34958|-0.17762 +2016-07-01|-30.0|-68.0|-2.40647|-0.17507 +2016-07-01|-30.0|-69.0|-1.46673|-0.17204 +2016-07-01|-30.0|-70.0|-0.53328|-0.16856 +2016-07-01|-30.0|-71.0|0.39102|-0.16465 +2016-07-01|-30.0|-72.0|1.30338|-0.16037 +2016-07-01|-30.0|-73.0|2.20111|-0.15574 +2016-07-01|-30.0|-74.0|3.08163|-0.15081 +2016-07-01|-30.0|-75.0|3.94254|-0.14563 +2016-07-01|-30.0|-76.0|4.78155|-0.14024 +2016-07-01|-30.0|-77.0|5.59658|-0.13468 +2016-07-01|-30.0|-78.0|6.38575|-0.129 +2016-07-01|-30.0|-79.0|7.14735|-0.12323 +2016-07-01|-30.0|-80.0|7.87991|-0.11743 +2016-07-01|-30.0|-81.0|8.58215|-0.11162 +2016-07-01|-30.0|-82.0|9.25302|-0.10584 +2016-07-01|-30.0|-83.0|9.89169|-0.10014 +2016-07-01|-30.0|-84.0|10.49751|-0.09454 +2016-07-01|-30.0|-85.0|11.07009|-0.08906 +2016-07-01|-30.0|-86.0|11.6092|-0.08375 +2016-07-01|-30.0|-87.0|12.11483|-0.07862 +2016-07-01|-30.0|-88.0|12.58716|-0.07369 +2016-07-01|-30.0|-89.0|13.02653|-0.06898 +2016-07-01|-30.0|-90.0|13.43348|-0.0645 +2016-07-01|-30.0|-91.0|13.80868|-0.06028 +2016-07-01|-30.0|-92.0|14.15297|-0.05632 +2016-07-01|-30.0|-93.0|14.46731|-0.05263 +2016-07-01|-30.0|-94.0|14.75281|-0.04921 +2016-07-01|-30.0|-95.0|15.01066|-0.04608 +2016-07-01|-30.0|-96.0|15.24218|-0.04322 +2016-07-01|-30.0|-97.0|15.44876|-0.04063 +2016-07-01|-30.0|-98.0|15.63185|-0.03832 +2016-07-01|-30.0|-99.0|15.79299|-0.03628 +2016-07-01|-30.0|-100.0|15.93372|-0.03449 +2016-07-01|-30.0|-101.0|16.05564|-0.03295 +2016-07-01|-30.0|-102.0|16.16035|-0.03164 +2016-07-01|-30.0|-103.0|16.24946|-0.03054 +2016-07-01|-30.0|-104.0|16.32454|-0.02964 +2016-07-01|-30.0|-105.0|16.38717|-0.02892 +2016-07-01|-30.0|-106.0|16.43886|-0.02836 +2016-07-01|-30.0|-107.0|16.48108|-0.02794 +2016-07-01|-30.0|-108.0|16.51522|-0.02763 +2016-07-01|-30.0|-109.0|16.54262|-0.02741 +2016-07-01|-30.0|-110.0|16.56452|-0.02726 +2016-07-01|-30.0|-111.0|16.58208|-0.02716 +2016-07-01|-30.0|-112.0|16.59636|-0.02709 +2016-07-01|-30.0|-113.0|16.60835|-0.02702 +2016-07-01|-30.0|-114.0|16.6189|-0.02693 +2016-07-01|-30.0|-115.0|16.62877|-0.02681 +2016-07-01|-30.0|-116.0|16.63865|-0.02664 +2016-07-01|-30.0|-117.0|16.64909|-0.02641 +2016-07-01|-30.0|-118.0|16.66057|-0.0261 +2016-07-01|-30.0|-119.0|16.67346|-0.0257 +2016-07-01|-30.0|-120.0|16.68807|-0.02521 +2016-07-01|-30.0|-121.0|16.70459|-0.02462 +2016-07-01|-30.0|-122.0|16.72318|-0.02392 +2016-07-01|-30.0|-123.0|16.74389|-0.02313 +2016-07-01|-30.0|-124.0|16.76674|-0.02223 +2016-07-01|-30.0|-125.0|16.79166|-0.02123 +2016-07-01|-30.0|-126.0|16.81856|-0.02014 +2016-07-01|-30.0|-127.0|16.8473|-0.01896 +2016-07-01|-30.0|-128.0|16.8777|-0.0177 +2016-07-01|-30.0|-129.0|16.90956|-0.01637 +2016-07-01|-30.0|-130.0|16.94264|-0.01497 +2016-07-01|-30.0|-131.0|16.9767|-0.01353 +2016-07-01|-30.0|-132.0|17.01147|-0.01204 +2016-07-01|-30.0|-133.0|17.04668|-0.01052 +2016-07-01|-30.0|-134.0|17.08206|-0.00897 +2016-07-01|-30.0|-135.0|17.11732|-0.00741 +2016-07-01|-30.0|-136.0|17.1522|-0.00584 +2016-07-01|-30.0|-137.0|17.18642|-0.00427 +2016-07-01|-30.0|-138.0|17.21973|-0.00271 +2016-07-01|-30.0|-139.0|17.25187|-0.00116 +2016-07-01|-30.0|-140.0|17.28261|3.8E-4 +2016-07-01|-30.0|-141.0|17.31173|0.0019 +2016-07-01|-30.0|-142.0|17.33902|0.0034 +2016-07-01|-30.0|-143.0|17.36429|0.00489 +2016-07-01|-30.0|-144.0|17.38738|0.00636 +2016-07-01|-30.0|-145.0|17.40816|0.00781 +2016-07-01|-30.0|-146.0|17.42649|0.00925 +2016-07-01|-30.0|-147.0|17.44229|0.01068 +2016-07-01|-30.0|-148.0|17.45548|0.0121 +2016-07-01|-30.0|-149.0|17.46601|0.01351 +2016-07-01|-30.0|-150.0|17.47388|0.01493 +2016-07-01|-30.0|-151.0|17.47907|0.01634 +2016-07-01|-30.0|-152.0|17.48162|0.01776 +2016-07-01|-30.0|-153.0|17.48158|0.01919 +2016-07-01|-30.0|-154.0|17.47901|0.02062 +2016-07-01|-30.0|-155.0|17.47402|0.02206 +2016-07-01|-30.0|-156.0|17.46669|0.02351 +2016-07-01|-30.0|-157.0|17.45715|0.02496 +2016-07-01|-30.0|-158.0|17.44551|0.02642 +2016-07-01|-30.0|-159.0|17.43191|0.02787 +2016-07-01|-30.0|-160.0|17.41647|0.02933 +2016-07-01|-30.0|-161.0|17.3993|0.03077 +2016-07-01|-30.0|-162.0|17.38051|0.0322 +2016-07-01|-30.0|-163.0|17.36019|0.03361 +2016-07-01|-30.0|-164.0|17.3384|0.03499 +2016-07-01|-30.0|-165.0|17.31519|0.03633 +2016-07-01|-30.0|-166.0|17.29056|0.03763 +2016-07-01|-30.0|-167.0|17.26448|0.03888 +2016-07-01|-30.0|-168.0|17.23689|0.04006 +2016-07-01|-30.0|-169.0|17.20766|0.04118 +2016-07-01|-30.0|-170.0|17.17665|0.04223 +2016-07-01|-30.0|-171.0|17.14365|0.04319 +2016-07-01|-30.0|-172.0|17.10842|0.04407 +2016-07-01|-30.0|-173.0|17.07067|0.04484 +2016-07-01|-30.0|-174.0|17.03006|0.04552 +2016-07-01|-30.0|-175.0|16.98621|0.0461 +2016-07-01|-30.0|-176.0|16.93873|0.04656 +2016-07-01|-30.0|-177.0|16.88718|0.04692 +2016-07-01|-30.0|-178.0|16.83109|0.04716 +2016-07-01|-30.0|-179.0|16.76999|0.04728 +2016-07-01|-31.0|0.0|-22.85627|0.09696 +2016-07-01|-31.0|1.0|-22.62563|0.09843 +2016-07-01|-31.0|2.0|-22.40101|0.09855 +2016-07-01|-31.0|3.0|-22.18584|0.09724 +2016-07-01|-31.0|4.0|-21.9836|0.09444 +2016-07-01|-31.0|5.0|-21.79773|0.09012 +2016-07-01|-31.0|6.0|-21.6316|0.08429 +2016-07-01|-31.0|7.0|-21.4884|0.07698 +2016-07-01|-31.0|8.0|-21.3711|0.06826 +2016-07-01|-31.0|9.0|-21.28239|0.05822 +2016-07-01|-31.0|10.0|-21.22459|0.047 +2016-07-01|-31.0|11.0|-21.19966|0.03474 +2016-07-01|-31.0|12.0|-21.20911|0.02161 +2016-07-01|-31.0|13.0|-21.25401|0.0078 +2016-07-01|-31.0|14.0|-21.33496|-0.00649 +2016-07-01|-31.0|15.0|-21.45212|-0.02106 +2016-07-01|-31.0|16.0|-21.60516|-0.03571 +2016-07-01|-31.0|17.0|-21.79336|-0.05023 +2016-07-01|-31.0|18.0|-22.01556|-0.06444 +2016-07-01|-31.0|19.0|-22.27025|-0.07816 +2016-07-01|-31.0|20.0|-22.5556|-0.09123 +2016-07-01|-31.0|21.0|-22.86948|-0.10352 +2016-07-01|-31.0|22.0|-23.20956|-0.1149 +2016-07-01|-31.0|23.0|-23.57329|-0.12528 +2016-07-01|-31.0|24.0|-23.958|-0.13458 +2016-07-01|-31.0|25.0|-24.36092|-0.14275 +2016-07-01|-31.0|26.0|-24.77921|-0.14975 +2016-07-01|-31.0|27.0|-25.21004|-0.15556 +2016-07-01|-31.0|28.0|-25.65057|-0.1602 +2016-07-01|-31.0|29.0|-26.09801|-0.16368 +2016-07-01|-31.0|30.0|-26.54963|-0.16602 +2016-07-01|-31.0|31.0|-27.00279|-0.16727 +2016-07-01|-31.0|32.0|-27.45496|-0.16748 +2016-07-01|-31.0|33.0|-27.90369|-0.1667 +2016-07-01|-31.0|34.0|-28.34668|-0.16499 +2016-07-01|-31.0|35.0|-28.78173|-0.16241 +2016-07-01|-31.0|36.0|-29.20678|-0.15902 +2016-07-01|-31.0|37.0|-29.61988|-0.15489 +2016-07-01|-31.0|38.0|-30.01923|-0.15007 +2016-07-01|-31.0|39.0|-30.40313|-0.14463 +2016-07-01|-31.0|40.0|-30.77001|-0.13863 +2016-07-01|-31.0|41.0|-31.11842|-0.1321 +2016-07-01|-31.0|42.0|-31.44702|-0.1251 +2016-07-01|-31.0|43.0|-31.7546|-0.11767 +2016-07-01|-31.0|44.0|-32.04003|-0.10986 +2016-07-01|-31.0|45.0|-32.30229|-0.1017 +2016-07-01|-31.0|46.0|-32.54049|-0.09322 +2016-07-01|-31.0|47.0|-32.75381|-0.08445 +2016-07-01|-31.0|48.0|-32.94152|-0.07542 +2016-07-01|-31.0|49.0|-33.10302|-0.06616 +2016-07-01|-31.0|50.0|-33.23776|-0.05668 +2016-07-01|-31.0|51.0|-33.34531|-0.047 +2016-07-01|-31.0|52.0|-33.42532|-0.03714 +2016-07-01|-31.0|53.0|-33.4775|-0.02713 +2016-07-01|-31.0|54.0|-33.50166|-0.01697 +2016-07-01|-31.0|55.0|-33.49769|-0.00668 +2016-07-01|-31.0|56.0|-33.46553|0.00371 +2016-07-01|-31.0|57.0|-33.40522|0.01419 +2016-07-01|-31.0|58.0|-33.31684|0.02474 +2016-07-01|-31.0|59.0|-33.20052|0.03535 +2016-07-01|-31.0|60.0|-33.05646|0.04599 +2016-07-01|-31.0|61.0|-32.88489|0.05663 +2016-07-01|-31.0|62.0|-32.68609|0.06725 +2016-07-01|-31.0|63.0|-32.46036|0.07783 +2016-07-01|-31.0|64.0|-32.20801|0.08833 +2016-07-01|-31.0|65.0|-31.9294|0.09872 +2016-07-01|-31.0|66.0|-31.62487|0.10898 +2016-07-01|-31.0|67.0|-31.29477|0.11906 +2016-07-01|-31.0|68.0|-30.93946|0.12892 +2016-07-01|-31.0|69.0|-30.5593|0.13854 +2016-07-01|-31.0|70.0|-30.15462|0.14786 +2016-07-01|-31.0|71.0|-29.72576|0.15684 +2016-07-01|-31.0|72.0|-29.27307|0.16544 +2016-07-01|-31.0|73.0|-28.79688|0.17361 +2016-07-01|-31.0|74.0|-28.29754|0.18131 +2016-07-01|-31.0|75.0|-27.77542|0.18848 +2016-07-01|-31.0|76.0|-27.23091|0.19509 +2016-07-01|-31.0|77.0|-26.66446|0.20109 +2016-07-01|-31.0|78.0|-26.07655|0.20642 +2016-07-01|-31.0|79.0|-25.46774|0.21105 +2016-07-01|-31.0|80.0|-24.83869|0.21493 +2016-07-01|-31.0|81.0|-24.19015|0.21802 +2016-07-01|-31.0|82.0|-23.52301|0.22029 +2016-07-01|-31.0|83.0|-22.83825|0.22171 +2016-07-01|-31.0|84.0|-22.13703|0.22226 +2016-07-01|-31.0|85.0|-21.42066|0.22191 +2016-07-01|-31.0|86.0|-20.6906|0.22065 +2016-07-01|-31.0|87.0|-19.94845|0.21848 +2016-07-01|-31.0|88.0|-19.19599|0.2154 +2016-07-01|-31.0|89.0|-18.43513|0.21143 +2016-07-01|-31.0|90.0|-17.66791|0.2066 +2016-07-01|-31.0|91.0|-16.89647|0.20093 +2016-07-01|-31.0|92.0|-16.12304|0.19446 +2016-07-01|-31.0|93.0|-15.34991|0.18726 +2016-07-01|-31.0|94.0|-14.57938|0.17938 +2016-07-01|-31.0|95.0|-13.81373|0.17089 +2016-07-01|-31.0|96.0|-13.05521|0.16186 +2016-07-01|-31.0|97.0|-12.30596|0.15237 +2016-07-01|-31.0|98.0|-11.56803|0.14251 +2016-07-01|-31.0|99.0|-10.84329|0.13237 +2016-07-01|-31.0|100.0|-10.13344|0.12202 +2016-07-01|-31.0|101.0|-9.43996|0.11156 +2016-07-01|-31.0|102.0|-8.76413|0.10107 +2016-07-01|-31.0|103.0|-8.10695|0.09062 +2016-07-01|-31.0|104.0|-7.4692|0.08031 +2016-07-01|-31.0|105.0|-6.8514|0.07018 +2016-07-01|-31.0|106.0|-6.2538|0.06032 +2016-07-01|-31.0|107.0|-5.67642|0.05078 +2016-07-01|-31.0|108.0|-5.11906|0.0416 +2016-07-01|-31.0|109.0|-4.58128|0.03284 +2016-07-01|-31.0|110.0|-4.06244|0.02453 +2016-07-01|-31.0|111.0|-3.56175|0.01669 +2016-07-01|-31.0|112.0|-3.07824|0.00936 +2016-07-01|-31.0|113.0|-2.61082|0.00254 +2016-07-01|-31.0|114.0|-2.15833|-0.00375 +2016-07-01|-31.0|115.0|-1.71949|-0.0095 +2016-07-01|-31.0|116.0|-1.29301|-0.01472 +2016-07-01|-31.0|117.0|-0.87756|-0.01942 +2016-07-01|-31.0|118.0|-0.4718|-0.02359 +2016-07-01|-31.0|119.0|-0.07446|-0.02725 +2016-07-01|-31.0|120.0|0.31574|-0.03042 +2016-07-01|-31.0|121.0|0.69999|-0.03311 +2016-07-01|-31.0|122.0|1.07938|-0.03534 +2016-07-01|-31.0|123.0|1.45495|-0.03714 +2016-07-01|-31.0|124.0|1.8276|-0.03851 +2016-07-01|-31.0|125.0|2.19814|-0.03949 +2016-07-01|-31.0|126.0|2.56725|-0.0401 +2016-07-01|-31.0|127.0|2.93551|-0.04036 +2016-07-01|-31.0|128.0|3.30336|-0.0403 +2016-07-01|-31.0|129.0|3.67113|-0.03994 +2016-07-01|-31.0|130.0|4.03905|-0.0393 +2016-07-01|-31.0|131.0|4.40723|-0.0384 +2016-07-01|-31.0|132.0|4.77568|-0.03728 +2016-07-01|-31.0|133.0|5.14434|-0.03594 +2016-07-01|-31.0|134.0|5.51306|-0.03441 +2016-07-01|-31.0|135.0|5.88163|-0.03271 +2016-07-01|-31.0|136.0|6.2498|-0.03086 +2016-07-01|-31.0|137.0|6.61723|-0.02888 +2016-07-01|-31.0|138.0|6.9836|-0.02677 +2016-07-01|-31.0|139.0|7.34854|-0.02457 +2016-07-01|-31.0|140.0|7.71166|-0.02228 +2016-07-01|-31.0|141.0|8.07259|-0.01992 +2016-07-01|-31.0|142.0|8.43092|-0.0175 +2016-07-01|-31.0|143.0|8.78628|-0.01503 +2016-07-01|-31.0|144.0|9.13829|-0.01252 +2016-07-01|-31.0|145.0|9.48658|-0.00999 +2016-07-01|-31.0|146.0|9.83079|-0.00744 +2016-07-01|-31.0|147.0|10.17059|-0.00488 +2016-07-01|-31.0|148.0|10.50562|-0.00233 +2016-07-01|-31.0|149.0|10.83557|2.2E-4 +2016-07-01|-31.0|150.0|11.16012|0.00275 +2016-07-01|-31.0|151.0|11.47894|0.00526 +2016-07-01|-31.0|152.0|11.79173|0.00774 +2016-07-01|-31.0|153.0|12.09817|0.01019 +2016-07-01|-31.0|154.0|12.39795|0.01259 +2016-07-01|-31.0|155.0|12.69076|0.01495 +2016-07-01|-31.0|156.0|12.97629|0.01726 +2016-07-01|-31.0|157.0|13.25424|0.01951 +2016-07-01|-31.0|158.0|13.5243|0.0217 +2016-07-01|-31.0|159.0|13.78616|0.02383 +2016-07-01|-31.0|160.0|14.03955|0.02589 +2016-07-01|-31.0|161.0|14.28419|0.02788 +2016-07-01|-31.0|162.0|14.51983|0.02979 +2016-07-01|-31.0|163.0|14.74624|0.03163 +2016-07-01|-31.0|164.0|14.96321|0.03338 +2016-07-01|-31.0|165.0|15.17059|0.03504 +2016-07-01|-31.0|166.0|15.36824|0.03662 +2016-07-01|-31.0|167.0|15.55607|0.03811 +2016-07-01|-31.0|168.0|15.73405|0.03951 +2016-07-01|-31.0|169.0|15.9022|0.0408 +2016-07-01|-31.0|170.0|16.06057|0.042 +2016-07-01|-31.0|171.0|16.20928|0.0431 +2016-07-01|-31.0|172.0|16.3485|0.04409 +2016-07-01|-31.0|173.0|16.47845|0.04498 +2016-07-01|-31.0|174.0|16.5994|0.04576 +2016-07-01|-31.0|175.0|16.71166|0.04643 +2016-07-01|-31.0|176.0|16.8156|0.04699 +2016-07-01|-31.0|177.0|16.9116|0.04743 +2016-07-01|-31.0|178.0|17.0001|0.04777 +2016-07-01|-31.0|179.0|17.08154|0.04798 +2016-07-01|-31.0|-1.0|-23.08959|0.09424 +2016-07-01|-31.0|-2.0|-23.32244|0.0904 +2016-07-01|-31.0|-3.0|-23.55185|0.08556 +2016-07-01|-31.0|-4.0|-23.77511|0.07987 +2016-07-01|-31.0|-5.0|-23.98977|0.07349 +2016-07-01|-31.0|-6.0|-24.1937|0.06655 +2016-07-01|-31.0|-7.0|-24.38504|0.0592 +2016-07-01|-31.0|-8.0|-24.56226|0.05158 +2016-07-01|-31.0|-9.0|-24.72414|0.04382 +2016-07-01|-31.0|-10.0|-24.86972|0.03604 +2016-07-01|-31.0|-11.0|-24.99833|0.02834 +2016-07-01|-31.0|-12.0|-25.10954|0.02082 +2016-07-01|-31.0|-13.0|-25.20315|0.01354 +2016-07-01|-31.0|-14.0|-25.27915|0.00659 +2016-07-01|-31.0|-15.0|-25.33769|-1.0E-5 +2016-07-01|-31.0|-16.0|-25.37905|-0.0062 +2016-07-01|-31.0|-17.0|-25.40362|-0.01198 +2016-07-01|-31.0|-18.0|-25.41185|-0.01732 +2016-07-01|-31.0|-19.0|-25.40424|-0.02224 +2016-07-01|-31.0|-20.0|-25.3813|-0.02675 +2016-07-01|-31.0|-21.0|-25.34352|-0.03087 +2016-07-01|-31.0|-22.0|-25.29137|-0.03464 +2016-07-01|-31.0|-23.0|-25.22524|-0.03808 +2016-07-01|-31.0|-24.0|-25.14545|-0.04124 +2016-07-01|-31.0|-25.0|-25.05225|-0.04417 +2016-07-01|-31.0|-26.0|-24.94576|-0.04693 +2016-07-01|-31.0|-27.0|-24.82599|-0.04955 +2016-07-01|-31.0|-28.0|-24.69283|-0.0521 +2016-07-01|-31.0|-29.0|-24.54605|-0.05461 +2016-07-01|-31.0|-30.0|-24.38529|-0.05716 +2016-07-01|-31.0|-31.0|-24.21007|-0.05976 +2016-07-01|-31.0|-32.0|-24.0198|-0.06248 +2016-07-01|-31.0|-33.0|-23.81376|-0.06535 +2016-07-01|-31.0|-34.0|-23.59116|-0.06839 +2016-07-01|-31.0|-35.0|-23.3511|-0.07163 +2016-07-01|-31.0|-36.0|-23.09263|-0.0751 +2016-07-01|-31.0|-37.0|-22.81472|-0.07879 +2016-07-01|-31.0|-38.0|-22.51633|-0.08273 +2016-07-01|-31.0|-39.0|-22.19636|-0.08691 +2016-07-01|-31.0|-40.0|-21.85374|-0.09131 +2016-07-01|-31.0|-41.0|-21.48741|-0.09594 +2016-07-01|-31.0|-42.0|-21.09633|-0.10075 +2016-07-01|-31.0|-43.0|-20.67952|-0.10574 +2016-07-01|-31.0|-44.0|-20.23609|-0.11088 +2016-07-01|-31.0|-45.0|-19.76521|-0.11611 +2016-07-01|-31.0|-46.0|-19.26618|-0.12142 +2016-07-01|-31.0|-47.0|-18.73842|-0.12675 +2016-07-01|-31.0|-48.0|-18.18148|-0.13207 +2016-07-01|-31.0|-49.0|-17.59507|-0.13732 +2016-07-01|-31.0|-50.0|-16.97909|-0.14246 +2016-07-01|-31.0|-51.0|-16.33357|-0.14744 +2016-07-01|-31.0|-52.0|-15.65879|-0.15221 +2016-07-01|-31.0|-53.0|-14.9552|-0.15673 +2016-07-01|-31.0|-54.0|-14.22345|-0.16096 +2016-07-01|-31.0|-55.0|-13.46441|-0.16484 +2016-07-01|-31.0|-56.0|-12.67919|-0.16834 +2016-07-01|-31.0|-57.0|-11.86909|-0.17143 +2016-07-01|-31.0|-58.0|-11.03562|-0.17406 +2016-07-01|-31.0|-59.0|-10.18051|-0.17621 +2016-07-01|-31.0|-60.0|-9.30569|-0.17785 +2016-07-01|-31.0|-61.0|-8.41327|-0.17897 +2016-07-01|-31.0|-62.0|-7.50554|-0.17956 +2016-07-01|-31.0|-63.0|-6.58494|-0.1796 +2016-07-01|-31.0|-64.0|-5.65407|-0.17909 +2016-07-01|-31.0|-65.0|-4.7156|-0.17804 +2016-07-01|-31.0|-66.0|-3.77232|-0.17646 +2016-07-01|-31.0|-67.0|-2.82708|-0.17437 +2016-07-01|-31.0|-68.0|-1.88276|-0.17178 +2016-07-01|-31.0|-69.0|-0.94225|-0.16872 +2016-07-01|-31.0|-70.0|-0.00841|-0.16522 +2016-07-01|-31.0|-71.0|0.91594|-0.16131 +2016-07-01|-31.0|-72.0|1.82806|-0.15704 +2016-07-01|-31.0|-73.0|2.72531|-0.15244 +2016-07-01|-31.0|-74.0|3.60516|-0.14755 +2016-07-01|-31.0|-75.0|4.46524|-0.14242 +2016-07-01|-31.0|-76.0|5.30333|-0.13709 +2016-07-01|-31.0|-77.0|6.11741|-0.1316 +2016-07-01|-31.0|-78.0|6.9056|-0.12599 +2016-07-01|-31.0|-79.0|7.66628|-0.1203 +2016-07-01|-31.0|-80.0|8.39798|-0.11459 +2016-07-01|-31.0|-81.0|9.09947|-0.10887 +2016-07-01|-31.0|-82.0|9.76972|-0.10319 +2016-07-01|-31.0|-83.0|10.40792|-0.09758 +2016-07-01|-31.0|-84.0|11.01345|-0.09208 +2016-07-01|-31.0|-85.0|11.58592|-0.0867 +2016-07-01|-31.0|-86.0|12.1251|-0.08148 +2016-07-01|-31.0|-87.0|12.63099|-0.07644 +2016-07-01|-31.0|-88.0|13.10376|-0.07161 +2016-07-01|-31.0|-89.0|13.54376|-0.06698 +2016-07-01|-31.0|-90.0|13.95148|-0.0626 +2016-07-01|-31.0|-91.0|14.32761|-0.05845 +2016-07-01|-31.0|-92.0|14.67295|-0.05457 +2016-07-01|-31.0|-93.0|14.98845|-0.05094 +2016-07-01|-31.0|-94.0|15.27517|-0.04759 +2016-07-01|-31.0|-95.0|15.5343|-0.04451 +2016-07-01|-31.0|-96.0|15.76711|-0.0417 +2016-07-01|-31.0|-97.0|15.97496|-0.03916 +2016-07-01|-31.0|-98.0|16.15928|-0.03688 +2016-07-01|-31.0|-99.0|16.32156|-0.03487 +2016-07-01|-31.0|-100.0|16.46332|-0.0331 +2016-07-01|-31.0|-101.0|16.58612|-0.03157 +2016-07-01|-31.0|-102.0|16.69154|-0.03026 +2016-07-01|-31.0|-103.0|16.78115|-0.02917 +2016-07-01|-31.0|-104.0|16.85652|-0.02826 +2016-07-01|-31.0|-105.0|16.91917|-0.02753 +2016-07-01|-31.0|-106.0|16.9706|-0.02695 +2016-07-01|-31.0|-107.0|17.01227|-0.02651 +2016-07-01|-31.0|-108.0|17.04557|-0.02618 +2016-07-01|-31.0|-109.0|17.07181|-0.02593 +2016-07-01|-31.0|-110.0|17.09224|-0.02575 +2016-07-01|-31.0|-111.0|17.10802|-0.02562 +2016-07-01|-31.0|-112.0|17.12021|-0.02551 +2016-07-01|-31.0|-113.0|17.12981|-0.0254 +2016-07-01|-31.0|-114.0|17.13768|-0.02528 +2016-07-01|-31.0|-115.0|17.14461|-0.02513 +2016-07-01|-31.0|-116.0|17.1513|-0.02492 +2016-07-01|-31.0|-117.0|17.15833|-0.02466 +2016-07-01|-31.0|-118.0|17.1662|-0.02432 +2016-07-01|-31.0|-119.0|17.17533|-0.02389 +2016-07-01|-31.0|-120.0|17.18604|-0.02338 +2016-07-01|-31.0|-121.0|17.19858|-0.02277 +2016-07-01|-31.0|-122.0|17.21311|-0.02205 +2016-07-01|-31.0|-123.0|17.22974|-0.02124 +2016-07-01|-31.0|-124.0|17.2485|-0.02033 +2016-07-01|-31.0|-125.0|17.26939|-0.01932 +2016-07-01|-31.0|-126.0|17.29234|-0.01823 +2016-07-01|-31.0|-127.0|17.31723|-0.01704 +2016-07-01|-31.0|-128.0|17.34393|-0.01578 +2016-07-01|-31.0|-129.0|17.37224|-0.01445 +2016-07-01|-31.0|-130.0|17.40197|-0.01306 +2016-07-01|-31.0|-131.0|17.4329|-0.01162 +2016-07-01|-31.0|-132.0|17.46477|-0.01014 +2016-07-01|-31.0|-133.0|17.49733|-0.00862 +2016-07-01|-31.0|-134.0|17.53033|-0.00708 +2016-07-01|-31.0|-135.0|17.56349|-0.00553 +2016-07-01|-31.0|-136.0|17.59655|-0.00397 +2016-07-01|-31.0|-137.0|17.62924|-0.00241 +2016-07-01|-31.0|-138.0|17.66131|-8.5E-4 +2016-07-01|-31.0|-139.0|17.69251|6.9E-4 +2016-07-01|-31.0|-140.0|17.72258|0.00222 +2016-07-01|-31.0|-141.0|17.75132|0.00373 +2016-07-01|-31.0|-142.0|17.77849|0.00523 +2016-07-01|-31.0|-143.0|17.80391|0.0067 +2016-07-01|-31.0|-144.0|17.82739|0.00816 +2016-07-01|-31.0|-145.0|17.84878|0.0096 +2016-07-01|-31.0|-146.0|17.86795|0.01102 +2016-07-01|-31.0|-147.0|17.88476|0.01243 +2016-07-01|-31.0|-148.0|17.89915|0.01383 +2016-07-01|-31.0|-149.0|17.91103|0.01523 +2016-07-01|-31.0|-150.0|17.92036|0.01662 +2016-07-01|-31.0|-151.0|17.92713|0.018 +2016-07-01|-31.0|-152.0|17.93133|0.01939 +2016-07-01|-31.0|-153.0|17.933|0.02079 +2016-07-01|-31.0|-154.0|17.93218|0.02218 +2016-07-01|-31.0|-155.0|17.92893|0.02358 +2016-07-01|-31.0|-156.0|17.92332|0.02499 +2016-07-01|-31.0|-157.0|17.91547|0.0264 +2016-07-01|-31.0|-158.0|17.90545|0.02781 +2016-07-01|-31.0|-159.0|17.89337|0.02923 +2016-07-01|-31.0|-160.0|17.87934|0.03063 +2016-07-01|-31.0|-161.0|17.86346|0.03203 +2016-07-01|-31.0|-162.0|17.84581|0.03341 +2016-07-01|-31.0|-163.0|17.82646|0.03477 +2016-07-01|-31.0|-164.0|17.80548|0.0361 +2016-07-01|-31.0|-165.0|17.78287|0.0374 +2016-07-01|-31.0|-166.0|17.75865|0.03866 +2016-07-01|-31.0|-167.0|17.73277|0.03987 +2016-07-01|-31.0|-168.0|17.70516|0.04102 +2016-07-01|-31.0|-169.0|17.67571|0.0421 +2016-07-01|-31.0|-170.0|17.64426|0.04312 +2016-07-01|-31.0|-171.0|17.61061|0.04405 +2016-07-01|-31.0|-172.0|17.57453|0.0449 +2016-07-01|-31.0|-173.0|17.53573|0.04566 +2016-07-01|-31.0|-174.0|17.49387|0.04633 +2016-07-01|-31.0|-175.0|17.44861|0.04689 +2016-07-01|-31.0|-176.0|17.39955|0.04735 +2016-07-01|-31.0|-177.0|17.34625|0.0477 +2016-07-01|-31.0|-178.0|17.28827|0.04794 +2016-07-01|-31.0|-179.0|17.22515|0.04807 +2016-07-01|-32.0|0.0|-23.07296|0.08827 +2016-07-01|-32.0|1.0|-22.88335|0.08878 +2016-07-01|-32.0|2.0|-22.7016|0.08795 +2016-07-01|-32.0|3.0|-22.53101|0.08572 +2016-07-01|-32.0|4.0|-22.37488|0.08204 +2016-07-01|-32.0|5.0|-22.23645|0.07691 +2016-07-01|-32.0|6.0|-22.11885|0.07032 +2016-07-01|-32.0|7.0|-22.02502|0.06235 +2016-07-01|-32.0|8.0|-21.95766|0.05305 +2016-07-01|-32.0|9.0|-21.91916|0.04253 +2016-07-01|-32.0|10.0|-21.91156|0.03093 +2016-07-01|-32.0|11.0|-21.93649|0.01841 +2016-07-01|-32.0|12.0|-21.99518|0.00512 +2016-07-01|-32.0|13.0|-22.08841|-0.00874 +2016-07-01|-32.0|14.0|-22.21651|-0.02297 +2016-07-01|-32.0|15.0|-22.37937|-0.03738 +2016-07-01|-32.0|16.0|-22.57645|-0.05178 +2016-07-01|-32.0|17.0|-22.8068|-0.06597 +2016-07-01|-32.0|18.0|-23.06911|-0.07978 +2016-07-01|-32.0|19.0|-23.36172|-0.09304 +2016-07-01|-32.0|20.0|-23.68269|-0.10561 +2016-07-01|-32.0|21.0|-24.02983|-0.11736 +2016-07-01|-32.0|22.0|-24.40074|-0.12817 +2016-07-01|-32.0|23.0|-24.79289|-0.13797 +2016-07-01|-32.0|24.0|-25.20361|-0.1467 +2016-07-01|-32.0|25.0|-25.63017|-0.1543 +2016-07-01|-32.0|26.0|-26.06982|-0.16075 +2016-07-01|-32.0|27.0|-26.51981|-0.16604 +2016-07-01|-32.0|28.0|-26.97741|-0.17019 +2016-07-01|-32.0|29.0|-27.43996|-0.1732 +2016-07-01|-32.0|30.0|-27.90485|-0.17513 +2016-07-01|-32.0|31.0|-28.36961|-0.17601 +2016-07-01|-32.0|32.0|-28.83182|-0.17588 +2016-07-01|-32.0|33.0|-29.28923|-0.17481 +2016-07-01|-32.0|34.0|-29.73965|-0.17285 +2016-07-01|-32.0|35.0|-30.18106|-0.17007 +2016-07-01|-32.0|36.0|-30.61153|-0.16652 +2016-07-01|-32.0|37.0|-31.02926|-0.16226 +2016-07-01|-32.0|38.0|-31.43259|-0.15735 +2016-07-01|-32.0|39.0|-31.81995|-0.15185 +2016-07-01|-32.0|40.0|-32.18988|-0.1458 +2016-07-01|-32.0|41.0|-32.54105|-0.13926 +2016-07-01|-32.0|42.0|-32.87222|-0.13228 +2016-07-01|-32.0|43.0|-33.18225|-0.12488 +2016-07-01|-32.0|44.0|-33.47011|-0.11711 +2016-07-01|-32.0|45.0|-33.73484|-0.10901 +2016-07-01|-32.0|46.0|-33.97561|-0.1006 +2016-07-01|-32.0|47.0|-34.19162|-0.0919 +2016-07-01|-32.0|48.0|-34.38222|-0.08295 +2016-07-01|-32.0|49.0|-34.54678|-0.07376 +2016-07-01|-32.0|50.0|-34.6848|-0.06435 +2016-07-01|-32.0|51.0|-34.79584|-0.05474 +2016-07-01|-32.0|52.0|-34.87951|-0.04494 +2016-07-01|-32.0|53.0|-34.93555|-0.03497 +2016-07-01|-32.0|54.0|-34.96371|-0.02485 +2016-07-01|-32.0|55.0|-34.96386|-0.01459 +2016-07-01|-32.0|56.0|-34.93589|-0.00421 +2016-07-01|-32.0|57.0|-34.87979|0.00629 +2016-07-01|-32.0|58.0|-34.79557|0.01688 +2016-07-01|-32.0|59.0|-34.68332|0.02754 +2016-07-01|-32.0|60.0|-34.54317|0.03825 +2016-07-01|-32.0|61.0|-34.37528|0.049 +2016-07-01|-32.0|62.0|-34.17985|0.05976 +2016-07-01|-32.0|63.0|-33.95713|0.0705 +2016-07-01|-32.0|64.0|-33.70735|0.08119 +2016-07-01|-32.0|65.0|-33.4308|0.09181 +2016-07-01|-32.0|66.0|-33.12776|0.10231 +2016-07-01|-32.0|67.0|-32.79852|0.11268 +2016-07-01|-32.0|68.0|-32.44337|0.12286 +2016-07-01|-32.0|69.0|-32.0626|0.13281 +2016-07-01|-32.0|70.0|-31.65653|0.1425 +2016-07-01|-32.0|71.0|-31.22542|0.15188 +2016-07-01|-32.0|72.0|-30.76959|0.1609 +2016-07-01|-32.0|73.0|-30.28933|0.16952 +2016-07-01|-32.0|74.0|-29.78496|0.17769 +2016-07-01|-32.0|75.0|-29.25682|0.18535 +2016-07-01|-32.0|76.0|-28.70527|0.19247 +2016-07-01|-32.0|77.0|-28.13073|0.19897 +2016-07-01|-32.0|78.0|-27.53367|0.20483 +2016-07-01|-32.0|79.0|-26.91463|0.20999 +2016-07-01|-32.0|80.0|-26.27425|0.21441 +2016-07-01|-32.0|81.0|-25.61326|0.21803 +2016-07-01|-32.0|82.0|-24.93253|0.22083 +2016-07-01|-32.0|83.0|-24.23303|0.22277 +2016-07-01|-32.0|84.0|-23.5159|0.22382 +2016-07-01|-32.0|85.0|-22.78243|0.22396 +2016-07-01|-32.0|86.0|-22.03405|0.22317 +2016-07-01|-32.0|87.0|-21.27239|0.22144 +2016-07-01|-32.0|88.0|-20.49918|0.21879 +2016-07-01|-32.0|89.0|-19.71634|0.21521 +2016-07-01|-32.0|90.0|-18.9259|0.21073 +2016-07-01|-32.0|91.0|-18.13001|0.20539 +2016-07-01|-32.0|92.0|-17.33089|0.19922 +2016-07-01|-32.0|93.0|-16.53086|0.19227 +2016-07-01|-32.0|94.0|-15.73224|0.18462 +2016-07-01|-32.0|95.0|-14.93735|0.17631 +2016-07-01|-32.0|96.0|-14.14846|0.16744 +2016-07-01|-32.0|97.0|-13.36777|0.15808 +2016-07-01|-32.0|98.0|-12.59739|0.14831 +2016-07-01|-32.0|99.0|-11.83925|0.13823 +2016-07-01|-32.0|100.0|-11.09512|0.12793 +2016-07-01|-32.0|101.0|-10.36657|0.11748 +2016-07-01|-32.0|102.0|-9.65496|0.10699 +2016-07-01|-32.0|103.0|-8.9614|0.09652 +2016-07-01|-32.0|104.0|-8.28674|0.08617 +2016-07-01|-32.0|105.0|-7.63162|0.076 +2016-07-01|-32.0|106.0|-6.99639|0.06608 +2016-07-01|-32.0|107.0|-6.38118|0.05647 +2016-07-01|-32.0|108.0|-5.78588|0.04722 +2016-07-01|-32.0|109.0|-5.21015|0.03839 +2016-07-01|-32.0|110.0|-4.65348|0.03 +2016-07-01|-32.0|111.0|-4.11515|0.02209 +2016-07-01|-32.0|112.0|-3.59429|0.01467 +2016-07-01|-32.0|113.0|-3.08993|0.00778 +2016-07-01|-32.0|114.0|-2.60096|0.00142 +2016-07-01|-32.0|115.0|-2.12621|-0.00441 +2016-07-01|-32.0|116.0|-1.66445|-0.00971 +2016-07-01|-32.0|117.0|-1.21442|-0.01447 +2016-07-01|-32.0|118.0|-0.77487|-0.01872 +2016-07-01|-32.0|119.0|-0.34454|-0.02245 +2016-07-01|-32.0|120.0|0.07776|-0.02569 +2016-07-01|-32.0|121.0|0.49318|-0.02845 +2016-07-01|-32.0|122.0|0.90281|-0.03075 +2016-07-01|-32.0|123.0|1.30764|-0.03262 +2016-07-01|-32.0|124.0|1.70855|-0.03407 +2016-07-01|-32.0|125.0|2.10636|-0.03513 +2016-07-01|-32.0|126.0|2.50173|-0.03582 +2016-07-01|-32.0|127.0|2.89524|-0.03616 +2016-07-01|-32.0|128.0|3.28736|-0.03618 +2016-07-01|-32.0|129.0|3.67842|-0.03591 +2016-07-01|-32.0|130.0|4.06868|-0.03536 +2016-07-01|-32.0|131.0|4.45828|-0.03456 +2016-07-01|-32.0|132.0|4.84727|-0.03353 +2016-07-01|-32.0|133.0|5.23561|-0.03229 +2016-07-01|-32.0|134.0|5.6232|-0.03086 +2016-07-01|-32.0|135.0|6.00985|-0.02926 +2016-07-01|-32.0|136.0|6.39536|-0.02752 +2016-07-01|-32.0|137.0|6.77943|-0.02564 +2016-07-01|-32.0|138.0|7.16177|-0.02364 +2016-07-01|-32.0|139.0|7.54205|-0.02154 +2016-07-01|-32.0|140.0|7.91991|-0.01936 +2016-07-01|-32.0|141.0|8.295|-0.0171 +2016-07-01|-32.0|142.0|8.66696|-0.01478 +2016-07-01|-32.0|143.0|9.03543|-0.01241 +2016-07-01|-32.0|144.0|9.40004|-0.01 +2016-07-01|-32.0|145.0|9.76044|-0.00756 +2016-07-01|-32.0|146.0|10.1163|-0.0051 +2016-07-01|-32.0|147.0|10.46728|-0.00264 +2016-07-01|-32.0|148.0|10.81305|-1.6E-4 +2016-07-01|-32.0|149.0|11.15328|0.0023 +2016-07-01|-32.0|150.0|11.48767|0.00476 +2016-07-01|-32.0|151.0|11.81589|0.00719 +2016-07-01|-32.0|152.0|12.13765|0.0096 +2016-07-01|-32.0|153.0|12.45263|0.01198 +2016-07-01|-32.0|154.0|12.76053|0.01432 +2016-07-01|-32.0|155.0|13.06104|0.01662 +2016-07-01|-32.0|156.0|13.35386|0.01887 +2016-07-01|-32.0|157.0|13.63869|0.02107 +2016-07-01|-32.0|158.0|13.91525|0.02322 +2016-07-01|-32.0|159.0|14.18324|0.0253 +2016-07-01|-32.0|160.0|14.44239|0.02731 +2016-07-01|-32.0|161.0|14.69245|0.02926 +2016-07-01|-32.0|162.0|14.93319|0.03113 +2016-07-01|-32.0|163.0|15.16439|0.03293 +2016-07-01|-32.0|164.0|15.38587|0.03465 +2016-07-01|-32.0|165.0|15.59749|0.03628 +2016-07-01|-32.0|166.0|15.79915|0.03783 +2016-07-01|-32.0|167.0|15.99077|0.03928 +2016-07-01|-32.0|168.0|16.17235|0.04065 +2016-07-01|-32.0|169.0|16.34391|0.04192 +2016-07-01|-32.0|170.0|16.50554|0.04309 +2016-07-01|-32.0|171.0|16.65736|0.04416 +2016-07-01|-32.0|172.0|16.79957|0.04513 +2016-07-01|-32.0|173.0|16.93238|0.046 +2016-07-01|-32.0|174.0|17.05608|0.04676 +2016-07-01|-32.0|175.0|17.17099|0.04741 +2016-07-01|-32.0|176.0|17.27747|0.04795 +2016-07-01|-32.0|177.0|17.37592|0.04837 +2016-07-01|-32.0|178.0|17.46676|0.04869 +2016-07-01|-32.0|179.0|17.55044|0.0489 +2016-07-01|-32.0|-1.0|-23.26723|0.08651 +2016-07-01|-32.0|-2.0|-23.46306|0.08362 +2016-07-01|-32.0|-3.0|-23.65754|0.07972 +2016-07-01|-32.0|-4.0|-23.84798|0.07494 +2016-07-01|-32.0|-5.0|-24.03194|0.06942 +2016-07-01|-32.0|-6.0|-24.20724|0.0633 +2016-07-01|-32.0|-7.0|-24.372|0.05673 +2016-07-01|-32.0|-8.0|-24.52461|0.04983 +2016-07-01|-32.0|-9.0|-24.66376|0.04273 +2016-07-01|-32.0|-10.0|-24.78841|0.03555 +2016-07-01|-32.0|-11.0|-24.89779|0.0284 +2016-07-01|-32.0|-12.0|-24.99136|0.02136 +2016-07-01|-32.0|-13.0|-25.06881|0.01451 +2016-07-01|-32.0|-14.0|-25.13002|0.00793 +2016-07-01|-32.0|-15.0|-25.175|0.00165 +2016-07-01|-32.0|-16.0|-25.20394|-0.00428 +2016-07-01|-32.0|-17.0|-25.2171|-0.00985 +2016-07-01|-32.0|-18.0|-25.21482|-0.01503 +2016-07-01|-32.0|-19.0|-25.19749|-0.01983 +2016-07-01|-32.0|-20.0|-25.1655|-0.02426 +2016-07-01|-32.0|-21.0|-25.11926|-0.02833 +2016-07-01|-32.0|-22.0|-25.05912|-0.03209 +2016-07-01|-32.0|-23.0|-24.98539|-0.03555 +2016-07-01|-32.0|-24.0|-24.89831|-0.03876 +2016-07-01|-32.0|-25.0|-24.79803|-0.04176 +2016-07-01|-32.0|-26.0|-24.68461|-0.0446 +2016-07-01|-32.0|-27.0|-24.55798|-0.04732 +2016-07-01|-32.0|-28.0|-24.41799|-0.04998 +2016-07-01|-32.0|-29.0|-24.26434|-0.05262 +2016-07-01|-32.0|-30.0|-24.09663|-0.05529 +2016-07-01|-32.0|-31.0|-23.91435|-0.05802 +2016-07-01|-32.0|-32.0|-23.71686|-0.06086 +2016-07-01|-32.0|-33.0|-23.50344|-0.06384 +2016-07-01|-32.0|-34.0|-23.27327|-0.06699 +2016-07-01|-32.0|-35.0|-23.02544|-0.07034 +2016-07-01|-32.0|-36.0|-22.75899|-0.07389 +2016-07-01|-32.0|-37.0|-22.4729|-0.07766 +2016-07-01|-32.0|-38.0|-22.16613|-0.08166 +2016-07-01|-32.0|-39.0|-21.83761|-0.08588 +2016-07-01|-32.0|-40.0|-21.48627|-0.09032 +2016-07-01|-32.0|-41.0|-21.11107|-0.09495 +2016-07-01|-32.0|-42.0|-20.71102|-0.09976 +2016-07-01|-32.0|-43.0|-20.28515|-0.10473 +2016-07-01|-32.0|-44.0|-19.8326|-0.10982 +2016-07-01|-32.0|-45.0|-19.35259|-0.11501 +2016-07-01|-32.0|-46.0|-18.84446|-0.12024 +2016-07-01|-32.0|-47.0|-18.30766|-0.12549 +2016-07-01|-32.0|-48.0|-17.74179|-0.13071 +2016-07-01|-32.0|-49.0|-17.14661|-0.13585 +2016-07-01|-32.0|-50.0|-16.52205|-0.14087 +2016-07-01|-32.0|-51.0|-15.8682|-0.14573 +2016-07-01|-32.0|-52.0|-15.18539|-0.15037 +2016-07-01|-32.0|-53.0|-14.47409|-0.15475 +2016-07-01|-32.0|-54.0|-13.73501|-0.15883 +2016-07-01|-32.0|-55.0|-12.96907|-0.16257 +2016-07-01|-32.0|-56.0|-12.17739|-0.16593 +2016-07-01|-32.0|-57.0|-11.36131|-0.16887 +2016-07-01|-32.0|-58.0|-10.52238|-0.17136 +2016-07-01|-32.0|-59.0|-9.66235|-0.17338 +2016-07-01|-32.0|-60.0|-8.78316|-0.1749 +2016-07-01|-32.0|-61.0|-7.88693|-0.17591 +2016-07-01|-32.0|-62.0|-6.97595|-0.17638 +2016-07-01|-32.0|-63.0|-6.05267|-0.17633 +2016-07-01|-32.0|-64.0|-5.11965|-0.17574 +2016-07-01|-32.0|-65.0|-4.17957|-0.17462 +2016-07-01|-32.0|-66.0|-3.23518|-0.17299 +2016-07-01|-32.0|-67.0|-2.2893|-0.17085 +2016-07-01|-32.0|-68.0|-1.34477|-0.16824 +2016-07-01|-32.0|-69.0|-0.40444|-0.16517 +2016-07-01|-32.0|-70.0|0.52889|-0.16167 +2016-07-01|-32.0|-71.0|1.45243|-0.15779 +2016-07-01|-32.0|-72.0|2.36351|-0.15355 +2016-07-01|-32.0|-73.0|3.25953|-0.14899 +2016-07-01|-32.0|-74.0|4.13803|-0.14416 +2016-07-01|-32.0|-75.0|4.99669|-0.1391 +2016-07-01|-32.0|-76.0|5.83335|-0.13385 +2016-07-01|-32.0|-77.0|6.646|-0.12844 +2016-07-01|-32.0|-78.0|7.43286|-0.12292 +2016-07-01|-32.0|-79.0|8.1923|-0.11734 +2016-07-01|-32.0|-80.0|8.92292|-0.11172 +2016-07-01|-32.0|-81.0|9.62351|-0.10611 +2016-07-01|-32.0|-82.0|10.29306|-0.10054 +2016-07-01|-32.0|-83.0|10.93078|-0.09504 +2016-07-01|-32.0|-84.0|11.53607|-0.08965 +2016-07-01|-32.0|-85.0|12.10853|-0.08438 +2016-07-01|-32.0|-86.0|12.64797|-0.07927 +2016-07-01|-32.0|-87.0|13.15435|-0.07433 +2016-07-01|-32.0|-88.0|13.62785|-0.06959 +2016-07-01|-32.0|-89.0|14.06879|-0.06506 +2016-07-01|-32.0|-90.0|14.47767|-0.06076 +2016-07-01|-32.0|-91.0|14.85513|-0.0567 +2016-07-01|-32.0|-92.0|15.20195|-0.05289 +2016-07-01|-32.0|-93.0|15.51907|-0.04934 +2016-07-01|-32.0|-94.0|15.80751|-0.04605 +2016-07-01|-32.0|-95.0|16.06841|-0.04303 +2016-07-01|-32.0|-96.0|16.30302|-0.04027 +2016-07-01|-32.0|-97.0|16.51267|-0.03777 +2016-07-01|-32.0|-98.0|16.69873|-0.03553 +2016-07-01|-32.0|-99.0|16.86267|-0.03354 +2016-07-01|-32.0|-100.0|17.00597|-0.03179 +2016-07-01|-32.0|-101.0|17.13016|-0.03027 +2016-07-01|-32.0|-102.0|17.23677|-0.02897 +2016-07-01|-32.0|-103.0|17.32735|-0.02787 +2016-07-01|-32.0|-104.0|17.40343|-0.02696 +2016-07-01|-32.0|-105.0|17.46652|-0.02621 +2016-07-01|-32.0|-106.0|17.5181|-0.02561 +2016-07-01|-32.0|-107.0|17.55959|-0.02514 +2016-07-01|-32.0|-108.0|17.59238|-0.02478 +2016-07-01|-32.0|-109.0|17.61777|-0.0245 +2016-07-01|-32.0|-110.0|17.63701|-0.02428 +2016-07-01|-32.0|-111.0|17.65124|-0.02411 +2016-07-01|-32.0|-112.0|17.66156|-0.02396 +2016-07-01|-32.0|-113.0|17.66894|-0.02382 +2016-07-01|-32.0|-114.0|17.67428|-0.02366 +2016-07-01|-32.0|-115.0|17.67839|-0.02346 +2016-07-01|-32.0|-116.0|17.68197|-0.02322 +2016-07-01|-32.0|-117.0|17.68564|-0.02292 +2016-07-01|-32.0|-118.0|17.68994|-0.02255 +2016-07-01|-32.0|-119.0|17.6953|-0.02209 +2016-07-01|-32.0|-120.0|17.70208|-0.02155 +2016-07-01|-32.0|-121.0|17.71057|-0.02091 +2016-07-01|-32.0|-122.0|17.72097|-0.02018 +2016-07-01|-32.0|-123.0|17.73342|-0.01935 +2016-07-01|-32.0|-124.0|17.748|-0.01843 +2016-07-01|-32.0|-125.0|17.76472|-0.01741 +2016-07-01|-32.0|-126.0|17.78357|-0.0163 +2016-07-01|-32.0|-127.0|17.80445|-0.01511 +2016-07-01|-32.0|-128.0|17.82726|-0.01385 +2016-07-01|-32.0|-129.0|17.85185|-0.01251 +2016-07-01|-32.0|-130.0|17.87804|-0.01112 +2016-07-01|-32.0|-131.0|17.90563|-0.00968 +2016-07-01|-32.0|-132.0|17.9344|-0.0082 +2016-07-01|-32.0|-133.0|17.96411|-0.00669 +2016-07-01|-32.0|-134.0|17.99451|-0.00515 +2016-07-01|-32.0|-135.0|18.02537|-0.0036 +2016-07-01|-32.0|-136.0|18.0564|-0.00205 +2016-07-01|-32.0|-137.0|18.08737|-4.9E-4 +2016-07-01|-32.0|-138.0|18.11801|0.00106 +2016-07-01|-32.0|-139.0|18.14806|0.0026 +2016-07-01|-32.0|-140.0|18.1773|0.00412 +2016-07-01|-32.0|-141.0|18.20548|0.00563 +2016-07-01|-32.0|-142.0|18.23238|0.00711 +2016-07-01|-32.0|-143.0|18.2578|0.00858 +2016-07-01|-32.0|-144.0|18.28155|0.01003 +2016-07-01|-32.0|-145.0|18.30344|0.01146 +2016-07-01|-32.0|-146.0|18.32333|0.01287 +2016-07-01|-32.0|-147.0|18.34109|0.01426 +2016-07-01|-32.0|-148.0|18.3566|0.01565 +2016-07-01|-32.0|-149.0|18.36978|0.01702 +2016-07-01|-32.0|-150.0|18.38055|0.01839 +2016-07-01|-32.0|-151.0|18.38888|0.01976 +2016-07-01|-32.0|-152.0|18.39475|0.02112 +2016-07-01|-32.0|-153.0|18.39815|0.02248 +2016-07-01|-32.0|-154.0|18.3991|0.02385 +2016-07-01|-32.0|-155.0|18.39766|0.02521 +2016-07-01|-32.0|-156.0|18.39386|0.02658 +2016-07-01|-32.0|-157.0|18.38777|0.02795 +2016-07-01|-32.0|-158.0|18.37947|0.02932 +2016-07-01|-32.0|-159.0|18.36905|0.03069 +2016-07-01|-32.0|-160.0|18.35657|0.03205 +2016-07-01|-32.0|-161.0|18.34212|0.0334 +2016-07-01|-32.0|-162.0|18.32577|0.03474 +2016-07-01|-32.0|-163.0|18.30757|0.03606 +2016-07-01|-32.0|-164.0|18.28755|0.03734 +2016-07-01|-32.0|-165.0|18.26574|0.0386 +2016-07-01|-32.0|-166.0|18.24211|0.03981 +2016-07-01|-32.0|-167.0|18.21663|0.04098 +2016-07-01|-32.0|-168.0|18.18921|0.04209 +2016-07-01|-32.0|-169.0|18.15974|0.04315 +2016-07-01|-32.0|-170.0|18.12805|0.04413 +2016-07-01|-32.0|-171.0|18.09396|0.04504 +2016-07-01|-32.0|-172.0|18.05723|0.04587 +2016-07-01|-32.0|-173.0|18.01757|0.04661 +2016-07-01|-32.0|-174.0|17.97468|0.04725 +2016-07-01|-32.0|-175.0|17.92819|0.04781 +2016-07-01|-32.0|-176.0|17.87771|0.04826 +2016-07-01|-32.0|-177.0|17.82285|0.0486 +2016-07-01|-32.0|-178.0|17.76315|0.04884 +2016-07-01|-32.0|-179.0|17.69816|0.04897 +2016-07-01|-33.0|0.0|-23.23076|0.07978 +2016-07-01|-33.0|1.0|-23.08278|0.07931 +2016-07-01|-33.0|2.0|-22.94453|0.07754 +2016-07-01|-33.0|3.0|-22.81913|0.0744 +2016-07-01|-33.0|4.0|-22.70968|0.06987 +2016-07-01|-33.0|5.0|-22.6192|0.06394 +2016-07-01|-33.0|6.0|-22.55055|0.05666 +2016-07-01|-33.0|7.0|-22.50641|0.04806 +2016-07-01|-33.0|8.0|-22.48916|0.03825 +2016-07-01|-33.0|9.0|-22.5009|0.02732 +2016-07-01|-33.0|10.0|-22.54336|0.01543 +2016-07-01|-33.0|11.0|-22.61787|0.00271 +2016-07-01|-33.0|12.0|-22.72536|-0.01065 +2016-07-01|-33.0|13.0|-22.86633|-0.02447 +2016-07-01|-33.0|14.0|-23.04083|-0.03857 +2016-07-01|-33.0|15.0|-23.24853|-0.05276 +2016-07-01|-33.0|16.0|-23.48867|-0.06684 +2016-07-01|-33.0|17.0|-23.76012|-0.08065 +2016-07-01|-33.0|18.0|-24.06143|-0.09401 +2016-07-01|-33.0|19.0|-24.39083|-0.10678 +2016-07-01|-33.0|20.0|-24.74629|-0.11882 +2016-07-01|-33.0|21.0|-25.12558|-0.13002 +2016-07-01|-33.0|22.0|-25.5263|-0.14028 +2016-07-01|-33.0|23.0|-25.9459|-0.14952 +2016-07-01|-33.0|24.0|-26.38179|-0.15769 +2016-07-01|-33.0|25.0|-26.83129|-0.16476 +2016-07-01|-33.0|26.0|-27.29174|-0.17071 +2016-07-01|-33.0|27.0|-27.7605|-0.17553 +2016-07-01|-33.0|28.0|-28.23494|-0.17925 +2016-07-01|-33.0|29.0|-28.71255|-0.18188 +2016-07-01|-33.0|30.0|-29.19087|-0.18346 +2016-07-01|-33.0|31.0|-29.66754|-0.18403 +2016-07-01|-33.0|32.0|-30.14033|-0.18365 +2016-07-01|-33.0|33.0|-30.6071|-0.18236 +2016-07-01|-33.0|34.0|-31.06583|-0.18023 +2016-07-01|-33.0|35.0|-31.51464|-0.17732 +2016-07-01|-33.0|36.0|-31.95173|-0.17367 +2016-07-01|-33.0|37.0|-32.37546|-0.16936 +2016-07-01|-33.0|38.0|-32.78426|-0.16442 +2016-07-01|-33.0|39.0|-33.17669|-0.15892 +2016-07-01|-33.0|40.0|-33.55141|-0.1529 +2016-07-01|-33.0|41.0|-33.90719|-0.14641 +2016-07-01|-33.0|42.0|-34.24286|-0.13949 +2016-07-01|-33.0|43.0|-34.55739|-0.13218 +2016-07-01|-33.0|44.0|-34.84979|-0.12451 +2016-07-01|-33.0|45.0|-35.11918|-0.11651 +2016-07-01|-33.0|46.0|-35.36476|-0.1082 +2016-07-01|-33.0|47.0|-35.58579|-0.09962 +2016-07-01|-33.0|48.0|-35.78162|-0.09078 +2016-07-01|-33.0|49.0|-35.95168|-0.08171 +2016-07-01|-33.0|50.0|-36.09543|-0.07241 +2016-07-01|-33.0|51.0|-36.21246|-0.0629 +2016-07-01|-33.0|52.0|-36.30237|-0.0532 +2016-07-01|-33.0|53.0|-36.36485|-0.04332 +2016-07-01|-33.0|54.0|-36.39966|-0.03328 +2016-07-01|-33.0|55.0|-36.40659|-0.02308 +2016-07-01|-33.0|56.0|-36.38553|-0.01273 +2016-07-01|-33.0|57.0|-36.33639|-0.00226 +2016-07-01|-33.0|58.0|-36.25915|0.00833 +2016-07-01|-33.0|59.0|-36.15381|0.01901 +2016-07-01|-33.0|60.0|-36.02045|0.02977 +2016-07-01|-33.0|61.0|-35.85916|0.04059 +2016-07-01|-33.0|62.0|-35.67008|0.05144 +2016-07-01|-33.0|63.0|-35.45336|0.06231 +2016-07-01|-33.0|64.0|-35.20919|0.07316 +2016-07-01|-33.0|65.0|-34.93777|0.08396 +2016-07-01|-33.0|66.0|-34.63932|0.09469 +2016-07-01|-33.0|67.0|-34.31405|0.1053 +2016-07-01|-33.0|68.0|-33.9622|0.11576 +2016-07-01|-33.0|69.0|-33.584|0.12603 +2016-07-01|-33.0|70.0|-33.17968|0.13607 +2016-07-01|-33.0|71.0|-32.74948|0.14582 +2016-07-01|-33.0|72.0|-32.29366|0.15525 +2016-07-01|-33.0|73.0|-31.81246|0.16431 +2016-07-01|-33.0|74.0|-31.30616|0.17294 +2016-07-01|-33.0|75.0|-30.77505|0.18109 +2016-07-01|-33.0|76.0|-30.21947|0.1887 +2016-07-01|-33.0|77.0|-29.6398|0.19574 +2016-07-01|-33.0|78.0|-29.03646|0.20214 +2016-07-01|-33.0|79.0|-28.40999|0.20785 +2016-07-01|-33.0|80.0|-27.76097|0.21283 +2016-07-01|-33.0|81.0|-27.09011|0.21702 +2016-07-01|-33.0|82.0|-26.39825|0.22039 +2016-07-01|-33.0|83.0|-25.68634|0.2229 +2016-07-01|-33.0|84.0|-24.95548|0.2245 +2016-07-01|-33.0|85.0|-24.20694|0.22519 +2016-07-01|-33.0|86.0|-23.44212|0.22493 +2016-07-01|-33.0|87.0|-22.66262|0.22372 +2016-07-01|-33.0|88.0|-21.87016|0.22155 +2016-07-01|-33.0|89.0|-21.06663|0.21843 +2016-07-01|-33.0|90.0|-20.25406|0.21439 +2016-07-01|-33.0|91.0|-19.43459|0.20945 +2016-07-01|-33.0|92.0|-18.61045|0.20365 +2016-07-01|-33.0|93.0|-17.78397|0.19704 +2016-07-01|-33.0|94.0|-16.95747|0.18968 +2016-07-01|-33.0|95.0|-16.13332|0.18164 +2016-07-01|-33.0|96.0|-15.31383|0.17299 +2016-07-01|-33.0|97.0|-14.50127|0.16382 +2016-07-01|-33.0|98.0|-13.69778|0.15421 +2016-07-01|-33.0|99.0|-12.90539|0.14425 +2016-07-01|-33.0|100.0|-12.12594|0.13403 +2016-07-01|-33.0|101.0|-11.36111|0.12364 +2016-07-01|-33.0|102.0|-10.61233|0.11318 +2016-07-01|-33.0|103.0|-9.88084|0.10273 +2016-07-01|-33.0|104.0|-9.1676|0.09236 +2016-07-01|-33.0|105.0|-8.47335|0.08217 +2016-07-01|-33.0|106.0|-7.79857|0.07221 +2016-07-01|-33.0|107.0|-7.14351|0.06255 +2016-07-01|-33.0|108.0|-6.50816|0.05324 +2016-07-01|-33.0|109.0|-5.89233|0.04433 +2016-07-01|-33.0|110.0|-5.29559|0.03587 +2016-07-01|-33.0|111.0|-4.71735|0.02788 +2016-07-01|-33.0|112.0|-4.15685|0.02039 +2016-07-01|-33.0|113.0|-3.61321|0.01341 +2016-07-01|-33.0|114.0|-3.08543|0.00696 +2016-07-01|-33.0|115.0|-2.57243|0.00105 +2016-07-01|-33.0|116.0|-2.07305|-0.00433 +2016-07-01|-33.0|117.0|-1.58612|-0.00918 +2016-07-01|-33.0|118.0|-1.11046|-0.0135 +2016-07-01|-33.0|119.0|-0.64487|-0.01732 +2016-07-01|-33.0|120.0|-0.18821|-0.02064 +2016-07-01|-33.0|121.0|0.26063|-0.02348 +2016-07-01|-33.0|122.0|0.70269|-0.02587 +2016-07-01|-33.0|123.0|1.13893|-0.02782 +2016-07-01|-33.0|124.0|1.57022|-0.02935 +2016-07-01|-33.0|125.0|1.99736|-0.0305 +2016-07-01|-33.0|126.0|2.42101|-0.03128 +2016-07-01|-33.0|127.0|2.84175|-0.03171 +2016-07-01|-33.0|128.0|3.26005|-0.03183 +2016-07-01|-33.0|129.0|3.67628|-0.03165 +2016-07-01|-33.0|130.0|4.0907|-0.0312 +2016-07-01|-33.0|131.0|4.50348|-0.0305 +2016-07-01|-33.0|132.0|4.91469|-0.02957 +2016-07-01|-33.0|133.0|5.32435|-0.02844 +2016-07-01|-33.0|134.0|5.73237|-0.02712 +2016-07-01|-33.0|135.0|6.13862|-0.02563 +2016-07-01|-33.0|136.0|6.54291|-0.02399 +2016-07-01|-33.0|137.0|6.94501|-0.02222 +2016-07-01|-33.0|138.0|7.34464|-0.02034 +2016-07-01|-33.0|139.0|7.7415|-0.01835 +2016-07-01|-33.0|140.0|8.13529|-0.01627 +2016-07-01|-33.0|141.0|8.52567|-0.01412 +2016-07-01|-33.0|142.0|8.9123|-0.01191 +2016-07-01|-33.0|143.0|9.29486|-0.00964 +2016-07-01|-33.0|144.0|9.673|-0.00733 +2016-07-01|-33.0|145.0|10.04638|-0.00499 +2016-07-01|-33.0|146.0|10.41469|-0.00263 +2016-07-01|-33.0|147.0|10.77759|-2.5E-4 +2016-07-01|-33.0|148.0|11.13477|0.00213 +2016-07-01|-33.0|149.0|11.48592|0.00451 +2016-07-01|-33.0|150.0|11.83072|0.00688 +2016-07-01|-33.0|151.0|12.16888|0.00924 +2016-07-01|-33.0|152.0|12.50008|0.01158 +2016-07-01|-33.0|153.0|12.82404|0.01389 +2016-07-01|-33.0|154.0|13.14044|0.01616 +2016-07-01|-33.0|155.0|13.449|0.0184 +2016-07-01|-33.0|156.0|13.74943|0.0206 +2016-07-01|-33.0|157.0|14.04143|0.02274 +2016-07-01|-33.0|158.0|14.32473|0.02483 +2016-07-01|-33.0|159.0|14.59906|0.02687 +2016-07-01|-33.0|160.0|14.86416|0.02884 +2016-07-01|-33.0|161.0|15.1198|0.03074 +2016-07-01|-33.0|162.0|15.36577|0.03258 +2016-07-01|-33.0|163.0|15.60187|0.03434 +2016-07-01|-33.0|164.0|15.82795|0.03602 +2016-07-01|-33.0|165.0|16.04389|0.03762 +2016-07-01|-33.0|166.0|16.24961|0.03913 +2016-07-01|-33.0|167.0|16.44506|0.04056 +2016-07-01|-33.0|168.0|16.63025|0.04189 +2016-07-01|-33.0|169.0|16.80522|0.04313 +2016-07-01|-33.0|170.0|16.97009|0.04428 +2016-07-01|-33.0|171.0|17.12499|0.04533 +2016-07-01|-33.0|172.0|17.27013|0.04627 +2016-07-01|-33.0|173.0|17.40575|0.04712 +2016-07-01|-33.0|174.0|17.53212|0.04785 +2016-07-01|-33.0|175.0|17.6496|0.04849 +2016-07-01|-33.0|176.0|17.75852|0.04901 +2016-07-01|-33.0|177.0|17.8593|0.04943 +2016-07-01|-33.0|178.0|17.95236|0.04973 +2016-07-01|-33.0|179.0|18.03813|0.04993 +2016-07-01|-33.0|-1.0|-23.3854|0.07902 +2016-07-01|-33.0|-2.0|-23.5437|0.07711 +2016-07-01|-33.0|-3.0|-23.70284|0.07418 +2016-07-01|-33.0|-4.0|-23.86015|0.07035 +2016-07-01|-33.0|-5.0|-24.01319|0.06574 +2016-07-01|-33.0|-6.0|-24.15979|0.06049 +2016-07-01|-33.0|-7.0|-24.298|0.05474 +2016-07-01|-33.0|-8.0|-24.42617|0.0486 +2016-07-01|-33.0|-9.0|-24.54289|0.04221 +2016-07-01|-33.0|-10.0|-24.64705|0.03568 +2016-07-01|-33.0|-11.0|-24.73775|0.0291 +2016-07-01|-33.0|-12.0|-24.81434|0.02258 +2016-07-01|-33.0|-13.0|-24.87639|0.01619 +2016-07-01|-33.0|-14.0|-24.92364|0.01 +2016-07-01|-33.0|-15.0|-24.95599|0.00406 +2016-07-01|-33.0|-16.0|-24.97349|-0.0016 +2016-07-01|-33.0|-17.0|-24.97627|-0.00694 +2016-07-01|-33.0|-18.0|-24.96454|-0.01195 +2016-07-01|-33.0|-19.0|-24.93858|-0.01662 +2016-07-01|-33.0|-20.0|-24.89865|-0.02097 +2016-07-01|-33.0|-21.0|-24.84504|-0.02501 +2016-07-01|-33.0|-22.0|-24.778|-0.02876 +2016-07-01|-33.0|-23.0|-24.69775|-0.03225 +2016-07-01|-33.0|-24.0|-24.60441|-0.03552 +2016-07-01|-33.0|-25.0|-24.49806|-0.0386 +2016-07-01|-33.0|-26.0|-24.37867|-0.04155 +2016-07-01|-33.0|-27.0|-24.24611|-0.04439 +2016-07-01|-33.0|-28.0|-24.10016|-0.04718 +2016-07-01|-33.0|-29.0|-23.94046|-0.04996 +2016-07-01|-33.0|-30.0|-23.76658|-0.05276 +2016-07-01|-33.0|-31.0|-23.57795|-0.05564 +2016-07-01|-33.0|-32.0|-23.37392|-0.05862 +2016-07-01|-33.0|-33.0|-23.15374|-0.06174 +2016-07-01|-33.0|-34.0|-22.91657|-0.06501 +2016-07-01|-33.0|-35.0|-22.6615|-0.06847 +2016-07-01|-33.0|-36.0|-22.38757|-0.07213 +2016-07-01|-33.0|-37.0|-22.09377|-0.07599 +2016-07-01|-33.0|-38.0|-21.77907|-0.08006 +2016-07-01|-33.0|-39.0|-21.44241|-0.08434 +2016-07-01|-33.0|-40.0|-21.08277|-0.08881 +2016-07-01|-33.0|-41.0|-20.69911|-0.09347 +2016-07-01|-33.0|-42.0|-20.29048|-0.09828 +2016-07-01|-33.0|-43.0|-19.85596|-0.10324 +2016-07-01|-33.0|-44.0|-19.39473|-0.1083 +2016-07-01|-33.0|-45.0|-18.90604|-0.11343 +2016-07-01|-33.0|-46.0|-18.38928|-0.1186 +2016-07-01|-33.0|-47.0|-17.84396|-0.12377 +2016-07-01|-33.0|-48.0|-17.26971|-0.1289 +2016-07-01|-33.0|-49.0|-16.66635|-0.13394 +2016-07-01|-33.0|-50.0|-16.03385|-0.13885 +2016-07-01|-33.0|-51.0|-15.37237|-0.14358 +2016-07-01|-33.0|-52.0|-14.68225|-0.1481 +2016-07-01|-33.0|-53.0|-13.96403|-0.15235 +2016-07-01|-33.0|-54.0|-13.21847|-0.1563 +2016-07-01|-33.0|-55.0|-12.44651|-0.1599 +2016-07-01|-33.0|-56.0|-11.64931|-0.16312 +2016-07-01|-33.0|-57.0|-10.82824|-0.16593 +2016-07-01|-33.0|-58.0|-9.98488|-0.16829 +2016-07-01|-33.0|-59.0|-9.12098|-0.17019 +2016-07-01|-33.0|-60.0|-8.2385|-0.1716 +2016-07-01|-33.0|-61.0|-7.33956|-0.1725 +2016-07-01|-33.0|-62.0|-6.42646|-0.17289 +2016-07-01|-33.0|-63.0|-5.50162|-0.17275 +2016-07-01|-33.0|-64.0|-4.56758|-0.1721 +2016-07-01|-33.0|-65.0|-3.627|-0.17093 +2016-07-01|-33.0|-66.0|-2.6826|-0.16926 +2016-07-01|-33.0|-67.0|-1.73714|-0.1671 +2016-07-01|-33.0|-68.0|-0.79344|-0.16448 +2016-07-01|-33.0|-69.0|0.14573|-0.16142 +2016-07-01|-33.0|-70.0|1.07759|-0.15795 +2016-07-01|-33.0|-71.0|1.99944|-0.1541 +2016-07-01|-33.0|-72.0|2.90865|-0.14991 +2016-07-01|-33.0|-73.0|3.80269|-0.14542 +2016-07-01|-33.0|-74.0|4.67915|-0.14067 +2016-07-01|-33.0|-75.0|5.53577|-0.13569 +2016-07-01|-33.0|-76.0|6.37043|-0.13053 +2016-07-01|-33.0|-77.0|7.1812|-0.12522 +2016-07-01|-33.0|-78.0|7.96632|-0.11981 +2016-07-01|-33.0|-79.0|8.72421|-0.11434 +2016-07-01|-33.0|-80.0|9.4535|-0.10884 +2016-07-01|-33.0|-81.0|10.15301|-0.10335 +2016-07-01|-33.0|-82.0|10.82177|-0.0979 +2016-07-01|-33.0|-83.0|11.45899|-0.09252 +2016-07-01|-33.0|-84.0|12.06408|-0.08724 +2016-07-01|-33.0|-85.0|12.63665|-0.08209 +2016-07-01|-33.0|-86.0|13.1765|-0.07709 +2016-07-01|-33.0|-87.0|13.6836|-0.07227 +2016-07-01|-33.0|-88.0|14.1581|-0.06763 +2016-07-01|-33.0|-89.0|14.60032|-0.0632 +2016-07-01|-33.0|-90.0|15.01071|-0.059 +2016-07-01|-33.0|-91.0|15.38991|-0.05503 +2016-07-01|-33.0|-92.0|15.73867|-0.0513 +2016-07-01|-33.0|-93.0|16.05787|-0.04782 +2016-07-01|-33.0|-94.0|16.34852|-0.0446 +2016-07-01|-33.0|-95.0|16.61171|-0.04163 +2016-07-01|-33.0|-96.0|16.84866|-0.03892 +2016-07-01|-33.0|-97.0|17.06063|-0.03646 +2016-07-01|-33.0|-98.0|17.24898|-0.03425 +2016-07-01|-33.0|-99.0|17.41513|-0.03229 +2016-07-01|-33.0|-100.0|17.56051|-0.03055 +2016-07-01|-33.0|-101.0|17.68661|-0.02904 +2016-07-01|-33.0|-102.0|17.79495|-0.02774 +2016-07-01|-33.0|-103.0|17.88701|-0.02664 +2016-07-01|-33.0|-104.0|17.9643|-0.02571 +2016-07-01|-33.0|-105.0|18.02831|-0.02495 +2016-07-01|-33.0|-106.0|18.08048|-0.02432 +2016-07-01|-33.0|-107.0|18.12222|-0.02382 +2016-07-01|-33.0|-108.0|18.1549|-0.02343 +2016-07-01|-33.0|-109.0|18.17981|-0.02311 +2016-07-01|-33.0|-110.0|18.19819|-0.02286 +2016-07-01|-33.0|-111.0|18.2112|-0.02264 +2016-07-01|-33.0|-112.0|18.21992|-0.02245 +2016-07-01|-33.0|-113.0|18.22533|-0.02226 +2016-07-01|-33.0|-114.0|18.22836|-0.02206 +2016-07-01|-33.0|-115.0|18.22983|-0.02182 +2016-07-01|-33.0|-116.0|18.23046|-0.02154 +2016-07-01|-33.0|-117.0|18.23091|-0.0212 +2016-07-01|-33.0|-118.0|18.23172|-0.02079 +2016-07-01|-33.0|-119.0|18.23338|-0.02031 +2016-07-01|-33.0|-120.0|18.23629|-0.01973 +2016-07-01|-33.0|-121.0|18.24074|-0.01907 +2016-07-01|-33.0|-122.0|18.24701|-0.01831 +2016-07-01|-33.0|-123.0|18.25525|-0.01746 +2016-07-01|-33.0|-124.0|18.26558|-0.01652 +2016-07-01|-33.0|-125.0|18.27807|-0.01549 +2016-07-01|-33.0|-126.0|18.29271|-0.01437 +2016-07-01|-33.0|-127.0|18.30948|-0.01317 +2016-07-01|-33.0|-128.0|18.32828|-0.0119 +2016-07-01|-33.0|-129.0|18.349|-0.01056 +2016-07-01|-33.0|-130.0|18.3715|-0.00917 +2016-07-01|-33.0|-131.0|18.39559|-0.00772 +2016-07-01|-33.0|-132.0|18.42108|-0.00624 +2016-07-01|-33.0|-133.0|18.44776|-0.00473 +2016-07-01|-33.0|-134.0|18.4754|-0.0032 +2016-07-01|-33.0|-135.0|18.50375|-0.00165 +2016-07-01|-33.0|-136.0|18.53258|-9.0E-5 +2016-07-01|-33.0|-137.0|18.56163|0.00146 +2016-07-01|-33.0|-138.0|18.59065|0.00301 +2016-07-01|-33.0|-139.0|18.61939|0.00454 +2016-07-01|-33.0|-140.0|18.64761|0.00606 +2016-07-01|-33.0|-141.0|18.67508|0.00757 +2016-07-01|-33.0|-142.0|18.70155|0.00905 +2016-07-01|-33.0|-143.0|18.72682|0.01051 +2016-07-01|-33.0|-144.0|18.75069|0.01195 +2016-07-01|-33.0|-145.0|18.77297|0.01337 +2016-07-01|-33.0|-146.0|18.79348|0.01478 +2016-07-01|-33.0|-147.0|18.81208|0.01616 +2016-07-01|-33.0|-148.0|18.82864|0.01753 +2016-07-01|-33.0|-149.0|18.84305|0.01889 +2016-07-01|-33.0|-150.0|18.85522|0.02025 +2016-07-01|-33.0|-151.0|18.86509|0.02159 +2016-07-01|-33.0|-152.0|18.8726|0.02293 +2016-07-01|-33.0|-153.0|18.87775|0.02427 +2016-07-01|-33.0|-154.0|18.88051|0.0256 +2016-07-01|-33.0|-155.0|18.88091|0.02694 +2016-07-01|-33.0|-156.0|18.87897|0.02827 +2016-07-01|-33.0|-157.0|18.87474|0.02961 +2016-07-01|-33.0|-158.0|18.86826|0.03094 +2016-07-01|-33.0|-159.0|18.85959|0.03227 +2016-07-01|-33.0|-160.0|18.84878|0.03359 +2016-07-01|-33.0|-161.0|18.8359|0.0349 +2016-07-01|-33.0|-162.0|18.821|0.03619 +2016-07-01|-33.0|-163.0|18.8041|0.03746 +2016-07-01|-33.0|-164.0|18.78523|0.03871 +2016-07-01|-33.0|-165.0|18.76438|0.03992 +2016-07-01|-33.0|-166.0|18.74154|0.0411 +2016-07-01|-33.0|-167.0|18.71665|0.04222 +2016-07-01|-33.0|-168.0|18.68962|0.0433 +2016-07-01|-33.0|-169.0|18.66032|0.04432 +2016-07-01|-33.0|-170.0|18.62861|0.04527 +2016-07-01|-33.0|-171.0|18.59428|0.04615 +2016-07-01|-33.0|-172.0|18.5571|0.04696 +2016-07-01|-33.0|-173.0|18.5168|0.04768 +2016-07-01|-33.0|-174.0|18.47305|0.04831 +2016-07-01|-33.0|-175.0|18.42553|0.04884 +2016-07-01|-33.0|-176.0|18.37384|0.04928 +2016-07-01|-33.0|-177.0|18.31759|0.04962 +2016-07-01|-33.0|-178.0|18.25634|0.04986 +2016-07-01|-33.0|-179.0|18.18966|0.04999 +2016-07-01|-34.0|0.0|-23.33272|0.07153 +2016-07-01|-34.0|1.0|-23.22664|0.0701 +2016-07-01|-34.0|2.0|-23.13213|0.06739 +2016-07-01|-34.0|3.0|-23.05209|0.06337 +2016-07-01|-34.0|4.0|-22.98942|0.05802 +2016-07-01|-34.0|5.0|-22.94688|0.05136 +2016-07-01|-34.0|6.0|-22.92705|0.04343 +2016-07-01|-34.0|7.0|-22.93231|0.03429 +2016-07-01|-34.0|8.0|-22.96476|0.02403 +2016-07-01|-34.0|9.0|-23.02618|0.01278 +2016-07-01|-34.0|10.0|-23.11798|6.6E-4 +2016-07-01|-34.0|11.0|-23.24119|-0.01215 +2016-07-01|-34.0|12.0|-23.39646|-0.02551 +2016-07-01|-34.0|13.0|-23.58401|-0.03922 +2016-07-01|-34.0|14.0|-23.80367|-0.05312 +2016-07-01|-34.0|15.0|-24.05487|-0.06701 +2016-07-01|-34.0|16.0|-24.33668|-0.08074 +2016-07-01|-34.0|17.0|-24.6478|-0.09412 +2016-07-01|-34.0|18.0|-24.98668|-0.10701 +2016-07-01|-34.0|19.0|-25.35145|-0.11927 +2016-07-01|-34.0|20.0|-25.74005|-0.13078 +2016-07-01|-34.0|21.0|-26.15021|-0.14143 +2016-07-01|-34.0|22.0|-26.57954|-0.15114 +2016-07-01|-34.0|23.0|-27.02556|-0.15985 +2016-07-01|-34.0|24.0|-27.48571|-0.16751 +2016-07-01|-34.0|25.0|-27.9574|-0.1741 +2016-07-01|-34.0|26.0|-28.43809|-0.1796 +2016-07-01|-34.0|27.0|-28.92522|-0.18401 +2016-07-01|-34.0|28.0|-29.41632|-0.18736 +2016-07-01|-34.0|29.0|-29.909|-0.18967 +2016-07-01|-34.0|30.0|-30.40093|-0.19097 +2016-07-01|-34.0|31.0|-30.88992|-0.19131 +2016-07-01|-34.0|32.0|-31.37386|-0.19075 +2016-07-01|-34.0|33.0|-31.85075|-0.18932 +2016-07-01|-34.0|34.0|-32.31873|-0.18709 +2016-07-01|-34.0|35.0|-32.77604|-0.18411 +2016-07-01|-34.0|36.0|-33.22101|-0.18044 +2016-07-01|-34.0|37.0|-33.65212|-0.17613 +2016-07-01|-34.0|38.0|-34.06792|-0.17123 +2016-07-01|-34.0|39.0|-34.46708|-0.16578 +2016-07-01|-34.0|40.0|-34.84836|-0.15985 +2016-07-01|-34.0|41.0|-35.21059|-0.15346 +2016-07-01|-34.0|42.0|-35.55273|-0.14666 +2016-07-01|-34.0|43.0|-35.87377|-0.13947 +2016-07-01|-34.0|44.0|-36.17282|-0.13194 +2016-07-01|-34.0|45.0|-36.44904|-0.12409 +2016-07-01|-34.0|46.0|-36.70166|-0.11594 +2016-07-01|-34.0|47.0|-36.93|-0.10751 +2016-07-01|-34.0|48.0|-37.13341|-0.09882 +2016-07-01|-34.0|49.0|-37.31134|-0.0899 +2016-07-01|-34.0|50.0|-37.46327|-0.08075 +2016-07-01|-34.0|51.0|-37.58876|-0.07138 +2016-07-01|-34.0|52.0|-37.68742|-0.06182 +2016-07-01|-34.0|53.0|-37.75891|-0.05206 +2016-07-01|-34.0|54.0|-37.80296|-0.04212 +2016-07-01|-34.0|55.0|-37.81935|-0.03201 +2016-07-01|-34.0|56.0|-37.80789|-0.02175 +2016-07-01|-34.0|57.0|-37.76846|-0.01133 +2016-07-01|-34.0|58.0|-37.70097|-7.9E-4 +2016-07-01|-34.0|59.0|-37.60539|0.00987 +2016-07-01|-34.0|60.0|-37.48171|0.02064 +2016-07-01|-34.0|61.0|-37.32996|0.03149 +2016-07-01|-34.0|62.0|-37.15021|0.0424 +2016-07-01|-34.0|63.0|-36.94255|0.05335 +2016-07-01|-34.0|64.0|-36.70708|0.06432 +2016-07-01|-34.0|65.0|-36.44393|0.07527 +2016-07-01|-34.0|66.0|-36.15324|0.08618 +2016-07-01|-34.0|67.0|-35.83518|0.097 +2016-07-01|-34.0|68.0|-35.48988|0.10771 +2016-07-01|-34.0|69.0|-35.11753|0.11826 +2016-07-01|-34.0|70.0|-34.71829|0.12861 +2016-07-01|-34.0|71.0|-34.29235|0.13871 +2016-07-01|-34.0|72.0|-33.83988|0.14852 +2016-07-01|-34.0|73.0|-33.36108|0.15799 +2016-07-01|-34.0|74.0|-32.85619|0.16706 +2016-07-01|-34.0|75.0|-32.32544|0.17568 +2016-07-01|-34.0|76.0|-31.76912|0.1838 +2016-07-01|-34.0|77.0|-31.18756|0.19136 +2016-07-01|-34.0|78.0|-30.58115|0.19831 +2016-07-01|-34.0|79.0|-29.95036|0.20459 +2016-07-01|-34.0|80.0|-29.29575|0.21015 +2016-07-01|-34.0|81.0|-28.61798|0.21494 +2016-07-01|-34.0|82.0|-27.91784|0.21891 +2016-07-01|-34.0|83.0|-27.19624|0.22202 +2016-07-01|-34.0|84.0|-26.45424|0.22423 +2016-07-01|-34.0|85.0|-25.69306|0.22552 +2016-07-01|-34.0|86.0|-24.91407|0.22585 +2016-07-01|-34.0|87.0|-24.11882|0.22522 +2016-07-01|-34.0|88.0|-23.30901|0.22361 +2016-07-01|-34.0|89.0|-22.48649|0.22103 +2016-07-01|-34.0|90.0|-21.65327|0.2175 +2016-07-01|-34.0|91.0|-20.81148|0.21305 +2016-07-01|-34.0|92.0|-19.96335|0.2077 +2016-07-01|-34.0|93.0|-19.11119|0.2015 +2016-07-01|-34.0|94.0|-18.25737|0.19452 +2016-07-01|-34.0|95.0|-17.40427|0.18681 +2016-07-01|-34.0|96.0|-16.55425|0.17846 +2016-07-01|-34.0|97.0|-15.70963|0.16955 +2016-07-01|-34.0|98.0|-14.87262|0.16016 +2016-07-01|-34.0|99.0|-14.04533|0.15038 +2016-07-01|-34.0|100.0|-13.22971|0.1403 +2016-07-01|-34.0|101.0|-12.42751|0.13003 +2016-07-01|-34.0|102.0|-11.6403|0.11965 +2016-07-01|-34.0|103.0|-10.86942|0.10924 +2016-07-01|-34.0|104.0|-10.11597|0.09891 +2016-07-01|-34.0|105.0|-9.38082|0.08871 +2016-07-01|-34.0|106.0|-8.66458|0.07873 +2016-07-01|-34.0|107.0|-7.96762|0.06903 +2016-07-01|-34.0|108.0|-7.29009|0.05968 +2016-07-01|-34.0|109.0|-6.63191|0.05071 +2016-07-01|-34.0|110.0|-5.9928|0.04217 +2016-07-01|-34.0|111.0|-5.37228|0.0341 +2016-07-01|-34.0|112.0|-4.76973|0.02653 +2016-07-01|-34.0|113.0|-4.18436|0.01946 +2016-07-01|-34.0|114.0|-3.61529|0.01293 +2016-07-01|-34.0|115.0|-3.06154|0.00692 +2016-07-01|-34.0|116.0|-2.52205|0.00145 +2016-07-01|-34.0|117.0|-1.99573|-0.00349 +2016-07-01|-34.0|118.0|-1.48148|-0.00791 +2016-07-01|-34.0|119.0|-0.97816|-0.01182 +2016-07-01|-34.0|120.0|-0.4847|-0.01524 +2016-07-01|-34.0|121.0|-4.0E-5|-0.01818 +2016-07-01|-34.0|122.0|0.47682|-0.02066 +2016-07-01|-34.0|123.0|0.9468|-0.0227 +2016-07-01|-34.0|124.0|1.41077|-0.02434 +2016-07-01|-34.0|125.0|1.86947|-0.02558 +2016-07-01|-34.0|126.0|2.3236|-0.02646 +2016-07-01|-34.0|127.0|2.77371|-0.027 +2016-07-01|-34.0|128.0|3.22028|-0.02722 +2016-07-01|-34.0|129.0|3.6637|-0.02714 +2016-07-01|-34.0|130.0|4.10424|-0.0268 +2016-07-01|-34.0|131.0|4.54211|-0.02621 +2016-07-01|-34.0|132.0|4.9774|-0.02539 +2016-07-01|-34.0|133.0|5.41014|-0.02437 +2016-07-01|-34.0|134.0|5.84031|-0.02316 +2016-07-01|-34.0|135.0|6.26779|-0.02179 +2016-07-01|-34.0|136.0|6.69243|-0.02027 +2016-07-01|-34.0|137.0|7.11404|-0.01861 +2016-07-01|-34.0|138.0|7.53237|-0.01684 +2016-07-01|-34.0|139.0|7.94717|-0.01497 +2016-07-01|-34.0|140.0|8.35816|-0.013 +2016-07-01|-34.0|141.0|8.76503|-0.01096 +2016-07-01|-34.0|142.0|9.16747|-0.00886 +2016-07-01|-34.0|143.0|9.56518|-0.0067 +2016-07-01|-34.0|144.0|9.95783|-0.0045 +2016-07-01|-34.0|145.0|10.34511|-0.00226 +2016-07-01|-34.0|146.0|10.72672|-0.0 +2016-07-01|-34.0|147.0|11.10233|0.00228 +2016-07-01|-34.0|148.0|11.47165|0.00457 +2016-07-01|-34.0|149.0|11.83438|0.00686 +2016-07-01|-34.0|150.0|12.1902|0.00915 +2016-07-01|-34.0|151.0|12.53884|0.01143 +2016-07-01|-34.0|152.0|12.87999|0.01369 +2016-07-01|-34.0|153.0|13.21337|0.01593 +2016-07-01|-34.0|154.0|13.53869|0.01814 +2016-07-01|-34.0|155.0|13.85566|0.02031 +2016-07-01|-34.0|156.0|14.164|0.02244 +2016-07-01|-34.0|157.0|14.46345|0.02453 +2016-07-01|-34.0|158.0|14.75373|0.02657 +2016-07-01|-34.0|159.0|15.03461|0.02855 +2016-07-01|-34.0|160.0|15.30584|0.03048 +2016-07-01|-34.0|161.0|15.56722|0.03234 +2016-07-01|-34.0|162.0|15.81854|0.03413 +2016-07-01|-34.0|163.0|16.05965|0.03585 +2016-07-01|-34.0|164.0|16.29042|0.03749 +2016-07-01|-34.0|165.0|16.51073|0.03906 +2016-07-01|-34.0|166.0|16.72055|0.04054 +2016-07-01|-34.0|167.0|16.91984|0.04194 +2016-07-01|-34.0|168.0|17.10864|0.04324 +2016-07-01|-34.0|169.0|17.28702|0.04446 +2016-07-01|-34.0|170.0|17.45509|0.04558 +2016-07-01|-34.0|171.0|17.61303|0.0466 +2016-07-01|-34.0|172.0|17.76104|0.04753 +2016-07-01|-34.0|173.0|17.89938|0.04835 +2016-07-01|-34.0|174.0|18.02834|0.04907 +2016-07-01|-34.0|175.0|18.14827|0.04968 +2016-07-01|-34.0|176.0|18.25952|0.05019 +2016-07-01|-34.0|177.0|18.36251|0.0506 +2016-07-01|-34.0|178.0|18.45764|0.05089 +2016-07-01|-34.0|179.0|18.54535|0.05108 +2016-07-01|-34.0|-1.0|-23.44744|0.07176 +2016-07-01|-34.0|-2.0|-23.56794|0.07085 +2016-07-01|-34.0|-3.0|-23.69148|0.06891 +2016-07-01|-34.0|-4.0|-23.81545|0.06605 +2016-07-01|-34.0|-5.0|-23.93745|0.06239 +2016-07-01|-34.0|-6.0|-24.05528|0.05804 +2016-07-01|-34.0|-7.0|-24.16698|0.05314 +2016-07-01|-34.0|-8.0|-24.27082|0.04781 +2016-07-01|-34.0|-9.0|-24.36533|0.04216 +2016-07-01|-34.0|-10.0|-24.4493|0.03631 +2016-07-01|-34.0|-11.0|-24.52171|0.03035 +2016-07-01|-34.0|-12.0|-24.58181|0.02438 +2016-07-01|-34.0|-13.0|-24.62903|0.01848 +2016-07-01|-34.0|-14.0|-24.66297|0.0127 +2016-07-01|-34.0|-15.0|-24.68339|0.00711 +2016-07-01|-34.0|-16.0|-24.69021|0.00175 +2016-07-01|-34.0|-17.0|-24.68341|-0.00335 +2016-07-01|-34.0|-18.0|-24.66308|-0.00818 +2016-07-01|-34.0|-19.0|-24.62934|-0.01273 +2016-07-01|-34.0|-20.0|-24.58234|-0.017 +2016-07-01|-34.0|-21.0|-24.52224|-0.021 +2016-07-01|-34.0|-22.0|-24.44918|-0.02475 +2016-07-01|-34.0|-23.0|-24.36326|-0.02828 +2016-07-01|-34.0|-24.0|-24.26451|-0.03161 +2016-07-01|-34.0|-25.0|-24.1529|-0.03478 +2016-07-01|-34.0|-26.0|-24.02833|-0.03784 +2016-07-01|-34.0|-27.0|-23.89059|-0.04081 +2016-07-01|-34.0|-28.0|-23.73939|-0.04374 +2016-07-01|-34.0|-29.0|-23.57433|-0.04667 +2016-07-01|-34.0|-30.0|-23.39491|-0.04963 +2016-07-01|-34.0|-31.0|-23.20054|-0.05267 +2016-07-01|-34.0|-32.0|-22.99054|-0.0558 +2016-07-01|-34.0|-33.0|-22.76412|-0.05907 +2016-07-01|-34.0|-34.0|-22.52045|-0.06248 +2016-07-01|-34.0|-35.0|-22.25862|-0.06607 +2016-07-01|-34.0|-36.0|-21.97766|-0.06984 +2016-07-01|-34.0|-37.0|-21.67659|-0.0738 +2016-07-01|-34.0|-38.0|-21.35437|-0.07796 +2016-07-01|-34.0|-39.0|-21.01|-0.0823 +2016-07-01|-34.0|-40.0|-20.64245|-0.08682 +2016-07-01|-34.0|-41.0|-20.25076|-0.0915 +2016-07-01|-34.0|-42.0|-19.83399|-0.09633 +2016-07-01|-34.0|-43.0|-19.39128|-0.10128 +2016-07-01|-34.0|-44.0|-18.92184|-0.10631 +2016-07-01|-34.0|-45.0|-18.42498|-0.11141 +2016-07-01|-34.0|-46.0|-17.90013|-0.11652 +2016-07-01|-34.0|-47.0|-17.34686|-0.12162 +2016-07-01|-34.0|-48.0|-16.76485|-0.12666 +2016-07-01|-34.0|-49.0|-16.15398|-0.1316 +2016-07-01|-34.0|-50.0|-15.51427|-0.1364 +2016-07-01|-34.0|-51.0|-14.84592|-0.14102 +2016-07-01|-34.0|-52.0|-14.14933|-0.14542 +2016-07-01|-34.0|-53.0|-13.42508|-0.14954 +2016-07-01|-34.0|-54.0|-12.67396|-0.15336 +2016-07-01|-34.0|-55.0|-11.89696|-0.15684 +2016-07-01|-34.0|-56.0|-11.09526|-0.15993 +2016-07-01|-34.0|-57.0|-10.27027|-0.16262 +2016-07-01|-34.0|-58.0|-9.42357|-0.16487 +2016-07-01|-34.0|-59.0|-8.55694|-0.16665 +2016-07-01|-34.0|-60.0|-7.67232|-0.16796 +2016-07-01|-34.0|-61.0|-6.77186|-0.16877 +2016-07-01|-34.0|-62.0|-5.85781|-0.16908 +2016-07-01|-34.0|-63.0|-4.93259|-0.16888 +2016-07-01|-34.0|-64.0|-3.99871|-0.16818 +2016-07-01|-34.0|-65.0|-3.0588|-0.16698 +2016-07-01|-34.0|-66.0|-2.11552|-0.16528 +2016-07-01|-34.0|-67.0|-1.1716|-0.16312 +2016-07-01|-34.0|-68.0|-0.22979|-0.16051 +2016-07-01|-34.0|-69.0|0.70718|-0.15748 +2016-07-01|-34.0|-70.0|1.63661|-0.15405 +2016-07-01|-34.0|-71.0|2.55586|-0.15026 +2016-07-01|-34.0|-72.0|3.46234|-0.14614 +2016-07-01|-34.0|-73.0|4.35361|-0.14173 +2016-07-01|-34.0|-74.0|5.22732|-0.13707 +2016-07-01|-34.0|-75.0|6.08125|-0.13219 +2016-07-01|-34.0|-76.0|6.91336|-0.12714 +2016-07-01|-34.0|-77.0|7.72176|-0.12196 +2016-07-01|-34.0|-78.0|8.50472|-0.11667 +2016-07-01|-34.0|-79.0|9.26073|-0.11132 +2016-07-01|-34.0|-80.0|9.98844|-0.10595 +2016-07-01|-34.0|-81.0|10.6867|-0.10059 +2016-07-01|-34.0|-82.0|11.35455|-0.09527 +2016-07-01|-34.0|-83.0|11.99123|-0.09002 +2016-07-01|-34.0|-84.0|12.59615|-0.08487 +2016-07-01|-34.0|-85.0|13.16893|-0.07985 +2016-07-01|-34.0|-86.0|13.70935|-0.07497 +2016-07-01|-34.0|-87.0|14.21738|-0.07026 +2016-07-01|-34.0|-88.0|14.69315|-0.06573 +2016-07-01|-34.0|-89.0|15.13695|-0.06141 +2016-07-01|-34.0|-90.0|15.54923|-0.0573 +2016-07-01|-34.0|-91.0|15.93057|-0.05342 +2016-07-01|-34.0|-92.0|16.2817|-0.04977 +2016-07-01|-34.0|-93.0|16.60346|-0.04637 +2016-07-01|-34.0|-94.0|16.89681|-0.04321 +2016-07-01|-34.0|-95.0|17.16282|-0.0403 +2016-07-01|-34.0|-96.0|17.40264|-0.03764 +2016-07-01|-34.0|-97.0|17.61749|-0.03522 +2016-07-01|-34.0|-98.0|17.8087|-0.03305 +2016-07-01|-34.0|-99.0|17.97762|-0.0311 +2016-07-01|-34.0|-100.0|18.12566|-0.02939 +2016-07-01|-34.0|-101.0|18.25426|-0.02788 +2016-07-01|-34.0|-102.0|18.36487|-0.02658 +2016-07-01|-34.0|-103.0|18.45896|-0.02547 +2016-07-01|-34.0|-104.0|18.53801|-0.02453 +2016-07-01|-34.0|-105.0|18.60346|-0.02374 +2016-07-01|-34.0|-106.0|18.65673|-0.02309 +2016-07-01|-34.0|-107.0|18.69921|-0.02256 +2016-07-01|-34.0|-108.0|18.73224|-0.02212 +2016-07-01|-34.0|-109.0|18.75712|-0.02177 +2016-07-01|-34.0|-110.0|18.77506|-0.02147 +2016-07-01|-34.0|-111.0|18.78722|-0.02121 +2016-07-01|-34.0|-112.0|18.79469|-0.02098 +2016-07-01|-34.0|-113.0|18.79848|-0.02074 +2016-07-01|-34.0|-114.0|18.79949|-0.02049 +2016-07-01|-34.0|-115.0|18.79858|-0.02021 +2016-07-01|-34.0|-116.0|18.7965|-0.01989 +2016-07-01|-34.0|-117.0|18.79393|-0.01951 +2016-07-01|-34.0|-118.0|18.79144|-0.01906 +2016-07-01|-34.0|-119.0|18.78955|-0.01854 +2016-07-01|-34.0|-120.0|18.78869|-0.01793 +2016-07-01|-34.0|-121.0|18.78921|-0.01724 +2016-07-01|-34.0|-122.0|18.7914|-0.01646 +2016-07-01|-34.0|-123.0|18.79547|-0.01558 +2016-07-01|-34.0|-124.0|18.80157|-0.01462 +2016-07-01|-34.0|-125.0|18.80981|-0.01357 +2016-07-01|-34.0|-126.0|18.82022|-0.01244 +2016-07-01|-34.0|-127.0|18.83281|-0.01123 +2016-07-01|-34.0|-128.0|18.84753|-0.00995 +2016-07-01|-34.0|-129.0|18.8643|-0.00861 +2016-07-01|-34.0|-130.0|18.88299|-0.00721 +2016-07-01|-34.0|-131.0|18.90346|-0.00576 +2016-07-01|-34.0|-132.0|18.92555|-0.00428 +2016-07-01|-34.0|-133.0|18.94905|-0.00276 +2016-07-01|-34.0|-134.0|18.97376|-0.00123 +2016-07-01|-34.0|-135.0|18.99946|3.2E-4 +2016-07-01|-34.0|-136.0|19.02592|0.00187 +2016-07-01|-34.0|-137.0|19.05288|0.00343 +2016-07-01|-34.0|-138.0|19.08012|0.00498 +2016-07-01|-34.0|-139.0|19.10738|0.00651 +2016-07-01|-34.0|-140.0|19.13442|0.00804 +2016-07-01|-34.0|-141.0|19.16101|0.00954 +2016-07-01|-34.0|-142.0|19.1869|0.01102 +2016-07-01|-34.0|-143.0|19.21188|0.01248 +2016-07-01|-34.0|-144.0|19.23573|0.01392 +2016-07-01|-34.0|-145.0|19.25826|0.01534 +2016-07-01|-34.0|-146.0|19.27928|0.01674 +2016-07-01|-34.0|-147.0|19.29863|0.01812 +2016-07-01|-34.0|-148.0|19.31616|0.01948 +2016-07-01|-34.0|-149.0|19.33173|0.02083 +2016-07-01|-34.0|-150.0|19.34524|0.02217 +2016-07-01|-34.0|-151.0|19.3566|0.0235 +2016-07-01|-34.0|-152.0|19.36574|0.02482 +2016-07-01|-34.0|-153.0|19.37262|0.02613 +2016-07-01|-34.0|-154.0|19.37721|0.02744 +2016-07-01|-34.0|-155.0|19.37948|0.02875 +2016-07-01|-34.0|-156.0|19.37945|0.03006 +2016-07-01|-34.0|-157.0|19.37713|0.03136 +2016-07-01|-34.0|-158.0|19.37255|0.03266 +2016-07-01|-34.0|-159.0|19.36573|0.03395 +2016-07-01|-34.0|-160.0|19.35671|0.03523 +2016-07-01|-34.0|-161.0|19.34553|0.0365 +2016-07-01|-34.0|-162.0|19.3322|0.03776 +2016-07-01|-34.0|-163.0|19.31676|0.03899 +2016-07-01|-34.0|-164.0|19.29919|0.0402 +2016-07-01|-34.0|-165.0|19.27949|0.04137 +2016-07-01|-34.0|-166.0|19.25762|0.04251 +2016-07-01|-34.0|-167.0|19.2335|0.0436 +2016-07-01|-34.0|-168.0|19.20705|0.04464 +2016-07-01|-34.0|-169.0|19.17814|0.04563 +2016-07-01|-34.0|-170.0|19.1466|0.04655 +2016-07-01|-34.0|-171.0|19.11224|0.0474 +2016-07-01|-34.0|-172.0|19.07481|0.04818 +2016-07-01|-34.0|-173.0|19.03407|0.04888 +2016-07-01|-34.0|-174.0|18.98968|0.04949 +2016-07-01|-34.0|-175.0|18.94132|0.05001 +2016-07-01|-34.0|-176.0|18.88862|0.05044 +2016-07-01|-34.0|-177.0|18.83117|0.05078 +2016-07-01|-34.0|-178.0|18.76857|0.05101 +2016-07-01|-34.0|-179.0|18.70036|0.05114 +2016-07-01|-35.0|0.0|-23.38289|0.06353 +2016-07-01|-35.0|1.0|-23.31869|0.06116 +2016-07-01|-35.0|2.0|-23.2678|0.05756 +2016-07-01|-35.0|3.0|-23.23291|0.05271 +2016-07-01|-35.0|4.0|-23.21668|0.0466 +2016-07-01|-35.0|5.0|-23.22159|0.03927 +2016-07-01|-35.0|6.0|-23.24996|0.03076 +2016-07-01|-35.0|7.0|-23.30385|0.02115 +2016-07-01|-35.0|8.0|-23.38506|0.01054 +2016-07-01|-35.0|9.0|-23.49505|-9.6E-4 +2016-07-01|-35.0|10.0|-23.63494|-0.01321 +2016-07-01|-35.0|11.0|-23.80548|-0.02605 +2016-07-01|-35.0|12.0|-24.00704|-0.03933 +2016-07-01|-35.0|13.0|-24.23959|-0.05286 +2016-07-01|-35.0|14.0|-24.50273|-0.0665 +2016-07-01|-35.0|15.0|-24.79571|-0.08005 +2016-07-01|-35.0|16.0|-25.11743|-0.09337 +2016-07-01|-35.0|17.0|-25.46651|-0.1063 +2016-07-01|-35.0|18.0|-25.84125|-0.1187 +2016-07-01|-35.0|19.0|-26.23976|-0.13044 +2016-07-01|-35.0|20.0|-26.65995|-0.14142 +2016-07-01|-35.0|21.0|-27.09956|-0.15154 +2016-07-01|-35.0|22.0|-27.55622|-0.16074 +2016-07-01|-35.0|23.0|-28.02752|-0.16895 +2016-07-01|-35.0|24.0|-28.51096|-0.17615 +2016-07-01|-35.0|25.0|-29.00408|-0.1823 +2016-07-01|-35.0|26.0|-29.5044|-0.18741 +2016-07-01|-35.0|27.0|-30.00953|-0.19147 +2016-07-01|-35.0|28.0|-30.5171|-0.19451 +2016-07-01|-35.0|29.0|-31.02486|-0.19656 +2016-07-01|-35.0|30.0|-31.53062|-0.19766 +2016-07-01|-35.0|31.0|-32.03232|-0.19784 +2016-07-01|-35.0|32.0|-32.528|-0.19715 +2016-07-01|-35.0|33.0|-33.01579|-0.19565 +2016-07-01|-35.0|34.0|-33.49395|-0.19338 +2016-07-01|-35.0|35.0|-33.96084|-0.1904 +2016-07-01|-35.0|36.0|-34.41493|-0.18676 +2016-07-01|-35.0|37.0|-34.85479|-0.18251 +2016-07-01|-35.0|38.0|-35.27909|-0.1777 +2016-07-01|-35.0|39.0|-35.68658|-0.17237 +2016-07-01|-35.0|40.0|-36.07611|-0.16656 +2016-07-01|-35.0|41.0|-36.44661|-0.16032 +2016-07-01|-35.0|42.0|-36.79708|-0.15368 +2016-07-01|-35.0|43.0|-37.12661|-0.14667 +2016-07-01|-35.0|44.0|-37.43433|-0.13931 +2016-07-01|-35.0|45.0|-37.71947|-0.13165 +2016-07-01|-35.0|46.0|-37.98128|-0.12368 +2016-07-01|-35.0|47.0|-38.21912|-0.11545 +2016-07-01|-35.0|48.0|-38.43236|-0.10695 +2016-07-01|-35.0|49.0|-38.62045|-0.09821 +2016-07-01|-35.0|50.0|-38.78289|-0.08924 +2016-07-01|-35.0|51.0|-38.91923|-0.08005 +2016-07-01|-35.0|52.0|-39.02906|-0.07065 +2016-07-01|-35.0|53.0|-39.11203|-0.06104 +2016-07-01|-35.0|54.0|-39.16785|-0.05125 +2016-07-01|-35.0|55.0|-39.19624|-0.04127 +2016-07-01|-35.0|56.0|-39.197|-0.03112 +2016-07-01|-35.0|57.0|-39.16994|-0.02081 +2016-07-01|-35.0|58.0|-39.11493|-0.01034 +2016-07-01|-35.0|59.0|-39.03188|2.7E-4 +2016-07-01|-35.0|60.0|-38.92072|0.011 +2016-07-01|-35.0|61.0|-38.78141|0.02183 +2016-07-01|-35.0|62.0|-38.61395|0.03276 +2016-07-01|-35.0|63.0|-38.41836|0.04375 +2016-07-01|-35.0|64.0|-38.19467|0.05479 +2016-07-01|-35.0|65.0|-37.94294|0.06584 +2016-07-01|-35.0|66.0|-37.66324|0.07688 +2016-07-01|-35.0|67.0|-37.35564|0.08788 +2016-07-01|-35.0|68.0|-37.02023|0.09879 +2016-07-01|-35.0|69.0|-36.65711|0.10957 +2016-07-01|-35.0|70.0|-36.26637|0.1202 +2016-07-01|-35.0|71.0|-35.84813|0.13061 +2016-07-01|-35.0|72.0|-35.40251|0.14077 +2016-07-01|-35.0|73.0|-34.92965|0.15061 +2016-07-01|-35.0|74.0|-34.4297|0.1601 +2016-07-01|-35.0|75.0|-33.90285|0.16917 +2016-07-01|-35.0|76.0|-33.34932|0.17778 +2016-07-01|-35.0|77.0|-32.76939|0.18585 +2016-07-01|-35.0|78.0|-32.16339|0.19334 +2016-07-01|-35.0|79.0|-31.53173|0.20019 +2016-07-01|-35.0|80.0|-30.87491|0.20634 +2016-07-01|-35.0|81.0|-30.19354|0.21174 +2016-07-01|-35.0|82.0|-29.48834|0.21633 +2016-07-01|-35.0|83.0|-28.76016|0.22008 +2016-07-01|-35.0|84.0|-28.01001|0.22294 +2016-07-01|-35.0|85.0|-27.23905|0.22488 +2016-07-01|-35.0|86.0|-26.44859|0.22586 +2016-07-01|-35.0|87.0|-25.64012|0.22587 +2016-07-01|-35.0|88.0|-24.81529|0.22489 +2016-07-01|-35.0|89.0|-23.97593|0.22292 +2016-07-01|-35.0|90.0|-23.12398|0.21998 +2016-07-01|-35.0|91.0|-22.26156|0.21609 +2016-07-01|-35.0|92.0|-21.39088|0.21127 +2016-07-01|-35.0|93.0|-20.51426|0.20558 +2016-07-01|-35.0|94.0|-19.63405|0.19905 +2016-07-01|-35.0|95.0|-18.75268|0.19177 +2016-07-01|-35.0|96.0|-17.87255|0.1838 +2016-07-01|-35.0|97.0|-16.99601|0.17522 +2016-07-01|-35.0|98.0|-16.12537|0.16612 +2016-07-01|-35.0|99.0|-15.2628|0.15659 +2016-07-01|-35.0|100.0|-14.41036|0.14673 +2016-07-01|-35.0|101.0|-13.56992|0.13662 +2016-07-01|-35.0|102.0|-12.74317|0.12637 +2016-07-01|-35.0|103.0|-11.93159|0.11606 +2016-07-01|-35.0|104.0|-11.1364|0.10579 +2016-07-01|-35.0|105.0|-10.35864|0.09563 +2016-07-01|-35.0|106.0|-9.59905|0.08566 +2016-07-01|-35.0|107.0|-8.85817|0.07594 +2016-07-01|-35.0|108.0|-8.13629|0.06655 +2016-07-01|-35.0|109.0|-7.43349|0.05753 +2016-07-01|-35.0|110.0|-6.74962|0.04893 +2016-07-01|-35.0|111.0|-6.08436|0.04079 +2016-07-01|-35.0|112.0|-5.43721|0.03313 +2016-07-01|-35.0|113.0|-4.80753|0.02598 +2016-07-01|-35.0|114.0|-4.19455|0.01934 +2016-07-01|-35.0|115.0|-3.59739|0.01324 +2016-07-01|-35.0|116.0|-3.01512|0.00766 +2016-07-01|-35.0|117.0|-2.44674|0.00262 +2016-07-01|-35.0|118.0|-1.89122|-0.00191 +2016-07-01|-35.0|119.0|-1.34752|-0.00593 +2016-07-01|-35.0|120.0|-0.81463|-0.00945 +2016-07-01|-35.0|121.0|-0.29154|-0.01249 +2016-07-01|-35.0|122.0|0.22269|-0.01508 +2016-07-01|-35.0|123.0|0.72896|-0.01724 +2016-07-01|-35.0|124.0|1.22809|-0.01898 +2016-07-01|-35.0|125.0|1.72081|-0.02034 +2016-07-01|-35.0|126.0|2.2078|-0.02133 +2016-07-01|-35.0|127.0|2.68961|-0.02198 +2016-07-01|-35.0|128.0|3.16673|-0.02231 +2016-07-01|-35.0|129.0|3.63955|-0.02235 +2016-07-01|-35.0|130.0|4.10836|-0.02213 +2016-07-01|-35.0|131.0|4.57338|-0.02165 +2016-07-01|-35.0|132.0|5.03474|-0.02096 +2016-07-01|-35.0|133.0|5.49251|-0.02006 +2016-07-01|-35.0|134.0|5.94667|-0.01897 +2016-07-01|-35.0|135.0|6.39715|-0.01772 +2016-07-01|-35.0|136.0|6.84384|-0.01632 +2016-07-01|-35.0|137.0|7.28658|-0.01478 +2016-07-01|-35.0|138.0|7.72516|-0.01313 +2016-07-01|-35.0|139.0|8.15936|-0.01138 +2016-07-01|-35.0|140.0|8.58892|-0.00954 +2016-07-01|-35.0|141.0|9.01357|-0.00761 +2016-07-01|-35.0|142.0|9.43303|-0.00563 +2016-07-01|-35.0|143.0|9.84703|-0.00358 +2016-07-01|-35.0|144.0|10.25525|-0.00149 +2016-07-01|-35.0|145.0|10.65742|6.4E-4 +2016-07-01|-35.0|146.0|11.05323|0.0028 +2016-07-01|-35.0|147.0|11.44239|0.00498 +2016-07-01|-35.0|148.0|11.82462|0.00717 +2016-07-01|-35.0|149.0|12.19962|0.00937 +2016-07-01|-35.0|150.0|12.56711|0.01157 +2016-07-01|-35.0|151.0|12.92681|0.01377 +2016-07-01|-35.0|152.0|13.27843|0.01595 +2016-07-01|-35.0|153.0|13.6217|0.01811 +2016-07-01|-35.0|154.0|13.95634|0.02025 +2016-07-01|-35.0|155.0|14.28209|0.02235 +2016-07-01|-35.0|156.0|14.59868|0.02442 +2016-07-01|-35.0|157.0|14.90585|0.02645 +2016-07-01|-35.0|158.0|15.20337|0.02843 +2016-07-01|-35.0|159.0|15.49101|0.03037 +2016-07-01|-35.0|160.0|15.76855|0.03224 +2016-07-01|-35.0|161.0|16.0358|0.03405 +2016-07-01|-35.0|162.0|16.29261|0.0358 +2016-07-01|-35.0|163.0|16.53881|0.03748 +2016-07-01|-35.0|164.0|16.77432|0.03909 +2016-07-01|-35.0|165.0|16.99907|0.04062 +2016-07-01|-35.0|166.0|17.213|0.04207 +2016-07-01|-35.0|167.0|17.41614|0.04343 +2016-07-01|-35.0|168.0|17.60854|0.04471 +2016-07-01|-35.0|169.0|17.79029|0.0459 +2016-07-01|-35.0|170.0|17.96152|0.047 +2016-07-01|-35.0|171.0|18.12243|0.048 +2016-07-01|-35.0|172.0|18.27324|0.0489 +2016-07-01|-35.0|173.0|18.41421|0.0497 +2016-07-01|-35.0|174.0|18.54566|0.0504 +2016-07-01|-35.0|175.0|18.66792|0.051 +2016-07-01|-35.0|176.0|18.78137|0.0515 +2016-07-01|-35.0|177.0|18.88641|0.05189 +2016-07-01|-35.0|178.0|18.98347|0.05218 +2016-07-01|-35.0|179.0|19.07297|0.05236 +2016-07-01|-35.0|-1.0|-23.45765|0.06473 +2016-07-01|-35.0|-2.0|-23.54027|0.06481 +2016-07-01|-35.0|-3.0|-23.6281|0.06387 +2016-07-01|-35.0|-4.0|-23.71863|0.06199 +2016-07-01|-35.0|-5.0|-23.80949|0.05928 +2016-07-01|-35.0|-6.0|-23.89848|0.05586 +2016-07-01|-35.0|-7.0|-23.98364|0.05185 +2016-07-01|-35.0|-8.0|-24.06318|0.04734 +2016-07-01|-35.0|-9.0|-24.13557|0.04247 +2016-07-01|-35.0|-10.0|-24.19949|0.03733 +2016-07-01|-35.0|-11.0|-24.25384|0.03202 +2016-07-01|-35.0|-12.0|-24.29772|0.02662 +2016-07-01|-35.0|-13.0|-24.33044|0.02123 +2016-07-01|-35.0|-14.0|-24.35147|0.0159 +2016-07-01|-35.0|-15.0|-24.36042|0.01069 +2016-07-01|-35.0|-16.0|-24.35706|0.00564 +2016-07-01|-35.0|-17.0|-24.34123|7.8E-4 +2016-07-01|-35.0|-18.0|-24.31286|-0.00385 +2016-07-01|-35.0|-19.0|-24.27194|-0.00826 +2016-07-01|-35.0|-20.0|-24.21849|-0.01244 +2016-07-01|-35.0|-21.0|-24.15253|-0.0164 +2016-07-01|-35.0|-22.0|-24.07408|-0.02015 +2016-07-01|-35.0|-23.0|-23.98311|-0.02371 +2016-07-01|-35.0|-24.0|-23.87956|-0.02711 +2016-07-01|-35.0|-25.0|-23.7633|-0.03038 +2016-07-01|-35.0|-26.0|-23.63414|-0.03355 +2016-07-01|-35.0|-27.0|-23.49179|-0.03666 +2016-07-01|-35.0|-28.0|-23.33589|-0.03974 +2016-07-01|-35.0|-29.0|-23.16599|-0.04283 +2016-07-01|-35.0|-30.0|-22.98153|-0.04595 +2016-07-01|-35.0|-31.0|-22.7819|-0.04915 +2016-07-01|-35.0|-32.0|-22.56638|-0.05245 +2016-07-01|-35.0|-33.0|-22.33417|-0.05587 +2016-07-01|-35.0|-34.0|-22.08443|-0.05943 +2016-07-01|-35.0|-35.0|-21.81625|-0.06316 +2016-07-01|-35.0|-36.0|-21.52867|-0.06705 +2016-07-01|-35.0|-37.0|-21.22072|-0.07112 +2016-07-01|-35.0|-38.0|-20.8914|-0.07537 +2016-07-01|-35.0|-39.0|-20.53972|-0.07978 +2016-07-01|-35.0|-40.0|-20.16471|-0.08436 +2016-07-01|-35.0|-41.0|-19.76542|-0.08908 +2016-07-01|-35.0|-42.0|-19.34098|-0.09392 +2016-07-01|-35.0|-43.0|-18.89056|-0.09886 +2016-07-01|-35.0|-44.0|-18.41344|-0.10388 +2016-07-01|-35.0|-45.0|-17.90897|-0.10894 +2016-07-01|-35.0|-46.0|-17.37665|-0.114 +2016-07-01|-35.0|-47.0|-16.81608|-0.11903 +2016-07-01|-35.0|-48.0|-16.22703|-0.12399 +2016-07-01|-35.0|-49.0|-15.6094|-0.12885 +2016-07-01|-35.0|-50.0|-14.96328|-0.13355 +2016-07-01|-35.0|-51.0|-14.28893|-0.13806 +2016-07-01|-35.0|-52.0|-13.58677|-0.14234 +2016-07-01|-35.0|-53.0|-12.85745|-0.14634 +2016-07-01|-35.0|-54.0|-12.10179|-0.15004 +2016-07-01|-35.0|-55.0|-11.32081|-0.1534 +2016-07-01|-35.0|-56.0|-10.51573|-0.15638 +2016-07-01|-35.0|-57.0|-9.68796|-0.15896 +2016-07-01|-35.0|-58.0|-8.8391|-0.1611 +2016-07-01|-35.0|-59.0|-7.97093|-0.16279 +2016-07-01|-35.0|-60.0|-7.08541|-0.16401 +2016-07-01|-35.0|-61.0|-6.18464|-0.16475 +2016-07-01|-35.0|-62.0|-5.27089|-0.16499 +2016-07-01|-35.0|-63.0|-4.34653|-0.16475 +2016-07-01|-35.0|-64.0|-3.41403|-0.16401 +2016-07-01|-35.0|-65.0|-2.47598|-0.16279 +2016-07-01|-35.0|-66.0|-1.53501|-0.16109 +2016-07-01|-35.0|-67.0|-0.59377|-0.15895 +2016-07-01|-35.0|-68.0|0.34505|-0.15637 +2016-07-01|-35.0|-69.0|1.27878|-0.15338 +2016-07-01|-35.0|-70.0|2.20479|-0.15001 +2016-07-01|-35.0|-71.0|3.12049|-0.14629 +2016-07-01|-35.0|-72.0|4.02339|-0.14226 +2016-07-01|-35.0|-73.0|4.91109|-0.13795 +2016-07-01|-35.0|-74.0|5.78131|-0.13339 +2016-07-01|-35.0|-75.0|6.63191|-0.12863 +2016-07-01|-35.0|-76.0|7.46088|-0.12371 +2016-07-01|-35.0|-77.0|8.2664|-0.11865 +2016-07-01|-35.0|-78.0|9.0468|-0.1135 +2016-07-01|-35.0|-79.0|9.80057|-0.10829 +2016-07-01|-35.0|-80.0|10.52643|-0.10306 +2016-07-01|-35.0|-81.0|11.22324|-0.09784 +2016-07-01|-35.0|-82.0|11.89006|-0.09266 +2016-07-01|-35.0|-83.0|12.52614|-0.08755 +2016-07-01|-35.0|-84.0|13.1309|-0.08253 +2016-07-01|-35.0|-85.0|13.70396|-0.07764 +2016-07-01|-35.0|-86.0|14.2451|-0.07289 +2016-07-01|-35.0|-87.0|14.75425|-0.0683 +2016-07-01|-35.0|-88.0|15.23155|-0.06389 +2016-07-01|-35.0|-89.0|15.67724|-0.05967 +2016-07-01|-35.0|-90.0|16.09176|-0.05567 +2016-07-01|-35.0|-91.0|16.47564|-0.05188 +2016-07-01|-35.0|-92.0|16.82957|-0.04832 +2016-07-01|-35.0|-93.0|17.15436|-0.04499 +2016-07-01|-35.0|-94.0|17.45092|-0.0419 +2016-07-01|-35.0|-95.0|17.72027|-0.03904 +2016-07-01|-35.0|-96.0|17.9635|-0.03643 +2016-07-01|-35.0|-97.0|18.18182|-0.03405 +2016-07-01|-35.0|-98.0|18.37646|-0.03191 +2016-07-01|-35.0|-99.0|18.54875|-0.02999 +2016-07-01|-35.0|-100.0|18.70004|-0.02828 +2016-07-01|-35.0|-101.0|18.83173|-0.02678 +2016-07-01|-35.0|-102.0|18.94522|-0.02548 +2016-07-01|-35.0|-103.0|19.04195|-0.02435 +2016-07-01|-35.0|-104.0|19.12334|-0.02339 +2016-07-01|-35.0|-105.0|19.1908|-0.02258 +2016-07-01|-35.0|-106.0|19.24573|-0.0219 +2016-07-01|-35.0|-107.0|19.2895|-0.02134 +2016-07-01|-35.0|-108.0|19.32342|-0.02086 +2016-07-01|-35.0|-109.0|19.34876|-0.02047 +2016-07-01|-35.0|-110.0|19.36675|-0.02012 +2016-07-01|-35.0|-111.0|19.37853|-0.01982 +2016-07-01|-35.0|-112.0|19.38519|-0.01954 +2016-07-01|-35.0|-113.0|19.38774|-0.01925 +2016-07-01|-35.0|-114.0|19.38713|-0.01896 +2016-07-01|-35.0|-115.0|19.38419|-0.01863 +2016-07-01|-35.0|-116.0|19.37973|-0.01826 +2016-07-01|-35.0|-117.0|19.37442|-0.01784 +2016-07-01|-35.0|-118.0|19.36889|-0.01735 +2016-07-01|-35.0|-119.0|19.36368|-0.01679 +2016-07-01|-35.0|-120.0|19.35926|-0.01616 +2016-07-01|-35.0|-121.0|19.35601|-0.01543 +2016-07-01|-35.0|-122.0|19.35427|-0.01462 +2016-07-01|-35.0|-123.0|19.35427|-0.01373 +2016-07-01|-35.0|-124.0|19.35623|-0.01274 +2016-07-01|-35.0|-125.0|19.36028|-0.01168 +2016-07-01|-35.0|-126.0|19.3665|-0.01053 +2016-07-01|-35.0|-127.0|19.37492|-0.00931 +2016-07-01|-35.0|-128.0|19.38555|-0.00802 +2016-07-01|-35.0|-129.0|19.39832|-0.00666 +2016-07-01|-35.0|-130.0|19.41315|-0.00526 +2016-07-01|-35.0|-131.0|19.42994|-0.00381 +2016-07-01|-35.0|-132.0|19.44853|-0.00232 +2016-07-01|-35.0|-133.0|19.46875|-8.0E-4 +2016-07-01|-35.0|-134.0|19.49042|7.4E-4 +2016-07-01|-35.0|-135.0|19.51334|0.00229 +2016-07-01|-35.0|-136.0|19.53729|0.00385 +2016-07-01|-35.0|-137.0|19.56203|0.00541 +2016-07-01|-35.0|-138.0|19.58733|0.00696 +2016-07-01|-35.0|-139.0|19.61296|0.0085 +2016-07-01|-35.0|-140.0|19.63868|0.01003 +2016-07-01|-35.0|-141.0|19.66423|0.01153 +2016-07-01|-35.0|-142.0|19.6894|0.01302 +2016-07-01|-35.0|-143.0|19.71395|0.01448 +2016-07-01|-35.0|-144.0|19.73765|0.01592 +2016-07-01|-35.0|-145.0|19.76031|0.01734 +2016-07-01|-35.0|-146.0|19.78172|0.01874 +2016-07-01|-35.0|-147.0|19.80171|0.02012 +2016-07-01|-35.0|-148.0|19.8201|0.02148 +2016-07-01|-35.0|-149.0|19.83676|0.02282 +2016-07-01|-35.0|-150.0|19.85154|0.02415 +2016-07-01|-35.0|-151.0|19.86435|0.02547 +2016-07-01|-35.0|-152.0|19.87509|0.02678 +2016-07-01|-35.0|-153.0|19.88369|0.02808 +2016-07-01|-35.0|-154.0|19.89009|0.02937 +2016-07-01|-35.0|-155.0|19.89426|0.03065 +2016-07-01|-35.0|-156.0|19.89617|0.03194 +2016-07-01|-35.0|-157.0|19.89581|0.03321 +2016-07-01|-35.0|-158.0|19.89319|0.03448 +2016-07-01|-35.0|-159.0|19.88831|0.03574 +2016-07-01|-35.0|-160.0|19.88117|0.03699 +2016-07-01|-35.0|-161.0|19.8718|0.03822 +2016-07-01|-35.0|-162.0|19.86019|0.03944 +2016-07-01|-35.0|-163.0|19.84634|0.04064 +2016-07-01|-35.0|-164.0|19.83023|0.04181 +2016-07-01|-35.0|-165.0|19.81184|0.04295 +2016-07-01|-35.0|-166.0|19.79111|0.04405 +2016-07-01|-35.0|-167.0|19.76795|0.0451 +2016-07-01|-35.0|-168.0|19.74228|0.04611 +2016-07-01|-35.0|-169.0|19.71394|0.04707 +2016-07-01|-35.0|-170.0|19.68278|0.04796 +2016-07-01|-35.0|-171.0|19.64859|0.04879 +2016-07-01|-35.0|-172.0|19.61114|0.04954 +2016-07-01|-35.0|-173.0|19.57016|0.05022 +2016-07-01|-35.0|-174.0|19.52534|0.05081 +2016-07-01|-35.0|-175.0|19.47636|0.05132 +2016-07-01|-35.0|-176.0|19.42284|0.05174 +2016-07-01|-35.0|-177.0|19.3644|0.05206 +2016-07-01|-35.0|-178.0|19.30063|0.05229 +2016-07-01|-35.0|-179.0|19.2311|0.05242 +2016-07-01|-36.0|0.0|-23.38611|0.05578 +2016-07-01|-36.0|1.0|-23.3635|0.05252 +2016-07-01|-36.0|2.0|-23.35581|0.04808 +2016-07-01|-36.0|3.0|-23.36551|0.04246 +2016-07-01|-36.0|4.0|-23.39499|0.03567 +2016-07-01|-36.0|5.0|-23.44648|0.02774 +2016-07-01|-36.0|6.0|-23.52198|0.01874 +2016-07-01|-36.0|7.0|-23.62329|0.00875 +2016-07-01|-36.0|8.0|-23.75187|-0.00214 +2016-07-01|-36.0|9.0|-23.9089|-0.0138 +2016-07-01|-36.0|10.0|-24.09522|-0.0261 +2016-07-01|-36.0|11.0|-24.3113|-0.03889 +2016-07-01|-36.0|12.0|-24.55726|-0.05202 +2016-07-01|-36.0|13.0|-24.83284|-0.06532 +2016-07-01|-36.0|14.0|-25.13747|-0.07863 +2016-07-01|-36.0|15.0|-25.47021|-0.09181 +2016-07-01|-36.0|16.0|-25.82986|-0.10469 +2016-07-01|-36.0|17.0|-26.21492|-0.11715 +2016-07-01|-36.0|18.0|-26.62364|-0.12904 +2016-07-01|-36.0|19.0|-27.05411|-0.14027 +2016-07-01|-36.0|20.0|-27.50421|-0.15074 +2016-07-01|-36.0|21.0|-27.97173|-0.16036 +2016-07-01|-36.0|22.0|-28.45436|-0.16907 +2016-07-01|-36.0|23.0|-28.94974|-0.17683 +2016-07-01|-36.0|24.0|-29.45547|-0.1836 +2016-07-01|-36.0|25.0|-29.96919|-0.18937 +2016-07-01|-36.0|26.0|-30.48854|-0.19414 +2016-07-01|-36.0|27.0|-31.01125|-0.19791 +2016-07-01|-36.0|28.0|-31.53508|-0.20071 +2016-07-01|-36.0|29.0|-32.05791|-0.20257 +2016-07-01|-36.0|30.0|-32.57768|-0.20351 +2016-07-01|-36.0|31.0|-33.09247|-0.20359 +2016-07-01|-36.0|32.0|-33.60043|-0.20284 +2016-07-01|-36.0|33.0|-34.09982|-0.20132 +2016-07-01|-36.0|34.0|-34.58904|-0.19907 +2016-07-01|-36.0|35.0|-35.06654|-0.19614 +2016-07-01|-36.0|36.0|-35.5309|-0.19259 +2016-07-01|-36.0|37.0|-35.9808|-0.18845 +2016-07-01|-36.0|38.0|-36.41498|-0.18377 +2016-07-01|-36.0|39.0|-36.83231|-0.1786 +2016-07-01|-36.0|40.0|-37.2317|-0.17296 +2016-07-01|-36.0|41.0|-37.61214|-0.16691 +2016-07-01|-36.0|42.0|-37.97271|-0.16047 +2016-07-01|-36.0|43.0|-38.31255|-0.15366 +2016-07-01|-36.0|44.0|-38.63084|-0.14652 +2016-07-01|-36.0|45.0|-38.92683|-0.13907 +2016-07-01|-36.0|46.0|-39.19984|-0.13133 +2016-07-01|-36.0|47.0|-39.44922|-0.12332 +2016-07-01|-36.0|48.0|-39.67439|-0.11504 +2016-07-01|-36.0|49.0|-39.87479|-0.10652 +2016-07-01|-36.0|50.0|-40.04992|-0.09776 +2016-07-01|-36.0|51.0|-40.19934|-0.08877 +2016-07-01|-36.0|52.0|-40.32262|-0.07956 +2016-07-01|-36.0|53.0|-40.4194|-0.07015 +2016-07-01|-36.0|54.0|-40.48935|-0.06053 +2016-07-01|-36.0|55.0|-40.53217|-0.05072 +2016-07-01|-36.0|56.0|-40.54762|-0.04072 +2016-07-01|-36.0|57.0|-40.53546|-0.03054 +2016-07-01|-36.0|58.0|-40.49553|-0.02019 +2016-07-01|-36.0|59.0|-40.42767|-0.00968 +2016-07-01|-36.0|60.0|-40.33175|9.7E-4 +2016-07-01|-36.0|61.0|-40.20767|0.01175 +2016-07-01|-36.0|62.0|-40.05538|0.02265 +2016-07-01|-36.0|63.0|-39.8748|0.03364 +2016-07-01|-36.0|64.0|-39.66592|0.0447 +2016-07-01|-36.0|65.0|-39.4287|0.05581 +2016-07-01|-36.0|66.0|-39.16315|0.06693 +2016-07-01|-36.0|67.0|-38.86927|0.07804 +2016-07-01|-36.0|68.0|-38.54707|0.0891 +2016-07-01|-36.0|69.0|-38.19658|0.10008 +2016-07-01|-36.0|70.0|-37.81781|0.11093 +2016-07-01|-36.0|71.0|-37.41081|0.1216 +2016-07-01|-36.0|72.0|-36.97563|0.13206 +2016-07-01|-36.0|73.0|-36.51234|0.14225 +2016-07-01|-36.0|74.0|-36.02101|0.15211 +2016-07-01|-36.0|75.0|-35.50177|0.1616 +2016-07-01|-36.0|76.0|-34.95477|0.17066 +2016-07-01|-36.0|77.0|-34.38021|0.17922 +2016-07-01|-36.0|78.0|-33.77836|0.18724 +2016-07-01|-36.0|79.0|-33.14956|0.19464 +2016-07-01|-36.0|80.0|-32.49423|0.20138 +2016-07-01|-36.0|81.0|-31.81289|0.2074 +2016-07-01|-36.0|82.0|-31.10621|0.21264 +2016-07-01|-36.0|83.0|-30.37496|0.21705 +2016-07-01|-36.0|84.0|-29.62006|0.22059 +2016-07-01|-36.0|85.0|-28.84259|0.22321 +2016-07-01|-36.0|86.0|-28.04379|0.22489 +2016-07-01|-36.0|87.0|-27.22509|0.22559 +2016-07-01|-36.0|88.0|-26.38806|0.2253 +2016-07-01|-36.0|89.0|-25.53446|0.22402 +2016-07-01|-36.0|90.0|-24.66619|0.22174 +2016-07-01|-36.0|91.0|-23.78531|0.21849 +2016-07-01|-36.0|92.0|-22.89402|0.21429 +2016-07-01|-36.0|93.0|-21.99459|0.20918 +2016-07-01|-36.0|94.0|-21.0894|0.20321 +2016-07-01|-36.0|95.0|-20.18087|0.19644 +2016-07-01|-36.0|96.0|-19.27144|0.18893 +2016-07-01|-36.0|97.0|-18.36352|0.18077 +2016-07-01|-36.0|98.0|-17.45948|0.17205 +2016-07-01|-36.0|99.0|-16.56159|0.16285 +2016-07-01|-36.0|100.0|-15.672|0.15327 +2016-07-01|-36.0|101.0|-14.79271|0.1434 +2016-07-01|-36.0|102.0|-13.92554|0.13333 +2016-07-01|-36.0|103.0|-13.07211|0.12318 +2016-07-01|-36.0|104.0|-12.23381|0.11301 +2016-07-01|-36.0|105.0|-11.41183|0.10292 +2016-07-01|-36.0|106.0|-10.60709|0.09299 +2016-07-01|-36.0|107.0|-9.82029|0.08329 +2016-07-01|-36.0|108.0|-9.05189|0.07389 +2016-07-01|-36.0|109.0|-8.30215|0.06483 +2016-07-01|-36.0|110.0|-7.57108|0.05618 +2016-07-01|-36.0|111.0|-6.85852|0.04797 +2016-07-01|-36.0|112.0|-6.16413|0.04023 +2016-07-01|-36.0|113.0|-5.48741|0.03298 +2016-07-01|-36.0|114.0|-4.82773|0.02624 +2016-07-01|-36.0|115.0|-4.18434|0.02003 +2016-07-01|-36.0|116.0|-3.55643|0.01435 +2016-07-01|-36.0|117.0|-2.94311|0.00919 +2016-07-01|-36.0|118.0|-2.34345|0.00454 +2016-07-01|-36.0|119.0|-1.75649|4.1E-4 +2016-07-01|-36.0|120.0|-1.1813|-0.00323 +2016-07-01|-36.0|121.0|-0.61695|-0.0064 +2016-07-01|-36.0|122.0|-0.06254|-0.00911 +2016-07-01|-36.0|123.0|0.48278|-0.01139 +2016-07-01|-36.0|124.0|1.01978|-0.01326 +2016-07-01|-36.0|125.0|1.54919|-0.01473 +2016-07-01|-36.0|126.0|2.07165|-0.01585 +2016-07-01|-36.0|127.0|2.58772|-0.01662 +2016-07-01|-36.0|128.0|3.09787|-0.01708 +2016-07-01|-36.0|129.0|3.6025|-0.01725 +2016-07-01|-36.0|130.0|4.10193|-0.01715 +2016-07-01|-36.0|131.0|4.59637|-0.01681 +2016-07-01|-36.0|132.0|5.08599|-0.01624 +2016-07-01|-36.0|133.0|5.57088|-0.01547 +2016-07-01|-36.0|134.0|6.05106|-0.01451 +2016-07-01|-36.0|135.0|6.52648|-0.01339 +2016-07-01|-36.0|136.0|6.99707|-0.01212 +2016-07-01|-36.0|137.0|7.4627|-0.01071 +2016-07-01|-36.0|138.0|7.9232|-0.00919 +2016-07-01|-36.0|139.0|8.37837|-0.00756 +2016-07-01|-36.0|140.0|8.82799|-0.00585 +2016-07-01|-36.0|141.0|9.27182|-0.00405 +2016-07-01|-36.0|142.0|9.70963|-0.00218 +2016-07-01|-36.0|143.0|10.14113|-2.5E-4 +2016-07-01|-36.0|144.0|10.56607|0.00172 +2016-07-01|-36.0|145.0|10.98417|0.00374 +2016-07-01|-36.0|146.0|11.39516|0.00579 +2016-07-01|-36.0|147.0|11.79877|0.00787 +2016-07-01|-36.0|148.0|12.19472|0.00996 +2016-07-01|-36.0|149.0|12.58275|0.01206 +2016-07-01|-36.0|150.0|12.96258|0.01417 +2016-07-01|-36.0|151.0|13.33394|0.01628 +2016-07-01|-36.0|152.0|13.69658|0.01837 +2016-07-01|-36.0|153.0|14.05022|0.02046 +2016-07-01|-36.0|154.0|14.39462|0.02252 +2016-07-01|-36.0|155.0|14.72953|0.02455 +2016-07-01|-36.0|156.0|15.05469|0.02655 +2016-07-01|-36.0|157.0|15.36989|0.02852 +2016-07-01|-36.0|158.0|15.67489|0.03044 +2016-07-01|-36.0|159.0|15.96949|0.03232 +2016-07-01|-36.0|160.0|16.25351|0.03414 +2016-07-01|-36.0|161.0|16.52679|0.03591 +2016-07-01|-36.0|162.0|16.78918|0.03761 +2016-07-01|-36.0|163.0|17.04057|0.03925 +2016-07-01|-36.0|164.0|17.28088|0.04082 +2016-07-01|-36.0|165.0|17.51008|0.04231 +2016-07-01|-36.0|166.0|17.72815|0.04373 +2016-07-01|-36.0|167.0|17.93513|0.04506 +2016-07-01|-36.0|168.0|18.1311|0.04631 +2016-07-01|-36.0|169.0|18.31617|0.04747 +2016-07-01|-36.0|170.0|18.4905|0.04854 +2016-07-01|-36.0|171.0|18.6543|0.04952 +2016-07-01|-36.0|172.0|18.80781|0.0504 +2016-07-01|-36.0|173.0|18.95131|0.05119 +2016-07-01|-36.0|174.0|19.08511|0.05187 +2016-07-01|-36.0|175.0|19.20958|0.05246 +2016-07-01|-36.0|176.0|19.32508|0.05294 +2016-07-01|-36.0|177.0|19.43202|0.05332 +2016-07-01|-36.0|178.0|19.53083|0.0536 +2016-07-01|-36.0|179.0|19.62193|0.05378 +2016-07-01|-36.0|-1.0|-23.4211|0.05792 +2016-07-01|-36.0|-2.0|-23.46592|0.05896 +2016-07-01|-36.0|-3.0|-23.51806|0.05899 +2016-07-01|-36.0|-4.0|-23.5751|0.05809 +2016-07-01|-36.0|-5.0|-23.63473|0.05634 +2016-07-01|-36.0|-6.0|-23.6948|0.05385 +2016-07-01|-36.0|-7.0|-23.7533|0.05073 +2016-07-01|-36.0|-8.0|-23.80846|0.04707 +2016-07-01|-36.0|-9.0|-23.85866|0.04299 +2016-07-01|-36.0|-10.0|-23.9025|0.03859 +2016-07-01|-36.0|-11.0|-23.93879|0.03395 +2016-07-01|-36.0|-12.0|-23.9665|0.02916 +2016-07-01|-36.0|-13.0|-23.98482|0.0243 +2016-07-01|-36.0|-14.0|-23.99307|0.01944 +2016-07-01|-36.0|-15.0|-23.99073|0.01463 +2016-07-01|-36.0|-16.0|-23.97741|0.00991 +2016-07-01|-36.0|-17.0|-23.95279|0.00533 +2016-07-01|-36.0|-18.0|-23.91668|9.0E-4 +2016-07-01|-36.0|-19.0|-23.8689|-0.00335 +2016-07-01|-36.0|-20.0|-23.80933|-0.00743 +2016-07-01|-36.0|-21.0|-23.73787|-0.01133 +2016-07-01|-36.0|-22.0|-23.65438|-0.01507 +2016-07-01|-36.0|-23.0|-23.55875|-0.01867 +2016-07-01|-36.0|-24.0|-23.45078|-0.02213 +2016-07-01|-36.0|-25.0|-23.33025|-0.02549 +2016-07-01|-36.0|-26.0|-23.19688|-0.02878 +2016-07-01|-36.0|-27.0|-23.05029|-0.03202 +2016-07-01|-36.0|-28.0|-22.89006|-0.03525 +2016-07-01|-36.0|-29.0|-22.71568|-0.0385 +2016-07-01|-36.0|-30.0|-22.52656|-0.04179 +2016-07-01|-36.0|-31.0|-22.32202|-0.04516 +2016-07-01|-36.0|-32.0|-22.10132|-0.04862 +2016-07-01|-36.0|-33.0|-21.86368|-0.0522 +2016-07-01|-36.0|-34.0|-21.60822|-0.05591 +2016-07-01|-36.0|-35.0|-21.33404|-0.05978 +2016-07-01|-36.0|-36.0|-21.04021|-0.0638 +2016-07-01|-36.0|-37.0|-20.72576|-0.06798 +2016-07-01|-36.0|-38.0|-20.38973|-0.07232 +2016-07-01|-36.0|-39.0|-20.03115|-0.07681 +2016-07-01|-36.0|-40.0|-19.64911|-0.08145 +2016-07-01|-36.0|-41.0|-19.2427|-0.08621 +2016-07-01|-36.0|-42.0|-18.81109|-0.09107 +2016-07-01|-36.0|-43.0|-18.35351|-0.09602 +2016-07-01|-36.0|-44.0|-17.86928|-0.10102 +2016-07-01|-36.0|-45.0|-17.35784|-0.10605 +2016-07-01|-36.0|-46.0|-16.81871|-0.11106 +2016-07-01|-36.0|-47.0|-16.25158|-0.11603 +2016-07-01|-36.0|-48.0|-15.65626|-0.12092 +2016-07-01|-36.0|-49.0|-15.03272|-0.12569 +2016-07-01|-36.0|-50.0|-14.38108|-0.1303 +2016-07-01|-36.0|-51.0|-13.70166|-0.13471 +2016-07-01|-36.0|-52.0|-12.99495|-0.13888 +2016-07-01|-36.0|-53.0|-12.26161|-0.14278 +2016-07-01|-36.0|-54.0|-11.5025|-0.14637 +2016-07-01|-36.0|-55.0|-10.71868|-0.14961 +2016-07-01|-36.0|-56.0|-9.91139|-0.15249 +2016-07-01|-36.0|-57.0|-9.08205|-0.15496 +2016-07-01|-36.0|-58.0|-8.23227|-0.15702 +2016-07-01|-36.0|-59.0|-7.36384|-0.15862 +2016-07-01|-36.0|-60.0|-6.47868|-0.15977 +2016-07-01|-36.0|-61.0|-5.57891|-0.16045 +2016-07-01|-36.0|-62.0|-4.66673|-0.16065 +2016-07-01|-36.0|-63.0|-3.7445|-0.16037 +2016-07-01|-36.0|-64.0|-2.81465|-0.15961 +2016-07-01|-36.0|-65.0|-1.8797|-0.15839 +2016-07-01|-36.0|-66.0|-0.94222|-0.15671 +2016-07-01|-36.0|-67.0|-0.00482|-0.15459 +2016-07-01|-36.0|-68.0|0.9299|-0.15206 +2016-07-01|-36.0|-69.0|1.85932|-0.14913 +2016-07-01|-36.0|-70.0|2.78089|-0.14584 +2016-07-01|-36.0|-71.0|3.69211|-0.14221 +2016-07-01|-36.0|-72.0|4.59054|-0.13828 +2016-07-01|-36.0|-73.0|5.47386|-0.13408 +2016-07-01|-36.0|-74.0|6.33986|-0.12964 +2016-07-01|-36.0|-75.0|7.18646|-0.12501 +2016-07-01|-36.0|-76.0|8.01171|-0.12023 +2016-07-01|-36.0|-77.0|8.81384|-0.11531 +2016-07-01|-36.0|-78.0|9.59122|-0.11031 +2016-07-01|-36.0|-79.0|10.34241|-0.10525 +2016-07-01|-36.0|-80.0|11.06612|-0.10017 +2016-07-01|-36.0|-81.0|11.76126|-0.0951 +2016-07-01|-36.0|-82.0|12.42691|-0.09007 +2016-07-01|-36.0|-83.0|13.06232|-0.0851 +2016-07-01|-36.0|-84.0|13.66693|-0.08023 +2016-07-01|-36.0|-85.0|14.24033|-0.07547 +2016-07-01|-36.0|-86.0|14.7823|-0.07085 +2016-07-01|-36.0|-87.0|15.29277|-0.06639 +2016-07-01|-36.0|-88.0|15.77183|-0.06209 +2016-07-01|-36.0|-89.0|16.21971|-0.05799 +2016-07-01|-36.0|-90.0|16.63679|-0.05409 +2016-07-01|-36.0|-91.0|17.0236|-0.05039 +2016-07-01|-36.0|-92.0|17.38077|-0.04692 +2016-07-01|-36.0|-93.0|17.70905|-0.04367 +2016-07-01|-36.0|-94.0|18.00931|-0.04064 +2016-07-01|-36.0|-95.0|18.28252|-0.03785 +2016-07-01|-36.0|-96.0|18.52974|-0.03528 +2016-07-01|-36.0|-97.0|18.75208|-0.03294 +2016-07-01|-36.0|-98.0|18.95076|-0.03083 +2016-07-01|-36.0|-99.0|19.12703|-0.02893 +2016-07-01|-36.0|-100.0|19.28219|-0.02723 +2016-07-01|-36.0|-101.0|19.41759|-0.02574 +2016-07-01|-36.0|-102.0|19.5346|-0.02443 +2016-07-01|-36.0|-103.0|19.63459|-0.02329 +2016-07-01|-36.0|-104.0|19.71895|-0.02231 +2016-07-01|-36.0|-105.0|19.78906|-0.02147 +2016-07-01|-36.0|-106.0|19.84628|-0.02076 +2016-07-01|-36.0|-107.0|19.89193|-0.02016 +2016-07-01|-36.0|-108.0|19.92733|-0.01965 +2016-07-01|-36.0|-109.0|19.95371|-0.0192 +2016-07-01|-36.0|-110.0|19.9723|-0.01882 +2016-07-01|-36.0|-111.0|19.98424|-0.01846 +2016-07-01|-36.0|-112.0|19.9906|-0.01813 +2016-07-01|-36.0|-113.0|19.99242|-0.0178 +2016-07-01|-36.0|-114.0|19.99063|-0.01746 +2016-07-01|-36.0|-115.0|19.98611|-0.01708 +2016-07-01|-36.0|-116.0|19.97966|-0.01667 +2016-07-01|-36.0|-117.0|19.972|-0.0162 +2016-07-01|-36.0|-118.0|19.96378|-0.01568 +2016-07-01|-36.0|-119.0|19.95557|-0.01508 +2016-07-01|-36.0|-120.0|19.94787|-0.01441 +2016-07-01|-36.0|-121.0|19.94111|-0.01365 +2016-07-01|-36.0|-122.0|19.93566|-0.01281 +2016-07-01|-36.0|-123.0|19.9318|-0.01189 +2016-07-01|-36.0|-124.0|19.92978|-0.01089 +2016-07-01|-36.0|-125.0|19.92977|-0.0098 +2016-07-01|-36.0|-126.0|19.9319|-0.00864 +2016-07-01|-36.0|-127.0|19.93624|-0.0074 +2016-07-01|-36.0|-128.0|19.94282|-0.0061 +2016-07-01|-36.0|-129.0|19.95163|-0.00474 +2016-07-01|-36.0|-130.0|19.96261|-0.00333 +2016-07-01|-36.0|-131.0|19.97569|-0.00187 +2016-07-01|-36.0|-132.0|19.99074|-3.7E-4 +2016-07-01|-36.0|-133.0|20.00763|0.00115 +2016-07-01|-36.0|-134.0|20.02619|0.0027 +2016-07-01|-36.0|-135.0|20.04624|0.00426 +2016-07-01|-36.0|-136.0|20.06757|0.00582 +2016-07-01|-36.0|-137.0|20.08998|0.00738 +2016-07-01|-36.0|-138.0|20.11323|0.00894 +2016-07-01|-36.0|-139.0|20.13711|0.01049 +2016-07-01|-36.0|-140.0|20.16136|0.01202 +2016-07-01|-36.0|-141.0|20.18576|0.01354 +2016-07-01|-36.0|-142.0|20.21007|0.01503 +2016-07-01|-36.0|-143.0|20.23405|0.0165 +2016-07-01|-36.0|-144.0|20.25748|0.01795 +2016-07-01|-36.0|-145.0|20.28015|0.01937 +2016-07-01|-36.0|-146.0|20.30184|0.02077 +2016-07-01|-36.0|-147.0|20.32236|0.02215 +2016-07-01|-36.0|-148.0|20.34153|0.02352 +2016-07-01|-36.0|-149.0|20.35918|0.02486 +2016-07-01|-36.0|-150.0|20.37517|0.02618 +2016-07-01|-36.0|-151.0|20.38937|0.0275 +2016-07-01|-36.0|-152.0|20.40166|0.02879 +2016-07-01|-36.0|-153.0|20.41195|0.03008 +2016-07-01|-36.0|-154.0|20.42016|0.03136 +2016-07-01|-36.0|-155.0|20.42623|0.03263 +2016-07-01|-36.0|-156.0|20.4301|0.03389 +2016-07-01|-36.0|-157.0|20.43175|0.03515 +2016-07-01|-36.0|-158.0|20.43114|0.03639 +2016-07-01|-36.0|-159.0|20.42827|0.03763 +2016-07-01|-36.0|-160.0|20.4231|0.03885 +2016-07-01|-36.0|-161.0|20.41564|0.04005 +2016-07-01|-36.0|-162.0|20.40586|0.04124 +2016-07-01|-36.0|-163.0|20.39374|0.0424 +2016-07-01|-36.0|-164.0|20.37924|0.04354 +2016-07-01|-36.0|-165.0|20.36232|0.04465 +2016-07-01|-36.0|-166.0|20.34289|0.04571 +2016-07-01|-36.0|-167.0|20.32088|0.04674 +2016-07-01|-36.0|-168.0|20.29617|0.04772 +2016-07-01|-36.0|-169.0|20.26861|0.04864 +2016-07-01|-36.0|-170.0|20.23803|0.04951 +2016-07-01|-36.0|-171.0|20.20422|0.05031 +2016-07-01|-36.0|-172.0|20.16695|0.05104 +2016-07-01|-36.0|-173.0|20.12595|0.0517 +2016-07-01|-36.0|-174.0|20.08092|0.05228 +2016-07-01|-36.0|-175.0|20.03153|0.05277 +2016-07-01|-36.0|-176.0|19.97741|0.05318 +2016-07-01|-36.0|-177.0|19.91819|0.05349 +2016-07-01|-36.0|-178.0|19.85346|0.05371 +2016-07-01|-36.0|-179.0|19.7828|0.05383 +2016-07-01|-37.0|0.0|-23.34774|0.04827 +2016-07-01|-37.0|1.0|-23.3662|0.04417 +2016-07-01|-37.0|2.0|-23.40101|0.03897 +2016-07-01|-37.0|3.0|-23.45444|0.03266 +2016-07-01|-37.0|4.0|-23.5286|0.02526 +2016-07-01|-37.0|5.0|-23.62543|0.01683 +2016-07-01|-37.0|6.0|-23.74667|0.00743 +2016-07-01|-37.0|7.0|-23.89381|-0.00286 +2016-07-01|-37.0|8.0|-24.06803|-0.01394 +2016-07-01|-37.0|9.0|-24.27022|-0.02568 +2016-07-01|-37.0|10.0|-24.50097|-0.03795 +2016-07-01|-37.0|11.0|-24.76048|-0.05062 +2016-07-01|-37.0|12.0|-25.04865|-0.06354 +2016-07-01|-37.0|13.0|-25.36505|-0.07655 +2016-07-01|-37.0|14.0|-25.70893|-0.0895 +2016-07-01|-37.0|15.0|-26.07922|-0.10227 +2016-07-01|-37.0|16.0|-26.4746|-0.1147 +2016-07-01|-37.0|17.0|-26.89353|-0.12667 +2016-07-01|-37.0|18.0|-27.33422|-0.13807 +2016-07-01|-37.0|19.0|-27.79473|-0.1488 +2016-07-01|-37.0|20.0|-28.273|-0.15877 +2016-07-01|-37.0|21.0|-28.76684|-0.16791 +2016-07-01|-37.0|22.0|-29.27401|-0.17618 +2016-07-01|-37.0|23.0|-29.79222|-0.18352 +2016-07-01|-37.0|24.0|-30.3192|-0.18991 +2016-07-01|-37.0|25.0|-30.85266|-0.19535 +2016-07-01|-37.0|26.0|-31.3904|-0.19983 +2016-07-01|-37.0|27.0|-31.93023|-0.20336 +2016-07-01|-37.0|28.0|-32.47007|-0.20597 +2016-07-01|-37.0|29.0|-33.0079|-0.20769 +2016-07-01|-37.0|30.0|-33.54181|-0.20854 +2016-07-01|-37.0|31.0|-34.06997|-0.20856 +2016-07-01|-37.0|32.0|-34.59068|-0.20781 +2016-07-01|-37.0|33.0|-35.10231|-0.20632 +2016-07-01|-37.0|34.0|-35.60334|-0.20413 +2016-07-01|-37.0|35.0|-36.09236|-0.20131 +2016-07-01|-37.0|36.0|-36.56803|-0.19788 +2016-07-01|-37.0|37.0|-37.02911|-0.19389 +2016-07-01|-37.0|38.0|-37.47444|-0.18939 +2016-07-01|-37.0|39.0|-37.90295|-0.1844 +2016-07-01|-37.0|40.0|-38.31363|-0.17898 +2016-07-01|-37.0|41.0|-38.70553|-0.17315 +2016-07-01|-37.0|42.0|-39.07779|-0.16693 +2016-07-01|-37.0|43.0|-39.42958|-0.16037 +2016-07-01|-37.0|44.0|-39.76014|-0.15347 +2016-07-01|-37.0|45.0|-40.06877|-0.14627 +2016-07-01|-37.0|46.0|-40.35478|-0.13878 +2016-07-01|-37.0|47.0|-40.61758|-0.13101 +2016-07-01|-37.0|48.0|-40.85657|-0.12298 +2016-07-01|-37.0|49.0|-41.07122|-0.1147 +2016-07-01|-37.0|50.0|-41.26104|-0.10617 +2016-07-01|-37.0|51.0|-41.42557|-0.09742 +2016-07-01|-37.0|52.0|-41.56439|-0.08844 +2016-07-01|-37.0|53.0|-41.67711|-0.07924 +2016-07-01|-37.0|54.0|-41.76337|-0.06983 +2016-07-01|-37.0|55.0|-41.82286|-0.06022 +2016-07-01|-37.0|56.0|-41.85529|-0.0504 +2016-07-01|-37.0|57.0|-41.86041|-0.04039 +2016-07-01|-37.0|58.0|-41.83797|-0.0302 +2016-07-01|-37.0|59.0|-41.78778|-0.01983 +2016-07-01|-37.0|60.0|-41.70967|-0.00929 +2016-07-01|-37.0|61.0|-41.60348|0.00139 +2016-07-01|-37.0|62.0|-41.46906|0.01221 +2016-07-01|-37.0|63.0|-41.30632|0.02315 +2016-07-01|-37.0|64.0|-41.11514|0.03418 +2016-07-01|-37.0|65.0|-40.89543|0.04529 +2016-07-01|-37.0|66.0|-40.64712|0.05645 +2016-07-01|-37.0|67.0|-40.37014|0.06762 +2016-07-01|-37.0|68.0|-40.06442|0.07878 +2016-07-01|-37.0|69.0|-39.72991|0.08989 +2016-07-01|-37.0|70.0|-39.36657|0.10091 +2016-07-01|-37.0|71.0|-38.97435|0.11179 +2016-07-01|-37.0|72.0|-38.55323|0.1225 +2016-07-01|-37.0|73.0|-38.1032|0.13297 +2016-07-01|-37.0|74.0|-37.62426|0.14317 +2016-07-01|-37.0|75.0|-37.11645|0.15303 +2016-07-01|-37.0|76.0|-36.57986|0.1625 +2016-07-01|-37.0|77.0|-36.01459|0.17152 +2016-07-01|-37.0|78.0|-35.42084|0.18004 +2016-07-01|-37.0|79.0|-34.79885|0.18798 +2016-07-01|-37.0|80.0|-34.14896|0.19529 +2016-07-01|-37.0|81.0|-33.47161|0.20192 +2016-07-01|-37.0|82.0|-32.76736|0.2078 +2016-07-01|-37.0|83.0|-32.03689|0.21288 +2016-07-01|-37.0|84.0|-31.28103|0.21712 +2016-07-01|-37.0|85.0|-30.50075|0.22046 +2016-07-01|-37.0|86.0|-29.69721|0.22287 +2016-07-01|-37.0|87.0|-28.87173|0.22431 +2016-07-01|-37.0|88.0|-28.02579|0.22477 +2016-07-01|-37.0|89.0|-27.16107|0.22423 +2016-07-01|-37.0|90.0|-26.27939|0.2227 +2016-07-01|-37.0|91.0|-25.38275|0.22017 +2016-07-01|-37.0|92.0|-24.47329|0.21666 +2016-07-01|-37.0|93.0|-23.55325|0.21223 +2016-07-01|-37.0|94.0|-22.62498|0.20689 +2016-07-01|-37.0|95.0|-21.69092|0.20072 +2016-07-01|-37.0|96.0|-20.7535|0.19377 +2016-07-01|-37.0|97.0|-19.8152|0.18613 +2016-07-01|-37.0|98.0|-18.87844|0.17787 +2016-07-01|-37.0|99.0|-17.94558|0.16908 +2016-07-01|-37.0|100.0|-17.01888|0.15986 +2016-07-01|-37.0|101.0|-16.10045|0.1503 +2016-07-01|-37.0|102.0|-15.19226|0.1405 +2016-07-01|-37.0|103.0|-14.29609|0.13055 +2016-07-01|-37.0|104.0|-13.41351|0.12055 +2016-07-01|-37.0|105.0|-12.54586|0.11059 +2016-07-01|-37.0|106.0|-11.69427|0.10074 +2016-07-01|-37.0|107.0|-10.85963|0.09109 +2016-07-01|-37.0|108.0|-10.04259|0.0817 +2016-07-01|-37.0|109.0|-9.24358|0.07263 +2016-07-01|-37.0|110.0|-8.46282|0.06394 +2016-07-01|-37.0|111.0|-7.70033|0.05566 +2016-07-01|-37.0|112.0|-6.95593|0.04785 +2016-07-01|-37.0|113.0|-6.22931|0.04051 +2016-07-01|-37.0|114.0|-5.51998|0.03367 +2016-07-01|-37.0|115.0|-4.82735|0.02735 +2016-07-01|-37.0|116.0|-4.15074|0.02154 +2016-07-01|-37.0|117.0|-3.48939|0.01626 +2016-07-01|-37.0|118.0|-2.84247|0.01149 +2016-07-01|-37.0|119.0|-2.20914|0.00722 +2016-07-01|-37.0|120.0|-1.58854|0.00344 +2016-07-01|-37.0|121.0|-0.97983|1.4E-4 +2016-07-01|-37.0|122.0|-0.38217|-0.00271 +2016-07-01|-37.0|123.0|0.20522|-0.00512 +2016-07-01|-37.0|124.0|0.78309|-0.00712 +2016-07-01|-37.0|125.0|1.35211|-0.00874 +2016-07-01|-37.0|126.0|1.91291|-0.00999 +2016-07-01|-37.0|127.0|2.46603|-0.0109 +2016-07-01|-37.0|128.0|3.01195|-0.0115 +2016-07-01|-37.0|129.0|3.55105|-0.01181 +2016-07-01|-37.0|130.0|4.08365|-0.01185 +2016-07-01|-37.0|131.0|4.61001|-0.01164 +2016-07-01|-37.0|132.0|5.13029|-0.01121 +2016-07-01|-37.0|133.0|5.64461|-0.01058 +2016-07-01|-37.0|134.0|6.15302|-0.00976 +2016-07-01|-37.0|135.0|6.6555|-0.00878 +2016-07-01|-37.0|136.0|7.15201|-0.00764 +2016-07-01|-37.0|137.0|7.64245|-0.00637 +2016-07-01|-37.0|138.0|8.12668|-0.00499 +2016-07-01|-37.0|139.0|8.60454|-0.00349 +2016-07-01|-37.0|140.0|9.07585|-0.00191 +2016-07-01|-37.0|141.0|9.54039|-2.4E-4 +2016-07-01|-37.0|142.0|9.99795|0.0015 +2016-07-01|-37.0|143.0|10.44829|0.0033 +2016-07-01|-37.0|144.0|10.89117|0.00516 +2016-07-01|-37.0|145.0|11.32634|0.00706 +2016-07-01|-37.0|146.0|11.75356|0.009 +2016-07-01|-37.0|147.0|12.17257|0.01096 +2016-07-01|-37.0|148.0|12.58312|0.01295 +2016-07-01|-37.0|149.0|12.98497|0.01495 +2016-07-01|-37.0|150.0|13.37785|0.01696 +2016-07-01|-37.0|151.0|13.76153|0.01897 +2016-07-01|-37.0|152.0|14.13576|0.02098 +2016-07-01|-37.0|153.0|14.50029|0.02298 +2016-07-01|-37.0|154.0|14.8549|0.02496 +2016-07-01|-37.0|155.0|15.19936|0.02692 +2016-07-01|-37.0|156.0|15.53344|0.02885 +2016-07-01|-37.0|157.0|15.85695|0.03075 +2016-07-01|-37.0|158.0|16.16968|0.03261 +2016-07-01|-37.0|159.0|16.47146|0.03443 +2016-07-01|-37.0|160.0|16.76213|0.0362 +2016-07-01|-37.0|161.0|17.04156|0.03792 +2016-07-01|-37.0|162.0|17.30963|0.03957 +2016-07-01|-37.0|163.0|17.56628|0.04117 +2016-07-01|-37.0|164.0|17.81144|0.04269 +2016-07-01|-37.0|165.0|18.04512|0.04415 +2016-07-01|-37.0|166.0|18.26732|0.04553 +2016-07-01|-37.0|167.0|18.47812|0.04683 +2016-07-01|-37.0|168.0|18.67761|0.04805 +2016-07-01|-37.0|169.0|18.86594|0.04918 +2016-07-01|-37.0|170.0|19.04329|0.05023 +2016-07-01|-37.0|171.0|19.20989|0.05118 +2016-07-01|-37.0|172.0|19.36598|0.05204 +2016-07-01|-37.0|173.0|19.51188|0.05281 +2016-07-01|-37.0|174.0|19.6479|0.05348 +2016-07-01|-37.0|175.0|19.77442|0.05405 +2016-07-01|-37.0|176.0|19.8918|0.05453 +2016-07-01|-37.0|177.0|20.00047|0.0549 +2016-07-01|-37.0|178.0|20.10084|0.05517 +2016-07-01|-37.0|179.0|20.19335|0.05534 +2016-07-01|-37.0|-1.0|-23.34332|0.05129 +2016-07-01|-37.0|-2.0|-23.35057|0.05325 +2016-07-01|-37.0|-3.0|-23.36714|0.05422 +2016-07-01|-37.0|-4.0|-23.3907|0.05427 +2016-07-01|-37.0|-5.0|-23.41904|0.05346 +2016-07-01|-37.0|-6.0|-23.45005|0.0519 +2016-07-01|-37.0|-7.0|-23.48174|0.04967 +2016-07-01|-37.0|-8.0|-23.5123|0.04687 +2016-07-01|-37.0|-9.0|-23.54009|0.0436 +2016-07-01|-37.0|-10.0|-23.56364|0.03994 +2016-07-01|-37.0|-11.0|-23.58165|0.03599 +2016-07-01|-37.0|-12.0|-23.593|0.03183 +2016-07-01|-37.0|-13.0|-23.59675|0.02753 +2016-07-01|-37.0|-14.0|-23.59209|0.02316 +2016-07-01|-37.0|-15.0|-23.57835|0.01877 +2016-07-01|-37.0|-16.0|-23.55499|0.01442 +2016-07-01|-37.0|-17.0|-23.52155|0.01013 +2016-07-01|-37.0|-18.0|-23.47768|0.00594 +2016-07-01|-37.0|-19.0|-23.42306|0.00185 +2016-07-01|-37.0|-20.0|-23.35743|-0.0021 +2016-07-01|-37.0|-21.0|-23.28053|-0.00594 +2016-07-01|-37.0|-22.0|-23.19211|-0.00965 +2016-07-01|-37.0|-23.0|-23.09193|-0.01326 +2016-07-01|-37.0|-24.0|-22.97968|-0.01678 +2016-07-01|-37.0|-25.0|-22.85503|-0.02022 +2016-07-01|-37.0|-26.0|-22.7176|-0.02362 +2016-07-01|-37.0|-27.0|-22.56696|-0.02699 +2016-07-01|-37.0|-28.0|-22.4026|-0.03037 +2016-07-01|-37.0|-29.0|-22.22394|-0.03377 +2016-07-01|-37.0|-30.0|-22.03035|-0.03722 +2016-07-01|-37.0|-31.0|-21.82113|-0.04075 +2016-07-01|-37.0|-32.0|-21.59551|-0.04438 +2016-07-01|-37.0|-33.0|-21.35269|-0.04812 +2016-07-01|-37.0|-34.0|-21.09179|-0.05198 +2016-07-01|-37.0|-35.0|-20.81192|-0.05599 +2016-07-01|-37.0|-36.0|-20.51215|-0.06013 +2016-07-01|-37.0|-37.0|-20.19155|-0.06443 +2016-07-01|-37.0|-38.0|-19.84919|-0.06886 +2016-07-01|-37.0|-39.0|-19.48414|-0.07344 +2016-07-01|-37.0|-40.0|-19.09552|-0.07813 +2016-07-01|-37.0|-41.0|-18.68247|-0.08293 +2016-07-01|-37.0|-42.0|-18.24423|-0.08782 +2016-07-01|-37.0|-43.0|-17.78008|-0.09278 +2016-07-01|-37.0|-44.0|-17.28939|-0.09777 +2016-07-01|-37.0|-45.0|-16.77166|-0.10276 +2016-07-01|-37.0|-46.0|-16.22648|-0.10774 +2016-07-01|-37.0|-47.0|-15.65359|-0.11265 +2016-07-01|-37.0|-48.0|-15.05286|-0.11747 +2016-07-01|-37.0|-49.0|-14.42431|-0.12216 +2016-07-01|-37.0|-50.0|-13.76813|-0.12668 +2016-07-01|-37.0|-51.0|-13.08467|-0.13099 +2016-07-01|-37.0|-52.0|-12.37447|-0.13507 +2016-07-01|-37.0|-53.0|-11.63823|-0.13886 +2016-07-01|-37.0|-54.0|-10.87685|-0.14235 +2016-07-01|-37.0|-55.0|-10.0914|-0.1455 +2016-07-01|-37.0|-56.0|-9.28314|-0.14828 +2016-07-01|-37.0|-57.0|-8.45351|-0.15067 +2016-07-01|-37.0|-58.0|-7.60411|-0.15264 +2016-07-01|-37.0|-59.0|-6.73672|-0.15418 +2016-07-01|-37.0|-60.0|-5.85325|-0.15527 +2016-07-01|-37.0|-61.0|-4.95578|-0.1559 +2016-07-01|-37.0|-62.0|-4.0465|-0.15606 +2016-07-01|-37.0|-63.0|-3.1277|-0.15577 +2016-07-01|-37.0|-64.0|-2.20177|-0.15501 +2016-07-01|-37.0|-65.0|-1.27116|-0.1538 +2016-07-01|-37.0|-66.0|-0.3384|-0.15215 +2016-07-01|-37.0|-67.0|0.594|-0.15008 +2016-07-01|-37.0|-68.0|1.52348|-0.14761 +2016-07-01|-37.0|-69.0|2.44753|-0.14476 +2016-07-01|-37.0|-70.0|3.36365|-0.14155 +2016-07-01|-37.0|-71.0|4.26943|-0.13803 +2016-07-01|-37.0|-72.0|5.16252|-0.13421 +2016-07-01|-37.0|-73.0|6.04065|-0.13014 +2016-07-01|-37.0|-74.0|6.90168|-0.12584 +2016-07-01|-37.0|-75.0|7.74361|-0.12136 +2016-07-01|-37.0|-76.0|8.56455|-0.11672 +2016-07-01|-37.0|-77.0|9.36277|-0.11195 +2016-07-01|-37.0|-78.0|10.13669|-0.10711 +2016-07-01|-37.0|-79.0|10.88492|-0.10221 +2016-07-01|-37.0|-80.0|11.60619|-0.09729 +2016-07-01|-37.0|-81.0|12.29944|-0.09237 +2016-07-01|-37.0|-82.0|12.96376|-0.0875 +2016-07-01|-37.0|-83.0|13.59842|-0.08268 +2016-07-01|-37.0|-84.0|14.20284|-0.07796 +2016-07-01|-37.0|-85.0|14.77663|-0.07334 +2016-07-01|-37.0|-86.0|15.31954|-0.06886 +2016-07-01|-37.0|-87.0|15.83148|-0.06452 +2016-07-01|-37.0|-88.0|16.31252|-0.06035 +2016-07-01|-37.0|-89.0|16.76285|-0.05636 +2016-07-01|-37.0|-90.0|17.18283|-0.05256 +2016-07-01|-37.0|-91.0|17.57293|-0.04896 +2016-07-01|-37.0|-92.0|17.93374|-0.04557 +2016-07-01|-37.0|-93.0|18.26597|-0.0424 +2016-07-01|-37.0|-94.0|18.57042|-0.03944 +2016-07-01|-37.0|-95.0|18.84803|-0.03671 +2016-07-01|-37.0|-96.0|19.09977|-0.03419 +2016-07-01|-37.0|-97.0|19.32672|-0.03189 +2016-07-01|-37.0|-98.0|19.53003|-0.0298 +2016-07-01|-37.0|-99.0|19.7109|-0.02792 +2016-07-01|-37.0|-100.0|19.87058|-0.02624 +2016-07-01|-37.0|-101.0|20.01036|-0.02474 +2016-07-01|-37.0|-102.0|20.13154|-0.02343 +2016-07-01|-37.0|-103.0|20.23547|-0.02227 +2016-07-01|-37.0|-104.0|20.32347|-0.02127 +2016-07-01|-37.0|-105.0|20.3969|-0.02041 +2016-07-01|-37.0|-106.0|20.45706|-0.01966 +2016-07-01|-37.0|-107.0|20.50527|-0.01902 +2016-07-01|-37.0|-108.0|20.54279|-0.01847 +2016-07-01|-37.0|-109.0|20.57087|-0.01798 +2016-07-01|-37.0|-110.0|20.59069|-0.01755 +2016-07-01|-37.0|-111.0|20.60338|-0.01715 +2016-07-01|-37.0|-112.0|20.61005|-0.01676 +2016-07-01|-37.0|-113.0|20.61169|-0.01638 +2016-07-01|-37.0|-114.0|20.60928|-0.01599 +2016-07-01|-37.0|-115.0|20.6037|-0.01557 +2016-07-01|-37.0|-116.0|20.59576|-0.01511 +2016-07-01|-37.0|-117.0|20.58621|-0.0146 +2016-07-01|-37.0|-118.0|20.57574|-0.01403 +2016-07-01|-37.0|-119.0|20.56493|-0.0134 +2016-07-01|-37.0|-120.0|20.55433|-0.01269 +2016-07-01|-37.0|-121.0|20.54441|-0.0119 +2016-07-01|-37.0|-122.0|20.53556|-0.01104 +2016-07-01|-37.0|-123.0|20.52812|-0.01009 +2016-07-01|-37.0|-124.0|20.52237|-0.00906 +2016-07-01|-37.0|-125.0|20.51852|-0.00796 +2016-07-01|-37.0|-126.0|20.51675|-0.00678 +2016-07-01|-37.0|-127.0|20.51716|-0.00553 +2016-07-01|-37.0|-128.0|20.51982|-0.00422 +2016-07-01|-37.0|-129.0|20.52476|-0.00284 +2016-07-01|-37.0|-130.0|20.53196|-0.00142 +2016-07-01|-37.0|-131.0|20.54137|5.0E-5 +2016-07-01|-37.0|-132.0|20.55291|0.00155 +2016-07-01|-37.0|-133.0|20.56646|0.00308 +2016-07-01|-37.0|-134.0|20.58189|0.00464 +2016-07-01|-37.0|-135.0|20.59902|0.0062 +2016-07-01|-37.0|-136.0|20.61769|0.00777 +2016-07-01|-37.0|-137.0|20.63768|0.00935 +2016-07-01|-37.0|-138.0|20.6588|0.01091 +2016-07-01|-37.0|-139.0|20.68082|0.01247 +2016-07-01|-37.0|-140.0|20.70352|0.01401 +2016-07-01|-37.0|-141.0|20.72665|0.01554 +2016-07-01|-37.0|-142.0|20.74998|0.01704 +2016-07-01|-37.0|-143.0|20.77329|0.01852 +2016-07-01|-37.0|-144.0|20.79633|0.01998 +2016-07-01|-37.0|-145.0|20.81889|0.02141 +2016-07-01|-37.0|-146.0|20.84075|0.02282 +2016-07-01|-37.0|-147.0|20.8617|0.02421 +2016-07-01|-37.0|-148.0|20.88156|0.02558 +2016-07-01|-37.0|-149.0|20.90013|0.02693 +2016-07-01|-37.0|-150.0|20.91725|0.02826 +2016-07-01|-37.0|-151.0|20.93278|0.02957 +2016-07-01|-37.0|-152.0|20.94657|0.03086 +2016-07-01|-37.0|-153.0|20.95852|0.03215 +2016-07-01|-37.0|-154.0|20.96852|0.03342 +2016-07-01|-37.0|-155.0|20.97648|0.03468 +2016-07-01|-37.0|-156.0|20.98233|0.03593 +2016-07-01|-37.0|-157.0|20.98601|0.03717 +2016-07-01|-37.0|-158.0|20.98746|0.03839 +2016-07-01|-37.0|-159.0|20.98666|0.03961 +2016-07-01|-37.0|-160.0|20.98354|0.0408 +2016-07-01|-37.0|-161.0|20.97809|0.04199 +2016-07-01|-37.0|-162.0|20.97025|0.04315 +2016-07-01|-37.0|-163.0|20.95998|0.04428 +2016-07-01|-37.0|-164.0|20.94723|0.04539 +2016-07-01|-37.0|-165.0|20.93192|0.04647 +2016-07-01|-37.0|-166.0|20.91398|0.04751 +2016-07-01|-37.0|-167.0|20.89329|0.04851 +2016-07-01|-37.0|-168.0|20.86973|0.04946 +2016-07-01|-37.0|-169.0|20.84314|0.05036 +2016-07-01|-37.0|-170.0|20.81334|0.0512 +2016-07-01|-37.0|-171.0|20.78013|0.05198 +2016-07-01|-37.0|-172.0|20.74326|0.05269 +2016-07-01|-37.0|-173.0|20.70247|0.05332 +2016-07-01|-37.0|-174.0|20.65744|0.05389 +2016-07-01|-37.0|-175.0|20.60786|0.05436 +2016-07-01|-37.0|-176.0|20.55337|0.05476 +2016-07-01|-37.0|-177.0|20.4936|0.05506 +2016-07-01|-37.0|-178.0|20.42813|0.05528 +2016-07-01|-37.0|-179.0|20.35655|0.0554 +2016-07-01|-38.0|0.0|-23.27341|0.04099 +2016-07-01|-38.0|1.0|-23.33221|0.03613 +2016-07-01|-38.0|2.0|-23.40862|0.03024 +2016-07-01|-38.0|3.0|-23.50466|0.02332 +2016-07-01|-38.0|4.0|-23.62218|0.01541 +2016-07-01|-38.0|5.0|-23.76285|0.00657 +2016-07-01|-38.0|6.0|-23.92814|-0.00315 +2016-07-01|-38.0|7.0|-24.11925|-0.01365 +2016-07-01|-38.0|8.0|-24.3371|-0.02483 +2016-07-01|-38.0|9.0|-24.58232|-0.03657 +2016-07-01|-38.0|10.0|-24.85523|-0.04875 +2016-07-01|-38.0|11.0|-25.15585|-0.06123 +2016-07-01|-38.0|12.0|-25.48387|-0.07388 +2016-07-01|-38.0|13.0|-25.83868|-0.08655 +2016-07-01|-38.0|14.0|-26.21941|-0.09912 +2016-07-01|-38.0|15.0|-26.62488|-0.11145 +2016-07-01|-38.0|16.0|-27.05372|-0.12341 +2016-07-01|-38.0|17.0|-27.50431|-0.1349 +2016-07-01|-38.0|18.0|-27.97488|-0.14581 +2016-07-01|-38.0|19.0|-28.4635|-0.15606 +2016-07-01|-38.0|20.0|-28.96813|-0.16556 +2016-07-01|-38.0|21.0|-29.48665|-0.17426 +2016-07-01|-38.0|22.0|-30.0169|-0.1821 +2016-07-01|-38.0|23.0|-30.55668|-0.18907 +2016-07-01|-38.0|24.0|-31.10382|-0.19513 +2016-07-01|-38.0|25.0|-31.65615|-0.20028 +2016-07-01|-38.0|26.0|-32.21157|-0.20452 +2016-07-01|-38.0|27.0|-32.76803|-0.20787 +2016-07-01|-38.0|28.0|-33.32355|-0.21033 +2016-07-01|-38.0|29.0|-33.87625|-0.21195 +2016-07-01|-38.0|30.0|-34.42433|-0.21275 +2016-07-01|-38.0|31.0|-34.96608|-0.21277 +2016-07-01|-38.0|32.0|-35.49989|-0.21205 +2016-07-01|-38.0|33.0|-36.02425|-0.21063 +2016-07-01|-38.0|34.0|-36.53774|-0.20855 +2016-07-01|-38.0|35.0|-37.03904|-0.20586 +2016-07-01|-38.0|36.0|-37.52689|-0.20259 +2016-07-01|-38.0|37.0|-38.00013|-0.19879 +2016-07-01|-38.0|38.0|-38.45769|-0.19449 +2016-07-01|-38.0|39.0|-38.89855|-0.18973 +2016-07-01|-38.0|40.0|-39.32176|-0.18455 +2016-07-01|-38.0|41.0|-39.72644|-0.17896 +2016-07-01|-38.0|42.0|-40.11177|-0.173 +2016-07-01|-38.0|43.0|-40.47696|-0.1667 +2016-07-01|-38.0|44.0|-40.82129|-0.16007 +2016-07-01|-38.0|45.0|-41.14409|-0.15314 +2016-07-01|-38.0|46.0|-41.44471|-0.14591 +2016-07-01|-38.0|47.0|-41.72255|-0.13842 +2016-07-01|-38.0|48.0|-41.97705|-0.13065 +2016-07-01|-38.0|49.0|-42.20769|-0.12264 +2016-07-01|-38.0|50.0|-42.41397|-0.11438 +2016-07-01|-38.0|51.0|-42.59543|-0.10588 +2016-07-01|-38.0|52.0|-42.75164|-0.09716 +2016-07-01|-38.0|53.0|-42.8822|-0.0882 +2016-07-01|-38.0|54.0|-42.98675|-0.07903 +2016-07-01|-38.0|55.0|-43.06492|-0.06964 +2016-07-01|-38.0|56.0|-43.11642|-0.06004 +2016-07-01|-38.0|57.0|-43.14094|-0.05023 +2016-07-01|-38.0|58.0|-43.13821|-0.04023 +2016-07-01|-38.0|59.0|-43.10799|-0.03004 +2016-07-01|-38.0|60.0|-43.05005|-0.01966 +2016-07-01|-38.0|61.0|-42.96419|-0.00912 +2016-07-01|-38.0|62.0|-42.85021|0.00158 +2016-07-01|-38.0|63.0|-42.70792|0.01242 +2016-07-01|-38.0|64.0|-42.53718|0.02337 +2016-07-01|-38.0|65.0|-42.33782|0.03443 +2016-07-01|-38.0|66.0|-42.10969|0.04557 +2016-07-01|-38.0|67.0|-41.85265|0.05675 +2016-07-01|-38.0|68.0|-41.56657|0.06795 +2016-07-01|-38.0|69.0|-41.25132|0.07913 +2016-07-01|-38.0|70.0|-40.90678|0.09026 +2016-07-01|-38.0|71.0|-40.53282|0.10129 +2016-07-01|-38.0|72.0|-40.12935|0.11219 +2016-07-01|-38.0|73.0|-39.69628|0.1229 +2016-07-01|-38.0|74.0|-39.23351|0.13337 +2016-07-01|-38.0|75.0|-38.74103|0.14355 +2016-07-01|-38.0|76.0|-38.21879|0.15338 +2016-07-01|-38.0|77.0|-37.66685|0.16282 +2016-07-01|-38.0|78.0|-37.08529|0.17179 +2016-07-01|-38.0|79.0|-36.47426|0.18023 +2016-07-01|-38.0|80.0|-35.83399|0.18809 +2016-07-01|-38.0|81.0|-35.16483|0.19531 +2016-07-01|-38.0|82.0|-34.46721|0.20182 +2016-07-01|-38.0|83.0|-33.74171|0.20757 +2016-07-01|-38.0|84.0|-32.98904|0.21251 +2016-07-01|-38.0|85.0|-32.21005|0.21658 +2016-07-01|-38.0|86.0|-31.40578|0.21975 +2016-07-01|-38.0|87.0|-30.57743|0.22197 +2016-07-01|-38.0|88.0|-29.72638|0.22322 +2016-07-01|-38.0|89.0|-28.85417|0.22348 +2016-07-01|-38.0|90.0|-27.96254|0.22274 +2016-07-01|-38.0|91.0|-27.05339|0.22101 +2016-07-01|-38.0|92.0|-26.12877|0.21829 +2016-07-01|-38.0|93.0|-25.19088|0.2146 +2016-07-01|-38.0|94.0|-24.24203|0.21 +2016-07-01|-38.0|95.0|-23.28462|0.20452 +2016-07-01|-38.0|96.0|-22.32109|0.19823 +2016-07-01|-38.0|97.0|-21.35395|0.1912 +2016-07-01|-38.0|98.0|-20.38566|0.18349 +2016-07-01|-38.0|99.0|-19.41867|0.17521 +2016-07-01|-38.0|100.0|-18.45534|0.16644 +2016-07-01|-38.0|101.0|-17.4979|0.15727 +2016-07-01|-38.0|102.0|-16.54847|0.14781 +2016-07-01|-38.0|103.0|-15.609|0.13815 +2016-07-01|-38.0|104.0|-14.68122|0.12838 +2016-07-01|-38.0|105.0|-13.7667|0.11859 +2016-07-01|-38.0|106.0|-12.86674|0.10888 +2016-07-01|-38.0|107.0|-11.98245|0.09932 +2016-07-01|-38.0|108.0|-11.1147|0.08998 +2016-07-01|-38.0|109.0|-10.26413|0.08093 +2016-07-01|-38.0|110.0|-9.43118|0.07222 +2016-07-01|-38.0|111.0|-8.61605|0.0639 +2016-07-01|-38.0|112.0|-7.8188|0.05602 +2016-07-01|-38.0|113.0|-7.03927|0.0486 +2016-07-01|-38.0|114.0|-6.27718|0.04166 +2016-07-01|-38.0|115.0|-5.53211|0.03522 +2016-07-01|-38.0|116.0|-4.80351|0.02929 +2016-07-01|-38.0|117.0|-4.09078|0.02388 +2016-07-01|-38.0|118.0|-3.39323|0.01897 +2016-07-01|-38.0|119.0|-2.71013|0.01456 +2016-07-01|-38.0|120.0|-2.04073|0.01063 +2016-07-01|-38.0|121.0|-1.38427|0.00718 +2016-07-01|-38.0|122.0|-0.74001|0.00419 +2016-07-01|-38.0|123.0|-0.10721|0.00162 +2016-07-01|-38.0|124.0|0.5148|-5.3E-4 +2016-07-01|-38.0|125.0|1.12666|-0.0023 +2016-07-01|-38.0|126.0|1.72897|-0.0037 +2016-07-01|-38.0|127.0|2.32223|-0.00477 +2016-07-01|-38.0|128.0|2.90692|-0.00552 +2016-07-01|-38.0|129.0|3.48341|-0.00598 +2016-07-01|-38.0|130.0|4.05204|-0.00617 +2016-07-01|-38.0|131.0|4.61305|-0.00611 +2016-07-01|-38.0|132.0|5.16664|-0.00583 +2016-07-01|-38.0|133.0|5.71293|-0.00535 +2016-07-01|-38.0|134.0|6.25201|-0.00468 +2016-07-01|-38.0|135.0|6.78388|-0.00384 +2016-07-01|-38.0|136.0|7.30852|-0.00286 +2016-07-01|-38.0|137.0|7.82587|-0.00174 +2016-07-01|-38.0|138.0|8.33583|-4.9E-4 +2016-07-01|-38.0|139.0|8.83827|8.6E-4 +2016-07-01|-38.0|140.0|9.33303|0.0023 +2016-07-01|-38.0|141.0|9.81994|0.00384 +2016-07-01|-38.0|142.0|10.2988|0.00544 +2016-07-01|-38.0|143.0|10.76941|0.00711 +2016-07-01|-38.0|144.0|11.23156|0.00884 +2016-07-01|-38.0|145.0|11.68504|0.01062 +2016-07-01|-38.0|146.0|12.12961|0.01243 +2016-07-01|-38.0|147.0|12.56506|0.01428 +2016-07-01|-38.0|148.0|12.99115|0.01616 +2016-07-01|-38.0|149.0|13.40766|0.01805 +2016-07-01|-38.0|150.0|13.81437|0.01996 +2016-07-01|-38.0|151.0|14.21104|0.02188 +2016-07-01|-38.0|152.0|14.59747|0.02379 +2016-07-01|-38.0|153.0|14.97343|0.0257 +2016-07-01|-38.0|154.0|15.33873|0.0276 +2016-07-01|-38.0|155.0|15.69315|0.02948 +2016-07-01|-38.0|156.0|16.0365|0.03134 +2016-07-01|-38.0|157.0|16.36862|0.03317 +2016-07-01|-38.0|158.0|16.68933|0.03496 +2016-07-01|-38.0|159.0|16.99849|0.03672 +2016-07-01|-38.0|160.0|17.29598|0.03843 +2016-07-01|-38.0|161.0|17.58169|0.04009 +2016-07-01|-38.0|162.0|17.85555|0.0417 +2016-07-01|-38.0|163.0|18.11751|0.04324 +2016-07-01|-38.0|164.0|18.36756|0.04473 +2016-07-01|-38.0|165.0|18.60572|0.04614 +2016-07-01|-38.0|166.0|18.83203|0.04749 +2016-07-01|-38.0|167.0|19.0466|0.04875 +2016-07-01|-38.0|168.0|19.24956|0.04994 +2016-07-01|-38.0|169.0|19.44107|0.05105 +2016-07-01|-38.0|170.0|19.62133|0.05207 +2016-07-01|-38.0|171.0|19.7906|0.053 +2016-07-01|-38.0|172.0|19.94916|0.05384 +2016-07-01|-38.0|173.0|20.0973|0.05459 +2016-07-01|-38.0|174.0|20.23538|0.05524 +2016-07-01|-38.0|175.0|20.36377|0.0558 +2016-07-01|-38.0|176.0|20.48286|0.05626 +2016-07-01|-38.0|177.0|20.59306|0.05662 +2016-07-01|-38.0|178.0|20.69479|0.05689 +2016-07-01|-38.0|179.0|20.78849|0.05706 +2016-07-01|-38.0|-1.0|-23.23012|0.04482 +2016-07-01|-38.0|-2.0|-23.20017|0.04764 +2016-07-01|-38.0|-3.0|-23.18137|0.04951 +2016-07-01|-38.0|-4.0|-23.17153|0.05046 +2016-07-01|-38.0|-5.0|-23.16852|0.05057 +2016-07-01|-38.0|-6.0|-23.17031|0.04991 +2016-07-01|-38.0|-7.0|-23.17494|0.04856 +2016-07-01|-38.0|-8.0|-23.1806|0.04661 +2016-07-01|-38.0|-9.0|-23.18562|0.04414 +2016-07-01|-38.0|-10.0|-23.18848|0.04125 +2016-07-01|-38.0|-11.0|-23.1878|0.038 +2016-07-01|-38.0|-12.0|-23.18238|0.03448 +2016-07-01|-38.0|-13.0|-23.17114|0.03076 +2016-07-01|-38.0|-14.0|-23.15316|0.02691 +2016-07-01|-38.0|-15.0|-23.12763|0.02297 +2016-07-01|-38.0|-16.0|-23.09387|0.01899 +2016-07-01|-38.0|-17.0|-23.05128|0.01502 +2016-07-01|-38.0|-18.0|-22.99935|0.01109 +2016-07-01|-38.0|-19.0|-22.93762|0.0072 +2016-07-01|-38.0|-20.0|-22.86568|0.00339 +2016-07-01|-38.0|-21.0|-22.78314|-3.6E-4 +2016-07-01|-38.0|-22.0|-22.68962|-0.00403 +2016-07-01|-38.0|-23.0|-22.58474|-0.00763 +2016-07-01|-38.0|-24.0|-22.46809|-0.01118 +2016-07-01|-38.0|-25.0|-22.33924|-0.0147 +2016-07-01|-38.0|-26.0|-22.19772|-0.01819 +2016-07-01|-38.0|-27.0|-22.043|-0.02167 +2016-07-01|-38.0|-28.0|-21.8745|-0.02518 +2016-07-01|-38.0|-29.0|-21.69161|-0.02873 +2016-07-01|-38.0|-30.0|-21.49363|-0.03233 +2016-07-01|-38.0|-31.0|-21.27983|-0.03602 +2016-07-01|-38.0|-32.0|-21.04942|-0.0398 +2016-07-01|-38.0|-33.0|-20.80158|-0.04369 +2016-07-01|-38.0|-34.0|-20.53545|-0.0477 +2016-07-01|-38.0|-35.0|-20.25012|-0.05184 +2016-07-01|-38.0|-36.0|-19.94471|-0.05611 +2016-07-01|-38.0|-37.0|-19.61829|-0.06051 +2016-07-01|-38.0|-38.0|-19.26996|-0.06504 +2016-07-01|-38.0|-39.0|-18.89886|-0.06969 +2016-07-01|-38.0|-40.0|-18.50413|-0.07444 +2016-07-01|-38.0|-41.0|-18.08498|-0.07929 +2016-07-01|-38.0|-42.0|-17.64068|-0.0842 +2016-07-01|-38.0|-43.0|-17.17059|-0.08916 +2016-07-01|-38.0|-44.0|-16.67413|-0.09414 +2016-07-01|-38.0|-45.0|-16.15086|-0.09911 +2016-07-01|-38.0|-46.0|-15.60044|-0.10405 +2016-07-01|-38.0|-47.0|-15.02266|-0.10891 +2016-07-01|-38.0|-48.0|-14.41744|-0.11366 +2016-07-01|-38.0|-49.0|-13.78487|-0.11828 +2016-07-01|-38.0|-50.0|-13.12518|-0.12271 +2016-07-01|-38.0|-51.0|-12.43877|-0.12694 +2016-07-01|-38.0|-52.0|-11.72623|-0.13093 +2016-07-01|-38.0|-53.0|-10.98828|-0.13463 +2016-07-01|-38.0|-54.0|-10.22585|-0.13803 +2016-07-01|-38.0|-55.0|-9.44003|-0.14109 +2016-07-01|-38.0|-56.0|-8.6321|-0.14379 +2016-07-01|-38.0|-57.0|-7.8035|-0.1461 +2016-07-01|-38.0|-58.0|-6.95581|-0.148 +2016-07-01|-38.0|-59.0|-6.09081|-0.14948 +2016-07-01|-38.0|-60.0|-5.21038|-0.15053 +2016-07-01|-38.0|-61.0|-4.31656|-0.15112 +2016-07-01|-38.0|-62.0|-3.4115|-0.15127 +2016-07-01|-38.0|-63.0|-2.49744|-0.15097 +2016-07-01|-38.0|-64.0|-1.57671|-0.15023 +2016-07-01|-38.0|-65.0|-0.65171|-0.14905 +2016-07-01|-38.0|-66.0|0.27513|-0.14745 +2016-07-01|-38.0|-67.0|1.20135|-0.14544 +2016-07-01|-38.0|-68.0|2.12448|-0.14304 +2016-07-01|-38.0|-69.0|3.04209|-0.14028 +2016-07-01|-38.0|-70.0|3.95178|-0.13718 +2016-07-01|-38.0|-71.0|4.85118|-0.13377 +2016-07-01|-38.0|-72.0|5.73804|-0.13009 +2016-07-01|-38.0|-73.0|6.61017|-0.12615 +2016-07-01|-38.0|-74.0|7.46551|-0.122 +2016-07-01|-38.0|-75.0|8.3021|-0.11767 +2016-07-01|-38.0|-76.0|9.11813|-0.11319 +2016-07-01|-38.0|-77.0|9.91192|-0.10859 +2016-07-01|-38.0|-78.0|10.68194|-0.10391 +2016-07-01|-38.0|-79.0|11.42682|-0.09917 +2016-07-01|-38.0|-80.0|12.14534|-0.09442 +2016-07-01|-38.0|-81.0|12.83646|-0.08967 +2016-07-01|-38.0|-82.0|13.49928|-0.08495 +2016-07-01|-38.0|-83.0|14.13308|-0.08029 +2016-07-01|-38.0|-84.0|14.73728|-0.07572 +2016-07-01|-38.0|-85.0|15.31147|-0.07125 +2016-07-01|-38.0|-86.0|15.8554|-0.06691 +2016-07-01|-38.0|-87.0|16.36896|-0.0627 +2016-07-01|-38.0|-88.0|16.85217|-0.05866 +2016-07-01|-38.0|-89.0|17.30521|-0.05478 +2016-07-01|-38.0|-90.0|17.72839|-0.05109 +2016-07-01|-38.0|-91.0|18.12213|-0.04758 +2016-07-01|-38.0|-92.0|18.48697|-0.04428 +2016-07-01|-38.0|-93.0|18.82358|-0.04118 +2016-07-01|-38.0|-94.0|19.13271|-0.0383 +2016-07-01|-38.0|-95.0|19.41521|-0.03562 +2016-07-01|-38.0|-96.0|19.67203|-0.03314 +2016-07-01|-38.0|-97.0|19.90417|-0.03088 +2016-07-01|-38.0|-98.0|20.11273|-0.02882 +2016-07-01|-38.0|-99.0|20.29883|-0.02696 +2016-07-01|-38.0|-100.0|20.46368|-0.02528 +2016-07-01|-38.0|-101.0|20.60849|-0.02379 +2016-07-01|-38.0|-102.0|20.73454|-0.02246 +2016-07-01|-38.0|-103.0|20.84309|-0.0213 +2016-07-01|-38.0|-104.0|20.93545|-0.02027 +2016-07-01|-38.0|-105.0|21.0129|-0.01938 +2016-07-01|-38.0|-106.0|21.07673|-0.0186 +2016-07-01|-38.0|-107.0|21.12821|-0.01792 +2016-07-01|-38.0|-108.0|21.16857|-0.01733 +2016-07-01|-38.0|-109.0|21.19904|-0.01679 +2016-07-01|-38.0|-110.0|21.22078|-0.01631 +2016-07-01|-38.0|-111.0|21.23493|-0.01586 +2016-07-01|-38.0|-112.0|21.24256|-0.01543 +2016-07-01|-38.0|-113.0|21.24469|-0.015 +2016-07-01|-38.0|-114.0|21.24228|-0.01456 +2016-07-01|-38.0|-115.0|21.23624|-0.01409 +2016-07-01|-38.0|-116.0|21.2274|-0.01359 +2016-07-01|-38.0|-117.0|21.21652|-0.01303 +2016-07-01|-38.0|-118.0|21.20432|-0.01243 +2016-07-01|-38.0|-119.0|21.19142|-0.01175 +2016-07-01|-38.0|-120.0|21.17839|-0.01101 +2016-07-01|-38.0|-121.0|21.16574|-0.01019 +2016-07-01|-38.0|-122.0|21.15389|-0.0093 +2016-07-01|-38.0|-123.0|21.14324|-0.00833 +2016-07-01|-38.0|-124.0|21.13409|-0.00728 +2016-07-01|-38.0|-125.0|21.12671|-0.00615 +2016-07-01|-38.0|-126.0|21.1213|-0.00496 +2016-07-01|-38.0|-127.0|21.11802|-0.00369 +2016-07-01|-38.0|-128.0|21.11697|-0.00237 +2016-07-01|-38.0|-129.0|21.11821|-9.8E-4 +2016-07-01|-38.0|-130.0|21.12177|4.5E-4 +2016-07-01|-38.0|-131.0|21.12763|0.00193 +2016-07-01|-38.0|-132.0|21.13574|0.00344 +2016-07-01|-38.0|-133.0|21.14601|0.00498 +2016-07-01|-38.0|-134.0|21.15833|0.00654 +2016-07-01|-38.0|-135.0|21.17256|0.00812 +2016-07-01|-38.0|-136.0|21.18855|0.0097 +2016-07-01|-38.0|-137.0|21.20611|0.01128 +2016-07-01|-38.0|-138.0|21.22505|0.01286 +2016-07-01|-38.0|-139.0|21.24515|0.01443 +2016-07-01|-38.0|-140.0|21.26621|0.01599 +2016-07-01|-38.0|-141.0|21.28799|0.01752 +2016-07-01|-38.0|-142.0|21.31027|0.01904 +2016-07-01|-38.0|-143.0|21.3328|0.02054 +2016-07-01|-38.0|-144.0|21.35536|0.02201 +2016-07-01|-38.0|-145.0|21.37772|0.02346 +2016-07-01|-38.0|-146.0|21.39966|0.02488 +2016-07-01|-38.0|-147.0|21.42095|0.02628 +2016-07-01|-38.0|-148.0|21.4414|0.02766 +2016-07-01|-38.0|-149.0|21.46081|0.02902 +2016-07-01|-38.0|-150.0|21.47899|0.03036 +2016-07-01|-38.0|-151.0|21.49578|0.03167 +2016-07-01|-38.0|-152.0|21.51103|0.03297 +2016-07-01|-38.0|-153.0|21.5246|0.03426 +2016-07-01|-38.0|-154.0|21.53636|0.03553 +2016-07-01|-38.0|-155.0|21.54621|0.03679 +2016-07-01|-38.0|-156.0|21.55404|0.03803 +2016-07-01|-38.0|-157.0|21.55978|0.03926 +2016-07-01|-38.0|-158.0|21.56334|0.04047 +2016-07-01|-38.0|-159.0|21.56465|0.04167 +2016-07-01|-38.0|-160.0|21.56366|0.04285 +2016-07-01|-38.0|-161.0|21.5603|0.04402 +2016-07-01|-38.0|-162.0|21.55451|0.04516 +2016-07-01|-38.0|-163.0|21.54622|0.04627 +2016-07-01|-38.0|-164.0|21.53534|0.04736 +2016-07-01|-38.0|-165.0|21.52181|0.04841 +2016-07-01|-38.0|-166.0|21.5055|0.04943 +2016-07-01|-38.0|-167.0|21.48631|0.0504 +2016-07-01|-38.0|-168.0|21.46409|0.05133 +2016-07-01|-38.0|-169.0|21.43867|0.05221 +2016-07-01|-38.0|-170.0|21.40987|0.05302 +2016-07-01|-38.0|-171.0|21.37747|0.05378 +2016-07-01|-38.0|-172.0|21.34122|0.05447 +2016-07-01|-38.0|-173.0|21.30086|0.05509 +2016-07-01|-38.0|-174.0|21.25607|0.05564 +2016-07-01|-38.0|-175.0|21.20654|0.05611 +2016-07-01|-38.0|-176.0|21.15191|0.05649 +2016-07-01|-38.0|-177.0|21.09181|0.05679 +2016-07-01|-38.0|-178.0|21.02584|0.05699 +2016-07-01|-38.0|-179.0|20.95358|0.05711 +2016-07-01|-39.0|0.0|-23.16879|0.03391 +2016-07-01|-39.0|1.0|-23.26702|0.02838 +2016-07-01|-39.0|2.0|-23.38393|0.02189 +2016-07-01|-39.0|3.0|-23.52125|0.01446 +2016-07-01|-39.0|4.0|-23.68061|0.00613 +2016-07-01|-39.0|5.0|-23.86341|-0.00304 +2016-07-01|-39.0|6.0|-24.07084|-0.01298 +2016-07-01|-39.0|7.0|-24.30386|-0.0236 +2016-07-01|-39.0|8.0|-24.56313|-0.0348 +2016-07-01|-39.0|9.0|-24.84905|-0.04647 +2016-07-01|-39.0|10.0|-25.16172|-0.05848 +2016-07-01|-39.0|11.0|-25.50098|-0.07073 +2016-07-01|-39.0|12.0|-25.86634|-0.08307 +2016-07-01|-39.0|13.0|-26.25707|-0.09537 +2016-07-01|-39.0|14.0|-26.67217|-0.10753 +2016-07-01|-39.0|15.0|-27.11042|-0.11941 +2016-07-01|-39.0|16.0|-27.57037|-0.1309 +2016-07-01|-39.0|17.0|-28.0504|-0.14191 +2016-07-01|-39.0|18.0|-28.54874|-0.15234 +2016-07-01|-39.0|19.0|-29.06349|-0.16212 +2016-07-01|-39.0|20.0|-29.59267|-0.17118 +2016-07-01|-39.0|21.0|-30.13424|-0.17946 +2016-07-01|-39.0|22.0|-30.6861|-0.18693 +2016-07-01|-39.0|23.0|-31.24617|-0.19355 +2016-07-01|-39.0|24.0|-31.81236|-0.19932 +2016-07-01|-39.0|25.0|-32.38265|-0.20423 +2016-07-01|-39.0|26.0|-32.95502|-0.20827 +2016-07-01|-39.0|27.0|-33.52755|-0.21146 +2016-07-01|-39.0|28.0|-34.09837|-0.21383 +2016-07-01|-39.0|29.0|-34.66572|-0.21539 +2016-07-01|-39.0|30.0|-35.22791|-0.21618 +2016-07-01|-39.0|31.0|-35.78333|-0.21623 +2016-07-01|-39.0|32.0|-36.33048|-0.21558 +2016-07-01|-39.0|33.0|-36.86794|-0.21426 +2016-07-01|-39.0|34.0|-37.39438|-0.21232 +2016-07-01|-39.0|35.0|-37.90854|-0.20979 +2016-07-01|-39.0|36.0|-38.40928|-0.20671 +2016-07-01|-39.0|37.0|-38.89549|-0.20312 +2016-07-01|-39.0|38.0|-39.36615|-0.19905 +2016-07-01|-39.0|39.0|-39.82033|-0.19454 +2016-07-01|-39.0|40.0|-40.25711|-0.18961 +2016-07-01|-39.0|41.0|-40.67567|-0.18429 +2016-07-01|-39.0|42.0|-41.07522|-0.17861 +2016-07-01|-39.0|43.0|-41.45502|-0.17258 +2016-07-01|-39.0|44.0|-41.81439|-0.16624 +2016-07-01|-39.0|45.0|-42.15267|-0.15959 +2016-07-01|-39.0|46.0|-42.46925|-0.15266 +2016-07-01|-39.0|47.0|-42.76354|-0.14545 +2016-07-01|-39.0|48.0|-43.035|-0.13798 +2016-07-01|-39.0|49.0|-43.28311|-0.13025 +2016-07-01|-39.0|50.0|-43.50737|-0.12227 +2016-07-01|-39.0|51.0|-43.70734|-0.11405 +2016-07-01|-39.0|52.0|-43.88256|-0.1056 +2016-07-01|-39.0|53.0|-44.03264|-0.09691 +2016-07-01|-39.0|54.0|-44.15719|-0.088 +2016-07-01|-39.0|55.0|-44.25583|-0.07886 +2016-07-01|-39.0|56.0|-44.32823|-0.06951 +2016-07-01|-39.0|57.0|-44.37406|-0.05994 +2016-07-01|-39.0|58.0|-44.39302|-0.05016 +2016-07-01|-39.0|59.0|-44.38482|-0.04018 +2016-07-01|-39.0|60.0|-44.3492|-0.03 +2016-07-01|-39.0|61.0|-44.2859|-0.01964 +2016-07-01|-39.0|62.0|-44.19466|-0.00911 +2016-07-01|-39.0|63.0|-44.07527|0.00158 +2016-07-01|-39.0|64.0|-43.92749|0.01241 +2016-07-01|-39.0|65.0|-43.75111|0.02337 +2016-07-01|-39.0|66.0|-43.54592|0.03442 +2016-07-01|-39.0|67.0|-43.3117|0.04556 +2016-07-01|-39.0|68.0|-43.04826|0.05674 +2016-07-01|-39.0|69.0|-42.75539|0.06793 +2016-07-01|-39.0|70.0|-42.4329|0.07911 +2016-07-01|-39.0|71.0|-42.08058|0.09023 +2016-07-01|-39.0|72.0|-41.69826|0.10125 +2016-07-01|-39.0|73.0|-41.28577|0.11213 +2016-07-01|-39.0|74.0|-40.84293|0.12281 +2016-07-01|-39.0|75.0|-40.36962|0.13325 +2016-07-01|-39.0|76.0|-39.86573|0.14339 +2016-07-01|-39.0|77.0|-39.3312|0.15318 +2016-07-01|-39.0|78.0|-38.766|0.16255 +2016-07-01|-39.0|79.0|-38.17019|0.17145 +2016-07-01|-39.0|80.0|-37.54388|0.17982 +2016-07-01|-39.0|81.0|-36.8873|0.18759 +2016-07-01|-39.0|82.0|-36.20076|0.1947 +2016-07-01|-39.0|83.0|-35.4847|0.2011 +2016-07-01|-39.0|84.0|-34.73969|0.20673 +2016-07-01|-39.0|85.0|-33.96646|0.21154 +2016-07-01|-39.0|86.0|-33.16589|0.21548 +2016-07-01|-39.0|87.0|-32.33903|0.2185 +2016-07-01|-39.0|88.0|-31.48713|0.22058 +2016-07-01|-39.0|89.0|-30.61159|0.22168 +2016-07-01|-39.0|90.0|-29.71402|0.2218 +2016-07-01|-39.0|91.0|-28.79619|0.22092 +2016-07-01|-39.0|92.0|-27.86004|0.21904 +2016-07-01|-39.0|93.0|-26.90769|0.2162 +2016-07-01|-39.0|94.0|-25.94137|0.21241 +2016-07-01|-39.0|95.0|-24.96343|0.20773 +2016-07-01|-39.0|96.0|-23.9763|0.20219 +2016-07-01|-39.0|97.0|-22.98247|0.19586 +2016-07-01|-39.0|98.0|-21.98446|0.18882 +2016-07-01|-39.0|99.0|-20.98476|0.18114 +2016-07-01|-39.0|100.0|-19.98582|0.17292 +2016-07-01|-39.0|101.0|-18.99001|0.16424 +2016-07-01|-39.0|102.0|-17.99958|0.15521 +2016-07-01|-39.0|103.0|-17.01665|0.14591 +2016-07-01|-39.0|104.0|-16.04314|0.13645 +2016-07-01|-39.0|105.0|-15.08082|0.12691 +2016-07-01|-39.0|106.0|-14.13122|0.11739 +2016-07-01|-39.0|107.0|-13.19567|0.10798 +2016-07-01|-39.0|108.0|-12.27528|0.09873 +2016-07-01|-39.0|109.0|-11.37093|0.08973 +2016-07-01|-39.0|110.0|-10.48329|0.08104 +2016-07-01|-39.0|111.0|-9.61281|0.07271 +2016-07-01|-39.0|112.0|-8.75975|0.06477 +2016-07-01|-39.0|113.0|-7.9242|0.05728 +2016-07-01|-39.0|114.0|-7.10606|0.05025 +2016-07-01|-39.0|115.0|-6.30512|0.0437 +2016-07-01|-39.0|116.0|-5.52102|0.03764 +2016-07-01|-39.0|117.0|-4.75331|0.03209 +2016-07-01|-39.0|118.0|-4.00147|0.02703 +2016-07-01|-39.0|119.0|-3.2649|0.02247 +2016-07-01|-39.0|120.0|-2.54298|0.01839 +2016-07-01|-39.0|121.0|-1.83505|0.01477 +2016-07-01|-39.0|122.0|-1.14048|0.01161 +2016-07-01|-39.0|123.0|-0.45861|0.00888 +2016-07-01|-39.0|124.0|0.21117|0.00656 +2016-07-01|-39.0|125.0|0.86945|0.00463 +2016-07-01|-39.0|126.0|1.51677|0.00305 +2016-07-01|-39.0|127.0|2.15361|0.00182 +2016-07-01|-39.0|128.0|2.78041|9.1E-4 +2016-07-01|-39.0|129.0|3.39755|2.8E-4 +2016-07-01|-39.0|130.0|4.00534|-7.0E-5 +2016-07-01|-39.0|131.0|4.60405|-1.8E-4 +2016-07-01|-39.0|132.0|5.19388|-7.0E-5 +2016-07-01|-39.0|133.0|5.77495|2.6E-4 +2016-07-01|-39.0|134.0|6.34739|7.6E-4 +2016-07-01|-39.0|135.0|6.91121|0.00144 +2016-07-01|-39.0|136.0|7.46644|0.00227 +2016-07-01|-39.0|137.0|8.01303|0.00324 +2016-07-01|-39.0|138.0|8.55091|0.00433 +2016-07-01|-39.0|139.0|9.07999|0.00553 +2016-07-01|-39.0|140.0|9.60014|0.00682 +2016-07-01|-39.0|141.0|10.11122|0.00821 +2016-07-01|-39.0|142.0|10.61308|0.00967 +2016-07-01|-39.0|143.0|11.10554|0.01121 +2016-07-01|-39.0|144.0|11.58841|0.0128 +2016-07-01|-39.0|145.0|12.06152|0.01444 +2016-07-01|-39.0|146.0|12.52467|0.01613 +2016-07-01|-39.0|147.0|12.97767|0.01786 +2016-07-01|-39.0|148.0|13.42031|0.01962 +2016-07-01|-39.0|149.0|13.8524|0.0214 +2016-07-01|-39.0|150.0|14.27375|0.0232 +2016-07-01|-39.0|151.0|14.68416|0.02501 +2016-07-01|-39.0|152.0|15.08344|0.02683 +2016-07-01|-39.0|153.0|15.4714|0.02864 +2016-07-01|-39.0|154.0|15.84787|0.03045 +2016-07-01|-39.0|155.0|16.21268|0.03225 +2016-07-01|-39.0|156.0|16.56568|0.03402 +2016-07-01|-39.0|157.0|16.90671|0.03578 +2016-07-01|-39.0|158.0|17.23566|0.0375 +2016-07-01|-39.0|159.0|17.55241|0.03919 +2016-07-01|-39.0|160.0|17.85688|0.04084 +2016-07-01|-39.0|161.0|18.14899|0.04245 +2016-07-01|-39.0|162.0|18.42872|0.044 +2016-07-01|-39.0|163.0|18.69604|0.0455 +2016-07-01|-39.0|164.0|18.95099|0.04694 +2016-07-01|-39.0|165.0|19.19362|0.04831 +2016-07-01|-39.0|166.0|19.42401|0.04961 +2016-07-01|-39.0|167.0|19.64229|0.05085 +2016-07-01|-39.0|168.0|19.84863|0.052 +2016-07-01|-39.0|169.0|20.04321|0.05308 +2016-07-01|-39.0|170.0|20.22627|0.05407 +2016-07-01|-39.0|171.0|20.39808|0.05497 +2016-07-01|-39.0|172.0|20.55893|0.05579 +2016-07-01|-39.0|173.0|20.70916|0.05652 +2016-07-01|-39.0|174.0|20.84911|0.05716 +2016-07-01|-39.0|175.0|20.97918|0.0577 +2016-07-01|-39.0|176.0|21.09976|0.05815 +2016-07-01|-39.0|177.0|21.21127|0.05851 +2016-07-01|-39.0|178.0|21.31413|0.05876 +2016-07-01|-39.0|179.0|21.4088|0.05893 +2016-07-01|-39.0|-1.0|-23.08733|0.03848 +2016-07-01|-39.0|-2.0|-23.02067|0.04209 +2016-07-01|-39.0|-3.0|-22.9668|0.04479 +2016-07-01|-39.0|-4.0|-22.92368|0.04659 +2016-07-01|-39.0|-5.0|-22.88931|0.04757 +2016-07-01|-39.0|-6.0|-22.8617|0.04778 +2016-07-01|-39.0|-7.0|-22.83898|0.04729 +2016-07-01|-39.0|-8.0|-22.81934|0.04617 +2016-07-01|-39.0|-9.0|-22.80112|0.0445 +2016-07-01|-39.0|-10.0|-22.78274|0.04236 +2016-07-01|-39.0|-11.0|-22.76279|0.03983 +2016-07-01|-39.0|-12.0|-22.73996|0.03696 +2016-07-01|-39.0|-13.0|-22.7131|0.03384 +2016-07-01|-39.0|-14.0|-22.68115|0.03052 +2016-07-01|-39.0|-15.0|-22.64319|0.02705 +2016-07-01|-39.0|-16.0|-22.5984|0.02348 +2016-07-01|-39.0|-17.0|-22.54605|0.01985 +2016-07-01|-39.0|-18.0|-22.48548|0.0162 +2016-07-01|-39.0|-19.0|-22.41609|0.01254 +2016-07-01|-39.0|-20.0|-22.33732|0.00889 +2016-07-01|-39.0|-21.0|-22.24867|0.00527 +2016-07-01|-39.0|-22.0|-22.14961|0.00167 +2016-07-01|-39.0|-23.0|-22.03965|-0.00191 +2016-07-01|-39.0|-24.0|-21.91826|-0.00548 +2016-07-01|-39.0|-25.0|-21.7849|-0.00903 +2016-07-01|-39.0|-26.0|-21.63902|-0.01259 +2016-07-01|-39.0|-27.0|-21.48|-0.01617 +2016-07-01|-39.0|-28.0|-21.30721|-0.01979 +2016-07-01|-39.0|-29.0|-21.11996|-0.02347 +2016-07-01|-39.0|-30.0|-20.91752|-0.02721 +2016-07-01|-39.0|-31.0|-20.69911|-0.03104 +2016-07-01|-39.0|-32.0|-20.46395|-0.03496 +2016-07-01|-39.0|-33.0|-20.21117|-0.03899 +2016-07-01|-39.0|-34.0|-19.93993|-0.04313 +2016-07-01|-39.0|-35.0|-19.64934|-0.0474 +2016-07-01|-39.0|-36.0|-19.33852|-0.05178 +2016-07-01|-39.0|-37.0|-19.00658|-0.05629 +2016-07-01|-39.0|-38.0|-18.65266|-0.0609 +2016-07-01|-39.0|-39.0|-18.27592|-0.06562 +2016-07-01|-39.0|-40.0|-17.87556|-0.07043 +2016-07-01|-39.0|-41.0|-17.45085|-0.07531 +2016-07-01|-39.0|-42.0|-17.00111|-0.08025 +2016-07-01|-39.0|-43.0|-16.52575|-0.08522 +2016-07-01|-39.0|-44.0|-16.02426|-0.09019 +2016-07-01|-39.0|-45.0|-15.49625|-0.09513 +2016-07-01|-39.0|-46.0|-14.94144|-0.10003 +2016-07-01|-39.0|-47.0|-14.35969|-0.10484 +2016-07-01|-39.0|-48.0|-13.75097|-0.10953 +2016-07-01|-39.0|-49.0|-13.11542|-0.11408 +2016-07-01|-39.0|-50.0|-12.45332|-0.11844 +2016-07-01|-39.0|-51.0|-11.76511|-0.12259 +2016-07-01|-39.0|-52.0|-11.05141|-0.12649 +2016-07-01|-39.0|-53.0|-10.31299|-0.13011 +2016-07-01|-39.0|-54.0|-9.55078|-0.13343 +2016-07-01|-39.0|-55.0|-8.76591|-0.13641 +2016-07-01|-39.0|-56.0|-7.95963|-0.13904 +2016-07-01|-39.0|-57.0|-7.1334|-0.14129 +2016-07-01|-39.0|-58.0|-6.28878|-0.14313 +2016-07-01|-39.0|-59.0|-5.42752|-0.14457 +2016-07-01|-39.0|-60.0|-4.55149|-0.14558 +2016-07-01|-39.0|-61.0|-3.66267|-0.14616 +2016-07-01|-39.0|-62.0|-2.76316|-0.14631 +2016-07-01|-39.0|-63.0|-1.85514|-0.14602 +2016-07-01|-39.0|-64.0|-0.9409|-0.1453 +2016-07-01|-39.0|-65.0|-0.02273|-0.14417 +2016-07-01|-39.0|-66.0|0.89698|-0.14262 +2016-07-01|-39.0|-67.0|1.81588|-0.14069 +2016-07-01|-39.0|-68.0|2.73157|-0.13838 +2016-07-01|-39.0|-69.0|3.6417|-0.13572 +2016-07-01|-39.0|-70.0|4.54395|-0.13274 +2016-07-01|-39.0|-71.0|5.43606|-0.12946 +2016-07-01|-39.0|-72.0|6.31583|-0.12592 +2016-07-01|-39.0|-73.0|7.18118|-0.12213 +2016-07-01|-39.0|-74.0|8.03009|-0.11814 +2016-07-01|-39.0|-75.0|8.86069|-0.11397 +2016-07-01|-39.0|-76.0|9.67122|-0.10965 +2016-07-01|-39.0|-77.0|10.46006|-0.10522 +2016-07-01|-39.0|-78.0|11.22572|-0.10072 +2016-07-01|-39.0|-79.0|11.96687|-0.09615 +2016-07-01|-39.0|-80.0|12.68233|-0.09157 +2016-07-01|-39.0|-81.0|13.37107|-0.08699 +2016-07-01|-39.0|-82.0|14.03221|-0.08244 +2016-07-01|-39.0|-83.0|14.66502|-0.07794 +2016-07-01|-39.0|-84.0|15.26894|-0.07352 +2016-07-01|-39.0|-85.0|15.84354|-0.0692 +2016-07-01|-39.0|-86.0|16.38855|-0.065 +2016-07-01|-39.0|-87.0|16.90384|-0.06093 +2016-07-01|-39.0|-88.0|17.3894|-0.05701 +2016-07-01|-39.0|-89.0|17.84537|-0.05325 +2016-07-01|-39.0|-90.0|18.27202|-0.04966 +2016-07-01|-39.0|-91.0|18.66972|-0.04626 +2016-07-01|-39.0|-92.0|19.03898|-0.04304 +2016-07-01|-39.0|-93.0|19.38039|-0.04002 +2016-07-01|-39.0|-94.0|19.69465|-0.0372 +2016-07-01|-39.0|-95.0|19.98255|-0.03457 +2016-07-01|-39.0|-96.0|20.24498|-0.03215 +2016-07-01|-39.0|-97.0|20.48288|-0.02992 +2016-07-01|-39.0|-98.0|20.69728|-0.02789 +2016-07-01|-39.0|-99.0|20.88925|-0.02604 +2016-07-01|-39.0|-100.0|21.05992|-0.02437 +2016-07-01|-39.0|-101.0|21.21046|-0.02288 +2016-07-01|-39.0|-102.0|21.34207|-0.02154 +2016-07-01|-39.0|-103.0|21.45598|-0.02036 +2016-07-01|-39.0|-104.0|21.55343|-0.01931 +2016-07-01|-39.0|-105.0|21.63566|-0.01839 +2016-07-01|-39.0|-106.0|21.70391|-0.01758 +2016-07-01|-39.0|-107.0|21.75941|-0.01686 +2016-07-01|-39.0|-108.0|21.80338|-0.01622 +2016-07-01|-39.0|-109.0|21.837|-0.01564 +2016-07-01|-39.0|-110.0|21.86143|-0.01511 +2016-07-01|-39.0|-111.0|21.87778|-0.01461 +2016-07-01|-39.0|-112.0|21.88711|-0.01413 +2016-07-01|-39.0|-113.0|21.89045|-0.01365 +2016-07-01|-39.0|-114.0|21.88876|-0.01316 +2016-07-01|-39.0|-115.0|21.88295|-0.01265 +2016-07-01|-39.0|-116.0|21.87388|-0.0121 +2016-07-01|-39.0|-117.0|21.86232|-0.01151 +2016-07-01|-39.0|-118.0|21.84901|-0.01086 +2016-07-01|-39.0|-119.0|21.83461|-0.01015 +2016-07-01|-39.0|-120.0|21.81971|-0.00937 +2016-07-01|-39.0|-121.0|21.80486|-0.00852 +2016-07-01|-39.0|-122.0|21.79052|-0.0076 +2016-07-01|-39.0|-123.0|21.77712|-0.00661 +2016-07-01|-39.0|-124.0|21.76501|-0.00554 +2016-07-01|-39.0|-125.0|21.75448|-0.00439 +2016-07-01|-39.0|-126.0|21.74579|-0.00318 +2016-07-01|-39.0|-127.0|21.73914|-0.0019 +2016-07-01|-39.0|-128.0|21.73466|-5.6E-4 +2016-07-01|-39.0|-129.0|21.73246|8.3E-4 +2016-07-01|-39.0|-130.0|21.73259|0.00228 +2016-07-01|-39.0|-131.0|21.73509|0.00377 +2016-07-01|-39.0|-132.0|21.73991|0.00529 +2016-07-01|-39.0|-133.0|21.74703|0.00684 +2016-07-01|-39.0|-134.0|21.75634|0.00841 +2016-07-01|-39.0|-135.0|21.76774|0.01 +2016-07-01|-39.0|-136.0|21.78109|0.01159 +2016-07-01|-39.0|-137.0|21.79624|0.01319 +2016-07-01|-39.0|-138.0|21.813|0.01478 +2016-07-01|-39.0|-139.0|21.83117|0.01636 +2016-07-01|-39.0|-140.0|21.85057|0.01794 +2016-07-01|-39.0|-141.0|21.87095|0.01949 +2016-07-01|-39.0|-142.0|21.89211|0.02103 +2016-07-01|-39.0|-143.0|21.91381|0.02254 +2016-07-01|-39.0|-144.0|21.93582|0.02403 +2016-07-01|-39.0|-145.0|21.9579|0.0255 +2016-07-01|-39.0|-146.0|21.97983|0.02694 +2016-07-01|-39.0|-147.0|22.00139|0.02836 +2016-07-01|-39.0|-148.0|22.02236|0.02975 +2016-07-01|-39.0|-149.0|22.04253|0.03112 +2016-07-01|-39.0|-150.0|22.06171|0.03247 +2016-07-01|-39.0|-151.0|22.07972|0.0338 +2016-07-01|-39.0|-152.0|22.09638|0.03511 +2016-07-01|-39.0|-153.0|22.11153|0.03641 +2016-07-01|-39.0|-154.0|22.12504|0.03768 +2016-07-01|-39.0|-155.0|22.13676|0.03894 +2016-07-01|-39.0|-156.0|22.14658|0.04018 +2016-07-01|-39.0|-157.0|22.15438|0.04141 +2016-07-01|-39.0|-158.0|22.16008|0.04262 +2016-07-01|-39.0|-159.0|22.16357|0.04381 +2016-07-01|-39.0|-160.0|22.16477|0.04498 +2016-07-01|-39.0|-161.0|22.16359|0.04613 +2016-07-01|-39.0|-162.0|22.15994|0.04726 +2016-07-01|-39.0|-163.0|22.15374|0.04836 +2016-07-01|-39.0|-164.0|22.14488|0.04943 +2016-07-01|-39.0|-165.0|22.13326|0.05047 +2016-07-01|-39.0|-166.0|22.11876|0.05146 +2016-07-01|-39.0|-167.0|22.10124|0.05242 +2016-07-01|-39.0|-168.0|22.08055|0.05333 +2016-07-01|-39.0|-169.0|22.0565|0.05419 +2016-07-01|-39.0|-170.0|22.02891|0.05499 +2016-07-01|-39.0|-171.0|21.99754|0.05573 +2016-07-01|-39.0|-172.0|21.96214|0.0564 +2016-07-01|-39.0|-173.0|21.92244|0.05701 +2016-07-01|-39.0|-174.0|21.87814|0.05754 +2016-07-01|-39.0|-175.0|21.82891|0.058 +2016-07-01|-39.0|-176.0|21.77439|0.05837 +2016-07-01|-39.0|-177.0|21.71421|0.05866 +2016-07-01|-39.0|-178.0|21.64798|0.05886 +2016-07-01|-39.0|-179.0|21.57529|0.05898 +2016-07-01|-40.0|0.0|-23.03938|0.02703 +2016-07-01|-40.0|1.0|-23.17601|0.02091 +2016-07-01|-40.0|2.0|-23.33212|0.01392 +2016-07-01|-40.0|3.0|-23.50925|0.00607 +2016-07-01|-40.0|4.0|-23.70875|-0.00259 +2016-07-01|-40.0|5.0|-23.93179|-0.01199 +2016-07-01|-40.0|6.0|-24.17931|-0.02206 +2016-07-01|-40.0|7.0|-24.45203|-0.03272 +2016-07-01|-40.0|8.0|-24.75039|-0.04387 +2016-07-01|-40.0|9.0|-25.07458|-0.0554 +2016-07-01|-40.0|10.0|-25.42453|-0.0672 +2016-07-01|-40.0|11.0|-25.79988|-0.07916 +2016-07-01|-40.0|12.0|-26.20003|-0.09115 +2016-07-01|-40.0|13.0|-26.62414|-0.10306 +2016-07-01|-40.0|14.0|-27.07114|-0.11478 +2016-07-01|-40.0|15.0|-27.53973|-0.12621 +2016-07-01|-40.0|16.0|-28.02847|-0.13723 +2016-07-01|-40.0|17.0|-28.53572|-0.14777 +2016-07-01|-40.0|18.0|-29.05974|-0.15774 +2016-07-01|-40.0|19.0|-29.59869|-0.16707 +2016-07-01|-40.0|20.0|-30.15064|-0.17571 +2016-07-01|-40.0|21.0|-30.71362|-0.18361 +2016-07-01|-40.0|22.0|-31.28564|-0.19073 +2016-07-01|-40.0|23.0|-31.86471|-0.19705 +2016-07-01|-40.0|24.0|-32.44886|-0.20256 +2016-07-01|-40.0|25.0|-33.03615|-0.20725 +2016-07-01|-40.0|26.0|-33.6247|-0.21113 +2016-07-01|-40.0|27.0|-34.21269|-0.21421 +2016-07-01|-40.0|28.0|-34.79837|-0.2165 +2016-07-01|-40.0|29.0|-35.38007|-0.21804 +2016-07-01|-40.0|30.0|-35.95621|-0.21885 +2016-07-01|-40.0|31.0|-36.52528|-0.21896 +2016-07-01|-40.0|32.0|-37.08587|-0.21841 +2016-07-01|-40.0|33.0|-37.63664|-0.21722 +2016-07-01|-40.0|34.0|-38.17635|-0.21544 +2016-07-01|-40.0|35.0|-38.70382|-0.21309 +2016-07-01|-40.0|36.0|-39.21796|-0.21022 +2016-07-01|-40.0|37.0|-39.71774|-0.20686 +2016-07-01|-40.0|38.0|-40.2022|-0.20304 +2016-07-01|-40.0|39.0|-40.67044|-0.19878 +2016-07-01|-40.0|40.0|-41.12161|-0.19412 +2016-07-01|-40.0|41.0|-41.55493|-0.18909 +2016-07-01|-40.0|42.0|-41.96964|-0.18369 +2016-07-01|-40.0|43.0|-42.36504|-0.17797 +2016-07-01|-40.0|44.0|-42.74048|-0.17192 +2016-07-01|-40.0|45.0|-43.09532|-0.16558 +2016-07-01|-40.0|46.0|-43.42897|-0.15895 +2016-07-01|-40.0|47.0|-43.74087|-0.15204 +2016-07-01|-40.0|48.0|-44.03048|-0.14487 +2016-07-01|-40.0|49.0|-44.2973|-0.13744 +2016-07-01|-40.0|50.0|-44.54083|-0.12976 +2016-07-01|-40.0|51.0|-44.76063|-0.12184 +2016-07-01|-40.0|52.0|-44.95624|-0.11368 +2016-07-01|-40.0|53.0|-45.12725|-0.10528 +2016-07-01|-40.0|54.0|-45.27327|-0.09665 +2016-07-01|-40.0|55.0|-45.3939|-0.08779 +2016-07-01|-40.0|56.0|-45.4888|-0.07871 +2016-07-01|-40.0|57.0|-45.5576|-0.0694 +2016-07-01|-40.0|58.0|-45.59998|-0.05988 +2016-07-01|-40.0|59.0|-45.61561|-0.05014 +2016-07-01|-40.0|60.0|-45.60419|-0.0402 +2016-07-01|-40.0|61.0|-45.56543|-0.03006 +2016-07-01|-40.0|62.0|-45.49903|-0.01974 +2016-07-01|-40.0|63.0|-45.40471|-0.00924 +2016-07-01|-40.0|64.0|-45.28219|0.00142 +2016-07-01|-40.0|65.0|-45.13121|0.01222 +2016-07-01|-40.0|66.0|-44.95148|0.02315 +2016-07-01|-40.0|67.0|-44.74275|0.03418 +2016-07-01|-40.0|68.0|-44.50474|0.04528 +2016-07-01|-40.0|69.0|-44.23718|0.05642 +2016-07-01|-40.0|70.0|-43.93981|0.06758 +2016-07-01|-40.0|71.0|-43.61235|0.07872 +2016-07-01|-40.0|72.0|-43.25454|0.0898 +2016-07-01|-40.0|73.0|-42.86613|0.10078 +2016-07-01|-40.0|74.0|-42.44686|0.1116 +2016-07-01|-40.0|75.0|-41.99653|0.12223 +2016-07-01|-40.0|76.0|-41.51491|0.13261 +2016-07-01|-40.0|77.0|-41.00185|0.14269 +2016-07-01|-40.0|78.0|-40.45721|0.15241 +2016-07-01|-40.0|79.0|-39.88094|0.1617 +2016-07-01|-40.0|80.0|-39.27303|0.17052 +2016-07-01|-40.0|81.0|-38.63356|0.1788 +2016-07-01|-40.0|82.0|-37.96271|0.18648 +2016-07-01|-40.0|83.0|-37.26078|0.1935 +2016-07-01|-40.0|84.0|-36.52818|0.1998 +2016-07-01|-40.0|85.0|-35.76548|0.20532 +2016-07-01|-40.0|86.0|-34.9734|0.21002 +2016-07-01|-40.0|87.0|-34.15281|0.21385 +2016-07-01|-40.0|88.0|-33.30479|0.21677 +2016-07-01|-40.0|89.0|-32.43059|0.21875 +2016-07-01|-40.0|90.0|-31.53162|0.21976 +2016-07-01|-40.0|91.0|-30.60953|0.21978 +2016-07-01|-40.0|92.0|-29.66611|0.21883 +2016-07-01|-40.0|93.0|-28.70334|0.21689 +2016-07-01|-40.0|94.0|-27.72335|0.21401 +2016-07-01|-40.0|95.0|-26.72839|0.2102 +2016-07-01|-40.0|96.0|-25.72086|0.2055 +2016-07-01|-40.0|97.0|-24.70321|0.19999 +2016-07-01|-40.0|98.0|-23.67796|0.19371 +2016-07-01|-40.0|99.0|-22.64765|0.18674 +2016-07-01|-40.0|100.0|-21.61479|0.17918 +2016-07-01|-40.0|101.0|-20.58185|0.17109 +2016-07-01|-40.0|102.0|-19.55123|0.16259 +2016-07-01|-40.0|103.0|-18.5252|0.15375 +2016-07-01|-40.0|104.0|-17.50589|0.14469 +2016-07-01|-40.0|105.0|-16.49525|0.13549 +2016-07-01|-40.0|106.0|-15.49507|0.12624 +2016-07-01|-40.0|107.0|-14.50693|0.11703 +2016-07-01|-40.0|108.0|-13.53217|0.10794 +2016-07-01|-40.0|109.0|-12.57196|0.09904 +2016-07-01|-40.0|110.0|-11.62721|0.09041 +2016-07-01|-40.0|111.0|-10.69865|0.08208 +2016-07-01|-40.0|112.0|-9.7868|0.07413 +2016-07-01|-40.0|113.0|-8.89198|0.06658 +2016-07-01|-40.0|114.0|-8.01435|0.05947 +2016-07-01|-40.0|115.0|-7.15392|0.05281 +2016-07-01|-40.0|116.0|-6.31054|0.04663 +2016-07-01|-40.0|117.0|-5.48396|0.04094 +2016-07-01|-40.0|118.0|-4.67384|0.03573 +2016-07-01|-40.0|119.0|-3.87976|0.031 +2016-07-01|-40.0|120.0|-3.10123|0.02675 +2016-07-01|-40.0|121.0|-2.33775|0.02297 +2016-07-01|-40.0|122.0|-1.58876|0.01963 +2016-07-01|-40.0|123.0|-0.85374|0.01671 +2016-07-01|-40.0|124.0|-0.13216|0.01421 +2016-07-01|-40.0|125.0|0.57651|0.01209 +2016-07-01|-40.0|126.0|1.27274|0.01034 +2016-07-01|-40.0|127.0|1.95698|0.00892 +2016-07-01|-40.0|128.0|2.62963|0.00783 +2016-07-01|-40.0|129.0|3.29104|0.00702 +2016-07-01|-40.0|130.0|3.94151|0.00648 +2016-07-01|-40.0|131.0|4.58131|0.0062 +2016-07-01|-40.0|132.0|5.21063|0.00614 +2016-07-01|-40.0|133.0|5.82963|0.00628 +2016-07-01|-40.0|134.0|6.43841|0.00662 +2016-07-01|-40.0|135.0|7.03705|0.00712 +2016-07-01|-40.0|136.0|7.62558|0.00778 +2016-07-01|-40.0|137.0|8.20397|0.00858 +2016-07-01|-40.0|138.0|8.77221|0.00951 +2016-07-01|-40.0|139.0|9.33021|0.01054 +2016-07-01|-40.0|140.0|9.87789|0.01168 +2016-07-01|-40.0|141.0|10.41515|0.01292 +2016-07-01|-40.0|142.0|10.94185|0.01423 +2016-07-01|-40.0|143.0|11.45787|0.01561 +2016-07-01|-40.0|144.0|11.96305|0.01706 +2016-07-01|-40.0|145.0|12.45726|0.01857 +2016-07-01|-40.0|146.0|12.94032|0.02012 +2016-07-01|-40.0|147.0|13.41207|0.02172 +2016-07-01|-40.0|148.0|13.87236|0.02335 +2016-07-01|-40.0|149.0|14.32102|0.02501 +2016-07-01|-40.0|150.0|14.75789|0.0267 +2016-07-01|-40.0|151.0|15.18281|0.0284 +2016-07-01|-40.0|152.0|15.59562|0.03011 +2016-07-01|-40.0|153.0|15.99619|0.03182 +2016-07-01|-40.0|154.0|16.38437|0.03354 +2016-07-01|-40.0|155.0|16.76002|0.03525 +2016-07-01|-40.0|156.0|17.12304|0.03694 +2016-07-01|-40.0|157.0|17.47331|0.03861 +2016-07-01|-40.0|158.0|17.81075|0.04026 +2016-07-01|-40.0|159.0|18.1353|0.04188 +2016-07-01|-40.0|160.0|18.4469|0.04347 +2016-07-01|-40.0|161.0|18.74552|0.04501 +2016-07-01|-40.0|162.0|19.03119|0.04651 +2016-07-01|-40.0|163.0|19.30391|0.04795 +2016-07-01|-40.0|164.0|19.56376|0.04934 +2016-07-01|-40.0|165.0|19.81083|0.05067 +2016-07-01|-40.0|166.0|20.04524|0.05193 +2016-07-01|-40.0|167.0|20.26715|0.05312 +2016-07-01|-40.0|168.0|20.47676|0.05424 +2016-07-01|-40.0|169.0|20.67428|0.05528 +2016-07-01|-40.0|170.0|20.85999|0.05625 +2016-07-01|-40.0|171.0|21.03417|0.05713 +2016-07-01|-40.0|172.0|21.19714|0.05792 +2016-07-01|-40.0|173.0|21.34925|0.05863 +2016-07-01|-40.0|174.0|21.49086|0.05925 +2016-07-01|-40.0|175.0|21.62239|0.05977 +2016-07-01|-40.0|176.0|21.74423|0.06021 +2016-07-01|-40.0|177.0|21.85681|0.06055 +2016-07-01|-40.0|178.0|21.96056|0.0608 +2016-07-01|-40.0|179.0|22.05593|0.06096 +2016-07-01|-40.0|-1.0|-22.92058|0.03225 +2016-07-01|-40.0|-2.0|-22.81783|0.03657 +2016-07-01|-40.0|-3.0|-22.72929|0.04002 +2016-07-01|-40.0|-4.0|-22.6531|0.04262 +2016-07-01|-40.0|-5.0|-22.58736|0.04441 +2016-07-01|-40.0|-6.0|-22.53021|0.04544 +2016-07-01|-40.0|-7.0|-22.47983|0.04577 +2016-07-01|-40.0|-8.0|-22.43445|0.04546 +2016-07-01|-40.0|-9.0|-22.39243|0.04457 +2016-07-01|-40.0|-10.0|-22.35216|0.04318 +2016-07-01|-40.0|-11.0|-22.31221|0.04135 +2016-07-01|-40.0|-12.0|-22.27119|0.03914 +2016-07-01|-40.0|-13.0|-22.22786|0.03662 +2016-07-01|-40.0|-14.0|-22.1811|0.03384 +2016-07-01|-40.0|-15.0|-22.12985|0.03086 +2016-07-01|-40.0|-16.0|-22.07317|0.02773 +2016-07-01|-40.0|-17.0|-22.0102|0.02447 +2016-07-01|-40.0|-18.0|-21.94016|0.02112 +2016-07-01|-40.0|-19.0|-21.8623|0.01772 +2016-07-01|-40.0|-20.0|-21.77595|0.01427 +2016-07-01|-40.0|-21.0|-21.68046|0.01079 +2016-07-01|-40.0|-22.0|-21.57519|0.00728 +2016-07-01|-40.0|-23.0|-21.45951|0.00376 +2016-07-01|-40.0|-24.0|-21.3328|2.2E-4 +2016-07-01|-40.0|-25.0|-21.19443|-0.00335 +2016-07-01|-40.0|-26.0|-21.04373|-0.00696 +2016-07-01|-40.0|-27.0|-20.88002|-0.01061 +2016-07-01|-40.0|-28.0|-20.7026|-0.01432 +2016-07-01|-40.0|-29.0|-20.51072|-0.0181 +2016-07-01|-40.0|-30.0|-20.3036|-0.02196 +2016-07-01|-40.0|-31.0|-20.08046|-0.0259 +2016-07-01|-40.0|-32.0|-19.84045|-0.02995 +2016-07-01|-40.0|-33.0|-19.58274|-0.0341 +2016-07-01|-40.0|-34.0|-19.30646|-0.03836 +2016-07-01|-40.0|-35.0|-19.01074|-0.04274 +2016-07-01|-40.0|-36.0|-18.69471|-0.04723 +2016-07-01|-40.0|-37.0|-18.35752|-0.05182 +2016-07-01|-40.0|-38.0|-17.99834|-0.05651 +2016-07-01|-40.0|-39.0|-17.61638|-0.0613 +2016-07-01|-40.0|-40.0|-17.21089|-0.06615 +2016-07-01|-40.0|-41.0|-16.78118|-0.07107 +2016-07-01|-40.0|-42.0|-16.32662|-0.07602 +2016-07-01|-40.0|-43.0|-15.84669|-0.08099 +2016-07-01|-40.0|-44.0|-15.34094|-0.08595 +2016-07-01|-40.0|-45.0|-14.80903|-0.09087 +2016-07-01|-40.0|-46.0|-14.25074|-0.09573 +2016-07-01|-40.0|-47.0|-13.66599|-0.10049 +2016-07-01|-40.0|-48.0|-13.05479|-0.10513 +2016-07-01|-40.0|-49.0|-12.41734|-0.10961 +2016-07-01|-40.0|-50.0|-11.75397|-0.1139 +2016-07-01|-40.0|-51.0|-11.06515|-0.11797 +2016-07-01|-40.0|-52.0|-10.35152|-0.1218 +2016-07-01|-40.0|-53.0|-9.61389|-0.12535 +2016-07-01|-40.0|-54.0|-8.85321|-0.12859 +2016-07-01|-40.0|-55.0|-8.07059|-0.1315 +2016-07-01|-40.0|-56.0|-7.26731|-0.13407 +2016-07-01|-40.0|-57.0|-6.44479|-0.13626 +2016-07-01|-40.0|-58.0|-5.6046|-0.13807 +2016-07-01|-40.0|-59.0|-4.74845|-0.13947 +2016-07-01|-40.0|-60.0|-3.87815|-0.14046 +2016-07-01|-40.0|-61.0|-2.99566|-0.14104 +2016-07-01|-40.0|-62.0|-2.10301|-0.14119 +2016-07-01|-40.0|-63.0|-1.20233|-0.14093 +2016-07-01|-40.0|-64.0|-0.29581|-0.14025 +2016-07-01|-40.0|-65.0|0.61431|-0.13917 +2016-07-01|-40.0|-66.0|1.52573|-0.1377 +2016-07-01|-40.0|-67.0|2.43618|-0.13586 +2016-07-01|-40.0|-68.0|3.34336|-0.13365 +2016-07-01|-40.0|-69.0|4.245|-0.13111 +2016-07-01|-40.0|-70.0|5.13887|-0.12826 +2016-07-01|-40.0|-71.0|6.02279|-0.12512 +2016-07-01|-40.0|-72.0|6.89466|-0.12172 +2016-07-01|-40.0|-73.0|7.75244|-0.11809 +2016-07-01|-40.0|-74.0|8.59423|-0.11426 +2016-07-01|-40.0|-75.0|9.4182|-0.11026 +2016-07-01|-40.0|-76.0|10.22266|-0.10612 +2016-07-01|-40.0|-77.0|11.00603|-0.10187 +2016-07-01|-40.0|-78.0|11.76689|-0.09754 +2016-07-01|-40.0|-79.0|12.50393|-0.09316 +2016-07-01|-40.0|-80.0|13.21601|-0.08875 +2016-07-01|-40.0|-81.0|13.90211|-0.08434 +2016-07-01|-40.0|-82.0|14.56137|-0.07996 +2016-07-01|-40.0|-83.0|15.19306|-0.07563 +2016-07-01|-40.0|-84.0|15.79662|-0.07137 +2016-07-01|-40.0|-85.0|16.37162|-0.0672 +2016-07-01|-40.0|-86.0|16.91775|-0.06314 +2016-07-01|-40.0|-87.0|17.43485|-0.0592 +2016-07-01|-40.0|-88.0|17.92291|-0.05541 +2016-07-01|-40.0|-89.0|18.38201|-0.05176 +2016-07-01|-40.0|-90.0|18.81238|-0.04828 +2016-07-01|-40.0|-91.0|19.21435|-0.04498 +2016-07-01|-40.0|-92.0|19.58837|-0.04185 +2016-07-01|-40.0|-93.0|19.93496|-0.0389 +2016-07-01|-40.0|-94.0|20.25479|-0.03614 +2016-07-01|-40.0|-95.0|20.54858|-0.03358 +2016-07-01|-40.0|-96.0|20.81714|-0.0312 +2016-07-01|-40.0|-97.0|21.06136|-0.029 +2016-07-01|-40.0|-98.0|21.2822|-0.02699 +2016-07-01|-40.0|-99.0|21.48066|-0.02516 +2016-07-01|-40.0|-100.0|21.65782|-0.0235 +2016-07-01|-40.0|-101.0|21.81477|-0.02201 +2016-07-01|-40.0|-102.0|21.95266|-0.02066 +2016-07-01|-40.0|-103.0|22.07266|-0.01946 +2016-07-01|-40.0|-104.0|22.17596|-0.01839 +2016-07-01|-40.0|-105.0|22.26374|-0.01744 +2016-07-01|-40.0|-106.0|22.3372|-0.01659 +2016-07-01|-40.0|-107.0|22.39754|-0.01583 +2016-07-01|-40.0|-108.0|22.44592|-0.01515 +2016-07-01|-40.0|-109.0|22.48351|-0.01453 +2016-07-01|-40.0|-110.0|22.51144|-0.01395 +2016-07-01|-40.0|-111.0|22.5308|-0.0134 +2016-07-01|-40.0|-112.0|22.54265|-0.01287 +2016-07-01|-40.0|-113.0|22.548|-0.01234 +2016-07-01|-40.0|-114.0|22.54782|-0.01181 +2016-07-01|-40.0|-115.0|22.54302|-0.01124 +2016-07-01|-40.0|-116.0|22.53447|-0.01065 +2016-07-01|-40.0|-117.0|22.52297|-0.01002 +2016-07-01|-40.0|-118.0|22.50926|-0.00933 +2016-07-01|-40.0|-119.0|22.49404|-0.00858 +2016-07-01|-40.0|-120.0|22.47793|-0.00777 +2016-07-01|-40.0|-121.0|22.4615|-0.0069 +2016-07-01|-40.0|-122.0|22.44526|-0.00595 +2016-07-01|-40.0|-123.0|22.42966|-0.00493 +2016-07-01|-40.0|-124.0|22.4151|-0.00384 +2016-07-01|-40.0|-125.0|22.40192|-0.00268 +2016-07-01|-40.0|-126.0|22.3904|-0.00145 +2016-07-01|-40.0|-127.0|22.38078|-1.5E-4 +2016-07-01|-40.0|-128.0|22.37325|0.0012 +2016-07-01|-40.0|-129.0|22.36794|0.00261 +2016-07-01|-40.0|-130.0|22.36496|0.00406 +2016-07-01|-40.0|-131.0|22.36435|0.00556 +2016-07-01|-40.0|-132.0|22.36613|0.00709 +2016-07-01|-40.0|-133.0|22.37028|0.00865 +2016-07-01|-40.0|-134.0|22.37675|0.01024 +2016-07-01|-40.0|-135.0|22.38545|0.01183 +2016-07-01|-40.0|-136.0|22.39628|0.01344 +2016-07-01|-40.0|-137.0|22.40908|0.01505 +2016-07-01|-40.0|-138.0|22.42372|0.01666 +2016-07-01|-40.0|-139.0|22.44|0.01826 +2016-07-01|-40.0|-140.0|22.45774|0.01985 +2016-07-01|-40.0|-141.0|22.47673|0.02142 +2016-07-01|-40.0|-142.0|22.49676|0.02298 +2016-07-01|-40.0|-143.0|22.51759|0.02451 +2016-07-01|-40.0|-144.0|22.539|0.02603 +2016-07-01|-40.0|-145.0|22.56076|0.02752 +2016-07-01|-40.0|-146.0|22.58264|0.02898 +2016-07-01|-40.0|-147.0|22.60441|0.03042 +2016-07-01|-40.0|-148.0|22.62584|0.03184 +2016-07-01|-40.0|-149.0|22.64672|0.03323 +2016-07-01|-40.0|-150.0|22.66685|0.0346 +2016-07-01|-40.0|-151.0|22.68602|0.03595 +2016-07-01|-40.0|-152.0|22.70405|0.03728 +2016-07-01|-40.0|-153.0|22.72076|0.03858 +2016-07-01|-40.0|-154.0|22.73599|0.03987 +2016-07-01|-40.0|-155.0|22.74958|0.04114 +2016-07-01|-40.0|-156.0|22.76139|0.04239 +2016-07-01|-40.0|-157.0|22.77129|0.04362 +2016-07-01|-40.0|-158.0|22.77916|0.04483 +2016-07-01|-40.0|-159.0|22.78487|0.04602 +2016-07-01|-40.0|-160.0|22.78833|0.04719 +2016-07-01|-40.0|-161.0|22.78941|0.04833 +2016-07-01|-40.0|-162.0|22.788|0.04945 +2016-07-01|-40.0|-163.0|22.78401|0.05055 +2016-07-01|-40.0|-164.0|22.77729|0.0516 +2016-07-01|-40.0|-165.0|22.76774|0.05263 +2016-07-01|-40.0|-166.0|22.75521|0.05361 +2016-07-01|-40.0|-167.0|22.73954|0.05456 +2016-07-01|-40.0|-168.0|22.72057|0.05545 +2016-07-01|-40.0|-169.0|22.6981|0.05629 +2016-07-01|-40.0|-170.0|22.67193|0.05708 +2016-07-01|-40.0|-171.0|22.64183|0.05781 +2016-07-01|-40.0|-172.0|22.60752|0.05847 +2016-07-01|-40.0|-173.0|22.56874|0.05907 +2016-07-01|-40.0|-174.0|22.52518|0.05959 +2016-07-01|-40.0|-175.0|22.4765|0.06004 +2016-07-01|-40.0|-176.0|22.42236|0.06041 +2016-07-01|-40.0|-177.0|22.36237|0.06069 +2016-07-01|-40.0|-178.0|22.29615|0.06089 +2016-07-01|-40.0|-179.0|22.22329|0.06101 +2016-07-01|-41.0|0.0|-22.89037|0.02033 +2016-07-01|-41.0|1.0|-23.0642|0.01373 +2016-07-01|-41.0|2.0|-23.25812|0.00632 +2016-07-01|-41.0|3.0|-23.47343|-0.00185 +2016-07-01|-41.0|4.0|-23.71126|-0.01074 +2016-07-01|-41.0|5.0|-23.97254|-0.02029 +2016-07-01|-41.0|6.0|-24.25801|-0.03042 +2016-07-01|-41.0|7.0|-24.56814|-0.04104 +2016-07-01|-41.0|8.0|-24.9032|-0.05207 +2016-07-01|-41.0|9.0|-25.26319|-0.06341 +2016-07-01|-41.0|10.0|-25.64788|-0.07494 +2016-07-01|-41.0|11.0|-26.05678|-0.08657 +2016-07-01|-41.0|12.0|-26.48918|-0.09819 +2016-07-01|-41.0|13.0|-26.94417|-0.10969 +2016-07-01|-41.0|14.0|-27.4206|-0.12097 +2016-07-01|-41.0|15.0|-27.91717|-0.13194 +2016-07-01|-41.0|16.0|-28.43241|-0.1425 +2016-07-01|-41.0|17.0|-28.96472|-0.15258 +2016-07-01|-41.0|18.0|-29.5124|-0.1621 +2016-07-01|-41.0|19.0|-30.07365|-0.17101 +2016-07-01|-41.0|20.0|-30.64662|-0.17925 +2016-07-01|-41.0|21.0|-31.22943|-0.18679 +2016-07-01|-41.0|22.0|-31.82018|-0.19359 +2016-07-01|-41.0|23.0|-32.41699|-0.19964 +2016-07-01|-41.0|24.0|-33.01798|-0.20492 +2016-07-01|-41.0|25.0|-33.62132|-0.20943 +2016-07-01|-41.0|26.0|-34.22525|-0.21317 +2016-07-01|-41.0|27.0|-34.82805|-0.21616 +2016-07-01|-41.0|28.0|-35.42807|-0.21842 +2016-07-01|-41.0|29.0|-36.02374|-0.21996 +2016-07-01|-41.0|30.0|-36.61358|-0.22081 +2016-07-01|-41.0|31.0|-37.19616|-0.221 +2016-07-01|-41.0|32.0|-37.77016|-0.22056 +2016-07-01|-41.0|33.0|-38.33433|-0.21952 +2016-07-01|-41.0|34.0|-38.88749|-0.21791 +2016-07-01|-41.0|35.0|-39.42853|-0.21576 +2016-07-01|-41.0|36.0|-39.95643|-0.21312 +2016-07-01|-41.0|37.0|-40.4702|-0.21 +2016-07-01|-41.0|38.0|-40.96894|-0.20643 +2016-07-01|-41.0|39.0|-41.4518|-0.20245 +2016-07-01|-41.0|40.0|-41.91797|-0.19807 +2016-07-01|-41.0|41.0|-42.3667|-0.19332 +2016-07-01|-41.0|42.0|-42.79729|-0.18823 +2016-07-01|-41.0|43.0|-43.20905|-0.1828 +2016-07-01|-41.0|44.0|-43.60136|-0.17707 +2016-07-01|-41.0|45.0|-43.9736|-0.17104 +2016-07-01|-41.0|46.0|-44.32521|-0.16472 +2016-07-01|-41.0|47.0|-44.65564|-0.15813 +2016-07-01|-41.0|48.0|-44.96436|-0.15127 +2016-07-01|-41.0|49.0|-45.25088|-0.14415 +2016-07-01|-41.0|50.0|-45.51472|-0.13679 +2016-07-01|-41.0|51.0|-45.75542|-0.12918 +2016-07-01|-41.0|52.0|-45.97254|-0.12132 +2016-07-01|-41.0|53.0|-46.16566|-0.11323 +2016-07-01|-41.0|54.0|-46.33436|-0.1049 +2016-07-01|-41.0|55.0|-46.47827|-0.09634 +2016-07-01|-41.0|56.0|-46.59699|-0.08755 +2016-07-01|-41.0|57.0|-46.69017|-0.07853 +2016-07-01|-41.0|58.0|-46.75744|-0.06929 +2016-07-01|-41.0|59.0|-46.79845|-0.05983 +2016-07-01|-41.0|60.0|-46.81288|-0.05015 +2016-07-01|-41.0|61.0|-46.80039|-0.04027 +2016-07-01|-41.0|62.0|-46.76064|-0.03019 +2016-07-01|-41.0|63.0|-46.69332|-0.01993 +2016-07-01|-41.0|64.0|-46.59811|-0.00949 +2016-07-01|-41.0|65.0|-46.47468|0.00111 +2016-07-01|-41.0|66.0|-46.32272|0.01186 +2016-07-01|-41.0|67.0|-46.14189|0.02272 +2016-07-01|-41.0|68.0|-45.93187|0.03369 +2016-07-01|-41.0|69.0|-45.69233|0.04472 +2016-07-01|-41.0|70.0|-45.42292|0.05581 +2016-07-01|-41.0|71.0|-45.12333|0.0669 +2016-07-01|-41.0|72.0|-44.7932|0.07797 +2016-07-01|-41.0|73.0|-44.4322|0.08897 +2016-07-01|-41.0|74.0|-44.04|0.09987 +2016-07-01|-41.0|75.0|-43.61629|0.11061 +2016-07-01|-41.0|76.0|-43.16077|0.12116 +2016-07-01|-41.0|77.0|-42.67316|0.13145 +2016-07-01|-41.0|78.0|-42.15324|0.14144 +2016-07-01|-41.0|79.0|-41.60081|0.15107 +2016-07-01|-41.0|80.0|-41.01574|0.16028 +2016-07-01|-41.0|81.0|-40.39797|0.169 +2016-07-01|-41.0|82.0|-39.74755|0.17719 +2016-07-01|-41.0|83.0|-39.06459|0.18477 +2016-07-01|-41.0|84.0|-38.34935|0.1917 +2016-07-01|-41.0|85.0|-37.60222|0.19791 +2016-07-01|-41.0|86.0|-36.82371|0.20336 +2016-07-01|-41.0|87.0|-36.01454|0.20798 +2016-07-01|-41.0|88.0|-35.17556|0.21174 +2016-07-01|-41.0|89.0|-34.30782|0.2146 +2016-07-01|-41.0|90.0|-33.41256|0.21653 +2016-07-01|-41.0|91.0|-32.49122|0.2175 +2016-07-01|-41.0|92.0|-31.5454|0.21751 +2016-07-01|-41.0|93.0|-30.57692|0.21655 +2016-07-01|-41.0|94.0|-29.58776|0.21464 +2016-07-01|-41.0|95.0|-28.58006|0.21179 +2016-07-01|-41.0|96.0|-27.5561|0.20803 +2016-07-01|-41.0|97.0|-26.51827|0.20343 +2016-07-01|-41.0|98.0|-25.46906|0.19802 +2016-07-01|-41.0|99.0|-24.411|0.19188 +2016-07-01|-41.0|100.0|-23.34666|0.18507 +2016-07-01|-41.0|101.0|-22.27858|0.1777 +2016-07-01|-41.0|102.0|-21.20926|0.16983 +2016-07-01|-41.0|103.0|-20.14114|0.16157 +2016-07-01|-41.0|104.0|-19.07652|0.153 +2016-07-01|-41.0|105.0|-18.01759|0.14423 +2016-07-01|-41.0|106.0|-16.96635|0.13534 +2016-07-01|-41.0|107.0|-15.92463|0.12642 +2016-07-01|-41.0|108.0|-14.89409|0.11755 +2016-07-01|-41.0|109.0|-13.87614|0.10882 +2016-07-01|-41.0|110.0|-12.87201|0.1003 +2016-07-01|-41.0|111.0|-11.88271|0.09204 +2016-07-01|-41.0|112.0|-10.90906|0.0841 +2016-07-01|-41.0|113.0|-9.95166|0.07652 +2016-07-01|-41.0|114.0|-9.01095|0.06935 +2016-07-01|-41.0|115.0|-8.08719|0.0626 +2016-07-01|-41.0|116.0|-7.18051|0.05631 +2016-07-01|-41.0|117.0|-6.29087|0.05048 +2016-07-01|-41.0|118.0|-5.41815|0.04511 +2016-07-01|-41.0|119.0|-4.56212|0.04022 +2016-07-01|-41.0|120.0|-3.72249|0.0358 +2016-07-01|-41.0|121.0|-2.8989|0.03182 +2016-07-01|-41.0|122.0|-2.09095|0.02829 +2016-07-01|-41.0|123.0|-1.29825|0.02518 +2016-07-01|-41.0|124.0|-0.52035|0.02248 +2016-07-01|-41.0|125.0|0.24316|0.02017 +2016-07-01|-41.0|126.0|0.99268|0.01821 +2016-07-01|-41.0|127.0|1.72861|0.0166 +2016-07-01|-41.0|128.0|2.45128|0.0153 +2016-07-01|-41.0|129.0|3.16103|0.0143 +2016-07-01|-41.0|130.0|3.85813|0.01356 +2016-07-01|-41.0|131.0|4.54281|0.01308 +2016-07-01|-41.0|132.0|5.21529|0.01283 +2016-07-01|-41.0|133.0|5.87572|0.01278 +2016-07-01|-41.0|134.0|6.52421|0.01293 +2016-07-01|-41.0|135.0|7.16086|0.01325 +2016-07-01|-41.0|136.0|7.78571|0.01372 +2016-07-01|-41.0|137.0|8.39878|0.01434 +2016-07-01|-41.0|138.0|9.00006|0.01509 +2016-07-01|-41.0|139.0|9.58952|0.01596 +2016-07-01|-41.0|140.0|10.1671|0.01693 +2016-07-01|-41.0|141.0|10.73274|0.01799 +2016-07-01|-41.0|142.0|11.28634|0.01914 +2016-07-01|-41.0|143.0|11.82781|0.02037 +2016-07-01|-41.0|144.0|12.35705|0.02167 +2016-07-01|-41.0|145.0|12.87394|0.02303 +2016-07-01|-41.0|146.0|13.37836|0.02444 +2016-07-01|-41.0|147.0|13.8702|0.0259 +2016-07-01|-41.0|148.0|14.34932|0.02739 +2016-07-01|-41.0|149.0|14.81561|0.02893 +2016-07-01|-41.0|150.0|15.26896|0.03049 +2016-07-01|-41.0|151.0|15.70923|0.03207 +2016-07-01|-41.0|152.0|16.13632|0.03367 +2016-07-01|-41.0|153.0|16.55013|0.03528 +2016-07-01|-41.0|154.0|16.95057|0.03689 +2016-07-01|-41.0|155.0|17.33754|0.0385 +2016-07-01|-41.0|156.0|17.71097|0.04011 +2016-07-01|-41.0|157.0|18.0708|0.04169 +2016-07-01|-41.0|158.0|18.417|0.04326 +2016-07-01|-41.0|159.0|18.74954|0.04481 +2016-07-01|-41.0|160.0|19.06842|0.04632 +2016-07-01|-41.0|161.0|19.37367|0.0478 +2016-07-01|-41.0|162.0|19.66532|0.04923 +2016-07-01|-41.0|163.0|19.94346|0.05062 +2016-07-01|-41.0|164.0|20.20819|0.05195 +2016-07-01|-41.0|165.0|20.45965|0.05323 +2016-07-01|-41.0|166.0|20.69799|0.05445 +2016-07-01|-41.0|167.0|20.92342|0.0556 +2016-07-01|-41.0|168.0|21.13616|0.05668 +2016-07-01|-41.0|169.0|21.33648|0.05769 +2016-07-01|-41.0|170.0|21.52465|0.05862 +2016-07-01|-41.0|171.0|21.70101|0.05947 +2016-07-01|-41.0|172.0|21.86588|0.06024 +2016-07-01|-41.0|173.0|22.01964|0.06092 +2016-07-01|-41.0|174.0|22.16268|0.06152 +2016-07-01|-41.0|175.0|22.29541|0.06203 +2016-07-01|-41.0|176.0|22.41825|0.06245 +2016-07-01|-41.0|177.0|22.53163|0.06278 +2016-07-01|-41.0|178.0|22.63599|0.06302 +2016-07-01|-41.0|179.0|22.73178|0.06316 +2016-07-01|-41.0|-1.0|-22.73518|0.02611 +2016-07-01|-41.0|-2.0|-22.59706|0.03107 +2016-07-01|-41.0|-3.0|-22.47437|0.03519 +2016-07-01|-41.0|-4.0|-22.36539|0.03851 +2016-07-01|-41.0|-5.0|-22.26837|0.04105 +2016-07-01|-41.0|-6.0|-22.18156|0.04284 +2016-07-01|-41.0|-7.0|-22.10322|0.04394 +2016-07-01|-41.0|-8.0|-22.03165|0.04439 +2016-07-01|-41.0|-9.0|-21.96522|0.04425 +2016-07-01|-41.0|-10.0|-21.90236|0.04359 +2016-07-01|-41.0|-11.0|-21.84157|0.04245 +2016-07-01|-41.0|-12.0|-21.78146|0.04089 +2016-07-01|-41.0|-13.0|-21.72072|0.03898 +2016-07-01|-41.0|-14.0|-21.65812|0.03676 +2016-07-01|-41.0|-15.0|-21.59253|0.03428 +2016-07-01|-41.0|-16.0|-21.52291|0.03159 +2016-07-01|-41.0|-17.0|-21.44828|0.02872 +2016-07-01|-41.0|-18.0|-21.36772|0.02571 +2016-07-01|-41.0|-19.0|-21.28039|0.02258 +2016-07-01|-41.0|-20.0|-21.18548|0.01936 +2016-07-01|-41.0|-21.0|-21.08221|0.01606 +2016-07-01|-41.0|-22.0|-20.96983|0.01269 +2016-07-01|-41.0|-23.0|-20.84761|0.00925 +2016-07-01|-41.0|-24.0|-20.71481|0.00576 +2016-07-01|-41.0|-25.0|-20.57071|0.0022 +2016-07-01|-41.0|-26.0|-20.41455|-0.00142 +2016-07-01|-41.0|-27.0|-20.24559|-0.00511 +2016-07-01|-41.0|-28.0|-20.06305|-0.00888 +2016-07-01|-41.0|-29.0|-19.86612|-0.01273 +2016-07-01|-41.0|-30.0|-19.654|-0.01668 +2016-07-01|-41.0|-31.0|-19.42586|-0.02072 +2016-07-01|-41.0|-32.0|-19.18085|-0.02486 +2016-07-01|-41.0|-33.0|-18.9181|-0.02911 +2016-07-01|-41.0|-34.0|-18.63677|-0.03347 +2016-07-01|-41.0|-35.0|-18.33599|-0.03794 +2016-07-01|-41.0|-36.0|-18.01492|-0.04251 +2016-07-01|-41.0|-37.0|-17.67272|-0.04718 +2016-07-01|-41.0|-38.0|-17.30862|-0.05194 +2016-07-01|-41.0|-39.0|-16.92184|-0.05677 +2016-07-01|-41.0|-40.0|-16.5117|-0.06166 +2016-07-01|-41.0|-41.0|-16.07755|-0.0666 +2016-07-01|-41.0|-42.0|-15.61882|-0.07157 +2016-07-01|-41.0|-43.0|-15.13504|-0.07653 +2016-07-01|-41.0|-44.0|-14.62581|-0.08147 +2016-07-01|-41.0|-45.0|-14.09087|-0.08637 +2016-07-01|-41.0|-46.0|-13.53003|-0.09119 +2016-07-01|-41.0|-47.0|-12.94326|-0.0959 +2016-07-01|-41.0|-48.0|-12.33065|-0.10048 +2016-07-01|-41.0|-49.0|-11.69241|-0.1049 +2016-07-01|-41.0|-50.0|-11.02891|-0.10912 +2016-07-01|-41.0|-51.0|-10.34068|-0.11313 +2016-07-01|-41.0|-52.0|-9.62837|-0.11689 +2016-07-01|-41.0|-53.0|-8.89279|-0.12037 +2016-07-01|-41.0|-54.0|-8.13493|-0.12355 +2016-07-01|-41.0|-55.0|-7.35589|-0.1264 +2016-07-01|-41.0|-56.0|-6.55693|-0.12891 +2016-07-01|-41.0|-57.0|-5.73947|-0.13106 +2016-07-01|-41.0|-58.0|-4.90505|-0.13284 +2016-07-01|-41.0|-59.0|-4.05533|-0.13422 +2016-07-01|-41.0|-60.0|-3.19209|-0.13521 +2016-07-01|-41.0|-61.0|-2.31722|-0.13579 +2016-07-01|-41.0|-62.0|-1.4327|-0.13596 +2016-07-01|-41.0|-63.0|-0.54058|-0.13574 +2016-07-01|-41.0|-64.0|0.35701|-0.13512 +2016-07-01|-41.0|-65.0|1.25791|-0.13411 +2016-07-01|-41.0|-66.0|2.15993|-0.13272 +2016-07-01|-41.0|-67.0|3.06087|-0.13097 +2016-07-01|-41.0|-68.0|3.95852|-0.12888 +2016-07-01|-41.0|-69.0|4.85071|-0.12646 +2016-07-01|-41.0|-70.0|5.73528|-0.12374 +2016-07-01|-41.0|-71.0|6.61016|-0.12075 +2016-07-01|-41.0|-72.0|7.47332|-0.11751 +2016-07-01|-41.0|-73.0|8.32282|-0.11405 +2016-07-01|-41.0|-74.0|9.15681|-0.11039 +2016-07-01|-41.0|-75.0|9.97353|-0.10657 +2016-07-01|-41.0|-76.0|10.77136|-0.10261 +2016-07-01|-41.0|-77.0|11.54878|-0.09855 +2016-07-01|-41.0|-78.0|12.3044|-0.0944 +2016-07-01|-41.0|-79.0|13.03696|-0.0902 +2016-07-01|-41.0|-80.0|13.74533|-0.08597 +2016-07-01|-41.0|-81.0|14.42853|-0.08174 +2016-07-01|-41.0|-82.0|15.08571|-0.07753 +2016-07-01|-41.0|-83.0|15.71614|-0.07336 +2016-07-01|-41.0|-84.0|16.31925|-0.06926 +2016-07-01|-41.0|-85.0|16.89459|-0.06524 +2016-07-01|-41.0|-86.0|17.44186|-0.06133 +2016-07-01|-41.0|-87.0|17.96086|-0.05753 +2016-07-01|-41.0|-88.0|18.45153|-0.05386 +2016-07-01|-41.0|-89.0|18.91394|-0.05033 +2016-07-01|-41.0|-90.0|19.34825|-0.04695 +2016-07-01|-41.0|-91.0|19.75476|-0.04374 +2016-07-01|-41.0|-92.0|20.13385|-0.0407 +2016-07-01|-41.0|-93.0|20.486|-0.03783 +2016-07-01|-41.0|-94.0|20.81181|-0.03514 +2016-07-01|-41.0|-95.0|21.11193|-0.03262 +2016-07-01|-41.0|-96.0|21.38713|-0.03029 +2016-07-01|-41.0|-97.0|21.6382|-0.02813 +2016-07-01|-41.0|-98.0|21.86606|-0.02614 +2016-07-01|-41.0|-99.0|22.07163|-0.02432 +2016-07-01|-41.0|-100.0|22.25593|-0.02267 +2016-07-01|-41.0|-101.0|22.41998|-0.02117 +2016-07-01|-41.0|-102.0|22.56487|-0.01982 +2016-07-01|-41.0|-103.0|22.69171|-0.0186 +2016-07-01|-41.0|-104.0|22.80163|-0.0175 +2016-07-01|-41.0|-105.0|22.89576|-0.01652 +2016-07-01|-41.0|-106.0|22.97525|-0.01564 +2016-07-01|-41.0|-107.0|23.04125|-0.01484 +2016-07-01|-41.0|-108.0|23.09491|-0.01411 +2016-07-01|-41.0|-109.0|23.13733|-0.01344 +2016-07-01|-41.0|-110.0|23.16963|-0.01282 +2016-07-01|-41.0|-111.0|23.19287|-0.01222 +2016-07-01|-41.0|-112.0|23.20811|-0.01165 +2016-07-01|-41.0|-113.0|23.21634|-0.01107 +2016-07-01|-41.0|-114.0|23.21852|-0.01049 +2016-07-01|-41.0|-115.0|23.21559|-0.00988 +2016-07-01|-41.0|-116.0|23.20839|-0.00924 +2016-07-01|-41.0|-117.0|23.19776|-0.00857 +2016-07-01|-41.0|-118.0|23.18446|-0.00784 +2016-07-01|-41.0|-119.0|23.16919|-0.00706 +2016-07-01|-41.0|-120.0|23.15261|-0.00622 +2016-07-01|-41.0|-121.0|23.13532|-0.00531 +2016-07-01|-41.0|-122.0|23.11787|-0.00434 +2016-07-01|-41.0|-123.0|23.10073|-0.0033 +2016-07-01|-41.0|-124.0|23.08434|-0.00219 +2016-07-01|-41.0|-125.0|23.06908|-0.00101 +2016-07-01|-41.0|-126.0|23.05528|2.4E-4 +2016-07-01|-41.0|-127.0|23.0432|0.00154 +2016-07-01|-41.0|-128.0|23.03308|0.00291 +2016-07-01|-41.0|-129.0|23.02509|0.00433 +2016-07-01|-41.0|-130.0|23.01937|0.00579 +2016-07-01|-41.0|-131.0|23.01601|0.0073 +2016-07-01|-41.0|-132.0|23.01505|0.00884 +2016-07-01|-41.0|-133.0|23.01652|0.01041 +2016-07-01|-41.0|-134.0|23.02039|0.01201 +2016-07-01|-41.0|-135.0|23.0266|0.01362 +2016-07-01|-41.0|-136.0|23.03507|0.01524 +2016-07-01|-41.0|-137.0|23.04568|0.01687 +2016-07-01|-41.0|-138.0|23.05831|0.01849 +2016-07-01|-41.0|-139.0|23.07279|0.02011 +2016-07-01|-41.0|-140.0|23.08895|0.02172 +2016-07-01|-41.0|-141.0|23.10659|0.02332 +2016-07-01|-41.0|-142.0|23.12551|0.0249 +2016-07-01|-41.0|-143.0|23.14548|0.02646 +2016-07-01|-41.0|-144.0|23.1663|0.028 +2016-07-01|-41.0|-145.0|23.18772|0.02951 +2016-07-01|-41.0|-146.0|23.20953|0.031 +2016-07-01|-41.0|-147.0|23.23148|0.03247 +2016-07-01|-41.0|-148.0|23.25334|0.03391 +2016-07-01|-41.0|-149.0|23.27491|0.03533 +2016-07-01|-41.0|-150.0|23.29595|0.03673 +2016-07-01|-41.0|-151.0|23.31626|0.0381 +2016-07-01|-41.0|-152.0|23.33563|0.03945 +2016-07-01|-41.0|-153.0|23.35388|0.04077 +2016-07-01|-41.0|-154.0|23.37082|0.04208 +2016-07-01|-41.0|-155.0|23.38628|0.04336 +2016-07-01|-41.0|-156.0|23.4001|0.04463 +2016-07-01|-41.0|-157.0|23.41212|0.04587 +2016-07-01|-41.0|-158.0|23.42219|0.04709 +2016-07-01|-41.0|-159.0|23.43019|0.04829 +2016-07-01|-41.0|-160.0|23.43597|0.04946 +2016-07-01|-41.0|-161.0|23.43939|0.05061 +2016-07-01|-41.0|-162.0|23.44034|0.05173 +2016-07-01|-41.0|-163.0|23.43867|0.05282 +2016-07-01|-41.0|-164.0|23.43424|0.05387 +2016-07-01|-41.0|-165.0|23.42691|0.05489 +2016-07-01|-41.0|-166.0|23.41651|0.05587 +2016-07-01|-41.0|-167.0|23.40288|0.0568 +2016-07-01|-41.0|-168.0|23.38583|0.05769 +2016-07-01|-41.0|-169.0|23.36516|0.05853 +2016-07-01|-41.0|-170.0|23.34065|0.05931 +2016-07-01|-41.0|-171.0|23.31204|0.06003 +2016-07-01|-41.0|-172.0|23.27908|0.06068 +2016-07-01|-41.0|-173.0|23.24148|0.06127 +2016-07-01|-41.0|-174.0|23.19892|0.06179 +2016-07-01|-41.0|-175.0|23.15108|0.06223 +2016-07-01|-41.0|-176.0|23.0976|0.0626 +2016-07-01|-41.0|-177.0|23.03809|0.06288 +2016-07-01|-41.0|-178.0|22.97218|0.06308 +2016-07-01|-41.0|-179.0|22.89944|0.0632 +2016-07-01|-42.0|0.0|-22.72648|0.01382 +2016-07-01|-42.0|1.0|-22.93622|0.00682 +2016-07-01|-42.0|2.0|-23.16643|-9.0E-4 +2016-07-01|-42.0|3.0|-23.41821|-0.00931 +2016-07-01|-42.0|4.0|-23.69247|-0.01835 +2016-07-01|-42.0|5.0|-23.98994|-0.02796 +2016-07-01|-42.0|6.0|-24.31114|-0.03807 +2016-07-01|-42.0|7.0|-24.65638|-0.04859 +2016-07-01|-42.0|8.0|-25.02573|-0.05945 +2016-07-01|-42.0|9.0|-25.41906|-0.07054 +2016-07-01|-42.0|10.0|-25.83598|-0.08177 +2016-07-01|-42.0|11.0|-26.27593|-0.09304 +2016-07-01|-42.0|12.0|-26.7381|-0.10427 +2016-07-01|-42.0|13.0|-27.22151|-0.11534 +2016-07-01|-42.0|14.0|-27.725|-0.12617 +2016-07-01|-42.0|15.0|-28.24725|-0.13668 +2016-07-01|-42.0|16.0|-28.78681|-0.14679 +2016-07-01|-42.0|17.0|-29.3421|-0.15642 +2016-07-01|-42.0|18.0|-29.91148|-0.16552 +2016-07-01|-42.0|19.0|-30.49321|-0.17402 +2016-07-01|-42.0|20.0|-31.08554|-0.1819 +2016-07-01|-42.0|21.0|-31.68665|-0.1891 +2016-07-01|-42.0|22.0|-32.29475|-0.19561 +2016-07-01|-42.0|23.0|-32.90805|-0.20141 +2016-07-01|-42.0|24.0|-33.52478|-0.20648 +2016-07-01|-42.0|25.0|-34.14323|-0.21084 +2016-07-01|-42.0|26.0|-34.76171|-0.21447 +2016-07-01|-42.0|27.0|-35.37862|-0.21739 +2016-07-01|-42.0|28.0|-35.99242|-0.21963 +2016-07-01|-42.0|29.0|-36.60161|-0.22118 +2016-07-01|-42.0|30.0|-37.2048|-0.22209 +2016-07-01|-42.0|31.0|-37.80067|-0.22238 +2016-07-01|-42.0|32.0|-38.38795|-0.22206 +2016-07-01|-42.0|33.0|-38.96547|-0.22118 +2016-07-01|-42.0|34.0|-39.53211|-0.21976 +2016-07-01|-42.0|35.0|-40.08683|-0.21782 +2016-07-01|-42.0|36.0|-40.62866|-0.2154 +2016-07-01|-42.0|37.0|-41.15667|-0.21253 +2016-07-01|-42.0|38.0|-41.67|-0.20923 +2016-07-01|-42.0|39.0|-42.16784|-0.20552 +2016-07-01|-42.0|40.0|-42.64943|-0.20143 +2016-07-01|-42.0|41.0|-43.11405|-0.19698 +2016-07-01|-42.0|42.0|-43.56101|-0.19219 +2016-07-01|-42.0|43.0|-43.98968|-0.18708 +2016-07-01|-42.0|44.0|-44.39944|-0.18165 +2016-07-01|-42.0|45.0|-44.7897|-0.17594 +2016-07-01|-42.0|46.0|-45.15993|-0.16994 +2016-07-01|-42.0|47.0|-45.50958|-0.16367 +2016-07-01|-42.0|48.0|-45.83814|-0.15713 +2016-07-01|-42.0|49.0|-46.14513|-0.15034 +2016-07-01|-42.0|50.0|-46.43008|-0.14329 +2016-07-01|-42.0|51.0|-46.69253|-0.136 +2016-07-01|-42.0|52.0|-46.93204|-0.12847 +2016-07-01|-42.0|53.0|-47.1482|-0.12069 +2016-07-01|-42.0|54.0|-47.34058|-0.11268 +2016-07-01|-42.0|55.0|-47.50879|-0.10444 +2016-07-01|-42.0|56.0|-47.65243|-0.09596 +2016-07-01|-42.0|57.0|-47.77113|-0.08725 +2016-07-01|-42.0|58.0|-47.86452|-0.07831 +2016-07-01|-42.0|59.0|-47.93221|-0.06916 +2016-07-01|-42.0|60.0|-47.97386|-0.05978 +2016-07-01|-42.0|61.0|-47.98911|-0.05019 +2016-07-01|-42.0|62.0|-47.97758|-0.04039 +2016-07-01|-42.0|63.0|-47.93894|-0.03039 +2016-07-01|-42.0|64.0|-47.87281|-0.02021 +2016-07-01|-42.0|65.0|-47.77884|-0.00986 +2016-07-01|-42.0|66.0|-47.65666|6.5E-4 +2016-07-01|-42.0|67.0|-47.50589|0.0113 +2016-07-01|-42.0|68.0|-47.32616|0.02208 +2016-07-01|-42.0|69.0|-47.11709|0.03294 +2016-07-01|-42.0|70.0|-46.87826|0.04388 +2016-07-01|-42.0|71.0|-46.6093|0.05486 +2016-07-01|-42.0|72.0|-46.30978|0.06585 +2016-07-01|-42.0|73.0|-45.9793|0.07681 +2016-07-01|-42.0|74.0|-45.61746|0.08771 +2016-07-01|-42.0|75.0|-45.22385|0.0985 +2016-07-01|-42.0|76.0|-44.79808|0.10913 +2016-07-01|-42.0|77.0|-44.33977|0.11957 +2016-07-01|-42.0|78.0|-43.84859|0.12975 +2016-07-01|-42.0|79.0|-43.32421|0.13963 +2016-07-01|-42.0|80.0|-42.76639|0.14915 +2016-07-01|-42.0|81.0|-42.17491|0.15825 +2016-07-01|-42.0|82.0|-41.54966|0.16688 +2016-07-01|-42.0|83.0|-40.8906|0.17497 +2016-07-01|-42.0|84.0|-40.1978|0.18247 +2016-07-01|-42.0|85.0|-39.47144|0.18932 +2016-07-01|-42.0|86.0|-38.71186|0.19547 +2016-07-01|-42.0|87.0|-37.91954|0.20086 +2016-07-01|-42.0|88.0|-37.09512|0.20544 +2016-07-01|-42.0|89.0|-36.23942|0.20918 +2016-07-01|-42.0|90.0|-35.35344|0.21203 +2016-07-01|-42.0|91.0|-34.4384|0.21397 +2016-07-01|-42.0|92.0|-33.49568|0.21497 +2016-07-01|-42.0|93.0|-32.52689|0.21504 +2016-07-01|-42.0|94.0|-31.53381|0.21415 +2016-07-01|-42.0|95.0|-30.51841|0.21234 +2016-07-01|-42.0|96.0|-29.48281|0.20961 +2016-07-01|-42.0|97.0|-28.4293|0.20601 +2016-07-01|-42.0|98.0|-27.36027|0.20157 +2016-07-01|-42.0|99.0|-26.27822|0.19636 +2016-07-01|-42.0|100.0|-25.1857|0.19045 +2016-07-01|-42.0|101.0|-24.08531|0.18389 +2016-07-01|-42.0|102.0|-22.97963|0.17679 +2016-07-01|-42.0|103.0|-21.87121|0.16921 +2016-07-01|-42.0|104.0|-20.76252|0.16126 +2016-07-01|-42.0|105.0|-19.65596|0.15303 +2016-07-01|-42.0|106.0|-18.55376|0.1446 +2016-07-01|-42.0|107.0|-17.45803|0.13607 +2016-07-01|-42.0|108.0|-16.37069|0.12752 +2016-07-01|-42.0|109.0|-15.29347|0.11904 +2016-07-01|-42.0|110.0|-14.22792|0.11069 +2016-07-01|-42.0|111.0|-13.17537|0.10255 +2016-07-01|-42.0|112.0|-12.13697|0.09467 +2016-07-01|-42.0|113.0|-11.11365|0.08711 +2016-07-01|-42.0|114.0|-10.10615|0.07991 +2016-07-01|-42.0|115.0|-9.11506|0.0731 +2016-07-01|-42.0|116.0|-8.14077|0.06671 +2016-07-01|-42.0|117.0|-7.18354|0.06075 +2016-07-01|-42.0|118.0|-6.24351|0.05524 +2016-07-01|-42.0|119.0|-5.32068|0.05018 +2016-07-01|-42.0|120.0|-4.41498|0.04558 +2016-07-01|-42.0|121.0|-3.52625|0.04141 +2016-07-01|-42.0|122.0|-2.65427|0.03768 +2016-07-01|-42.0|123.0|-1.7988|0.03436 +2016-07-01|-42.0|124.0|-0.95953|0.03145 +2016-07-01|-42.0|125.0|-0.13618|0.02892 +2016-07-01|-42.0|126.0|0.67158|0.02675 +2016-07-01|-42.0|127.0|1.46402|0.02491 +2016-07-01|-42.0|128.0|2.24146|0.0234 +2016-07-01|-42.0|129.0|3.00414|0.02218 +2016-07-01|-42.0|130.0|3.75231|0.02123 +2016-07-01|-42.0|131.0|4.48619|0.02054 +2016-07-01|-42.0|132.0|5.20596|0.02007 +2016-07-01|-42.0|133.0|5.91177|0.01982 +2016-07-01|-42.0|134.0|6.60375|0.01976 +2016-07-01|-42.0|135.0|7.282|0.01988 +2016-07-01|-42.0|136.0|7.94658|0.02016 +2016-07-01|-42.0|137.0|8.59754|0.02058 +2016-07-01|-42.0|138.0|9.23489|0.02114 +2016-07-01|-42.0|139.0|9.85863|0.02181 +2016-07-01|-42.0|140.0|10.46876|0.0226 +2016-07-01|-42.0|141.0|11.06523|0.02349 +2016-07-01|-42.0|142.0|11.64801|0.02447 +2016-07-01|-42.0|143.0|12.21703|0.02552 +2016-07-01|-42.0|144.0|12.77225|0.02666 +2016-07-01|-42.0|145.0|13.31358|0.02785 +2016-07-01|-42.0|146.0|13.84096|0.02911 +2016-07-01|-42.0|147.0|14.35431|0.03042 +2016-07-01|-42.0|148.0|14.85357|0.03178 +2016-07-01|-42.0|149.0|15.33865|0.03317 +2016-07-01|-42.0|150.0|15.8095|0.0346 +2016-07-01|-42.0|151.0|16.26603|0.03606 +2016-07-01|-42.0|152.0|16.70819|0.03754 +2016-07-01|-42.0|153.0|17.13593|0.03903 +2016-07-01|-42.0|154.0|17.54921|0.04054 +2016-07-01|-42.0|155.0|17.94798|0.04204 +2016-07-01|-42.0|156.0|18.33224|0.04355 +2016-07-01|-42.0|157.0|18.70197|0.04505 +2016-07-01|-42.0|158.0|19.05718|0.04653 +2016-07-01|-42.0|159.0|19.39791|0.04799 +2016-07-01|-42.0|160.0|19.72422|0.04943 +2016-07-01|-42.0|161.0|20.03616|0.05083 +2016-07-01|-42.0|162.0|20.33384|0.0522 +2016-07-01|-42.0|163.0|20.61739|0.05352 +2016-07-01|-42.0|164.0|20.88696|0.0548 +2016-07-01|-42.0|165.0|21.14272|0.05602 +2016-07-01|-42.0|166.0|21.38489|0.05719 +2016-07-01|-42.0|167.0|21.61369|0.05829 +2016-07-01|-42.0|168.0|21.8294|0.05933 +2016-07-01|-42.0|169.0|22.03231|0.0603 +2016-07-01|-42.0|170.0|22.22275|0.06119 +2016-07-01|-42.0|171.0|22.40104|0.06201 +2016-07-01|-42.0|172.0|22.56757|0.06275 +2016-07-01|-42.0|173.0|22.72273|0.0634 +2016-07-01|-42.0|174.0|22.86692|0.06398 +2016-07-01|-42.0|175.0|23.00056|0.06446 +2016-07-01|-42.0|176.0|23.12409|0.06486 +2016-07-01|-42.0|177.0|23.23797|0.06518 +2016-07-01|-42.0|178.0|23.34263|0.0654 +2016-07-01|-42.0|179.0|23.43852|0.06554 +2016-07-01|-42.0|-1.0|-22.53598|0.02008 +2016-07-01|-42.0|-2.0|-22.36335|0.02556 +2016-07-01|-42.0|-3.0|-22.20711|0.03028 +2016-07-01|-42.0|-4.0|-22.06573|0.03423 +2016-07-01|-42.0|-5.0|-21.93759|0.03744 +2016-07-01|-42.0|-6.0|-21.82107|0.03994 +2016-07-01|-42.0|-7.0|-21.71453|0.04175 +2016-07-01|-42.0|-8.0|-21.61634|0.04291 +2016-07-01|-42.0|-9.0|-21.52493|0.04349 +2016-07-01|-42.0|-10.0|-21.43872|0.04351 +2016-07-01|-42.0|-11.0|-21.35625|0.04304 +2016-07-01|-42.0|-12.0|-21.27609|0.04212 +2016-07-01|-42.0|-13.0|-21.19687|0.04081 +2016-07-01|-42.0|-14.0|-21.11732|0.03915 +2016-07-01|-42.0|-15.0|-21.03624|0.03718 +2016-07-01|-42.0|-16.0|-20.95248|0.03495 +2016-07-01|-42.0|-17.0|-20.86498|0.03249 +2016-07-01|-42.0|-18.0|-20.77271|0.02984 +2016-07-01|-42.0|-19.0|-20.67472|0.02702 +2016-07-01|-42.0|-20.0|-20.57009|0.02405 +2016-07-01|-42.0|-21.0|-20.45792|0.02096 +2016-07-01|-42.0|-22.0|-20.33737|0.01775 +2016-07-01|-42.0|-23.0|-20.2076|0.01444 +2016-07-01|-42.0|-24.0|-20.06778|0.01103 +2016-07-01|-42.0|-25.0|-19.91707|0.00752 +2016-07-01|-42.0|-26.0|-19.75467|0.00392 +2016-07-01|-42.0|-27.0|-19.57974|2.2E-4 +2016-07-01|-42.0|-28.0|-19.39145|-0.00357 +2016-07-01|-42.0|-29.0|-19.18894|-0.00747 +2016-07-01|-42.0|-30.0|-18.97137|-0.01147 +2016-07-01|-42.0|-31.0|-18.73787|-0.01558 +2016-07-01|-42.0|-32.0|-18.48758|-0.01979 +2016-07-01|-42.0|-33.0|-18.21964|-0.02412 +2016-07-01|-42.0|-34.0|-17.93318|-0.02855 +2016-07-01|-42.0|-35.0|-17.62736|-0.03309 +2016-07-01|-42.0|-36.0|-17.30135|-0.03772 +2016-07-01|-42.0|-37.0|-16.95436|-0.04244 +2016-07-01|-42.0|-38.0|-16.58562|-0.04725 +2016-07-01|-42.0|-39.0|-16.19441|-0.05211 +2016-07-01|-42.0|-40.0|-15.78009|-0.05703 +2016-07-01|-42.0|-41.0|-15.34206|-0.06198 +2016-07-01|-42.0|-42.0|-14.8798|-0.06694 +2016-07-01|-42.0|-43.0|-14.39289|-0.0719 +2016-07-01|-42.0|-44.0|-13.88099|-0.07682 +2016-07-01|-42.0|-45.0|-13.34387|-0.08168 +2016-07-01|-42.0|-46.0|-12.78142|-0.08646 +2016-07-01|-42.0|-47.0|-12.19363|-0.09112 +2016-07-01|-42.0|-48.0|-11.58065|-0.09565 +2016-07-01|-42.0|-49.0|-10.94273|-0.1 +2016-07-01|-42.0|-50.0|-10.28027|-0.10417 +2016-07-01|-42.0|-51.0|-9.59381|-0.10811 +2016-07-01|-42.0|-52.0|-8.88404|-0.1118 +2016-07-01|-42.0|-53.0|-8.15178|-0.11522 +2016-07-01|-42.0|-54.0|-7.39801|-0.11834 +2016-07-01|-42.0|-55.0|-6.62384|-0.12115 +2016-07-01|-42.0|-56.0|-5.83051|-0.12362 +2016-07-01|-42.0|-57.0|-5.0194|-0.12573 +2016-07-01|-42.0|-58.0|-4.19203|-0.12748 +2016-07-01|-42.0|-59.0|-3.35002|-0.12886 +2016-07-01|-42.0|-60.0|-2.4951|-0.12985 +2016-07-01|-42.0|-61.0|-1.6291|-0.13045 +2016-07-01|-42.0|-62.0|-0.75392|-0.13066 +2016-07-01|-42.0|-63.0|0.12845|-0.13048 +2016-07-01|-42.0|-64.0|1.01597|-0.12992 +2016-07-01|-42.0|-65.0|1.90656|-0.12899 +2016-07-01|-42.0|-66.0|2.79813|-0.12769 +2016-07-01|-42.0|-67.0|3.68855|-0.12605 +2016-07-01|-42.0|-68.0|4.57572|-0.12408 +2016-07-01|-42.0|-69.0|5.45754|-0.1218 +2016-07-01|-42.0|-70.0|6.33198|-0.11923 +2016-07-01|-42.0|-71.0|7.19702|-0.11639 +2016-07-01|-42.0|-72.0|8.05073|-0.11332 +2016-07-01|-42.0|-73.0|8.89125|-0.11003 +2016-07-01|-42.0|-74.0|9.7168|-0.10655 +2016-07-01|-42.0|-75.0|10.5257|-0.10291 +2016-07-01|-42.0|-76.0|11.31638|-0.09914 +2016-07-01|-42.0|-77.0|12.08737|-0.09526 +2016-07-01|-42.0|-78.0|12.83733|-0.09129 +2016-07-01|-42.0|-79.0|13.56504|-0.08728 +2016-07-01|-42.0|-80.0|14.2694|-0.08323 +2016-07-01|-42.0|-81.0|14.94944|-0.07918 +2016-07-01|-42.0|-82.0|15.60432|-0.07514 +2016-07-01|-42.0|-83.0|16.23333|-0.07114 +2016-07-01|-42.0|-84.0|16.83589|-0.0672 +2016-07-01|-42.0|-85.0|17.41153|-0.06334 +2016-07-01|-42.0|-86.0|17.95992|-0.05956 +2016-07-01|-42.0|-87.0|18.48086|-0.0559 +2016-07-01|-42.0|-88.0|18.97425|-0.05236 +2016-07-01|-42.0|-89.0|19.4401|-0.04894 +2016-07-01|-42.0|-90.0|19.87855|-0.04568 +2016-07-01|-42.0|-91.0|20.28983|-0.04256 +2016-07-01|-42.0|-92.0|20.67428|-0.0396 +2016-07-01|-42.0|-93.0|21.03233|-0.0368 +2016-07-01|-42.0|-94.0|21.3645|-0.03418 +2016-07-01|-42.0|-95.0|21.67139|-0.03171 +2016-07-01|-42.0|-96.0|21.95369|-0.02942 +2016-07-01|-42.0|-97.0|22.21214|-0.02729 +2016-07-01|-42.0|-98.0|22.44757|-0.02533 +2016-07-01|-42.0|-99.0|22.66086|-0.02353 +2016-07-01|-42.0|-100.0|22.85293|-0.02188 +2016-07-01|-42.0|-101.0|23.02476|-0.02037 +2016-07-01|-42.0|-102.0|23.17737|-0.01901 +2016-07-01|-42.0|-103.0|23.3118|-0.01777 +2016-07-01|-42.0|-104.0|23.42911|-0.01665 +2016-07-01|-42.0|-105.0|23.53041|-0.01564 +2016-07-01|-42.0|-106.0|23.61677|-0.01472 +2016-07-01|-42.0|-107.0|23.6893|-0.01388 +2016-07-01|-42.0|-108.0|23.7491|-0.01311 +2016-07-01|-42.0|-109.0|23.79725|-0.0124 +2016-07-01|-42.0|-110.0|23.83483|-0.01173 +2016-07-01|-42.0|-111.0|23.86288|-0.01109 +2016-07-01|-42.0|-112.0|23.88243|-0.01046 +2016-07-01|-42.0|-113.0|23.89447|-0.00984 +2016-07-01|-42.0|-114.0|23.89995|-0.00921 +2016-07-01|-42.0|-115.0|23.8998|-0.00856 +2016-07-01|-42.0|-116.0|23.89487|-0.00788 +2016-07-01|-42.0|-117.0|23.88601|-0.00716 +2016-07-01|-42.0|-118.0|23.87399|-0.0064 +2016-07-01|-42.0|-119.0|23.85953|-0.00559 +2016-07-01|-42.0|-120.0|23.84333|-0.00471 +2016-07-01|-42.0|-121.0|23.82599|-0.00378 +2016-07-01|-42.0|-122.0|23.8081|-0.00278 +2016-07-01|-42.0|-123.0|23.79016|-0.00172 +2016-07-01|-42.0|-124.0|23.77266|-5.9E-4 +2016-07-01|-42.0|-125.0|23.756|6.1E-4 +2016-07-01|-42.0|-126.0|23.74055|0.00187 +2016-07-01|-42.0|-127.0|23.72662|0.00319 +2016-07-01|-42.0|-128.0|23.71447|0.00456 +2016-07-01|-42.0|-129.0|23.70432|0.00599 +2016-07-01|-42.0|-130.0|23.69634|0.00747 +2016-07-01|-42.0|-131.0|23.69066|0.00899 +2016-07-01|-42.0|-132.0|23.68737|0.01054 +2016-07-01|-42.0|-133.0|23.68651|0.01212 +2016-07-01|-42.0|-134.0|23.68809|0.01373 +2016-07-01|-42.0|-135.0|23.6921|0.01535 +2016-07-01|-42.0|-136.0|23.69847|0.01699 +2016-07-01|-42.0|-137.0|23.70711|0.01863 +2016-07-01|-42.0|-138.0|23.71791|0.02028 +2016-07-01|-42.0|-139.0|23.73075|0.02192 +2016-07-01|-42.0|-140.0|23.74545|0.02355 +2016-07-01|-42.0|-141.0|23.76184|0.02517 +2016-07-01|-42.0|-142.0|23.77974|0.02678 +2016-07-01|-42.0|-143.0|23.79892|0.02836 +2016-07-01|-42.0|-144.0|23.81919|0.02993 +2016-07-01|-42.0|-145.0|23.8403|0.03147 +2016-07-01|-42.0|-146.0|23.86205|0.03299 +2016-07-01|-42.0|-147.0|23.88419|0.03449 +2016-07-01|-42.0|-148.0|23.90649|0.03597 +2016-07-01|-42.0|-149.0|23.92873|0.03742 +2016-07-01|-42.0|-150.0|23.95068|0.03884 +2016-07-01|-42.0|-151.0|23.97212|0.04024 +2016-07-01|-42.0|-152.0|23.99284|0.04162 +2016-07-01|-42.0|-153.0|24.01263|0.04297 +2016-07-01|-42.0|-154.0|24.03129|0.0443 +2016-07-01|-42.0|-155.0|24.04864|0.04561 +2016-07-01|-42.0|-156.0|24.06448|0.04689 +2016-07-01|-42.0|-157.0|24.07866|0.04815 +2016-07-01|-42.0|-158.0|24.091|0.04939 +2016-07-01|-42.0|-159.0|24.10133|0.0506 +2016-07-01|-42.0|-160.0|24.10952|0.05179 +2016-07-01|-42.0|-161.0|24.11538|0.05294 +2016-07-01|-42.0|-162.0|24.11879|0.05407 +2016-07-01|-42.0|-163.0|24.11957|0.05516 +2016-07-01|-42.0|-164.0|24.11757|0.05622 +2016-07-01|-42.0|-165.0|24.11262|0.05724 +2016-07-01|-42.0|-166.0|24.10454|0.05822 +2016-07-01|-42.0|-167.0|24.09314|0.05916 +2016-07-01|-42.0|-168.0|24.07823|0.06004 +2016-07-01|-42.0|-169.0|24.05958|0.06088 +2016-07-01|-42.0|-170.0|24.03696|0.06165 +2016-07-01|-42.0|-171.0|24.01012|0.06237 +2016-07-01|-42.0|-172.0|23.97877|0.06303 +2016-07-01|-42.0|-173.0|23.94263|0.06361 +2016-07-01|-42.0|-174.0|23.90137|0.06413 +2016-07-01|-42.0|-175.0|23.85467|0.06457 +2016-07-01|-42.0|-176.0|23.80215|0.06494 +2016-07-01|-42.0|-177.0|23.74343|0.06523 +2016-07-01|-42.0|-178.0|23.67814|0.06543 +2016-07-01|-42.0|-179.0|23.60584|0.06555 +2016-07-01|-43.0|0.0|-22.55194|0.0075 +2016-07-01|-43.0|1.0|-22.79619|2.0E-4 +2016-07-01|-43.0|2.0|-23.06111|-0.00776 +2016-07-01|-43.0|3.0|-23.34758|-0.01631 +2016-07-01|-43.0|4.0|-23.65632|-0.02542 +2016-07-01|-43.0|5.0|-23.98789|-0.03502 +2016-07-01|-43.0|6.0|-24.34261|-0.04505 +2016-07-01|-43.0|7.0|-24.72064|-0.05541 +2016-07-01|-43.0|8.0|-25.12191|-0.06604 +2016-07-01|-43.0|9.0|-25.54615|-0.07685 +2016-07-01|-43.0|10.0|-25.99289|-0.08774 +2016-07-01|-43.0|11.0|-26.46145|-0.09864 +2016-07-01|-43.0|12.0|-26.95099|-0.10945 +2016-07-01|-43.0|13.0|-27.46048|-0.12009 +2016-07-01|-43.0|14.0|-27.98876|-0.13048 +2016-07-01|-43.0|15.0|-28.5345|-0.14054 +2016-07-01|-43.0|16.0|-29.09629|-0.1502 +2016-07-01|-43.0|17.0|-29.67259|-0.1594 +2016-07-01|-43.0|18.0|-30.26182|-0.16809 +2016-07-01|-43.0|19.0|-30.86232|-0.17622 +2016-07-01|-43.0|20.0|-31.47239|-0.18374 +2016-07-01|-43.0|21.0|-32.09034|-0.19063 +2016-07-01|-43.0|22.0|-32.71446|-0.19687 +2016-07-01|-43.0|23.0|-33.34305|-0.20244 +2016-07-01|-43.0|24.0|-33.97446|-0.20733 +2016-07-01|-43.0|25.0|-34.60706|-0.21155 +2016-07-01|-43.0|26.0|-35.23928|-0.21509 +2016-07-01|-43.0|27.0|-35.86959|-0.21796 +2016-07-01|-43.0|28.0|-36.49655|-0.22019 +2016-07-01|-43.0|29.0|-37.11876|-0.22178 +2016-07-01|-43.0|30.0|-37.7349|-0.22275 +2016-07-01|-43.0|31.0|-38.34373|-0.22314 +2016-07-01|-43.0|32.0|-38.94405|-0.22296 +2016-07-01|-43.0|33.0|-39.53475|-0.22224 +2016-07-01|-43.0|34.0|-40.11479|-0.22101 +2016-07-01|-43.0|35.0|-40.68317|-0.21929 +2016-07-01|-43.0|36.0|-41.23897|-0.2171 +2016-07-01|-43.0|37.0|-41.78131|-0.21448 +2016-07-01|-43.0|38.0|-42.30938|-0.21144 +2016-07-01|-43.0|39.0|-42.8224|-0.20801 +2016-07-01|-43.0|40.0|-43.31964|-0.20421 +2016-07-01|-43.0|41.0|-43.80042|-0.20006 +2016-07-01|-43.0|42.0|-44.26407|-0.19557 +2016-07-01|-43.0|43.0|-44.71|-0.19077 +2016-07-01|-43.0|44.0|-45.1376|-0.18566 +2016-07-01|-43.0|45.0|-45.54631|-0.18026 +2016-07-01|-43.0|46.0|-45.93561|-0.17459 +2016-07-01|-43.0|47.0|-46.30496|-0.16864 +2016-07-01|-43.0|48.0|-46.65389|-0.16243 +2016-07-01|-43.0|49.0|-46.9819|-0.15597 +2016-07-01|-43.0|50.0|-47.28854|-0.14925 +2016-07-01|-43.0|51.0|-47.57337|-0.14229 +2016-07-01|-43.0|52.0|-47.83594|-0.13508 +2016-07-01|-43.0|53.0|-48.07584|-0.12764 +2016-07-01|-43.0|54.0|-48.29264|-0.11996 +2016-07-01|-43.0|55.0|-48.48596|-0.11204 +2016-07-01|-43.0|56.0|-48.65538|-0.1039 +2016-07-01|-43.0|57.0|-48.80053|-0.09551 +2016-07-01|-43.0|58.0|-48.92101|-0.08691 +2016-07-01|-43.0|59.0|-49.01644|-0.07807 +2016-07-01|-43.0|60.0|-49.08645|-0.06901 +2016-07-01|-43.0|61.0|-49.13065|-0.05974 +2016-07-01|-43.0|62.0|-49.14866|-0.05025 +2016-07-01|-43.0|63.0|-49.14009|-0.04057 +2016-07-01|-43.0|64.0|-49.10457|-0.03068 +2016-07-01|-43.0|65.0|-49.04169|-0.02062 +2016-07-01|-43.0|66.0|-48.95105|-0.01038 +2016-07-01|-43.0|67.0|-48.83224|1.0E-5 +2016-07-01|-43.0|68.0|-48.68483|0.01054 +2016-07-01|-43.0|69.0|-48.5084|0.02118 +2016-07-01|-43.0|70.0|-48.30249|0.03192 +2016-07-01|-43.0|71.0|-48.06666|0.04272 +2016-07-01|-43.0|72.0|-47.80043|0.05357 +2016-07-01|-43.0|73.0|-47.50334|0.06442 +2016-07-01|-43.0|74.0|-47.17489|0.07524 +2016-07-01|-43.0|75.0|-46.81462|0.08599 +2016-07-01|-43.0|76.0|-46.42203|0.09664 +2016-07-01|-43.0|77.0|-45.99667|0.10713 +2016-07-01|-43.0|78.0|-45.53808|0.11743 +2016-07-01|-43.0|79.0|-45.04583|0.12748 +2016-07-01|-43.0|80.0|-44.51953|0.13723 +2016-07-01|-43.0|81.0|-43.95883|0.14662 +2016-07-01|-43.0|82.0|-43.36347|0.15561 +2016-07-01|-43.0|83.0|-42.73322|0.16414 +2016-07-01|-43.0|84.0|-42.06798|0.17214 +2016-07-01|-43.0|85.0|-41.36772|0.17957 +2016-07-01|-43.0|86.0|-40.63257|0.18636 +2016-07-01|-43.0|87.0|-39.86276|0.19246 +2016-07-01|-43.0|88.0|-39.0587|0.19783 +2016-07-01|-43.0|89.0|-38.22096|0.20242 +2016-07-01|-43.0|90.0|-37.35029|0.20618 +2016-07-01|-43.0|91.0|-36.44762|0.20908 +2016-07-01|-43.0|92.0|-35.51409|0.2111 +2016-07-01|-43.0|93.0|-34.55105|0.21221 +2016-07-01|-43.0|94.0|-33.56002|0.2124 +2016-07-01|-43.0|95.0|-32.54275|0.21167 +2016-07-01|-43.0|96.0|-31.50117|0.21004 +2016-07-01|-43.0|97.0|-30.43737|0.20753 +2016-07-01|-43.0|98.0|-29.35362|0.20417 +2016-07-01|-43.0|99.0|-28.2523|0.2 +2016-07-01|-43.0|100.0|-27.13591|0.19508 +2016-07-01|-43.0|101.0|-26.00703|0.18948 +2016-07-01|-43.0|102.0|-24.86828|0.18326 +2016-07-01|-43.0|103.0|-23.7223|0.17651 +2016-07-01|-43.0|104.0|-22.57169|0.1693 +2016-07-01|-43.0|105.0|-21.419|0.16174 +2016-07-01|-43.0|106.0|-20.26672|0.15389 +2016-07-01|-43.0|107.0|-19.11719|0.14587 +2016-07-01|-43.0|108.0|-17.97263|0.13774 +2016-07-01|-43.0|109.0|-16.83509|0.1296 +2016-07-01|-43.0|110.0|-15.70645|0.12152 +2016-07-01|-43.0|111.0|-14.58841|0.11358 +2016-07-01|-43.0|112.0|-13.48246|0.10584 +2016-07-01|-43.0|113.0|-12.38991|0.09835 +2016-07-01|-43.0|114.0|-11.31187|0.09117 +2016-07-01|-43.0|115.0|-10.24925|0.08433 +2016-07-01|-43.0|116.0|-9.20282|0.07787 +2016-07-01|-43.0|117.0|-8.17316|0.07181 +2016-07-01|-43.0|118.0|-7.16069|0.06617 +2016-07-01|-43.0|119.0|-6.16574|0.06095 +2016-07-01|-43.0|120.0|-5.18848|0.05617 +2016-07-01|-43.0|121.0|-4.229|0.0518 +2016-07-01|-43.0|122.0|-3.28732|0.04786 +2016-07-01|-43.0|123.0|-2.36336|0.04433 +2016-07-01|-43.0|124.0|-1.45702|0.04119 +2016-07-01|-43.0|125.0|-0.56815|0.03843 +2016-07-01|-43.0|126.0|0.30342|0.03602 +2016-07-01|-43.0|127.0|1.1579|0.03395 +2016-07-01|-43.0|128.0|1.99546|0.0322 +2016-07-01|-43.0|129.0|2.81631|0.03075 +2016-07-01|-43.0|130.0|3.62063|0.02957 +2016-07-01|-43.0|131.0|4.40859|0.02864 +2016-07-01|-43.0|132.0|5.18035|0.02794 +2016-07-01|-43.0|133.0|5.93605|0.02746 +2016-07-01|-43.0|134.0|6.67581|0.02718 +2016-07-01|-43.0|135.0|7.39973|0.02708 +2016-07-01|-43.0|136.0|8.10789|0.02714 +2016-07-01|-43.0|137.0|8.80036|0.02735 +2016-07-01|-43.0|138.0|9.47719|0.0277 +2016-07-01|-43.0|139.0|10.13841|0.02817 +2016-07-01|-43.0|140.0|10.78404|0.02876 +2016-07-01|-43.0|141.0|11.4141|0.02946 +2016-07-01|-43.0|142.0|12.02859|0.03025 +2016-07-01|-43.0|143.0|12.6275|0.03112 +2016-07-01|-43.0|144.0|13.21082|0.03208 +2016-07-01|-43.0|145.0|13.77854|0.0331 +2016-07-01|-43.0|146.0|14.33064|0.03419 +2016-07-01|-43.0|147.0|14.8671|0.03534 +2016-07-01|-43.0|148.0|15.38791|0.03654 +2016-07-01|-43.0|149.0|15.89304|0.03779 +2016-07-01|-43.0|150.0|16.3825|0.03908 +2016-07-01|-43.0|151.0|16.85627|0.0404 +2016-07-01|-43.0|152.0|17.31435|0.04175 +2016-07-01|-43.0|153.0|17.75674|0.04312 +2016-07-01|-43.0|154.0|18.18348|0.04451 +2016-07-01|-43.0|155.0|18.59457|0.0459 +2016-07-01|-43.0|156.0|18.99007|0.0473 +2016-07-01|-43.0|157.0|19.37003|0.0487 +2016-07-01|-43.0|158.0|19.73452|0.05009 +2016-07-01|-43.0|159.0|20.08364|0.05146 +2016-07-01|-43.0|160.0|20.41748|0.05281 +2016-07-01|-43.0|161.0|20.73619|0.05414 +2016-07-01|-43.0|162.0|21.03992|0.05543 +2016-07-01|-43.0|163.0|21.32884|0.05668 +2016-07-01|-43.0|164.0|21.60316|0.05789 +2016-07-01|-43.0|165.0|21.86311|0.05906 +2016-07-01|-43.0|166.0|22.10895|0.06017 +2016-07-01|-43.0|167.0|22.34095|0.06122 +2016-07-01|-43.0|168.0|22.55942|0.06221 +2016-07-01|-43.0|169.0|22.7647|0.06313 +2016-07-01|-43.0|170.0|22.95713|0.06398 +2016-07-01|-43.0|171.0|23.1371|0.06476 +2016-07-01|-43.0|172.0|23.30499|0.06547 +2016-07-01|-43.0|173.0|23.46124|0.06609 +2016-07-01|-43.0|174.0|23.60625|0.06664 +2016-07-01|-43.0|175.0|23.74048|0.0671 +2016-07-01|-43.0|176.0|23.86438|0.06748 +2016-07-01|-43.0|177.0|23.9784|0.06777 +2016-07-01|-43.0|178.0|24.08301|0.06797 +2016-07-01|-43.0|179.0|24.17866|0.0681 +2016-07-01|-43.0|-1.0|-22.3273|0.01413 +2016-07-01|-43.0|-2.0|-22.1211|0.02006 +2016-07-01|-43.0|-3.0|-21.93205|0.02528 +2016-07-01|-43.0|-4.0|-21.75875|0.02979 +2016-07-01|-43.0|-5.0|-21.59977|0.03359 +2016-07-01|-43.0|-6.0|-21.45359|0.03671 +2016-07-01|-43.0|-7.0|-21.31869|0.03917 +2016-07-01|-43.0|-8.0|-21.19353|0.041 +2016-07-01|-43.0|-9.0|-21.07658|0.04223 +2016-07-01|-43.0|-10.0|-20.96634|0.04291 +2016-07-01|-43.0|-11.0|-20.86133|0.04308 +2016-07-01|-43.0|-12.0|-20.76014|0.04277 +2016-07-01|-43.0|-13.0|-20.66138|0.04204 +2016-07-01|-43.0|-14.0|-20.56372|0.04093 +2016-07-01|-43.0|-15.0|-20.46592|0.03947 +2016-07-01|-43.0|-16.0|-20.36676|0.03771 +2016-07-01|-43.0|-17.0|-20.26509|0.03567 +2016-07-01|-43.0|-18.0|-20.15981|0.03339 +2016-07-01|-43.0|-19.0|-20.04985|0.0309 +2016-07-01|-43.0|-20.0|-19.93422|0.02822 +2016-07-01|-43.0|-21.0|-19.81192|0.02536 +2016-07-01|-43.0|-22.0|-19.682|0.02235 +2016-07-01|-43.0|-23.0|-19.54353|0.0192 +2016-07-01|-43.0|-24.0|-19.3956|0.01591 +2016-07-01|-43.0|-25.0|-19.2373|0.01249 +2016-07-01|-43.0|-26.0|-19.06773|0.00894 +2016-07-01|-43.0|-27.0|-18.886|0.00528 +2016-07-01|-43.0|-28.0|-18.69121|0.00149 +2016-07-01|-43.0|-29.0|-18.48247|-0.00241 +2016-07-01|-43.0|-30.0|-18.2589|-0.00644 +2016-07-01|-43.0|-31.0|-18.01959|-0.01058 +2016-07-01|-43.0|-32.0|-17.76368|-0.01483 +2016-07-01|-43.0|-33.0|-17.4903|-0.0192 +2016-07-01|-43.0|-34.0|-17.19857|-0.02368 +2016-07-01|-43.0|-35.0|-16.88767|-0.02826 +2016-07-01|-43.0|-36.0|-16.55679|-0.03293 +2016-07-01|-43.0|-37.0|-16.20515|-0.03769 +2016-07-01|-43.0|-38.0|-15.83203|-0.04251 +2016-07-01|-43.0|-39.0|-15.43675|-0.0474 +2016-07-01|-43.0|-40.0|-15.0187|-0.05232 +2016-07-01|-43.0|-41.0|-14.57732|-0.05727 +2016-07-01|-43.0|-42.0|-14.11216|-0.06222 +2016-07-01|-43.0|-43.0|-13.62282|-0.06715 +2016-07-01|-43.0|-44.0|-13.10902|-0.07204 +2016-07-01|-43.0|-45.0|-12.57058|-0.07686 +2016-07-01|-43.0|-46.0|-12.00743|-0.08159 +2016-07-01|-43.0|-47.0|-11.41961|-0.08621 +2016-07-01|-43.0|-48.0|-10.8073|-0.09067 +2016-07-01|-43.0|-49.0|-10.17077|-0.09497 +2016-07-01|-43.0|-50.0|-9.51047|-0.09907 +2016-07-01|-43.0|-51.0|-8.82695|-0.10295 +2016-07-01|-43.0|-52.0|-8.12092|-0.10658 +2016-07-01|-43.0|-53.0|-7.39319|-0.10995 +2016-07-01|-43.0|-54.0|-6.64474|-0.11302 +2016-07-01|-43.0|-55.0|-5.87666|-0.11578 +2016-07-01|-43.0|-56.0|-5.0902|-0.11821 +2016-07-01|-43.0|-57.0|-4.28669|-0.12031 +2016-07-01|-43.0|-58.0|-3.4676|-0.12204 +2016-07-01|-43.0|-59.0|-2.63451|-0.12342 +2016-07-01|-43.0|-60.0|-1.78909|-0.12442 +2016-07-01|-43.0|-61.0|-0.93311|-0.12505 +2016-07-01|-43.0|-62.0|-0.06841|-0.1253 +2016-07-01|-43.0|-63.0|0.80312|-0.12518 +2016-07-01|-43.0|-64.0|1.67951|-0.12469 +2016-07-01|-43.0|-65.0|2.55878|-0.12385 +2016-07-01|-43.0|-66.0|3.43891|-0.12265 +2016-07-01|-43.0|-67.0|4.31788|-0.12113 +2016-07-01|-43.0|-68.0|5.19369|-0.11929 +2016-07-01|-43.0|-69.0|6.06432|-0.11715 +2016-07-01|-43.0|-70.0|6.92783|-0.11473 +2016-07-01|-43.0|-71.0|7.7823|-0.11206 +2016-07-01|-43.0|-72.0|8.62588|-0.10915 +2016-07-01|-43.0|-73.0|9.45678|-0.10604 +2016-07-01|-43.0|-74.0|10.27331|-0.10274 +2016-07-01|-43.0|-75.0|11.07384|-0.09929 +2016-07-01|-43.0|-76.0|11.85688|-0.0957 +2016-07-01|-43.0|-77.0|12.621|-0.09201 +2016-07-01|-43.0|-78.0|13.36491|-0.08824 +2016-07-01|-43.0|-79.0|14.08743|-0.08441 +2016-07-01|-43.0|-80.0|14.78747|-0.08055 +2016-07-01|-43.0|-81.0|15.4641|-0.07667 +2016-07-01|-43.0|-82.0|16.11648|-0.07281 +2016-07-01|-43.0|-83.0|16.74391|-0.06898 +2016-07-01|-43.0|-84.0|17.34579|-0.0652 +2016-07-01|-43.0|-85.0|17.92166|-0.06149 +2016-07-01|-43.0|-86.0|18.47116|-0.05786 +2016-07-01|-43.0|-87.0|18.99406|-0.05433 +2016-07-01|-43.0|-88.0|19.49022|-0.05091 +2016-07-01|-43.0|-89.0|19.95964|-0.04761 +2016-07-01|-43.0|-90.0|20.40239|-0.04445 +2016-07-01|-43.0|-91.0|20.81865|-0.04143 +2016-07-01|-43.0|-92.0|21.20873|-0.03855 +2016-07-01|-43.0|-93.0|21.57297|-0.03583 +2016-07-01|-43.0|-94.0|21.91185|-0.03326 +2016-07-01|-43.0|-95.0|22.2259|-0.03085 +2016-07-01|-43.0|-96.0|22.51574|-0.0286 +2016-07-01|-43.0|-97.0|22.78205|-0.0265 +2016-07-01|-43.0|-98.0|23.02559|-0.02456 +2016-07-01|-43.0|-99.0|23.24717|-0.02277 +2016-07-01|-43.0|-100.0|23.44764|-0.02113 +2016-07-01|-43.0|-101.0|23.62792|-0.01962 +2016-07-01|-43.0|-102.0|23.78895|-0.01824 +2016-07-01|-43.0|-103.0|23.93171|-0.01698 +2016-07-01|-43.0|-104.0|24.05721|-0.01584 +2016-07-01|-43.0|-105.0|24.16648|-0.01479 +2016-07-01|-43.0|-106.0|24.26056|-0.01384 +2016-07-01|-43.0|-107.0|24.34049|-0.01296 +2016-07-01|-43.0|-108.0|24.40735|-0.01215 +2016-07-01|-43.0|-109.0|24.46216|-0.01139 +2016-07-01|-43.0|-110.0|24.50596|-0.01067 +2016-07-01|-43.0|-111.0|24.53978|-0.00999 +2016-07-01|-43.0|-112.0|24.56462|-0.00931 +2016-07-01|-43.0|-113.0|24.58145|-0.00864 +2016-07-01|-43.0|-114.0|24.59121|-0.00797 +2016-07-01|-43.0|-115.0|24.59482|-0.00728 +2016-07-01|-43.0|-116.0|24.59314|-0.00656 +2016-07-01|-43.0|-117.0|24.58702|-0.0058 +2016-07-01|-43.0|-118.0|24.57724|-0.005 +2016-07-01|-43.0|-119.0|24.56454|-0.00416 +2016-07-01|-43.0|-120.0|24.54963|-0.00326 +2016-07-01|-43.0|-121.0|24.53314|-0.0023 +2016-07-01|-43.0|-122.0|24.51568|-0.00127 +2016-07-01|-43.0|-123.0|24.49779|-1.9E-4 +2016-07-01|-43.0|-124.0|24.47998|9.6E-4 +2016-07-01|-43.0|-125.0|24.4627|0.00217 +2016-07-01|-43.0|-126.0|24.44633|0.00344 +2016-07-01|-43.0|-127.0|24.43124|0.00478 +2016-07-01|-43.0|-128.0|24.41771|0.00616 +2016-07-01|-43.0|-129.0|24.40602|0.0076 +2016-07-01|-43.0|-130.0|24.39636|0.00909 +2016-07-01|-43.0|-131.0|24.3889|0.01062 +2016-07-01|-43.0|-132.0|24.38376|0.01218 +2016-07-01|-43.0|-133.0|24.38102|0.01377 +2016-07-01|-43.0|-134.0|24.38074|0.01539 +2016-07-01|-43.0|-135.0|24.3829|0.01703 +2016-07-01|-43.0|-136.0|24.3875|0.01869 +2016-07-01|-43.0|-137.0|24.39446|0.02035 +2016-07-01|-43.0|-138.0|24.40371|0.02201 +2016-07-01|-43.0|-139.0|24.41512|0.02367 +2016-07-01|-43.0|-140.0|24.42857|0.02533 +2016-07-01|-43.0|-141.0|24.44388|0.02697 +2016-07-01|-43.0|-142.0|24.46089|0.02861 +2016-07-01|-43.0|-143.0|24.47941|0.03022 +2016-07-01|-43.0|-144.0|24.49922|0.03182 +2016-07-01|-43.0|-145.0|24.52011|0.0334 +2016-07-01|-43.0|-146.0|24.54187|0.03495 +2016-07-01|-43.0|-147.0|24.56425|0.03648 +2016-07-01|-43.0|-148.0|24.58703|0.03799 +2016-07-01|-43.0|-149.0|24.60998|0.03948 +2016-07-01|-43.0|-150.0|24.63287|0.04094 +2016-07-01|-43.0|-151.0|24.65547|0.04237 +2016-07-01|-43.0|-152.0|24.67755|0.04378 +2016-07-01|-43.0|-153.0|24.69891|0.04517 +2016-07-01|-43.0|-154.0|24.71933|0.04653 +2016-07-01|-43.0|-155.0|24.73859|0.04787 +2016-07-01|-43.0|-156.0|24.75652|0.04918 +2016-07-01|-43.0|-157.0|24.7729|0.05046 +2016-07-01|-43.0|-158.0|24.78757|0.05172 +2016-07-01|-43.0|-159.0|24.80033|0.05296 +2016-07-01|-43.0|-160.0|24.81101|0.05416 +2016-07-01|-43.0|-161.0|24.81943|0.05533 +2016-07-01|-43.0|-162.0|24.82542|0.05648 +2016-07-01|-43.0|-163.0|24.82879|0.05758 +2016-07-01|-43.0|-164.0|24.82938|0.05865 +2016-07-01|-43.0|-165.0|24.82698|0.05968 +2016-07-01|-43.0|-166.0|24.82141|0.06067 +2016-07-01|-43.0|-167.0|24.81246|0.06161 +2016-07-01|-43.0|-168.0|24.79992|0.0625 +2016-07-01|-43.0|-169.0|24.78354|0.06334 +2016-07-01|-43.0|-170.0|24.76308|0.06412 +2016-07-01|-43.0|-171.0|24.73827|0.06484 +2016-07-01|-43.0|-172.0|24.70883|0.0655 +2016-07-01|-43.0|-173.0|24.67445|0.06609 +2016-07-01|-43.0|-174.0|24.63481|0.06662 +2016-07-01|-43.0|-175.0|24.58956|0.06707 +2016-07-01|-43.0|-176.0|24.53834|0.06744 +2016-07-01|-43.0|-177.0|24.48076|0.06773 +2016-07-01|-43.0|-178.0|24.41643|0.06795 +2016-07-01|-43.0|-179.0|24.34492|0.06808 +2016-07-01|-44.0|0.0|-22.37041|0.00138 +2016-07-01|-44.0|1.0|-22.64772|-0.00614 +2016-07-01|-44.0|2.0|-22.94568|-0.01424 +2016-07-01|-44.0|3.0|-23.26502|-0.02288 +2016-07-01|-44.0|4.0|-23.60629|-0.03198 +2016-07-01|-44.0|5.0|-23.96986|-0.04151 +2016-07-01|-44.0|6.0|-24.35592|-0.05139 +2016-07-01|-44.0|7.0|-24.76448|-0.06155 +2016-07-01|-44.0|8.0|-25.19535|-0.07191 +2016-07-01|-44.0|9.0|-25.64817|-0.0824 +2016-07-01|-44.0|10.0|-26.12237|-0.09294 +2016-07-01|-44.0|11.0|-26.61722|-0.10344 +2016-07-01|-44.0|12.0|-27.13185|-0.11383 +2016-07-01|-44.0|13.0|-27.66521|-0.12404 +2016-07-01|-44.0|14.0|-28.21612|-0.13398 +2016-07-01|-44.0|15.0|-28.7833|-0.1436 +2016-07-01|-44.0|16.0|-29.36535|-0.15283 +2016-07-01|-44.0|17.0|-29.96082|-0.16162 +2016-07-01|-44.0|18.0|-30.56815|-0.16992 +2016-07-01|-44.0|19.0|-31.18579|-0.17768 +2016-07-01|-44.0|20.0|-31.81212|-0.18487 +2016-07-01|-44.0|21.0|-32.44552|-0.19148 +2016-07-01|-44.0|22.0|-33.08439|-0.19746 +2016-07-01|-44.0|23.0|-33.72713|-0.20282 +2016-07-01|-44.0|24.0|-34.37218|-0.20755 +2016-07-01|-44.0|25.0|-35.018|-0.21164 +2016-07-01|-44.0|26.0|-35.66312|-0.2151 +2016-07-01|-44.0|27.0|-36.30612|-0.21794 +2016-07-01|-44.0|28.0|-36.9456|-0.22016 +2016-07-01|-44.0|29.0|-37.58029|-0.22179 +2016-07-01|-44.0|30.0|-38.20891|-0.22284 +2016-07-01|-44.0|31.0|-38.83031|-0.22334 +2016-07-01|-44.0|32.0|-39.44335|-0.2233 +2016-07-01|-44.0|33.0|-40.04699|-0.22274 +2016-07-01|-44.0|34.0|-40.64023|-0.2217 +2016-07-01|-44.0|35.0|-41.22213|-0.22019 +2016-07-01|-44.0|36.0|-41.79182|-0.21824 +2016-07-01|-44.0|37.0|-42.34845|-0.21586 +2016-07-01|-44.0|38.0|-42.89126|-0.21309 +2016-07-01|-44.0|39.0|-43.4195|-0.20993 +2016-07-01|-44.0|40.0|-43.93248|-0.20642 +2016-07-01|-44.0|41.0|-44.42953|-0.20256 +2016-07-01|-44.0|42.0|-44.91004|-0.19838 +2016-07-01|-44.0|43.0|-45.3734|-0.19389 +2016-07-01|-44.0|44.0|-45.81906|-0.1891 +2016-07-01|-44.0|45.0|-46.24646|-0.18402 +2016-07-01|-44.0|46.0|-46.6551|-0.17867 +2016-07-01|-44.0|47.0|-47.04447|-0.17304 +2016-07-01|-44.0|48.0|-47.41408|-0.16716 +2016-07-01|-44.0|49.0|-47.76348|-0.16103 +2016-07-01|-44.0|50.0|-48.09222|-0.15465 +2016-07-01|-44.0|51.0|-48.39985|-0.14802 +2016-07-01|-44.0|52.0|-48.68594|-0.14115 +2016-07-01|-44.0|53.0|-48.95008|-0.13405 +2016-07-01|-44.0|54.0|-49.19186|-0.12671 +2016-07-01|-44.0|55.0|-49.41087|-0.11913 +2016-07-01|-44.0|56.0|-49.60672|-0.11133 +2016-07-01|-44.0|57.0|-49.77901|-0.10329 +2016-07-01|-44.0|58.0|-49.92734|-0.09502 +2016-07-01|-44.0|59.0|-50.05134|-0.08653 +2016-07-01|-44.0|60.0|-50.1506|-0.07782 +2016-07-01|-44.0|61.0|-50.22473|-0.06889 +2016-07-01|-44.0|62.0|-50.27334|-0.05974 +2016-07-01|-44.0|63.0|-50.29602|-0.05039 +2016-07-01|-44.0|64.0|-50.29236|-0.04084 +2016-07-01|-44.0|65.0|-50.26194|-0.0311 +2016-07-01|-44.0|66.0|-50.20433|-0.02117 +2016-07-01|-44.0|67.0|-50.11909|-0.01109 +2016-07-01|-44.0|68.0|-50.00576|-8.5E-4 +2016-07-01|-44.0|69.0|-49.86388|0.00952 +2016-07-01|-44.0|70.0|-49.69295|0.02 +2016-07-01|-44.0|71.0|-49.49247|0.03057 +2016-07-01|-44.0|72.0|-49.26192|0.0412 +2016-07-01|-44.0|73.0|-49.00079|0.05187 +2016-07-01|-44.0|74.0|-48.70851|0.06254 +2016-07-01|-44.0|75.0|-48.38454|0.07319 +2016-07-01|-44.0|76.0|-48.02833|0.08377 +2016-07-01|-44.0|77.0|-47.63931|0.09424 +2016-07-01|-44.0|78.0|-47.21693|0.10457 +2016-07-01|-44.0|79.0|-46.76066|0.1147 +2016-07-01|-44.0|80.0|-46.26998|0.12459 +2016-07-01|-44.0|81.0|-45.74441|0.1342 +2016-07-01|-44.0|82.0|-45.18352|0.14346 +2016-07-01|-44.0|83.0|-44.58692|0.15233 +2016-07-01|-44.0|84.0|-43.95432|0.16075 +2016-07-01|-44.0|85.0|-43.28549|0.16867 +2016-07-01|-44.0|86.0|-42.58032|0.17604 +2016-07-01|-44.0|87.0|-41.83883|0.1828 +2016-07-01|-44.0|88.0|-41.06115|0.18889 +2016-07-01|-44.0|89.0|-40.24758|0.19428 +2016-07-01|-44.0|90.0|-39.39858|0.19891 +2016-07-01|-44.0|91.0|-38.5148|0.20276 +2016-07-01|-44.0|92.0|-37.59707|0.20577 +2016-07-01|-44.0|93.0|-36.64644|0.20793 +2016-07-01|-44.0|94.0|-35.66415|0.20922 +2016-07-01|-44.0|95.0|-34.65165|0.20963 +2016-07-01|-44.0|96.0|-33.6106|0.20915 +2016-07-01|-44.0|97.0|-32.54287|0.2078 +2016-07-01|-44.0|98.0|-31.45049|0.20559 +2016-07-01|-44.0|99.0|-30.3357|0.20257 +2016-07-01|-44.0|100.0|-29.20084|0.19876 +2016-07-01|-44.0|101.0|-28.04843|0.19423 +2016-07-01|-44.0|102.0|-26.88105|0.18903 +2016-07-01|-44.0|103.0|-25.70135|0.18323 +2016-07-01|-44.0|104.0|-24.51203|0.17691 +2016-07-01|-44.0|105.0|-23.31578|0.17015 +2016-07-01|-44.0|106.0|-22.11524|0.16304 +2016-07-01|-44.0|107.0|-20.91302|0.15565 +2016-07-01|-44.0|108.0|-19.7116|0.14808 +2016-07-01|-44.0|109.0|-18.51335|0.1404 +2016-07-01|-44.0|110.0|-17.32052|0.13271 +2016-07-01|-44.0|111.0|-16.13515|0.12507 +2016-07-01|-44.0|112.0|-14.95915|0.11755 +2016-07-01|-44.0|113.0|-13.79423|0.11021 +2016-07-01|-44.0|114.0|-12.6419|0.10312 +2016-07-01|-44.0|115.0|-11.5035|0.09631 +2016-07-01|-44.0|116.0|-10.38017|0.08983 +2016-07-01|-44.0|117.0|-9.27289|0.0837 +2016-07-01|-44.0|118.0|-8.18247|0.07795 +2016-07-01|-44.0|119.0|-7.10955|0.07259 +2016-07-01|-44.0|120.0|-6.05466|0.06764 +2016-07-01|-44.0|121.0|-5.01819|0.06308 +2016-07-01|-44.0|122.0|-4.00041|0.05893 +2016-07-01|-44.0|123.0|-3.00152|0.05518 +2016-07-01|-44.0|124.0|-2.02163|0.0518 +2016-07-01|-44.0|125.0|-1.06079|0.04879 +2016-07-01|-44.0|126.0|-0.119|0.04614 +2016-07-01|-44.0|127.0|0.80379|0.04382 +2016-07-01|-44.0|128.0|1.70765|0.04181 +2016-07-01|-44.0|129.0|2.59266|0.0401 +2016-07-01|-44.0|130.0|3.45894|0.03866 +2016-07-01|-44.0|131.0|4.3066|0.03748 +2016-07-01|-44.0|132.0|5.13574|0.03653 +2016-07-01|-44.0|133.0|5.94647|0.0358 +2016-07-01|-44.0|134.0|6.73891|0.03527 +2016-07-01|-44.0|135.0|7.51316|0.03493 +2016-07-01|-44.0|136.0|8.26929|0.03475 +2016-07-01|-44.0|137.0|9.00741|0.03473 +2016-07-01|-44.0|138.0|9.72758|0.03485 +2016-07-01|-44.0|139.0|10.42989|0.03511 +2016-07-01|-44.0|140.0|11.11438|0.03548 +2016-07-01|-44.0|141.0|11.78112|0.03596 +2016-07-01|-44.0|142.0|12.43017|0.03654 +2016-07-01|-44.0|143.0|13.06158|0.03722 +2016-07-01|-44.0|144.0|13.67539|0.03798 +2016-07-01|-44.0|145.0|14.27165|0.03882 +2016-07-01|-44.0|146.0|14.85042|0.03973 +2016-07-01|-44.0|147.0|15.41173|0.04071 +2016-07-01|-44.0|148.0|15.95565|0.04174 +2016-07-01|-44.0|149.0|16.48222|0.04283 +2016-07-01|-44.0|150.0|16.9915|0.04396 +2016-07-01|-44.0|151.0|17.48356|0.04514 +2016-07-01|-44.0|152.0|17.95846|0.04635 +2016-07-01|-44.0|153.0|18.41629|0.04758 +2016-07-01|-44.0|154.0|18.85713|0.04884 +2016-07-01|-44.0|155.0|19.28108|0.05011 +2016-07-01|-44.0|156.0|19.68826|0.0514 +2016-07-01|-44.0|157.0|20.07878|0.05268 +2016-07-01|-44.0|158.0|20.4528|0.05397 +2016-07-01|-44.0|159.0|20.81046|0.05524 +2016-07-01|-44.0|160.0|21.15195|0.0565 +2016-07-01|-44.0|161.0|21.47746|0.05774 +2016-07-01|-44.0|162.0|21.78721|0.05895 +2016-07-01|-44.0|163.0|22.08143|0.06013 +2016-07-01|-44.0|164.0|22.36039|0.06127 +2016-07-01|-44.0|165.0|22.62437|0.06236 +2016-07-01|-44.0|166.0|22.87368|0.06341 +2016-07-01|-44.0|167.0|23.10865|0.0644 +2016-07-01|-44.0|168.0|23.32962|0.06534 +2016-07-01|-44.0|169.0|23.53698|0.06621 +2016-07-01|-44.0|170.0|23.73111|0.06701 +2016-07-01|-44.0|171.0|23.91242|0.06775 +2016-07-01|-44.0|172.0|24.08134|0.06841 +2016-07-01|-44.0|173.0|24.23832|0.069 +2016-07-01|-44.0|174.0|24.38379|0.06951 +2016-07-01|-44.0|175.0|24.51823|0.06994 +2016-07-01|-44.0|176.0|24.64211|0.07029 +2016-07-01|-44.0|177.0|24.75589|0.07055 +2016-07-01|-44.0|178.0|24.86005|0.07073 +2016-07-01|-44.0|179.0|24.95505|0.07083 +2016-07-01|-44.0|-1.0|-22.11291|0.0083 +2016-07-01|-44.0|-2.0|-21.87419|0.01458 +2016-07-01|-44.0|-3.0|-21.65315|0.02022 +2016-07-01|-44.0|-4.0|-21.44855|0.02519 +2016-07-01|-44.0|-5.0|-21.2591|0.02951 +2016-07-01|-44.0|-6.0|-21.08343|0.03318 +2016-07-01|-44.0|-7.0|-20.92011|0.03621 +2016-07-01|-44.0|-8.0|-20.76772|0.03863 +2016-07-01|-44.0|-9.0|-20.6248|0.04047 +2016-07-01|-44.0|-10.0|-20.4899|0.04175 +2016-07-01|-44.0|-11.0|-20.36158|0.04251 +2016-07-01|-44.0|-12.0|-20.23843|0.04279 +2016-07-01|-44.0|-13.0|-20.11908|0.04263 +2016-07-01|-44.0|-14.0|-20.00217|0.04205 +2016-07-01|-44.0|-15.0|-19.88642|0.04109 +2016-07-01|-44.0|-16.0|-19.77057|0.03979 +2016-07-01|-44.0|-17.0|-19.6534|0.03818 +2016-07-01|-44.0|-18.0|-19.53374|0.03629 +2016-07-01|-44.0|-19.0|-19.41047|0.03415 +2016-07-01|-44.0|-20.0|-19.28248|0.03177 +2016-07-01|-44.0|-21.0|-19.14872|0.02918 +2016-07-01|-44.0|-22.0|-19.00815|0.0264 +2016-07-01|-44.0|-23.0|-18.85976|0.02343 +2016-07-01|-44.0|-24.0|-18.70255|0.02029 +2016-07-01|-44.0|-25.0|-18.53555|0.017 +2016-07-01|-44.0|-26.0|-18.35779|0.01355 +2016-07-01|-44.0|-27.0|-18.16833|0.00995 +2016-07-01|-44.0|-28.0|-17.96621|0.00621 +2016-07-01|-44.0|-29.0|-17.75051|0.00233 +2016-07-01|-44.0|-30.0|-17.52029|-0.00168 +2016-07-01|-44.0|-31.0|-17.27466|-0.00582 +2016-07-01|-44.0|-32.0|-17.01271|-0.01008 +2016-07-01|-44.0|-33.0|-16.73356|-0.01446 +2016-07-01|-44.0|-34.0|-16.43636|-0.01895 +2016-07-01|-44.0|-35.0|-16.12028|-0.02354 +2016-07-01|-44.0|-36.0|-15.78453|-0.02822 +2016-07-01|-44.0|-37.0|-15.42837|-0.03298 +2016-07-01|-44.0|-38.0|-15.05109|-0.03781 +2016-07-01|-44.0|-39.0|-14.65205|-0.04269 +2016-07-01|-44.0|-40.0|-14.23067|-0.04761 +2016-07-01|-44.0|-41.0|-13.78645|-0.05254 +2016-07-01|-44.0|-42.0|-13.31895|-0.05746 +2016-07-01|-44.0|-43.0|-12.82786|-0.06236 +2016-07-01|-44.0|-44.0|-12.3129|-0.0672 +2016-07-01|-44.0|-45.0|-11.77396|-0.07198 +2016-07-01|-44.0|-46.0|-11.21099|-0.07666 +2016-07-01|-44.0|-47.0|-10.62407|-0.08121 +2016-07-01|-44.0|-48.0|-10.01341|-0.08562 +2016-07-01|-44.0|-49.0|-9.37932|-0.08985 +2016-07-01|-44.0|-50.0|-8.72225|-0.09389 +2016-07-01|-44.0|-51.0|-8.04278|-0.09771 +2016-07-01|-44.0|-52.0|-7.3416|-0.10129 +2016-07-01|-44.0|-53.0|-6.61954|-0.1046 +2016-07-01|-44.0|-54.0|-5.87757|-0.10762 +2016-07-01|-44.0|-55.0|-5.11676|-0.11035 +2016-07-01|-44.0|-56.0|-4.33831|-0.11275 +2016-07-01|-44.0|-57.0|-3.54355|-0.11483 +2016-07-01|-44.0|-58.0|-2.73387|-0.11656 +2016-07-01|-44.0|-59.0|-1.91082|-0.11794 +2016-07-01|-44.0|-60.0|-1.07601|-0.11896 +2016-07-01|-44.0|-61.0|-0.23112|-0.11962 +2016-07-01|-44.0|-62.0|0.62208|-0.11993 +2016-07-01|-44.0|-63.0|1.48176|-0.11987 +2016-07-01|-44.0|-64.0|2.34607|-0.11947 +2016-07-01|-44.0|-65.0|3.21309|-0.11871 +2016-07-01|-44.0|-66.0|4.08092|-0.11763 +2016-07-01|-44.0|-67.0|4.94761|-0.11623 +2016-07-01|-44.0|-68.0|5.81125|-0.11452 +2016-07-01|-44.0|-69.0|6.66995|-0.11253 +2016-07-01|-44.0|-70.0|7.52183|-0.11027 +2016-07-01|-44.0|-71.0|8.36506|-0.10776 +2016-07-01|-44.0|-72.0|9.19789|-0.10503 +2016-07-01|-44.0|-73.0|10.0186|-0.10209 +2016-07-01|-44.0|-74.0|10.82558|-0.09898 +2016-07-01|-44.0|-75.0|11.61726|-0.09572 +2016-07-01|-44.0|-76.0|12.39221|-0.09232 +2016-07-01|-44.0|-77.0|13.14906|-0.08882 +2016-07-01|-44.0|-78.0|13.88655|-0.08524 +2016-07-01|-44.0|-79.0|14.60354|-0.0816 +2016-07-01|-44.0|-80.0|15.29899|-0.07792 +2016-07-01|-44.0|-81.0|15.97196|-0.07423 +2016-07-01|-44.0|-82.0|16.62164|-0.07054 +2016-07-01|-44.0|-83.0|17.24731|-0.06688 +2016-07-01|-44.0|-84.0|17.8484|-0.06326 +2016-07-01|-44.0|-85.0|18.42441|-0.0597 +2016-07-01|-44.0|-86.0|18.97498|-0.05621 +2016-07-01|-44.0|-87.0|19.49984|-0.05282 +2016-07-01|-44.0|-88.0|19.99883|-0.04952 +2016-07-01|-44.0|-89.0|20.4719|-0.04634 +2016-07-01|-44.0|-90.0|20.91908|-0.04328 +2016-07-01|-44.0|-91.0|21.34051|-0.04035 +2016-07-01|-44.0|-92.0|21.73642|-0.03756 +2016-07-01|-44.0|-93.0|22.10713|-0.0349 +2016-07-01|-44.0|-94.0|22.45303|-0.0324 +2016-07-01|-44.0|-95.0|22.7746|-0.03004 +2016-07-01|-44.0|-96.0|23.0724|-0.02783 +2016-07-01|-44.0|-97.0|23.34703|-0.02576 +2016-07-01|-44.0|-98.0|23.59919|-0.02384 +2016-07-01|-44.0|-99.0|23.8296|-0.02206 +2016-07-01|-44.0|-100.0|24.03907|-0.02042 +2016-07-01|-44.0|-101.0|24.22843|-0.0189 +2016-07-01|-44.0|-102.0|24.39857|-0.01751 +2016-07-01|-44.0|-103.0|24.55039|-0.01624 +2016-07-01|-44.0|-104.0|24.68484|-0.01506 +2016-07-01|-44.0|-105.0|24.8029|-0.01399 +2016-07-01|-44.0|-106.0|24.90555|-0.013 +2016-07-01|-44.0|-107.0|24.99378|-0.01208 +2016-07-01|-44.0|-108.0|25.0686|-0.01123 +2016-07-01|-44.0|-109.0|25.13101|-0.01043 +2016-07-01|-44.0|-110.0|25.18201|-0.00966 +2016-07-01|-44.0|-111.0|25.2226|-0.00893 +2016-07-01|-44.0|-112.0|25.25373|-0.00821 +2016-07-01|-44.0|-113.0|25.27638|-0.00749 +2016-07-01|-44.0|-114.0|25.29146|-0.00677 +2016-07-01|-44.0|-115.0|25.29987|-0.00604 +2016-07-01|-44.0|-116.0|25.30249|-0.00528 +2016-07-01|-44.0|-117.0|25.30015|-0.00449 +2016-07-01|-44.0|-118.0|25.29363|-0.00365 +2016-07-01|-44.0|-119.0|25.28371|-0.00278 +2016-07-01|-44.0|-120.0|25.27109|-0.00185 +2016-07-01|-44.0|-121.0|25.25643|-8.6E-4 +2016-07-01|-44.0|-122.0|25.24036|1.8E-4 +2016-07-01|-44.0|-123.0|25.22345|0.00129 +2016-07-01|-44.0|-124.0|25.20623|0.00245 +2016-07-01|-44.0|-125.0|25.18919|0.00368 +2016-07-01|-44.0|-126.0|25.17274|0.00497 +2016-07-01|-44.0|-127.0|25.15728|0.00631 +2016-07-01|-44.0|-128.0|25.14314|0.00771 +2016-07-01|-44.0|-129.0|25.13061|0.00916 +2016-07-01|-44.0|-130.0|25.11994|0.01065 +2016-07-01|-44.0|-131.0|25.11132|0.01219 +2016-07-01|-44.0|-132.0|25.10492|0.01376 +2016-07-01|-44.0|-133.0|25.10086|0.01537 +2016-07-01|-44.0|-134.0|25.0992|0.017 +2016-07-01|-44.0|-135.0|25.09999|0.01865 +2016-07-01|-44.0|-136.0|25.10323|0.02032 +2016-07-01|-44.0|-137.0|25.1089|0.022 +2016-07-01|-44.0|-138.0|25.11693|0.02368 +2016-07-01|-44.0|-139.0|25.12723|0.02537 +2016-07-01|-44.0|-140.0|25.13969|0.02705 +2016-07-01|-44.0|-141.0|25.15418|0.02872 +2016-07-01|-44.0|-142.0|25.17052|0.03038 +2016-07-01|-44.0|-143.0|25.18855|0.03203 +2016-07-01|-44.0|-144.0|25.20807|0.03366 +2016-07-01|-44.0|-145.0|25.22888|0.03528 +2016-07-01|-44.0|-146.0|25.25076|0.03687 +2016-07-01|-44.0|-147.0|25.27349|0.03844 +2016-07-01|-44.0|-148.0|25.29684|0.03998 +2016-07-01|-44.0|-149.0|25.32059|0.04151 +2016-07-01|-44.0|-150.0|25.34448|0.04301 +2016-07-01|-44.0|-151.0|25.36831|0.04448 +2016-07-01|-44.0|-152.0|25.39183|0.04593 +2016-07-01|-44.0|-153.0|25.41481|0.04735 +2016-07-01|-44.0|-154.0|25.43704|0.04875 +2016-07-01|-44.0|-155.0|25.4583|0.05013 +2016-07-01|-44.0|-156.0|25.47838|0.05147 +2016-07-01|-44.0|-157.0|25.49706|0.05279 +2016-07-01|-44.0|-158.0|25.51414|0.05408 +2016-07-01|-44.0|-159.0|25.52943|0.05534 +2016-07-01|-44.0|-160.0|25.54272|0.05657 +2016-07-01|-44.0|-161.0|25.55382|0.05777 +2016-07-01|-44.0|-162.0|25.56254|0.05893 +2016-07-01|-44.0|-163.0|25.56867|0.06006 +2016-07-01|-44.0|-164.0|25.57202|0.06115 +2016-07-01|-44.0|-165.0|25.57238|0.0622 +2016-07-01|-44.0|-166.0|25.56954|0.0632 +2016-07-01|-44.0|-167.0|25.56327|0.06415 +2016-07-01|-44.0|-168.0|25.55333|0.06506 +2016-07-01|-44.0|-169.0|25.53949|0.06591 +2016-07-01|-44.0|-170.0|25.52148|0.0667 +2016-07-01|-44.0|-171.0|25.49901|0.06744 +2016-07-01|-44.0|-172.0|25.47179|0.06811 +2016-07-01|-44.0|-173.0|25.43951|0.06871 +2016-07-01|-44.0|-174.0|25.40183|0.06924 +2016-07-01|-44.0|-175.0|25.3584|0.0697 +2016-07-01|-44.0|-176.0|25.30884|0.07009 +2016-07-01|-44.0|-177.0|25.25278|0.0704 +2016-07-01|-44.0|-178.0|25.1898|0.07063 +2016-07-01|-44.0|-179.0|25.11948|0.07078 +2016-07-01|-45.0|0.0|-22.18502|-0.00453 +2016-07-01|-45.0|1.0|-22.49385|-0.0122 +2016-07-01|-45.0|2.0|-22.82317|-0.02037 +2016-07-01|-45.0|3.0|-23.17355|-0.029 +2016-07-01|-45.0|4.0|-23.54539|-0.03805 +2016-07-01|-45.0|5.0|-23.9389|-0.04744 +2016-07-01|-45.0|6.0|-24.35416|-0.05713 +2016-07-01|-45.0|7.0|-24.79106|-0.06704 +2016-07-01|-45.0|8.0|-25.24931|-0.07711 +2016-07-01|-45.0|9.0|-25.72846|-0.08726 +2016-07-01|-45.0|10.0|-26.22789|-0.09742 +2016-07-01|-45.0|11.0|-26.74685|-0.10752 +2016-07-01|-45.0|12.0|-27.28442|-0.11749 +2016-07-01|-45.0|13.0|-27.83955|-0.12726 +2016-07-01|-45.0|14.0|-28.41109|-0.13677 +2016-07-01|-45.0|15.0|-28.99778|-0.14596 +2016-07-01|-45.0|16.0|-29.59828|-0.15478 +2016-07-01|-45.0|17.0|-30.21117|-0.16316 +2016-07-01|-45.0|18.0|-30.835|-0.17109 +2016-07-01|-45.0|19.0|-31.46826|-0.17851 +2016-07-01|-45.0|20.0|-32.10943|-0.18539 +2016-07-01|-45.0|21.0|-32.757|-0.19172 +2016-07-01|-45.0|22.0|-33.40943|-0.19747 +2016-07-01|-45.0|23.0|-34.06523|-0.20264 +2016-07-01|-45.0|24.0|-34.72293|-0.20721 +2016-07-01|-45.0|25.0|-35.38108|-0.21119 +2016-07-01|-45.0|26.0|-36.0383|-0.21458 +2016-07-01|-45.0|27.0|-36.69324|-0.21739 +2016-07-01|-45.0|28.0|-37.34461|-0.21962 +2016-07-01|-45.0|29.0|-37.99119|-0.22129 +2016-07-01|-45.0|30.0|-38.6318|-0.22242 +2016-07-01|-45.0|31.0|-39.26533|-0.22302 +2016-07-01|-45.0|32.0|-39.89071|-0.22312 +2016-07-01|-45.0|33.0|-40.50695|-0.22273 +2016-07-01|-45.0|34.0|-41.11311|-0.22188 +2016-07-01|-45.0|35.0|-41.7083|-0.22057 +2016-07-01|-45.0|36.0|-42.29169|-0.21885 +2016-07-01|-45.0|37.0|-42.86247|-0.21672 +2016-07-01|-45.0|38.0|-43.4199|-0.2142 +2016-07-01|-45.0|39.0|-43.96329|-0.21132 +2016-07-01|-45.0|40.0|-44.49195|-0.20809 +2016-07-01|-45.0|41.0|-45.00527|-0.20452 +2016-07-01|-45.0|42.0|-45.50264|-0.20064 +2016-07-01|-45.0|43.0|-45.98348|-0.19645 +2016-07-01|-45.0|44.0|-46.44726|-0.19197 +2016-07-01|-45.0|45.0|-46.89344|-0.18721 +2016-07-01|-45.0|46.0|-47.32154|-0.18218 +2016-07-01|-45.0|47.0|-47.73106|-0.17689 +2016-07-01|-45.0|48.0|-48.12154|-0.17133 +2016-07-01|-45.0|49.0|-48.49252|-0.16553 +2016-07-01|-45.0|50.0|-48.84357|-0.15949 +2016-07-01|-45.0|51.0|-49.17426|-0.1532 +2016-07-01|-45.0|52.0|-49.48416|-0.14667 +2016-07-01|-45.0|53.0|-49.77287|-0.13991 +2016-07-01|-45.0|54.0|-50.03998|-0.13292 +2016-07-01|-45.0|55.0|-50.28509|-0.12569 +2016-07-01|-45.0|56.0|-50.50781|-0.11824 +2016-07-01|-45.0|57.0|-50.70774|-0.11056 +2016-07-01|-45.0|58.0|-50.88449|-0.10265 +2016-07-01|-45.0|59.0|-51.03766|-0.09452 +2016-07-01|-45.0|60.0|-51.16686|-0.08617 +2016-07-01|-45.0|61.0|-51.27168|-0.0776 +2016-07-01|-45.0|62.0|-51.35172|-0.06882 +2016-07-01|-45.0|63.0|-51.40656|-0.05983 +2016-07-01|-45.0|64.0|-51.43578|-0.05063 +2016-07-01|-45.0|65.0|-51.43895|-0.04125 +2016-07-01|-45.0|66.0|-51.41561|-0.03168 +2016-07-01|-45.0|67.0|-51.3653|-0.02194 +2016-07-01|-45.0|68.0|-51.28753|-0.01204 +2016-07-01|-45.0|69.0|-51.18182|-0.00199 +2016-07-01|-45.0|70.0|-51.04764|0.00818 +2016-07-01|-45.0|71.0|-50.88444|0.01846 +2016-07-01|-45.0|72.0|-50.69169|0.02883 +2016-07-01|-45.0|73.0|-50.46879|0.03925 +2016-07-01|-45.0|74.0|-50.21516|0.04971 +2016-07-01|-45.0|75.0|-49.93018|0.06018 +2016-07-01|-45.0|76.0|-49.61322|0.07061 +2016-07-01|-45.0|77.0|-49.26366|0.08099 +2016-07-01|-45.0|78.0|-48.88084|0.09126 +2016-07-01|-45.0|79.0|-48.46415|0.10139 +2016-07-01|-45.0|80.0|-48.01294|0.11134 +2016-07-01|-45.0|81.0|-47.52661|0.12106 +2016-07-01|-45.0|82.0|-47.00458|0.1305 +2016-07-01|-45.0|83.0|-46.44631|0.13962 +2016-07-01|-45.0|84.0|-45.85131|0.14837 +2016-07-01|-45.0|85.0|-45.21916|0.15669 +2016-07-01|-45.0|86.0|-44.54953|0.16454 +2016-07-01|-45.0|87.0|-43.84219|0.17187 +2016-07-01|-45.0|88.0|-43.097|0.17861 +2016-07-01|-45.0|89.0|-42.31398|0.18473 +2016-07-01|-45.0|90.0|-41.49329|0.19018 +2016-07-01|-45.0|91.0|-40.63526|0.19491 +2016-07-01|-45.0|92.0|-39.74039|0.19889 +2016-07-01|-45.0|93.0|-38.80939|0.20209 +2016-07-01|-45.0|94.0|-37.84316|0.20447 +2016-07-01|-45.0|95.0|-36.84281|0.20601 +2016-07-01|-45.0|96.0|-35.80968|0.20672 +2016-07-01|-45.0|97.0|-34.74532|0.20658 +2016-07-01|-45.0|98.0|-33.65147|0.2056 +2016-07-01|-45.0|99.0|-32.53012|0.2038 +2016-07-01|-45.0|100.0|-31.38341|0.20121 +2016-07-01|-45.0|101.0|-30.21367|0.19787 +2016-07-01|-45.0|102.0|-29.02338|0.19382 +2016-07-01|-45.0|103.0|-27.81513|0.18912 +2016-07-01|-45.0|104.0|-26.59162|0.18384 +2016-07-01|-45.0|105.0|-25.3556|0.17804 +2016-07-01|-45.0|106.0|-24.10986|0.17181 +2016-07-01|-45.0|107.0|-22.85717|0.16521 +2016-07-01|-45.0|108.0|-21.60029|0.15835 +2016-07-01|-45.0|109.0|-20.34187|0.15128 +2016-07-01|-45.0|110.0|-19.0845|0.14411 +2016-07-01|-45.0|111.0|-17.83063|0.13689 +2016-07-01|-45.0|112.0|-16.58256|0.12972 +2016-07-01|-45.0|113.0|-15.34245|0.12264 +2016-07-01|-45.0|114.0|-14.11227|0.11573 +2016-07-01|-45.0|115.0|-12.89381|0.10903 +2016-07-01|-45.0|116.0|-11.68869|0.10259 +2016-07-01|-45.0|117.0|-10.49834|0.09645 +2016-07-01|-45.0|118.0|-9.324|0.09063 +2016-07-01|-45.0|119.0|-8.16675|0.08517 +2016-07-01|-45.0|120.0|-7.02751|0.08007 +2016-07-01|-45.0|121.0|-5.90705|0.07534 +2016-07-01|-45.0|122.0|-4.806|0.07099 +2016-07-01|-45.0|123.0|-3.72486|0.067 +2016-07-01|-45.0|124.0|-2.66405|0.06339 +2016-07-01|-45.0|125.0|-1.62385|0.06013 +2016-07-01|-45.0|126.0|-0.6045|0.05721 +2016-07-01|-45.0|127.0|0.39386|0.05462 +2016-07-01|-45.0|128.0|1.37112|0.05233 +2016-07-01|-45.0|129.0|2.32724|0.05034 +2016-07-01|-45.0|130.0|3.26221|0.04863 +2016-07-01|-45.0|131.0|4.17605|0.04717 +2016-07-01|-45.0|132.0|5.0688|0.04594 +2016-07-01|-45.0|133.0|5.94053|0.04494 +2016-07-01|-45.0|134.0|6.79131|0.04414 +2016-07-01|-45.0|135.0|7.62124|0.04353 +2016-07-01|-45.0|136.0|8.4304|0.04309 +2016-07-01|-45.0|137.0|9.2189|0.04282 +2016-07-01|-45.0|138.0|9.98685|0.04269 +2016-07-01|-45.0|139.0|10.73435|0.04269 +2016-07-01|-45.0|140.0|11.46151|0.04283 +2016-07-01|-45.0|141.0|12.16846|0.04308 +2016-07-01|-45.0|142.0|12.85529|0.04343 +2016-07-01|-45.0|143.0|13.52213|0.04389 +2016-07-01|-45.0|144.0|14.16911|0.04444 +2016-07-01|-45.0|145.0|14.79633|0.04508 +2016-07-01|-45.0|146.0|15.40393|0.04579 +2016-07-01|-45.0|147.0|15.99203|0.04657 +2016-07-01|-45.0|148.0|16.56077|0.04743 +2016-07-01|-45.0|149.0|17.11028|0.04834 +2016-07-01|-45.0|150.0|17.6407|0.0493 +2016-07-01|-45.0|151.0|18.15219|0.05032 +2016-07-01|-45.0|152.0|18.64489|0.05137 +2016-07-01|-45.0|153.0|19.11897|0.05246 +2016-07-01|-45.0|154.0|19.57459|0.05358 +2016-07-01|-45.0|155.0|20.01195|0.05472 +2016-07-01|-45.0|156.0|20.43124|0.05587 +2016-07-01|-45.0|157.0|20.83266|0.05704 +2016-07-01|-45.0|158.0|21.21643|0.05821 +2016-07-01|-45.0|159.0|21.58278|0.05937 +2016-07-01|-45.0|160.0|21.93198|0.06053 +2016-07-01|-45.0|161.0|22.26429|0.06167 +2016-07-01|-45.0|162.0|22.57999|0.06279 +2016-07-01|-45.0|163.0|22.87939|0.06388 +2016-07-01|-45.0|164.0|23.16282|0.06494 +2016-07-01|-45.0|165.0|23.43061|0.06596 +2016-07-01|-45.0|166.0|23.68315|0.06693 +2016-07-01|-45.0|167.0|23.92079|0.06786 +2016-07-01|-45.0|168.0|24.14395|0.06873 +2016-07-01|-45.0|169.0|24.35304|0.06954 +2016-07-01|-45.0|170.0|24.5485|0.07029 +2016-07-01|-45.0|171.0|24.73077|0.07098 +2016-07-01|-45.0|172.0|24.90032|0.07159 +2016-07-01|-45.0|173.0|25.0576|0.07214 +2016-07-01|-45.0|174.0|25.20311|0.0726 +2016-07-01|-45.0|175.0|25.33732|0.07299 +2016-07-01|-45.0|176.0|25.46073|0.07331 +2016-07-01|-45.0|177.0|25.57382|0.07354 +2016-07-01|-45.0|178.0|25.67708|0.07369 +2016-07-01|-45.0|179.0|25.771|0.07376 +2016-07-01|-45.0|-1.0|-21.89598|0.00259 +2016-07-01|-45.0|-2.0|-21.6259|0.00914 +2016-07-01|-45.0|-3.0|-21.37381|0.01511 +2016-07-01|-45.0|-4.0|-21.13864|0.02046 +2016-07-01|-45.0|-5.0|-20.91923|0.02521 +2016-07-01|-45.0|-6.0|-20.71435|0.02934 +2016-07-01|-45.0|-7.0|-20.52271|0.03288 +2016-07-01|-45.0|-8.0|-20.34296|0.03583 +2016-07-01|-45.0|-9.0|-20.17374|0.03821 +2016-07-01|-45.0|-10.0|-20.01366|0.04004 +2016-07-01|-45.0|-11.0|-19.86135|0.04135 +2016-07-01|-45.0|-12.0|-19.71542|0.04218 +2016-07-01|-45.0|-13.0|-19.57451|0.04254 +2016-07-01|-45.0|-14.0|-19.43728|0.04247 +2016-07-01|-45.0|-15.0|-19.3024|0.042 +2016-07-01|-45.0|-16.0|-19.1686|0.04116 +2016-07-01|-45.0|-17.0|-19.03463|0.03998 +2016-07-01|-45.0|-18.0|-18.89925|0.03848 +2016-07-01|-45.0|-19.0|-18.76129|0.0367 +2016-07-01|-45.0|-20.0|-18.61959|0.03464 +2016-07-01|-45.0|-21.0|-18.47302|0.03234 +2016-07-01|-45.0|-22.0|-18.32047|0.0298 +2016-07-01|-45.0|-23.0|-18.16087|0.02705 +2016-07-01|-45.0|-24.0|-17.99316|0.0241 +2016-07-01|-45.0|-25.0|-17.81631|0.02096 +2016-07-01|-45.0|-26.0|-17.62928|0.01764 +2016-07-01|-45.0|-27.0|-17.43109|0.01415 +2016-07-01|-45.0|-28.0|-17.22075|0.01049 +2016-07-01|-45.0|-29.0|-16.99728|0.00668 +2016-07-01|-45.0|-30.0|-16.75972|0.00272 +2016-07-01|-45.0|-31.0|-16.50716|-0.00138 +2016-07-01|-45.0|-32.0|-16.23868|-0.00561 +2016-07-01|-45.0|-33.0|-15.9534|-0.00997 +2016-07-01|-45.0|-34.0|-15.65046|-0.01444 +2016-07-01|-45.0|-35.0|-15.32904|-0.01901 +2016-07-01|-45.0|-36.0|-14.98838|-0.02367 +2016-07-01|-45.0|-37.0|-14.62775|-0.02842 +2016-07-01|-45.0|-38.0|-14.24647|-0.03322 +2016-07-01|-45.0|-39.0|-13.84393|-0.03808 +2016-07-01|-45.0|-40.0|-13.41958|-0.04296 +2016-07-01|-45.0|-41.0|-12.97296|-0.04785 +2016-07-01|-45.0|-42.0|-12.50368|-0.05273 +2016-07-01|-45.0|-43.0|-12.01143|-0.05758 +2016-07-01|-45.0|-44.0|-11.49601|-0.06237 +2016-07-01|-45.0|-45.0|-10.95732|-0.06709 +2016-07-01|-45.0|-46.0|-10.39534|-0.0717 +2016-07-01|-45.0|-47.0|-9.8102|-0.07619 +2016-07-01|-45.0|-48.0|-9.20211|-0.08054 +2016-07-01|-45.0|-49.0|-8.57141|-0.08471 +2016-07-01|-45.0|-50.0|-7.91857|-0.08868 +2016-07-01|-45.0|-51.0|-7.24415|-0.09244 +2016-07-01|-45.0|-52.0|-6.54887|-0.09596 +2016-07-01|-45.0|-53.0|-5.83354|-0.09922 +2016-07-01|-45.0|-54.0|-5.09911|-0.1022 +2016-07-01|-45.0|-55.0|-4.34662|-0.10489 +2016-07-01|-45.0|-56.0|-3.57725|-0.10728 +2016-07-01|-45.0|-57.0|-2.79227|-0.10934 +2016-07-01|-45.0|-58.0|-1.99304|-0.11107 +2016-07-01|-45.0|-59.0|-1.18103|-0.11246 +2016-07-01|-45.0|-60.0|-0.35779|-0.11351 +2016-07-01|-45.0|-61.0|0.47506|-0.11422 +2016-07-01|-45.0|-62.0|1.31583|-0.11457 +2016-07-01|-45.0|-63.0|2.16279|-0.11459 +2016-07-01|-45.0|-64.0|3.01416|-0.11427 +2016-07-01|-45.0|-65.0|3.86813|-0.11362 +2016-07-01|-45.0|-66.0|4.72287|-0.11265 +2016-07-01|-45.0|-67.0|5.57655|-0.11137 +2016-07-01|-45.0|-68.0|6.42735|-0.10981 +2016-07-01|-45.0|-69.0|7.27345|-0.10796 +2016-07-01|-45.0|-70.0|8.11308|-0.10586 +2016-07-01|-45.0|-71.0|8.94451|-0.10352 +2016-07-01|-45.0|-72.0|9.76605|-0.10097 +2016-07-01|-45.0|-73.0|10.57607|-0.09822 +2016-07-01|-45.0|-74.0|11.37302|-0.09529 +2016-07-01|-45.0|-75.0|12.15543|-0.09222 +2016-07-01|-45.0|-76.0|12.92189|-0.08901 +2016-07-01|-45.0|-77.0|13.6711|-0.08571 +2016-07-01|-45.0|-78.0|14.40184|-0.08231 +2016-07-01|-45.0|-79.0|15.11302|-0.07886 +2016-07-01|-45.0|-80.0|15.8036|-0.07537 +2016-07-01|-45.0|-81.0|16.47268|-0.07185 +2016-07-01|-45.0|-82.0|17.11946|-0.06834 +2016-07-01|-45.0|-83.0|17.74323|-0.06484 +2016-07-01|-45.0|-84.0|18.34339|-0.06138 +2016-07-01|-45.0|-85.0|18.91946|-0.05797 +2016-07-01|-45.0|-86.0|19.47104|-0.05463 +2016-07-01|-45.0|-87.0|19.99785|-0.05137 +2016-07-01|-45.0|-88.0|20.49969|-0.04819 +2016-07-01|-45.0|-89.0|20.97646|-0.04512 +2016-07-01|-45.0|-90.0|21.42817|-0.04217 +2016-07-01|-45.0|-91.0|21.85491|-0.03933 +2016-07-01|-45.0|-92.0|22.25686|-0.03662 +2016-07-01|-45.0|-93.0|22.63426|-0.03404 +2016-07-01|-45.0|-94.0|22.98747|-0.03159 +2016-07-01|-45.0|-95.0|23.31689|-0.02928 +2016-07-01|-45.0|-96.0|23.62301|-0.02711 +2016-07-01|-45.0|-97.0|23.90638|-0.02507 +2016-07-01|-45.0|-98.0|24.16761|-0.02317 +2016-07-01|-45.0|-99.0|24.40739|-0.0214 +2016-07-01|-45.0|-100.0|24.62642|-0.01976 +2016-07-01|-45.0|-101.0|24.82548|-0.01824 +2016-07-01|-45.0|-102.0|25.00538|-0.01683 +2016-07-01|-45.0|-103.0|25.16698|-0.01553 +2016-07-01|-45.0|-104.0|25.31114|-0.01434 +2016-07-01|-45.0|-105.0|25.43879|-0.01323 +2016-07-01|-45.0|-106.0|25.55084|-0.0122 +2016-07-01|-45.0|-107.0|25.64825|-0.01125 +2016-07-01|-45.0|-108.0|25.73196|-0.01035 +2016-07-01|-45.0|-109.0|25.80293|-0.00951 +2016-07-01|-45.0|-110.0|25.86212|-0.0087 +2016-07-01|-45.0|-111.0|25.91048|-0.00792 +2016-07-01|-45.0|-112.0|25.94896|-0.00715 +2016-07-01|-45.0|-113.0|25.97848|-0.00639 +2016-07-01|-45.0|-114.0|25.99995|-0.00563 +2016-07-01|-45.0|-115.0|26.01425|-0.00485 +2016-07-01|-45.0|-116.0|26.02226|-0.00405 +2016-07-01|-45.0|-117.0|26.02479|-0.00322 +2016-07-01|-45.0|-118.0|26.02264|-0.00236 +2016-07-01|-45.0|-119.0|26.01658|-0.00145 +2016-07-01|-45.0|-120.0|26.00732|-4.9E-4 +2016-07-01|-45.0|-121.0|25.99556|5.2E-4 +2016-07-01|-45.0|-122.0|25.98192|0.00159 +2016-07-01|-45.0|-123.0|25.967|0.00271 +2016-07-01|-45.0|-124.0|25.95137|0.0039 +2016-07-01|-45.0|-125.0|25.93552|0.00514 +2016-07-01|-45.0|-126.0|25.91992|0.00643 +2016-07-01|-45.0|-127.0|25.90498|0.00779 +2016-07-01|-45.0|-128.0|25.89107|0.0092 +2016-07-01|-45.0|-129.0|25.87852|0.01066 +2016-07-01|-45.0|-130.0|25.86761|0.01216 +2016-07-01|-45.0|-131.0|25.85857|0.01371 +2016-07-01|-45.0|-132.0|25.8516|0.01529 +2016-07-01|-45.0|-133.0|25.84685|0.01691 +2016-07-01|-45.0|-134.0|25.84442|0.01855 +2016-07-01|-45.0|-135.0|25.84439|0.02022 +2016-07-01|-45.0|-136.0|25.84679|0.0219 +2016-07-01|-45.0|-137.0|25.85164|0.0236 +2016-07-01|-45.0|-138.0|25.85888|0.0253 +2016-07-01|-45.0|-139.0|25.86847|0.02701 +2016-07-01|-45.0|-140.0|25.88031|0.02872 +2016-07-01|-45.0|-141.0|25.89428|0.03042 +2016-07-01|-45.0|-142.0|25.91025|0.03211 +2016-07-01|-45.0|-143.0|25.92805|0.03379 +2016-07-01|-45.0|-144.0|25.94752|0.03546 +2016-07-01|-45.0|-145.0|25.96845|0.03711 +2016-07-01|-45.0|-146.0|25.99065|0.03874 +2016-07-01|-45.0|-147.0|26.0139|0.04035 +2016-07-01|-45.0|-148.0|26.03797|0.04194 +2016-07-01|-45.0|-149.0|26.06264|0.0435 +2016-07-01|-45.0|-150.0|26.08767|0.04505 +2016-07-01|-45.0|-151.0|26.11284|0.04656 +2016-07-01|-45.0|-152.0|26.1379|0.04806 +2016-07-01|-45.0|-153.0|26.16262|0.04952 +2016-07-01|-45.0|-154.0|26.18677|0.05096 +2016-07-01|-45.0|-155.0|26.21013|0.05238 +2016-07-01|-45.0|-156.0|26.23247|0.05376 +2016-07-01|-45.0|-157.0|26.25356|0.05512 +2016-07-01|-45.0|-158.0|26.27318|0.05645 +2016-07-01|-45.0|-159.0|26.29113|0.05774 +2016-07-01|-45.0|-160.0|26.30718|0.05901 +2016-07-01|-45.0|-161.0|26.32112|0.06024 +2016-07-01|-45.0|-162.0|26.33274|0.06143 +2016-07-01|-45.0|-163.0|26.34183|0.06259 +2016-07-01|-45.0|-164.0|26.34815|0.0637 +2016-07-01|-45.0|-165.0|26.35149|0.06477 +2016-07-01|-45.0|-166.0|26.35162|0.0658 +2016-07-01|-45.0|-167.0|26.34829|0.06678 +2016-07-01|-45.0|-168.0|26.34125|0.0677 +2016-07-01|-45.0|-169.0|26.33025|0.06857 +2016-07-01|-45.0|-170.0|26.31499|0.06939 +2016-07-01|-45.0|-171.0|26.2952|0.07014 +2016-07-01|-45.0|-172.0|26.27056|0.07083 +2016-07-01|-45.0|-173.0|26.24074|0.07145 +2016-07-01|-45.0|-174.0|26.20541|0.07201 +2016-07-01|-45.0|-175.0|26.16419|0.07249 +2016-07-01|-45.0|-176.0|26.11672|0.07289 +2016-07-01|-45.0|-177.0|26.06259|0.07322 +2016-07-01|-45.0|-178.0|26.00139|0.07348 +2016-07-01|-45.0|-179.0|25.93269|0.07365 +2016-07-01|-46.0|0.0|-21.99836|-0.01023 +2016-07-01|-46.0|1.0|-22.33716|-0.01797 +2016-07-01|-46.0|2.0|-22.69615|-0.02614 +2016-07-01|-46.0|3.0|-23.07574|-0.03472 +2016-07-01|-46.0|4.0|-23.47621|-0.04364 +2016-07-01|-46.0|5.0|-23.89766|-0.05286 +2016-07-01|-46.0|6.0|-24.34005|-0.06231 +2016-07-01|-46.0|7.0|-24.80317|-0.07195 +2016-07-01|-46.0|8.0|-25.28667|-0.08169 +2016-07-01|-46.0|9.0|-25.79004|-0.09148 +2016-07-01|-46.0|10.0|-26.31262|-0.10126 +2016-07-01|-46.0|11.0|-26.85361|-0.11095 +2016-07-01|-46.0|12.0|-27.41211|-0.1205 +2016-07-01|-46.0|13.0|-27.98707|-0.12985 +2016-07-01|-46.0|14.0|-28.57738|-0.13893 +2016-07-01|-46.0|15.0|-29.1818|-0.14771 +2016-07-01|-46.0|16.0|-29.79905|-0.15612 +2016-07-01|-46.0|17.0|-30.42778|-0.16412 +2016-07-01|-46.0|18.0|-31.0666|-0.17169 +2016-07-01|-46.0|19.0|-31.71409|-0.17878 +2016-07-01|-46.0|20.0|-32.36881|-0.18537 +2016-07-01|-46.0|21.0|-33.02932|-0.19144 +2016-07-01|-46.0|22.0|-33.6942|-0.19698 +2016-07-01|-46.0|23.0|-34.36204|-0.20196 +2016-07-01|-46.0|24.0|-35.03144|-0.20639 +2016-07-01|-46.0|25.0|-35.70106|-0.21027 +2016-07-01|-46.0|26.0|-36.36959|-0.2136 +2016-07-01|-46.0|27.0|-37.03577|-0.21638 +2016-07-01|-46.0|28.0|-37.69839|-0.21862 +2016-07-01|-46.0|29.0|-38.35628|-0.22034 +2016-07-01|-46.0|30.0|-39.00834|-0.22154 +2016-07-01|-46.0|31.0|-39.65352|-0.22225 +2016-07-01|-46.0|32.0|-40.29081|-0.22248 +2016-07-01|-46.0|33.0|-40.91928|-0.22225 +2016-07-01|-46.0|34.0|-41.53802|-0.22158 +2016-07-01|-46.0|35.0|-42.1462|-0.22048 +2016-07-01|-46.0|36.0|-42.74301|-0.21898 +2016-07-01|-46.0|37.0|-43.3277|-0.21708 +2016-07-01|-46.0|38.0|-43.89955|-0.21482 +2016-07-01|-46.0|39.0|-44.4579|-0.2122 +2016-07-01|-46.0|40.0|-45.00211|-0.20925 +2016-07-01|-46.0|41.0|-45.53156|-0.20597 +2016-07-01|-46.0|42.0|-46.04568|-0.20238 +2016-07-01|-46.0|43.0|-46.54393|-0.19849 +2016-07-01|-46.0|44.0|-47.02577|-0.19432 +2016-07-01|-46.0|45.0|-47.4907|-0.18987 +2016-07-01|-46.0|46.0|-47.93824|-0.18516 +2016-07-01|-46.0|47.0|-48.36792|-0.18019 +2016-07-01|-46.0|48.0|-48.77929|-0.17497 +2016-07-01|-46.0|49.0|-49.17191|-0.1695 +2016-07-01|-46.0|50.0|-49.54536|-0.16379 +2016-07-01|-46.0|51.0|-49.89921|-0.15784 +2016-07-01|-46.0|52.0|-50.23306|-0.15166 +2016-07-01|-46.0|53.0|-50.5465|-0.14524 +2016-07-01|-46.0|54.0|-50.83914|-0.1386 +2016-07-01|-46.0|55.0|-51.11059|-0.13174 +2016-07-01|-46.0|56.0|-51.36046|-0.12464 +2016-07-01|-46.0|57.0|-51.58836|-0.11733 +2016-07-01|-46.0|58.0|-51.79389|-0.10979 +2016-07-01|-46.0|59.0|-51.97666|-0.10203 +2016-07-01|-46.0|60.0|-52.13628|-0.09406 +2016-07-01|-46.0|61.0|-52.27235|-0.08587 +2016-07-01|-46.0|62.0|-52.38445|-0.07747 +2016-07-01|-46.0|63.0|-52.47216|-0.06886 +2016-07-01|-46.0|64.0|-52.53506|-0.06005 +2016-07-01|-46.0|65.0|-52.5727|-0.05105 +2016-07-01|-46.0|66.0|-52.58461|-0.04186 +2016-07-01|-46.0|67.0|-52.57033|-0.0325 +2016-07-01|-46.0|68.0|-52.52935|-0.02297 +2016-07-01|-46.0|69.0|-52.46116|-0.01329 +2016-07-01|-46.0|70.0|-52.36522|-0.00347 +2016-07-01|-46.0|71.0|-52.24097|0.00647 +2016-07-01|-46.0|72.0|-52.08781|0.01652 +2016-07-01|-46.0|73.0|-51.90513|0.02664 +2016-07-01|-46.0|74.0|-51.69231|0.03683 +2016-07-01|-46.0|75.0|-51.44868|0.04704 +2016-07-01|-46.0|76.0|-51.17356|0.05726 +2016-07-01|-46.0|77.0|-50.86625|0.06745 +2016-07-01|-46.0|78.0|-50.52604|0.07759 +2016-07-01|-46.0|79.0|-50.15222|0.08763 +2016-07-01|-46.0|80.0|-49.74404|0.09754 +2016-07-01|-46.0|81.0|-49.30079|0.10728 +2016-07-01|-46.0|82.0|-48.82176|0.11681 +2016-07-01|-46.0|83.0|-48.30625|0.12609 +2016-07-01|-46.0|84.0|-47.75361|0.13506 +2016-07-01|-46.0|85.0|-47.16323|0.14368 +2016-07-01|-46.0|86.0|-46.53456|0.15192 +2016-07-01|-46.0|87.0|-45.86712|0.15971 +2016-07-01|-46.0|88.0|-45.16053|0.16701 +2016-07-01|-46.0|89.0|-44.41452|0.17377 +2016-07-01|-46.0|90.0|-43.62893|0.17995 +2016-07-01|-46.0|91.0|-42.80375|0.1855 +2016-07-01|-46.0|92.0|-41.93915|0.19038 +2016-07-01|-46.0|93.0|-41.03544|0.19456 +2016-07-01|-46.0|94.0|-40.09316|0.198 +2016-07-01|-46.0|95.0|-39.11303|0.20067 +2016-07-01|-46.0|96.0|-38.096|0.20256 +2016-07-01|-46.0|97.0|-37.04324|0.20365 +2016-07-01|-46.0|98.0|-35.95614|0.20394 +2016-07-01|-46.0|99.0|-34.83632|0.20344 +2016-07-01|-46.0|100.0|-33.68563|0.20215 +2016-07-01|-46.0|101.0|-32.50614|0.2001 +2016-07-01|-46.0|102.0|-31.30009|0.19732 +2016-07-01|-46.0|103.0|-30.06994|0.19386 +2016-07-01|-46.0|104.0|-28.81827|0.18976 +2016-07-01|-46.0|105.0|-27.54782|0.18509 +2016-07-01|-46.0|106.0|-26.2614|0.1799 +2016-07-01|-46.0|107.0|-24.96192|0.17428 +2016-07-01|-46.0|108.0|-23.6523|0.16829 +2016-07-01|-46.0|109.0|-22.33547|0.16201 +2016-07-01|-46.0|110.0|-21.01432|0.15552 +2016-07-01|-46.0|111.0|-19.69168|0.1489 +2016-07-01|-46.0|112.0|-18.37028|0.14221 +2016-07-01|-46.0|113.0|-17.05273|0.13553 +2016-07-01|-46.0|114.0|-15.7415|0.12892 +2016-07-01|-46.0|115.0|-14.4389|0.12244 +2016-07-01|-46.0|116.0|-13.14708|0.11614 +2016-07-01|-46.0|117.0|-11.86798|0.11007 +2016-07-01|-46.0|118.0|-10.60339|0.10426 +2016-07-01|-46.0|119.0|-9.3549|0.09874 +2016-07-01|-46.0|120.0|-8.12392|0.09354 +2016-07-01|-46.0|121.0|-6.91167|0.08866 +2016-07-01|-46.0|122.0|-5.71924|0.08412 +2016-07-01|-46.0|123.0|-4.54754|0.07993 +2016-07-01|-46.0|124.0|-3.39733|0.07608 +2016-07-01|-46.0|125.0|-2.26926|0.07256 +2016-07-01|-46.0|126.0|-1.16385|0.06937 +2016-07-01|-46.0|127.0|-0.08151|0.06649 +2016-07-01|-46.0|128.0|0.97743|0.06391 +2016-07-01|-46.0|129.0|2.01274|0.06162 +2016-07-01|-46.0|130.0|3.02425|0.05961 +2016-07-01|-46.0|131.0|4.01184|0.05784 +2016-07-01|-46.0|132.0|4.97548|0.05631 +2016-07-01|-46.0|133.0|5.91514|0.05501 +2016-07-01|-46.0|134.0|6.83086|0.05391 +2016-07-01|-46.0|135.0|7.7227|0.053 +2016-07-01|-46.0|136.0|8.59075|0.05227 +2016-07-01|-46.0|137.0|9.43512|0.05171 +2016-07-01|-46.0|138.0|10.25595|0.0513 +2016-07-01|-46.0|139.0|11.05339|0.05104 +2016-07-01|-46.0|140.0|11.8276|0.05091 +2016-07-01|-46.0|141.0|12.57875|0.0509 +2016-07-01|-46.0|142.0|13.30704|0.051 +2016-07-01|-46.0|143.0|14.01266|0.05122 +2016-07-01|-46.0|144.0|14.69581|0.05153 +2016-07-01|-46.0|145.0|15.3567|0.05194 +2016-07-01|-46.0|146.0|15.99556|0.05244 +2016-07-01|-46.0|147.0|16.6126|0.05301 +2016-07-01|-46.0|148.0|17.20805|0.05366 +2016-07-01|-46.0|149.0|17.78215|0.05438 +2016-07-01|-46.0|150.0|18.33515|0.05516 +2016-07-01|-46.0|151.0|18.86728|0.05599 +2016-07-01|-46.0|152.0|19.37882|0.05687 +2016-07-01|-46.0|153.0|19.87|0.0578 +2016-07-01|-46.0|154.0|20.34112|0.05876 +2016-07-01|-46.0|155.0|20.79244|0.05975 +2016-07-01|-46.0|156.0|21.22426|0.06077 +2016-07-01|-46.0|157.0|21.63688|0.0618 +2016-07-01|-46.0|158.0|22.03061|0.06284 +2016-07-01|-46.0|159.0|22.40576|0.06389 +2016-07-01|-46.0|160.0|22.76269|0.06493 +2016-07-01|-46.0|161.0|23.10173|0.06596 +2016-07-01|-46.0|162.0|23.42326|0.06698 +2016-07-01|-46.0|163.0|23.72766|0.06797 +2016-07-01|-46.0|164.0|24.01531|0.06894 +2016-07-01|-46.0|165.0|24.28664|0.06987 +2016-07-01|-46.0|166.0|24.54206|0.07077 +2016-07-01|-46.0|167.0|24.78202|0.07161 +2016-07-01|-46.0|168.0|25.00697|0.07241 +2016-07-01|-46.0|169.0|25.21738|0.07316 +2016-07-01|-46.0|170.0|25.41373|0.07384 +2016-07-01|-46.0|171.0|25.59649|0.07447 +2016-07-01|-46.0|172.0|25.76618|0.07502 +2016-07-01|-46.0|173.0|25.92329|0.07551 +2016-07-01|-46.0|174.0|26.06833|0.07593 +2016-07-01|-46.0|175.0|26.20181|0.07627 +2016-07-01|-46.0|176.0|26.32423|0.07654 +2016-07-01|-46.0|177.0|26.43612|0.07673 +2016-07-01|-46.0|178.0|26.53797|0.07684 +2016-07-01|-46.0|179.0|26.63027|0.07687 +2016-07-01|-46.0|-1.0|-21.67919|-0.00298 +2016-07-01|-46.0|-2.0|-21.37896|0.00377 +2016-07-01|-46.0|-3.0|-21.09686|0.00997 +2016-07-01|-46.0|-4.0|-20.83195|0.01563 +2016-07-01|-46.0|-5.0|-20.58323|0.02073 +2016-07-01|-46.0|-6.0|-20.34958|0.02525 +2016-07-01|-46.0|-7.0|-20.12982|0.02921 +2016-07-01|-46.0|-8.0|-19.92273|0.03262 +2016-07-01|-46.0|-9.0|-19.72704|0.03547 +2016-07-01|-46.0|-10.0|-19.54143|0.03779 +2016-07-01|-46.0|-11.0|-19.36459|0.0396 +2016-07-01|-46.0|-12.0|-19.19519|0.04092 +2016-07-01|-46.0|-13.0|-19.03188|0.04178 +2016-07-01|-46.0|-14.0|-18.87334|0.04219 +2016-07-01|-46.0|-15.0|-18.71827|0.04219 +2016-07-01|-46.0|-16.0|-18.56536|0.04179 +2016-07-01|-46.0|-17.0|-18.41334|0.04103 +2016-07-01|-46.0|-18.0|-18.26097|0.03992 +2016-07-01|-46.0|-19.0|-18.107|0.0385 +2016-07-01|-46.0|-20.0|-17.95025|0.03678 +2016-07-01|-46.0|-21.0|-17.78953|0.03478 +2016-07-01|-46.0|-22.0|-17.62369|0.03251 +2016-07-01|-46.0|-23.0|-17.45161|0.03001 +2016-07-01|-46.0|-24.0|-17.27217|0.02727 +2016-07-01|-46.0|-25.0|-17.08429|0.02431 +2016-07-01|-46.0|-26.0|-16.8869|0.02115 +2016-07-01|-46.0|-27.0|-16.67896|0.0178 +2016-07-01|-46.0|-28.0|-16.45944|0.01427 +2016-07-01|-46.0|-29.0|-16.22736|0.01056 +2016-07-01|-46.0|-30.0|-15.98172|0.00669 +2016-07-01|-46.0|-31.0|-15.72159|0.00266 +2016-07-01|-46.0|-32.0|-15.44605|-0.00151 +2016-07-01|-46.0|-33.0|-15.1542|-0.0058 +2016-07-01|-46.0|-34.0|-14.8452|-0.01022 +2016-07-01|-46.0|-35.0|-14.51824|-0.01474 +2016-07-01|-46.0|-36.0|-14.17256|-0.01936 +2016-07-01|-46.0|-37.0|-13.80745|-0.02406 +2016-07-01|-46.0|-38.0|-13.42227|-0.02881 +2016-07-01|-46.0|-39.0|-13.01643|-0.03361 +2016-07-01|-46.0|-40.0|-12.5894|-0.03844 +2016-07-01|-46.0|-41.0|-12.14076|-0.04327 +2016-07-01|-46.0|-42.0|-11.67015|-0.04809 +2016-07-01|-46.0|-43.0|-11.1773|-0.05287 +2016-07-01|-46.0|-44.0|-10.66202|-0.0576 +2016-07-01|-46.0|-45.0|-10.12425|-0.06225 +2016-07-01|-46.0|-46.0|-9.564|-0.06679 +2016-07-01|-46.0|-47.0|-8.98141|-0.07121 +2016-07-01|-46.0|-48.0|-8.37672|-0.07548 +2016-07-01|-46.0|-49.0|-7.75028|-0.07958 +2016-07-01|-46.0|-50.0|-7.10255|-0.08349 +2016-07-01|-46.0|-51.0|-6.43411|-0.08718 +2016-07-01|-46.0|-52.0|-5.74566|-0.09065 +2016-07-01|-46.0|-53.0|-5.038|-0.09386 +2016-07-01|-46.0|-54.0|-4.31204|-0.0968 +2016-07-01|-46.0|-55.0|-3.56881|-0.09946 +2016-07-01|-46.0|-56.0|-2.80944|-0.10182 +2016-07-01|-46.0|-57.0|-2.03515|-0.10388 +2016-07-01|-46.0|-58.0|-1.24726|-0.10561 +2016-07-01|-46.0|-59.0|-0.44717|-0.10702 +2016-07-01|-46.0|-60.0|0.36364|-0.1081 +2016-07-01|-46.0|-61.0|1.18363|-0.10885 +2016-07-01|-46.0|-62.0|2.0112|-0.10927 +2016-07-01|-46.0|-63.0|2.84468|-0.10936 +2016-07-01|-46.0|-64.0|3.68239|-0.10913 +2016-07-01|-46.0|-65.0|4.52262|-0.10859 +2016-07-01|-46.0|-66.0|5.36363|-0.10773 +2016-07-01|-46.0|-67.0|6.20368|-0.10659 +2016-07-01|-46.0|-68.0|7.04104|-0.10516 +2016-07-01|-46.0|-69.0|7.874|-0.10347 +2016-07-01|-46.0|-70.0|8.70087|-0.10153 +2016-07-01|-46.0|-71.0|9.52|-0.09936 +2016-07-01|-46.0|-72.0|10.32979|-0.09699 +2016-07-01|-46.0|-73.0|11.1287|-0.09442 +2016-07-01|-46.0|-74.0|11.91523|-0.09168 +2016-07-01|-46.0|-75.0|12.68799|-0.0888 +2016-07-01|-46.0|-76.0|13.44562|-0.08578 +2016-07-01|-46.0|-77.0|14.18687|-0.08267 +2016-07-01|-46.0|-78.0|14.91059|-0.07946 +2016-07-01|-46.0|-79.0|15.61568|-0.0762 +2016-07-01|-46.0|-80.0|16.30116|-0.07289 +2016-07-01|-46.0|-81.0|16.96615|-0.06955 +2016-07-01|-46.0|-82.0|17.60985|-0.06621 +2016-07-01|-46.0|-83.0|18.23155|-0.06288 +2016-07-01|-46.0|-84.0|18.83067|-0.05958 +2016-07-01|-46.0|-85.0|19.4067|-0.05632 +2016-07-01|-46.0|-86.0|19.95923|-0.05311 +2016-07-01|-46.0|-87.0|20.48795|-0.04998 +2016-07-01|-46.0|-88.0|20.99263|-0.04693 +2016-07-01|-46.0|-89.0|21.47316|-0.04397 +2016-07-01|-46.0|-90.0|21.92948|-0.04112 +2016-07-01|-46.0|-91.0|22.36164|-0.03837 +2016-07-01|-46.0|-92.0|22.76977|-0.03574 +2016-07-01|-46.0|-93.0|23.15407|-0.03322 +2016-07-01|-46.0|-94.0|23.51482|-0.03084 +2016-07-01|-46.0|-95.0|23.85237|-0.02857 +2016-07-01|-46.0|-96.0|24.16715|-0.02644 +2016-07-01|-46.0|-97.0|24.45965|-0.02443 +2016-07-01|-46.0|-98.0|24.7304|-0.02255 +2016-07-01|-46.0|-99.0|24.98|-0.02079 +2016-07-01|-46.0|-100.0|25.20913|-0.01915 +2016-07-01|-46.0|-101.0|25.41847|-0.01762 +2016-07-01|-46.0|-102.0|25.60878|-0.0162 +2016-07-01|-46.0|-103.0|25.78083|-0.01488 +2016-07-01|-46.0|-104.0|25.93544|-0.01366 +2016-07-01|-46.0|-105.0|26.07345|-0.01252 +2016-07-01|-46.0|-106.0|26.19574|-0.01146 +2016-07-01|-46.0|-107.0|26.3032|-0.01046 +2016-07-01|-46.0|-108.0|26.39671|-0.00953 +2016-07-01|-46.0|-109.0|26.4772|-0.00864 +2016-07-01|-46.0|-110.0|26.54557|-0.00778 +2016-07-01|-46.0|-111.0|26.60273|-0.00696 +2016-07-01|-46.0|-112.0|26.64961|-0.00614 +2016-07-01|-46.0|-113.0|26.68709|-0.00534 +2016-07-01|-46.0|-114.0|26.71605|-0.00453 +2016-07-01|-46.0|-115.0|26.73738|-0.00372 +2016-07-01|-46.0|-116.0|26.75191|-0.00288 +2016-07-01|-46.0|-117.0|26.76046|-0.00201 +2016-07-01|-46.0|-118.0|26.76383|-0.00111 +2016-07-01|-46.0|-119.0|26.76277|-1.7E-4 +2016-07-01|-46.0|-120.0|26.75803|8.2E-4 +2016-07-01|-46.0|-121.0|26.75028|0.00185 +2016-07-01|-46.0|-122.0|26.74019|0.00294 +2016-07-01|-46.0|-123.0|26.72837|0.00408 +2016-07-01|-46.0|-124.0|26.71539|0.00528 +2016-07-01|-46.0|-125.0|26.70179|0.00654 +2016-07-01|-46.0|-126.0|26.68805|0.00785 +2016-07-01|-46.0|-127.0|26.67462|0.00921 +2016-07-01|-46.0|-128.0|26.6619|0.01063 +2016-07-01|-46.0|-129.0|26.65024|0.0121 +2016-07-01|-46.0|-130.0|26.63996|0.01361 +2016-07-01|-46.0|-131.0|26.63133|0.01516 +2016-07-01|-46.0|-132.0|26.62457|0.01676 +2016-07-01|-46.0|-133.0|26.61987|0.01838 +2016-07-01|-46.0|-134.0|26.61737|0.02004 +2016-07-01|-46.0|-135.0|26.61718|0.02172 +2016-07-01|-46.0|-136.0|26.61937|0.02342 +2016-07-01|-46.0|-137.0|26.62396|0.02514 +2016-07-01|-46.0|-138.0|26.63095|0.02686 +2016-07-01|-46.0|-139.0|26.64031|0.02859 +2016-07-01|-46.0|-140.0|26.65197|0.03032 +2016-07-01|-46.0|-141.0|26.66585|0.03205 +2016-07-01|-46.0|-142.0|26.68182|0.03378 +2016-07-01|-46.0|-143.0|26.69975|0.03549 +2016-07-01|-46.0|-144.0|26.71948|0.03719 +2016-07-01|-46.0|-145.0|26.74083|0.03888 +2016-07-01|-46.0|-146.0|26.76361|0.04056 +2016-07-01|-46.0|-147.0|26.78761|0.04221 +2016-07-01|-46.0|-148.0|26.81262|0.04384 +2016-07-01|-46.0|-149.0|26.83842|0.04545 +2016-07-01|-46.0|-150.0|26.86477|0.04704 +2016-07-01|-46.0|-151.0|26.89146|0.04861 +2016-07-01|-46.0|-152.0|26.91822|0.05015 +2016-07-01|-46.0|-153.0|26.94485|0.05166 +2016-07-01|-46.0|-154.0|26.97108|0.05315 +2016-07-01|-46.0|-155.0|26.99669|0.05461 +2016-07-01|-46.0|-156.0|27.02145|0.05604 +2016-07-01|-46.0|-157.0|27.04511|0.05744 +2016-07-01|-46.0|-158.0|27.06745|0.05882 +2016-07-01|-46.0|-159.0|27.08823|0.06015 +2016-07-01|-46.0|-160.0|27.10723|0.06146 +2016-07-01|-46.0|-161.0|27.12421|0.06273 +2016-07-01|-46.0|-162.0|27.13895|0.06396 +2016-07-01|-46.0|-163.0|27.15121|0.06515 +2016-07-01|-46.0|-164.0|27.16076|0.0663 +2016-07-01|-46.0|-165.0|27.16734|0.06741 +2016-07-01|-46.0|-166.0|27.17072|0.06846 +2016-07-01|-46.0|-167.0|27.17063|0.06947 +2016-07-01|-46.0|-168.0|27.16681|0.07043 +2016-07-01|-46.0|-169.0|27.15898|0.07133 +2016-07-01|-46.0|-170.0|27.14685|0.07217 +2016-07-01|-46.0|-171.0|27.13011|0.07295 +2016-07-01|-46.0|-172.0|27.10844|0.07367 +2016-07-01|-46.0|-173.0|27.0815|0.07432 +2016-07-01|-46.0|-174.0|27.04894|0.0749 +2016-07-01|-46.0|-175.0|27.01039|0.07541 +2016-07-01|-46.0|-176.0|26.96546|0.07584 +2016-07-01|-46.0|-177.0|26.91374|0.0762 +2016-07-01|-46.0|-178.0|26.8548|0.07649 +2016-07-01|-46.0|-179.0|26.78822|0.0767 +2016-07-01|-47.0|0.0|-21.81259|-0.0157 +2016-07-01|-47.0|1.0|-22.17977|-0.02344 +2016-07-01|-47.0|2.0|-22.56672|-0.03156 +2016-07-01|-47.0|3.0|-22.97373|-0.04002 +2016-07-01|-47.0|4.0|-23.40095|-0.04878 +2016-07-01|-47.0|5.0|-23.84839|-0.05778 +2016-07-01|-47.0|6.0|-24.31592|-0.06698 +2016-07-01|-47.0|7.0|-24.80327|-0.07631 +2016-07-01|-47.0|8.0|-25.31001|-0.08571 +2016-07-01|-47.0|9.0|-25.8356|-0.09514 +2016-07-01|-47.0|10.0|-26.37936|-0.10452 +2016-07-01|-47.0|11.0|-26.94047|-0.11381 +2016-07-01|-47.0|12.0|-27.51804|-0.12294 +2016-07-01|-47.0|13.0|-28.11104|-0.13187 +2016-07-01|-47.0|14.0|-28.71839|-0.14054 +2016-07-01|-47.0|15.0|-29.3389|-0.14891 +2016-07-01|-47.0|16.0|-29.97135|-0.15694 +2016-07-01|-47.0|17.0|-30.61445|-0.16458 +2016-07-01|-47.0|18.0|-31.26689|-0.1718 +2016-07-01|-47.0|19.0|-31.92731|-0.17859 +2016-07-01|-47.0|20.0|-32.59438|-0.1849 +2016-07-01|-47.0|21.0|-33.26673|-0.19073 +2016-07-01|-47.0|22.0|-33.94303|-0.19605 +2016-07-01|-47.0|23.0|-34.62194|-0.20087 +2016-07-01|-47.0|24.0|-35.30216|-0.20517 +2016-07-01|-47.0|25.0|-35.98244|-0.20895 +2016-07-01|-47.0|26.0|-36.66153|-0.21222 +2016-07-01|-47.0|27.0|-37.33826|-0.21497 +2016-07-01|-47.0|28.0|-38.01148|-0.21723 +2016-07-01|-47.0|29.0|-38.6801|-0.21899 +2016-07-01|-47.0|30.0|-39.34308|-0.22027 +2016-07-01|-47.0|31.0|-39.99941|-0.22108 +2016-07-01|-47.0|32.0|-40.64816|-0.22144 +2016-07-01|-47.0|33.0|-41.28843|-0.22136 +2016-07-01|-47.0|34.0|-41.91937|-0.22086 +2016-07-01|-47.0|35.0|-42.54017|-0.21996 +2016-07-01|-47.0|36.0|-43.15008|-0.21867 +2016-07-01|-47.0|37.0|-43.74838|-0.21701 +2016-07-01|-47.0|38.0|-44.33438|-0.21499 +2016-07-01|-47.0|39.0|-44.90744|-0.21263 +2016-07-01|-47.0|40.0|-45.46695|-0.20994 +2016-07-01|-47.0|41.0|-46.01232|-0.20694 +2016-07-01|-47.0|42.0|-46.54301|-0.20364 +2016-07-01|-47.0|43.0|-47.05847|-0.20005 +2016-07-01|-47.0|44.0|-47.55822|-0.19618 +2016-07-01|-47.0|45.0|-48.04176|-0.19204 +2016-07-01|-47.0|46.0|-48.50862|-0.18764 +2016-07-01|-47.0|47.0|-48.95836|-0.18299 +2016-07-01|-47.0|48.0|-49.39054|-0.17809 +2016-07-01|-47.0|49.0|-49.80474|-0.17295 +2016-07-01|-47.0|50.0|-50.20054|-0.16757 +2016-07-01|-47.0|51.0|-50.57753|-0.16197 +2016-07-01|-47.0|52.0|-50.93533|-0.15613 +2016-07-01|-47.0|53.0|-51.27354|-0.15007 +2016-07-01|-47.0|54.0|-51.59178|-0.14378 +2016-07-01|-47.0|55.0|-51.88967|-0.13728 +2016-07-01|-47.0|56.0|-52.16681|-0.13055 +2016-07-01|-47.0|57.0|-52.42284|-0.12361 +2016-07-01|-47.0|58.0|-52.65737|-0.11645 +2016-07-01|-47.0|59.0|-52.87001|-0.10908 +2016-07-01|-47.0|60.0|-53.06037|-0.10149 +2016-07-01|-47.0|61.0|-53.22805|-0.09369 +2016-07-01|-47.0|62.0|-53.37265|-0.08569 +2016-07-01|-47.0|63.0|-53.49375|-0.07749 +2016-07-01|-47.0|64.0|-53.59091|-0.06908 +2016-07-01|-47.0|65.0|-53.66369|-0.06049 +2016-07-01|-47.0|66.0|-53.71163|-0.05171 +2016-07-01|-47.0|67.0|-53.73424|-0.04275 +2016-07-01|-47.0|68.0|-53.73103|-0.03362 +2016-07-01|-47.0|69.0|-53.70146|-0.02434 +2016-07-01|-47.0|70.0|-53.64498|-0.01491 +2016-07-01|-47.0|71.0|-53.56102|-0.00535 +2016-07-01|-47.0|72.0|-53.44898|0.00432 +2016-07-01|-47.0|73.0|-53.30821|0.01409 +2016-07-01|-47.0|74.0|-53.13805|0.02394 +2016-07-01|-47.0|75.0|-52.93782|0.03384 +2016-07-01|-47.0|76.0|-52.70679|0.04378 +2016-07-01|-47.0|77.0|-52.44421|0.05372 +2016-07-01|-47.0|78.0|-52.14932|0.06364 +2016-07-01|-47.0|79.0|-51.82132|0.07351 +2016-07-01|-47.0|80.0|-51.4594|0.0833 +2016-07-01|-47.0|81.0|-51.06274|0.09297 +2016-07-01|-47.0|82.0|-50.63052|0.10248 +2016-07-01|-47.0|83.0|-50.16192|0.1118 +2016-07-01|-47.0|84.0|-49.65612|0.1209 +2016-07-01|-47.0|85.0|-49.11234|0.12971 +2016-07-01|-47.0|86.0|-48.52984|0.13822 +2016-07-01|-47.0|87.0|-47.90791|0.14636 +2016-07-01|-47.0|88.0|-47.24592|0.15411 +2016-07-01|-47.0|89.0|-46.5433|0.1614 +2016-07-01|-47.0|90.0|-45.79961|0.16821 +2016-07-01|-47.0|91.0|-45.01451|0.17448 +2016-07-01|-47.0|92.0|-44.18777|0.18018 +2016-07-01|-47.0|93.0|-43.31935|0.18526 +2016-07-01|-47.0|94.0|-42.40936|0.1897 +2016-07-01|-47.0|95.0|-41.4581|0.19345 +2016-07-01|-47.0|96.0|-40.46607|0.19649 +2016-07-01|-47.0|97.0|-39.43401|0.19881 +2016-07-01|-47.0|98.0|-38.36287|0.20038 +2016-07-01|-47.0|99.0|-37.25384|0.2012 +2016-07-01|-47.0|100.0|-36.10837|0.20126 +2016-07-01|-47.0|101.0|-34.92813|0.20059 +2016-07-01|-47.0|102.0|-33.71506|0.19918 +2016-07-01|-47.0|103.0|-32.47131|0.19708 +2016-07-01|-47.0|104.0|-31.19925|0.19432 +2016-07-01|-47.0|105.0|-29.90147|0.19093 +2016-07-01|-47.0|106.0|-28.58071|0.18698 +2016-07-01|-47.0|107.0|-27.23986|0.18251 +2016-07-01|-47.0|108.0|-25.88195|0.17759 +2016-07-01|-47.0|109.0|-24.51008|0.1723 +2016-07-01|-47.0|110.0|-23.12739|0.16669 +2016-07-01|-47.0|111.0|-21.73703|0.16084 +2016-07-01|-47.0|112.0|-20.34215|0.15483 +2016-07-01|-47.0|113.0|-18.94581|0.14872 +2016-07-01|-47.0|114.0|-17.55102|0.14257 +2016-07-01|-47.0|115.0|-16.16062|0.13646 +2016-07-01|-47.0|116.0|-14.77736|0.13043 +2016-07-01|-47.0|117.0|-13.40381|0.12454 +2016-07-01|-47.0|118.0|-12.04235|0.11884 +2016-07-01|-47.0|119.0|-10.6952|0.11335 +2016-07-01|-47.0|120.0|-9.36436|0.10811 +2016-07-01|-47.0|121.0|-8.05165|0.10314 +2016-07-01|-47.0|122.0|-6.75869|0.09847 +2016-07-01|-47.0|123.0|-5.48693|0.09409 +2016-07-01|-47.0|124.0|-4.2376|0.09001 +2016-07-01|-47.0|125.0|-3.0118|0.08624 +2016-07-01|-47.0|126.0|-1.81042|0.08278 +2016-07-01|-47.0|127.0|-0.63426|0.0796 +2016-07-01|-47.0|128.0|0.51608|0.07672 +2016-07-01|-47.0|129.0|1.64009|0.07411 +2016-07-01|-47.0|130.0|2.73738|0.07176 +2016-07-01|-47.0|131.0|3.80766|0.06966 +2016-07-01|-47.0|132.0|4.85075|0.0678 +2016-07-01|-47.0|133.0|5.86651|0.06616 +2016-07-01|-47.0|134.0|6.85492|0.06473 +2016-07-01|-47.0|135.0|7.816|0.06349 +2016-07-01|-47.0|136.0|8.7498|0.06244 +2016-07-01|-47.0|137.0|9.65645|0.06156 +2016-07-01|-47.0|138.0|10.53612|0.06084 +2016-07-01|-47.0|139.0|11.389|0.06026 +2016-07-01|-47.0|140.0|12.21531|0.05983 +2016-07-01|-47.0|141.0|13.0153|0.05954 +2016-07-01|-47.0|142.0|13.78925|0.05936 +2016-07-01|-47.0|143.0|14.53744|0.0593 +2016-07-01|-47.0|144.0|15.26019|0.05936 +2016-07-01|-47.0|145.0|15.95781|0.05951 +2016-07-01|-47.0|146.0|16.63063|0.05976 +2016-07-01|-47.0|147.0|17.279|0.0601 +2016-07-01|-47.0|148.0|17.90326|0.06052 +2016-07-01|-47.0|149.0|18.50377|0.06102 +2016-07-01|-47.0|150.0|19.08089|0.06159 +2016-07-01|-47.0|151.0|19.635|0.06223 +2016-07-01|-47.0|152.0|20.16646|0.06292 +2016-07-01|-47.0|153.0|20.67565|0.06367 +2016-07-01|-47.0|154.0|21.16298|0.06445 +2016-07-01|-47.0|155.0|21.62881|0.06528 +2016-07-01|-47.0|156.0|22.07357|0.06614 +2016-07-01|-47.0|157.0|22.49766|0.06702 +2016-07-01|-47.0|158.0|22.90149|0.06792 +2016-07-01|-47.0|159.0|23.28549|0.06883 +2016-07-01|-47.0|160.0|23.65009|0.06974 +2016-07-01|-47.0|161.0|23.99574|0.07065 +2016-07-01|-47.0|162.0|24.32289|0.07155 +2016-07-01|-47.0|163.0|24.632|0.07243 +2016-07-01|-47.0|164.0|24.92356|0.07329 +2016-07-01|-47.0|165.0|25.19804|0.07413 +2016-07-01|-47.0|166.0|25.45593|0.07493 +2016-07-01|-47.0|167.0|25.69775|0.07569 +2016-07-01|-47.0|168.0|25.924|0.0764 +2016-07-01|-47.0|169.0|26.13521|0.07707 +2016-07-01|-47.0|170.0|26.33191|0.07768 +2016-07-01|-47.0|171.0|26.51461|0.07823 +2016-07-01|-47.0|172.0|26.68387|0.07872 +2016-07-01|-47.0|173.0|26.84022|0.07914 +2016-07-01|-47.0|174.0|26.9842|0.0795 +2016-07-01|-47.0|175.0|27.11635|0.07978 +2016-07-01|-47.0|176.0|27.2372|0.07999 +2016-07-01|-47.0|177.0|27.34728|0.08013 +2016-07-01|-47.0|178.0|27.44712|0.08019 +2016-07-01|-47.0|179.0|27.53723|0.08018 +2016-07-01|-47.0|-1.0|-21.46473|-0.00839 +2016-07-01|-47.0|-2.0|-21.13564|-0.00153 +2016-07-01|-47.0|-3.0|-20.82464|0.00486 +2016-07-01|-47.0|-4.0|-20.53095|0.01074 +2016-07-01|-47.0|-5.0|-20.25366|0.0161 +2016-07-01|-47.0|-6.0|-19.99179|0.02094 +2016-07-01|-47.0|-7.0|-19.7443|0.02525 +2016-07-01|-47.0|-8.0|-19.51005|0.02904 +2016-07-01|-47.0|-9.0|-19.28786|0.0323 +2016-07-01|-47.0|-10.0|-19.07653|0.03505 +2016-07-01|-47.0|-11.0|-18.87479|0.0373 +2016-07-01|-47.0|-12.0|-18.68137|0.03907 +2016-07-01|-47.0|-13.0|-18.49498|0.04037 +2016-07-01|-47.0|-14.0|-18.31433|0.04123 +2016-07-01|-47.0|-15.0|-18.13812|0.04166 +2016-07-01|-47.0|-16.0|-17.96507|0.04169 +2016-07-01|-47.0|-17.0|-17.79389|0.04133 +2016-07-01|-47.0|-18.0|-17.62333|0.04061 +2016-07-01|-47.0|-19.0|-17.45214|0.03954 +2016-07-01|-47.0|-20.0|-17.27908|0.03816 +2016-07-01|-47.0|-21.0|-17.10296|0.03647 +2016-07-01|-47.0|-22.0|-16.92257|0.03449 +2016-07-01|-47.0|-23.0|-16.73676|0.03225 +2016-07-01|-47.0|-24.0|-16.54439|0.02975 +2016-07-01|-47.0|-25.0|-16.34432|0.02701 +2016-07-01|-47.0|-26.0|-16.13547|0.02404 +2016-07-01|-47.0|-27.0|-15.91675|0.02086 +2016-07-01|-47.0|-28.0|-15.68713|0.01747 +2016-07-01|-47.0|-29.0|-15.44557|0.0139 +2016-07-01|-47.0|-30.0|-15.19108|0.01015 +2016-07-01|-47.0|-31.0|-14.92271|0.00624 +2016-07-01|-47.0|-32.0|-14.63953|0.00217 +2016-07-01|-47.0|-33.0|-14.34064|-0.00204 +2016-07-01|-47.0|-34.0|-14.02522|-0.00637 +2016-07-01|-47.0|-35.0|-13.69244|-0.01081 +2016-07-01|-47.0|-36.0|-13.34158|-0.01535 +2016-07-01|-47.0|-37.0|-12.97194|-0.01996 +2016-07-01|-47.0|-38.0|-12.58289|-0.02464 +2016-07-01|-47.0|-39.0|-12.17387|-0.02937 +2016-07-01|-47.0|-40.0|-11.74438|-0.03411 +2016-07-01|-47.0|-41.0|-11.29402|-0.03887 +2016-07-01|-47.0|-42.0|-10.82246|-0.04361 +2016-07-01|-47.0|-43.0|-10.32945|-0.04831 +2016-07-01|-47.0|-44.0|-9.81483|-0.05295 +2016-07-01|-47.0|-45.0|-9.27856|-0.05752 +2016-07-01|-47.0|-46.0|-8.72067|-0.06198 +2016-07-01|-47.0|-47.0|-8.14131|-0.06631 +2016-07-01|-47.0|-48.0|-7.54073|-0.07051 +2016-07-01|-47.0|-49.0|-6.91928|-0.07453 +2016-07-01|-47.0|-50.0|-6.27743|-0.07837 +2016-07-01|-47.0|-51.0|-5.61576|-0.082 +2016-07-01|-47.0|-52.0|-4.93493|-0.0854 +2016-07-01|-47.0|-53.0|-4.23573|-0.08856 +2016-07-01|-47.0|-54.0|-3.51906|-0.09147 +2016-07-01|-47.0|-55.0|-2.78589|-0.09409 +2016-07-01|-47.0|-56.0|-2.0373|-0.09644 +2016-07-01|-47.0|-57.0|-1.27448|-0.09848 +2016-07-01|-47.0|-58.0|-0.49868|-0.10022 +2016-07-01|-47.0|-59.0|0.28877|-0.10166 +2016-07-01|-47.0|-60.0|1.08645|-0.10277 +2016-07-01|-47.0|-61.0|1.89291|-0.10357 +2016-07-01|-47.0|-62.0|2.70662|-0.10405 +2016-07-01|-47.0|-63.0|3.52601|-0.10422 +2016-07-01|-47.0|-64.0|4.34948|-0.10408 +2016-07-01|-47.0|-65.0|5.17541|-0.10364 +2016-07-01|-47.0|-66.0|6.00216|-0.10291 +2016-07-01|-47.0|-67.0|6.82808|-0.10189 +2016-07-01|-47.0|-68.0|7.65155|-0.10061 +2016-07-01|-47.0|-69.0|8.47092|-0.09907 +2016-07-01|-47.0|-70.0|9.28462|-0.0973 +2016-07-01|-47.0|-71.0|10.09107|-0.0953 +2016-07-01|-47.0|-72.0|10.88875|-0.0931 +2016-07-01|-47.0|-73.0|11.6762|-0.09071 +2016-07-01|-47.0|-74.0|12.452|-0.08816 +2016-07-01|-47.0|-75.0|13.2148|-0.08547 +2016-07-01|-47.0|-76.0|13.96332|-0.08264 +2016-07-01|-47.0|-77.0|14.69637|-0.07971 +2016-07-01|-47.0|-78.0|15.4128|-0.0767 +2016-07-01|-47.0|-79.0|16.11159|-0.07362 +2016-07-01|-47.0|-80.0|16.79177|-0.07049 +2016-07-01|-47.0|-81.0|17.45248|-0.06733 +2016-07-01|-47.0|-82.0|18.09293|-0.06416 +2016-07-01|-47.0|-83.0|18.71243|-0.06099 +2016-07-01|-47.0|-84.0|19.31038|-0.05785 +2016-07-01|-47.0|-85.0|19.88627|-0.05474 +2016-07-01|-47.0|-86.0|20.43968|-0.05167 +2016-07-01|-47.0|-87.0|20.97027|-0.04867 +2016-07-01|-47.0|-88.0|21.47779|-0.04574 +2016-07-01|-47.0|-89.0|21.96209|-0.04289 +2016-07-01|-47.0|-90.0|22.42307|-0.04014 +2016-07-01|-47.0|-91.0|22.86074|-0.03748 +2016-07-01|-47.0|-92.0|23.27518|-0.03492 +2016-07-01|-47.0|-93.0|23.66654|-0.03248 +2016-07-01|-47.0|-94.0|24.03504|-0.03015 +2016-07-01|-47.0|-95.0|24.38097|-0.02793 +2016-07-01|-47.0|-96.0|24.70471|-0.02583 +2016-07-01|-47.0|-97.0|25.00666|-0.02385 +2016-07-01|-47.0|-98.0|25.28731|-0.02199 +2016-07-01|-47.0|-99.0|25.5472|-0.02023 +2016-07-01|-47.0|-100.0|25.78691|-0.01859 +2016-07-01|-47.0|-101.0|26.00708|-0.01706 +2016-07-01|-47.0|-102.0|26.20839|-0.01563 +2016-07-01|-47.0|-103.0|26.39154|-0.01429 +2016-07-01|-47.0|-104.0|26.5573|-0.01304 +2016-07-01|-47.0|-105.0|26.70644|-0.01187 +2016-07-01|-47.0|-106.0|26.83977|-0.01077 +2016-07-01|-47.0|-107.0|26.95813|-0.00974 +2016-07-01|-47.0|-108.0|27.06235|-0.00876 +2016-07-01|-47.0|-109.0|27.1533|-0.00782 +2016-07-01|-47.0|-110.0|27.23184|-0.00692 +2016-07-01|-47.0|-111.0|27.29884|-0.00605 +2016-07-01|-47.0|-112.0|27.35518|-0.0052 +2016-07-01|-47.0|-113.0|27.40172|-0.00435 +2016-07-01|-47.0|-114.0|27.43931|-0.0035 +2016-07-01|-47.0|-115.0|27.4688|-0.00264 +2016-07-01|-47.0|-116.0|27.49102|-0.00176 +2016-07-01|-47.0|-117.0|27.50678|-8.6E-4 +2016-07-01|-47.0|-118.0|27.51686|8.0E-5 +2016-07-01|-47.0|-119.0|27.52202|0.00105 +2016-07-01|-47.0|-120.0|27.52298|0.00206 +2016-07-01|-47.0|-121.0|27.52046|0.00312 +2016-07-01|-47.0|-122.0|27.5151|0.00423 +2016-07-01|-47.0|-123.0|27.50755|0.00539 +2016-07-01|-47.0|-124.0|27.49838|0.00661 +2016-07-01|-47.0|-125.0|27.48816|0.00788 +2016-07-01|-47.0|-126.0|27.47739|0.0092 +2016-07-01|-47.0|-127.0|27.46655|0.01057 +2016-07-01|-47.0|-128.0|27.45606|0.012 +2016-07-01|-47.0|-129.0|27.4463|0.01348 +2016-07-01|-47.0|-130.0|27.43763|0.015 +2016-07-01|-47.0|-131.0|27.43033|0.01656 +2016-07-01|-47.0|-132.0|27.42468|0.01816 +2016-07-01|-47.0|-133.0|27.42089|0.0198 +2016-07-01|-47.0|-134.0|27.41913|0.02147 +2016-07-01|-47.0|-135.0|27.41954|0.02316 +2016-07-01|-47.0|-136.0|27.42222|0.02488 +2016-07-01|-47.0|-137.0|27.42723|0.02661 +2016-07-01|-47.0|-138.0|27.4346|0.02836 +2016-07-01|-47.0|-139.0|27.44433|0.03011 +2016-07-01|-47.0|-140.0|27.45637|0.03187 +2016-07-01|-47.0|-141.0|27.47067|0.03363 +2016-07-01|-47.0|-142.0|27.48712|0.03538 +2016-07-01|-47.0|-143.0|27.50561|0.03713 +2016-07-01|-47.0|-144.0|27.52601|0.03887 +2016-07-01|-47.0|-145.0|27.54815|0.0406 +2016-07-01|-47.0|-146.0|27.57185|0.04232 +2016-07-01|-47.0|-147.0|27.59693|0.04402 +2016-07-01|-47.0|-148.0|27.62319|0.0457 +2016-07-01|-47.0|-149.0|27.65039|0.04736 +2016-07-01|-47.0|-150.0|27.67834|0.049 +2016-07-01|-47.0|-151.0|27.70678|0.05061 +2016-07-01|-47.0|-152.0|27.7355|0.0522 +2016-07-01|-47.0|-153.0|27.76424|0.05377 +2016-07-01|-47.0|-154.0|27.79278|0.05531 +2016-07-01|-47.0|-155.0|27.82086|0.05682 +2016-07-01|-47.0|-156.0|27.84825|0.0583 +2016-07-01|-47.0|-157.0|27.87471|0.05975 +2016-07-01|-47.0|-158.0|27.89998|0.06117 +2016-07-01|-47.0|-159.0|27.92383|0.06256 +2016-07-01|-47.0|-160.0|27.94602|0.06391 +2016-07-01|-47.0|-161.0|27.96629|0.06523 +2016-07-01|-47.0|-162.0|27.98441|0.06651 +2016-07-01|-47.0|-163.0|28.00013|0.06774 +2016-07-01|-47.0|-164.0|28.01319|0.06893 +2016-07-01|-47.0|-165.0|28.02333|0.07008 +2016-07-01|-47.0|-166.0|28.03029|0.07118 +2016-07-01|-47.0|-167.0|28.03379|0.07223 +2016-07-01|-47.0|-168.0|28.03356|0.07322 +2016-07-01|-47.0|-169.0|28.0293|0.07416 +2016-07-01|-47.0|-170.0|28.02069|0.07504 +2016-07-01|-47.0|-171.0|28.00744|0.07585 +2016-07-01|-47.0|-172.0|27.98919|0.07661 +2016-07-01|-47.0|-173.0|27.9656|0.0773 +2016-07-01|-47.0|-174.0|27.93631|0.07791 +2016-07-01|-47.0|-175.0|27.90093|0.07846 +2016-07-01|-47.0|-176.0|27.85906|0.07894 +2016-07-01|-47.0|-177.0|27.81028|0.07934 +2016-07-01|-47.0|-178.0|27.75417|0.07966 +2016-07-01|-47.0|-179.0|27.69027|0.07991 +2016-07-01|-48.0|0.0|-21.62943|-0.02093 +2016-07-01|-48.0|1.0|-22.02343|-0.02862 +2016-07-01|-48.0|2.0|-22.43666|-0.03663 +2016-07-01|-48.0|3.0|-22.86931|-0.04494 +2016-07-01|-48.0|4.0|-23.32146|-0.0535 +2016-07-01|-48.0|5.0|-23.79303|-0.06225 +2016-07-01|-48.0|6.0|-24.28382|-0.07116 +2016-07-01|-48.0|7.0|-24.79349|-0.08017 +2016-07-01|-48.0|8.0|-25.32159|-0.08923 +2016-07-01|-48.0|9.0|-25.86754|-0.09828 +2016-07-01|-48.0|10.0|-26.43064|-0.10727 +2016-07-01|-48.0|11.0|-27.0101|-0.11615 +2016-07-01|-48.0|12.0|-27.60502|-0.12488 +2016-07-01|-48.0|13.0|-28.21441|-0.1334 +2016-07-01|-48.0|14.0|-28.83722|-0.14168 +2016-07-01|-48.0|15.0|-29.47233|-0.14966 +2016-07-01|-48.0|16.0|-30.11856|-0.15731 +2016-07-01|-48.0|17.0|-30.77469|-0.16461 +2016-07-01|-48.0|18.0|-31.43948|-0.17151 +2016-07-01|-48.0|19.0|-32.11167|-0.17799 +2016-07-01|-48.0|20.0|-32.78998|-0.18404 +2016-07-01|-48.0|21.0|-33.47315|-0.18964 +2016-07-01|-48.0|22.0|-34.1599|-0.19477 +2016-07-01|-48.0|23.0|-34.849|-0.19942 +2016-07-01|-48.0|24.0|-35.53923|-0.2036 +2016-07-01|-48.0|25.0|-36.22939|-0.20729 +2016-07-01|-48.0|26.0|-36.91834|-0.2105 +2016-07-01|-48.0|27.0|-37.60495|-0.21323 +2016-07-01|-48.0|28.0|-38.28816|-0.2155 +2016-07-01|-48.0|29.0|-38.96694|-0.2173 +2016-07-01|-48.0|30.0|-39.64029|-0.21865 +2016-07-01|-48.0|31.0|-40.30728|-0.21956 +2016-07-01|-48.0|32.0|-40.96701|-0.22004 +2016-07-01|-48.0|33.0|-41.61864|-0.22011 +2016-07-01|-48.0|34.0|-42.26136|-0.21978 +2016-07-01|-48.0|35.0|-42.8944|-0.21906 +2016-07-01|-48.0|36.0|-43.51704|-0.21798 +2016-07-01|-48.0|37.0|-44.12859|-0.21653 +2016-07-01|-48.0|38.0|-44.72841|-0.21475 +2016-07-01|-48.0|39.0|-45.31586|-0.21264 +2016-07-01|-48.0|40.0|-45.89038|-0.21021 +2016-07-01|-48.0|41.0|-46.4514|-0.20748 +2016-07-01|-48.0|42.0|-46.99838|-0.20446 +2016-07-01|-48.0|43.0|-47.53082|-0.20115 +2016-07-01|-48.0|44.0|-48.04824|-0.19758 +2016-07-01|-48.0|45.0|-48.55017|-0.19374 +2016-07-01|-48.0|46.0|-49.03615|-0.18965 +2016-07-01|-48.0|47.0|-49.50576|-0.18532 +2016-07-01|-48.0|48.0|-49.95858|-0.18074 +2016-07-01|-48.0|49.0|-50.39419|-0.17593 +2016-07-01|-48.0|50.0|-50.8122|-0.17088 +2016-07-01|-48.0|51.0|-51.21223|-0.16562 +2016-07-01|-48.0|52.0|-51.59388|-0.16013 +2016-07-01|-48.0|53.0|-51.95678|-0.15442 +2016-07-01|-48.0|54.0|-52.30057|-0.14849 +2016-07-01|-48.0|55.0|-52.62486|-0.14235 +2016-07-01|-48.0|56.0|-52.9293|-0.13599 +2016-07-01|-48.0|57.0|-53.2135|-0.12943 +2016-07-01|-48.0|58.0|-53.4771|-0.12265 +2016-07-01|-48.0|59.0|-53.71973|-0.11567 +2016-07-01|-48.0|60.0|-53.94099|-0.10848 +2016-07-01|-48.0|61.0|-54.14051|-0.10109 +2016-07-01|-48.0|62.0|-54.31788|-0.0935 +2016-07-01|-48.0|63.0|-54.47269|-0.08571 +2016-07-01|-48.0|64.0|-54.60451|-0.07773 +2016-07-01|-48.0|65.0|-54.71291|-0.06956 +2016-07-01|-48.0|66.0|-54.79743|-0.06121 +2016-07-01|-48.0|67.0|-54.85759|-0.05268 +2016-07-01|-48.0|68.0|-54.89288|-0.04399 +2016-07-01|-48.0|69.0|-54.90279|-0.03513 +2016-07-01|-48.0|70.0|-54.88675|-0.02613 +2016-07-01|-48.0|71.0|-54.84419|-0.01699 +2016-07-01|-48.0|72.0|-54.7745|-0.00773 +2016-07-01|-48.0|73.0|-54.67702|0.00164 +2016-07-01|-48.0|74.0|-54.55108|0.0111 +2016-07-01|-48.0|75.0|-54.39598|0.02064 +2016-07-01|-48.0|76.0|-54.21096|0.03023 +2016-07-01|-48.0|77.0|-53.99525|0.03986 +2016-07-01|-48.0|78.0|-53.74802|0.04949 +2016-07-01|-48.0|79.0|-53.46845|0.05911 +2016-07-01|-48.0|80.0|-53.15565|0.06869 +2016-07-01|-48.0|81.0|-52.80874|0.07819 +2016-07-01|-48.0|82.0|-52.42678|0.0876 +2016-07-01|-48.0|83.0|-52.00887|0.09687 +2016-07-01|-48.0|84.0|-51.55404|0.10597 +2016-07-01|-48.0|85.0|-51.06138|0.11487 +2016-07-01|-48.0|86.0|-50.52995|0.12352 +2016-07-01|-48.0|87.0|-49.95885|0.13191 +2016-07-01|-48.0|88.0|-49.34722|0.13997 +2016-07-01|-48.0|89.0|-48.69424|0.14768 +2016-07-01|-48.0|90.0|-47.99916|0.15499 +2016-07-01|-48.0|91.0|-47.2613|0.16186 +2016-07-01|-48.0|92.0|-46.48011|0.16826 +2016-07-01|-48.0|93.0|-45.65513|0.17414 +2016-07-01|-48.0|94.0|-44.78606|0.17947 +2016-07-01|-48.0|95.0|-43.87274|0.18422 +2016-07-01|-48.0|96.0|-42.91521|0.18835 +2016-07-01|-48.0|97.0|-41.9137|0.19184 +2016-07-01|-48.0|98.0|-40.86866|0.19466 +2016-07-01|-48.0|99.0|-39.78079|0.1968 +2016-07-01|-48.0|100.0|-38.651|0.19825 +2016-07-01|-48.0|101.0|-37.48051|0.19899 +2016-07-01|-48.0|102.0|-36.27078|0.19904 +2016-07-01|-48.0|103.0|-35.02354|0.1984 +2016-07-01|-48.0|104.0|-33.7408|0.19709 +2016-07-01|-48.0|105.0|-32.42483|0.19514 +2016-07-01|-48.0|106.0|-31.07816|0.19259 +2016-07-01|-48.0|107.0|-29.70353|0.18947 +2016-07-01|-48.0|108.0|-28.3039|0.18583 +2016-07-01|-48.0|109.0|-26.88243|0.18173 +2016-07-01|-48.0|110.0|-25.44239|0.17723 +2016-07-01|-48.0|111.0|-23.98719|0.17239 +2016-07-01|-48.0|112.0|-22.52029|0.16728 +2016-07-01|-48.0|113.0|-21.0452|0.16195 +2016-07-01|-48.0|114.0|-19.56542|0.15648 +2016-07-01|-48.0|115.0|-18.0844|0.15093 +2016-07-01|-48.0|116.0|-16.6055|0.14536 +2016-07-01|-48.0|117.0|-15.13198|0.13981 +2016-07-01|-48.0|118.0|-13.66694|0.13435 +2016-07-01|-48.0|119.0|-12.2133|0.12902 +2016-07-01|-48.0|120.0|-10.77382|0.12385 +2016-07-01|-48.0|121.0|-9.35104|0.11888 +2016-07-01|-48.0|122.0|-7.94726|0.11413 +2016-07-01|-48.0|123.0|-6.5646|0.10961 +2016-07-01|-48.0|124.0|-5.20492|0.10535 +2016-07-01|-48.0|125.0|-3.86989|0.10135 +2016-07-01|-48.0|126.0|-2.56095|0.09762 +2016-07-01|-48.0|127.0|-1.27934|0.09416 +2016-07-01|-48.0|128.0|-0.0261|0.09095 +2016-07-01|-48.0|129.0|1.1979|0.088 +2016-07-01|-48.0|130.0|2.39198|0.0853 +2016-07-01|-48.0|131.0|3.55558|0.08284 +2016-07-01|-48.0|132.0|4.68832|0.08061 +2016-07-01|-48.0|133.0|5.78993|0.0786 +2016-07-01|-48.0|134.0|6.86025|0.0768 +2016-07-01|-48.0|135.0|7.89924|0.07519 +2016-07-01|-48.0|136.0|8.90692|0.07377 +2016-07-01|-48.0|137.0|9.88343|0.07252 +2016-07-01|-48.0|138.0|10.82894|0.07145 +2016-07-01|-48.0|139.0|11.7437|0.07053 +2016-07-01|-48.0|140.0|12.628|0.06976 +2016-07-01|-48.0|141.0|13.4822|0.06913 +2016-07-01|-48.0|142.0|14.30667|0.06864 +2016-07-01|-48.0|143.0|15.10181|0.06827 +2016-07-01|-48.0|144.0|15.86806|0.06803 +2016-07-01|-48.0|145.0|16.60587|0.06789 +2016-07-01|-48.0|146.0|17.31572|0.06787 +2016-07-01|-48.0|147.0|17.99809|0.06794 +2016-07-01|-48.0|148.0|18.65347|0.06811 +2016-07-01|-48.0|149.0|19.28237|0.06836 +2016-07-01|-48.0|150.0|19.8853|0.0687 +2016-07-01|-48.0|151.0|20.46277|0.06911 +2016-07-01|-48.0|152.0|21.01531|0.06958 +2016-07-01|-48.0|153.0|21.54343|0.07012 +2016-07-01|-48.0|154.0|22.04767|0.07071 +2016-07-01|-48.0|155.0|22.52855|0.07135 +2016-07-01|-48.0|156.0|22.9866|0.07203 +2016-07-01|-48.0|157.0|23.42236|0.07274 +2016-07-01|-48.0|158.0|23.83637|0.07348 +2016-07-01|-48.0|159.0|24.22917|0.07423 +2016-07-01|-48.0|160.0|24.60131|0.075 +2016-07-01|-48.0|161.0|24.95332|0.07577 +2016-07-01|-48.0|162.0|25.28577|0.07654 +2016-07-01|-48.0|163.0|25.59922|0.07729 +2016-07-01|-48.0|164.0|25.89423|0.07804 +2016-07-01|-48.0|165.0|26.17136|0.07875 +2016-07-01|-48.0|166.0|26.43118|0.07944 +2016-07-01|-48.0|167.0|26.67428|0.0801 +2016-07-01|-48.0|168.0|26.90123|0.08072 +2016-07-01|-48.0|169.0|27.1126|0.08129 +2016-07-01|-48.0|170.0|27.30898|0.08181 +2016-07-01|-48.0|171.0|27.49096|0.08228 +2016-07-01|-48.0|172.0|27.6591|0.08268 +2016-07-01|-48.0|173.0|27.814|0.08303 +2016-07-01|-48.0|174.0|27.95622|0.08331 +2016-07-01|-48.0|175.0|28.08633|0.08353 +2016-07-01|-48.0|176.0|28.2049|0.08367 +2016-07-01|-48.0|177.0|28.31248|0.08375 +2016-07-01|-48.0|178.0|28.40962|0.08375 +2016-07-01|-48.0|179.0|28.49685|0.08367 +2016-07-01|-48.0|-1.0|-21.25435|-0.01362 +2016-07-01|-48.0|-2.0|-20.89774|-0.00671 +2016-07-01|-48.0|-3.0|-20.55905|-2.2E-4 +2016-07-01|-48.0|-4.0|-20.23759|0.00581 +2016-07-01|-48.0|-5.0|-19.9326|0.01138 +2016-07-01|-48.0|-6.0|-19.64322|0.01646 +2016-07-01|-48.0|-7.0|-19.36849|0.02105 +2016-07-01|-48.0|-8.0|-19.10741|0.02515 +2016-07-01|-48.0|-9.0|-18.85889|0.02875 +2016-07-01|-48.0|-10.0|-18.6218|0.03187 +2016-07-01|-48.0|-11.0|-18.39497|0.0345 +2016-07-01|-48.0|-12.0|-18.17718|0.03666 +2016-07-01|-48.0|-13.0|-17.96721|0.03837 +2016-07-01|-48.0|-14.0|-17.7638|0.03963 +2016-07-01|-48.0|-15.0|-17.5657|0.04046 +2016-07-01|-48.0|-16.0|-17.37163|0.04087 +2016-07-01|-48.0|-17.0|-17.18033|0.0409 +2016-07-01|-48.0|-18.0|-16.99055|0.04055 +2016-07-01|-48.0|-19.0|-16.80103|0.03984 +2016-07-01|-48.0|-20.0|-16.61054|0.03879 +2016-07-01|-48.0|-21.0|-16.41784|0.03741 +2016-07-01|-48.0|-22.0|-16.22175|0.03573 +2016-07-01|-48.0|-23.0|-16.02106|0.03376 +2016-07-01|-48.0|-24.0|-15.81461|0.03152 +2016-07-01|-48.0|-25.0|-15.60126|0.02901 +2016-07-01|-48.0|-26.0|-15.37989|0.02626 +2016-07-01|-48.0|-27.0|-15.1494|0.02327 +2016-07-01|-48.0|-28.0|-14.90873|0.02007 +2016-07-01|-48.0|-29.0|-14.65684|0.01666 +2016-07-01|-48.0|-30.0|-14.39273|0.01307 +2016-07-01|-48.0|-31.0|-14.11543|0.0093 +2016-07-01|-48.0|-32.0|-13.82402|0.00536 +2016-07-01|-48.0|-33.0|-13.51759|0.00128 +2016-07-01|-48.0|-34.0|-13.19533|-0.00293 +2016-07-01|-48.0|-35.0|-12.85643|-0.00726 +2016-07-01|-48.0|-36.0|-12.50017|-0.01169 +2016-07-01|-48.0|-37.0|-12.12587|-0.0162 +2016-07-01|-48.0|-38.0|-11.73291|-0.02078 +2016-07-01|-48.0|-39.0|-11.32076|-0.0254 +2016-07-01|-48.0|-40.0|-10.88895|-0.03005 +2016-07-01|-48.0|-41.0|-10.43708|-0.0347 +2016-07-01|-48.0|-42.0|-9.96484|-0.03934 +2016-07-01|-48.0|-43.0|-9.47202|-0.04394 +2016-07-01|-48.0|-44.0|-8.95847|-0.04848 +2016-07-01|-48.0|-45.0|-8.42415|-0.05295 +2016-07-01|-48.0|-46.0|-7.86912|-0.05731 +2016-07-01|-48.0|-47.0|-7.29354|-0.06156 +2016-07-01|-48.0|-48.0|-6.69765|-0.06566 +2016-07-01|-48.0|-49.0|-6.08181|-0.06961 +2016-07-01|-48.0|-50.0|-5.44648|-0.07337 +2016-07-01|-48.0|-51.0|-4.79221|-0.07693 +2016-07-01|-48.0|-52.0|-4.11965|-0.08027 +2016-07-01|-48.0|-53.0|-3.42957|-0.08338 +2016-07-01|-48.0|-54.0|-2.72283|-0.08623 +2016-07-01|-48.0|-55.0|-2.00035|-0.08883 +2016-07-01|-48.0|-56.0|-1.26318|-0.09116 +2016-07-01|-48.0|-57.0|-0.51244|-0.09319 +2016-07-01|-48.0|-58.0|0.25068|-0.09494 +2016-07-01|-48.0|-59.0|1.02491|-0.0964 +2016-07-01|-48.0|-60.0|1.80893|-0.09755 +2016-07-01|-48.0|-61.0|2.60133|-0.0984 +2016-07-01|-48.0|-62.0|3.40068|-0.09894 +2016-07-01|-48.0|-63.0|4.20551|-0.09919 +2016-07-01|-48.0|-64.0|5.0143|-0.09914 +2016-07-01|-48.0|-65.0|5.82552|-0.09881 +2016-07-01|-48.0|-66.0|6.63762|-0.09819 +2016-07-01|-48.0|-67.0|7.44905|-0.09731 +2016-07-01|-48.0|-68.0|8.25827|-0.09617 +2016-07-01|-48.0|-69.0|9.06374|-0.09479 +2016-07-01|-48.0|-70.0|9.86396|-0.09317 +2016-07-01|-48.0|-71.0|10.65745|-0.09134 +2016-07-01|-48.0|-72.0|11.44275|-0.08932 +2016-07-01|-48.0|-73.0|12.21849|-0.08711 +2016-07-01|-48.0|-74.0|12.98331|-0.08475 +2016-07-01|-48.0|-75.0|13.73594|-0.08224 +2016-07-01|-48.0|-76.0|14.47514|-0.0796 +2016-07-01|-48.0|-77.0|15.19976|-0.07686 +2016-07-01|-48.0|-78.0|15.90873|-0.07403 +2016-07-01|-48.0|-79.0|16.60104|-0.07113 +2016-07-01|-48.0|-80.0|17.27575|-0.06818 +2016-07-01|-48.0|-81.0|17.93202|-0.0652 +2016-07-01|-48.0|-82.0|18.56908|-0.0622 +2016-07-01|-48.0|-83.0|19.18625|-0.05919 +2016-07-01|-48.0|-84.0|19.78293|-0.0562 +2016-07-01|-48.0|-85.0|20.35859|-0.05324 +2016-07-01|-48.0|-86.0|20.91281|-0.05031 +2016-07-01|-48.0|-87.0|21.44522|-0.04744 +2016-07-01|-48.0|-88.0|21.95555|-0.04462 +2016-07-01|-48.0|-89.0|22.44361|-0.04188 +2016-07-01|-48.0|-90.0|22.90928|-0.03923 +2016-07-01|-48.0|-91.0|23.35253|-0.03665 +2016-07-01|-48.0|-92.0|23.77337|-0.03418 +2016-07-01|-48.0|-93.0|24.17191|-0.0318 +2016-07-01|-48.0|-94.0|24.54834|-0.02952 +2016-07-01|-48.0|-95.0|24.90287|-0.02735 +2016-07-01|-48.0|-96.0|25.23581|-0.02529 +2016-07-01|-48.0|-97.0|25.54753|-0.02334 +2016-07-01|-48.0|-98.0|25.83844|-0.02149 +2016-07-01|-48.0|-99.0|26.10901|-0.01975 +2016-07-01|-48.0|-100.0|26.35976|-0.01811 +2016-07-01|-48.0|-101.0|26.59126|-0.01656 +2016-07-01|-48.0|-102.0|26.80412|-0.01512 +2016-07-01|-48.0|-103.0|26.99899|-0.01376 +2016-07-01|-48.0|-104.0|27.17656|-0.01248 +2016-07-01|-48.0|-105.0|27.33755|-0.01128 +2016-07-01|-48.0|-106.0|27.4827|-0.01015 +2016-07-01|-48.0|-107.0|27.61279|-0.00907 +2016-07-01|-48.0|-108.0|27.7286|-0.00805 +2016-07-01|-48.0|-109.0|27.83094|-0.00707 +2016-07-01|-48.0|-110.0|27.92063|-0.00613 +2016-07-01|-48.0|-111.0|27.9985|-0.00521 +2016-07-01|-48.0|-112.0|28.06536|-0.00431 +2016-07-01|-48.0|-113.0|28.12206|-0.00342 +2016-07-01|-48.0|-114.0|28.16942|-0.00253 +2016-07-01|-48.0|-115.0|28.20825|-0.00163 +2016-07-01|-48.0|-116.0|28.23936|-7.1E-4 +2016-07-01|-48.0|-117.0|28.26354|2.3E-4 +2016-07-01|-48.0|-118.0|28.28156|0.0012 +2016-07-01|-48.0|-119.0|28.29417|0.0022 +2016-07-01|-48.0|-120.0|28.3021|0.00324 +2016-07-01|-48.0|-121.0|28.30605|0.00433 +2016-07-01|-48.0|-122.0|28.30668|0.00546 +2016-07-01|-48.0|-123.0|28.30463|0.00664 +2016-07-01|-48.0|-124.0|28.30051|0.00787 +2016-07-01|-48.0|-125.0|28.29488|0.00915 +2016-07-01|-48.0|-126.0|28.28827|0.01049 +2016-07-01|-48.0|-127.0|28.28118|0.01187 +2016-07-01|-48.0|-128.0|28.27406|0.01331 +2016-07-01|-48.0|-129.0|28.26732|0.01479 +2016-07-01|-48.0|-130.0|28.26132|0.01632 +2016-07-01|-48.0|-131.0|28.2564|0.0179 +2016-07-01|-48.0|-132.0|28.25285|0.01951 +2016-07-01|-48.0|-133.0|28.25092|0.02116 +2016-07-01|-48.0|-134.0|28.25081|0.02284 +2016-07-01|-48.0|-135.0|28.25269|0.02454 +2016-07-01|-48.0|-136.0|28.2567|0.02627 +2016-07-01|-48.0|-137.0|28.26292|0.02802 +2016-07-01|-48.0|-138.0|28.27142|0.02979 +2016-07-01|-48.0|-139.0|28.28222|0.03157 +2016-07-01|-48.0|-140.0|28.2953|0.03335 +2016-07-01|-48.0|-141.0|28.31063|0.03514 +2016-07-01|-48.0|-142.0|28.32815|0.03693 +2016-07-01|-48.0|-143.0|28.34775|0.03871 +2016-07-01|-48.0|-144.0|28.36932|0.04049 +2016-07-01|-48.0|-145.0|28.39273|0.04226 +2016-07-01|-48.0|-146.0|28.41781|0.04402 +2016-07-01|-48.0|-147.0|28.44439|0.04576 +2016-07-01|-48.0|-148.0|28.47227|0.04749 +2016-07-01|-48.0|-149.0|28.50126|0.0492 +2016-07-01|-48.0|-150.0|28.53113|0.05089 +2016-07-01|-48.0|-151.0|28.56168|0.05256 +2016-07-01|-48.0|-152.0|28.59265|0.05421 +2016-07-01|-48.0|-153.0|28.62383|0.05583 +2016-07-01|-48.0|-154.0|28.65497|0.05742 +2016-07-01|-48.0|-155.0|28.68581|0.05899 +2016-07-01|-48.0|-156.0|28.71613|0.06053 +2016-07-01|-48.0|-157.0|28.74566|0.06204 +2016-07-01|-48.0|-158.0|28.77417|0.06351 +2016-07-01|-48.0|-159.0|28.80138|0.06496 +2016-07-01|-48.0|-160.0|28.82706|0.06636 +2016-07-01|-48.0|-161.0|28.85094|0.06773 +2016-07-01|-48.0|-162.0|28.87277|0.06906 +2016-07-01|-48.0|-163.0|28.89228|0.07035 +2016-07-01|-48.0|-164.0|28.90921|0.07159 +2016-07-01|-48.0|-165.0|28.92328|0.07279 +2016-07-01|-48.0|-166.0|28.93421|0.07393 +2016-07-01|-48.0|-167.0|28.94172|0.07503 +2016-07-01|-48.0|-168.0|28.9455|0.07607 +2016-07-01|-48.0|-169.0|28.94526|0.07705 +2016-07-01|-48.0|-170.0|28.94067|0.07798 +2016-07-01|-48.0|-171.0|28.93139|0.07884 +2016-07-01|-48.0|-172.0|28.91708|0.07965 +2016-07-01|-48.0|-173.0|28.89739|0.08038 +2016-07-01|-48.0|-174.0|28.87192|0.08105 +2016-07-01|-48.0|-175.0|28.84029|0.08164 +2016-07-01|-48.0|-176.0|28.80208|0.08216 +2016-07-01|-48.0|-177.0|28.75687|0.08262 +2016-07-01|-48.0|-178.0|28.70421|0.08299 +2016-07-01|-48.0|-179.0|28.64364|0.08329 +2016-07-01|-49.0|0.0|-21.45031|-0.02592 +2016-07-01|-49.0|1.0|-21.86954|-0.0335 +2016-07-01|-49.0|2.0|-22.30741|-0.04137 +2016-07-01|-49.0|3.0|-22.76401|-0.04949 +2016-07-01|-49.0|4.0|-23.23934|-0.05781 +2016-07-01|-49.0|5.0|-23.73326|-0.0663 +2016-07-01|-49.0|6.0|-24.24551|-0.07491 +2016-07-01|-49.0|7.0|-24.77573|-0.08358 +2016-07-01|-49.0|8.0|-25.32342|-0.09228 +2016-07-01|-49.0|9.0|-25.888|-0.10096 +2016-07-01|-49.0|10.0|-26.46876|-0.10956 +2016-07-01|-49.0|11.0|-27.06492|-0.11805 +2016-07-01|-49.0|12.0|-27.67562|-0.12638 +2016-07-01|-49.0|13.0|-28.29989|-0.13451 +2016-07-01|-49.0|14.0|-28.93672|-0.1424 +2016-07-01|-49.0|15.0|-29.58505|-0.15001 +2016-07-01|-49.0|16.0|-30.24377|-0.15731 +2016-07-01|-49.0|17.0|-30.91171|-0.16427 +2016-07-01|-49.0|18.0|-31.58772|-0.17086 +2016-07-01|-49.0|19.0|-32.2706|-0.17707 +2016-07-01|-49.0|20.0|-32.95915|-0.18287 +2016-07-01|-49.0|21.0|-33.65219|-0.18825 +2016-07-01|-49.0|22.0|-34.34852|-0.19319 +2016-07-01|-49.0|23.0|-35.047|-0.19769 +2016-07-01|-49.0|24.0|-35.74646|-0.20175 +2016-07-01|-49.0|25.0|-36.4458|-0.20535 +2016-07-01|-49.0|26.0|-37.14393|-0.20851 +2016-07-01|-49.0|27.0|-37.8398|-0.21122 +2016-07-01|-49.0|28.0|-38.53241|-0.21349 +2016-07-01|-49.0|29.0|-39.22078|-0.21533 +2016-07-01|-49.0|30.0|-39.90398|-0.21674 +2016-07-01|-49.0|31.0|-40.58113|-0.21775 +2016-07-01|-49.0|32.0|-41.25137|-0.21834 +2016-07-01|-49.0|33.0|-41.91391|-0.21855 +2016-07-01|-49.0|34.0|-42.56798|-0.21838 +2016-07-01|-49.0|35.0|-43.21284|-0.21784 +2016-07-01|-49.0|36.0|-43.84782|-0.21695 +2016-07-01|-49.0|37.0|-44.47225|-0.21572 +2016-07-01|-49.0|38.0|-45.08551|-0.21416 +2016-07-01|-49.0|39.0|-45.68702|-0.21229 +2016-07-01|-49.0|40.0|-46.2762|-0.21011 +2016-07-01|-49.0|41.0|-46.85254|-0.20764 +2016-07-01|-49.0|42.0|-47.4155|-0.20489 +2016-07-01|-49.0|43.0|-47.96462|-0.20187 +2016-07-01|-49.0|44.0|-48.49942|-0.19858 +2016-07-01|-49.0|45.0|-49.01945|-0.19504 +2016-07-01|-49.0|46.0|-49.52429|-0.19125 +2016-07-01|-49.0|47.0|-50.01351|-0.18723 +2016-07-01|-49.0|48.0|-50.48672|-0.18297 +2016-07-01|-49.0|49.0|-50.94352|-0.17848 +2016-07-01|-49.0|50.0|-51.38353|-0.17377 +2016-07-01|-49.0|51.0|-51.80639|-0.16884 +2016-07-01|-49.0|52.0|-52.21171|-0.16369 +2016-07-01|-49.0|53.0|-52.59914|-0.15833 +2016-07-01|-49.0|54.0|-52.96833|-0.15276 +2016-07-01|-49.0|55.0|-53.31891|-0.14699 +2016-07-01|-49.0|56.0|-53.65054|-0.141 +2016-07-01|-49.0|57.0|-53.96285|-0.13482 +2016-07-01|-49.0|58.0|-54.25549|-0.12843 +2016-07-01|-49.0|59.0|-54.5281|-0.12185 +2016-07-01|-49.0|60.0|-54.78031|-0.11506 +2016-07-01|-49.0|61.0|-55.01174|-0.10809 +2016-07-01|-49.0|62.0|-55.22201|-0.10092 +2016-07-01|-49.0|63.0|-55.41071|-0.09355 +2016-07-01|-49.0|64.0|-55.57744|-0.08601 +2016-07-01|-49.0|65.0|-55.72176|-0.07828 +2016-07-01|-49.0|66.0|-55.84323|-0.07037 +2016-07-01|-49.0|67.0|-55.94138|-0.06229 +2016-07-01|-49.0|68.0|-56.01572|-0.05405 +2016-07-01|-49.0|69.0|-56.06573|-0.04565 +2016-07-01|-49.0|70.0|-56.09087|-0.0371 +2016-07-01|-49.0|71.0|-56.09055|-0.02842 +2016-07-01|-49.0|72.0|-56.06418|-0.0196 +2016-07-01|-49.0|73.0|-56.0111|-0.01067 +2016-07-01|-49.0|74.0|-55.93065|-0.00164 +2016-07-01|-49.0|75.0|-55.82209|0.00748 +2016-07-01|-49.0|76.0|-55.68468|0.01668 +2016-07-01|-49.0|77.0|-55.51761|0.02592 +2016-07-01|-49.0|78.0|-55.32006|0.03521 +2016-07-01|-49.0|79.0|-55.09115|0.0445 +2016-07-01|-49.0|80.0|-54.82996|0.05379 +2016-07-01|-49.0|81.0|-54.53555|0.06305 +2016-07-01|-49.0|82.0|-54.20692|0.07225 +2016-07-01|-49.0|83.0|-53.84307|0.08136 +2016-07-01|-49.0|84.0|-53.44296|0.09037 +2016-07-01|-49.0|85.0|-53.00552|0.09923 +2016-07-01|-49.0|86.0|-52.52969|0.10793 +2016-07-01|-49.0|87.0|-52.01439|0.11642 +2016-07-01|-49.0|88.0|-51.45856|0.12467 +2016-07-01|-49.0|89.0|-50.86114|0.13265 +2016-07-01|-49.0|90.0|-50.22112|0.14033 +2016-07-01|-49.0|91.0|-49.53753|0.14767 +2016-07-01|-49.0|92.0|-48.80945|0.15463 +2016-07-01|-49.0|93.0|-48.03607|0.16118 +2016-07-01|-49.0|94.0|-47.21666|0.16729 +2016-07-01|-49.0|95.0|-46.35061|0.17291 +2016-07-01|-49.0|96.0|-45.43747|0.17802 +2016-07-01|-49.0|97.0|-44.47694|0.1826 +2016-07-01|-49.0|98.0|-43.46893|0.1866 +2016-07-01|-49.0|99.0|-42.41354|0.19 +2016-07-01|-49.0|100.0|-41.31112|0.1928 +2016-07-01|-49.0|101.0|-40.16229|0.19496 +2016-07-01|-49.0|102.0|-38.96791|0.19649 +2016-07-01|-49.0|103.0|-37.72916|0.19738 +2016-07-01|-49.0|104.0|-36.44753|0.19762 +2016-07-01|-49.0|105.0|-35.1248|0.19723 +2016-07-01|-49.0|106.0|-33.76307|0.19624 +2016-07-01|-49.0|107.0|-32.36477|0.19465 +2016-07-01|-49.0|108.0|-30.9326|0.1925 +2016-07-01|-49.0|109.0|-29.46957|0.18983 +2016-07-01|-49.0|110.0|-27.97893|0.18668 +2016-07-01|-49.0|111.0|-26.46418|0.1831 +2016-07-01|-49.0|112.0|-24.92899|0.17915 +2016-07-01|-49.0|113.0|-23.3772|0.17487 +2016-07-01|-49.0|114.0|-21.81276|0.17034 +2016-07-01|-49.0|115.0|-20.23967|0.1656 +2016-07-01|-49.0|116.0|-18.66195|0.16071 +2016-07-01|-49.0|117.0|-17.08358|0.15574 +2016-07-01|-49.0|118.0|-15.50846|0.15072 +2016-07-01|-49.0|119.0|-13.94037|0.14572 +2016-07-01|-49.0|120.0|-12.38292|0.14078 +2016-07-01|-49.0|121.0|-10.83954|0.13594 +2016-07-01|-49.0|122.0|-9.31342|0.13122 +2016-07-01|-49.0|123.0|-7.80751|0.12666 +2016-07-01|-49.0|124.0|-6.3245|0.12228 +2016-07-01|-49.0|125.0|-4.86681|0.1181 +2016-07-01|-49.0|126.0|-3.4366|0.11414 +2016-07-01|-49.0|127.0|-2.03574|0.11039 +2016-07-01|-49.0|128.0|-0.66585|0.10686 +2016-07-01|-49.0|129.0|0.67169|0.10357 +2016-07-01|-49.0|130.0|1.97579|0.10049 +2016-07-01|-49.0|131.0|3.24553|0.09764 +2016-07-01|-49.0|132.0|4.48023|0.095 +2016-07-01|-49.0|133.0|5.6794|0.09258 +2016-07-01|-49.0|134.0|6.84274|0.09035 +2016-07-01|-49.0|135.0|7.97006|0.08833 +2016-07-01|-49.0|136.0|9.06136|0.08649 +2016-07-01|-49.0|137.0|10.11675|0.08483 +2016-07-01|-49.0|138.0|11.13642|0.08335 +2016-07-01|-49.0|139.0|12.1207|0.08203 +2016-07-01|-49.0|140.0|13.06995|0.08087 +2016-07-01|-49.0|141.0|13.98464|0.07986 +2016-07-01|-49.0|142.0|14.86528|0.079 +2016-07-01|-49.0|143.0|15.71242|0.07828 +2016-07-01|-49.0|144.0|16.52666|0.07769 +2016-07-01|-49.0|145.0|17.30861|0.07722 +2016-07-01|-49.0|146.0|18.05893|0.07688 +2016-07-01|-49.0|147.0|18.77828|0.07664 +2016-07-01|-49.0|148.0|19.46734|0.07652 +2016-07-01|-49.0|149.0|20.12679|0.07649 +2016-07-01|-49.0|150.0|20.75733|0.07656 +2016-07-01|-49.0|151.0|21.35966|0.07671 +2016-07-01|-49.0|152.0|21.93445|0.07694 +2016-07-01|-49.0|153.0|22.48242|0.07724 +2016-07-01|-49.0|154.0|23.00425|0.07761 +2016-07-01|-49.0|155.0|23.50064|0.07804 +2016-07-01|-49.0|156.0|23.97226|0.07851 +2016-07-01|-49.0|157.0|24.41981|0.07903 +2016-07-01|-49.0|158.0|24.84396|0.07958 +2016-07-01|-49.0|159.0|25.24538|0.08016 +2016-07-01|-49.0|160.0|25.62476|0.08075 +2016-07-01|-49.0|161.0|25.98276|0.08136 +2016-07-01|-49.0|162.0|26.32005|0.08198 +2016-07-01|-49.0|163.0|26.63729|0.08259 +2016-07-01|-49.0|164.0|26.93515|0.08319 +2016-07-01|-49.0|165.0|27.21428|0.08378 +2016-07-01|-49.0|166.0|27.47534|0.08434 +2016-07-01|-49.0|167.0|27.71898|0.08488 +2016-07-01|-49.0|168.0|27.94585|0.08538 +2016-07-01|-49.0|169.0|28.1566|0.08584 +2016-07-01|-49.0|170.0|28.35187|0.08626 +2016-07-01|-49.0|171.0|28.53229|0.08662 +2016-07-01|-49.0|172.0|28.6985|0.08694 +2016-07-01|-49.0|173.0|28.85111|0.08719 +2016-07-01|-49.0|174.0|28.99073|0.08739 +2016-07-01|-49.0|175.0|29.11798|0.08752 +2016-07-01|-49.0|176.0|29.23344|0.08758 +2016-07-01|-49.0|177.0|29.3377|0.08758 +2016-07-01|-49.0|178.0|29.43132|0.0875 +2016-07-01|-49.0|179.0|29.51486|0.08735 +2016-07-01|-49.0|-1.0|-21.04949|-0.01866 +2016-07-01|-49.0|-2.0|-20.66672|-0.01175 +2016-07-01|-49.0|-3.0|-20.30157|-0.00522 +2016-07-01|-49.0|-4.0|-19.95346|9.0E-4 +2016-07-01|-49.0|-5.0|-19.62173|0.0066 +2016-07-01|-49.0|-6.0|-19.30564|0.01185 +2016-07-01|-49.0|-7.0|-19.00433|0.01666 +2016-07-01|-49.0|-8.0|-18.7169|0.021 +2016-07-01|-49.0|-9.0|-18.44236|0.02488 +2016-07-01|-49.0|-10.0|-18.17966|0.0283 +2016-07-01|-49.0|-11.0|-17.92772|0.03126 +2016-07-01|-49.0|-12.0|-17.6854|0.03376 +2016-07-01|-49.0|-13.0|-17.45153|0.03581 +2016-07-01|-49.0|-14.0|-17.22492|0.03743 +2016-07-01|-49.0|-15.0|-17.00434|0.03862 +2016-07-01|-49.0|-16.0|-16.78857|0.0394 +2016-07-01|-49.0|-17.0|-16.57637|0.03978 +2016-07-01|-49.0|-18.0|-16.36649|0.03978 +2016-07-01|-49.0|-19.0|-16.15772|0.03941 +2016-07-01|-49.0|-20.0|-15.9488|0.03868 +2016-07-01|-49.0|-21.0|-15.73852|0.03762 +2016-07-01|-49.0|-22.0|-15.52566|0.03624 +2016-07-01|-49.0|-23.0|-15.30905|0.03455 +2016-07-01|-49.0|-24.0|-15.08749|0.03257 +2016-07-01|-49.0|-25.0|-14.85984|0.03031 +2016-07-01|-49.0|-26.0|-14.62496|0.02779 +2016-07-01|-49.0|-27.0|-14.38176|0.02503 +2016-07-01|-49.0|-28.0|-14.12916|0.02203 +2016-07-01|-49.0|-29.0|-13.86611|0.01882 +2016-07-01|-49.0|-30.0|-13.59162|0.01541 +2016-07-01|-49.0|-31.0|-13.3047|0.01181 +2016-07-01|-49.0|-32.0|-13.00445|0.00803 +2016-07-01|-49.0|-33.0|-12.68996|0.00411 +2016-07-01|-49.0|-34.0|-12.36042|4.0E-5 +2016-07-01|-49.0|-35.0|-12.01505|-0.00415 +2016-07-01|-49.0|-36.0|-11.65311|-0.00844 +2016-07-01|-49.0|-37.0|-11.27396|-0.01282 +2016-07-01|-49.0|-38.0|-10.87699|-0.01726 +2016-07-01|-49.0|-39.0|-10.46168|-0.02176 +2016-07-01|-49.0|-40.0|-10.02758|-0.02628 +2016-07-01|-49.0|-41.0|-9.57431|-0.03081 +2016-07-01|-49.0|-42.0|-9.10158|-0.03533 +2016-07-01|-49.0|-43.0|-8.60917|-0.03981 +2016-07-01|-49.0|-44.0|-8.09698|-0.04424 +2016-07-01|-49.0|-45.0|-7.56496|-0.04859 +2016-07-01|-49.0|-46.0|-7.01317|-0.05285 +2016-07-01|-49.0|-47.0|-6.44177|-0.05699 +2016-07-01|-49.0|-48.0|-5.85101|-0.061 +2016-07-01|-49.0|-49.0|-5.24124|-0.06485 +2016-07-01|-49.0|-50.0|-4.61289|-0.06853 +2016-07-01|-49.0|-51.0|-3.9665|-0.07201 +2016-07-01|-49.0|-52.0|-3.30272|-0.07529 +2016-07-01|-49.0|-53.0|-2.62225|-0.07834 +2016-07-01|-49.0|-54.0|-1.92591|-0.08115 +2016-07-01|-49.0|-55.0|-1.2146|-0.08371 +2016-07-01|-49.0|-56.0|-0.48931|-0.08602 +2016-07-01|-49.0|-57.0|0.24891|-0.08805 +2016-07-01|-49.0|-58.0|0.99892|-0.0898 +2016-07-01|-49.0|-59.0|1.75953|-0.09127 +2016-07-01|-49.0|-60.0|2.52949|-0.09246 +2016-07-01|-49.0|-61.0|3.30748|-0.09336 +2016-07-01|-49.0|-62.0|4.09214|-0.09397 +2016-07-01|-49.0|-63.0|4.88209|-0.09429 +2016-07-01|-49.0|-64.0|5.6759|-0.09434 +2016-07-01|-49.0|-65.0|6.47213|-0.09411 +2016-07-01|-49.0|-66.0|7.26933|-0.09361 +2016-07-01|-49.0|-67.0|8.06604|-0.09286 +2016-07-01|-49.0|-68.0|8.8608|-0.09186 +2016-07-01|-49.0|-69.0|9.65216|-0.09062 +2016-07-01|-49.0|-70.0|10.43871|-0.08917 +2016-07-01|-49.0|-71.0|11.21905|-0.08751 +2016-07-01|-49.0|-72.0|11.99181|-0.08565 +2016-07-01|-49.0|-73.0|12.75568|-0.08363 +2016-07-01|-49.0|-74.0|13.50937|-0.08144 +2016-07-01|-49.0|-75.0|14.25167|-0.07912 +2016-07-01|-49.0|-76.0|14.9814|-0.07667 +2016-07-01|-49.0|-77.0|15.69747|-0.07411 +2016-07-01|-49.0|-78.0|16.39884|-0.07146 +2016-07-01|-49.0|-79.0|17.08453|-0.06875 +2016-07-01|-49.0|-80.0|17.75364|-0.06597 +2016-07-01|-49.0|-81.0|18.40536|-0.06316 +2016-07-01|-49.0|-82.0|19.03892|-0.06033 +2016-07-01|-49.0|-83.0|19.65365|-0.05748 +2016-07-01|-49.0|-84.0|20.24896|-0.05464 +2016-07-01|-49.0|-85.0|20.82431|-0.05182 +2016-07-01|-49.0|-86.0|21.37926|-0.04903 +2016-07-01|-49.0|-87.0|21.91344|-0.04628 +2016-07-01|-49.0|-88.0|22.42655|-0.04359 +2016-07-01|-49.0|-89.0|22.91837|-0.04095 +2016-07-01|-49.0|-90.0|23.38874|-0.03839 +2016-07-01|-49.0|-91.0|23.8376|-0.03591 +2016-07-01|-49.0|-92.0|24.26491|-0.0335 +2016-07-01|-49.0|-93.0|24.67075|-0.03119 +2016-07-01|-49.0|-94.0|25.05523|-0.02897 +2016-07-01|-49.0|-95.0|25.41854|-0.02685 +2016-07-01|-49.0|-96.0|25.76092|-0.02482 +2016-07-01|-49.0|-97.0|26.08266|-0.02289 +2016-07-01|-49.0|-98.0|26.38413|-0.02106 +2016-07-01|-49.0|-99.0|26.66574|-0.01933 +2016-07-01|-49.0|-100.0|26.92794|-0.01769 +2016-07-01|-49.0|-101.0|27.17123|-0.01614 +2016-07-01|-49.0|-102.0|27.39617|-0.01468 +2016-07-01|-49.0|-103.0|27.60333|-0.0133 +2016-07-01|-49.0|-104.0|27.79334|-0.01199 +2016-07-01|-49.0|-105.0|27.96686|-0.01076 +2016-07-01|-49.0|-106.0|28.12458|-0.00959 +2016-07-01|-49.0|-107.0|28.26719|-0.00848 +2016-07-01|-49.0|-108.0|28.39545|-0.00742 +2016-07-01|-49.0|-109.0|28.51009|-0.0064 +2016-07-01|-49.0|-110.0|28.61189|-0.00541 +2016-07-01|-49.0|-111.0|28.70163|-0.00445 +2016-07-01|-49.0|-112.0|28.78008|-0.0035 +2016-07-01|-49.0|-113.0|28.84804|-0.00256 +2016-07-01|-49.0|-114.0|28.9063|-0.00163 +2016-07-01|-49.0|-115.0|28.95565|-6.9E-4 +2016-07-01|-49.0|-116.0|28.99686|2.7E-4 +2016-07-01|-49.0|-117.0|29.0307|0.00125 +2016-07-01|-49.0|-118.0|29.05792|0.00225 +2016-07-01|-49.0|-119.0|29.07926|0.00328 +2016-07-01|-49.0|-120.0|29.09545|0.00435 +2016-07-01|-49.0|-121.0|29.10717|0.00546 +2016-07-01|-49.0|-122.0|29.11509|0.00662 +2016-07-01|-49.0|-123.0|29.11985|0.00782 +2016-07-01|-49.0|-124.0|29.12207|0.00906 +2016-07-01|-49.0|-125.0|29.12232|0.01036 +2016-07-01|-49.0|-126.0|29.12115|0.01171 +2016-07-01|-49.0|-127.0|29.11906|0.01311 +2016-07-01|-49.0|-128.0|29.11654|0.01455 +2016-07-01|-49.0|-129.0|29.114|0.01605 +2016-07-01|-49.0|-130.0|29.11186|0.01758 +2016-07-01|-49.0|-131.0|29.11045|0.01917 +2016-07-01|-49.0|-132.0|29.11011|0.02079 +2016-07-01|-49.0|-133.0|29.11111|0.02244 +2016-07-01|-49.0|-134.0|29.11367|0.02413 +2016-07-01|-49.0|-135.0|29.11802|0.02586 +2016-07-01|-49.0|-136.0|29.1243|0.0276 +2016-07-01|-49.0|-137.0|29.13263|0.02937 +2016-07-01|-49.0|-138.0|29.14311|0.03116 +2016-07-01|-49.0|-139.0|29.1558|0.03296 +2016-07-01|-49.0|-140.0|29.17069|0.03477 +2016-07-01|-49.0|-141.0|29.1878|0.03658 +2016-07-01|-49.0|-142.0|29.20707|0.0384 +2016-07-01|-49.0|-143.0|29.22844|0.04022 +2016-07-01|-49.0|-144.0|29.25182|0.04204 +2016-07-01|-49.0|-145.0|29.27708|0.04385 +2016-07-01|-49.0|-146.0|29.30408|0.04566 +2016-07-01|-49.0|-147.0|29.33268|0.04745 +2016-07-01|-49.0|-148.0|29.36269|0.04922 +2016-07-01|-49.0|-149.0|29.39393|0.05099 +2016-07-01|-49.0|-150.0|29.42619|0.05273 +2016-07-01|-49.0|-151.0|29.45926|0.05445 +2016-07-01|-49.0|-152.0|29.49291|0.05616 +2016-07-01|-49.0|-153.0|29.52692|0.05784 +2016-07-01|-49.0|-154.0|29.56104|0.05949 +2016-07-01|-49.0|-155.0|29.59504|0.06112 +2016-07-01|-49.0|-156.0|29.62865|0.06272 +2016-07-01|-49.0|-157.0|29.66164|0.06428 +2016-07-01|-49.0|-158.0|29.69375|0.06582 +2016-07-01|-49.0|-159.0|29.72471|0.06732 +2016-07-01|-49.0|-160.0|29.75426|0.06879 +2016-07-01|-49.0|-161.0|29.78214|0.07022 +2016-07-01|-49.0|-162.0|29.80808|0.07161 +2016-07-01|-49.0|-163.0|29.83181|0.07295 +2016-07-01|-49.0|-164.0|29.85304|0.07425 +2016-07-01|-49.0|-165.0|29.87148|0.07551 +2016-07-01|-49.0|-166.0|29.88686|0.07671 +2016-07-01|-49.0|-167.0|29.89886|0.07786 +2016-07-01|-49.0|-168.0|29.90717|0.07896 +2016-07-01|-49.0|-169.0|29.91148|0.08 +2016-07-01|-49.0|-170.0|29.91145|0.08099 +2016-07-01|-49.0|-171.0|29.90673|0.08191 +2016-07-01|-49.0|-172.0|29.89697|0.08276 +2016-07-01|-49.0|-173.0|29.88179|0.08356 +2016-07-01|-49.0|-174.0|29.86079|0.08428 +2016-07-01|-49.0|-175.0|29.83358|0.08494 +2016-07-01|-49.0|-176.0|29.79973|0.08552 +2016-07-01|-49.0|-177.0|29.7588|0.08603 +2016-07-01|-49.0|-178.0|29.71033|0.08647 +2016-07-01|-49.0|-179.0|29.65385|0.08684 +2016-07-01|-50.0|0.0|-21.27637|-0.03065 +2016-07-01|-50.0|1.0|-21.7193|-0.0381 +2016-07-01|-50.0|2.0|-22.18019|-0.04579 +2016-07-01|-50.0|3.0|-22.6591|-0.05368 +2016-07-01|-50.0|4.0|-23.15593|-0.06175 +2016-07-01|-50.0|5.0|-23.67052|-0.06996 +2016-07-01|-50.0|6.0|-24.20256|-0.07825 +2016-07-01|-50.0|7.0|-24.75166|-0.08658 +2016-07-01|-50.0|8.0|-25.3173|-0.09493 +2016-07-01|-50.0|9.0|-25.8989|-0.10323 +2016-07-01|-50.0|10.0|-26.49577|-0.11145 +2016-07-01|-50.0|11.0|-27.10714|-0.11956 +2016-07-01|-50.0|12.0|-27.73216|-0.1275 +2016-07-01|-50.0|13.0|-28.36993|-0.13525 +2016-07-01|-50.0|14.0|-29.01948|-0.14277 +2016-07-01|-50.0|15.0|-29.67979|-0.15003 +2016-07-01|-50.0|16.0|-30.34982|-0.15699 +2016-07-01|-50.0|17.0|-31.02847|-0.16364 +2016-07-01|-50.0|18.0|-31.71466|-0.16994 +2016-07-01|-50.0|19.0|-32.40725|-0.17588 +2016-07-01|-50.0|20.0|-33.10513|-0.18144 +2016-07-01|-50.0|21.0|-33.80719|-0.18661 +2016-07-01|-50.0|22.0|-34.51231|-0.19137 +2016-07-01|-50.0|23.0|-35.2194|-0.19573 +2016-07-01|-50.0|24.0|-35.92739|-0.19967 +2016-07-01|-50.0|25.0|-36.63524|-0.20319 +2016-07-01|-50.0|26.0|-37.34193|-0.20629 +2016-07-01|-50.0|27.0|-38.04647|-0.20898 +2016-07-01|-50.0|28.0|-38.74792|-0.21126 +2016-07-01|-50.0|29.0|-39.44535|-0.21313 +2016-07-01|-50.0|30.0|-40.1379|-0.21461 +2016-07-01|-50.0|31.0|-40.82472|-0.21569 +2016-07-01|-50.0|32.0|-41.50501|-0.2164 +2016-07-01|-50.0|33.0|-42.17801|-0.21674 +2016-07-01|-50.0|34.0|-42.843|-0.21672 +2016-07-01|-50.0|35.0|-43.49927|-0.21635 +2016-07-01|-50.0|36.0|-44.14617|-0.21564 +2016-07-01|-50.0|37.0|-44.78309|-0.21461 +2016-07-01|-50.0|38.0|-45.40942|-0.21327 +2016-07-01|-50.0|39.0|-46.02459|-0.21163 +2016-07-01|-50.0|40.0|-46.62808|-0.20969 +2016-07-01|-50.0|41.0|-47.21937|-0.20747 +2016-07-01|-50.0|42.0|-47.79798|-0.20498 +2016-07-01|-50.0|43.0|-48.36343|-0.20223 +2016-07-01|-50.0|44.0|-48.91527|-0.19923 +2016-07-01|-50.0|45.0|-49.45309|-0.19598 +2016-07-01|-50.0|46.0|-49.97647|-0.19249 +2016-07-01|-50.0|47.0|-50.485|-0.18876 +2016-07-01|-50.0|48.0|-50.97831|-0.18482 +2016-07-01|-50.0|49.0|-51.45601|-0.18065 +2016-07-01|-50.0|50.0|-51.91775|-0.17626 +2016-07-01|-50.0|51.0|-52.36317|-0.17167 +2016-07-01|-50.0|52.0|-52.79192|-0.16686 +2016-07-01|-50.0|53.0|-53.20365|-0.16185 +2016-07-01|-50.0|54.0|-53.59802|-0.15664 +2016-07-01|-50.0|55.0|-53.97469|-0.15123 +2016-07-01|-50.0|56.0|-54.33333|-0.14562 +2016-07-01|-50.0|57.0|-54.6736|-0.13982 +2016-07-01|-50.0|58.0|-54.99515|-0.13383 +2016-07-01|-50.0|59.0|-55.29764|-0.12764 +2016-07-01|-50.0|60.0|-55.58072|-0.12127 +2016-07-01|-50.0|61.0|-55.84403|-0.11471 +2016-07-01|-50.0|62.0|-56.08719|-0.10796 +2016-07-01|-50.0|63.0|-56.30984|-0.10104 +2016-07-01|-50.0|64.0|-56.51156|-0.09393 +2016-07-01|-50.0|65.0|-56.69195|-0.08666 +2016-07-01|-50.0|66.0|-56.85059|-0.07921 +2016-07-01|-50.0|67.0|-56.98701|-0.07159 +2016-07-01|-50.0|68.0|-57.10074|-0.06382 +2016-07-01|-50.0|69.0|-57.19128|-0.0559 +2016-07-01|-50.0|70.0|-57.25811|-0.04782 +2016-07-01|-50.0|71.0|-57.30065|-0.03961 +2016-07-01|-50.0|72.0|-57.31833|-0.03127 +2016-07-01|-50.0|73.0|-57.31049|-0.02282 +2016-07-01|-50.0|74.0|-57.27649|-0.01425 +2016-07-01|-50.0|75.0|-57.2156|-0.00558 +2016-07-01|-50.0|76.0|-57.12707|0.00316 +2016-07-01|-50.0|77.0|-57.01011|0.01198 +2016-07-01|-50.0|78.0|-56.86388|0.02085 +2016-07-01|-50.0|79.0|-56.68749|0.02976 +2016-07-01|-50.0|80.0|-56.48001|0.03868 +2016-07-01|-50.0|81.0|-56.24045|0.04761 +2016-07-01|-50.0|82.0|-55.96778|0.05652 +2016-07-01|-50.0|83.0|-55.66095|0.06539 +2016-07-01|-50.0|84.0|-55.31884|0.0742 +2016-07-01|-50.0|85.0|-54.9403|0.08292 +2016-07-01|-50.0|86.0|-54.52414|0.09153 +2016-07-01|-50.0|87.0|-54.06916|0.1 +2016-07-01|-50.0|88.0|-53.57412|0.10831 +2016-07-01|-50.0|89.0|-53.03779|0.11643 +2016-07-01|-50.0|90.0|-52.45892|0.12433 +2016-07-01|-50.0|91.0|-51.83626|0.13198 +2016-07-01|-50.0|92.0|-51.16862|0.13935 +2016-07-01|-50.0|93.0|-50.45481|0.14641 +2016-07-01|-50.0|94.0|-49.69372|0.15313 +2016-07-01|-50.0|95.0|-48.88431|0.15948 +2016-07-01|-50.0|96.0|-48.02563|0.16543 +2016-07-01|-50.0|97.0|-47.11687|0.17095 +2016-07-01|-50.0|98.0|-46.15735|0.17601 +2016-07-01|-50.0|99.0|-45.14656|0.18059 +2016-07-01|-50.0|100.0|-44.08421|0.18465 +2016-07-01|-50.0|101.0|-42.97023|0.18818 +2016-07-01|-50.0|102.0|-41.80479|0.19117 +2016-07-01|-50.0|103.0|-40.58839|0.19358 +2016-07-01|-50.0|104.0|-39.3218|0.19542 +2016-07-01|-50.0|105.0|-38.00614|0.19668 +2016-07-01|-50.0|106.0|-36.64291|0.19735 +2016-07-01|-50.0|107.0|-35.23394|0.19745 +2016-07-01|-50.0|108.0|-33.78147|0.19698 +2016-07-01|-50.0|109.0|-32.2881|0.19596 +2016-07-01|-50.0|110.0|-30.75684|0.19442 +2016-07-01|-50.0|111.0|-29.19101|0.19238 +2016-07-01|-50.0|112.0|-27.59432|0.18988 +2016-07-01|-50.0|113.0|-25.97074|0.18697 +2016-07-01|-50.0|114.0|-24.32453|0.18368 +2016-07-01|-50.0|115.0|-22.66015|0.18006 +2016-07-01|-50.0|116.0|-20.9822|0.17617 +2016-07-01|-50.0|117.0|-19.29542|0.17206 +2016-07-01|-50.0|118.0|-17.60455|0.16777 +2016-07-01|-50.0|119.0|-15.9143|0.16335 +2016-07-01|-50.0|120.0|-14.22932|0.15887 +2016-07-01|-50.0|121.0|-12.55408|0.15435 +2016-07-01|-50.0|122.0|-10.89286|0.14984 +2016-07-01|-50.0|123.0|-9.2497|0.14538 +2016-07-01|-50.0|124.0|-7.62835|0.141 +2016-07-01|-50.0|125.0|-6.03225|0.13672 +2016-07-01|-50.0|126.0|-4.46451|0.13258 +2016-07-01|-50.0|127.0|-2.92787|0.12859 +2016-07-01|-50.0|128.0|-1.42476|0.12477 +2016-07-01|-50.0|129.0|0.04277|0.12112 +2016-07-01|-50.0|130.0|1.47299|0.11766 +2016-07-01|-50.0|131.0|2.86449|0.11438 +2016-07-01|-50.0|132.0|4.21618|0.1113 +2016-07-01|-50.0|133.0|5.52724|0.10841 +2016-07-01|-50.0|134.0|6.79711|0.10571 +2016-07-01|-50.0|135.0|8.02546|0.10321 +2016-07-01|-50.0|136.0|9.21219|0.10089 +2016-07-01|-50.0|137.0|10.35737|0.09875 +2016-07-01|-50.0|138.0|11.46123|0.09679 +2016-07-01|-50.0|139.0|12.52415|0.09501 +2016-07-01|-50.0|140.0|13.54662|0.09339 +2016-07-01|-50.0|141.0|14.52924|0.09194 +2016-07-01|-50.0|142.0|15.47269|0.09065 +2016-07-01|-50.0|143.0|16.37772|0.08951 +2016-07-01|-50.0|144.0|17.24511|0.08852 +2016-07-01|-50.0|145.0|18.07572|0.08766 +2016-07-01|-50.0|146.0|18.87041|0.08695 +2016-07-01|-50.0|147.0|19.63008|0.08636 +2016-07-01|-50.0|148.0|20.35563|0.08589 +2016-07-01|-50.0|149.0|21.04799|0.08553 +2016-07-01|-50.0|150.0|21.70805|0.08529 +2016-07-01|-50.0|151.0|22.33675|0.08514 +2016-07-01|-50.0|152.0|22.935|0.08509 +2016-07-01|-50.0|153.0|23.50368|0.08512 +2016-07-01|-50.0|154.0|24.04371|0.08523 +2016-07-01|-50.0|155.0|24.55595|0.08541 +2016-07-01|-50.0|156.0|25.04129|0.08565 +2016-07-01|-50.0|157.0|25.50057|0.08594 +2016-07-01|-50.0|158.0|25.93465|0.08627 +2016-07-01|-50.0|159.0|26.34436|0.08665 +2016-07-01|-50.0|160.0|26.73051|0.08705 +2016-07-01|-50.0|161.0|27.09391|0.08748 +2016-07-01|-50.0|162.0|27.43537|0.08791 +2016-07-01|-50.0|163.0|27.75566|0.08835 +2016-07-01|-50.0|164.0|28.05556|0.0888 +2016-07-01|-50.0|165.0|28.33583|0.08923 +2016-07-01|-50.0|166.0|28.59722|0.08964 +2016-07-01|-50.0|167.0|28.84047|0.09004 +2016-07-01|-50.0|168.0|29.06631|0.0904 +2016-07-01|-50.0|169.0|29.27546|0.09074 +2016-07-01|-50.0|170.0|29.46861|0.09103 +2016-07-01|-50.0|171.0|29.64648|0.09128 +2016-07-01|-50.0|172.0|29.80974|0.09148 +2016-07-01|-50.0|173.0|29.95905|0.09163 +2016-07-01|-50.0|174.0|30.09508|0.09172 +2016-07-01|-50.0|175.0|30.21846|0.09175 +2016-07-01|-50.0|176.0|30.32983|0.09171 +2016-07-01|-50.0|177.0|30.42979|0.09162 +2016-07-01|-50.0|178.0|30.51894|0.09145 +2016-07-01|-50.0|179.0|30.59785|0.09122 +2016-07-01|-50.0|-1.0|-20.85127|-0.02349 +2016-07-01|-50.0|-2.0|-20.44373|-0.01664 +2016-07-01|-50.0|-3.0|-20.0534|-0.01012 +2016-07-01|-50.0|-4.0|-19.67981|-0.00397 +2016-07-01|-50.0|-5.0|-19.32239|0.0018 +2016-07-01|-50.0|-6.0|-18.98048|0.00717 +2016-07-01|-50.0|-7.0|-18.65336|0.01212 +2016-07-01|-50.0|-8.0|-18.34019|0.01665 +2016-07-01|-50.0|-9.0|-18.04009|0.02075 +2016-07-01|-50.0|-10.0|-17.75211|0.02441 +2016-07-01|-50.0|-11.0|-17.47522|0.02763 +2016-07-01|-50.0|-12.0|-17.20839|0.03042 +2016-07-01|-50.0|-13.0|-16.9505|0.03277 +2016-07-01|-50.0|-14.0|-16.70041|0.0347 +2016-07-01|-50.0|-15.0|-16.45698|0.03621 +2016-07-01|-50.0|-16.0|-16.21901|0.03732 +2016-07-01|-50.0|-17.0|-15.98531|0.03802 +2016-07-01|-50.0|-18.0|-15.75467|0.03834 +2016-07-01|-50.0|-19.0|-15.52587|0.03829 +2016-07-01|-50.0|-20.0|-15.29771|0.03788 +2016-07-01|-50.0|-21.0|-15.06898|0.03712 +2016-07-01|-50.0|-22.0|-14.83848|0.03604 +2016-07-01|-50.0|-23.0|-14.60501|0.03463 +2016-07-01|-50.0|-24.0|-14.36742|0.03292 +2016-07-01|-50.0|-25.0|-14.12456|0.03093 +2016-07-01|-50.0|-26.0|-13.87528|0.02866 +2016-07-01|-50.0|-27.0|-13.6185|0.02613 +2016-07-01|-50.0|-28.0|-13.35314|0.02336 +2016-07-01|-50.0|-29.0|-13.07815|0.02036 +2016-07-01|-50.0|-30.0|-12.79255|0.01715 +2016-07-01|-50.0|-31.0|-12.49536|0.01375 +2016-07-01|-50.0|-32.0|-12.18566|0.01016 +2016-07-01|-50.0|-33.0|-11.86258|0.00641 +2016-07-01|-50.0|-34.0|-11.5253|0.00252 +2016-07-01|-50.0|-35.0|-11.17305|-0.0015 +2016-07-01|-50.0|-36.0|-10.80513|-0.00563 +2016-07-01|-50.0|-37.0|-10.42087|-0.00985 +2016-07-01|-50.0|-38.0|-10.01971|-0.01414 +2016-07-01|-50.0|-39.0|-9.60113|-0.01848 +2016-07-01|-50.0|-40.0|-9.16469|-0.02286 +2016-07-01|-50.0|-41.0|-8.71004|-0.02724 +2016-07-01|-50.0|-42.0|-8.23688|-0.03162 +2016-07-01|-50.0|-43.0|-7.74501|-0.03597 +2016-07-01|-50.0|-44.0|-7.23433|-0.04027 +2016-07-01|-50.0|-45.0|-6.70481|-0.0445 +2016-07-01|-50.0|-46.0|-6.15649|-0.04863 +2016-07-01|-50.0|-47.0|-5.58954|-0.05266 +2016-07-01|-50.0|-48.0|-5.0042|-0.05656 +2016-07-01|-50.0|-49.0|-4.40079|-0.06031 +2016-07-01|-50.0|-50.0|-3.77974|-0.06389 +2016-07-01|-50.0|-51.0|-3.14157|-0.06729 +2016-07-01|-50.0|-52.0|-2.48686|-0.07049 +2016-07-01|-50.0|-53.0|-1.81632|-0.07348 +2016-07-01|-50.0|-54.0|-1.13071|-0.07625 +2016-07-01|-50.0|-55.0|-0.43087|-0.07877 +2016-07-01|-50.0|-56.0|0.28225|-0.08105 +2016-07-01|-50.0|-57.0|1.00767|-0.08307 +2016-07-01|-50.0|-58.0|1.74432|-0.08483 +2016-07-01|-50.0|-59.0|2.49108|-0.08632 +2016-07-01|-50.0|-60.0|3.24676|-0.08754 +2016-07-01|-50.0|-61.0|4.01013|-0.08848 +2016-07-01|-50.0|-62.0|4.77992|-0.08915 +2016-07-01|-50.0|-63.0|5.55483|-0.08956 +2016-07-01|-50.0|-64.0|6.33352|-0.08969 +2016-07-01|-50.0|-65.0|7.11464|-0.08956 +2016-07-01|-50.0|-66.0|7.89683|-0.08918 +2016-07-01|-50.0|-67.0|8.6787|-0.08855 +2016-07-01|-50.0|-68.0|9.45891|-0.08769 +2016-07-01|-50.0|-69.0|10.23609|-0.0866 +2016-07-01|-50.0|-70.0|11.00889|-0.0853 +2016-07-01|-50.0|-71.0|11.77601|-0.08381 +2016-07-01|-50.0|-72.0|12.53616|-0.08212 +2016-07-01|-50.0|-73.0|13.28809|-0.08027 +2016-07-01|-50.0|-74.0|14.03058|-0.07826 +2016-07-01|-50.0|-75.0|14.76248|-0.07612 +2016-07-01|-50.0|-76.0|15.48268|-0.07385 +2016-07-01|-50.0|-77.0|16.19012|-0.07147 +2016-07-01|-50.0|-78.0|16.8838|-0.069 +2016-07-01|-50.0|-79.0|17.5628|-0.06646 +2016-07-01|-50.0|-80.0|18.22624|-0.06386 +2016-07-01|-50.0|-81.0|18.87332|-0.06122 +2016-07-01|-50.0|-82.0|19.5033|-0.05855 +2016-07-01|-50.0|-83.0|20.11552|-0.05586 +2016-07-01|-50.0|-84.0|20.70937|-0.05317 +2016-07-01|-50.0|-85.0|21.28434|-0.05049 +2016-07-01|-50.0|-86.0|21.83997|-0.04783 +2016-07-01|-50.0|-87.0|22.37587|-0.04521 +2016-07-01|-50.0|-88.0|22.89172|-0.04263 +2016-07-01|-50.0|-89.0|23.38727|-0.0401 +2016-07-01|-50.0|-90.0|23.86235|-0.03764 +2016-07-01|-50.0|-91.0|24.31683|-0.03524 +2016-07-01|-50.0|-92.0|24.75067|-0.03291 +2016-07-01|-50.0|-93.0|25.16388|-0.03066 +2016-07-01|-50.0|-94.0|25.55653|-0.0285 +2016-07-01|-50.0|-95.0|25.92876|-0.02642 +2016-07-01|-50.0|-96.0|26.28075|-0.02443 +2016-07-01|-50.0|-97.0|26.61275|-0.02253 +2016-07-01|-50.0|-98.0|26.92506|-0.02071 +2016-07-01|-50.0|-99.0|27.21802|-0.01899 +2016-07-01|-50.0|-100.0|27.49204|-0.01735 +2016-07-01|-50.0|-101.0|27.74755|-0.01579 +2016-07-01|-50.0|-102.0|27.98503|-0.01432 +2016-07-01|-50.0|-103.0|28.20502|-0.01292 +2016-07-01|-50.0|-104.0|28.40806|-0.01159 +2016-07-01|-50.0|-105.0|28.59476|-0.01033 +2016-07-01|-50.0|-106.0|28.76574|-0.00912 +2016-07-01|-50.0|-107.0|28.92165|-0.00797 +2016-07-01|-50.0|-108.0|29.06317|-0.00687 +2016-07-01|-50.0|-109.0|29.19099|-0.00581 +2016-07-01|-50.0|-110.0|29.30583|-0.00477 +2016-07-01|-50.0|-111.0|29.40842|-0.00377 +2016-07-01|-50.0|-112.0|29.4995|-0.00277 +2016-07-01|-50.0|-113.0|29.57982|-0.00179 +2016-07-01|-50.0|-114.0|29.65011|-8.1E-4 +2016-07-01|-50.0|-115.0|29.71115|1.7E-4 +2016-07-01|-50.0|-116.0|29.76367|0.00117 +2016-07-01|-50.0|-117.0|29.80842|0.00218 +2016-07-01|-50.0|-118.0|29.84612|0.00322 +2016-07-01|-50.0|-119.0|29.8775|0.00428 +2016-07-01|-50.0|-120.0|29.90327|0.00538 +2016-07-01|-50.0|-121.0|29.9241|0.00652 +2016-07-01|-50.0|-122.0|29.94066|0.00769 +2016-07-01|-50.0|-123.0|29.95359|0.00891 +2016-07-01|-50.0|-124.0|29.96351|0.01018 +2016-07-01|-50.0|-125.0|29.97099|0.01149 +2016-07-01|-50.0|-126.0|29.9766|0.01286 +2016-07-01|-50.0|-127.0|29.98085|0.01426 +2016-07-01|-50.0|-128.0|29.98424|0.01572 +2016-07-01|-50.0|-129.0|29.9872|0.01722 +2016-07-01|-50.0|-130.0|29.99017|0.01877 +2016-07-01|-50.0|-131.0|29.99353|0.02036 +2016-07-01|-50.0|-132.0|29.9976|0.02199 +2016-07-01|-50.0|-133.0|30.0027|0.02366 +2016-07-01|-50.0|-134.0|30.00908|0.02536 +2016-07-01|-50.0|-135.0|30.01699|0.0271 +2016-07-01|-50.0|-136.0|30.0266|0.02886 +2016-07-01|-50.0|-137.0|30.03807|0.03064 +2016-07-01|-50.0|-138.0|30.05152|0.03245 +2016-07-01|-50.0|-139.0|30.06703|0.03427 +2016-07-01|-50.0|-140.0|30.08464|0.03611 +2016-07-01|-50.0|-141.0|30.10438|0.03795 +2016-07-01|-50.0|-142.0|30.12623|0.0398 +2016-07-01|-50.0|-143.0|30.15015|0.04166 +2016-07-01|-50.0|-144.0|30.17607|0.04351 +2016-07-01|-50.0|-145.0|30.20389|0.04537 +2016-07-01|-50.0|-146.0|30.2335|0.04721 +2016-07-01|-50.0|-147.0|30.26476|0.04905 +2016-07-01|-50.0|-148.0|30.29752|0.05088 +2016-07-01|-50.0|-149.0|30.3316|0.05269 +2016-07-01|-50.0|-150.0|30.3668|0.05449 +2016-07-01|-50.0|-151.0|30.40294|0.05627 +2016-07-01|-50.0|-152.0|30.43979|0.05804 +2016-07-01|-50.0|-153.0|30.47714|0.05978 +2016-07-01|-50.0|-154.0|30.51474|0.06149 +2016-07-01|-50.0|-155.0|30.55237|0.06318 +2016-07-01|-50.0|-156.0|30.58977|0.06484 +2016-07-01|-50.0|-157.0|30.62668|0.06648 +2016-07-01|-50.0|-158.0|30.66286|0.06808 +2016-07-01|-50.0|-159.0|30.69804|0.06965 +2016-07-01|-50.0|-160.0|30.73195|0.07118 +2016-07-01|-50.0|-161.0|30.76432|0.07267 +2016-07-01|-50.0|-162.0|30.79487|0.07413 +2016-07-01|-50.0|-163.0|30.82333|0.07554 +2016-07-01|-50.0|-164.0|30.84938|0.07691 +2016-07-01|-50.0|-165.0|30.87276|0.07823 +2016-07-01|-50.0|-166.0|30.89314|0.0795 +2016-07-01|-50.0|-167.0|30.91021|0.08071 +2016-07-01|-50.0|-168.0|30.92366|0.08188 +2016-07-01|-50.0|-169.0|30.93315|0.08299 +2016-07-01|-50.0|-170.0|30.93834|0.08404 +2016-07-01|-50.0|-171.0|30.93886|0.08503 +2016-07-01|-50.0|-172.0|30.93434|0.08595 +2016-07-01|-50.0|-173.0|30.92441|0.08681 +2016-07-01|-50.0|-174.0|30.90865|0.08761 +2016-07-01|-50.0|-175.0|30.88664|0.08833 +2016-07-01|-50.0|-176.0|30.85796|0.08899 +2016-07-01|-50.0|-177.0|30.82214|0.08958 +2016-07-01|-50.0|-178.0|30.77872|0.09009 +2016-07-01|-50.0|-179.0|30.72721|0.09054 +2016-07-01|-51.0|0.0|-21.10856|-0.03514 +2016-07-01|-51.0|1.0|-21.57368|-0.04241 +2016-07-01|-51.0|2.0|-22.05607|-0.04989 +2016-07-01|-51.0|3.0|-22.5557|-0.05755 +2016-07-01|-51.0|4.0|-23.07247|-0.06535 +2016-07-01|-51.0|5.0|-23.60614|-0.07325 +2016-07-01|-51.0|6.0|-24.15639|-0.08122 +2016-07-01|-51.0|7.0|-24.72281|-0.08922 +2016-07-01|-51.0|8.0|-25.30489|-0.0972 +2016-07-01|-51.0|9.0|-25.90204|-0.10514 +2016-07-01|-51.0|10.0|-26.51359|-0.113 +2016-07-01|-51.0|11.0|-27.13878|-0.12073 +2016-07-01|-51.0|12.0|-27.77682|-0.1283 +2016-07-01|-51.0|13.0|-28.42684|-0.13569 +2016-07-01|-51.0|14.0|-29.08791|-0.14285 +2016-07-01|-51.0|15.0|-29.75908|-0.14977 +2016-07-01|-51.0|16.0|-30.43935|-0.15641 +2016-07-01|-51.0|17.0|-31.12772|-0.16275 +2016-07-01|-51.0|18.0|-31.82313|-0.16878 +2016-07-01|-51.0|19.0|-32.52456|-0.17447 +2016-07-01|-51.0|20.0|-33.23094|-0.1798 +2016-07-01|-51.0|21.0|-33.94124|-0.18477 +2016-07-01|-51.0|22.0|-34.65442|-0.18937 +2016-07-01|-51.0|23.0|-35.36945|-0.19359 +2016-07-01|-51.0|24.0|-36.08533|-0.19742 +2016-07-01|-51.0|25.0|-36.80108|-0.20086 +2016-07-01|-51.0|26.0|-37.51574|-0.20391 +2016-07-01|-51.0|27.0|-38.2284|-0.20657 +2016-07-01|-51.0|28.0|-38.93816|-0.20886 +2016-07-01|-51.0|29.0|-39.64416|-0.21076 +2016-07-01|-51.0|30.0|-40.34556|-0.21229 +2016-07-01|-51.0|31.0|-41.04159|-0.21345 +2016-07-01|-51.0|32.0|-41.73148|-0.21426 +2016-07-01|-51.0|33.0|-42.4145|-0.21472 +2016-07-01|-51.0|34.0|-43.08997|-0.21484 +2016-07-01|-51.0|35.0|-43.75724|-0.21463 +2016-07-01|-51.0|36.0|-44.41566|-0.2141 +2016-07-01|-51.0|37.0|-45.06466|-0.21327 +2016-07-01|-51.0|38.0|-45.70366|-0.21213 +2016-07-01|-51.0|39.0|-46.33212|-0.21071 +2016-07-01|-51.0|40.0|-46.94954|-0.209 +2016-07-01|-51.0|41.0|-47.55542|-0.20703 +2016-07-01|-51.0|42.0|-48.14929|-0.20479 +2016-07-01|-51.0|43.0|-48.73071|-0.20231 +2016-07-01|-51.0|44.0|-49.29925|-0.19957 +2016-07-01|-51.0|45.0|-49.8545|-0.1966 +2016-07-01|-51.0|46.0|-50.39607|-0.19341 +2016-07-01|-51.0|47.0|-50.92357|-0.18998 +2016-07-01|-51.0|48.0|-51.43665|-0.18634 +2016-07-01|-51.0|49.0|-51.93494|-0.18249 +2016-07-01|-51.0|50.0|-52.41809|-0.17842 +2016-07-01|-51.0|51.0|-52.88576|-0.17416 +2016-07-01|-51.0|52.0|-53.33764|-0.16969 +2016-07-01|-51.0|53.0|-53.77337|-0.16503 +2016-07-01|-51.0|54.0|-54.19266|-0.16018 +2016-07-01|-51.0|55.0|-54.59516|-0.15513 +2016-07-01|-51.0|56.0|-54.98057|-0.14989 +2016-07-01|-51.0|57.0|-55.34857|-0.14448 +2016-07-01|-51.0|58.0|-55.69882|-0.13887 +2016-07-01|-51.0|59.0|-56.03101|-0.13309 +2016-07-01|-51.0|60.0|-56.3448|-0.12712 +2016-07-01|-51.0|61.0|-56.63985|-0.12098 +2016-07-01|-51.0|62.0|-56.91581|-0.11467 +2016-07-01|-51.0|63.0|-57.17233|-0.10819 +2016-07-01|-51.0|64.0|-57.40902|-0.10153 +2016-07-01|-51.0|65.0|-57.6255|-0.09471 +2016-07-01|-51.0|66.0|-57.82136|-0.08773 +2016-07-01|-51.0|67.0|-57.99616|-0.08059 +2016-07-01|-51.0|68.0|-58.14947|-0.0733 +2016-07-01|-51.0|69.0|-58.28079|-0.06587 +2016-07-01|-51.0|70.0|-58.38962|-0.05829 +2016-07-01|-51.0|71.0|-58.47543|-0.05057 +2016-07-01|-51.0|72.0|-58.53764|-0.04273 +2016-07-01|-51.0|73.0|-58.57565|-0.03477 +2016-07-01|-51.0|74.0|-58.5888|-0.0267 +2016-07-01|-51.0|75.0|-58.57641|-0.01853 +2016-07-01|-51.0|76.0|-58.53774|-0.01027 +2016-07-01|-51.0|77.0|-58.47202|-0.00193 +2016-07-01|-51.0|78.0|-58.37841|0.00648 +2016-07-01|-51.0|79.0|-58.25603|0.01494 +2016-07-01|-51.0|80.0|-58.10395|0.02345 +2016-07-01|-51.0|81.0|-57.92119|0.03198 +2016-07-01|-51.0|82.0|-57.7067|0.04052 +2016-07-01|-51.0|83.0|-57.45938|0.04905 +2016-07-01|-51.0|84.0|-57.17808|0.05756 +2016-07-01|-51.0|85.0|-56.86161|0.06603 +2016-07-01|-51.0|86.0|-56.50869|0.07444 +2016-07-01|-51.0|87.0|-56.11804|0.08277 +2016-07-01|-51.0|88.0|-55.68828|0.09101 +2016-07-01|-51.0|89.0|-55.21805|0.09912 +2016-07-01|-51.0|90.0|-54.7059|0.10708 +2016-07-01|-51.0|91.0|-54.15038|0.11488 +2016-07-01|-51.0|92.0|-53.55004|0.12249 +2016-07-01|-51.0|93.0|-52.9034|0.12989 +2016-07-01|-51.0|94.0|-52.20899|0.13705 +2016-07-01|-51.0|95.0|-51.46538|0.14395 +2016-07-01|-51.0|96.0|-50.67118|0.15056 +2016-07-01|-51.0|97.0|-49.82505|0.15685 +2016-07-01|-51.0|98.0|-48.92577|0.16281 +2016-07-01|-51.0|99.0|-47.9722|0.16839 +2016-07-01|-51.0|100.0|-46.96337|0.17359 +2016-07-01|-51.0|101.0|-45.89848|0.17838 +2016-07-01|-51.0|102.0|-44.77695|0.18272 +2016-07-01|-51.0|103.0|-43.59844|0.18661 +2016-07-01|-51.0|104.0|-42.3629|0.19002 +2016-07-01|-51.0|105.0|-41.07062|0.19293 +2016-07-01|-51.0|106.0|-39.72224|0.19533 +2016-07-01|-51.0|107.0|-38.31878|0.19721 +2016-07-01|-51.0|108.0|-36.86174|0.19857 +2016-07-01|-51.0|109.0|-35.35302|0.19939 +2016-07-01|-51.0|110.0|-33.79504|0.19969 +2016-07-01|-51.0|111.0|-32.19068|0.19947 +2016-07-01|-51.0|112.0|-30.54331|0.19874 +2016-07-01|-51.0|113.0|-28.85678|0.19752 +2016-07-01|-51.0|114.0|-27.13539|0.19584 +2016-07-01|-51.0|115.0|-25.38384|0.19373 +2016-07-01|-51.0|116.0|-23.60719|0.19122 +2016-07-01|-51.0|117.0|-21.81078|0.18834 +2016-07-01|-51.0|118.0|-20.0002|0.18514 +2016-07-01|-51.0|119.0|-18.18116|0.18166 +2016-07-01|-51.0|120.0|-16.35941|0.17796 +2016-07-01|-51.0|121.0|-14.54069|0.17406 +2016-07-01|-51.0|122.0|-12.73059|0.17002 +2016-07-01|-51.0|123.0|-10.93451|0.16588 +2016-07-01|-51.0|124.0|-9.15759|0.16169 +2016-07-01|-51.0|125.0|-7.4046|0.15748 +2016-07-01|-51.0|126.0|-5.67994|0.15328 +2016-07-01|-51.0|127.0|-3.98757|0.14913 +2016-07-01|-51.0|128.0|-2.33103|0.14505 +2016-07-01|-51.0|129.0|-0.71336|0.14108 +2016-07-01|-51.0|130.0|0.86284|0.13722 +2016-07-01|-51.0|131.0|2.39543|0.13351 +2016-07-01|-51.0|132.0|3.88271|0.12994 +2016-07-01|-51.0|133.0|5.32338|0.12653 +2016-07-01|-51.0|134.0|6.71653|0.12329 +2016-07-01|-51.0|135.0|8.06157|0.12023 +2016-07-01|-51.0|136.0|9.35826|0.11735 +2016-07-01|-51.0|137.0|10.60661|0.11465 +2016-07-01|-51.0|138.0|11.80686|0.11213 +2016-07-01|-51.0|139.0|12.95949|0.10979 +2016-07-01|-51.0|140.0|14.06513|0.10763 +2016-07-01|-51.0|141.0|15.12457|0.10565 +2016-07-01|-51.0|142.0|16.13869|0.10385 +2016-07-01|-51.0|143.0|17.1085|0.10221 +2016-07-01|-51.0|144.0|18.03506|0.10074 +2016-07-01|-51.0|145.0|18.9195|0.09942 +2016-07-01|-51.0|146.0|19.76298|0.09826 +2016-07-01|-51.0|147.0|20.56668|0.09725 +2016-07-01|-51.0|148.0|21.33181|0.09638 +2016-07-01|-51.0|149.0|22.05957|0.09564 +2016-07-01|-51.0|150.0|22.75116|0.09502 +2016-07-01|-51.0|151.0|23.40778|0.09453 +2016-07-01|-51.0|152.0|24.03059|0.09414 +2016-07-01|-51.0|153.0|24.62077|0.09385 +2016-07-01|-51.0|154.0|25.17943|0.09366 +2016-07-01|-51.0|155.0|25.70771|0.09355 +2016-07-01|-51.0|156.0|26.20669|0.09351 +2016-07-01|-51.0|157.0|26.67744|0.09354 +2016-07-01|-51.0|158.0|27.12099|0.09363 +2016-07-01|-51.0|159.0|27.53836|0.09376 +2016-07-01|-51.0|160.0|27.93054|0.09394 +2016-07-01|-51.0|161.0|28.2985|0.09415 +2016-07-01|-51.0|162.0|28.64318|0.09438 +2016-07-01|-51.0|163.0|28.96551|0.09462 +2016-07-01|-51.0|164.0|29.26637|0.09488 +2016-07-01|-51.0|165.0|29.54665|0.09513 +2016-07-01|-51.0|166.0|29.8072|0.09537 +2016-07-01|-51.0|167.0|30.04887|0.0956 +2016-07-01|-51.0|168.0|30.27246|0.09581 +2016-07-01|-51.0|169.0|30.47877|0.09599 +2016-07-01|-51.0|170.0|30.66859|0.09614 +2016-07-01|-51.0|171.0|30.84266|0.09625 +2016-07-01|-51.0|172.0|31.00174|0.09632 +2016-07-01|-51.0|173.0|31.14653|0.09634 +2016-07-01|-51.0|174.0|31.27775|0.0963 +2016-07-01|-51.0|175.0|31.39607|0.09622 +2016-07-01|-51.0|176.0|31.50216|0.09607 +2016-07-01|-51.0|177.0|31.59666|0.09586 +2016-07-01|-51.0|178.0|31.68019|0.09559 +2016-07-01|-51.0|179.0|31.75336|0.09525 +2016-07-01|-51.0|-1.0|-20.66063|-0.02811 +2016-07-01|-51.0|-2.0|-20.2297|-0.02135 +2016-07-01|-51.0|-3.0|-19.81549|-0.01489 +2016-07-01|-51.0|-4.0|-19.41761|-0.00876 +2016-07-01|-51.0|-5.0|-19.0356|-0.00297 +2016-07-01|-51.0|-6.0|-18.66887|0.00246 +2016-07-01|-51.0|-7.0|-18.31679|0.0075 +2016-07-01|-51.0|-8.0|-17.97862|0.01216 +2016-07-01|-51.0|-9.0|-17.65356|0.01641 +2016-07-01|-51.0|-10.0|-17.34075|0.02026 +2016-07-01|-51.0|-11.0|-17.03925|0.02369 +2016-07-01|-51.0|-12.0|-16.74809|0.02671 +2016-07-01|-51.0|-13.0|-16.46623|0.02932 +2016-07-01|-51.0|-14.0|-16.19262|0.03151 +2016-07-01|-51.0|-15.0|-15.92614|0.0333 +2016-07-01|-51.0|-16.0|-15.66568|0.03469 +2016-07-01|-51.0|-17.0|-15.41007|0.03569 +2016-07-01|-51.0|-18.0|-15.15817|0.03631 +2016-07-01|-51.0|-19.0|-14.90878|0.03655 +2016-07-01|-51.0|-20.0|-14.66074|0.03644 +2016-07-01|-51.0|-21.0|-14.41286|0.03597 +2016-07-01|-51.0|-22.0|-14.16397|0.03517 +2016-07-01|-51.0|-23.0|-13.9129|0.03404 +2016-07-01|-51.0|-24.0|-13.65849|0.03261 +2016-07-01|-51.0|-25.0|-13.39962|0.03088 +2016-07-01|-51.0|-26.0|-13.13515|0.02886 +2016-07-01|-51.0|-27.0|-12.86402|0.02658 +2016-07-01|-51.0|-28.0|-12.58515|0.02405 +2016-07-01|-51.0|-29.0|-12.29751|0.02128 +2016-07-01|-51.0|-30.0|-12.00011|0.0183 +2016-07-01|-51.0|-31.0|-11.69201|0.01511 +2016-07-01|-51.0|-32.0|-11.37228|0.01173 +2016-07-01|-51.0|-33.0|-11.04008|0.00819 +2016-07-01|-51.0|-34.0|-10.69458|0.00449 +2016-07-01|-51.0|-35.0|-10.33504|6.6E-4 +2016-07-01|-51.0|-36.0|-9.96076|-0.00328 +2016-07-01|-51.0|-37.0|-9.57111|-0.00732 +2016-07-01|-51.0|-38.0|-9.16551|-0.01143 +2016-07-01|-51.0|-39.0|-8.74347|-0.01561 +2016-07-01|-51.0|-40.0|-8.30456|-0.01981 +2016-07-01|-51.0|-41.0|-7.84842|-0.02404 +2016-07-01|-51.0|-42.0|-7.37479|-0.02826 +2016-07-01|-51.0|-43.0|-6.88346|-0.03245 +2016-07-01|-51.0|-44.0|-6.37433|-0.0366 +2016-07-01|-51.0|-45.0|-5.84736|-0.04069 +2016-07-01|-51.0|-46.0|-5.30261|-0.04469 +2016-07-01|-51.0|-47.0|-4.74022|-0.04859 +2016-07-01|-51.0|-48.0|-4.16042|-0.05237 +2016-07-01|-51.0|-49.0|-3.56353|-0.05601 +2016-07-01|-51.0|-50.0|-2.94993|-0.05949 +2016-07-01|-51.0|-51.0|-2.32011|-0.0628 +2016-07-01|-51.0|-52.0|-1.67465|-0.06593 +2016-07-01|-51.0|-53.0|-1.01418|-0.06885 +2016-07-01|-51.0|-54.0|-0.33943|-0.07156 +2016-07-01|-51.0|-55.0|0.34881|-0.07404 +2016-07-01|-51.0|-56.0|1.04965|-0.07629 +2016-07-01|-51.0|-57.0|1.76218|-0.0783 +2016-07-01|-51.0|-58.0|2.48538|-0.08005 +2016-07-01|-51.0|-59.0|3.21821|-0.08156 +2016-07-01|-51.0|-60.0|3.95955|-0.0828 +2016-07-01|-51.0|-61.0|4.70827|-0.08379 +2016-07-01|-51.0|-62.0|5.46317|-0.08452 +2016-07-01|-51.0|-63.0|6.22303|-0.085 +2016-07-01|-51.0|-64.0|6.98661|-0.08522 +2016-07-01|-51.0|-65.0|7.75263|-0.08519 +2016-07-01|-51.0|-66.0|8.51983|-0.08492 +2016-07-01|-51.0|-67.0|9.28691|-0.08441 +2016-07-01|-51.0|-68.0|10.0526|-0.08368 +2016-07-01|-51.0|-69.0|10.81563|-0.08274 +2016-07-01|-51.0|-70.0|11.57473|-0.08159 +2016-07-01|-51.0|-71.0|12.32866|-0.08025 +2016-07-01|-51.0|-72.0|13.07623|-0.07873 +2016-07-01|-51.0|-73.0|13.81624|-0.07705 +2016-07-01|-51.0|-74.0|14.54755|-0.07521 +2016-07-01|-51.0|-75.0|15.26907|-0.07324 +2016-07-01|-51.0|-76.0|15.97973|-0.07115 +2016-07-01|-51.0|-77.0|16.67854|-0.06895 +2016-07-01|-51.0|-78.0|17.36453|-0.06666 +2016-07-01|-51.0|-79.0|18.03681|-0.06429 +2016-07-01|-51.0|-80.0|18.69454|-0.06186 +2016-07-01|-51.0|-81.0|19.33694|-0.05938 +2016-07-01|-51.0|-82.0|19.96329|-0.05687 +2016-07-01|-51.0|-83.0|20.57295|-0.05433 +2016-07-01|-51.0|-84.0|21.16531|-0.05179 +2016-07-01|-51.0|-85.0|21.73984|-0.04925 +2016-07-01|-51.0|-86.0|22.2961|-0.04673 +2016-07-01|-51.0|-87.0|22.83367|-0.04423 +2016-07-01|-51.0|-88.0|23.35223|-0.04176 +2016-07-01|-51.0|-89.0|23.85149|-0.03934 +2016-07-01|-51.0|-90.0|24.33127|-0.03696 +2016-07-01|-51.0|-91.0|24.79139|-0.03465 +2016-07-01|-51.0|-92.0|25.23179|-0.0324 +2016-07-01|-51.0|-93.0|25.65243|-0.03022 +2016-07-01|-51.0|-94.0|26.05333|-0.02811 +2016-07-01|-51.0|-95.0|26.4346|-0.02607 +2016-07-01|-51.0|-96.0|26.79636|-0.02412 +2016-07-01|-51.0|-97.0|27.13881|-0.02224 +2016-07-01|-51.0|-98.0|27.46218|-0.02045 +2016-07-01|-51.0|-99.0|27.76679|-0.01873 +2016-07-01|-51.0|-100.0|28.05295|-0.01709 +2016-07-01|-51.0|-101.0|28.32105|-0.01553 +2016-07-01|-51.0|-102.0|28.57152|-0.01404 +2016-07-01|-51.0|-103.0|28.80481|-0.01263 +2016-07-01|-51.0|-104.0|29.02143|-0.01127 +2016-07-01|-51.0|-105.0|29.22192|-0.00998 +2016-07-01|-51.0|-106.0|29.40682|-0.00874 +2016-07-01|-51.0|-107.0|29.57675|-0.00756 +2016-07-01|-51.0|-108.0|29.73231|-0.00641 +2016-07-01|-51.0|-109.0|29.87416|-0.00531 +2016-07-01|-51.0|-110.0|30.00294|-0.00423 +2016-07-01|-51.0|-111.0|30.11935|-0.00318 +2016-07-01|-51.0|-112.0|30.22407|-0.00214 +2016-07-01|-51.0|-113.0|30.3178|-0.00112 +2016-07-01|-51.0|-114.0|30.40126|-9.0E-5 +2016-07-01|-51.0|-115.0|30.47515|9.3E-4 +2016-07-01|-51.0|-116.0|30.54019|0.00197 +2016-07-01|-51.0|-117.0|30.5971|0.00302 +2016-07-01|-51.0|-118.0|30.64658|0.00409 +2016-07-01|-51.0|-119.0|30.68932|0.00519 +2016-07-01|-51.0|-120.0|30.72601|0.00632 +2016-07-01|-51.0|-121.0|30.75732|0.00748 +2016-07-01|-51.0|-122.0|30.78392|0.00868 +2016-07-01|-51.0|-123.0|30.80642|0.00992 +2016-07-01|-51.0|-124.0|30.82544|0.01121 +2016-07-01|-51.0|-125.0|30.84157|0.01254 +2016-07-01|-51.0|-126.0|30.85537|0.01392 +2016-07-01|-51.0|-127.0|30.86736|0.01534 +2016-07-01|-51.0|-128.0|30.87805|0.01681 +2016-07-01|-51.0|-129.0|30.8879|0.01832 +2016-07-01|-51.0|-130.0|30.89735|0.01988 +2016-07-01|-51.0|-131.0|30.90679|0.02148 +2016-07-01|-51.0|-132.0|30.91659|0.02312 +2016-07-01|-51.0|-133.0|30.92708|0.02479 +2016-07-01|-51.0|-134.0|30.93854|0.02651 +2016-07-01|-51.0|-135.0|30.95122|0.02825 +2016-07-01|-51.0|-136.0|30.96535|0.03003 +2016-07-01|-51.0|-137.0|30.9811|0.03183 +2016-07-01|-51.0|-138.0|30.99863|0.03366 +2016-07-01|-51.0|-139.0|31.01803|0.0355 +2016-07-01|-51.0|-140.0|31.03939|0.03736 +2016-07-01|-51.0|-141.0|31.06276|0.03924 +2016-07-01|-51.0|-142.0|31.08814|0.04112 +2016-07-01|-51.0|-143.0|31.11552|0.04301 +2016-07-01|-51.0|-144.0|31.14486|0.0449 +2016-07-01|-51.0|-145.0|31.17609|0.0468 +2016-07-01|-51.0|-146.0|31.20912|0.04869 +2016-07-01|-51.0|-147.0|31.24382|0.05057 +2016-07-01|-51.0|-148.0|31.28006|0.05245 +2016-07-01|-51.0|-149.0|31.3177|0.05432 +2016-07-01|-51.0|-150.0|31.35655|0.05617 +2016-07-01|-51.0|-151.0|31.39642|0.05801 +2016-07-01|-51.0|-152.0|31.43713|0.05983 +2016-07-01|-51.0|-153.0|31.47844|0.06163 +2016-07-01|-51.0|-154.0|31.52015|0.06341 +2016-07-01|-51.0|-155.0|31.56201|0.06517 +2016-07-01|-51.0|-156.0|31.60379|0.0669 +2016-07-01|-51.0|-157.0|31.64523|0.0686 +2016-07-01|-51.0|-158.0|31.68608|0.07027 +2016-07-01|-51.0|-159.0|31.72607|0.07191 +2016-07-01|-51.0|-160.0|31.76494|0.07351 +2016-07-01|-51.0|-161.0|31.8024|0.07508 +2016-07-01|-51.0|-162.0|31.83818|0.07661 +2016-07-01|-51.0|-163.0|31.87198|0.07809 +2016-07-01|-51.0|-164.0|31.90351|0.07953 +2016-07-01|-51.0|-165.0|31.93247|0.08092 +2016-07-01|-51.0|-166.0|31.95853|0.08227 +2016-07-01|-51.0|-167.0|31.98139|0.08356 +2016-07-01|-51.0|-168.0|32.00069|0.0848 +2016-07-01|-51.0|-169.0|32.01612|0.08599 +2016-07-01|-51.0|-170.0|32.02729|0.08711 +2016-07-01|-51.0|-171.0|32.03386|0.08818 +2016-07-01|-51.0|-172.0|32.03542|0.08919 +2016-07-01|-51.0|-173.0|32.0316|0.09013 +2016-07-01|-51.0|-174.0|32.02196|0.091 +2016-07-01|-51.0|-175.0|32.00608|0.09182 +2016-07-01|-51.0|-176.0|31.98352|0.09256 +2016-07-01|-51.0|-177.0|31.9538|0.09323 +2016-07-01|-51.0|-178.0|31.91643|0.09384 +2016-07-01|-51.0|-179.0|31.87093|0.09438 +2016-07-01|-52.0|0.0|-20.9477|-0.03937 +2016-07-01|-52.0|1.0|-21.43356|-0.04645 +2016-07-01|-52.0|2.0|-21.93596|-0.0537 +2016-07-01|-52.0|3.0|-22.45483|-0.0611 +2016-07-01|-52.0|4.0|-22.99003|-0.06862 +2016-07-01|-52.0|5.0|-23.5413|-0.07622 +2016-07-01|-52.0|6.0|-24.10831|-0.08386 +2016-07-01|-52.0|7.0|-24.69062|-0.09152 +2016-07-01|-52.0|8.0|-25.28774|-0.09916 +2016-07-01|-52.0|9.0|-25.89908|-0.10674 +2016-07-01|-52.0|10.0|-26.52399|-0.11423 +2016-07-01|-52.0|11.0|-27.16177|-0.1216 +2016-07-01|-52.0|12.0|-27.81163|-0.12882 +2016-07-01|-52.0|13.0|-28.47275|-0.13586 +2016-07-01|-52.0|14.0|-29.14426|-0.14269 +2016-07-01|-52.0|15.0|-29.82527|-0.14928 +2016-07-01|-52.0|16.0|-30.51483|-0.15562 +2016-07-01|-52.0|17.0|-31.21201|-0.16168 +2016-07-01|-52.0|18.0|-31.91581|-0.16744 +2016-07-01|-52.0|19.0|-32.62528|-0.17289 +2016-07-01|-52.0|20.0|-33.33941|-0.17801 +2016-07-01|-52.0|21.0|-34.05725|-0.18279 +2016-07-01|-52.0|22.0|-34.77782|-0.18723 +2016-07-01|-52.0|23.0|-35.50016|-0.19131 +2016-07-01|-52.0|24.0|-36.22334|-0.19503 +2016-07-01|-52.0|25.0|-36.94643|-0.1984 +2016-07-01|-52.0|26.0|-37.66854|-0.2014 +2016-07-01|-52.0|27.0|-38.38881|-0.20404 +2016-07-01|-52.0|28.0|-39.10639|-0.20632 +2016-07-01|-52.0|29.0|-39.82047|-0.20825 +2016-07-01|-52.0|30.0|-40.53028|-0.20983 +2016-07-01|-52.0|31.0|-41.23507|-0.21107 +2016-07-01|-52.0|32.0|-41.93412|-0.21197 +2016-07-01|-52.0|33.0|-42.62675|-0.21255 +2016-07-01|-52.0|34.0|-43.31229|-0.2128 +2016-07-01|-52.0|35.0|-43.99014|-0.21274 +2016-07-01|-52.0|36.0|-44.65968|-0.21238 +2016-07-01|-52.0|37.0|-45.32037|-0.21173 +2016-07-01|-52.0|38.0|-45.97165|-0.21079 +2016-07-01|-52.0|39.0|-46.61301|-0.20957 +2016-07-01|-52.0|40.0|-47.24397|-0.20809 +2016-07-01|-52.0|41.0|-47.86405|-0.20635 +2016-07-01|-52.0|42.0|-48.47281|-0.20436 +2016-07-01|-52.0|43.0|-49.06983|-0.20213 +2016-07-01|-52.0|44.0|-49.65469|-0.19967 +2016-07-01|-52.0|45.0|-50.22701|-0.19697 +2016-07-01|-52.0|46.0|-50.78641|-0.19406 +2016-07-01|-52.0|47.0|-51.33253|-0.19093 +2016-07-01|-52.0|48.0|-51.86502|-0.18758 +2016-07-01|-52.0|49.0|-52.38353|-0.18404 +2016-07-01|-52.0|50.0|-52.88775|-0.1803 +2016-07-01|-52.0|51.0|-53.37735|-0.17636 +2016-07-01|-52.0|52.0|-53.85201|-0.17223 +2016-07-01|-52.0|53.0|-54.31144|-0.16791 +2016-07-01|-52.0|54.0|-54.75531|-0.1634 +2016-07-01|-52.0|55.0|-55.18335|-0.15872 +2016-07-01|-52.0|56.0|-55.59523|-0.15386 +2016-07-01|-52.0|57.0|-55.99067|-0.14882 +2016-07-01|-52.0|58.0|-56.36935|-0.14361 +2016-07-01|-52.0|59.0|-56.73098|-0.13822 +2016-07-01|-52.0|60.0|-57.07525|-0.13267 +2016-07-01|-52.0|61.0|-57.40183|-0.12695 +2016-07-01|-52.0|62.0|-57.7104|-0.12107 +2016-07-01|-52.0|63.0|-58.00062|-0.11503 +2016-07-01|-52.0|64.0|-58.27214|-0.10883 +2016-07-01|-52.0|65.0|-58.52461|-0.10247 +2016-07-01|-52.0|66.0|-58.75763|-0.09596 +2016-07-01|-52.0|67.0|-58.9708|-0.08931 +2016-07-01|-52.0|68.0|-59.1637|-0.08251 +2016-07-01|-52.0|69.0|-59.33588|-0.07557 +2016-07-01|-52.0|70.0|-59.48686|-0.06849 +2016-07-01|-52.0|71.0|-59.61614|-0.06129 +2016-07-01|-52.0|72.0|-59.72317|-0.05397 +2016-07-01|-52.0|73.0|-59.80738|-0.04652 +2016-07-01|-52.0|74.0|-59.86815|-0.03897 +2016-07-01|-52.0|75.0|-59.90483|-0.03132 +2016-07-01|-52.0|76.0|-59.91671|-0.02358 +2016-07-01|-52.0|77.0|-59.90304|-0.01575 +2016-07-01|-52.0|78.0|-59.86302|-0.00784 +2016-07-01|-52.0|79.0|-59.79579|1.3E-4 +2016-07-01|-52.0|80.0|-59.70044|0.00815 +2016-07-01|-52.0|81.0|-59.576|0.01622 +2016-07-01|-52.0|82.0|-59.42144|0.02432 +2016-07-01|-52.0|83.0|-59.23566|0.03245 +2016-07-01|-52.0|84.0|-59.0175|0.04057 +2016-07-01|-52.0|85.0|-58.76575|0.0487 +2016-07-01|-52.0|86.0|-58.4791|0.0568 +2016-07-01|-52.0|87.0|-58.1562|0.06488 +2016-07-01|-52.0|88.0|-57.79563|0.0729 +2016-07-01|-52.0|89.0|-57.39589|0.08086 +2016-07-01|-52.0|90.0|-56.95544|0.08874 +2016-07-01|-52.0|91.0|-56.47267|0.09653 +2016-07-01|-52.0|92.0|-55.94591|0.10421 +2016-07-01|-52.0|93.0|-55.37346|0.11176 +2016-07-01|-52.0|94.0|-54.75358|0.11917 +2016-07-01|-52.0|95.0|-54.08449|0.12641 +2016-07-01|-52.0|96.0|-53.36441|0.13347 +2016-07-01|-52.0|97.0|-52.59156|0.14033 +2016-07-01|-52.0|98.0|-51.76419|0.14696 +2016-07-01|-52.0|99.0|-50.88059|0.15336 +2016-07-01|-52.0|100.0|-49.93911|0.15949 +2016-07-01|-52.0|101.0|-48.93824|0.16534 +2016-07-01|-52.0|102.0|-47.87659|0.17089 +2016-07-01|-52.0|103.0|-46.75294|0.1761 +2016-07-01|-52.0|104.0|-45.56631|0.18097 +2016-07-01|-52.0|105.0|-44.31599|0.18546 +2016-07-01|-52.0|106.0|-43.00161|0.18956 +2016-07-01|-52.0|107.0|-41.62314|0.19325 +2016-07-01|-52.0|108.0|-40.18102|0.19649 +2016-07-01|-52.0|109.0|-38.67615|0.19929 +2016-07-01|-52.0|110.0|-37.10998|0.2016 +2016-07-01|-52.0|111.0|-35.48455|0.20344 +2016-07-01|-52.0|112.0|-33.80248|0.20477 +2016-07-01|-52.0|113.0|-32.06706|0.2056 +2016-07-01|-52.0|114.0|-30.28222|0.20592 +2016-07-01|-52.0|115.0|-28.45252|0.20574 +2016-07-01|-52.0|116.0|-26.58315|0.20506 +2016-07-01|-52.0|117.0|-24.67982|0.20389 +2016-07-01|-52.0|118.0|-22.74878|0.20227 +2016-07-01|-52.0|119.0|-20.79665|0.2002 +2016-07-01|-52.0|120.0|-18.83034|0.19772 +2016-07-01|-52.0|121.0|-16.85698|0.19488 +2016-07-01|-52.0|122.0|-14.8837|0.1917 +2016-07-01|-52.0|123.0|-12.91759|0.18824 +2016-07-01|-52.0|124.0|-10.96552|0.18453 +2016-07-01|-52.0|125.0|-9.03406|0.18063 +2016-07-01|-52.0|126.0|-7.12936|0.17657 +2016-07-01|-52.0|127.0|-5.25706|0.17242 +2016-07-01|-52.0|128.0|-3.42226|0.1682 +2016-07-01|-52.0|129.0|-1.62943|0.16396 +2016-07-01|-52.0|130.0|0.11757|0.15974 +2016-07-01|-52.0|131.0|1.81552|0.15557 +2016-07-01|-52.0|132.0|3.4618|0.15148 +2016-07-01|-52.0|133.0|5.05442|0.1475 +2016-07-01|-52.0|134.0|6.5919|0.14364 +2016-07-01|-52.0|135.0|8.07329|0.13993 +2016-07-01|-52.0|136.0|9.49811|0.13638 +2016-07-01|-52.0|137.0|10.86626|0.133 +2016-07-01|-52.0|138.0|12.17802|0.12981 +2016-07-01|-52.0|139.0|13.43396|0.1268 +2016-07-01|-52.0|140.0|14.63489|0.12398 +2016-07-01|-52.0|141.0|15.78185|0.12136 +2016-07-01|-52.0|142.0|16.87603|0.11893 +2016-07-01|-52.0|143.0|17.91878|0.11669 +2016-07-01|-52.0|144.0|18.91151|0.11463 +2016-07-01|-52.0|145.0|19.85573|0.11276 +2016-07-01|-52.0|146.0|20.75298|0.11106 +2016-07-01|-52.0|147.0|21.60484|0.10954 +2016-07-01|-52.0|148.0|22.41288|0.10818 +2016-07-01|-52.0|149.0|23.17868|0.10698 +2016-07-01|-52.0|150.0|23.9038|0.10592 +2016-07-01|-52.0|151.0|24.5898|0.10501 +2016-07-01|-52.0|152.0|25.23817|0.10422 +2016-07-01|-52.0|153.0|25.85039|0.10355 +2016-07-01|-52.0|154.0|26.4279|0.103 +2016-07-01|-52.0|155.0|26.97209|0.10255 +2016-07-01|-52.0|156.0|27.48432|0.10219 +2016-07-01|-52.0|157.0|27.9659|0.10191 +2016-07-01|-52.0|158.0|28.41811|0.1017 +2016-07-01|-52.0|159.0|28.84216|0.10156 +2016-07-01|-52.0|160.0|29.23926|0.10147 +2016-07-01|-52.0|161.0|29.61055|0.10142 +2016-07-01|-52.0|162.0|29.95714|0.10141 +2016-07-01|-52.0|163.0|30.28011|0.10143 +2016-07-01|-52.0|164.0|30.58049|0.10146 +2016-07-01|-52.0|165.0|30.8593|0.1015 +2016-07-01|-52.0|166.0|31.11751|0.10155 +2016-07-01|-52.0|167.0|31.35606|0.10158 +2016-07-01|-52.0|168.0|31.57586|0.10161 +2016-07-01|-52.0|169.0|31.7778|0.10161 +2016-07-01|-52.0|170.0|31.96273|0.10159 +2016-07-01|-52.0|171.0|32.13148|0.10154 +2016-07-01|-52.0|172.0|32.28486|0.10145 +2016-07-01|-52.0|173.0|32.42363|0.10132 +2016-07-01|-52.0|174.0|32.54856|0.10114 +2016-07-01|-52.0|175.0|32.66036|0.10091 +2016-07-01|-52.0|176.0|32.75975|0.10063 +2016-07-01|-52.0|177.0|32.84739|0.1003 +2016-07-01|-52.0|178.0|32.92394|0.0999 +2016-07-01|-52.0|179.0|32.99003|0.09945 +2016-07-01|-52.0|-1.0|-20.47835|-0.03251 +2016-07-01|-52.0|-2.0|-20.02539|-0.02588 +2016-07-01|-52.0|-3.0|-19.58859|-0.01952 +2016-07-01|-52.0|-4.0|-19.16766|-0.01345 +2016-07-01|-52.0|-5.0|-18.76218|-0.00768 +2016-07-01|-52.0|-6.0|-18.37167|-0.00225 +2016-07-01|-52.0|-7.0|-17.99557|0.00284 +2016-07-01|-52.0|-8.0|-17.63323|0.00757 +2016-07-01|-52.0|-9.0|-17.28392|0.01193 +2016-07-01|-52.0|-10.0|-16.94687|0.01591 +2016-07-01|-52.0|-11.0|-16.62123|0.01951 +2016-07-01|-52.0|-12.0|-16.30609|0.02271 +2016-07-01|-52.0|-13.0|-16.00049|0.02552 +2016-07-01|-52.0|-14.0|-15.70345|0.02794 +2016-07-01|-52.0|-15.0|-15.41393|0.02996 +2016-07-01|-52.0|-16.0|-15.13086|0.0316 +2016-07-01|-52.0|-17.0|-14.85314|0.03286 +2016-07-01|-52.0|-18.0|-14.57967|0.03374 +2016-07-01|-52.0|-19.0|-14.30931|0.03425 +2016-07-01|-52.0|-20.0|-14.04092|0.03441 +2016-07-01|-52.0|-21.0|-13.77338|0.03422 +2016-07-01|-52.0|-22.0|-13.50552|0.03369 +2016-07-01|-52.0|-23.0|-13.23623|0.03283 +2016-07-01|-52.0|-24.0|-12.96436|0.03167 +2016-07-01|-52.0|-25.0|-12.68881|0.0302 +2016-07-01|-52.0|-26.0|-12.4085|0.02844 +2016-07-01|-52.0|-27.0|-12.12234|0.02642 +2016-07-01|-52.0|-28.0|-11.82929|0.02414 +2016-07-01|-52.0|-29.0|-11.52835|0.02161 +2016-07-01|-52.0|-30.0|-11.21854|0.01886 +2016-07-01|-52.0|-31.0|-10.89893|0.0159 +2016-07-01|-52.0|-32.0|-10.56862|0.01275 +2016-07-01|-52.0|-33.0|-10.22676|0.00943 +2016-07-01|-52.0|-34.0|-9.87257|0.00595 +2016-07-01|-52.0|-35.0|-9.50531|0.00233 +2016-07-01|-52.0|-36.0|-9.12428|-0.00141 +2016-07-01|-52.0|-37.0|-8.72887|-0.00525 +2016-07-01|-52.0|-38.0|-8.31853|-0.00917 +2016-07-01|-52.0|-39.0|-7.89276|-0.01315 +2016-07-01|-52.0|-40.0|-7.45115|-0.01717 +2016-07-01|-52.0|-41.0|-6.99335|-0.02121 +2016-07-01|-52.0|-42.0|-6.51909|-0.02526 +2016-07-01|-52.0|-43.0|-6.02818|-0.02928 +2016-07-01|-52.0|-44.0|-5.5205|-0.03327 +2016-07-01|-52.0|-45.0|-4.99602|-0.03721 +2016-07-01|-52.0|-46.0|-4.45479|-0.04106 +2016-07-01|-52.0|-47.0|-3.89693|-0.04482 +2016-07-01|-52.0|-48.0|-3.32265|-0.04847 +2016-07-01|-52.0|-49.0|-2.73224|-0.05199 +2016-07-01|-52.0|-50.0|-2.12607|-0.05536 +2016-07-01|-52.0|-51.0|-1.50461|-0.05857 +2016-07-01|-52.0|-52.0|-0.86836|-0.06161 +2016-07-01|-52.0|-53.0|-0.21794|-0.06446 +2016-07-01|-52.0|-54.0|0.44599|-0.0671 +2016-07-01|-52.0|-55.0|1.12266|-0.06954 +2016-07-01|-52.0|-56.0|1.81128|-0.07176 +2016-07-01|-52.0|-57.0|2.51098|-0.07374 +2016-07-01|-52.0|-58.0|3.22081|-0.0755 +2016-07-01|-52.0|-59.0|3.93981|-0.07701 +2016-07-01|-52.0|-60.0|4.66694|-0.07828 +2016-07-01|-52.0|-61.0|5.40112|-0.07931 +2016-07-01|-52.0|-62.0|6.14126|-0.08009 +2016-07-01|-52.0|-63.0|6.88622|-0.08063 +2016-07-01|-52.0|-64.0|7.63483|-0.08093 +2016-07-01|-52.0|-65.0|8.38591|-0.081 +2016-07-01|-52.0|-66.0|9.13828|-0.08083 +2016-07-01|-52.0|-67.0|9.89072|-0.08044 +2016-07-01|-52.0|-68.0|10.64206|-0.07984 +2016-07-01|-52.0|-69.0|11.39109|-0.07903 +2016-07-01|-52.0|-70.0|12.13663|-0.07803 +2016-07-01|-52.0|-71.0|12.87753|-0.07684 +2016-07-01|-52.0|-72.0|13.61264|-0.07548 +2016-07-01|-52.0|-73.0|14.34086|-0.07396 +2016-07-01|-52.0|-74.0|15.0611|-0.0723 +2016-07-01|-52.0|-75.0|15.77233|-0.07049 +2016-07-01|-52.0|-76.0|16.47354|-0.06857 +2016-07-01|-52.0|-77.0|17.16377|-0.06655 +2016-07-01|-52.0|-78.0|17.84211|-0.06443 +2016-07-01|-52.0|-79.0|18.50771|-0.06223 +2016-07-01|-52.0|-80.0|19.15975|-0.05996 +2016-07-01|-52.0|-81.0|19.79749|-0.05765 +2016-07-01|-52.0|-82.0|20.42021|-0.05529 +2016-07-01|-52.0|-83.0|21.02728|-0.05291 +2016-07-01|-52.0|-84.0|21.61812|-0.05051 +2016-07-01|-52.0|-85.0|22.1922|-0.04811 +2016-07-01|-52.0|-86.0|22.74905|-0.04571 +2016-07-01|-52.0|-87.0|23.28827|-0.04333 +2016-07-01|-52.0|-88.0|23.8095|-0.04098 +2016-07-01|-52.0|-89.0|24.31247|-0.03866 +2016-07-01|-52.0|-90.0|24.79692|-0.03638 +2016-07-01|-52.0|-91.0|25.2627|-0.03415 +2016-07-01|-52.0|-92.0|25.70967|-0.03197 +2016-07-01|-52.0|-93.0|26.13778|-0.02986 +2016-07-01|-52.0|-94.0|26.54701|-0.0278 +2016-07-01|-52.0|-95.0|26.9374|-0.02581 +2016-07-01|-52.0|-96.0|27.30906|-0.0239 +2016-07-01|-52.0|-97.0|27.66212|-0.02205 +2016-07-01|-52.0|-98.0|27.99677|-0.02027 +2016-07-01|-52.0|-99.0|28.31326|-0.01857 +2016-07-01|-52.0|-100.0|28.61186|-0.01693 +2016-07-01|-52.0|-101.0|28.89289|-0.01537 +2016-07-01|-52.0|-102.0|29.15674|-0.01387 +2016-07-01|-52.0|-103.0|29.40379|-0.01243 +2016-07-01|-52.0|-104.0|29.63449|-0.01106 +2016-07-01|-52.0|-105.0|29.84931|-0.00974 +2016-07-01|-52.0|-106.0|30.04877|-0.00847 +2016-07-01|-52.0|-107.0|30.23339|-0.00724 +2016-07-01|-52.0|-108.0|30.40375|-0.00606 +2016-07-01|-52.0|-109.0|30.56042|-0.00491 +2016-07-01|-52.0|-110.0|30.70401|-0.0038 +2016-07-01|-52.0|-111.0|30.83516|-0.0027 +2016-07-01|-52.0|-112.0|30.9545|-0.00162 +2016-07-01|-52.0|-113.0|31.0627|-5.5E-4 +2016-07-01|-52.0|-114.0|31.16041|5.2E-4 +2016-07-01|-52.0|-115.0|31.24831|0.00158 +2016-07-01|-52.0|-116.0|31.32708|0.00266 +2016-07-01|-52.0|-117.0|31.39739|0.00375 +2016-07-01|-52.0|-118.0|31.45993|0.00486 +2016-07-01|-52.0|-119.0|31.51536|0.00599 +2016-07-01|-52.0|-120.0|31.56434|0.00715 +2016-07-01|-52.0|-121.0|31.60753|0.00834 +2016-07-01|-52.0|-122.0|31.64557|0.00957 +2016-07-01|-52.0|-123.0|31.67909|0.01083 +2016-07-01|-52.0|-124.0|31.70867|0.01214 +2016-07-01|-52.0|-125.0|31.73491|0.01348 +2016-07-01|-52.0|-126.0|31.75837|0.01488 +2016-07-01|-52.0|-127.0|31.77958|0.01631 +2016-07-01|-52.0|-128.0|31.79904|0.01779 +2016-07-01|-52.0|-129.0|31.81724|0.01932 +2016-07-01|-52.0|-130.0|31.83462|0.02088 +2016-07-01|-52.0|-131.0|31.85159|0.02249 +2016-07-01|-52.0|-132.0|31.86853|0.02414 +2016-07-01|-52.0|-133.0|31.8858|0.02583 +2016-07-01|-52.0|-134.0|31.90369|0.02756 +2016-07-01|-52.0|-135.0|31.92249|0.02932 +2016-07-01|-52.0|-136.0|31.94245|0.03111 +2016-07-01|-52.0|-137.0|31.96376|0.03293 +2016-07-01|-52.0|-138.0|31.98659|0.03477 +2016-07-01|-52.0|-139.0|32.0111|0.03664 +2016-07-01|-52.0|-140.0|32.03738|0.03852 +2016-07-01|-52.0|-141.0|32.0655|0.04042 +2016-07-01|-52.0|-142.0|32.09551|0.04234 +2016-07-01|-52.0|-143.0|32.12742|0.04426 +2016-07-01|-52.0|-144.0|32.1612|0.04619 +2016-07-01|-52.0|-145.0|32.19683|0.04812 +2016-07-01|-52.0|-146.0|32.23422|0.05006 +2016-07-01|-52.0|-147.0|32.27329|0.05199 +2016-07-01|-52.0|-148.0|32.31392|0.05392 +2016-07-01|-52.0|-149.0|32.35597|0.05584 +2016-07-01|-52.0|-150.0|32.3993|0.05775 +2016-07-01|-52.0|-151.0|32.44373|0.05965 +2016-07-01|-52.0|-152.0|32.48908|0.06153 +2016-07-01|-52.0|-153.0|32.53514|0.06339 +2016-07-01|-52.0|-154.0|32.58171|0.06524 +2016-07-01|-52.0|-155.0|32.62856|0.06706 +2016-07-01|-52.0|-156.0|32.67546|0.06886 +2016-07-01|-52.0|-157.0|32.72216|0.07064 +2016-07-01|-52.0|-158.0|32.76841|0.07238 +2016-07-01|-52.0|-159.0|32.81395|0.07409 +2016-07-01|-52.0|-160.0|32.85851|0.07577 +2016-07-01|-52.0|-161.0|32.90181|0.07741 +2016-07-01|-52.0|-162.0|32.94356|0.07902 +2016-07-01|-52.0|-163.0|32.98348|0.08058 +2016-07-01|-52.0|-164.0|33.02127|0.0821 +2016-07-01|-52.0|-165.0|33.0566|0.08358 +2016-07-01|-52.0|-166.0|33.08917|0.085 +2016-07-01|-52.0|-167.0|33.11865|0.08638 +2016-07-01|-52.0|-168.0|33.14468|0.08771 +2016-07-01|-52.0|-169.0|33.16693|0.08898 +2016-07-01|-52.0|-170.0|33.18502|0.09019 +2016-07-01|-52.0|-171.0|33.19859|0.09135 +2016-07-01|-52.0|-172.0|33.20722|0.09244 +2016-07-01|-52.0|-173.0|33.21052|0.09348 +2016-07-01|-52.0|-174.0|33.20806|0.09445 +2016-07-01|-52.0|-175.0|33.19941|0.09536 +2016-07-01|-52.0|-176.0|33.18408|0.0962 +2016-07-01|-52.0|-177.0|33.16162|0.09698 +2016-07-01|-52.0|-178.0|33.13151|0.0977 +2016-07-01|-52.0|-179.0|33.09324|0.09834 +2016-07-01|-53.0|0.0|-20.7945|-0.04336 +2016-07-01|-53.0|1.0|-21.29972|-0.05022 +2016-07-01|-53.0|2.0|-21.82073|-0.05723 +2016-07-01|-53.0|3.0|-22.35744|-0.06436 +2016-07-01|-53.0|4.0|-22.90968|-0.07159 +2016-07-01|-53.0|5.0|-23.47717|-0.07888 +2016-07-01|-53.0|6.0|-24.05956|-0.08621 +2016-07-01|-53.0|7.0|-24.65644|-0.09353 +2016-07-01|-53.0|8.0|-25.26731|-0.10083 +2016-07-01|-53.0|9.0|-25.89161|-0.10806 +2016-07-01|-53.0|10.0|-26.5287|-0.1152 +2016-07-01|-53.0|11.0|-27.17791|-0.12223 +2016-07-01|-53.0|12.0|-27.83851|-0.12911 +2016-07-01|-53.0|13.0|-28.50971|-0.13581 +2016-07-01|-53.0|14.0|-29.19069|-0.14232 +2016-07-01|-53.0|15.0|-29.88062|-0.14861 +2016-07-01|-53.0|16.0|-30.57861|-0.15465 +2016-07-01|-53.0|17.0|-31.28378|-0.16044 +2016-07-01|-53.0|18.0|-31.99521|-0.16595 +2016-07-01|-53.0|19.0|-32.71199|-0.17117 +2016-07-01|-53.0|20.0|-33.43321|-0.17609 +2016-07-01|-53.0|21.0|-34.15795|-0.1807 +2016-07-01|-53.0|22.0|-34.88531|-0.18498 +2016-07-01|-53.0|23.0|-35.6144|-0.18894 +2016-07-01|-53.0|24.0|-36.34433|-0.19256 +2016-07-01|-53.0|25.0|-37.07425|-0.19585 +2016-07-01|-53.0|26.0|-37.80332|-0.1988 +2016-07-01|-53.0|27.0|-38.53072|-0.20142 +2016-07-01|-53.0|28.0|-39.25567|-0.2037 +2016-07-01|-53.0|29.0|-39.97741|-0.20565 +2016-07-01|-53.0|30.0|-40.6952|-0.20728 +2016-07-01|-53.0|31.0|-41.40833|-0.20858 +2016-07-01|-53.0|32.0|-42.11613|-0.20957 +2016-07-01|-53.0|33.0|-42.81795|-0.21025 +2016-07-01|-53.0|34.0|-43.51317|-0.21063 +2016-07-01|-53.0|35.0|-44.20121|-0.21072 +2016-07-01|-53.0|36.0|-44.88148|-0.21052 +2016-07-01|-53.0|37.0|-45.55347|-0.21004 +2016-07-01|-53.0|38.0|-46.21664|-0.20929 +2016-07-01|-53.0|39.0|-46.87052|-0.20827 +2016-07-01|-53.0|40.0|-47.51464|-0.20701 +2016-07-01|-53.0|41.0|-48.14855|-0.2055 +2016-07-01|-53.0|42.0|-48.77182|-0.20374 +2016-07-01|-53.0|43.0|-49.38406|-0.20176 +2016-07-01|-53.0|44.0|-49.98487|-0.19955 +2016-07-01|-53.0|45.0|-50.57388|-0.19712 +2016-07-01|-53.0|46.0|-51.15074|-0.19449 +2016-07-01|-53.0|47.0|-51.7151|-0.19164 +2016-07-01|-53.0|48.0|-52.26663|-0.1886 +2016-07-01|-53.0|49.0|-52.80501|-0.18535 +2016-07-01|-53.0|50.0|-53.32993|-0.18192 +2016-07-01|-53.0|51.0|-53.84109|-0.1783 +2016-07-01|-53.0|52.0|-54.33819|-0.1745 +2016-07-01|-53.0|53.0|-54.82094|-0.17053 +2016-07-01|-53.0|54.0|-55.28907|-0.16637 +2016-07-01|-53.0|55.0|-55.74228|-0.16205 +2016-07-01|-53.0|56.0|-56.1803|-0.15755 +2016-07-01|-53.0|57.0|-56.60285|-0.15289 +2016-07-01|-53.0|58.0|-57.00965|-0.14807 +2016-07-01|-53.0|59.0|-57.40041|-0.14308 +2016-07-01|-53.0|60.0|-57.77486|-0.13794 +2016-07-01|-53.0|61.0|-58.13268|-0.13264 +2016-07-01|-53.0|62.0|-58.47359|-0.12719 +2016-07-01|-53.0|63.0|-58.79728|-0.12159 +2016-07-01|-53.0|64.0|-59.10341|-0.11584 +2016-07-01|-53.0|65.0|-59.39165|-0.10995 +2016-07-01|-53.0|66.0|-59.66166|-0.10392 +2016-07-01|-53.0|67.0|-59.91305|-0.09774 +2016-07-01|-53.0|68.0|-60.14544|-0.09144 +2016-07-01|-53.0|69.0|-60.35842|-0.085 +2016-07-01|-53.0|70.0|-60.55153|-0.07844 +2016-07-01|-53.0|71.0|-60.72431|-0.07176 +2016-07-01|-53.0|72.0|-60.87625|-0.06496 +2016-07-01|-53.0|73.0|-61.00683|-0.05805 +2016-07-01|-53.0|74.0|-61.11545|-0.05104 +2016-07-01|-53.0|75.0|-61.20152|-0.04393 +2016-07-01|-53.0|76.0|-61.26436|-0.03672 +2016-07-01|-53.0|77.0|-61.30326|-0.02943 +2016-07-01|-53.0|78.0|-61.31748|-0.02206 +2016-07-01|-53.0|79.0|-61.30618|-0.01463 +2016-07-01|-53.0|80.0|-61.2685|-0.00712 +2016-07-01|-53.0|81.0|-61.20351|4.3E-4 +2016-07-01|-53.0|82.0|-61.11021|0.00804 +2016-07-01|-53.0|83.0|-60.98754|0.01568 +2016-07-01|-53.0|84.0|-60.83434|0.02335 +2016-07-01|-53.0|85.0|-60.64942|0.03104 +2016-07-01|-53.0|86.0|-60.43149|0.03874 +2016-07-01|-53.0|87.0|-60.17918|0.04645 +2016-07-01|-53.0|88.0|-59.89103|0.05415 +2016-07-01|-53.0|89.0|-59.56553|0.06183 +2016-07-01|-53.0|90.0|-59.20104|0.06948 +2016-07-01|-53.0|91.0|-58.79587|0.0771 +2016-07-01|-53.0|92.0|-58.34824|0.08467 +2016-07-01|-53.0|93.0|-57.85627|0.09219 +2016-07-01|-53.0|94.0|-57.31802|0.09964 +2016-07-01|-53.0|95.0|-56.73147|0.10701 +2016-07-01|-53.0|96.0|-56.09452|0.1143 +2016-07-01|-53.0|97.0|-55.40504|0.12148 +2016-07-01|-53.0|98.0|-54.66082|0.12856 +2016-07-01|-53.0|99.0|-53.85966|0.13551 +2016-07-01|-53.0|100.0|-52.99932|0.14233 +2016-07-01|-53.0|101.0|-52.07759|0.149 +2016-07-01|-53.0|102.0|-51.09231|0.1555 +2016-07-01|-53.0|103.0|-50.0414|0.16182 +2016-07-01|-53.0|104.0|-48.92291|0.16794 +2016-07-01|-53.0|105.0|-47.73505|0.17383 +2016-07-01|-53.0|106.0|-46.47629|0.17949 +2016-07-01|-53.0|107.0|-45.14539|0.18488 +2016-07-01|-53.0|108.0|-43.74148|0.18997 +2016-07-01|-53.0|109.0|-42.26413|0.19475 +2016-07-01|-53.0|110.0|-40.71344|0.19917 +2016-07-01|-53.0|111.0|-39.09012|0.20321 +2016-07-01|-53.0|112.0|-37.39557|0.20683 +2016-07-01|-53.0|113.0|-35.63194|0.21001 +2016-07-01|-53.0|114.0|-33.80221|0.21271 +2016-07-01|-53.0|115.0|-31.91023|0.21491 +2016-07-01|-53.0|116.0|-29.96072|0.21656 +2016-07-01|-53.0|117.0|-27.9593|0.21767 +2016-07-01|-53.0|118.0|-25.91244|0.2182 +2016-07-01|-53.0|119.0|-23.82739|0.21815 +2016-07-01|-53.0|120.0|-21.71207|0.21752 +2016-07-01|-53.0|121.0|-19.57494|0.21633 +2016-07-01|-53.0|122.0|-17.42486|0.21459 +2016-07-01|-53.0|123.0|-15.27088|0.21232 +2016-07-01|-53.0|124.0|-13.12205|0.20958 +2016-07-01|-53.0|125.0|-10.98725|0.2064 +2016-07-01|-53.0|126.0|-8.875|0.20284 +2016-07-01|-53.0|127.0|-6.79329|0.19895 +2016-07-01|-53.0|128.0|-4.74944|0.1948 +2016-07-01|-53.0|129.0|-2.75002|0.19044 +2016-07-01|-53.0|130.0|-0.80075|0.18593 +2016-07-01|-53.0|131.0|1.09352|0.18133 +2016-07-01|-53.0|132.0|2.92881|0.17669 +2016-07-01|-53.0|133.0|4.70202|0.17207 +2016-07-01|-53.0|134.0|6.41084|0.1675 +2016-07-01|-53.0|135.0|8.05372|0.16302 +2016-07-01|-53.0|136.0|9.62982|0.15867 +2016-07-01|-53.0|137.0|11.13886|0.15447 +2016-07-01|-53.0|138.0|12.58112|0.15044 +2016-07-01|-53.0|139.0|13.9573|0.1466 +2016-07-01|-53.0|140.0|15.2685|0.14297 +2016-07-01|-53.0|141.0|16.51608|0.13954 +2016-07-01|-53.0|142.0|17.70167|0.13633 +2016-07-01|-53.0|143.0|18.82705|0.13334 +2016-07-01|-53.0|144.0|19.89415|0.13056 +2016-07-01|-53.0|145.0|20.90498|0.12799 +2016-07-01|-53.0|146.0|21.86161|0.12564 +2016-07-01|-53.0|147.0|22.76611|0.12349 +2016-07-01|-53.0|148.0|23.62059|0.12153 +2016-07-01|-53.0|149.0|24.42709|0.11976 +2016-07-01|-53.0|150.0|25.18767|0.11817 +2016-07-01|-53.0|151.0|25.90429|0.11675 +2016-07-01|-53.0|152.0|26.57889|0.11548 +2016-07-01|-53.0|153.0|27.21335|0.11436 +2016-07-01|-53.0|154.0|27.80946|0.11337 +2016-07-01|-53.0|155.0|28.36898|0.11251 +2016-07-01|-53.0|156.0|28.89359|0.11177 +2016-07-01|-53.0|157.0|29.38488|0.11112 +2016-07-01|-53.0|158.0|29.8444|0.11057 +2016-07-01|-53.0|159.0|30.27364|0.11009 +2016-07-01|-53.0|160.0|30.67402|0.10969 +2016-07-01|-53.0|161.0|31.0469|0.10935 +2016-07-01|-53.0|162.0|31.39357|0.10905 +2016-07-01|-53.0|163.0|31.7153|0.1088 +2016-07-01|-53.0|164.0|32.01329|0.10857 +2016-07-01|-53.0|165.0|32.28867|0.10836 +2016-07-01|-53.0|166.0|32.54256|0.10817 +2016-07-01|-53.0|167.0|32.77602|0.10799 +2016-07-01|-53.0|168.0|32.99007|0.10779 +2016-07-01|-53.0|169.0|33.18568|0.10759 +2016-07-01|-53.0|170.0|33.36379|0.10738 +2016-07-01|-53.0|171.0|33.52531|0.10713 +2016-07-01|-53.0|172.0|33.67111|0.10686 +2016-07-01|-53.0|173.0|33.80203|0.10656 +2016-07-01|-53.0|174.0|33.91886|0.10621 +2016-07-01|-53.0|175.0|34.02238|0.10582 +2016-07-01|-53.0|176.0|34.11333|0.10539 +2016-07-01|-53.0|177.0|34.19242|0.1049 +2016-07-01|-53.0|178.0|34.26034|0.10436 +2016-07-01|-53.0|179.0|34.31775|0.10377 +2016-07-01|-53.0|-1.0|-20.3051|-0.03669 +2016-07-01|-53.0|-2.0|-19.83143|-0.03022 +2016-07-01|-53.0|-3.0|-19.37334|-0.02399 +2016-07-01|-53.0|-4.0|-18.93057|-0.01801 +2016-07-01|-53.0|-5.0|-18.50279|-0.01231 +2016-07-01|-53.0|-6.0|-18.08958|-0.0069 +2016-07-01|-53.0|-7.0|-17.69045|-0.00182 +2016-07-01|-53.0|-8.0|-17.30483|0.00294 +2016-07-01|-53.0|-9.0|-16.93208|0.00736 +2016-07-01|-53.0|-10.0|-16.57149|0.01143 +2016-07-01|-53.0|-11.0|-16.22229|0.01514 +2016-07-01|-53.0|-12.0|-15.88365|0.01847 +2016-07-01|-53.0|-13.0|-15.55469|0.02144 +2016-07-01|-53.0|-14.0|-15.23449|0.02404 +2016-07-01|-53.0|-15.0|-14.92207|0.02626 +2016-07-01|-53.0|-16.0|-14.61645|0.02811 +2016-07-01|-53.0|-17.0|-14.31657|0.02959 +2016-07-01|-53.0|-18.0|-14.0214|0.03071 +2016-07-01|-53.0|-19.0|-13.72986|0.03146 +2016-07-01|-53.0|-20.0|-13.44085|0.03187 +2016-07-01|-53.0|-21.0|-13.15328|0.03193 +2016-07-01|-53.0|-22.0|-12.86605|0.03166 +2016-07-01|-53.0|-23.0|-12.57807|0.03106 +2016-07-01|-53.0|-24.0|-12.28825|0.03015 +2016-07-01|-53.0|-25.0|-11.99551|0.02894 +2016-07-01|-53.0|-26.0|-11.69878|0.02744 +2016-07-01|-53.0|-27.0|-11.39703|0.02567 +2016-07-01|-53.0|-28.0|-11.08925|0.02364 +2016-07-01|-53.0|-29.0|-10.77444|0.02137 +2016-07-01|-53.0|-30.0|-10.45166|0.01887 +2016-07-01|-53.0|-31.0|-10.11999|0.01615 +2016-07-01|-53.0|-32.0|-9.77857|0.01324 +2016-07-01|-53.0|-33.0|-9.42656|0.01015 +2016-07-01|-53.0|-34.0|-9.0632|0.0069 +2016-07-01|-53.0|-35.0|-8.68775|0.0035 +2016-07-01|-53.0|-36.0|-8.29956|-1.0E-5 +2016-07-01|-53.0|-37.0|-7.89801|-0.00364 +2016-07-01|-53.0|-38.0|-7.48256|-0.00734 +2016-07-01|-53.0|-39.0|-7.05273|-0.01112 +2016-07-01|-53.0|-40.0|-6.60812|-0.01494 +2016-07-01|-53.0|-41.0|-6.14838|-0.01879 +2016-07-01|-53.0|-42.0|-5.67324|-0.02264 +2016-07-01|-53.0|-43.0|-5.18251|-0.02649 +2016-07-01|-53.0|-44.0|-4.67607|-0.0303 +2016-07-01|-53.0|-45.0|-4.15388|-0.03407 +2016-07-01|-53.0|-46.0|-3.61597|-0.03776 +2016-07-01|-53.0|-47.0|-3.06245|-0.04137 +2016-07-01|-53.0|-48.0|-2.49351|-0.04488 +2016-07-01|-53.0|-49.0|-1.90942|-0.04827 +2016-07-01|-53.0|-50.0|-1.31052|-0.05153 +2016-07-01|-53.0|-51.0|-0.69722|-0.05463 +2016-07-01|-53.0|-52.0|-0.07001|-0.05757 +2016-07-01|-53.0|-53.0|0.57055|-0.06034 +2016-07-01|-53.0|-54.0|1.22384|-0.06292 +2016-07-01|-53.0|-55.0|1.88917|-0.0653 +2016-07-01|-53.0|-56.0|2.56579|-0.06747 +2016-07-01|-53.0|-57.0|3.25288|-0.06944 +2016-07-01|-53.0|-58.0|3.9496|-0.07118 +2016-07-01|-53.0|-59.0|4.65502|-0.0727 +2016-07-01|-53.0|-60.0|5.36819|-0.07398 +2016-07-01|-53.0|-61.0|6.08812|-0.07505 +2016-07-01|-53.0|-62.0|6.81378|-0.07588 +2016-07-01|-53.0|-63.0|7.54412|-0.07648 +2016-07-01|-53.0|-64.0|8.27806|-0.07685 +2016-07-01|-53.0|-65.0|9.01449|-0.07701 +2016-07-01|-53.0|-66.0|9.75231|-0.07694 +2016-07-01|-53.0|-67.0|10.49041|-0.07666 +2016-07-01|-53.0|-68.0|11.22767|-0.07618 +2016-07-01|-53.0|-69.0|11.96297|-0.0755 +2016-07-01|-53.0|-70.0|12.69522|-0.07464 +2016-07-01|-53.0|-71.0|13.42332|-0.0736 +2016-07-01|-53.0|-72.0|14.14622|-0.07239 +2016-07-01|-53.0|-73.0|14.86286|-0.07103 +2016-07-01|-53.0|-74.0|15.57222|-0.06952 +2016-07-01|-53.0|-75.0|16.27334|-0.06789 +2016-07-01|-53.0|-76.0|16.96524|-0.06613 +2016-07-01|-53.0|-77.0|17.64704|-0.06427 +2016-07-01|-53.0|-78.0|18.31785|-0.06232 +2016-07-01|-53.0|-79.0|18.97686|-0.06028 +2016-07-01|-53.0|-80.0|19.62329|-0.05818 +2016-07-01|-53.0|-81.0|20.25641|-0.05602 +2016-07-01|-53.0|-82.0|20.87554|-0.05382 +2016-07-01|-53.0|-83.0|21.48006|-0.05158 +2016-07-01|-53.0|-84.0|22.06939|-0.04932 +2016-07-01|-53.0|-85.0|22.64301|-0.04706 +2016-07-01|-53.0|-86.0|23.20045|-0.04479 +2016-07-01|-53.0|-87.0|23.74131|-0.04253 +2016-07-01|-53.0|-88.0|24.26521|-0.04029 +2016-07-01|-53.0|-89.0|24.77185|-0.03807 +2016-07-01|-53.0|-90.0|25.26099|-0.03588 +2016-07-01|-53.0|-91.0|25.73241|-0.03374 +2016-07-01|-53.0|-92.0|26.18598|-0.03164 +2016-07-01|-53.0|-93.0|26.62159|-0.02959 +2016-07-01|-53.0|-94.0|27.0392|-0.02759 +2016-07-01|-53.0|-95.0|27.4388|-0.02565 +2016-07-01|-53.0|-96.0|27.82046|-0.02377 +2016-07-01|-53.0|-97.0|28.18427|-0.02195 +2016-07-01|-53.0|-98.0|28.53037|-0.0202 +2016-07-01|-53.0|-99.0|28.85896|-0.0185 +2016-07-01|-53.0|-100.0|29.17025|-0.01687 +2016-07-01|-53.0|-101.0|29.46453|-0.01531 +2016-07-01|-53.0|-102.0|29.7421|-0.0138 +2016-07-01|-53.0|-103.0|30.00332|-0.01235 +2016-07-01|-53.0|-104.0|30.24856|-0.01095 +2016-07-01|-53.0|-105.0|30.47825|-0.0096 +2016-07-01|-53.0|-106.0|30.69283|-0.0083 +2016-07-01|-53.0|-107.0|30.89279|-0.00705 +2016-07-01|-53.0|-108.0|31.07864|-0.00583 +2016-07-01|-53.0|-109.0|31.2509|-0.00464 +2016-07-01|-53.0|-110.0|31.41013|-0.00348 +2016-07-01|-53.0|-111.0|31.55691|-0.00234 +2016-07-01|-53.0|-112.0|31.69183|-0.00122 +2016-07-01|-53.0|-113.0|31.8155|-1.1E-4 +2016-07-01|-53.0|-114.0|31.92853|0.001 +2016-07-01|-53.0|-115.0|32.03157|0.00211 +2016-07-01|-53.0|-116.0|32.12525|0.00323 +2016-07-01|-53.0|-117.0|32.21021|0.00435 +2016-07-01|-53.0|-118.0|32.28709|0.0055 +2016-07-01|-53.0|-119.0|32.35654|0.00666 +2016-07-01|-53.0|-120.0|32.41918|0.00786 +2016-07-01|-53.0|-121.0|32.47566|0.00908 +2016-07-01|-53.0|-122.0|32.52659|0.01033 +2016-07-01|-53.0|-123.0|32.57258|0.01162 +2016-07-01|-53.0|-124.0|32.61422|0.01295 +2016-07-01|-53.0|-125.0|32.65208|0.01431 +2016-07-01|-53.0|-126.0|32.68673|0.01572 +2016-07-01|-53.0|-127.0|32.71868|0.01717 +2016-07-01|-53.0|-128.0|32.74846|0.01866 +2016-07-01|-53.0|-129.0|32.77655|0.0202 +2016-07-01|-53.0|-130.0|32.80339|0.02178 +2016-07-01|-53.0|-131.0|32.82941|0.0234 +2016-07-01|-53.0|-132.0|32.85501|0.02506 +2016-07-01|-53.0|-133.0|32.88055|0.02676 +2016-07-01|-53.0|-134.0|32.90636|0.0285 +2016-07-01|-53.0|-135.0|32.93274|0.03027 +2016-07-01|-53.0|-136.0|32.95995|0.03208 +2016-07-01|-53.0|-137.0|32.98822|0.03391 +2016-07-01|-53.0|-138.0|33.01775|0.03577 +2016-07-01|-53.0|-139.0|33.04871|0.03766 +2016-07-01|-53.0|-140.0|33.08121|0.03957 +2016-07-01|-53.0|-141.0|33.11537|0.0415 +2016-07-01|-53.0|-142.0|33.15126|0.04344 +2016-07-01|-53.0|-143.0|33.1889|0.0454 +2016-07-01|-53.0|-144.0|33.22831|0.04736 +2016-07-01|-53.0|-145.0|33.26948|0.04933 +2016-07-01|-53.0|-146.0|33.31235|0.05131 +2016-07-01|-53.0|-147.0|33.35687|0.05329 +2016-07-01|-53.0|-148.0|33.40294|0.05527 +2016-07-01|-53.0|-149.0|33.45044|0.05724 +2016-07-01|-53.0|-150.0|33.49926|0.0592 +2016-07-01|-53.0|-151.0|33.54922|0.06116 +2016-07-01|-53.0|-152.0|33.60017|0.0631 +2016-07-01|-53.0|-153.0|33.65193|0.06503 +2016-07-01|-53.0|-154.0|33.70428|0.06695 +2016-07-01|-53.0|-155.0|33.75704|0.06884 +2016-07-01|-53.0|-156.0|33.80996|0.07071 +2016-07-01|-53.0|-157.0|33.86281|0.07255 +2016-07-01|-53.0|-158.0|33.91536|0.07437 +2016-07-01|-53.0|-159.0|33.96734|0.07616 +2016-07-01|-53.0|-160.0|34.01848|0.07792 +2016-07-01|-53.0|-161.0|34.06853|0.07965 +2016-07-01|-53.0|-162.0|34.11718|0.08133 +2016-07-01|-53.0|-163.0|34.16414|0.08298 +2016-07-01|-53.0|-164.0|34.20913|0.08459 +2016-07-01|-53.0|-165.0|34.25181|0.08615 +2016-07-01|-53.0|-166.0|34.29187|0.08767 +2016-07-01|-53.0|-167.0|34.32898|0.08914 +2016-07-01|-53.0|-168.0|34.36279|0.09056 +2016-07-01|-53.0|-169.0|34.39293|0.09193 +2016-07-01|-53.0|-170.0|34.41905|0.09324 +2016-07-01|-53.0|-171.0|34.44075|0.0945 +2016-07-01|-53.0|-172.0|34.45763|0.0957 +2016-07-01|-53.0|-173.0|34.46927|0.09684 +2016-07-01|-53.0|-174.0|34.47525|0.09792 +2016-07-01|-53.0|-175.0|34.4751|0.09894 +2016-07-01|-53.0|-176.0|34.46836|0.0999 +2016-07-01|-53.0|-177.0|34.45453|0.10079 +2016-07-01|-53.0|-178.0|34.4331|0.10163 +2016-07-01|-53.0|-179.0|34.40354|0.1024 +2016-07-01|-54.0|0.0|-20.64966|-0.04712 +2016-07-01|-54.0|1.0|-21.17291|-0.05374 +2016-07-01|-54.0|2.0|-21.71122|-0.0605 +2016-07-01|-54.0|3.0|-22.26445|-0.06736 +2016-07-01|-54.0|4.0|-22.83242|-0.0743 +2016-07-01|-54.0|5.0|-23.41485|-0.08128 +2016-07-01|-54.0|6.0|-24.01139|-0.08829 +2016-07-01|-54.0|7.0|-24.62163|-0.09528 +2016-07-01|-54.0|8.0|-25.24507|-0.10225 +2016-07-01|-54.0|9.0|-25.88119|-0.10914 +2016-07-01|-54.0|10.0|-26.52938|-0.11595 +2016-07-01|-54.0|11.0|-27.189|-0.12264 +2016-07-01|-54.0|12.0|-27.85935|-0.1292 +2016-07-01|-54.0|13.0|-28.5397|-0.13558 +2016-07-01|-54.0|14.0|-29.22928|-0.14179 +2016-07-01|-54.0|15.0|-29.9273|-0.14778 +2016-07-01|-54.0|16.0|-30.63294|-0.15356 +2016-07-01|-54.0|17.0|-31.34537|-0.15909 +2016-07-01|-54.0|18.0|-32.06374|-0.16436 +2016-07-01|-54.0|19.0|-32.7872|-0.16937 +2016-07-01|-54.0|20.0|-33.51489|-0.17409 +2016-07-01|-54.0|21.0|-34.24597|-0.17853 +2016-07-01|-54.0|22.0|-34.97958|-0.18267 +2016-07-01|-54.0|23.0|-35.71489|-0.1865 +2016-07-01|-54.0|24.0|-36.45109|-0.19003 +2016-07-01|-54.0|25.0|-37.18737|-0.19324 +2016-07-01|-54.0|26.0|-37.92295|-0.19615 +2016-07-01|-54.0|27.0|-38.65706|-0.19874 +2016-07-01|-54.0|28.0|-39.38896|-0.20102 +2016-07-01|-54.0|29.0|-40.11794|-0.20299 +2016-07-01|-54.0|30.0|-40.8433|-0.20466 +2016-07-01|-54.0|31.0|-41.56439|-0.20603 +2016-07-01|-54.0|32.0|-42.28056|-0.2071 +2016-07-01|-54.0|33.0|-42.99119|-0.20788 +2016-07-01|-54.0|34.0|-43.69572|-0.20838 +2016-07-01|-54.0|35.0|-44.39356|-0.2086 +2016-07-01|-54.0|36.0|-45.0842|-0.20855 +2016-07-01|-54.0|37.0|-45.76711|-0.20824 +2016-07-01|-54.0|38.0|-46.4418|-0.20767 +2016-07-01|-54.0|39.0|-47.10783|-0.20685 +2016-07-01|-54.0|40.0|-47.76473|-0.20579 +2016-07-01|-54.0|41.0|-48.41209|-0.20449 +2016-07-01|-54.0|42.0|-49.04951|-0.20297 +2016-07-01|-54.0|43.0|-49.67659|-0.20123 +2016-07-01|-54.0|44.0|-50.29297|-0.19927 +2016-07-01|-54.0|45.0|-50.8983|-0.1971 +2016-07-01|-54.0|46.0|-51.49224|-0.19473 +2016-07-01|-54.0|47.0|-52.07447|-0.19217 +2016-07-01|-54.0|48.0|-52.64466|-0.18941 +2016-07-01|-54.0|49.0|-53.20253|-0.18647 +2016-07-01|-54.0|50.0|-53.74778|-0.18334 +2016-07-01|-54.0|51.0|-54.28012|-0.18004 +2016-07-01|-54.0|52.0|-54.79928|-0.17657 +2016-07-01|-54.0|53.0|-55.30499|-0.17292 +2016-07-01|-54.0|54.0|-55.79699|-0.16911 +2016-07-01|-54.0|55.0|-56.27501|-0.16514 +2016-07-01|-54.0|56.0|-56.7388|-0.16101 +2016-07-01|-54.0|57.0|-57.1881|-0.15673 +2016-07-01|-54.0|58.0|-57.62265|-0.15229 +2016-07-01|-54.0|59.0|-58.0422|-0.1477 +2016-07-01|-54.0|60.0|-58.44647|-0.14296 +2016-07-01|-54.0|61.0|-58.83521|-0.13808 +2016-07-01|-54.0|62.0|-59.20813|-0.13306 +2016-07-01|-54.0|63.0|-59.56495|-0.1279 +2016-07-01|-54.0|64.0|-59.90539|-0.1226 +2016-07-01|-54.0|65.0|-60.22913|-0.11717 +2016-07-01|-54.0|66.0|-60.53585|-0.11161 +2016-07-01|-54.0|67.0|-60.82521|-0.10592 +2016-07-01|-54.0|68.0|-61.09687|-0.10011 +2016-07-01|-54.0|69.0|-61.35044|-0.09418 +2016-07-01|-54.0|70.0|-61.58552|-0.08813 +2016-07-01|-54.0|71.0|-61.80167|-0.08197 +2016-07-01|-54.0|72.0|-61.99845|-0.07571 +2016-07-01|-54.0|73.0|-62.17536|-0.06934 +2016-07-01|-54.0|74.0|-62.33186|-0.06288 +2016-07-01|-54.0|75.0|-62.4674|-0.05632 +2016-07-01|-54.0|76.0|-62.58136|-0.04967 +2016-07-01|-54.0|77.0|-62.6731|-0.04294 +2016-07-01|-54.0|78.0|-62.74189|-0.03613 +2016-07-01|-54.0|79.0|-62.78699|-0.02925 +2016-07-01|-54.0|80.0|-62.80758|-0.02231 +2016-07-01|-54.0|81.0|-62.80277|-0.01531 +2016-07-01|-54.0|82.0|-62.77164|-0.00825 +2016-07-01|-54.0|83.0|-62.71315|-0.00114 +2016-07-01|-54.0|84.0|-62.62624|0.00601 +2016-07-01|-54.0|85.0|-62.50973|0.01319 +2016-07-01|-54.0|86.0|-62.36237|0.02041 +2016-07-01|-54.0|87.0|-62.18284|0.02765 +2016-07-01|-54.0|88.0|-61.96969|0.03492 +2016-07-01|-54.0|89.0|-61.72142|0.0422 +2016-07-01|-54.0|90.0|-61.43639|0.04949 +2016-07-01|-54.0|91.0|-61.11288|0.05678 +2016-07-01|-54.0|92.0|-60.74904|0.06409 +2016-07-01|-54.0|93.0|-60.34294|0.07139 +2016-07-01|-54.0|94.0|-59.89251|0.07868 +2016-07-01|-54.0|95.0|-59.39558|0.08597 +2016-07-01|-54.0|96.0|-58.84984|0.09325 +2016-07-01|-54.0|97.0|-58.25291|0.10052 +2016-07-01|-54.0|98.0|-57.60226|0.10777 +2016-07-01|-54.0|99.0|-56.89528|0.115 +2016-07-01|-54.0|100.0|-56.12927|0.12221 +2016-07-01|-54.0|101.0|-55.30143|0.12939 +2016-07-01|-54.0|102.0|-54.40892|0.13655 +2016-07-01|-54.0|103.0|-53.44888|0.14366 +2016-07-01|-54.0|104.0|-52.41843|0.15073 +2016-07-01|-54.0|105.0|-51.31475|0.15774 +2016-07-01|-54.0|106.0|-50.13511|0.16468 +2016-07-01|-54.0|107.0|-48.87695|0.17154 +2016-07-01|-54.0|108.0|-47.53793|0.17829 +2016-07-01|-54.0|109.0|-46.11605|0.1849 +2016-07-01|-54.0|110.0|-44.60972|0.19135 +2016-07-01|-54.0|111.0|-43.0179|0.1976 +2016-07-01|-54.0|112.0|-41.34019|0.20361 +2016-07-01|-54.0|113.0|-39.57698|0.20932 +2016-07-01|-54.0|114.0|-37.72955|0.21469 +2016-07-01|-54.0|115.0|-35.80022|0.21965 +2016-07-01|-54.0|116.0|-33.79245|0.22414 +2016-07-01|-54.0|117.0|-31.71089|0.22811 +2016-07-01|-54.0|118.0|-29.56148|0.23148 +2016-07-01|-54.0|119.0|-27.35139|0.23419 +2016-07-01|-54.0|120.0|-25.08903|0.23621 +2016-07-01|-54.0|121.0|-22.78388|0.23749 +2016-07-01|-54.0|122.0|-20.4464|0.23799 +2016-07-01|-54.0|123.0|-18.08775|0.23772 +2016-07-01|-54.0|124.0|-15.71954|0.23668 +2016-07-01|-54.0|125.0|-13.35357|0.23489 +2016-07-01|-54.0|126.0|-11.00149|0.2324 +2016-07-01|-54.0|127.0|-8.67455|0.22927 +2016-07-01|-54.0|128.0|-6.38328|0.22556 +2016-07-01|-54.0|129.0|-4.13733|0.22135 +2016-07-01|-54.0|130.0|-1.94525|0.21674 +2016-07-01|-54.0|131.0|0.1856|0.2118 +2016-07-01|-54.0|132.0|2.24914|0.20663 +2016-07-01|-54.0|133.0|4.2405|0.20131 +2016-07-01|-54.0|134.0|6.15605|0.19592 +2016-07-01|-54.0|135.0|7.99331|0.19052 +2016-07-01|-54.0|136.0|9.7508|0.18518 +2016-07-01|-54.0|137.0|11.42799|0.17995 +2016-07-01|-54.0|138.0|13.0251|0.17487 +2016-07-01|-54.0|139.0|14.54305|0.16997 +2016-07-01|-54.0|140.0|15.9833|0.16529 +2016-07-01|-54.0|141.0|17.3477|0.16084 +2016-07-01|-54.0|142.0|18.63849|0.15663 +2016-07-01|-54.0|143.0|19.8581|0.15268 +2016-07-01|-54.0|144.0|21.00917|0.14898 +2016-07-01|-54.0|145.0|22.09443|0.14554 +2016-07-01|-54.0|146.0|23.11665|0.14236 +2016-07-01|-54.0|147.0|24.07862|0.13942 +2016-07-01|-54.0|148.0|24.98311|0.13671 +2016-07-01|-54.0|149.0|25.83283|0.13424 +2016-07-01|-54.0|150.0|26.63043|0.13198 +2016-07-01|-54.0|151.0|27.37848|0.12994 +2016-07-01|-54.0|152.0|28.07945|0.12808 +2016-07-01|-54.0|153.0|28.73571|0.1264 +2016-07-01|-54.0|154.0|29.34953|0.1249 +2016-07-01|-54.0|155.0|29.92309|0.12354 +2016-07-01|-54.0|156.0|30.45844|0.12233 +2016-07-01|-54.0|157.0|30.95757|0.12125 +2016-07-01|-54.0|158.0|31.42233|0.12028 +2016-07-01|-54.0|159.0|31.85452|0.11942 +2016-07-01|-54.0|160.0|32.25581|0.11864 +2016-07-01|-54.0|161.0|32.62782|0.11794 +2016-07-01|-54.0|162.0|32.97207|0.11731 +2016-07-01|-54.0|163.0|33.29|0.11674 +2016-07-01|-54.0|164.0|33.58301|0.11621 +2016-07-01|-54.0|165.0|33.85239|0.11572 +2016-07-01|-54.0|166.0|34.0994|0.11525 +2016-07-01|-54.0|167.0|34.32523|0.1148 +2016-07-01|-54.0|168.0|34.53101|0.11436 +2016-07-01|-54.0|169.0|34.71781|0.11392 +2016-07-01|-54.0|170.0|34.88668|0.11348 +2016-07-01|-54.0|171.0|35.03858|0.11301 +2016-07-01|-54.0|172.0|35.17448|0.11253 +2016-07-01|-54.0|173.0|35.29525|0.11203 +2016-07-01|-54.0|174.0|35.40175|0.11149 +2016-07-01|-54.0|175.0|35.49482|0.11091 +2016-07-01|-54.0|176.0|35.57523|0.1103 +2016-07-01|-54.0|177.0|35.64372|0.10964 +2016-07-01|-54.0|178.0|35.70103|0.10894 +2016-07-01|-54.0|179.0|35.74783|0.10818 +2016-07-01|-54.0|-1.0|-20.14151|-0.04065 +2016-07-01|-54.0|-2.0|-19.64842|-0.03436 +2016-07-01|-54.0|-3.0|-19.17027|-0.02828 +2016-07-01|-54.0|-4.0|-18.70687|-0.02243 +2016-07-01|-54.0|-5.0|-18.25794|-0.01683 +2016-07-01|-54.0|-6.0|-17.82312|-0.01149 +2016-07-01|-54.0|-7.0|-17.40199|-0.00644 +2016-07-01|-54.0|-8.0|-16.99404|-0.00169 +2016-07-01|-54.0|-9.0|-16.59871|0.00275 +2016-07-01|-54.0|-10.0|-16.21536|0.00686 +2016-07-01|-54.0|-11.0|-15.84329|0.01064 +2016-07-01|-54.0|-12.0|-15.48174|0.01407 +2016-07-01|-54.0|-13.0|-15.12991|0.01716 +2016-07-01|-54.0|-14.0|-14.78694|0.01989 +2016-07-01|-54.0|-15.0|-14.45193|0.02227 +2016-07-01|-54.0|-16.0|-14.12396|0.02429 +2016-07-01|-54.0|-17.0|-13.80205|0.02596 +2016-07-01|-54.0|-18.0|-13.48521|0.02728 +2016-07-01|-54.0|-19.0|-13.17242|0.02825 +2016-07-01|-54.0|-20.0|-12.86266|0.02888 +2016-07-01|-54.0|-21.0|-12.55487|0.02917 +2016-07-01|-54.0|-22.0|-12.24801|0.02913 +2016-07-01|-54.0|-23.0|-11.94104|0.02878 +2016-07-01|-54.0|-24.0|-11.6329|0.02812 +2016-07-01|-54.0|-25.0|-11.32256|0.02716 +2016-07-01|-54.0|-26.0|-11.009|0.02591 +2016-07-01|-54.0|-27.0|-10.69121|0.02439 +2016-07-01|-54.0|-28.0|-10.36821|0.02261 +2016-07-01|-54.0|-29.0|-10.03905|0.02059 +2016-07-01|-54.0|-30.0|-9.70281|0.01834 +2016-07-01|-54.0|-31.0|-9.3586|0.01587 +2016-07-01|-54.0|-32.0|-9.00557|0.01321 +2016-07-01|-54.0|-33.0|-8.64293|0.01036 +2016-07-01|-54.0|-34.0|-8.26993|0.00735 +2016-07-01|-54.0|-35.0|-7.88584|0.00419 +2016-07-01|-54.0|-36.0|-7.49004|9.1E-4 +2016-07-01|-54.0|-37.0|-7.08192|-0.00248 +2016-07-01|-54.0|-38.0|-6.66096|-0.00597 +2016-07-01|-54.0|-39.0|-6.22668|-0.00952 +2016-07-01|-54.0|-40.0|-5.77869|-0.01313 +2016-07-01|-54.0|-41.0|-5.31664|-0.01677 +2016-07-01|-54.0|-42.0|-4.84027|-0.02042 +2016-07-01|-54.0|-43.0|-4.34938|-0.02407 +2016-07-01|-54.0|-44.0|-3.84385|-0.0277 +2016-07-01|-54.0|-45.0|-3.32363|-0.03129 +2016-07-01|-54.0|-46.0|-2.78872|-0.03481 +2016-07-01|-54.0|-47.0|-2.23924|-0.03826 +2016-07-01|-54.0|-48.0|-1.67533|-0.04162 +2016-07-01|-54.0|-49.0|-1.09724|-0.04487 +2016-07-01|-54.0|-50.0|-0.50528|-0.048 +2016-07-01|-54.0|-51.0|0.10018|-0.05099 +2016-07-01|-54.0|-52.0|0.71869|-0.05383 +2016-07-01|-54.0|-53.0|1.34974|-0.05651 +2016-07-01|-54.0|-54.0|1.99276|-0.05901 +2016-07-01|-54.0|-55.0|2.64711|-0.06133 +2016-07-01|-54.0|-56.0|3.3121|-0.06346 +2016-07-01|-54.0|-57.0|3.98698|-0.06539 +2016-07-01|-54.0|-58.0|4.67097|-0.06711 +2016-07-01|-54.0|-59.0|5.36322|-0.06863 +2016-07-01|-54.0|-60.0|6.06285|-0.06993 +2016-07-01|-54.0|-61.0|6.76894|-0.07102 +2016-07-01|-54.0|-62.0|7.48055|-0.07189 +2016-07-01|-54.0|-63.0|8.19669|-0.07255 +2016-07-01|-54.0|-64.0|8.91638|-0.07299 +2016-07-01|-54.0|-65.0|9.63858|-0.07322 +2016-07-01|-54.0|-66.0|10.36228|-0.07325 +2016-07-01|-54.0|-67.0|11.08643|-0.07308 +2016-07-01|-54.0|-68.0|11.81|-0.07271 +2016-07-01|-54.0|-69.0|12.53196|-0.07216 +2016-07-01|-54.0|-70.0|13.25128|-0.07142 +2016-07-01|-54.0|-71.0|13.96694|-0.07052 +2016-07-01|-54.0|-72.0|14.67794|-0.06946 +2016-07-01|-54.0|-73.0|15.38331|-0.06825 +2016-07-01|-54.0|-74.0|16.08208|-0.0669 +2016-07-01|-54.0|-75.0|16.77334|-0.06542 +2016-07-01|-54.0|-76.0|17.45618|-0.06382 +2016-07-01|-54.0|-77.0|18.12974|-0.06212 +2016-07-01|-54.0|-78.0|18.79321|-0.06033 +2016-07-01|-54.0|-79.0|19.44578|-0.05845 +2016-07-01|-54.0|-80.0|20.08673|-0.05651 +2016-07-01|-54.0|-81.0|20.71535|-0.0545 +2016-07-01|-54.0|-82.0|21.33097|-0.05245 +2016-07-01|-54.0|-83.0|21.93301|-0.05036 +2016-07-01|-54.0|-84.0|22.52088|-0.04824 +2016-07-01|-54.0|-85.0|23.09408|-0.0461 +2016-07-01|-54.0|-86.0|23.65213|-0.04396 +2016-07-01|-54.0|-87.0|24.19463|-0.04182 +2016-07-01|-54.0|-88.0|24.72121|-0.03969 +2016-07-01|-54.0|-89.0|25.23154|-0.03757 +2016-07-01|-54.0|-90.0|25.72536|-0.03548 +2016-07-01|-54.0|-91.0|26.20245|-0.03342 +2016-07-01|-54.0|-92.0|26.66262|-0.03139 +2016-07-01|-54.0|-93.0|27.10576|-0.02941 +2016-07-01|-54.0|-94.0|27.5318|-0.02747 +2016-07-01|-54.0|-95.0|27.94068|-0.02558 +2016-07-01|-54.0|-96.0|28.33244|-0.02374 +2016-07-01|-54.0|-97.0|28.70711|-0.02195 +2016-07-01|-54.0|-98.0|29.06482|-0.02022 +2016-07-01|-54.0|-99.0|29.40569|-0.01854 +2016-07-01|-54.0|-100.0|29.72991|-0.01692 +2016-07-01|-54.0|-101.0|30.0377|-0.01535 +2016-07-01|-54.0|-102.0|30.32932|-0.01384 +2016-07-01|-54.0|-103.0|30.60507|-0.01238 +2016-07-01|-54.0|-104.0|30.86528|-0.01096 +2016-07-01|-54.0|-105.0|31.11031|-0.00959 +2016-07-01|-54.0|-106.0|31.34056|-0.00827 +2016-07-01|-54.0|-107.0|31.55646|-0.00698 +2016-07-01|-54.0|-108.0|31.75845|-0.00572 +2016-07-01|-54.0|-109.0|31.94703|-0.0045 +2016-07-01|-54.0|-110.0|32.12268|-0.0033 +2016-07-01|-54.0|-111.0|32.28595|-0.00212 +2016-07-01|-54.0|-112.0|32.43736|-9.6E-4 +2016-07-01|-54.0|-113.0|32.57748|2.0E-4 +2016-07-01|-54.0|-114.0|32.70689|0.00135 +2016-07-01|-54.0|-115.0|32.82617|0.0025 +2016-07-01|-54.0|-116.0|32.93591|0.00365 +2016-07-01|-54.0|-117.0|33.03673|0.00482 +2016-07-01|-54.0|-118.0|33.12923|0.006 +2016-07-01|-54.0|-119.0|33.21402|0.0072 +2016-07-01|-54.0|-120.0|33.2917|0.00842 +2016-07-01|-54.0|-121.0|33.36287|0.00967 +2016-07-01|-54.0|-122.0|33.42815|0.01095 +2016-07-01|-54.0|-123.0|33.4881|0.01227 +2016-07-01|-54.0|-124.0|33.54332|0.01361 +2016-07-01|-54.0|-125.0|33.59436|0.015 +2016-07-01|-54.0|-126.0|33.64176|0.01643 +2016-07-01|-54.0|-127.0|33.68606|0.01789 +2016-07-01|-54.0|-128.0|33.72775|0.0194 +2016-07-01|-54.0|-129.0|33.76733|0.02095 +2016-07-01|-54.0|-130.0|33.80525|0.02254 +2016-07-01|-54.0|-131.0|33.84195|0.02418 +2016-07-01|-54.0|-132.0|33.87782|0.02585 +2016-07-01|-54.0|-133.0|33.91324|0.02756 +2016-07-01|-54.0|-134.0|33.94856|0.02931 +2016-07-01|-54.0|-135.0|33.98409|0.0311 +2016-07-01|-54.0|-136.0|34.02011|0.03291 +2016-07-01|-54.0|-137.0|34.05688|0.03477 +2016-07-01|-54.0|-138.0|34.09462|0.03665 +2016-07-01|-54.0|-139.0|34.13351|0.03855 +2016-07-01|-54.0|-140.0|34.17371|0.04048 +2016-07-01|-54.0|-141.0|34.21534|0.04244 +2016-07-01|-54.0|-142.0|34.25851|0.04441 +2016-07-01|-54.0|-143.0|34.30326|0.04639 +2016-07-01|-54.0|-144.0|34.34965|0.04839 +2016-07-01|-54.0|-145.0|34.39767|0.0504 +2016-07-01|-54.0|-146.0|34.44732|0.05242 +2016-07-01|-54.0|-147.0|34.49855|0.05444 +2016-07-01|-54.0|-148.0|34.55129|0.05647 +2016-07-01|-54.0|-149.0|34.60545|0.05849 +2016-07-01|-54.0|-150.0|34.66092|0.06051 +2016-07-01|-54.0|-151.0|34.71759|0.06252 +2016-07-01|-54.0|-152.0|34.77528|0.06453 +2016-07-01|-54.0|-153.0|34.83385|0.06652 +2016-07-01|-54.0|-154.0|34.89311|0.0685 +2016-07-01|-54.0|-155.0|34.95286|0.07046 +2016-07-01|-54.0|-156.0|35.01289|0.07241 +2016-07-01|-54.0|-157.0|35.07299|0.07433 +2016-07-01|-54.0|-158.0|35.13292|0.07622 +2016-07-01|-54.0|-159.0|35.19242|0.07809 +2016-07-01|-54.0|-160.0|35.25125|0.07993 +2016-07-01|-54.0|-161.0|35.30913|0.08174 +2016-07-01|-54.0|-162.0|35.36578|0.08352 +2016-07-01|-54.0|-163.0|35.42092|0.08526 +2016-07-01|-54.0|-164.0|35.47425|0.08696 +2016-07-01|-54.0|-165.0|35.52545|0.08862 +2016-07-01|-54.0|-166.0|35.57419|0.09023 +2016-07-01|-54.0|-167.0|35.62015|0.0918 +2016-07-01|-54.0|-168.0|35.66298|0.09332 +2016-07-01|-54.0|-169.0|35.70231|0.09479 +2016-07-01|-54.0|-170.0|35.73777|0.09622 +2016-07-01|-54.0|-171.0|35.76896|0.09758 +2016-07-01|-54.0|-172.0|35.79549|0.0989 +2016-07-01|-54.0|-173.0|35.81693|0.10016 +2016-07-01|-54.0|-174.0|35.83284|0.10136 +2016-07-01|-54.0|-175.0|35.84275|0.1025 +2016-07-01|-54.0|-176.0|35.84618|0.10359 +2016-07-01|-54.0|-177.0|35.84264|0.10462 +2016-07-01|-54.0|-178.0|35.83159|0.1056 +2016-07-01|-54.0|-179.0|35.8125|0.10651 +2016-07-01|-55.0|0.0|-20.51384|-0.05065 +2016-07-01|-55.0|1.0|-21.05388|-0.05703 +2016-07-01|-55.0|2.0|-21.60825|-0.06353 +2016-07-01|-55.0|3.0|-22.17678|-0.07011 +2016-07-01|-55.0|4.0|-22.75929|-0.07676 +2016-07-01|-55.0|5.0|-23.35548|-0.08344 +2016-07-01|-55.0|6.0|-23.96502|-0.09013 +2016-07-01|-55.0|7.0|-24.5875|-0.09681 +2016-07-01|-55.0|8.0|-25.22246|-0.10345 +2016-07-01|-55.0|9.0|-25.86937|-0.11002 +2016-07-01|-55.0|10.0|-26.52769|-0.11651 +2016-07-01|-55.0|11.0|-27.19678|-0.12288 +2016-07-01|-55.0|12.0|-27.876|-0.12912 +2016-07-01|-55.0|13.0|-28.56467|-0.13521 +2016-07-01|-55.0|14.0|-29.26206|-0.14112 +2016-07-01|-55.0|15.0|-29.96744|-0.14684 +2016-07-01|-55.0|16.0|-30.68003|-0.15236 +2016-07-01|-55.0|17.0|-31.39907|-0.15764 +2016-07-01|-55.0|18.0|-32.12376|-0.1627 +2016-07-01|-55.0|19.0|-32.85332|-0.1675 +2016-07-01|-55.0|20.0|-33.58694|-0.17204 +2016-07-01|-55.0|21.0|-34.32383|-0.17632 +2016-07-01|-55.0|22.0|-35.06321|-0.18032 +2016-07-01|-55.0|23.0|-35.80429|-0.18404 +2016-07-01|-55.0|24.0|-36.54632|-0.18747 +2016-07-01|-55.0|25.0|-37.28853|-0.19062 +2016-07-01|-55.0|26.0|-38.03021|-0.19347 +2016-07-01|-55.0|27.0|-38.77063|-0.19604 +2016-07-01|-55.0|28.0|-39.50909|-0.19832 +2016-07-01|-55.0|29.0|-40.24494|-0.20031 +2016-07-01|-55.0|30.0|-40.97751|-0.20201 +2016-07-01|-55.0|31.0|-41.70618|-0.20344 +2016-07-01|-55.0|32.0|-42.43036|-0.20458 +2016-07-01|-55.0|33.0|-43.14945|-0.20546 +2016-07-01|-55.0|34.0|-43.86292|-0.20607 +2016-07-01|-55.0|35.0|-44.57022|-0.20642 +2016-07-01|-55.0|36.0|-45.27085|-0.20651 +2016-07-01|-55.0|37.0|-45.96433|-0.20636 +2016-07-01|-55.0|38.0|-46.6502|-0.20596 +2016-07-01|-55.0|39.0|-47.32801|-0.20533 +2016-07-01|-55.0|40.0|-47.99734|-0.20447 +2016-07-01|-55.0|41.0|-48.65779|-0.20338 +2016-07-01|-55.0|42.0|-49.30898|-0.20208 +2016-07-01|-55.0|43.0|-49.95054|-0.20057 +2016-07-01|-55.0|44.0|-50.58212|-0.19886 +2016-07-01|-55.0|45.0|-51.2034|-0.19694 +2016-07-01|-55.0|46.0|-51.81405|-0.19484 +2016-07-01|-55.0|47.0|-52.41376|-0.19254 +2016-07-01|-55.0|48.0|-53.00225|-0.19007 +2016-07-01|-55.0|49.0|-53.57922|-0.18742 +2016-07-01|-55.0|50.0|-54.14441|-0.1846 +2016-07-01|-55.0|51.0|-54.69755|-0.1816 +2016-07-01|-55.0|52.0|-55.23838|-0.17845 +2016-07-01|-55.0|53.0|-55.76666|-0.17514 +2016-07-01|-55.0|54.0|-56.28214|-0.17166 +2016-07-01|-55.0|55.0|-56.78458|-0.16804 +2016-07-01|-55.0|56.0|-57.27375|-0.16427 +2016-07-01|-55.0|57.0|-57.74941|-0.16035 +2016-07-01|-55.0|58.0|-58.21132|-0.15629 +2016-07-01|-55.0|59.0|-58.65926|-0.1521 +2016-07-01|-55.0|60.0|-59.09297|-0.14776 +2016-07-01|-55.0|61.0|-59.51223|-0.14329 +2016-07-01|-55.0|62.0|-59.91677|-0.13869 +2016-07-01|-55.0|63.0|-60.30636|-0.13396 +2016-07-01|-55.0|64.0|-60.68073|-0.12911 +2016-07-01|-55.0|65.0|-61.03959|-0.12414 +2016-07-01|-55.0|66.0|-61.38268|-0.11905 +2016-07-01|-55.0|67.0|-61.70967|-0.11384 +2016-07-01|-55.0|68.0|-62.02027|-0.10852 +2016-07-01|-55.0|69.0|-62.31412|-0.10309 +2016-07-01|-55.0|70.0|-62.59087|-0.09756 +2016-07-01|-55.0|71.0|-62.85014|-0.09193 +2016-07-01|-55.0|72.0|-63.0915|-0.0862 +2016-07-01|-55.0|73.0|-63.31453|-0.08037 +2016-07-01|-55.0|74.0|-63.51875|-0.07446 +2016-07-01|-55.0|75.0|-63.70365|-0.06846 +2016-07-01|-55.0|76.0|-63.86867|-0.06238 +2016-07-01|-55.0|77.0|-64.01322|-0.05622 +2016-07-01|-55.0|78.0|-64.13666|-0.04999 +2016-07-01|-55.0|79.0|-64.23831|-0.0437 +2016-07-01|-55.0|80.0|-64.3174|-0.03733 +2016-07-01|-55.0|81.0|-64.37315|-0.03091 +2016-07-01|-55.0|82.0|-64.40467|-0.02444 +2016-07-01|-55.0|83.0|-64.41103|-0.01791 +2016-07-01|-55.0|84.0|-64.39122|-0.01133 +2016-07-01|-55.0|85.0|-64.34415|-0.00471 +2016-07-01|-55.0|86.0|-64.26865|0.00195 +2016-07-01|-55.0|87.0|-64.16344|0.00865 +2016-07-01|-55.0|88.0|-64.02716|0.01539 +2016-07-01|-55.0|89.0|-63.85836|0.02216 +2016-07-01|-55.0|90.0|-63.65545|0.02897 +2016-07-01|-55.0|91.0|-63.41675|0.03582 +2016-07-01|-55.0|92.0|-63.14044|0.0427 +2016-07-01|-55.0|93.0|-62.82457|0.04962 +2016-07-01|-55.0|94.0|-62.46707|0.05658 +2016-07-01|-55.0|95.0|-62.0657|0.06358 +2016-07-01|-55.0|96.0|-61.61807|0.07062 +2016-07-01|-55.0|97.0|-61.12167|0.07772 +2016-07-01|-55.0|98.0|-60.57377|0.08487 +2016-07-01|-55.0|99.0|-59.97153|0.09209 +2016-07-01|-55.0|100.0|-59.31189|0.09938 +2016-07-01|-55.0|101.0|-58.59168|0.10674 +2016-07-01|-55.0|102.0|-57.80752|0.11418 +2016-07-01|-55.0|103.0|-56.95591|0.12172 +2016-07-01|-55.0|104.0|-56.03322|0.12935 +2016-07-01|-55.0|105.0|-55.03569|0.13709 +2016-07-01|-55.0|106.0|-53.95951|0.14493 +2016-07-01|-55.0|107.0|-52.80084|0.15287 +2016-07-01|-55.0|108.0|-51.55588|0.1609 +2016-07-01|-55.0|109.0|-50.22095|0.16903 +2016-07-01|-55.0|110.0|-48.79258|0.17723 +2016-07-01|-55.0|111.0|-47.26764|0.18547 +2016-07-01|-55.0|112.0|-45.64347|0.19373 +2016-07-01|-55.0|113.0|-43.91807|0.20194 +2016-07-01|-55.0|114.0|-42.09025|0.21006 +2016-07-01|-55.0|115.0|-40.15985|0.21802 +2016-07-01|-55.0|116.0|-38.12794|0.22572 +2016-07-01|-55.0|117.0|-35.99702|0.23307 +2016-07-01|-55.0|118.0|-33.77122|0.23995 +2016-07-01|-55.0|119.0|-31.45641|0.24626 +2016-07-01|-55.0|120.0|-29.06034|0.25187 +2016-07-01|-55.0|121.0|-26.59259|0.25666 +2016-07-01|-55.0|122.0|-24.06454|0.26053 +2016-07-01|-55.0|123.0|-21.48915|0.26339 +2016-07-01|-55.0|124.0|-18.88068|0.26517 +2016-07-01|-55.0|125.0|-16.25434|0.26584 +2016-07-01|-55.0|126.0|-13.62578|0.26539 +2016-07-01|-55.0|127.0|-11.01066|0.26385 +2016-07-01|-55.0|128.0|-8.42414|0.26127 +2016-07-01|-55.0|129.0|-5.88046|0.25776 +2016-07-01|-55.0|130.0|-3.39253|0.25342 +2016-07-01|-55.0|131.0|-0.97165|0.24838 +2016-07-01|-55.0|132.0|1.37263|0.24277 +2016-07-01|-55.0|133.0|3.63265|0.23673 +2016-07-01|-55.0|134.0|5.80258|0.23039 +2016-07-01|-55.0|135.0|7.87834|0.22388 +2016-07-01|-55.0|136.0|9.85745|0.21729 +2016-07-01|-55.0|137.0|11.73888|0.21073 +2016-07-01|-55.0|138.0|13.52279|0.20428 +2016-07-01|-55.0|139.0|15.21036|0.19799 +2016-07-01|-55.0|140.0|16.80361|0.19193 +2016-07-01|-55.0|141.0|18.30516|0.18613 +2016-07-01|-55.0|142.0|19.71811|0.18062 +2016-07-01|-55.0|143.0|21.04589|0.17541 +2016-07-01|-55.0|144.0|22.29216|0.17051 +2016-07-01|-55.0|145.0|23.46066|0.16593 +2016-07-01|-55.0|146.0|24.5552|0.16167 +2016-07-01|-55.0|147.0|25.57955|0.15772 +2016-07-01|-55.0|148.0|26.5374|0.15407 +2016-07-01|-55.0|149.0|27.43236|0.15071 +2016-07-01|-55.0|150.0|28.2679|0.14762 +2016-07-01|-55.0|151.0|29.04734|0.14479 +2016-07-01|-55.0|152.0|29.77385|0.1422 +2016-07-01|-55.0|153.0|30.45046|0.13984 +2016-07-01|-55.0|154.0|31.08001|0.1377 +2016-07-01|-55.0|155.0|31.66521|0.13574 +2016-07-01|-55.0|156.0|32.2086|0.13397 +2016-07-01|-55.0|157.0|32.71259|0.13236 +2016-07-01|-55.0|158.0|33.17944|0.13089 +2016-07-01|-55.0|159.0|33.61128|0.12956 +2016-07-01|-55.0|160.0|34.01011|0.12834 +2016-07-01|-55.0|161.0|34.37781|0.12723 +2016-07-01|-55.0|162.0|34.71617|0.12621 +2016-07-01|-55.0|163.0|35.02685|0.12526 +2016-07-01|-55.0|164.0|35.31144|0.12438 +2016-07-01|-55.0|165.0|35.57142|0.12355 +2016-07-01|-55.0|166.0|35.80819|0.12276 +2016-07-01|-55.0|167.0|36.0231|0.12201 +2016-07-01|-55.0|168.0|36.21738|0.12128 +2016-07-01|-55.0|169.0|36.39222|0.12056 +2016-07-01|-55.0|170.0|36.54876|0.11985 +2016-07-01|-55.0|171.0|36.68806|0.11914 +2016-07-01|-55.0|172.0|36.81113|0.11842 +2016-07-01|-55.0|173.0|36.91892|0.11768 +2016-07-01|-55.0|174.0|37.01236|0.11692 +2016-07-01|-55.0|175.0|37.09231|0.11614 +2016-07-01|-55.0|176.0|37.1596|0.11532 +2016-07-01|-55.0|177.0|37.215|0.11447 +2016-07-01|-55.0|178.0|37.25927|0.11357 +2016-07-01|-55.0|179.0|37.29312|0.11264 +2016-07-01|-55.0|-1.0|-19.98817|-0.0444 +2016-07-01|-55.0|-2.0|-19.47688|-0.03831 +2016-07-01|-55.0|-3.0|-18.97988|-0.03241 +2016-07-01|-55.0|-4.0|-18.49702|-0.0267 +2016-07-01|-55.0|-5.0|-18.02807|-0.02122 +2016-07-01|-55.0|-6.0|-17.57274|-0.01598 +2016-07-01|-55.0|-7.0|-17.13064|-0.011 +2016-07-01|-55.0|-8.0|-16.70134|-0.0063 +2016-07-01|-55.0|-9.0|-16.28434|-0.00188 +2016-07-01|-55.0|-10.0|-15.87905|0.00224 +2016-07-01|-55.0|-11.0|-15.48486|0.00605 +2016-07-01|-55.0|-12.0|-15.10108|0.00955 +2016-07-01|-55.0|-13.0|-14.72696|0.01271 +2016-07-01|-55.0|-14.0|-14.36173|0.01554 +2016-07-01|-55.0|-15.0|-14.00456|0.01804 +2016-07-01|-55.0|-16.0|-13.65457|0.02021 +2016-07-01|-55.0|-17.0|-13.31086|0.02203 +2016-07-01|-55.0|-18.0|-12.97252|0.02352 +2016-07-01|-55.0|-19.0|-12.63858|0.02468 +2016-07-01|-55.0|-20.0|-12.30807|0.0255 +2016-07-01|-55.0|-21.0|-11.98001|0.026 +2016-07-01|-55.0|-22.0|-11.6534|0.02619 +2016-07-01|-55.0|-23.0|-11.32726|0.02606 +2016-07-01|-55.0|-24.0|-11.00057|0.02563 +2016-07-01|-55.0|-25.0|-10.67236|0.0249 +2016-07-01|-55.0|-26.0|-10.34164|0.0239 +2016-07-01|-55.0|-27.0|-10.00745|0.02263 +2016-07-01|-55.0|-28.0|-9.66886|0.0211 +2016-07-01|-55.0|-29.0|-9.32495|0.01932 +2016-07-01|-55.0|-30.0|-8.97482|0.01732 +2016-07-01|-55.0|-31.0|-8.61763|0.0151 +2016-07-01|-55.0|-32.0|-8.25256|0.01269 +2016-07-01|-55.0|-33.0|-7.87884|0.01009 +2016-07-01|-55.0|-34.0|-7.49573|0.00733 +2016-07-01|-55.0|-35.0|-7.10256|0.00442 +2016-07-01|-55.0|-36.0|-6.69869|0.00137 +2016-07-01|-55.0|-37.0|-6.28355|-0.00178 +2016-07-01|-55.0|-38.0|-5.85663|-0.00503 +2016-07-01|-55.0|-39.0|-5.41746|-0.00835 +2016-07-01|-55.0|-40.0|-4.96564|-0.01174 +2016-07-01|-55.0|-41.0|-4.50085|-0.01516 +2016-07-01|-55.0|-42.0|-4.02282|-0.0186 +2016-07-01|-55.0|-43.0|-3.53134|-0.02205 +2016-07-01|-55.0|-44.0|-3.02629|-0.02548 +2016-07-01|-55.0|-45.0|-2.50759|-0.02888 +2016-07-01|-55.0|-46.0|-1.97526|-0.03222 +2016-07-01|-55.0|-47.0|-1.42936|-0.03551 +2016-07-01|-55.0|-48.0|-0.87004|-0.03871 +2016-07-01|-55.0|-49.0|-0.29749|-0.04181 +2016-07-01|-55.0|-50.0|0.28799|-0.0448 +2016-07-01|-55.0|-51.0|0.88608|-0.04767 +2016-07-01|-55.0|-52.0|1.49637|-0.0504 +2016-07-01|-55.0|-53.0|2.1184|-0.05298 +2016-07-01|-55.0|-54.0|2.75164|-0.0554 +2016-07-01|-55.0|-55.0|3.39552|-0.05766 +2016-07-01|-55.0|-56.0|4.04941|-0.05973 +2016-07-01|-55.0|-57.0|4.71261|-0.06162 +2016-07-01|-55.0|-58.0|5.38442|-0.06332 +2016-07-01|-55.0|-59.0|6.06404|-0.06483 +2016-07-01|-55.0|-60.0|6.75068|-0.06613 +2016-07-01|-55.0|-61.0|7.44349|-0.06724 +2016-07-01|-55.0|-62.0|8.1416|-0.06814 +2016-07-01|-55.0|-63.0|8.8441|-0.06885 +2016-07-01|-55.0|-64.0|9.55008|-0.06935 +2016-07-01|-55.0|-65.0|10.25859|-0.06966 +2016-07-01|-55.0|-66.0|10.96869|-0.06977 +2016-07-01|-55.0|-67.0|11.67942|-0.06969 +2016-07-01|-55.0|-68.0|12.38982|-0.06943 +2016-07-01|-55.0|-69.0|13.09892|-0.069 +2016-07-01|-55.0|-70.0|13.80577|-0.06839 +2016-07-01|-55.0|-71.0|14.50943|-0.06762 +2016-07-01|-55.0|-72.0|15.20896|-0.06669 +2016-07-01|-55.0|-73.0|15.90344|-0.06563 +2016-07-01|-55.0|-74.0|16.59199|-0.06442 +2016-07-01|-55.0|-75.0|17.27373|-0.0631 +2016-07-01|-55.0|-76.0|17.94781|-0.06166 +2016-07-01|-55.0|-77.0|18.61342|-0.06011 +2016-07-01|-55.0|-78.0|19.26979|-0.05847 +2016-07-01|-55.0|-79.0|19.91615|-0.05675 +2016-07-01|-55.0|-80.0|20.55181|-0.05495 +2016-07-01|-55.0|-81.0|21.17609|-0.0531 +2016-07-01|-55.0|-82.0|21.78835|-0.05119 +2016-07-01|-55.0|-83.0|22.38801|-0.04924 +2016-07-01|-55.0|-84.0|22.97452|-0.04726 +2016-07-01|-55.0|-85.0|23.54737|-0.04525 +2016-07-01|-55.0|-86.0|24.1061|-0.04323 +2016-07-01|-55.0|-87.0|24.65029|-0.04121 +2016-07-01|-55.0|-88.0|25.17957|-0.03918 +2016-07-01|-55.0|-89.0|25.69362|-0.03717 +2016-07-01|-55.0|-90.0|26.19214|-0.03517 +2016-07-01|-55.0|-91.0|26.67491|-0.0332 +2016-07-01|-55.0|-92.0|27.14172|-0.03125 +2016-07-01|-55.0|-93.0|27.59243|-0.02933 +2016-07-01|-55.0|-94.0|28.02693|-0.02745 +2016-07-01|-55.0|-95.0|28.44516|-0.02561 +2016-07-01|-55.0|-96.0|28.84709|-0.02382 +2016-07-01|-55.0|-97.0|29.23275|-0.02206 +2016-07-01|-55.0|-98.0|29.60219|-0.02036 +2016-07-01|-55.0|-99.0|29.95552|-0.0187 +2016-07-01|-55.0|-100.0|30.29287|-0.01709 +2016-07-01|-55.0|-101.0|30.61442|-0.01552 +2016-07-01|-55.0|-102.0|30.92038|-0.01401 +2016-07-01|-55.0|-103.0|31.21101|-0.01253 +2016-07-01|-55.0|-104.0|31.48657|-0.01111 +2016-07-01|-55.0|-105.0|31.74739|-0.00972 +2016-07-01|-55.0|-106.0|31.99381|-0.00837 +2016-07-01|-55.0|-107.0|32.2262|-0.00705 +2016-07-01|-55.0|-108.0|32.44497|-0.00576 +2016-07-01|-55.0|-109.0|32.65054|-0.00451 +2016-07-01|-55.0|-110.0|32.84337|-0.00327 +2016-07-01|-55.0|-111.0|33.02393|-0.00205 +2016-07-01|-55.0|-112.0|33.19271|-8.5E-4 +2016-07-01|-55.0|-113.0|33.35023|3.4E-4 +2016-07-01|-55.0|-114.0|33.49701|0.00153 +2016-07-01|-55.0|-115.0|33.6336|0.00272 +2016-07-01|-55.0|-116.0|33.76056|0.00392 +2016-07-01|-55.0|-117.0|33.87843|0.00512 +2016-07-01|-55.0|-118.0|33.9878|0.00634 +2016-07-01|-55.0|-119.0|34.08924|0.00757 +2016-07-01|-55.0|-120.0|34.18332|0.00883 +2016-07-01|-55.0|-121.0|34.27061|0.01011 +2016-07-01|-55.0|-122.0|34.35169|0.01141 +2016-07-01|-55.0|-123.0|34.42712|0.01275 +2016-07-01|-55.0|-124.0|34.49746|0.01412 +2016-07-01|-55.0|-125.0|34.56325|0.01553 +2016-07-01|-55.0|-126.0|34.62502|0.01698 +2016-07-01|-55.0|-127.0|34.68329|0.01846 +2016-07-01|-55.0|-128.0|34.73857|0.01998 +2016-07-01|-55.0|-129.0|34.79132|0.02155 +2016-07-01|-55.0|-130.0|34.84201|0.02315 +2016-07-01|-55.0|-131.0|34.89107|0.0248 +2016-07-01|-55.0|-132.0|34.93891|0.02648 +2016-07-01|-55.0|-133.0|34.98592|0.0282 +2016-07-01|-55.0|-134.0|35.03245|0.02996 +2016-07-01|-55.0|-135.0|35.07883|0.03176 +2016-07-01|-55.0|-136.0|35.12535|0.0336 +2016-07-01|-55.0|-137.0|35.17229|0.03546 +2016-07-01|-55.0|-138.0|35.21989|0.03736 +2016-07-01|-55.0|-139.0|35.26836|0.03928 +2016-07-01|-55.0|-140.0|35.31787|0.04124 +2016-07-01|-55.0|-141.0|35.36857|0.04321 +2016-07-01|-55.0|-142.0|35.42058|0.04521 +2016-07-01|-55.0|-143.0|35.474|0.04722 +2016-07-01|-55.0|-144.0|35.52889|0.04926 +2016-07-01|-55.0|-145.0|35.58527|0.0513 +2016-07-01|-55.0|-146.0|35.64316|0.05336 +2016-07-01|-55.0|-147.0|35.70255|0.05542 +2016-07-01|-55.0|-148.0|35.76338|0.05749 +2016-07-01|-55.0|-149.0|35.82561|0.05956 +2016-07-01|-55.0|-150.0|35.88913|0.06164 +2016-07-01|-55.0|-151.0|35.95385|0.06371 +2016-07-01|-55.0|-152.0|36.01964|0.06577 +2016-07-01|-55.0|-153.0|36.08636|0.06783 +2016-07-01|-55.0|-154.0|36.15383|0.06987 +2016-07-01|-55.0|-155.0|36.22189|0.0719 +2016-07-01|-55.0|-156.0|36.29035|0.07392 +2016-07-01|-55.0|-157.0|36.35899|0.07591 +2016-07-01|-55.0|-158.0|36.42759|0.07789 +2016-07-01|-55.0|-159.0|36.49592|0.07984 +2016-07-01|-55.0|-160.0|36.56374|0.08177 +2016-07-01|-55.0|-161.0|36.63078|0.08367 +2016-07-01|-55.0|-162.0|36.69678|0.08553 +2016-07-01|-55.0|-163.0|36.76144|0.08736 +2016-07-01|-55.0|-164.0|36.82448|0.08916 +2016-07-01|-55.0|-165.0|36.88559|0.09092 +2016-07-01|-55.0|-166.0|36.94445|0.09264 +2016-07-01|-55.0|-167.0|37.00073|0.09431 +2016-07-01|-55.0|-168.0|37.05407|0.09595 +2016-07-01|-55.0|-169.0|37.10413|0.09753 +2016-07-01|-55.0|-170.0|37.15051|0.09907 +2016-07-01|-55.0|-171.0|37.19284|0.10056 +2016-07-01|-55.0|-172.0|37.2307|0.102 +2016-07-01|-55.0|-173.0|37.26366|0.10339 +2016-07-01|-55.0|-174.0|37.29129|0.10473 +2016-07-01|-55.0|-175.0|37.31311|0.10601 +2016-07-01|-55.0|-176.0|37.32863|0.10724 +2016-07-01|-55.0|-177.0|37.33735|0.10842 +2016-07-01|-55.0|-178.0|37.33873|0.10955 +2016-07-01|-55.0|-179.0|37.33222|0.11063 +2016-07-01|-56.0|0.0|-20.38771|-0.05397 +2016-07-01|-56.0|1.0|-20.9434|-0.06011 +2016-07-01|-56.0|2.0|-21.51268|-0.06634 +2016-07-01|-56.0|3.0|-22.09539|-0.07264 +2016-07-01|-56.0|4.0|-22.69132|-0.079 +2016-07-01|-56.0|5.0|-23.3002|-0.08538 +2016-07-01|-56.0|6.0|-23.9217|-0.09177 +2016-07-01|-56.0|7.0|-24.55542|-0.09814 +2016-07-01|-56.0|8.0|-25.20092|-0.10446 +2016-07-01|-56.0|9.0|-25.85772|-0.11073 +2016-07-01|-56.0|10.0|-26.52527|-0.1169 +2016-07-01|-56.0|11.0|-27.20301|-0.12297 +2016-07-01|-56.0|12.0|-27.89032|-0.12892 +2016-07-01|-56.0|13.0|-28.58656|-0.13472 +2016-07-01|-56.0|14.0|-29.29106|-0.14036 +2016-07-01|-56.0|15.0|-30.00312|-0.14582 +2016-07-01|-56.0|16.0|-30.72205|-0.15108 +2016-07-01|-56.0|17.0|-31.44712|-0.15614 +2016-07-01|-56.0|18.0|-32.17759|-0.16098 +2016-07-01|-56.0|19.0|-32.91272|-0.16559 +2016-07-01|-56.0|20.0|-33.65178|-0.16996 +2016-07-01|-56.0|21.0|-34.39403|-0.17408 +2016-07-01|-56.0|22.0|-35.13874|-0.17795 +2016-07-01|-56.0|23.0|-35.88517|-0.18156 +2016-07-01|-56.0|24.0|-36.63263|-0.18491 +2016-07-01|-56.0|25.0|-37.3804|-0.18798 +2016-07-01|-56.0|26.0|-38.1278|-0.19079 +2016-07-01|-56.0|27.0|-38.87417|-0.19334 +2016-07-01|-56.0|28.0|-39.61885|-0.19561 +2016-07-01|-56.0|29.0|-40.36121|-0.19761 +2016-07-01|-56.0|30.0|-41.10065|-0.19935 +2016-07-01|-56.0|31.0|-41.83657|-0.20083 +2016-07-01|-56.0|32.0|-42.56842|-0.20205 +2016-07-01|-56.0|33.0|-43.29564|-0.20302 +2016-07-01|-56.0|34.0|-44.01771|-0.20373 +2016-07-01|-56.0|35.0|-44.73414|-0.20421 +2016-07-01|-56.0|36.0|-45.44443|-0.20444 +2016-07-01|-56.0|37.0|-46.14814|-0.20443 +2016-07-01|-56.0|38.0|-46.84483|-0.2042 +2016-07-01|-56.0|39.0|-47.53408|-0.20375 +2016-07-01|-56.0|40.0|-48.21549|-0.20308 +2016-07-01|-56.0|41.0|-48.88868|-0.20219 +2016-07-01|-56.0|42.0|-49.55328|-0.20111 +2016-07-01|-56.0|43.0|-50.20897|-0.19982 +2016-07-01|-56.0|44.0|-50.85539|-0.19834 +2016-07-01|-56.0|45.0|-51.49225|-0.19668 +2016-07-01|-56.0|46.0|-52.11923|-0.19483 +2016-07-01|-56.0|47.0|-52.73606|-0.1928 +2016-07-01|-56.0|48.0|-53.34246|-0.1906 +2016-07-01|-56.0|49.0|-53.93815|-0.18823 +2016-07-01|-56.0|50.0|-54.52289|-0.18571 +2016-07-01|-56.0|51.0|-55.09644|-0.18302 +2016-07-01|-56.0|52.0|-55.65855|-0.18018 +2016-07-01|-56.0|53.0|-56.209|-0.17718 +2016-07-01|-56.0|54.0|-56.74757|-0.17405 +2016-07-01|-56.0|55.0|-57.27402|-0.17077 +2016-07-01|-56.0|56.0|-57.78816|-0.16735 +2016-07-01|-56.0|57.0|-58.28976|-0.16379 +2016-07-01|-56.0|58.0|-58.77861|-0.16011 +2016-07-01|-56.0|59.0|-59.25451|-0.15629 +2016-07-01|-56.0|60.0|-59.71724|-0.15235 +2016-07-01|-56.0|61.0|-60.16659|-0.14829 +2016-07-01|-56.0|62.0|-60.60233|-0.14411 +2016-07-01|-56.0|63.0|-61.02425|-0.13981 +2016-07-01|-56.0|64.0|-61.43211|-0.13539 +2016-07-01|-56.0|65.0|-61.82568|-0.13087 +2016-07-01|-56.0|66.0|-62.20469|-0.12624 +2016-07-01|-56.0|67.0|-62.56889|-0.12151 +2016-07-01|-56.0|68.0|-62.918|-0.11668 +2016-07-01|-56.0|69.0|-63.25172|-0.11174 +2016-07-01|-56.0|70.0|-63.56974|-0.10672 +2016-07-01|-56.0|71.0|-63.87171|-0.10161 +2016-07-01|-56.0|72.0|-64.15729|-0.09641 +2016-07-01|-56.0|73.0|-64.42608|-0.09112 +2016-07-01|-56.0|74.0|-64.67767|-0.08576 +2016-07-01|-56.0|75.0|-64.91161|-0.08032 +2016-07-01|-56.0|76.0|-65.1274|-0.07481 +2016-07-01|-56.0|77.0|-65.32453|-0.06923 +2016-07-01|-56.0|78.0|-65.50243|-0.06359 +2016-07-01|-56.0|79.0|-65.66048|-0.05788 +2016-07-01|-56.0|80.0|-65.79802|-0.05212 +2016-07-01|-56.0|81.0|-65.91432|-0.0463 +2016-07-01|-56.0|82.0|-66.00861|-0.04044 +2016-07-01|-56.0|83.0|-66.08003|-0.03452 +2016-07-01|-56.0|84.0|-66.12768|-0.02855 +2016-07-01|-56.0|85.0|-66.15056|-0.02254 +2016-07-01|-56.0|86.0|-66.1476|-0.01649 +2016-07-01|-56.0|87.0|-66.11763|-0.01039 +2016-07-01|-56.0|88.0|-66.05939|-0.00425 +2016-07-01|-56.0|89.0|-65.97153|0.00194 +2016-07-01|-56.0|90.0|-65.85256|0.00817 +2016-07-01|-56.0|91.0|-65.70089|0.01445 +2016-07-01|-56.0|92.0|-65.51481|0.02078 +2016-07-01|-56.0|93.0|-65.29243|0.02717 +2016-07-01|-56.0|94.0|-65.03174|0.03362 +2016-07-01|-56.0|95.0|-64.73058|0.04015 +2016-07-01|-56.0|96.0|-64.38657|0.04675 +2016-07-01|-56.0|97.0|-63.99718|0.05345 +2016-07-01|-56.0|98.0|-63.55966|0.06024 +2016-07-01|-56.0|99.0|-63.07108|0.06716 +2016-07-01|-56.0|100.0|-62.52824|0.0742 +2016-07-01|-56.0|101.0|-61.92773|0.08139 +2016-07-01|-56.0|102.0|-61.26589|0.08875 +2016-07-01|-56.0|103.0|-60.53881|0.0963 +2016-07-01|-56.0|104.0|-59.74231|0.10406 +2016-07-01|-56.0|105.0|-58.87198|0.11205 +2016-07-01|-56.0|106.0|-57.92314|0.12028 +2016-07-01|-56.0|107.0|-56.89089|0.12879 +2016-07-01|-56.0|108.0|-55.77014|0.1376 +2016-07-01|-56.0|109.0|-54.55566|0.14671 +2016-07-01|-56.0|110.0|-53.24213|0.15614 +2016-07-01|-56.0|111.0|-51.82427|0.16589 +2016-07-01|-56.0|112.0|-50.29693|0.17596 +2016-07-01|-56.0|113.0|-48.6553|0.18633 +2016-07-01|-56.0|114.0|-46.89506|0.19697 +2016-07-01|-56.0|115.0|-45.01266|0.20781 +2016-07-01|-56.0|116.0|-43.0056|0.21878 +2016-07-01|-56.0|117.0|-40.87277|0.22978 +2016-07-01|-56.0|118.0|-38.61476|0.24067 +2016-07-01|-56.0|119.0|-36.23424|0.25129 +2016-07-01|-56.0|120.0|-33.73631|0.26147 +2016-07-01|-56.0|121.0|-31.12871|0.27098 +2016-07-01|-56.0|122.0|-28.42202|0.27962 +2016-07-01|-56.0|123.0|-25.62971|0.28716 +2016-07-01|-56.0|124.0|-22.76791|0.2934 +2016-07-01|-56.0|125.0|-19.8551|0.29817 +2016-07-01|-56.0|126.0|-16.91157|0.30135 +2016-07-01|-56.0|127.0|-13.95867|0.30286 +2016-07-01|-56.0|128.0|-11.01806|0.30269 +2016-07-01|-56.0|129.0|-8.11079|0.30091 +2016-07-01|-56.0|130.0|-5.25663|0.29763 +2016-07-01|-56.0|131.0|-2.47331|0.29301 +2016-07-01|-56.0|132.0|0.22391|0.28725 +2016-07-01|-56.0|133.0|2.82254|0.28056 +2016-07-01|-56.0|134.0|5.31297|0.27316 +2016-07-01|-56.0|135.0|7.68837|0.26526 +2016-07-01|-56.0|136.0|9.94449|0.25706 +2016-07-01|-56.0|137.0|12.0794|0.24873 +2016-07-01|-56.0|138.0|14.09312|0.24042 +2016-07-01|-56.0|139.0|15.98725|0.23224 +2016-07-01|-56.0|140.0|17.76467|0.2243 +2016-07-01|-56.0|141.0|19.42921|0.21665 +2016-07-01|-56.0|142.0|20.98535|0.20935 +2016-07-01|-56.0|143.0|22.43804|0.20244 +2016-07-01|-56.0|144.0|23.79247|0.19594 +2016-07-01|-56.0|145.0|25.05392|0.18985 +2016-07-01|-56.0|146.0|26.22769|0.18417 +2016-07-01|-56.0|147.0|27.31895|0.17889 +2016-07-01|-56.0|148.0|28.33273|0.17401 +2016-07-01|-56.0|149.0|29.27384|0.1695 +2016-07-01|-56.0|150.0|30.14687|0.16535 +2016-07-01|-56.0|151.0|30.95616|0.16153 +2016-07-01|-56.0|152.0|31.7058|0.15803 +2016-07-01|-56.0|153.0|32.39964|0.15482 +2016-07-01|-56.0|154.0|33.04127|0.15188 +2016-07-01|-56.0|155.0|33.63406|0.1492 +2016-07-01|-56.0|156.0|34.18113|0.14674 +2016-07-01|-56.0|157.0|34.68542|0.14449 +2016-07-01|-56.0|158.0|35.14965|0.14242 +2016-07-01|-56.0|159.0|35.57635|0.14053 +2016-07-01|-56.0|160.0|35.96791|0.13879 +2016-07-01|-56.0|161.0|36.32651|0.13719 +2016-07-01|-56.0|162.0|36.65422|0.1357 +2016-07-01|-56.0|163.0|36.95297|0.13432 +2016-07-01|-56.0|164.0|37.22454|0.13302 +2016-07-01|-56.0|165.0|37.47061|0.13181 +2016-07-01|-56.0|166.0|37.69277|0.13065 +2016-07-01|-56.0|167.0|37.89247|0.12955 +2016-07-01|-56.0|168.0|38.0711|0.12849 +2016-07-01|-56.0|169.0|38.22997|0.12745 +2016-07-01|-56.0|170.0|38.37028|0.12644 +2016-07-01|-56.0|171.0|38.4932|0.12544 +2016-07-01|-56.0|172.0|38.59979|0.12445 +2016-07-01|-56.0|173.0|38.6911|0.12345 +2016-07-01|-56.0|174.0|38.76807|0.12244 +2016-07-01|-56.0|175.0|38.83162|0.12142 +2016-07-01|-56.0|176.0|38.88262|0.12037 +2016-07-01|-56.0|177.0|38.92187|0.1193 +2016-07-01|-56.0|178.0|38.95016|0.1182 +2016-07-01|-56.0|179.0|38.96821|0.11706 +2016-07-01|-56.0|-1.0|-19.84568|-0.04795 +2016-07-01|-56.0|-2.0|-19.31735|-0.04207 +2016-07-01|-56.0|-3.0|-18.80264|-0.03636 +2016-07-01|-56.0|-4.0|-18.30146|-0.03082 +2016-07-01|-56.0|-5.0|-17.81359|-0.02549 +2016-07-01|-56.0|-6.0|-17.33881|-0.02037 +2016-07-01|-56.0|-7.0|-16.87677|-0.01548 +2016-07-01|-56.0|-8.0|-16.4271|-0.01085 +2016-07-01|-56.0|-9.0|-15.98934|-0.00647 +2016-07-01|-56.0|-10.0|-15.56299|-0.00238 +2016-07-01|-56.0|-11.0|-15.14748|0.00143 +2016-07-01|-56.0|-12.0|-14.7422|0.00495 +2016-07-01|-56.0|-13.0|-14.34645|0.00816 +2016-07-01|-56.0|-14.0|-13.95954|0.01106 +2016-07-01|-56.0|-15.0|-13.5807|0.01365 +2016-07-01|-56.0|-16.0|-13.20913|0.01592 +2016-07-01|-56.0|-17.0|-12.84399|0.01787 +2016-07-01|-56.0|-18.0|-12.48442|0.0195 +2016-07-01|-56.0|-19.0|-12.12953|0.02081 +2016-07-01|-56.0|-20.0|-11.77841|0.02181 +2016-07-01|-56.0|-21.0|-11.43014|0.0225 +2016-07-01|-56.0|-22.0|-11.08379|0.02288 +2016-07-01|-56.0|-23.0|-10.7384|0.02295 +2016-07-01|-56.0|-24.0|-10.39305|0.02274 +2016-07-01|-56.0|-25.0|-10.0468|0.02224 +2016-07-01|-56.0|-26.0|-9.69871|0.02146 +2016-07-01|-56.0|-27.0|-9.34787|0.02043 +2016-07-01|-56.0|-28.0|-8.99339|0.01914 +2016-07-01|-56.0|-29.0|-8.63439|0.01761 +2016-07-01|-56.0|-30.0|-8.27003|0.01585 +2016-07-01|-56.0|-31.0|-7.89948|0.01388 +2016-07-01|-56.0|-32.0|-7.52196|0.01172 +2016-07-01|-56.0|-33.0|-7.13673|0.00937 +2016-07-01|-56.0|-34.0|-6.74308|0.00686 +2016-07-01|-56.0|-35.0|-6.34037|0.00419 +2016-07-01|-56.0|-36.0|-5.92798|0.0014 +2016-07-01|-56.0|-37.0|-5.50535|-0.00151 +2016-07-01|-56.0|-38.0|-5.07199|-0.00452 +2016-07-01|-56.0|-39.0|-4.62743|-0.00761 +2016-07-01|-56.0|-40.0|-4.1713|-0.01076 +2016-07-01|-56.0|-41.0|-3.70327|-0.01396 +2016-07-01|-56.0|-42.0|-3.22306|-0.01718 +2016-07-01|-56.0|-43.0|-2.73048|-0.02041 +2016-07-01|-56.0|-44.0|-2.22538|-0.02364 +2016-07-01|-56.0|-45.0|-1.70768|-0.02684 +2016-07-01|-56.0|-46.0|-1.17737|-0.03 +2016-07-01|-56.0|-47.0|-0.63451|-0.03311 +2016-07-01|-56.0|-48.0|-0.0792|-0.03614 +2016-07-01|-56.0|-49.0|0.48837|-0.03909 +2016-07-01|-56.0|-50.0|1.06797|-0.04194 +2016-07-01|-56.0|-51.0|1.65928|-0.04468 +2016-07-01|-56.0|-52.0|2.26197|-0.0473 +2016-07-01|-56.0|-53.0|2.8756|-0.04977 +2016-07-01|-56.0|-54.0|3.4997|-0.0521 +2016-07-01|-56.0|-55.0|4.13376|-0.05428 +2016-07-01|-56.0|-56.0|4.77719|-0.0563 +2016-07-01|-56.0|-57.0|5.42938|-0.05814 +2016-07-01|-56.0|-58.0|6.08967|-0.05981 +2016-07-01|-56.0|-59.0|6.75734|-0.0613 +2016-07-01|-56.0|-60.0|7.43167|-0.0626 +2016-07-01|-56.0|-61.0|8.11187|-0.06372 +2016-07-01|-56.0|-62.0|8.79716|-0.06465 +2016-07-01|-56.0|-63.0|9.48669|-0.06539 +2016-07-01|-56.0|-64.0|10.17963|-0.06595 +2016-07-01|-56.0|-65.0|10.87511|-0.06632 +2016-07-01|-56.0|-66.0|11.57226|-0.06651 +2016-07-01|-56.0|-67.0|12.27019|-0.06652 +2016-07-01|-56.0|-68.0|12.96801|-0.06636 +2016-07-01|-56.0|-69.0|13.66484|-0.06603 +2016-07-01|-56.0|-70.0|14.35979|-0.06554 +2016-07-01|-56.0|-71.0|15.05198|-0.06489 +2016-07-01|-56.0|-72.0|15.74055|-0.0641 +2016-07-01|-56.0|-73.0|16.42464|-0.06317 +2016-07-01|-56.0|-74.0|17.1034|-0.06211 +2016-07-01|-56.0|-75.0|17.77604|-0.06092 +2016-07-01|-56.0|-76.0|18.44175|-0.05963 +2016-07-01|-56.0|-77.0|19.09976|-0.05823 +2016-07-01|-56.0|-78.0|19.74935|-0.05674 +2016-07-01|-56.0|-79.0|20.38979|-0.05517 +2016-07-01|-56.0|-80.0|21.02041|-0.05352 +2016-07-01|-56.0|-81.0|21.64057|-0.05181 +2016-07-01|-56.0|-82.0|22.24967|-0.05004 +2016-07-01|-56.0|-83.0|22.84712|-0.04823 +2016-07-01|-56.0|-84.0|23.43241|-0.04638 +2016-07-01|-56.0|-85.0|24.00502|-0.0445 +2016-07-01|-56.0|-86.0|24.56452|-0.0426 +2016-07-01|-56.0|-87.0|25.11048|-0.04069 +2016-07-01|-56.0|-88.0|25.64253|-0.03878 +2016-07-01|-56.0|-89.0|26.16034|-0.03687 +2016-07-01|-56.0|-90.0|26.66362|-0.03496 +2016-07-01|-56.0|-91.0|27.15211|-0.03307 +2016-07-01|-56.0|-92.0|27.6256|-0.0312 +2016-07-01|-56.0|-93.0|28.08392|-0.02936 +2016-07-01|-56.0|-94.0|28.52694|-0.02754 +2016-07-01|-56.0|-95.0|28.95458|-0.02575 +2016-07-01|-56.0|-96.0|29.36677|-0.024 +2016-07-01|-56.0|-97.0|29.76351|-0.02229 +2016-07-01|-56.0|-98.0|30.14482|-0.02061 +2016-07-01|-56.0|-99.0|30.51076|-0.01897 +2016-07-01|-56.0|-100.0|30.86143|-0.01738 +2016-07-01|-56.0|-101.0|31.19697|-0.01582 +2016-07-01|-56.0|-102.0|31.51755|-0.01431 +2016-07-01|-56.0|-103.0|31.82336|-0.01283 +2016-07-01|-56.0|-104.0|32.11464|-0.01139 +2016-07-01|-56.0|-105.0|32.39166|-0.00999 +2016-07-01|-56.0|-106.0|32.65471|-0.00861 +2016-07-01|-56.0|-107.0|32.90412|-0.00727 +2016-07-01|-56.0|-108.0|33.14025|-0.00596 +2016-07-01|-56.0|-109.0|33.36347|-0.00467 +2016-07-01|-56.0|-110.0|33.57417|-0.0034 +2016-07-01|-56.0|-111.0|33.7728|-0.00215 +2016-07-01|-56.0|-112.0|33.95979|-9.1E-4 +2016-07-01|-56.0|-113.0|34.13562|3.2E-4 +2016-07-01|-56.0|-114.0|34.30075|0.00154 +2016-07-01|-56.0|-115.0|34.45569|0.00277 +2016-07-01|-56.0|-116.0|34.60096|0.004 +2016-07-01|-56.0|-117.0|34.73706|0.00524 +2016-07-01|-56.0|-118.0|34.86454|0.00649 +2016-07-01|-56.0|-119.0|34.98392|0.00776 +2016-07-01|-56.0|-120.0|35.09575|0.00904 +2016-07-01|-56.0|-121.0|35.20057|0.01035 +2016-07-01|-56.0|-122.0|35.29892|0.01169 +2016-07-01|-56.0|-123.0|35.39133|0.01305 +2016-07-01|-56.0|-124.0|35.47835|0.01445 +2016-07-01|-56.0|-125.0|35.5605|0.01587 +2016-07-01|-56.0|-126.0|35.63828|0.01734 +2016-07-01|-56.0|-127.0|35.71221|0.01884 +2016-07-01|-56.0|-128.0|35.78277|0.02038 +2016-07-01|-56.0|-129.0|35.85043|0.02196 +2016-07-01|-56.0|-130.0|35.91565|0.02357 +2016-07-01|-56.0|-131.0|35.97886|0.02523 +2016-07-01|-56.0|-132.0|36.04046|0.02693 +2016-07-01|-56.0|-133.0|36.10086|0.02866 +2016-07-01|-56.0|-134.0|36.1604|0.03043 +2016-07-01|-56.0|-135.0|36.21944|0.03224 +2016-07-01|-56.0|-136.0|36.27827|0.03409 +2016-07-01|-56.0|-137.0|36.33719|0.03597 +2016-07-01|-56.0|-138.0|36.39645|0.03788 +2016-07-01|-56.0|-139.0|36.45628|0.03982 +2016-07-01|-56.0|-140.0|36.51688|0.04179 +2016-07-01|-56.0|-141.0|36.57841|0.04379 +2016-07-01|-56.0|-142.0|36.64102|0.04581 +2016-07-01|-56.0|-143.0|36.70483|0.04785 +2016-07-01|-56.0|-144.0|36.76992|0.04992 +2016-07-01|-56.0|-145.0|36.83636|0.05199 +2016-07-01|-56.0|-146.0|36.90417|0.05409 +2016-07-01|-56.0|-147.0|36.97337|0.05619 +2016-07-01|-56.0|-148.0|37.04394|0.0583 +2016-07-01|-56.0|-149.0|37.11584|0.06042 +2016-07-01|-56.0|-150.0|37.18902|0.06254 +2016-07-01|-56.0|-151.0|37.26338|0.06467 +2016-07-01|-56.0|-152.0|37.33883|0.06679 +2016-07-01|-56.0|-153.0|37.41526|0.0689 +2016-07-01|-56.0|-154.0|37.4925|0.07101 +2016-07-01|-56.0|-155.0|37.57042|0.07311 +2016-07-01|-56.0|-156.0|37.64884|0.0752 +2016-07-01|-56.0|-157.0|37.72756|0.07727 +2016-07-01|-56.0|-158.0|37.80639|0.07932 +2016-07-01|-56.0|-159.0|37.88511|0.08136 +2016-07-01|-56.0|-160.0|37.96348|0.08337 +2016-07-01|-56.0|-161.0|38.04126|0.08536 +2016-07-01|-56.0|-162.0|38.11819|0.08732 +2016-07-01|-56.0|-163.0|38.194|0.08925 +2016-07-01|-56.0|-164.0|38.2684|0.09114 +2016-07-01|-56.0|-165.0|38.3411|0.09301 +2016-07-01|-56.0|-166.0|38.41178|0.09483 +2016-07-01|-56.0|-167.0|38.48012|0.09662 +2016-07-01|-56.0|-168.0|38.54578|0.09837 +2016-07-01|-56.0|-169.0|38.6084|0.10008 +2016-07-01|-56.0|-170.0|38.66761|0.10174 +2016-07-01|-56.0|-171.0|38.72301|0.10336 +2016-07-01|-56.0|-172.0|38.77421|0.10494 +2016-07-01|-56.0|-173.0|38.82078|0.10647 +2016-07-01|-56.0|-174.0|38.86227|0.10795 +2016-07-01|-56.0|-175.0|38.89821|0.10939 +2016-07-01|-56.0|-176.0|38.92812|0.11078 +2016-07-01|-56.0|-177.0|38.95148|0.11212 +2016-07-01|-56.0|-178.0|38.96775|0.11342 +2016-07-01|-56.0|-179.0|38.97637|0.11468 +2016-07-01|-57.0|0.0|-20.27198|-0.0571 +2016-07-01|-57.0|1.0|-20.84225|-0.06298 +2016-07-01|-57.0|2.0|-21.42539|-0.06895 +2016-07-01|-57.0|3.0|-22.02125|-0.07498 +2016-07-01|-57.0|4.0|-22.62961|-0.08105 +2016-07-01|-57.0|5.0|-23.25021|-0.08714 +2016-07-01|-57.0|6.0|-23.88272|-0.09323 +2016-07-01|-57.0|7.0|-24.52678|-0.0993 +2016-07-01|-57.0|8.0|-25.18196|-0.10532 +2016-07-01|-57.0|9.0|-25.84781|-0.11128 +2016-07-01|-57.0|10.0|-26.52382|-0.11716 +2016-07-01|-57.0|11.0|-27.20945|-0.12294 +2016-07-01|-57.0|12.0|-27.90415|-0.12861 +2016-07-01|-57.0|13.0|-28.6073|-0.13413 +2016-07-01|-57.0|14.0|-29.31828|-0.13951 +2016-07-01|-57.0|15.0|-30.03646|-0.14472 +2016-07-01|-57.0|16.0|-30.76117|-0.14976 +2016-07-01|-57.0|17.0|-31.49175|-0.1546 +2016-07-01|-57.0|18.0|-32.22751|-0.15924 +2016-07-01|-57.0|19.0|-32.96777|-0.16367 +2016-07-01|-57.0|20.0|-33.71184|-0.16787 +2016-07-01|-57.0|21.0|-34.45903|-0.17185 +2016-07-01|-57.0|22.0|-35.20868|-0.17559 +2016-07-01|-57.0|23.0|-35.96009|-0.1791 +2016-07-01|-57.0|24.0|-36.71262|-0.18236 +2016-07-01|-57.0|25.0|-37.4656|-0.18537 +2016-07-01|-57.0|26.0|-38.2184|-0.18814 +2016-07-01|-57.0|27.0|-38.97038|-0.19065 +2016-07-01|-57.0|28.0|-39.72096|-0.19292 +2016-07-01|-57.0|29.0|-40.46953|-0.19494 +2016-07-01|-57.0|30.0|-41.21552|-0.19671 +2016-07-01|-57.0|31.0|-41.95838|-0.19824 +2016-07-01|-57.0|32.0|-42.69759|-0.19953 +2016-07-01|-57.0|33.0|-43.43262|-0.20058 +2016-07-01|-57.0|34.0|-44.16299|-0.20139 +2016-07-01|-57.0|35.0|-44.88822|-0.20198 +2016-07-01|-57.0|36.0|-45.60786|-0.20234 +2016-07-01|-57.0|37.0|-46.32148|-0.20248 +2016-07-01|-57.0|38.0|-47.02866|-0.20241 +2016-07-01|-57.0|39.0|-47.72902|-0.20212 +2016-07-01|-57.0|40.0|-48.42217|-0.20164 +2016-07-01|-57.0|41.0|-49.10776|-0.20095 +2016-07-01|-57.0|42.0|-49.78544|-0.20007 +2016-07-01|-57.0|43.0|-50.4549|-0.199 +2016-07-01|-57.0|44.0|-51.11581|-0.19775 +2016-07-01|-57.0|45.0|-51.76789|-0.19632 +2016-07-01|-57.0|46.0|-52.41085|-0.19472 +2016-07-01|-57.0|47.0|-53.04442|-0.19296 +2016-07-01|-57.0|48.0|-53.66834|-0.19102 +2016-07-01|-57.0|49.0|-54.28238|-0.18894 +2016-07-01|-57.0|50.0|-54.88629|-0.18669 +2016-07-01|-57.0|51.0|-55.47985|-0.1843 +2016-07-01|-57.0|52.0|-56.06284|-0.18177 +2016-07-01|-57.0|53.0|-56.63506|-0.17909 +2016-07-01|-57.0|54.0|-57.19628|-0.17628 +2016-07-01|-57.0|55.0|-57.74633|-0.17334 +2016-07-01|-57.0|56.0|-58.285|-0.17026 +2016-07-01|-57.0|57.0|-58.81211|-0.16706 +2016-07-01|-57.0|58.0|-59.32746|-0.16374 +2016-07-01|-57.0|59.0|-59.83088|-0.1603 +2016-07-01|-57.0|60.0|-60.32217|-0.15675 +2016-07-01|-57.0|61.0|-60.80114|-0.15308 +2016-07-01|-57.0|62.0|-61.26761|-0.14931 +2016-07-01|-57.0|63.0|-61.72138|-0.14543 +2016-07-01|-57.0|64.0|-62.16226|-0.14145 +2016-07-01|-57.0|65.0|-62.59002|-0.13737 +2016-07-01|-57.0|66.0|-63.00447|-0.13319 +2016-07-01|-57.0|67.0|-63.40537|-0.12892 +2016-07-01|-57.0|68.0|-63.79249|-0.12457 +2016-07-01|-57.0|69.0|-64.16557|-0.12012 +2016-07-01|-57.0|70.0|-64.52434|-0.1156 +2016-07-01|-57.0|71.0|-64.86852|-0.111 +2016-07-01|-57.0|72.0|-65.19779|-0.10632 +2016-07-01|-57.0|73.0|-65.51184|-0.10157 +2016-07-01|-57.0|74.0|-65.8103|-0.09675 +2016-07-01|-57.0|75.0|-66.09278|-0.09187 +2016-07-01|-57.0|76.0|-66.35887|-0.08692 +2016-07-01|-57.0|77.0|-66.60812|-0.08192 +2016-07-01|-57.0|78.0|-66.84004|-0.07687 +2016-07-01|-57.0|79.0|-67.05409|-0.07176 +2016-07-01|-57.0|80.0|-67.2497|-0.0666 +2016-07-01|-57.0|81.0|-67.42625|-0.0614 +2016-07-01|-57.0|82.0|-67.58304|-0.05615 +2016-07-01|-57.0|83.0|-67.71934|-0.05086 +2016-07-01|-57.0|84.0|-67.83435|-0.04553 +2016-07-01|-57.0|85.0|-67.92718|-0.04016 +2016-07-01|-57.0|86.0|-67.9969|-0.03475 +2016-07-01|-57.0|87.0|-68.04246|-0.0293 +2016-07-01|-57.0|88.0|-68.06273|-0.02381 +2016-07-01|-57.0|89.0|-68.05651|-0.01828 +2016-07-01|-57.0|90.0|-68.02244|-0.0127 +2016-07-01|-57.0|91.0|-67.95909|-0.00707 +2016-07-01|-57.0|92.0|-67.86488|-0.00139 +2016-07-01|-57.0|93.0|-67.73809|0.00435 +2016-07-01|-57.0|94.0|-67.57684|0.01016 +2016-07-01|-57.0|95.0|-67.37911|0.01605 +2016-07-01|-57.0|96.0|-67.14267|0.02204 +2016-07-01|-57.0|97.0|-66.8651|0.02812 +2016-07-01|-57.0|98.0|-66.54376|0.03433 +2016-07-01|-57.0|99.0|-66.17578|0.04068 +2016-07-01|-57.0|100.0|-65.75803|0.04719 +2016-07-01|-57.0|101.0|-65.28707|0.05388 +2016-07-01|-57.0|102.0|-64.75921|0.06078 +2016-07-01|-57.0|103.0|-64.17038|0.06793 +2016-07-01|-57.0|104.0|-63.51619|0.07535 +2016-07-01|-57.0|105.0|-62.79185|0.08308 +2016-07-01|-57.0|106.0|-61.9922|0.09117 +2016-07-01|-57.0|107.0|-61.11166|0.09965 +2016-07-01|-57.0|108.0|-60.14422|0.10856 +2016-07-01|-57.0|109.0|-59.08347|0.11797 +2016-07-01|-57.0|110.0|-57.92259|0.1279 +2016-07-01|-57.0|111.0|-56.65442|0.13841 +2016-07-01|-57.0|112.0|-55.27149|0.14954 +2016-07-01|-57.0|113.0|-53.76618|0.16132 +2016-07-01|-57.0|114.0|-52.13081|0.17377 +2016-07-01|-57.0|115.0|-50.35793|0.1869 +2016-07-01|-57.0|116.0|-48.44057|0.20068 +2016-07-01|-57.0|117.0|-46.37262|0.21506 +2016-07-01|-57.0|118.0|-44.14928|0.22995 +2016-07-01|-57.0|119.0|-41.76766|0.24519 +2016-07-01|-57.0|120.0|-39.22732|0.2606 +2016-07-01|-57.0|121.0|-36.53097|0.2759 +2016-07-01|-57.0|122.0|-33.68508|0.29078 +2016-07-01|-57.0|123.0|-30.70039|0.30488 +2016-07-01|-57.0|124.0|-27.59223|0.31779 +2016-07-01|-57.0|125.0|-24.38056|0.3291 +2016-07-01|-57.0|126.0|-21.08959|0.33845 +2016-07-01|-57.0|127.0|-17.74704|0.34551 +2016-07-01|-57.0|128.0|-14.38298|0.35007 +2016-07-01|-57.0|129.0|-11.02846|0.35203 +2016-07-01|-57.0|130.0|-7.71396|0.35142 +2016-07-01|-57.0|131.0|-4.46792|0.34839 +2016-07-01|-57.0|132.0|-1.31555|0.3432 +2016-07-01|-57.0|133.0|1.72206|0.33617 +2016-07-01|-57.0|134.0|4.62837|0.32767 +2016-07-01|-57.0|135.0|7.39147|0.31806 +2016-07-01|-57.0|136.0|10.00384|0.3077 +2016-07-01|-57.0|137.0|12.46187|0.29691 +2016-07-01|-57.0|138.0|14.76523|0.28597 +2016-07-01|-57.0|139.0|16.91625|0.27508 +2016-07-01|-57.0|140.0|18.91929|0.26444 +2016-07-01|-57.0|141.0|20.78017|0.25417 +2016-07-01|-57.0|142.0|22.50569|0.24436 +2016-07-01|-57.0|143.0|24.1032|0.23506 +2016-07-01|-57.0|144.0|25.58035|0.22633 +2016-07-01|-57.0|145.0|26.9448|0.21816 +2016-07-01|-57.0|146.0|28.20408|0.21055 +2016-07-01|-57.0|147.0|29.36545|0.2035 +2016-07-01|-57.0|148.0|30.43583|0.19699 +2016-07-01|-57.0|149.0|31.42176|0.19098 +2016-07-01|-57.0|150.0|32.32936|0.18545 +2016-07-01|-57.0|151.0|33.16436|0.18038 +2016-07-01|-57.0|152.0|33.93205|0.17572 +2016-07-01|-57.0|153.0|34.63735|0.17144 +2016-07-01|-57.0|154.0|35.28479|0.16753 +2016-07-01|-57.0|155.0|35.87856|0.16394 +2016-07-01|-57.0|156.0|36.4225|0.16064 +2016-07-01|-57.0|157.0|36.92017|0.15762 +2016-07-01|-57.0|158.0|37.37484|0.15484 +2016-07-01|-57.0|159.0|37.78953|0.15229 +2016-07-01|-57.0|160.0|38.167|0.14993 +2016-07-01|-57.0|161.0|38.50983|0.14774 +2016-07-01|-57.0|162.0|38.82039|0.14572 +2016-07-01|-57.0|163.0|39.10085|0.14383 +2016-07-01|-57.0|164.0|39.35325|0.14206 +2016-07-01|-57.0|165.0|39.57947|0.14039 +2016-07-01|-57.0|166.0|39.78124|0.13882 +2016-07-01|-57.0|167.0|39.9602|0.13731 +2016-07-01|-57.0|168.0|40.11784|0.13588 +2016-07-01|-57.0|169.0|40.25558|0.13449 +2016-07-01|-57.0|170.0|40.37472|0.13314 +2016-07-01|-57.0|171.0|40.4765|0.13182 +2016-07-01|-57.0|172.0|40.56206|0.13051 +2016-07-01|-57.0|173.0|40.63248|0.12923 +2016-07-01|-57.0|174.0|40.68876|0.12794 +2016-07-01|-57.0|175.0|40.73187|0.12665 +2016-07-01|-57.0|176.0|40.76269|0.12535 +2016-07-01|-57.0|177.0|40.78205|0.12404 +2016-07-01|-57.0|178.0|40.79077|0.12271 +2016-07-01|-57.0|179.0|40.78958|0.12135 +2016-07-01|-57.0|-1.0|-19.71468|-0.05131 +2016-07-01|-57.0|-2.0|-19.17038|-0.04566 +2016-07-01|-57.0|-3.0|-18.63905|-0.04014 +2016-07-01|-57.0|-4.0|-18.1206|-0.03479 +2016-07-01|-57.0|-5.0|-17.61487|-0.02961 +2016-07-01|-57.0|-6.0|-17.12166|-0.02463 +2016-07-01|-57.0|-7.0|-16.64068|-0.01986 +2016-07-01|-57.0|-8.0|-16.1716|-0.01532 +2016-07-01|-57.0|-9.0|-15.71401|-0.01102 +2016-07-01|-57.0|-10.0|-15.26747|-0.00698 +2016-07-01|-57.0|-11.0|-14.83147|-0.00319 +2016-07-01|-57.0|-12.0|-14.40544|3.2E-4 +2016-07-01|-57.0|-13.0|-13.98878|0.00354 +2016-07-01|-57.0|-14.0|-13.58083|0.00648 +2016-07-01|-57.0|-15.0|-13.18089|0.00913 +2016-07-01|-57.0|-16.0|-12.78824|0.01148 +2016-07-01|-57.0|-17.0|-12.4021|0.01353 +2016-07-01|-57.0|-18.0|-12.02167|0.01527 +2016-07-01|-57.0|-19.0|-11.64613|0.01672 +2016-07-01|-57.0|-20.0|-11.27463|0.01786 +2016-07-01|-57.0|-21.0|-10.90632|0.01871 +2016-07-01|-57.0|-22.0|-10.54031|0.01926 +2016-07-01|-57.0|-23.0|-10.17574|0.01952 +2016-07-01|-57.0|-24.0|-9.8117|0.01951 +2016-07-01|-57.0|-25.0|-9.44733|0.01921 +2016-07-01|-57.0|-26.0|-9.08175|0.01866 +2016-07-01|-57.0|-27.0|-8.71409|0.01784 +2016-07-01|-57.0|-28.0|-8.3435|0.01678 +2016-07-01|-57.0|-29.0|-7.96916|0.01549 +2016-07-01|-57.0|-30.0|-7.59025|0.01397 +2016-07-01|-57.0|-31.0|-7.20601|0.01225 +2016-07-01|-57.0|-32.0|-6.81568|0.01033 +2016-07-01|-57.0|-33.0|-6.41855|0.00823 +2016-07-01|-57.0|-34.0|-6.01395|0.00597 +2016-07-01|-57.0|-35.0|-5.60126|0.00355 +2016-07-01|-57.0|-36.0|-5.17988|0.00101 +2016-07-01|-57.0|-37.0|-4.74928|-0.00166 +2016-07-01|-57.0|-38.0|-4.30896|-0.00442 +2016-07-01|-57.0|-39.0|-3.85851|-0.00727 +2016-07-01|-57.0|-40.0|-3.39752|-0.01018 +2016-07-01|-57.0|-41.0|-2.92569|-0.01315 +2016-07-01|-57.0|-42.0|-2.44274|-0.01615 +2016-07-01|-57.0|-43.0|-1.94846|-0.01916 +2016-07-01|-57.0|-44.0|-1.4427|-0.02218 +2016-07-01|-57.0|-45.0|-0.92538|-0.02518 +2016-07-01|-57.0|-46.0|-0.39647|-0.02815 +2016-07-01|-57.0|-47.0|0.14401|-0.03107 +2016-07-01|-57.0|-48.0|0.69597|-0.03394 +2016-07-01|-57.0|-49.0|1.25925|-0.03673 +2016-07-01|-57.0|-50.0|1.83366|-0.03943 +2016-07-01|-57.0|-51.0|2.41892|-0.04203 +2016-07-01|-57.0|-52.0|3.01473|-0.04452 +2016-07-01|-57.0|-53.0|3.6207|-0.04689 +2016-07-01|-57.0|-54.0|4.23642|-0.04912 +2016-07-01|-57.0|-55.0|4.86142|-0.05122 +2016-07-01|-57.0|-56.0|5.49518|-0.05317 +2016-07-01|-57.0|-57.0|6.13714|-0.05496 +2016-07-01|-57.0|-58.0|6.78669|-0.05659 +2016-07-01|-57.0|-59.0|7.44321|-0.05805 +2016-07-01|-57.0|-60.0|8.10602|-0.05934 +2016-07-01|-57.0|-61.0|8.77441|-0.06047 +2016-07-01|-57.0|-62.0|9.44765|-0.06142 +2016-07-01|-57.0|-63.0|10.125|-0.06219 +2016-07-01|-57.0|-64.0|10.80567|-0.06279 +2016-07-01|-57.0|-65.0|11.48888|-0.06322 +2016-07-01|-57.0|-66.0|12.17381|-0.06348 +2016-07-01|-57.0|-67.0|12.85967|-0.06357 +2016-07-01|-57.0|-68.0|13.54563|-0.06349 +2016-07-01|-57.0|-69.0|14.23087|-0.06326 +2016-07-01|-57.0|-70.0|14.91457|-0.06288 +2016-07-01|-57.0|-71.0|15.59592|-0.06235 +2016-07-01|-57.0|-72.0|16.27412|-0.06168 +2016-07-01|-57.0|-73.0|16.94837|-0.06088 +2016-07-01|-57.0|-74.0|17.61789|-0.05995 +2016-07-01|-57.0|-75.0|18.28192|-0.0589 +2016-07-01|-57.0|-76.0|18.93971|-0.05775 +2016-07-01|-57.0|-77.0|19.59055|-0.05649 +2016-07-01|-57.0|-78.0|20.23374|-0.05514 +2016-07-01|-57.0|-79.0|20.86861|-0.05371 +2016-07-01|-57.0|-80.0|21.49452|-0.0522 +2016-07-01|-57.0|-81.0|22.11085|-0.05063 +2016-07-01|-57.0|-82.0|22.71703|-0.049 +2016-07-01|-57.0|-83.0|23.3125|-0.04733 +2016-07-01|-57.0|-84.0|23.89675|-0.04561 +2016-07-01|-57.0|-85.0|24.4693|-0.04385 +2016-07-01|-57.0|-86.0|25.0297|-0.04208 +2016-07-01|-57.0|-87.0|25.57755|-0.04028 +2016-07-01|-57.0|-88.0|26.11247|-0.03848 +2016-07-01|-57.0|-89.0|26.63414|-0.03667 +2016-07-01|-57.0|-90.0|27.14224|-0.03486 +2016-07-01|-57.0|-91.0|27.63652|-0.03305 +2016-07-01|-57.0|-92.0|28.11675|-0.03126 +2016-07-01|-57.0|-93.0|28.58275|-0.02949 +2016-07-01|-57.0|-94.0|29.03436|-0.02773 +2016-07-01|-57.0|-95.0|29.47148|-0.026 +2016-07-01|-57.0|-96.0|29.89402|-0.0243 +2016-07-01|-57.0|-97.0|30.30194|-0.02263 +2016-07-01|-57.0|-98.0|30.69525|-0.02098 +2016-07-01|-57.0|-99.0|31.07395|-0.01937 +2016-07-01|-57.0|-100.0|31.43813|-0.0178 +2016-07-01|-57.0|-101.0|31.78787|-0.01626 +2016-07-01|-57.0|-102.0|32.1233|-0.01475 +2016-07-01|-57.0|-103.0|32.44459|-0.01327 +2016-07-01|-57.0|-104.0|32.75193|-0.01182 +2016-07-01|-57.0|-105.0|33.04554|-0.01041 +2016-07-01|-57.0|-106.0|33.32567|-0.00902 +2016-07-01|-57.0|-107.0|33.59259|-0.00767 +2016-07-01|-57.0|-108.0|33.84663|-0.00633 +2016-07-01|-57.0|-109.0|34.0881|-0.00502 +2016-07-01|-57.0|-110.0|34.31736|-0.00372 +2016-07-01|-57.0|-111.0|34.5348|-0.00244 +2016-07-01|-57.0|-112.0|34.7408|-0.00116 +2016-07-01|-57.0|-113.0|34.9358|1.0E-4 +2016-07-01|-57.0|-114.0|35.12022|0.00136 +2016-07-01|-57.0|-115.0|35.29452|0.00262 +2016-07-01|-57.0|-116.0|35.45917|0.00388 +2016-07-01|-57.0|-117.0|35.61464|0.00516 +2016-07-01|-57.0|-118.0|35.76143|0.00644 +2016-07-01|-57.0|-119.0|35.90003|0.00774 +2016-07-01|-57.0|-120.0|36.03095|0.00905 +2016-07-01|-57.0|-121.0|36.1547|0.01039 +2016-07-01|-57.0|-122.0|36.27178|0.01175 +2016-07-01|-57.0|-123.0|36.3827|0.01314 +2016-07-01|-57.0|-124.0|36.48797|0.01455 +2016-07-01|-57.0|-125.0|36.58809|0.016 +2016-07-01|-57.0|-126.0|36.68356|0.01748 +2016-07-01|-57.0|-127.0|36.77485|0.019 +2016-07-01|-57.0|-128.0|36.86245|0.02055 +2016-07-01|-57.0|-129.0|36.94681|0.02215 +2016-07-01|-57.0|-130.0|37.02837|0.02378 +2016-07-01|-57.0|-131.0|37.10757|0.02544 +2016-07-01|-57.0|-132.0|37.18482|0.02715 +2016-07-01|-57.0|-133.0|37.26049|0.0289 +2016-07-01|-57.0|-134.0|37.33496|0.03068 +2016-07-01|-57.0|-135.0|37.40858|0.0325 +2016-07-01|-57.0|-136.0|37.48165|0.03436 +2016-07-01|-57.0|-137.0|37.55449|0.03625 +2016-07-01|-57.0|-138.0|37.62735|0.03817 +2016-07-01|-57.0|-139.0|37.70048|0.04013 +2016-07-01|-57.0|-140.0|37.7741|0.04212 +2016-07-01|-57.0|-141.0|37.8484|0.04413 +2016-07-01|-57.0|-142.0|37.92353|0.04618 +2016-07-01|-57.0|-143.0|37.99965|0.04824 +2016-07-01|-57.0|-144.0|38.07686|0.05033 +2016-07-01|-57.0|-145.0|38.15524|0.05244 +2016-07-01|-57.0|-146.0|38.23485|0.05456 +2016-07-01|-57.0|-147.0|38.31573|0.0567 +2016-07-01|-57.0|-148.0|38.39789|0.05885 +2016-07-01|-57.0|-149.0|38.48132|0.06101 +2016-07-01|-57.0|-150.0|38.56598|0.06318 +2016-07-01|-57.0|-151.0|38.65182|0.06535 +2016-07-01|-57.0|-152.0|38.73876|0.06753 +2016-07-01|-57.0|-153.0|38.8267|0.0697 +2016-07-01|-57.0|-154.0|38.91553|0.07187 +2016-07-01|-57.0|-155.0|39.00512|0.07404 +2016-07-01|-57.0|-156.0|39.09531|0.07619 +2016-07-01|-57.0|-157.0|39.18593|0.07834 +2016-07-01|-57.0|-158.0|39.27681|0.08047 +2016-07-01|-57.0|-159.0|39.36775|0.08258 +2016-07-01|-57.0|-160.0|39.45852|0.08468 +2016-07-01|-57.0|-161.0|39.54892|0.08676 +2016-07-01|-57.0|-162.0|39.63868|0.08881 +2016-07-01|-57.0|-163.0|39.72756|0.09084 +2016-07-01|-57.0|-164.0|39.81528|0.09284 +2016-07-01|-57.0|-165.0|39.90157|0.09481 +2016-07-01|-57.0|-166.0|39.98612|0.09674 +2016-07-01|-57.0|-167.0|40.06861|0.09865 +2016-07-01|-57.0|-168.0|40.14872|0.10052 +2016-07-01|-57.0|-169.0|40.2261|0.10235 +2016-07-01|-57.0|-170.0|40.30038|0.10415 +2016-07-01|-57.0|-171.0|40.3712|0.10591 +2016-07-01|-57.0|-172.0|40.43814|0.10763 +2016-07-01|-57.0|-173.0|40.50079|0.1093 +2016-07-01|-57.0|-174.0|40.5587|0.11094 +2016-07-01|-57.0|-175.0|40.61143|0.11254 +2016-07-01|-57.0|-176.0|40.65847|0.1141 +2016-07-01|-57.0|-177.0|40.69932|0.11562 +2016-07-01|-57.0|-178.0|40.73344|0.11711 +2016-07-01|-57.0|-179.0|40.76026|0.11855 +2016-07-01|-58.0|0.0|-20.16741|-0.06004 +2016-07-01|-58.0|1.0|-20.75128|-0.06568 +2016-07-01|-58.0|2.0|-21.34733|-0.07138 +2016-07-01|-58.0|3.0|-21.9554|-0.07714 +2016-07-01|-58.0|4.0|-22.57528|-0.08293 +2016-07-01|-58.0|5.0|-23.20672|-0.08873 +2016-07-01|-58.0|6.0|-23.84941|-0.09453 +2016-07-01|-58.0|7.0|-24.503|-0.10031 +2016-07-01|-58.0|8.0|-25.16709|-0.10605 +2016-07-01|-58.0|9.0|-25.84126|-0.11172 +2016-07-01|-58.0|10.0|-26.52504|-0.11732 +2016-07-01|-58.0|11.0|-27.21792|-0.12282 +2016-07-01|-58.0|12.0|-27.91938|-0.12822 +2016-07-01|-58.0|13.0|-28.62886|-0.13348 +2016-07-01|-58.0|14.0|-29.34578|-0.13861 +2016-07-01|-58.0|15.0|-30.06956|-0.14359 +2016-07-01|-58.0|16.0|-30.79957|-0.1484 +2016-07-01|-58.0|17.0|-31.53521|-0.15304 +2016-07-01|-58.0|18.0|-32.27583|-0.15749 +2016-07-01|-58.0|19.0|-33.02081|-0.16174 +2016-07-01|-58.0|20.0|-33.76951|-0.16579 +2016-07-01|-58.0|21.0|-34.5213|-0.16963 +2016-07-01|-58.0|22.0|-35.27554|-0.17325 +2016-07-01|-58.0|23.0|-36.0316|-0.17666 +2016-07-01|-58.0|24.0|-36.78888|-0.17984 +2016-07-01|-58.0|25.0|-37.54676|-0.18279 +2016-07-01|-58.0|26.0|-38.30466|-0.18551 +2016-07-01|-58.0|27.0|-39.06197|-0.188 +2016-07-01|-58.0|28.0|-39.81815|-0.19026 +2016-07-01|-58.0|29.0|-40.57264|-0.19229 +2016-07-01|-58.0|30.0|-41.3249|-0.1941 +2016-07-01|-58.0|31.0|-42.07442|-0.19567 +2016-07-01|-58.0|32.0|-42.82069|-0.19702 +2016-07-01|-58.0|33.0|-43.56324|-0.19815 +2016-07-01|-58.0|34.0|-44.30161|-0.19906 +2016-07-01|-58.0|35.0|-45.03535|-0.19976 +2016-07-01|-58.0|36.0|-45.76404|-0.20024 +2016-07-01|-58.0|37.0|-46.48726|-0.20052 +2016-07-01|-58.0|38.0|-47.20463|-0.2006 +2016-07-01|-58.0|39.0|-47.91579|-0.20048 +2016-07-01|-58.0|40.0|-48.62036|-0.20017 +2016-07-01|-58.0|41.0|-49.31802|-0.19967 +2016-07-01|-58.0|42.0|-50.00845|-0.19899 +2016-07-01|-58.0|43.0|-50.69134|-0.19813 +2016-07-01|-58.0|44.0|-51.36639|-0.1971 +2016-07-01|-58.0|45.0|-52.03334|-0.19591 +2016-07-01|-58.0|46.0|-52.69191|-0.19455 +2016-07-01|-58.0|47.0|-53.34186|-0.19303 +2016-07-01|-58.0|48.0|-53.98294|-0.19136 +2016-07-01|-58.0|49.0|-54.61494|-0.18954 +2016-07-01|-58.0|50.0|-55.23763|-0.18758 +2016-07-01|-58.0|51.0|-55.85081|-0.18548 +2016-07-01|-58.0|52.0|-56.45427|-0.18324 +2016-07-01|-58.0|53.0|-57.04783|-0.18088 +2016-07-01|-58.0|54.0|-57.63129|-0.17838 +2016-07-01|-58.0|55.0|-58.2045|-0.17576 +2016-07-01|-58.0|56.0|-58.76726|-0.17303 +2016-07-01|-58.0|57.0|-59.31942|-0.17017 +2016-07-01|-58.0|58.0|-59.86081|-0.16721 +2016-07-01|-58.0|59.0|-60.39127|-0.16414 +2016-07-01|-58.0|60.0|-60.91063|-0.16096 +2016-07-01|-58.0|61.0|-61.41873|-0.15768 +2016-07-01|-58.0|62.0|-61.91542|-0.15431 +2016-07-01|-58.0|63.0|-62.40052|-0.15083 +2016-07-01|-58.0|64.0|-62.87387|-0.14727 +2016-07-01|-58.0|65.0|-63.3353|-0.14362 +2016-07-01|-58.0|66.0|-63.78462|-0.13989 +2016-07-01|-58.0|67.0|-64.22165|-0.13607 +2016-07-01|-58.0|68.0|-64.64619|-0.13218 +2016-07-01|-58.0|69.0|-65.05803|-0.12822 +2016-07-01|-58.0|70.0|-65.45695|-0.12418 +2016-07-01|-58.0|71.0|-65.84271|-0.12008 +2016-07-01|-58.0|72.0|-66.21506|-0.11591 +2016-07-01|-58.0|73.0|-66.57373|-0.11168 +2016-07-01|-58.0|74.0|-66.91841|-0.1074 +2016-07-01|-58.0|75.0|-67.24879|-0.10306 +2016-07-01|-58.0|76.0|-67.56452|-0.09868 +2016-07-01|-58.0|77.0|-67.86523|-0.09424 +2016-07-01|-58.0|78.0|-68.15051|-0.08977 +2016-07-01|-58.0|79.0|-68.41991|-0.08525 +2016-07-01|-58.0|80.0|-68.67295|-0.0807 +2016-07-01|-58.0|81.0|-68.90911|-0.0761 +2016-07-01|-58.0|82.0|-69.1278|-0.07148 +2016-07-01|-58.0|83.0|-69.32841|-0.06683 +2016-07-01|-58.0|84.0|-69.51025|-0.06214 +2016-07-01|-58.0|85.0|-69.67258|-0.05743 +2016-07-01|-58.0|86.0|-69.81458|-0.05268 +2016-07-01|-58.0|87.0|-69.93537|-0.04791 +2016-07-01|-58.0|88.0|-70.03397|-0.04311 +2016-07-01|-58.0|89.0|-70.10934|-0.03827 +2016-07-01|-58.0|90.0|-70.16032|-0.0334 +2016-07-01|-58.0|91.0|-70.18563|-0.02849 +2016-07-01|-58.0|92.0|-70.1839|-0.02354 +2016-07-01|-58.0|93.0|-70.15362|-0.01853 +2016-07-01|-58.0|94.0|-70.09313|-0.01346 +2016-07-01|-58.0|95.0|-70.0006|-0.00833 +2016-07-01|-58.0|96.0|-69.87406|-0.00311 +2016-07-01|-58.0|97.0|-69.71129|0.00221 +2016-07-01|-58.0|98.0|-69.50991|0.00764 +2016-07-01|-58.0|99.0|-69.26725|0.0132 +2016-07-01|-58.0|100.0|-68.98041|0.01893 +2016-07-01|-58.0|101.0|-68.64618|0.02483 +2016-07-01|-58.0|102.0|-68.26102|0.03095 +2016-07-01|-58.0|103.0|-67.82102|0.03732 +2016-07-01|-58.0|104.0|-67.32187|0.04398 +2016-07-01|-58.0|105.0|-66.75883|0.05097 +2016-07-01|-58.0|106.0|-66.12665|0.05835 +2016-07-01|-58.0|107.0|-65.41954|0.06617 +2016-07-01|-58.0|108.0|-64.63113|0.0745 +2016-07-01|-58.0|109.0|-63.75442|0.08341 +2016-07-01|-58.0|110.0|-62.78172|0.09298 +2016-07-01|-58.0|111.0|-61.70464|0.10329 +2016-07-01|-58.0|112.0|-60.51404|0.11444 +2016-07-01|-58.0|113.0|-59.20006|0.12652 +2016-07-01|-58.0|114.0|-57.75218|0.13963 +2016-07-01|-58.0|115.0|-56.15927|0.15385 +2016-07-01|-58.0|116.0|-54.40977|0.16927 +2016-07-01|-58.0|117.0|-52.49202|0.18596 +2016-07-01|-58.0|118.0|-50.3946|0.20393 +2016-07-01|-58.0|119.0|-48.10692|0.22317 +2016-07-01|-58.0|120.0|-45.61999|0.24358 +2016-07-01|-58.0|121.0|-42.92738|0.26497 +2016-07-01|-58.0|122.0|-40.02633|0.28705 +2016-07-01|-58.0|123.0|-36.91906|0.30939 +2016-07-01|-58.0|124.0|-33.61405|0.33141 +2016-07-01|-58.0|125.0|-30.12709|0.35244 +2016-07-01|-58.0|126.0|-26.48195|0.3717 +2016-07-01|-58.0|127.0|-22.71039|0.38841 +2016-07-01|-58.0|128.0|-18.85124|0.40185 +2016-07-01|-58.0|129.0|-14.94859|0.41146 +2016-07-01|-58.0|130.0|-11.04918|0.41691 +2016-07-01|-58.0|131.0|-7.19944|0.41813 +2016-07-01|-58.0|132.0|-3.4425|0.41532 +2016-07-01|-58.0|133.0|0.18421|0.40894 +2016-07-01|-58.0|134.0|3.65062|0.39956 +2016-07-01|-58.0|135.0|6.93471|0.38785 +2016-07-01|-58.0|136.0|10.02234|0.37449 +2016-07-01|-58.0|137.0|12.90651|0.36009 +2016-07-01|-58.0|138.0|15.5862|0.34519 +2016-07-01|-58.0|139.0|18.06505|0.33022 +2016-07-01|-58.0|140.0|20.35016|0.31551 +2016-07-01|-58.0|141.0|22.45095|0.3013 +2016-07-01|-58.0|142.0|24.37826|0.28777 +2016-07-01|-58.0|143.0|26.14362|0.275 +2016-07-01|-58.0|144.0|27.75872|0.26306 +2016-07-01|-58.0|145.0|29.23506|0.25195 +2016-07-01|-58.0|146.0|30.58366|0.24167 +2016-07-01|-58.0|147.0|31.81495|0.2322 +2016-07-01|-58.0|148.0|32.93866|0.22349 +2016-07-01|-58.0|149.0|33.96378|0.21549 +2016-07-01|-58.0|150.0|34.8986|0.20817 +2016-07-01|-58.0|151.0|35.75068|0.20147 +2016-07-01|-58.0|152.0|36.52693|0.19534 +2016-07-01|-58.0|153.0|37.23365|0.18973 +2016-07-01|-58.0|154.0|37.87654|0.18459 +2016-07-01|-58.0|155.0|38.46079|0.1799 +2016-07-01|-58.0|156.0|38.99114|0.17559 +2016-07-01|-58.0|157.0|39.47184|0.17164 +2016-07-01|-58.0|158.0|39.90681|0.16802 +2016-07-01|-58.0|159.0|40.29959|0.16467 +2016-07-01|-58.0|160.0|40.65341|0.16159 +2016-07-01|-58.0|161.0|40.97121|0.15874 +2016-07-01|-58.0|162.0|41.25568|0.15609 +2016-07-01|-58.0|163.0|41.5093|0.15362 +2016-07-01|-58.0|164.0|41.73431|0.15131 +2016-07-01|-58.0|165.0|41.9328|0.14914 +2016-07-01|-58.0|166.0|42.10667|0.14709 +2016-07-01|-58.0|167.0|42.25768|0.14514 +2016-07-01|-58.0|168.0|42.38746|0.14328 +2016-07-01|-58.0|169.0|42.4975|0.14149 +2016-07-01|-58.0|170.0|42.5892|0.13977 +2016-07-01|-58.0|171.0|42.66384|0.1381 +2016-07-01|-58.0|172.0|42.72264|0.13646 +2016-07-01|-58.0|173.0|42.7667|0.13485 +2016-07-01|-58.0|174.0|42.79708|0.13326 +2016-07-01|-58.0|175.0|42.81474|0.13169 +2016-07-01|-58.0|176.0|42.8206|0.13012 +2016-07-01|-58.0|177.0|42.8155|0.12855 +2016-07-01|-58.0|178.0|42.80027|0.12697 +2016-07-01|-58.0|179.0|42.77563|0.12537 +2016-07-01|-58.0|-1.0|-19.59582|-0.0545 +2016-07-01|-58.0|-2.0|-19.03655|-0.04907 +2016-07-01|-58.0|-3.0|-18.48959|-0.04376 +2016-07-01|-58.0|-4.0|-17.95488|-0.0386 +2016-07-01|-58.0|-5.0|-17.43228|-0.0336 +2016-07-01|-58.0|-6.0|-16.92162|-0.02877 +2016-07-01|-58.0|-7.0|-16.42266|-0.02414 +2016-07-01|-58.0|-8.0|-15.9351|-0.01972 +2016-07-01|-58.0|-9.0|-15.45858|-0.01551 +2016-07-01|-58.0|-10.0|-14.99271|-0.01154 +2016-07-01|-58.0|-11.0|-14.53703|-0.0078 +2016-07-01|-58.0|-12.0|-14.09104|-0.00432 +2016-07-01|-58.0|-13.0|-13.65418|-0.0011 +2016-07-01|-58.0|-14.0|-13.22586|0.00185 +2016-07-01|-58.0|-15.0|-12.80545|0.00453 +2016-07-01|-58.0|-16.0|-12.39227|0.00693 +2016-07-01|-58.0|-17.0|-11.98562|0.00905 +2016-07-01|-58.0|-18.0|-11.58476|0.01088 +2016-07-01|-58.0|-19.0|-11.18894|0.01243 +2016-07-01|-58.0|-20.0|-10.79737|0.0137 +2016-07-01|-58.0|-21.0|-10.40926|0.01469 +2016-07-01|-58.0|-22.0|-10.02378|0.01539 +2016-07-01|-58.0|-23.0|-9.64013|0.01582 +2016-07-01|-58.0|-24.0|-9.25748|0.01598 +2016-07-01|-58.0|-25.0|-8.875|0.01588 +2016-07-01|-58.0|-26.0|-8.49187|0.01552 +2016-07-01|-58.0|-27.0|-8.10728|0.01492 +2016-07-01|-58.0|-28.0|-7.72044|0.01408 +2016-07-01|-58.0|-29.0|-7.33055|0.01301 +2016-07-01|-58.0|-30.0|-6.93686|0.01173 +2016-07-01|-58.0|-31.0|-6.53864|0.01024 +2016-07-01|-58.0|-32.0|-6.13517|0.00856 +2016-07-01|-58.0|-33.0|-5.72578|0.00671 +2016-07-01|-58.0|-34.0|-5.30984|0.00469 +2016-07-01|-58.0|-35.0|-4.88673|0.00252 +2016-07-01|-58.0|-36.0|-4.45589|2.2E-4 +2016-07-01|-58.0|-37.0|-4.01682|-0.00219 +2016-07-01|-58.0|-38.0|-3.56904|-0.00471 +2016-07-01|-58.0|-39.0|-3.11213|-0.00732 +2016-07-01|-58.0|-40.0|-2.64572|-0.01 +2016-07-01|-58.0|-41.0|-2.16949|-0.01273 +2016-07-01|-58.0|-42.0|-1.68316|-0.0155 +2016-07-01|-58.0|-43.0|-1.18654|-0.0183 +2016-07-01|-58.0|-44.0|-0.67946|-0.0211 +2016-07-01|-58.0|-45.0|-0.16182|-0.02389 +2016-07-01|-58.0|-46.0|0.36642|-0.02667 +2016-07-01|-58.0|-47.0|0.90525|-0.0294 +2016-07-01|-58.0|-48.0|1.45462|-0.03209 +2016-07-01|-58.0|-49.0|2.01439|-0.03471 +2016-07-01|-58.0|-50.0|2.58441|-0.03726 +2016-07-01|-58.0|-51.0|3.16443|-0.03972 +2016-07-01|-58.0|-52.0|3.75418|-0.04208 +2016-07-01|-58.0|-53.0|4.35335|-0.04433 +2016-07-01|-58.0|-54.0|4.96154|-0.04647 +2016-07-01|-58.0|-55.0|5.57836|-0.04847 +2016-07-01|-58.0|-56.0|6.20332|-0.05035 +2016-07-01|-58.0|-57.0|6.83594|-0.05208 +2016-07-01|-58.0|-58.0|7.47566|-0.05366 +2016-07-01|-58.0|-59.0|8.12192|-0.05509 +2016-07-01|-58.0|-60.0|8.7741|-0.05637 +2016-07-01|-58.0|-61.0|9.43158|-0.05749 +2016-07-01|-58.0|-62.0|10.09367|-0.05845 +2016-07-01|-58.0|-63.0|10.75971|-0.05924 +2016-07-01|-58.0|-64.0|11.42898|-0.05988 +2016-07-01|-58.0|-65.0|12.10077|-0.06036 +2016-07-01|-58.0|-66.0|12.77433|-0.06067 +2016-07-01|-58.0|-67.0|13.44893|-0.06083 +2016-07-01|-58.0|-68.0|14.12382|-0.06084 +2016-07-01|-58.0|-69.0|14.79823|-0.0607 +2016-07-01|-58.0|-70.0|15.47143|-0.06042 +2016-07-01|-58.0|-71.0|16.14265|-0.06 +2016-07-01|-58.0|-72.0|16.81116|-0.05944 +2016-07-01|-58.0|-73.0|17.47621|-0.05876 +2016-07-01|-58.0|-74.0|18.13709|-0.05795 +2016-07-01|-58.0|-75.0|18.79309|-0.05703 +2016-07-01|-58.0|-76.0|19.44351|-0.05601 +2016-07-01|-58.0|-77.0|20.08767|-0.05489 +2016-07-01|-58.0|-78.0|20.72493|-0.05368 +2016-07-01|-58.0|-79.0|21.35464|-0.05238 +2016-07-01|-58.0|-80.0|21.97622|-0.05102 +2016-07-01|-58.0|-81.0|22.58906|-0.04958 +2016-07-01|-58.0|-82.0|23.19263|-0.04808 +2016-07-01|-58.0|-83.0|23.78639|-0.04654 +2016-07-01|-58.0|-84.0|24.36986|-0.04494 +2016-07-01|-58.0|-85.0|24.94256|-0.04332 +2016-07-01|-58.0|-86.0|25.50406|-0.04166 +2016-07-01|-58.0|-87.0|26.05397|-0.03997 +2016-07-01|-58.0|-88.0|26.5919|-0.03828 +2016-07-01|-58.0|-89.0|27.11754|-0.03657 +2016-07-01|-58.0|-90.0|27.63058|-0.03485 +2016-07-01|-58.0|-91.0|28.13075|-0.03314 +2016-07-01|-58.0|-92.0|28.61782|-0.03143 +2016-07-01|-58.0|-93.0|29.09158|-0.02973 +2016-07-01|-58.0|-94.0|29.55187|-0.02804 +2016-07-01|-58.0|-95.0|29.99857|-0.02637 +2016-07-01|-58.0|-96.0|30.43156|-0.02472 +2016-07-01|-58.0|-97.0|30.85078|-0.02309 +2016-07-01|-58.0|-98.0|31.25621|-0.02149 +2016-07-01|-58.0|-99.0|31.64783|-0.01991 +2016-07-01|-58.0|-100.0|32.02569|-0.01836 +2016-07-01|-58.0|-101.0|32.38984|-0.01683 +2016-07-01|-58.0|-102.0|32.74038|-0.01534 +2016-07-01|-58.0|-103.0|33.07743|-0.01387 +2016-07-01|-58.0|-104.0|33.40114|-0.01242 +2016-07-01|-58.0|-105.0|33.7117|-0.011 +2016-07-01|-58.0|-106.0|34.00932|-0.00961 +2016-07-01|-58.0|-107.0|34.29423|-0.00824 +2016-07-01|-58.0|-108.0|34.56669|-0.00688 +2016-07-01|-58.0|-109.0|34.827|-0.00555 +2016-07-01|-58.0|-110.0|35.07546|-0.00423 +2016-07-01|-58.0|-111.0|35.3124|-0.00292 +2016-07-01|-58.0|-112.0|35.53819|-0.00162 +2016-07-01|-58.0|-113.0|35.7532|-3.3E-4 +2016-07-01|-58.0|-114.0|35.95781|9.6E-4 +2016-07-01|-58.0|-115.0|36.15245|0.00225 +2016-07-01|-58.0|-116.0|36.33752|0.00354 +2016-07-01|-58.0|-117.0|36.51348|0.00484 +2016-07-01|-58.0|-118.0|36.68076|0.00615 +2016-07-01|-58.0|-119.0|36.83983|0.00748 +2016-07-01|-58.0|-120.0|36.99116|0.00882 +2016-07-01|-58.0|-121.0|37.13522|0.01018 +2016-07-01|-58.0|-122.0|37.27247|0.01157 +2016-07-01|-58.0|-123.0|37.40341|0.01298 +2016-07-01|-58.0|-124.0|37.52851|0.01441 +2016-07-01|-58.0|-125.0|37.64824|0.01588 +2016-07-01|-58.0|-126.0|37.76307|0.01738 +2016-07-01|-58.0|-127.0|37.87347|0.01891 +2016-07-01|-58.0|-128.0|37.97989|0.02048 +2016-07-01|-58.0|-129.0|38.08278|0.02208 +2016-07-01|-58.0|-130.0|38.18257|0.02372 +2016-07-01|-58.0|-131.0|38.27968|0.0254 +2016-07-01|-58.0|-132.0|38.37451|0.02712 +2016-07-01|-58.0|-133.0|38.46744|0.02887 +2016-07-01|-58.0|-134.0|38.55884|0.03066 +2016-07-01|-58.0|-135.0|38.64907|0.03249 +2016-07-01|-58.0|-136.0|38.73844|0.03436 +2016-07-01|-58.0|-137.0|38.82725|0.03626 +2016-07-01|-58.0|-138.0|38.91579|0.0382 +2016-07-01|-58.0|-139.0|39.00432|0.04016 +2016-07-01|-58.0|-140.0|39.09306|0.04216 +2016-07-01|-58.0|-141.0|39.18222|0.0442 +2016-07-01|-58.0|-142.0|39.27199|0.04625 +2016-07-01|-58.0|-143.0|39.36252|0.04834 +2016-07-01|-58.0|-144.0|39.45394|0.05045 +2016-07-01|-58.0|-145.0|39.54637|0.05258 +2016-07-01|-58.0|-146.0|39.63989|0.05473 +2016-07-01|-58.0|-147.0|39.73455|0.0569 +2016-07-01|-58.0|-148.0|39.8304|0.05909 +2016-07-01|-58.0|-149.0|39.92745|0.06129 +2016-07-01|-58.0|-150.0|40.02569|0.0635 +2016-07-01|-58.0|-151.0|40.12509|0.06571 +2016-07-01|-58.0|-152.0|40.2256|0.06794 +2016-07-01|-58.0|-153.0|40.32715|0.07016 +2016-07-01|-58.0|-154.0|40.42966|0.07239 +2016-07-01|-58.0|-155.0|40.53301|0.07461 +2016-07-01|-58.0|-156.0|40.63708|0.07683 +2016-07-01|-58.0|-157.0|40.74172|0.07905 +2016-07-01|-58.0|-158.0|40.84679|0.08125 +2016-07-01|-58.0|-159.0|40.9521|0.08344 +2016-07-01|-58.0|-160.0|41.05746|0.08562 +2016-07-01|-58.0|-161.0|41.16267|0.08778 +2016-07-01|-58.0|-162.0|41.2675|0.08993 +2016-07-01|-58.0|-163.0|41.37173|0.09205 +2016-07-01|-58.0|-164.0|41.47509|0.09415 +2016-07-01|-58.0|-165.0|41.57732|0.09623 +2016-07-01|-58.0|-166.0|41.67815|0.09828 +2016-07-01|-58.0|-167.0|41.77727|0.1003 +2016-07-01|-58.0|-168.0|41.87437|0.10229 +2016-07-01|-58.0|-169.0|41.96912|0.10426 +2016-07-01|-58.0|-170.0|42.06117|0.10619 +2016-07-01|-58.0|-171.0|42.15016|0.10809 +2016-07-01|-58.0|-172.0|42.2357|0.10995 +2016-07-01|-58.0|-173.0|42.31739|0.11179 +2016-07-01|-58.0|-174.0|42.3948|0.11359 +2016-07-01|-58.0|-175.0|42.46748|0.11536 +2016-07-01|-58.0|-176.0|42.53495|0.1171 +2016-07-01|-58.0|-177.0|42.59672|0.1188 +2016-07-01|-58.0|-178.0|42.65225|0.12048 +2016-07-01|-58.0|-179.0|42.70098|0.12214 +2016-07-01|-59.0|0.0|-20.07478|-0.06283 +2016-07-01|-59.0|1.0|-20.67138|-0.06821 +2016-07-01|-59.0|2.0|-21.27947|-0.07366 +2016-07-01|-59.0|3.0|-21.89892|-0.07915 +2016-07-01|-59.0|4.0|-22.52952|-0.08466 +2016-07-01|-59.0|5.0|-23.17102|-0.09019 +2016-07-01|-59.0|6.0|-23.82314|-0.09571 +2016-07-01|-59.0|7.0|-24.48555|-0.10121 +2016-07-01|-59.0|8.0|-25.15788|-0.10666 +2016-07-01|-59.0|9.0|-25.83973|-0.11206 +2016-07-01|-59.0|10.0|-26.53067|-0.11739 +2016-07-01|-59.0|11.0|-27.23022|-0.12263 +2016-07-01|-59.0|12.0|-27.93791|-0.12777 +2016-07-01|-59.0|13.0|-28.65322|-0.13279 +2016-07-01|-59.0|14.0|-29.37561|-0.13768 +2016-07-01|-59.0|15.0|-30.10454|-0.14243 +2016-07-01|-59.0|16.0|-30.83944|-0.14703 +2016-07-01|-59.0|17.0|-31.57974|-0.15147 +2016-07-01|-59.0|18.0|-32.32487|-0.15574 +2016-07-01|-59.0|19.0|-33.07422|-0.15983 +2016-07-01|-59.0|20.0|-33.82722|-0.16373 +2016-07-01|-59.0|21.0|-34.58329|-0.16744 +2016-07-01|-59.0|22.0|-35.34182|-0.17095 +2016-07-01|-59.0|23.0|-36.10225|-0.17426 +2016-07-01|-59.0|24.0|-36.86401|-0.17736 +2016-07-01|-59.0|25.0|-37.62652|-0.18025 +2016-07-01|-59.0|26.0|-38.38924|-0.18293 +2016-07-01|-59.0|27.0|-39.15162|-0.1854 +2016-07-01|-59.0|28.0|-39.91315|-0.18765 +2016-07-01|-59.0|29.0|-40.67329|-0.18969 +2016-07-01|-59.0|30.0|-41.43156|-0.19152 +2016-07-01|-59.0|31.0|-42.18747|-0.19314 +2016-07-01|-59.0|32.0|-42.94055|-0.19455 +2016-07-01|-59.0|33.0|-43.69036|-0.19575 +2016-07-01|-59.0|34.0|-44.43646|-0.19675 +2016-07-01|-59.0|35.0|-45.17843|-0.19755 +2016-07-01|-59.0|36.0|-45.91588|-0.19815 +2016-07-01|-59.0|37.0|-46.64842|-0.19856 +2016-07-01|-59.0|38.0|-47.37569|-0.19879 +2016-07-01|-59.0|39.0|-48.09733|-0.19882 +2016-07-01|-59.0|40.0|-48.81302|-0.19868 +2016-07-01|-59.0|41.0|-49.52244|-0.19836 +2016-07-01|-59.0|42.0|-50.22529|-0.19788 +2016-07-01|-59.0|43.0|-50.92128|-0.19722 +2016-07-01|-59.0|44.0|-51.61014|-0.19641 +2016-07-01|-59.0|45.0|-52.2916|-0.19543 +2016-07-01|-59.0|46.0|-52.96544|-0.19431 +2016-07-01|-59.0|47.0|-53.6314|-0.19303 +2016-07-01|-59.0|48.0|-54.28927|-0.19162 +2016-07-01|-59.0|49.0|-54.93885|-0.19006 +2016-07-01|-59.0|50.0|-55.57993|-0.18837 +2016-07-01|-59.0|51.0|-56.21231|-0.18655 +2016-07-01|-59.0|52.0|-56.83584|-0.1846 +2016-07-01|-59.0|53.0|-57.45032|-0.18254 +2016-07-01|-59.0|54.0|-58.05559|-0.18035 +2016-07-01|-59.0|55.0|-58.65151|-0.17805 +2016-07-01|-59.0|56.0|-59.23791|-0.17564 +2016-07-01|-59.0|57.0|-59.81465|-0.17313 +2016-07-01|-59.0|58.0|-60.38159|-0.17051 +2016-07-01|-59.0|59.0|-60.93858|-0.16779 +2016-07-01|-59.0|60.0|-61.4855|-0.16498 +2016-07-01|-59.0|61.0|-62.0222|-0.16208 +2016-07-01|-59.0|62.0|-62.54856|-0.15909 +2016-07-01|-59.0|63.0|-63.06443|-0.15602 +2016-07-01|-59.0|64.0|-63.56968|-0.15286 +2016-07-01|-59.0|65.0|-64.06417|-0.14963 +2016-07-01|-59.0|66.0|-64.54775|-0.14633 +2016-07-01|-59.0|67.0|-65.02028|-0.14295 +2016-07-01|-59.0|68.0|-65.48159|-0.13951 +2016-07-01|-59.0|69.0|-65.93152|-0.13601 +2016-07-01|-59.0|70.0|-66.36989|-0.13244 +2016-07-01|-59.0|71.0|-66.79652|-0.12883 +2016-07-01|-59.0|72.0|-67.21121|-0.12516 +2016-07-01|-59.0|73.0|-67.61373|-0.12144 +2016-07-01|-59.0|74.0|-68.00386|-0.11767 +2016-07-01|-59.0|75.0|-68.38133|-0.11387 +2016-07-01|-59.0|76.0|-68.74588|-0.11003 +2016-07-01|-59.0|77.0|-69.09721|-0.10615 +2016-07-01|-59.0|78.0|-69.43499|-0.10224 +2016-07-01|-59.0|79.0|-69.75887|-0.0983 +2016-07-01|-59.0|80.0|-70.06845|-0.09434 +2016-07-01|-59.0|81.0|-70.36331|-0.09035 +2016-07-01|-59.0|82.0|-70.64299|-0.08635 +2016-07-01|-59.0|83.0|-70.90699|-0.08232 +2016-07-01|-59.0|84.0|-71.15475|-0.07828 +2016-07-01|-59.0|85.0|-71.38565|-0.07422 +2016-07-01|-59.0|86.0|-71.59905|-0.07015 +2016-07-01|-59.0|87.0|-71.79421|-0.06607 +2016-07-01|-59.0|88.0|-71.97034|-0.06196 +2016-07-01|-59.0|89.0|-72.12656|-0.05785 +2016-07-01|-59.0|90.0|-72.26191|-0.05371 +2016-07-01|-59.0|91.0|-72.37534|-0.04955 +2016-07-01|-59.0|92.0|-72.46571|-0.04537 +2016-07-01|-59.0|93.0|-72.53173|-0.04115 +2016-07-01|-59.0|94.0|-72.57201|-0.0369 +2016-07-01|-59.0|95.0|-72.58502|-0.0326 +2016-07-01|-59.0|96.0|-72.56904|-0.02824 +2016-07-01|-59.0|97.0|-72.52222|-0.02381 +2016-07-01|-59.0|98.0|-72.44247|-0.0193 +2016-07-01|-59.0|99.0|-72.3275|-0.01468 +2016-07-01|-59.0|100.0|-72.17476|-0.00993 +2016-07-01|-59.0|101.0|-71.98143|-0.00504 +2016-07-01|-59.0|102.0|-71.74436|3.0E-5 +2016-07-01|-59.0|103.0|-71.46005|0.00532 +2016-07-01|-59.0|104.0|-71.12459|0.01086 +2016-07-01|-59.0|105.0|-70.73361|0.0167 +2016-07-01|-59.0|106.0|-70.28223|0.02289 +2016-07-01|-59.0|107.0|-69.76497|0.02949 +2016-07-01|-59.0|108.0|-69.17569|0.03658 +2016-07-01|-59.0|109.0|-68.5075|0.04424 +2016-07-01|-59.0|110.0|-67.75266|0.05257 +2016-07-01|-59.0|111.0|-66.9025|0.06167 +2016-07-01|-59.0|112.0|-65.94727|0.07167 +2016-07-01|-59.0|113.0|-64.87606|0.08271 +2016-07-01|-59.0|114.0|-63.67669|0.09496 +2016-07-01|-59.0|115.0|-62.33562|0.1086 +2016-07-01|-59.0|116.0|-60.83792|0.12381 +2016-07-01|-59.0|117.0|-59.16723|0.14081 +2016-07-01|-59.0|118.0|-57.30595|0.15981 +2016-07-01|-59.0|119.0|-55.23544|0.18102 +2016-07-01|-59.0|120.0|-52.9366|0.20458 +2016-07-01|-59.0|121.0|-50.39062|0.23061 +2016-07-01|-59.0|122.0|-47.5803|0.25908 +2016-07-01|-59.0|123.0|-44.49173|0.2898 +2016-07-01|-59.0|124.0|-41.11661|0.32234 +2016-07-01|-59.0|125.0|-37.45493|0.35598 +2016-07-01|-59.0|126.0|-33.51793|0.38964 +2016-07-01|-59.0|127.0|-29.33062|0.42194 +2016-07-01|-59.0|128.0|-24.93334|0.45127 +2016-07-01|-59.0|129.0|-20.38148|0.47599 +2016-07-01|-59.0|130.0|-15.74277|0.49465 +2016-07-01|-59.0|131.0|-11.09237|0.50628 +2016-07-01|-59.0|132.0|-6.50631|0.51053 +2016-07-01|-59.0|133.0|-2.05481|0.50769 +2016-07-01|-59.0|134.0|2.2032|0.49861 +2016-07-01|-59.0|135.0|6.22337|0.48453 +2016-07-01|-59.0|136.0|9.97681|0.46679 +2016-07-01|-59.0|137.0|13.44896|0.4467 +2016-07-01|-59.0|138.0|16.63719|0.42538 +2016-07-01|-59.0|139.0|19.54794|0.40375 +2016-07-01|-59.0|140.0|22.19393|0.38248 +2016-07-01|-59.0|141.0|24.59172|0.36203 +2016-07-01|-59.0|142.0|26.75985|0.34269 +2016-07-01|-59.0|143.0|28.71746|0.32463 +2016-07-01|-59.0|144.0|30.48341|0.3079 +2016-07-01|-59.0|145.0|32.07562|0.29252 +2016-07-01|-59.0|146.0|33.51081|0.27843 +2016-07-01|-59.0|147.0|34.80433|0.26558 +2016-07-01|-59.0|148.0|35.97011|0.25387 +2016-07-01|-59.0|149.0|37.02072|0.24322 +2016-07-01|-59.0|150.0|37.96742|0.23354 +2016-07-01|-59.0|151.0|38.82031|0.22475 +2016-07-01|-59.0|152.0|39.58837|0.21675 +2016-07-01|-59.0|153.0|40.27963|0.20948 +2016-07-01|-59.0|154.0|40.90125|0.20286 +2016-07-01|-59.0|155.0|41.45963|0.19682 +2016-07-01|-59.0|156.0|41.96046|0.19131 +2016-07-01|-59.0|157.0|42.40886|0.18626 +2016-07-01|-59.0|158.0|42.8094|0.18164 +2016-07-01|-59.0|159.0|43.16618|0.17739 +2016-07-01|-59.0|160.0|43.48289|0.17348 +2016-07-01|-59.0|161.0|43.76287|0.16987 +2016-07-01|-59.0|162.0|44.00911|0.16652 +2016-07-01|-59.0|163.0|44.22435|0.1634 +2016-07-01|-59.0|164.0|44.41104|0.16049 +2016-07-01|-59.0|165.0|44.57143|0.15776 +2016-07-01|-59.0|166.0|44.70757|0.15519 +2016-07-01|-59.0|167.0|44.82132|0.15275 +2016-07-01|-59.0|168.0|44.9144|0.15044 +2016-07-01|-59.0|169.0|44.98838|0.14823 +2016-07-01|-59.0|170.0|45.04469|0.1461 +2016-07-01|-59.0|171.0|45.08467|0.14405 +2016-07-01|-59.0|172.0|45.10956|0.14205 +2016-07-01|-59.0|173.0|45.12047|0.14011 +2016-07-01|-59.0|174.0|45.11847|0.1382 +2016-07-01|-59.0|175.0|45.10454|0.13632 +2016-07-01|-59.0|176.0|45.07959|0.13446 +2016-07-01|-59.0|177.0|45.04446|0.13262 +2016-07-01|-59.0|178.0|44.99994|0.13078 +2016-07-01|-59.0|179.0|44.94679|0.12894 +2016-07-01|-59.0|-1.0|-19.48979|-0.05753 +2016-07-01|-59.0|-2.0|-18.91647|-0.05232 +2016-07-01|-59.0|-3.0|-18.3548|-0.04723 +2016-07-01|-59.0|-4.0|-17.80475|-0.04227 +2016-07-01|-59.0|-5.0|-17.2662|-0.03745 +2016-07-01|-59.0|-6.0|-16.73901|-0.03279 +2016-07-01|-59.0|-7.0|-16.22297|-0.02831 +2016-07-01|-59.0|-8.0|-15.71781|-0.02401 +2016-07-01|-59.0|-9.0|-15.22323|-0.01992 +2016-07-01|-59.0|-10.0|-14.73887|-0.01603 +2016-07-01|-59.0|-11.0|-14.26432|-0.01237 +2016-07-01|-59.0|-12.0|-13.79913|-0.00894 +2016-07-01|-59.0|-13.0|-13.3428|-0.00575 +2016-07-01|-59.0|-14.0|-12.89479|-0.00281 +2016-07-01|-59.0|-15.0|-12.45454|-1.2E-4 +2016-07-01|-59.0|-16.0|-12.02141|0.00231 +2016-07-01|-59.0|-17.0|-11.59478|0.00447 +2016-07-01|-59.0|-18.0|-11.17397|0.00637 +2016-07-01|-59.0|-19.0|-10.75828|0.00801 +2016-07-01|-59.0|-20.0|-10.347|0.00938 +2016-07-01|-59.0|-21.0|-9.93938|0.01048 +2016-07-01|-59.0|-22.0|-9.53468|0.01132 +2016-07-01|-59.0|-23.0|-9.13214|0.0119 +2016-07-01|-59.0|-24.0|-8.73099|0.01222 +2016-07-01|-59.0|-25.0|-8.33047|0.01229 +2016-07-01|-59.0|-26.0|-7.92981|0.01212 +2016-07-01|-59.0|-27.0|-7.52825|0.01171 +2016-07-01|-59.0|-28.0|-7.12505|0.01107 +2016-07-01|-59.0|-29.0|-6.71947|0.01022 +2016-07-01|-59.0|-30.0|-6.3108|0.00915 +2016-07-01|-59.0|-31.0|-5.89835|0.00789 +2016-07-01|-59.0|-32.0|-5.48145|0.00645 +2016-07-01|-59.0|-33.0|-5.05947|0.00483 +2016-07-01|-59.0|-34.0|-4.63179|0.00305 +2016-07-01|-59.0|-35.0|-4.19784|0.00113 +2016-07-01|-59.0|-36.0|-3.7571|-9.3E-4 +2016-07-01|-59.0|-37.0|-3.30906|-0.0031 +2016-07-01|-59.0|-38.0|-2.85328|-0.00538 +2016-07-01|-59.0|-39.0|-2.38935|-0.00775 +2016-07-01|-59.0|-40.0|-1.9169|-0.01019 +2016-07-01|-59.0|-41.0|-1.43563|-0.01269 +2016-07-01|-59.0|-42.0|-0.94527|-0.01523 +2016-07-01|-59.0|-43.0|-0.4456|-0.0178 +2016-07-01|-59.0|-44.0|0.06353|-0.02039 +2016-07-01|-59.0|-45.0|0.58224|-0.02298 +2016-07-01|-59.0|-46.0|1.1106|-0.02555 +2016-07-01|-59.0|-47.0|1.6486|-0.0281 +2016-07-01|-59.0|-48.0|2.19621|-0.0306 +2016-07-01|-59.0|-49.0|2.75333|-0.03306 +2016-07-01|-59.0|-50.0|3.31983|-0.03544 +2016-07-01|-59.0|-51.0|3.89551|-0.03776 +2016-07-01|-59.0|-52.0|4.48014|-0.03998 +2016-07-01|-59.0|-53.0|5.07343|-0.04212 +2016-07-01|-59.0|-54.0|5.67505|-0.04414 +2016-07-01|-59.0|-55.0|6.28464|-0.04605 +2016-07-01|-59.0|-56.0|6.90179|-0.04784 +2016-07-01|-59.0|-57.0|7.52604|-0.04951 +2016-07-01|-59.0|-58.0|8.15692|-0.05104 +2016-07-01|-59.0|-59.0|8.79391|-0.05243 +2016-07-01|-59.0|-60.0|9.43646|-0.05368 +2016-07-01|-59.0|-61.0|10.084|-0.05479 +2016-07-01|-59.0|-62.0|10.73594|-0.05575 +2016-07-01|-59.0|-63.0|11.39164|-0.05656 +2016-07-01|-59.0|-64.0|12.05047|-0.05723 +2016-07-01|-59.0|-65.0|12.71178|-0.05774 +2016-07-01|-59.0|-66.0|13.37489|-0.05811 +2016-07-01|-59.0|-67.0|14.03914|-0.05833 +2016-07-01|-59.0|-68.0|14.70383|-0.05841 +2016-07-01|-59.0|-69.0|15.36827|-0.05835 +2016-07-01|-59.0|-70.0|16.03178|-0.05816 +2016-07-01|-59.0|-71.0|16.69367|-0.05783 +2016-07-01|-59.0|-72.0|17.35324|-0.05738 +2016-07-01|-59.0|-73.0|18.00982|-0.05681 +2016-07-01|-59.0|-74.0|18.66275|-0.05613 +2016-07-01|-59.0|-75.0|19.31136|-0.05533 +2016-07-01|-59.0|-76.0|19.955|-0.05443 +2016-07-01|-59.0|-77.0|20.59306|-0.05344 +2016-07-01|-59.0|-78.0|21.22491|-0.05236 +2016-07-01|-59.0|-79.0|21.84996|-0.05119 +2016-07-01|-59.0|-80.0|22.46765|-0.04996 +2016-07-01|-59.0|-81.0|23.07743|-0.04865 +2016-07-01|-59.0|-82.0|23.67876|-0.04728 +2016-07-01|-59.0|-83.0|24.27116|-0.04586 +2016-07-01|-59.0|-84.0|24.85414|-0.04439 +2016-07-01|-59.0|-85.0|25.42726|-0.04289 +2016-07-01|-59.0|-86.0|25.99011|-0.04134 +2016-07-01|-59.0|-87.0|26.54228|-0.03978 +2016-07-01|-59.0|-88.0|27.08343|-0.03818 +2016-07-01|-59.0|-89.0|27.61322|-0.03658 +2016-07-01|-59.0|-90.0|28.13135|-0.03496 +2016-07-01|-59.0|-91.0|28.63755|-0.03333 +2016-07-01|-59.0|-92.0|29.13157|-0.03171 +2016-07-01|-59.0|-93.0|29.61322|-0.03009 +2016-07-01|-59.0|-94.0|30.08231|-0.02847 +2016-07-01|-59.0|-95.0|30.5387|-0.02686 +2016-07-01|-59.0|-96.0|30.98226|-0.02527 +2016-07-01|-59.0|-97.0|31.41292|-0.02369 +2016-07-01|-59.0|-98.0|31.83061|-0.02213 +2016-07-01|-59.0|-99.0|32.23532|-0.02059 +2016-07-01|-59.0|-100.0|32.62704|-0.01907 +2016-07-01|-59.0|-101.0|33.00581|-0.01756 +2016-07-01|-59.0|-102.0|33.37169|-0.01609 +2016-07-01|-59.0|-103.0|33.72477|-0.01463 +2016-07-01|-59.0|-104.0|34.06517|-0.01319 +2016-07-01|-59.0|-105.0|34.39304|-0.01177 +2016-07-01|-59.0|-106.0|34.70854|-0.01038 +2016-07-01|-59.0|-107.0|35.01188|-0.009 +2016-07-01|-59.0|-108.0|35.30327|-0.00764 +2016-07-01|-59.0|-109.0|35.58297|-0.00629 +2016-07-01|-59.0|-110.0|35.85124|-0.00495 +2016-07-01|-59.0|-111.0|36.10837|-0.00363 +2016-07-01|-59.0|-112.0|36.35468|-0.00231 +2016-07-01|-59.0|-113.0|36.5905|-9.9E-4 +2016-07-01|-59.0|-114.0|36.81618|3.2E-4 +2016-07-01|-59.0|-115.0|37.03208|0.00164 +2016-07-01|-59.0|-116.0|37.23859|0.00295 +2016-07-01|-59.0|-117.0|37.43611|0.00428 +2016-07-01|-59.0|-118.0|37.62505|0.00561 +2016-07-01|-59.0|-119.0|37.80581|0.00696 +2016-07-01|-59.0|-120.0|37.97884|0.00833 +2016-07-01|-59.0|-121.0|38.14457|0.00971 +2016-07-01|-59.0|-122.0|38.30345|0.01112 +2016-07-01|-59.0|-123.0|38.4559|0.01254 +2016-07-01|-59.0|-124.0|38.6024|0.014 +2016-07-01|-59.0|-125.0|38.74337|0.01548 +2016-07-01|-59.0|-126.0|38.87927|0.01699 +2016-07-01|-59.0|-127.0|39.01053|0.01854 +2016-07-01|-59.0|-128.0|39.13759|0.02012 +2016-07-01|-59.0|-129.0|39.26088|0.02173 +2016-07-01|-59.0|-130.0|39.38082|0.02338 +2016-07-01|-59.0|-131.0|39.4978|0.02507 +2016-07-01|-59.0|-132.0|39.61223|0.02679 +2016-07-01|-59.0|-133.0|39.72448|0.02855 +2016-07-01|-59.0|-134.0|39.83491|0.03034 +2016-07-01|-59.0|-135.0|39.94387|0.03218 +2016-07-01|-59.0|-136.0|40.05169|0.03405 +2016-07-01|-59.0|-137.0|40.15868|0.03595 +2016-07-01|-59.0|-138.0|40.26512|0.0379 +2016-07-01|-59.0|-139.0|40.37127|0.03987 +2016-07-01|-59.0|-140.0|40.47739|0.04188 +2016-07-01|-59.0|-141.0|40.58369|0.04392 +2016-07-01|-59.0|-142.0|40.69037|0.04599 +2016-07-01|-59.0|-143.0|40.79761|0.04809 +2016-07-01|-59.0|-144.0|40.90557|0.05022 +2016-07-01|-59.0|-145.0|41.01436|0.05237 +2016-07-01|-59.0|-146.0|41.12411|0.05454 +2016-07-01|-59.0|-147.0|41.23489|0.05673 +2016-07-01|-59.0|-148.0|41.34677|0.05895 +2016-07-01|-59.0|-149.0|41.45978|0.06118 +2016-07-01|-59.0|-150.0|41.57395|0.06342 +2016-07-01|-59.0|-151.0|41.68927|0.06567 +2016-07-01|-59.0|-152.0|41.80573|0.06794 +2016-07-01|-59.0|-153.0|41.92328|0.07021 +2016-07-01|-59.0|-154.0|42.04185|0.07248 +2016-07-01|-59.0|-155.0|42.16138|0.07476 +2016-07-01|-59.0|-156.0|42.28176|0.07704 +2016-07-01|-59.0|-157.0|42.40288|0.07931 +2016-07-01|-59.0|-158.0|42.52461|0.08158 +2016-07-01|-59.0|-159.0|42.6468|0.08385 +2016-07-01|-59.0|-160.0|42.76928|0.0861 +2016-07-01|-59.0|-161.0|42.89188|0.08835 +2016-07-01|-59.0|-162.0|43.0144|0.09058 +2016-07-01|-59.0|-163.0|43.13663|0.09279 +2016-07-01|-59.0|-164.0|43.25835|0.09499 +2016-07-01|-59.0|-165.0|43.37931|0.09717 +2016-07-01|-59.0|-166.0|43.49926|0.09933 +2016-07-01|-59.0|-167.0|43.61793|0.10146 +2016-07-01|-59.0|-168.0|43.73501|0.10358 +2016-07-01|-59.0|-169.0|43.85022|0.10567 +2016-07-01|-59.0|-170.0|43.96322|0.10773 +2016-07-01|-59.0|-171.0|44.07367|0.10978 +2016-07-01|-59.0|-172.0|44.1812|0.11179 +2016-07-01|-59.0|-173.0|44.28545|0.11378 +2016-07-01|-59.0|-174.0|44.38599|0.11575 +2016-07-01|-59.0|-175.0|44.4824|0.11769 +2016-07-01|-59.0|-176.0|44.57423|0.11961 +2016-07-01|-59.0|-177.0|44.661|0.12151 +2016-07-01|-59.0|-178.0|44.7422|0.12339 +2016-07-01|-59.0|-179.0|44.81729|0.12525 +2016-07-01|-60.0|0.0|-19.99494|-0.06548 +2016-07-01|-60.0|1.0|-20.60347|-0.07061 +2016-07-01|-60.0|2.0|-21.22285|-0.0758 +2016-07-01|-60.0|3.0|-21.85294|-0.08103 +2016-07-01|-60.0|4.0|-22.49355|-0.08628 +2016-07-01|-60.0|5.0|-23.14444|-0.09153 +2016-07-01|-60.0|6.0|-23.80534|-0.09678 +2016-07-01|-60.0|7.0|-24.47596|-0.10201 +2016-07-01|-60.0|8.0|-25.15594|-0.1072 +2016-07-01|-60.0|9.0|-25.84492|-0.11233 +2016-07-01|-60.0|10.0|-26.54249|-0.1174 +2016-07-01|-60.0|11.0|-27.24823|-0.12238 +2016-07-01|-60.0|12.0|-27.96169|-0.12728 +2016-07-01|-60.0|13.0|-28.6824|-0.13206 +2016-07-01|-60.0|14.0|-29.40985|-0.13673 +2016-07-01|-60.0|15.0|-30.14356|-0.14127 +2016-07-01|-60.0|16.0|-30.883|-0.14567 +2016-07-01|-60.0|17.0|-31.62764|-0.14992 +2016-07-01|-60.0|18.0|-32.37695|-0.15402 +2016-07-01|-60.0|19.0|-33.13038|-0.15795 +2016-07-01|-60.0|20.0|-33.88741|-0.16171 +2016-07-01|-60.0|21.0|-34.64748|-0.16529 +2016-07-01|-60.0|22.0|-35.41006|-0.16869 +2016-07-01|-60.0|23.0|-36.17461|-0.17191 +2016-07-01|-60.0|24.0|-36.9406|-0.17493 +2016-07-01|-60.0|25.0|-37.70751|-0.17776 +2016-07-01|-60.0|26.0|-38.47482|-0.1804 +2016-07-01|-60.0|27.0|-39.24204|-0.18284 +2016-07-01|-60.0|28.0|-40.00868|-0.18509 +2016-07-01|-60.0|29.0|-40.77425|-0.18714 +2016-07-01|-60.0|30.0|-41.5383|-0.18899 +2016-07-01|-60.0|31.0|-42.30036|-0.19065 +2016-07-01|-60.0|32.0|-43.06002|-0.19211 +2016-07-01|-60.0|33.0|-43.81683|-0.19339 +2016-07-01|-60.0|34.0|-44.57041|-0.19447 +2016-07-01|-60.0|35.0|-45.32036|-0.19537 +2016-07-01|-60.0|36.0|-46.0663|-0.19608 +2016-07-01|-60.0|37.0|-46.80789|-0.19662 +2016-07-01|-60.0|38.0|-47.54477|-0.19698 +2016-07-01|-60.0|39.0|-48.27662|-0.19717 +2016-07-01|-60.0|40.0|-49.00313|-0.19719 +2016-07-01|-60.0|41.0|-49.72401|-0.19704 +2016-07-01|-60.0|42.0|-50.43896|-0.19674 +2016-07-01|-60.0|43.0|-51.14773|-0.19628 +2016-07-01|-60.0|44.0|-51.85006|-0.19567 +2016-07-01|-60.0|45.0|-52.54571|-0.19491 +2016-07-01|-60.0|46.0|-53.23445|-0.19401 +2016-07-01|-60.0|47.0|-53.91607|-0.19297 +2016-07-01|-60.0|48.0|-54.59036|-0.1918 +2016-07-01|-60.0|49.0|-55.25713|-0.1905 +2016-07-01|-60.0|50.0|-55.9162|-0.18907 +2016-07-01|-60.0|51.0|-56.56739|-0.18752 +2016-07-01|-60.0|52.0|-57.21056|-0.18586 +2016-07-01|-60.0|53.0|-57.84553|-0.18408 +2016-07-01|-60.0|54.0|-58.47217|-0.18219 +2016-07-01|-60.0|55.0|-59.09033|-0.1802 +2016-07-01|-60.0|56.0|-59.69989|-0.17811 +2016-07-01|-60.0|57.0|-60.30073|-0.17592 +2016-07-01|-60.0|58.0|-60.89271|-0.17364 +2016-07-01|-60.0|59.0|-61.47572|-0.17127 +2016-07-01|-60.0|60.0|-62.04965|-0.16881 +2016-07-01|-60.0|61.0|-62.6144|-0.16627 +2016-07-01|-60.0|62.0|-63.16984|-0.16366 +2016-07-01|-60.0|63.0|-63.71589|-0.16097 +2016-07-01|-60.0|64.0|-64.25241|-0.15821 +2016-07-01|-60.0|65.0|-64.77932|-0.15538 +2016-07-01|-60.0|66.0|-65.29649|-0.15249 +2016-07-01|-60.0|67.0|-65.80382|-0.14954 +2016-07-01|-60.0|68.0|-66.30118|-0.14653 +2016-07-01|-60.0|69.0|-66.78846|-0.14347 +2016-07-01|-60.0|70.0|-67.26551|-0.14037 +2016-07-01|-60.0|71.0|-67.7322|-0.13722 +2016-07-01|-60.0|72.0|-68.18839|-0.13402 +2016-07-01|-60.0|73.0|-68.6339|-0.13079 +2016-07-01|-60.0|74.0|-69.06857|-0.12753 +2016-07-01|-60.0|75.0|-69.4922|-0.12424 +2016-07-01|-60.0|76.0|-69.9046|-0.12092 +2016-07-01|-60.0|77.0|-70.30554|-0.11758 +2016-07-01|-60.0|78.0|-70.69477|-0.11422 +2016-07-01|-60.0|79.0|-71.07203|-0.11085 +2016-07-01|-60.0|80.0|-71.43703|-0.10746 +2016-07-01|-60.0|81.0|-71.78943|-0.10406 +2016-07-01|-60.0|82.0|-72.1289|-0.10066 +2016-07-01|-60.0|83.0|-72.45505|-0.09725 +2016-07-01|-60.0|84.0|-72.76744|-0.09384 +2016-07-01|-60.0|85.0|-73.06562|-0.09043 +2016-07-01|-60.0|86.0|-73.34907|-0.08702 +2016-07-01|-60.0|87.0|-73.61724|-0.08361 +2016-07-01|-60.0|88.0|-73.8695|-0.08021 +2016-07-01|-60.0|89.0|-74.10517|-0.07681 +2016-07-01|-60.0|90.0|-74.32351|-0.07342 +2016-07-01|-60.0|91.0|-74.52369|-0.07002 +2016-07-01|-60.0|92.0|-74.7048|-0.06663 +2016-07-01|-60.0|93.0|-74.86585|-0.06323 +2016-07-01|-60.0|94.0|-75.00571|-0.05982 +2016-07-01|-60.0|95.0|-75.12318|-0.0564 +2016-07-01|-60.0|96.0|-75.21689|-0.05295 +2016-07-01|-60.0|97.0|-75.28534|-0.04948 +2016-07-01|-60.0|98.0|-75.32685|-0.04596 +2016-07-01|-60.0|99.0|-75.33958|-0.04238 +2016-07-01|-60.0|100.0|-75.32144|-0.03873 +2016-07-01|-60.0|101.0|-75.27013|-0.03499 +2016-07-01|-60.0|102.0|-75.18305|-0.03114 +2016-07-01|-60.0|103.0|-75.0573|-0.02714 +2016-07-01|-60.0|104.0|-74.88961|-0.02296 +2016-07-01|-60.0|105.0|-74.6763|-0.01858 +2016-07-01|-60.0|106.0|-74.4132|-0.01393 +2016-07-01|-60.0|107.0|-74.09561|-0.00897 +2016-07-01|-60.0|108.0|-73.71817|-0.00363 +2016-07-01|-60.0|109.0|-73.27478|0.00216 +2016-07-01|-60.0|110.0|-72.7585|0.0085 +2016-07-01|-60.0|111.0|-72.16136|0.0155 +2016-07-01|-60.0|112.0|-71.47425|0.02328 +2016-07-01|-60.0|113.0|-70.68669|0.032 +2016-07-01|-60.0|114.0|-69.78661|0.04185 +2016-07-01|-60.0|115.0|-68.76015|0.05305 +2016-07-01|-60.0|116.0|-67.59132|0.06586 +2016-07-01|-60.0|117.0|-66.26176|0.08059 +2016-07-01|-60.0|118.0|-64.75039|0.09761 +2016-07-01|-60.0|119.0|-63.03321|0.11734 +2016-07-01|-60.0|120.0|-61.08309|0.14026 +2016-07-01|-60.0|121.0|-58.86984|0.16688 +2016-07-01|-60.0|122.0|-56.36054|0.19774 +2016-07-01|-60.0|123.0|-53.52061|0.2333 +2016-07-01|-60.0|124.0|-50.31563|0.27391 +2016-07-01|-60.0|125.0|-46.71454|0.31957 +2016-07-01|-60.0|126.0|-42.69449|0.36978 +2016-07-01|-60.0|127.0|-38.24731|0.4233 +2016-07-01|-60.0|128.0|-33.38715|0.4779 +2016-07-01|-60.0|129.0|-28.1578|0.53041 +2016-07-01|-60.0|130.0|-22.63684|0.57696 +2016-07-01|-60.0|131.0|-16.93382|0.61367 +2016-07-01|-60.0|132.0|-11.18066|0.63754 +2016-07-01|-60.0|133.0|-5.51565|0.64719 +2016-07-01|-60.0|134.0|-0.06539|0.6431 +2016-07-01|-60.0|135.0|5.06958|0.62737 +2016-07-01|-60.0|136.0|9.82208|0.60294 +2016-07-01|-60.0|137.0|14.15795|0.57293 +2016-07-01|-60.0|138.0|18.0706|0.54007 +2016-07-01|-60.0|139.0|21.57346|0.50648 +2016-07-01|-60.0|140.0|24.69251|0.47365 +2016-07-01|-60.0|141.0|27.46024|0.4425 +2016-07-01|-60.0|142.0|29.91143|0.41355 +2016-07-01|-60.0|143.0|32.08034|0.387 +2016-07-01|-60.0|144.0|33.99914|0.36287 +2016-07-01|-60.0|145.0|35.69717|0.34109 +2016-07-01|-60.0|146.0|37.20064|0.32148 +2016-07-01|-60.0|147.0|38.53266|0.30387 +2016-07-01|-60.0|148.0|39.71351|0.28807 +2016-07-01|-60.0|149.0|40.76085|0.27389 +2016-07-01|-60.0|150.0|41.69003|0.26116 +2016-07-01|-60.0|151.0|42.51441|0.24971 +2016-07-01|-60.0|152.0|43.2456|0.2394 +2016-07-01|-60.0|153.0|43.89369|0.2301 +2016-07-01|-60.0|154.0|44.46751|0.2217 +2016-07-01|-60.0|155.0|44.97475|0.21408 +2016-07-01|-60.0|156.0|45.42217|0.20717 +2016-07-01|-60.0|157.0|45.81571|0.20088 +2016-07-01|-60.0|158.0|46.16059|0.19514 +2016-07-01|-60.0|159.0|46.46143|0.18988 +2016-07-01|-60.0|160.0|46.72233|0.18505 +2016-07-01|-60.0|161.0|46.94694|0.18061 +2016-07-01|-60.0|162.0|47.1385|0.1765 +2016-07-01|-60.0|163.0|47.29992|0.17269 +2016-07-01|-60.0|164.0|47.43382|0.16914 +2016-07-01|-60.0|165.0|47.54254|0.16582 +2016-07-01|-60.0|166.0|47.6282|0.1627 +2016-07-01|-60.0|167.0|47.69273|0.15976 +2016-07-01|-60.0|168.0|47.73786|0.15697 +2016-07-01|-60.0|169.0|47.76517|0.15431 +2016-07-01|-60.0|170.0|47.77612|0.15177 +2016-07-01|-60.0|171.0|47.77203|0.14933 +2016-07-01|-60.0|172.0|47.75412|0.14697 +2016-07-01|-60.0|173.0|47.72349|0.14468 +2016-07-01|-60.0|174.0|47.68118|0.14245 +2016-07-01|-60.0|175.0|47.62814|0.14027 +2016-07-01|-60.0|176.0|47.56524|0.13812 +2016-07-01|-60.0|177.0|47.4933|0.136 +2016-07-01|-60.0|178.0|47.41309|0.1339 +2016-07-01|-60.0|179.0|47.32529|0.13182 +2016-07-01|-60.0|-1.0|-19.39736|-0.06042 +2016-07-01|-60.0|-2.0|-18.8108|-0.05544 +2016-07-01|-60.0|-3.0|-18.23526|-0.05057 +2016-07-01|-60.0|-4.0|-17.6707|-0.04581 +2016-07-01|-60.0|-5.0|-17.11705|-0.04118 +2016-07-01|-60.0|-6.0|-16.57417|-0.0367 +2016-07-01|-60.0|-7.0|-16.04189|-0.03237 +2016-07-01|-60.0|-8.0|-15.51997|-0.02822 +2016-07-01|-60.0|-9.0|-15.00814|-0.02425 +2016-07-01|-60.0|-10.0|-14.50608|-0.02047 +2016-07-01|-60.0|-11.0|-14.01343|-0.01689 +2016-07-01|-60.0|-12.0|-13.52978|-0.01353 +2016-07-01|-60.0|-13.0|-13.05469|-0.01039 +2016-07-01|-60.0|-14.0|-12.58767|-0.00748 +2016-07-01|-60.0|-15.0|-12.1282|-0.0048 +2016-07-01|-60.0|-16.0|-11.67572|-0.00236 +2016-07-01|-60.0|-17.0|-11.22966|-1.7E-4 +2016-07-01|-60.0|-18.0|-10.78939|0.00178 +2016-07-01|-60.0|-19.0|-10.35428|0.00348 +2016-07-01|-60.0|-20.0|-9.92367|0.00493 +2016-07-01|-60.0|-21.0|-9.49689|0.00613 +2016-07-01|-60.0|-22.0|-9.07324|0.00708 +2016-07-01|-60.0|-23.0|-8.65203|0.00778 +2016-07-01|-60.0|-24.0|-8.23256|0.00825 +2016-07-01|-60.0|-25.0|-7.8141|0.00848 +2016-07-01|-60.0|-26.0|-7.39596|0.00847 +2016-07-01|-60.0|-27.0|-6.97743|0.00824 +2016-07-01|-60.0|-28.0|-6.55782|0.0078 +2016-07-01|-60.0|-29.0|-6.13645|0.00714 +2016-07-01|-60.0|-30.0|-5.71264|0.00629 +2016-07-01|-60.0|-31.0|-5.28575|0.00524 +2016-07-01|-60.0|-32.0|-4.85516|0.00402 +2016-07-01|-60.0|-33.0|-4.42026|0.00263 +2016-07-01|-60.0|-34.0|-3.98048|0.00108 +2016-07-01|-60.0|-35.0|-3.53529|-6.0E-4 +2016-07-01|-60.0|-36.0|-3.08418|-0.00242 +2016-07-01|-60.0|-37.0|-2.62668|-0.00436 +2016-07-01|-60.0|-38.0|-2.16235|-0.0064 +2016-07-01|-60.0|-39.0|-1.69081|-0.00853 +2016-07-01|-60.0|-40.0|-1.2117|-0.01074 +2016-07-01|-60.0|-41.0|-0.72473|-0.013 +2016-07-01|-60.0|-42.0|-0.22963|-0.01532 +2016-07-01|-60.0|-43.0|0.27382|-0.01767 +2016-07-01|-60.0|-44.0|0.78578|-0.02004 +2016-07-01|-60.0|-45.0|1.30637|-0.02242 +2016-07-01|-60.0|-46.0|1.83568|-0.02479 +2016-07-01|-60.0|-47.0|2.37371|-0.02715 +2016-07-01|-60.0|-48.0|2.92046|-0.02947 +2016-07-01|-60.0|-49.0|3.47586|-0.03175 +2016-07-01|-60.0|-50.0|4.0398|-0.03398 +2016-07-01|-60.0|-51.0|4.61211|-0.03614 +2016-07-01|-60.0|-52.0|5.19261|-0.03823 +2016-07-01|-60.0|-53.0|5.78104|-0.04024 +2016-07-01|-60.0|-54.0|6.37712|-0.04215 +2016-07-01|-60.0|-55.0|6.98054|-0.04396 +2016-07-01|-60.0|-56.0|7.59092|-0.04567 +2016-07-01|-60.0|-57.0|8.20788|-0.04726 +2016-07-01|-60.0|-58.0|8.83098|-0.04873 +2016-07-01|-60.0|-59.0|9.45978|-0.05007 +2016-07-01|-60.0|-60.0|10.09377|-0.05129 +2016-07-01|-60.0|-61.0|10.73245|-0.05238 +2016-07-01|-60.0|-62.0|11.37527|-0.05333 +2016-07-01|-60.0|-63.0|12.02169|-0.05415 +2016-07-01|-60.0|-64.0|12.67112|-0.05483 +2016-07-01|-60.0|-65.0|13.32298|-0.05538 +2016-07-01|-60.0|-66.0|13.97665|-0.05579 +2016-07-01|-60.0|-67.0|14.63152|-0.05607 +2016-07-01|-60.0|-68.0|15.28697|-0.05621 +2016-07-01|-60.0|-69.0|15.94237|-0.05622 +2016-07-01|-60.0|-70.0|16.5971|-0.05611 +2016-07-01|-60.0|-71.0|17.25051|-0.05587 +2016-07-01|-60.0|-72.0|17.90198|-0.05552 +2016-07-01|-60.0|-73.0|18.55089|-0.05505 +2016-07-01|-60.0|-74.0|19.19662|-0.05447 +2016-07-01|-60.0|-75.0|19.83856|-0.05379 +2016-07-01|-60.0|-76.0|20.47611|-0.05301 +2016-07-01|-60.0|-77.0|21.1087|-0.05214 +2016-07-01|-60.0|-78.0|21.73574|-0.05118 +2016-07-01|-60.0|-79.0|22.3567|-0.05014 +2016-07-01|-60.0|-80.0|22.97102|-0.04903 +2016-07-01|-60.0|-81.0|23.5782|-0.04785 +2016-07-01|-60.0|-82.0|24.17775|-0.04661 +2016-07-01|-60.0|-83.0|24.76918|-0.04531 +2016-07-01|-60.0|-84.0|25.35205|-0.04396 +2016-07-01|-60.0|-85.0|25.92593|-0.04257 +2016-07-01|-60.0|-86.0|26.49042|-0.04115 +2016-07-01|-60.0|-87.0|27.04514|-0.03969 +2016-07-01|-60.0|-88.0|27.58974|-0.0382 +2016-07-01|-60.0|-89.0|28.1239|-0.0367 +2016-07-01|-60.0|-90.0|28.64732|-0.03518 +2016-07-01|-60.0|-91.0|29.15973|-0.03364 +2016-07-01|-60.0|-92.0|29.66088|-0.0321 +2016-07-01|-60.0|-93.0|30.15058|-0.03056 +2016-07-01|-60.0|-94.0|30.62862|-0.02902 +2016-07-01|-60.0|-95.0|31.09484|-0.02748 +2016-07-01|-60.0|-96.0|31.54913|-0.02595 +2016-07-01|-60.0|-97.0|31.99138|-0.02442 +2016-07-01|-60.0|-98.0|32.42151|-0.02291 +2016-07-01|-60.0|-99.0|32.83947|-0.02141 +2016-07-01|-60.0|-100.0|33.24525|-0.01993 +2016-07-01|-60.0|-101.0|33.63886|-0.01846 +2016-07-01|-60.0|-102.0|34.02032|-0.017 +2016-07-01|-60.0|-103.0|34.38971|-0.01556 +2016-07-01|-60.0|-104.0|34.7471|-0.01414 +2016-07-01|-60.0|-105.0|35.09262|-0.01274 +2016-07-01|-60.0|-106.0|35.4264|-0.01134 +2016-07-01|-60.0|-107.0|35.74859|-0.00997 +2016-07-01|-60.0|-108.0|36.0594|-0.0086 +2016-07-01|-60.0|-109.0|36.35902|-0.00725 +2016-07-01|-60.0|-110.0|36.64769|-0.0059 +2016-07-01|-60.0|-111.0|36.92566|-0.00456 +2016-07-01|-60.0|-112.0|37.1932|-0.00323 +2016-07-01|-60.0|-113.0|37.45061|-0.0019 +2016-07-01|-60.0|-114.0|37.69819|-5.7E-4 +2016-07-01|-60.0|-115.0|37.93628|7.6E-4 +2016-07-01|-60.0|-116.0|38.16521|0.0021 +2016-07-01|-60.0|-117.0|38.38534|0.00344 +2016-07-01|-60.0|-118.0|38.59704|0.00479 +2016-07-01|-60.0|-119.0|38.8007|0.00616 +2016-07-01|-60.0|-120.0|38.9967|0.00754 +2016-07-01|-60.0|-121.0|39.18545|0.00894 +2016-07-01|-60.0|-122.0|39.36735|0.01036 +2016-07-01|-60.0|-123.0|39.54282|0.0118 +2016-07-01|-60.0|-124.0|39.71227|0.01327 +2016-07-01|-60.0|-125.0|39.87612|0.01477 +2016-07-01|-60.0|-126.0|40.03479|0.01629 +2016-07-01|-60.0|-127.0|40.18868|0.01784 +2016-07-01|-60.0|-128.0|40.33822|0.01943 +2016-07-01|-60.0|-129.0|40.48381|0.02105 +2016-07-01|-60.0|-130.0|40.62585|0.0227 +2016-07-01|-60.0|-131.0|40.76472|0.02439 +2016-07-01|-60.0|-132.0|40.90082|0.02611 +2016-07-01|-60.0|-133.0|41.03451|0.02787 +2016-07-01|-60.0|-134.0|41.16614|0.02967 +2016-07-01|-60.0|-135.0|41.29607|0.0315 +2016-07-01|-60.0|-136.0|41.4246|0.03337 +2016-07-01|-60.0|-137.0|41.55206|0.03528 +2016-07-01|-60.0|-138.0|41.67873|0.03722 +2016-07-01|-60.0|-139.0|41.80489|0.0392 +2016-07-01|-60.0|-140.0|41.93079|0.04121 +2016-07-01|-60.0|-141.0|42.05667|0.04326 +2016-07-01|-60.0|-142.0|42.18273|0.04533 +2016-07-01|-60.0|-143.0|42.30917|0.04744 +2016-07-01|-60.0|-144.0|42.43617|0.04957 +2016-07-01|-60.0|-145.0|42.56386|0.05173 +2016-07-01|-60.0|-146.0|42.69239|0.05392 +2016-07-01|-60.0|-147.0|42.82186|0.05613 +2016-07-01|-60.0|-148.0|42.95236|0.05836 +2016-07-01|-60.0|-149.0|43.08395|0.06061 +2016-07-01|-60.0|-150.0|43.21668|0.06287 +2016-07-01|-60.0|-151.0|43.35058|0.06516 +2016-07-01|-60.0|-152.0|43.48565|0.06745 +2016-07-01|-60.0|-153.0|43.62189|0.06976 +2016-07-01|-60.0|-154.0|43.75925|0.07207 +2016-07-01|-60.0|-155.0|43.8977|0.07439 +2016-07-01|-60.0|-156.0|44.03716|0.07672 +2016-07-01|-60.0|-157.0|44.17756|0.07905 +2016-07-01|-60.0|-158.0|44.31879|0.08137 +2016-07-01|-60.0|-159.0|44.46074|0.0837 +2016-07-01|-60.0|-160.0|44.60328|0.08602 +2016-07-01|-60.0|-161.0|44.74625|0.08834 +2016-07-01|-60.0|-162.0|44.88949|0.09064 +2016-07-01|-60.0|-163.0|45.03283|0.09294 +2016-07-01|-60.0|-164.0|45.17607|0.09523 +2016-07-01|-60.0|-165.0|45.319|0.0975 +2016-07-01|-60.0|-166.0|45.46139|0.09976 +2016-07-01|-60.0|-167.0|45.60301|0.102 +2016-07-01|-60.0|-168.0|45.74359|0.10423 +2016-07-01|-60.0|-169.0|45.88287|0.10644 +2016-07-01|-60.0|-170.0|46.02054|0.10863 +2016-07-01|-60.0|-171.0|46.15631|0.11081 +2016-07-01|-60.0|-172.0|46.28983|0.11297 +2016-07-01|-60.0|-173.0|46.42077|0.11511 +2016-07-01|-60.0|-174.0|46.54875|0.11723 +2016-07-01|-60.0|-175.0|46.67337|0.11934 +2016-07-01|-60.0|-176.0|46.79423|0.12144 +2016-07-01|-60.0|-177.0|46.91086|0.12353 +2016-07-01|-60.0|-178.0|47.02281|0.1256 +2016-07-01|-60.0|-179.0|47.12956|0.12768 +2016-07-01|-61.0|0.0|-19.92876|-0.06801 +2016-07-01|-61.0|1.0|-20.54854|-0.07289 +2016-07-01|-61.0|2.0|-21.17855|-0.07783 +2016-07-01|-61.0|3.0|-21.81864|-0.0828 +2016-07-01|-61.0|4.0|-22.46864|-0.08779 +2016-07-01|-61.0|5.0|-23.12833|-0.09278 +2016-07-01|-61.0|6.0|-23.79747|-0.09777 +2016-07-01|-61.0|7.0|-24.47576|-0.10274 +2016-07-01|-61.0|8.0|-25.1629|-0.10767 +2016-07-01|-61.0|9.0|-25.85854|-0.11254 +2016-07-01|-61.0|10.0|-26.56232|-0.11736 +2016-07-01|-61.0|11.0|-27.27384|-0.12211 +2016-07-01|-61.0|12.0|-27.99269|-0.12676 +2016-07-01|-61.0|13.0|-28.71843|-0.13132 +2016-07-01|-61.0|14.0|-29.45062|-0.13578 +2016-07-01|-61.0|15.0|-30.1888|-0.14011 +2016-07-01|-61.0|16.0|-30.93248|-0.14432 +2016-07-01|-61.0|17.0|-31.68119|-0.14839 +2016-07-01|-61.0|18.0|-32.43443|-0.15232 +2016-07-01|-61.0|19.0|-33.19171|-0.1561 +2016-07-01|-61.0|20.0|-33.95252|-0.15973 +2016-07-01|-61.0|21.0|-34.71639|-0.16319 +2016-07-01|-61.0|22.0|-35.48279|-0.16649 +2016-07-01|-61.0|23.0|-36.25125|-0.16961 +2016-07-01|-61.0|24.0|-37.02128|-0.17256 +2016-07-01|-61.0|25.0|-37.79239|-0.17534 +2016-07-01|-61.0|26.0|-38.56411|-0.17793 +2016-07-01|-61.0|27.0|-39.33597|-0.18035 +2016-07-01|-61.0|28.0|-40.10752|-0.18258 +2016-07-01|-61.0|29.0|-40.87832|-0.18464 +2016-07-01|-61.0|30.0|-41.64793|-0.18651 +2016-07-01|-61.0|31.0|-42.41594|-0.18821 +2016-07-01|-61.0|32.0|-43.18194|-0.18972 +2016-07-01|-61.0|33.0|-43.94554|-0.19106 +2016-07-01|-61.0|34.0|-44.70637|-0.19222 +2016-07-01|-61.0|35.0|-45.46405|-0.19321 +2016-07-01|-61.0|36.0|-46.21825|-0.19404 +2016-07-01|-61.0|37.0|-46.96862|-0.19469 +2016-07-01|-61.0|38.0|-47.71486|-0.19518 +2016-07-01|-61.0|39.0|-48.45664|-0.19551 +2016-07-01|-61.0|40.0|-49.19369|-0.19568 +2016-07-01|-61.0|41.0|-49.92572|-0.19571 +2016-07-01|-61.0|42.0|-50.65248|-0.19558 +2016-07-01|-61.0|43.0|-51.37372|-0.1953 +2016-07-01|-61.0|44.0|-52.0892|-0.19489 +2016-07-01|-61.0|45.0|-52.79869|-0.19434 +2016-07-01|-61.0|46.0|-53.50199|-0.19366 +2016-07-01|-61.0|47.0|-54.1989|-0.19284 +2016-07-01|-61.0|48.0|-54.88923|-0.19191 +2016-07-01|-61.0|49.0|-55.57281|-0.19085 +2016-07-01|-61.0|50.0|-56.24948|-0.18968 +2016-07-01|-61.0|51.0|-56.91907|-0.18839 +2016-07-01|-61.0|52.0|-57.58145|-0.187 +2016-07-01|-61.0|53.0|-58.23647|-0.1855 +2016-07-01|-61.0|54.0|-58.88401|-0.1839 +2016-07-01|-61.0|55.0|-59.52396|-0.18221 +2016-07-01|-61.0|56.0|-60.15619|-0.18042 +2016-07-01|-61.0|57.0|-60.78061|-0.17855 +2016-07-01|-61.0|58.0|-61.3971|-0.17659 +2016-07-01|-61.0|59.0|-62.00559|-0.17455 +2016-07-01|-61.0|60.0|-62.60597|-0.17244 +2016-07-01|-61.0|61.0|-63.19816|-0.17025 +2016-07-01|-61.0|62.0|-63.78209|-0.16799 +2016-07-01|-61.0|63.0|-64.35766|-0.16567 +2016-07-01|-61.0|64.0|-64.9248|-0.16329 +2016-07-01|-61.0|65.0|-65.48343|-0.16085 +2016-07-01|-61.0|66.0|-66.03348|-0.15835 +2016-07-01|-61.0|67.0|-66.57486|-0.15581 +2016-07-01|-61.0|68.0|-67.10749|-0.15322 +2016-07-01|-61.0|69.0|-67.63129|-0.15059 +2016-07-01|-61.0|70.0|-68.14617|-0.14792 +2016-07-01|-61.0|71.0|-68.65204|-0.14522 +2016-07-01|-61.0|72.0|-69.14879|-0.14248 +2016-07-01|-61.0|73.0|-69.63633|-0.13972 +2016-07-01|-61.0|74.0|-70.11453|-0.13694 +2016-07-01|-61.0|75.0|-70.58326|-0.13414 +2016-07-01|-61.0|76.0|-71.0424|-0.13132 +2016-07-01|-61.0|77.0|-71.49179|-0.1285 +2016-07-01|-61.0|78.0|-71.93126|-0.12566 +2016-07-01|-61.0|79.0|-72.36063|-0.12283 +2016-07-01|-61.0|80.0|-72.7797|-0.11999 +2016-07-01|-61.0|81.0|-73.18825|-0.11716 +2016-07-01|-61.0|82.0|-73.58604|-0.11433 +2016-07-01|-61.0|83.0|-73.9728|-0.11152 +2016-07-01|-61.0|84.0|-74.34823|-0.10871 +2016-07-01|-61.0|85.0|-74.71201|-0.10593 +2016-07-01|-61.0|86.0|-75.06376|-0.10316 +2016-07-01|-61.0|87.0|-75.4031|-0.10042 +2016-07-01|-61.0|88.0|-75.72959|-0.0977 +2016-07-01|-61.0|89.0|-76.04274|-0.095 +2016-07-01|-61.0|90.0|-76.342|-0.09233 +2016-07-01|-61.0|91.0|-76.6268|-0.08969 +2016-07-01|-61.0|92.0|-76.89646|-0.08707 +2016-07-01|-61.0|93.0|-77.15027|-0.08448 +2016-07-01|-61.0|94.0|-77.38741|-0.08192 +2016-07-01|-61.0|95.0|-77.607|-0.07938 +2016-07-01|-61.0|96.0|-77.80803|-0.07685 +2016-07-01|-61.0|97.0|-77.98941|-0.07434 +2016-07-01|-61.0|98.0|-78.14989|-0.07184 +2016-07-01|-61.0|99.0|-78.28811|-0.06934 +2016-07-01|-61.0|100.0|-78.40252|-0.06683 +2016-07-01|-61.0|101.0|-78.49139|-0.06431 +2016-07-01|-61.0|102.0|-78.55279|-0.06175 +2016-07-01|-61.0|103.0|-78.58452|-0.05913 +2016-07-01|-61.0|104.0|-78.58411|-0.05645 +2016-07-01|-61.0|105.0|-78.54876|-0.05367 +2016-07-01|-61.0|106.0|-78.47528|-0.05076 +2016-07-01|-61.0|107.0|-78.36004|-0.04769 +2016-07-01|-61.0|108.0|-78.19888|-0.0444 +2016-07-01|-61.0|109.0|-77.98701|-0.04085 +2016-07-01|-61.0|110.0|-77.71893|-0.03697 +2016-07-01|-61.0|111.0|-77.38824|-0.03267 +2016-07-01|-61.0|112.0|-76.98753|-0.02786 +2016-07-01|-61.0|113.0|-76.50813|-0.0224 +2016-07-01|-61.0|114.0|-75.93988|-0.01615 +2016-07-01|-61.0|115.0|-75.27079|-0.00891 +2016-07-01|-61.0|116.0|-74.48669|-4.4E-4 +2016-07-01|-61.0|117.0|-73.57077|0.00958 +2016-07-01|-61.0|118.0|-72.50294|0.02152 +2016-07-01|-61.0|119.0|-71.25919|0.03588 +2016-07-01|-61.0|120.0|-69.81074|0.05327 +2016-07-01|-61.0|121.0|-68.12308|0.07447 +2016-07-01|-61.0|122.0|-66.15491|0.10045 +2016-07-01|-61.0|123.0|-63.85713|0.13242 +2016-07-01|-61.0|124.0|-61.17211|0.1718 +2016-07-01|-61.0|125.0|-58.03372|0.22019 +2016-07-01|-61.0|126.0|-54.36916|0.2792 +2016-07-01|-61.0|127.0|-50.10394|0.3501 +2016-07-01|-61.0|128.0|-45.17217|0.43308 +2016-07-01|-61.0|129.0|-39.53409|0.52622 +2016-07-01|-61.0|130.0|-33.20078|0.62435 +2016-07-01|-61.0|131.0|-26.26061|0.71851 +2016-07-01|-61.0|132.0|-18.8945|0.79714 +2016-07-01|-61.0|133.0|-11.36334|0.8495 +2016-07-01|-61.0|134.0|-3.96236|0.86978 +2016-07-01|-61.0|135.0|3.04109|0.85915 +2016-07-01|-61.0|136.0|9.45619|0.82434 +2016-07-01|-61.0|137.0|15.1849|0.77428 +2016-07-01|-61.0|138.0|20.20898|0.71715 +2016-07-01|-61.0|139.0|24.56398|0.65891 +2016-07-01|-61.0|140.0|28.31397|0.60325 +2016-07-01|-61.0|141.0|31.53312|0.55206 +2016-07-01|-61.0|142.0|34.29477|0.50605 +2016-07-01|-61.0|143.0|36.66592|0.46525 +2016-07-01|-61.0|144.0|38.70518|0.42935 +2016-07-01|-61.0|145.0|40.46258|0.39786 +2016-07-01|-61.0|146.0|41.98027|0.37026 +2016-07-01|-61.0|147.0|43.29347|0.34606 +2016-07-01|-61.0|148.0|44.43158|0.32479 +2016-07-01|-61.0|149.0|45.41913|0.30606 +2016-07-01|-61.0|150.0|46.27665|0.28952 +2016-07-01|-61.0|151.0|47.02133|0.27486 +2016-07-01|-61.0|152.0|47.66766|0.26182 +2016-07-01|-61.0|153.0|48.22791|0.25019 +2016-07-01|-61.0|154.0|48.71247|0.23978 +2016-07-01|-61.0|155.0|49.13024|0.23043 +2016-07-01|-61.0|156.0|49.48883|0.222 +2016-07-01|-61.0|157.0|49.79481|0.21438 +2016-07-01|-61.0|158.0|50.05385|0.20746 +2016-07-01|-61.0|159.0|50.2709|0.20116 +2016-07-01|-61.0|160.0|50.45026|0.1954 +2016-07-01|-61.0|161.0|50.59571|0.19011 +2016-07-01|-61.0|162.0|50.71058|0.18524 +2016-07-01|-61.0|163.0|50.79781|0.18073 +2016-07-01|-61.0|164.0|50.86|0.17655 +2016-07-01|-61.0|165.0|50.89948|0.17265 +2016-07-01|-61.0|166.0|50.91833|0.169 +2016-07-01|-61.0|167.0|50.9184|0.16556 +2016-07-01|-61.0|168.0|50.90137|0.16232 +2016-07-01|-61.0|169.0|50.86876|0.15923 +2016-07-01|-61.0|170.0|50.82193|0.1563 +2016-07-01|-61.0|171.0|50.76214|0.15348 +2016-07-01|-61.0|172.0|50.6905|0.15078 +2016-07-01|-61.0|173.0|50.60807|0.14816 +2016-07-01|-61.0|174.0|50.51579|0.14562 +2016-07-01|-61.0|175.0|50.41452|0.14315 +2016-07-01|-61.0|176.0|50.30509|0.14073 +2016-07-01|-61.0|177.0|50.18822|0.13835 +2016-07-01|-61.0|178.0|50.0646|0.13601 +2016-07-01|-61.0|179.0|49.93486|0.1337 +2016-07-01|-61.0|-1.0|-19.3193|-0.06318 +2016-07-01|-61.0|-2.0|-18.72023|-0.05843 +2016-07-01|-61.0|-3.0|-18.13156|-0.05378 +2016-07-01|-61.0|-4.0|-17.55326|-0.04923 +2016-07-01|-61.0|-5.0|-16.98527|-0.04479 +2016-07-01|-61.0|-6.0|-16.42747|-0.04049 +2016-07-01|-61.0|-7.0|-15.87971|-0.03633 +2016-07-01|-61.0|-8.0|-15.34178|-0.03233 +2016-07-01|-61.0|-9.0|-14.81346|-0.02849 +2016-07-01|-61.0|-10.0|-14.29444|-0.02483 +2016-07-01|-61.0|-11.0|-13.78442|-0.02135 +2016-07-01|-61.0|-12.0|-13.28302|-0.01807 +2016-07-01|-61.0|-13.0|-12.78985|-0.015 +2016-07-01|-61.0|-14.0|-12.30446|-0.01213 +2016-07-01|-61.0|-15.0|-11.8264|-0.00948 +2016-07-01|-61.0|-16.0|-11.35515|-0.00705 +2016-07-01|-61.0|-17.0|-10.89019|-0.00485 +2016-07-01|-61.0|-18.0|-10.43096|-0.00287 +2016-07-01|-61.0|-19.0|-9.97688|-0.00113 +2016-07-01|-61.0|-20.0|-9.52735|3.8E-4 +2016-07-01|-61.0|-21.0|-9.08176|0.00166 +2016-07-01|-61.0|-22.0|-8.63948|0.0027 +2016-07-01|-61.0|-23.0|-8.19986|0.00352 +2016-07-01|-61.0|-24.0|-7.76225|0.00411 +2016-07-01|-61.0|-25.0|-7.32601|0.00448 +2016-07-01|-61.0|-26.0|-6.89048|0.00462 +2016-07-01|-61.0|-27.0|-6.45501|0.00456 +2016-07-01|-61.0|-28.0|-6.01897|0.00429 +2016-07-01|-61.0|-29.0|-5.58172|0.00382 +2016-07-01|-61.0|-30.0|-5.14263|0.00316 +2016-07-01|-61.0|-31.0|-4.70112|0.00232 +2016-07-01|-61.0|-32.0|-4.25659|0.00131 +2016-07-01|-61.0|-33.0|-3.80848|1.4E-4 +2016-07-01|-61.0|-34.0|-3.35626|-0.00119 +2016-07-01|-61.0|-35.0|-2.89943|-0.00265 +2016-07-01|-61.0|-36.0|-2.4375|-0.00424 +2016-07-01|-61.0|-37.0|-1.97003|-0.00594 +2016-07-01|-61.0|-38.0|-1.4966|-0.00775 +2016-07-01|-61.0|-39.0|-1.01686|-0.00965 +2016-07-01|-61.0|-40.0|-0.53045|-0.01163 +2016-07-01|-61.0|-41.0|-0.03709|-0.01367 +2016-07-01|-61.0|-42.0|0.46348|-0.01576 +2016-07-01|-61.0|-43.0|0.97148|-0.01789 +2016-07-01|-61.0|-44.0|1.48708|-0.02005 +2016-07-01|-61.0|-45.0|2.0104|-0.02222 +2016-07-01|-61.0|-46.0|2.54153|-0.02439 +2016-07-01|-61.0|-47.0|3.08052|-0.02655 +2016-07-01|-61.0|-48.0|3.62737|-0.02869 +2016-07-01|-61.0|-49.0|4.18202|-0.0308 +2016-07-01|-61.0|-50.0|4.74441|-0.03287 +2016-07-01|-61.0|-51.0|5.31439|-0.03488 +2016-07-01|-61.0|-52.0|5.89181|-0.03682 +2016-07-01|-61.0|-53.0|6.47646|-0.0387 +2016-07-01|-61.0|-54.0|7.0681|-0.04049 +2016-07-01|-61.0|-55.0|7.66645|-0.0422 +2016-07-01|-61.0|-56.0|8.2712|-0.04381 +2016-07-01|-61.0|-57.0|8.882|-0.04533 +2016-07-01|-61.0|-58.0|9.49847|-0.04673 +2016-07-01|-61.0|-59.0|10.12021|-0.04802 +2016-07-01|-61.0|-60.0|10.74678|-0.0492 +2016-07-01|-61.0|-61.0|11.37774|-0.05026 +2016-07-01|-61.0|-62.0|12.0126|-0.0512 +2016-07-01|-61.0|-63.0|12.65086|-0.05202 +2016-07-01|-61.0|-64.0|13.292|-0.05271 +2016-07-01|-61.0|-65.0|13.93549|-0.05328 +2016-07-01|-61.0|-66.0|14.5808|-0.05372 +2016-07-01|-61.0|-67.0|15.22735|-0.05404 +2016-07-01|-61.0|-68.0|15.8746|-0.05424 +2016-07-01|-61.0|-69.0|16.52196|-0.05432 +2016-07-01|-61.0|-70.0|17.16887|-0.05428 +2016-07-01|-61.0|-71.0|17.81475|-0.05412 +2016-07-01|-61.0|-72.0|18.45903|-0.05386 +2016-07-01|-61.0|-73.0|19.10113|-0.05348 +2016-07-01|-61.0|-74.0|19.74049|-0.053 +2016-07-01|-61.0|-75.0|20.37656|-0.05243 +2016-07-01|-61.0|-76.0|21.00877|-0.05176 +2016-07-01|-61.0|-77.0|21.6366|-0.051 +2016-07-01|-61.0|-78.0|22.25951|-0.05016 +2016-07-01|-61.0|-79.0|22.87699|-0.04924 +2016-07-01|-61.0|-80.0|23.48854|-0.04824 +2016-07-01|-61.0|-81.0|24.09368|-0.04718 +2016-07-01|-61.0|-82.0|24.69194|-0.04606 +2016-07-01|-61.0|-83.0|25.28288|-0.04488 +2016-07-01|-61.0|-84.0|25.86607|-0.04365 +2016-07-01|-61.0|-85.0|26.4411|-0.04238 +2016-07-01|-61.0|-86.0|27.0076|-0.04107 +2016-07-01|-61.0|-87.0|27.5652|-0.03972 +2016-07-01|-61.0|-88.0|28.11356|-0.03834 +2016-07-01|-61.0|-89.0|28.65237|-0.03694 +2016-07-01|-61.0|-90.0|29.18133|-0.03551 +2016-07-01|-61.0|-91.0|29.70019|-0.03407 +2016-07-01|-61.0|-92.0|30.20869|-0.03262 +2016-07-01|-61.0|-93.0|30.70663|-0.03116 +2016-07-01|-61.0|-94.0|31.19382|-0.0297 +2016-07-01|-61.0|-95.0|31.67008|-0.02823 +2016-07-01|-61.0|-96.0|32.13528|-0.02676 +2016-07-01|-61.0|-97.0|32.5893|-0.0253 +2016-07-01|-61.0|-98.0|33.03205|-0.02384 +2016-07-01|-61.0|-99.0|33.46347|-0.02239 +2016-07-01|-61.0|-100.0|33.88353|-0.02095 +2016-07-01|-61.0|-101.0|34.2922|-0.01952 +2016-07-01|-61.0|-102.0|34.68951|-0.01809 +2016-07-01|-61.0|-103.0|35.07548|-0.01668 +2016-07-01|-61.0|-104.0|35.45018|-0.01528 +2016-07-01|-61.0|-105.0|35.81369|-0.01389 +2016-07-01|-61.0|-106.0|36.16613|-0.01252 +2016-07-01|-61.0|-107.0|36.50761|-0.01115 +2016-07-01|-61.0|-108.0|36.83829|-0.00979 +2016-07-01|-61.0|-109.0|37.15836|-0.00844 +2016-07-01|-61.0|-110.0|37.468|-0.00709 +2016-07-01|-61.0|-111.0|37.76743|-0.00575 +2016-07-01|-61.0|-112.0|38.05689|-0.00441 +2016-07-01|-61.0|-113.0|38.33664|-0.00307 +2016-07-01|-61.0|-114.0|38.60694|-0.00174 +2016-07-01|-61.0|-115.0|38.86808|-4.0E-4 +2016-07-01|-61.0|-116.0|39.12037|9.5E-4 +2016-07-01|-61.0|-117.0|39.36414|0.00231 +2016-07-01|-61.0|-118.0|39.5997|0.00367 +2016-07-01|-61.0|-119.0|39.82742|0.00505 +2016-07-01|-61.0|-120.0|40.04764|0.00644 +2016-07-01|-61.0|-121.0|40.26072|0.00785 +2016-07-01|-61.0|-122.0|40.46705|0.00928 +2016-07-01|-61.0|-123.0|40.667|0.01073 +2016-07-01|-61.0|-124.0|40.86096|0.0122 +2016-07-01|-61.0|-125.0|41.0493|0.0137 +2016-07-01|-61.0|-126.0|41.23243|0.01523 +2016-07-01|-61.0|-127.0|41.41073|0.01678 +2016-07-01|-61.0|-128.0|41.58459|0.01837 +2016-07-01|-61.0|-129.0|41.75439|0.01999 +2016-07-01|-61.0|-130.0|41.92052|0.02164 +2016-07-01|-61.0|-131.0|42.08334|0.02333 +2016-07-01|-61.0|-132.0|42.24323|0.02505 +2016-07-01|-61.0|-133.0|42.40053|0.0268 +2016-07-01|-61.0|-134.0|42.55561|0.02859 +2016-07-01|-61.0|-135.0|42.70879|0.03042 +2016-07-01|-61.0|-136.0|42.86039|0.03228 +2016-07-01|-61.0|-137.0|43.01072|0.03418 +2016-07-01|-61.0|-138.0|43.16009|0.03612 +2016-07-01|-61.0|-139.0|43.30875|0.03809 +2016-07-01|-61.0|-140.0|43.45699|0.04009 +2016-07-01|-61.0|-141.0|43.60503|0.04213 +2016-07-01|-61.0|-142.0|43.7531|0.0442 +2016-07-01|-61.0|-143.0|43.90141|0.04631 +2016-07-01|-61.0|-144.0|44.05015|0.04844 +2016-07-01|-61.0|-145.0|44.19949|0.0506 +2016-07-01|-61.0|-146.0|44.34958|0.05279 +2016-07-01|-61.0|-147.0|44.50055|0.055 +2016-07-01|-61.0|-148.0|44.65251|0.05724 +2016-07-01|-61.0|-149.0|44.80555|0.0595 +2016-07-01|-61.0|-150.0|44.95975|0.06178 +2016-07-01|-61.0|-151.0|45.11516|0.06407 +2016-07-01|-61.0|-152.0|45.27182|0.06639 +2016-07-01|-61.0|-153.0|45.42975|0.06872 +2016-07-01|-61.0|-154.0|45.58895|0.07106 +2016-07-01|-61.0|-155.0|45.74941|0.07341 +2016-07-01|-61.0|-156.0|45.91109|0.07577 +2016-07-01|-61.0|-157.0|46.07395|0.07813 +2016-07-01|-61.0|-158.0|46.23791|0.0805 +2016-07-01|-61.0|-159.0|46.40291|0.08288 +2016-07-01|-61.0|-160.0|46.56884|0.08525 +2016-07-01|-61.0|-161.0|46.73559|0.08762 +2016-07-01|-61.0|-162.0|46.90303|0.08999 +2016-07-01|-61.0|-163.0|47.07104|0.09236 +2016-07-01|-61.0|-164.0|47.23944|0.09472 +2016-07-01|-61.0|-165.0|47.40807|0.09707 +2016-07-01|-61.0|-166.0|47.57675|0.09941 +2016-07-01|-61.0|-167.0|47.74527|0.10175 +2016-07-01|-61.0|-168.0|47.91342|0.10408 +2016-07-01|-61.0|-169.0|48.08096|0.10639 +2016-07-01|-61.0|-170.0|48.24765|0.1087 +2016-07-01|-61.0|-171.0|48.41323|0.11099 +2016-07-01|-61.0|-172.0|48.5774|0.11328 +2016-07-01|-61.0|-173.0|48.73988|0.11555 +2016-07-01|-61.0|-174.0|48.90033|0.11782 +2016-07-01|-61.0|-175.0|49.05841|0.12009 +2016-07-01|-61.0|-176.0|49.21376|0.12235 +2016-07-01|-61.0|-177.0|49.36599|0.12461 +2016-07-01|-61.0|-178.0|49.51467|0.12687 +2016-07-01|-61.0|-179.0|49.65937|0.12913 +2016-07-01|-62.0|0.0|-19.87719|-0.07043 +2016-07-01|-62.0|1.0|-20.50763|-0.07507 +2016-07-01|-62.0|2.0|-21.14769|-0.07976 +2016-07-01|-62.0|3.0|-21.79724|-0.08448 +2016-07-01|-62.0|4.0|-22.45611|-0.08922 +2016-07-01|-62.0|5.0|-23.12412|-0.09396 +2016-07-01|-62.0|6.0|-23.80101|-0.0987 +2016-07-01|-62.0|7.0|-24.48655|-0.10341 +2016-07-01|-62.0|8.0|-25.18044|-0.10809 +2016-07-01|-62.0|9.0|-25.88236|-0.11272 +2016-07-01|-62.0|10.0|-26.59199|-0.1173 +2016-07-01|-62.0|11.0|-27.30896|-0.12181 +2016-07-01|-62.0|12.0|-28.03289|-0.12624 +2016-07-01|-62.0|13.0|-28.76339|-0.13059 +2016-07-01|-62.0|14.0|-29.50005|-0.13483 +2016-07-01|-62.0|15.0|-30.24245|-0.13897 +2016-07-01|-62.0|16.0|-30.99015|-0.143 +2016-07-01|-62.0|17.0|-31.74271|-0.1469 +2016-07-01|-62.0|18.0|-32.49968|-0.15067 +2016-07-01|-62.0|19.0|-33.26061|-0.15431 +2016-07-01|-62.0|20.0|-34.02505|-0.1578 +2016-07-01|-62.0|21.0|-34.79253|-0.16114 +2016-07-01|-62.0|22.0|-35.5626|-0.16434 +2016-07-01|-62.0|23.0|-36.33481|-0.16738 +2016-07-01|-62.0|24.0|-37.10871|-0.17026 +2016-07-01|-62.0|25.0|-37.88386|-0.17297 +2016-07-01|-62.0|26.0|-38.65981|-0.17553 +2016-07-01|-62.0|27.0|-39.43615|-0.17792 +2016-07-01|-62.0|28.0|-40.21245|-0.18014 +2016-07-01|-62.0|29.0|-40.9883|-0.1822 +2016-07-01|-62.0|30.0|-41.7633|-0.18409 +2016-07-01|-62.0|31.0|-42.53707|-0.18582 +2016-07-01|-62.0|32.0|-43.30923|-0.18738 +2016-07-01|-62.0|33.0|-44.07942|-0.18878 +2016-07-01|-62.0|34.0|-44.84728|-0.19001 +2016-07-01|-62.0|35.0|-45.61248|-0.19109 +2016-07-01|-62.0|36.0|-46.3747|-0.19201 +2016-07-01|-62.0|37.0|-47.13362|-0.19278 +2016-07-01|-62.0|38.0|-47.88895|-0.19339 +2016-07-01|-62.0|39.0|-48.64041|-0.19385 +2016-07-01|-62.0|40.0|-49.38772|-0.19418 +2016-07-01|-62.0|41.0|-50.13063|-0.19435 +2016-07-01|-62.0|42.0|-50.8689|-0.19439 +2016-07-01|-62.0|43.0|-51.6023|-0.1943 +2016-07-01|-62.0|44.0|-52.3306|-0.19407 +2016-07-01|-62.0|45.0|-53.0536|-0.19372 +2016-07-01|-62.0|46.0|-53.77112|-0.19324 +2016-07-01|-62.0|47.0|-54.48296|-0.19265 +2016-07-01|-62.0|48.0|-55.18897|-0.19194 +2016-07-01|-62.0|49.0|-55.88897|-0.19112 +2016-07-01|-62.0|50.0|-56.58282|-0.19019 +2016-07-01|-62.0|51.0|-57.27039|-0.18915 +2016-07-01|-62.0|52.0|-57.95155|-0.18802 +2016-07-01|-62.0|53.0|-58.62617|-0.18679 +2016-07-01|-62.0|54.0|-59.29415|-0.18547 +2016-07-01|-62.0|55.0|-59.95539|-0.18406 +2016-07-01|-62.0|56.0|-60.60978|-0.18257 +2016-07-01|-62.0|57.0|-61.25725|-0.181 +2016-07-01|-62.0|58.0|-61.89771|-0.17935 +2016-07-01|-62.0|59.0|-62.5311|-0.17763 +2016-07-01|-62.0|60.0|-63.15733|-0.17584 +2016-07-01|-62.0|61.0|-63.77636|-0.17399 +2016-07-01|-62.0|62.0|-64.38811|-0.17208 +2016-07-01|-62.0|63.0|-64.99254|-0.17011 +2016-07-01|-62.0|64.0|-65.58959|-0.16809 +2016-07-01|-62.0|65.0|-66.17921|-0.16602 +2016-07-01|-62.0|66.0|-66.76136|-0.1639 +2016-07-01|-62.0|67.0|-67.33599|-0.16175 +2016-07-01|-62.0|68.0|-67.90305|-0.15956 +2016-07-01|-62.0|69.0|-68.4625|-0.15733 +2016-07-01|-62.0|70.0|-69.01429|-0.15508 +2016-07-01|-62.0|71.0|-69.55836|-0.1528 +2016-07-01|-62.0|72.0|-70.09467|-0.1505 +2016-07-01|-62.0|73.0|-70.62317|-0.14819 +2016-07-01|-62.0|74.0|-71.14378|-0.14586 +2016-07-01|-62.0|75.0|-71.65644|-0.14352 +2016-07-01|-62.0|76.0|-72.16107|-0.14118 +2016-07-01|-62.0|77.0|-72.65761|-0.13884 +2016-07-01|-62.0|78.0|-73.14594|-0.13651 +2016-07-01|-62.0|79.0|-73.62598|-0.13418 +2016-07-01|-62.0|80.0|-74.09761|-0.13187 +2016-07-01|-62.0|81.0|-74.5607|-0.12957 +2016-07-01|-62.0|82.0|-75.01512|-0.12729 +2016-07-01|-62.0|83.0|-75.4607|-0.12504 +2016-07-01|-62.0|84.0|-75.89727|-0.12282 +2016-07-01|-62.0|85.0|-76.32464|-0.12063 +2016-07-01|-62.0|86.0|-76.74258|-0.11847 +2016-07-01|-62.0|87.0|-77.15086|-0.11636 +2016-07-01|-62.0|88.0|-77.54921|-0.11428 +2016-07-01|-62.0|89.0|-77.93733|-0.11226 +2016-07-01|-62.0|90.0|-78.31487|-0.11028 +2016-07-01|-62.0|91.0|-78.68149|-0.10836 +2016-07-01|-62.0|92.0|-79.03675|-0.10649 +2016-07-01|-62.0|93.0|-79.3802|-0.10468 +2016-07-01|-62.0|94.0|-79.71132|-0.10292 +2016-07-01|-62.0|95.0|-80.02956|-0.10123 +2016-07-01|-62.0|96.0|-80.33427|-0.0996 +2016-07-01|-62.0|97.0|-80.62475|-0.09803 +2016-07-01|-62.0|98.0|-80.90019|-0.09652 +2016-07-01|-62.0|99.0|-81.15972|-0.09507 +2016-07-01|-62.0|100.0|-81.40232|-0.09368 +2016-07-01|-62.0|101.0|-81.62688|-0.09235 +2016-07-01|-62.0|102.0|-81.83213|-0.09107 +2016-07-01|-62.0|103.0|-82.01665|-0.08983 +2016-07-01|-62.0|104.0|-82.17879|-0.08864 +2016-07-01|-62.0|105.0|-82.31674|-0.08747 +2016-07-01|-62.0|106.0|-82.42836|-0.08632 +2016-07-01|-62.0|107.0|-82.51127|-0.08518 +2016-07-01|-62.0|108.0|-82.56267|-0.08402 +2016-07-01|-62.0|109.0|-82.57939|-0.08281 +2016-07-01|-62.0|110.0|-82.55769|-0.08154 +2016-07-01|-62.0|111.0|-82.49327|-0.08015 +2016-07-01|-62.0|112.0|-82.38106|-0.07859 +2016-07-01|-62.0|113.0|-82.21508|-0.0768 +2016-07-01|-62.0|114.0|-81.98828|-0.0747 +2016-07-01|-62.0|115.0|-81.69222|-0.07218 +2016-07-01|-62.0|116.0|-81.31677|-0.06908 +2016-07-01|-62.0|117.0|-80.84969|-0.06523 +2016-07-01|-62.0|118.0|-80.27604|-0.06038 +2016-07-01|-62.0|119.0|-79.57748|-0.05418 +2016-07-01|-62.0|120.0|-78.73124|-0.04618 +2016-07-01|-62.0|121.0|-77.70887|-0.03575 +2016-07-01|-62.0|122.0|-76.47443|-0.02204 +2016-07-01|-62.0|123.0|-74.98217|-0.00384 +2016-07-01|-62.0|124.0|-73.17334|0.02053 +2016-07-01|-62.0|125.0|-70.97206|0.05345 +2016-07-01|-62.0|126.0|-68.28004|0.09826 +2016-07-01|-62.0|127.0|-64.97052|0.15957 +2016-07-01|-62.0|128.0|-60.8829|0.2435 +2016-07-01|-62.0|129.0|-55.82218|0.35735 +2016-07-01|-62.0|130.0|-49.5736|0.50787 +2016-07-01|-62.0|131.0|-41.9509|0.69624 +2016-07-01|-62.0|132.0|-32.89989|0.90905 +2016-07-01|-62.0|133.0|-22.64514|1.11035 +2016-07-01|-62.0|134.0|-11.77622|1.25 +2016-07-01|-62.0|135.0|-1.11827|1.29403 +2016-07-01|-62.0|136.0|8.58926|1.2481 +2016-07-01|-62.0|137.0|16.9402|1.14616 +2016-07-01|-62.0|138.0|23.86818|1.02357 +2016-07-01|-62.0|139.0|29.51039|0.90303 +2016-07-01|-62.0|140.0|34.0765|0.79494 +2016-07-01|-62.0|141.0|37.77475|0.70218 +2016-07-01|-62.0|142.0|40.78347|0.62415 +2016-07-01|-62.0|143.0|43.24577|0.55895 +2016-07-01|-62.0|144.0|45.27339|0.50448 +2016-07-01|-62.0|145.0|46.95267|0.4588 +2016-07-01|-62.0|146.0|48.35037|0.42028 +2016-07-01|-62.0|147.0|49.51827|0.38759 +2016-07-01|-62.0|148.0|50.49693|0.35966 +2016-07-01|-62.0|149.0|51.3183|0.33564 +2016-07-01|-62.0|150.0|52.00786|0.31485 +2016-07-01|-62.0|151.0|52.58604|0.29674 +2016-07-01|-62.0|152.0|53.06946|0.28089 +2016-07-01|-62.0|153.0|53.47165|0.26692 +2016-07-01|-62.0|154.0|53.80382|0.25455 +2016-07-01|-62.0|155.0|54.07525|0.24354 +2016-07-01|-62.0|156.0|54.29373|0.2337 +2016-07-01|-62.0|157.0|54.46581|0.22486 +2016-07-01|-62.0|158.0|54.59706|0.21688 +2016-07-01|-62.0|159.0|54.69225|0.20965 +2016-07-01|-62.0|160.0|54.75544|0.20306 +2016-07-01|-62.0|161.0|54.79017|0.19704 +2016-07-01|-62.0|162.0|54.79951|0.19152 +2016-07-01|-62.0|163.0|54.78612|0.18642 +2016-07-01|-62.0|164.0|54.75236|0.1817 +2016-07-01|-62.0|165.0|54.7003|0.1773 +2016-07-01|-62.0|166.0|54.63176|0.1732 +2016-07-01|-62.0|167.0|54.54837|0.16935 +2016-07-01|-62.0|168.0|54.45159|0.16572 +2016-07-01|-62.0|169.0|54.34272|0.16228 +2016-07-01|-62.0|170.0|54.22293|0.159 +2016-07-01|-62.0|171.0|54.09328|0.15588 +2016-07-01|-62.0|172.0|53.95473|0.15288 +2016-07-01|-62.0|173.0|53.80814|0.14999 +2016-07-01|-62.0|174.0|53.65431|0.14719 +2016-07-01|-62.0|175.0|53.49396|0.14447 +2016-07-01|-62.0|176.0|53.32777|0.14183 +2016-07-01|-62.0|177.0|53.15633|0.13923 +2016-07-01|-62.0|178.0|52.98022|0.13669 +2016-07-01|-62.0|179.0|52.79996|0.13419 +2016-07-01|-62.0|-1.0|-19.25647|-0.06584 +2016-07-01|-62.0|-2.0|-18.64552|-0.06132 +2016-07-01|-62.0|-3.0|-18.04437|-0.05688 +2016-07-01|-62.0|-4.0|-17.45299|-0.05254 +2016-07-01|-62.0|-5.0|-16.87133|-0.0483 +2016-07-01|-62.0|-6.0|-16.2993|-0.04418 +2016-07-01|-62.0|-7.0|-15.73675|-0.0402 +2016-07-01|-62.0|-8.0|-15.18351|-0.03635 +2016-07-01|-62.0|-9.0|-14.63938|-0.03265 +2016-07-01|-62.0|-10.0|-14.10409|-0.02912 +2016-07-01|-62.0|-11.0|-13.57736|-0.02576 +2016-07-01|-62.0|-12.0|-13.05886|-0.02257 +2016-07-01|-62.0|-13.0|-12.54824|-0.01957 +2016-07-01|-62.0|-14.0|-12.04511|-0.01676 +2016-07-01|-62.0|-15.0|-11.54904|-0.01415 +2016-07-01|-62.0|-16.0|-11.05957|-0.01175 +2016-07-01|-62.0|-17.0|-10.57624|-0.00955 +2016-07-01|-62.0|-18.0|-10.09854|-0.00757 +2016-07-01|-62.0|-19.0|-9.62594|-0.0058 +2016-07-01|-62.0|-20.0|-9.1579|-0.00424 +2016-07-01|-62.0|-21.0|-8.69386|-0.0029 +2016-07-01|-62.0|-22.0|-8.23325|-0.00178 +2016-07-01|-62.0|-23.0|-7.77548|-8.7E-4 +2016-07-01|-62.0|-24.0|-7.31996|-1.7E-4 +2016-07-01|-62.0|-25.0|-6.86609|3.2E-4 +2016-07-01|-62.0|-26.0|-6.41328|6.1E-4 +2016-07-01|-62.0|-27.0|-5.96093|6.9E-4 +2016-07-01|-62.0|-28.0|-5.50845|5.8E-4 +2016-07-01|-62.0|-29.0|-5.05527|2.8E-4 +2016-07-01|-62.0|-30.0|-4.60079|-1.9E-4 +2016-07-01|-62.0|-31.0|-4.14448|-8.4E-4 +2016-07-01|-62.0|-32.0|-3.68579|-0.00166 +2016-07-01|-62.0|-33.0|-3.22419|-0.00262 +2016-07-01|-62.0|-34.0|-2.75919|-0.00374 +2016-07-01|-62.0|-35.0|-2.29032|-0.00498 +2016-07-01|-62.0|-36.0|-1.81712|-0.00635 +2016-07-01|-62.0|-37.0|-1.33919|-0.00784 +2016-07-01|-62.0|-38.0|-0.85612|-0.00942 +2016-07-01|-62.0|-39.0|-0.36757|-0.01109 +2016-07-01|-62.0|-40.0|0.12679|-0.01285 +2016-07-01|-62.0|-41.0|0.62724|-0.01466 +2016-07-01|-62.0|-42.0|1.13403|-0.01654 +2016-07-01|-62.0|-43.0|1.64738|-0.01845 +2016-07-01|-62.0|-44.0|2.16744|-0.0204 +2016-07-01|-62.0|-45.0|2.69437|-0.02237 +2016-07-01|-62.0|-46.0|3.22826|-0.02434 +2016-07-01|-62.0|-47.0|3.76916|-0.02631 +2016-07-01|-62.0|-48.0|4.31709|-0.02827 +2016-07-01|-62.0|-49.0|4.87203|-0.0302 +2016-07-01|-62.0|-50.0|5.43391|-0.0321 +2016-07-01|-62.0|-51.0|6.00265|-0.03396 +2016-07-01|-62.0|-52.0|6.57811|-0.03576 +2016-07-01|-62.0|-53.0|7.16011|-0.0375 +2016-07-01|-62.0|-54.0|7.74846|-0.03918 +2016-07-01|-62.0|-55.0|8.34292|-0.04078 +2016-07-01|-62.0|-56.0|8.94321|-0.04229 +2016-07-01|-62.0|-57.0|9.54904|-0.04372 +2016-07-01|-62.0|-58.0|10.16008|-0.04506 +2016-07-01|-62.0|-59.0|10.77598|-0.04629 +2016-07-01|-62.0|-60.0|11.39635|-0.04742 +2016-07-01|-62.0|-61.0|12.02079|-0.04845 +2016-07-01|-62.0|-62.0|12.64887|-0.04937 +2016-07-01|-62.0|-63.0|13.28016|-0.05017 +2016-07-01|-62.0|-64.0|13.9142|-0.05087 +2016-07-01|-62.0|-65.0|14.5505|-0.05145 +2016-07-01|-62.0|-66.0|15.18858|-0.05192 +2016-07-01|-62.0|-67.0|15.82794|-0.05227 +2016-07-01|-62.0|-68.0|16.46807|-0.05251 +2016-07-01|-62.0|-69.0|17.10847|-0.05265 +2016-07-01|-62.0|-70.0|17.7486|-0.05267 +2016-07-01|-62.0|-71.0|18.38796|-0.05259 +2016-07-01|-62.0|-72.0|19.02602|-0.0524 +2016-07-01|-62.0|-73.0|19.66226|-0.05211 +2016-07-01|-62.0|-74.0|20.29616|-0.05173 +2016-07-01|-62.0|-75.0|20.92721|-0.05125 +2016-07-01|-62.0|-76.0|21.55491|-0.05068 +2016-07-01|-62.0|-77.0|22.17877|-0.05003 +2016-07-01|-62.0|-78.0|22.79829|-0.04929 +2016-07-01|-62.0|-79.0|23.41299|-0.04849 +2016-07-01|-62.0|-80.0|24.02243|-0.04761 +2016-07-01|-62.0|-81.0|24.62614|-0.04666 +2016-07-01|-62.0|-82.0|25.2237|-0.04565 +2016-07-01|-62.0|-83.0|25.81468|-0.04459 +2016-07-01|-62.0|-84.0|26.39869|-0.04348 +2016-07-01|-62.0|-85.0|26.97535|-0.04232 +2016-07-01|-62.0|-86.0|27.54428|-0.04111 +2016-07-01|-62.0|-87.0|28.10516|-0.03987 +2016-07-01|-62.0|-88.0|28.65764|-0.0386 +2016-07-01|-62.0|-89.0|29.20144|-0.0373 +2016-07-01|-62.0|-90.0|29.73627|-0.03598 +2016-07-01|-62.0|-91.0|30.26186|-0.03463 +2016-07-01|-62.0|-92.0|30.77799|-0.03327 +2016-07-01|-62.0|-93.0|31.28443|-0.0319 +2016-07-01|-62.0|-94.0|31.781|-0.03051 +2016-07-01|-62.0|-95.0|32.26752|-0.02912 +2016-07-01|-62.0|-96.0|32.74386|-0.02772 +2016-07-01|-62.0|-97.0|33.20988|-0.02633 +2016-07-01|-62.0|-98.0|33.66548|-0.02493 +2016-07-01|-62.0|-99.0|34.1106|-0.02353 +2016-07-01|-62.0|-100.0|34.54517|-0.02214 +2016-07-01|-62.0|-101.0|34.96917|-0.02075 +2016-07-01|-62.0|-102.0|35.38259|-0.01937 +2016-07-01|-62.0|-103.0|35.78545|-0.018 +2016-07-01|-62.0|-104.0|36.17777|-0.01663 +2016-07-01|-62.0|-105.0|36.55963|-0.01526 +2016-07-01|-62.0|-106.0|36.9311|-0.01391 +2016-07-01|-62.0|-107.0|37.29229|-0.01256 +2016-07-01|-62.0|-108.0|37.64332|-0.01121 +2016-07-01|-62.0|-109.0|37.98434|-0.00987 +2016-07-01|-62.0|-110.0|38.31551|-0.00854 +2016-07-01|-62.0|-111.0|38.63701|-0.0072 +2016-07-01|-62.0|-112.0|38.94905|-0.00587 +2016-07-01|-62.0|-113.0|39.25186|-0.00453 +2016-07-01|-62.0|-114.0|39.54566|-0.0032 +2016-07-01|-62.0|-115.0|39.83072|-0.00185 +2016-07-01|-62.0|-116.0|40.1073|-5.1E-4 +2016-07-01|-62.0|-117.0|40.37568|8.5E-4 +2016-07-01|-62.0|-118.0|40.63617|0.00222 +2016-07-01|-62.0|-119.0|40.88908|0.0036 +2016-07-01|-62.0|-120.0|41.13472|0.00499 +2016-07-01|-62.0|-121.0|41.37344|0.0064 +2016-07-01|-62.0|-122.0|41.60556|0.00783 +2016-07-01|-62.0|-123.0|41.83143|0.00928 +2016-07-01|-62.0|-124.0|42.05142|0.01075 +2016-07-01|-62.0|-125.0|42.26587|0.01225 +2016-07-01|-62.0|-126.0|42.47514|0.01377 +2016-07-01|-62.0|-127.0|42.67961|0.01532 +2016-07-01|-62.0|-128.0|42.87963|0.0169 +2016-07-01|-62.0|-129.0|43.07557|0.01851 +2016-07-01|-62.0|-130.0|43.26778|0.02016 +2016-07-01|-62.0|-131.0|43.45662|0.02183 +2016-07-01|-62.0|-132.0|43.64244|0.02354 +2016-07-01|-62.0|-133.0|43.82559|0.02528 +2016-07-01|-62.0|-134.0|44.00639|0.02706 +2016-07-01|-62.0|-135.0|44.18519|0.02887 +2016-07-01|-62.0|-136.0|44.36228|0.03072 +2016-07-01|-62.0|-137.0|44.53799|0.0326 +2016-07-01|-62.0|-138.0|44.71259|0.03452 +2016-07-01|-62.0|-139.0|44.88638|0.03648 +2016-07-01|-62.0|-140.0|45.05962|0.03846 +2016-07-01|-62.0|-141.0|45.23255|0.04049 +2016-07-01|-62.0|-142.0|45.40541|0.04254 +2016-07-01|-62.0|-143.0|45.57843|0.04463 +2016-07-01|-62.0|-144.0|45.75181|0.04674 +2016-07-01|-62.0|-145.0|45.92572|0.04889 +2016-07-01|-62.0|-146.0|46.10035|0.05107 +2016-07-01|-62.0|-147.0|46.27585|0.05327 +2016-07-01|-62.0|-148.0|46.45235|0.0555 +2016-07-01|-62.0|-149.0|46.62997|0.05776 +2016-07-01|-62.0|-150.0|46.80881|0.06003 +2016-07-01|-62.0|-151.0|46.98896|0.06233 +2016-07-01|-62.0|-152.0|47.17049|0.06465 +2016-07-01|-62.0|-153.0|47.35344|0.06698 +2016-07-01|-62.0|-154.0|47.53786|0.06933 +2016-07-01|-62.0|-155.0|47.72376|0.07169 +2016-07-01|-62.0|-156.0|47.91115|0.07407 +2016-07-01|-62.0|-157.0|48.10002|0.07645 +2016-07-01|-62.0|-158.0|48.29034|0.07885 +2016-07-01|-62.0|-159.0|48.48207|0.08125 +2016-07-01|-62.0|-160.0|48.67516|0.08365 +2016-07-01|-62.0|-161.0|48.86954|0.08606 +2016-07-01|-62.0|-162.0|49.06513|0.08847 +2016-07-01|-62.0|-163.0|49.26184|0.09088 +2016-07-01|-62.0|-164.0|49.45955|0.09329 +2016-07-01|-62.0|-165.0|49.65814|0.0957 +2016-07-01|-62.0|-166.0|49.85748|0.09811 +2016-07-01|-62.0|-167.0|50.05741|0.10052 +2016-07-01|-62.0|-168.0|50.25778|0.10292 +2016-07-01|-62.0|-169.0|50.45841|0.10531 +2016-07-01|-62.0|-170.0|50.65911|0.10771 +2016-07-01|-62.0|-171.0|50.85966|0.1101 +2016-07-01|-62.0|-172.0|51.05986|0.11248 +2016-07-01|-62.0|-173.0|51.25945|0.11487 +2016-07-01|-62.0|-174.0|51.4582|0.11726 +2016-07-01|-62.0|-175.0|51.65581|0.11964 +2016-07-01|-62.0|-176.0|51.85201|0.12204 +2016-07-01|-62.0|-177.0|52.04648|0.12443 +2016-07-01|-62.0|-178.0|52.23888|0.12685 +2016-07-01|-62.0|-179.0|52.42886|0.12927 +2016-07-01|-63.0|0.0|-19.84119|-0.07277 +2016-07-01|-63.0|1.0|-20.48179|-0.07718 +2016-07-01|-63.0|2.0|-21.13142|-0.08163 +2016-07-01|-63.0|3.0|-21.78998|-0.0861 +2016-07-01|-63.0|4.0|-22.45731|-0.09059 +2016-07-01|-63.0|5.0|-23.13322|-0.09509 +2016-07-01|-63.0|6.0|-23.81751|-0.09958 +2016-07-01|-63.0|7.0|-24.50994|-0.10404 +2016-07-01|-63.0|8.0|-25.21026|-0.10848 +2016-07-01|-63.0|9.0|-25.91816|-0.11288 +2016-07-01|-63.0|10.0|-26.63336|-0.11723 +2016-07-01|-63.0|11.0|-27.35552|-0.12152 +2016-07-01|-63.0|12.0|-28.08431|-0.12573 +2016-07-01|-63.0|13.0|-28.81935|-0.12987 +2016-07-01|-63.0|14.0|-29.56029|-0.13392 +2016-07-01|-63.0|15.0|-30.30673|-0.13787 +2016-07-01|-63.0|16.0|-31.05828|-0.14171 +2016-07-01|-63.0|17.0|-31.81454|-0.14545 +2016-07-01|-63.0|18.0|-32.5751|-0.14907 +2016-07-01|-63.0|19.0|-33.33955|-0.15256 +2016-07-01|-63.0|20.0|-34.10747|-0.15593 +2016-07-01|-63.0|21.0|-34.87845|-0.15916 +2016-07-01|-63.0|22.0|-35.65207|-0.16225 +2016-07-01|-63.0|23.0|-36.42791|-0.16521 +2016-07-01|-63.0|24.0|-37.20556|-0.16801 +2016-07-01|-63.0|25.0|-37.98462|-0.17068 +2016-07-01|-63.0|26.0|-38.76469|-0.17319 +2016-07-01|-63.0|27.0|-39.54537|-0.17555 +2016-07-01|-63.0|28.0|-40.32628|-0.17776 +2016-07-01|-63.0|29.0|-41.10705|-0.17982 +2016-07-01|-63.0|30.0|-41.88729|-0.18172 +2016-07-01|-63.0|31.0|-42.66666|-0.18348 +2016-07-01|-63.0|32.0|-43.44481|-0.18508 +2016-07-01|-63.0|33.0|-44.2214|-0.18653 +2016-07-01|-63.0|34.0|-44.99611|-0.18784 +2016-07-01|-63.0|35.0|-45.76863|-0.18899 +2016-07-01|-63.0|36.0|-46.53866|-0.19 +2016-07-01|-63.0|37.0|-47.30591|-0.19087 +2016-07-01|-63.0|38.0|-48.07011|-0.1916 +2016-07-01|-63.0|39.0|-48.83099|-0.1922 +2016-07-01|-63.0|40.0|-49.5883|-0.19266 +2016-07-01|-63.0|41.0|-50.34182|-0.19298 +2016-07-01|-63.0|42.0|-51.09131|-0.19318 +2016-07-01|-63.0|43.0|-51.83656|-0.19326 +2016-07-01|-63.0|44.0|-52.57737|-0.19321 +2016-07-01|-63.0|45.0|-53.31356|-0.19305 +2016-07-01|-63.0|46.0|-54.04494|-0.19277 +2016-07-01|-63.0|47.0|-54.77136|-0.19238 +2016-07-01|-63.0|48.0|-55.49266|-0.19188 +2016-07-01|-63.0|49.0|-56.20869|-0.19128 +2016-07-01|-63.0|50.0|-56.91933|-0.19059 +2016-07-01|-63.0|51.0|-57.62445|-0.18979 +2016-07-01|-63.0|52.0|-58.32394|-0.18891 +2016-07-01|-63.0|53.0|-59.0177|-0.18794 +2016-07-01|-63.0|54.0|-59.70563|-0.18688 +2016-07-01|-63.0|55.0|-60.38765|-0.18575 +2016-07-01|-63.0|56.0|-61.06369|-0.18454 +2016-07-01|-63.0|57.0|-61.73366|-0.18325 +2016-07-01|-63.0|58.0|-62.39752|-0.1819 +2016-07-01|-63.0|59.0|-63.0552|-0.18049 +2016-07-01|-63.0|60.0|-63.70667|-0.17901 +2016-07-01|-63.0|61.0|-64.35187|-0.17748 +2016-07-01|-63.0|62.0|-64.99077|-0.1759 +2016-07-01|-63.0|63.0|-65.62334|-0.17426 +2016-07-01|-63.0|64.0|-66.24956|-0.17258 +2016-07-01|-63.0|65.0|-66.86939|-0.17087 +2016-07-01|-63.0|66.0|-67.48283|-0.16911 +2016-07-01|-63.0|67.0|-68.08985|-0.16732 +2016-07-01|-63.0|68.0|-68.69044|-0.16551 +2016-07-01|-63.0|69.0|-69.2846|-0.16367 +2016-07-01|-63.0|70.0|-69.8723|-0.16181 +2016-07-01|-63.0|71.0|-70.45355|-0.15993 +2016-07-01|-63.0|72.0|-71.02832|-0.15804 +2016-07-01|-63.0|73.0|-71.59662|-0.15615 +2016-07-01|-63.0|74.0|-72.15842|-0.15425 +2016-07-01|-63.0|75.0|-72.71373|-0.15235 +2016-07-01|-63.0|76.0|-73.26251|-0.15046 +2016-07-01|-63.0|77.0|-73.80476|-0.14858 +2016-07-01|-63.0|78.0|-74.34046|-0.14671 +2016-07-01|-63.0|79.0|-74.86956|-0.14486 +2016-07-01|-63.0|80.0|-75.39206|-0.14304 +2016-07-01|-63.0|81.0|-75.90789|-0.14124 +2016-07-01|-63.0|82.0|-76.41703|-0.13948 +2016-07-01|-63.0|83.0|-76.91941|-0.13775 +2016-07-01|-63.0|84.0|-77.41498|-0.13607 +2016-07-01|-63.0|85.0|-77.90365|-0.13443 +2016-07-01|-63.0|86.0|-78.38535|-0.13285 +2016-07-01|-63.0|87.0|-78.85998|-0.13132 +2016-07-01|-63.0|88.0|-79.32742|-0.12985 +2016-07-01|-63.0|89.0|-79.78756|-0.12845 +2016-07-01|-63.0|90.0|-80.24023|-0.12712 +2016-07-01|-63.0|91.0|-80.68529|-0.12587 +2016-07-01|-63.0|92.0|-81.12255|-0.12469 +2016-07-01|-63.0|93.0|-81.55179|-0.1236 +2016-07-01|-63.0|94.0|-81.97278|-0.1226 +2016-07-01|-63.0|95.0|-82.38525|-0.1217 +2016-07-01|-63.0|96.0|-82.7889|-0.1209 +2016-07-01|-63.0|97.0|-83.18339|-0.1202 +2016-07-01|-63.0|98.0|-83.56834|-0.11961 +2016-07-01|-63.0|99.0|-83.94332|-0.11914 +2016-07-01|-63.0|100.0|-84.30784|-0.11879 +2016-07-01|-63.0|101.0|-84.66135|-0.11857 +2016-07-01|-63.0|102.0|-85.00323|-0.11848 +2016-07-01|-63.0|103.0|-85.33276|-0.11852 +2016-07-01|-63.0|104.0|-85.64915|-0.11871 +2016-07-01|-63.0|105.0|-85.95147|-0.11905 +2016-07-01|-63.0|106.0|-86.23867|-0.11954 +2016-07-01|-63.0|107.0|-86.50954|-0.1202 +2016-07-01|-63.0|108.0|-86.7627|-0.12101 +2016-07-01|-63.0|109.0|-86.99653|-0.12201 +2016-07-01|-63.0|110.0|-87.20916|-0.12317 +2016-07-01|-63.0|111.0|-87.39841|-0.12452 +2016-07-01|-63.0|112.0|-87.56171|-0.12604 +2016-07-01|-63.0|113.0|-87.69603|-0.12775 +2016-07-01|-63.0|114.0|-87.79777|-0.12964 +2016-07-01|-63.0|115.0|-87.86261|-0.1317 +2016-07-01|-63.0|116.0|-87.88534|-0.13392 +2016-07-01|-63.0|117.0|-87.85963|-0.13626 +2016-07-01|-63.0|118.0|-87.77769|-0.13868 +2016-07-01|-63.0|119.0|-87.62987|-0.14111 +2016-07-01|-63.0|120.0|-87.40402|-0.14345 +2016-07-01|-63.0|121.0|-87.08473|-0.14552 +2016-07-01|-63.0|122.0|-86.65212|-0.14705 +2016-07-01|-63.0|123.0|-86.08012|-0.14764 +2016-07-01|-63.0|124.0|-85.33399|-0.14661 +2016-07-01|-63.0|125.0|-84.36647|-0.14291 +2016-07-01|-63.0|126.0|-83.11181|-0.13477 +2016-07-01|-63.0|127.0|-81.47627|-0.11921 +2016-07-01|-63.0|128.0|-79.32248|-0.09105 +2016-07-01|-63.0|129.0|-76.44325|-0.041 +2016-07-01|-63.0|130.0|-72.51727|0.04803 +2016-07-01|-63.0|131.0|-67.03691|0.2078 +2016-07-01|-63.0|132.0|-59.20969|0.49442 +2016-07-01|-63.0|133.0|-47.92593|0.9848 +2016-07-01|-63.0|134.0|-32.22877|1.68361 +2016-07-01|-63.0|135.0|-12.99721|2.29132 +2016-07-01|-63.0|136.0|5.93925|2.38277 +2016-07-01|-63.0|137.0|21.04816|2.05684 +2016-07-01|-63.0|138.0|31.81733|1.65206 +2016-07-01|-63.0|139.0|39.29071|1.31733 +2016-07-01|-63.0|140.0|44.54452|1.068 +2016-07-01|-63.0|141.0|48.32835|0.88539 +2016-07-01|-63.0|142.0|51.12005|0.75006 +2016-07-01|-63.0|143.0|53.22249|0.64772 +2016-07-01|-63.0|144.0|54.83166|0.56864 +2016-07-01|-63.0|145.0|56.07801|0.50628 +2016-07-01|-63.0|146.0|57.0509|0.4562 +2016-07-01|-63.0|147.0|57.81324|0.41532 +2016-07-01|-63.0|148.0|58.4104|0.38147 +2016-07-01|-63.0|149.0|58.87582|0.35309 +2016-07-01|-63.0|150.0|59.23469|0.32903 +2016-07-01|-63.0|151.0|59.50627|0.30843 +2016-07-01|-63.0|152.0|59.70554|0.29063 +2016-07-01|-63.0|153.0|59.84431|0.27512 +2016-07-01|-63.0|154.0|59.93204|0.26152 +2016-07-01|-63.0|155.0|59.97635|0.2495 +2016-07-01|-63.0|156.0|59.98349|0.23882 +2016-07-01|-63.0|157.0|59.95859|0.22928 +2016-07-01|-63.0|158.0|59.90595|0.2207 +2016-07-01|-63.0|159.0|59.82915|0.21294 +2016-07-01|-63.0|160.0|59.73124|0.2059 +2016-07-01|-63.0|161.0|59.61481|0.19948 +2016-07-01|-63.0|162.0|59.48209|0.19359 +2016-07-01|-63.0|163.0|59.33499|0.18816 +2016-07-01|-63.0|164.0|59.17518|0.18313 +2016-07-01|-63.0|165.0|59.00411|0.17846 +2016-07-01|-63.0|166.0|58.82307|0.1741 +2016-07-01|-63.0|167.0|58.63319|0.17001 +2016-07-01|-63.0|168.0|58.43545|0.16615 +2016-07-01|-63.0|169.0|58.23077|0.1625 +2016-07-01|-63.0|170.0|58.01994|0.15902 +2016-07-01|-63.0|171.0|57.80367|0.15571 +2016-07-01|-63.0|172.0|57.58261|0.15253 +2016-07-01|-63.0|173.0|57.35735|0.14947 +2016-07-01|-63.0|174.0|57.12843|0.14651 +2016-07-01|-63.0|175.0|56.89633|0.14364 +2016-07-01|-63.0|176.0|56.6615|0.14085 +2016-07-01|-63.0|177.0|56.42435|0.13812 +2016-07-01|-63.0|178.0|56.18526|0.13545 +2016-07-01|-63.0|179.0|55.94456|0.13282 +2016-07-01|-63.0|-1.0|-19.20972|-0.06841 +2016-07-01|-63.0|-2.0|-18.58744|-0.06412 +2016-07-01|-63.0|-3.0|-17.97437|-0.05989 +2016-07-01|-63.0|-4.0|-17.37049|-0.05576 +2016-07-01|-63.0|-5.0|-16.77576|-0.05172 +2016-07-01|-63.0|-6.0|-16.19009|-0.04779 +2016-07-01|-63.0|-7.0|-15.61337|-0.04398 +2016-07-01|-63.0|-8.0|-15.04543|-0.04029 +2016-07-01|-63.0|-9.0|-14.4861|-0.03674 +2016-07-01|-63.0|-10.0|-13.93515|-0.03334 +2016-07-01|-63.0|-11.0|-13.39232|-0.0301 +2016-07-01|-63.0|-12.0|-12.85733|-0.02701 +2016-07-01|-63.0|-13.0|-12.32985|-0.0241 +2016-07-01|-63.0|-14.0|-11.80953|-0.02136 +2016-07-01|-63.0|-15.0|-11.29599|-0.01881 +2016-07-01|-63.0|-16.0|-10.78884|-0.01644 +2016-07-01|-63.0|-17.0|-10.28763|-0.01427 +2016-07-01|-63.0|-18.0|-9.79192|-0.01228 +2016-07-01|-63.0|-19.0|-9.30123|-0.0105 +2016-07-01|-63.0|-20.0|-8.81507|-0.00891 +2016-07-01|-63.0|-21.0|-8.33294|-0.00753 +2016-07-01|-63.0|-22.0|-7.85431|-0.00634 +2016-07-01|-63.0|-23.0|-7.37865|-0.00535 +2016-07-01|-63.0|-24.0|-6.90543|-0.00456 +2016-07-01|-63.0|-25.0|-6.43411|-0.00397 +2016-07-01|-63.0|-26.0|-5.96413|-0.00356 +2016-07-01|-63.0|-27.0|-5.49497|-0.00334 +2016-07-01|-63.0|-28.0|-5.02606|-0.00331 +2016-07-01|-63.0|-29.0|-4.55689|-0.00345 +2016-07-01|-63.0|-30.0|-4.08693|-0.00376 +2016-07-01|-63.0|-31.0|-3.61566|-0.00423 +2016-07-01|-63.0|-32.0|-3.14259|-0.00486 +2016-07-01|-63.0|-33.0|-2.66723|-0.00563 +2016-07-01|-63.0|-34.0|-2.18912|-0.00654 +2016-07-01|-63.0|-35.0|-1.70783|-0.00759 +2016-07-01|-63.0|-36.0|-1.22293|-0.00875 +2016-07-01|-63.0|-37.0|-0.73403|-0.01002 +2016-07-01|-63.0|-38.0|-0.24076|-0.01139 +2016-07-01|-63.0|-39.0|0.25721|-0.01284 +2016-07-01|-63.0|-40.0|0.76018|-0.01438 +2016-07-01|-63.0|-41.0|1.26843|-0.01598 +2016-07-01|-63.0|-42.0|1.7822|-0.01764 +2016-07-01|-63.0|-43.0|2.30169|-0.01935 +2016-07-01|-63.0|-44.0|2.82709|-0.02109 +2016-07-01|-63.0|-45.0|3.35853|-0.02286 +2016-07-01|-63.0|-46.0|3.89612|-0.02463 +2016-07-01|-63.0|-47.0|4.43991|-0.02642 +2016-07-01|-63.0|-48.0|4.98995|-0.02819 +2016-07-01|-63.0|-49.0|5.54623|-0.02995 +2016-07-01|-63.0|-50.0|6.10871|-0.03169 +2016-07-01|-63.0|-51.0|6.67733|-0.03339 +2016-07-01|-63.0|-52.0|7.25197|-0.03505 +2016-07-01|-63.0|-53.0|7.83251|-0.03666 +2016-07-01|-63.0|-54.0|8.41877|-0.03821 +2016-07-01|-63.0|-55.0|9.01055|-0.0397 +2016-07-01|-63.0|-56.0|9.60762|-0.04111 +2016-07-01|-63.0|-57.0|10.20973|-0.04245 +2016-07-01|-63.0|-58.0|10.8166|-0.04371 +2016-07-01|-63.0|-59.0|11.42791|-0.04488 +2016-07-01|-63.0|-60.0|12.04333|-0.04596 +2016-07-01|-63.0|-61.0|12.66252|-0.04694 +2016-07-01|-63.0|-62.0|13.28509|-0.04783 +2016-07-01|-63.0|-63.0|13.91066|-0.04862 +2016-07-01|-63.0|-64.0|14.53882|-0.04931 +2016-07-01|-63.0|-65.0|15.16915|-0.0499 +2016-07-01|-63.0|-66.0|15.80121|-0.05038 +2016-07-01|-63.0|-67.0|16.43457|-0.05076 +2016-07-01|-63.0|-68.0|17.06875|-0.05104 +2016-07-01|-63.0|-69.0|17.70332|-0.05122 +2016-07-01|-63.0|-70.0|18.33779|-0.0513 +2016-07-01|-63.0|-71.0|18.9717|-0.05127 +2016-07-01|-63.0|-72.0|19.60458|-0.05116 +2016-07-01|-63.0|-73.0|20.23596|-0.05095 +2016-07-01|-63.0|-74.0|20.86538|-0.05065 +2016-07-01|-63.0|-75.0|21.49235|-0.05026 +2016-07-01|-63.0|-76.0|22.11644|-0.04978 +2016-07-01|-63.0|-77.0|22.73717|-0.04923 +2016-07-01|-63.0|-78.0|23.35411|-0.0486 +2016-07-01|-63.0|-79.0|23.96682|-0.0479 +2016-07-01|-63.0|-80.0|24.57487|-0.04713 +2016-07-01|-63.0|-81.0|25.17785|-0.04629 +2016-07-01|-63.0|-82.0|25.77535|-0.04539 +2016-07-01|-63.0|-83.0|26.367|-0.04444 +2016-07-01|-63.0|-84.0|26.9524|-0.04344 +2016-07-01|-63.0|-85.0|27.53121|-0.04239 +2016-07-01|-63.0|-86.0|28.10309|-0.04129 +2016-07-01|-63.0|-87.0|28.6677|-0.04016 +2016-07-01|-63.0|-88.0|29.22475|-0.03899 +2016-07-01|-63.0|-89.0|29.77394|-0.0378 +2016-07-01|-63.0|-90.0|30.315|-0.03657 +2016-07-01|-63.0|-91.0|30.84769|-0.03532 +2016-07-01|-63.0|-92.0|31.37176|-0.03405 +2016-07-01|-63.0|-93.0|31.88702|-0.03277 +2016-07-01|-63.0|-94.0|32.39327|-0.03147 +2016-07-01|-63.0|-95.0|32.89035|-0.03016 +2016-07-01|-63.0|-96.0|33.37809|-0.02884 +2016-07-01|-63.0|-97.0|33.85638|-0.02751 +2016-07-01|-63.0|-98.0|34.32511|-0.02618 +2016-07-01|-63.0|-99.0|34.78419|-0.02484 +2016-07-01|-63.0|-100.0|35.23355|-0.02351 +2016-07-01|-63.0|-101.0|35.67316|-0.02217 +2016-07-01|-63.0|-102.0|36.10299|-0.02084 +2016-07-01|-63.0|-103.0|36.52304|-0.01951 +2016-07-01|-63.0|-104.0|36.93333|-0.01818 +2016-07-01|-63.0|-105.0|37.33389|-0.01685 +2016-07-01|-63.0|-106.0|37.72479|-0.01553 +2016-07-01|-63.0|-107.0|38.10611|-0.01421 +2016-07-01|-63.0|-108.0|38.47795|-0.01289 +2016-07-01|-63.0|-109.0|38.84042|-0.01157 +2016-07-01|-63.0|-110.0|39.19367|-0.01025 +2016-07-01|-63.0|-111.0|39.53784|-0.00893 +2016-07-01|-63.0|-112.0|39.87312|-0.00761 +2016-07-01|-63.0|-113.0|40.19969|-0.00629 +2016-07-01|-63.0|-114.0|40.51776|-0.00496 +2016-07-01|-63.0|-115.0|40.82755|-0.00363 +2016-07-01|-63.0|-116.0|41.1293|-0.00229 +2016-07-01|-63.0|-117.0|41.42327|-9.4E-4 +2016-07-01|-63.0|-118.0|41.70972|4.2E-4 +2016-07-01|-63.0|-119.0|41.98892|0.00179 +2016-07-01|-63.0|-120.0|42.26117|0.00317 +2016-07-01|-63.0|-121.0|42.52676|0.00458 +2016-07-01|-63.0|-122.0|42.786|0.006 +2016-07-01|-63.0|-123.0|43.03922|0.00744 +2016-07-01|-63.0|-124.0|43.28673|0.0089 +2016-07-01|-63.0|-125.0|43.52886|0.01038 +2016-07-01|-63.0|-126.0|43.76595|0.01189 +2016-07-01|-63.0|-127.0|43.99833|0.01343 +2016-07-01|-63.0|-128.0|44.22634|0.01499 +2016-07-01|-63.0|-129.0|44.45032|0.01658 +2016-07-01|-63.0|-130.0|44.67061|0.01821 +2016-07-01|-63.0|-131.0|44.88755|0.01986 +2016-07-01|-63.0|-132.0|45.10147|0.02155 +2016-07-01|-63.0|-133.0|45.31269|0.02327 +2016-07-01|-63.0|-134.0|45.52155|0.02502 +2016-07-01|-63.0|-135.0|45.72836|0.0268 +2016-07-01|-63.0|-136.0|45.93343|0.02863 +2016-07-01|-63.0|-137.0|46.13705|0.03048 +2016-07-01|-63.0|-138.0|46.33953|0.03237 +2016-07-01|-63.0|-139.0|46.54114|0.03429 +2016-07-01|-63.0|-140.0|46.74215|0.03625 +2016-07-01|-63.0|-141.0|46.94282|0.03824 +2016-07-01|-63.0|-142.0|47.14338|0.04027 +2016-07-01|-63.0|-143.0|47.34408|0.04232 +2016-07-01|-63.0|-144.0|47.54513|0.04441 +2016-07-01|-63.0|-145.0|47.74673|0.04653 +2016-07-01|-63.0|-146.0|47.94908|0.04868 +2016-07-01|-63.0|-147.0|48.15234|0.05086 +2016-07-01|-63.0|-148.0|48.35667|0.05306 +2016-07-01|-63.0|-149.0|48.56223|0.05529 +2016-07-01|-63.0|-150.0|48.76914|0.05754 +2016-07-01|-63.0|-151.0|48.97751|0.05982 +2016-07-01|-63.0|-152.0|49.18746|0.06212 +2016-07-01|-63.0|-153.0|49.39905|0.06443 +2016-07-01|-63.0|-154.0|49.61237|0.06677 +2016-07-01|-63.0|-155.0|49.82748|0.06912 +2016-07-01|-63.0|-156.0|50.04441|0.07149 +2016-07-01|-63.0|-157.0|50.26321|0.07387 +2016-07-01|-63.0|-158.0|50.48389|0.07626 +2016-07-01|-63.0|-159.0|50.70645|0.07866 +2016-07-01|-63.0|-160.0|50.93089|0.08107 +2016-07-01|-63.0|-161.0|51.15719|0.08349 +2016-07-01|-63.0|-162.0|51.38532|0.08591 +2016-07-01|-63.0|-163.0|51.61524|0.08834 +2016-07-01|-63.0|-164.0|51.84689|0.09077 +2016-07-01|-63.0|-165.0|52.08021|0.09321 +2016-07-01|-63.0|-166.0|52.31513|0.09565 +2016-07-01|-63.0|-167.0|52.55156|0.09808 +2016-07-01|-63.0|-168.0|52.7894|0.10052 +2016-07-01|-63.0|-169.0|53.02854|0.10297 +2016-07-01|-63.0|-170.0|53.26887|0.10541 +2016-07-01|-63.0|-171.0|53.51025|0.10785 +2016-07-01|-63.0|-172.0|53.75255|0.1103 +2016-07-01|-63.0|-173.0|53.9956|0.11275 +2016-07-01|-63.0|-174.0|54.23925|0.11521 +2016-07-01|-63.0|-175.0|54.48331|0.11768 +2016-07-01|-63.0|-176.0|54.7276|0.12015 +2016-07-01|-63.0|-177.0|54.9719|0.12264 +2016-07-01|-63.0|-178.0|55.21599|0.12515 +2016-07-01|-63.0|-179.0|55.45964|0.12768 +2016-07-01|-64.0|0.0|-19.82178|-0.07504 +2016-07-01|-64.0|1.0|-20.47212|-0.07922 +2016-07-01|-64.0|2.0|-21.13096|-0.08343 +2016-07-01|-64.0|3.0|-21.79816|-0.08767 +2016-07-01|-64.0|4.0|-22.4736|-0.09192 +2016-07-01|-64.0|5.0|-23.15711|-0.09618 +2016-07-01|-64.0|6.0|-23.84851|-0.10043 +2016-07-01|-64.0|7.0|-24.54757|-0.10466 +2016-07-01|-64.0|8.0|-25.25407|-0.10887 +2016-07-01|-64.0|9.0|-25.96774|-0.11304 +2016-07-01|-64.0|10.0|-26.68832|-0.11717 +2016-07-01|-64.0|11.0|-27.41549|-0.12124 +2016-07-01|-64.0|12.0|-28.14897|-0.12524 +2016-07-01|-64.0|13.0|-28.88842|-0.12918 +2016-07-01|-64.0|14.0|-29.6335|-0.13303 +2016-07-01|-64.0|15.0|-30.38387|-0.1368 +2016-07-01|-64.0|16.0|-31.13917|-0.14048 +2016-07-01|-64.0|17.0|-31.89904|-0.14405 +2016-07-01|-64.0|18.0|-32.6631|-0.14752 +2016-07-01|-64.0|19.0|-33.43099|-0.15088 +2016-07-01|-64.0|20.0|-34.20232|-0.15412 +2016-07-01|-64.0|21.0|-34.97672|-0.15724 +2016-07-01|-64.0|22.0|-35.7538|-0.16024 +2016-07-01|-64.0|23.0|-36.5332|-0.16311 +2016-07-01|-64.0|24.0|-37.31453|-0.16584 +2016-07-01|-64.0|25.0|-38.09743|-0.16845 +2016-07-01|-64.0|26.0|-38.88152|-0.17092 +2016-07-01|-64.0|27.0|-39.66646|-0.17325 +2016-07-01|-64.0|28.0|-40.45188|-0.17544 +2016-07-01|-64.0|29.0|-41.23744|-0.17749 +2016-07-01|-64.0|30.0|-42.02281|-0.17941 +2016-07-01|-64.0|31.0|-42.80765|-0.18119 +2016-07-01|-64.0|32.0|-43.59164|-0.18282 +2016-07-01|-64.0|33.0|-44.37449|-0.18433 +2016-07-01|-64.0|34.0|-45.15589|-0.18569 +2016-07-01|-64.0|35.0|-45.93555|-0.18692 +2016-07-01|-64.0|36.0|-46.71319|-0.18802 +2016-07-01|-64.0|37.0|-47.48856|-0.18899 +2016-07-01|-64.0|38.0|-48.26141|-0.18982 +2016-07-01|-64.0|39.0|-49.03148|-0.19053 +2016-07-01|-64.0|40.0|-49.79855|-0.19112 +2016-07-01|-64.0|41.0|-50.5624|-0.19159 +2016-07-01|-64.0|42.0|-51.32284|-0.19194 +2016-07-01|-64.0|43.0|-52.07965|-0.19217 +2016-07-01|-64.0|44.0|-52.83266|-0.19229 +2016-07-01|-64.0|45.0|-53.5817|-0.19231 +2016-07-01|-64.0|46.0|-54.32662|-0.19222 +2016-07-01|-64.0|47.0|-55.06725|-0.19202 +2016-07-01|-64.0|48.0|-55.80346|-0.19173 +2016-07-01|-64.0|49.0|-56.53513|-0.19135 +2016-07-01|-64.0|50.0|-57.26213|-0.19087 +2016-07-01|-64.0|51.0|-57.98437|-0.19031 +2016-07-01|-64.0|52.0|-58.70174|-0.18966 +2016-07-01|-64.0|53.0|-59.41416|-0.18893 +2016-07-01|-64.0|54.0|-60.12155|-0.18813 +2016-07-01|-64.0|55.0|-60.82383|-0.18725 +2016-07-01|-64.0|56.0|-61.52096|-0.18631 +2016-07-01|-64.0|57.0|-62.21287|-0.1853 +2016-07-01|-64.0|58.0|-62.89953|-0.18423 +2016-07-01|-64.0|59.0|-63.58089|-0.18311 +2016-07-01|-64.0|60.0|-64.25694|-0.18193 +2016-07-01|-64.0|61.0|-64.92763|-0.1807 +2016-07-01|-64.0|62.0|-65.59297|-0.17942 +2016-07-01|-64.0|63.0|-66.25294|-0.17811 +2016-07-01|-64.0|64.0|-66.90753|-0.17675 +2016-07-01|-64.0|65.0|-67.55676|-0.17537 +2016-07-01|-64.0|66.0|-68.20062|-0.17395 +2016-07-01|-64.0|67.0|-68.83912|-0.17251 +2016-07-01|-64.0|68.0|-69.4723|-0.17105 +2016-07-01|-64.0|69.0|-70.10015|-0.16957 +2016-07-01|-64.0|70.0|-70.72272|-0.16808 +2016-07-01|-64.0|71.0|-71.34002|-0.16658 +2016-07-01|-64.0|72.0|-71.95208|-0.16508 +2016-07-01|-64.0|73.0|-72.55895|-0.16357 +2016-07-01|-64.0|74.0|-73.16065|-0.16208 +2016-07-01|-64.0|75.0|-73.75722|-0.16059 +2016-07-01|-64.0|76.0|-74.34869|-0.15911 +2016-07-01|-64.0|77.0|-74.93512|-0.15766 +2016-07-01|-64.0|78.0|-75.51653|-0.15622 +2016-07-01|-64.0|79.0|-76.09297|-0.15482 +2016-07-01|-64.0|80.0|-76.66448|-0.15345 +2016-07-01|-64.0|81.0|-77.23111|-0.15212 +2016-07-01|-64.0|82.0|-77.79288|-0.15083 +2016-07-01|-64.0|83.0|-78.34984|-0.14959 +2016-07-01|-64.0|84.0|-78.90203|-0.1484 +2016-07-01|-64.0|85.0|-79.44948|-0.14727 +2016-07-01|-64.0|86.0|-79.99223|-0.14621 +2016-07-01|-64.0|87.0|-80.53031|-0.14522 +2016-07-01|-64.0|88.0|-81.06375|-0.14431 +2016-07-01|-64.0|89.0|-81.59257|-0.14347 +2016-07-01|-64.0|90.0|-82.11681|-0.14273 +2016-07-01|-64.0|91.0|-82.63648|-0.14208 +2016-07-01|-64.0|92.0|-83.1516|-0.14154 +2016-07-01|-64.0|93.0|-83.66218|-0.1411 +2016-07-01|-64.0|94.0|-84.16823|-0.14079 +2016-07-01|-64.0|95.0|-84.66975|-0.14059 +2016-07-01|-64.0|96.0|-85.16673|-0.14053 +2016-07-01|-64.0|97.0|-85.65916|-0.14062 +2016-07-01|-64.0|98.0|-86.14703|-0.14085 +2016-07-01|-64.0|99.0|-86.6303|-0.14124 +2016-07-01|-64.0|100.0|-87.10895|-0.14181 +2016-07-01|-64.0|101.0|-87.58292|-0.14256 +2016-07-01|-64.0|102.0|-88.05215|-0.14351 +2016-07-01|-64.0|103.0|-88.51658|-0.14468 +2016-07-01|-64.0|104.0|-88.9761|-0.14607 +2016-07-01|-64.0|105.0|-89.43062|-0.1477 +2016-07-01|-64.0|106.0|-89.88001|-0.1496 +2016-07-01|-64.0|107.0|-90.32411|-0.15179 +2016-07-01|-64.0|108.0|-90.76274|-0.15429 +2016-07-01|-64.0|109.0|-91.19569|-0.15714 +2016-07-01|-64.0|110.0|-91.62269|-0.16036 +2016-07-01|-64.0|111.0|-92.04345|-0.16399 +2016-07-01|-64.0|112.0|-92.45759|-0.16808 +2016-07-01|-64.0|113.0|-92.86469|-0.17268 +2016-07-01|-64.0|114.0|-93.26421|-0.17784 +2016-07-01|-64.0|115.0|-93.65553|-0.18365 +2016-07-01|-64.0|116.0|-94.03789|-0.19018 +2016-07-01|-64.0|117.0|-94.41034|-0.19753 +2016-07-01|-64.0|118.0|-94.77173|-0.20584 +2016-07-01|-64.0|119.0|-95.12063|-0.21524 +2016-07-01|-64.0|120.0|-95.45525|-0.22592 +2016-07-01|-64.0|121.0|-95.77328|-0.23811 +2016-07-01|-64.0|122.0|-96.07178|-0.2521 +2016-07-01|-64.0|123.0|-96.3469|-0.26827 +2016-07-01|-64.0|124.0|-96.59348|-0.28707 +2016-07-01|-64.0|125.0|-96.80451|-0.30916 +2016-07-01|-64.0|126.0|-96.97019|-0.33536 +2016-07-01|-64.0|127.0|-97.07642|-0.36683 +2016-07-01|-64.0|128.0|-97.10217|-0.40519 +2016-07-01|-64.0|129.0|-97.01462|-0.45273 +2016-07-01|-64.0|130.0|-96.75961|-0.51282 +2016-07-01|-64.0|131.0|-96.24114|-0.59034 +2016-07-01|-64.0|132.0|-95.27135|-0.69192 +2016-07-01|-64.0|133.0|-93.42784|-0.82242 +2016-07-01|-64.0|134.0|-89.53166|-0.947 +2016-07-01|-64.0|135.0|-78.77681|-0.49827 +2016-07-01|-64.0|136.0|-26.02865|10.85628 +2016-07-01|-64.0|137.0|45.58788|6.39321 +2016-07-01|-64.0|138.0|59.95492|2.75135 +2016-07-01|-64.0|139.0|64.67631|1.67118 +2016-07-01|-64.0|140.0|66.83157|1.18812 +2016-07-01|-64.0|141.0|67.9586|0.91997 +2016-07-01|-64.0|142.0|68.5743|0.75101 +2016-07-01|-64.0|143.0|68.8998|0.6354 +2016-07-01|-64.0|144.0|69.04524|0.55163 +2016-07-01|-64.0|145.0|69.07158|0.48831 +2016-07-01|-64.0|146.0|69.01526|0.43887 +2016-07-01|-64.0|147.0|68.8994|0.39927 +2016-07-01|-64.0|148.0|68.73937|0.36689 +2016-07-01|-64.0|149.0|68.54578|0.33997 +2016-07-01|-64.0|150.0|68.3262|0.31726 +2016-07-01|-64.0|151.0|68.08618|0.29786 +2016-07-01|-64.0|152.0|67.82986|0.28113 +2016-07-01|-64.0|153.0|67.56042|0.26655 +2016-07-01|-64.0|154.0|67.28033|0.25375 +2016-07-01|-64.0|155.0|66.99153|0.24242 +2016-07-01|-64.0|156.0|66.6956|0.23233 +2016-07-01|-64.0|157.0|66.3938|0.22328 +2016-07-01|-64.0|158.0|66.08718|0.21512 +2016-07-01|-64.0|159.0|65.7766|0.20773 +2016-07-01|-64.0|160.0|65.4628|0.20099 +2016-07-01|-64.0|161.0|65.14638|0.19482 +2016-07-01|-64.0|162.0|64.82788|0.18914 +2016-07-01|-64.0|163.0|64.50776|0.18388 +2016-07-01|-64.0|164.0|64.18641|0.179 +2016-07-01|-64.0|165.0|63.86418|0.17444 +2016-07-01|-64.0|166.0|63.54139|0.17017 +2016-07-01|-64.0|167.0|63.2183|0.16615 +2016-07-01|-64.0|168.0|62.89517|0.16235 +2016-07-01|-64.0|169.0|62.57221|0.15874 +2016-07-01|-64.0|170.0|62.24964|0.15529 +2016-07-01|-64.0|171.0|61.92764|0.15199 +2016-07-01|-64.0|172.0|61.60637|0.14882 +2016-07-01|-64.0|173.0|61.28601|0.14577 +2016-07-01|-64.0|174.0|60.96668|0.1428 +2016-07-01|-64.0|175.0|60.64854|0.13993 +2016-07-01|-64.0|176.0|60.33171|0.13712 +2016-07-01|-64.0|177.0|60.01632|0.13438 +2016-07-01|-64.0|178.0|59.70246|0.13169 +2016-07-01|-64.0|179.0|59.39025|0.12905 +2016-07-01|-64.0|-1.0|-19.18|-0.07091 +2016-07-01|-64.0|-2.0|-18.54684|-0.06684 +2016-07-01|-64.0|-3.0|-17.92231|-0.06283 +2016-07-01|-64.0|-4.0|-17.30642|-0.0589 +2016-07-01|-64.0|-5.0|-16.69912|-0.05506 +2016-07-01|-64.0|-6.0|-16.10033|-0.05132 +2016-07-01|-64.0|-7.0|-15.50996|-0.04768 +2016-07-01|-64.0|-8.0|-14.92786|-0.04416 +2016-07-01|-64.0|-9.0|-14.35387|-0.04077 +2016-07-01|-64.0|-10.0|-13.7878|-0.0375 +2016-07-01|-64.0|-11.0|-13.22941|-0.03438 +2016-07-01|-64.0|-12.0|-12.67845|-0.03141 +2016-07-01|-64.0|-13.0|-12.13464|-0.02859 +2016-07-01|-64.0|-14.0|-11.59765|-0.02594 +2016-07-01|-64.0|-15.0|-11.06715|-0.02345 +2016-07-01|-64.0|-16.0|-10.54278|-0.02113 +2016-07-01|-64.0|-17.0|-10.02416|-0.01898 +2016-07-01|-64.0|-18.0|-9.51086|-0.01702 +2016-07-01|-64.0|-19.0|-9.00249|-0.01523 +2016-07-01|-64.0|-20.0|-8.49858|-0.01363 +2016-07-01|-64.0|-21.0|-7.99868|-0.01221 +2016-07-01|-64.0|-22.0|-7.50233|-0.01098 +2016-07-01|-64.0|-23.0|-7.00904|-0.00993 +2016-07-01|-64.0|-24.0|-6.51833|-0.00906 +2016-07-01|-64.0|-25.0|-6.02972|-0.00837 +2016-07-01|-64.0|-26.0|-5.54269|-0.00786 +2016-07-01|-64.0|-27.0|-5.05677|-0.00752 +2016-07-01|-64.0|-28.0|-4.57145|-0.00735 +2016-07-01|-64.0|-29.0|-4.08626|-0.00735 +2016-07-01|-64.0|-30.0|-3.60071|-0.00751 +2016-07-01|-64.0|-31.0|-3.11433|-0.00782 +2016-07-01|-64.0|-32.0|-2.62667|-0.00827 +2016-07-01|-64.0|-33.0|-2.13729|-0.00887 +2016-07-01|-64.0|-34.0|-1.64575|-0.00959 +2016-07-01|-64.0|-35.0|-1.15165|-0.01044 +2016-07-01|-64.0|-36.0|-0.6546|-0.0114 +2016-07-01|-64.0|-37.0|-0.15424|-0.01247 +2016-07-01|-64.0|-38.0|0.34978|-0.01364 +2016-07-01|-64.0|-39.0|0.85776|-0.01489 +2016-07-01|-64.0|-40.0|1.37001|-0.01622 +2016-07-01|-64.0|-41.0|1.88678|-0.01762 +2016-07-01|-64.0|-42.0|2.4083|-0.01907 +2016-07-01|-64.0|-43.0|2.93477|-0.02057 +2016-07-01|-64.0|-44.0|3.46637|-0.02211 +2016-07-01|-64.0|-45.0|4.00324|-0.02368 +2016-07-01|-64.0|-46.0|4.54549|-0.02527 +2016-07-01|-64.0|-47.0|5.09318|-0.02687 +2016-07-01|-64.0|-48.0|5.64638|-0.02846 +2016-07-01|-64.0|-49.0|6.20509|-0.03005 +2016-07-01|-64.0|-50.0|6.76929|-0.03163 +2016-07-01|-64.0|-51.0|7.33894|-0.03317 +2016-07-01|-64.0|-52.0|7.91396|-0.03469 +2016-07-01|-64.0|-53.0|8.49424|-0.03616 +2016-07-01|-64.0|-54.0|9.07964|-0.03759 +2016-07-01|-64.0|-55.0|9.67|-0.03896 +2016-07-01|-64.0|-56.0|10.26513|-0.04027 +2016-07-01|-64.0|-57.0|10.86481|-0.04152 +2016-07-01|-64.0|-58.0|11.4688|-0.04269 +2016-07-01|-64.0|-59.0|12.07683|-0.04379 +2016-07-01|-64.0|-60.0|12.68862|-0.04481 +2016-07-01|-64.0|-61.0|13.30386|-0.04575 +2016-07-01|-64.0|-62.0|13.92223|-0.04661 +2016-07-01|-64.0|-63.0|14.54339|-0.04737 +2016-07-01|-64.0|-64.0|15.16697|-0.04805 +2016-07-01|-64.0|-65.0|15.7926|-0.04863 +2016-07-01|-64.0|-66.0|16.41991|-0.04912 +2016-07-01|-64.0|-67.0|17.0485|-0.04952 +2016-07-01|-64.0|-68.0|17.67796|-0.04983 +2016-07-01|-64.0|-69.0|18.30789|-0.05004 +2016-07-01|-64.0|-70.0|18.93787|-0.05017 +2016-07-01|-64.0|-71.0|19.56748|-0.0502 +2016-07-01|-64.0|-72.0|20.19629|-0.05015 +2016-07-01|-64.0|-73.0|20.82389|-0.05 +2016-07-01|-64.0|-74.0|21.44985|-0.04978 +2016-07-01|-64.0|-75.0|22.07376|-0.04947 +2016-07-01|-64.0|-76.0|22.69519|-0.04908 +2016-07-01|-64.0|-77.0|23.31373|-0.04862 +2016-07-01|-64.0|-78.0|23.92898|-0.04809 +2016-07-01|-64.0|-79.0|24.54053|-0.04748 +2016-07-01|-64.0|-80.0|25.14801|-0.04681 +2016-07-01|-64.0|-81.0|25.75102|-0.04608 +2016-07-01|-64.0|-82.0|26.3492|-0.04529 +2016-07-01|-64.0|-83.0|26.94218|-0.04445 +2016-07-01|-64.0|-84.0|27.52963|-0.04355 +2016-07-01|-64.0|-85.0|28.1112|-0.04261 +2016-07-01|-64.0|-86.0|28.68659|-0.04162 +2016-07-01|-64.0|-87.0|29.25548|-0.04059 +2016-07-01|-64.0|-88.0|29.8176|-0.03953 +2016-07-01|-64.0|-89.0|30.37265|-0.03843 +2016-07-01|-64.0|-90.0|30.9204|-0.03731 +2016-07-01|-64.0|-91.0|31.46059|-0.03616 +2016-07-01|-64.0|-92.0|31.99301|-0.03498 +2016-07-01|-64.0|-93.0|32.51746|-0.03379 +2016-07-01|-64.0|-94.0|33.03375|-0.03257 +2016-07-01|-64.0|-95.0|33.54171|-0.03135 +2016-07-01|-64.0|-96.0|34.04119|-0.03011 +2016-07-01|-64.0|-97.0|34.53207|-0.02886 +2016-07-01|-64.0|-98.0|35.01423|-0.0276 +2016-07-01|-64.0|-99.0|35.48758|-0.02633 +2016-07-01|-64.0|-100.0|35.95205|-0.02506 +2016-07-01|-64.0|-101.0|36.40759|-0.02379 +2016-07-01|-64.0|-102.0|36.85416|-0.02251 +2016-07-01|-64.0|-103.0|37.29175|-0.02123 +2016-07-01|-64.0|-104.0|37.72035|-0.01995 +2016-07-01|-64.0|-105.0|38.14001|-0.01867 +2016-07-01|-64.0|-106.0|38.55075|-0.01738 +2016-07-01|-64.0|-107.0|38.95263|-0.0161 +2016-07-01|-64.0|-108.0|39.34574|-0.01482 +2016-07-01|-64.0|-109.0|39.73017|-0.01353 +2016-07-01|-64.0|-110.0|40.10603|-0.01224 +2016-07-01|-64.0|-111.0|40.47346|-0.01095 +2016-07-01|-64.0|-112.0|40.83261|-0.00966 +2016-07-01|-64.0|-113.0|41.18363|-0.00836 +2016-07-01|-64.0|-114.0|41.5267|-0.00705 +2016-07-01|-64.0|-115.0|41.86203|-0.00574 +2016-07-01|-64.0|-116.0|42.18983|-0.00442 +2016-07-01|-64.0|-117.0|42.5103|-0.0031 +2016-07-01|-64.0|-118.0|42.8237|-0.00176 +2016-07-01|-64.0|-119.0|43.13026|-4.0E-4 +2016-07-01|-64.0|-120.0|43.43025|9.6E-4 +2016-07-01|-64.0|-121.0|43.72394|0.00235 +2016-07-01|-64.0|-122.0|44.0116|0.00374 +2016-07-01|-64.0|-123.0|44.29353|0.00516 +2016-07-01|-64.0|-124.0|44.57002|0.0066 +2016-07-01|-64.0|-125.0|44.84137|0.00806 +2016-07-01|-64.0|-126.0|45.1079|0.00955 +2016-07-01|-64.0|-127.0|45.3699|0.01106 +2016-07-01|-64.0|-128.0|45.6277|0.01259 +2016-07-01|-64.0|-129.0|45.88162|0.01416 +2016-07-01|-64.0|-130.0|46.13197|0.01575 +2016-07-01|-64.0|-131.0|46.37906|0.01737 +2016-07-01|-64.0|-132.0|46.62323|0.01902 +2016-07-01|-64.0|-133.0|46.86478|0.0207 +2016-07-01|-64.0|-134.0|47.10402|0.02242 +2016-07-01|-64.0|-135.0|47.34125|0.02416 +2016-07-01|-64.0|-136.0|47.5768|0.02594 +2016-07-01|-64.0|-137.0|47.81093|0.02776 +2016-07-01|-64.0|-138.0|48.04395|0.0296 +2016-07-01|-64.0|-139.0|48.27614|0.03148 +2016-07-01|-64.0|-140.0|48.50776|0.03339 +2016-07-01|-64.0|-141.0|48.73908|0.03534 +2016-07-01|-64.0|-142.0|48.97036|0.03732 +2016-07-01|-64.0|-143.0|49.20182|0.03932 +2016-07-01|-64.0|-144.0|49.43371|0.04136 +2016-07-01|-64.0|-145.0|49.66623|0.04343 +2016-07-01|-64.0|-146.0|49.89961|0.04553 +2016-07-01|-64.0|-147.0|50.13403|0.04766 +2016-07-01|-64.0|-148.0|50.36968|0.04982 +2016-07-01|-64.0|-149.0|50.60673|0.052 +2016-07-01|-64.0|-150.0|50.84533|0.05421 +2016-07-01|-64.0|-151.0|51.08565|0.05644 +2016-07-01|-64.0|-152.0|51.3278|0.05869 +2016-07-01|-64.0|-153.0|51.57191|0.06096 +2016-07-01|-64.0|-154.0|51.8181|0.06326 +2016-07-01|-64.0|-155.0|52.06647|0.06557 +2016-07-01|-64.0|-156.0|52.31709|0.0679 +2016-07-01|-64.0|-157.0|52.57006|0.07024 +2016-07-01|-64.0|-158.0|52.82543|0.0726 +2016-07-01|-64.0|-159.0|53.08327|0.07497 +2016-07-01|-64.0|-160.0|53.34362|0.07735 +2016-07-01|-64.0|-161.0|53.60652|0.07974 +2016-07-01|-64.0|-162.0|53.87199|0.08213 +2016-07-01|-64.0|-163.0|54.14007|0.08454 +2016-07-01|-64.0|-164.0|54.41075|0.08695 +2016-07-01|-64.0|-165.0|54.68405|0.08937 +2016-07-01|-64.0|-166.0|54.95996|0.09179 +2016-07-01|-64.0|-167.0|55.23847|0.09422 +2016-07-01|-64.0|-168.0|55.51957|0.09665 +2016-07-01|-64.0|-169.0|55.80322|0.09909 +2016-07-01|-64.0|-170.0|56.08941|0.10153 +2016-07-01|-64.0|-171.0|56.37808|0.10397 +2016-07-01|-64.0|-172.0|56.66921|0.10642 +2016-07-01|-64.0|-173.0|56.96275|0.10888 +2016-07-01|-64.0|-174.0|57.25864|0.11134 +2016-07-01|-64.0|-175.0|57.55682|0.11382 +2016-07-01|-64.0|-176.0|57.85724|0.11631 +2016-07-01|-64.0|-177.0|58.15982|0.11881 +2016-07-01|-64.0|-178.0|58.46449|0.12133 +2016-07-01|-64.0|-179.0|58.77117|0.12388 +2016-07-01|-65.0|0.0|-19.82|-0.07727 +2016-07-01|-65.0|1.0|-20.47978|-0.08122 +2016-07-01|-65.0|2.0|-21.14751|-0.0852 +2016-07-01|-65.0|3.0|-21.82309|-0.08921 +2016-07-01|-65.0|4.0|-22.5064|-0.09323 +2016-07-01|-65.0|5.0|-23.19729|-0.09726 +2016-07-01|-65.0|6.0|-23.89558|-0.10127 +2016-07-01|-65.0|7.0|-24.6011|-0.10528 +2016-07-01|-65.0|8.0|-25.31362|-0.10926 +2016-07-01|-65.0|9.0|-26.03292|-0.11321 +2016-07-01|-65.0|10.0|-26.75875|-0.11712 +2016-07-01|-65.0|11.0|-27.49084|-0.12098 +2016-07-01|-65.0|12.0|-28.22892|-0.12479 +2016-07-01|-65.0|13.0|-28.97269|-0.12853 +2016-07-01|-65.0|14.0|-29.72186|-0.1322 +2016-07-01|-65.0|15.0|-30.47611|-0.13579 +2016-07-01|-65.0|16.0|-31.23512|-0.1393 +2016-07-01|-65.0|17.0|-31.99856|-0.14272 +2016-07-01|-65.0|18.0|-32.7661|-0.14604 +2016-07-01|-65.0|19.0|-33.5374|-0.14927 +2016-07-01|-65.0|20.0|-34.31211|-0.15239 +2016-07-01|-65.0|21.0|-35.08991|-0.1554 +2016-07-01|-65.0|22.0|-35.87044|-0.1583 +2016-07-01|-65.0|23.0|-36.65336|-0.16108 +2016-07-01|-65.0|24.0|-37.43834|-0.16375 +2016-07-01|-65.0|25.0|-38.22503|-0.16629 +2016-07-01|-65.0|26.0|-39.0131|-0.16871 +2016-07-01|-65.0|27.0|-39.80224|-0.17101 +2016-07-01|-65.0|28.0|-40.5921|-0.17318 +2016-07-01|-65.0|29.0|-41.38239|-0.17523 +2016-07-01|-65.0|30.0|-42.17279|-0.17715 +2016-07-01|-65.0|31.0|-42.963|-0.17895 +2016-07-01|-65.0|32.0|-43.75274|-0.18061 +2016-07-01|-65.0|33.0|-44.54171|-0.18216 +2016-07-01|-65.0|34.0|-45.32965|-0.18358 +2016-07-01|-65.0|35.0|-46.1163|-0.18487 +2016-07-01|-65.0|36.0|-46.9014|-0.18605 +2016-07-01|-65.0|37.0|-47.6847|-0.1871 +2016-07-01|-65.0|38.0|-48.46599|-0.18804 +2016-07-01|-65.0|39.0|-49.24503|-0.18886 +2016-07-01|-65.0|40.0|-50.02163|-0.18957 +2016-07-01|-65.0|41.0|-50.79557|-0.19017 +2016-07-01|-65.0|42.0|-51.56668|-0.19066 +2016-07-01|-65.0|43.0|-52.33477|-0.19104 +2016-07-01|-65.0|44.0|-53.09968|-0.19132 +2016-07-01|-65.0|45.0|-53.86125|-0.1915 +2016-07-01|-65.0|46.0|-54.61935|-0.19159 +2016-07-01|-65.0|47.0|-55.37383|-0.19158 +2016-07-01|-65.0|48.0|-56.12458|-0.19148 +2016-07-01|-65.0|49.0|-56.87148|-0.19129 +2016-07-01|-65.0|50.0|-57.61443|-0.19103 +2016-07-01|-65.0|51.0|-58.35334|-0.19068 +2016-07-01|-65.0|52.0|-59.08813|-0.19026 +2016-07-01|-65.0|53.0|-59.81872|-0.18976 +2016-07-01|-65.0|54.0|-60.54505|-0.1892 +2016-07-01|-65.0|55.0|-61.26706|-0.18857 +2016-07-01|-65.0|56.0|-61.98472|-0.18787 +2016-07-01|-65.0|57.0|-62.69798|-0.18712 +2016-07-01|-65.0|58.0|-63.40682|-0.18632 +2016-07-01|-65.0|59.0|-64.11121|-0.18547 +2016-07-01|-65.0|60.0|-64.81115|-0.18457 +2016-07-01|-65.0|61.0|-65.50663|-0.18362 +2016-07-01|-65.0|62.0|-66.19766|-0.18264 +2016-07-01|-65.0|63.0|-66.88424|-0.18162 +2016-07-01|-65.0|64.0|-67.56639|-0.18058 +2016-07-01|-65.0|65.0|-68.24413|-0.1795 +2016-07-01|-65.0|66.0|-68.91751|-0.1784 +2016-07-01|-65.0|67.0|-69.58654|-0.17729 +2016-07-01|-65.0|68.0|-70.25129|-0.17616 +2016-07-01|-65.0|69.0|-70.91179|-0.17501 +2016-07-01|-65.0|70.0|-71.5681|-0.17387 +2016-07-01|-65.0|71.0|-72.22028|-0.17272 +2016-07-01|-65.0|72.0|-72.86839|-0.17157 +2016-07-01|-65.0|73.0|-73.51252|-0.17043 +2016-07-01|-65.0|74.0|-74.15272|-0.1693 +2016-07-01|-65.0|75.0|-74.78908|-0.16819 +2016-07-01|-65.0|76.0|-75.4217|-0.1671 +2016-07-01|-65.0|77.0|-76.05065|-0.16604 +2016-07-01|-65.0|78.0|-76.67603|-0.16501 +2016-07-01|-65.0|79.0|-77.29795|-0.16401 +2016-07-01|-65.0|80.0|-77.9165|-0.16305 +2016-07-01|-65.0|81.0|-78.53181|-0.16214 +2016-07-01|-65.0|82.0|-79.14397|-0.16129 +2016-07-01|-65.0|83.0|-79.75311|-0.16049 +2016-07-01|-65.0|84.0|-80.35936|-0.15975 +2016-07-01|-65.0|85.0|-80.96286|-0.15908 +2016-07-01|-65.0|86.0|-81.56372|-0.15849 +2016-07-01|-65.0|87.0|-82.16211|-0.15798 +2016-07-01|-65.0|88.0|-82.75817|-0.15756 +2016-07-01|-65.0|89.0|-83.35207|-0.15724 +2016-07-01|-65.0|90.0|-83.94396|-0.15702 +2016-07-01|-65.0|91.0|-84.53404|-0.15691 +2016-07-01|-65.0|92.0|-85.12248|-0.15692 +2016-07-01|-65.0|93.0|-85.70949|-0.15706 +2016-07-01|-65.0|94.0|-86.29527|-0.15733 +2016-07-01|-65.0|95.0|-86.88007|-0.15776 +2016-07-01|-65.0|96.0|-87.46411|-0.15834 +2016-07-01|-65.0|97.0|-88.04767|-0.15909 +2016-07-01|-65.0|98.0|-88.63103|-0.16002 +2016-07-01|-65.0|99.0|-89.21449|-0.16115 +2016-07-01|-65.0|100.0|-89.79839|-0.16248 +2016-07-01|-65.0|101.0|-90.38309|-0.16405 +2016-07-01|-65.0|102.0|-90.969|-0.16586 +2016-07-01|-65.0|103.0|-91.55655|-0.16793 +2016-07-01|-65.0|104.0|-92.14623|-0.17029 +2016-07-01|-65.0|105.0|-92.73858|-0.17297 +2016-07-01|-65.0|106.0|-93.33421|-0.17599 +2016-07-01|-65.0|107.0|-93.93378|-0.17938 +2016-07-01|-65.0|108.0|-94.53807|-0.18318 +2016-07-01|-65.0|109.0|-95.14793|-0.18744 +2016-07-01|-65.0|110.0|-95.76434|-0.1922 +2016-07-01|-65.0|111.0|-96.38842|-0.19752 +2016-07-01|-65.0|112.0|-97.02146|-0.20347 +2016-07-01|-65.0|113.0|-97.66495|-0.21013 +2016-07-01|-65.0|114.0|-98.32064|-0.21758 +2016-07-01|-65.0|115.0|-98.99055|-0.22595 +2016-07-01|-65.0|116.0|-99.67711|-0.23537 +2016-07-01|-65.0|117.0|-100.38318|-0.24599 +2016-07-01|-65.0|118.0|-101.11221|-0.25802 +2016-07-01|-65.0|119.0|-101.86838|-0.2717 +2016-07-01|-65.0|120.0|-102.65682|-0.28734 +2016-07-01|-65.0|121.0|-103.48387|-0.30533 +2016-07-01|-65.0|122.0|-104.35751|-0.32616 +2016-07-01|-65.0|123.0|-105.28785|-0.35048 +2016-07-01|-65.0|124.0|-106.28797|-0.37914 +2016-07-01|-65.0|125.0|-107.37506|-0.4133 +2016-07-01|-65.0|126.0|-108.57216|-0.45453 +2016-07-01|-65.0|127.0|-109.91083|-0.50506 +2016-07-01|-65.0|128.0|-111.43548|-0.56815 +2016-07-01|-65.0|129.0|-113.21052|-0.64862 +2016-07-01|-65.0|130.0|-115.33275|-0.75399 +2016-07-01|-65.0|131.0|-117.95391|-0.8964 +2016-07-01|-65.0|132.0|-121.32411|-1.09637 +2016-07-01|-65.0|133.0|-125.8804|-1.38991 +2016-07-01|-65.0|134.0|-132.43686|-1.84088 +2016-07-01|-65.0|135.0|-142.58876|-2.54678 +2016-07-01|-65.0|136.0|-159.30806|-3.50712 +2016-07-01|-65.0|137.0|174.4873|-3.87799 +2016-07-01|-65.0|138.0|144.75726|-2.44442 +2016-07-01|-65.0|139.0|122.95376|-0.89736 +2016-07-01|-65.0|140.0|109.6995|-0.15636 +2016-07-01|-65.0|141.0|101.4704|0.14156 +2016-07-01|-65.0|142.0|95.97871|0.25886 +2016-07-01|-65.0|143.0|92.0543|0.30235 +2016-07-01|-65.0|144.0|89.08877|0.31423 +2016-07-01|-65.0|145.0|86.74582|0.31214 +2016-07-01|-65.0|146.0|84.82761|0.30389 +2016-07-01|-65.0|147.0|83.21123|0.29313 +2016-07-01|-65.0|148.0|81.81668|0.28163 +2016-07-01|-65.0|149.0|80.58986|0.27022 +2016-07-01|-65.0|150.0|79.4929|0.2593 +2016-07-01|-65.0|151.0|78.49858|0.24904 +2016-07-01|-65.0|152.0|77.58684|0.2395 +2016-07-01|-65.0|153.0|76.74258|0.23067 +2016-07-01|-65.0|154.0|75.95423|0.22252 +2016-07-01|-65.0|155.0|75.21279|0.21498 +2016-07-01|-65.0|156.0|74.51113|0.20802 +2016-07-01|-65.0|157.0|73.84356|0.20158 +2016-07-01|-65.0|158.0|73.20547|0.1956 +2016-07-01|-65.0|159.0|72.5931|0.19004 +2016-07-01|-65.0|160.0|72.00333|0.18486 +2016-07-01|-65.0|161.0|71.4336|0.18001 +2016-07-01|-65.0|162.0|70.88172|0.17546 +2016-07-01|-65.0|163.0|70.34589|0.17118 +2016-07-01|-65.0|164.0|69.82454|0.16714 +2016-07-01|-65.0|165.0|69.31636|0.16331 +2016-07-01|-65.0|166.0|68.82021|0.15967 +2016-07-01|-65.0|167.0|68.33512|0.1562 +2016-07-01|-65.0|168.0|67.86023|0.15288 +2016-07-01|-65.0|169.0|67.39483|0.14969 +2016-07-01|-65.0|170.0|66.93827|0.14661 +2016-07-01|-65.0|171.0|66.48998|0.14364 +2016-07-01|-65.0|172.0|66.04948|0.14075 +2016-07-01|-65.0|173.0|65.61634|0.13795 +2016-07-01|-65.0|174.0|65.19018|0.13522 +2016-07-01|-65.0|175.0|64.77066|0.13254 +2016-07-01|-65.0|176.0|64.35748|0.12992 +2016-07-01|-65.0|177.0|63.95039|0.12734 +2016-07-01|-65.0|178.0|63.54913|0.1248 +2016-07-01|-65.0|179.0|63.15351|0.12229 +2016-07-01|-65.0|-1.0|-19.16825|-0.07336 +2016-07-01|-65.0|-2.0|-18.52457|-0.06951 +2016-07-01|-65.0|-3.0|-17.88897|-0.06571 +2016-07-01|-65.0|-4.0|-17.26146|-0.06199 +2016-07-01|-65.0|-5.0|-16.64201|-0.05834 +2016-07-01|-65.0|-6.0|-16.03053|-0.05478 +2016-07-01|-65.0|-7.0|-15.42695|-0.05132 +2016-07-01|-65.0|-8.0|-14.83115|-0.04797 +2016-07-01|-65.0|-9.0|-14.24297|-0.04473 +2016-07-01|-65.0|-10.0|-13.66224|-0.04161 +2016-07-01|-65.0|-11.0|-13.08877|-0.03862 +2016-07-01|-65.0|-12.0|-12.52231|-0.03576 +2016-07-01|-65.0|-13.0|-11.96262|-0.03305 +2016-07-01|-65.0|-14.0|-11.40942|-0.03048 +2016-07-01|-65.0|-15.0|-10.8624|-0.02806 +2016-07-01|-65.0|-16.0|-10.32125|-0.0258 +2016-07-01|-65.0|-17.0|-9.78561|-0.0237 +2016-07-01|-65.0|-18.0|-9.25514|-0.02176 +2016-07-01|-65.0|-19.0|-8.72943|-0.01998 +2016-07-01|-65.0|-20.0|-8.20811|-0.01838 +2016-07-01|-65.0|-21.0|-7.69076|-0.01694 +2016-07-01|-65.0|-22.0|-7.17695|-0.01567 +2016-07-01|-65.0|-23.0|-6.66627|-0.01457 +2016-07-01|-65.0|-24.0|-6.15827|-0.01364 +2016-07-01|-65.0|-25.0|-5.6525|-0.01287 +2016-07-01|-65.0|-26.0|-5.14853|-0.01227 +2016-07-01|-65.0|-27.0|-4.64591|-0.01183 +2016-07-01|-65.0|-28.0|-4.14419|-0.01154 +2016-07-01|-65.0|-29.0|-3.64293|-0.01141 +2016-07-01|-65.0|-30.0|-3.1417|-0.01143 +2016-07-01|-65.0|-31.0|-2.64007|-0.01159 +2016-07-01|-65.0|-32.0|-2.13761|-0.01189 +2016-07-01|-65.0|-33.0|-1.63394|-0.01232 +2016-07-01|-65.0|-34.0|-1.12864|-0.01287 +2016-07-01|-65.0|-35.0|-0.62136|-0.01354 +2016-07-01|-65.0|-36.0|-0.11173|-0.01431 +2016-07-01|-65.0|-37.0|0.40059|-0.01519 +2016-07-01|-65.0|-38.0|0.91591|-0.01616 +2016-07-01|-65.0|-39.0|1.43453|-0.01722 +2016-07-01|-65.0|-40.0|1.95672|-0.01835 +2016-07-01|-65.0|-41.0|2.48272|-0.01955 +2016-07-01|-65.0|-42.0|3.01277|-0.02081 +2016-07-01|-65.0|-43.0|3.54705|-0.02211 +2016-07-01|-65.0|-44.0|4.08573|-0.02346 +2016-07-01|-65.0|-45.0|4.62895|-0.02484 +2016-07-01|-65.0|-46.0|5.17684|-0.02624 +2016-07-01|-65.0|-47.0|5.72946|-0.02766 +2016-07-01|-65.0|-48.0|6.28688|-0.02908 +2016-07-01|-65.0|-49.0|6.84912|-0.0305 +2016-07-01|-65.0|-50.0|7.41618|-0.03192 +2016-07-01|-65.0|-51.0|7.98805|-0.03331 +2016-07-01|-65.0|-52.0|8.56465|-0.03468 +2016-07-01|-65.0|-53.0|9.14591|-0.03602 +2016-07-01|-65.0|-54.0|9.73173|-0.03732 +2016-07-01|-65.0|-55.0|10.32196|-0.03857 +2016-07-01|-65.0|-56.0|10.91645|-0.03978 +2016-07-01|-65.0|-57.0|11.51502|-0.04093 +2016-07-01|-65.0|-58.0|12.11747|-0.04202 +2016-07-01|-65.0|-59.0|12.72357|-0.04305 +2016-07-01|-65.0|-60.0|13.33308|-0.044 +2016-07-01|-65.0|-61.0|13.94573|-0.04489 +2016-07-01|-65.0|-62.0|14.56125|-0.0457 +2016-07-01|-65.0|-63.0|15.17934|-0.04644 +2016-07-01|-65.0|-64.0|15.79968|-0.04709 +2016-07-01|-65.0|-65.0|16.42195|-0.04767 +2016-07-01|-65.0|-66.0|17.04582|-0.04816 +2016-07-01|-65.0|-67.0|17.67094|-0.04857 +2016-07-01|-65.0|-68.0|18.29696|-0.04889 +2016-07-01|-65.0|-69.0|18.92351|-0.04914 +2016-07-01|-65.0|-70.0|19.55022|-0.0493 +2016-07-01|-65.0|-71.0|20.17673|-0.04938 +2016-07-01|-65.0|-72.0|20.80265|-0.04938 +2016-07-01|-65.0|-73.0|21.42761|-0.04929 +2016-07-01|-65.0|-74.0|22.05123|-0.04914 +2016-07-01|-65.0|-75.0|22.67313|-0.0489 +2016-07-01|-65.0|-76.0|23.29294|-0.04859 +2016-07-01|-65.0|-77.0|23.91029|-0.04822 +2016-07-01|-65.0|-78.0|24.52481|-0.04777 +2016-07-01|-65.0|-79.0|25.13613|-0.04726 +2016-07-01|-65.0|-80.0|25.7439|-0.04668 +2016-07-01|-65.0|-81.0|26.34779|-0.04605 +2016-07-01|-65.0|-82.0|26.94744|-0.04536 +2016-07-01|-65.0|-83.0|27.54253|-0.04462 +2016-07-01|-65.0|-84.0|28.13274|-0.04382 +2016-07-01|-65.0|-85.0|28.71776|-0.04298 +2016-07-01|-65.0|-86.0|29.29731|-0.0421 +2016-07-01|-65.0|-87.0|29.87109|-0.04118 +2016-07-01|-65.0|-88.0|30.43885|-0.04022 +2016-07-01|-65.0|-89.0|31.00032|-0.03922 +2016-07-01|-65.0|-90.0|31.55526|-0.0382 +2016-07-01|-65.0|-91.0|32.10345|-0.03714 +2016-07-01|-65.0|-92.0|32.64468|-0.03607 +2016-07-01|-65.0|-93.0|33.17876|-0.03496 +2016-07-01|-65.0|-94.0|33.7055|-0.03384 +2016-07-01|-65.0|-95.0|34.22474|-0.0327 +2016-07-01|-65.0|-96.0|34.73635|-0.03155 +2016-07-01|-65.0|-97.0|35.24019|-0.03038 +2016-07-01|-65.0|-98.0|35.73615|-0.0292 +2016-07-01|-65.0|-99.0|36.22413|-0.02801 +2016-07-01|-65.0|-100.0|36.70406|-0.02681 +2016-07-01|-65.0|-101.0|37.17589|-0.0256 +2016-07-01|-65.0|-102.0|37.63956|-0.02439 +2016-07-01|-65.0|-103.0|38.09506|-0.02317 +2016-07-01|-65.0|-104.0|38.54237|-0.02195 +2016-07-01|-65.0|-105.0|38.98151|-0.02072 +2016-07-01|-65.0|-106.0|39.41251|-0.01949 +2016-07-01|-65.0|-107.0|39.8354|-0.01825 +2016-07-01|-65.0|-108.0|40.25026|-0.01701 +2016-07-01|-65.0|-109.0|40.65715|-0.01577 +2016-07-01|-65.0|-110.0|41.05617|-0.01453 +2016-07-01|-65.0|-111.0|41.44744|-0.01327 +2016-07-01|-65.0|-112.0|41.83107|-0.01202 +2016-07-01|-65.0|-113.0|42.20721|-0.01075 +2016-07-01|-65.0|-114.0|42.57602|-0.00948 +2016-07-01|-65.0|-115.0|42.93766|-0.00821 +2016-07-01|-65.0|-116.0|43.29232|-0.00692 +2016-07-01|-65.0|-117.0|43.6402|-0.00562 +2016-07-01|-65.0|-118.0|43.9815|-0.00432 +2016-07-01|-65.0|-119.0|44.31645|-0.003 +2016-07-01|-65.0|-120.0|44.64528|-0.00166 +2016-07-01|-65.0|-121.0|44.96824|-3.1E-4 +2016-07-01|-65.0|-122.0|45.28557|0.00105 +2016-07-01|-65.0|-123.0|45.59754|0.00244 +2016-07-01|-65.0|-124.0|45.90441|0.00384 +2016-07-01|-65.0|-125.0|46.20648|0.00527 +2016-07-01|-65.0|-126.0|46.50401|0.00671 +2016-07-01|-65.0|-127.0|46.79731|0.00818 +2016-07-01|-65.0|-128.0|47.08665|0.00968 +2016-07-01|-65.0|-129.0|47.37234|0.0112 +2016-07-01|-65.0|-130.0|47.65468|0.01274 +2016-07-01|-65.0|-131.0|47.93396|0.01432 +2016-07-01|-65.0|-132.0|48.21049|0.01592 +2016-07-01|-65.0|-133.0|48.48457|0.01755 +2016-07-01|-65.0|-134.0|48.7565|0.01921 +2016-07-01|-65.0|-135.0|49.02657|0.0209 +2016-07-01|-65.0|-136.0|49.29507|0.02262 +2016-07-01|-65.0|-137.0|49.56231|0.02438 +2016-07-01|-65.0|-138.0|49.82855|0.02616 +2016-07-01|-65.0|-139.0|50.09409|0.02798 +2016-07-01|-65.0|-140.0|50.35919|0.02983 +2016-07-01|-65.0|-141.0|50.62413|0.0317 +2016-07-01|-65.0|-142.0|50.88915|0.03361 +2016-07-01|-65.0|-143.0|51.15452|0.03555 +2016-07-01|-65.0|-144.0|51.42048|0.03752 +2016-07-01|-65.0|-145.0|51.68725|0.03952 +2016-07-01|-65.0|-146.0|51.95508|0.04155 +2016-07-01|-65.0|-147.0|52.22416|0.0436 +2016-07-01|-65.0|-148.0|52.49472|0.04568 +2016-07-01|-65.0|-149.0|52.76695|0.04779 +2016-07-01|-65.0|-150.0|53.04104|0.04992 +2016-07-01|-65.0|-151.0|53.31717|0.05208 +2016-07-01|-65.0|-152.0|53.5955|0.05425 +2016-07-01|-65.0|-153.0|53.87621|0.05645 +2016-07-01|-65.0|-154.0|54.15943|0.05867 +2016-07-01|-65.0|-155.0|54.44533|0.06091 +2016-07-01|-65.0|-156.0|54.73403|0.06316 +2016-07-01|-65.0|-157.0|55.02565|0.06543 +2016-07-01|-65.0|-158.0|55.32033|0.06771 +2016-07-01|-65.0|-159.0|55.61818|0.07001 +2016-07-01|-65.0|-160.0|55.91929|0.07231 +2016-07-01|-65.0|-161.0|56.22378|0.07463 +2016-07-01|-65.0|-162.0|56.53174|0.07695 +2016-07-01|-65.0|-163.0|56.84325|0.07929 +2016-07-01|-65.0|-164.0|57.15842|0.08163 +2016-07-01|-65.0|-165.0|57.47731|0.08397 +2016-07-01|-65.0|-166.0|57.80002|0.08633 +2016-07-01|-65.0|-167.0|58.12661|0.08868 +2016-07-01|-65.0|-168.0|58.45718|0.09104 +2016-07-01|-65.0|-169.0|58.79178|0.09341 +2016-07-01|-65.0|-170.0|59.13051|0.09577 +2016-07-01|-65.0|-171.0|59.47343|0.09814 +2016-07-01|-65.0|-172.0|59.82063|0.10052 +2016-07-01|-65.0|-173.0|60.17219|0.1029 +2016-07-01|-65.0|-174.0|60.5282|0.10528 +2016-07-01|-65.0|-175.0|60.88875|0.10767 +2016-07-01|-65.0|-176.0|61.25394|0.11007 +2016-07-01|-65.0|-177.0|61.62387|0.11248 +2016-07-01|-65.0|-178.0|61.99866|0.11491 +2016-07-01|-65.0|-179.0|62.37844|0.11735 +2016-07-01|-66.0|0.0|-19.83695|-0.07947 +2016-07-01|-66.0|1.0|-20.50593|-0.0832 +2016-07-01|-66.0|2.0|-21.18235|-0.08696 +2016-07-01|-66.0|3.0|-21.86612|-0.09074 +2016-07-01|-66.0|4.0|-22.55713|-0.09453 +2016-07-01|-66.0|5.0|-23.25525|-0.09833 +2016-07-01|-66.0|6.0|-23.96033|-0.10213 +2016-07-01|-66.0|7.0|-24.67219|-0.10591 +2016-07-01|-66.0|8.0|-25.39066|-0.10968 +2016-07-01|-66.0|9.0|-26.11552|-0.11341 +2016-07-01|-66.0|10.0|-26.84655|-0.11711 +2016-07-01|-66.0|11.0|-27.58353|-0.12077 +2016-07-01|-66.0|12.0|-28.32619|-0.12438 +2016-07-01|-66.0|13.0|-29.07429|-0.12793 +2016-07-01|-66.0|14.0|-29.82755|-0.13142 +2016-07-01|-66.0|15.0|-30.58569|-0.13484 +2016-07-01|-66.0|16.0|-31.34843|-0.13819 +2016-07-01|-66.0|17.0|-32.11547|-0.14146 +2016-07-01|-66.0|18.0|-32.88651|-0.14464 +2016-07-01|-66.0|19.0|-33.66125|-0.14773 +2016-07-01|-66.0|20.0|-34.43939|-0.15073 +2016-07-01|-66.0|21.0|-35.22061|-0.15363 +2016-07-01|-66.0|22.0|-36.00461|-0.15644 +2016-07-01|-66.0|23.0|-36.79108|-0.15913 +2016-07-01|-66.0|24.0|-37.57971|-0.16173 +2016-07-01|-66.0|25.0|-38.3702|-0.16421 +2016-07-01|-66.0|26.0|-39.16226|-0.16658 +2016-07-01|-66.0|27.0|-39.95557|-0.16884 +2016-07-01|-66.0|28.0|-40.74986|-0.17099 +2016-07-01|-66.0|29.0|-41.54484|-0.17303 +2016-07-01|-66.0|30.0|-42.34022|-0.17495 +2016-07-01|-66.0|31.0|-43.13574|-0.17675 +2016-07-01|-66.0|32.0|-43.93113|-0.17845 +2016-07-01|-66.0|33.0|-44.72614|-0.18003 +2016-07-01|-66.0|34.0|-45.52051|-0.18149 +2016-07-01|-66.0|35.0|-46.31401|-0.18285 +2016-07-01|-66.0|36.0|-47.10641|-0.18409 +2016-07-01|-66.0|37.0|-47.89749|-0.18522 +2016-07-01|-66.0|38.0|-48.68704|-0.18625 +2016-07-01|-66.0|39.0|-49.47486|-0.18717 +2016-07-01|-66.0|40.0|-50.26076|-0.18799 +2016-07-01|-66.0|41.0|-51.04455|-0.18871 +2016-07-01|-66.0|42.0|-51.82607|-0.18933 +2016-07-01|-66.0|43.0|-52.60516|-0.18985 +2016-07-01|-66.0|44.0|-53.38167|-0.19028 +2016-07-01|-66.0|45.0|-54.15546|-0.19061 +2016-07-01|-66.0|46.0|-54.92641|-0.19086 +2016-07-01|-66.0|47.0|-55.69438|-0.19103 +2016-07-01|-66.0|48.0|-56.45928|-0.19111 +2016-07-01|-66.0|49.0|-57.22102|-0.19111 +2016-07-01|-66.0|50.0|-57.97949|-0.19104 +2016-07-01|-66.0|51.0|-58.73462|-0.1909 +2016-07-01|-66.0|52.0|-59.48635|-0.19068 +2016-07-01|-66.0|53.0|-60.23461|-0.1904 +2016-07-01|-66.0|54.0|-60.97935|-0.19006 +2016-07-01|-66.0|55.0|-61.72055|-0.18966 +2016-07-01|-66.0|56.0|-62.45815|-0.18921 +2016-07-01|-66.0|57.0|-63.19215|-0.1887 +2016-07-01|-66.0|58.0|-63.92253|-0.18815 +2016-07-01|-66.0|59.0|-64.64928|-0.18755 +2016-07-01|-66.0|60.0|-65.37241|-0.18691 +2016-07-01|-66.0|61.0|-66.09193|-0.18623 +2016-07-01|-66.0|62.0|-66.80786|-0.18553 +2016-07-01|-66.0|63.0|-67.52023|-0.18479 +2016-07-01|-66.0|64.0|-68.22907|-0.18403 +2016-07-01|-66.0|65.0|-68.93443|-0.18324 +2016-07-01|-66.0|66.0|-69.63636|-0.18244 +2016-07-01|-66.0|67.0|-70.33493|-0.18162 +2016-07-01|-66.0|68.0|-71.03019|-0.1808 +2016-07-01|-66.0|69.0|-71.72222|-0.17997 +2016-07-01|-66.0|70.0|-72.4111|-0.17914 +2016-07-01|-66.0|71.0|-73.09691|-0.17832 +2016-07-01|-66.0|72.0|-73.77977|-0.1775 +2016-07-01|-66.0|73.0|-74.45977|-0.1767 +2016-07-01|-66.0|74.0|-75.13701|-0.17591 +2016-07-01|-66.0|75.0|-75.81162|-0.17514 +2016-07-01|-66.0|76.0|-76.48373|-0.1744 +2016-07-01|-66.0|77.0|-77.15346|-0.1737 +2016-07-01|-66.0|78.0|-77.82097|-0.17303 +2016-07-01|-66.0|79.0|-78.48639|-0.1724 +2016-07-01|-66.0|80.0|-79.14989|-0.17182 +2016-07-01|-66.0|81.0|-79.81164|-0.17129 +2016-07-01|-66.0|82.0|-80.47182|-0.17082 +2016-07-01|-66.0|83.0|-81.13061|-0.17041 +2016-07-01|-66.0|84.0|-81.78821|-0.17008 +2016-07-01|-66.0|85.0|-82.44484|-0.16982 +2016-07-01|-66.0|86.0|-83.10071|-0.16964 +2016-07-01|-66.0|87.0|-83.75606|-0.16956 +2016-07-01|-66.0|88.0|-84.41116|-0.16957 +2016-07-01|-66.0|89.0|-85.06626|-0.16969 +2016-07-01|-66.0|90.0|-85.72165|-0.16992 +2016-07-01|-66.0|91.0|-86.37764|-0.17028 +2016-07-01|-66.0|92.0|-87.03455|-0.17076 +2016-07-01|-66.0|93.0|-87.69274|-0.17139 +2016-07-01|-66.0|94.0|-88.35258|-0.17216 +2016-07-01|-66.0|95.0|-89.01448|-0.1731 +2016-07-01|-66.0|96.0|-89.67889|-0.17421 +2016-07-01|-66.0|97.0|-90.34627|-0.17551 +2016-07-01|-66.0|98.0|-91.01715|-0.17701 +2016-07-01|-66.0|99.0|-91.69209|-0.17872 +2016-07-01|-66.0|100.0|-92.3717|-0.18067 +2016-07-01|-66.0|101.0|-93.05667|-0.18287 +2016-07-01|-66.0|102.0|-93.74773|-0.18534 +2016-07-01|-66.0|103.0|-94.44571|-0.18811 +2016-07-01|-66.0|104.0|-95.15151|-0.1912 +2016-07-01|-66.0|105.0|-95.86614|-0.19464 +2016-07-01|-66.0|106.0|-96.59072|-0.19846 +2016-07-01|-66.0|107.0|-97.32651|-0.20269 +2016-07-01|-66.0|108.0|-98.07491|-0.20739 +2016-07-01|-66.0|109.0|-98.83751|-0.2126 +2016-07-01|-66.0|110.0|-99.61611|-0.21837 +2016-07-01|-66.0|111.0|-100.41276|-0.22476 +2016-07-01|-66.0|112.0|-101.22978|-0.23184 +2016-07-01|-66.0|113.0|-102.06985|-0.23971 +2016-07-01|-66.0|114.0|-102.93606|-0.24846 +2016-07-01|-66.0|115.0|-103.83199|-0.25821 +2016-07-01|-66.0|116.0|-104.76182|-0.26909 +2016-07-01|-66.0|117.0|-105.73044|-0.28126 +2016-07-01|-66.0|118.0|-106.74365|-0.29493 +2016-07-01|-66.0|119.0|-107.80832|-0.31034 +2016-07-01|-66.0|120.0|-108.93272|-0.32776 +2016-07-01|-66.0|121.0|-110.12679|-0.34756 +2016-07-01|-66.0|122.0|-111.40269|-0.37017 +2016-07-01|-66.0|123.0|-112.77534|-0.39613 +2016-07-01|-66.0|124.0|-114.26326|-0.42613 +2016-07-01|-66.0|125.0|-115.88972|-0.46102 +2016-07-01|-66.0|126.0|-117.68422|-0.50192 +2016-07-01|-66.0|127.0|-119.68467|-0.55021 +2016-07-01|-66.0|128.0|-121.94031|-0.60772 +2016-07-01|-66.0|129.0|-124.51593|-0.67675 +2016-07-01|-66.0|130.0|-127.49775|-0.76025 +2016-07-01|-66.0|131.0|-131.00147|-0.86176 +2016-07-01|-66.0|132.0|-135.18295|-0.98526 +2016-07-01|-66.0|133.0|-140.25043|-1.13414 +2016-07-01|-66.0|134.0|-146.47345|-1.3084 +2016-07-01|-66.0|135.0|-154.1726|-1.49825 +2016-07-01|-66.0|136.0|-163.65282|-1.67258 +2016-07-01|-66.0|137.0|-175.02418|-1.76902 +2016-07-01|-66.0|138.0|172.08176|-1.71106 +2016-07-01|-66.0|139.0|158.65433|-1.47251 +2016-07-01|-66.0|140.0|145.95387|-1.12295 +2016-07-01|-66.0|141.0|134.88036|-0.77101 +2016-07-01|-66.0|142.0|125.70866|-0.48338 +2016-07-01|-66.0|143.0|118.28046|-0.27328 +2016-07-01|-66.0|144.0|112.27997|-0.12796 +2016-07-01|-66.0|145.0|107.39229|-0.0297 +2016-07-01|-66.0|146.0|103.3577|0.03627 +2016-07-01|-66.0|147.0|99.97705|0.08051 +2016-07-01|-66.0|148.0|97.10163|0.11016 +2016-07-01|-66.0|149.0|94.62107|0.12995 +2016-07-01|-66.0|150.0|92.45305|0.14303 +2016-07-01|-66.0|151.0|90.53559|0.15147 +2016-07-01|-66.0|152.0|88.82152|0.1567 +2016-07-01|-66.0|153.0|87.27448|0.15968 +2016-07-01|-66.0|154.0|85.86611|0.16106 +2016-07-01|-66.0|155.0|84.57403|0.16132 +2016-07-01|-66.0|156.0|83.38038|0.16078 +2016-07-01|-66.0|157.0|82.27079|0.15967 +2016-07-01|-66.0|158.0|81.23353|0.15817 +2016-07-01|-66.0|159.0|80.259|0.15638 +2016-07-01|-66.0|160.0|79.33923|0.15439 +2016-07-01|-66.0|161.0|78.4676|0.15228 +2016-07-01|-66.0|162.0|77.63851|0.15008 +2016-07-01|-66.0|163.0|76.84726|0.14783 +2016-07-01|-66.0|164.0|76.08983|0.14554 +2016-07-01|-66.0|165.0|75.3628|0.14324 +2016-07-01|-66.0|166.0|74.66319|0.14094 +2016-07-01|-66.0|167.0|73.98848|0.13864 +2016-07-01|-66.0|168.0|73.33643|0.13636 +2016-07-01|-66.0|169.0|72.70512|0.13408 +2016-07-01|-66.0|170.0|72.09285|0.13182 +2016-07-01|-66.0|171.0|71.49814|0.12957 +2016-07-01|-66.0|172.0|70.91968|0.12734 +2016-07-01|-66.0|173.0|70.3563|0.12512 +2016-07-01|-66.0|174.0|69.80697|0.12291 +2016-07-01|-66.0|175.0|69.27078|0.1207 +2016-07-01|-66.0|176.0|68.74691|0.11851 +2016-07-01|-66.0|177.0|68.23461|0.11632 +2016-07-01|-66.0|178.0|67.73324|0.11414 +2016-07-01|-66.0|179.0|67.24219|0.11196 +2016-07-01|-66.0|-1.0|-19.17547|-0.07578 +2016-07-01|-66.0|-2.0|-18.52154|-0.07213 +2016-07-01|-66.0|-3.0|-17.87518|-0.06855 +2016-07-01|-66.0|-4.0|-17.23637|-0.06502 +2016-07-01|-66.0|-5.0|-16.60508|-0.06157 +2016-07-01|-66.0|-6.0|-15.98127|-0.0582 +2016-07-01|-66.0|-7.0|-15.36485|-0.05492 +2016-07-01|-66.0|-8.0|-14.75571|-0.05173 +2016-07-01|-66.0|-9.0|-14.15372|-0.04865 +2016-07-01|-66.0|-10.0|-13.55873|-0.04567 +2016-07-01|-66.0|-11.0|-12.97056|-0.04281 +2016-07-01|-66.0|-12.0|-12.38901|-0.04008 +2016-07-01|-66.0|-13.0|-11.81384|-0.03747 +2016-07-01|-66.0|-14.0|-11.24482|-0.03499 +2016-07-01|-66.0|-15.0|-10.68168|-0.03266 +2016-07-01|-66.0|-16.0|-10.12411|-0.03046 +2016-07-01|-66.0|-17.0|-9.57183|-0.02841 +2016-07-01|-66.0|-18.0|-9.02451|-0.02651 +2016-07-01|-66.0|-19.0|-8.48181|-0.02475 +2016-07-01|-66.0|-20.0|-7.94337|-0.02315 +2016-07-01|-66.0|-21.0|-7.40883|-0.02171 +2016-07-01|-66.0|-22.0|-6.87782|-0.02042 +2016-07-01|-66.0|-23.0|-6.34995|-0.01928 +2016-07-01|-66.0|-24.0|-5.82482|-0.0183 +2016-07-01|-66.0|-25.0|-5.30205|-0.01746 +2016-07-01|-66.0|-26.0|-4.78122|-0.01678 +2016-07-01|-66.0|-27.0|-4.26195|-0.01625 +2016-07-01|-66.0|-28.0|-3.74382|-0.01587 +2016-07-01|-66.0|-29.0|-3.22645|-0.01562 +2016-07-01|-66.0|-30.0|-2.70943|-0.01551 +2016-07-01|-66.0|-31.0|-2.19238|-0.01554 +2016-07-01|-66.0|-32.0|-1.67492|-0.01569 +2016-07-01|-66.0|-33.0|-1.15669|-0.01596 +2016-07-01|-66.0|-34.0|-0.63732|-0.01636 +2016-07-01|-66.0|-35.0|-0.11647|-0.01686 +2016-07-01|-66.0|-36.0|0.40617|-0.01746 +2016-07-01|-66.0|-37.0|0.93094|-0.01816 +2016-07-01|-66.0|-38.0|1.45812|-0.01895 +2016-07-01|-66.0|-39.0|1.98798|-0.01982 +2016-07-01|-66.0|-40.0|2.52077|-0.02077 +2016-07-01|-66.0|-41.0|3.05674|-0.02178 +2016-07-01|-66.0|-42.0|3.59609|-0.02285 +2016-07-01|-66.0|-43.0|4.13901|-0.02397 +2016-07-01|-66.0|-44.0|4.68565|-0.02513 +2016-07-01|-66.0|-45.0|5.23617|-0.02633 +2016-07-01|-66.0|-46.0|5.79068|-0.02755 +2016-07-01|-66.0|-47.0|6.34925|-0.02879 +2016-07-01|-66.0|-48.0|6.91197|-0.03005 +2016-07-01|-66.0|-49.0|7.47886|-0.0313 +2016-07-01|-66.0|-50.0|8.04995|-0.03256 +2016-07-01|-66.0|-51.0|8.62522|-0.0338 +2016-07-01|-66.0|-52.0|9.20464|-0.03503 +2016-07-01|-66.0|-53.0|9.78815|-0.03623 +2016-07-01|-66.0|-54.0|10.37566|-0.0374 +2016-07-01|-66.0|-55.0|10.96707|-0.03854 +2016-07-01|-66.0|-56.0|11.56227|-0.03964 +2016-07-01|-66.0|-57.0|12.16108|-0.04069 +2016-07-01|-66.0|-58.0|12.76336|-0.0417 +2016-07-01|-66.0|-59.0|13.36891|-0.04264 +2016-07-01|-66.0|-60.0|13.97752|-0.04353 +2016-07-01|-66.0|-61.0|14.58898|-0.04436 +2016-07-01|-66.0|-62.0|15.20304|-0.04513 +2016-07-01|-66.0|-63.0|15.81944|-0.04583 +2016-07-01|-66.0|-64.0|16.43793|-0.04645 +2016-07-01|-66.0|-65.0|17.05822|-0.04701 +2016-07-01|-66.0|-66.0|17.68002|-0.0475 +2016-07-01|-66.0|-67.0|18.30302|-0.04791 +2016-07-01|-66.0|-68.0|18.92692|-0.04825 +2016-07-01|-66.0|-69.0|19.55141|-0.04851 +2016-07-01|-66.0|-70.0|20.17615|-0.0487 +2016-07-01|-66.0|-71.0|20.80081|-0.04882 +2016-07-01|-66.0|-72.0|21.42507|-0.04886 +2016-07-01|-66.0|-73.0|22.0486|-0.04883 +2016-07-01|-66.0|-74.0|22.67105|-0.04873 +2016-07-01|-66.0|-75.0|23.29209|-0.04857 +2016-07-01|-66.0|-76.0|23.91138|-0.04833 +2016-07-01|-66.0|-77.0|24.5286|-0.04803 +2016-07-01|-66.0|-78.0|25.14341|-0.04766 +2016-07-01|-66.0|-79.0|25.75549|-0.04724 +2016-07-01|-66.0|-80.0|26.36453|-0.04675 +2016-07-01|-66.0|-81.0|26.97019|-0.04621 +2016-07-01|-66.0|-82.0|27.57219|-0.04562 +2016-07-01|-66.0|-83.0|28.17022|-0.04497 +2016-07-01|-66.0|-84.0|28.764|-0.04428 +2016-07-01|-66.0|-85.0|29.35323|-0.04354 +2016-07-01|-66.0|-86.0|29.93766|-0.04275 +2016-07-01|-66.0|-87.0|30.51703|-0.04193 +2016-07-01|-66.0|-88.0|31.09108|-0.04107 +2016-07-01|-66.0|-89.0|31.65958|-0.04018 +2016-07-01|-66.0|-90.0|32.22231|-0.03925 +2016-07-01|-66.0|-91.0|32.77906|-0.0383 +2016-07-01|-66.0|-92.0|33.32963|-0.03732 +2016-07-01|-66.0|-93.0|33.87384|-0.03631 +2016-07-01|-66.0|-94.0|34.41152|-0.03528 +2016-07-01|-66.0|-95.0|34.94251|-0.03423 +2016-07-01|-66.0|-96.0|35.46669|-0.03317 +2016-07-01|-66.0|-97.0|35.98392|-0.03208 +2016-07-01|-66.0|-98.0|36.49409|-0.03099 +2016-07-01|-66.0|-99.0|36.99712|-0.02988 +2016-07-01|-66.0|-100.0|37.49292|-0.02876 +2016-07-01|-66.0|-101.0|37.98143|-0.02762 +2016-07-01|-66.0|-102.0|38.46261|-0.02648 +2016-07-01|-66.0|-103.0|38.93643|-0.02534 +2016-07-01|-66.0|-104.0|39.40286|-0.02418 +2016-07-01|-66.0|-105.0|39.86192|-0.02302 +2016-07-01|-66.0|-106.0|40.31361|-0.02185 +2016-07-01|-66.0|-107.0|40.75798|-0.02067 +2016-07-01|-66.0|-108.0|41.19506|-0.01949 +2016-07-01|-66.0|-109.0|41.62492|-0.0183 +2016-07-01|-66.0|-110.0|42.04764|-0.01711 +2016-07-01|-66.0|-111.0|42.46332|-0.01591 +2016-07-01|-66.0|-112.0|42.87206|-0.0147 +2016-07-01|-66.0|-113.0|43.27397|-0.01349 +2016-07-01|-66.0|-114.0|43.66921|-0.01226 +2016-07-01|-66.0|-115.0|44.05791|-0.01103 +2016-07-01|-66.0|-116.0|44.44024|-0.00979 +2016-07-01|-66.0|-117.0|44.81638|-0.00854 +2016-07-01|-66.0|-118.0|45.1865|-0.00728 +2016-07-01|-66.0|-119.0|45.55082|-0.006 +2016-07-01|-66.0|-120.0|45.90954|-0.00472 +2016-07-01|-66.0|-121.0|46.26287|-0.00341 +2016-07-01|-66.0|-122.0|46.61106|-0.00209 +2016-07-01|-66.0|-123.0|46.95433|-7.6E-4 +2016-07-01|-66.0|-124.0|47.29295|6.0E-4 +2016-07-01|-66.0|-125.0|47.62715|0.00197 +2016-07-01|-66.0|-126.0|47.9572|0.00336 +2016-07-01|-66.0|-127.0|48.28338|0.00478 +2016-07-01|-66.0|-128.0|48.60595|0.00621 +2016-07-01|-66.0|-129.0|48.92519|0.00767 +2016-07-01|-66.0|-130.0|49.24138|0.00916 +2016-07-01|-66.0|-131.0|49.55481|0.01067 +2016-07-01|-66.0|-132.0|49.86576|0.0122 +2016-07-01|-66.0|-133.0|50.17452|0.01377 +2016-07-01|-66.0|-134.0|50.48138|0.01536 +2016-07-01|-66.0|-135.0|50.78662|0.01698 +2016-07-01|-66.0|-136.0|51.09054|0.01862 +2016-07-01|-66.0|-137.0|51.39341|0.0203 +2016-07-01|-66.0|-138.0|51.69552|0.022 +2016-07-01|-66.0|-139.0|51.99715|0.02373 +2016-07-01|-66.0|-140.0|52.29857|0.02549 +2016-07-01|-66.0|-141.0|52.60005|0.02728 +2016-07-01|-66.0|-142.0|52.90187|0.0291 +2016-07-01|-66.0|-143.0|53.20429|0.03095 +2016-07-01|-66.0|-144.0|53.50755|0.03282 +2016-07-01|-66.0|-145.0|53.81192|0.03472 +2016-07-01|-66.0|-146.0|54.11763|0.03665 +2016-07-01|-66.0|-147.0|54.42492|0.0386 +2016-07-01|-66.0|-148.0|54.73403|0.04058 +2016-07-01|-66.0|-149.0|55.04519|0.04258 +2016-07-01|-66.0|-150.0|55.35861|0.0446 +2016-07-01|-66.0|-151.0|55.6745|0.04665 +2016-07-01|-66.0|-152.0|55.99308|0.04871 +2016-07-01|-66.0|-153.0|56.31454|0.0508 +2016-07-01|-66.0|-154.0|56.63909|0.0529 +2016-07-01|-66.0|-155.0|56.96691|0.05502 +2016-07-01|-66.0|-156.0|57.29818|0.05715 +2016-07-01|-66.0|-157.0|57.6331|0.0593 +2016-07-01|-66.0|-158.0|57.97185|0.06146 +2016-07-01|-66.0|-159.0|58.31458|0.06363 +2016-07-01|-66.0|-160.0|58.66149|0.06581 +2016-07-01|-66.0|-161.0|59.01273|0.068 +2016-07-01|-66.0|-162.0|59.36849|0.0702 +2016-07-01|-66.0|-163.0|59.72893|0.0724 +2016-07-01|-66.0|-164.0|60.09422|0.07461 +2016-07-01|-66.0|-165.0|60.46453|0.07682 +2016-07-01|-66.0|-166.0|60.84004|0.07903 +2016-07-01|-66.0|-167.0|61.22094|0.08124 +2016-07-01|-66.0|-168.0|61.6074|0.08345 +2016-07-01|-66.0|-169.0|61.99962|0.08566 +2016-07-01|-66.0|-170.0|62.39779|0.08787 +2016-07-01|-66.0|-171.0|62.80214|0.09007 +2016-07-01|-66.0|-172.0|63.21288|0.09227 +2016-07-01|-66.0|-173.0|63.63024|0.09447 +2016-07-01|-66.0|-174.0|64.05447|0.09667 +2016-07-01|-66.0|-175.0|64.48585|0.09886 +2016-07-01|-66.0|-176.0|64.92467|0.10105 +2016-07-01|-66.0|-177.0|65.37123|0.10323 +2016-07-01|-66.0|-178.0|65.82587|0.10542 +2016-07-01|-66.0|-179.0|66.28897|0.1076 +2016-07-01|-67.0|0.0|-19.87374|-0.08165 +2016-07-01|-67.0|1.0|-20.55178|-0.08516 +2016-07-01|-67.0|2.0|-21.23676|-0.08871 +2016-07-01|-67.0|3.0|-21.92862|-0.09227 +2016-07-01|-67.0|4.0|-22.62725|-0.09584 +2016-07-01|-67.0|5.0|-23.33253|-0.09942 +2016-07-01|-67.0|6.0|-24.04435|-0.103 +2016-07-01|-67.0|7.0|-24.76254|-0.10657 +2016-07-01|-67.0|8.0|-25.48695|-0.11012 +2016-07-01|-67.0|9.0|-26.21738|-0.11365 +2016-07-01|-67.0|10.0|-26.95365|-0.11715 +2016-07-01|-67.0|11.0|-27.69554|-0.12061 +2016-07-01|-67.0|12.0|-28.44285|-0.12403 +2016-07-01|-67.0|13.0|-29.19533|-0.1274 +2016-07-01|-67.0|14.0|-29.95275|-0.13071 +2016-07-01|-67.0|15.0|-30.71487|-0.13397 +2016-07-01|-67.0|16.0|-31.48142|-0.13716 +2016-07-01|-67.0|17.0|-32.25214|-0.14027 +2016-07-01|-67.0|18.0|-33.02678|-0.14331 +2016-07-01|-67.0|19.0|-33.80505|-0.14628 +2016-07-01|-67.0|20.0|-34.58669|-0.14916 +2016-07-01|-67.0|21.0|-35.37142|-0.15195 +2016-07-01|-67.0|22.0|-36.15896|-0.15466 +2016-07-01|-67.0|23.0|-36.94905|-0.15727 +2016-07-01|-67.0|24.0|-37.7414|-0.15978 +2016-07-01|-67.0|25.0|-38.53575|-0.1622 +2016-07-01|-67.0|26.0|-39.33182|-0.16453 +2016-07-01|-67.0|27.0|-40.12935|-0.16675 +2016-07-01|-67.0|28.0|-40.92807|-0.16887 +2016-07-01|-67.0|29.0|-41.72774|-0.17088 +2016-07-01|-67.0|30.0|-42.52809|-0.1728 +2016-07-01|-67.0|31.0|-43.32889|-0.17461 +2016-07-01|-67.0|32.0|-44.12989|-0.17632 +2016-07-01|-67.0|33.0|-44.93086|-0.17793 +2016-07-01|-67.0|34.0|-45.73159|-0.17943 +2016-07-01|-67.0|35.0|-46.53185|-0.18084 +2016-07-01|-67.0|36.0|-47.33143|-0.18214 +2016-07-01|-67.0|37.0|-48.13015|-0.18335 +2016-07-01|-67.0|38.0|-48.9278|-0.18445 +2016-07-01|-67.0|39.0|-49.72421|-0.18547 +2016-07-01|-67.0|40.0|-50.51921|-0.18638 +2016-07-01|-67.0|41.0|-51.31263|-0.18721 +2016-07-01|-67.0|42.0|-52.10433|-0.18795 +2016-07-01|-67.0|43.0|-52.89416|-0.1886 +2016-07-01|-67.0|44.0|-53.68198|-0.18916 +2016-07-01|-67.0|45.0|-54.46767|-0.18964 +2016-07-01|-67.0|46.0|-55.25113|-0.19004 +2016-07-01|-67.0|47.0|-56.03225|-0.19037 +2016-07-01|-67.0|48.0|-56.81092|-0.19062 +2016-07-01|-67.0|49.0|-57.58708|-0.19079 +2016-07-01|-67.0|50.0|-58.36064|-0.1909 +2016-07-01|-67.0|51.0|-59.13154|-0.19095 +2016-07-01|-67.0|52.0|-59.89972|-0.19093 +2016-07-01|-67.0|53.0|-60.66515|-0.19085 +2016-07-01|-67.0|54.0|-61.42777|-0.19072 +2016-07-01|-67.0|55.0|-62.18757|-0.19054 +2016-07-01|-67.0|56.0|-62.94452|-0.1903 +2016-07-01|-67.0|57.0|-63.69863|-0.19002 +2016-07-01|-67.0|58.0|-64.44988|-0.1897 +2016-07-01|-67.0|59.0|-65.19829|-0.18934 +2016-07-01|-67.0|60.0|-65.94387|-0.18894 +2016-07-01|-67.0|61.0|-66.68666|-0.18852 +2016-07-01|-67.0|62.0|-67.42668|-0.18806 +2016-07-01|-67.0|63.0|-68.16398|-0.18758 +2016-07-01|-67.0|64.0|-68.89862|-0.18708 +2016-07-01|-67.0|65.0|-69.63065|-0.18657 +2016-07-01|-67.0|66.0|-70.36015|-0.18604 +2016-07-01|-67.0|67.0|-71.08718|-0.1855 +2016-07-01|-67.0|68.0|-71.81185|-0.18496 +2016-07-01|-67.0|69.0|-72.53424|-0.18442 +2016-07-01|-67.0|70.0|-73.25446|-0.18388 +2016-07-01|-67.0|71.0|-73.97262|-0.18335 +2016-07-01|-67.0|72.0|-74.68884|-0.18284 +2016-07-01|-67.0|73.0|-75.40326|-0.18234 +2016-07-01|-67.0|74.0|-76.11601|-0.18186 +2016-07-01|-67.0|75.0|-76.82724|-0.18141 +2016-07-01|-67.0|76.0|-77.53712|-0.18098 +2016-07-01|-67.0|77.0|-78.24581|-0.1806 +2016-07-01|-67.0|78.0|-78.95349|-0.18025 +2016-07-01|-67.0|79.0|-79.66036|-0.17996 +2016-07-01|-67.0|80.0|-80.36662|-0.17971 +2016-07-01|-67.0|81.0|-81.07248|-0.17952 +2016-07-01|-67.0|82.0|-81.77817|-0.17939 +2016-07-01|-67.0|83.0|-82.48395|-0.17933 +2016-07-01|-67.0|84.0|-83.19005|-0.17935 +2016-07-01|-67.0|85.0|-83.89677|-0.17945 +2016-07-01|-67.0|86.0|-84.60439|-0.17963 +2016-07-01|-67.0|87.0|-85.31322|-0.17991 +2016-07-01|-67.0|88.0|-86.0236|-0.1803 +2016-07-01|-67.0|89.0|-86.73587|-0.18079 +2016-07-01|-67.0|90.0|-87.45041|-0.1814 +2016-07-01|-67.0|91.0|-88.16763|-0.18214 +2016-07-01|-67.0|92.0|-88.88797|-0.18302 +2016-07-01|-67.0|93.0|-89.61188|-0.18404 +2016-07-01|-67.0|94.0|-90.33987|-0.18522 +2016-07-01|-67.0|95.0|-91.07247|-0.18657 +2016-07-01|-67.0|96.0|-91.81027|-0.1881 +2016-07-01|-67.0|97.0|-92.55391|-0.18983 +2016-07-01|-67.0|98.0|-93.30406|-0.19176 +2016-07-01|-67.0|99.0|-94.06147|-0.19392 +2016-07-01|-67.0|100.0|-94.82696|-0.19632 +2016-07-01|-67.0|101.0|-95.60141|-0.19898 +2016-07-01|-67.0|102.0|-96.38579|-0.20192 +2016-07-01|-67.0|103.0|-97.18118|-0.20517 +2016-07-01|-67.0|104.0|-97.98874|-0.20875 +2016-07-01|-67.0|105.0|-98.80979|-0.21268 +2016-07-01|-67.0|106.0|-99.64575|-0.21701 +2016-07-01|-67.0|107.0|-100.49823|-0.22176 +2016-07-01|-67.0|108.0|-101.36901|-0.22697 +2016-07-01|-67.0|109.0|-102.26008|-0.2327 +2016-07-01|-67.0|110.0|-103.17367|-0.23898 +2016-07-01|-67.0|111.0|-104.1123|-0.24589 +2016-07-01|-67.0|112.0|-105.0788|-0.25348 +2016-07-01|-67.0|113.0|-106.07639|-0.26183 +2016-07-01|-67.0|114.0|-107.10873|-0.27102 +2016-07-01|-67.0|115.0|-108.18|-0.28116 +2016-07-01|-67.0|116.0|-109.29499|-0.29236 +2016-07-01|-67.0|117.0|-110.45923|-0.30476 +2016-07-01|-67.0|118.0|-111.67911|-0.31849 +2016-07-01|-67.0|119.0|-112.96205|-0.33376 +2016-07-01|-67.0|120.0|-114.31674|-0.35076 +2016-07-01|-67.0|121.0|-115.75335|-0.36975 +2016-07-01|-67.0|122.0|-117.28389|-0.391 +2016-07-01|-67.0|123.0|-118.92259|-0.41487 +2016-07-01|-67.0|124.0|-120.6864|-0.44173 +2016-07-01|-67.0|125.0|-122.59557|-0.47204 +2016-07-01|-67.0|126.0|-124.67443|-0.50632 +2016-07-01|-67.0|127.0|-126.95228|-0.54516 +2016-07-01|-67.0|128.0|-129.46444|-0.58919 +2016-07-01|-67.0|129.0|-132.25346|-0.63904 +2016-07-01|-67.0|130.0|-135.37039|-0.69529 +2016-07-01|-67.0|131.0|-138.87578|-0.75827 +2016-07-01|-67.0|132.0|-142.84001|-0.82778 +2016-07-01|-67.0|133.0|-147.34195|-0.90264 +2016-07-01|-67.0|134.0|-152.46426|-0.97996 +2016-07-01|-67.0|135.0|-158.28287|-1.05425 +2016-07-01|-67.0|136.0|-164.8482|-1.11667 +2016-07-01|-67.0|137.0|-172.15717|-1.15509 +2016-07-01|-67.0|138.0|179.8782|-1.15634 +2016-07-01|-67.0|139.0|171.45076|-1.11081 +2016-07-01|-67.0|140.0|162.84592|-1.01793 +2016-07-01|-67.0|141.0|154.38916|-0.88823 +2016-07-01|-67.0|142.0|146.37318|-0.7396 +2016-07-01|-67.0|143.0|139.00172|-0.59029 +2016-07-01|-67.0|144.0|132.37321|-0.45344 +2016-07-01|-67.0|145.0|126.49814|-0.33569 +2016-07-01|-67.0|146.0|121.33025|-0.23852 +2016-07-01|-67.0|147.0|116.79524|-0.16045 +2016-07-01|-67.0|148.0|112.81056|-0.09871 +2016-07-01|-67.0|149.0|109.29668|-0.05033 +2016-07-01|-67.0|150.0|106.18223|-0.01257 +2016-07-01|-67.0|151.0|103.40567|0.01683 +2016-07-01|-67.0|152.0|100.91504|0.03972 +2016-07-01|-67.0|153.0|98.66697|0.05755 +2016-07-01|-67.0|154.0|96.6255|0.07142 +2016-07-01|-67.0|155.0|94.76077|0.0822 +2016-07-01|-67.0|156.0|93.04803|0.09056 +2016-07-01|-67.0|157.0|91.46667|0.097 +2016-07-01|-67.0|158.0|89.99948|0.10194 +2016-07-01|-67.0|159.0|88.63201|0.10567 +2016-07-01|-67.0|160.0|87.35208|0.10843 +2016-07-01|-67.0|161.0|86.14939|0.11042 +2016-07-01|-67.0|162.0|85.01517|0.11177 +2016-07-01|-67.0|163.0|83.94193|0.11262 +2016-07-01|-67.0|164.0|82.92321|0.11305 +2016-07-01|-67.0|165.0|81.95347|0.11313 +2016-07-01|-67.0|166.0|81.02791|0.11293 +2016-07-01|-67.0|167.0|80.14233|0.11249 +2016-07-01|-67.0|168.0|79.29308|0.11185 +2016-07-01|-67.0|169.0|78.47696|0.11104 +2016-07-01|-67.0|170.0|77.69115|0.11009 +2016-07-01|-67.0|171.0|76.93318|0.10902 +2016-07-01|-67.0|172.0|76.20083|0.10785 +2016-07-01|-67.0|173.0|75.49215|0.10658 +2016-07-01|-67.0|174.0|74.80541|0.10523 +2016-07-01|-67.0|175.0|74.13903|0.10382 +2016-07-01|-67.0|176.0|73.49163|0.10234 +2016-07-01|-67.0|177.0|72.86195|0.1008 +2016-07-01|-67.0|178.0|72.24886|0.09922 +2016-07-01|-67.0|179.0|71.65134|0.09759 +2016-07-01|-67.0|-1.0|-19.20271|-0.07817 +2016-07-01|-67.0|-2.0|-18.53872|-0.07474 +2016-07-01|-67.0|-3.0|-17.88179|-0.07135 +2016-07-01|-67.0|-4.0|-17.23191|-0.06803 +2016-07-01|-67.0|-5.0|-16.58905|-0.06477 +2016-07-01|-67.0|-6.0|-15.95317|-0.06158 +2016-07-01|-67.0|-7.0|-15.32418|-0.05848 +2016-07-01|-67.0|-8.0|-14.70201|-0.05546 +2016-07-01|-67.0|-9.0|-14.08652|-0.05253 +2016-07-01|-67.0|-10.0|-13.47759|-0.0497 +2016-07-01|-67.0|-11.0|-12.87505|-0.04698 +2016-07-01|-67.0|-12.0|-12.27873|-0.04436 +2016-07-01|-67.0|-13.0|-11.68842|-0.04187 +2016-07-01|-67.0|-14.0|-11.10391|-0.03949 +2016-07-01|-67.0|-15.0|-10.52496|-0.03724 +2016-07-01|-67.0|-16.0|-9.95131|-0.03511 +2016-07-01|-67.0|-17.0|-9.38269|-0.03312 +2016-07-01|-67.0|-18.0|-8.81882|-0.03126 +2016-07-01|-67.0|-19.0|-8.25939|-0.02954 +2016-07-01|-67.0|-20.0|-7.7041|-0.02795 +2016-07-01|-67.0|-21.0|-7.15261|-0.02651 +2016-07-01|-67.0|-22.0|-6.60459|-0.02521 +2016-07-01|-67.0|-23.0|-6.05971|-0.02404 +2016-07-01|-67.0|-24.0|-5.5176|-0.02302 +2016-07-01|-67.0|-25.0|-4.97792|-0.02214 +2016-07-01|-67.0|-26.0|-4.44031|-0.02139 +2016-07-01|-67.0|-27.0|-3.90441|-0.02078 +2016-07-01|-67.0|-28.0|-3.36986|-0.02031 +2016-07-01|-67.0|-29.0|-2.83631|-0.01996 +2016-07-01|-67.0|-30.0|-2.30339|-0.01974 +2016-07-01|-67.0|-31.0|-1.77076|-0.01964 +2016-07-01|-67.0|-32.0|-1.23809|-0.01967 +2016-07-01|-67.0|-33.0|-0.70503|-0.0198 +2016-07-01|-67.0|-34.0|-0.17126|-0.02005 +2016-07-01|-67.0|-35.0|0.36352|-0.02039 +2016-07-01|-67.0|-36.0|0.89963|-0.02084 +2016-07-01|-67.0|-37.0|1.43734|-0.02137 +2016-07-01|-67.0|-38.0|1.97692|-0.02199 +2016-07-01|-67.0|-39.0|2.51863|-0.02269 +2016-07-01|-67.0|-40.0|3.0627|-0.02346 +2016-07-01|-67.0|-41.0|3.60935|-0.0243 +2016-07-01|-67.0|-42.0|4.15878|-0.02519 +2016-07-01|-67.0|-43.0|4.71116|-0.02613 +2016-07-01|-67.0|-44.0|5.26666|-0.02712 +2016-07-01|-67.0|-45.0|5.82541|-0.02814 +2016-07-01|-67.0|-46.0|6.38752|-0.02919 +2016-07-01|-67.0|-47.0|6.95309|-0.03026 +2016-07-01|-67.0|-48.0|7.52219|-0.03135 +2016-07-01|-67.0|-49.0|8.09487|-0.03245 +2016-07-01|-67.0|-50.0|8.67114|-0.03355 +2016-07-01|-67.0|-51.0|9.25102|-0.03465 +2016-07-01|-67.0|-52.0|9.8345|-0.03573 +2016-07-01|-67.0|-53.0|10.42152|-0.0368 +2016-07-01|-67.0|-54.0|11.01204|-0.03785 +2016-07-01|-67.0|-55.0|11.60597|-0.03887 +2016-07-01|-67.0|-56.0|12.20322|-0.03986 +2016-07-01|-67.0|-57.0|12.80366|-0.04082 +2016-07-01|-67.0|-58.0|13.40715|-0.04173 +2016-07-01|-67.0|-59.0|14.01356|-0.0426 +2016-07-01|-67.0|-60.0|14.62269|-0.04342 +2016-07-01|-67.0|-61.0|15.23437|-0.04419 +2016-07-01|-67.0|-62.0|15.8484|-0.0449 +2016-07-01|-67.0|-63.0|16.46456|-0.04555 +2016-07-01|-67.0|-64.0|17.08262|-0.04615 +2016-07-01|-67.0|-65.0|17.70234|-0.04668 +2016-07-01|-67.0|-66.0|18.32347|-0.04716 +2016-07-01|-67.0|-67.0|18.94575|-0.04756 +2016-07-01|-67.0|-68.0|19.56892|-0.04791 +2016-07-01|-67.0|-69.0|20.1927|-0.04818 +2016-07-01|-67.0|-70.0|20.81681|-0.0484 +2016-07-01|-67.0|-71.0|21.44095|-0.04854 +2016-07-01|-67.0|-72.0|22.06485|-0.04862 +2016-07-01|-67.0|-73.0|22.6882|-0.04864 +2016-07-01|-67.0|-74.0|23.31072|-0.04859 +2016-07-01|-67.0|-75.0|23.9321|-0.04848 +2016-07-01|-67.0|-76.0|24.55205|-0.04831 +2016-07-01|-67.0|-77.0|25.17027|-0.04807 +2016-07-01|-67.0|-78.0|25.78649|-0.04778 +2016-07-01|-67.0|-79.0|26.40039|-0.04743 +2016-07-01|-67.0|-80.0|27.01171|-0.04703 +2016-07-01|-67.0|-81.0|27.62015|-0.04658 +2016-07-01|-67.0|-82.0|28.22545|-0.04607 +2016-07-01|-67.0|-83.0|28.82734|-0.04552 +2016-07-01|-67.0|-84.0|29.42555|-0.04492 +2016-07-01|-67.0|-85.0|30.01983|-0.04428 +2016-07-01|-67.0|-86.0|30.60995|-0.04359 +2016-07-01|-67.0|-87.0|31.19566|-0.04287 +2016-07-01|-67.0|-88.0|31.77674|-0.04211 +2016-07-01|-67.0|-89.0|32.35297|-0.04131 +2016-07-01|-67.0|-90.0|32.92415|-0.04049 +2016-07-01|-67.0|-91.0|33.49009|-0.03963 +2016-07-01|-67.0|-92.0|34.0506|-0.03875 +2016-07-01|-67.0|-93.0|34.60552|-0.03784 +2016-07-01|-67.0|-94.0|35.15469|-0.0369 +2016-07-01|-67.0|-95.0|35.69797|-0.03595 +2016-07-01|-67.0|-96.0|36.23523|-0.03498 +2016-07-01|-67.0|-97.0|36.76634|-0.03398 +2016-07-01|-67.0|-98.0|37.29121|-0.03298 +2016-07-01|-67.0|-99.0|37.80974|-0.03195 +2016-07-01|-67.0|-100.0|38.32186|-0.03092 +2016-07-01|-67.0|-101.0|38.82751|-0.02987 +2016-07-01|-67.0|-102.0|39.32664|-0.02881 +2016-07-01|-67.0|-103.0|39.81921|-0.02774 +2016-07-01|-67.0|-104.0|40.30522|-0.02666 +2016-07-01|-67.0|-105.0|40.78464|-0.02557 +2016-07-01|-67.0|-106.0|41.2575|-0.02447 +2016-07-01|-67.0|-107.0|41.72381|-0.02336 +2016-07-01|-67.0|-108.0|42.18361|-0.02225 +2016-07-01|-67.0|-109.0|42.63697|-0.02113 +2016-07-01|-67.0|-110.0|43.08393|-0.02 +2016-07-01|-67.0|-111.0|43.52458|-0.01886 +2016-07-01|-67.0|-112.0|43.95902|-0.01772 +2016-07-01|-67.0|-113.0|44.38735|-0.01656 +2016-07-01|-67.0|-114.0|44.80968|-0.0154 +2016-07-01|-67.0|-115.0|45.22616|-0.01423 +2016-07-01|-67.0|-116.0|45.63693|-0.01305 +2016-07-01|-67.0|-117.0|46.04214|-0.01186 +2016-07-01|-67.0|-118.0|46.44196|-0.01066 +2016-07-01|-67.0|-119.0|46.83657|-0.00944 +2016-07-01|-67.0|-120.0|47.22616|-0.00821 +2016-07-01|-67.0|-121.0|47.61093|-0.00697 +2016-07-01|-67.0|-122.0|47.9911|-0.00572 +2016-07-01|-67.0|-123.0|48.36687|-0.00444 +2016-07-01|-67.0|-124.0|48.73848|-0.00316 +2016-07-01|-67.0|-125.0|49.10616|-0.00185 +2016-07-01|-67.0|-126.0|49.47016|-5.3E-4 +2016-07-01|-67.0|-127.0|49.83073|8.2E-4 +2016-07-01|-67.0|-128.0|50.18811|0.00218 +2016-07-01|-67.0|-129.0|50.54258|0.00356 +2016-07-01|-67.0|-130.0|50.89439|0.00497 +2016-07-01|-67.0|-131.0|51.24382|0.0064 +2016-07-01|-67.0|-132.0|51.59115|0.00785 +2016-07-01|-67.0|-133.0|51.93664|0.00933 +2016-07-01|-67.0|-134.0|52.28057|0.01082 +2016-07-01|-67.0|-135.0|52.62324|0.01235 +2016-07-01|-67.0|-136.0|52.9649|0.0139 +2016-07-01|-67.0|-137.0|53.30585|0.01547 +2016-07-01|-67.0|-138.0|53.64637|0.01707 +2016-07-01|-67.0|-139.0|53.98673|0.0187 +2016-07-01|-67.0|-140.0|54.32722|0.02035 +2016-07-01|-67.0|-141.0|54.66812|0.02202 +2016-07-01|-67.0|-142.0|55.00968|0.02372 +2016-07-01|-67.0|-143.0|55.3522|0.02545 +2016-07-01|-67.0|-144.0|55.69594|0.0272 +2016-07-01|-67.0|-145.0|56.04116|0.02897 +2016-07-01|-67.0|-146.0|56.38813|0.03077 +2016-07-01|-67.0|-147.0|56.73711|0.03259 +2016-07-01|-67.0|-148.0|57.08837|0.03443 +2016-07-01|-67.0|-149.0|57.44214|0.03629 +2016-07-01|-67.0|-150.0|57.79869|0.03816 +2016-07-01|-67.0|-151.0|58.15827|0.04006 +2016-07-01|-67.0|-152.0|58.52111|0.04197 +2016-07-01|-67.0|-153.0|58.88747|0.0439 +2016-07-01|-67.0|-154.0|59.25759|0.04585 +2016-07-01|-67.0|-155.0|59.6317|0.0478 +2016-07-01|-67.0|-156.0|60.01005|0.04977 +2016-07-01|-67.0|-157.0|60.39287|0.05175 +2016-07-01|-67.0|-158.0|60.78041|0.05374 +2016-07-01|-67.0|-159.0|61.17291|0.05573 +2016-07-01|-67.0|-160.0|61.57062|0.05772 +2016-07-01|-67.0|-161.0|61.97376|0.05972 +2016-07-01|-67.0|-162.0|62.38261|0.06173 +2016-07-01|-67.0|-163.0|62.79741|0.06373 +2016-07-01|-67.0|-164.0|63.21843|0.06573 +2016-07-01|-67.0|-165.0|63.64594|0.06772 +2016-07-01|-67.0|-166.0|64.08022|0.06971 +2016-07-01|-67.0|-167.0|64.52155|0.07169 +2016-07-01|-67.0|-168.0|64.97025|0.07367 +2016-07-01|-67.0|-169.0|65.42664|0.07563 +2016-07-01|-67.0|-170.0|65.89104|0.07758 +2016-07-01|-67.0|-171.0|66.36383|0.07951 +2016-07-01|-67.0|-172.0|66.84536|0.08143 +2016-07-01|-67.0|-173.0|67.33606|0.08332 +2016-07-01|-67.0|-174.0|67.83635|0.0852 +2016-07-01|-67.0|-175.0|68.34671|0.08706 +2016-07-01|-67.0|-176.0|68.86762|0.08889 +2016-07-01|-67.0|-177.0|69.39963|0.09069 +2016-07-01|-67.0|-178.0|69.94334|0.09247 +2016-07-01|-67.0|-179.0|70.49938|0.09421 +2016-07-01|-68.0|0.0|-19.93153|-0.08384 +2016-07-01|-68.0|1.0|-20.61855|-0.08714 +2016-07-01|-68.0|2.0|-21.31206|-0.09047 +2016-07-01|-68.0|3.0|-22.01197|-0.09382 +2016-07-01|-68.0|4.0|-22.71822|-0.09718 +2016-07-01|-68.0|5.0|-23.43069|-0.10055 +2016-07-01|-68.0|6.0|-24.14928|-0.10392 +2016-07-01|-68.0|7.0|-24.87385|-0.10728 +2016-07-01|-68.0|8.0|-25.60426|-0.11062 +2016-07-01|-68.0|9.0|-26.34035|-0.11395 +2016-07-01|-68.0|10.0|-27.08195|-0.11725 +2016-07-01|-68.0|11.0|-27.82888|-0.12052 +2016-07-01|-68.0|12.0|-28.58095|-0.12375 +2016-07-01|-68.0|13.0|-29.33794|-0.12694 +2016-07-01|-68.0|14.0|-30.09967|-0.13008 +2016-07-01|-68.0|15.0|-30.86589|-0.13317 +2016-07-01|-68.0|16.0|-31.6364|-0.13621 +2016-07-01|-68.0|17.0|-32.41096|-0.13918 +2016-07-01|-68.0|18.0|-33.18933|-0.14208 +2016-07-01|-68.0|19.0|-33.97128|-0.14491 +2016-07-01|-68.0|20.0|-34.75657|-0.14767 +2016-07-01|-68.0|21.0|-35.54494|-0.15036 +2016-07-01|-68.0|22.0|-36.33616|-0.15296 +2016-07-01|-68.0|23.0|-37.12999|-0.15549 +2016-07-01|-68.0|24.0|-37.92617|-0.15793 +2016-07-01|-68.0|25.0|-38.72447|-0.16028 +2016-07-01|-68.0|26.0|-39.52465|-0.16255 +2016-07-01|-68.0|27.0|-40.32647|-0.16472 +2016-07-01|-68.0|28.0|-41.12969|-0.16681 +2016-07-01|-68.0|29.0|-41.93409|-0.16881 +2016-07-01|-68.0|30.0|-42.73944|-0.17071 +2016-07-01|-68.0|31.0|-43.54552|-0.17252 +2016-07-01|-68.0|32.0|-44.35212|-0.17424 +2016-07-01|-68.0|33.0|-45.15904|-0.17587 +2016-07-01|-68.0|34.0|-45.96606|-0.1774 +2016-07-01|-68.0|35.0|-46.77301|-0.17885 +2016-07-01|-68.0|36.0|-47.57969|-0.1802 +2016-07-01|-68.0|37.0|-48.38593|-0.18147 +2016-07-01|-68.0|38.0|-49.19155|-0.18265 +2016-07-01|-68.0|39.0|-49.9964|-0.18374 +2016-07-01|-68.0|40.0|-50.80032|-0.18475 +2016-07-01|-68.0|41.0|-51.60317|-0.18567 +2016-07-01|-68.0|42.0|-52.40482|-0.18651 +2016-07-01|-68.0|43.0|-53.20513|-0.18728 +2016-07-01|-68.0|44.0|-54.00399|-0.18796 +2016-07-01|-68.0|45.0|-54.80129|-0.18858 +2016-07-01|-68.0|46.0|-55.59694|-0.18912 +2016-07-01|-68.0|47.0|-56.39084|-0.18959 +2016-07-01|-68.0|48.0|-57.18291|-0.18999 +2016-07-01|-68.0|49.0|-57.97309|-0.19033 +2016-07-01|-68.0|50.0|-58.76131|-0.19061 +2016-07-01|-68.0|51.0|-59.54751|-0.19083 +2016-07-01|-68.0|52.0|-60.33167|-0.19099 +2016-07-01|-68.0|53.0|-61.11373|-0.1911 +2016-07-01|-68.0|54.0|-61.89368|-0.19116 +2016-07-01|-68.0|55.0|-62.67151|-0.19117 +2016-07-01|-68.0|56.0|-63.4472|-0.19114 +2016-07-01|-68.0|57.0|-64.22076|-0.19107 +2016-07-01|-68.0|58.0|-64.9922|-0.19096 +2016-07-01|-68.0|59.0|-65.76155|-0.19082 +2016-07-01|-68.0|60.0|-66.52882|-0.19065 +2016-07-01|-68.0|61.0|-67.29407|-0.19045 +2016-07-01|-68.0|62.0|-68.05734|-0.19023 +2016-07-01|-68.0|63.0|-68.81869|-0.18999 +2016-07-01|-68.0|64.0|-69.57818|-0.18973 +2016-07-01|-68.0|65.0|-70.33589|-0.18946 +2016-07-01|-68.0|66.0|-71.09191|-0.18919 +2016-07-01|-68.0|67.0|-71.84633|-0.1889 +2016-07-01|-68.0|68.0|-72.59925|-0.18862 +2016-07-01|-68.0|69.0|-73.35078|-0.18834 +2016-07-01|-68.0|70.0|-74.10105|-0.18807 +2016-07-01|-68.0|71.0|-74.8502|-0.18781 +2016-07-01|-68.0|72.0|-75.59836|-0.18756 +2016-07-01|-68.0|73.0|-76.34568|-0.18734 +2016-07-01|-68.0|74.0|-77.09233|-0.18714 +2016-07-01|-68.0|75.0|-77.83849|-0.18697 +2016-07-01|-68.0|76.0|-78.58434|-0.18683 +2016-07-01|-68.0|77.0|-79.33008|-0.18673 +2016-07-01|-68.0|78.0|-80.07593|-0.18667 +2016-07-01|-68.0|79.0|-80.82209|-0.18666 +2016-07-01|-68.0|80.0|-81.56882|-0.18671 +2016-07-01|-68.0|81.0|-82.31637|-0.18682 +2016-07-01|-68.0|82.0|-83.065|-0.18699 +2016-07-01|-68.0|83.0|-83.815|-0.18723 +2016-07-01|-68.0|84.0|-84.56667|-0.18754 +2016-07-01|-68.0|85.0|-85.32033|-0.18794 +2016-07-01|-68.0|86.0|-86.07633|-0.18844 +2016-07-01|-68.0|87.0|-86.83504|-0.18902 +2016-07-01|-68.0|88.0|-87.59683|-0.18971 +2016-07-01|-68.0|89.0|-88.36213|-0.19052 +2016-07-01|-68.0|90.0|-89.13137|-0.19144 +2016-07-01|-68.0|91.0|-89.90503|-0.19249 +2016-07-01|-68.0|92.0|-90.68363|-0.19368 +2016-07-01|-68.0|93.0|-91.46769|-0.19502 +2016-07-01|-68.0|94.0|-92.2578|-0.19651 +2016-07-01|-68.0|95.0|-93.0546|-0.19817 +2016-07-01|-68.0|96.0|-93.85875|-0.20001 +2016-07-01|-68.0|97.0|-94.671|-0.20205 +2016-07-01|-68.0|98.0|-95.49212|-0.20429 +2016-07-01|-68.0|99.0|-96.32298|-0.20676 +2016-07-01|-68.0|100.0|-97.1645|-0.20946 +2016-07-01|-68.0|101.0|-98.01769|-0.21242 +2016-07-01|-68.0|102.0|-98.88366|-0.21565 +2016-07-01|-68.0|103.0|-99.7636|-0.21919 +2016-07-01|-68.0|104.0|-100.65884|-0.22304 +2016-07-01|-68.0|105.0|-101.5708|-0.22723 +2016-07-01|-68.0|106.0|-102.50108|-0.2318 +2016-07-01|-68.0|107.0|-103.45143|-0.23677 +2016-07-01|-68.0|108.0|-104.42377|-0.24218 +2016-07-01|-68.0|109.0|-105.42023|-0.24807 +2016-07-01|-68.0|110.0|-106.44319|-0.25448 +2016-07-01|-68.0|111.0|-107.49527|-0.26145 +2016-07-01|-68.0|112.0|-108.57941|-0.26905 +2016-07-01|-68.0|113.0|-109.6989|-0.27732 +2016-07-01|-68.0|114.0|-110.85742|-0.28634 +2016-07-01|-68.0|115.0|-112.05909|-0.29617 +2016-07-01|-68.0|116.0|-113.30858|-0.3069 +2016-07-01|-68.0|117.0|-114.61115|-0.31863 +2016-07-01|-68.0|118.0|-115.97276|-0.33146 +2016-07-01|-68.0|119.0|-117.40017|-0.34549 +2016-07-01|-68.0|120.0|-118.90107|-0.36087 +2016-07-01|-68.0|121.0|-120.48425|-0.37773 +2016-07-01|-68.0|122.0|-122.15972|-0.39622 +2016-07-01|-68.0|123.0|-123.93895|-0.41651 +2016-07-01|-68.0|124.0|-125.83503|-0.43878 +2016-07-01|-68.0|125.0|-127.86297|-0.46321 +2016-07-01|-68.0|126.0|-130.03988|-0.48997 +2016-07-01|-68.0|127.0|-132.38526|-0.51921 +2016-07-01|-68.0|128.0|-134.92117|-0.55103 +2016-07-01|-68.0|129.0|-137.67231|-0.58548 +2016-07-01|-68.0|130.0|-140.66603|-0.62242 +2016-07-01|-68.0|131.0|-143.93186|-0.66153 +2016-07-01|-68.0|132.0|-147.5007|-0.70216 +2016-07-01|-68.0|133.0|-151.40314|-0.74321 +2016-07-01|-68.0|134.0|-155.66687|-0.78301 +2016-07-01|-68.0|135.0|-160.31265|-0.81919 +2016-07-01|-68.0|136.0|-165.34909|-0.84868 +2016-07-01|-68.0|137.0|-170.76632|-0.86783 +2016-07-01|-68.0|138.0|-176.52993|-0.87291 +2016-07-01|-68.0|139.0|177.42311|-0.86081 +2016-07-01|-68.0|140.0|171.18403|-0.82987 +2016-07-01|-68.0|141.0|164.8659|-0.7806 +2016-07-01|-68.0|142.0|158.59153|-0.71585 +2016-07-01|-68.0|143.0|152.4787|-0.64022 +2016-07-01|-68.0|144.0|146.62669|-0.55911 +2016-07-01|-68.0|145.0|141.10798|-0.4776 +2016-07-01|-68.0|146.0|135.96598|-0.39971 +2016-07-01|-68.0|147.0|131.21788|-0.32811 +2016-07-01|-68.0|148.0|126.86036|-0.26417 +2016-07-01|-68.0|149.0|122.87596|-0.20831 +2016-07-01|-68.0|150.0|119.23876|-0.16026 +2016-07-01|-68.0|151.0|115.91877|-0.11939 +2016-07-01|-68.0|152.0|112.885|-0.08488 +2016-07-01|-68.0|153.0|110.10736|-0.05588 +2016-07-01|-68.0|154.0|107.55778|-0.03161 +2016-07-01|-68.0|155.0|105.21071|-0.01132 +2016-07-01|-68.0|156.0|103.04325|0.00562 +2016-07-01|-68.0|157.0|101.03514|0.01974 +2016-07-01|-68.0|158.0|99.16856|0.03152 +2016-07-01|-68.0|159.0|97.42788|0.04133 +2016-07-01|-68.0|160.0|95.79945|0.04949 +2016-07-01|-68.0|161.0|94.27134|0.05626 +2016-07-01|-68.0|162.0|92.83312|0.06187 +2016-07-01|-68.0|163.0|91.47567|0.0665 +2016-07-01|-68.0|164.0|90.19103|0.07029 +2016-07-01|-68.0|165.0|88.97216|0.07338 +2016-07-01|-68.0|166.0|87.81292|0.07587 +2016-07-01|-68.0|167.0|86.70788|0.07783 +2016-07-01|-68.0|168.0|85.65222|0.07936 +2016-07-01|-68.0|169.0|84.64172|0.08049 +2016-07-01|-68.0|170.0|83.67258|0.0813 +2016-07-01|-68.0|171.0|82.74146|0.08182 +2016-07-01|-68.0|172.0|81.84536|0.08208 +2016-07-01|-68.0|173.0|80.9816|0.08213 +2016-07-01|-68.0|174.0|80.14777|0.08197 +2016-07-01|-68.0|175.0|79.34172|0.08165 +2016-07-01|-68.0|176.0|78.5615|0.08117 +2016-07-01|-68.0|177.0|77.80535|0.08055 +2016-07-01|-68.0|178.0|77.07169|0.07981 +2016-07-01|-68.0|179.0|76.35907|0.07896 +2016-07-01|-68.0|-1.0|-19.25104|-0.08057 +2016-07-01|-68.0|-2.0|-18.5771|-0.07733 +2016-07-01|-68.0|-3.0|-17.90973|-0.07415 +2016-07-01|-68.0|-4.0|-17.24893|-0.07102 +2016-07-01|-68.0|-5.0|-16.59467|-0.06795 +2016-07-01|-68.0|-6.0|-15.9469|-0.06494 +2016-07-01|-68.0|-7.0|-15.30556|-0.06201 +2016-07-01|-68.0|-8.0|-14.67057|-0.05915 +2016-07-01|-68.0|-9.0|-14.04182|-0.05638 +2016-07-01|-68.0|-10.0|-13.41919|-0.0537 +2016-07-01|-68.0|-11.0|-12.80253|-0.05111 +2016-07-01|-68.0|-12.0|-12.1917|-0.04862 +2016-07-01|-68.0|-13.0|-11.58652|-0.04624 +2016-07-01|-68.0|-14.0|-10.98678|-0.04397 +2016-07-01|-68.0|-15.0|-10.39229|-0.0418 +2016-07-01|-68.0|-16.0|-9.80281|-0.03976 +2016-07-01|-68.0|-17.0|-9.21811|-0.03783 +2016-07-01|-68.0|-18.0|-8.63794|-0.03602 +2016-07-01|-68.0|-19.0|-8.06202|-0.03434 +2016-07-01|-68.0|-20.0|-7.49008|-0.03278 +2016-07-01|-68.0|-21.0|-6.92183|-0.03135 +2016-07-01|-68.0|-22.0|-6.35698|-0.03004 +2016-07-01|-68.0|-23.0|-5.79523|-0.02886 +2016-07-01|-68.0|-24.0|-5.23625|-0.02781 +2016-07-01|-68.0|-25.0|-4.67975|-0.02689 +2016-07-01|-68.0|-26.0|-4.1254|-0.02609 +2016-07-01|-68.0|-27.0|-3.57288|-0.02542 +2016-07-01|-68.0|-28.0|-3.02187|-0.02486 +2016-07-01|-68.0|-29.0|-2.47205|-0.02443 +2016-07-01|-68.0|-30.0|-1.92311|-0.02411 +2016-07-01|-68.0|-31.0|-1.37474|-0.02391 +2016-07-01|-68.0|-32.0|-0.82662|-0.02381 +2016-07-01|-68.0|-33.0|-0.27846|-0.02382 +2016-07-01|-68.0|-34.0|0.27003|-0.02393 +2016-07-01|-68.0|-35.0|0.81914|-0.02414 +2016-07-01|-68.0|-36.0|1.36914|-0.02444 +2016-07-01|-68.0|-37.0|1.92028|-0.02482 +2016-07-01|-68.0|-38.0|2.47282|-0.02529 +2016-07-01|-68.0|-39.0|3.02699|-0.02582 +2016-07-01|-68.0|-40.0|3.58299|-0.02643 +2016-07-01|-68.0|-41.0|4.14105|-0.0271 +2016-07-01|-68.0|-42.0|4.70133|-0.02782 +2016-07-01|-68.0|-43.0|5.26402|-0.0286 +2016-07-01|-68.0|-44.0|5.82925|-0.02942 +2016-07-01|-68.0|-45.0|6.39717|-0.03027 +2016-07-01|-68.0|-46.0|6.96788|-0.03116 +2016-07-01|-68.0|-47.0|7.54148|-0.03207 +2016-07-01|-68.0|-48.0|8.11804|-0.03301 +2016-07-01|-68.0|-49.0|8.69762|-0.03395 +2016-07-01|-68.0|-50.0|9.28026|-0.0349 +2016-07-01|-68.0|-51.0|9.86596|-0.03586 +2016-07-01|-68.0|-52.0|10.45474|-0.03681 +2016-07-01|-68.0|-53.0|11.04657|-0.03775 +2016-07-01|-68.0|-54.0|11.64141|-0.03867 +2016-07-01|-68.0|-55.0|12.2392|-0.03958 +2016-07-01|-68.0|-56.0|12.83987|-0.04046 +2016-07-01|-68.0|-57.0|13.44333|-0.04131 +2016-07-01|-68.0|-58.0|14.04946|-0.04213 +2016-07-01|-68.0|-59.0|14.65814|-0.04292 +2016-07-01|-68.0|-60.0|15.26924|-0.04366 +2016-07-01|-68.0|-61.0|15.8826|-0.04437 +2016-07-01|-68.0|-62.0|16.49805|-0.04502 +2016-07-01|-68.0|-63.0|17.11542|-0.04563 +2016-07-01|-68.0|-64.0|17.73451|-0.04619 +2016-07-01|-68.0|-65.0|18.35512|-0.0467 +2016-07-01|-68.0|-66.0|18.97704|-0.04715 +2016-07-01|-68.0|-67.0|19.60004|-0.04755 +2016-07-01|-68.0|-68.0|20.2239|-0.04789 +2016-07-01|-68.0|-69.0|20.84839|-0.04817 +2016-07-01|-68.0|-70.0|21.47325|-0.04839 +2016-07-01|-68.0|-71.0|22.09825|-0.04856 +2016-07-01|-68.0|-72.0|22.72313|-0.04867 +2016-07-01|-68.0|-73.0|23.34763|-0.04873 +2016-07-01|-68.0|-74.0|23.97151|-0.04872 +2016-07-01|-68.0|-75.0|24.5945|-0.04866 +2016-07-01|-68.0|-76.0|25.21634|-0.04854 +2016-07-01|-68.0|-77.0|25.83678|-0.04837 +2016-07-01|-68.0|-78.0|26.45556|-0.04815 +2016-07-01|-68.0|-79.0|27.07243|-0.04787 +2016-07-01|-68.0|-80.0|27.68712|-0.04755 +2016-07-01|-68.0|-81.0|28.29941|-0.04717 +2016-07-01|-68.0|-82.0|28.90903|-0.04675 +2016-07-01|-68.0|-83.0|29.51577|-0.04628 +2016-07-01|-68.0|-84.0|30.11937|-0.04577 +2016-07-01|-68.0|-85.0|30.71962|-0.04522 +2016-07-01|-68.0|-86.0|31.3163|-0.04463 +2016-07-01|-68.0|-87.0|31.9092|-0.044 +2016-07-01|-68.0|-88.0|32.49811|-0.04334 +2016-07-01|-68.0|-89.0|33.08285|-0.04264 +2016-07-01|-68.0|-90.0|33.66322|-0.04191 +2016-07-01|-68.0|-91.0|34.23906|-0.04116 +2016-07-01|-68.0|-92.0|34.8102|-0.04037 +2016-07-01|-68.0|-93.0|35.37648|-0.03956 +2016-07-01|-68.0|-94.0|35.93776|-0.03872 +2016-07-01|-68.0|-95.0|36.49392|-0.03787 +2016-07-01|-68.0|-96.0|37.04482|-0.03699 +2016-07-01|-68.0|-97.0|37.59037|-0.03609 +2016-07-01|-68.0|-98.0|38.13047|-0.03518 +2016-07-01|-68.0|-99.0|38.66502|-0.03425 +2016-07-01|-68.0|-100.0|39.19397|-0.0333 +2016-07-01|-68.0|-101.0|39.71725|-0.03234 +2016-07-01|-68.0|-102.0|40.23482|-0.03137 +2016-07-01|-68.0|-103.0|40.74664|-0.03038 +2016-07-01|-68.0|-104.0|41.25269|-0.02938 +2016-07-01|-68.0|-105.0|41.75296|-0.02838 +2016-07-01|-68.0|-106.0|42.24747|-0.02736 +2016-07-01|-68.0|-107.0|42.73622|-0.02633 +2016-07-01|-68.0|-108.0|43.21926|-0.0253 +2016-07-01|-68.0|-109.0|43.69661|-0.02425 +2016-07-01|-68.0|-110.0|44.16835|-0.0232 +2016-07-01|-68.0|-111.0|44.63455|-0.02214 +2016-07-01|-68.0|-112.0|45.09527|-0.02107 +2016-07-01|-68.0|-113.0|45.55062|-0.01999 +2016-07-01|-68.0|-114.0|46.00071|-0.0189 +2016-07-01|-68.0|-115.0|46.44565|-0.01781 +2016-07-01|-68.0|-116.0|46.88557|-0.0167 +2016-07-01|-68.0|-117.0|47.32062|-0.01558 +2016-07-01|-68.0|-118.0|47.75095|-0.01445 +2016-07-01|-68.0|-119.0|48.17672|-0.01331 +2016-07-01|-68.0|-120.0|48.5981|-0.01216 +2016-07-01|-68.0|-121.0|49.01529|-0.011 +2016-07-01|-68.0|-122.0|49.42846|-0.00982 +2016-07-01|-68.0|-123.0|49.83783|-0.00863 +2016-07-01|-68.0|-124.0|50.24361|-0.00742 +2016-07-01|-68.0|-125.0|50.64601|-0.0062 +2016-07-01|-68.0|-126.0|51.04527|-0.00496 +2016-07-01|-68.0|-127.0|51.44161|-0.00371 +2016-07-01|-68.0|-128.0|51.83528|-0.00244 +2016-07-01|-68.0|-129.0|52.22652|-0.00115 +2016-07-01|-68.0|-130.0|52.6156|1.6E-4 +2016-07-01|-68.0|-131.0|53.00276|0.00149 +2016-07-01|-68.0|-132.0|53.38826|0.00284 +2016-07-01|-68.0|-133.0|53.77239|0.0042 +2016-07-01|-68.0|-134.0|54.15539|0.00559 +2016-07-01|-68.0|-135.0|54.53756|0.007 +2016-07-01|-68.0|-136.0|54.91916|0.00843 +2016-07-01|-68.0|-137.0|55.30048|0.00988 +2016-07-01|-68.0|-138.0|55.68179|0.01135 +2016-07-01|-68.0|-139.0|56.06337|0.01285 +2016-07-01|-68.0|-140.0|56.44551|0.01436 +2016-07-01|-68.0|-141.0|56.82848|0.0159 +2016-07-01|-68.0|-142.0|57.21259|0.01745 +2016-07-01|-68.0|-143.0|57.5981|0.01903 +2016-07-01|-68.0|-144.0|57.98529|0.02063 +2016-07-01|-68.0|-145.0|58.37447|0.02224 +2016-07-01|-68.0|-146.0|58.7659|0.02387 +2016-07-01|-68.0|-147.0|59.15988|0.02552 +2016-07-01|-68.0|-148.0|59.55668|0.02719 +2016-07-01|-68.0|-149.0|59.95659|0.02887 +2016-07-01|-68.0|-150.0|60.35989|0.03056 +2016-07-01|-68.0|-151.0|60.76687|0.03227 +2016-07-01|-68.0|-152.0|61.17781|0.03399 +2016-07-01|-68.0|-153.0|61.59301|0.03572 +2016-07-01|-68.0|-154.0|62.01274|0.03746 +2016-07-01|-68.0|-155.0|62.43731|0.0392 +2016-07-01|-68.0|-156.0|62.867|0.04095 +2016-07-01|-68.0|-157.0|63.30212|0.04271 +2016-07-01|-68.0|-158.0|63.74296|0.04446 +2016-07-01|-68.0|-159.0|64.18984|0.04621 +2016-07-01|-68.0|-160.0|64.64308|0.04796 +2016-07-01|-68.0|-161.0|65.10299|0.04971 +2016-07-01|-68.0|-162.0|65.56992|0.05144 +2016-07-01|-68.0|-163.0|66.0442|0.05317 +2016-07-01|-68.0|-164.0|66.5262|0.05488 +2016-07-01|-68.0|-165.0|67.01629|0.05658 +2016-07-01|-68.0|-166.0|67.51486|0.05827 +2016-07-01|-68.0|-167.0|68.02232|0.05993 +2016-07-01|-68.0|-168.0|68.53909|0.06157 +2016-07-01|-68.0|-169.0|69.06563|0.06318 +2016-07-01|-68.0|-170.0|69.60241|0.06476 +2016-07-01|-68.0|-171.0|70.14996|0.06631 +2016-07-01|-68.0|-172.0|70.7088|0.06782 +2016-07-01|-68.0|-173.0|71.27952|0.06929 +2016-07-01|-68.0|-174.0|71.86275|0.07071 +2016-07-01|-68.0|-175.0|72.45915|0.07209 +2016-07-01|-68.0|-176.0|73.06944|0.07341 +2016-07-01|-68.0|-177.0|73.69441|0.07467 +2016-07-01|-68.0|-178.0|74.33489|0.07586 +2016-07-01|-68.0|-179.0|74.99181|0.07698 +2016-07-01|-69.0|0.0|-20.01152|-0.08604 +2016-07-01|-69.0|1.0|-20.70754|-0.08914 +2016-07-01|-69.0|2.0|-21.4096|-0.09226 +2016-07-01|-69.0|3.0|-22.11762|-0.0954 +2016-07-01|-69.0|4.0|-22.83155|-0.09856 +2016-07-01|-69.0|5.0|-23.5513|-0.10172 +2016-07-01|-69.0|6.0|-24.27677|-0.10488 +2016-07-01|-69.0|7.0|-25.00784|-0.10804 +2016-07-01|-69.0|8.0|-25.7444|-0.11118 +2016-07-01|-69.0|9.0|-26.4863|-0.11432 +2016-07-01|-69.0|10.0|-27.2334|-0.11742 +2016-07-01|-69.0|11.0|-27.98554|-0.12051 +2016-07-01|-69.0|12.0|-28.74255|-0.12356 +2016-07-01|-69.0|13.0|-29.50426|-0.12657 +2016-07-01|-69.0|14.0|-30.27048|-0.12954 +2016-07-01|-69.0|15.0|-31.04103|-0.13247 +2016-07-01|-69.0|16.0|-31.8157|-0.13535 +2016-07-01|-69.0|17.0|-32.5943|-0.13817 +2016-07-01|-69.0|18.0|-33.37662|-0.14094 +2016-07-01|-69.0|19.0|-34.16245|-0.14365 +2016-07-01|-69.0|20.0|-34.95158|-0.14629 +2016-07-01|-69.0|21.0|-35.74379|-0.14886 +2016-07-01|-69.0|22.0|-36.53888|-0.15137 +2016-07-01|-69.0|23.0|-37.33662|-0.1538 +2016-07-01|-69.0|24.0|-38.1368|-0.15616 +2016-07-01|-69.0|25.0|-38.9392|-0.15845 +2016-07-01|-69.0|26.0|-39.74362|-0.16065 +2016-07-01|-69.0|27.0|-40.54985|-0.16278 +2016-07-01|-69.0|28.0|-41.35767|-0.16483 +2016-07-01|-69.0|29.0|-42.16689|-0.16679 +2016-07-01|-69.0|30.0|-42.97731|-0.16868 +2016-07-01|-69.0|31.0|-43.78873|-0.17048 +2016-07-01|-69.0|32.0|-44.60097|-0.1722 +2016-07-01|-69.0|33.0|-45.41383|-0.17384 +2016-07-01|-69.0|34.0|-46.22715|-0.1754 +2016-07-01|-69.0|35.0|-47.04075|-0.17688 +2016-07-01|-69.0|36.0|-47.85447|-0.17827 +2016-07-01|-69.0|37.0|-48.66815|-0.17959 +2016-07-01|-69.0|38.0|-49.48164|-0.18083 +2016-07-01|-69.0|39.0|-50.2948|-0.18199 +2016-07-01|-69.0|40.0|-51.10749|-0.18307 +2016-07-01|-69.0|41.0|-51.91958|-0.18408 +2016-07-01|-69.0|42.0|-52.73097|-0.18502 +2016-07-01|-69.0|43.0|-53.54154|-0.18589 +2016-07-01|-69.0|44.0|-54.35118|-0.18668 +2016-07-01|-69.0|45.0|-55.1598|-0.18742 +2016-07-01|-69.0|46.0|-55.96732|-0.18808 +2016-07-01|-69.0|47.0|-56.77366|-0.18868 +2016-07-01|-69.0|48.0|-57.57876|-0.18923 +2016-07-01|-69.0|49.0|-58.38256|-0.18971 +2016-07-01|-69.0|50.0|-59.185|-0.19014 +2016-07-01|-69.0|51.0|-59.98605|-0.19052 +2016-07-01|-69.0|52.0|-60.78568|-0.19085 +2016-07-01|-69.0|53.0|-61.58386|-0.19113 +2016-07-01|-69.0|54.0|-62.38058|-0.19136 +2016-07-01|-69.0|55.0|-63.17584|-0.19156 +2016-07-01|-69.0|56.0|-63.96964|-0.19171 +2016-07-01|-69.0|57.0|-64.76199|-0.19183 +2016-07-01|-69.0|58.0|-65.55291|-0.19192 +2016-07-01|-69.0|59.0|-66.34245|-0.19198 +2016-07-01|-69.0|60.0|-67.13063|-0.19202 +2016-07-01|-69.0|61.0|-67.91752|-0.19203 +2016-07-01|-69.0|62.0|-68.70316|-0.19202 +2016-07-01|-69.0|63.0|-69.48763|-0.192 +2016-07-01|-69.0|64.0|-70.27101|-0.19196 +2016-07-01|-69.0|65.0|-71.05338|-0.19191 +2016-07-01|-69.0|66.0|-71.83484|-0.19186 +2016-07-01|-69.0|67.0|-72.6155|-0.19181 +2016-07-01|-69.0|68.0|-73.39547|-0.19176 +2016-07-01|-69.0|69.0|-74.17488|-0.19172 +2016-07-01|-69.0|70.0|-74.95387|-0.19168 +2016-07-01|-69.0|71.0|-75.73259|-0.19166 +2016-07-01|-69.0|72.0|-76.51119|-0.19166 +2016-07-01|-69.0|73.0|-77.28985|-0.19168 +2016-07-01|-69.0|74.0|-78.06875|-0.19173 +2016-07-01|-69.0|75.0|-78.84808|-0.1918 +2016-07-01|-69.0|76.0|-79.62804|-0.19192 +2016-07-01|-69.0|77.0|-80.40886|-0.19207 +2016-07-01|-69.0|78.0|-81.19077|-0.19226 +2016-07-01|-69.0|79.0|-81.97402|-0.19251 +2016-07-01|-69.0|80.0|-82.75887|-0.19281 +2016-07-01|-69.0|81.0|-83.54559|-0.19317 +2016-07-01|-69.0|82.0|-84.3345|-0.19359 +2016-07-01|-69.0|83.0|-85.12589|-0.19409 +2016-07-01|-69.0|84.0|-85.9201|-0.19466 +2016-07-01|-69.0|85.0|-86.7175|-0.19531 +2016-07-01|-69.0|86.0|-87.51844|-0.19605 +2016-07-01|-69.0|87.0|-88.32334|-0.19689 +2016-07-01|-69.0|88.0|-89.13263|-0.19783 +2016-07-01|-69.0|89.0|-89.94674|-0.19888 +2016-07-01|-69.0|90.0|-90.76617|-0.20004 +2016-07-01|-69.0|91.0|-91.59144|-0.20133 +2016-07-01|-69.0|92.0|-92.42309|-0.20276 +2016-07-01|-69.0|93.0|-93.26171|-0.20433 +2016-07-01|-69.0|94.0|-94.10793|-0.20605 +2016-07-01|-69.0|95.0|-94.96244|-0.20793 +2016-07-01|-69.0|96.0|-95.82595|-0.20999 +2016-07-01|-69.0|97.0|-96.69924|-0.21223 +2016-07-01|-69.0|98.0|-97.58317|-0.21466 +2016-07-01|-69.0|99.0|-98.47862|-0.21731 +2016-07-01|-69.0|100.0|-99.38658|-0.22019 +2016-07-01|-69.0|101.0|-100.3081|-0.2233 +2016-07-01|-69.0|102.0|-101.24433|-0.22668 +2016-07-01|-69.0|103.0|-102.19651|-0.23032 +2016-07-01|-69.0|104.0|-103.16599|-0.23427 +2016-07-01|-69.0|105.0|-104.15423|-0.23852 +2016-07-01|-69.0|106.0|-105.16283|-0.24312 +2016-07-01|-69.0|107.0|-106.19353|-0.24808 +2016-07-01|-69.0|108.0|-107.24825|-0.25344 +2016-07-01|-69.0|109.0|-108.32906|-0.25921 +2016-07-01|-69.0|110.0|-109.43827|-0.26544 +2016-07-01|-69.0|111.0|-110.57838|-0.27216 +2016-07-01|-69.0|112.0|-111.75216|-0.27941 +2016-07-01|-69.0|113.0|-112.96268|-0.28722 +2016-07-01|-69.0|114.0|-114.21329|-0.29565 +2016-07-01|-69.0|115.0|-115.50771|-0.30474 +2016-07-01|-69.0|116.0|-116.85008|-0.31455 +2016-07-01|-69.0|117.0|-118.24494|-0.32513 +2016-07-01|-69.0|118.0|-119.69735|-0.33654 +2016-07-01|-69.0|119.0|-121.21293|-0.34885 +2016-07-01|-69.0|120.0|-122.79789|-0.36212 +2016-07-01|-69.0|121.0|-124.45914|-0.37641 +2016-07-01|-69.0|122.0|-126.20432|-0.3918 +2016-07-01|-69.0|123.0|-128.04191|-0.40834 +2016-07-01|-69.0|124.0|-129.98123|-0.42608 +2016-07-01|-69.0|125.0|-132.03255|-0.44508 +2016-07-01|-69.0|126.0|-134.2071|-0.46533 +2016-07-01|-69.0|127.0|-136.51704|-0.48683 +2016-07-01|-69.0|128.0|-138.97544|-0.5095 +2016-07-01|-69.0|129.0|-141.59609|-0.53322 +2016-07-01|-69.0|130.0|-144.39328|-0.55775 +2016-07-01|-69.0|131.0|-147.38134|-0.58274 +2016-07-01|-69.0|132.0|-150.57405|-0.60771 +2016-07-01|-69.0|133.0|-153.98371|-0.63197 +2016-07-01|-69.0|134.0|-157.61998|-0.65465 +2016-07-01|-69.0|135.0|-161.48841|-0.67466 +2016-07-01|-69.0|136.0|-165.5887|-0.69072 +2016-07-01|-69.0|137.0|-169.91294|-0.70145 +2016-07-01|-69.0|138.0|-174.44399|-0.70547 +2016-07-01|-69.0|139.0|-179.15439|-0.70156 +2016-07-01|-69.0|140.0|175.99374|-0.68888 +2016-07-01|-69.0|141.0|171.04756|-0.66711 +2016-07-01|-69.0|142.0|166.061|-0.63664 +2016-07-01|-69.0|143.0|161.09108|-0.59848 +2016-07-01|-69.0|144.0|156.19375|-0.55424 +2016-07-01|-69.0|145.0|151.41991|-0.50584 +2016-07-01|-69.0|146.0|146.81221|-0.45529 +2016-07-01|-69.0|147.0|142.40332|-0.40447 +2016-07-01|-69.0|148.0|138.21536|-0.35496 +2016-07-01|-69.0|149.0|134.26062|-0.30793 +2016-07-01|-69.0|150.0|130.54293|-0.26417 +2016-07-01|-69.0|151.0|127.0594|-0.22413 +2016-07-01|-69.0|152.0|123.80221|-0.18797 +2016-07-01|-69.0|153.0|120.7602|-0.15566 +2016-07-01|-69.0|154.0|117.92022|-0.127 +2016-07-01|-69.0|155.0|115.26814|-0.10175 +2016-07-01|-69.0|156.0|112.7896|-0.0796 +2016-07-01|-69.0|157.0|110.47056|-0.06024 +2016-07-01|-69.0|158.0|108.29758|-0.04336 +2016-07-01|-69.0|159.0|106.25808|-0.02867 +2016-07-01|-69.0|160.0|104.3404|-0.01591 +2016-07-01|-69.0|161.0|102.53383|-0.00484 +2016-07-01|-69.0|162.0|100.82861|0.00475 +2016-07-01|-69.0|163.0|99.2159|0.01306 +2016-07-01|-69.0|164.0|97.68768|0.02023 +2016-07-01|-69.0|165.0|96.23672|0.02642 +2016-07-01|-69.0|166.0|94.85653|0.03175 +2016-07-01|-69.0|167.0|93.54122|0.03632 +2016-07-01|-69.0|168.0|92.28551|0.04023 +2016-07-01|-69.0|169.0|91.08464|0.04355 +2016-07-01|-69.0|170.0|89.93432|0.04636 +2016-07-01|-69.0|171.0|88.83067|0.04872 +2016-07-01|-69.0|172.0|87.77019|0.05067 +2016-07-01|-69.0|173.0|86.74971|0.05227 +2016-07-01|-69.0|174.0|85.76636|0.05355 +2016-07-01|-69.0|175.0|84.81755|0.05454 +2016-07-01|-69.0|176.0|83.9009|0.05528 +2016-07-01|-69.0|177.0|83.01427|0.0558 +2016-07-01|-69.0|178.0|82.15569|0.0561 +2016-07-01|-69.0|179.0|81.32338|0.05623 +2016-07-01|-69.0|-1.0|-19.32158|-0.08297 +2016-07-01|-69.0|-2.0|-18.63773|-0.07994 +2016-07-01|-69.0|-3.0|-17.95998|-0.07695 +2016-07-01|-69.0|-4.0|-17.28833|-0.07401 +2016-07-01|-69.0|-5.0|-16.62276|-0.07112 +2016-07-01|-69.0|-6.0|-15.96322|-0.06829 +2016-07-01|-69.0|-7.0|-15.30965|-0.06553 +2016-07-01|-69.0|-8.0|-14.66199|-0.06284 +2016-07-01|-69.0|-9.0|-14.02013|-0.06022 +2016-07-01|-69.0|-10.0|-13.38397|-0.05769 +2016-07-01|-69.0|-11.0|-12.75339|-0.05523 +2016-07-01|-69.0|-12.0|-12.12825|-0.05287 +2016-07-01|-69.0|-13.0|-11.50838|-0.05061 +2016-07-01|-69.0|-14.0|-10.89363|-0.04844 +2016-07-01|-69.0|-15.0|-10.2838|-0.04637 +2016-07-01|-69.0|-16.0|-9.6787|-0.0444 +2016-07-01|-69.0|-17.0|-9.07811|-0.04254 +2016-07-01|-69.0|-18.0|-8.48182|-0.04079 +2016-07-01|-69.0|-19.0|-7.88959|-0.03915 +2016-07-01|-69.0|-20.0|-7.30117|-0.03763 +2016-07-01|-69.0|-21.0|-6.71631|-0.03621 +2016-07-01|-69.0|-22.0|-6.13476|-0.03492 +2016-07-01|-69.0|-23.0|-5.55624|-0.03373 +2016-07-01|-69.0|-24.0|-4.98048|-0.03267 +2016-07-01|-69.0|-25.0|-4.4072|-0.03171 +2016-07-01|-69.0|-26.0|-3.83612|-0.03087 +2016-07-01|-69.0|-27.0|-3.26696|-0.03014 +2016-07-01|-69.0|-28.0|-2.69944|-0.02953 +2016-07-01|-69.0|-29.0|-2.13326|-0.02902 +2016-07-01|-69.0|-30.0|-1.56816|-0.02862 +2016-07-01|-69.0|-31.0|-1.00385|-0.02832 +2016-07-01|-69.0|-32.0|-0.44006|-0.02812 +2016-07-01|-69.0|-33.0|0.12348|-0.02802 +2016-07-01|-69.0|-34.0|0.68704|-0.02801 +2016-07-01|-69.0|-35.0|1.25086|-0.02809 +2016-07-01|-69.0|-36.0|1.81519|-0.02825 +2016-07-01|-69.0|-37.0|2.38026|-0.0285 +2016-07-01|-69.0|-38.0|2.94631|-0.02882 +2016-07-01|-69.0|-39.0|3.51353|-0.02921 +2016-07-01|-69.0|-40.0|4.08214|-0.02966 +2016-07-01|-69.0|-41.0|4.65231|-0.03018 +2016-07-01|-69.0|-42.0|5.22422|-0.03075 +2016-07-01|-69.0|-43.0|5.79803|-0.03137 +2016-07-01|-69.0|-44.0|6.37388|-0.03203 +2016-07-01|-69.0|-45.0|6.9519|-0.03273 +2016-07-01|-69.0|-46.0|7.53219|-0.03346 +2016-07-01|-69.0|-47.0|8.11485|-0.03422 +2016-07-01|-69.0|-48.0|8.69996|-0.03501 +2016-07-01|-69.0|-49.0|9.28757|-0.0358 +2016-07-01|-69.0|-50.0|9.87774|-0.03661 +2016-07-01|-69.0|-51.0|10.47049|-0.03743 +2016-07-01|-69.0|-52.0|11.06582|-0.03825 +2016-07-01|-69.0|-53.0|11.66374|-0.03906 +2016-07-01|-69.0|-54.0|12.26423|-0.03986 +2016-07-01|-69.0|-55.0|12.86723|-0.04066 +2016-07-01|-69.0|-56.0|13.47271|-0.04143 +2016-07-01|-69.0|-57.0|14.08058|-0.04219 +2016-07-01|-69.0|-58.0|14.69078|-0.04292 +2016-07-01|-69.0|-59.0|15.30319|-0.04362 +2016-07-01|-69.0|-60.0|15.91771|-0.04429 +2016-07-01|-69.0|-61.0|16.53422|-0.04492 +2016-07-01|-69.0|-62.0|17.15258|-0.04552 +2016-07-01|-69.0|-63.0|17.77265|-0.04608 +2016-07-01|-69.0|-64.0|18.39425|-0.04659 +2016-07-01|-69.0|-65.0|19.01724|-0.04707 +2016-07-01|-69.0|-66.0|19.64143|-0.04749 +2016-07-01|-69.0|-67.0|20.26663|-0.04787 +2016-07-01|-69.0|-68.0|20.89265|-0.0482 +2016-07-01|-69.0|-69.0|21.5193|-0.04849 +2016-07-01|-69.0|-70.0|22.14636|-0.04872 +2016-07-01|-69.0|-71.0|22.77363|-0.0489 +2016-07-01|-69.0|-72.0|23.40089|-0.04903 +2016-07-01|-69.0|-73.0|24.02793|-0.04912 +2016-07-01|-69.0|-74.0|24.65453|-0.04915 +2016-07-01|-69.0|-75.0|25.28045|-0.04913 +2016-07-01|-69.0|-76.0|25.90549|-0.04906 +2016-07-01|-69.0|-77.0|26.52941|-0.04895 +2016-07-01|-69.0|-78.0|27.15199|-0.04878 +2016-07-01|-69.0|-79.0|27.77302|-0.04857 +2016-07-01|-69.0|-80.0|28.39227|-0.04831 +2016-07-01|-69.0|-81.0|29.00953|-0.04801 +2016-07-01|-69.0|-82.0|29.62459|-0.04767 +2016-07-01|-69.0|-83.0|30.23723|-0.04729 +2016-07-01|-69.0|-84.0|30.84725|-0.04686 +2016-07-01|-69.0|-85.0|31.45446|-0.0464 +2016-07-01|-69.0|-86.0|32.05866|-0.04589 +2016-07-01|-69.0|-87.0|32.65967|-0.04536 +2016-07-01|-69.0|-88.0|33.25731|-0.04479 +2016-07-01|-69.0|-89.0|33.8514|-0.04419 +2016-07-01|-69.0|-90.0|34.44178|-0.04356 +2016-07-01|-69.0|-91.0|35.0283|-0.04289 +2016-07-01|-69.0|-92.0|35.61081|-0.04221 +2016-07-01|-69.0|-93.0|36.18917|-0.04149 +2016-07-01|-69.0|-94.0|36.76326|-0.04076 +2016-07-01|-69.0|-95.0|37.33295|-0.04 +2016-07-01|-69.0|-96.0|37.89815|-0.03922 +2016-07-01|-69.0|-97.0|38.45875|-0.03842 +2016-07-01|-69.0|-98.0|39.01466|-0.0376 +2016-07-01|-69.0|-99.0|39.56581|-0.03676 +2016-07-01|-69.0|-100.0|40.11214|-0.03591 +2016-07-01|-69.0|-101.0|40.6536|-0.03505 +2016-07-01|-69.0|-102.0|41.19013|-0.03417 +2016-07-01|-69.0|-103.0|41.72171|-0.03328 +2016-07-01|-69.0|-104.0|42.24832|-0.03237 +2016-07-01|-69.0|-105.0|42.76995|-0.03146 +2016-07-01|-69.0|-106.0|43.28661|-0.03053 +2016-07-01|-69.0|-107.0|43.79832|-0.02959 +2016-07-01|-69.0|-108.0|44.3051|-0.02865 +2016-07-01|-69.0|-109.0|44.80698|-0.02769 +2016-07-01|-69.0|-110.0|45.30403|-0.02672 +2016-07-01|-69.0|-111.0|45.79631|-0.02575 +2016-07-01|-69.0|-112.0|46.28389|-0.02477 +2016-07-01|-69.0|-113.0|46.76685|-0.02377 +2016-07-01|-69.0|-114.0|47.2453|-0.02277 +2016-07-01|-69.0|-115.0|47.71934|-0.02176 +2016-07-01|-69.0|-116.0|48.1891|-0.02074 +2016-07-01|-69.0|-117.0|48.65469|-0.01971 +2016-07-01|-69.0|-118.0|49.11627|-0.01867 +2016-07-01|-69.0|-119.0|49.57399|-0.01762 +2016-07-01|-69.0|-120.0|50.028|-0.01656 +2016-07-01|-69.0|-121.0|50.47847|-0.01549 +2016-07-01|-69.0|-122.0|50.9256|-0.01441 +2016-07-01|-69.0|-123.0|51.36956|-0.01332 +2016-07-01|-69.0|-124.0|51.81055|-0.01221 +2016-07-01|-69.0|-125.0|52.24878|-0.01109 +2016-07-01|-69.0|-126.0|52.68447|-0.00995 +2016-07-01|-69.0|-127.0|53.11783|-0.00881 +2016-07-01|-69.0|-128.0|53.5491|-0.00764 +2016-07-01|-69.0|-129.0|53.97851|-0.00647 +2016-07-01|-69.0|-130.0|54.40631|-0.00528 +2016-07-01|-69.0|-131.0|54.83273|-0.00407 +2016-07-01|-69.0|-132.0|55.25805|-0.00284 +2016-07-01|-69.0|-133.0|55.68251|-0.00161 +2016-07-01|-69.0|-134.0|56.10638|-3.5E-4 +2016-07-01|-69.0|-135.0|56.52993|9.2E-4 +2016-07-01|-69.0|-136.0|56.95343|0.00221 +2016-07-01|-69.0|-137.0|57.37716|0.00352 +2016-07-01|-69.0|-138.0|57.8014|0.00484 +2016-07-01|-69.0|-139.0|58.22644|0.00617 +2016-07-01|-69.0|-140.0|58.65256|0.00753 +2016-07-01|-69.0|-141.0|59.08004|0.0089 +2016-07-01|-69.0|-142.0|59.50919|0.01028 +2016-07-01|-69.0|-143.0|59.94031|0.01168 +2016-07-01|-69.0|-144.0|60.37367|0.01309 +2016-07-01|-69.0|-145.0|60.8096|0.01451 +2016-07-01|-69.0|-146.0|61.24839|0.01595 +2016-07-01|-69.0|-147.0|61.69034|0.01739 +2016-07-01|-69.0|-148.0|62.13577|0.01885 +2016-07-01|-69.0|-149.0|62.58499|0.02032 +2016-07-01|-69.0|-150.0|63.03832|0.02179 +2016-07-01|-69.0|-151.0|63.49607|0.02327 +2016-07-01|-69.0|-152.0|63.95857|0.02475 +2016-07-01|-69.0|-153.0|64.42615|0.02623 +2016-07-01|-69.0|-154.0|64.89915|0.02772 +2016-07-01|-69.0|-155.0|65.3779|0.0292 +2016-07-01|-69.0|-156.0|65.86275|0.03068 +2016-07-01|-69.0|-157.0|66.35407|0.03215 +2016-07-01|-69.0|-158.0|66.85221|0.03361 +2016-07-01|-69.0|-159.0|67.35756|0.03507 +2016-07-01|-69.0|-160.0|67.8705|0.03651 +2016-07-01|-69.0|-161.0|68.39143|0.03793 +2016-07-01|-69.0|-162.0|68.92078|0.03933 +2016-07-01|-69.0|-163.0|69.45897|0.04071 +2016-07-01|-69.0|-164.0|70.00646|0.04207 +2016-07-01|-69.0|-165.0|70.56372|0.04339 +2016-07-01|-69.0|-166.0|71.13124|0.04468 +2016-07-01|-69.0|-167.0|71.70955|0.04593 +2016-07-01|-69.0|-168.0|72.2992|0.04714 +2016-07-01|-69.0|-169.0|72.90077|0.04831 +2016-07-01|-69.0|-170.0|73.51488|0.04942 +2016-07-01|-69.0|-171.0|74.14218|0.05047 +2016-07-01|-69.0|-172.0|74.78338|0.05146 +2016-07-01|-69.0|-173.0|75.43921|0.05238 +2016-07-01|-69.0|-174.0|76.1105|0.05322 +2016-07-01|-69.0|-175.0|76.79808|0.05398 +2016-07-01|-69.0|-176.0|77.5029|0.05465 +2016-07-01|-69.0|-177.0|78.22594|0.05521 +2016-07-01|-69.0|-178.0|78.96829|0.05567 +2016-07-01|-69.0|-179.0|79.73111|0.05599 +2016-07-01|-70.0|0.0|-20.11497|-0.08827 +2016-07-01|-70.0|1.0|-20.82007|-0.09117 +2016-07-01|-70.0|2.0|-21.53077|-0.09409 +2016-07-01|-70.0|3.0|-22.24703|-0.09703 +2016-07-01|-70.0|4.0|-22.96879|-0.09998 +2016-07-01|-70.0|5.0|-23.69597|-0.10295 +2016-07-01|-70.0|6.0|-24.4285|-0.10591 +2016-07-01|-70.0|7.0|-25.16627|-0.10887 +2016-07-01|-70.0|8.0|-25.90918|-0.11182 +2016-07-01|-70.0|9.0|-26.65712|-0.11476 +2016-07-01|-70.0|10.0|-27.40995|-0.11768 +2016-07-01|-70.0|11.0|-28.16754|-0.12058 +2016-07-01|-70.0|12.0|-28.92975|-0.12345 +2016-07-01|-70.0|13.0|-29.69643|-0.1263 +2016-07-01|-70.0|14.0|-30.46742|-0.1291 +2016-07-01|-70.0|15.0|-31.24255|-0.13187 +2016-07-01|-70.0|16.0|-32.02166|-0.1346 +2016-07-01|-70.0|17.0|-32.80457|-0.13728 +2016-07-01|-70.0|18.0|-33.5911|-0.13991 +2016-07-01|-70.0|19.0|-34.38107|-0.14249 +2016-07-01|-70.0|20.0|-35.17431|-0.14501 +2016-07-01|-70.0|21.0|-35.97061|-0.14747 +2016-07-01|-70.0|22.0|-36.76979|-0.14988 +2016-07-01|-70.0|23.0|-37.57168|-0.15222 +2016-07-01|-70.0|24.0|-38.37607|-0.1545 +2016-07-01|-70.0|25.0|-39.18278|-0.15671 +2016-07-01|-70.0|26.0|-39.99164|-0.15885 +2016-07-01|-70.0|27.0|-40.80245|-0.16092 +2016-07-01|-70.0|28.0|-41.61503|-0.16292 +2016-07-01|-70.0|29.0|-42.42921|-0.16485 +2016-07-01|-70.0|30.0|-43.24481|-0.16671 +2016-07-01|-70.0|31.0|-44.06166|-0.1685 +2016-07-01|-70.0|32.0|-44.8796|-0.17022 +2016-07-01|-70.0|33.0|-45.69847|-0.17186 +2016-07-01|-70.0|34.0|-46.5181|-0.17343 +2016-07-01|-70.0|35.0|-47.33836|-0.17493 +2016-07-01|-70.0|36.0|-48.1591|-0.17636 +2016-07-01|-70.0|37.0|-48.98017|-0.17771 +2016-07-01|-70.0|38.0|-49.80145|-0.179 +2016-07-01|-70.0|39.0|-50.62282|-0.18022 +2016-07-01|-70.0|40.0|-51.44415|-0.18137 +2016-07-01|-70.0|41.0|-52.26534|-0.18245 +2016-07-01|-70.0|42.0|-53.08629|-0.18347 +2016-07-01|-70.0|43.0|-53.9069|-0.18443 +2016-07-01|-70.0|44.0|-54.72708|-0.18532 +2016-07-01|-70.0|45.0|-55.54675|-0.18616 +2016-07-01|-70.0|46.0|-56.36585|-0.18693 +2016-07-01|-70.0|47.0|-57.1843|-0.18766 +2016-07-01|-70.0|48.0|-58.00206|-0.18832 +2016-07-01|-70.0|49.0|-58.81909|-0.18894 +2016-07-01|-70.0|50.0|-59.63533|-0.18951 +2016-07-01|-70.0|51.0|-60.45076|-0.19003 +2016-07-01|-70.0|52.0|-61.26537|-0.1905 +2016-07-01|-70.0|53.0|-62.07914|-0.19094 +2016-07-01|-70.0|54.0|-62.89206|-0.19133 +2016-07-01|-70.0|55.0|-63.70415|-0.19169 +2016-07-01|-70.0|56.0|-64.51541|-0.19202 +2016-07-01|-70.0|57.0|-65.32587|-0.19231 +2016-07-01|-70.0|58.0|-66.13556|-0.19258 +2016-07-01|-70.0|59.0|-66.94452|-0.19282 +2016-07-01|-70.0|60.0|-67.7528|-0.19304 +2016-07-01|-70.0|61.0|-68.56047|-0.19324 +2016-07-01|-70.0|62.0|-69.36758|-0.19342 +2016-07-01|-70.0|63.0|-70.17423|-0.19359 +2016-07-01|-70.0|64.0|-70.98048|-0.19375 +2016-07-01|-70.0|65.0|-71.78645|-0.19391 +2016-07-01|-70.0|66.0|-72.59223|-0.19406 +2016-07-01|-70.0|67.0|-73.39796|-0.19422 +2016-07-01|-70.0|68.0|-74.20374|-0.19438 +2016-07-01|-70.0|69.0|-75.00972|-0.19454 +2016-07-01|-70.0|70.0|-75.81605|-0.19472 +2016-07-01|-70.0|71.0|-76.62288|-0.19491 +2016-07-01|-70.0|72.0|-77.43039|-0.19513 +2016-07-01|-70.0|73.0|-78.23876|-0.19536 +2016-07-01|-70.0|74.0|-79.04818|-0.19562 +2016-07-01|-70.0|75.0|-79.85886|-0.19592 +2016-07-01|-70.0|76.0|-80.67101|-0.19624 +2016-07-01|-70.0|77.0|-81.48488|-0.19661 +2016-07-01|-70.0|78.0|-82.30071|-0.19702 +2016-07-01|-70.0|79.0|-83.11876|-0.19748 +2016-07-01|-70.0|80.0|-83.93931|-0.198 +2016-07-01|-70.0|81.0|-84.76266|-0.19857 +2016-07-01|-70.0|82.0|-85.58911|-0.19921 +2016-07-01|-70.0|83.0|-86.41901|-0.19991 +2016-07-01|-70.0|84.0|-87.25269|-0.20069 +2016-07-01|-70.0|85.0|-88.09054|-0.20154 +2016-07-01|-70.0|86.0|-88.93295|-0.20249 +2016-07-01|-70.0|87.0|-89.78034|-0.20352 +2016-07-01|-70.0|88.0|-90.63315|-0.20465 +2016-07-01|-70.0|89.0|-91.49186|-0.20589 +2016-07-01|-70.0|90.0|-92.35696|-0.20724 +2016-07-01|-70.0|91.0|-93.229|-0.2087 +2016-07-01|-70.0|92.0|-94.10854|-0.21029 +2016-07-01|-70.0|93.0|-94.99619|-0.21202 +2016-07-01|-70.0|94.0|-95.89259|-0.21389 +2016-07-01|-70.0|95.0|-96.79843|-0.21591 +2016-07-01|-70.0|96.0|-97.71446|-0.21809 +2016-07-01|-70.0|97.0|-98.64146|-0.22044 +2016-07-01|-70.0|98.0|-99.58027|-0.22297 +2016-07-01|-70.0|99.0|-100.5318|-0.2257 +2016-07-01|-70.0|100.0|-101.49702|-0.22863 +2016-07-01|-70.0|101.0|-102.47698|-0.23178 +2016-07-01|-70.0|102.0|-103.47279|-0.23517 +2016-07-01|-70.0|103.0|-104.48567|-0.23879 +2016-07-01|-70.0|104.0|-105.51692|-0.24268 +2016-07-01|-70.0|105.0|-106.56793|-0.24685 +2016-07-01|-70.0|106.0|-107.64023|-0.25132 +2016-07-01|-70.0|107.0|-108.73546|-0.25609 +2016-07-01|-70.0|108.0|-109.85539|-0.26121 +2016-07-01|-70.0|109.0|-111.00194|-0.26667 +2016-07-01|-70.0|110.0|-112.1772|-0.27252 +2016-07-01|-70.0|111.0|-113.38342|-0.27877 +2016-07-01|-70.0|112.0|-114.62307|-0.28545 +2016-07-01|-70.0|113.0|-115.8988|-0.29258 +2016-07-01|-70.0|114.0|-117.21352|-0.30019 +2016-07-01|-70.0|115.0|-118.57037|-0.30831 +2016-07-01|-70.0|116.0|-119.97278|-0.31698 +2016-07-01|-70.0|117.0|-121.42446|-0.32621 +2016-07-01|-70.0|118.0|-122.92947|-0.33604 +2016-07-01|-70.0|119.0|-124.49218|-0.34649 +2016-07-01|-70.0|120.0|-126.11735|-0.3576 +2016-07-01|-70.0|121.0|-127.8101|-0.36937 +2016-07-01|-70.0|122.0|-129.57598|-0.38184 +2016-07-01|-70.0|123.0|-131.42093|-0.395 +2016-07-01|-70.0|124.0|-133.35129|-0.40885 +2016-07-01|-70.0|125.0|-135.37381|-0.42337 +2016-07-01|-70.0|126.0|-137.49557|-0.43852 +2016-07-01|-70.0|127.0|-139.72395|-0.45423 +2016-07-01|-70.0|128.0|-142.06649|-0.47039 +2016-07-01|-70.0|129.0|-144.53079|-0.48687 +2016-07-01|-70.0|130.0|-147.12426|-0.50347 +2016-07-01|-70.0|131.0|-149.85385|-0.51993 +2016-07-01|-70.0|132.0|-152.72573|-0.53593 +2016-07-01|-70.0|133.0|-155.74482|-0.55107 +2016-07-01|-70.0|134.0|-158.91426|-0.56489 +2016-07-01|-70.0|135.0|-162.23485|-0.57685 +2016-07-01|-70.0|136.0|-165.70443|-0.58634 +2016-07-01|-70.0|137.0|-169.31726|-0.59277 +2016-07-01|-70.0|138.0|-173.06349|-0.59551 +2016-07-01|-70.0|139.0|-176.92888|-0.59403 +2016-07-01|-70.0|140.0|179.10533|-0.58791 +2016-07-01|-70.0|141.0|175.0621|-0.5769 +2016-07-01|-70.0|142.0|170.9679|-0.56097 +2016-07-01|-70.0|143.0|166.85172|-0.54035 +2016-07-01|-70.0|144.0|162.74367|-0.51548 +2016-07-01|-70.0|145.0|158.67361|-0.48703 +2016-07-01|-70.0|146.0|154.66967|-0.45581 +2016-07-01|-70.0|147.0|150.75701|-0.42269 +2016-07-01|-70.0|148.0|146.95699|-0.38856 +2016-07-01|-70.0|149.0|143.28656|-0.35423 +2016-07-01|-70.0|150.0|139.75821|-0.32043 +2016-07-01|-70.0|151.0|136.38008|-0.28774 +2016-07-01|-70.0|152.0|133.15644|-0.25658 +2016-07-01|-70.0|153.0|130.08821|-0.22728 +2016-07-01|-70.0|154.0|127.17357|-0.2 +2016-07-01|-70.0|155.0|124.40862|-0.17484 +2016-07-01|-70.0|156.0|121.78792|-0.1518 +2016-07-01|-70.0|157.0|119.30494|-0.13083 +2016-07-01|-70.0|158.0|116.95253|-0.11184 +2016-07-01|-70.0|159.0|114.7232|-0.09471 +2016-07-01|-70.0|160.0|112.60937|-0.07931 +2016-07-01|-70.0|161.0|110.60357|-0.0655 +2016-07-01|-70.0|162.0|108.69856|-0.05315 +2016-07-01|-70.0|163.0|106.8874|-0.04213 +2016-07-01|-70.0|164.0|105.16354|-0.0323 +2016-07-01|-70.0|165.0|103.52081|-0.02356 +2016-07-01|-70.0|166.0|101.95346|-0.01579 +2016-07-01|-70.0|167.0|100.45614|-0.0089 +2016-07-01|-70.0|168.0|99.02389|-0.0028 +2016-07-01|-70.0|169.0|97.65214|0.00259 +2016-07-01|-70.0|170.0|96.33667|0.00734 +2016-07-01|-70.0|171.0|95.07361|0.01151 +2016-07-01|-70.0|172.0|93.85936|0.01517 +2016-07-01|-70.0|173.0|92.69065|0.01837 +2016-07-01|-70.0|174.0|91.56446|0.02114 +2016-07-01|-70.0|175.0|90.478|0.02354 +2016-07-01|-70.0|176.0|89.42872|0.02559 +2016-07-01|-70.0|177.0|88.41427|0.02734 +2016-07-01|-70.0|178.0|87.43248|0.0288 +2016-07-01|-70.0|179.0|86.48134|0.03001 +2016-07-01|-70.0|-1.0|-19.41551|-0.0854 +2016-07-01|-70.0|-2.0|-18.7217|-0.08256 +2016-07-01|-70.0|-3.0|-18.03356|-0.07976 +2016-07-01|-70.0|-4.0|-17.35106|-0.077 +2016-07-01|-70.0|-5.0|-16.6742|-0.0743 +2016-07-01|-70.0|-6.0|-16.00292|-0.07164 +2016-07-01|-70.0|-7.0|-15.33719|-0.06905 +2016-07-01|-70.0|-8.0|-14.67693|-0.06652 +2016-07-01|-70.0|-9.0|-14.02206|-0.06406 +2016-07-01|-70.0|-10.0|-13.37248|-0.06167 +2016-07-01|-70.0|-11.0|-12.72808|-0.05935 +2016-07-01|-70.0|-12.0|-12.08875|-0.05712 +2016-07-01|-70.0|-13.0|-11.45435|-0.05497 +2016-07-01|-70.0|-14.0|-10.82471|-0.0529 +2016-07-01|-70.0|-15.0|-10.19969|-0.05093 +2016-07-01|-70.0|-16.0|-9.57911|-0.04905 +2016-07-01|-70.0|-17.0|-8.96278|-0.04726 +2016-07-01|-70.0|-18.0|-8.35051|-0.04558 +2016-07-01|-70.0|-19.0|-7.7421|-0.04399 +2016-07-01|-70.0|-20.0|-7.13732|-0.0425 +2016-07-01|-70.0|-21.0|-6.53596|-0.04112 +2016-07-01|-70.0|-22.0|-5.93778|-0.03983 +2016-07-01|-70.0|-23.0|-5.34257|-0.03866 +2016-07-01|-70.0|-24.0|-4.75006|-0.03758 +2016-07-01|-70.0|-25.0|-4.16002|-0.03661 +2016-07-01|-70.0|-26.0|-3.57221|-0.03574 +2016-07-01|-70.0|-27.0|-2.98636|-0.03497 +2016-07-01|-70.0|-28.0|-2.40224|-0.0343 +2016-07-01|-70.0|-29.0|-1.81959|-0.03373 +2016-07-01|-70.0|-30.0|-1.23817|-0.03325 +2016-07-01|-70.0|-31.0|-0.65772|-0.03287 +2016-07-01|-70.0|-32.0|-0.078|-0.03258 +2016-07-01|-70.0|-33.0|0.50121|-0.03238 +2016-07-01|-70.0|-34.0|1.08017|-0.03227 +2016-07-01|-70.0|-35.0|1.65909|-0.03223 +2016-07-01|-70.0|-36.0|2.2382|-0.03228 +2016-07-01|-70.0|-37.0|2.8177|-0.0324 +2016-07-01|-70.0|-38.0|3.39779|-0.03259 +2016-07-01|-70.0|-39.0|3.97868|-0.03284 +2016-07-01|-70.0|-40.0|4.56054|-0.03316 +2016-07-01|-70.0|-41.0|5.14355|-0.03353 +2016-07-01|-70.0|-42.0|5.72786|-0.03396 +2016-07-01|-70.0|-43.0|6.31361|-0.03443 +2016-07-01|-70.0|-44.0|6.90095|-0.03495 +2016-07-01|-70.0|-45.0|7.48999|-0.03551 +2016-07-01|-70.0|-46.0|8.08084|-0.03609 +2016-07-01|-70.0|-47.0|8.67359|-0.03671 +2016-07-01|-70.0|-48.0|9.26832|-0.03735 +2016-07-01|-70.0|-49.0|9.86509|-0.03801 +2016-07-01|-70.0|-50.0|10.46396|-0.03869 +2016-07-01|-70.0|-51.0|11.06496|-0.03937 +2016-07-01|-70.0|-52.0|11.6681|-0.04006 +2016-07-01|-70.0|-53.0|12.2734|-0.04075 +2016-07-01|-70.0|-54.0|12.88085|-0.04144 +2016-07-01|-70.0|-55.0|13.49043|-0.04212 +2016-07-01|-70.0|-56.0|14.10209|-0.04279 +2016-07-01|-70.0|-57.0|14.7158|-0.04345 +2016-07-01|-70.0|-58.0|15.33149|-0.04408 +2016-07-01|-70.0|-59.0|15.9491|-0.0447 +2016-07-01|-70.0|-60.0|16.56852|-0.04529 +2016-07-01|-70.0|-61.0|17.18967|-0.04586 +2016-07-01|-70.0|-62.0|17.81244|-0.0464 +2016-07-01|-70.0|-63.0|18.43671|-0.0469 +2016-07-01|-70.0|-64.0|19.06235|-0.04737 +2016-07-01|-70.0|-65.0|19.68923|-0.04781 +2016-07-01|-70.0|-66.0|20.3172|-0.0482 +2016-07-01|-70.0|-67.0|20.94611|-0.04856 +2016-07-01|-70.0|-68.0|21.5758|-0.04888 +2016-07-01|-70.0|-69.0|22.2061|-0.04916 +2016-07-01|-70.0|-70.0|22.83685|-0.04939 +2016-07-01|-70.0|-71.0|23.46786|-0.04958 +2016-07-01|-70.0|-72.0|24.09896|-0.04973 +2016-07-01|-70.0|-73.0|24.72996|-0.04983 +2016-07-01|-70.0|-74.0|25.36067|-0.04989 +2016-07-01|-70.0|-75.0|25.99092|-0.04991 +2016-07-01|-70.0|-76.0|26.6205|-0.04988 +2016-07-01|-70.0|-77.0|27.24924|-0.04982 +2016-07-01|-70.0|-78.0|27.87693|-0.0497 +2016-07-01|-70.0|-79.0|28.50339|-0.04955 +2016-07-01|-70.0|-80.0|29.12844|-0.04936 +2016-07-01|-70.0|-81.0|29.75188|-0.04913 +2016-07-01|-70.0|-82.0|30.37353|-0.04885 +2016-07-01|-70.0|-83.0|30.99322|-0.04854 +2016-07-01|-70.0|-84.0|31.61076|-0.0482 +2016-07-01|-70.0|-85.0|32.22599|-0.04782 +2016-07-01|-70.0|-86.0|32.83875|-0.0474 +2016-07-01|-70.0|-87.0|33.44886|-0.04695 +2016-07-01|-70.0|-88.0|34.05617|-0.04647 +2016-07-01|-70.0|-89.0|34.66054|-0.04596 +2016-07-01|-70.0|-90.0|35.26181|-0.04543 +2016-07-01|-70.0|-91.0|35.85987|-0.04486 +2016-07-01|-70.0|-92.0|36.45457|-0.04427 +2016-07-01|-70.0|-93.0|37.0458|-0.04366 +2016-07-01|-70.0|-94.0|37.63345|-0.04302 +2016-07-01|-70.0|-95.0|38.21742|-0.04236 +2016-07-01|-70.0|-96.0|38.7976|-0.04168 +2016-07-01|-70.0|-97.0|39.37393|-0.04098 +2016-07-01|-70.0|-98.0|39.94631|-0.04026 +2016-07-01|-70.0|-99.0|40.51468|-0.03952 +2016-07-01|-70.0|-100.0|41.079|-0.03877 +2016-07-01|-70.0|-101.0|41.63921|-0.03801 +2016-07-01|-70.0|-102.0|42.19527|-0.03723 +2016-07-01|-70.0|-103.0|42.74717|-0.03643 +2016-07-01|-70.0|-104.0|43.29488|-0.03563 +2016-07-01|-70.0|-105.0|43.8384|-0.03481 +2016-07-01|-70.0|-106.0|44.37774|-0.03398 +2016-07-01|-70.0|-107.0|44.91292|-0.03314 +2016-07-01|-70.0|-108.0|45.44395|-0.03229 +2016-07-01|-70.0|-109.0|45.97089|-0.03143 +2016-07-01|-70.0|-110.0|46.49377|-0.03057 +2016-07-01|-70.0|-111.0|47.01266|-0.02969 +2016-07-01|-70.0|-112.0|47.52763|-0.02881 +2016-07-01|-70.0|-113.0|48.03876|-0.02791 +2016-07-01|-70.0|-114.0|48.54614|-0.02701 +2016-07-01|-70.0|-115.0|49.04987|-0.0261 +2016-07-01|-70.0|-116.0|49.55006|-0.02518 +2016-07-01|-70.0|-117.0|50.04684|-0.02425 +2016-07-01|-70.0|-118.0|50.54034|-0.02331 +2016-07-01|-70.0|-119.0|51.0307|-0.02237 +2016-07-01|-70.0|-120.0|51.51807|-0.02141 +2016-07-01|-70.0|-121.0|52.00261|-0.02045 +2016-07-01|-70.0|-122.0|52.48449|-0.01948 +2016-07-01|-70.0|-123.0|52.96389|-0.0185 +2016-07-01|-70.0|-124.0|53.441|-0.0175 +2016-07-01|-70.0|-125.0|53.91602|-0.0165 +2016-07-01|-70.0|-126.0|54.38915|-0.01549 +2016-07-01|-70.0|-127.0|54.8606|-0.01446 +2016-07-01|-70.0|-128.0|55.33059|-0.01343 +2016-07-01|-70.0|-129.0|55.79935|-0.01238 +2016-07-01|-70.0|-130.0|56.26711|-0.01133 +2016-07-01|-70.0|-131.0|56.73412|-0.01026 +2016-07-01|-70.0|-132.0|57.20063|-0.00918 +2016-07-01|-70.0|-133.0|57.66688|-0.00809 +2016-07-01|-70.0|-134.0|58.13313|-0.00699 +2016-07-01|-70.0|-135.0|58.59967|-0.00587 +2016-07-01|-70.0|-136.0|59.06674|-0.00475 +2016-07-01|-70.0|-137.0|59.53464|-0.00361 +2016-07-01|-70.0|-138.0|60.00364|-0.00247 +2016-07-01|-70.0|-139.0|60.47403|-0.00131 +2016-07-01|-70.0|-140.0|60.94611|-1.4E-4 +2016-07-01|-70.0|-141.0|61.42016|0.00103 +2016-07-01|-70.0|-142.0|61.8965|0.00222 +2016-07-01|-70.0|-143.0|62.37543|0.00341 +2016-07-01|-70.0|-144.0|62.85726|0.0046 +2016-07-01|-70.0|-145.0|63.34231|0.00581 +2016-07-01|-70.0|-146.0|63.8309|0.00702 +2016-07-01|-70.0|-147.0|64.32336|0.00823 +2016-07-01|-70.0|-148.0|64.82002|0.00944 +2016-07-01|-70.0|-149.0|65.32123|0.01065 +2016-07-01|-70.0|-150.0|65.82732|0.01187 +2016-07-01|-70.0|-151.0|66.33865|0.01308 +2016-07-01|-70.0|-152.0|66.85558|0.01428 +2016-07-01|-70.0|-153.0|67.37848|0.01548 +2016-07-01|-70.0|-154.0|67.90773|0.01666 +2016-07-01|-70.0|-155.0|68.44372|0.01784 +2016-07-01|-70.0|-156.0|68.98684|0.019 +2016-07-01|-70.0|-157.0|69.53751|0.02014 +2016-07-01|-70.0|-158.0|70.09615|0.02126 +2016-07-01|-70.0|-159.0|70.6632|0.02236 +2016-07-01|-70.0|-160.0|71.23912|0.02343 +2016-07-01|-70.0|-161.0|71.82438|0.02448 +2016-07-01|-70.0|-162.0|72.41946|0.02548 +2016-07-01|-70.0|-163.0|73.02489|0.02645 +2016-07-01|-70.0|-164.0|73.6412|0.02738 +2016-07-01|-70.0|-165.0|74.26895|0.02825 +2016-07-01|-70.0|-166.0|74.90874|0.02908 +2016-07-01|-70.0|-167.0|75.56118|0.02984 +2016-07-01|-70.0|-168.0|76.22694|0.03055 +2016-07-01|-70.0|-169.0|76.90672|0.03118 +2016-07-01|-70.0|-170.0|77.60124|0.03173 +2016-07-01|-70.0|-171.0|78.31129|0.0322 +2016-07-01|-70.0|-172.0|79.03771|0.03257 +2016-07-01|-70.0|-173.0|79.78137|0.03285 +2016-07-01|-70.0|-174.0|80.54324|0.03301 +2016-07-01|-70.0|-175.0|81.32433|0.03305 +2016-07-01|-70.0|-176.0|82.12571|0.03296 +2016-07-01|-70.0|-177.0|82.94857|0.03272 +2016-07-01|-70.0|-178.0|83.79416|0.03232 +2016-07-01|-70.0|-179.0|84.66382|0.03175 +2016-07-01|-71.0|0.0|-20.24318|-0.09054 +2016-07-01|-71.0|1.0|-20.95751|-0.09325 +2016-07-01|-71.0|2.0|-21.67703|-0.09597 +2016-07-01|-71.0|3.0|-22.40172|-0.09872 +2016-07-01|-71.0|4.0|-23.13152|-0.10148 +2016-07-01|-71.0|5.0|-23.86636|-0.10424 +2016-07-01|-71.0|6.0|-24.60619|-0.10701 +2016-07-01|-71.0|7.0|-25.35092|-0.10978 +2016-07-01|-71.0|8.0|-26.10046|-0.11254 +2016-07-01|-71.0|9.0|-26.85471|-0.1153 +2016-07-01|-71.0|10.0|-27.61358|-0.11804 +2016-07-01|-71.0|11.0|-28.37693|-0.12076 +2016-07-01|-71.0|12.0|-29.14466|-0.12346 +2016-07-01|-71.0|13.0|-29.91663|-0.12613 +2016-07-01|-71.0|14.0|-30.69271|-0.12878 +2016-07-01|-71.0|15.0|-31.47276|-0.13139 +2016-07-01|-71.0|16.0|-32.25663|-0.13396 +2016-07-01|-71.0|17.0|-33.04418|-0.1365 +2016-07-01|-71.0|18.0|-33.83525|-0.13899 +2016-07-01|-71.0|19.0|-34.62969|-0.14144 +2016-07-01|-71.0|20.0|-35.42734|-0.14385 +2016-07-01|-71.0|21.0|-36.22803|-0.1462 +2016-07-01|-71.0|22.0|-37.03162|-0.1485 +2016-07-01|-71.0|23.0|-37.83793|-0.15074 +2016-07-01|-71.0|24.0|-38.64681|-0.15293 +2016-07-01|-71.0|25.0|-39.45809|-0.15507 +2016-07-01|-71.0|26.0|-40.27162|-0.15714 +2016-07-01|-71.0|27.0|-41.08723|-0.15915 +2016-07-01|-71.0|28.0|-41.90478|-0.16111 +2016-07-01|-71.0|29.0|-42.7241|-0.163 +2016-07-01|-71.0|30.0|-43.54505|-0.16482 +2016-07-01|-71.0|31.0|-44.36747|-0.16659 +2016-07-01|-71.0|32.0|-45.19124|-0.16829 +2016-07-01|-71.0|33.0|-46.0162|-0.16993 +2016-07-01|-71.0|34.0|-46.84223|-0.1715 +2016-07-01|-71.0|35.0|-47.66919|-0.17301 +2016-07-01|-71.0|36.0|-48.49695|-0.17446 +2016-07-01|-71.0|37.0|-49.32541|-0.17584 +2016-07-01|-71.0|38.0|-50.15445|-0.17717 +2016-07-01|-71.0|39.0|-50.98396|-0.17843 +2016-07-01|-71.0|40.0|-51.81384|-0.17964 +2016-07-01|-71.0|41.0|-52.644|-0.18078 +2016-07-01|-71.0|42.0|-53.47435|-0.18187 +2016-07-01|-71.0|43.0|-54.30481|-0.1829 +2016-07-01|-71.0|44.0|-55.13531|-0.18388 +2016-07-01|-71.0|45.0|-55.96578|-0.1848 +2016-07-01|-71.0|46.0|-56.79617|-0.18568 +2016-07-01|-71.0|47.0|-57.62642|-0.1865 +2016-07-01|-71.0|48.0|-58.4565|-0.18728 +2016-07-01|-71.0|49.0|-59.28636|-0.18801 +2016-07-01|-71.0|50.0|-60.11598|-0.1887 +2016-07-01|-71.0|51.0|-60.94535|-0.18935 +2016-07-01|-71.0|52.0|-61.77444|-0.18995 +2016-07-01|-71.0|53.0|-62.60326|-0.19052 +2016-07-01|-71.0|54.0|-63.43182|-0.19106 +2016-07-01|-71.0|55.0|-64.26012|-0.19157 +2016-07-01|-71.0|56.0|-65.0882|-0.19204 +2016-07-01|-71.0|57.0|-65.91607|-0.19249 +2016-07-01|-71.0|58.0|-66.74379|-0.19291 +2016-07-01|-71.0|59.0|-67.5714|-0.19332 +2016-07-01|-71.0|60.0|-68.39895|-0.1937 +2016-07-01|-71.0|61.0|-69.22652|-0.19407 +2016-07-01|-71.0|62.0|-70.05418|-0.19443 +2016-07-01|-71.0|63.0|-70.88201|-0.19477 +2016-07-01|-71.0|64.0|-71.71011|-0.19511 +2016-07-01|-71.0|65.0|-72.53859|-0.19544 +2016-07-01|-71.0|66.0|-73.36754|-0.19578 +2016-07-01|-71.0|67.0|-74.19711|-0.19611 +2016-07-01|-71.0|68.0|-75.02742|-0.19646 +2016-07-01|-71.0|69.0|-75.85861|-0.19681 +2016-07-01|-71.0|70.0|-76.69085|-0.19717 +2016-07-01|-71.0|71.0|-77.52429|-0.19755 +2016-07-01|-71.0|72.0|-78.35912|-0.19795 +2016-07-01|-71.0|73.0|-79.19552|-0.19837 +2016-07-01|-71.0|74.0|-80.0337|-0.19882 +2016-07-01|-71.0|75.0|-80.87386|-0.1993 +2016-07-01|-71.0|76.0|-81.71624|-0.19981 +2016-07-01|-71.0|77.0|-82.56107|-0.20036 +2016-07-01|-71.0|78.0|-83.40861|-0.20095 +2016-07-01|-71.0|79.0|-84.25914|-0.20159 +2016-07-01|-71.0|80.0|-85.11292|-0.20229 +2016-07-01|-71.0|81.0|-85.97028|-0.20303 +2016-07-01|-71.0|82.0|-86.83152|-0.20384 +2016-07-01|-71.0|83.0|-87.69699|-0.20471 +2016-07-01|-71.0|84.0|-88.56704|-0.20565 +2016-07-01|-71.0|85.0|-89.44205|-0.20667 +2016-07-01|-71.0|86.0|-90.32242|-0.20776 +2016-07-01|-71.0|87.0|-91.20857|-0.20894 +2016-07-01|-71.0|88.0|-92.10096|-0.21022 +2016-07-01|-71.0|89.0|-93.00005|-0.21158 +2016-07-01|-71.0|90.0|-93.90635|-0.21305 +2016-07-01|-71.0|91.0|-94.82039|-0.21464 +2016-07-01|-71.0|92.0|-95.74274|-0.21633 +2016-07-01|-71.0|93.0|-96.67398|-0.21815 +2016-07-01|-71.0|94.0|-97.61478|-0.2201 +2016-07-01|-71.0|95.0|-98.56578|-0.22218 +2016-07-01|-71.0|96.0|-99.52773|-0.22442 +2016-07-01|-71.0|97.0|-100.50137|-0.2268 +2016-07-01|-71.0|98.0|-101.48753|-0.22935 +2016-07-01|-71.0|99.0|-102.48707|-0.23206 +2016-07-01|-71.0|100.0|-103.50092|-0.23496 +2016-07-01|-71.0|101.0|-104.53006|-0.23805 +2016-07-01|-71.0|102.0|-105.57554|-0.24134 +2016-07-01|-71.0|103.0|-106.6385|-0.24485 +2016-07-01|-71.0|104.0|-107.72013|-0.24858 +2016-07-01|-71.0|105.0|-108.82172|-0.25254 +2016-07-01|-71.0|106.0|-109.94465|-0.25675 +2016-07-01|-71.0|107.0|-111.09038|-0.26122 +2016-07-01|-71.0|108.0|-112.26051|-0.26597 +2016-07-01|-71.0|109.0|-113.4567|-0.27101 +2016-07-01|-71.0|110.0|-114.68079|-0.27635 +2016-07-01|-71.0|111.0|-115.9347|-0.282 +2016-07-01|-71.0|112.0|-117.22051|-0.28799 +2016-07-01|-71.0|113.0|-118.54045|-0.29433 +2016-07-01|-71.0|114.0|-119.89691|-0.30103 +2016-07-01|-71.0|115.0|-121.29243|-0.3081 +2016-07-01|-71.0|116.0|-122.72973|-0.31557 +2016-07-01|-71.0|117.0|-124.21172|-0.32343 +2016-07-01|-71.0|118.0|-125.74151|-0.3317 +2016-07-01|-71.0|119.0|-127.32237|-0.34039 +2016-07-01|-71.0|120.0|-128.95779|-0.3495 +2016-07-01|-71.0|121.0|-130.65146|-0.35902 +2016-07-01|-71.0|122.0|-132.40724|-0.36895 +2016-07-01|-71.0|123.0|-134.22916|-0.37928 +2016-07-01|-71.0|124.0|-136.12142|-0.38996 +2016-07-01|-71.0|125.0|-138.08831|-0.40098 +2016-07-01|-71.0|126.0|-140.13422|-0.41226 +2016-07-01|-71.0|127.0|-142.26351|-0.42374 +2016-07-01|-71.0|128.0|-144.48048|-0.43533 +2016-07-01|-71.0|129.0|-146.78925|-0.44691 +2016-07-01|-71.0|130.0|-149.19361|-0.45834 +2016-07-01|-71.0|131.0|-151.69688|-0.46945 +2016-07-01|-71.0|132.0|-154.3017|-0.48002 +2016-07-01|-71.0|133.0|-157.00985|-0.48985 +2016-07-01|-71.0|134.0|-159.82198|-0.49865 +2016-07-01|-71.0|135.0|-162.7374|-0.50614 +2016-07-01|-71.0|136.0|-165.75379|-0.51203 +2016-07-01|-71.0|137.0|-168.86699|-0.51601 +2016-07-01|-71.0|138.0|-172.07083|-0.51778 +2016-07-01|-71.0|139.0|-175.357|-0.51708 +2016-07-01|-71.0|140.0|-178.71503|-0.51369 +2016-07-01|-71.0|141.0|177.86761|-0.50745 +2016-07-01|-71.0|142.0|174.40532|-0.4983 +2016-07-01|-71.0|143.0|170.91397|-0.48627 +2016-07-01|-71.0|144.0|167.41045|-0.47149 +2016-07-01|-71.0|145.0|163.91216|-0.45418 +2016-07-01|-71.0|146.0|160.43636|-0.43465 +2016-07-01|-71.0|147.0|156.99966|-0.41329 +2016-07-01|-71.0|148.0|153.61744|-0.39052 +2016-07-01|-71.0|149.0|150.30346|-0.36677 +2016-07-01|-71.0|150.0|147.06954|-0.34248 +2016-07-01|-71.0|151.0|143.92539|-0.31805 +2016-07-01|-71.0|152.0|140.87855|-0.29384 +2016-07-01|-71.0|153.0|137.93446|-0.27016 +2016-07-01|-71.0|154.0|135.09659|-0.24726 +2016-07-01|-71.0|155.0|132.36668|-0.22533 +2016-07-01|-71.0|156.0|129.7449|-0.20452 +2016-07-01|-71.0|157.0|127.2302|-0.18491 +2016-07-01|-71.0|158.0|124.82047|-0.16656 +2016-07-01|-71.0|159.0|122.5128|-0.14947 +2016-07-01|-71.0|160.0|120.30371|-0.13363 +2016-07-01|-71.0|161.0|118.18929|-0.11902 +2016-07-01|-71.0|162.0|116.16536|-0.10559 +2016-07-01|-71.0|163.0|114.2276|-0.09327 +2016-07-01|-71.0|164.0|112.37165|-0.08201 +2016-07-01|-71.0|165.0|110.59316|-0.07174 +2016-07-01|-71.0|166.0|108.88788|-0.06239 +2016-07-01|-71.0|167.0|107.25171|-0.0539 +2016-07-01|-71.0|168.0|105.68066|-0.04619 +2016-07-01|-71.0|169.0|104.17097|-0.03922 +2016-07-01|-71.0|170.0|102.71903|-0.03291 +2016-07-01|-71.0|171.0|101.32146|-0.02722 +2016-07-01|-71.0|172.0|99.97503|-0.0221 +2016-07-01|-71.0|173.0|98.67675|-0.0175 +2016-07-01|-71.0|174.0|97.42378|-0.01337 +2016-07-01|-71.0|175.0|96.21347|-0.00968 +2016-07-01|-71.0|176.0|95.04336|-0.00639 +2016-07-01|-71.0|177.0|93.91113|-0.00346 +2016-07-01|-71.0|178.0|92.81462|-8.7E-4 +2016-07-01|-71.0|179.0|91.7518|0.00141 +2016-07-01|-71.0|-1.0|-19.53407|-0.08786 +2016-07-01|-71.0|-2.0|-18.83019|-0.08521 +2016-07-01|-71.0|-3.0|-18.13156|-0.08259 +2016-07-01|-71.0|-4.0|-17.43815|-0.08002 +2016-07-01|-71.0|-5.0|-16.74994|-0.07749 +2016-07-01|-71.0|-6.0|-16.06691|-0.07501 +2016-07-01|-71.0|-7.0|-15.389|-0.07258 +2016-07-01|-71.0|-8.0|-14.71614|-0.07021 +2016-07-01|-71.0|-9.0|-14.04828|-0.0679 +2016-07-01|-71.0|-10.0|-13.38532|-0.06565 +2016-07-01|-71.0|-11.0|-12.72716|-0.06347 +2016-07-01|-71.0|-12.0|-12.07371|-0.06136 +2016-07-01|-71.0|-13.0|-11.42483|-0.05933 +2016-07-01|-71.0|-14.0|-10.7804|-0.05737 +2016-07-01|-71.0|-15.0|-10.14027|-0.0555 +2016-07-01|-71.0|-16.0|-9.5043|-0.05371 +2016-07-01|-71.0|-17.0|-8.87231|-0.052 +2016-07-01|-71.0|-18.0|-8.24415|-0.05038 +2016-07-01|-71.0|-19.0|-7.61963|-0.04885 +2016-07-01|-71.0|-20.0|-6.99856|-0.04741 +2016-07-01|-71.0|-21.0|-6.38075|-0.04606 +2016-07-01|-71.0|-22.0|-5.766|-0.0448 +2016-07-01|-71.0|-23.0|-5.15411|-0.04363 +2016-07-01|-71.0|-24.0|-4.54487|-0.04255 +2016-07-01|-71.0|-25.0|-3.93805|-0.04157 +2016-07-01|-71.0|-26.0|-3.33345|-0.04068 +2016-07-01|-71.0|-27.0|-2.73085|-0.03988 +2016-07-01|-71.0|-28.0|-2.13003|-0.03917 +2016-07-01|-71.0|-29.0|-1.53076|-0.03855 +2016-07-01|-71.0|-30.0|-0.93284|-0.03802 +2016-07-01|-71.0|-31.0|-0.33604|-0.03757 +2016-07-01|-71.0|-32.0|0.25986|-0.0372 +2016-07-01|-71.0|-33.0|0.85506|-0.03691 +2016-07-01|-71.0|-34.0|1.44977|-0.03671 +2016-07-01|-71.0|-35.0|2.04419|-0.03657 +2016-07-01|-71.0|-36.0|2.63851|-0.03651 +2016-07-01|-71.0|-37.0|3.23294|-0.03652 +2016-07-01|-71.0|-38.0|3.82764|-0.03659 +2016-07-01|-71.0|-39.0|4.42279|-0.03672 +2016-07-01|-71.0|-40.0|5.01856|-0.03691 +2016-07-01|-71.0|-41.0|5.61511|-0.03716 +2016-07-01|-71.0|-42.0|6.21257|-0.03745 +2016-07-01|-71.0|-43.0|6.81108|-0.0378 +2016-07-01|-71.0|-44.0|7.41078|-0.03818 +2016-07-01|-71.0|-45.0|8.01176|-0.0386 +2016-07-01|-71.0|-46.0|8.61414|-0.03905 +2016-07-01|-71.0|-47.0|9.218|-0.03954 +2016-07-01|-71.0|-48.0|9.82342|-0.04004 +2016-07-01|-71.0|-49.0|10.43046|-0.04057 +2016-07-01|-71.0|-50.0|11.03919|-0.04112 +2016-07-01|-71.0|-51.0|11.64964|-0.04168 +2016-07-01|-71.0|-52.0|12.26184|-0.04225 +2016-07-01|-71.0|-53.0|12.8758|-0.04282 +2016-07-01|-71.0|-54.0|13.49154|-0.0434 +2016-07-01|-71.0|-55.0|14.10904|-0.04397 +2016-07-01|-71.0|-56.0|14.72828|-0.04454 +2016-07-01|-71.0|-57.0|15.34924|-0.0451 +2016-07-01|-71.0|-58.0|15.97187|-0.04565 +2016-07-01|-71.0|-59.0|16.59613|-0.04619 +2016-07-01|-71.0|-60.0|17.22193|-0.0467 +2016-07-01|-71.0|-61.0|17.84922|-0.0472 +2016-07-01|-71.0|-62.0|18.47792|-0.04767 +2016-07-01|-71.0|-63.0|19.10792|-0.04812 +2016-07-01|-71.0|-64.0|19.73913|-0.04854 +2016-07-01|-71.0|-65.0|20.37144|-0.04894 +2016-07-01|-71.0|-66.0|21.00474|-0.0493 +2016-07-01|-71.0|-67.0|21.6389|-0.04963 +2016-07-01|-71.0|-68.0|22.27379|-0.04993 +2016-07-01|-71.0|-69.0|22.90928|-0.0502 +2016-07-01|-71.0|-70.0|23.54522|-0.05042 +2016-07-01|-71.0|-71.0|24.18148|-0.05062 +2016-07-01|-71.0|-72.0|24.81791|-0.05077 +2016-07-01|-71.0|-73.0|25.45435|-0.0509 +2016-07-01|-71.0|-74.0|26.09065|-0.05098 +2016-07-01|-71.0|-75.0|26.72665|-0.05102 +2016-07-01|-71.0|-76.0|27.36219|-0.05103 +2016-07-01|-71.0|-77.0|27.99712|-0.051 +2016-07-01|-71.0|-78.0|28.63128|-0.05094 +2016-07-01|-71.0|-79.0|29.26451|-0.05084 +2016-07-01|-71.0|-80.0|29.89664|-0.0507 +2016-07-01|-71.0|-81.0|30.52753|-0.05053 +2016-07-01|-71.0|-82.0|31.15702|-0.05032 +2016-07-01|-71.0|-83.0|31.78496|-0.05008 +2016-07-01|-71.0|-84.0|32.41119|-0.04981 +2016-07-01|-71.0|-85.0|33.03558|-0.04951 +2016-07-01|-71.0|-86.0|33.65798|-0.04917 +2016-07-01|-71.0|-87.0|34.27826|-0.04881 +2016-07-01|-71.0|-88.0|34.89628|-0.04842 +2016-07-01|-71.0|-89.0|35.51191|-0.048 +2016-07-01|-71.0|-90.0|36.12505|-0.04755 +2016-07-01|-71.0|-91.0|36.73556|-0.04708 +2016-07-01|-71.0|-92.0|37.34334|-0.04658 +2016-07-01|-71.0|-93.0|37.9483|-0.04606 +2016-07-01|-71.0|-94.0|38.55033|-0.04552 +2016-07-01|-71.0|-95.0|39.14935|-0.04496 +2016-07-01|-71.0|-96.0|39.74529|-0.04438 +2016-07-01|-71.0|-97.0|40.33806|-0.04378 +2016-07-01|-71.0|-98.0|40.92761|-0.04317 +2016-07-01|-71.0|-99.0|41.51388|-0.04253 +2016-07-01|-71.0|-100.0|42.09683|-0.04189 +2016-07-01|-71.0|-101.0|42.67641|-0.04122 +2016-07-01|-71.0|-102.0|43.25261|-0.04055 +2016-07-01|-71.0|-103.0|43.8254|-0.03986 +2016-07-01|-71.0|-104.0|44.39478|-0.03916 +2016-07-01|-71.0|-105.0|44.96074|-0.03844 +2016-07-01|-71.0|-106.0|45.52329|-0.03772 +2016-07-01|-71.0|-107.0|46.08246|-0.03699 +2016-07-01|-71.0|-108.0|46.63827|-0.03624 +2016-07-01|-71.0|-109.0|47.19075|-0.03549 +2016-07-01|-71.0|-110.0|47.73997|-0.03473 +2016-07-01|-71.0|-111.0|48.28598|-0.03396 +2016-07-01|-71.0|-112.0|48.82885|-0.03318 +2016-07-01|-71.0|-113.0|49.36864|-0.0324 +2016-07-01|-71.0|-114.0|49.90546|-0.03161 +2016-07-01|-71.0|-115.0|50.43941|-0.03081 +2016-07-01|-71.0|-116.0|50.97057|-0.03 +2016-07-01|-71.0|-117.0|51.49908|-0.02919 +2016-07-01|-71.0|-118.0|52.02507|-0.02837 +2016-07-01|-71.0|-119.0|52.54865|-0.02754 +2016-07-01|-71.0|-120.0|53.06999|-0.0267 +2016-07-01|-71.0|-121.0|53.58923|-0.02586 +2016-07-01|-71.0|-122.0|54.10653|-0.02501 +2016-07-01|-71.0|-123.0|54.62208|-0.02416 +2016-07-01|-71.0|-124.0|55.13604|-0.0233 +2016-07-01|-71.0|-125.0|55.64861|-0.02243 +2016-07-01|-71.0|-126.0|56.15999|-0.02155 +2016-07-01|-71.0|-127.0|56.67037|-0.02067 +2016-07-01|-71.0|-128.0|57.17998|-0.01978 +2016-07-01|-71.0|-129.0|57.68903|-0.01888 +2016-07-01|-71.0|-130.0|58.19775|-0.01797 +2016-07-01|-71.0|-131.0|58.70638|-0.01706 +2016-07-01|-71.0|-132.0|59.21516|-0.01615 +2016-07-01|-71.0|-133.0|59.72434|-0.01522 +2016-07-01|-71.0|-134.0|60.23418|-0.01429 +2016-07-01|-71.0|-135.0|60.74494|-0.01336 +2016-07-01|-71.0|-136.0|61.2569|-0.01241 +2016-07-01|-71.0|-137.0|61.77032|-0.01147 +2016-07-01|-71.0|-138.0|62.28551|-0.01052 +2016-07-01|-71.0|-139.0|62.80273|-0.00956 +2016-07-01|-71.0|-140.0|63.32231|-0.00861 +2016-07-01|-71.0|-141.0|63.84452|-0.00765 +2016-07-01|-71.0|-142.0|64.3697|-0.00669 +2016-07-01|-71.0|-143.0|64.89815|-0.00573 +2016-07-01|-71.0|-144.0|65.4302|-0.00477 +2016-07-01|-71.0|-145.0|65.96618|-0.00381 +2016-07-01|-71.0|-146.0|66.50643|-0.00286 +2016-07-01|-71.0|-147.0|67.05129|-0.00191 +2016-07-01|-71.0|-148.0|67.60113|-9.7E-4 +2016-07-01|-71.0|-149.0|68.1563|-4.0E-5 +2016-07-01|-71.0|-150.0|68.71717|8.8E-4 +2016-07-01|-71.0|-151.0|69.28414|0.00179 +2016-07-01|-71.0|-152.0|69.85758|0.00268 +2016-07-01|-71.0|-153.0|70.4379|0.00356 +2016-07-01|-71.0|-154.0|71.02553|0.00441 +2016-07-01|-71.0|-155.0|71.62088|0.00524 +2016-07-01|-71.0|-156.0|72.22439|0.00604 +2016-07-01|-71.0|-157.0|72.83654|0.00681 +2016-07-01|-71.0|-158.0|73.45777|0.00755 +2016-07-01|-71.0|-159.0|74.0886|0.00826 +2016-07-01|-71.0|-160.0|74.72953|0.00892 +2016-07-01|-71.0|-161.0|75.38109|0.00953 +2016-07-01|-71.0|-162.0|76.04383|0.01009 +2016-07-01|-71.0|-163.0|76.71833|0.0106 +2016-07-01|-71.0|-164.0|77.4052|0.01105 +2016-07-01|-71.0|-165.0|78.10507|0.01143 +2016-07-01|-71.0|-166.0|78.8186|0.01173 +2016-07-01|-71.0|-167.0|79.54651|0.01196 +2016-07-01|-71.0|-168.0|80.28952|0.0121 +2016-07-01|-71.0|-169.0|81.04842|0.01215 +2016-07-01|-71.0|-170.0|81.82403|0.01209 +2016-07-01|-71.0|-171.0|82.61722|0.01192 +2016-07-01|-71.0|-172.0|83.42892|0.01162 +2016-07-01|-71.0|-173.0|84.2601|0.0112 +2016-07-01|-71.0|-174.0|85.11181|0.01063 +2016-07-01|-71.0|-175.0|85.98516|0.00991 +2016-07-01|-71.0|-176.0|86.88134|0.00901 +2016-07-01|-71.0|-177.0|87.80159|0.00793 +2016-07-01|-71.0|-178.0|88.74728|0.00665 +2016-07-01|-71.0|-179.0|89.71983|0.00515 +2016-07-01|-72.0|0.0|-20.39752|-0.09286 +2016-07-01|-72.0|1.0|-21.1213|-0.09538 +2016-07-01|-72.0|2.0|-21.84989|-0.09792 +2016-07-01|-72.0|3.0|-22.58326|-0.10048 +2016-07-01|-72.0|4.0|-23.32137|-0.10305 +2016-07-01|-72.0|5.0|-24.06417|-0.10562 +2016-07-01|-72.0|6.0|-24.81161|-0.1082 +2016-07-01|-72.0|7.0|-25.56362|-0.11079 +2016-07-01|-72.0|8.0|-26.32013|-0.11336 +2016-07-01|-72.0|9.0|-27.08105|-0.11594 +2016-07-01|-72.0|10.0|-27.84631|-0.1185 +2016-07-01|-72.0|11.0|-28.6158|-0.12104 +2016-07-01|-72.0|12.0|-29.38942|-0.12357 +2016-07-01|-72.0|13.0|-30.16707|-0.12608 +2016-07-01|-72.0|14.0|-30.94863|-0.12857 +2016-07-01|-72.0|15.0|-31.73398|-0.13102 +2016-07-01|-72.0|16.0|-32.52301|-0.13345 +2016-07-01|-72.0|17.0|-33.31559|-0.13585 +2016-07-01|-72.0|18.0|-34.11158|-0.1382 +2016-07-01|-72.0|19.0|-34.91086|-0.14053 +2016-07-01|-72.0|20.0|-35.7133|-0.14281 +2016-07-01|-72.0|21.0|-36.51875|-0.14504 +2016-07-01|-72.0|22.0|-37.32709|-0.14724 +2016-07-01|-72.0|23.0|-38.13817|-0.14939 +2016-07-01|-72.0|24.0|-38.95186|-0.15149 +2016-07-01|-72.0|25.0|-39.76802|-0.15354 +2016-07-01|-72.0|26.0|-40.58652|-0.15554 +2016-07-01|-72.0|27.0|-41.40722|-0.15749 +2016-07-01|-72.0|28.0|-42.22998|-0.15938 +2016-07-01|-72.0|29.0|-43.05468|-0.16122 +2016-07-01|-72.0|30.0|-43.8812|-0.16301 +2016-07-01|-72.0|31.0|-44.70939|-0.16474 +2016-07-01|-72.0|32.0|-45.53915|-0.16642 +2016-07-01|-72.0|33.0|-46.37035|-0.16805 +2016-07-01|-72.0|34.0|-47.20287|-0.16961 +2016-07-01|-72.0|35.0|-48.03662|-0.17113 +2016-07-01|-72.0|36.0|-48.87148|-0.17258 +2016-07-01|-72.0|37.0|-49.70736|-0.17399 +2016-07-01|-72.0|38.0|-50.54415|-0.17534 +2016-07-01|-72.0|39.0|-51.38177|-0.17664 +2016-07-01|-72.0|40.0|-52.22014|-0.17788 +2016-07-01|-72.0|41.0|-53.05917|-0.17908 +2016-07-01|-72.0|42.0|-53.8988|-0.18022 +2016-07-01|-72.0|43.0|-54.73895|-0.18131 +2016-07-01|-72.0|44.0|-55.57958|-0.18236 +2016-07-01|-72.0|45.0|-56.42063|-0.18336 +2016-07-01|-72.0|46.0|-57.26204|-0.18432 +2016-07-01|-72.0|47.0|-58.10379|-0.18523 +2016-07-01|-72.0|48.0|-58.94584|-0.1861 +2016-07-01|-72.0|49.0|-59.78817|-0.18693 +2016-07-01|-72.0|50.0|-60.63076|-0.18772 +2016-07-01|-72.0|51.0|-61.47361|-0.18848 +2016-07-01|-72.0|52.0|-62.3167|-0.1892 +2016-07-01|-72.0|53.0|-63.16005|-0.18989 +2016-07-01|-72.0|54.0|-64.00367|-0.19055 +2016-07-01|-72.0|55.0|-64.84758|-0.19118 +2016-07-01|-72.0|56.0|-65.69181|-0.19179 +2016-07-01|-72.0|57.0|-66.5364|-0.19238 +2016-07-01|-72.0|58.0|-67.38139|-0.19294 +2016-07-01|-72.0|59.0|-68.22685|-0.19348 +2016-07-01|-72.0|60.0|-69.07283|-0.19401 +2016-07-01|-72.0|61.0|-69.9194|-0.19453 +2016-07-01|-72.0|62.0|-70.76665|-0.19504 +2016-07-01|-72.0|63.0|-71.61467|-0.19553 +2016-07-01|-72.0|64.0|-72.46355|-0.19603 +2016-07-01|-72.0|65.0|-73.3134|-0.19652 +2016-07-01|-72.0|66.0|-74.16434|-0.19701 +2016-07-01|-72.0|67.0|-75.0165|-0.1975 +2016-07-01|-72.0|68.0|-75.87002|-0.198 +2016-07-01|-72.0|69.0|-76.72503|-0.19851 +2016-07-01|-72.0|70.0|-77.58171|-0.19904 +2016-07-01|-72.0|71.0|-78.44021|-0.19957 +2016-07-01|-72.0|72.0|-79.30073|-0.20013 +2016-07-01|-72.0|73.0|-80.16344|-0.20071 +2016-07-01|-72.0|74.0|-81.02855|-0.20132 +2016-07-01|-72.0|75.0|-81.89628|-0.20195 +2016-07-01|-72.0|76.0|-82.76686|-0.20262 +2016-07-01|-72.0|77.0|-83.64053|-0.20332 +2016-07-01|-72.0|78.0|-84.51754|-0.20406 +2016-07-01|-72.0|79.0|-85.39816|-0.20485 +2016-07-01|-72.0|80.0|-86.28268|-0.20568 +2016-07-01|-72.0|81.0|-87.1714|-0.20657 +2016-07-01|-72.0|82.0|-88.06463|-0.20751 +2016-07-01|-72.0|83.0|-88.96272|-0.20851 +2016-07-01|-72.0|84.0|-89.866|-0.20957 +2016-07-01|-72.0|85.0|-90.77487|-0.2107 +2016-07-01|-72.0|86.0|-91.6897|-0.21191 +2016-07-01|-72.0|87.0|-92.61091|-0.21319 +2016-07-01|-72.0|88.0|-93.53895|-0.21456 +2016-07-01|-72.0|89.0|-94.47427|-0.21601 +2016-07-01|-72.0|90.0|-95.41735|-0.21755 +2016-07-01|-72.0|91.0|-96.36871|-0.2192 +2016-07-01|-72.0|92.0|-97.32891|-0.22094 +2016-07-01|-72.0|93.0|-98.29849|-0.2228 +2016-07-01|-72.0|94.0|-99.27809|-0.22477 +2016-07-01|-72.0|95.0|-100.26832|-0.22686 +2016-07-01|-72.0|96.0|-101.26988|-0.22908 +2016-07-01|-72.0|97.0|-102.28348|-0.23143 +2016-07-01|-72.0|98.0|-103.30987|-0.23392 +2016-07-01|-72.0|99.0|-104.34986|-0.23656 +2016-07-01|-72.0|100.0|-105.4043|-0.23935 +2016-07-01|-72.0|101.0|-106.47409|-0.24231 +2016-07-01|-72.0|102.0|-107.56018|-0.24543 +2016-07-01|-72.0|103.0|-108.66358|-0.24874 +2016-07-01|-72.0|104.0|-109.78537|-0.25223 +2016-07-01|-72.0|105.0|-110.92668|-0.25591 +2016-07-01|-72.0|106.0|-112.08871|-0.25979 +2016-07-01|-72.0|107.0|-113.27274|-0.26388 +2016-07-01|-72.0|108.0|-114.48012|-0.26819 +2016-07-01|-72.0|109.0|-115.71229|-0.27273 +2016-07-01|-72.0|110.0|-116.97076|-0.2775 +2016-07-01|-72.0|111.0|-118.25714|-0.28251 +2016-07-01|-72.0|112.0|-119.57312|-0.28777 +2016-07-01|-72.0|113.0|-120.9205|-0.29328 +2016-07-01|-72.0|114.0|-122.30117|-0.29906 +2016-07-01|-72.0|115.0|-123.71712|-0.3051 +2016-07-01|-72.0|116.0|-125.17044|-0.31141 +2016-07-01|-72.0|117.0|-126.66334|-0.31799 +2016-07-01|-72.0|118.0|-128.1981|-0.32483 +2016-07-01|-72.0|119.0|-129.77712|-0.33194 +2016-07-01|-72.0|120.0|-131.40288|-0.3393 +2016-07-01|-72.0|121.0|-133.07794|-0.3469 +2016-07-01|-72.0|122.0|-134.80493|-0.35472 +2016-07-01|-72.0|123.0|-136.58652|-0.36274 +2016-07-01|-72.0|124.0|-138.42541|-0.37093 +2016-07-01|-72.0|125.0|-140.32428|-0.37925 +2016-07-01|-72.0|126.0|-142.28577|-0.38764 +2016-07-01|-72.0|127.0|-144.31242|-0.39606 +2016-07-01|-72.0|128.0|-146.40663|-0.40441 +2016-07-01|-72.0|129.0|-148.57056|-0.41263 +2016-07-01|-72.0|130.0|-150.80607|-0.42061 +2016-07-01|-72.0|131.0|-153.11465|-0.42823 +2016-07-01|-72.0|132.0|-155.49729|-0.43538 +2016-07-01|-72.0|133.0|-157.95439|-0.44191 +2016-07-01|-72.0|134.0|-160.48564|-0.44767 +2016-07-01|-72.0|135.0|-163.08995|-0.45251 +2016-07-01|-72.0|136.0|-165.76526|-0.45626 +2016-07-01|-72.0|137.0|-168.50855|-0.45875 +2016-07-01|-72.0|138.0|-171.31568|-0.45983 +2016-07-01|-72.0|139.0|-174.18141|-0.45937 +2016-07-01|-72.0|140.0|-177.09937|-0.45723 +2016-07-01|-72.0|141.0|179.93791|-0.45334 +2016-07-01|-72.0|142.0|176.93888|-0.44764 +2016-07-01|-72.0|143.0|173.91287|-0.44012 +2016-07-01|-72.0|144.0|170.86989|-0.43081 +2016-07-01|-72.0|145.0|167.82041|-0.41979 +2016-07-01|-72.0|146.0|164.7751|-0.40718 +2016-07-01|-72.0|147.0|161.74458|-0.39314 +2016-07-01|-72.0|148.0|158.73917|-0.37788 +2016-07-01|-72.0|149.0|155.76864|-0.3616 +2016-07-01|-72.0|150.0|152.842|-0.34454 +2016-07-01|-72.0|151.0|149.96732|-0.32693 +2016-07-01|-72.0|152.0|147.15167|-0.309 +2016-07-01|-72.0|153.0|144.40097|-0.29096 +2016-07-01|-72.0|154.0|141.72004|-0.27303 +2016-07-01|-72.0|155.0|139.11257|-0.25535 +2016-07-01|-72.0|156.0|136.5812|-0.2381 +2016-07-01|-72.0|157.0|134.1276|-0.22138 +2016-07-01|-72.0|158.0|131.75257|-0.2053 +2016-07-01|-72.0|159.0|129.45612|-0.18993 +2016-07-01|-72.0|160.0|127.23761|-0.17531 +2016-07-01|-72.0|161.0|125.09587|-0.16147 +2016-07-01|-72.0|162.0|123.02924|-0.14844 +2016-07-01|-72.0|163.0|121.03576|-0.13621 +2016-07-01|-72.0|164.0|119.11316|-0.12477 +2016-07-01|-72.0|165.0|117.25899|-0.1141 +2016-07-01|-72.0|166.0|115.47069|-0.10418 +2016-07-01|-72.0|167.0|113.74559|-0.09498 +2016-07-01|-72.0|168.0|112.08102|-0.08647 +2016-07-01|-72.0|169.0|110.47428|-0.0786 +2016-07-01|-72.0|170.0|108.92274|-0.07135 +2016-07-01|-72.0|171.0|107.42379|-0.06468 +2016-07-01|-72.0|172.0|105.97492|-0.05855 +2016-07-01|-72.0|173.0|104.57367|-0.05292 +2016-07-01|-72.0|174.0|103.21771|-0.04778 +2016-07-01|-72.0|175.0|101.90478|-0.04307 +2016-07-01|-72.0|176.0|100.63272|-0.03878 +2016-07-01|-72.0|177.0|99.39948|-0.03488 +2016-07-01|-72.0|178.0|98.20312|-0.03133 +2016-07-01|-72.0|179.0|97.04178|-0.02811 +2016-07-01|-72.0|-1.0|-19.67856|-0.09037 +2016-07-01|-72.0|-2.0|-18.96445|-0.0879 +2016-07-01|-72.0|-3.0|-18.25516|-0.08547 +2016-07-01|-72.0|-4.0|-17.5507|-0.08307 +2016-07-01|-72.0|-5.0|-16.85104|-0.08071 +2016-07-01|-72.0|-6.0|-16.15615|-0.0784 +2016-07-01|-72.0|-7.0|-15.46598|-0.07613 +2016-07-01|-72.0|-8.0|-14.78047|-0.07391 +2016-07-01|-72.0|-9.0|-14.09958|-0.07175 +2016-07-01|-72.0|-10.0|-13.42321|-0.06964 +2016-07-01|-72.0|-11.0|-12.75128|-0.0676 +2016-07-01|-72.0|-12.0|-12.0837|-0.06562 +2016-07-01|-72.0|-13.0|-11.42036|-0.0637 +2016-07-01|-72.0|-14.0|-10.76115|-0.06186 +2016-07-01|-72.0|-15.0|-10.10594|-0.06008 +2016-07-01|-72.0|-16.0|-9.45461|-0.05838 +2016-07-01|-72.0|-17.0|-8.807|-0.05675 +2016-07-01|-72.0|-18.0|-8.16297|-0.0552 +2016-07-01|-72.0|-19.0|-7.52237|-0.05373 +2016-07-01|-72.0|-20.0|-6.88504|-0.05234 +2016-07-01|-72.0|-21.0|-6.2508|-0.05103 +2016-07-01|-72.0|-22.0|-5.61947|-0.0498 +2016-07-01|-72.0|-23.0|-4.9909|-0.04866 +2016-07-01|-72.0|-24.0|-4.36488|-0.04759 +2016-07-01|-72.0|-25.0|-3.74123|-0.04661 +2016-07-01|-72.0|-26.0|-3.11978|-0.04571 +2016-07-01|-72.0|-27.0|-2.50031|-0.04489 +2016-07-01|-72.0|-28.0|-1.88266|-0.04415 +2016-07-01|-72.0|-29.0|-1.26661|-0.04349 +2016-07-01|-72.0|-30.0|-0.65198|-0.0429 +2016-07-01|-72.0|-31.0|-0.03859|-0.0424 +2016-07-01|-72.0|-32.0|0.57376|-0.04197 +2016-07-01|-72.0|-33.0|1.18526|-0.04161 +2016-07-01|-72.0|-34.0|1.79608|-0.04132 +2016-07-01|-72.0|-35.0|2.4064|-0.0411 +2016-07-01|-72.0|-36.0|3.0164|-0.04094 +2016-07-01|-72.0|-37.0|3.62625|-0.04085 +2016-07-01|-72.0|-38.0|4.23611|-0.04082 +2016-07-01|-72.0|-39.0|4.84613|-0.04085 +2016-07-01|-72.0|-40.0|5.45646|-0.04092 +2016-07-01|-72.0|-41.0|6.06724|-0.04105 +2016-07-01|-72.0|-42.0|6.67861|-0.04123 +2016-07-01|-72.0|-43.0|7.29069|-0.04145 +2016-07-01|-72.0|-44.0|7.9036|-0.04171 +2016-07-01|-72.0|-45.0|8.51743|-0.04201 +2016-07-01|-72.0|-46.0|9.1323|-0.04234 +2016-07-01|-72.0|-47.0|9.74827|-0.0427 +2016-07-01|-72.0|-48.0|10.36544|-0.04308 +2016-07-01|-72.0|-49.0|10.98386|-0.04349 +2016-07-01|-72.0|-50.0|11.6036|-0.04392 +2016-07-01|-72.0|-51.0|12.22469|-0.04436 +2016-07-01|-72.0|-52.0|12.84718|-0.04482 +2016-07-01|-72.0|-53.0|13.47109|-0.04528 +2016-07-01|-72.0|-54.0|14.09642|-0.04575 +2016-07-01|-72.0|-55.0|14.7232|-0.04622 +2016-07-01|-72.0|-56.0|15.3514|-0.0467 +2016-07-01|-72.0|-57.0|15.98103|-0.04716 +2016-07-01|-72.0|-58.0|16.61204|-0.04763 +2016-07-01|-72.0|-59.0|17.2444|-0.04808 +2016-07-01|-72.0|-60.0|17.87808|-0.04852 +2016-07-01|-72.0|-61.0|18.51302|-0.04895 +2016-07-01|-72.0|-62.0|19.14916|-0.04936 +2016-07-01|-72.0|-63.0|19.78644|-0.04975 +2016-07-01|-72.0|-64.0|20.42476|-0.05012 +2016-07-01|-72.0|-65.0|21.06406|-0.05047 +2016-07-01|-72.0|-66.0|21.70424|-0.0508 +2016-07-01|-72.0|-67.0|22.34521|-0.0511 +2016-07-01|-72.0|-68.0|22.98686|-0.05138 +2016-07-01|-72.0|-69.0|23.6291|-0.05162 +2016-07-01|-72.0|-70.0|24.2718|-0.05184 +2016-07-01|-72.0|-71.0|24.91485|-0.05203 +2016-07-01|-72.0|-72.0|25.55813|-0.0522 +2016-07-01|-72.0|-73.0|26.20152|-0.05233 +2016-07-01|-72.0|-74.0|26.8449|-0.05243 +2016-07-01|-72.0|-75.0|27.48814|-0.05249 +2016-07-01|-72.0|-76.0|28.1311|-0.05253 +2016-07-01|-72.0|-77.0|28.77367|-0.05254 +2016-07-01|-72.0|-78.0|29.4157|-0.05251 +2016-07-01|-72.0|-79.0|30.05708|-0.05246 +2016-07-01|-72.0|-80.0|30.69766|-0.05237 +2016-07-01|-72.0|-81.0|31.33733|-0.05225 +2016-07-01|-72.0|-82.0|31.97595|-0.05211 +2016-07-01|-72.0|-83.0|32.61339|-0.05193 +2016-07-01|-72.0|-84.0|33.24955|-0.05173 +2016-07-01|-72.0|-85.0|33.88429|-0.05149 +2016-07-01|-72.0|-86.0|34.5175|-0.05124 +2016-07-01|-72.0|-87.0|35.14907|-0.05095 +2016-07-01|-72.0|-88.0|35.77889|-0.05064 +2016-07-01|-72.0|-89.0|36.40685|-0.0503 +2016-07-01|-72.0|-90.0|37.03285|-0.04995 +2016-07-01|-72.0|-91.0|37.6568|-0.04956 +2016-07-01|-72.0|-92.0|38.27862|-0.04916 +2016-07-01|-72.0|-93.0|38.89821|-0.04874 +2016-07-01|-72.0|-94.0|39.5155|-0.04829 +2016-07-01|-72.0|-95.0|40.13042|-0.04783 +2016-07-01|-72.0|-96.0|40.74291|-0.04735 +2016-07-01|-72.0|-97.0|41.35291|-0.04685 +2016-07-01|-72.0|-98.0|41.96037|-0.04634 +2016-07-01|-72.0|-99.0|42.56524|-0.04581 +2016-07-01|-72.0|-100.0|43.16751|-0.04527 +2016-07-01|-72.0|-101.0|43.76713|-0.04471 +2016-07-01|-72.0|-102.0|44.36409|-0.04414 +2016-07-01|-72.0|-103.0|44.95837|-0.04356 +2016-07-01|-72.0|-104.0|45.54999|-0.04297 +2016-07-01|-72.0|-105.0|46.13894|-0.04236 +2016-07-01|-72.0|-106.0|46.72524|-0.04175 +2016-07-01|-72.0|-107.0|47.30891|-0.04113 +2016-07-01|-72.0|-108.0|47.88999|-0.0405 +2016-07-01|-72.0|-109.0|48.46852|-0.03986 +2016-07-01|-72.0|-110.0|49.04455|-0.03921 +2016-07-01|-72.0|-111.0|49.61813|-0.03856 +2016-07-01|-72.0|-112.0|50.18934|-0.0379 +2016-07-01|-72.0|-113.0|50.75826|-0.03723 +2016-07-01|-72.0|-114.0|51.32496|-0.03656 +2016-07-01|-72.0|-115.0|51.88955|-0.03588 +2016-07-01|-72.0|-116.0|52.45214|-0.0352 +2016-07-01|-72.0|-117.0|53.01282|-0.03451 +2016-07-01|-72.0|-118.0|53.57174|-0.03381 +2016-07-01|-72.0|-119.0|54.12901|-0.03311 +2016-07-01|-72.0|-120.0|54.68478|-0.03241 +2016-07-01|-72.0|-121.0|55.2392|-0.0317 +2016-07-01|-72.0|-122.0|55.79242|-0.03099 +2016-07-01|-72.0|-123.0|56.34462|-0.03028 +2016-07-01|-72.0|-124.0|56.89596|-0.02956 +2016-07-01|-72.0|-125.0|57.44663|-0.02883 +2016-07-01|-72.0|-126.0|57.99682|-0.02811 +2016-07-01|-72.0|-127.0|58.54674|-0.02738 +2016-07-01|-72.0|-128.0|59.09658|-0.02665 +2016-07-01|-72.0|-129.0|59.64657|-0.02591 +2016-07-01|-72.0|-130.0|60.19692|-0.02517 +2016-07-01|-72.0|-131.0|60.74788|-0.02444 +2016-07-01|-72.0|-132.0|61.29967|-0.0237 +2016-07-01|-72.0|-133.0|61.85256|-0.02295 +2016-07-01|-72.0|-134.0|62.40678|-0.02221 +2016-07-01|-72.0|-135.0|62.96261|-0.02147 +2016-07-01|-72.0|-136.0|63.52031|-0.02073 +2016-07-01|-72.0|-137.0|64.08017|-0.01999 +2016-07-01|-72.0|-138.0|64.64247|-0.01925 +2016-07-01|-72.0|-139.0|65.20749|-0.01852 +2016-07-01|-72.0|-140.0|65.77555|-0.01779 +2016-07-01|-72.0|-141.0|66.34695|-0.01707 +2016-07-01|-72.0|-142.0|66.92201|-0.01635 +2016-07-01|-72.0|-143.0|67.50106|-0.01564 +2016-07-01|-72.0|-144.0|68.08442|-0.01494 +2016-07-01|-72.0|-145.0|68.67244|-0.01425 +2016-07-01|-72.0|-146.0|69.26547|-0.01357 +2016-07-01|-72.0|-147.0|69.86387|-0.01291 +2016-07-01|-72.0|-148.0|70.46802|-0.01226 +2016-07-01|-72.0|-149.0|71.07829|-0.01163 +2016-07-01|-72.0|-150.0|71.69507|-0.01103 +2016-07-01|-72.0|-151.0|72.31878|-0.01044 +2016-07-01|-72.0|-152.0|72.94982|-0.00989 +2016-07-01|-72.0|-153.0|73.58862|-0.00936 +2016-07-01|-72.0|-154.0|74.23563|-0.00886 +2016-07-01|-72.0|-155.0|74.8913|-0.0084 +2016-07-01|-72.0|-156.0|75.55611|-0.00798 +2016-07-01|-72.0|-157.0|76.23055|-0.0076 +2016-07-01|-72.0|-158.0|76.91512|-0.00727 +2016-07-01|-72.0|-159.0|77.61035|-0.00699 +2016-07-01|-72.0|-160.0|78.31679|-0.00677 +2016-07-01|-72.0|-161.0|79.03501|-0.00661 +2016-07-01|-72.0|-162.0|79.76561|-0.00651 +2016-07-01|-72.0|-163.0|80.5092|-0.00649 +2016-07-01|-72.0|-164.0|81.26643|-0.00654 +2016-07-01|-72.0|-165.0|82.03799|-0.00668 +2016-07-01|-72.0|-166.0|82.82458|-0.00691 +2016-07-01|-72.0|-167.0|83.62695|-0.00725 +2016-07-01|-72.0|-168.0|84.44588|-0.00768 +2016-07-01|-72.0|-169.0|85.2822|-0.00824 +2016-07-01|-72.0|-170.0|86.13676|-0.00892 +2016-07-01|-72.0|-171.0|87.01048|-0.00973 +2016-07-01|-72.0|-172.0|87.90432|-0.01069 +2016-07-01|-72.0|-173.0|88.81929|-0.01181 +2016-07-01|-72.0|-174.0|89.75646|-0.0131 +2016-07-01|-72.0|-175.0|90.71697|-0.01457 +2016-07-01|-72.0|-176.0|91.702|-0.01623 +2016-07-01|-72.0|-177.0|92.71281|-0.01811 +2016-07-01|-72.0|-178.0|93.75075|-0.02022 +2016-07-01|-72.0|-179.0|94.81721|-0.02258 +2016-07-01|-73.0|0.0|-20.57946|-0.09525 +2016-07-01|-73.0|1.0|-21.31297|-0.09759 +2016-07-01|-73.0|2.0|-22.05092|-0.09995 +2016-07-01|-73.0|3.0|-22.79329|-0.10232 +2016-07-01|-73.0|4.0|-23.54006|-0.1047 +2016-07-01|-73.0|5.0|-24.29117|-0.1071 +2016-07-01|-73.0|6.0|-25.04659|-0.10949 +2016-07-01|-73.0|7.0|-25.80627|-0.11189 +2016-07-01|-73.0|8.0|-26.57015|-0.11429 +2016-07-01|-73.0|9.0|-27.33816|-0.11669 +2016-07-01|-73.0|10.0|-28.11023|-0.11908 +2016-07-01|-73.0|11.0|-28.88629|-0.12145 +2016-07-01|-73.0|12.0|-29.66624|-0.12381 +2016-07-01|-73.0|13.0|-30.45001|-0.12616 +2016-07-01|-73.0|14.0|-31.23749|-0.12849 +2016-07-01|-73.0|15.0|-32.0286|-0.13079 +2016-07-01|-73.0|16.0|-32.82323|-0.13307 +2016-07-01|-73.0|17.0|-33.62128|-0.13533 +2016-07-01|-73.0|18.0|-34.42264|-0.13755 +2016-07-01|-73.0|19.0|-35.22721|-0.13974 +2016-07-01|-73.0|20.0|-36.03486|-0.1419 +2016-07-01|-73.0|21.0|-36.8455|-0.14403 +2016-07-01|-73.0|22.0|-37.659|-0.14611 +2016-07-01|-73.0|23.0|-38.47524|-0.14816 +2016-07-01|-73.0|24.0|-39.29413|-0.15016 +2016-07-01|-73.0|25.0|-40.11554|-0.15213 +2016-07-01|-73.0|26.0|-40.93935|-0.15405 +2016-07-01|-73.0|27.0|-41.76547|-0.15593 +2016-07-01|-73.0|28.0|-42.59376|-0.15776 +2016-07-01|-73.0|29.0|-43.42413|-0.15955 +2016-07-01|-73.0|30.0|-44.25647|-0.16129 +2016-07-01|-73.0|31.0|-45.09067|-0.16298 +2016-07-01|-73.0|32.0|-45.92664|-0.16463 +2016-07-01|-73.0|33.0|-46.76426|-0.16623 +2016-07-01|-73.0|34.0|-47.60345|-0.16778 +2016-07-01|-73.0|35.0|-48.44412|-0.16929 +2016-07-01|-73.0|36.0|-49.28618|-0.17075 +2016-07-01|-73.0|37.0|-50.12954|-0.17216 +2016-07-01|-73.0|38.0|-50.97413|-0.17352 +2016-07-01|-73.0|39.0|-51.81987|-0.17484 +2016-07-01|-73.0|40.0|-52.66669|-0.17611 +2016-07-01|-73.0|41.0|-53.51454|-0.17734 +2016-07-01|-73.0|42.0|-54.36335|-0.17853 +2016-07-01|-73.0|43.0|-55.21308|-0.17967 +2016-07-01|-73.0|44.0|-56.06367|-0.18077 +2016-07-01|-73.0|45.0|-56.91508|-0.18183 +2016-07-01|-73.0|46.0|-57.76729|-0.18286 +2016-07-01|-73.0|47.0|-58.62025|-0.18384 +2016-07-01|-73.0|48.0|-59.47397|-0.18479 +2016-07-01|-73.0|49.0|-60.32841|-0.1857 +2016-07-01|-73.0|50.0|-61.18357|-0.18658 +2016-07-01|-73.0|51.0|-62.03945|-0.18743 +2016-07-01|-73.0|52.0|-62.89606|-0.18825 +2016-07-01|-73.0|53.0|-63.75341|-0.18904 +2016-07-01|-73.0|54.0|-64.61152|-0.18981 +2016-07-01|-73.0|55.0|-65.47042|-0.19055 +2016-07-01|-73.0|56.0|-66.33014|-0.19127 +2016-07-01|-73.0|57.0|-67.19073|-0.19197 +2016-07-01|-73.0|58.0|-68.05225|-0.19266 +2016-07-01|-73.0|59.0|-68.91474|-0.19332 +2016-07-01|-73.0|60.0|-69.77828|-0.19398 +2016-07-01|-73.0|61.0|-70.64295|-0.19462 +2016-07-01|-73.0|62.0|-71.50882|-0.19525 +2016-07-01|-73.0|63.0|-72.37598|-0.19588 +2016-07-01|-73.0|64.0|-73.24455|-0.19651 +2016-07-01|-73.0|65.0|-74.11463|-0.19713 +2016-07-01|-73.0|66.0|-74.98634|-0.19776 +2016-07-01|-73.0|67.0|-75.85981|-0.19838 +2016-07-01|-73.0|68.0|-76.73517|-0.19902 +2016-07-01|-73.0|69.0|-77.61257|-0.19966 +2016-07-01|-73.0|70.0|-78.49218|-0.20032 +2016-07-01|-73.0|71.0|-79.37416|-0.20099 +2016-07-01|-73.0|72.0|-80.25868|-0.20168 +2016-07-01|-73.0|73.0|-81.14594|-0.20239 +2016-07-01|-73.0|74.0|-82.03613|-0.20313 +2016-07-01|-73.0|75.0|-82.92948|-0.20389 +2016-07-01|-73.0|76.0|-83.8262|-0.20468 +2016-07-01|-73.0|77.0|-84.72653|-0.2055 +2016-07-01|-73.0|78.0|-85.63072|-0.20636 +2016-07-01|-73.0|79.0|-86.53903|-0.20726 +2016-07-01|-73.0|80.0|-87.45175|-0.2082 +2016-07-01|-73.0|81.0|-88.36915|-0.20919 +2016-07-01|-73.0|82.0|-89.29156|-0.21023 +2016-07-01|-73.0|83.0|-90.21929|-0.21132 +2016-07-01|-73.0|84.0|-91.15269|-0.21247 +2016-07-01|-73.0|85.0|-92.0921|-0.21368 +2016-07-01|-73.0|86.0|-93.03792|-0.21496 +2016-07-01|-73.0|87.0|-93.99052|-0.2163 +2016-07-01|-73.0|88.0|-94.95033|-0.21772 +2016-07-01|-73.0|89.0|-95.91778|-0.21921 +2016-07-01|-73.0|90.0|-96.89334|-0.22079 +2016-07-01|-73.0|91.0|-97.87748|-0.22245 +2016-07-01|-73.0|92.0|-98.87071|-0.2242 +2016-07-01|-73.0|93.0|-99.87356|-0.22604 +2016-07-01|-73.0|94.0|-100.8866|-0.22799 +2016-07-01|-73.0|95.0|-101.91041|-0.23003 +2016-07-01|-73.0|96.0|-102.94561|-0.23219 +2016-07-01|-73.0|97.0|-103.99286|-0.23446 +2016-07-01|-73.0|98.0|-105.05284|-0.23684 +2016-07-01|-73.0|99.0|-106.12626|-0.23935 +2016-07-01|-73.0|100.0|-107.2139|-0.24199 +2016-07-01|-73.0|101.0|-108.31654|-0.24476 +2016-07-01|-73.0|102.0|-109.43502|-0.24766 +2016-07-01|-73.0|103.0|-110.57022|-0.25072 +2016-07-01|-73.0|104.0|-111.72307|-0.25392 +2016-07-01|-73.0|105.0|-112.89454|-0.25727 +2016-07-01|-73.0|106.0|-114.08565|-0.26078 +2016-07-01|-73.0|107.0|-115.29747|-0.26445 +2016-07-01|-73.0|108.0|-116.53113|-0.26829 +2016-07-01|-73.0|109.0|-117.7878|-0.2723 +2016-07-01|-73.0|110.0|-119.06872|-0.27648 +2016-07-01|-73.0|111.0|-120.37517|-0.28084 +2016-07-01|-73.0|112.0|-121.7085|-0.28538 +2016-07-01|-73.0|113.0|-123.0701|-0.2901 +2016-07-01|-73.0|114.0|-124.46144|-0.29499 +2016-07-01|-73.0|115.0|-125.88404|-0.30007 +2016-07-01|-73.0|116.0|-127.33944|-0.30532 +2016-07-01|-73.0|117.0|-128.82927|-0.31074 +2016-07-01|-73.0|118.0|-130.35518|-0.31633 +2016-07-01|-73.0|119.0|-131.91886|-0.32207 +2016-07-01|-73.0|120.0|-133.52203|-0.32795 +2016-07-01|-73.0|121.0|-135.16644|-0.33395 +2016-07-01|-73.0|122.0|-136.85381|-0.34006 +2016-07-01|-73.0|123.0|-138.58587|-0.34626 +2016-07-01|-73.0|124.0|-140.36432|-0.3525 +2016-07-01|-73.0|125.0|-142.19078|-0.35876 +2016-07-01|-73.0|126.0|-144.06681|-0.365 +2016-07-01|-73.0|127.0|-145.99383|-0.37117 +2016-07-01|-73.0|128.0|-147.97312|-0.37722 +2016-07-01|-73.0|129.0|-150.00574|-0.38309 +2016-07-01|-73.0|130.0|-152.09255|-0.38871 +2016-07-01|-73.0|131.0|-154.23407|-0.394 +2016-07-01|-73.0|132.0|-156.43053|-0.3989 +2016-07-01|-73.0|133.0|-158.68171|-0.4033 +2016-07-01|-73.0|134.0|-160.987|-0.40713 +2016-07-01|-73.0|135.0|-163.34524|-0.41029 +2016-07-01|-73.0|136.0|-165.75477|-0.41269 +2016-07-01|-73.0|137.0|-168.21331|-0.41423 +2016-07-01|-73.0|138.0|-170.71798|-0.41483 +2016-07-01|-73.0|139.0|-173.26529|-0.41442 +2016-07-01|-73.0|140.0|-175.8511|-0.41292 +2016-07-01|-73.0|141.0|-178.47068|-0.41029 +2016-07-01|-73.0|142.0|178.88127|-0.40648 +2016-07-01|-73.0|143.0|176.21056|-0.40148 +2016-07-01|-73.0|144.0|173.52342|-0.39529 +2016-07-01|-73.0|145.0|170.82641|-0.38795 +2016-07-01|-73.0|146.0|168.12631|-0.37949 +2016-07-01|-73.0|147.0|165.42998|-0.37 +2016-07-01|-73.0|148.0|162.74426|-0.35957 +2016-07-01|-73.0|149.0|160.07583|-0.34829 +2016-07-01|-73.0|150.0|157.43111|-0.33629 +2016-07-01|-73.0|151.0|154.81611|-0.3237 +2016-07-01|-73.0|152.0|152.2364|-0.31065 +2016-07-01|-73.0|153.0|149.697|-0.29727 +2016-07-01|-73.0|154.0|147.20235|-0.28369 +2016-07-01|-73.0|155.0|144.75626|-0.27003 +2016-07-01|-73.0|156.0|142.36192|-0.2564 +2016-07-01|-73.0|157.0|140.0219|-0.24292 +2016-07-01|-73.0|158.0|137.73817|-0.22967 +2016-07-01|-73.0|159.0|135.51212|-0.21673 +2016-07-01|-73.0|160.0|133.34464|-0.20415 +2016-07-01|-73.0|161.0|131.23615|-0.19201 +2016-07-01|-73.0|162.0|129.18662|-0.18032 +2016-07-01|-73.0|163.0|127.19568|-0.16914 +2016-07-01|-73.0|164.0|125.26263|-0.15847 +2016-07-01|-73.0|165.0|123.38651|-0.14832 +2016-07-01|-73.0|166.0|121.56615|-0.13871 +2016-07-01|-73.0|167.0|119.80019|-0.12963 +2016-07-01|-73.0|168.0|118.08713|-0.12108 +2016-07-01|-73.0|169.0|116.42539|-0.11303 +2016-07-01|-73.0|170.0|114.81331|-0.10549 +2016-07-01|-73.0|171.0|113.24916|-0.09842 +2016-07-01|-73.0|172.0|111.73123|-0.09183 +2016-07-01|-73.0|173.0|110.25776|-0.08567 +2016-07-01|-73.0|174.0|108.82702|-0.07994 +2016-07-01|-73.0|175.0|107.43731|-0.07462 +2016-07-01|-73.0|176.0|106.08694|-0.06968 +2016-07-01|-73.0|177.0|104.77428|-0.0651 +2016-07-01|-73.0|178.0|103.49773|-0.06086 +2016-07-01|-73.0|179.0|102.25575|-0.05695 +2016-07-01|-73.0|-1.0|-19.8504|-0.09294 +2016-07-01|-73.0|-2.0|-19.12579|-0.09065 +2016-07-01|-73.0|-3.0|-18.40564|-0.08839 +2016-07-01|-73.0|-4.0|-17.68992|-0.08616 +2016-07-01|-73.0|-5.0|-16.97863|-0.08397 +2016-07-01|-73.0|-6.0|-16.27171|-0.08182 +2016-07-01|-73.0|-7.0|-15.56914|-0.07971 +2016-07-01|-73.0|-8.0|-14.87087|-0.07764 +2016-07-01|-73.0|-9.0|-14.17683|-0.07563 +2016-07-01|-73.0|-10.0|-13.48696|-0.07366 +2016-07-01|-73.0|-11.0|-12.80119|-0.07175 +2016-07-01|-73.0|-12.0|-12.11943|-0.06989 +2016-07-01|-73.0|-13.0|-11.44158|-0.06809 +2016-07-01|-73.0|-14.0|-10.76755|-0.06636 +2016-07-01|-73.0|-15.0|-10.09723|-0.06468 +2016-07-01|-73.0|-16.0|-9.43051|-0.06307 +2016-07-01|-73.0|-17.0|-8.76726|-0.06153 +2016-07-01|-73.0|-18.0|-8.10735|-0.06006 +2016-07-01|-73.0|-19.0|-7.45065|-0.05865 +2016-07-01|-73.0|-20.0|-6.79701|-0.05731 +2016-07-01|-73.0|-21.0|-6.1463|-0.05605 +2016-07-01|-73.0|-22.0|-5.49836|-0.05486 +2016-07-01|-73.0|-23.0|-4.85304|-0.05374 +2016-07-01|-73.0|-24.0|-4.21018|-0.05269 +2016-07-01|-73.0|-25.0|-3.56962|-0.05171 +2016-07-01|-73.0|-26.0|-2.93119|-0.05081 +2016-07-01|-73.0|-27.0|-2.29473|-0.04998 +2016-07-01|-73.0|-28.0|-1.66007|-0.04922 +2016-07-01|-73.0|-29.0|-1.02706|-0.04853 +2016-07-01|-73.0|-30.0|-0.39551|-0.04791 +2016-07-01|-73.0|-31.0|0.23473|-0.04736 +2016-07-01|-73.0|-32.0|0.86383|-0.04688 +2016-07-01|-73.0|-33.0|1.49196|-0.04646 +2016-07-01|-73.0|-34.0|2.11926|-0.0461 +2016-07-01|-73.0|-35.0|2.74591|-0.04581 +2016-07-01|-73.0|-36.0|3.37204|-0.04557 +2016-07-01|-73.0|-37.0|3.99782|-0.0454 +2016-07-01|-73.0|-38.0|4.62338|-0.04528 +2016-07-01|-73.0|-39.0|5.24886|-0.04521 +2016-07-01|-73.0|-40.0|5.8744|-0.04518 +2016-07-01|-73.0|-41.0|6.50013|-0.04521 +2016-07-01|-73.0|-42.0|7.12615|-0.04528 +2016-07-01|-73.0|-43.0|7.75259|-0.04539 +2016-07-01|-73.0|-44.0|8.37956|-0.04555 +2016-07-01|-73.0|-45.0|9.00714|-0.04573 +2016-07-01|-73.0|-46.0|9.63544|-0.04595 +2016-07-01|-73.0|-47.0|10.26453|-0.0462 +2016-07-01|-73.0|-48.0|10.89449|-0.04647 +2016-07-01|-73.0|-49.0|11.52538|-0.04677 +2016-07-01|-73.0|-50.0|12.15726|-0.04709 +2016-07-01|-73.0|-51.0|12.79018|-0.04742 +2016-07-01|-73.0|-52.0|13.42418|-0.04777 +2016-07-01|-73.0|-53.0|14.05929|-0.04813 +2016-07-01|-73.0|-54.0|14.69553|-0.0485 +2016-07-01|-73.0|-55.0|15.33292|-0.04888 +2016-07-01|-73.0|-56.0|15.97146|-0.04926 +2016-07-01|-73.0|-57.0|16.61114|-0.04964 +2016-07-01|-73.0|-58.0|17.25197|-0.05001 +2016-07-01|-73.0|-59.0|17.89391|-0.05039 +2016-07-01|-73.0|-60.0|18.53695|-0.05075 +2016-07-01|-73.0|-61.0|19.18104|-0.05111 +2016-07-01|-73.0|-62.0|19.82616|-0.05146 +2016-07-01|-73.0|-63.0|20.47224|-0.0518 +2016-07-01|-73.0|-64.0|21.11924|-0.05212 +2016-07-01|-73.0|-65.0|21.76709|-0.05243 +2016-07-01|-73.0|-66.0|22.41573|-0.05271 +2016-07-01|-73.0|-67.0|23.06508|-0.05298 +2016-07-01|-73.0|-68.0|23.71508|-0.05323 +2016-07-01|-73.0|-69.0|24.36563|-0.05346 +2016-07-01|-73.0|-70.0|25.01665|-0.05367 +2016-07-01|-73.0|-71.0|25.66806|-0.05385 +2016-07-01|-73.0|-72.0|26.31976|-0.05401 +2016-07-01|-73.0|-73.0|26.97165|-0.05415 +2016-07-01|-73.0|-74.0|27.62364|-0.05426 +2016-07-01|-73.0|-75.0|28.27563|-0.05434 +2016-07-01|-73.0|-76.0|28.92751|-0.0544 +2016-07-01|-73.0|-77.0|29.57919|-0.05444 +2016-07-01|-73.0|-78.0|30.23056|-0.05444 +2016-07-01|-73.0|-79.0|30.88151|-0.05443 +2016-07-01|-73.0|-80.0|31.53195|-0.05438 +2016-07-01|-73.0|-81.0|32.18176|-0.05432 +2016-07-01|-73.0|-82.0|32.83086|-0.05422 +2016-07-01|-73.0|-83.0|33.47914|-0.05411 +2016-07-01|-73.0|-84.0|34.1265|-0.05396 +2016-07-01|-73.0|-85.0|34.77284|-0.0538 +2016-07-01|-73.0|-86.0|35.41808|-0.05361 +2016-07-01|-73.0|-87.0|36.06212|-0.0534 +2016-07-01|-73.0|-88.0|36.70488|-0.05316 +2016-07-01|-73.0|-89.0|37.34627|-0.05291 +2016-07-01|-73.0|-90.0|37.98622|-0.05264 +2016-07-01|-73.0|-91.0|38.62465|-0.05234 +2016-07-01|-73.0|-92.0|39.26149|-0.05203 +2016-07-01|-73.0|-93.0|39.89667|-0.05169 +2016-07-01|-73.0|-94.0|40.53015|-0.05134 +2016-07-01|-73.0|-95.0|41.16185|-0.05098 +2016-07-01|-73.0|-96.0|41.79175|-0.0506 +2016-07-01|-73.0|-97.0|42.41978|-0.0502 +2016-07-01|-73.0|-98.0|43.04593|-0.04979 +2016-07-01|-73.0|-99.0|43.67016|-0.04936 +2016-07-01|-73.0|-100.0|44.29244|-0.04893 +2016-07-01|-73.0|-101.0|44.91277|-0.04848 +2016-07-01|-73.0|-102.0|45.53113|-0.04802 +2016-07-01|-73.0|-103.0|46.14753|-0.04754 +2016-07-01|-73.0|-104.0|46.76197|-0.04706 +2016-07-01|-73.0|-105.0|47.37446|-0.04657 +2016-07-01|-73.0|-106.0|47.98503|-0.04607 +2016-07-01|-73.0|-107.0|48.59371|-0.04557 +2016-07-01|-73.0|-108.0|49.20053|-0.04505 +2016-07-01|-73.0|-109.0|49.80554|-0.04453 +2016-07-01|-73.0|-110.0|50.4088|-0.04401 +2016-07-01|-73.0|-111.0|51.01037|-0.04348 +2016-07-01|-73.0|-112.0|51.61031|-0.04294 +2016-07-01|-73.0|-113.0|52.20871|-0.0424 +2016-07-01|-73.0|-114.0|52.80565|-0.04185 +2016-07-01|-73.0|-115.0|53.40124|-0.0413 +2016-07-01|-73.0|-116.0|53.99556|-0.04075 +2016-07-01|-73.0|-117.0|54.58874|-0.04019 +2016-07-01|-73.0|-118.0|55.1809|-0.03963 +2016-07-01|-73.0|-119.0|55.77216|-0.03907 +2016-07-01|-73.0|-120.0|56.36266|-0.03851 +2016-07-01|-73.0|-121.0|56.95255|-0.03795 +2016-07-01|-73.0|-122.0|57.54199|-0.03738 +2016-07-01|-73.0|-123.0|58.13112|-0.03682 +2016-07-01|-73.0|-124.0|58.72014|-0.03625 +2016-07-01|-73.0|-125.0|59.3092|-0.03568 +2016-07-01|-73.0|-126.0|59.89851|-0.03512 +2016-07-01|-73.0|-127.0|60.48826|-0.03455 +2016-07-01|-73.0|-128.0|61.07864|-0.03399 +2016-07-01|-73.0|-129.0|61.66988|-0.03343 +2016-07-01|-73.0|-130.0|62.26219|-0.03287 +2016-07-01|-73.0|-131.0|62.8558|-0.03232 +2016-07-01|-73.0|-132.0|63.45095|-0.03177 +2016-07-01|-73.0|-133.0|64.04787|-0.03122 +2016-07-01|-73.0|-134.0|64.64683|-0.03068 +2016-07-01|-73.0|-135.0|65.24808|-0.03014 +2016-07-01|-73.0|-136.0|65.8519|-0.02961 +2016-07-01|-73.0|-137.0|66.45855|-0.02909 +2016-07-01|-73.0|-138.0|67.06832|-0.02858 +2016-07-01|-73.0|-139.0|67.68151|-0.02808 +2016-07-01|-73.0|-140.0|68.29842|-0.02759 +2016-07-01|-73.0|-141.0|68.91937|-0.02711 +2016-07-01|-73.0|-142.0|69.54466|-0.02664 +2016-07-01|-73.0|-143.0|70.17463|-0.02619 +2016-07-01|-73.0|-144.0|70.80962|-0.02576 +2016-07-01|-73.0|-145.0|71.44997|-0.02535 +2016-07-01|-73.0|-146.0|72.09605|-0.02496 +2016-07-01|-73.0|-147.0|72.74823|-0.0246 +2016-07-01|-73.0|-148.0|73.40687|-0.02425 +2016-07-01|-73.0|-149.0|74.07238|-0.02394 +2016-07-01|-73.0|-150.0|74.74516|-0.02366 +2016-07-01|-73.0|-151.0|75.42562|-0.02341 +2016-07-01|-73.0|-152.0|76.11419|-0.0232 +2016-07-01|-73.0|-153.0|76.81132|-0.02302 +2016-07-01|-73.0|-154.0|77.51746|-0.02289 +2016-07-01|-73.0|-155.0|78.23308|-0.02281 +2016-07-01|-73.0|-156.0|78.95867|-0.02278 +2016-07-01|-73.0|-157.0|79.69474|-0.0228 +2016-07-01|-73.0|-158.0|80.44181|-0.02288 +2016-07-01|-73.0|-159.0|81.20043|-0.02303 +2016-07-01|-73.0|-160.0|81.97116|-0.02324 +2016-07-01|-73.0|-161.0|82.75458|-0.02353 +2016-07-01|-73.0|-162.0|83.55132|-0.0239 +2016-07-01|-73.0|-163.0|84.362|-0.02436 +2016-07-01|-73.0|-164.0|85.18728|-0.0249 +2016-07-01|-73.0|-165.0|86.02785|-0.02555 +2016-07-01|-73.0|-166.0|86.88444|-0.0263 +2016-07-01|-73.0|-167.0|87.75778|-0.02717 +2016-07-01|-73.0|-168.0|88.64868|-0.02816 +2016-07-01|-73.0|-169.0|89.55793|-0.02927 +2016-07-01|-73.0|-170.0|90.4864|-0.03053 +2016-07-01|-73.0|-171.0|91.43498|-0.03194 +2016-07-01|-73.0|-172.0|92.40462|-0.03352 +2016-07-01|-73.0|-173.0|93.39628|-0.03526 +2016-07-01|-73.0|-174.0|94.41099|-0.03718 +2016-07-01|-73.0|-175.0|95.44982|-0.03931 +2016-07-01|-73.0|-176.0|96.5139|-0.04164 +2016-07-01|-73.0|-177.0|97.60439|-0.04419 +2016-07-01|-73.0|-178.0|98.72251|-0.04699 +2016-07-01|-73.0|-179.0|99.86955|-0.05003 +2016-07-01|-74.0|0.0|-20.79055|-0.09771 +2016-07-01|-74.0|1.0|-21.53414|-0.09988 +2016-07-01|-74.0|2.0|-22.28181|-0.10206 +2016-07-01|-74.0|3.0|-23.03357|-0.10425 +2016-07-01|-74.0|4.0|-23.78939|-0.10646 +2016-07-01|-74.0|5.0|-24.54923|-0.10867 +2016-07-01|-74.0|6.0|-25.31307|-0.11089 +2016-07-01|-74.0|7.0|-26.08086|-0.11312 +2016-07-01|-74.0|8.0|-26.85257|-0.11534 +2016-07-01|-74.0|9.0|-27.62813|-0.11756 +2016-07-01|-74.0|10.0|-28.4075|-0.11978 +2016-07-01|-74.0|11.0|-29.19061|-0.12199 +2016-07-01|-74.0|12.0|-29.97739|-0.12419 +2016-07-01|-74.0|13.0|-30.76778|-0.12638 +2016-07-01|-74.0|14.0|-31.5617|-0.12855 +2016-07-01|-74.0|15.0|-32.35907|-0.13071 +2016-07-01|-74.0|16.0|-33.15981|-0.13284 +2016-07-01|-74.0|17.0|-33.96384|-0.13495 +2016-07-01|-74.0|18.0|-34.77106|-0.13704 +2016-07-01|-74.0|19.0|-35.5814|-0.13911 +2016-07-01|-74.0|20.0|-36.39477|-0.14114 +2016-07-01|-74.0|21.0|-37.21106|-0.14315 +2016-07-01|-74.0|22.0|-38.03018|-0.14512 +2016-07-01|-74.0|23.0|-38.85205|-0.14707 +2016-07-01|-74.0|24.0|-39.67657|-0.14898 +2016-07-01|-74.0|25.0|-40.50365|-0.15085 +2016-07-01|-74.0|26.0|-41.33319|-0.15269 +2016-07-01|-74.0|27.0|-42.1651|-0.15449 +2016-07-01|-74.0|28.0|-42.99929|-0.15626 +2016-07-01|-74.0|29.0|-43.83567|-0.15798 +2016-07-01|-74.0|30.0|-44.67415|-0.15967 +2016-07-01|-74.0|31.0|-45.51465|-0.16132 +2016-07-01|-74.0|32.0|-46.35709|-0.16292 +2016-07-01|-74.0|33.0|-47.20138|-0.16449 +2016-07-01|-74.0|34.0|-48.04744|-0.16602 +2016-07-01|-74.0|35.0|-48.89521|-0.16751 +2016-07-01|-74.0|36.0|-49.74461|-0.16895 +2016-07-01|-74.0|37.0|-50.59557|-0.17036 +2016-07-01|-74.0|38.0|-51.44804|-0.17173 +2016-07-01|-74.0|39.0|-52.30195|-0.17305 +2016-07-01|-74.0|40.0|-53.15725|-0.17434 +2016-07-01|-74.0|41.0|-54.01389|-0.17559 +2016-07-01|-74.0|42.0|-54.87182|-0.17681 +2016-07-01|-74.0|43.0|-55.73101|-0.17798 +2016-07-01|-74.0|44.0|-56.59143|-0.17913 +2016-07-01|-74.0|45.0|-57.45304|-0.18023 +2016-07-01|-74.0|46.0|-58.31582|-0.18131 +2016-07-01|-74.0|47.0|-59.17975|-0.18235 +2016-07-01|-74.0|48.0|-60.04482|-0.18336 +2016-07-01|-74.0|49.0|-60.91104|-0.18434 +2016-07-01|-74.0|50.0|-61.77838|-0.18529 +2016-07-01|-74.0|51.0|-62.64688|-0.18621 +2016-07-01|-74.0|52.0|-63.51653|-0.18711 +2016-07-01|-74.0|53.0|-64.38736|-0.18799 +2016-07-01|-74.0|54.0|-65.25939|-0.18884 +2016-07-01|-74.0|55.0|-66.13267|-0.18968 +2016-07-01|-74.0|56.0|-67.00722|-0.19049 +2016-07-01|-74.0|57.0|-67.8831|-0.19129 +2016-07-01|-74.0|58.0|-68.76037|-0.19207 +2016-07-01|-74.0|59.0|-69.63907|-0.19284 +2016-07-01|-74.0|60.0|-70.5193|-0.1936 +2016-07-01|-74.0|61.0|-71.40112|-0.19435 +2016-07-01|-74.0|62.0|-72.28461|-0.19509 +2016-07-01|-74.0|63.0|-73.16988|-0.19582 +2016-07-01|-74.0|64.0|-74.05702|-0.19656 +2016-07-01|-74.0|65.0|-74.94614|-0.19729 +2016-07-01|-74.0|66.0|-75.83737|-0.19803 +2016-07-01|-74.0|67.0|-76.73082|-0.19877 +2016-07-01|-74.0|68.0|-77.62664|-0.19951 +2016-07-01|-74.0|69.0|-78.52497|-0.20027 +2016-07-01|-74.0|70.0|-79.42596|-0.20103 +2016-07-01|-74.0|71.0|-80.32977|-0.20181 +2016-07-01|-74.0|72.0|-81.23659|-0.20261 +2016-07-01|-74.0|73.0|-82.14659|-0.20342 +2016-07-01|-74.0|74.0|-83.05997|-0.20426 +2016-07-01|-74.0|75.0|-83.97693|-0.20512 +2016-07-01|-74.0|76.0|-84.89769|-0.20601 +2016-07-01|-74.0|77.0|-85.82248|-0.20692 +2016-07-01|-74.0|78.0|-86.75153|-0.20787 +2016-07-01|-74.0|79.0|-87.6851|-0.20885 +2016-07-01|-74.0|80.0|-88.62345|-0.20987 +2016-07-01|-74.0|81.0|-89.56686|-0.21094 +2016-07-01|-74.0|82.0|-90.51562|-0.21204 +2016-07-01|-74.0|83.0|-91.47002|-0.21319 +2016-07-01|-74.0|84.0|-92.4304|-0.2144 +2016-07-01|-74.0|85.0|-93.39709|-0.21565 +2016-07-01|-74.0|86.0|-94.37044|-0.21696 +2016-07-01|-74.0|87.0|-95.35081|-0.21833 +2016-07-01|-74.0|88.0|-96.33859|-0.21977 +2016-07-01|-74.0|89.0|-97.33418|-0.22126 +2016-07-01|-74.0|90.0|-98.33801|-0.22283 +2016-07-01|-74.0|91.0|-99.35051|-0.22447 +2016-07-01|-74.0|92.0|-100.37215|-0.22619 +2016-07-01|-74.0|93.0|-101.4034|-0.22798 +2016-07-01|-74.0|94.0|-102.44478|-0.22986 +2016-07-01|-74.0|95.0|-103.49681|-0.23182 +2016-07-01|-74.0|96.0|-104.56004|-0.23388 +2016-07-01|-74.0|97.0|-105.63505|-0.23602 +2016-07-01|-74.0|98.0|-106.72244|-0.23826 +2016-07-01|-74.0|99.0|-107.82284|-0.2406 +2016-07-01|-74.0|100.0|-108.93691|-0.24304 +2016-07-01|-74.0|101.0|-110.06533|-0.24559 +2016-07-01|-74.0|102.0|-111.20882|-0.24825 +2016-07-01|-74.0|103.0|-112.36813|-0.25102 +2016-07-01|-74.0|104.0|-113.54402|-0.25391 +2016-07-01|-74.0|105.0|-114.73732|-0.25691 +2016-07-01|-74.0|106.0|-115.94885|-0.26003 +2016-07-01|-74.0|107.0|-117.17951|-0.26327 +2016-07-01|-74.0|108.0|-118.43018|-0.26663 +2016-07-01|-74.0|109.0|-119.70182|-0.27012 +2016-07-01|-74.0|110.0|-120.9954|-0.27373 +2016-07-01|-74.0|111.0|-122.31192|-0.27746 +2016-07-01|-74.0|112.0|-123.65242|-0.28132 +2016-07-01|-74.0|113.0|-125.01796|-0.28529 +2016-07-01|-74.0|114.0|-126.40964|-0.28939 +2016-07-01|-74.0|115.0|-127.82858|-0.29359 +2016-07-01|-74.0|116.0|-129.2759|-0.29791 +2016-07-01|-74.0|117.0|-130.75276|-0.30232 +2016-07-01|-74.0|118.0|-132.26032|-0.30683 +2016-07-01|-74.0|119.0|-133.79975|-0.31141 +2016-07-01|-74.0|120.0|-135.37221|-0.31606 +2016-07-01|-74.0|121.0|-136.97884|-0.32077 +2016-07-01|-74.0|122.0|-138.62077|-0.3255 +2016-07-01|-74.0|123.0|-140.29906|-0.33025 +2016-07-01|-74.0|124.0|-142.01475|-0.33499 +2016-07-01|-74.0|125.0|-143.7688|-0.33969 +2016-07-01|-74.0|126.0|-145.56206|-0.34432 +2016-07-01|-74.0|127.0|-147.39529|-0.34884 +2016-07-01|-74.0|128.0|-149.26912|-0.35323 +2016-07-01|-74.0|129.0|-151.18401|-0.35742 +2016-07-01|-74.0|130.0|-153.14024|-0.36139 +2016-07-01|-74.0|131.0|-155.13789|-0.36509 +2016-07-01|-74.0|132.0|-157.1768|-0.36845 +2016-07-01|-74.0|133.0|-159.25654|-0.37144 +2016-07-01|-74.0|134.0|-161.37641|-0.37399 +2016-07-01|-74.0|135.0|-163.53536|-0.37605 +2016-07-01|-74.0|136.0|-165.73204|-0.37757 +2016-07-01|-74.0|137.0|-167.96474|-0.37848 +2016-07-01|-74.0|138.0|-170.23139|-0.37876 +2016-07-01|-74.0|139.0|-172.52955|-0.37833 +2016-07-01|-74.0|140.0|-174.85641|-0.37718 +2016-07-01|-74.0|141.0|-177.20882|-0.37526 +2016-07-01|-74.0|142.0|-179.5833|-0.37255 +2016-07-01|-74.0|143.0|178.02394|-0.36905 +2016-07-01|-74.0|144.0|175.61696|-0.36474 +2016-07-01|-74.0|145.0|173.20003|-0.35964 +2016-07-01|-74.0|146.0|170.77757|-0.35376 +2016-07-01|-74.0|147.0|168.35412|-0.34714 +2016-07-01|-74.0|148.0|165.93427|-0.33983 +2016-07-01|-74.0|149.0|163.52256|-0.33187 +2016-07-01|-74.0|150.0|161.12347|-0.32333 +2016-07-01|-74.0|151.0|158.74132|-0.31427 +2016-07-01|-74.0|152.0|156.38023|-0.30477 +2016-07-01|-74.0|153.0|154.04408|-0.2949 +2016-07-01|-74.0|154.0|151.73643|-0.28475 +2016-07-01|-74.0|155.0|149.46054|-0.2744 +2016-07-01|-74.0|156.0|147.21932|-0.26391 +2016-07-01|-74.0|157.0|145.01532|-0.25337 +2016-07-01|-74.0|158.0|142.85072|-0.24283 +2016-07-01|-74.0|159.0|140.72732|-0.23237 +2016-07-01|-74.0|160.0|138.6466|-0.22204 +2016-07-01|-74.0|161.0|136.60968|-0.21189 +2016-07-01|-74.0|162.0|134.61735|-0.20196 +2016-07-01|-74.0|163.0|132.67012|-0.19229 +2016-07-01|-74.0|164.0|130.76824|-0.18292 +2016-07-01|-74.0|165.0|128.91168|-0.17386 +2016-07-01|-74.0|166.0|127.10023|-0.16514 +2016-07-01|-74.0|167.0|125.33345|-0.15677 +2016-07-01|-74.0|168.0|123.61078|-0.14875 +2016-07-01|-74.0|169.0|121.93149|-0.1411 +2016-07-01|-74.0|170.0|120.29474|-0.13381 +2016-07-01|-74.0|171.0|118.69959|-0.12688 +2016-07-01|-74.0|172.0|117.14503|-0.12032 +2016-07-01|-74.0|173.0|115.62998|-0.1141 +2016-07-01|-74.0|174.0|114.15334|-0.10823 +2016-07-01|-74.0|175.0|112.71395|-0.1027 +2016-07-01|-74.0|176.0|111.31065|-0.09749 +2016-07-01|-74.0|177.0|109.94225|-0.09259 +2016-07-01|-74.0|178.0|108.60759|-0.08799 +2016-07-01|-74.0|179.0|107.3055|-0.08368 +2016-07-01|-74.0|-1.0|-20.05106|-0.09557 +2016-07-01|-74.0|-2.0|-19.31566|-0.09346 +2016-07-01|-74.0|-3.0|-18.58436|-0.09137 +2016-07-01|-74.0|-4.0|-17.85713|-0.08931 +2016-07-01|-74.0|-5.0|-17.13395|-0.08728 +2016-07-01|-74.0|-6.0|-16.4148|-0.08528 +2016-07-01|-74.0|-7.0|-15.69962|-0.08333 +2016-07-01|-74.0|-8.0|-14.98839|-0.08141 +2016-07-01|-74.0|-9.0|-14.28105|-0.07953 +2016-07-01|-74.0|-10.0|-13.57753|-0.07771 +2016-07-01|-74.0|-11.0|-12.87778|-0.07592 +2016-07-01|-74.0|-12.0|-12.18171|-0.07419 +2016-07-01|-74.0|-13.0|-11.48925|-0.07251 +2016-07-01|-74.0|-14.0|-10.80031|-0.07088 +2016-07-01|-74.0|-15.0|-10.11479|-0.06931 +2016-07-01|-74.0|-16.0|-9.43259|-0.06779 +2016-07-01|-74.0|-17.0|-8.75362|-0.06633 +2016-07-01|-74.0|-18.0|-8.07775|-0.06494 +2016-07-01|-74.0|-19.0|-7.40488|-0.0636 +2016-07-01|-74.0|-20.0|-6.73487|-0.06232 +2016-07-01|-74.0|-21.0|-6.06761|-0.06111 +2016-07-01|-74.0|-22.0|-5.40297|-0.05996 +2016-07-01|-74.0|-23.0|-4.7408|-0.05887 +2016-07-01|-74.0|-24.0|-4.08098|-0.05785 +2016-07-01|-74.0|-25.0|-3.42337|-0.05689 +2016-07-01|-74.0|-26.0|-2.76782|-0.05599 +2016-07-01|-74.0|-27.0|-2.1142|-0.05516 +2016-07-01|-74.0|-28.0|-1.46235|-0.05439 +2016-07-01|-74.0|-29.0|-0.81215|-0.05368 +2016-07-01|-74.0|-30.0|-0.16343|-0.05304 +2016-07-01|-74.0|-31.0|0.48394|-0.05246 +2016-07-01|-74.0|-32.0|1.1301|-0.05193 +2016-07-01|-74.0|-33.0|1.7752|-0.05146 +2016-07-01|-74.0|-34.0|2.41938|-0.05105 +2016-07-01|-74.0|-35.0|3.06276|-0.0507 +2016-07-01|-74.0|-36.0|3.7055|-0.0504 +2016-07-01|-74.0|-37.0|4.34771|-0.05015 +2016-07-01|-74.0|-38.0|4.98953|-0.04995 +2016-07-01|-74.0|-39.0|5.63108|-0.0498 +2016-07-01|-74.0|-40.0|6.27247|-0.04969 +2016-07-01|-74.0|-41.0|6.91383|-0.04963 +2016-07-01|-74.0|-42.0|7.55525|-0.04961 +2016-07-01|-74.0|-43.0|8.19685|-0.04962 +2016-07-01|-74.0|-44.0|8.83871|-0.04968 +2016-07-01|-74.0|-45.0|9.48093|-0.04976 +2016-07-01|-74.0|-46.0|10.12359|-0.04988 +2016-07-01|-74.0|-47.0|10.76678|-0.05003 +2016-07-01|-74.0|-48.0|11.41056|-0.0502 +2016-07-01|-74.0|-49.0|12.05499|-0.0504 +2016-07-01|-74.0|-50.0|12.70014|-0.05062 +2016-07-01|-74.0|-51.0|13.34605|-0.05085 +2016-07-01|-74.0|-52.0|13.99277|-0.05111 +2016-07-01|-74.0|-53.0|14.64033|-0.05137 +2016-07-01|-74.0|-54.0|15.28876|-0.05165 +2016-07-01|-74.0|-55.0|15.93808|-0.05193 +2016-07-01|-74.0|-56.0|16.58831|-0.05223 +2016-07-01|-74.0|-57.0|17.23946|-0.05252 +2016-07-01|-74.0|-58.0|17.89152|-0.05282 +2016-07-01|-74.0|-59.0|18.54449|-0.05312 +2016-07-01|-74.0|-60.0|19.19836|-0.05342 +2016-07-01|-74.0|-61.0|19.85311|-0.05371 +2016-07-01|-74.0|-62.0|20.50872|-0.054 +2016-07-01|-74.0|-63.0|21.16515|-0.05428 +2016-07-01|-74.0|-64.0|21.82237|-0.05455 +2016-07-01|-74.0|-65.0|22.48034|-0.05481 +2016-07-01|-74.0|-66.0|23.13901|-0.05506 +2016-07-01|-74.0|-67.0|23.79834|-0.0553 +2016-07-01|-74.0|-68.0|24.45826|-0.05552 +2016-07-01|-74.0|-69.0|25.11872|-0.05573 +2016-07-01|-74.0|-70.0|25.77966|-0.05591 +2016-07-01|-74.0|-71.0|26.44101|-0.05609 +2016-07-01|-74.0|-72.0|27.1027|-0.05624 +2016-07-01|-74.0|-73.0|27.76466|-0.05638 +2016-07-01|-74.0|-74.0|28.42682|-0.05649 +2016-07-01|-74.0|-75.0|29.0891|-0.05659 +2016-07-01|-74.0|-76.0|29.75143|-0.05667 +2016-07-01|-74.0|-77.0|30.41373|-0.05672 +2016-07-01|-74.0|-78.0|31.07591|-0.05676 +2016-07-01|-74.0|-79.0|31.73791|-0.05678 +2016-07-01|-74.0|-80.0|32.39964|-0.05677 +2016-07-01|-74.0|-81.0|33.06102|-0.05675 +2016-07-01|-74.0|-82.0|33.72198|-0.0567 +2016-07-01|-74.0|-83.0|34.38244|-0.05664 +2016-07-01|-74.0|-84.0|35.04233|-0.05655 +2016-07-01|-74.0|-85.0|35.70157|-0.05644 +2016-07-01|-74.0|-86.0|36.3601|-0.05632 +2016-07-01|-74.0|-87.0|37.01784|-0.05618 +2016-07-01|-74.0|-88.0|37.67472|-0.05602 +2016-07-01|-74.0|-89.0|38.3307|-0.05584 +2016-07-01|-74.0|-90.0|38.98571|-0.05564 +2016-07-01|-74.0|-91.0|39.63969|-0.05543 +2016-07-01|-74.0|-92.0|40.29259|-0.0552 +2016-07-01|-74.0|-93.0|40.94437|-0.05496 +2016-07-01|-74.0|-94.0|41.59498|-0.0547 +2016-07-01|-74.0|-95.0|42.24439|-0.05442 +2016-07-01|-74.0|-96.0|42.89257|-0.05414 +2016-07-01|-74.0|-97.0|43.53948|-0.05384 +2016-07-01|-74.0|-98.0|44.18511|-0.05353 +2016-07-01|-74.0|-99.0|44.82945|-0.05321 +2016-07-01|-74.0|-100.0|45.47248|-0.05287 +2016-07-01|-74.0|-101.0|46.11419|-0.05253 +2016-07-01|-74.0|-102.0|46.7546|-0.05218 +2016-07-01|-74.0|-103.0|47.39371|-0.05182 +2016-07-01|-74.0|-104.0|48.03154|-0.05145 +2016-07-01|-74.0|-105.0|48.6681|-0.05107 +2016-07-01|-74.0|-106.0|49.30344|-0.05069 +2016-07-01|-74.0|-107.0|49.93758|-0.0503 +2016-07-01|-74.0|-108.0|50.57058|-0.04991 +2016-07-01|-74.0|-109.0|51.20247|-0.04951 +2016-07-01|-74.0|-110.0|51.83333|-0.04911 +2016-07-01|-74.0|-111.0|52.46321|-0.0487 +2016-07-01|-74.0|-112.0|53.09218|-0.04829 +2016-07-01|-74.0|-113.0|53.72034|-0.04788 +2016-07-01|-74.0|-114.0|54.34777|-0.04746 +2016-07-01|-74.0|-115.0|54.97456|-0.04705 +2016-07-01|-74.0|-116.0|55.60083|-0.04663 +2016-07-01|-74.0|-117.0|56.22667|-0.04621 +2016-07-01|-74.0|-118.0|56.85222|-0.0458 +2016-07-01|-74.0|-119.0|57.47759|-0.04538 +2016-07-01|-74.0|-120.0|58.10293|-0.04496 +2016-07-01|-74.0|-121.0|58.72837|-0.04455 +2016-07-01|-74.0|-122.0|59.35408|-0.04414 +2016-07-01|-74.0|-123.0|59.9802|-0.04373 +2016-07-01|-74.0|-124.0|60.60691|-0.04332 +2016-07-01|-74.0|-125.0|61.23438|-0.04292 +2016-07-01|-74.0|-126.0|61.86279|-0.04252 +2016-07-01|-74.0|-127.0|62.49234|-0.04213 +2016-07-01|-74.0|-128.0|63.12323|-0.04175 +2016-07-01|-74.0|-129.0|63.75566|-0.04136 +2016-07-01|-74.0|-130.0|64.38984|-0.04099 +2016-07-01|-74.0|-131.0|65.02601|-0.04063 +2016-07-01|-74.0|-132.0|65.66439|-0.04027 +2016-07-01|-74.0|-133.0|66.30522|-0.03992 +2016-07-01|-74.0|-134.0|66.94876|-0.03959 +2016-07-01|-74.0|-135.0|67.59525|-0.03926 +2016-07-01|-74.0|-136.0|68.24496|-0.03895 +2016-07-01|-74.0|-137.0|68.89817|-0.03865 +2016-07-01|-74.0|-138.0|69.55516|-0.03837 +2016-07-01|-74.0|-139.0|70.21622|-0.03811 +2016-07-01|-74.0|-140.0|70.88165|-0.03786 +2016-07-01|-74.0|-141.0|71.55175|-0.03763 +2016-07-01|-74.0|-142.0|72.22684|-0.03742 +2016-07-01|-74.0|-143.0|72.90726|-0.03724 +2016-07-01|-74.0|-144.0|73.59334|-0.03708 +2016-07-01|-74.0|-145.0|74.28543|-0.03695 +2016-07-01|-74.0|-146.0|74.98388|-0.03684 +2016-07-01|-74.0|-147.0|75.68907|-0.03677 +2016-07-01|-74.0|-148.0|76.40137|-0.03673 +2016-07-01|-74.0|-149.0|77.12117|-0.03673 +2016-07-01|-74.0|-150.0|77.84888|-0.03677 +2016-07-01|-74.0|-151.0|78.58492|-0.03685 +2016-07-01|-74.0|-152.0|79.3297|-0.03698 +2016-07-01|-74.0|-153.0|80.08369|-0.03715 +2016-07-01|-74.0|-154.0|80.84732|-0.03738 +2016-07-01|-74.0|-155.0|81.62107|-0.03766 +2016-07-01|-74.0|-156.0|82.40543|-0.038 +2016-07-01|-74.0|-157.0|83.2009|-0.03841 +2016-07-01|-74.0|-158.0|84.00801|-0.03888 +2016-07-01|-74.0|-159.0|84.82728|-0.03943 +2016-07-01|-74.0|-160.0|85.65928|-0.04005 +2016-07-01|-74.0|-161.0|86.50459|-0.04076 +2016-07-01|-74.0|-162.0|87.36379|-0.04156 +2016-07-01|-74.0|-163.0|88.23751|-0.04246 +2016-07-01|-74.0|-164.0|89.1264|-0.04345 +2016-07-01|-74.0|-165.0|90.0311|-0.04456 +2016-07-01|-74.0|-166.0|90.95232|-0.04577 +2016-07-01|-74.0|-167.0|91.89077|-0.04711 +2016-07-01|-74.0|-168.0|92.84719|-0.04858 +2016-07-01|-74.0|-169.0|93.82234|-0.05019 +2016-07-01|-74.0|-170.0|94.81703|-0.05194 +2016-07-01|-74.0|-171.0|95.83207|-0.05385 +2016-07-01|-74.0|-172.0|96.86833|-0.05592 +2016-07-01|-74.0|-173.0|97.92669|-0.05817 +2016-07-01|-74.0|-174.0|99.00806|-0.0606 +2016-07-01|-74.0|-175.0|100.1134|-0.06322 +2016-07-01|-74.0|-176.0|101.24367|-0.06605 +2016-07-01|-74.0|-177.0|102.3999|-0.0691 +2016-07-01|-74.0|-178.0|103.58312|-0.07237 +2016-07-01|-74.0|-179.0|104.79439|-0.07589 +2016-07-01|-75.0|0.0|-21.03247|-0.10026 +2016-07-01|-75.0|1.0|-21.78654|-0.10225 +2016-07-01|-75.0|2.0|-22.54437|-0.10426 +2016-07-01|-75.0|3.0|-23.30595|-0.10628 +2016-07-01|-75.0|4.0|-24.07127|-0.10831 +2016-07-01|-75.0|5.0|-24.84032|-0.11036 +2016-07-01|-75.0|6.0|-25.61306|-0.11241 +2016-07-01|-75.0|7.0|-26.38947|-0.11446 +2016-07-01|-75.0|8.0|-27.16952|-0.11652 +2016-07-01|-75.0|9.0|-27.95317|-0.11857 +2016-07-01|-75.0|10.0|-28.74037|-0.12062 +2016-07-01|-75.0|11.0|-29.53108|-0.12267 +2016-07-01|-75.0|12.0|-30.32524|-0.12471 +2016-07-01|-75.0|13.0|-31.12281|-0.12674 +2016-07-01|-75.0|14.0|-31.92372|-0.12876 +2016-07-01|-75.0|15.0|-32.72792|-0.13077 +2016-07-01|-75.0|16.0|-33.53533|-0.13276 +2016-07-01|-75.0|17.0|-34.3459|-0.13474 +2016-07-01|-75.0|18.0|-35.15955|-0.13669 +2016-07-01|-75.0|19.0|-35.97621|-0.13863 +2016-07-01|-75.0|20.0|-36.79582|-0.14054 +2016-07-01|-75.0|21.0|-37.6183|-0.14243 +2016-07-01|-75.0|22.0|-38.44358|-0.14429 +2016-07-01|-75.0|23.0|-39.27158|-0.14613 +2016-07-01|-75.0|24.0|-40.10222|-0.14794 +2016-07-01|-75.0|25.0|-40.93544|-0.14972 +2016-07-01|-75.0|26.0|-41.77116|-0.15147 +2016-07-01|-75.0|27.0|-42.60931|-0.15319 +2016-07-01|-75.0|28.0|-43.44981|-0.15488 +2016-07-01|-75.0|29.0|-44.2926|-0.15654 +2016-07-01|-75.0|30.0|-45.13759|-0.15816 +2016-07-01|-75.0|31.0|-45.98473|-0.15976 +2016-07-01|-75.0|32.0|-46.83396|-0.16132 +2016-07-01|-75.0|33.0|-47.6852|-0.16284 +2016-07-01|-75.0|34.0|-48.53839|-0.16433 +2016-07-01|-75.0|35.0|-49.39348|-0.16579 +2016-07-01|-75.0|36.0|-50.25041|-0.16722 +2016-07-01|-75.0|37.0|-51.10914|-0.16861 +2016-07-01|-75.0|38.0|-51.96961|-0.16996 +2016-07-01|-75.0|39.0|-52.83177|-0.17129 +2016-07-01|-75.0|40.0|-53.6956|-0.17258 +2016-07-01|-75.0|41.0|-54.56104|-0.17384 +2016-07-01|-75.0|42.0|-55.42808|-0.17507 +2016-07-01|-75.0|43.0|-56.29668|-0.17627 +2016-07-01|-75.0|44.0|-57.16681|-0.17743 +2016-07-01|-75.0|45.0|-58.03847|-0.17857 +2016-07-01|-75.0|46.0|-58.91163|-0.17968 +2016-07-01|-75.0|47.0|-59.7863|-0.18076 +2016-07-01|-75.0|48.0|-60.66246|-0.18182 +2016-07-01|-75.0|49.0|-61.54012|-0.18285 +2016-07-01|-75.0|50.0|-62.41929|-0.18385 +2016-07-01|-75.0|51.0|-63.29997|-0.18484 +2016-07-01|-75.0|52.0|-64.18221|-0.1858 +2016-07-01|-75.0|53.0|-65.066|-0.18674 +2016-07-01|-75.0|54.0|-65.9514|-0.18766 +2016-07-01|-75.0|55.0|-66.83843|-0.18857 +2016-07-01|-75.0|56.0|-67.72715|-0.18946 +2016-07-01|-75.0|57.0|-68.6176|-0.19033 +2016-07-01|-75.0|58.0|-69.50983|-0.19119 +2016-07-01|-75.0|59.0|-70.40393|-0.19204 +2016-07-01|-75.0|60.0|-71.29994|-0.19288 +2016-07-01|-75.0|61.0|-72.19796|-0.19372 +2016-07-01|-75.0|62.0|-73.09807|-0.19455 +2016-07-01|-75.0|63.0|-74.00036|-0.19537 +2016-07-01|-75.0|64.0|-74.90493|-0.19619 +2016-07-01|-75.0|65.0|-75.81189|-0.19701 +2016-07-01|-75.0|66.0|-76.72135|-0.19784 +2016-07-01|-75.0|67.0|-77.63344|-0.19866 +2016-07-01|-75.0|68.0|-78.54829|-0.1995 +2016-07-01|-75.0|69.0|-79.46604|-0.20034 +2016-07-01|-75.0|70.0|-80.38683|-0.20119 +2016-07-01|-75.0|71.0|-81.31082|-0.20205 +2016-07-01|-75.0|72.0|-82.23818|-0.20293 +2016-07-01|-75.0|73.0|-83.16908|-0.20382 +2016-07-01|-75.0|74.0|-84.10371|-0.20473 +2016-07-01|-75.0|75.0|-85.04226|-0.20567 +2016-07-01|-75.0|76.0|-85.98493|-0.20662 +2016-07-01|-75.0|77.0|-86.93194|-0.2076 +2016-07-01|-75.0|78.0|-87.88351|-0.20861 +2016-07-01|-75.0|79.0|-88.83988|-0.20965 +2016-07-01|-75.0|80.0|-89.80128|-0.21072 +2016-07-01|-75.0|81.0|-90.76798|-0.21183 +2016-07-01|-75.0|82.0|-91.74025|-0.21297 +2016-07-01|-75.0|83.0|-92.71837|-0.21416 +2016-07-01|-75.0|84.0|-93.70263|-0.21538 +2016-07-01|-75.0|85.0|-94.69334|-0.21665 +2016-07-01|-75.0|86.0|-95.69082|-0.21797 +2016-07-01|-75.0|87.0|-96.69539|-0.21933 +2016-07-01|-75.0|88.0|-97.70742|-0.22075 +2016-07-01|-75.0|89.0|-98.72726|-0.22222 +2016-07-01|-75.0|90.0|-99.75528|-0.22375 +2016-07-01|-75.0|91.0|-100.79189|-0.22534 +2016-07-01|-75.0|92.0|-101.83749|-0.22699 +2016-07-01|-75.0|93.0|-102.89251|-0.22871 +2016-07-01|-75.0|94.0|-103.95739|-0.23049 +2016-07-01|-75.0|95.0|-105.03258|-0.23234 +2016-07-01|-75.0|96.0|-106.11858|-0.23426 +2016-07-01|-75.0|97.0|-107.21588|-0.23625 +2016-07-01|-75.0|98.0|-108.32499|-0.23832 +2016-07-01|-75.0|99.0|-109.44644|-0.24047 +2016-07-01|-75.0|100.0|-110.5808|-0.2427 +2016-07-01|-75.0|101.0|-111.72863|-0.24501 +2016-07-01|-75.0|102.0|-112.89054|-0.2474 +2016-07-01|-75.0|103.0|-114.06713|-0.24987 +2016-07-01|-75.0|104.0|-115.25904|-0.25243 +2016-07-01|-75.0|105.0|-116.46693|-0.25508 +2016-07-01|-75.0|106.0|-117.69147|-0.25781 +2016-07-01|-75.0|107.0|-118.93336|-0.26063 +2016-07-01|-75.0|108.0|-120.19331|-0.26353 +2016-07-01|-75.0|109.0|-121.47205|-0.26652 +2016-07-01|-75.0|110.0|-122.77033|-0.26959 +2016-07-01|-75.0|111.0|-124.08891|-0.27274 +2016-07-01|-75.0|112.0|-125.42857|-0.27597 +2016-07-01|-75.0|113.0|-126.79009|-0.27928 +2016-07-01|-75.0|114.0|-128.17428|-0.28266 +2016-07-01|-75.0|115.0|-129.58193|-0.2861 +2016-07-01|-75.0|116.0|-131.01384|-0.2896 +2016-07-01|-75.0|117.0|-132.47082|-0.29315 +2016-07-01|-75.0|118.0|-133.95366|-0.29675 +2016-07-01|-75.0|119.0|-135.46313|-0.30038 +2016-07-01|-75.0|120.0|-137.0|-0.30402 +2016-07-01|-75.0|121.0|-138.56498|-0.30767 +2016-07-01|-75.0|122.0|-140.15878|-0.31132 +2016-07-01|-75.0|123.0|-141.78203|-0.31494 +2016-07-01|-75.0|124.0|-143.43534|-0.31851 +2016-07-01|-75.0|125.0|-145.11923|-0.32202 +2016-07-01|-75.0|126.0|-146.83413|-0.32543 +2016-07-01|-75.0|127.0|-148.5804|-0.32874 +2016-07-01|-75.0|128.0|-150.3583|-0.33191 +2016-07-01|-75.0|129.0|-152.16794|-0.33491 +2016-07-01|-75.0|130.0|-154.00932|-0.33771 +2016-07-01|-75.0|131.0|-155.88229|-0.34028 +2016-07-01|-75.0|132.0|-157.78654|-0.34258 +2016-07-01|-75.0|133.0|-159.72156|-0.3446 +2016-07-01|-75.0|134.0|-161.68668|-0.34628 +2016-07-01|-75.0|135.0|-163.68102|-0.3476 +2016-07-01|-75.0|136.0|-165.70349|-0.34852 +2016-07-01|-75.0|137.0|-167.75277|-0.34902 +2016-07-01|-75.0|138.0|-169.82733|-0.34906 +2016-07-01|-75.0|139.0|-171.92544|-0.34861 +2016-07-01|-75.0|140.0|-174.04512|-0.34766 +2016-07-01|-75.0|141.0|-176.18418|-0.34618 +2016-07-01|-75.0|142.0|-178.34026|-0.34415 +2016-07-01|-75.0|143.0|179.48922|-0.34158 +2016-07-01|-75.0|144.0|177.30699|-0.33845 +2016-07-01|-75.0|145.0|175.11591|-0.33477 +2016-07-01|-75.0|146.0|172.91896|-0.33054 +2016-07-01|-75.0|147.0|170.71923|-0.32579 +2016-07-01|-75.0|148.0|168.51982|-0.32053 +2016-07-01|-75.0|149.0|166.32387|-0.31479 +2016-07-01|-75.0|150.0|164.13449|-0.3086 +2016-07-01|-75.0|151.0|161.95476|-0.302 +2016-07-01|-75.0|152.0|159.78766|-0.29502 +2016-07-01|-75.0|153.0|157.63606|-0.28773 +2016-07-01|-75.0|154.0|155.50269|-0.28015 +2016-07-01|-75.0|155.0|153.3901|-0.27234 +2016-07-01|-75.0|156.0|151.30068|-0.26435 +2016-07-01|-75.0|157.0|149.23661|-0.25623 +2016-07-01|-75.0|158.0|147.19986|-0.24801 +2016-07-01|-75.0|159.0|145.19216|-0.23975 +2016-07-01|-75.0|160.0|143.21505|-0.23149 +2016-07-01|-75.0|161.0|141.26983|-0.22327 +2016-07-01|-75.0|162.0|139.3576|-0.21512 +2016-07-01|-75.0|163.0|137.47921|-0.20708 +2016-07-01|-75.0|164.0|135.63537|-0.19917 +2016-07-01|-75.0|165.0|133.82654|-0.19143 +2016-07-01|-75.0|166.0|132.05305|-0.18388 +2016-07-01|-75.0|167.0|130.31503|-0.17652 +2016-07-01|-75.0|168.0|128.6125|-0.16939 +2016-07-01|-75.0|169.0|126.9453|-0.16249 +2016-07-01|-75.0|170.0|125.31319|-0.15583 +2016-07-01|-75.0|171.0|123.71581|-0.14942 +2016-07-01|-75.0|172.0|122.15269|-0.14326 +2016-07-01|-75.0|173.0|120.62331|-0.13736 +2016-07-01|-75.0|174.0|119.12706|-0.13171 +2016-07-01|-75.0|175.0|117.66328|-0.12631 +2016-07-01|-75.0|176.0|116.23126|-0.12117 +2016-07-01|-75.0|177.0|114.83025|-0.11628 +2016-07-01|-75.0|178.0|113.4595|-0.11163 +2016-07-01|-75.0|179.0|112.11819|-0.10721 +2016-07-01|-75.0|-1.0|-20.28216|-0.09829 +2016-07-01|-75.0|-2.0|-19.53562|-0.09634 +2016-07-01|-75.0|-3.0|-18.79282|-0.09441 +2016-07-01|-75.0|-4.0|-18.05375|-0.09251 +2016-07-01|-75.0|-5.0|-17.31839|-0.09064 +2016-07-01|-75.0|-6.0|-16.58671|-0.0888 +2016-07-01|-75.0|-7.0|-15.85868|-0.08699 +2016-07-01|-75.0|-8.0|-15.13424|-0.08522 +2016-07-01|-75.0|-9.0|-14.41337|-0.08348 +2016-07-01|-75.0|-10.0|-13.69599|-0.08178 +2016-07-01|-75.0|-11.0|-12.98206|-0.08013 +2016-07-01|-75.0|-12.0|-12.27151|-0.07852 +2016-07-01|-75.0|-13.0|-11.56427|-0.07695 +2016-07-01|-75.0|-14.0|-10.86026|-0.07543 +2016-07-01|-75.0|-15.0|-10.15939|-0.07396 +2016-07-01|-75.0|-16.0|-9.46159|-0.07254 +2016-07-01|-75.0|-17.0|-8.76677|-0.07117 +2016-07-01|-75.0|-18.0|-8.07481|-0.06985 +2016-07-01|-75.0|-19.0|-7.38564|-0.06859 +2016-07-01|-75.0|-20.0|-6.69913|-0.06737 +2016-07-01|-75.0|-21.0|-6.01519|-0.06621 +2016-07-01|-75.0|-22.0|-5.3337|-0.06511 +2016-07-01|-75.0|-23.0|-4.65455|-0.06406 +2016-07-01|-75.0|-24.0|-3.97761|-0.06307 +2016-07-01|-75.0|-25.0|-3.30278|-0.06213 +2016-07-01|-75.0|-26.0|-2.62993|-0.06125 +2016-07-01|-75.0|-27.0|-1.95894|-0.06043 +2016-07-01|-75.0|-28.0|-1.28968|-0.05966 +2016-07-01|-75.0|-29.0|-0.62204|-0.05895 +2016-07-01|-75.0|-30.0|0.04412|-0.05828 +2016-07-01|-75.0|-31.0|0.70892|-0.05768 +2016-07-01|-75.0|-32.0|1.37248|-0.05712 +2016-07-01|-75.0|-33.0|2.03492|-0.05662 +2016-07-01|-75.0|-34.0|2.69637|-0.05617 +2016-07-01|-75.0|-35.0|3.35694|-0.05577 +2016-07-01|-75.0|-36.0|4.01675|-0.05541 +2016-07-01|-75.0|-37.0|4.67592|-0.0551 +2016-07-01|-75.0|-38.0|5.33455|-0.05484 +2016-07-01|-75.0|-39.0|5.99277|-0.05462 +2016-07-01|-75.0|-40.0|6.65066|-0.05444 +2016-07-01|-75.0|-41.0|7.30834|-0.0543 +2016-07-01|-75.0|-42.0|7.96589|-0.0542 +2016-07-01|-75.0|-43.0|8.62342|-0.05413 +2016-07-01|-75.0|-44.0|9.28101|-0.0541 +2016-07-01|-75.0|-45.0|9.93874|-0.0541 +2016-07-01|-75.0|-46.0|10.59669|-0.05413 +2016-07-01|-75.0|-47.0|11.25494|-0.05419 +2016-07-01|-75.0|-48.0|11.91355|-0.05427 +2016-07-01|-75.0|-49.0|12.57259|-0.05438 +2016-07-01|-75.0|-50.0|13.2321|-0.05451 +2016-07-01|-75.0|-51.0|13.89215|-0.05466 +2016-07-01|-75.0|-52.0|14.55277|-0.05482 +2016-07-01|-75.0|-53.0|15.21401|-0.055 +2016-07-01|-75.0|-54.0|15.8759|-0.05519 +2016-07-01|-75.0|-55.0|16.53846|-0.0554 +2016-07-01|-75.0|-56.0|17.20173|-0.05561 +2016-07-01|-75.0|-57.0|17.8657|-0.05583 +2016-07-01|-75.0|-58.0|18.53041|-0.05606 +2016-07-01|-75.0|-59.0|19.19584|-0.05629 +2016-07-01|-75.0|-60.0|19.86201|-0.05652 +2016-07-01|-75.0|-61.0|20.5289|-0.05675 +2016-07-01|-75.0|-62.0|21.1965|-0.05698 +2016-07-01|-75.0|-63.0|21.86481|-0.05721 +2016-07-01|-75.0|-64.0|22.5338|-0.05743 +2016-07-01|-75.0|-65.0|23.20345|-0.05764 +2016-07-01|-75.0|-66.0|23.87373|-0.05785 +2016-07-01|-75.0|-67.0|24.5446|-0.05806 +2016-07-01|-75.0|-68.0|25.21604|-0.05825 +2016-07-01|-75.0|-69.0|25.888|-0.05843 +2016-07-01|-75.0|-70.0|26.56044|-0.0586 +2016-07-01|-75.0|-71.0|27.23332|-0.05876 +2016-07-01|-75.0|-72.0|27.90659|-0.05891 +2016-07-01|-75.0|-73.0|28.5802|-0.05904 +2016-07-01|-75.0|-74.0|29.2541|-0.05916 +2016-07-01|-75.0|-75.0|29.92824|-0.05926 +2016-07-01|-75.0|-76.0|30.60255|-0.05935 +2016-07-01|-75.0|-77.0|31.277|-0.05943 +2016-07-01|-75.0|-78.0|31.95151|-0.05948 +2016-07-01|-75.0|-79.0|32.62604|-0.05953 +2016-07-01|-75.0|-80.0|33.30053|-0.05955 +2016-07-01|-75.0|-81.0|33.97492|-0.05957 +2016-07-01|-75.0|-82.0|34.64915|-0.05956 +2016-07-01|-75.0|-83.0|35.32318|-0.05954 +2016-07-01|-75.0|-84.0|35.99695|-0.05951 +2016-07-01|-75.0|-85.0|36.67041|-0.05946 +2016-07-01|-75.0|-86.0|37.34351|-0.05939 +2016-07-01|-75.0|-87.0|38.0162|-0.05931 +2016-07-01|-75.0|-88.0|38.68844|-0.05922 +2016-07-01|-75.0|-89.0|39.36018|-0.05911 +2016-07-01|-75.0|-90.0|40.03138|-0.05898 +2016-07-01|-75.0|-91.0|40.70201|-0.05885 +2016-07-01|-75.0|-92.0|41.37204|-0.0587 +2016-07-01|-75.0|-93.0|42.04143|-0.05854 +2016-07-01|-75.0|-94.0|42.71016|-0.05837 +2016-07-01|-75.0|-95.0|43.37821|-0.05818 +2016-07-01|-75.0|-96.0|44.04556|-0.05799 +2016-07-01|-75.0|-97.0|44.7122|-0.05779 +2016-07-01|-75.0|-98.0|45.37812|-0.05757 +2016-07-01|-75.0|-99.0|46.04333|-0.05735 +2016-07-01|-75.0|-100.0|46.70781|-0.05712 +2016-07-01|-75.0|-101.0|47.37159|-0.05688 +2016-07-01|-75.0|-102.0|48.03467|-0.05664 +2016-07-01|-75.0|-103.0|48.69708|-0.05638 +2016-07-01|-75.0|-104.0|49.35883|-0.05613 +2016-07-01|-75.0|-105.0|50.01997|-0.05587 +2016-07-01|-75.0|-106.0|50.68053|-0.0556 +2016-07-01|-75.0|-107.0|51.34054|-0.05533 +2016-07-01|-75.0|-108.0|52.00007|-0.05505 +2016-07-01|-75.0|-109.0|52.65917|-0.05478 +2016-07-01|-75.0|-110.0|53.3179|-0.0545 +2016-07-01|-75.0|-111.0|53.97633|-0.05422 +2016-07-01|-75.0|-112.0|54.63455|-0.05394 +2016-07-01|-75.0|-113.0|55.29262|-0.05366 +2016-07-01|-75.0|-114.0|55.95065|-0.05338 +2016-07-01|-75.0|-115.0|56.60873|-0.0531 +2016-07-01|-75.0|-116.0|57.26696|-0.05282 +2016-07-01|-75.0|-117.0|57.92547|-0.05254 +2016-07-01|-75.0|-118.0|58.58436|-0.05227 +2016-07-01|-75.0|-119.0|59.24377|-0.052 +2016-07-01|-75.0|-120.0|59.90382|-0.05173 +2016-07-01|-75.0|-121.0|60.56466|-0.05147 +2016-07-01|-75.0|-122.0|61.22644|-0.05121 +2016-07-01|-75.0|-123.0|61.88932|-0.05096 +2016-07-01|-75.0|-124.0|62.55345|-0.05072 +2016-07-01|-75.0|-125.0|63.21901|-0.05049 +2016-07-01|-75.0|-126.0|63.88619|-0.05026 +2016-07-01|-75.0|-127.0|64.55515|-0.05004 +2016-07-01|-75.0|-128.0|65.22611|-0.04983 +2016-07-01|-75.0|-129.0|65.89925|-0.04963 +2016-07-01|-75.0|-130.0|66.5748|-0.04944 +2016-07-01|-75.0|-131.0|67.25296|-0.04927 +2016-07-01|-75.0|-132.0|67.93397|-0.04911 +2016-07-01|-75.0|-133.0|68.61806|-0.04896 +2016-07-01|-75.0|-134.0|69.30547|-0.04883 +2016-07-01|-75.0|-135.0|69.99644|-0.04872 +2016-07-01|-75.0|-136.0|70.69124|-0.04862 +2016-07-01|-75.0|-137.0|71.39014|-0.04854 +2016-07-01|-75.0|-138.0|72.0934|-0.04849 +2016-07-01|-75.0|-139.0|72.80132|-0.04845 +2016-07-01|-75.0|-140.0|73.51417|-0.04844 +2016-07-01|-75.0|-141.0|74.23228|-0.04846 +2016-07-01|-75.0|-142.0|74.95593|-0.0485 +2016-07-01|-75.0|-143.0|75.68546|-0.04858 +2016-07-01|-75.0|-144.0|76.42119|-0.04868 +2016-07-01|-75.0|-145.0|77.16347|-0.04881 +2016-07-01|-75.0|-146.0|77.91263|-0.04899 +2016-07-01|-75.0|-147.0|78.66904|-0.0492 +2016-07-01|-75.0|-148.0|79.43307|-0.04945 +2016-07-01|-75.0|-149.0|80.2051|-0.04974 +2016-07-01|-75.0|-150.0|80.98551|-0.05008 +2016-07-01|-75.0|-151.0|81.77472|-0.05047 +2016-07-01|-75.0|-152.0|82.57313|-0.0509 +2016-07-01|-75.0|-153.0|83.38118|-0.0514 +2016-07-01|-75.0|-154.0|84.1993|-0.05195 +2016-07-01|-75.0|-155.0|85.02795|-0.05257 +2016-07-01|-75.0|-156.0|85.86759|-0.05325 +2016-07-01|-75.0|-157.0|86.7187|-0.054 +2016-07-01|-75.0|-158.0|87.58178|-0.05483 +2016-07-01|-75.0|-159.0|88.45733|-0.05573 +2016-07-01|-75.0|-160.0|89.34589|-0.05672 +2016-07-01|-75.0|-161.0|90.24799|-0.05779 +2016-07-01|-75.0|-162.0|91.16419|-0.05896 +2016-07-01|-75.0|-163.0|92.09507|-0.06023 +2016-07-01|-75.0|-164.0|93.04121|-0.0616 +2016-07-01|-75.0|-165.0|94.00322|-0.06308 +2016-07-01|-75.0|-166.0|94.98173|-0.06468 +2016-07-01|-75.0|-167.0|95.97738|-0.06639 +2016-07-01|-75.0|-168.0|96.99084|-0.06824 +2016-07-01|-75.0|-169.0|98.02278|-0.07022 +2016-07-01|-75.0|-170.0|99.0739|-0.07235 +2016-07-01|-75.0|-171.0|100.14492|-0.07462 +2016-07-01|-75.0|-172.0|101.23657|-0.07705 +2016-07-01|-75.0|-173.0|102.34961|-0.07964 +2016-07-01|-75.0|-174.0|103.48479|-0.08241 +2016-07-01|-75.0|-175.0|104.6429|-0.08535 +2016-07-01|-75.0|-176.0|105.82473|-0.08848 +2016-07-01|-75.0|-177.0|107.03109|-0.09181 +2016-07-01|-75.0|-178.0|108.26279|-0.09534 +2016-07-01|-75.0|-179.0|109.52066|-0.09908 +2016-07-01|-76.0|0.0|-21.30705|-0.10289 +2016-07-01|-76.0|1.0|-22.07205|-0.10472 +2016-07-01|-76.0|2.0|-22.84051|-0.10656 +2016-07-01|-76.0|3.0|-23.61242|-0.10842 +2016-07-01|-76.0|4.0|-24.38776|-0.11029 +2016-07-01|-76.0|5.0|-25.16654|-0.11216 +2016-07-01|-76.0|6.0|-25.94873|-0.11405 +2016-07-01|-76.0|7.0|-26.73432|-0.11594 +2016-07-01|-76.0|8.0|-27.52329|-0.11783 +2016-07-01|-76.0|9.0|-28.3156|-0.11972 +2016-07-01|-76.0|10.0|-29.11123|-0.12161 +2016-07-01|-76.0|11.0|-29.91014|-0.1235 +2016-07-01|-76.0|12.0|-30.71229|-0.12539 +2016-07-01|-76.0|13.0|-31.51765|-0.12727 +2016-07-01|-76.0|14.0|-32.32617|-0.12914 +2016-07-01|-76.0|15.0|-33.1378|-0.131 +2016-07-01|-76.0|16.0|-33.95251|-0.13285 +2016-07-01|-76.0|17.0|-34.77022|-0.13468 +2016-07-01|-76.0|18.0|-35.59091|-0.1365 +2016-07-01|-76.0|19.0|-36.4145|-0.13831 +2016-07-01|-76.0|20.0|-37.24096|-0.1401 +2016-07-01|-76.0|21.0|-38.07021|-0.14187 +2016-07-01|-76.0|22.0|-38.90221|-0.14362 +2016-07-01|-76.0|23.0|-39.7369|-0.14535 +2016-07-01|-76.0|24.0|-40.57422|-0.14705 +2016-07-01|-76.0|25.0|-41.41411|-0.14874 +2016-07-01|-76.0|26.0|-42.25652|-0.1504 +2016-07-01|-76.0|27.0|-43.1014|-0.15203 +2016-07-01|-76.0|28.0|-43.94868|-0.15364 +2016-07-01|-76.0|29.0|-44.79831|-0.15522 +2016-07-01|-76.0|30.0|-45.65023|-0.15678 +2016-07-01|-76.0|31.0|-46.50441|-0.15831 +2016-07-01|-76.0|32.0|-47.36078|-0.15981 +2016-07-01|-76.0|33.0|-48.21931|-0.16129 +2016-07-01|-76.0|34.0|-49.07993|-0.16274 +2016-07-01|-76.0|35.0|-49.94262|-0.16416 +2016-07-01|-76.0|36.0|-50.80733|-0.16555 +2016-07-01|-76.0|37.0|-51.67401|-0.16691 +2016-07-01|-76.0|38.0|-52.54265|-0.16825 +2016-07-01|-76.0|39.0|-53.4132|-0.16956 +2016-07-01|-76.0|40.0|-54.28564|-0.17084 +2016-07-01|-76.0|41.0|-55.15994|-0.1721 +2016-07-01|-76.0|42.0|-56.03609|-0.17333 +2016-07-01|-76.0|43.0|-56.91406|-0.17453 +2016-07-01|-76.0|44.0|-57.79384|-0.17571 +2016-07-01|-76.0|45.0|-58.67543|-0.17686 +2016-07-01|-76.0|46.0|-59.55881|-0.17799 +2016-07-01|-76.0|47.0|-60.444|-0.1791 +2016-07-01|-76.0|48.0|-61.33099|-0.18018 +2016-07-01|-76.0|49.0|-62.21979|-0.18125 +2016-07-01|-76.0|50.0|-63.11043|-0.18229 +2016-07-01|-76.0|51.0|-64.00291|-0.18331 +2016-07-01|-76.0|52.0|-64.89726|-0.18432 +2016-07-01|-76.0|53.0|-65.79352|-0.18531 +2016-07-01|-76.0|54.0|-66.69172|-0.18628 +2016-07-01|-76.0|55.0|-67.5919|-0.18724 +2016-07-01|-76.0|56.0|-68.49411|-0.18818 +2016-07-01|-76.0|57.0|-69.3984|-0.18911 +2016-07-01|-76.0|58.0|-70.30482|-0.19004 +2016-07-01|-76.0|59.0|-71.21345|-0.19095 +2016-07-01|-76.0|60.0|-72.12435|-0.19185 +2016-07-01|-76.0|61.0|-73.03761|-0.19275 +2016-07-01|-76.0|62.0|-73.9533|-0.19364 +2016-07-01|-76.0|63.0|-74.87151|-0.19453 +2016-07-01|-76.0|64.0|-75.79234|-0.19542 +2016-07-01|-76.0|65.0|-76.7159|-0.19631 +2016-07-01|-76.0|66.0|-77.64229|-0.1972 +2016-07-01|-76.0|67.0|-78.57164|-0.19809 +2016-07-01|-76.0|68.0|-79.50406|-0.19899 +2016-07-01|-76.0|69.0|-80.43968|-0.19989 +2016-07-01|-76.0|70.0|-81.37866|-0.2008 +2016-07-01|-76.0|71.0|-82.32113|-0.20173 +2016-07-01|-76.0|72.0|-83.26724|-0.20266 +2016-07-01|-76.0|73.0|-84.21717|-0.20361 +2016-07-01|-76.0|74.0|-85.17108|-0.20457 +2016-07-01|-76.0|75.0|-86.12915|-0.20555 +2016-07-01|-76.0|76.0|-87.09157|-0.20655 +2016-07-01|-76.0|77.0|-88.05854|-0.20757 +2016-07-01|-76.0|78.0|-89.03026|-0.20862 +2016-07-01|-76.0|79.0|-90.00694|-0.20969 +2016-07-01|-76.0|80.0|-90.98881|-0.21078 +2016-07-01|-76.0|81.0|-91.9761|-0.21191 +2016-07-01|-76.0|82.0|-92.96906|-0.21306 +2016-07-01|-76.0|83.0|-93.96793|-0.21425 +2016-07-01|-76.0|84.0|-94.97299|-0.21547 +2016-07-01|-76.0|85.0|-95.98451|-0.21673 +2016-07-01|-76.0|86.0|-97.00276|-0.21802 +2016-07-01|-76.0|87.0|-98.02805|-0.21936 +2016-07-01|-76.0|88.0|-99.06069|-0.22074 +2016-07-01|-76.0|89.0|-100.10099|-0.22216 +2016-07-01|-76.0|90.0|-101.14928|-0.22362 +2016-07-01|-76.0|91.0|-102.2059|-0.22513 +2016-07-01|-76.0|92.0|-103.27121|-0.2267 +2016-07-01|-76.0|93.0|-104.34558|-0.22831 +2016-07-01|-76.0|94.0|-105.42938|-0.22997 +2016-07-01|-76.0|95.0|-106.523|-0.23169 +2016-07-01|-76.0|96.0|-107.62686|-0.23346 +2016-07-01|-76.0|97.0|-108.74136|-0.23529 +2016-07-01|-76.0|98.0|-109.86694|-0.23717 +2016-07-01|-76.0|99.0|-111.00405|-0.23911 +2016-07-01|-76.0|100.0|-112.15313|-0.24111 +2016-07-01|-76.0|101.0|-113.31465|-0.24317 +2016-07-01|-76.0|102.0|-114.4891|-0.24529 +2016-07-01|-76.0|103.0|-115.67698|-0.24747 +2016-07-01|-76.0|104.0|-116.87878|-0.24971 +2016-07-01|-76.0|105.0|-118.09502|-0.25201 +2016-07-01|-76.0|106.0|-119.32622|-0.25436 +2016-07-01|-76.0|107.0|-120.57294|-0.25678 +2016-07-01|-76.0|108.0|-121.8357|-0.25925 +2016-07-01|-76.0|109.0|-123.11507|-0.26178 +2016-07-01|-76.0|110.0|-124.41159|-0.26436 +2016-07-01|-76.0|111.0|-125.72584|-0.26698 +2016-07-01|-76.0|112.0|-127.05838|-0.26966 +2016-07-01|-76.0|113.0|-128.40977|-0.27237 +2016-07-01|-76.0|114.0|-129.78058|-0.27513 +2016-07-01|-76.0|115.0|-131.17135|-0.27791 +2016-07-01|-76.0|116.0|-132.58265|-0.28072 +2016-07-01|-76.0|117.0|-134.01501|-0.28355 +2016-07-01|-76.0|118.0|-135.46894|-0.28638 +2016-07-01|-76.0|119.0|-136.94495|-0.28922 +2016-07-01|-76.0|120.0|-138.44351|-0.29205 +2016-07-01|-76.0|121.0|-139.96506|-0.29486 +2016-07-01|-76.0|122.0|-141.51|-0.29764 +2016-07-01|-76.0|123.0|-143.0787|-0.30037 +2016-07-01|-76.0|124.0|-144.67146|-0.30304 +2016-07-01|-76.0|125.0|-146.28854|-0.30564 +2016-07-01|-76.0|126.0|-147.93014|-0.30815 +2016-07-01|-76.0|127.0|-149.59635|-0.31055 +2016-07-01|-76.0|128.0|-151.28723|-0.31282 +2016-07-01|-76.0|129.0|-153.00271|-0.31494 +2016-07-01|-76.0|130.0|-154.74266|-0.3169 +2016-07-01|-76.0|131.0|-156.50681|-0.31867 +2016-07-01|-76.0|132.0|-158.2948|-0.32024 +2016-07-01|-76.0|133.0|-160.10615|-0.32157 +2016-07-01|-76.0|134.0|-161.94025|-0.32265 +2016-07-01|-76.0|135.0|-163.79636|-0.32346 +2016-07-01|-76.0|136.0|-165.67362|-0.32398 +2016-07-01|-76.0|137.0|-167.571|-0.32419 +2016-07-01|-76.0|138.0|-169.48737|-0.32407 +2016-07-01|-76.0|139.0|-171.42145|-0.3236 +2016-07-01|-76.0|140.0|-173.3718|-0.32277 +2016-07-01|-76.0|141.0|-175.33689|-0.32157 +2016-07-01|-76.0|142.0|-177.31504|-0.32 +2016-07-01|-76.0|143.0|-179.30446|-0.31803 +2016-07-01|-76.0|144.0|178.69673|-0.31567 +2016-07-01|-76.0|145.0|176.69052|-0.31293 +2016-07-01|-76.0|146.0|174.67898|-0.30979 +2016-07-01|-76.0|147.0|172.6642|-0.30628 +2016-07-01|-76.0|148.0|170.64837|-0.3024 +2016-07-01|-76.0|149.0|168.63367|-0.29817 +2016-07-01|-76.0|150.0|166.62228|-0.2936 +2016-07-01|-76.0|151.0|164.61639|-0.28871 +2016-07-01|-76.0|152.0|162.61814|-0.28354 +2016-07-01|-76.0|153.0|160.62963|-0.27809 +2016-07-01|-76.0|154.0|158.65289|-0.2724 +2016-07-01|-76.0|155.0|156.68986|-0.26651 +2016-07-01|-76.0|156.0|154.7424|-0.26043 +2016-07-01|-76.0|157.0|152.81225|-0.2542 +2016-07-01|-76.0|158.0|150.90102|-0.24784 +2016-07-01|-76.0|159.0|149.01022|-0.2414 +2016-07-01|-76.0|160.0|147.1412|-0.23489 +2016-07-01|-76.0|161.0|145.29519|-0.22835 +2016-07-01|-76.0|162.0|143.47329|-0.2218 +2016-07-01|-76.0|163.0|141.67643|-0.21527 +2016-07-01|-76.0|164.0|139.90543|-0.20879 +2016-07-01|-76.0|165.0|138.16098|-0.20236 +2016-07-01|-76.0|166.0|136.44362|-0.19603 +2016-07-01|-76.0|167.0|134.75377|-0.18979 +2016-07-01|-76.0|168.0|133.09175|-0.18367 +2016-07-01|-76.0|169.0|131.45777|-0.17769 +2016-07-01|-76.0|170.0|129.85192|-0.17185 +2016-07-01|-76.0|171.0|128.2742|-0.16616 +2016-07-01|-76.0|172.0|126.72453|-0.16064 +2016-07-01|-76.0|173.0|125.20276|-0.15529 +2016-07-01|-76.0|174.0|123.70865|-0.15011 +2016-07-01|-76.0|175.0|122.24191|-0.14511 +2016-07-01|-76.0|176.0|120.8022|-0.14029 +2016-07-01|-76.0|177.0|119.38911|-0.13565 +2016-07-01|-76.0|178.0|118.0022|-0.1312 +2016-07-01|-76.0|179.0|116.64101|-0.12692 +2016-07-01|-76.0|-1.0|-20.54549|-0.10108 +2016-07-01|-76.0|-2.0|-19.78737|-0.09929 +2016-07-01|-76.0|-3.0|-19.03267|-0.09752 +2016-07-01|-76.0|-4.0|-18.28138|-0.09578 +2016-07-01|-76.0|-5.0|-17.53348|-0.09406 +2016-07-01|-76.0|-6.0|-16.78893|-0.09237 +2016-07-01|-76.0|-7.0|-16.0477|-0.0907 +2016-07-01|-76.0|-8.0|-15.30977|-0.08907 +2016-07-01|-76.0|-9.0|-14.57507|-0.08747 +2016-07-01|-76.0|-10.0|-13.84357|-0.08591 +2016-07-01|-76.0|-11.0|-13.11521|-0.08438 +2016-07-01|-76.0|-12.0|-12.38994|-0.08289 +2016-07-01|-76.0|-13.0|-11.66769|-0.08143 +2016-07-01|-76.0|-14.0|-10.94839|-0.08002 +2016-07-01|-76.0|-15.0|-10.23198|-0.07865 +2016-07-01|-76.0|-16.0|-9.51838|-0.07733 +2016-07-01|-76.0|-17.0|-8.80751|-0.07604 +2016-07-01|-76.0|-18.0|-8.09929|-0.0748 +2016-07-01|-76.0|-19.0|-7.39363|-0.07361 +2016-07-01|-76.0|-20.0|-6.69045|-0.07247 +2016-07-01|-76.0|-21.0|-5.98964|-0.07137 +2016-07-01|-76.0|-22.0|-5.29112|-0.07032 +2016-07-01|-76.0|-23.0|-4.59479|-0.06931 +2016-07-01|-76.0|-24.0|-3.90054|-0.06836 +2016-07-01|-76.0|-25.0|-3.20828|-0.06745 +2016-07-01|-76.0|-26.0|-2.5179|-0.06659 +2016-07-01|-76.0|-27.0|-1.8293|-0.06578 +2016-07-01|-76.0|-28.0|-1.14237|-0.06502 +2016-07-01|-76.0|-29.0|-0.457|-0.06431 +2016-07-01|-76.0|-30.0|0.2269|-0.06364 +2016-07-01|-76.0|-31.0|0.90946|-0.06303 +2016-07-01|-76.0|-32.0|1.59077|-0.06245 +2016-07-01|-76.0|-33.0|2.27095|-0.06193 +2016-07-01|-76.0|-34.0|2.95008|-0.06144 +2016-07-01|-76.0|-35.0|3.62829|-0.061 +2016-07-01|-76.0|-36.0|4.30567|-0.06061 +2016-07-01|-76.0|-37.0|4.98232|-0.06025 +2016-07-01|-76.0|-38.0|5.65834|-0.05994 +2016-07-01|-76.0|-39.0|6.33382|-0.05966 +2016-07-01|-76.0|-40.0|7.00886|-0.05942 +2016-07-01|-76.0|-41.0|7.68355|-0.05922 +2016-07-01|-76.0|-42.0|8.35797|-0.05905 +2016-07-01|-76.0|-43.0|9.0322|-0.05892 +2016-07-01|-76.0|-44.0|9.70634|-0.05881 +2016-07-01|-76.0|-45.0|10.38045|-0.05874 +2016-07-01|-76.0|-46.0|11.0546|-0.0587 +2016-07-01|-76.0|-47.0|11.72886|-0.05868 +2016-07-01|-76.0|-48.0|12.4033|-0.05868 +2016-07-01|-76.0|-49.0|13.07798|-0.05871 +2016-07-01|-76.0|-50.0|13.75294|-0.05876 +2016-07-01|-76.0|-51.0|14.42825|-0.05883 +2016-07-01|-76.0|-52.0|15.10394|-0.05892 +2016-07-01|-76.0|-53.0|15.78007|-0.05902 +2016-07-01|-76.0|-54.0|16.45666|-0.05914 +2016-07-01|-76.0|-55.0|17.13374|-0.05927 +2016-07-01|-76.0|-56.0|17.81135|-0.05941 +2016-07-01|-76.0|-57.0|18.48951|-0.05956 +2016-07-01|-76.0|-58.0|19.16824|-0.05972 +2016-07-01|-76.0|-59.0|19.84755|-0.05988 +2016-07-01|-76.0|-60.0|20.52745|-0.06005 +2016-07-01|-76.0|-61.0|21.20794|-0.06023 +2016-07-01|-76.0|-62.0|21.88904|-0.0604 +2016-07-01|-76.0|-63.0|22.57073|-0.06058 +2016-07-01|-76.0|-64.0|23.25302|-0.06076 +2016-07-01|-76.0|-65.0|23.93589|-0.06093 +2016-07-01|-76.0|-66.0|24.61933|-0.0611 +2016-07-01|-76.0|-67.0|25.30332|-0.06127 +2016-07-01|-76.0|-68.0|25.98785|-0.06143 +2016-07-01|-76.0|-69.0|26.67289|-0.06159 +2016-07-01|-76.0|-70.0|27.35842|-0.06174 +2016-07-01|-76.0|-71.0|28.04442|-0.06188 +2016-07-01|-76.0|-72.0|28.73085|-0.06202 +2016-07-01|-76.0|-73.0|29.41768|-0.06215 +2016-07-01|-76.0|-74.0|30.10489|-0.06226 +2016-07-01|-76.0|-75.0|30.79244|-0.06237 +2016-07-01|-76.0|-76.0|31.48029|-0.06247 +2016-07-01|-76.0|-77.0|32.16841|-0.06256 +2016-07-01|-76.0|-78.0|32.85677|-0.06263 +2016-07-01|-76.0|-79.0|33.54533|-0.0627 +2016-07-01|-76.0|-80.0|34.23405|-0.06275 +2016-07-01|-76.0|-81.0|34.92289|-0.0628 +2016-07-01|-76.0|-82.0|35.61183|-0.06283 +2016-07-01|-76.0|-83.0|36.30083|-0.06285 +2016-07-01|-76.0|-84.0|36.98985|-0.06286 +2016-07-01|-76.0|-85.0|37.67886|-0.06285 +2016-07-01|-76.0|-86.0|38.36783|-0.06284 +2016-07-01|-76.0|-87.0|39.05674|-0.06282 +2016-07-01|-76.0|-88.0|39.74555|-0.06278 +2016-07-01|-76.0|-89.0|40.43424|-0.06274 +2016-07-01|-76.0|-90.0|41.1228|-0.06268 +2016-07-01|-76.0|-91.0|41.81119|-0.06262 +2016-07-01|-76.0|-92.0|42.4994|-0.06254 +2016-07-01|-76.0|-93.0|43.18743|-0.06246 +2016-07-01|-76.0|-94.0|43.87526|-0.06237 +2016-07-01|-76.0|-95.0|44.56288|-0.06227 +2016-07-01|-76.0|-96.0|45.25029|-0.06216 +2016-07-01|-76.0|-97.0|45.93749|-0.06205 +2016-07-01|-76.0|-98.0|46.6245|-0.06193 +2016-07-01|-76.0|-99.0|47.31131|-0.0618 +2016-07-01|-76.0|-100.0|47.99795|-0.06167 +2016-07-01|-76.0|-101.0|48.68443|-0.06153 +2016-07-01|-76.0|-102.0|49.37078|-0.06139 +2016-07-01|-76.0|-103.0|50.05702|-0.06124 +2016-07-01|-76.0|-104.0|50.7432|-0.0611 +2016-07-01|-76.0|-105.0|51.42934|-0.06094 +2016-07-01|-76.0|-106.0|52.1155|-0.06079 +2016-07-01|-76.0|-107.0|52.80173|-0.06063 +2016-07-01|-76.0|-108.0|53.48807|-0.06048 +2016-07-01|-76.0|-109.0|54.17461|-0.06032 +2016-07-01|-76.0|-110.0|54.86139|-0.06017 +2016-07-01|-76.0|-111.0|55.5485|-0.06001 +2016-07-01|-76.0|-112.0|56.23601|-0.05986 +2016-07-01|-76.0|-113.0|56.92402|-0.0597 +2016-07-01|-76.0|-114.0|57.61261|-0.05956 +2016-07-01|-76.0|-115.0|58.30189|-0.05941 +2016-07-01|-76.0|-116.0|58.99196|-0.05927 +2016-07-01|-76.0|-117.0|59.68292|-0.05913 +2016-07-01|-76.0|-118.0|60.37491|-0.059 +2016-07-01|-76.0|-119.0|61.06804|-0.05888 +2016-07-01|-76.0|-120.0|61.76244|-0.05876 +2016-07-01|-76.0|-121.0|62.45826|-0.05865 +2016-07-01|-76.0|-122.0|63.15564|-0.05855 +2016-07-01|-76.0|-123.0|63.85474|-0.05845 +2016-07-01|-76.0|-124.0|64.5557|-0.05837 +2016-07-01|-76.0|-125.0|65.2587|-0.0583 +2016-07-01|-76.0|-126.0|65.96392|-0.05824 +2016-07-01|-76.0|-127.0|66.67152|-0.05819 +2016-07-01|-76.0|-128.0|67.38171|-0.05815 +2016-07-01|-76.0|-129.0|68.09466|-0.05813 +2016-07-01|-76.0|-130.0|68.8106|-0.05813 +2016-07-01|-76.0|-131.0|69.52972|-0.05814 +2016-07-01|-76.0|-132.0|70.25224|-0.05816 +2016-07-01|-76.0|-133.0|70.97838|-0.05821 +2016-07-01|-76.0|-134.0|71.70839|-0.05828 +2016-07-01|-76.0|-135.0|72.44249|-0.05836 +2016-07-01|-76.0|-136.0|73.18094|-0.05847 +2016-07-01|-76.0|-137.0|73.92398|-0.05861 +2016-07-01|-76.0|-138.0|74.67189|-0.05877 +2016-07-01|-76.0|-139.0|75.42493|-0.05895 +2016-07-01|-76.0|-140.0|76.18338|-0.05916 +2016-07-01|-76.0|-141.0|76.94752|-0.05941 +2016-07-01|-76.0|-142.0|77.71767|-0.05968 +2016-07-01|-76.0|-143.0|78.49411|-0.05999 +2016-07-01|-76.0|-144.0|79.27716|-0.06034 +2016-07-01|-76.0|-145.0|80.06714|-0.06072 +2016-07-01|-76.0|-146.0|80.86438|-0.06114 +2016-07-01|-76.0|-147.0|81.66922|-0.06161 +2016-07-01|-76.0|-148.0|82.48201|-0.06212 +2016-07-01|-76.0|-149.0|83.30311|-0.06267 +2016-07-01|-76.0|-150.0|84.13288|-0.06328 +2016-07-01|-76.0|-151.0|84.9717|-0.06394 +2016-07-01|-76.0|-152.0|85.81996|-0.06465 +2016-07-01|-76.0|-153.0|86.67805|-0.06543 +2016-07-01|-76.0|-154.0|87.54639|-0.06626 +2016-07-01|-76.0|-155.0|88.42539|-0.06716 +2016-07-01|-76.0|-156.0|89.31548|-0.06813 +2016-07-01|-76.0|-157.0|90.2171|-0.06916 +2016-07-01|-76.0|-158.0|91.1307|-0.07028 +2016-07-01|-76.0|-159.0|92.05674|-0.07147 +2016-07-01|-76.0|-160.0|92.99569|-0.07275 +2016-07-01|-76.0|-161.0|93.94805|-0.07411 +2016-07-01|-76.0|-162.0|94.91429|-0.07557 +2016-07-01|-76.0|-163.0|95.89494|-0.07712 +2016-07-01|-76.0|-164.0|96.8905|-0.07877 +2016-07-01|-76.0|-165.0|97.90151|-0.08053 +2016-07-01|-76.0|-166.0|98.9285|-0.0824 +2016-07-01|-76.0|-167.0|99.97202|-0.08438 +2016-07-01|-76.0|-168.0|101.03262|-0.08648 +2016-07-01|-76.0|-169.0|102.11089|-0.08871 +2016-07-01|-76.0|-170.0|103.20738|-0.09107 +2016-07-01|-76.0|-171.0|104.32269|-0.09356 +2016-07-01|-76.0|-172.0|105.45741|-0.09619 +2016-07-01|-76.0|-173.0|106.61211|-0.09896 +2016-07-01|-76.0|-174.0|107.78742|-0.10189 +2016-07-01|-76.0|-175.0|108.98391|-0.10496 +2016-07-01|-76.0|-176.0|110.2022|-0.1082 +2016-07-01|-76.0|-177.0|111.44286|-0.1116 +2016-07-01|-76.0|-178.0|112.70651|-0.11517 +2016-07-01|-76.0|-179.0|113.9937|-0.11892 +2016-07-01|-77.0|0.0|-21.61627|-0.10562 +2016-07-01|-77.0|1.0|-22.39274|-0.10729 +2016-07-01|-77.0|2.0|-23.17236|-0.10898 +2016-07-01|-77.0|3.0|-23.95514|-0.11067 +2016-07-01|-77.0|4.0|-24.74108|-0.11238 +2016-07-01|-77.0|5.0|-25.53017|-0.1141 +2016-07-01|-77.0|6.0|-26.32242|-0.11582 +2016-07-01|-77.0|7.0|-27.1178|-0.11755 +2016-07-01|-77.0|8.0|-27.9163|-0.11928 +2016-07-01|-77.0|9.0|-28.71792|-0.12102 +2016-07-01|-77.0|10.0|-29.52262|-0.12275 +2016-07-01|-77.0|11.0|-30.33038|-0.12449 +2016-07-01|-77.0|12.0|-31.14118|-0.12622 +2016-07-01|-77.0|13.0|-31.955|-0.12795 +2016-07-01|-77.0|14.0|-32.77179|-0.12968 +2016-07-01|-77.0|15.0|-33.59153|-0.13139 +2016-07-01|-77.0|16.0|-34.41419|-0.1331 +2016-07-01|-77.0|17.0|-35.23972|-0.1348 +2016-07-01|-77.0|18.0|-36.0681|-0.13649 +2016-07-01|-77.0|19.0|-36.89928|-0.13817 +2016-07-01|-77.0|20.0|-37.73322|-0.13983 +2016-07-01|-77.0|21.0|-38.56989|-0.14148 +2016-07-01|-77.0|22.0|-39.40924|-0.14312 +2016-07-01|-77.0|23.0|-40.25123|-0.14473 +2016-07-01|-77.0|24.0|-41.09582|-0.14633 +2016-07-01|-77.0|25.0|-41.94296|-0.14792 +2016-07-01|-77.0|26.0|-42.79262|-0.14948 +2016-07-01|-77.0|27.0|-43.64476|-0.15103 +2016-07-01|-77.0|28.0|-44.49933|-0.15255 +2016-07-01|-77.0|29.0|-45.3563|-0.15405 +2016-07-01|-77.0|30.0|-46.21563|-0.15554 +2016-07-01|-77.0|31.0|-47.07728|-0.157 +2016-07-01|-77.0|32.0|-47.94121|-0.15844 +2016-07-01|-77.0|33.0|-48.8074|-0.15985 +2016-07-01|-77.0|34.0|-49.6758|-0.16125 +2016-07-01|-77.0|35.0|-50.5464|-0.16262 +2016-07-01|-77.0|36.0|-51.41916|-0.16397 +2016-07-01|-77.0|37.0|-52.29405|-0.16529 +2016-07-01|-77.0|38.0|-53.17106|-0.1666 +2016-07-01|-77.0|39.0|-54.05016|-0.16788 +2016-07-01|-77.0|40.0|-54.93134|-0.16914 +2016-07-01|-77.0|41.0|-55.81458|-0.17038 +2016-07-01|-77.0|42.0|-56.69988|-0.1716 +2016-07-01|-77.0|43.0|-57.58722|-0.17279 +2016-07-01|-77.0|44.0|-58.4766|-0.17396 +2016-07-01|-77.0|45.0|-59.36803|-0.17512 +2016-07-01|-77.0|46.0|-60.26149|-0.17625 +2016-07-01|-77.0|47.0|-61.15701|-0.17737 +2016-07-01|-77.0|48.0|-62.05459|-0.17847 +2016-07-01|-77.0|49.0|-62.95425|-0.17955 +2016-07-01|-77.0|50.0|-63.85601|-0.18061 +2016-07-01|-77.0|51.0|-64.75989|-0.18166 +2016-07-01|-77.0|52.0|-65.66593|-0.18269 +2016-07-01|-77.0|53.0|-66.57415|-0.18371 +2016-07-01|-77.0|54.0|-67.48459|-0.18471 +2016-07-01|-77.0|55.0|-68.3973|-0.1857 +2016-07-01|-77.0|56.0|-69.31233|-0.18668 +2016-07-01|-77.0|57.0|-70.22972|-0.18765 +2016-07-01|-77.0|58.0|-71.14954|-0.18862 +2016-07-01|-77.0|59.0|-72.07185|-0.18957 +2016-07-01|-77.0|60.0|-72.99672|-0.19052 +2016-07-01|-77.0|61.0|-73.92422|-0.19146 +2016-07-01|-77.0|62.0|-74.85443|-0.1924 +2016-07-01|-77.0|63.0|-75.78744|-0.19333 +2016-07-01|-77.0|64.0|-76.72335|-0.19426 +2016-07-01|-77.0|65.0|-77.66224|-0.1952 +2016-07-01|-77.0|66.0|-78.60422|-0.19613 +2016-07-01|-77.0|67.0|-79.5494|-0.19706 +2016-07-01|-77.0|68.0|-80.4979|-0.198 +2016-07-01|-77.0|69.0|-81.44984|-0.19895 +2016-07-01|-77.0|70.0|-82.40535|-0.1999 +2016-07-01|-77.0|71.0|-83.36455|-0.20086 +2016-07-01|-77.0|72.0|-84.3276|-0.20183 +2016-07-01|-77.0|73.0|-85.29465|-0.20281 +2016-07-01|-77.0|74.0|-86.26584|-0.2038 +2016-07-01|-77.0|75.0|-87.24133|-0.2048 +2016-07-01|-77.0|76.0|-88.22131|-0.20582 +2016-07-01|-77.0|77.0|-89.20595|-0.20686 +2016-07-01|-77.0|78.0|-90.19542|-0.20792 +2016-07-01|-77.0|79.0|-91.18993|-0.20899 +2016-07-01|-77.0|80.0|-92.18966|-0.21009 +2016-07-01|-77.0|81.0|-93.19484|-0.21121 +2016-07-01|-77.0|82.0|-94.20566|-0.21235 +2016-07-01|-77.0|83.0|-95.22236|-0.21352 +2016-07-01|-77.0|84.0|-96.24517|-0.21471 +2016-07-01|-77.0|85.0|-97.27432|-0.21593 +2016-07-01|-77.0|86.0|-98.31007|-0.21719 +2016-07-01|-77.0|87.0|-99.35266|-0.21847 +2016-07-01|-77.0|88.0|-100.40236|-0.21978 +2016-07-01|-77.0|89.0|-101.45945|-0.22113 +2016-07-01|-77.0|90.0|-102.52421|-0.22252 +2016-07-01|-77.0|91.0|-103.59692|-0.22393 +2016-07-01|-77.0|92.0|-104.67789|-0.22539 +2016-07-01|-77.0|93.0|-105.76742|-0.22688 +2016-07-01|-77.0|94.0|-106.86582|-0.22841 +2016-07-01|-77.0|95.0|-107.97343|-0.22998 +2016-07-01|-77.0|96.0|-109.09058|-0.23159 +2016-07-01|-77.0|97.0|-110.2176|-0.23324 +2016-07-01|-77.0|98.0|-111.35484|-0.23493 +2016-07-01|-77.0|99.0|-112.50267|-0.23666 +2016-07-01|-77.0|100.0|-113.66144|-0.23843 +2016-07-01|-77.0|101.0|-114.83153|-0.24024 +2016-07-01|-77.0|102.0|-116.01332|-0.24209 +2016-07-01|-77.0|103.0|-117.20719|-0.24399 +2016-07-01|-77.0|104.0|-118.41353|-0.24592 +2016-07-01|-77.0|105.0|-119.63273|-0.24789 +2016-07-01|-77.0|106.0|-120.8652|-0.2499 +2016-07-01|-77.0|107.0|-122.11134|-0.25194 +2016-07-01|-77.0|108.0|-123.37154|-0.25402 +2016-07-01|-77.0|109.0|-124.64622|-0.25612 +2016-07-01|-77.0|110.0|-125.93578|-0.25826 +2016-07-01|-77.0|111.0|-127.24062|-0.26042 +2016-07-01|-77.0|112.0|-128.56113|-0.2626 +2016-07-01|-77.0|113.0|-129.89771|-0.26481 +2016-07-01|-77.0|114.0|-131.25073|-0.26702 +2016-07-01|-77.0|115.0|-132.62058|-0.26925 +2016-07-01|-77.0|116.0|-134.00761|-0.27147 +2016-07-01|-77.0|117.0|-135.41217|-0.2737 +2016-07-01|-77.0|118.0|-136.83457|-0.27591 +2016-07-01|-77.0|119.0|-138.27512|-0.27811 +2016-07-01|-77.0|120.0|-139.7341|-0.28028 +2016-07-01|-77.0|121.0|-141.21175|-0.28242 +2016-07-01|-77.0|122.0|-142.70828|-0.28451 +2016-07-01|-77.0|123.0|-144.22388|-0.28655 +2016-07-01|-77.0|124.0|-145.75867|-0.28853 +2016-07-01|-77.0|125.0|-147.31275|-0.29044 +2016-07-01|-77.0|126.0|-148.88614|-0.29225 +2016-07-01|-77.0|127.0|-150.47884|-0.29397 +2016-07-01|-77.0|128.0|-152.09076|-0.29558 +2016-07-01|-77.0|129.0|-153.72177|-0.29707 +2016-07-01|-77.0|130.0|-155.37164|-0.29841 +2016-07-01|-77.0|131.0|-157.0401|-0.29961 +2016-07-01|-77.0|132.0|-158.7268|-0.30064 +2016-07-01|-77.0|133.0|-160.43128|-0.3015 +2016-07-01|-77.0|134.0|-162.15302|-0.30216 +2016-07-01|-77.0|135.0|-163.89142|-0.30261 +2016-07-01|-77.0|136.0|-165.64578|-0.30285 +2016-07-01|-77.0|137.0|-167.41532|-0.30287 +2016-07-01|-77.0|138.0|-169.19917|-0.30264 +2016-07-01|-77.0|139.0|-170.99637|-0.30216 +2016-07-01|-77.0|140.0|-172.80588|-0.30142 +2016-07-01|-77.0|141.0|-174.62658|-0.30041 +2016-07-01|-77.0|142.0|-176.45726|-0.29914 +2016-07-01|-77.0|143.0|-178.29665|-0.29758 +2016-07-01|-77.0|144.0|179.85659|-0.29575 +2016-07-01|-77.0|145.0|178.00385|-0.29364 +2016-07-01|-77.0|146.0|176.14659|-0.29126 +2016-07-01|-77.0|147.0|174.2863|-0.2886 +2016-07-01|-77.0|148.0|172.4245|-0.28567 +2016-07-01|-77.0|149.0|170.56273|-0.28249 +2016-07-01|-77.0|150.0|168.70255|-0.27905 +2016-07-01|-77.0|151.0|166.84552|-0.27538 +2016-07-01|-77.0|152.0|164.99318|-0.27148 +2016-07-01|-77.0|153.0|163.14706|-0.26737 +2016-07-01|-77.0|154.0|161.30865|-0.26306 +2016-07-01|-77.0|155.0|159.4794|-0.25858 +2016-07-01|-77.0|156.0|157.66072|-0.25394 +2016-07-01|-77.0|157.0|155.85395|-0.24915 +2016-07-01|-77.0|158.0|154.06037|-0.24425 +2016-07-01|-77.0|159.0|152.28118|-0.23924 +2016-07-01|-77.0|160.0|150.51751|-0.23415 +2016-07-01|-77.0|161.0|148.77041|-0.229 +2016-07-01|-77.0|162.0|147.04084|-0.2238 +2016-07-01|-77.0|163.0|145.32967|-0.21858 +2016-07-01|-77.0|164.0|143.63769|-0.21335 +2016-07-01|-77.0|165.0|141.9656|-0.20812 +2016-07-01|-77.0|166.0|140.31401|-0.20292 +2016-07-01|-77.0|167.0|138.68343|-0.19776 +2016-07-01|-77.0|168.0|137.07431|-0.19265 +2016-07-01|-77.0|169.0|135.487|-0.18761 +2016-07-01|-77.0|170.0|133.92179|-0.18264 +2016-07-01|-77.0|171.0|132.37888|-0.17775 +2016-07-01|-77.0|172.0|130.85841|-0.17296 +2016-07-01|-77.0|173.0|129.36044|-0.16828 +2016-07-01|-77.0|174.0|127.88499|-0.1637 +2016-07-01|-77.0|175.0|126.43201|-0.15924 +2016-07-01|-77.0|176.0|125.00139|-0.1549 +2016-07-01|-77.0|177.0|123.59299|-0.15069 +2016-07-01|-77.0|178.0|122.20661|-0.1466 +2016-07-01|-77.0|179.0|120.84203|-0.14264 +2016-07-01|-77.0|-1.0|-20.84296|-0.10397 +2016-07-01|-77.0|-2.0|-20.07278|-0.10233 +2016-07-01|-77.0|-3.0|-19.30573|-0.10072 +2016-07-01|-77.0|-4.0|-18.54178|-0.09912 +2016-07-01|-77.0|-5.0|-17.78091|-0.09755 +2016-07-01|-77.0|-6.0|-17.02309|-0.096 +2016-07-01|-77.0|-7.0|-16.26829|-0.09448 +2016-07-01|-77.0|-8.0|-15.51648|-0.09298 +2016-07-01|-77.0|-9.0|-14.76762|-0.09151 +2016-07-01|-77.0|-10.0|-14.02166|-0.09008 +2016-07-01|-77.0|-11.0|-13.27856|-0.08867 +2016-07-01|-77.0|-12.0|-12.53826|-0.0873 +2016-07-01|-77.0|-13.0|-11.80072|-0.08596 +2016-07-01|-77.0|-14.0|-11.06587|-0.08465 +2016-07-01|-77.0|-15.0|-10.33365|-0.08338 +2016-07-01|-77.0|-16.0|-9.604|-0.08215 +2016-07-01|-77.0|-17.0|-8.87684|-0.08095 +2016-07-01|-77.0|-18.0|-8.15211|-0.0798 +2016-07-01|-77.0|-19.0|-7.42974|-0.07868 +2016-07-01|-77.0|-20.0|-6.70964|-0.07761 +2016-07-01|-77.0|-21.0|-5.99174|-0.07657 +2016-07-01|-77.0|-22.0|-5.27595|-0.07558 +2016-07-01|-77.0|-23.0|-4.56219|-0.07462 +2016-07-01|-77.0|-24.0|-3.85039|-0.07371 +2016-07-01|-77.0|-25.0|-3.14044|-0.07284 +2016-07-01|-77.0|-26.0|-2.43226|-0.07201 +2016-07-01|-77.0|-27.0|-1.72576|-0.07123 +2016-07-01|-77.0|-28.0|-1.02086|-0.07048 +2016-07-01|-77.0|-29.0|-0.31745|-0.06978 +2016-07-01|-77.0|-30.0|0.38455|-0.06912 +2016-07-01|-77.0|-31.0|1.08523|-0.0685 +2016-07-01|-77.0|-32.0|1.78468|-0.06791 +2016-07-01|-77.0|-33.0|2.483|-0.06737 +2016-07-01|-77.0|-34.0|3.18027|-0.06687 +2016-07-01|-77.0|-35.0|3.87659|-0.06641 +2016-07-01|-77.0|-36.0|4.57204|-0.06598 +2016-07-01|-77.0|-37.0|5.26671|-0.06559 +2016-07-01|-77.0|-38.0|5.96069|-0.06524 +2016-07-01|-77.0|-39.0|6.65405|-0.06492 +2016-07-01|-77.0|-40.0|7.34689|-0.06464 +2016-07-01|-77.0|-41.0|8.03928|-0.06438 +2016-07-01|-77.0|-42.0|8.73129|-0.06416 +2016-07-01|-77.0|-43.0|9.42301|-0.06397 +2016-07-01|-77.0|-44.0|10.1145|-0.06381 +2016-07-01|-77.0|-45.0|10.80584|-0.06367 +2016-07-01|-77.0|-46.0|11.49708|-0.06356 +2016-07-01|-77.0|-47.0|12.1883|-0.06348 +2016-07-01|-77.0|-48.0|12.87955|-0.06342 +2016-07-01|-77.0|-49.0|13.57089|-0.06338 +2016-07-01|-77.0|-50.0|14.26237|-0.06337 +2016-07-01|-77.0|-51.0|14.95404|-0.06337 +2016-07-01|-77.0|-52.0|15.64595|-0.06339 +2016-07-01|-77.0|-53.0|16.33814|-0.06342 +2016-07-01|-77.0|-54.0|17.03064|-0.06348 +2016-07-01|-77.0|-55.0|17.72351|-0.06354 +2016-07-01|-77.0|-56.0|18.41675|-0.06362 +2016-07-01|-77.0|-57.0|19.11042|-0.06371 +2016-07-01|-77.0|-58.0|19.80452|-0.06381 +2016-07-01|-77.0|-59.0|20.49909|-0.06392 +2016-07-01|-77.0|-60.0|21.19413|-0.06403 +2016-07-01|-77.0|-61.0|21.88967|-0.06415 +2016-07-01|-77.0|-62.0|22.58572|-0.06428 +2016-07-01|-77.0|-63.0|23.28228|-0.06441 +2016-07-01|-77.0|-64.0|23.97936|-0.06454 +2016-07-01|-77.0|-65.0|24.67697|-0.06467 +2016-07-01|-77.0|-66.0|25.3751|-0.06481 +2016-07-01|-77.0|-67.0|26.07376|-0.06494 +2016-07-01|-77.0|-68.0|26.77293|-0.06508 +2016-07-01|-77.0|-69.0|27.47261|-0.06521 +2016-07-01|-77.0|-70.0|28.1728|-0.06534 +2016-07-01|-77.0|-71.0|28.87347|-0.06547 +2016-07-01|-77.0|-72.0|29.57463|-0.06559 +2016-07-01|-77.0|-73.0|30.27625|-0.06571 +2016-07-01|-77.0|-74.0|30.97832|-0.06582 +2016-07-01|-77.0|-75.0|31.68083|-0.06593 +2016-07-01|-77.0|-76.0|32.38375|-0.06604 +2016-07-01|-77.0|-77.0|33.08708|-0.06613 +2016-07-01|-77.0|-78.0|33.79078|-0.06622 +2016-07-01|-77.0|-79.0|34.49485|-0.06631 +2016-07-01|-77.0|-80.0|35.19927|-0.06638 +2016-07-01|-77.0|-81.0|35.90402|-0.06645 +2016-07-01|-77.0|-82.0|36.60907|-0.06651 +2016-07-01|-77.0|-83.0|37.31442|-0.06657 +2016-07-01|-77.0|-84.0|38.02005|-0.06662 +2016-07-01|-77.0|-85.0|38.72594|-0.06666 +2016-07-01|-77.0|-86.0|39.43209|-0.06669 +2016-07-01|-77.0|-87.0|40.13847|-0.06672 +2016-07-01|-77.0|-88.0|40.84508|-0.06674 +2016-07-01|-77.0|-89.0|41.5519|-0.06675 +2016-07-01|-77.0|-90.0|42.25894|-0.06675 +2016-07-01|-77.0|-91.0|42.96619|-0.06675 +2016-07-01|-77.0|-92.0|43.67365|-0.06675 +2016-07-01|-77.0|-93.0|44.38132|-0.06674 +2016-07-01|-77.0|-94.0|45.0892|-0.06672 +2016-07-01|-77.0|-95.0|45.7973|-0.0667 +2016-07-01|-77.0|-96.0|46.50563|-0.06667 +2016-07-01|-77.0|-97.0|47.21421|-0.06664 +2016-07-01|-77.0|-98.0|47.92305|-0.06661 +2016-07-01|-77.0|-99.0|48.63218|-0.06657 +2016-07-01|-77.0|-100.0|49.34162|-0.06653 +2016-07-01|-77.0|-101.0|50.05139|-0.06649 +2016-07-01|-77.0|-102.0|50.76154|-0.06644 +2016-07-01|-77.0|-103.0|51.4721|-0.0664 +2016-07-01|-77.0|-104.0|52.18311|-0.06635 +2016-07-01|-77.0|-105.0|52.89462|-0.0663 +2016-07-01|-77.0|-106.0|53.60668|-0.06626 +2016-07-01|-77.0|-107.0|54.31935|-0.06621 +2016-07-01|-77.0|-108.0|55.03269|-0.06617 +2016-07-01|-77.0|-109.0|55.74677|-0.06613 +2016-07-01|-77.0|-110.0|56.46166|-0.06609 +2016-07-01|-77.0|-111.0|57.17743|-0.06605 +2016-07-01|-77.0|-112.0|57.89417|-0.06602 +2016-07-01|-77.0|-113.0|58.61196|-0.06599 +2016-07-01|-77.0|-114.0|59.33091|-0.06597 +2016-07-01|-77.0|-115.0|60.0511|-0.06595 +2016-07-01|-77.0|-116.0|60.77265|-0.06595 +2016-07-01|-77.0|-117.0|61.49566|-0.06594 +2016-07-01|-77.0|-118.0|62.22025|-0.06595 +2016-07-01|-77.0|-119.0|62.94655|-0.06596 +2016-07-01|-77.0|-120.0|63.67467|-0.06599 +2016-07-01|-77.0|-121.0|64.40477|-0.06602 +2016-07-01|-77.0|-122.0|65.13697|-0.06606 +2016-07-01|-77.0|-123.0|65.87143|-0.06612 +2016-07-01|-77.0|-124.0|66.60829|-0.06619 +2016-07-01|-77.0|-125.0|67.34772|-0.06627 +2016-07-01|-77.0|-126.0|68.08988|-0.06637 +2016-07-01|-77.0|-127.0|68.83495|-0.06648 +2016-07-01|-77.0|-128.0|69.5831|-0.06661 +2016-07-01|-77.0|-129.0|70.33451|-0.06676 +2016-07-01|-77.0|-130.0|71.08939|-0.06692 +2016-07-01|-77.0|-131.0|71.84792|-0.0671 +2016-07-01|-77.0|-132.0|72.61032|-0.06731 +2016-07-01|-77.0|-133.0|73.37679|-0.06753 +2016-07-01|-77.0|-134.0|74.14755|-0.06778 +2016-07-01|-77.0|-135.0|74.92282|-0.06805 +2016-07-01|-77.0|-136.0|75.70285|-0.06835 +2016-07-01|-77.0|-137.0|76.48786|-0.06868 +2016-07-01|-77.0|-138.0|77.2781|-0.06903 +2016-07-01|-77.0|-139.0|78.07383|-0.06941 +2016-07-01|-77.0|-140.0|78.87531|-0.06983 +2016-07-01|-77.0|-141.0|79.68279|-0.07027 +2016-07-01|-77.0|-142.0|80.49656|-0.07075 +2016-07-01|-77.0|-143.0|81.31689|-0.07127 +2016-07-01|-77.0|-144.0|82.14408|-0.07183 +2016-07-01|-77.0|-145.0|82.97842|-0.07242 +2016-07-01|-77.0|-146.0|83.82022|-0.07306 +2016-07-01|-77.0|-147.0|84.66977|-0.07374 +2016-07-01|-77.0|-148.0|85.52741|-0.07447 +2016-07-01|-77.0|-149.0|86.39345|-0.07525 +2016-07-01|-77.0|-150.0|87.26823|-0.07608 +2016-07-01|-77.0|-151.0|88.15209|-0.07696 +2016-07-01|-77.0|-152.0|89.04538|-0.07789 +2016-07-01|-77.0|-153.0|89.94846|-0.07889 +2016-07-01|-77.0|-154.0|90.86167|-0.07995 +2016-07-01|-77.0|-155.0|91.78541|-0.08107 +2016-07-01|-77.0|-156.0|92.72003|-0.08225 +2016-07-01|-77.0|-157.0|93.66594|-0.08351 +2016-07-01|-77.0|-158.0|94.62352|-0.08484 +2016-07-01|-77.0|-159.0|95.59317|-0.08624 +2016-07-01|-77.0|-160.0|96.57529|-0.08773 +2016-07-01|-77.0|-161.0|97.5703|-0.08929 +2016-07-01|-77.0|-162.0|98.57862|-0.09094 +2016-07-01|-77.0|-163.0|99.60066|-0.09268 +2016-07-01|-77.0|-164.0|100.63687|-0.09451 +2016-07-01|-77.0|-165.0|101.68766|-0.09644 +2016-07-01|-77.0|-166.0|102.75349|-0.09846 +2016-07-01|-77.0|-167.0|103.83479|-0.10059 +2016-07-01|-77.0|-168.0|104.932|-0.10282 +2016-07-01|-77.0|-169.0|106.04557|-0.10515 +2016-07-01|-77.0|-170.0|107.17595|-0.1076 +2016-07-01|-77.0|-171.0|108.32357|-0.11017 +2016-07-01|-77.0|-172.0|109.48888|-0.11285 +2016-07-01|-77.0|-173.0|110.67232|-0.11565 +2016-07-01|-77.0|-174.0|111.87432|-0.11858 +2016-07-01|-77.0|-175.0|113.0953|-0.12163 +2016-07-01|-77.0|-176.0|114.33568|-0.1248 +2016-07-01|-77.0|-177.0|115.59586|-0.12811 +2016-07-01|-77.0|-178.0|116.87622|-0.13154 +2016-07-01|-77.0|-179.0|118.17714|-0.13511 +2016-07-01|-78.0|0.0|-21.96235|-0.10846 +2016-07-01|-78.0|1.0|-22.75084|-0.10998 +2016-07-01|-78.0|2.0|-23.54221|-0.11151 +2016-07-01|-78.0|3.0|-24.33648|-0.11305 +2016-07-01|-78.0|4.0|-25.13363|-0.1146 +2016-07-01|-78.0|5.0|-25.93369|-0.11616 +2016-07-01|-78.0|6.0|-26.73663|-0.11773 +2016-07-01|-78.0|7.0|-27.54247|-0.11931 +2016-07-01|-78.0|8.0|-28.3512|-0.12089 +2016-07-01|-78.0|9.0|-29.1628|-0.12247 +2016-07-01|-78.0|10.0|-29.97727|-0.12405 +2016-07-01|-78.0|11.0|-30.79459|-0.12564 +2016-07-01|-78.0|12.0|-31.61475|-0.12723 +2016-07-01|-78.0|13.0|-32.43773|-0.12881 +2016-07-01|-78.0|14.0|-33.26351|-0.13039 +2016-07-01|-78.0|15.0|-34.09208|-0.13197 +2016-07-01|-78.0|16.0|-34.92341|-0.13354 +2016-07-01|-78.0|17.0|-35.75748|-0.1351 +2016-07-01|-78.0|18.0|-36.59425|-0.13666 +2016-07-01|-78.0|19.0|-37.43372|-0.13821 +2016-07-01|-78.0|20.0|-38.27585|-0.13975 +2016-07-01|-78.0|21.0|-39.12061|-0.14128 +2016-07-01|-78.0|22.0|-39.96798|-0.14279 +2016-07-01|-78.0|23.0|-40.81792|-0.1443 +2016-07-01|-78.0|24.0|-41.67042|-0.14579 +2016-07-01|-78.0|25.0|-42.52544|-0.14727 +2016-07-01|-78.0|26.0|-43.38296|-0.14873 +2016-07-01|-78.0|27.0|-44.24295|-0.15018 +2016-07-01|-78.0|28.0|-45.10538|-0.15162 +2016-07-01|-78.0|29.0|-45.97022|-0.15304 +2016-07-01|-78.0|30.0|-46.83745|-0.15444 +2016-07-01|-78.0|31.0|-47.70706|-0.15582 +2016-07-01|-78.0|32.0|-48.579|-0.15719 +2016-07-01|-78.0|33.0|-49.45327|-0.15854 +2016-07-01|-78.0|34.0|-50.32984|-0.15987 +2016-07-01|-78.0|35.0|-51.2087|-0.16119 +2016-07-01|-78.0|36.0|-52.08982|-0.16248 +2016-07-01|-78.0|37.0|-52.9732|-0.16376 +2016-07-01|-78.0|38.0|-53.85882|-0.16502 +2016-07-01|-78.0|39.0|-54.74667|-0.16626 +2016-07-01|-78.0|40.0|-55.63675|-0.16749 +2016-07-01|-78.0|41.0|-56.52905|-0.1687 +2016-07-01|-78.0|42.0|-57.42357|-0.16989 +2016-07-01|-78.0|43.0|-58.3203|-0.17106 +2016-07-01|-78.0|44.0|-59.21926|-0.17222 +2016-07-01|-78.0|45.0|-60.12045|-0.17336 +2016-07-01|-78.0|46.0|-61.02387|-0.17448 +2016-07-01|-78.0|47.0|-61.92955|-0.17559 +2016-07-01|-78.0|48.0|-62.8375|-0.17668 +2016-07-01|-78.0|49.0|-63.74774|-0.17776 +2016-07-01|-78.0|50.0|-64.66029|-0.17883 +2016-07-01|-78.0|51.0|-65.57519|-0.17988 +2016-07-01|-78.0|52.0|-66.49246|-0.18092 +2016-07-01|-78.0|53.0|-67.41214|-0.18195 +2016-07-01|-78.0|54.0|-68.33426|-0.18297 +2016-07-01|-78.0|55.0|-69.25888|-0.18398 +2016-07-01|-78.0|56.0|-70.18604|-0.18498 +2016-07-01|-78.0|57.0|-71.11579|-0.18597 +2016-07-01|-78.0|58.0|-72.0482|-0.18695 +2016-07-01|-78.0|59.0|-72.98331|-0.18792 +2016-07-01|-78.0|60.0|-73.9212|-0.18889 +2016-07-01|-78.0|61.0|-74.86194|-0.18986 +2016-07-01|-78.0|62.0|-75.8056|-0.19082 +2016-07-01|-78.0|63.0|-76.75226|-0.19178 +2016-07-01|-78.0|64.0|-77.70202|-0.19273 +2016-07-01|-78.0|65.0|-78.65494|-0.19369 +2016-07-01|-78.0|66.0|-79.61115|-0.19465 +2016-07-01|-78.0|67.0|-80.57072|-0.1956 +2016-07-01|-78.0|68.0|-81.53377|-0.19656 +2016-07-01|-78.0|69.0|-82.50042|-0.19753 +2016-07-01|-78.0|70.0|-83.47076|-0.19849 +2016-07-01|-78.0|71.0|-84.44493|-0.19947 +2016-07-01|-78.0|72.0|-85.42306|-0.20045 +2016-07-01|-78.0|73.0|-86.40527|-0.20144 +2016-07-01|-78.0|74.0|-87.39171|-0.20244 +2016-07-01|-78.0|75.0|-88.38251|-0.20344 +2016-07-01|-78.0|76.0|-89.37783|-0.20446 +2016-07-01|-78.0|77.0|-90.37782|-0.2055 +2016-07-01|-78.0|78.0|-91.38264|-0.20654 +2016-07-01|-78.0|79.0|-92.39247|-0.2076 +2016-07-01|-78.0|80.0|-93.40747|-0.20868 +2016-07-01|-78.0|81.0|-94.42782|-0.20977 +2016-07-01|-78.0|82.0|-95.4537|-0.21088 +2016-07-01|-78.0|83.0|-96.48532|-0.21201 +2016-07-01|-78.0|84.0|-97.52286|-0.21316 +2016-07-01|-78.0|85.0|-98.56653|-0.21432 +2016-07-01|-78.0|86.0|-99.61653|-0.21551 +2016-07-01|-78.0|87.0|-100.67309|-0.21673 +2016-07-01|-78.0|88.0|-101.73643|-0.21796 +2016-07-01|-78.0|89.0|-102.80676|-0.21922 +2016-07-01|-78.0|90.0|-103.88433|-0.22051 +2016-07-01|-78.0|91.0|-104.96937|-0.22182 +2016-07-01|-78.0|92.0|-106.06213|-0.22315 +2016-07-01|-78.0|93.0|-107.16286|-0.22451 +2016-07-01|-78.0|94.0|-108.27181|-0.2259 +2016-07-01|-78.0|95.0|-109.38924|-0.22731 +2016-07-01|-78.0|96.0|-110.51543|-0.22875 +2016-07-01|-78.0|97.0|-111.65063|-0.23022 +2016-07-01|-78.0|98.0|-112.79513|-0.23172 +2016-07-01|-78.0|99.0|-113.94921|-0.23324 +2016-07-01|-78.0|100.0|-115.11314|-0.23479 +2016-07-01|-78.0|101.0|-116.28721|-0.23636 +2016-07-01|-78.0|102.0|-117.47171|-0.23796 +2016-07-01|-78.0|103.0|-118.66692|-0.23958 +2016-07-01|-78.0|104.0|-119.87315|-0.24122 +2016-07-01|-78.0|105.0|-121.09069|-0.24289 +2016-07-01|-78.0|106.0|-122.31981|-0.24458 +2016-07-01|-78.0|107.0|-123.56082|-0.24628 +2016-07-01|-78.0|108.0|-124.814|-0.248 +2016-07-01|-78.0|109.0|-126.07964|-0.24974 +2016-07-01|-78.0|110.0|-127.35801|-0.25148 +2016-07-01|-78.0|111.0|-128.64939|-0.25324 +2016-07-01|-78.0|112.0|-129.95406|-0.255 +2016-07-01|-78.0|113.0|-131.27226|-0.25676 +2016-07-01|-78.0|114.0|-132.60424|-0.25852 +2016-07-01|-78.0|115.0|-133.95024|-0.26027 +2016-07-01|-78.0|116.0|-135.31048|-0.26202 +2016-07-01|-78.0|117.0|-136.68517|-0.26374 +2016-07-01|-78.0|118.0|-138.07449|-0.26545 +2016-07-01|-78.0|119.0|-139.4786|-0.26713 +2016-07-01|-78.0|120.0|-140.89766|-0.26877 +2016-07-01|-78.0|121.0|-142.33177|-0.27038 +2016-07-01|-78.0|122.0|-143.78103|-0.27193 +2016-07-01|-78.0|123.0|-145.2455|-0.27344 +2016-07-01|-78.0|124.0|-146.7252|-0.27488 +2016-07-01|-78.0|125.0|-148.22012|-0.27626 +2016-07-01|-78.0|126.0|-149.73021|-0.27755 +2016-07-01|-78.0|127.0|-151.25539|-0.27877 +2016-07-01|-78.0|128.0|-152.79552|-0.27988 +2016-07-01|-78.0|129.0|-154.35041|-0.2809 +2016-07-01|-78.0|130.0|-155.91986|-0.2818 +2016-07-01|-78.0|131.0|-157.50357|-0.28258 +2016-07-01|-78.0|132.0|-159.10121|-0.28323 +2016-07-01|-78.0|133.0|-160.7124|-0.28374 +2016-07-01|-78.0|134.0|-162.3367|-0.28411 +2016-07-01|-78.0|135.0|-163.97362|-0.28432 +2016-07-01|-78.0|136.0|-165.6226|-0.28437 +2016-07-01|-78.0|137.0|-167.28303|-0.28425 +2016-07-01|-78.0|138.0|-168.95425|-0.28395 +2016-07-01|-78.0|139.0|-170.63553|-0.28347 +2016-07-01|-78.0|140.0|-172.32611|-0.2828 +2016-07-01|-78.0|141.0|-174.02514|-0.28193 +2016-07-01|-78.0|142.0|-175.73176|-0.28087 +2016-07-01|-78.0|143.0|-177.44505|-0.27961 +2016-07-01|-78.0|144.0|-179.16403|-0.27815 +2016-07-01|-78.0|145.0|179.11228|-0.27649 +2016-07-01|-78.0|146.0|177.38494|-0.27463 +2016-07-01|-78.0|147.0|175.655|-0.27258 +2016-07-01|-78.0|148.0|173.92355|-0.27032 +2016-07-01|-78.0|149.0|172.1917|-0.26788 +2016-07-01|-78.0|150.0|170.46055|-0.26525 +2016-07-01|-78.0|151.0|168.73123|-0.26244 +2016-07-01|-78.0|152.0|167.00486|-0.25947 +2016-07-01|-78.0|153.0|165.28254|-0.25633 +2016-07-01|-78.0|154.0|163.56537|-0.25303 +2016-07-01|-78.0|155.0|161.85443|-0.2496 +2016-07-01|-78.0|156.0|160.15076|-0.24603 +2016-07-01|-78.0|157.0|158.45538|-0.24235 +2016-07-01|-78.0|158.0|156.76927|-0.23856 +2016-07-01|-78.0|159.0|155.09337|-0.23467 +2016-07-01|-78.0|160.0|153.42858|-0.2307 +2016-07-01|-78.0|161.0|151.77575|-0.22666 +2016-07-01|-78.0|162.0|150.13567|-0.22256 +2016-07-01|-78.0|163.0|148.50908|-0.21841 +2016-07-01|-78.0|164.0|146.89668|-0.21424 +2016-07-01|-78.0|165.0|145.29908|-0.21004 +2016-07-01|-78.0|166.0|143.71687|-0.20583 +2016-07-01|-78.0|167.0|142.15057|-0.20163 +2016-07-01|-78.0|168.0|140.60061|-0.19744 +2016-07-01|-78.0|169.0|139.06742|-0.19327 +2016-07-01|-78.0|170.0|137.55133|-0.18913 +2016-07-01|-78.0|171.0|136.05264|-0.18503 +2016-07-01|-78.0|172.0|134.57159|-0.18098 +2016-07-01|-78.0|173.0|133.10836|-0.17699 +2016-07-01|-78.0|174.0|131.66309|-0.17306 +2016-07-01|-78.0|175.0|130.23588|-0.1692 +2016-07-01|-78.0|176.0|128.82679|-0.16541 +2016-07-01|-78.0|177.0|127.43581|-0.1617 +2016-07-01|-78.0|178.0|126.06292|-0.15807 +2016-07-01|-78.0|179.0|124.70805|-0.15452 +2016-07-01|-78.0|-1.0|-21.17672|-0.10695 +2016-07-01|-78.0|-2.0|-20.39395|-0.10547 +2016-07-01|-78.0|-3.0|-19.61402|-0.104 +2016-07-01|-78.0|-4.0|-18.83691|-0.10255 +2016-07-01|-78.0|-5.0|-18.06259|-0.10111 +2016-07-01|-78.0|-6.0|-17.29104|-0.0997 +2016-07-01|-78.0|-7.0|-16.52222|-0.09832 +2016-07-01|-78.0|-8.0|-15.75612|-0.09695 +2016-07-01|-78.0|-9.0|-14.99268|-0.09561 +2016-07-01|-78.0|-10.0|-14.23187|-0.0943 +2016-07-01|-78.0|-11.0|-13.47365|-0.09301 +2016-07-01|-78.0|-12.0|-12.71797|-0.09175 +2016-07-01|-78.0|-13.0|-11.96478|-0.09052 +2016-07-01|-78.0|-14.0|-11.21404|-0.08932 +2016-07-01|-78.0|-15.0|-10.46568|-0.08815 +2016-07-01|-78.0|-16.0|-9.71966|-0.08702 +2016-07-01|-78.0|-17.0|-8.97591|-0.08591 +2016-07-01|-78.0|-18.0|-8.23437|-0.08484 +2016-07-01|-78.0|-19.0|-7.49499|-0.0838 +2016-07-01|-78.0|-20.0|-6.75768|-0.08279 +2016-07-01|-78.0|-21.0|-6.02239|-0.08183 +2016-07-01|-78.0|-22.0|-5.28904|-0.08089 +2016-07-01|-78.0|-23.0|-4.55757|-0.07999 +2016-07-01|-78.0|-24.0|-3.82789|-0.07913 +2016-07-01|-78.0|-25.0|-3.09995|-0.0783 +2016-07-01|-78.0|-26.0|-2.37365|-0.07751 +2016-07-01|-78.0|-27.0|-1.64893|-0.07675 +2016-07-01|-78.0|-28.0|-0.9257|-0.07603 +2016-07-01|-78.0|-29.0|-0.2039|-0.07535 +2016-07-01|-78.0|-30.0|0.51657|-0.0747 +2016-07-01|-78.0|-31.0|1.23577|-0.07408 +2016-07-01|-78.0|-32.0|1.95378|-0.07351 +2016-07-01|-78.0|-33.0|2.67069|-0.07296 +2016-07-01|-78.0|-34.0|3.38657|-0.07245 +2016-07-01|-78.0|-35.0|4.10149|-0.07197 +2016-07-01|-78.0|-36.0|4.81555|-0.07153 +2016-07-01|-78.0|-37.0|5.5288|-0.07112 +2016-07-01|-78.0|-38.0|6.24132|-0.07074 +2016-07-01|-78.0|-39.0|6.9532|-0.07039 +2016-07-01|-78.0|-40.0|7.66449|-0.07007 +2016-07-01|-78.0|-41.0|8.37528|-0.06978 +2016-07-01|-78.0|-42.0|9.08562|-0.06952 +2016-07-01|-78.0|-43.0|9.79559|-0.06928 +2016-07-01|-78.0|-44.0|10.50525|-0.06907 +2016-07-01|-78.0|-45.0|11.21466|-0.06889 +2016-07-01|-78.0|-46.0|11.92388|-0.06873 +2016-07-01|-78.0|-47.0|12.63298|-0.0686 +2016-07-01|-78.0|-48.0|13.342|-0.06848 +2016-07-01|-78.0|-49.0|14.05101|-0.06839 +2016-07-01|-78.0|-50.0|14.76004|-0.06832 +2016-07-01|-78.0|-51.0|15.46916|-0.06826 +2016-07-01|-78.0|-52.0|16.1784|-0.06823 +2016-07-01|-78.0|-53.0|16.8878|-0.06821 +2016-07-01|-78.0|-54.0|17.59742|-0.0682 +2016-07-01|-78.0|-55.0|18.30729|-0.06821 +2016-07-01|-78.0|-56.0|19.01743|-0.06824 +2016-07-01|-78.0|-57.0|19.72789|-0.06827 +2016-07-01|-78.0|-58.0|20.43869|-0.06832 +2016-07-01|-78.0|-59.0|21.14986|-0.06838 +2016-07-01|-78.0|-60.0|21.86143|-0.06844 +2016-07-01|-78.0|-61.0|22.57341|-0.06852 +2016-07-01|-78.0|-62.0|23.28583|-0.0686 +2016-07-01|-78.0|-63.0|23.99871|-0.06869 +2016-07-01|-78.0|-64.0|24.71205|-0.06878 +2016-07-01|-78.0|-65.0|25.42588|-0.06888 +2016-07-01|-78.0|-66.0|26.1402|-0.06898 +2016-07-01|-78.0|-67.0|26.85503|-0.06909 +2016-07-01|-78.0|-68.0|27.57036|-0.0692 +2016-07-01|-78.0|-69.0|28.28621|-0.0693 +2016-07-01|-78.0|-70.0|29.00257|-0.06941 +2016-07-01|-78.0|-71.0|29.71946|-0.06953 +2016-07-01|-78.0|-72.0|30.43688|-0.06964 +2016-07-01|-78.0|-73.0|31.15481|-0.06975 +2016-07-01|-78.0|-74.0|31.87327|-0.06985 +2016-07-01|-78.0|-75.0|32.59226|-0.06996 +2016-07-01|-78.0|-76.0|33.31176|-0.07007 +2016-07-01|-78.0|-77.0|34.03178|-0.07017 +2016-07-01|-78.0|-78.0|34.75231|-0.07027 +2016-07-01|-78.0|-79.0|35.47336|-0.07037 +2016-07-01|-78.0|-80.0|36.19491|-0.07046 +2016-07-01|-78.0|-81.0|36.91697|-0.07055 +2016-07-01|-78.0|-82.0|37.63954|-0.07064 +2016-07-01|-78.0|-83.0|38.3626|-0.07072 +2016-07-01|-78.0|-84.0|39.08617|-0.0708 +2016-07-01|-78.0|-85.0|39.81025|-0.07088 +2016-07-01|-78.0|-86.0|40.53482|-0.07095 +2016-07-01|-78.0|-87.0|41.25991|-0.07102 +2016-07-01|-78.0|-88.0|41.9855|-0.07109 +2016-07-01|-78.0|-89.0|42.71161|-0.07115 +2016-07-01|-78.0|-90.0|43.43824|-0.07121 +2016-07-01|-78.0|-91.0|44.16541|-0.07127 +2016-07-01|-78.0|-92.0|44.89312|-0.07132 +2016-07-01|-78.0|-93.0|45.6214|-0.07138 +2016-07-01|-78.0|-94.0|46.35025|-0.07143 +2016-07-01|-78.0|-95.0|47.07969|-0.07147 +2016-07-01|-78.0|-96.0|47.80975|-0.07152 +2016-07-01|-78.0|-97.0|48.54046|-0.07157 +2016-07-01|-78.0|-98.0|49.27183|-0.07161 +2016-07-01|-78.0|-99.0|50.0039|-0.07165 +2016-07-01|-78.0|-100.0|50.73672|-0.0717 +2016-07-01|-78.0|-101.0|51.4703|-0.07174 +2016-07-01|-78.0|-102.0|52.2047|-0.07179 +2016-07-01|-78.0|-103.0|52.93996|-0.07183 +2016-07-01|-78.0|-104.0|53.67613|-0.07188 +2016-07-01|-78.0|-105.0|54.41326|-0.07193 +2016-07-01|-78.0|-106.0|55.15141|-0.07199 +2016-07-01|-78.0|-107.0|55.89064|-0.07204 +2016-07-01|-78.0|-108.0|56.63102|-0.0721 +2016-07-01|-78.0|-109.0|57.37262|-0.07217 +2016-07-01|-78.0|-110.0|58.1155|-0.07224 +2016-07-01|-78.0|-111.0|58.85976|-0.07231 +2016-07-01|-78.0|-112.0|59.60547|-0.0724 +2016-07-01|-78.0|-113.0|60.35273|-0.07249 +2016-07-01|-78.0|-114.0|61.10161|-0.07258 +2016-07-01|-78.0|-115.0|61.85224|-0.07268 +2016-07-01|-78.0|-116.0|62.6047|-0.0728 +2016-07-01|-78.0|-117.0|63.3591|-0.07292 +2016-07-01|-78.0|-118.0|64.11556|-0.07305 +2016-07-01|-78.0|-119.0|64.8742|-0.07319 +2016-07-01|-78.0|-120.0|65.63514|-0.07335 +2016-07-01|-78.0|-121.0|66.39851|-0.07352 +2016-07-01|-78.0|-122.0|67.16444|-0.0737 +2016-07-01|-78.0|-123.0|67.93307|-0.07389 +2016-07-01|-78.0|-124.0|68.70455|-0.0741 +2016-07-01|-78.0|-125.0|69.47903|-0.07432 +2016-07-01|-78.0|-126.0|70.25666|-0.07456 +2016-07-01|-78.0|-127.0|71.03761|-0.07482 +2016-07-01|-78.0|-128.0|71.82203|-0.0751 +2016-07-01|-78.0|-129.0|72.61011|-0.07539 +2016-07-01|-78.0|-130.0|73.40202|-0.07571 +2016-07-01|-78.0|-131.0|74.19795|-0.07605 +2016-07-01|-78.0|-132.0|74.99808|-0.07641 +2016-07-01|-78.0|-133.0|75.80261|-0.07679 +2016-07-01|-78.0|-134.0|76.61174|-0.0772 +2016-07-01|-78.0|-135.0|77.42568|-0.07763 +2016-07-01|-78.0|-136.0|78.24463|-0.07809 +2016-07-01|-78.0|-137.0|79.06882|-0.07858 +2016-07-01|-78.0|-138.0|79.89847|-0.0791 +2016-07-01|-78.0|-139.0|80.73381|-0.07965 +2016-07-01|-78.0|-140.0|81.57507|-0.08023 +2016-07-01|-78.0|-141.0|82.4225|-0.08085 +2016-07-01|-78.0|-142.0|83.27633|-0.0815 +2016-07-01|-78.0|-143.0|84.13683|-0.08219 +2016-07-01|-78.0|-144.0|85.00425|-0.08292 +2016-07-01|-78.0|-145.0|85.87885|-0.08369 +2016-07-01|-78.0|-146.0|86.7609|-0.0845 +2016-07-01|-78.0|-147.0|87.65068|-0.08535 +2016-07-01|-78.0|-148.0|88.54846|-0.08625 +2016-07-01|-78.0|-149.0|89.45453|-0.08719 +2016-07-01|-78.0|-150.0|90.36918|-0.08819 +2016-07-01|-78.0|-151.0|91.29271|-0.08924 +2016-07-01|-78.0|-152.0|92.22541|-0.09034 +2016-07-01|-78.0|-153.0|93.16759|-0.09149 +2016-07-01|-78.0|-154.0|94.11956|-0.09271 +2016-07-01|-78.0|-155.0|95.08164|-0.09398 +2016-07-01|-78.0|-156.0|96.05414|-0.09531 +2016-07-01|-78.0|-157.0|97.03738|-0.09671 +2016-07-01|-78.0|-158.0|98.03169|-0.09817 +2016-07-01|-78.0|-159.0|99.03739|-0.0997 +2016-07-01|-78.0|-160.0|100.05483|-0.10131 +2016-07-01|-78.0|-161.0|101.08433|-0.10298 +2016-07-01|-78.0|-162.0|102.12622|-0.10473 +2016-07-01|-78.0|-163.0|103.18085|-0.10656 +2016-07-01|-78.0|-164.0|104.24855|-0.10847 +2016-07-01|-78.0|-165.0|105.32965|-0.11045 +2016-07-01|-78.0|-166.0|106.4245|-0.11252 +2016-07-01|-78.0|-167.0|107.53342|-0.11468 +2016-07-01|-78.0|-168.0|108.65675|-0.11692 +2016-07-01|-78.0|-169.0|109.79481|-0.11925 +2016-07-01|-78.0|-170.0|110.94792|-0.12168 +2016-07-01|-78.0|-171.0|112.1164|-0.12419 +2016-07-01|-78.0|-172.0|113.30056|-0.1268 +2016-07-01|-78.0|-173.0|114.50069|-0.1295 +2016-07-01|-78.0|-174.0|115.71709|-0.1323 +2016-07-01|-78.0|-175.0|116.95001|-0.13519 +2016-07-01|-78.0|-176.0|118.19973|-0.13817 +2016-07-01|-78.0|-177.0|119.46649|-0.14126 +2016-07-01|-78.0|-178.0|120.75051|-0.14443 +2016-07-01|-78.0|-179.0|122.05199|-0.1477 +2016-07-01|-79.0|0.0|-22.34769|-0.1114 +2016-07-01|-79.0|1.0|-23.14885|-0.11277 +2016-07-01|-79.0|2.0|-23.95263|-0.11415 +2016-07-01|-79.0|3.0|-24.75904|-0.11555 +2016-07-01|-79.0|4.0|-25.56809|-0.11695 +2016-07-01|-79.0|5.0|-26.37979|-0.11837 +2016-07-01|-79.0|6.0|-27.19414|-0.11979 +2016-07-01|-79.0|7.0|-28.01116|-0.12121 +2016-07-01|-79.0|8.0|-28.83083|-0.12264 +2016-07-01|-79.0|9.0|-29.65315|-0.12408 +2016-07-01|-79.0|10.0|-30.47814|-0.12552 +2016-07-01|-79.0|11.0|-31.30577|-0.12696 +2016-07-01|-79.0|12.0|-32.13604|-0.1284 +2016-07-01|-79.0|13.0|-32.96896|-0.12984 +2016-07-01|-79.0|14.0|-33.80449|-0.13128 +2016-07-01|-79.0|15.0|-34.64265|-0.13272 +2016-07-01|-79.0|16.0|-35.48341|-0.13416 +2016-07-01|-79.0|17.0|-36.32676|-0.13559 +2016-07-01|-79.0|18.0|-37.1727|-0.13702 +2016-07-01|-79.0|19.0|-38.02119|-0.13844 +2016-07-01|-79.0|20.0|-38.87224|-0.13985 +2016-07-01|-79.0|21.0|-39.72582|-0.14126 +2016-07-01|-79.0|22.0|-40.58193|-0.14266 +2016-07-01|-79.0|23.0|-41.44053|-0.14405 +2016-07-01|-79.0|24.0|-42.30162|-0.14543 +2016-07-01|-79.0|25.0|-43.16519|-0.1468 +2016-07-01|-79.0|26.0|-44.0312|-0.14816 +2016-07-01|-79.0|27.0|-44.89966|-0.14951 +2016-07-01|-79.0|28.0|-45.77054|-0.15085 +2016-07-01|-79.0|29.0|-46.64384|-0.15218 +2016-07-01|-79.0|30.0|-47.51953|-0.15349 +2016-07-01|-79.0|31.0|-48.3976|-0.15479 +2016-07-01|-79.0|32.0|-49.27804|-0.15608 +2016-07-01|-79.0|33.0|-50.16085|-0.15736 +2016-07-01|-79.0|34.0|-51.046|-0.15862 +2016-07-01|-79.0|35.0|-51.93351|-0.15987 +2016-07-01|-79.0|36.0|-52.82334|-0.1611 +2016-07-01|-79.0|37.0|-53.71551|-0.16232 +2016-07-01|-79.0|38.0|-54.61001|-0.16353 +2016-07-01|-79.0|39.0|-55.50684|-0.16472 +2016-07-01|-79.0|40.0|-56.406|-0.1659 +2016-07-01|-79.0|41.0|-57.30749|-0.16706 +2016-07-01|-79.0|42.0|-58.21131|-0.16821 +2016-07-01|-79.0|43.0|-59.11749|-0.16935 +2016-07-01|-79.0|44.0|-60.02601|-0.17048 +2016-07-01|-79.0|45.0|-60.93691|-0.17159 +2016-07-01|-79.0|46.0|-61.85018|-0.17269 +2016-07-01|-79.0|47.0|-62.76586|-0.17378 +2016-07-01|-79.0|48.0|-63.68396|-0.17485 +2016-07-01|-79.0|49.0|-64.6045|-0.17591 +2016-07-01|-79.0|50.0|-65.52752|-0.17697 +2016-07-01|-79.0|51.0|-66.45304|-0.17801 +2016-07-01|-79.0|52.0|-67.3811|-0.17904 +2016-07-01|-79.0|53.0|-68.31173|-0.18006 +2016-07-01|-79.0|54.0|-69.24497|-0.18107 +2016-07-01|-79.0|55.0|-70.18086|-0.18208 +2016-07-01|-79.0|56.0|-71.11946|-0.18308 +2016-07-01|-79.0|57.0|-72.06081|-0.18407 +2016-07-01|-79.0|58.0|-73.00497|-0.18505 +2016-07-01|-79.0|59.0|-73.95199|-0.18603 +2016-07-01|-79.0|60.0|-74.90194|-0.187 +2016-07-01|-79.0|61.0|-75.85487|-0.18797 +2016-07-01|-79.0|62.0|-76.81087|-0.18893 +2016-07-01|-79.0|63.0|-77.77001|-0.18989 +2016-07-01|-79.0|64.0|-78.73235|-0.19085 +2016-07-01|-79.0|65.0|-79.69798|-0.19181 +2016-07-01|-79.0|66.0|-80.667|-0.19277 +2016-07-01|-79.0|67.0|-81.63948|-0.19373 +2016-07-01|-79.0|68.0|-82.61552|-0.19469 +2016-07-01|-79.0|69.0|-83.59522|-0.19565 +2016-07-01|-79.0|70.0|-84.57868|-0.19661 +2016-07-01|-79.0|71.0|-85.56601|-0.19758 +2016-07-01|-79.0|72.0|-86.55732|-0.19855 +2016-07-01|-79.0|73.0|-87.55272|-0.19953 +2016-07-01|-79.0|74.0|-88.55233|-0.20051 +2016-07-01|-79.0|75.0|-89.55629|-0.2015 +2016-07-01|-79.0|76.0|-90.5647|-0.2025 +2016-07-01|-79.0|77.0|-91.57772|-0.20351 +2016-07-01|-79.0|78.0|-92.59547|-0.20452 +2016-07-01|-79.0|79.0|-93.61811|-0.20555 +2016-07-01|-79.0|80.0|-94.64576|-0.20659 +2016-07-01|-79.0|81.0|-95.67859|-0.20763 +2016-07-01|-79.0|82.0|-96.71675|-0.20869 +2016-07-01|-79.0|83.0|-97.7604|-0.20977 +2016-07-01|-79.0|84.0|-98.80969|-0.21085 +2016-07-01|-79.0|85.0|-99.86481|-0.21195 +2016-07-01|-79.0|86.0|-100.92592|-0.21306 +2016-07-01|-79.0|87.0|-101.9932|-0.21419 +2016-07-01|-79.0|88.0|-103.06682|-0.21533 +2016-07-01|-79.0|89.0|-104.14697|-0.21649 +2016-07-01|-79.0|90.0|-105.23384|-0.21767 +2016-07-01|-79.0|91.0|-106.32762|-0.21886 +2016-07-01|-79.0|92.0|-107.42849|-0.22007 +2016-07-01|-79.0|93.0|-108.53667|-0.22129 +2016-07-01|-79.0|94.0|-109.65235|-0.22253 +2016-07-01|-79.0|95.0|-110.77572|-0.22379 +2016-07-01|-79.0|96.0|-111.90701|-0.22506 +2016-07-01|-79.0|97.0|-113.04641|-0.22635 +2016-07-01|-79.0|98.0|-114.19412|-0.22765 +2016-07-01|-79.0|99.0|-115.35037|-0.22897 +2016-07-01|-79.0|100.0|-116.51537|-0.2303 +2016-07-01|-79.0|101.0|-117.68931|-0.23165 +2016-07-01|-79.0|102.0|-118.87242|-0.23301 +2016-07-01|-79.0|103.0|-120.06491|-0.23438 +2016-07-01|-79.0|104.0|-121.26698|-0.23576 +2016-07-01|-79.0|105.0|-122.47883|-0.23715 +2016-07-01|-79.0|106.0|-123.70069|-0.23855 +2016-07-01|-79.0|107.0|-124.93273|-0.23995 +2016-07-01|-79.0|108.0|-126.17517|-0.24136 +2016-07-01|-79.0|109.0|-127.42818|-0.24277 +2016-07-01|-79.0|110.0|-128.69197|-0.24417 +2016-07-01|-79.0|111.0|-129.96669|-0.24558 +2016-07-01|-79.0|112.0|-131.25253|-0.24698 +2016-07-01|-79.0|113.0|-132.54963|-0.24837 +2016-07-01|-79.0|114.0|-133.85816|-0.24975 +2016-07-01|-79.0|115.0|-135.17824|-0.25111 +2016-07-01|-79.0|116.0|-136.51|-0.25245 +2016-07-01|-79.0|117.0|-137.85354|-0.25377 +2016-07-01|-79.0|118.0|-139.20897|-0.25507 +2016-07-01|-79.0|119.0|-140.57635|-0.25633 +2016-07-01|-79.0|120.0|-141.95573|-0.25756 +2016-07-01|-79.0|121.0|-143.34716|-0.25874 +2016-07-01|-79.0|122.0|-144.75065|-0.25988 +2016-07-01|-79.0|123.0|-146.16618|-0.26097 +2016-07-01|-79.0|124.0|-147.59372|-0.262 +2016-07-01|-79.0|125.0|-149.0332|-0.26297 +2016-07-01|-79.0|126.0|-150.48453|-0.26388 +2016-07-01|-79.0|127.0|-151.94758|-0.26471 +2016-07-01|-79.0|128.0|-153.42221|-0.26546 +2016-07-01|-79.0|129.0|-154.90823|-0.26613 +2016-07-01|-79.0|130.0|-156.40541|-0.26671 +2016-07-01|-79.0|131.0|-157.91351|-0.26719 +2016-07-01|-79.0|132.0|-159.43223|-0.26757 +2016-07-01|-79.0|133.0|-160.96124|-0.26784 +2016-07-01|-79.0|134.0|-162.50018|-0.268 +2016-07-01|-79.0|135.0|-164.04865|-0.26804 +2016-07-01|-79.0|136.0|-165.60621|-0.26796 +2016-07-01|-79.0|137.0|-167.17239|-0.26775 +2016-07-01|-79.0|138.0|-168.74668|-0.26741 +2016-07-01|-79.0|139.0|-170.32852|-0.26694 +2016-07-01|-79.0|140.0|-171.91733|-0.26632 +2016-07-01|-79.0|141.0|-173.51251|-0.26557 +2016-07-01|-79.0|142.0|-175.1134|-0.26467 +2016-07-01|-79.0|143.0|-176.71934|-0.26363 +2016-07-01|-79.0|144.0|-178.32961|-0.26244 +2016-07-01|-79.0|145.0|-179.94349|-0.26111 +2016-07-01|-79.0|146.0|178.43977|-0.25963 +2016-07-01|-79.0|147.0|176.82094|-0.25801 +2016-07-01|-79.0|148.0|175.2008|-0.25625 +2016-07-01|-79.0|149.0|173.58014|-0.25434 +2016-07-01|-79.0|150.0|171.95978|-0.2523 +2016-07-01|-79.0|151.0|170.34051|-0.25013 +2016-07-01|-79.0|152.0|168.72316|-0.24782 +2016-07-01|-79.0|153.0|167.10852|-0.2454 +2016-07-01|-79.0|154.0|165.4974|-0.24286 +2016-07-01|-79.0|155.0|163.89059|-0.2402 +2016-07-01|-79.0|156.0|162.28888|-0.23744 +2016-07-01|-79.0|157.0|160.69301|-0.23459 +2016-07-01|-79.0|158.0|159.10374|-0.23164 +2016-07-01|-79.0|159.0|157.52177|-0.22862 +2016-07-01|-79.0|160.0|155.94782|-0.22552 +2016-07-01|-79.0|161.0|154.38253|-0.22235 +2016-07-01|-79.0|162.0|152.82654|-0.21913 +2016-07-01|-79.0|163.0|151.28046|-0.21586 +2016-07-01|-79.0|164.0|149.74486|-0.21254 +2016-07-01|-79.0|165.0|148.22026|-0.2092 +2016-07-01|-79.0|166.0|146.70715|-0.20583 +2016-07-01|-79.0|167.0|145.20601|-0.20244 +2016-07-01|-79.0|168.0|143.71725|-0.19904 +2016-07-01|-79.0|169.0|142.24125|-0.19565 +2016-07-01|-79.0|170.0|140.77835|-0.19226 +2016-07-01|-79.0|171.0|139.32887|-0.18888 +2016-07-01|-79.0|172.0|137.89307|-0.18552 +2016-07-01|-79.0|173.0|136.47119|-0.18218 +2016-07-01|-79.0|174.0|135.06342|-0.17888 +2016-07-01|-79.0|175.0|133.66993|-0.17561 +2016-07-01|-79.0|176.0|132.29084|-0.17238 +2016-07-01|-79.0|177.0|130.92626|-0.16919 +2016-07-01|-79.0|178.0|129.57626|-0.16606 +2016-07-01|-79.0|179.0|128.24086|-0.16297 +2016-07-01|-79.0|-1.0|-21.54914|-0.11004 +2016-07-01|-79.0|-2.0|-20.75319|-0.1087 +2016-07-01|-79.0|-3.0|-19.9598|-0.10737 +2016-07-01|-79.0|-4.0|-19.16896|-0.10605 +2016-07-01|-79.0|-5.0|-18.38065|-0.10476 +2016-07-01|-79.0|-6.0|-17.59484|-0.10348 +2016-07-01|-79.0|-7.0|-16.8115|-0.10222 +2016-07-01|-79.0|-8.0|-16.03061|-0.10099 +2016-07-01|-79.0|-9.0|-15.25212|-0.09977 +2016-07-01|-79.0|-10.0|-14.476|-0.09858 +2016-07-01|-79.0|-11.0|-13.70221|-0.09741 +2016-07-01|-79.0|-12.0|-12.93072|-0.09626 +2016-07-01|-79.0|-13.0|-12.16148|-0.09514 +2016-07-01|-79.0|-14.0|-11.39444|-0.09404 +2016-07-01|-79.0|-15.0|-10.62956|-0.09297 +2016-07-01|-79.0|-16.0|-9.86679|-0.09193 +2016-07-01|-79.0|-17.0|-9.10608|-0.09091 +2016-07-01|-79.0|-18.0|-8.34736|-0.08993 +2016-07-01|-79.0|-19.0|-7.5906|-0.08897 +2016-07-01|-79.0|-20.0|-6.83573|-0.08804 +2016-07-01|-79.0|-21.0|-6.08269|-0.08714 +2016-07-01|-79.0|-22.0|-5.33143|-0.08626 +2016-07-01|-79.0|-23.0|-4.58188|-0.08542 +2016-07-01|-79.0|-24.0|-3.83398|-0.08461 +2016-07-01|-79.0|-25.0|-3.08767|-0.08383 +2016-07-01|-79.0|-26.0|-2.34288|-0.08308 +2016-07-01|-79.0|-27.0|-1.59955|-0.08236 +2016-07-01|-79.0|-28.0|-0.85761|-0.08167 +2016-07-01|-79.0|-29.0|-0.117|-0.08102 +2016-07-01|-79.0|-30.0|0.62235|-0.08039 +2016-07-01|-79.0|-31.0|1.36051|-0.07979 +2016-07-01|-79.0|-32.0|2.09755|-0.07922 +2016-07-01|-79.0|-33.0|2.83353|-0.07869 +2016-07-01|-79.0|-34.0|3.56852|-0.07818 +2016-07-01|-79.0|-35.0|4.30259|-0.0777 +2016-07-01|-79.0|-36.0|5.03579|-0.07725 +2016-07-01|-79.0|-37.0|5.76821|-0.07683 +2016-07-01|-79.0|-38.0|6.4999|-0.07643 +2016-07-01|-79.0|-39.0|7.23092|-0.07606 +2016-07-01|-79.0|-40.0|7.96135|-0.07572 +2016-07-01|-79.0|-41.0|8.69123|-0.07541 +2016-07-01|-79.0|-42.0|9.42064|-0.07511 +2016-07-01|-79.0|-43.0|10.14964|-0.07485 +2016-07-01|-79.0|-44.0|10.87827|-0.07461 +2016-07-01|-79.0|-45.0|11.6066|-0.07439 +2016-07-01|-79.0|-46.0|12.33468|-0.07419 +2016-07-01|-79.0|-47.0|13.06257|-0.07401 +2016-07-01|-79.0|-48.0|13.79032|-0.07386 +2016-07-01|-79.0|-49.0|14.51798|-0.07372 +2016-07-01|-79.0|-50.0|15.24559|-0.0736 +2016-07-01|-79.0|-51.0|15.97321|-0.07351 +2016-07-01|-79.0|-52.0|16.70087|-0.07342 +2016-07-01|-79.0|-53.0|17.42863|-0.07336 +2016-07-01|-79.0|-54.0|18.15652|-0.07331 +2016-07-01|-79.0|-55.0|18.88457|-0.07327 +2016-07-01|-79.0|-56.0|19.61284|-0.07325 +2016-07-01|-79.0|-57.0|20.34134|-0.07324 +2016-07-01|-79.0|-58.0|21.07013|-0.07325 +2016-07-01|-79.0|-59.0|21.79921|-0.07326 +2016-07-01|-79.0|-60.0|22.52864|-0.07329 +2016-07-01|-79.0|-61.0|23.25843|-0.07332 +2016-07-01|-79.0|-62.0|23.9886|-0.07337 +2016-07-01|-79.0|-63.0|24.71919|-0.07342 +2016-07-01|-79.0|-64.0|25.45022|-0.07348 +2016-07-01|-79.0|-65.0|26.1817|-0.07355 +2016-07-01|-79.0|-66.0|26.91366|-0.07362 +2016-07-01|-79.0|-67.0|27.64612|-0.0737 +2016-07-01|-79.0|-68.0|28.37908|-0.07378 +2016-07-01|-79.0|-69.0|29.11258|-0.07387 +2016-07-01|-79.0|-70.0|29.84661|-0.07396 +2016-07-01|-79.0|-71.0|30.5812|-0.07405 +2016-07-01|-79.0|-72.0|31.31636|-0.07415 +2016-07-01|-79.0|-73.0|32.05209|-0.07425 +2016-07-01|-79.0|-74.0|32.78841|-0.07435 +2016-07-01|-79.0|-75.0|33.52534|-0.07446 +2016-07-01|-79.0|-76.0|34.26288|-0.07456 +2016-07-01|-79.0|-77.0|35.00104|-0.07467 +2016-07-01|-79.0|-78.0|35.73982|-0.07478 +2016-07-01|-79.0|-79.0|36.47925|-0.07488 +2016-07-01|-79.0|-80.0|37.21934|-0.07499 +2016-07-01|-79.0|-81.0|37.96008|-0.0751 +2016-07-01|-79.0|-82.0|38.70149|-0.07521 +2016-07-01|-79.0|-83.0|39.44359|-0.07531 +2016-07-01|-79.0|-84.0|40.18638|-0.07542 +2016-07-01|-79.0|-85.0|40.92988|-0.07553 +2016-07-01|-79.0|-86.0|41.6741|-0.07563 +2016-07-01|-79.0|-87.0|42.41906|-0.07574 +2016-07-01|-79.0|-88.0|43.16478|-0.07585 +2016-07-01|-79.0|-89.0|43.91126|-0.07595 +2016-07-01|-79.0|-90.0|44.65853|-0.07606 +2016-07-01|-79.0|-91.0|45.40662|-0.07617 +2016-07-01|-79.0|-92.0|46.15554|-0.07627 +2016-07-01|-79.0|-93.0|46.90531|-0.07638 +2016-07-01|-79.0|-94.0|47.65597|-0.07649 +2016-07-01|-79.0|-95.0|48.40755|-0.0766 +2016-07-01|-79.0|-96.0|49.16007|-0.07671 +2016-07-01|-79.0|-97.0|49.91357|-0.07682 +2016-07-01|-79.0|-98.0|50.66808|-0.07694 +2016-07-01|-79.0|-99.0|51.42365|-0.07705 +2016-07-01|-79.0|-100.0|52.18031|-0.07717 +2016-07-01|-79.0|-101.0|52.93812|-0.07729 +2016-07-01|-79.0|-102.0|53.69711|-0.07742 +2016-07-01|-79.0|-103.0|54.45734|-0.07755 +2016-07-01|-79.0|-104.0|55.21887|-0.07768 +2016-07-01|-79.0|-105.0|55.98175|-0.07782 +2016-07-01|-79.0|-106.0|56.74603|-0.07796 +2016-07-01|-79.0|-107.0|57.5118|-0.07811 +2016-07-01|-79.0|-108.0|58.27911|-0.07826 +2016-07-01|-79.0|-109.0|59.04803|-0.07842 +2016-07-01|-79.0|-110.0|59.81865|-0.07859 +2016-07-01|-79.0|-111.0|60.59103|-0.07877 +2016-07-01|-79.0|-112.0|61.36527|-0.07895 +2016-07-01|-79.0|-113.0|62.14145|-0.07914 +2016-07-01|-79.0|-114.0|62.91966|-0.07934 +2016-07-01|-79.0|-115.0|63.7|-0.07955 +2016-07-01|-79.0|-116.0|64.48256|-0.07978 +2016-07-01|-79.0|-117.0|65.26746|-0.08001 +2016-07-01|-79.0|-118.0|66.05479|-0.08025 +2016-07-01|-79.0|-119.0|66.84468|-0.08051 +2016-07-01|-79.0|-120.0|67.63723|-0.08078 +2016-07-01|-79.0|-121.0|68.43256|-0.08106 +2016-07-01|-79.0|-122.0|69.23081|-0.08136 +2016-07-01|-79.0|-123.0|70.03211|-0.08168 +2016-07-01|-79.0|-124.0|70.83658|-0.08201 +2016-07-01|-79.0|-125.0|71.64437|-0.08235 +2016-07-01|-79.0|-126.0|72.45561|-0.08272 +2016-07-01|-79.0|-127.0|73.27047|-0.0831 +2016-07-01|-79.0|-128.0|74.08908|-0.08351 +2016-07-01|-79.0|-129.0|74.91161|-0.08393 +2016-07-01|-79.0|-130.0|75.73821|-0.08437 +2016-07-01|-79.0|-131.0|76.56906|-0.08484 +2016-07-01|-79.0|-132.0|77.40433|-0.08533 +2016-07-01|-79.0|-133.0|78.24418|-0.08585 +2016-07-01|-79.0|-134.0|79.0888|-0.08639 +2016-07-01|-79.0|-135.0|79.93838|-0.08695 +2016-07-01|-79.0|-136.0|80.7931|-0.08754 +2016-07-01|-79.0|-137.0|81.65315|-0.08817 +2016-07-01|-79.0|-138.0|82.51873|-0.08882 +2016-07-01|-79.0|-139.0|83.39004|-0.0895 +2016-07-01|-79.0|-140.0|84.26729|-0.09021 +2016-07-01|-79.0|-141.0|85.15069|-0.09096 +2016-07-01|-79.0|-142.0|86.04045|-0.09174 +2016-07-01|-79.0|-143.0|86.9368|-0.09256 +2016-07-01|-79.0|-144.0|87.83994|-0.09341 +2016-07-01|-79.0|-145.0|88.75011|-0.0943 +2016-07-01|-79.0|-146.0|89.66754|-0.09524 +2016-07-01|-79.0|-147.0|90.59246|-0.09621 +2016-07-01|-79.0|-148.0|91.52511|-0.09723 +2016-07-01|-79.0|-149.0|92.46573|-0.09828 +2016-07-01|-79.0|-150.0|93.41455|-0.09939 +2016-07-01|-79.0|-151.0|94.37182|-0.10054 +2016-07-01|-79.0|-152.0|95.3378|-0.10174 +2016-07-01|-79.0|-153.0|96.31273|-0.10299 +2016-07-01|-79.0|-154.0|97.29686|-0.10429 +2016-07-01|-79.0|-155.0|98.29046|-0.10565 +2016-07-01|-79.0|-156.0|99.29376|-0.10705 +2016-07-01|-79.0|-157.0|100.30703|-0.10852 +2016-07-01|-79.0|-158.0|101.33053|-0.11004 +2016-07-01|-79.0|-159.0|102.36452|-0.11162 +2016-07-01|-79.0|-160.0|103.40924|-0.11326 +2016-07-01|-79.0|-161.0|104.46495|-0.11496 +2016-07-01|-79.0|-162.0|105.53191|-0.11672 +2016-07-01|-79.0|-163.0|106.61038|-0.11855 +2016-07-01|-79.0|-164.0|107.70059|-0.12044 +2016-07-01|-79.0|-165.0|108.80279|-0.12239 +2016-07-01|-79.0|-166.0|109.91723|-0.12442 +2016-07-01|-79.0|-167.0|111.04414|-0.12651 +2016-07-01|-79.0|-168.0|112.18375|-0.12867 +2016-07-01|-79.0|-169.0|113.33628|-0.1309 +2016-07-01|-79.0|-170.0|114.50194|-0.1332 +2016-07-01|-79.0|-171.0|115.68095|-0.13557 +2016-07-01|-79.0|-172.0|116.8735|-0.138 +2016-07-01|-79.0|-173.0|118.07976|-0.14051 +2016-07-01|-79.0|-174.0|119.29991|-0.14309 +2016-07-01|-79.0|-175.0|120.53411|-0.14573 +2016-07-01|-79.0|-176.0|121.78249|-0.14845 +2016-07-01|-79.0|-177.0|123.04519|-0.15123 +2016-07-01|-79.0|-178.0|124.3223|-0.15407 +2016-07-01|-79.0|-179.0|125.61391|-0.15698 +2016-07-01|-80.0|0.0|-22.77503|-0.11445 +2016-07-01|-80.0|1.0|-23.58954|-0.11568 +2016-07-01|-80.0|2.0|-24.40643|-0.11693 +2016-07-01|-80.0|3.0|-25.2257|-0.11818 +2016-07-01|-80.0|4.0|-26.04738|-0.11944 +2016-07-01|-80.0|5.0|-26.87147|-0.12071 +2016-07-01|-80.0|6.0|-27.69799|-0.12199 +2016-07-01|-80.0|7.0|-28.52695|-0.12327 +2016-07-01|-80.0|8.0|-29.35834|-0.12456 +2016-07-01|-80.0|9.0|-30.19218|-0.12585 +2016-07-01|-80.0|10.0|-31.02847|-0.12715 +2016-07-01|-80.0|11.0|-31.86721|-0.12845 +2016-07-01|-80.0|12.0|-32.7084|-0.12975 +2016-07-01|-80.0|13.0|-33.55204|-0.13105 +2016-07-01|-80.0|14.0|-34.39814|-0.13236 +2016-07-01|-80.0|15.0|-35.24669|-0.13366 +2016-07-01|-80.0|16.0|-36.09769|-0.13496 +2016-07-01|-80.0|17.0|-36.95112|-0.13626 +2016-07-01|-80.0|18.0|-37.807|-0.13756 +2016-07-01|-80.0|19.0|-38.66532|-0.13886 +2016-07-01|-80.0|20.0|-39.52606|-0.14015 +2016-07-01|-80.0|21.0|-40.38923|-0.14143 +2016-07-01|-80.0|22.0|-41.25481|-0.14271 +2016-07-01|-80.0|23.0|-42.12281|-0.14399 +2016-07-01|-80.0|24.0|-42.99321|-0.14526 +2016-07-01|-80.0|25.0|-43.86601|-0.14652 +2016-07-01|-80.0|26.0|-44.74121|-0.14777 +2016-07-01|-80.0|27.0|-45.61879|-0.14902 +2016-07-01|-80.0|28.0|-46.49876|-0.15026 +2016-07-01|-80.0|29.0|-47.38111|-0.15149 +2016-07-01|-80.0|30.0|-48.26582|-0.15271 +2016-07-01|-80.0|31.0|-49.15291|-0.15392 +2016-07-01|-80.0|32.0|-50.04237|-0.15512 +2016-07-01|-80.0|33.0|-50.93419|-0.15632 +2016-07-01|-80.0|34.0|-51.82838|-0.1575 +2016-07-01|-80.0|35.0|-52.72493|-0.15867 +2016-07-01|-80.0|36.0|-53.62385|-0.15983 +2016-07-01|-80.0|37.0|-54.52514|-0.16099 +2016-07-01|-80.0|38.0|-55.4288|-0.16213 +2016-07-01|-80.0|39.0|-56.33484|-0.16326 +2016-07-01|-80.0|40.0|-57.24328|-0.16438 +2016-07-01|-80.0|41.0|-58.1541|-0.16549 +2016-07-01|-80.0|42.0|-59.06734|-0.16659 +2016-07-01|-80.0|43.0|-59.983|-0.16768 +2016-07-01|-80.0|44.0|-60.90109|-0.16876 +2016-07-01|-80.0|45.0|-61.82164|-0.16983 +2016-07-01|-80.0|46.0|-62.74466|-0.17088 +2016-07-01|-80.0|47.0|-63.67017|-0.17193 +2016-07-01|-80.0|48.0|-64.5982|-0.17297 +2016-07-01|-80.0|49.0|-65.52878|-0.17401 +2016-07-01|-80.0|50.0|-66.46192|-0.17503 +2016-07-01|-80.0|51.0|-67.39767|-0.17604 +2016-07-01|-80.0|52.0|-68.33605|-0.17705 +2016-07-01|-80.0|53.0|-69.27711|-0.17804 +2016-07-01|-80.0|54.0|-70.22087|-0.17904 +2016-07-01|-80.0|55.0|-71.16739|-0.18002 +2016-07-01|-80.0|56.0|-72.1167|-0.181 +2016-07-01|-80.0|57.0|-73.06886|-0.18197 +2016-07-01|-80.0|58.0|-74.02392|-0.18293 +2016-07-01|-80.0|59.0|-74.98192|-0.18389 +2016-07-01|-80.0|60.0|-75.94292|-0.18485 +2016-07-01|-80.0|61.0|-76.90699|-0.1858 +2016-07-01|-80.0|62.0|-77.87418|-0.18675 +2016-07-01|-80.0|63.0|-78.84456|-0.1877 +2016-07-01|-80.0|64.0|-79.8182|-0.18864 +2016-07-01|-80.0|65.0|-80.79517|-0.18958 +2016-07-01|-80.0|66.0|-81.77555|-0.19052 +2016-07-01|-80.0|67.0|-82.75941|-0.19146 +2016-07-01|-80.0|68.0|-83.74683|-0.1924 +2016-07-01|-80.0|69.0|-84.7379|-0.19334 +2016-07-01|-80.0|70.0|-85.73271|-0.19428 +2016-07-01|-80.0|71.0|-86.73135|-0.19522 +2016-07-01|-80.0|72.0|-87.7339|-0.19617 +2016-07-01|-80.0|73.0|-88.74048|-0.19711 +2016-07-01|-80.0|74.0|-89.75118|-0.19806 +2016-07-01|-80.0|75.0|-90.7661|-0.19902 +2016-07-01|-80.0|76.0|-91.78535|-0.19997 +2016-07-01|-80.0|77.0|-92.80904|-0.20094 +2016-07-01|-80.0|78.0|-93.83729|-0.20191 +2016-07-01|-80.0|79.0|-94.87021|-0.20288 +2016-07-01|-80.0|80.0|-95.90792|-0.20386 +2016-07-01|-80.0|81.0|-96.95054|-0.20485 +2016-07-01|-80.0|82.0|-97.9982|-0.20584 +2016-07-01|-80.0|83.0|-99.05103|-0.20684 +2016-07-01|-80.0|84.0|-100.10915|-0.20785 +2016-07-01|-80.0|85.0|-101.17271|-0.20886 +2016-07-01|-80.0|86.0|-102.24183|-0.20989 +2016-07-01|-80.0|87.0|-103.31666|-0.21092 +2016-07-01|-80.0|88.0|-104.39734|-0.21196 +2016-07-01|-80.0|89.0|-105.484|-0.21301 +2016-07-01|-80.0|90.0|-106.5768|-0.21407 +2016-07-01|-80.0|91.0|-107.67588|-0.21514 +2016-07-01|-80.0|92.0|-108.78139|-0.21621 +2016-07-01|-80.0|93.0|-109.89348|-0.21729 +2016-07-01|-80.0|94.0|-111.0123|-0.21839 +2016-07-01|-80.0|95.0|-112.13799|-0.21949 +2016-07-01|-80.0|96.0|-113.27072|-0.22059 +2016-07-01|-80.0|97.0|-114.41063|-0.22171 +2016-07-01|-80.0|98.0|-115.55787|-0.22283 +2016-07-01|-80.0|99.0|-116.7126|-0.22395 +2016-07-01|-80.0|100.0|-117.87496|-0.22509 +2016-07-01|-80.0|101.0|-119.04511|-0.22622 +2016-07-01|-80.0|102.0|-120.22319|-0.22736 +2016-07-01|-80.0|103.0|-121.40935|-0.2285 +2016-07-01|-80.0|104.0|-122.60373|-0.22965 +2016-07-01|-80.0|105.0|-123.80646|-0.23079 +2016-07-01|-80.0|106.0|-125.01768|-0.23193 +2016-07-01|-80.0|107.0|-126.23752|-0.23307 +2016-07-01|-80.0|108.0|-127.46611|-0.2342 +2016-07-01|-80.0|109.0|-128.70357|-0.23533 +2016-07-01|-80.0|110.0|-129.95|-0.23645 +2016-07-01|-80.0|111.0|-131.20551|-0.23756 +2016-07-01|-80.0|112.0|-132.4702|-0.23865 +2016-07-01|-80.0|113.0|-133.74415|-0.23973 +2016-07-01|-80.0|114.0|-135.02745|-0.24079 +2016-07-01|-80.0|115.0|-136.32017|-0.24184 +2016-07-01|-80.0|116.0|-137.62234|-0.24285 +2016-07-01|-80.0|117.0|-138.93403|-0.24385 +2016-07-01|-80.0|118.0|-140.25526|-0.24481 +2016-07-01|-80.0|119.0|-141.58604|-0.24574 +2016-07-01|-80.0|120.0|-142.92637|-0.24664 +2016-07-01|-80.0|121.0|-144.27625|-0.2475 +2016-07-01|-80.0|122.0|-145.63562|-0.24831 +2016-07-01|-80.0|123.0|-147.00446|-0.24908 +2016-07-01|-80.0|124.0|-148.38268|-0.2498 +2016-07-01|-80.0|125.0|-149.77019|-0.25047 +2016-07-01|-80.0|126.0|-151.16688|-0.25107 +2016-07-01|-80.0|127.0|-152.57262|-0.25162 +2016-07-01|-80.0|128.0|-153.98726|-0.25211 +2016-07-01|-80.0|129.0|-155.41062|-0.25252 +2016-07-01|-80.0|130.0|-156.8425|-0.25286 +2016-07-01|-80.0|131.0|-158.28267|-0.25313 +2016-07-01|-80.0|132.0|-159.73089|-0.25332 +2016-07-01|-80.0|133.0|-161.18689|-0.25342 +2016-07-01|-80.0|134.0|-162.65036|-0.25344 +2016-07-01|-80.0|135.0|-164.12099|-0.25337 +2016-07-01|-80.0|136.0|-165.59842|-0.2532 +2016-07-01|-80.0|137.0|-167.0823|-0.25294 +2016-07-01|-80.0|138.0|-168.57223|-0.25258 +2016-07-01|-80.0|139.0|-170.06779|-0.25213 +2016-07-01|-80.0|140.0|-171.56854|-0.25157 +2016-07-01|-80.0|141.0|-173.07403|-0.2509 +2016-07-01|-80.0|142.0|-174.58377|-0.25013 +2016-07-01|-80.0|143.0|-176.09727|-0.24926 +2016-07-01|-80.0|144.0|-177.61401|-0.24828 +2016-07-01|-80.0|145.0|-179.13346|-0.24719 +2016-07-01|-80.0|146.0|179.34493|-0.246 +2016-07-01|-80.0|147.0|177.8217|-0.2447 +2016-07-01|-80.0|148.0|176.29744|-0.2433 +2016-07-01|-80.0|149.0|174.77272|-0.2418 +2016-07-01|-80.0|150.0|173.24812|-0.24019 +2016-07-01|-80.0|151.0|171.72422|-0.23849 +2016-07-01|-80.0|152.0|170.20162|-0.23669 +2016-07-01|-80.0|153.0|168.68091|-0.23479 +2016-07-01|-80.0|154.0|167.16267|-0.23281 +2016-07-01|-80.0|155.0|165.64747|-0.23075 +2016-07-01|-80.0|156.0|164.13591|-0.2286 +2016-07-01|-80.0|157.0|162.62854|-0.22638 +2016-07-01|-80.0|158.0|161.12591|-0.22408 +2016-07-01|-80.0|159.0|159.62858|-0.22172 +2016-07-01|-80.0|160.0|158.13705|-0.21929 +2016-07-01|-80.0|161.0|156.65186|-0.21681 +2016-07-01|-80.0|162.0|155.17348|-0.21428 +2016-07-01|-80.0|163.0|153.70238|-0.2117 +2016-07-01|-80.0|164.0|152.23904|-0.20908 +2016-07-01|-80.0|165.0|150.78386|-0.20643 +2016-07-01|-80.0|166.0|149.33726|-0.20375 +2016-07-01|-80.0|167.0|147.89962|-0.20104 +2016-07-01|-80.0|168.0|146.47131|-0.19832 +2016-07-01|-80.0|169.0|145.05265|-0.19558 +2016-07-01|-80.0|170.0|143.64396|-0.19283 +2016-07-01|-80.0|171.0|142.24552|-0.19008 +2016-07-01|-80.0|172.0|140.85759|-0.18733 +2016-07-01|-80.0|173.0|139.4804|-0.18459 +2016-07-01|-80.0|174.0|138.11417|-0.18185 +2016-07-01|-80.0|175.0|136.75907|-0.17914 +2016-07-01|-80.0|176.0|135.41527|-0.17644 +2016-07-01|-80.0|177.0|134.0829|-0.17376 +2016-07-01|-80.0|178.0|132.76207|-0.17111 +2016-07-01|-80.0|179.0|131.45289|-0.16849 +2016-07-01|-80.0|-1.0|-21.96289|-0.11323 +2016-07-01|-80.0|-2.0|-21.15308|-0.11203 +2016-07-01|-80.0|-3.0|-20.3456|-0.11083 +2016-07-01|-80.0|-4.0|-19.54041|-0.10965 +2016-07-01|-80.0|-5.0|-18.7375|-0.10849 +2016-07-01|-80.0|-6.0|-17.93684|-0.10734 +2016-07-01|-80.0|-7.0|-17.13841|-0.10621 +2016-07-01|-80.0|-8.0|-16.34216|-0.10509 +2016-07-01|-80.0|-9.0|-15.54808|-0.104 +2016-07-01|-80.0|-10.0|-14.75613|-0.10292 +2016-07-01|-80.0|-11.0|-13.96627|-0.10186 +2016-07-01|-80.0|-12.0|-13.17846|-0.10083 +2016-07-01|-80.0|-13.0|-12.39268|-0.09981 +2016-07-01|-80.0|-14.0|-11.60887|-0.09882 +2016-07-01|-80.0|-15.0|-10.82701|-0.09785 +2016-07-01|-80.0|-16.0|-10.04703|-0.0969 +2016-07-01|-80.0|-17.0|-9.26891|-0.09597 +2016-07-01|-80.0|-18.0|-8.49258|-0.09507 +2016-07-01|-80.0|-19.0|-7.71802|-0.09419 +2016-07-01|-80.0|-20.0|-6.94516|-0.09333 +2016-07-01|-80.0|-21.0|-6.17395|-0.0925 +2016-07-01|-80.0|-22.0|-5.40435|-0.0917 +2016-07-01|-80.0|-23.0|-4.6363|-0.09092 +2016-07-01|-80.0|-24.0|-3.86975|-0.09017 +2016-07-01|-80.0|-25.0|-3.10464|-0.08944 +2016-07-01|-80.0|-26.0|-2.34093|-0.08874 +2016-07-01|-80.0|-27.0|-1.57854|-0.08806 +2016-07-01|-80.0|-28.0|-0.81744|-0.08741 +2016-07-01|-80.0|-29.0|-0.05755|-0.08679 +2016-07-01|-80.0|-30.0|0.70117|-0.08619 +2016-07-01|-80.0|-31.0|1.45879|-0.08561 +2016-07-01|-80.0|-32.0|2.21536|-0.08507 +2016-07-01|-80.0|-33.0|2.97093|-0.08454 +2016-07-01|-80.0|-34.0|3.72558|-0.08405 +2016-07-01|-80.0|-35.0|4.47935|-0.08358 +2016-07-01|-80.0|-36.0|5.2323|-0.08313 +2016-07-01|-80.0|-37.0|5.9845|-0.08271 +2016-07-01|-80.0|-38.0|6.73599|-0.08231 +2016-07-01|-80.0|-39.0|7.48683|-0.08193 +2016-07-01|-80.0|-40.0|8.23708|-0.08158 +2016-07-01|-80.0|-41.0|8.98679|-0.08125 +2016-07-01|-80.0|-42.0|9.73602|-0.08094 +2016-07-01|-80.0|-43.0|10.48482|-0.08066 +2016-07-01|-80.0|-44.0|11.23324|-0.08039 +2016-07-01|-80.0|-45.0|11.98133|-0.08015 +2016-07-01|-80.0|-46.0|12.72915|-0.07992 +2016-07-01|-80.0|-47.0|13.47675|-0.07972 +2016-07-01|-80.0|-48.0|14.22416|-0.07954 +2016-07-01|-80.0|-49.0|14.97144|-0.07937 +2016-07-01|-80.0|-50.0|15.71864|-0.07922 +2016-07-01|-80.0|-51.0|16.4658|-0.07909 +2016-07-01|-80.0|-52.0|17.21296|-0.07897 +2016-07-01|-80.0|-53.0|17.96016|-0.07887 +2016-07-01|-80.0|-54.0|18.70745|-0.07879 +2016-07-01|-80.0|-55.0|19.45486|-0.07871 +2016-07-01|-80.0|-56.0|20.20243|-0.07866 +2016-07-01|-80.0|-57.0|20.9502|-0.07861 +2016-07-01|-80.0|-58.0|21.6982|-0.07858 +2016-07-01|-80.0|-59.0|22.44647|-0.07856 +2016-07-01|-80.0|-60.0|23.19505|-0.07856 +2016-07-01|-80.0|-61.0|23.94395|-0.07856 +2016-07-01|-80.0|-62.0|24.69321|-0.07857 +2016-07-01|-80.0|-63.0|25.44287|-0.07859 +2016-07-01|-80.0|-64.0|26.19295|-0.07862 +2016-07-01|-80.0|-65.0|26.94347|-0.07866 +2016-07-01|-80.0|-66.0|27.69446|-0.07871 +2016-07-01|-80.0|-67.0|28.44595|-0.07877 +2016-07-01|-80.0|-68.0|29.19796|-0.07883 +2016-07-01|-80.0|-69.0|29.95051|-0.0789 +2016-07-01|-80.0|-70.0|30.70363|-0.07897 +2016-07-01|-80.0|-71.0|31.45734|-0.07905 +2016-07-01|-80.0|-72.0|32.21166|-0.07914 +2016-07-01|-80.0|-73.0|32.96661|-0.07923 +2016-07-01|-80.0|-74.0|33.72221|-0.07933 +2016-07-01|-80.0|-75.0|34.47848|-0.07943 +2016-07-01|-80.0|-76.0|35.23544|-0.07953 +2016-07-01|-80.0|-77.0|35.99312|-0.07964 +2016-07-01|-80.0|-78.0|36.75152|-0.07975 +2016-07-01|-80.0|-79.0|37.51068|-0.07986 +2016-07-01|-80.0|-80.0|38.2706|-0.07998 +2016-07-01|-80.0|-81.0|39.03132|-0.0801 +2016-07-01|-80.0|-82.0|39.79285|-0.08022 +2016-07-01|-80.0|-83.0|40.55522|-0.08035 +2016-07-01|-80.0|-84.0|41.31844|-0.08048 +2016-07-01|-80.0|-85.0|42.08254|-0.08061 +2016-07-01|-80.0|-86.0|42.84754|-0.08074 +2016-07-01|-80.0|-87.0|43.61347|-0.08088 +2016-07-01|-80.0|-88.0|44.38035|-0.08102 +2016-07-01|-80.0|-89.0|45.14821|-0.08116 +2016-07-01|-80.0|-90.0|45.91709|-0.08131 +2016-07-01|-80.0|-91.0|46.687|-0.08145 +2016-07-01|-80.0|-92.0|47.45797|-0.0816 +2016-07-01|-80.0|-93.0|48.23005|-0.08176 +2016-07-01|-80.0|-94.0|49.00327|-0.08192 +2016-07-01|-80.0|-95.0|49.77766|-0.08208 +2016-07-01|-80.0|-96.0|50.55326|-0.08224 +2016-07-01|-80.0|-97.0|51.33012|-0.08241 +2016-07-01|-80.0|-98.0|52.10827|-0.08258 +2016-07-01|-80.0|-99.0|52.88775|-0.08276 +2016-07-01|-80.0|-100.0|53.66863|-0.08294 +2016-07-01|-80.0|-101.0|54.45093|-0.08313 +2016-07-01|-80.0|-102.0|55.23473|-0.08332 +2016-07-01|-80.0|-103.0|56.02006|-0.08352 +2016-07-01|-80.0|-104.0|56.807|-0.08373 +2016-07-01|-80.0|-105.0|57.59559|-0.08394 +2016-07-01|-80.0|-106.0|58.3859|-0.08416 +2016-07-01|-80.0|-107.0|59.178|-0.08438 +2016-07-01|-80.0|-108.0|59.97195|-0.08462 +2016-07-01|-80.0|-109.0|60.76783|-0.08486 +2016-07-01|-80.0|-110.0|61.56571|-0.08511 +2016-07-01|-80.0|-111.0|62.36567|-0.08537 +2016-07-01|-80.0|-112.0|63.16778|-0.08564 +2016-07-01|-80.0|-113.0|63.97214|-0.08592 +2016-07-01|-80.0|-114.0|64.77882|-0.08621 +2016-07-01|-80.0|-115.0|65.58792|-0.08651 +2016-07-01|-80.0|-116.0|66.39954|-0.08682 +2016-07-01|-80.0|-117.0|67.21377|-0.08715 +2016-07-01|-80.0|-118.0|68.03071|-0.08749 +2016-07-01|-80.0|-119.0|68.85046|-0.08784 +2016-07-01|-80.0|-120.0|69.67313|-0.08821 +2016-07-01|-80.0|-121.0|70.49884|-0.08859 +2016-07-01|-80.0|-122.0|71.3277|-0.08898 +2016-07-01|-80.0|-123.0|72.15982|-0.0894 +2016-07-01|-80.0|-124.0|72.99533|-0.08983 +2016-07-01|-80.0|-125.0|73.83435|-0.09027 +2016-07-01|-80.0|-126.0|74.67701|-0.09074 +2016-07-01|-80.0|-127.0|75.52344|-0.09122 +2016-07-01|-80.0|-128.0|76.37378|-0.09173 +2016-07-01|-80.0|-129.0|77.22816|-0.09225 +2016-07-01|-80.0|-130.0|78.08674|-0.0928 +2016-07-01|-80.0|-131.0|78.94965|-0.09336 +2016-07-01|-80.0|-132.0|79.81704|-0.09395 +2016-07-01|-80.0|-133.0|80.68907|-0.09457 +2016-07-01|-80.0|-134.0|81.56589|-0.09521 +2016-07-01|-80.0|-135.0|82.44766|-0.09587 +2016-07-01|-80.0|-136.0|83.33454|-0.09656 +2016-07-01|-80.0|-137.0|84.2267|-0.09728 +2016-07-01|-80.0|-138.0|85.12431|-0.09802 +2016-07-01|-80.0|-139.0|86.02753|-0.0988 +2016-07-01|-80.0|-140.0|86.93654|-0.0996 +2016-07-01|-80.0|-141.0|87.85152|-0.10044 +2016-07-01|-80.0|-142.0|88.77265|-0.1013 +2016-07-01|-80.0|-143.0|89.7001|-0.1022 +2016-07-01|-80.0|-144.0|90.63407|-0.10313 +2016-07-01|-80.0|-145.0|91.57473|-0.1041 +2016-07-01|-80.0|-146.0|92.52228|-0.10511 +2016-07-01|-80.0|-147.0|93.47691|-0.10615 +2016-07-01|-80.0|-148.0|94.4388|-0.10722 +2016-07-01|-80.0|-149.0|95.40815|-0.10834 +2016-07-01|-80.0|-150.0|96.38515|-0.1095 +2016-07-01|-80.0|-151.0|97.36999|-0.1107 +2016-07-01|-80.0|-152.0|98.36289|-0.11193 +2016-07-01|-80.0|-153.0|99.36401|-0.11322 +2016-07-01|-80.0|-154.0|100.37357|-0.11454 +2016-07-01|-80.0|-155.0|101.39176|-0.11591 +2016-07-01|-80.0|-156.0|102.41877|-0.11732 +2016-07-01|-80.0|-157.0|103.4548|-0.11879 +2016-07-01|-80.0|-158.0|104.50003|-0.12029 +2016-07-01|-80.0|-159.0|105.55466|-0.12185 +2016-07-01|-80.0|-160.0|106.61887|-0.12345 +2016-07-01|-80.0|-161.0|107.69285|-0.1251 +2016-07-01|-80.0|-162.0|108.77677|-0.12681 +2016-07-01|-80.0|-163.0|109.87082|-0.12856 +2016-07-01|-80.0|-164.0|110.97517|-0.13036 +2016-07-01|-80.0|-165.0|112.08997|-0.13221 +2016-07-01|-80.0|-166.0|113.2154|-0.13412 +2016-07-01|-80.0|-167.0|114.3516|-0.13607 +2016-07-01|-80.0|-168.0|115.49872|-0.13808 +2016-07-01|-80.0|-169.0|116.6569|-0.14014 +2016-07-01|-80.0|-170.0|117.82627|-0.14224 +2016-07-01|-80.0|-171.0|119.00695|-0.1444 +2016-07-01|-80.0|-172.0|120.19904|-0.14661 +2016-07-01|-80.0|-173.0|121.40264|-0.14886 +2016-07-01|-80.0|-174.0|122.61783|-0.15116 +2016-07-01|-80.0|-175.0|123.8447|-0.15351 +2016-07-01|-80.0|-176.0|125.08328|-0.15591 +2016-07-01|-80.0|-177.0|126.33363|-0.15834 +2016-07-01|-80.0|-178.0|127.59576|-0.16082 +2016-07-01|-80.0|-179.0|128.8697|-0.16334 +2016-07-01|-81.0|0.0|-23.2474|-0.11762 +2016-07-01|-81.0|1.0|-24.07601|-0.11872 +2016-07-01|-81.0|2.0|-24.90676|-0.11983 +2016-07-01|-81.0|3.0|-25.73968|-0.12094 +2016-07-01|-81.0|4.0|-26.57477|-0.12206 +2016-07-01|-81.0|5.0|-27.41206|-0.1232 +2016-07-01|-81.0|6.0|-28.25155|-0.12433 +2016-07-01|-81.0|7.0|-29.09326|-0.12548 +2016-07-01|-81.0|8.0|-29.9372|-0.12663 +2016-07-01|-81.0|9.0|-30.78338|-0.12779 +2016-07-01|-81.0|10.0|-31.63181|-0.12895 +2016-07-01|-81.0|11.0|-32.4825|-0.13011 +2016-07-01|-81.0|12.0|-33.33545|-0.13127 +2016-07-01|-81.0|13.0|-34.19068|-0.13244 +2016-07-01|-81.0|14.0|-35.04818|-0.13361 +2016-07-01|-81.0|15.0|-35.90796|-0.13478 +2016-07-01|-81.0|16.0|-36.77003|-0.13595 +2016-07-01|-81.0|17.0|-37.63439|-0.13713 +2016-07-01|-81.0|18.0|-38.50104|-0.1383 +2016-07-01|-81.0|19.0|-39.36998|-0.13946 +2016-07-01|-81.0|20.0|-40.24122|-0.14063 +2016-07-01|-81.0|21.0|-41.11477|-0.1418 +2016-07-01|-81.0|22.0|-41.99061|-0.14296 +2016-07-01|-81.0|23.0|-42.86876|-0.14411 +2016-07-01|-81.0|24.0|-43.74922|-0.14527 +2016-07-01|-81.0|25.0|-44.63199|-0.14642 +2016-07-01|-81.0|26.0|-45.51706|-0.14756 +2016-07-01|-81.0|27.0|-46.40445|-0.1487 +2016-07-01|-81.0|28.0|-47.29415|-0.14984 +2016-07-01|-81.0|29.0|-48.18617|-0.15097 +2016-07-01|-81.0|30.0|-49.08051|-0.15209 +2016-07-01|-81.0|31.0|-49.97717|-0.15321 +2016-07-01|-81.0|32.0|-50.87617|-0.15432 +2016-07-01|-81.0|33.0|-51.7775|-0.15542 +2016-07-01|-81.0|34.0|-52.68117|-0.15652 +2016-07-01|-81.0|35.0|-53.58719|-0.1576 +2016-07-01|-81.0|36.0|-54.49556|-0.15869 +2016-07-01|-81.0|37.0|-55.40631|-0.15976 +2016-07-01|-81.0|38.0|-56.31942|-0.16083 +2016-07-01|-81.0|39.0|-57.23493|-0.16188 +2016-07-01|-81.0|40.0|-58.15283|-0.16293 +2016-07-01|-81.0|41.0|-59.07315|-0.16398 +2016-07-01|-81.0|42.0|-59.9959|-0.16501 +2016-07-01|-81.0|43.0|-60.92109|-0.16604 +2016-07-01|-81.0|44.0|-61.84874|-0.16706 +2016-07-01|-81.0|45.0|-62.77888|-0.16807 +2016-07-01|-81.0|46.0|-63.71152|-0.16908 +2016-07-01|-81.0|47.0|-64.64669|-0.17008 +2016-07-01|-81.0|48.0|-65.58441|-0.17107 +2016-07-01|-81.0|49.0|-66.52472|-0.17205 +2016-07-01|-81.0|50.0|-67.46763|-0.17302 +2016-07-01|-81.0|51.0|-68.41318|-0.17399 +2016-07-01|-81.0|52.0|-69.3614|-0.17496 +2016-07-01|-81.0|53.0|-70.31233|-0.17591 +2016-07-01|-81.0|54.0|-71.26601|-0.17686 +2016-07-01|-81.0|55.0|-72.22246|-0.17781 +2016-07-01|-81.0|56.0|-73.18174|-0.17875 +2016-07-01|-81.0|57.0|-74.14388|-0.17968 +2016-07-01|-81.0|58.0|-75.10893|-0.18061 +2016-07-01|-81.0|59.0|-76.07694|-0.18154 +2016-07-01|-81.0|60.0|-77.04796|-0.18246 +2016-07-01|-81.0|61.0|-78.02204|-0.18338 +2016-07-01|-81.0|62.0|-78.99924|-0.18429 +2016-07-01|-81.0|63.0|-79.9796|-0.1852 +2016-07-01|-81.0|64.0|-80.9632|-0.18611 +2016-07-01|-81.0|65.0|-81.95008|-0.18701 +2016-07-01|-81.0|66.0|-82.94032|-0.18792 +2016-07-01|-81.0|67.0|-83.93399|-0.18882 +2016-07-01|-81.0|68.0|-84.93114|-0.18972 +2016-07-01|-81.0|69.0|-85.93185|-0.19062 +2016-07-01|-81.0|70.0|-86.93619|-0.19152 +2016-07-01|-81.0|71.0|-87.94424|-0.19241 +2016-07-01|-81.0|72.0|-88.95608|-0.19331 +2016-07-01|-81.0|73.0|-89.97178|-0.19421 +2016-07-01|-81.0|74.0|-90.99143|-0.19511 +2016-07-01|-81.0|75.0|-92.01511|-0.19601 +2016-07-01|-81.0|76.0|-93.0429|-0.19691 +2016-07-01|-81.0|77.0|-94.07491|-0.19781 +2016-07-01|-81.0|78.0|-95.1112|-0.19872 +2016-07-01|-81.0|79.0|-96.15189|-0.19962 +2016-07-01|-81.0|80.0|-97.19705|-0.20053 +2016-07-01|-81.0|81.0|-98.2468|-0.20144 +2016-07-01|-81.0|82.0|-99.30121|-0.20236 +2016-07-01|-81.0|83.0|-100.36041|-0.20328 +2016-07-01|-81.0|84.0|-101.42448|-0.2042 +2016-07-01|-81.0|85.0|-102.49352|-0.20512 +2016-07-01|-81.0|86.0|-103.56765|-0.20604 +2016-07-01|-81.0|87.0|-104.64696|-0.20697 +2016-07-01|-81.0|88.0|-105.73156|-0.2079 +2016-07-01|-81.0|89.0|-106.82156|-0.20884 +2016-07-01|-81.0|90.0|-107.91707|-0.20978 +2016-07-01|-81.0|91.0|-109.01818|-0.21072 +2016-07-01|-81.0|92.0|-110.12501|-0.21166 +2016-07-01|-81.0|93.0|-111.23767|-0.2126 +2016-07-01|-81.0|94.0|-112.35627|-0.21355 +2016-07-01|-81.0|95.0|-113.4809|-0.2145 +2016-07-01|-81.0|96.0|-114.61168|-0.21545 +2016-07-01|-81.0|97.0|-115.74871|-0.21639 +2016-07-01|-81.0|98.0|-116.8921|-0.21734 +2016-07-01|-81.0|99.0|-118.04195|-0.21829 +2016-07-01|-81.0|100.0|-119.19836|-0.21924 +2016-07-01|-81.0|101.0|-120.36142|-0.22018 +2016-07-01|-81.0|102.0|-121.53124|-0.22112 +2016-07-01|-81.0|103.0|-122.7079|-0.22206 +2016-07-01|-81.0|104.0|-123.8915|-0.22299 +2016-07-01|-81.0|105.0|-125.08212|-0.22391 +2016-07-01|-81.0|106.0|-126.27984|-0.22483 +2016-07-01|-81.0|107.0|-127.48474|-0.22574 +2016-07-01|-81.0|108.0|-128.69689|-0.22664 +2016-07-01|-81.0|109.0|-129.91636|-0.22752 +2016-07-01|-81.0|110.0|-131.14319|-0.2284 +2016-07-01|-81.0|111.0|-132.37746|-0.22926 +2016-07-01|-81.0|112.0|-133.6192|-0.2301 +2016-07-01|-81.0|113.0|-134.86845|-0.23092 +2016-07-01|-81.0|114.0|-136.12524|-0.23173 +2016-07-01|-81.0|115.0|-137.38959|-0.23251 +2016-07-01|-81.0|116.0|-138.66151|-0.23326 +2016-07-01|-81.0|117.0|-139.941|-0.234 +2016-07-01|-81.0|118.0|-141.22806|-0.2347 +2016-07-01|-81.0|119.0|-142.52266|-0.23537 +2016-07-01|-81.0|120.0|-143.82477|-0.23601 +2016-07-01|-81.0|121.0|-145.13434|-0.23661 +2016-07-01|-81.0|122.0|-146.45133|-0.23718 +2016-07-01|-81.0|123.0|-147.77565|-0.2377 +2016-07-01|-81.0|124.0|-149.10722|-0.23818 +2016-07-01|-81.0|125.0|-150.44595|-0.23862 +2016-07-01|-81.0|126.0|-151.79172|-0.23901 +2016-07-01|-81.0|127.0|-153.14441|-0.23935 +2016-07-01|-81.0|128.0|-154.50386|-0.23964 +2016-07-01|-81.0|129.0|-155.86993|-0.23987 +2016-07-01|-81.0|130.0|-157.24243|-0.24005 +2016-07-01|-81.0|131.0|-158.62118|-0.24016 +2016-07-01|-81.0|132.0|-160.00596|-0.24022 +2016-07-01|-81.0|133.0|-161.39657|-0.24021 +2016-07-01|-81.0|134.0|-162.79275|-0.24013 +2016-07-01|-81.0|135.0|-164.19425|-0.23999 +2016-07-01|-81.0|136.0|-165.6008|-0.23977 +2016-07-01|-81.0|137.0|-167.01212|-0.23949 +2016-07-01|-81.0|138.0|-168.4279|-0.23913 +2016-07-01|-81.0|139.0|-169.84783|-0.23869 +2016-07-01|-81.0|140.0|-171.27158|-0.23819 +2016-07-01|-81.0|141.0|-172.6988|-0.2376 +2016-07-01|-81.0|142.0|-174.12913|-0.23694 +2016-07-01|-81.0|143.0|-175.56222|-0.2362 +2016-07-01|-81.0|144.0|-176.99768|-0.23538 +2016-07-01|-81.0|145.0|-178.43512|-0.23449 +2016-07-01|-81.0|146.0|-179.87415|-0.23352 +2016-07-01|-81.0|147.0|178.68565|-0.23247 +2016-07-01|-81.0|148.0|177.24469|-0.23134 +2016-07-01|-81.0|149.0|175.80338|-0.23014 +2016-07-01|-81.0|150.0|174.36214|-0.22887 +2016-07-01|-81.0|151.0|172.92141|-0.22752 +2016-07-01|-81.0|152.0|171.48162|-0.2261 +2016-07-01|-81.0|153.0|170.04318|-0.22462 +2016-07-01|-81.0|154.0|168.60653|-0.22306 +2016-07-01|-81.0|155.0|167.17209|-0.22144 +2016-07-01|-81.0|156.0|165.74028|-0.21976 +2016-07-01|-81.0|157.0|164.31152|-0.21802 +2016-07-01|-81.0|158.0|162.88622|-0.21623 +2016-07-01|-81.0|159.0|161.46479|-0.21438 +2016-07-01|-81.0|160.0|160.04761|-0.21248 +2016-07-01|-81.0|161.0|158.63508|-0.21054 +2016-07-01|-81.0|162.0|157.22757|-0.20855 +2016-07-01|-81.0|163.0|155.82543|-0.20652 +2016-07-01|-81.0|164.0|154.42903|-0.20446 +2016-07-01|-81.0|165.0|153.03869|-0.20236 +2016-07-01|-81.0|166.0|151.65475|-0.20024 +2016-07-01|-81.0|167.0|150.2775|-0.19809 +2016-07-01|-81.0|168.0|148.90725|-0.19591 +2016-07-01|-81.0|169.0|147.54426|-0.19372 +2016-07-01|-81.0|170.0|146.18881|-0.19152 +2016-07-01|-81.0|171.0|144.84113|-0.1893 +2016-07-01|-81.0|172.0|143.50145|-0.18708 +2016-07-01|-81.0|173.0|142.16999|-0.18485 +2016-07-01|-81.0|174.0|140.84693|-0.18263 +2016-07-01|-81.0|175.0|139.53246|-0.1804 +2016-07-01|-81.0|176.0|138.22674|-0.17818 +2016-07-01|-81.0|177.0|136.92991|-0.17597 +2016-07-01|-81.0|178.0|135.64209|-0.17377 +2016-07-01|-81.0|179.0|134.36341|-0.17158 +2016-07-01|-81.0|-1.0|-22.42092|-0.11654 +2016-07-01|-81.0|-2.0|-21.59655|-0.11546 +2016-07-01|-81.0|-3.0|-20.77427|-0.1144 +2016-07-01|-81.0|-4.0|-19.95404|-0.11335 +2016-07-01|-81.0|-5.0|-19.13586|-0.11231 +2016-07-01|-81.0|-6.0|-18.31969|-0.11128 +2016-07-01|-81.0|-7.0|-17.50551|-0.11027 +2016-07-01|-81.0|-8.0|-16.69329|-0.10928 +2016-07-01|-81.0|-9.0|-15.883|-0.1083 +2016-07-01|-81.0|-10.0|-15.07461|-0.10733 +2016-07-01|-81.0|-11.0|-14.26808|-0.10639 +2016-07-01|-81.0|-12.0|-13.46339|-0.10546 +2016-07-01|-81.0|-13.0|-12.66051|-0.10455 +2016-07-01|-81.0|-14.0|-11.85938|-0.10365 +2016-07-01|-81.0|-15.0|-11.05999|-0.10278 +2016-07-01|-81.0|-16.0|-10.26228|-0.10192 +2016-07-01|-81.0|-17.0|-9.46622|-0.10108 +2016-07-01|-81.0|-18.0|-8.67177|-0.10026 +2016-07-01|-81.0|-19.0|-7.87889|-0.09947 +2016-07-01|-81.0|-20.0|-7.08753|-0.09869 +2016-07-01|-81.0|-21.0|-6.29765|-0.09793 +2016-07-01|-81.0|-22.0|-5.50921|-0.0972 +2016-07-01|-81.0|-23.0|-4.72217|-0.09648 +2016-07-01|-81.0|-24.0|-3.93646|-0.09579 +2016-07-01|-81.0|-25.0|-3.15206|-0.09512 +2016-07-01|-81.0|-26.0|-2.36891|-0.09447 +2016-07-01|-81.0|-27.0|-1.58696|-0.09384 +2016-07-01|-81.0|-28.0|-0.80617|-0.09324 +2016-07-01|-81.0|-29.0|-0.02648|-0.09265 +2016-07-01|-81.0|-30.0|0.75215|-0.09209 +2016-07-01|-81.0|-31.0|1.52977|-0.09155 +2016-07-01|-81.0|-32.0|2.30644|-0.09103 +2016-07-01|-81.0|-33.0|3.0822|-0.09053 +2016-07-01|-81.0|-34.0|3.8571|-0.09006 +2016-07-01|-81.0|-35.0|4.63119|-0.0896 +2016-07-01|-81.0|-36.0|5.40452|-0.08917 +2016-07-01|-81.0|-37.0|6.17715|-0.08875 +2016-07-01|-81.0|-38.0|6.94911|-0.08836 +2016-07-01|-81.0|-39.0|7.72047|-0.08799 +2016-07-01|-81.0|-40.0|8.49127|-0.08764 +2016-07-01|-81.0|-41.0|9.26155|-0.08731 +2016-07-01|-81.0|-42.0|10.03137|-0.08699 +2016-07-01|-81.0|-43.0|10.80077|-0.0867 +2016-07-01|-81.0|-44.0|11.56981|-0.08642 +2016-07-01|-81.0|-45.0|12.33852|-0.08617 +2016-07-01|-81.0|-46.0|13.10696|-0.08593 +2016-07-01|-81.0|-47.0|13.87516|-0.08571 +2016-07-01|-81.0|-48.0|14.64318|-0.0855 +2016-07-01|-81.0|-49.0|15.41106|-0.08532 +2016-07-01|-81.0|-50.0|16.17883|-0.08515 +2016-07-01|-81.0|-51.0|16.94655|-0.08499 +2016-07-01|-81.0|-52.0|17.71425|-0.08485 +2016-07-01|-81.0|-53.0|18.48197|-0.08473 +2016-07-01|-81.0|-54.0|19.24976|-0.08462 +2016-07-01|-81.0|-55.0|20.01765|-0.08452 +2016-07-01|-81.0|-56.0|20.78569|-0.08444 +2016-07-01|-81.0|-57.0|21.5539|-0.08437 +2016-07-01|-81.0|-58.0|22.32232|-0.08431 +2016-07-01|-81.0|-59.0|23.09099|-0.08427 +2016-07-01|-81.0|-60.0|23.85995|-0.08423 +2016-07-01|-81.0|-61.0|24.62923|-0.08421 +2016-07-01|-81.0|-62.0|25.39886|-0.0842 +2016-07-01|-81.0|-63.0|26.16887|-0.0842 +2016-07-01|-81.0|-64.0|26.9393|-0.08421 +2016-07-01|-81.0|-65.0|27.71017|-0.08423 +2016-07-01|-81.0|-66.0|28.48152|-0.08425 +2016-07-01|-81.0|-67.0|29.25338|-0.08429 +2016-07-01|-81.0|-68.0|30.02577|-0.08434 +2016-07-01|-81.0|-69.0|30.79873|-0.08439 +2016-07-01|-81.0|-70.0|31.57228|-0.08445 +2016-07-01|-81.0|-71.0|32.34646|-0.08452 +2016-07-01|-81.0|-72.0|33.12128|-0.08459 +2016-07-01|-81.0|-73.0|33.89678|-0.08467 +2016-07-01|-81.0|-74.0|34.67298|-0.08476 +2016-07-01|-81.0|-75.0|35.44992|-0.08486 +2016-07-01|-81.0|-76.0|36.22761|-0.08496 +2016-07-01|-81.0|-77.0|37.00609|-0.08507 +2016-07-01|-81.0|-78.0|37.78538|-0.08518 +2016-07-01|-81.0|-79.0|38.56551|-0.0853 +2016-07-01|-81.0|-80.0|39.3465|-0.08542 +2016-07-01|-81.0|-81.0|40.1284|-0.08555 +2016-07-01|-81.0|-82.0|40.91121|-0.08568 +2016-07-01|-81.0|-83.0|41.69498|-0.08582 +2016-07-01|-81.0|-84.0|42.47973|-0.08597 +2016-07-01|-81.0|-85.0|43.2655|-0.08612 +2016-07-01|-81.0|-86.0|44.05231|-0.08627 +2016-07-01|-81.0|-87.0|44.84019|-0.08643 +2016-07-01|-81.0|-88.0|45.62919|-0.0866 +2016-07-01|-81.0|-89.0|46.41932|-0.08677 +2016-07-01|-81.0|-90.0|47.21063|-0.08694 +2016-07-01|-81.0|-91.0|48.00316|-0.08712 +2016-07-01|-81.0|-92.0|48.79693|-0.08731 +2016-07-01|-81.0|-93.0|49.592|-0.0875 +2016-07-01|-81.0|-94.0|50.38839|-0.08769 +2016-07-01|-81.0|-95.0|51.18615|-0.08789 +2016-07-01|-81.0|-96.0|51.98532|-0.0881 +2016-07-01|-81.0|-97.0|52.78595|-0.08832 +2016-07-01|-81.0|-98.0|53.58808|-0.08854 +2016-07-01|-81.0|-99.0|54.39177|-0.08876 +2016-07-01|-81.0|-100.0|55.19705|-0.08899 +2016-07-01|-81.0|-101.0|56.00399|-0.08923 +2016-07-01|-81.0|-102.0|56.81263|-0.08948 +2016-07-01|-81.0|-103.0|57.62303|-0.08974 +2016-07-01|-81.0|-104.0|58.43525|-0.09 +2016-07-01|-81.0|-105.0|59.24936|-0.09027 +2016-07-01|-81.0|-106.0|60.0654|-0.09055 +2016-07-01|-81.0|-107.0|60.88344|-0.09084 +2016-07-01|-81.0|-108.0|61.70356|-0.09113 +2016-07-01|-81.0|-109.0|62.52582|-0.09144 +2016-07-01|-81.0|-110.0|63.35029|-0.09176 +2016-07-01|-81.0|-111.0|64.17705|-0.09208 +2016-07-01|-81.0|-112.0|65.00616|-0.09242 +2016-07-01|-81.0|-113.0|65.83772|-0.09277 +2016-07-01|-81.0|-114.0|66.67179|-0.09313 +2016-07-01|-81.0|-115.0|67.50847|-0.0935 +2016-07-01|-81.0|-116.0|68.34784|-0.09389 +2016-07-01|-81.0|-117.0|69.18999|-0.09428 +2016-07-01|-81.0|-118.0|70.035|-0.0947 +2016-07-01|-81.0|-119.0|70.88298|-0.09512 +2016-07-01|-81.0|-120.0|71.73402|-0.09556 +2016-07-01|-81.0|-121.0|72.58822|-0.09602 +2016-07-01|-81.0|-122.0|73.44568|-0.09649 +2016-07-01|-81.0|-123.0|74.3065|-0.09697 +2016-07-01|-81.0|-124.0|75.1708|-0.09747 +2016-07-01|-81.0|-125.0|76.03867|-0.09799 +2016-07-01|-81.0|-126.0|76.91023|-0.09853 +2016-07-01|-81.0|-127.0|77.7856|-0.09909 +2016-07-01|-81.0|-128.0|78.66489|-0.09966 +2016-07-01|-81.0|-129.0|79.54822|-0.10026 +2016-07-01|-81.0|-130.0|80.43572|-0.10087 +2016-07-01|-81.0|-131.0|81.3275|-0.10151 +2016-07-01|-81.0|-132.0|82.22369|-0.10217 +2016-07-01|-81.0|-133.0|83.12443|-0.10284 +2016-07-01|-81.0|-134.0|84.02983|-0.10355 +2016-07-01|-81.0|-135.0|84.94004|-0.10427 +2016-07-01|-81.0|-136.0|85.85518|-0.10502 +2016-07-01|-81.0|-137.0|86.77539|-0.10579 +2016-07-01|-81.0|-138.0|87.70082|-0.10659 +2016-07-01|-81.0|-139.0|88.6316|-0.10742 +2016-07-01|-81.0|-140.0|89.56787|-0.10827 +2016-07-01|-81.0|-141.0|90.50977|-0.10915 +2016-07-01|-81.0|-142.0|91.45745|-0.11006 +2016-07-01|-81.0|-143.0|92.41105|-0.11099 +2016-07-01|-81.0|-144.0|93.37071|-0.11196 +2016-07-01|-81.0|-145.0|94.3366|-0.11295 +2016-07-01|-81.0|-146.0|95.30884|-0.11398 +2016-07-01|-81.0|-147.0|96.28759|-0.11504 +2016-07-01|-81.0|-148.0|97.27299|-0.11613 +2016-07-01|-81.0|-149.0|98.2652|-0.11725 +2016-07-01|-81.0|-150.0|99.26435|-0.1184 +2016-07-01|-81.0|-151.0|100.27061|-0.11959 +2016-07-01|-81.0|-152.0|101.2841|-0.12081 +2016-07-01|-81.0|-153.0|102.30498|-0.12207 +2016-07-01|-81.0|-154.0|103.33339|-0.12336 +2016-07-01|-81.0|-155.0|104.36946|-0.12469 +2016-07-01|-81.0|-156.0|105.41335|-0.12605 +2016-07-01|-81.0|-157.0|106.46519|-0.12745 +2016-07-01|-81.0|-158.0|107.5251|-0.12889 +2016-07-01|-81.0|-159.0|108.59322|-0.13036 +2016-07-01|-81.0|-160.0|109.66969|-0.13187 +2016-07-01|-81.0|-161.0|110.75461|-0.13342 +2016-07-01|-81.0|-162.0|111.84811|-0.13501 +2016-07-01|-81.0|-163.0|112.95031|-0.13663 +2016-07-01|-81.0|-164.0|114.06131|-0.13829 +2016-07-01|-81.0|-165.0|115.18122|-0.13998 +2016-07-01|-81.0|-166.0|116.31012|-0.14172 +2016-07-01|-81.0|-167.0|117.44812|-0.14348 +2016-07-01|-81.0|-168.0|118.59528|-0.14529 +2016-07-01|-81.0|-169.0|119.7517|-0.14713 +2016-07-01|-81.0|-170.0|120.91742|-0.149 +2016-07-01|-81.0|-171.0|122.09252|-0.15091 +2016-07-01|-81.0|-172.0|123.27702|-0.15285 +2016-07-01|-81.0|-173.0|124.47098|-0.15483 +2016-07-01|-81.0|-174.0|125.67441|-0.15683 +2016-07-01|-81.0|-175.0|126.88734|-0.15886 +2016-07-01|-81.0|-176.0|128.10976|-0.16092 +2016-07-01|-81.0|-177.0|129.34166|-0.16301 +2016-07-01|-81.0|-178.0|130.58301|-0.16512 +2016-07-01|-81.0|-179.0|131.8338|-0.16725 +2016-07-01|-82.0|0.0|-23.76822|-0.12091 +2016-07-01|-82.0|1.0|-24.61174|-0.12187 +2016-07-01|-82.0|2.0|-25.45718|-0.12285 +2016-07-01|-82.0|3.0|-26.30457|-0.12383 +2016-07-01|-82.0|4.0|-27.15392|-0.12483 +2016-07-01|-82.0|5.0|-28.00524|-0.12582 +2016-07-01|-82.0|6.0|-28.85857|-0.12683 +2016-07-01|-82.0|7.0|-29.7139|-0.12784 +2016-07-01|-82.0|8.0|-30.57126|-0.12886 +2016-07-01|-82.0|9.0|-31.43066|-0.12988 +2016-07-01|-82.0|10.0|-32.29211|-0.13091 +2016-07-01|-82.0|11.0|-33.15563|-0.13194 +2016-07-01|-82.0|12.0|-34.02122|-0.13297 +2016-07-01|-82.0|13.0|-34.8889|-0.13401 +2016-07-01|-82.0|14.0|-35.75868|-0.13505 +2016-07-01|-82.0|15.0|-36.63057|-0.13609 +2016-07-01|-82.0|16.0|-37.50458|-0.13713 +2016-07-01|-82.0|17.0|-38.38071|-0.13817 +2016-07-01|-82.0|18.0|-39.25898|-0.13922 +2016-07-01|-82.0|19.0|-40.1394|-0.14026 +2016-07-01|-82.0|20.0|-41.02197|-0.1413 +2016-07-01|-82.0|21.0|-41.9067|-0.14234 +2016-07-01|-82.0|22.0|-42.7936|-0.14339 +2016-07-01|-82.0|23.0|-43.68268|-0.14443 +2016-07-01|-82.0|24.0|-44.57395|-0.14546 +2016-07-01|-82.0|25.0|-45.46741|-0.1465 +2016-07-01|-82.0|26.0|-46.36308|-0.14753 +2016-07-01|-82.0|27.0|-47.26095|-0.14856 +2016-07-01|-82.0|28.0|-48.16104|-0.14959 +2016-07-01|-82.0|29.0|-49.06336|-0.15061 +2016-07-01|-82.0|30.0|-49.96792|-0.15163 +2016-07-01|-82.0|31.0|-50.87473|-0.15265 +2016-07-01|-82.0|32.0|-51.78379|-0.15366 +2016-07-01|-82.0|33.0|-52.69512|-0.15466 +2016-07-01|-82.0|34.0|-53.60873|-0.15566 +2016-07-01|-82.0|35.0|-54.52463|-0.15666 +2016-07-01|-82.0|36.0|-55.44283|-0.15765 +2016-07-01|-82.0|37.0|-56.36335|-0.15864 +2016-07-01|-82.0|38.0|-57.2862|-0.15962 +2016-07-01|-82.0|39.0|-58.21139|-0.1606 +2016-07-01|-82.0|40.0|-59.13895|-0.16157 +2016-07-01|-82.0|41.0|-60.06888|-0.16253 +2016-07-01|-82.0|42.0|-61.00121|-0.16349 +2016-07-01|-82.0|43.0|-61.93596|-0.16444 +2016-07-01|-82.0|44.0|-62.87314|-0.16539 +2016-07-01|-82.0|45.0|-63.81278|-0.16633 +2016-07-01|-82.0|46.0|-64.7549|-0.16727 +2016-07-01|-82.0|47.0|-65.69952|-0.1682 +2016-07-01|-82.0|48.0|-66.64666|-0.16913 +2016-07-01|-82.0|49.0|-67.59637|-0.17005 +2016-07-01|-82.0|50.0|-68.54865|-0.17096 +2016-07-01|-82.0|51.0|-69.50354|-0.17187 +2016-07-01|-82.0|52.0|-70.46108|-0.17278 +2016-07-01|-82.0|53.0|-71.42128|-0.17368 +2016-07-01|-82.0|54.0|-72.3842|-0.17457 +2016-07-01|-82.0|55.0|-73.34985|-0.17546 +2016-07-01|-82.0|56.0|-74.31829|-0.17634 +2016-07-01|-82.0|57.0|-75.28953|-0.17722 +2016-07-01|-82.0|58.0|-76.26364|-0.1781 +2016-07-01|-82.0|59.0|-77.24064|-0.17897 +2016-07-01|-82.0|60.0|-78.22057|-0.17984 +2016-07-01|-82.0|61.0|-79.2035|-0.1807 +2016-07-01|-82.0|62.0|-80.18945|-0.18157 +2016-07-01|-82.0|63.0|-81.17847|-0.18242 +2016-07-01|-82.0|64.0|-82.17062|-0.18328 +2016-07-01|-82.0|65.0|-83.16595|-0.18413 +2016-07-01|-82.0|66.0|-84.16451|-0.18498 +2016-07-01|-82.0|67.0|-85.16634|-0.18582 +2016-07-01|-82.0|68.0|-86.17152|-0.18666 +2016-07-01|-82.0|69.0|-87.18008|-0.18751 +2016-07-01|-82.0|70.0|-88.1921|-0.18834 +2016-07-01|-82.0|71.0|-89.20763|-0.18918 +2016-07-01|-82.0|72.0|-90.22674|-0.19002 +2016-07-01|-82.0|73.0|-91.24947|-0.19085 +2016-07-01|-82.0|74.0|-92.27591|-0.19168 +2016-07-01|-82.0|75.0|-93.30611|-0.19251 +2016-07-01|-82.0|76.0|-94.34014|-0.19334 +2016-07-01|-82.0|77.0|-95.37807|-0.19417 +2016-07-01|-82.0|78.0|-96.41996|-0.195 +2016-07-01|-82.0|79.0|-97.46589|-0.19583 +2016-07-01|-82.0|80.0|-98.51593|-0.19665 +2016-07-01|-82.0|81.0|-99.57014|-0.19748 +2016-07-01|-82.0|82.0|-100.6286|-0.1983 +2016-07-01|-82.0|83.0|-101.69139|-0.19912 +2016-07-01|-82.0|84.0|-102.75857|-0.19995 +2016-07-01|-82.0|85.0|-103.83023|-0.20077 +2016-07-01|-82.0|86.0|-104.90643|-0.20159 +2016-07-01|-82.0|87.0|-105.98724|-0.20241 +2016-07-01|-82.0|88.0|-107.07275|-0.20323 +2016-07-01|-82.0|89.0|-108.16303|-0.20404 +2016-07-01|-82.0|90.0|-109.25815|-0.20486 +2016-07-01|-82.0|91.0|-110.35819|-0.20567 +2016-07-01|-82.0|92.0|-111.46322|-0.20648 +2016-07-01|-82.0|93.0|-112.57331|-0.20729 +2016-07-01|-82.0|94.0|-113.68853|-0.2081 +2016-07-01|-82.0|95.0|-114.80896|-0.2089 +2016-07-01|-82.0|96.0|-115.93466|-0.2097 +2016-07-01|-82.0|97.0|-117.06569|-0.21049 +2016-07-01|-82.0|98.0|-118.20214|-0.21128 +2016-07-01|-82.0|99.0|-119.34406|-0.21206 +2016-07-01|-82.0|100.0|-120.4915|-0.21284 +2016-07-01|-82.0|101.0|-121.64454|-0.21361 +2016-07-01|-82.0|102.0|-122.80322|-0.21437 +2016-07-01|-82.0|103.0|-123.9676|-0.21513 +2016-07-01|-82.0|104.0|-125.13773|-0.21587 +2016-07-01|-82.0|105.0|-126.31366|-0.21661 +2016-07-01|-82.0|106.0|-127.49542|-0.21733 +2016-07-01|-82.0|107.0|-128.68305|-0.21804 +2016-07-01|-82.0|108.0|-129.87658|-0.21874 +2016-07-01|-82.0|109.0|-131.07605|-0.21943 +2016-07-01|-82.0|110.0|-132.28148|-0.2201 +2016-07-01|-82.0|111.0|-133.49288|-0.22075 +2016-07-01|-82.0|112.0|-134.71026|-0.22138 +2016-07-01|-82.0|113.0|-135.93363|-0.222 +2016-07-01|-82.0|114.0|-137.16299|-0.22259 +2016-07-01|-82.0|115.0|-138.39833|-0.22316 +2016-07-01|-82.0|116.0|-139.63962|-0.22371 +2016-07-01|-82.0|117.0|-140.88685|-0.22424 +2016-07-01|-82.0|118.0|-142.13999|-0.22474 +2016-07-01|-82.0|119.0|-143.39899|-0.22521 +2016-07-01|-82.0|120.0|-144.66381|-0.22565 +2016-07-01|-82.0|121.0|-145.93438|-0.22606 +2016-07-01|-82.0|122.0|-147.21065|-0.22643 +2016-07-01|-82.0|123.0|-148.49252|-0.22678 +2016-07-01|-82.0|124.0|-149.77993|-0.22708 +2016-07-01|-82.0|125.0|-151.07277|-0.22735 +2016-07-01|-82.0|126.0|-152.37093|-0.22758 +2016-07-01|-82.0|127.0|-153.67431|-0.22777 +2016-07-01|-82.0|128.0|-154.98276|-0.22792 +2016-07-01|-82.0|129.0|-156.29617|-0.22802 +2016-07-01|-82.0|130.0|-157.61437|-0.22808 +2016-07-01|-82.0|131.0|-158.93721|-0.2281 +2016-07-01|-82.0|132.0|-160.26452|-0.22806 +2016-07-01|-82.0|133.0|-161.59613|-0.22798 +2016-07-01|-82.0|134.0|-162.93183|-0.22784 +2016-07-01|-82.0|135.0|-164.27144|-0.22766 +2016-07-01|-82.0|136.0|-165.61474|-0.22742 +2016-07-01|-82.0|137.0|-166.96151|-0.22713 +2016-07-01|-82.0|138.0|-168.31153|-0.22678 +2016-07-01|-82.0|139.0|-169.66454|-0.22638 +2016-07-01|-82.0|140.0|-171.02032|-0.22592 +2016-07-01|-82.0|141.0|-172.37859|-0.22541 +2016-07-01|-82.0|142.0|-173.73911|-0.22484 +2016-07-01|-82.0|143.0|-175.10158|-0.22422 +2016-07-01|-82.0|144.0|-176.46575|-0.22353 +2016-07-01|-82.0|145.0|-177.83131|-0.22279 +2016-07-01|-82.0|146.0|-179.19799|-0.222 +2016-07-01|-82.0|147.0|179.43452|-0.22115 +2016-07-01|-82.0|148.0|178.06651|-0.22024 +2016-07-01|-82.0|149.0|176.69828|-0.21928 +2016-07-01|-82.0|150.0|175.33015|-0.21826 +2016-07-01|-82.0|151.0|173.96242|-0.21719 +2016-07-01|-82.0|152.0|172.5954|-0.21607 +2016-07-01|-82.0|153.0|171.2294|-0.21489 +2016-07-01|-82.0|154.0|169.86473|-0.21367 +2016-07-01|-82.0|155.0|168.50171|-0.2124 +2016-07-01|-82.0|156.0|167.14062|-0.21108 +2016-07-01|-82.0|157.0|165.78179|-0.20972 +2016-07-01|-82.0|158.0|164.42551|-0.20831 +2016-07-01|-82.0|159.0|163.07207|-0.20686 +2016-07-01|-82.0|160.0|161.72178|-0.20538 +2016-07-01|-82.0|161.0|160.37491|-0.20385 +2016-07-01|-82.0|162.0|159.03175|-0.20229 +2016-07-01|-82.0|163.0|157.69256|-0.2007 +2016-07-01|-82.0|164.0|156.35762|-0.19908 +2016-07-01|-82.0|165.0|155.02719|-0.19743 +2016-07-01|-82.0|166.0|153.7015|-0.19576 +2016-07-01|-82.0|167.0|152.3808|-0.19406 +2016-07-01|-82.0|168.0|151.06533|-0.19234 +2016-07-01|-82.0|169.0|149.7553|-0.19061 +2016-07-01|-82.0|170.0|148.45092|-0.18885 +2016-07-01|-82.0|171.0|147.1524|-0.18709 +2016-07-01|-82.0|172.0|145.85992|-0.18531 +2016-07-01|-82.0|173.0|144.57366|-0.18352 +2016-07-01|-82.0|174.0|143.29378|-0.18173 +2016-07-01|-82.0|175.0|142.02046|-0.17993 +2016-07-01|-82.0|176.0|140.75382|-0.17813 +2016-07-01|-82.0|177.0|139.494|-0.17633 +2016-07-01|-82.0|178.0|138.24114|-0.17453 +2016-07-01|-82.0|179.0|136.99533|-0.17274 +2016-07-01|-82.0|-1.0|-22.92661|-0.11995 +2016-07-01|-82.0|-2.0|-22.08689|-0.119 +2016-07-01|-82.0|-3.0|-21.24903|-0.11806 +2016-07-01|-82.0|-4.0|-20.413|-0.11713 +2016-07-01|-82.0|-5.0|-19.5788|-0.11622 +2016-07-01|-82.0|-6.0|-18.74639|-0.11531 +2016-07-01|-82.0|-7.0|-17.91574|-0.11442 +2016-07-01|-82.0|-8.0|-17.08683|-0.11354 +2016-07-01|-82.0|-9.0|-16.25964|-0.11267 +2016-07-01|-82.0|-10.0|-15.43413|-0.11182 +2016-07-01|-82.0|-11.0|-14.61027|-0.11098 +2016-07-01|-82.0|-12.0|-13.78804|-0.11015 +2016-07-01|-82.0|-13.0|-12.9674|-0.10934 +2016-07-01|-82.0|-14.0|-12.14832|-0.10855 +2016-07-01|-82.0|-15.0|-11.33077|-0.10777 +2016-07-01|-82.0|-16.0|-10.51471|-0.107 +2016-07-01|-82.0|-17.0|-9.70011|-0.10626 +2016-07-01|-82.0|-18.0|-8.88693|-0.10552 +2016-07-01|-82.0|-19.0|-8.07513|-0.10481 +2016-07-01|-82.0|-20.0|-7.26469|-0.10411 +2016-07-01|-82.0|-21.0|-6.45555|-0.10343 +2016-07-01|-82.0|-22.0|-5.64769|-0.10277 +2016-07-01|-82.0|-23.0|-4.84106|-0.10212 +2016-07-01|-82.0|-24.0|-4.03562|-0.10149 +2016-07-01|-82.0|-25.0|-3.23133|-0.10088 +2016-07-01|-82.0|-26.0|-2.42815|-0.10029 +2016-07-01|-82.0|-27.0|-1.62604|-0.09971 +2016-07-01|-82.0|-28.0|-0.82496|-0.09916 +2016-07-01|-82.0|-29.0|-0.02487|-0.09862 +2016-07-01|-82.0|-30.0|0.77428|-0.0981 +2016-07-01|-82.0|-31.0|1.57254|-0.0976 +2016-07-01|-82.0|-32.0|2.36993|-0.09711 +2016-07-01|-82.0|-33.0|3.16651|-0.09665 +2016-07-01|-82.0|-34.0|3.96233|-0.0962 +2016-07-01|-82.0|-35.0|4.75741|-0.09577 +2016-07-01|-82.0|-36.0|5.55181|-0.09536 +2016-07-01|-82.0|-37.0|6.34558|-0.09497 +2016-07-01|-82.0|-38.0|7.13874|-0.09459 +2016-07-01|-82.0|-39.0|7.93136|-0.09423 +2016-07-01|-82.0|-40.0|8.72346|-0.09389 +2016-07-01|-82.0|-41.0|9.5151|-0.09356 +2016-07-01|-82.0|-42.0|10.30631|-0.09326 +2016-07-01|-82.0|-43.0|11.09715|-0.09297 +2016-07-01|-82.0|-44.0|11.88765|-0.09269 +2016-07-01|-82.0|-45.0|12.67785|-0.09243 +2016-07-01|-82.0|-46.0|13.46779|-0.09219 +2016-07-01|-82.0|-47.0|14.25752|-0.09196 +2016-07-01|-82.0|-48.0|15.04708|-0.09175 +2016-07-01|-82.0|-49.0|15.83651|-0.09156 +2016-07-01|-82.0|-50.0|16.62585|-0.09138 +2016-07-01|-82.0|-51.0|17.41514|-0.09121 +2016-07-01|-82.0|-52.0|18.20441|-0.09106 +2016-07-01|-82.0|-53.0|18.99371|-0.09092 +2016-07-01|-82.0|-54.0|19.78308|-0.09079 +2016-07-01|-82.0|-55.0|20.57255|-0.09068 +2016-07-01|-82.0|-56.0|21.36215|-0.09058 +2016-07-01|-82.0|-57.0|22.15194|-0.09049 +2016-07-01|-82.0|-58.0|22.94194|-0.09042 +2016-07-01|-82.0|-59.0|23.73218|-0.09036 +2016-07-01|-82.0|-60.0|24.52271|-0.09031 +2016-07-01|-82.0|-61.0|25.31357|-0.09027 +2016-07-01|-82.0|-62.0|26.10477|-0.09024 +2016-07-01|-82.0|-63.0|26.89637|-0.09022 +2016-07-01|-82.0|-64.0|27.68838|-0.09021 +2016-07-01|-82.0|-65.0|28.48085|-0.09022 +2016-07-01|-82.0|-66.0|29.27381|-0.09023 +2016-07-01|-82.0|-67.0|30.06729|-0.09025 +2016-07-01|-82.0|-68.0|30.86133|-0.09028 +2016-07-01|-82.0|-69.0|31.65595|-0.09032 +2016-07-01|-82.0|-70.0|32.45119|-0.09037 +2016-07-01|-82.0|-71.0|33.24708|-0.09043 +2016-07-01|-82.0|-72.0|34.04365|-0.0905 +2016-07-01|-82.0|-73.0|34.84094|-0.09057 +2016-07-01|-82.0|-74.0|35.63897|-0.09065 +2016-07-01|-82.0|-75.0|36.43778|-0.09074 +2016-07-01|-82.0|-76.0|37.2374|-0.09084 +2016-07-01|-82.0|-77.0|38.03786|-0.09095 +2016-07-01|-82.0|-78.0|38.83919|-0.09106 +2016-07-01|-82.0|-79.0|39.64143|-0.09118 +2016-07-01|-82.0|-80.0|40.4446|-0.09131 +2016-07-01|-82.0|-81.0|41.24875|-0.09144 +2016-07-01|-82.0|-82.0|42.0539|-0.09158 +2016-07-01|-82.0|-83.0|42.86009|-0.09173 +2016-07-01|-82.0|-84.0|43.66735|-0.09188 +2016-07-01|-82.0|-85.0|44.47572|-0.09204 +2016-07-01|-82.0|-86.0|45.28523|-0.09221 +2016-07-01|-82.0|-87.0|46.09592|-0.09239 +2016-07-01|-82.0|-88.0|46.90783|-0.09257 +2016-07-01|-82.0|-89.0|47.72099|-0.09276 +2016-07-01|-82.0|-90.0|48.53544|-0.09295 +2016-07-01|-82.0|-91.0|49.35122|-0.09316 +2016-07-01|-82.0|-92.0|50.16838|-0.09337 +2016-07-01|-82.0|-93.0|50.98695|-0.09358 +2016-07-01|-82.0|-94.0|51.80697|-0.09381 +2016-07-01|-82.0|-95.0|52.6285|-0.09404 +2016-07-01|-82.0|-96.0|53.45157|-0.09427 +2016-07-01|-82.0|-97.0|54.27623|-0.09452 +2016-07-01|-82.0|-98.0|55.10253|-0.09477 +2016-07-01|-82.0|-99.0|55.93051|-0.09504 +2016-07-01|-82.0|-100.0|56.76023|-0.09531 +2016-07-01|-82.0|-101.0|57.59174|-0.09558 +2016-07-01|-82.0|-102.0|58.42509|-0.09587 +2016-07-01|-82.0|-103.0|59.26034|-0.09616 +2016-07-01|-82.0|-104.0|60.09754|-0.09647 +2016-07-01|-82.0|-105.0|60.93675|-0.09678 +2016-07-01|-82.0|-106.0|61.77802|-0.0971 +2016-07-01|-82.0|-107.0|62.62143|-0.09744 +2016-07-01|-82.0|-108.0|63.46702|-0.09778 +2016-07-01|-82.0|-109.0|64.31488|-0.09813 +2016-07-01|-82.0|-110.0|65.16505|-0.09849 +2016-07-01|-82.0|-111.0|66.01761|-0.09887 +2016-07-01|-82.0|-112.0|66.87263|-0.09925 +2016-07-01|-82.0|-113.0|67.73018|-0.09965 +2016-07-01|-82.0|-114.0|68.59033|-0.10006 +2016-07-01|-82.0|-115.0|69.45316|-0.10048 +2016-07-01|-82.0|-116.0|70.31874|-0.10091 +2016-07-01|-82.0|-117.0|71.18715|-0.10136 +2016-07-01|-82.0|-118.0|72.05848|-0.10182 +2016-07-01|-82.0|-119.0|72.9328|-0.10229 +2016-07-01|-82.0|-120.0|73.81019|-0.10278 +2016-07-01|-82.0|-121.0|74.69075|-0.10328 +2016-07-01|-82.0|-122.0|75.57455|-0.1038 +2016-07-01|-82.0|-123.0|76.4617|-0.10433 +2016-07-01|-82.0|-124.0|77.35227|-0.10488 +2016-07-01|-82.0|-125.0|78.24636|-0.10544 +2016-07-01|-82.0|-126.0|79.14407|-0.10602 +2016-07-01|-82.0|-127.0|80.04548|-0.10662 +2016-07-01|-82.0|-128.0|80.9507|-0.10723 +2016-07-01|-82.0|-129.0|81.85983|-0.10787 +2016-07-01|-82.0|-130.0|82.77295|-0.10852 +2016-07-01|-82.0|-131.0|83.69019|-0.10919 +2016-07-01|-82.0|-132.0|84.61163|-0.10988 +2016-07-01|-82.0|-133.0|85.53738|-0.11058 +2016-07-01|-82.0|-134.0|86.46754|-0.11131 +2016-07-01|-82.0|-135.0|87.40222|-0.11206 +2016-07-01|-82.0|-136.0|88.34153|-0.11283 +2016-07-01|-82.0|-137.0|89.28558|-0.11362 +2016-07-01|-82.0|-138.0|90.23446|-0.11444 +2016-07-01|-82.0|-139.0|91.1883|-0.11527 +2016-07-01|-82.0|-140.0|92.1472|-0.11613 +2016-07-01|-82.0|-141.0|93.11126|-0.11701 +2016-07-01|-82.0|-142.0|94.0806|-0.11792 +2016-07-01|-82.0|-143.0|95.05533|-0.11885 +2016-07-01|-82.0|-144.0|96.03556|-0.1198 +2016-07-01|-82.0|-145.0|97.0214|-0.12078 +2016-07-01|-82.0|-146.0|98.01295|-0.12178 +2016-07-01|-82.0|-147.0|99.01032|-0.12281 +2016-07-01|-82.0|-148.0|100.01363|-0.12387 +2016-07-01|-82.0|-149.0|101.02297|-0.12495 +2016-07-01|-82.0|-150.0|102.03846|-0.12605 +2016-07-01|-82.0|-151.0|103.06019|-0.12718 +2016-07-01|-82.0|-152.0|104.08827|-0.12834 +2016-07-01|-82.0|-153.0|105.1228|-0.12953 +2016-07-01|-82.0|-154.0|106.16388|-0.13074 +2016-07-01|-82.0|-155.0|107.21159|-0.13198 +2016-07-01|-82.0|-156.0|108.26604|-0.13325 +2016-07-01|-82.0|-157.0|109.32732|-0.13454 +2016-07-01|-82.0|-158.0|110.39551|-0.13586 +2016-07-01|-82.0|-159.0|111.47069|-0.13721 +2016-07-01|-82.0|-160.0|112.55294|-0.13859 +2016-07-01|-82.0|-161.0|113.64234|-0.13999 +2016-07-01|-82.0|-162.0|114.73896|-0.14142 +2016-07-01|-82.0|-163.0|115.84286|-0.14287 +2016-07-01|-82.0|-164.0|116.95411|-0.14435 +2016-07-01|-82.0|-165.0|118.07275|-0.14586 +2016-07-01|-82.0|-166.0|119.19884|-0.14739 +2016-07-01|-82.0|-167.0|120.33242|-0.14894 +2016-07-01|-82.0|-168.0|121.47353|-0.15052 +2016-07-01|-82.0|-169.0|122.6222|-0.15212 +2016-07-01|-82.0|-170.0|123.77844|-0.15374 +2016-07-01|-82.0|-171.0|124.94228|-0.15539 +2016-07-01|-82.0|-172.0|126.11371|-0.15705 +2016-07-01|-82.0|-173.0|127.29275|-0.15873 +2016-07-01|-82.0|-174.0|128.47937|-0.16044 +2016-07-01|-82.0|-175.0|129.67356|-0.16215 +2016-07-01|-82.0|-176.0|130.87528|-0.16389 +2016-07-01|-82.0|-177.0|132.08451|-0.16564 +2016-07-01|-82.0|-178.0|133.30119|-0.1674 +2016-07-01|-82.0|-179.0|134.52527|-0.16917 +2016-07-01|-83.0|0.0|-24.34135|-0.12431 +2016-07-01|-83.0|1.0|-25.20065|-0.12515 +2016-07-01|-83.0|2.0|-26.06166|-0.126 +2016-07-01|-83.0|3.0|-26.92441|-0.12686 +2016-07-01|-83.0|4.0|-27.78891|-0.12772 +2016-07-01|-83.0|5.0|-28.65518|-0.12859 +2016-07-01|-83.0|6.0|-29.52324|-0.12947 +2016-07-01|-83.0|7.0|-30.39311|-0.13035 +2016-07-01|-83.0|8.0|-31.2648|-0.13124 +2016-07-01|-83.0|9.0|-32.13833|-0.13213 +2016-07-01|-83.0|10.0|-33.01372|-0.13303 +2016-07-01|-83.0|11.0|-33.89098|-0.13393 +2016-07-01|-83.0|12.0|-34.77012|-0.13483 +2016-07-01|-83.0|13.0|-35.65117|-0.13574 +2016-07-01|-83.0|14.0|-36.53413|-0.13665 +2016-07-01|-83.0|15.0|-37.41902|-0.13756 +2016-07-01|-83.0|16.0|-38.30586|-0.13848 +2016-07-01|-83.0|17.0|-39.19465|-0.13939 +2016-07-01|-83.0|18.0|-40.08541|-0.14031 +2016-07-01|-83.0|19.0|-40.97815|-0.14123 +2016-07-01|-83.0|20.0|-41.87288|-0.14215 +2016-07-01|-83.0|21.0|-42.76962|-0.14307 +2016-07-01|-83.0|22.0|-43.66838|-0.14399 +2016-07-01|-83.0|23.0|-44.56917|-0.14491 +2016-07-01|-83.0|24.0|-45.472|-0.14583 +2016-07-01|-83.0|25.0|-46.3769|-0.14675 +2016-07-01|-83.0|26.0|-47.28385|-0.14767 +2016-07-01|-83.0|27.0|-48.19289|-0.14858 +2016-07-01|-83.0|28.0|-49.10403|-0.1495 +2016-07-01|-83.0|29.0|-50.01726|-0.15041 +2016-07-01|-83.0|30.0|-50.93262|-0.15132 +2016-07-01|-83.0|31.0|-51.85011|-0.15223 +2016-07-01|-83.0|32.0|-52.76975|-0.15313 +2016-07-01|-83.0|33.0|-53.69155|-0.15404 +2016-07-01|-83.0|34.0|-54.61552|-0.15494 +2016-07-01|-83.0|35.0|-55.54169|-0.15583 +2016-07-01|-83.0|36.0|-56.47005|-0.15673 +2016-07-01|-83.0|37.0|-57.40064|-0.15762 +2016-07-01|-83.0|38.0|-58.33347|-0.1585 +2016-07-01|-83.0|39.0|-59.26855|-0.15939 +2016-07-01|-83.0|40.0|-60.2059|-0.16027 +2016-07-01|-83.0|41.0|-61.14555|-0.16114 +2016-07-01|-83.0|42.0|-62.0875|-0.16201 +2016-07-01|-83.0|43.0|-63.03178|-0.16288 +2016-07-01|-83.0|44.0|-63.97841|-0.16374 +2016-07-01|-83.0|45.0|-64.92741|-0.1646 +2016-07-01|-83.0|46.0|-65.8788|-0.16546 +2016-07-01|-83.0|47.0|-66.83261|-0.16631 +2016-07-01|-83.0|48.0|-67.78885|-0.16716 +2016-07-01|-83.0|49.0|-68.74756|-0.168 +2016-07-01|-83.0|50.0|-69.70876|-0.16884 +2016-07-01|-83.0|51.0|-70.67247|-0.16967 +2016-07-01|-83.0|52.0|-71.63873|-0.1705 +2016-07-01|-83.0|53.0|-72.60755|-0.17133 +2016-07-01|-83.0|54.0|-73.57898|-0.17215 +2016-07-01|-83.0|55.0|-74.55304|-0.17297 +2016-07-01|-83.0|56.0|-75.52975|-0.17378 +2016-07-01|-83.0|57.0|-76.50916|-0.17459 +2016-07-01|-83.0|58.0|-77.4913|-0.1754 +2016-07-01|-83.0|59.0|-78.47619|-0.1762 +2016-07-01|-83.0|60.0|-79.46389|-0.177 +2016-07-01|-83.0|61.0|-80.45441|-0.17779 +2016-07-01|-83.0|62.0|-81.4478|-0.17858 +2016-07-01|-83.0|63.0|-82.4441|-0.17937 +2016-07-01|-83.0|64.0|-83.44334|-0.18016 +2016-07-01|-83.0|65.0|-84.44557|-0.18094 +2016-07-01|-83.0|66.0|-85.45082|-0.18171 +2016-07-01|-83.0|67.0|-86.45914|-0.18249 +2016-07-01|-83.0|68.0|-87.47057|-0.18326 +2016-07-01|-83.0|69.0|-88.48515|-0.18402 +2016-07-01|-83.0|70.0|-89.50294|-0.18479 +2016-07-01|-83.0|71.0|-90.52396|-0.18555 +2016-07-01|-83.0|72.0|-91.54827|-0.1863 +2016-07-01|-83.0|73.0|-92.57592|-0.18706 +2016-07-01|-83.0|74.0|-93.60695|-0.18781 +2016-07-01|-83.0|75.0|-94.64141|-0.18856 +2016-07-01|-83.0|76.0|-95.67934|-0.1893 +2016-07-01|-83.0|77.0|-96.7208|-0.19005 +2016-07-01|-83.0|78.0|-97.76584|-0.19078 +2016-07-01|-83.0|79.0|-98.8145|-0.19152 +2016-07-01|-83.0|80.0|-99.86684|-0.19225 +2016-07-01|-83.0|81.0|-100.92289|-0.19298 +2016-07-01|-83.0|82.0|-101.98273|-0.19371 +2016-07-01|-83.0|83.0|-103.04638|-0.19443 +2016-07-01|-83.0|84.0|-104.11391|-0.19515 +2016-07-01|-83.0|85.0|-105.18536|-0.19586 +2016-07-01|-83.0|86.0|-106.26079|-0.19658 +2016-07-01|-83.0|87.0|-107.34024|-0.19728 +2016-07-01|-83.0|88.0|-108.42375|-0.19799 +2016-07-01|-83.0|89.0|-109.51139|-0.19868 +2016-07-01|-83.0|90.0|-110.60319|-0.19938 +2016-07-01|-83.0|91.0|-111.6992|-0.20007 +2016-07-01|-83.0|92.0|-112.79947|-0.20075 +2016-07-01|-83.0|93.0|-113.90404|-0.20143 +2016-07-01|-83.0|94.0|-115.01295|-0.2021 +2016-07-01|-83.0|95.0|-116.12625|-0.20276 +2016-07-01|-83.0|96.0|-117.24397|-0.20342 +2016-07-01|-83.0|97.0|-118.36616|-0.20407 +2016-07-01|-83.0|98.0|-119.49285|-0.20471 +2016-07-01|-83.0|99.0|-120.62406|-0.20535 +2016-07-01|-83.0|100.0|-121.75985|-0.20597 +2016-07-01|-83.0|101.0|-122.90022|-0.20659 +2016-07-01|-83.0|102.0|-124.04522|-0.2072 +2016-07-01|-83.0|103.0|-125.19486|-0.20779 +2016-07-01|-83.0|104.0|-126.34917|-0.20838 +2016-07-01|-83.0|105.0|-127.50816|-0.20895 +2016-07-01|-83.0|106.0|-128.67184|-0.20951 +2016-07-01|-83.0|107.0|-129.84023|-0.21005 +2016-07-01|-83.0|108.0|-131.01334|-0.21059 +2016-07-01|-83.0|109.0|-132.19115|-0.2111 +2016-07-01|-83.0|110.0|-133.37369|-0.2116 +2016-07-01|-83.0|111.0|-134.56093|-0.21209 +2016-07-01|-83.0|112.0|-135.75286|-0.21255 +2016-07-01|-83.0|113.0|-136.94948|-0.213 +2016-07-01|-83.0|114.0|-138.15076|-0.21343 +2016-07-01|-83.0|115.0|-139.35667|-0.21384 +2016-07-01|-83.0|116.0|-140.56719|-0.21422 +2016-07-01|-83.0|117.0|-141.78227|-0.21459 +2016-07-01|-83.0|118.0|-143.00187|-0.21493 +2016-07-01|-83.0|119.0|-144.22595|-0.21524 +2016-07-01|-83.0|120.0|-145.45445|-0.21553 +2016-07-01|-83.0|121.0|-146.6873|-0.2158 +2016-07-01|-83.0|122.0|-147.92445|-0.21604 +2016-07-01|-83.0|123.0|-149.16582|-0.21624 +2016-07-01|-83.0|124.0|-150.41132|-0.21642 +2016-07-01|-83.0|125.0|-151.66087|-0.21657 +2016-07-01|-83.0|126.0|-152.91438|-0.21669 +2016-07-01|-83.0|127.0|-154.17174|-0.21678 +2016-07-01|-83.0|128.0|-155.43285|-0.21683 +2016-07-01|-83.0|129.0|-156.69759|-0.21685 +2016-07-01|-83.0|130.0|-157.96584|-0.21683 +2016-07-01|-83.0|131.0|-159.23748|-0.21678 +2016-07-01|-83.0|132.0|-160.51237|-0.21669 +2016-07-01|-83.0|133.0|-161.79037|-0.21656 +2016-07-01|-83.0|134.0|-163.07132|-0.2164 +2016-07-01|-83.0|135.0|-164.35508|-0.21619 +2016-07-01|-83.0|136.0|-165.64149|-0.21595 +2016-07-01|-83.0|137.0|-166.93037|-0.21567 +2016-07-01|-83.0|138.0|-168.22156|-0.21535 +2016-07-01|-83.0|139.0|-169.51487|-0.21498 +2016-07-01|-83.0|140.0|-170.81013|-0.21458 +2016-07-01|-83.0|141.0|-172.10714|-0.21413 +2016-07-01|-83.0|142.0|-173.4057|-0.21365 +2016-07-01|-83.0|143.0|-174.70563|-0.21312 +2016-07-01|-83.0|144.0|-176.00671|-0.21255 +2016-07-01|-83.0|145.0|-177.30875|-0.21194 +2016-07-01|-83.0|146.0|-178.61152|-0.21129 +2016-07-01|-83.0|147.0|-179.91482|-0.2106 +2016-07-01|-83.0|148.0|178.78156|-0.20987 +2016-07-01|-83.0|149.0|177.47786|-0.20909 +2016-07-01|-83.0|150.0|176.17428|-0.20828 +2016-07-01|-83.0|151.0|174.87105|-0.20743 +2016-07-01|-83.0|152.0|173.5684|-0.20654 +2016-07-01|-83.0|153.0|172.26653|-0.20562 +2016-07-01|-83.0|154.0|170.96569|-0.20466 +2016-07-01|-83.0|155.0|169.66608|-0.20366 +2016-07-01|-83.0|156.0|168.36793|-0.20262 +2016-07-01|-83.0|157.0|167.07146|-0.20156 +2016-07-01|-83.0|158.0|165.77689|-0.20046 +2016-07-01|-83.0|159.0|164.48442|-0.19933 +2016-07-01|-83.0|160.0|163.19429|-0.19817 +2016-07-01|-83.0|161.0|161.90669|-0.19698 +2016-07-01|-83.0|162.0|160.62182|-0.19577 +2016-07-01|-83.0|163.0|159.3399|-0.19452 +2016-07-01|-83.0|164.0|158.06112|-0.19326 +2016-07-01|-83.0|165.0|156.78567|-0.19197 +2016-07-01|-83.0|166.0|155.51374|-0.19066 +2016-07-01|-83.0|167.0|154.2455|-0.18933 +2016-07-01|-83.0|168.0|152.98115|-0.18798 +2016-07-01|-83.0|169.0|151.72083|-0.18662 +2016-07-01|-83.0|170.0|150.46473|-0.18524 +2016-07-01|-83.0|171.0|149.213|-0.18384 +2016-07-01|-83.0|172.0|147.96578|-0.18244 +2016-07-01|-83.0|173.0|146.72323|-0.18102 +2016-07-01|-83.0|174.0|145.48547|-0.1796 +2016-07-01|-83.0|175.0|144.25264|-0.17817 +2016-07-01|-83.0|176.0|143.02486|-0.17673 +2016-07-01|-83.0|177.0|141.80224|-0.17529 +2016-07-01|-83.0|178.0|140.5849|-0.17384 +2016-07-01|-83.0|179.0|139.37293|-0.17239 +2016-07-01|-83.0|-1.0|-23.48374|-0.12347 +2016-07-01|-83.0|-2.0|-22.62781|-0.12264 +2016-07-01|-83.0|-3.0|-21.77353|-0.12183 +2016-07-01|-83.0|-4.0|-20.92087|-0.12102 +2016-07-01|-83.0|-5.0|-20.06982|-0.12022 +2016-07-01|-83.0|-6.0|-19.22035|-0.11943 +2016-07-01|-83.0|-7.0|-18.37243|-0.11865 +2016-07-01|-83.0|-8.0|-17.52605|-0.11788 +2016-07-01|-83.0|-9.0|-16.68117|-0.11713 +2016-07-01|-83.0|-10.0|-15.83777|-0.11638 +2016-07-01|-83.0|-11.0|-14.99582|-0.11565 +2016-07-01|-83.0|-12.0|-14.15529|-0.11492 +2016-07-01|-83.0|-13.0|-13.31616|-0.11421 +2016-07-01|-83.0|-14.0|-12.47839|-0.11351 +2016-07-01|-83.0|-15.0|-11.64196|-0.11283 +2016-07-01|-83.0|-16.0|-10.80683|-0.11216 +2016-07-01|-83.0|-17.0|-9.97298|-0.1115 +2016-07-01|-83.0|-18.0|-9.14037|-0.11085 +2016-07-01|-83.0|-19.0|-8.30896|-0.11022 +2016-07-01|-83.0|-20.0|-7.47874|-0.1096 +2016-07-01|-83.0|-21.0|-6.64965|-0.109 +2016-07-01|-83.0|-22.0|-5.82168|-0.10841 +2016-07-01|-83.0|-23.0|-4.99478|-0.10783 +2016-07-01|-83.0|-24.0|-4.16892|-0.10727 +2016-07-01|-83.0|-25.0|-3.34406|-0.10673 +2016-07-01|-83.0|-26.0|-2.52018|-0.10619 +2016-07-01|-83.0|-27.0|-1.69722|-0.10568 +2016-07-01|-83.0|-28.0|-0.87517|-0.10518 +2016-07-01|-83.0|-29.0|-0.05397|-0.10469 +2016-07-01|-83.0|-30.0|0.76641|-0.10422 +2016-07-01|-83.0|-31.0|1.58599|-0.10376 +2016-07-01|-83.0|-32.0|2.40484|-0.10332 +2016-07-01|-83.0|-33.0|3.22297|-0.10289 +2016-07-01|-83.0|-34.0|4.04043|-0.10248 +2016-07-01|-83.0|-35.0|4.85725|-0.10209 +2016-07-01|-83.0|-36.0|5.67348|-0.1017 +2016-07-01|-83.0|-37.0|6.48915|-0.10134 +2016-07-01|-83.0|-38.0|7.3043|-0.10099 +2016-07-01|-83.0|-39.0|8.11897|-0.10065 +2016-07-01|-83.0|-40.0|8.93319|-0.10033 +2016-07-01|-83.0|-41.0|9.74701|-0.10002 +2016-07-01|-83.0|-42.0|10.56047|-0.09973 +2016-07-01|-83.0|-43.0|11.3736|-0.09945 +2016-07-01|-83.0|-44.0|12.18643|-0.09919 +2016-07-01|-83.0|-45.0|12.99901|-0.09894 +2016-07-01|-83.0|-46.0|13.81138|-0.0987 +2016-07-01|-83.0|-47.0|14.62358|-0.09848 +2016-07-01|-83.0|-48.0|15.43563|-0.09827 +2016-07-01|-83.0|-49.0|16.24758|-0.09807 +2016-07-01|-83.0|-50.0|17.05947|-0.09789 +2016-07-01|-83.0|-51.0|17.87133|-0.09772 +2016-07-01|-83.0|-52.0|18.68319|-0.09757 +2016-07-01|-83.0|-53.0|19.49511|-0.09742 +2016-07-01|-83.0|-54.0|20.3071|-0.09729 +2016-07-01|-83.0|-55.0|21.11922|-0.09717 +2016-07-01|-83.0|-56.0|21.93148|-0.09707 +2016-07-01|-83.0|-57.0|22.74394|-0.09697 +2016-07-01|-83.0|-58.0|23.55662|-0.09689 +2016-07-01|-83.0|-59.0|24.36956|-0.09682 +2016-07-01|-83.0|-60.0|25.1828|-0.09676 +2016-07-01|-83.0|-61.0|25.99637|-0.09671 +2016-07-01|-83.0|-62.0|26.8103|-0.09667 +2016-07-01|-83.0|-63.0|27.62464|-0.09664 +2016-07-01|-83.0|-64.0|28.4394|-0.09662 +2016-07-01|-83.0|-65.0|29.25464|-0.09661 +2016-07-01|-83.0|-66.0|30.07037|-0.09662 +2016-07-01|-83.0|-67.0|30.88664|-0.09663 +2016-07-01|-83.0|-68.0|31.70349|-0.09665 +2016-07-01|-83.0|-69.0|32.52093|-0.09668 +2016-07-01|-83.0|-70.0|33.33901|-0.09672 +2016-07-01|-83.0|-71.0|34.15776|-0.09677 +2016-07-01|-83.0|-72.0|34.97722|-0.09683 +2016-07-01|-83.0|-73.0|35.79742|-0.0969 +2016-07-01|-83.0|-74.0|36.61839|-0.09698 +2016-07-01|-83.0|-75.0|37.44016|-0.09706 +2016-07-01|-83.0|-76.0|38.26278|-0.09715 +2016-07-01|-83.0|-77.0|39.08627|-0.09726 +2016-07-01|-83.0|-78.0|39.91067|-0.09737 +2016-07-01|-83.0|-79.0|40.73601|-0.09749 +2016-07-01|-83.0|-80.0|41.56233|-0.09761 +2016-07-01|-83.0|-81.0|42.38967|-0.09775 +2016-07-01|-83.0|-82.0|43.21805|-0.09789 +2016-07-01|-83.0|-83.0|44.04752|-0.09804 +2016-07-01|-83.0|-84.0|44.87812|-0.0982 +2016-07-01|-83.0|-85.0|45.70987|-0.09837 +2016-07-01|-83.0|-86.0|46.54282|-0.09854 +2016-07-01|-83.0|-87.0|47.377|-0.09873 +2016-07-01|-83.0|-88.0|48.21246|-0.09892 +2016-07-01|-83.0|-89.0|49.04923|-0.09912 +2016-07-01|-83.0|-90.0|49.88735|-0.09932 +2016-07-01|-83.0|-91.0|50.72686|-0.09954 +2016-07-01|-83.0|-92.0|51.56781|-0.09976 +2016-07-01|-83.0|-93.0|52.41023|-0.09999 +2016-07-01|-83.0|-94.0|53.25417|-0.10023 +2016-07-01|-83.0|-95.0|54.09967|-0.10048 +2016-07-01|-83.0|-96.0|54.94677|-0.10074 +2016-07-01|-83.0|-97.0|55.79553|-0.101 +2016-07-01|-83.0|-98.0|56.64598|-0.10127 +2016-07-01|-83.0|-99.0|57.49817|-0.10156 +2016-07-01|-83.0|-100.0|58.35216|-0.10185 +2016-07-01|-83.0|-101.0|59.20799|-0.10215 +2016-07-01|-83.0|-102.0|60.06571|-0.10246 +2016-07-01|-83.0|-103.0|60.92537|-0.10277 +2016-07-01|-83.0|-104.0|61.78702|-0.1031 +2016-07-01|-83.0|-105.0|62.65072|-0.10344 +2016-07-01|-83.0|-106.0|63.51652|-0.10379 +2016-07-01|-83.0|-107.0|64.38448|-0.10414 +2016-07-01|-83.0|-108.0|65.25465|-0.10451 +2016-07-01|-83.0|-109.0|66.12709|-0.10489 +2016-07-01|-83.0|-110.0|67.00186|-0.10528 +2016-07-01|-83.0|-111.0|67.87901|-0.10568 +2016-07-01|-83.0|-112.0|68.75862|-0.10609 +2016-07-01|-83.0|-113.0|69.64073|-0.10651 +2016-07-01|-83.0|-114.0|70.52542|-0.10694 +2016-07-01|-83.0|-115.0|71.41275|-0.10739 +2016-07-01|-83.0|-116.0|72.30278|-0.10784 +2016-07-01|-83.0|-117.0|73.19559|-0.10831 +2016-07-01|-83.0|-118.0|74.09123|-0.10879 +2016-07-01|-83.0|-119.0|74.98978|-0.10929 +2016-07-01|-83.0|-120.0|75.8913|-0.1098 +2016-07-01|-83.0|-121.0|76.79587|-0.11032 +2016-07-01|-83.0|-122.0|77.70356|-0.11085 +2016-07-01|-83.0|-123.0|78.61444|-0.1114 +2016-07-01|-83.0|-124.0|79.52859|-0.11197 +2016-07-01|-83.0|-125.0|80.44607|-0.11254 +2016-07-01|-83.0|-126.0|81.36697|-0.11314 +2016-07-01|-83.0|-127.0|82.29136|-0.11374 +2016-07-01|-83.0|-128.0|83.21932|-0.11437 +2016-07-01|-83.0|-129.0|84.15092|-0.11501 +2016-07-01|-83.0|-130.0|85.08625|-0.11566 +2016-07-01|-83.0|-131.0|86.02538|-0.11633 +2016-07-01|-83.0|-132.0|86.96838|-0.11702 +2016-07-01|-83.0|-133.0|87.91535|-0.11772 +2016-07-01|-83.0|-134.0|88.86636|-0.11844 +2016-07-01|-83.0|-135.0|89.82149|-0.11918 +2016-07-01|-83.0|-136.0|90.78082|-0.11993 +2016-07-01|-83.0|-137.0|91.74443|-0.12071 +2016-07-01|-83.0|-138.0|92.71239|-0.1215 +2016-07-01|-83.0|-139.0|93.68481|-0.12231 +2016-07-01|-83.0|-140.0|94.66174|-0.12313 +2016-07-01|-83.0|-141.0|95.64327|-0.12398 +2016-07-01|-83.0|-142.0|96.62948|-0.12485 +2016-07-01|-83.0|-143.0|97.62045|-0.12573 +2016-07-01|-83.0|-144.0|98.61625|-0.12663 +2016-07-01|-83.0|-145.0|99.61696|-0.12755 +2016-07-01|-83.0|-146.0|100.62267|-0.12849 +2016-07-01|-83.0|-147.0|101.63343|-0.12946 +2016-07-01|-83.0|-148.0|102.64933|-0.13044 +2016-07-01|-83.0|-149.0|103.67043|-0.13144 +2016-07-01|-83.0|-150.0|104.69681|-0.13246 +2016-07-01|-83.0|-151.0|105.72853|-0.13349 +2016-07-01|-83.0|-152.0|106.76567|-0.13455 +2016-07-01|-83.0|-153.0|107.80827|-0.13563 +2016-07-01|-83.0|-154.0|108.85641|-0.13673 +2016-07-01|-83.0|-155.0|109.91015|-0.13785 +2016-07-01|-83.0|-156.0|110.96953|-0.13898 +2016-07-01|-83.0|-157.0|112.03462|-0.14014 +2016-07-01|-83.0|-158.0|113.10546|-0.14131 +2016-07-01|-83.0|-159.0|114.1821|-0.14251 +2016-07-01|-83.0|-160.0|115.26459|-0.14372 +2016-07-01|-83.0|-161.0|116.35295|-0.14495 +2016-07-01|-83.0|-162.0|117.44723|-0.1462 +2016-07-01|-83.0|-163.0|118.54746|-0.14746 +2016-07-01|-83.0|-164.0|119.65366|-0.14874 +2016-07-01|-83.0|-165.0|120.76585|-0.15004 +2016-07-01|-83.0|-166.0|121.88406|-0.15135 +2016-07-01|-83.0|-167.0|123.0083|-0.15268 +2016-07-01|-83.0|-168.0|124.13856|-0.15402 +2016-07-01|-83.0|-169.0|125.27485|-0.15538 +2016-07-01|-83.0|-170.0|126.41718|-0.15675 +2016-07-01|-83.0|-171.0|127.56551|-0.15813 +2016-07-01|-83.0|-172.0|128.71985|-0.15952 +2016-07-01|-83.0|-173.0|129.88017|-0.16092 +2016-07-01|-83.0|-174.0|131.04643|-0.16234 +2016-07-01|-83.0|-175.0|132.21861|-0.16376 +2016-07-01|-83.0|-176.0|133.39665|-0.16518 +2016-07-01|-83.0|-177.0|134.58051|-0.16662 +2016-07-01|-83.0|-178.0|135.77014|-0.16806 +2016-07-01|-83.0|-179.0|136.96547|-0.1695 +2016-07-01|-84.0|0.0|-24.97115|-0.12782 +2016-07-01|-84.0|1.0|-25.84717|-0.12854 +2016-07-01|-84.0|2.0|-26.7247|-0.12927 +2016-07-01|-84.0|3.0|-27.60376|-0.13 +2016-07-01|-84.0|4.0|-28.48436|-0.13074 +2016-07-01|-84.0|5.0|-29.36653|-0.13149 +2016-07-01|-84.0|6.0|-30.25028|-0.13224 +2016-07-01|-84.0|7.0|-31.13564|-0.133 +2016-07-01|-84.0|8.0|-32.02261|-0.13376 +2016-07-01|-84.0|9.0|-32.91123|-0.13452 +2016-07-01|-84.0|10.0|-33.8015|-0.13529 +2016-07-01|-84.0|11.0|-34.69345|-0.13607 +2016-07-01|-84.0|12.0|-35.58708|-0.13685 +2016-07-01|-84.0|13.0|-36.48242|-0.13763 +2016-07-01|-84.0|14.0|-37.37949|-0.13841 +2016-07-01|-84.0|15.0|-38.27829|-0.1392 +2016-07-01|-84.0|16.0|-39.17885|-0.13999 +2016-07-01|-84.0|17.0|-40.08118|-0.14078 +2016-07-01|-84.0|18.0|-40.98529|-0.14157 +2016-07-01|-84.0|19.0|-41.89121|-0.14236 +2016-07-01|-84.0|20.0|-42.79894|-0.14316 +2016-07-01|-84.0|21.0|-43.7085|-0.14396 +2016-07-01|-84.0|22.0|-44.6199|-0.14476 +2016-07-01|-84.0|23.0|-45.53317|-0.14555 +2016-07-01|-84.0|24.0|-46.44831|-0.14635 +2016-07-01|-84.0|25.0|-47.36534|-0.14715 +2016-07-01|-84.0|26.0|-48.28428|-0.14795 +2016-07-01|-84.0|27.0|-49.20513|-0.14875 +2016-07-01|-84.0|28.0|-50.12792|-0.14955 +2016-07-01|-84.0|29.0|-51.05266|-0.15035 +2016-07-01|-84.0|30.0|-51.97937|-0.15114 +2016-07-01|-84.0|31.0|-52.90805|-0.15194 +2016-07-01|-84.0|32.0|-53.83873|-0.15273 +2016-07-01|-84.0|33.0|-54.77142|-0.15353 +2016-07-01|-84.0|34.0|-55.70614|-0.15432 +2016-07-01|-84.0|35.0|-56.6429|-0.15511 +2016-07-01|-84.0|36.0|-57.58172|-0.15589 +2016-07-01|-84.0|37.0|-58.52261|-0.15668 +2016-07-01|-84.0|38.0|-59.4656|-0.15746 +2016-07-01|-84.0|39.0|-60.4107|-0.15824 +2016-07-01|-84.0|40.0|-61.35793|-0.15902 +2016-07-01|-84.0|41.0|-62.30731|-0.1598 +2016-07-01|-84.0|42.0|-63.25885|-0.16057 +2016-07-01|-84.0|43.0|-64.21257|-0.16134 +2016-07-01|-84.0|44.0|-65.16849|-0.16211 +2016-07-01|-84.0|45.0|-66.12664|-0.16287 +2016-07-01|-84.0|46.0|-67.08703|-0.16363 +2016-07-01|-84.0|47.0|-68.04969|-0.16439 +2016-07-01|-84.0|48.0|-69.01463|-0.16515 +2016-07-01|-84.0|49.0|-69.98187|-0.1659 +2016-07-01|-84.0|50.0|-70.95145|-0.16665 +2016-07-01|-84.0|51.0|-71.92337|-0.16739 +2016-07-01|-84.0|52.0|-72.89768|-0.16813 +2016-07-01|-84.0|53.0|-73.87437|-0.16887 +2016-07-01|-84.0|54.0|-74.85349|-0.16961 +2016-07-01|-84.0|55.0|-75.83506|-0.17034 +2016-07-01|-84.0|56.0|-76.8191|-0.17106 +2016-07-01|-84.0|57.0|-77.80564|-0.17179 +2016-07-01|-84.0|58.0|-78.7947|-0.17251 +2016-07-01|-84.0|59.0|-79.78632|-0.17323 +2016-07-01|-84.0|60.0|-80.78051|-0.17394 +2016-07-01|-84.0|61.0|-81.77731|-0.17465 +2016-07-01|-84.0|62.0|-82.77674|-0.17535 +2016-07-01|-84.0|63.0|-83.77884|-0.17606 +2016-07-01|-84.0|64.0|-84.78363|-0.17675 +2016-07-01|-84.0|65.0|-85.79114|-0.17745 +2016-07-01|-84.0|66.0|-86.8014|-0.17814 +2016-07-01|-84.0|67.0|-87.81445|-0.17883 +2016-07-01|-84.0|68.0|-88.8303|-0.17951 +2016-07-01|-84.0|69.0|-89.84901|-0.18019 +2016-07-01|-84.0|70.0|-90.87058|-0.18086 +2016-07-01|-84.0|71.0|-91.89507|-0.18153 +2016-07-01|-84.0|72.0|-92.92249|-0.1822 +2016-07-01|-84.0|73.0|-93.95288|-0.18286 +2016-07-01|-84.0|74.0|-94.98628|-0.18352 +2016-07-01|-84.0|75.0|-96.02271|-0.18418 +2016-07-01|-84.0|76.0|-97.06221|-0.18483 +2016-07-01|-84.0|77.0|-98.10481|-0.18547 +2016-07-01|-84.0|78.0|-99.15053|-0.18611 +2016-07-01|-84.0|79.0|-100.19943|-0.18675 +2016-07-01|-84.0|80.0|-101.25151|-0.18738 +2016-07-01|-84.0|81.0|-102.30682|-0.18801 +2016-07-01|-84.0|82.0|-103.36539|-0.18863 +2016-07-01|-84.0|83.0|-104.42725|-0.18924 +2016-07-01|-84.0|84.0|-105.49243|-0.18986 +2016-07-01|-84.0|85.0|-106.56095|-0.19046 +2016-07-01|-84.0|86.0|-107.63286|-0.19106 +2016-07-01|-84.0|87.0|-108.70817|-0.19165 +2016-07-01|-84.0|88.0|-109.78691|-0.19224 +2016-07-01|-84.0|89.0|-110.86911|-0.19282 +2016-07-01|-84.0|90.0|-111.9548|-0.1934 +2016-07-01|-84.0|91.0|-113.044|-0.19397 +2016-07-01|-84.0|92.0|-114.13674|-0.19453 +2016-07-01|-84.0|93.0|-115.23303|-0.19508 +2016-07-01|-84.0|94.0|-116.3329|-0.19563 +2016-07-01|-84.0|95.0|-117.43637|-0.19616 +2016-07-01|-84.0|96.0|-118.54346|-0.19669 +2016-07-01|-84.0|97.0|-119.65417|-0.19721 +2016-07-01|-84.0|98.0|-120.76854|-0.19772 +2016-07-01|-84.0|99.0|-121.88656|-0.19822 +2016-07-01|-84.0|100.0|-123.00825|-0.19872 +2016-07-01|-84.0|101.0|-124.13362|-0.1992 +2016-07-01|-84.0|102.0|-125.26267|-0.19967 +2016-07-01|-84.0|103.0|-126.39541|-0.20012 +2016-07-01|-84.0|104.0|-127.53184|-0.20057 +2016-07-01|-84.0|105.0|-128.67196|-0.20101 +2016-07-01|-84.0|106.0|-129.81576|-0.20143 +2016-07-01|-84.0|107.0|-130.96324|-0.20183 +2016-07-01|-84.0|108.0|-132.11438|-0.20223 +2016-07-01|-84.0|109.0|-133.26918|-0.20261 +2016-07-01|-84.0|110.0|-134.42762|-0.20297 +2016-07-01|-84.0|111.0|-135.58968|-0.20332 +2016-07-01|-84.0|112.0|-136.75533|-0.20365 +2016-07-01|-84.0|113.0|-137.92455|-0.20397 +2016-07-01|-84.0|114.0|-139.09731|-0.20427 +2016-07-01|-84.0|115.0|-140.27358|-0.20455 +2016-07-01|-84.0|116.0|-141.45331|-0.20481 +2016-07-01|-84.0|117.0|-142.63648|-0.20505 +2016-07-01|-84.0|118.0|-143.82302|-0.20527 +2016-07-01|-84.0|119.0|-145.0129|-0.20547 +2016-07-01|-84.0|120.0|-146.20605|-0.20565 +2016-07-01|-84.0|121.0|-147.40243|-0.20581 +2016-07-01|-84.0|122.0|-148.60196|-0.20595 +2016-07-01|-84.0|123.0|-149.80459|-0.20606 +2016-07-01|-84.0|124.0|-151.01024|-0.20615 +2016-07-01|-84.0|125.0|-152.21883|-0.20622 +2016-07-01|-84.0|126.0|-153.4303|-0.20626 +2016-07-01|-84.0|127.0|-154.64455|-0.20628 +2016-07-01|-84.0|128.0|-155.86149|-0.20627 +2016-07-01|-84.0|129.0|-157.08104|-0.20623 +2016-07-01|-84.0|130.0|-158.3031|-0.20617 +2016-07-01|-84.0|131.0|-159.52757|-0.20608 +2016-07-01|-84.0|132.0|-160.75434|-0.20596 +2016-07-01|-84.0|133.0|-161.9833|-0.20582 +2016-07-01|-84.0|134.0|-163.21434|-0.20564 +2016-07-01|-84.0|135.0|-164.44734|-0.20544 +2016-07-01|-84.0|136.0|-165.68219|-0.20521 +2016-07-01|-84.0|137.0|-166.91875|-0.20495 +2016-07-01|-84.0|138.0|-168.1569|-0.20466 +2016-07-01|-84.0|139.0|-169.39651|-0.20434 +2016-07-01|-84.0|140.0|-170.63745|-0.20399 +2016-07-01|-84.0|141.0|-171.87956|-0.20361 +2016-07-01|-84.0|142.0|-173.12273|-0.2032 +2016-07-01|-84.0|143.0|-174.36679|-0.20276 +2016-07-01|-84.0|144.0|-175.61161|-0.20229 +2016-07-01|-84.0|145.0|-176.85704|-0.20179 +2016-07-01|-84.0|146.0|-178.10292|-0.20127 +2016-07-01|-84.0|147.0|-179.3491|-0.20071 +2016-07-01|-84.0|148.0|179.40456|-0.20012 +2016-07-01|-84.0|149.0|178.15823|-0.19951 +2016-07-01|-84.0|150.0|176.91205|-0.19887 +2016-07-01|-84.0|151.0|175.6662|-0.19819 +2016-07-01|-84.0|152.0|174.42082|-0.1975 +2016-07-01|-84.0|153.0|173.17607|-0.19677 +2016-07-01|-84.0|154.0|171.93212|-0.19602 +2016-07-01|-84.0|155.0|170.68911|-0.19524 +2016-07-01|-84.0|156.0|169.4472|-0.19443 +2016-07-01|-84.0|157.0|168.20656|-0.19361 +2016-07-01|-84.0|158.0|166.96732|-0.19275 +2016-07-01|-84.0|159.0|165.72966|-0.19188 +2016-07-01|-84.0|160.0|164.49372|-0.19098 +2016-07-01|-84.0|161.0|163.25965|-0.19006 +2016-07-01|-84.0|162.0|162.0276|-0.18912 +2016-07-01|-84.0|163.0|160.79771|-0.18816 +2016-07-01|-84.0|164.0|159.57014|-0.18718 +2016-07-01|-84.0|165.0|158.345|-0.18619 +2016-07-01|-84.0|166.0|157.12246|-0.18517 +2016-07-01|-84.0|167.0|155.90263|-0.18414 +2016-07-01|-84.0|168.0|154.68565|-0.1831 +2016-07-01|-84.0|169.0|153.47164|-0.18204 +2016-07-01|-84.0|170.0|152.26074|-0.18097 +2016-07-01|-84.0|171.0|151.05305|-0.17988 +2016-07-01|-84.0|172.0|149.8487|-0.17879 +2016-07-01|-84.0|173.0|148.64779|-0.17768 +2016-07-01|-84.0|174.0|147.45043|-0.17657 +2016-07-01|-84.0|175.0|146.25673|-0.17545 +2016-07-01|-84.0|176.0|145.06677|-0.17432 +2016-07-01|-84.0|177.0|143.88066|-0.17318 +2016-07-01|-84.0|178.0|142.69848|-0.17204 +2016-07-01|-84.0|179.0|141.52032|-0.1709 +2016-07-01|-84.0|-1.0|-24.09661|-0.1271 +2016-07-01|-84.0|-2.0|-23.22354|-0.12639 +2016-07-01|-84.0|-3.0|-22.35191|-0.12569 +2016-07-01|-84.0|-4.0|-21.4817|-0.125 +2016-07-01|-84.0|-5.0|-20.6129|-0.12432 +2016-07-01|-84.0|-6.0|-19.74547|-0.12364 +2016-07-01|-84.0|-7.0|-18.87939|-0.12297 +2016-07-01|-84.0|-8.0|-18.01464|-0.12231 +2016-07-01|-84.0|-9.0|-17.1512|-0.12166 +2016-07-01|-84.0|-10.0|-16.28904|-0.12102 +2016-07-01|-84.0|-11.0|-15.42814|-0.12039 +2016-07-01|-84.0|-12.0|-14.56846|-0.11977 +2016-07-01|-84.0|-13.0|-13.70999|-0.11916 +2016-07-01|-84.0|-14.0|-12.8527|-0.11855 +2016-07-01|-84.0|-15.0|-11.99655|-0.11796 +2016-07-01|-84.0|-16.0|-11.14153|-0.11738 +2016-07-01|-84.0|-17.0|-10.2876|-0.11681 +2016-07-01|-84.0|-18.0|-9.43475|-0.11625 +2016-07-01|-84.0|-19.0|-8.58292|-0.1157 +2016-07-01|-84.0|-20.0|-7.73211|-0.11517 +2016-07-01|-84.0|-21.0|-6.88228|-0.11464 +2016-07-01|-84.0|-22.0|-6.03339|-0.11413 +2016-07-01|-84.0|-23.0|-5.18543|-0.11363 +2016-07-01|-84.0|-24.0|-4.33836|-0.11314 +2016-07-01|-84.0|-25.0|-3.49214|-0.11266 +2016-07-01|-84.0|-26.0|-2.64675|-0.11219 +2016-07-01|-84.0|-27.0|-1.80215|-0.11174 +2016-07-01|-84.0|-28.0|-0.95832|-0.11129 +2016-07-01|-84.0|-29.0|-0.11522|-0.11086 +2016-07-01|-84.0|-30.0|0.72718|-0.11045 +2016-07-01|-84.0|-31.0|1.56891|-0.11004 +2016-07-01|-84.0|-32.0|2.41001|-0.10965 +2016-07-01|-84.0|-33.0|3.25051|-0.10927 +2016-07-01|-84.0|-34.0|4.09044|-0.1089 +2016-07-01|-84.0|-35.0|4.92984|-0.10854 +2016-07-01|-84.0|-36.0|5.76873|-0.1082 +2016-07-01|-84.0|-37.0|6.60716|-0.10787 +2016-07-01|-84.0|-38.0|7.44515|-0.10755 +2016-07-01|-84.0|-39.0|8.28275|-0.10725 +2016-07-01|-84.0|-40.0|9.11997|-0.10695 +2016-07-01|-84.0|-41.0|9.95687|-0.10667 +2016-07-01|-84.0|-42.0|10.79346|-0.1064 +2016-07-01|-84.0|-43.0|11.62979|-0.10614 +2016-07-01|-84.0|-44.0|12.46589|-0.1059 +2016-07-01|-84.0|-45.0|13.30179|-0.10567 +2016-07-01|-84.0|-46.0|14.13754|-0.10545 +2016-07-01|-84.0|-47.0|14.97315|-0.10524 +2016-07-01|-84.0|-48.0|15.80866|-0.10504 +2016-07-01|-84.0|-49.0|16.64412|-0.10486 +2016-07-01|-84.0|-50.0|17.47955|-0.10468 +2016-07-01|-84.0|-51.0|18.31499|-0.10452 +2016-07-01|-84.0|-52.0|19.15047|-0.10437 +2016-07-01|-84.0|-53.0|19.98602|-0.10423 +2016-07-01|-84.0|-54.0|20.82169|-0.1041 +2016-07-01|-84.0|-55.0|21.65749|-0.10399 +2016-07-01|-84.0|-56.0|22.49348|-0.10388 +2016-07-01|-84.0|-57.0|23.32967|-0.10378 +2016-07-01|-84.0|-58.0|24.1661|-0.1037 +2016-07-01|-84.0|-59.0|25.00282|-0.10363 +2016-07-01|-84.0|-60.0|25.83984|-0.10356 +2016-07-01|-84.0|-61.0|26.67721|-0.10351 +2016-07-01|-84.0|-62.0|27.51495|-0.10347 +2016-07-01|-84.0|-63.0|28.35311|-0.10343 +2016-07-01|-84.0|-64.0|29.19171|-0.10341 +2016-07-01|-84.0|-65.0|30.03079|-0.1034 +2016-07-01|-84.0|-66.0|30.87037|-0.10339 +2016-07-01|-84.0|-67.0|31.71051|-0.1034 +2016-07-01|-84.0|-68.0|32.55122|-0.10342 +2016-07-01|-84.0|-69.0|33.39254|-0.10344 +2016-07-01|-84.0|-70.0|34.2345|-0.10348 +2016-07-01|-84.0|-71.0|35.07715|-0.10352 +2016-07-01|-84.0|-72.0|35.9205|-0.10357 +2016-07-01|-84.0|-73.0|36.76461|-0.10364 +2016-07-01|-84.0|-74.0|37.60949|-0.10371 +2016-07-01|-84.0|-75.0|38.45518|-0.10379 +2016-07-01|-84.0|-76.0|39.30172|-0.10388 +2016-07-01|-84.0|-77.0|40.14914|-0.10397 +2016-07-01|-84.0|-78.0|40.99748|-0.10408 +2016-07-01|-84.0|-79.0|41.84677|-0.1042 +2016-07-01|-84.0|-80.0|42.69705|-0.10432 +2016-07-01|-84.0|-81.0|43.54835|-0.10445 +2016-07-01|-84.0|-82.0|44.4007|-0.10459 +2016-07-01|-84.0|-83.0|45.25415|-0.10474 +2016-07-01|-84.0|-84.0|46.10872|-0.1049 +2016-07-01|-84.0|-85.0|46.96446|-0.10507 +2016-07-01|-84.0|-86.0|47.8214|-0.10524 +2016-07-01|-84.0|-87.0|48.67958|-0.10542 +2016-07-01|-84.0|-88.0|49.53903|-0.10562 +2016-07-01|-84.0|-89.0|50.3998|-0.10582 +2016-07-01|-84.0|-90.0|51.26192|-0.10602 +2016-07-01|-84.0|-91.0|52.12543|-0.10624 +2016-07-01|-84.0|-92.0|52.99038|-0.10647 +2016-07-01|-84.0|-93.0|53.85679|-0.1067 +2016-07-01|-84.0|-94.0|54.72471|-0.10694 +2016-07-01|-84.0|-95.0|55.59419|-0.1072 +2016-07-01|-84.0|-96.0|56.46526|-0.10746 +2016-07-01|-84.0|-97.0|57.33796|-0.10772 +2016-07-01|-84.0|-98.0|58.21234|-0.108 +2016-07-01|-84.0|-99.0|59.08844|-0.10829 +2016-07-01|-84.0|-100.0|59.9663|-0.10858 +2016-07-01|-84.0|-101.0|60.84597|-0.10889 +2016-07-01|-84.0|-102.0|61.7275|-0.1092 +2016-07-01|-84.0|-103.0|62.61092|-0.10953 +2016-07-01|-84.0|-104.0|63.49629|-0.10986 +2016-07-01|-84.0|-105.0|64.38365|-0.1102 +2016-07-01|-84.0|-106.0|65.27304|-0.11056 +2016-07-01|-84.0|-107.0|66.16453|-0.11092 +2016-07-01|-84.0|-108.0|67.05815|-0.11129 +2016-07-01|-84.0|-109.0|67.95395|-0.11167 +2016-07-01|-84.0|-110.0|68.85199|-0.11206 +2016-07-01|-84.0|-111.0|69.75231|-0.11246 +2016-07-01|-84.0|-112.0|70.65497|-0.11288 +2016-07-01|-84.0|-113.0|71.56002|-0.1133 +2016-07-01|-84.0|-114.0|72.46751|-0.11373 +2016-07-01|-84.0|-115.0|73.37749|-0.11418 +2016-07-01|-84.0|-116.0|74.29001|-0.11463 +2016-07-01|-84.0|-117.0|75.20514|-0.1151 +2016-07-01|-84.0|-118.0|76.12292|-0.11558 +2016-07-01|-84.0|-119.0|77.04341|-0.11607 +2016-07-01|-84.0|-120.0|77.96667|-0.11657 +2016-07-01|-84.0|-121.0|78.89274|-0.11708 +2016-07-01|-84.0|-122.0|79.8217|-0.11761 +2016-07-01|-84.0|-123.0|80.75359|-0.11815 +2016-07-01|-84.0|-124.0|81.68846|-0.1187 +2016-07-01|-84.0|-125.0|82.62639|-0.11926 +2016-07-01|-84.0|-126.0|83.56742|-0.11983 +2016-07-01|-84.0|-127.0|84.51162|-0.12042 +2016-07-01|-84.0|-128.0|85.45904|-0.12102 +2016-07-01|-84.0|-129.0|86.40973|-0.12163 +2016-07-01|-84.0|-130.0|87.36376|-0.12226 +2016-07-01|-84.0|-131.0|88.32119|-0.1229 +2016-07-01|-84.0|-132.0|89.28207|-0.12355 +2016-07-01|-84.0|-133.0|90.24646|-0.12422 +2016-07-01|-84.0|-134.0|91.21442|-0.1249 +2016-07-01|-84.0|-135.0|92.186|-0.12559 +2016-07-01|-84.0|-136.0|93.16126|-0.1263 +2016-07-01|-84.0|-137.0|94.14027|-0.12702 +2016-07-01|-84.0|-138.0|95.12306|-0.12775 +2016-07-01|-84.0|-139.0|96.10971|-0.1285 +2016-07-01|-84.0|-140.0|97.10026|-0.12926 +2016-07-01|-84.0|-141.0|98.09476|-0.13004 +2016-07-01|-84.0|-142.0|99.09328|-0.13083 +2016-07-01|-84.0|-143.0|100.09586|-0.13164 +2016-07-01|-84.0|-144.0|101.10255|-0.13246 +2016-07-01|-84.0|-145.0|102.1134|-0.13329 +2016-07-01|-84.0|-146.0|103.12847|-0.13414 +2016-07-01|-84.0|-147.0|104.14779|-0.135 +2016-07-01|-84.0|-148.0|105.17142|-0.13588 +2016-07-01|-84.0|-149.0|106.19939|-0.13677 +2016-07-01|-84.0|-150.0|107.23175|-0.13767 +2016-07-01|-84.0|-151.0|108.26854|-0.13859 +2016-07-01|-84.0|-152.0|109.3098|-0.13952 +2016-07-01|-84.0|-153.0|110.35556|-0.14047 +2016-07-01|-84.0|-154.0|111.40586|-0.14143 +2016-07-01|-84.0|-155.0|112.46072|-0.1424 +2016-07-01|-84.0|-156.0|113.52019|-0.14338 +2016-07-01|-84.0|-157.0|114.58428|-0.14438 +2016-07-01|-84.0|-158.0|115.65301|-0.14539 +2016-07-01|-84.0|-159.0|116.72642|-0.14641 +2016-07-01|-84.0|-160.0|117.80451|-0.14744 +2016-07-01|-84.0|-161.0|118.8873|-0.14848 +2016-07-01|-84.0|-162.0|119.9748|-0.14954 +2016-07-01|-84.0|-163.0|121.06703|-0.1506 +2016-07-01|-84.0|-164.0|122.16398|-0.15168 +2016-07-01|-84.0|-165.0|123.26565|-0.15276 +2016-07-01|-84.0|-166.0|124.37205|-0.15386 +2016-07-01|-84.0|-167.0|125.48317|-0.15496 +2016-07-01|-84.0|-168.0|126.59899|-0.15607 +2016-07-01|-84.0|-169.0|127.7195|-0.15719 +2016-07-01|-84.0|-170.0|128.84469|-0.15831 +2016-07-01|-84.0|-171.0|129.97452|-0.15944 +2016-07-01|-84.0|-172.0|131.10898|-0.16057 +2016-07-01|-84.0|-173.0|132.24803|-0.16171 +2016-07-01|-84.0|-174.0|133.39163|-0.16286 +2016-07-01|-84.0|-175.0|134.53974|-0.164 +2016-07-01|-84.0|-176.0|135.69232|-0.16515 +2016-07-01|-84.0|-177.0|136.84932|-0.1663 +2016-07-01|-84.0|-178.0|138.01068|-0.16745 +2016-07-01|-84.0|-179.0|139.17634|-0.1686 +2016-07-01|-85.0|0.0|-25.66256|-0.13144 +2016-07-01|-85.0|1.0|-26.55632|-0.13204 +2016-07-01|-85.0|2.0|-27.45137|-0.13265 +2016-07-01|-85.0|3.0|-28.34775|-0.13326 +2016-07-01|-85.0|4.0|-29.24546|-0.13388 +2016-07-01|-85.0|5.0|-30.14453|-0.13451 +2016-07-01|-85.0|6.0|-31.04498|-0.13514 +2016-07-01|-85.0|7.0|-31.94682|-0.13577 +2016-07-01|-85.0|8.0|-32.85007|-0.13641 +2016-07-01|-85.0|9.0|-33.75475|-0.13705 +2016-07-01|-85.0|10.0|-34.66088|-0.13769 +2016-07-01|-85.0|11.0|-35.56848|-0.13834 +2016-07-01|-85.0|12.0|-36.47755|-0.139 +2016-07-01|-85.0|13.0|-37.38813|-0.13965 +2016-07-01|-85.0|14.0|-38.30023|-0.14031 +2016-07-01|-85.0|15.0|-39.21385|-0.14097 +2016-07-01|-85.0|16.0|-40.12903|-0.14163 +2016-07-01|-85.0|17.0|-41.04577|-0.1423 +2016-07-01|-85.0|18.0|-41.9641|-0.14297 +2016-07-01|-85.0|19.0|-42.88402|-0.14364 +2016-07-01|-85.0|20.0|-43.80555|-0.14431 +2016-07-01|-85.0|21.0|-44.72872|-0.14498 +2016-07-01|-85.0|22.0|-45.65353|-0.14566 +2016-07-01|-85.0|23.0|-46.58|-0.14633 +2016-07-01|-85.0|24.0|-47.50815|-0.14701 +2016-07-01|-85.0|25.0|-48.43799|-0.14768 +2016-07-01|-85.0|26.0|-49.36954|-0.14836 +2016-07-01|-85.0|27.0|-50.30281|-0.14904 +2016-07-01|-85.0|28.0|-51.23781|-0.14972 +2016-07-01|-85.0|29.0|-52.17458|-0.1504 +2016-07-01|-85.0|30.0|-53.11311|-0.15107 +2016-07-01|-85.0|31.0|-54.05342|-0.15175 +2016-07-01|-85.0|32.0|-54.99554|-0.15243 +2016-07-01|-85.0|33.0|-55.93947|-0.1531 +2016-07-01|-85.0|34.0|-56.88523|-0.15378 +2016-07-01|-85.0|35.0|-57.83285|-0.15445 +2016-07-01|-85.0|36.0|-58.78232|-0.15513 +2016-07-01|-85.0|37.0|-59.73367|-0.1558 +2016-07-01|-85.0|38.0|-60.68692|-0.15647 +2016-07-01|-85.0|39.0|-61.64208|-0.15714 +2016-07-01|-85.0|40.0|-62.59917|-0.15781 +2016-07-01|-85.0|41.0|-63.5582|-0.15847 +2016-07-01|-85.0|42.0|-64.5192|-0.15914 +2016-07-01|-85.0|43.0|-65.48217|-0.1598 +2016-07-01|-85.0|44.0|-66.44713|-0.16046 +2016-07-01|-85.0|45.0|-67.41411|-0.16112 +2016-07-01|-85.0|46.0|-68.38312|-0.16177 +2016-07-01|-85.0|47.0|-69.35417|-0.16243 +2016-07-01|-85.0|48.0|-70.32729|-0.16308 +2016-07-01|-85.0|49.0|-71.30249|-0.16373 +2016-07-01|-85.0|50.0|-72.27979|-0.16437 +2016-07-01|-85.0|51.0|-73.25921|-0.16501 +2016-07-01|-85.0|52.0|-74.24077|-0.16565 +2016-07-01|-85.0|53.0|-75.22448|-0.16629 +2016-07-01|-85.0|54.0|-76.21037|-0.16692 +2016-07-01|-85.0|55.0|-77.19845|-0.16756 +2016-07-01|-85.0|56.0|-78.18874|-0.16818 +2016-07-01|-85.0|57.0|-79.18127|-0.16881 +2016-07-01|-85.0|58.0|-80.17605|-0.16943 +2016-07-01|-85.0|59.0|-81.17309|-0.17005 +2016-07-01|-85.0|60.0|-82.17243|-0.17066 +2016-07-01|-85.0|61.0|-83.17408|-0.17127 +2016-07-01|-85.0|62.0|-84.17806|-0.17188 +2016-07-01|-85.0|63.0|-85.18439|-0.17248 +2016-07-01|-85.0|64.0|-86.19309|-0.17308 +2016-07-01|-85.0|65.0|-87.20419|-0.17367 +2016-07-01|-85.0|66.0|-88.21769|-0.17427 +2016-07-01|-85.0|67.0|-89.23362|-0.17485 +2016-07-01|-85.0|68.0|-90.25201|-0.17544 +2016-07-01|-85.0|69.0|-91.27287|-0.17602 +2016-07-01|-85.0|70.0|-92.29621|-0.17659 +2016-07-01|-85.0|71.0|-93.32207|-0.17716 +2016-07-01|-85.0|72.0|-94.35046|-0.17773 +2016-07-01|-85.0|73.0|-95.38141|-0.17829 +2016-07-01|-85.0|74.0|-96.41492|-0.17884 +2016-07-01|-85.0|75.0|-97.45102|-0.17939 +2016-07-01|-85.0|76.0|-98.48973|-0.17994 +2016-07-01|-85.0|77.0|-99.53106|-0.18048 +2016-07-01|-85.0|78.0|-100.57504|-0.18102 +2016-07-01|-85.0|79.0|-101.62168|-0.18155 +2016-07-01|-85.0|80.0|-102.67101|-0.18207 +2016-07-01|-85.0|81.0|-103.72303|-0.18259 +2016-07-01|-85.0|82.0|-104.77776|-0.18311 +2016-07-01|-85.0|83.0|-105.83522|-0.18361 +2016-07-01|-85.0|84.0|-106.89543|-0.18412 +2016-07-01|-85.0|85.0|-107.9584|-0.18461 +2016-07-01|-85.0|86.0|-109.02413|-0.1851 +2016-07-01|-85.0|87.0|-110.09266|-0.18558 +2016-07-01|-85.0|88.0|-111.16398|-0.18606 +2016-07-01|-85.0|89.0|-112.23811|-0.18652 +2016-07-01|-85.0|90.0|-113.31505|-0.18699 +2016-07-01|-85.0|91.0|-114.39483|-0.18744 +2016-07-01|-85.0|92.0|-115.47744|-0.18788 +2016-07-01|-85.0|93.0|-116.56289|-0.18832 +2016-07-01|-85.0|94.0|-117.65119|-0.18875 +2016-07-01|-85.0|95.0|-118.74235|-0.18917 +2016-07-01|-85.0|96.0|-119.83635|-0.18958 +2016-07-01|-85.0|97.0|-120.93322|-0.18998 +2016-07-01|-85.0|98.0|-122.03294|-0.19038 +2016-07-01|-85.0|99.0|-123.13552|-0.19076 +2016-07-01|-85.0|100.0|-124.24095|-0.19113 +2016-07-01|-85.0|101.0|-125.34922|-0.1915 +2016-07-01|-85.0|102.0|-126.46034|-0.19185 +2016-07-01|-85.0|103.0|-127.57429|-0.19219 +2016-07-01|-85.0|104.0|-128.69106|-0.19252 +2016-07-01|-85.0|105.0|-129.81065|-0.19284 +2016-07-01|-85.0|106.0|-130.93302|-0.19315 +2016-07-01|-85.0|107.0|-132.05818|-0.19344 +2016-07-01|-85.0|108.0|-133.1861|-0.19372 +2016-07-01|-85.0|109.0|-134.31676|-0.19399 +2016-07-01|-85.0|110.0|-135.45013|-0.19425 +2016-07-01|-85.0|111.0|-136.5862|-0.19449 +2016-07-01|-85.0|112.0|-137.72493|-0.19472 +2016-07-01|-85.0|113.0|-138.8663|-0.19493 +2016-07-01|-85.0|114.0|-140.01027|-0.19513 +2016-07-01|-85.0|115.0|-141.15681|-0.19531 +2016-07-01|-85.0|116.0|-142.30588|-0.19548 +2016-07-01|-85.0|117.0|-143.45744|-0.19563 +2016-07-01|-85.0|118.0|-144.61144|-0.19577 +2016-07-01|-85.0|119.0|-145.76785|-0.19589 +2016-07-01|-85.0|120.0|-146.92662|-0.19599 +2016-07-01|-85.0|121.0|-148.08769|-0.19607 +2016-07-01|-85.0|122.0|-149.25101|-0.19614 +2016-07-01|-85.0|123.0|-150.41652|-0.19619 +2016-07-01|-85.0|124.0|-151.58418|-0.19622 +2016-07-01|-85.0|125.0|-152.75391|-0.19623 +2016-07-01|-85.0|126.0|-153.92565|-0.19623 +2016-07-01|-85.0|127.0|-155.09934|-0.1962 +2016-07-01|-85.0|128.0|-156.2749|-0.19616 +2016-07-01|-85.0|129.0|-157.45227|-0.19609 +2016-07-01|-85.0|130.0|-158.63137|-0.19601 +2016-07-01|-85.0|131.0|-159.81213|-0.1959 +2016-07-01|-85.0|132.0|-160.99446|-0.19578 +2016-07-01|-85.0|133.0|-162.17828|-0.19563 +2016-07-01|-85.0|134.0|-163.36352|-0.19547 +2016-07-01|-85.0|135.0|-164.55007|-0.19528 +2016-07-01|-85.0|136.0|-165.73786|-0.19507 +2016-07-01|-85.0|137.0|-166.92679|-0.19484 +2016-07-01|-85.0|138.0|-168.11678|-0.19459 +2016-07-01|-85.0|139.0|-169.30772|-0.19432 +2016-07-01|-85.0|140.0|-170.49952|-0.19402 +2016-07-01|-85.0|141.0|-171.69209|-0.19371 +2016-07-01|-85.0|142.0|-172.88531|-0.19337 +2016-07-01|-85.0|143.0|-174.0791|-0.19302 +2016-07-01|-85.0|144.0|-175.27335|-0.19264 +2016-07-01|-85.0|145.0|-176.46794|-0.19224 +2016-07-01|-85.0|146.0|-177.66279|-0.19182 +2016-07-01|-85.0|147.0|-178.85778|-0.19138 +2016-07-01|-85.0|148.0|179.9472|-0.19092 +2016-07-01|-85.0|149.0|178.75224|-0.19044 +2016-07-01|-85.0|150.0|177.55747|-0.18993 +2016-07-01|-85.0|151.0|176.36299|-0.18941 +2016-07-01|-85.0|152.0|175.1689|-0.18887 +2016-07-01|-85.0|153.0|173.97533|-0.18831 +2016-07-01|-85.0|154.0|172.78237|-0.18773 +2016-07-01|-85.0|155.0|171.59014|-0.18714 +2016-07-01|-85.0|156.0|170.39874|-0.18652 +2016-07-01|-85.0|157.0|169.20828|-0.18589 +2016-07-01|-85.0|158.0|168.01888|-0.18524 +2016-07-01|-85.0|159.0|166.83063|-0.18457 +2016-07-01|-85.0|160.0|165.64364|-0.18388 +2016-07-01|-85.0|161.0|164.45803|-0.18318 +2016-07-01|-85.0|162.0|163.27388|-0.18247 +2016-07-01|-85.0|163.0|162.09131|-0.18174 +2016-07-01|-85.0|164.0|160.91041|-0.181 +2016-07-01|-85.0|165.0|159.73129|-0.18024 +2016-07-01|-85.0|166.0|158.55404|-0.17947 +2016-07-01|-85.0|167.0|157.37875|-0.17869 +2016-07-01|-85.0|168.0|156.20552|-0.17789 +2016-07-01|-85.0|169.0|155.03445|-0.17709 +2016-07-01|-85.0|170.0|153.86561|-0.17627 +2016-07-01|-85.0|171.0|152.69911|-0.17544 +2016-07-01|-85.0|172.0|151.53501|-0.17461 +2016-07-01|-85.0|173.0|150.37341|-0.17376 +2016-07-01|-85.0|174.0|149.21438|-0.17291 +2016-07-01|-85.0|175.0|148.05801|-0.17205 +2016-07-01|-85.0|176.0|146.90436|-0.17119 +2016-07-01|-85.0|177.0|145.7535|-0.17031 +2016-07-01|-85.0|178.0|144.60551|-0.16944 +2016-07-01|-85.0|179.0|143.46045|-0.16855 +2016-07-01|-85.0|-1.0|-24.77009|-0.13084 +2016-07-01|-85.0|-2.0|-23.87887|-0.13025 +2016-07-01|-85.0|-3.0|-22.98889|-0.12966 +2016-07-01|-85.0|-4.0|-22.10014|-0.12908 +2016-07-01|-85.0|-5.0|-21.21258|-0.12851 +2016-07-01|-85.0|-6.0|-20.32619|-0.12794 +2016-07-01|-85.0|-7.0|-19.44096|-0.12738 +2016-07-01|-85.0|-8.0|-18.55686|-0.12683 +2016-07-01|-85.0|-9.0|-17.67388|-0.12628 +2016-07-01|-85.0|-10.0|-16.79198|-0.12575 +2016-07-01|-85.0|-11.0|-15.91114|-0.12522 +2016-07-01|-85.0|-12.0|-15.03135|-0.12469 +2016-07-01|-85.0|-13.0|-14.15258|-0.12418 +2016-07-01|-85.0|-14.0|-13.27479|-0.12367 +2016-07-01|-85.0|-15.0|-12.39798|-0.12318 +2016-07-01|-85.0|-16.0|-11.52212|-0.12269 +2016-07-01|-85.0|-17.0|-10.64718|-0.12221 +2016-07-01|-85.0|-18.0|-9.77313|-0.12173 +2016-07-01|-85.0|-19.0|-8.89995|-0.12127 +2016-07-01|-85.0|-20.0|-8.02762|-0.12082 +2016-07-01|-85.0|-21.0|-7.1561|-0.12037 +2016-07-01|-85.0|-22.0|-6.28538|-0.11993 +2016-07-01|-85.0|-23.0|-5.41543|-0.11951 +2016-07-01|-85.0|-24.0|-4.54621|-0.11909 +2016-07-01|-85.0|-25.0|-3.67771|-0.11868 +2016-07-01|-85.0|-26.0|-2.80989|-0.11828 +2016-07-01|-85.0|-27.0|-1.94273|-0.1179 +2016-07-01|-85.0|-28.0|-1.0762|-0.11752 +2016-07-01|-85.0|-29.0|-0.21027|-0.11715 +2016-07-01|-85.0|-30.0|0.65508|-0.11679 +2016-07-01|-85.0|-31.0|1.51988|-0.11644 +2016-07-01|-85.0|-32.0|2.38417|-0.1161 +2016-07-01|-85.0|-33.0|3.24797|-0.11577 +2016-07-01|-85.0|-34.0|4.11131|-0.11545 +2016-07-01|-85.0|-35.0|4.97421|-0.11515 +2016-07-01|-85.0|-36.0|5.83672|-0.11485 +2016-07-01|-85.0|-37.0|6.69885|-0.11456 +2016-07-01|-85.0|-38.0|7.56064|-0.11428 +2016-07-01|-85.0|-39.0|8.42211|-0.11401 +2016-07-01|-85.0|-40.0|9.2833|-0.11376 +2016-07-01|-85.0|-41.0|10.14423|-0.11351 +2016-07-01|-85.0|-42.0|11.00494|-0.11327 +2016-07-01|-85.0|-43.0|11.86546|-0.11304 +2016-07-01|-85.0|-44.0|12.72581|-0.11283 +2016-07-01|-85.0|-45.0|13.58602|-0.11262 +2016-07-01|-85.0|-46.0|14.44613|-0.11242 +2016-07-01|-85.0|-47.0|15.30616|-0.11223 +2016-07-01|-85.0|-48.0|16.16615|-0.11206 +2016-07-01|-85.0|-49.0|17.02613|-0.11189 +2016-07-01|-85.0|-50.0|17.88612|-0.11173 +2016-07-01|-85.0|-51.0|18.74616|-0.11159 +2016-07-01|-85.0|-52.0|19.60627|-0.11145 +2016-07-01|-85.0|-53.0|20.4665|-0.11132 +2016-07-01|-85.0|-54.0|21.32686|-0.11121 +2016-07-01|-85.0|-55.0|22.18739|-0.1111 +2016-07-01|-85.0|-56.0|23.04812|-0.111 +2016-07-01|-85.0|-57.0|23.90909|-0.11091 +2016-07-01|-85.0|-58.0|24.77031|-0.11083 +2016-07-01|-85.0|-59.0|25.63182|-0.11076 +2016-07-01|-85.0|-60.0|26.49366|-0.1107 +2016-07-01|-85.0|-61.0|27.35585|-0.11065 +2016-07-01|-85.0|-62.0|28.21843|-0.11061 +2016-07-01|-85.0|-63.0|29.08142|-0.11058 +2016-07-01|-85.0|-64.0|29.94486|-0.11055 +2016-07-01|-85.0|-65.0|30.80877|-0.11054 +2016-07-01|-85.0|-66.0|31.6732|-0.11054 +2016-07-01|-85.0|-67.0|32.53816|-0.11054 +2016-07-01|-85.0|-68.0|33.40369|-0.11055 +2016-07-01|-85.0|-69.0|34.26983|-0.11057 +2016-07-01|-85.0|-70.0|35.1366|-0.11061 +2016-07-01|-85.0|-71.0|36.00404|-0.11064 +2016-07-01|-85.0|-72.0|36.87217|-0.11069 +2016-07-01|-85.0|-73.0|37.74103|-0.11075 +2016-07-01|-85.0|-74.0|38.61065|-0.11082 +2016-07-01|-85.0|-75.0|39.48107|-0.11089 +2016-07-01|-85.0|-76.0|40.35231|-0.11097 +2016-07-01|-85.0|-77.0|41.2244|-0.11106 +2016-07-01|-85.0|-78.0|42.09738|-0.11116 +2016-07-01|-85.0|-79.0|42.97129|-0.11127 +2016-07-01|-85.0|-80.0|43.84615|-0.11139 +2016-07-01|-85.0|-81.0|44.72199|-0.11151 +2016-07-01|-85.0|-82.0|45.59886|-0.11165 +2016-07-01|-85.0|-83.0|46.47678|-0.11179 +2016-07-01|-85.0|-84.0|47.35578|-0.11194 +2016-07-01|-85.0|-85.0|48.23591|-0.1121 +2016-07-01|-85.0|-86.0|49.11719|-0.11226 +2016-07-01|-85.0|-87.0|49.99965|-0.11244 +2016-07-01|-85.0|-88.0|50.88334|-0.11262 +2016-07-01|-85.0|-89.0|51.76829|-0.11282 +2016-07-01|-85.0|-90.0|52.65453|-0.11302 +2016-07-01|-85.0|-91.0|53.54209|-0.11322 +2016-07-01|-85.0|-92.0|54.43101|-0.11344 +2016-07-01|-85.0|-93.0|55.32134|-0.11367 +2016-07-01|-85.0|-94.0|56.21309|-0.1139 +2016-07-01|-85.0|-95.0|57.10631|-0.11414 +2016-07-01|-85.0|-96.0|58.00104|-0.11439 +2016-07-01|-85.0|-97.0|58.89732|-0.11465 +2016-07-01|-85.0|-98.0|59.79517|-0.11492 +2016-07-01|-85.0|-99.0|60.69463|-0.1152 +2016-07-01|-85.0|-100.0|61.59575|-0.11548 +2016-07-01|-85.0|-101.0|62.49857|-0.11577 +2016-07-01|-85.0|-102.0|63.40311|-0.11608 +2016-07-01|-85.0|-103.0|64.30942|-0.11639 +2016-07-01|-85.0|-104.0|65.21753|-0.11671 +2016-07-01|-85.0|-105.0|66.12749|-0.11703 +2016-07-01|-85.0|-106.0|67.03934|-0.11737 +2016-07-01|-85.0|-107.0|67.95311|-0.11772 +2016-07-01|-85.0|-108.0|68.86884|-0.11807 +2016-07-01|-85.0|-109.0|69.78658|-0.11844 +2016-07-01|-85.0|-110.0|70.70636|-0.11881 +2016-07-01|-85.0|-111.0|71.62823|-0.11919 +2016-07-01|-85.0|-112.0|72.55222|-0.11958 +2016-07-01|-85.0|-113.0|73.47837|-0.11998 +2016-07-01|-85.0|-114.0|74.40673|-0.1204 +2016-07-01|-85.0|-115.0|75.33734|-0.12082 +2016-07-01|-85.0|-116.0|76.27024|-0.12124 +2016-07-01|-85.0|-117.0|77.20547|-0.12168 +2016-07-01|-85.0|-118.0|78.14307|-0.12213 +2016-07-01|-85.0|-119.0|79.08308|-0.12259 +2016-07-01|-85.0|-120.0|80.02555|-0.12306 +2016-07-01|-85.0|-121.0|80.97051|-0.12354 +2016-07-01|-85.0|-122.0|81.91802|-0.12402 +2016-07-01|-85.0|-123.0|82.8681|-0.12452 +2016-07-01|-85.0|-124.0|83.8208|-0.12503 +2016-07-01|-85.0|-125.0|84.77616|-0.12555 +2016-07-01|-85.0|-126.0|85.73423|-0.12608 +2016-07-01|-85.0|-127.0|86.69504|-0.12661 +2016-07-01|-85.0|-128.0|87.65863|-0.12716 +2016-07-01|-85.0|-129.0|88.62505|-0.12772 +2016-07-01|-85.0|-130.0|89.59434|-0.12829 +2016-07-01|-85.0|-131.0|90.56653|-0.12887 +2016-07-01|-85.0|-132.0|91.54166|-0.12946 +2016-07-01|-85.0|-133.0|92.51978|-0.13006 +2016-07-01|-85.0|-134.0|93.50092|-0.13067 +2016-07-01|-85.0|-135.0|94.48512|-0.13129 +2016-07-01|-85.0|-136.0|95.47241|-0.13192 +2016-07-01|-85.0|-137.0|96.46284|-0.13256 +2016-07-01|-85.0|-138.0|97.45644|-0.13321 +2016-07-01|-85.0|-139.0|98.45324|-0.13387 +2016-07-01|-85.0|-140.0|99.45327|-0.13454 +2016-07-01|-85.0|-141.0|100.45658|-0.13522 +2016-07-01|-85.0|-142.0|101.46319|-0.13592 +2016-07-01|-85.0|-143.0|102.47313|-0.13662 +2016-07-01|-85.0|-144.0|103.48644|-0.13733 +2016-07-01|-85.0|-145.0|104.50314|-0.13805 +2016-07-01|-85.0|-146.0|105.52325|-0.13878 +2016-07-01|-85.0|-147.0|106.54682|-0.13952 +2016-07-01|-85.0|-148.0|107.57385|-0.14027 +2016-07-01|-85.0|-149.0|108.60438|-0.14103 +2016-07-01|-85.0|-150.0|109.63842|-0.1418 +2016-07-01|-85.0|-151.0|110.676|-0.14258 +2016-07-01|-85.0|-152.0|111.71713|-0.14336 +2016-07-01|-85.0|-153.0|112.76183|-0.14416 +2016-07-01|-85.0|-154.0|113.81012|-0.14496 +2016-07-01|-85.0|-155.0|114.862|-0.14577 +2016-07-01|-85.0|-156.0|115.91749|-0.14659 +2016-07-01|-85.0|-157.0|116.9766|-0.14742 +2016-07-01|-85.0|-158.0|118.03933|-0.14825 +2016-07-01|-85.0|-159.0|119.10569|-0.14909 +2016-07-01|-85.0|-160.0|120.17569|-0.14994 +2016-07-01|-85.0|-161.0|121.24931|-0.15079 +2016-07-01|-85.0|-162.0|122.32655|-0.15165 +2016-07-01|-85.0|-163.0|123.40743|-0.15252 +2016-07-01|-85.0|-164.0|124.49191|-0.15339 +2016-07-01|-85.0|-165.0|125.58|-0.15427 +2016-07-01|-85.0|-166.0|126.67168|-0.15515 +2016-07-01|-85.0|-167.0|127.76694|-0.15603 +2016-07-01|-85.0|-168.0|128.86575|-0.15692 +2016-07-01|-85.0|-169.0|129.9681|-0.15781 +2016-07-01|-85.0|-170.0|131.07396|-0.1587 +2016-07-01|-85.0|-171.0|132.18331|-0.1596 +2016-07-01|-85.0|-172.0|133.29611|-0.1605 +2016-07-01|-85.0|-173.0|134.41234|-0.16139 +2016-07-01|-85.0|-174.0|135.53195|-0.16229 +2016-07-01|-85.0|-175.0|136.65491|-0.16319 +2016-07-01|-85.0|-176.0|137.78118|-0.16409 +2016-07-01|-85.0|-177.0|138.91071|-0.16499 +2016-07-01|-85.0|-178.0|140.04346|-0.16588 +2016-07-01|-85.0|-179.0|141.17936|-0.16678 +2016-07-01|-86.0|0.0|-26.42122|-0.13515 +2016-07-01|-86.0|1.0|-27.33379|-0.13564 +2016-07-01|-86.0|2.0|-28.24745|-0.13613 +2016-07-01|-86.0|3.0|-29.16221|-0.13663 +2016-07-01|-86.0|4.0|-30.07809|-0.13713 +2016-07-01|-86.0|5.0|-30.99511|-0.13763 +2016-07-01|-86.0|6.0|-31.91329|-0.13814 +2016-07-01|-86.0|7.0|-32.83264|-0.13865 +2016-07-01|-86.0|8.0|-33.75318|-0.13917 +2016-07-01|-86.0|9.0|-34.67494|-0.13968 +2016-07-01|-86.0|10.0|-35.59792|-0.14021 +2016-07-01|-86.0|11.0|-36.52213|-0.14073 +2016-07-01|-86.0|12.0|-37.44761|-0.14126 +2016-07-01|-86.0|13.0|-38.37436|-0.14179 +2016-07-01|-86.0|14.0|-39.3024|-0.14232 +2016-07-01|-86.0|15.0|-40.23175|-0.14286 +2016-07-01|-86.0|16.0|-41.16242|-0.14339 +2016-07-01|-86.0|17.0|-42.09442|-0.14393 +2016-07-01|-86.0|18.0|-43.02778|-0.14448 +2016-07-01|-86.0|19.0|-43.9625|-0.14502 +2016-07-01|-86.0|20.0|-44.89861|-0.14556 +2016-07-01|-86.0|21.0|-45.83611|-0.14611 +2016-07-01|-86.0|22.0|-46.77503|-0.14666 +2016-07-01|-86.0|23.0|-47.71537|-0.14721 +2016-07-01|-86.0|24.0|-48.65716|-0.14776 +2016-07-01|-86.0|25.0|-49.6004|-0.14831 +2016-07-01|-86.0|26.0|-50.54512|-0.14886 +2016-07-01|-86.0|27.0|-51.49132|-0.14941 +2016-07-01|-86.0|28.0|-52.43902|-0.14997 +2016-07-01|-86.0|29.0|-53.38823|-0.15052 +2016-07-01|-86.0|30.0|-54.33898|-0.15107 +2016-07-01|-86.0|31.0|-55.29126|-0.15163 +2016-07-01|-86.0|32.0|-56.24511|-0.15218 +2016-07-01|-86.0|33.0|-57.20052|-0.15273 +2016-07-01|-86.0|34.0|-58.15752|-0.15329 +2016-07-01|-86.0|35.0|-59.11612|-0.15384 +2016-07-01|-86.0|36.0|-60.07633|-0.15439 +2016-07-01|-86.0|37.0|-61.03817|-0.15494 +2016-07-01|-86.0|38.0|-62.00164|-0.15549 +2016-07-01|-86.0|39.0|-62.96678|-0.15604 +2016-07-01|-86.0|40.0|-63.93358|-0.15659 +2016-07-01|-86.0|41.0|-64.90206|-0.15714 +2016-07-01|-86.0|42.0|-65.87224|-0.15768 +2016-07-01|-86.0|43.0|-66.84412|-0.15823 +2016-07-01|-86.0|44.0|-67.81773|-0.15877 +2016-07-01|-86.0|45.0|-68.79308|-0.15931 +2016-07-01|-86.0|46.0|-69.77018|-0.15985 +2016-07-01|-86.0|47.0|-70.74904|-0.16039 +2016-07-01|-86.0|48.0|-71.72968|-0.16092 +2016-07-01|-86.0|49.0|-72.71211|-0.16146 +2016-07-01|-86.0|50.0|-73.69634|-0.16199 +2016-07-01|-86.0|51.0|-74.6824|-0.16252 +2016-07-01|-86.0|52.0|-75.67028|-0.16304 +2016-07-01|-86.0|53.0|-76.66001|-0.16357 +2016-07-01|-86.0|54.0|-77.6516|-0.16409 +2016-07-01|-86.0|55.0|-78.64506|-0.16461 +2016-07-01|-86.0|56.0|-79.6404|-0.16512 +2016-07-01|-86.0|57.0|-80.63764|-0.16564 +2016-07-01|-86.0|58.0|-81.63679|-0.16614 +2016-07-01|-86.0|59.0|-82.63786|-0.16665 +2016-07-01|-86.0|60.0|-83.64087|-0.16715 +2016-07-01|-86.0|61.0|-84.64583|-0.16765 +2016-07-01|-86.0|62.0|-85.65275|-0.16815 +2016-07-01|-86.0|63.0|-86.66164|-0.16864 +2016-07-01|-86.0|64.0|-87.67252|-0.16913 +2016-07-01|-86.0|65.0|-88.6854|-0.16962 +2016-07-01|-86.0|66.0|-89.70029|-0.1701 +2016-07-01|-86.0|67.0|-90.71719|-0.17058 +2016-07-01|-86.0|68.0|-91.73613|-0.17105 +2016-07-01|-86.0|69.0|-92.75711|-0.17152 +2016-07-01|-86.0|70.0|-93.78015|-0.17199 +2016-07-01|-86.0|71.0|-94.80525|-0.17245 +2016-07-01|-86.0|72.0|-95.83243|-0.1729 +2016-07-01|-86.0|73.0|-96.86169|-0.17336 +2016-07-01|-86.0|74.0|-97.89304|-0.1738 +2016-07-01|-86.0|75.0|-98.9265|-0.17425 +2016-07-01|-86.0|76.0|-99.96207|-0.17468 +2016-07-01|-86.0|77.0|-100.99975|-0.17511 +2016-07-01|-86.0|78.0|-102.03957|-0.17554 +2016-07-01|-86.0|79.0|-103.08152|-0.17596 +2016-07-01|-86.0|80.0|-104.12561|-0.17638 +2016-07-01|-86.0|81.0|-105.17185|-0.17679 +2016-07-01|-86.0|82.0|-106.22025|-0.17719 +2016-07-01|-86.0|83.0|-107.2708|-0.17759 +2016-07-01|-86.0|84.0|-108.32351|-0.17798 +2016-07-01|-86.0|85.0|-109.37839|-0.17837 +2016-07-01|-86.0|86.0|-110.43544|-0.17875 +2016-07-01|-86.0|87.0|-111.49466|-0.17912 +2016-07-01|-86.0|88.0|-112.55605|-0.17949 +2016-07-01|-86.0|89.0|-113.61962|-0.17985 +2016-07-01|-86.0|90.0|-114.68536|-0.1802 +2016-07-01|-86.0|91.0|-115.75327|-0.18054 +2016-07-01|-86.0|92.0|-116.82335|-0.18088 +2016-07-01|-86.0|93.0|-117.89559|-0.18121 +2016-07-01|-86.0|94.0|-118.97|-0.18153 +2016-07-01|-86.0|95.0|-120.04657|-0.18185 +2016-07-01|-86.0|96.0|-121.12529|-0.18215 +2016-07-01|-86.0|97.0|-122.20615|-0.18245 +2016-07-01|-86.0|98.0|-123.28915|-0.18274 +2016-07-01|-86.0|99.0|-124.37428|-0.18302 +2016-07-01|-86.0|100.0|-125.46153|-0.18329 +2016-07-01|-86.0|101.0|-126.55088|-0.18355 +2016-07-01|-86.0|102.0|-127.64232|-0.18381 +2016-07-01|-86.0|103.0|-128.73584|-0.18405 +2016-07-01|-86.0|104.0|-129.83142|-0.18428 +2016-07-01|-86.0|105.0|-130.92904|-0.18451 +2016-07-01|-86.0|106.0|-132.02869|-0.18472 +2016-07-01|-86.0|107.0|-133.13035|-0.18492 +2016-07-01|-86.0|108.0|-134.234|-0.18512 +2016-07-01|-86.0|109.0|-135.33961|-0.1853 +2016-07-01|-86.0|110.0|-136.44716|-0.18547 +2016-07-01|-86.0|111.0|-137.55662|-0.18563 +2016-07-01|-86.0|112.0|-138.66797|-0.18578 +2016-07-01|-86.0|113.0|-139.78118|-0.18591 +2016-07-01|-86.0|114.0|-140.89622|-0.18604 +2016-07-01|-86.0|115.0|-142.01306|-0.18615 +2016-07-01|-86.0|116.0|-143.13166|-0.18625 +2016-07-01|-86.0|117.0|-144.25199|-0.18634 +2016-07-01|-86.0|118.0|-145.37401|-0.18641 +2016-07-01|-86.0|119.0|-146.49769|-0.18648 +2016-07-01|-86.0|120.0|-147.62299|-0.18653 +2016-07-01|-86.0|121.0|-148.74986|-0.18656 +2016-07-01|-86.0|122.0|-149.87826|-0.18659 +2016-07-01|-86.0|123.0|-151.00815|-0.1866 +2016-07-01|-86.0|124.0|-152.13949|-0.18659 +2016-07-01|-86.0|125.0|-153.27222|-0.18657 +2016-07-01|-86.0|126.0|-154.4063|-0.18654 +2016-07-01|-86.0|127.0|-155.54167|-0.1865 +2016-07-01|-86.0|128.0|-156.6783|-0.18644 +2016-07-01|-86.0|129.0|-157.81611|-0.18636 +2016-07-01|-86.0|130.0|-158.95506|-0.18627 +2016-07-01|-86.0|131.0|-160.0951|-0.18617 +2016-07-01|-86.0|132.0|-161.23615|-0.18605 +2016-07-01|-86.0|133.0|-162.37818|-0.18592 +2016-07-01|-86.0|134.0|-163.52111|-0.18577 +2016-07-01|-86.0|135.0|-164.66489|-0.18561 +2016-07-01|-86.0|136.0|-165.80945|-0.18544 +2016-07-01|-86.0|137.0|-166.95472|-0.18525 +2016-07-01|-86.0|138.0|-168.10066|-0.18504 +2016-07-01|-86.0|139.0|-169.24718|-0.18482 +2016-07-01|-86.0|140.0|-170.39422|-0.18458 +2016-07-01|-86.0|141.0|-171.54172|-0.18433 +2016-07-01|-86.0|142.0|-172.6896|-0.18407 +2016-07-01|-86.0|143.0|-173.83781|-0.18379 +2016-07-01|-86.0|144.0|-174.98626|-0.18349 +2016-07-01|-86.0|145.0|-176.13488|-0.18318 +2016-07-01|-86.0|146.0|-177.28362|-0.18286 +2016-07-01|-86.0|147.0|-178.43238|-0.18252 +2016-07-01|-86.0|148.0|-179.58111|-0.18217 +2016-07-01|-86.0|149.0|179.27027|-0.18181 +2016-07-01|-86.0|150.0|178.12183|-0.18143 +2016-07-01|-86.0|151.0|176.97365|-0.18103 +2016-07-01|-86.0|152.0|175.8258|-0.18063 +2016-07-01|-86.0|153.0|174.67835|-0.18021 +2016-07-01|-86.0|154.0|173.53137|-0.17978 +2016-07-01|-86.0|155.0|172.38494|-0.17933 +2016-07-01|-86.0|156.0|171.23914|-0.17887 +2016-07-01|-86.0|157.0|170.09402|-0.1784 +2016-07-01|-86.0|158.0|168.94967|-0.17792 +2016-07-01|-86.0|159.0|167.80616|-0.17743 +2016-07-01|-86.0|160.0|166.66355|-0.17692 +2016-07-01|-86.0|161.0|165.52192|-0.1764 +2016-07-01|-86.0|162.0|164.38134|-0.17588 +2016-07-01|-86.0|163.0|163.24188|-0.17534 +2016-07-01|-86.0|164.0|162.1036|-0.17479 +2016-07-01|-86.0|165.0|160.96657|-0.17423 +2016-07-01|-86.0|166.0|159.83086|-0.17366 +2016-07-01|-86.0|167.0|158.69653|-0.17309 +2016-07-01|-86.0|168.0|157.56365|-0.1725 +2016-07-01|-86.0|169.0|156.43229|-0.17191 +2016-07-01|-86.0|170.0|155.30249|-0.1713 +2016-07-01|-86.0|171.0|154.17433|-0.17069 +2016-07-01|-86.0|172.0|153.04786|-0.17008 +2016-07-01|-86.0|173.0|151.92314|-0.16945 +2016-07-01|-86.0|174.0|150.80022|-0.16882 +2016-07-01|-86.0|175.0|149.67917|-0.16819 +2016-07-01|-86.0|176.0|148.56003|-0.16754 +2016-07-01|-86.0|177.0|147.44286|-0.1669 +2016-07-01|-86.0|178.0|146.3277|-0.16624 +2016-07-01|-86.0|179.0|145.21461|-0.16559 +2016-07-01|-86.0|-1.0|-25.50972|-0.13467 +2016-07-01|-86.0|-2.0|-24.59927|-0.13419 +2016-07-01|-86.0|-3.0|-23.68985|-0.13372 +2016-07-01|-86.0|-4.0|-22.78145|-0.13325 +2016-07-01|-86.0|-5.0|-21.87404|-0.13279 +2016-07-01|-86.0|-6.0|-20.9676|-0.13233 +2016-07-01|-86.0|-7.0|-20.06211|-0.13188 +2016-07-01|-86.0|-8.0|-19.15757|-0.13143 +2016-07-01|-86.0|-9.0|-18.25393|-0.13099 +2016-07-01|-86.0|-10.0|-17.3512|-0.13056 +2016-07-01|-86.0|-11.0|-16.44933|-0.13013 +2016-07-01|-86.0|-12.0|-15.54833|-0.1297 +2016-07-01|-86.0|-13.0|-14.64815|-0.12929 +2016-07-01|-86.0|-14.0|-13.74879|-0.12888 +2016-07-01|-86.0|-15.0|-12.85022|-0.12847 +2016-07-01|-86.0|-16.0|-11.95242|-0.12808 +2016-07-01|-86.0|-17.0|-11.05537|-0.12769 +2016-07-01|-86.0|-18.0|-10.15904|-0.1273 +2016-07-01|-86.0|-19.0|-9.26342|-0.12692 +2016-07-01|-86.0|-20.0|-8.36849|-0.12655 +2016-07-01|-86.0|-21.0|-7.47421|-0.12619 +2016-07-01|-86.0|-22.0|-6.58057|-0.12584 +2016-07-01|-86.0|-23.0|-5.68755|-0.12549 +2016-07-01|-86.0|-24.0|-4.79512|-0.12515 +2016-07-01|-86.0|-25.0|-3.90325|-0.12481 +2016-07-01|-86.0|-26.0|-3.01194|-0.12449 +2016-07-01|-86.0|-27.0|-2.12114|-0.12417 +2016-07-01|-86.0|-28.0|-1.23084|-0.12386 +2016-07-01|-86.0|-29.0|-0.34102|-0.12355 +2016-07-01|-86.0|-30.0|0.54835|-0.12326 +2016-07-01|-86.0|-31.0|1.4373|-0.12297 +2016-07-01|-86.0|-32.0|2.32584|-0.12269 +2016-07-01|-86.0|-33.0|3.214|-0.12242 +2016-07-01|-86.0|-34.0|4.10182|-0.12215 +2016-07-01|-86.0|-35.0|4.9893|-0.1219 +2016-07-01|-86.0|-36.0|5.87648|-0.12165 +2016-07-01|-86.0|-37.0|6.76338|-0.12141 +2016-07-01|-86.0|-38.0|7.65003|-0.12118 +2016-07-01|-86.0|-39.0|8.53645|-0.12095 +2016-07-01|-86.0|-40.0|9.42267|-0.12074 +2016-07-01|-86.0|-41.0|10.30871|-0.12053 +2016-07-01|-86.0|-42.0|11.1946|-0.12033 +2016-07-01|-86.0|-43.0|12.08036|-0.12014 +2016-07-01|-86.0|-44.0|12.96602|-0.11996 +2016-07-01|-86.0|-45.0|13.85161|-0.11978 +2016-07-01|-86.0|-46.0|14.73715|-0.11962 +2016-07-01|-86.0|-47.0|15.62267|-0.11946 +2016-07-01|-86.0|-48.0|16.50819|-0.11931 +2016-07-01|-86.0|-49.0|17.39374|-0.11917 +2016-07-01|-86.0|-50.0|18.27934|-0.11904 +2016-07-01|-86.0|-51.0|19.16503|-0.11891 +2016-07-01|-86.0|-52.0|20.05083|-0.11879 +2016-07-01|-86.0|-53.0|20.93677|-0.11868 +2016-07-01|-86.0|-54.0|21.82287|-0.11858 +2016-07-01|-86.0|-55.0|22.70915|-0.11849 +2016-07-01|-86.0|-56.0|23.59565|-0.11841 +2016-07-01|-86.0|-57.0|24.4824|-0.11833 +2016-07-01|-86.0|-58.0|25.36941|-0.11826 +2016-07-01|-86.0|-59.0|26.25672|-0.1182 +2016-07-01|-86.0|-60.0|27.14436|-0.11815 +2016-07-01|-86.0|-61.0|28.03234|-0.11811 +2016-07-01|-86.0|-62.0|28.92071|-0.11807 +2016-07-01|-86.0|-63.0|29.80947|-0.11805 +2016-07-01|-86.0|-64.0|30.69867|-0.11803 +2016-07-01|-86.0|-65.0|31.58833|-0.11801 +2016-07-01|-86.0|-66.0|32.47848|-0.11801 +2016-07-01|-86.0|-67.0|33.36914|-0.11802 +2016-07-01|-86.0|-68.0|34.26034|-0.11803 +2016-07-01|-86.0|-69.0|35.15211|-0.11805 +2016-07-01|-86.0|-70.0|36.04448|-0.11808 +2016-07-01|-86.0|-71.0|36.93747|-0.11811 +2016-07-01|-86.0|-72.0|37.83112|-0.11816 +2016-07-01|-86.0|-73.0|38.72544|-0.11821 +2016-07-01|-86.0|-74.0|39.62048|-0.11827 +2016-07-01|-86.0|-75.0|40.51625|-0.11833 +2016-07-01|-86.0|-76.0|41.41279|-0.11841 +2016-07-01|-86.0|-77.0|42.31011|-0.11849 +2016-07-01|-86.0|-78.0|43.20826|-0.11858 +2016-07-01|-86.0|-79.0|44.10726|-0.11868 +2016-07-01|-86.0|-80.0|45.00714|-0.11878 +2016-07-01|-86.0|-81.0|45.90792|-0.1189 +2016-07-01|-86.0|-82.0|46.80964|-0.11902 +2016-07-01|-86.0|-83.0|47.71232|-0.11915 +2016-07-01|-86.0|-84.0|48.61599|-0.11928 +2016-07-01|-86.0|-85.0|49.52068|-0.11942 +2016-07-01|-86.0|-86.0|50.42642|-0.11958 +2016-07-01|-86.0|-87.0|51.33325|-0.11973 +2016-07-01|-86.0|-88.0|52.24118|-0.1199 +2016-07-01|-86.0|-89.0|53.15024|-0.12007 +2016-07-01|-86.0|-90.0|54.06047|-0.12026 +2016-07-01|-86.0|-91.0|54.9719|-0.12044 +2016-07-01|-86.0|-92.0|55.88456|-0.12064 +2016-07-01|-86.0|-93.0|56.79846|-0.12085 +2016-07-01|-86.0|-94.0|57.71366|-0.12106 +2016-07-01|-86.0|-95.0|58.63016|-0.12128 +2016-07-01|-86.0|-96.0|59.54801|-0.1215 +2016-07-01|-86.0|-97.0|60.46724|-0.12174 +2016-07-01|-86.0|-98.0|61.38786|-0.12198 +2016-07-01|-86.0|-99.0|62.30992|-0.12223 +2016-07-01|-86.0|-100.0|63.23345|-0.12249 +2016-07-01|-86.0|-101.0|64.15846|-0.12275 +2016-07-01|-86.0|-102.0|65.085|-0.12302 +2016-07-01|-86.0|-103.0|66.01309|-0.1233 +2016-07-01|-86.0|-104.0|66.94277|-0.12359 +2016-07-01|-86.0|-105.0|67.87406|-0.12389 +2016-07-01|-86.0|-106.0|68.80699|-0.12419 +2016-07-01|-86.0|-107.0|69.7416|-0.1245 +2016-07-01|-86.0|-108.0|70.67791|-0.12482 +2016-07-01|-86.0|-109.0|71.61596|-0.12514 +2016-07-01|-86.0|-110.0|72.55577|-0.12548 +2016-07-01|-86.0|-111.0|73.49737|-0.12582 +2016-07-01|-86.0|-112.0|74.4408|-0.12617 +2016-07-01|-86.0|-113.0|75.38608|-0.12652 +2016-07-01|-86.0|-114.0|76.33325|-0.12689 +2016-07-01|-86.0|-115.0|77.28233|-0.12726 +2016-07-01|-86.0|-116.0|78.23336|-0.12764 +2016-07-01|-86.0|-117.0|79.18635|-0.12803 +2016-07-01|-86.0|-118.0|80.14135|-0.12842 +2016-07-01|-86.0|-119.0|81.09838|-0.12882 +2016-07-01|-86.0|-120.0|82.05747|-0.12923 +2016-07-01|-86.0|-121.0|83.01865|-0.12965 +2016-07-01|-86.0|-122.0|83.98194|-0.13008 +2016-07-01|-86.0|-123.0|84.94738|-0.13051 +2016-07-01|-86.0|-124.0|85.91499|-0.13095 +2016-07-01|-86.0|-125.0|86.8848|-0.1314 +2016-07-01|-86.0|-126.0|87.85683|-0.13186 +2016-07-01|-86.0|-127.0|88.83112|-0.13232 +2016-07-01|-86.0|-128.0|89.80769|-0.13279 +2016-07-01|-86.0|-129.0|90.78656|-0.13327 +2016-07-01|-86.0|-130.0|91.76777|-0.13376 +2016-07-01|-86.0|-131.0|92.75133|-0.13425 +2016-07-01|-86.0|-132.0|93.73727|-0.13475 +2016-07-01|-86.0|-133.0|94.72561|-0.13526 +2016-07-01|-86.0|-134.0|95.71637|-0.13578 +2016-07-01|-86.0|-135.0|96.70959|-0.1363 +2016-07-01|-86.0|-136.0|97.70528|-0.13683 +2016-07-01|-86.0|-137.0|98.70345|-0.13737 +2016-07-01|-86.0|-138.0|99.70414|-0.13791 +2016-07-01|-86.0|-139.0|100.70736|-0.13846 +2016-07-01|-86.0|-140.0|101.71313|-0.13902 +2016-07-01|-86.0|-141.0|102.72146|-0.13959 +2016-07-01|-86.0|-142.0|103.73238|-0.14016 +2016-07-01|-86.0|-143.0|104.7459|-0.14074 +2016-07-01|-86.0|-144.0|105.76203|-0.14132 +2016-07-01|-86.0|-145.0|106.78079|-0.14191 +2016-07-01|-86.0|-146.0|107.8022|-0.14251 +2016-07-01|-86.0|-147.0|108.82625|-0.14311 +2016-07-01|-86.0|-148.0|109.85297|-0.14372 +2016-07-01|-86.0|-149.0|110.88236|-0.14433 +2016-07-01|-86.0|-150.0|111.91443|-0.14495 +2016-07-01|-86.0|-151.0|112.94919|-0.14558 +2016-07-01|-86.0|-152.0|113.98664|-0.14621 +2016-07-01|-86.0|-153.0|115.02679|-0.14684 +2016-07-01|-86.0|-154.0|116.06964|-0.14748 +2016-07-01|-86.0|-155.0|117.11519|-0.14813 +2016-07-01|-86.0|-156.0|118.16344|-0.14878 +2016-07-01|-86.0|-157.0|119.21439|-0.14943 +2016-07-01|-86.0|-158.0|120.26804|-0.15009 +2016-07-01|-86.0|-159.0|121.32438|-0.15075 +2016-07-01|-86.0|-160.0|122.38341|-0.15141 +2016-07-01|-86.0|-161.0|123.44512|-0.15208 +2016-07-01|-86.0|-162.0|124.50949|-0.15275 +2016-07-01|-86.0|-163.0|125.57653|-0.15342 +2016-07-01|-86.0|-164.0|126.64621|-0.1541 +2016-07-01|-86.0|-165.0|127.71852|-0.15477 +2016-07-01|-86.0|-166.0|128.79344|-0.15545 +2016-07-01|-86.0|-167.0|129.87096|-0.15613 +2016-07-01|-86.0|-168.0|130.95106|-0.15681 +2016-07-01|-86.0|-169.0|132.03372|-0.15749 +2016-07-01|-86.0|-170.0|133.11891|-0.15817 +2016-07-01|-86.0|-171.0|134.2066|-0.15885 +2016-07-01|-86.0|-172.0|135.29677|-0.15953 +2016-07-01|-86.0|-173.0|136.3894|-0.16022 +2016-07-01|-86.0|-174.0|137.48445|-0.16089 +2016-07-01|-86.0|-175.0|138.58188|-0.16157 +2016-07-01|-86.0|-176.0|139.68167|-0.16225 +2016-07-01|-86.0|-177.0|140.78378|-0.16292 +2016-07-01|-86.0|-178.0|141.88817|-0.16359 +2016-07-01|-86.0|-179.0|142.9948|-0.16426 +2016-07-01|-87.0|0.0|-27.25352|-0.13895 +2016-07-01|-87.0|1.0|-28.18605|-0.13932 +2016-07-01|-87.0|2.0|-29.11944|-0.1397 +2016-07-01|-87.0|3.0|-30.05371|-0.14007 +2016-07-01|-87.0|4.0|-30.98887|-0.14045 +2016-07-01|-87.0|5.0|-31.92493|-0.14084 +2016-07-01|-87.0|6.0|-32.86192|-0.14122 +2016-07-01|-87.0|7.0|-33.79984|-0.14161 +2016-07-01|-87.0|8.0|-34.73872|-0.14201 +2016-07-01|-87.0|9.0|-35.67855|-0.1424 +2016-07-01|-87.0|10.0|-36.61937|-0.1428 +2016-07-01|-87.0|11.0|-37.56118|-0.1432 +2016-07-01|-87.0|12.0|-38.504|-0.1436 +2016-07-01|-87.0|13.0|-39.44784|-0.144 +2016-07-01|-87.0|14.0|-40.39272|-0.14441 +2016-07-01|-87.0|15.0|-41.33864|-0.14482 +2016-07-01|-87.0|16.0|-42.28563|-0.14523 +2016-07-01|-87.0|17.0|-43.23369|-0.14564 +2016-07-01|-87.0|18.0|-44.18284|-0.14605 +2016-07-01|-87.0|19.0|-45.1331|-0.14647 +2016-07-01|-87.0|20.0|-46.08447|-0.14688 +2016-07-01|-87.0|21.0|-47.03697|-0.1473 +2016-07-01|-87.0|22.0|-47.9906|-0.14772 +2016-07-01|-87.0|23.0|-48.9454|-0.14814 +2016-07-01|-87.0|24.0|-49.90135|-0.14856 +2016-07-01|-87.0|25.0|-50.85849|-0.14898 +2016-07-01|-87.0|26.0|-51.81681|-0.1494 +2016-07-01|-87.0|27.0|-52.77634|-0.14983 +2016-07-01|-87.0|28.0|-53.73708|-0.15025 +2016-07-01|-87.0|29.0|-54.69905|-0.15067 +2016-07-01|-87.0|30.0|-55.66226|-0.1511 +2016-07-01|-87.0|31.0|-56.62671|-0.15152 +2016-07-01|-87.0|32.0|-57.59242|-0.15194 +2016-07-01|-87.0|33.0|-58.55941|-0.15237 +2016-07-01|-87.0|34.0|-59.52768|-0.15279 +2016-07-01|-87.0|35.0|-60.49724|-0.15322 +2016-07-01|-87.0|36.0|-61.46811|-0.15364 +2016-07-01|-87.0|37.0|-62.44029|-0.15406 +2016-07-01|-87.0|38.0|-63.4138|-0.15448 +2016-07-01|-87.0|39.0|-64.38865|-0.1549 +2016-07-01|-87.0|40.0|-65.36484|-0.15533 +2016-07-01|-87.0|41.0|-66.34239|-0.15574 +2016-07-01|-87.0|42.0|-67.3213|-0.15616 +2016-07-01|-87.0|43.0|-68.3016|-0.15658 +2016-07-01|-87.0|44.0|-69.28328|-0.157 +2016-07-01|-87.0|45.0|-70.26636|-0.15741 +2016-07-01|-87.0|46.0|-71.25084|-0.15783 +2016-07-01|-87.0|47.0|-72.23674|-0.15824 +2016-07-01|-87.0|48.0|-73.22406|-0.15865 +2016-07-01|-87.0|49.0|-74.21282|-0.15906 +2016-07-01|-87.0|50.0|-75.20302|-0.15947 +2016-07-01|-87.0|51.0|-76.19467|-0.15987 +2016-07-01|-87.0|52.0|-77.18778|-0.16027 +2016-07-01|-87.0|53.0|-78.18235|-0.16067 +2016-07-01|-87.0|54.0|-79.17841|-0.16107 +2016-07-01|-87.0|55.0|-80.17594|-0.16147 +2016-07-01|-87.0|56.0|-81.17497|-0.16186 +2016-07-01|-87.0|57.0|-82.1755|-0.16226 +2016-07-01|-87.0|58.0|-83.17753|-0.16264 +2016-07-01|-87.0|59.0|-84.18108|-0.16303 +2016-07-01|-87.0|60.0|-85.18615|-0.16341 +2016-07-01|-87.0|61.0|-86.19274|-0.16379 +2016-07-01|-87.0|62.0|-87.20087|-0.16417 +2016-07-01|-87.0|63.0|-88.21054|-0.16455 +2016-07-01|-87.0|64.0|-89.22175|-0.16492 +2016-07-01|-87.0|65.0|-90.23451|-0.16529 +2016-07-01|-87.0|66.0|-91.24883|-0.16565 +2016-07-01|-87.0|67.0|-92.26471|-0.16601 +2016-07-01|-87.0|68.0|-93.28215|-0.16637 +2016-07-01|-87.0|69.0|-94.30117|-0.16672 +2016-07-01|-87.0|70.0|-95.32175|-0.16707 +2016-07-01|-87.0|71.0|-96.34392|-0.16742 +2016-07-01|-87.0|72.0|-97.36766|-0.16776 +2016-07-01|-87.0|73.0|-98.39299|-0.1681 +2016-07-01|-87.0|74.0|-99.41991|-0.16843 +2016-07-01|-87.0|75.0|-100.44841|-0.16876 +2016-07-01|-87.0|76.0|-101.4785|-0.16908 +2016-07-01|-87.0|77.0|-102.51018|-0.16941 +2016-07-01|-87.0|78.0|-103.54345|-0.16972 +2016-07-01|-87.0|79.0|-104.57831|-0.17003 +2016-07-01|-87.0|80.0|-105.61477|-0.17034 +2016-07-01|-87.0|81.0|-106.65281|-0.17064 +2016-07-01|-87.0|82.0|-107.69245|-0.17093 +2016-07-01|-87.0|83.0|-108.73367|-0.17122 +2016-07-01|-87.0|84.0|-109.77648|-0.17151 +2016-07-01|-87.0|85.0|-110.82087|-0.17179 +2016-07-01|-87.0|86.0|-111.86684|-0.17206 +2016-07-01|-87.0|87.0|-112.91438|-0.17233 +2016-07-01|-87.0|88.0|-113.9635|-0.1726 +2016-07-01|-87.0|89.0|-115.01418|-0.17285 +2016-07-01|-87.0|90.0|-116.06642|-0.1731 +2016-07-01|-87.0|91.0|-117.12022|-0.17335 +2016-07-01|-87.0|92.0|-118.17556|-0.17359 +2016-07-01|-87.0|93.0|-119.23244|-0.17382 +2016-07-01|-87.0|94.0|-120.29085|-0.17404 +2016-07-01|-87.0|95.0|-121.35078|-0.17426 +2016-07-01|-87.0|96.0|-122.41222|-0.17448 +2016-07-01|-87.0|97.0|-123.47517|-0.17468 +2016-07-01|-87.0|98.0|-124.5396|-0.17488 +2016-07-01|-87.0|99.0|-125.60551|-0.17507 +2016-07-01|-87.0|100.0|-126.67288|-0.17526 +2016-07-01|-87.0|101.0|-127.74171|-0.17543 +2016-07-01|-87.0|102.0|-128.81197|-0.1756 +2016-07-01|-87.0|103.0|-129.88365|-0.17577 +2016-07-01|-87.0|104.0|-130.95674|-0.17592 +2016-07-01|-87.0|105.0|-132.03122|-0.17607 +2016-07-01|-87.0|106.0|-133.10707|-0.1762 +2016-07-01|-87.0|107.0|-134.18427|-0.17634 +2016-07-01|-87.0|108.0|-135.2628|-0.17646 +2016-07-01|-87.0|109.0|-136.34265|-0.17657 +2016-07-01|-87.0|110.0|-137.42379|-0.17668 +2016-07-01|-87.0|111.0|-138.50619|-0.17678 +2016-07-01|-87.0|112.0|-139.58985|-0.17687 +2016-07-01|-87.0|113.0|-140.67473|-0.17695 +2016-07-01|-87.0|114.0|-141.7608|-0.17702 +2016-07-01|-87.0|115.0|-142.84806|-0.17708 +2016-07-01|-87.0|116.0|-143.93646|-0.17713 +2016-07-01|-87.0|117.0|-145.02598|-0.17718 +2016-07-01|-87.0|118.0|-146.11659|-0.17721 +2016-07-01|-87.0|119.0|-147.20827|-0.17724 +2016-07-01|-87.0|120.0|-148.30098|-0.17726 +2016-07-01|-87.0|121.0|-149.39469|-0.17727 +2016-07-01|-87.0|122.0|-150.48938|-0.17727 +2016-07-01|-87.0|123.0|-151.58501|-0.17725 +2016-07-01|-87.0|124.0|-152.68154|-0.17723 +2016-07-01|-87.0|125.0|-153.77895|-0.1772 +2016-07-01|-87.0|126.0|-154.8772|-0.17716 +2016-07-01|-87.0|127.0|-155.97626|-0.17712 +2016-07-01|-87.0|128.0|-157.07608|-0.17706 +2016-07-01|-87.0|129.0|-158.17664|-0.17699 +2016-07-01|-87.0|130.0|-159.27788|-0.17691 +2016-07-01|-87.0|131.0|-160.37979|-0.17682 +2016-07-01|-87.0|132.0|-161.48231|-0.17672 +2016-07-01|-87.0|133.0|-162.58541|-0.17661 +2016-07-01|-87.0|134.0|-163.68905|-0.1765 +2016-07-01|-87.0|135.0|-164.79318|-0.17637 +2016-07-01|-87.0|136.0|-165.89777|-0.17623 +2016-07-01|-87.0|137.0|-167.00278|-0.17608 +2016-07-01|-87.0|138.0|-168.10815|-0.17593 +2016-07-01|-87.0|139.0|-169.21386|-0.17576 +2016-07-01|-87.0|140.0|-170.31985|-0.17558 +2016-07-01|-87.0|141.0|-171.42608|-0.17539 +2016-07-01|-87.0|142.0|-172.53251|-0.1752 +2016-07-01|-87.0|143.0|-173.63909|-0.17499 +2016-07-01|-87.0|144.0|-174.74578|-0.17478 +2016-07-01|-87.0|145.0|-175.85254|-0.17455 +2016-07-01|-87.0|146.0|-176.95931|-0.17432 +2016-07-01|-87.0|147.0|-178.06606|-0.17407 +2016-07-01|-87.0|148.0|-179.17273|-0.17382 +2016-07-01|-87.0|149.0|179.72072|-0.17356 +2016-07-01|-87.0|150.0|178.61433|-0.17329 +2016-07-01|-87.0|151.0|177.50815|-0.17301 +2016-07-01|-87.0|152.0|176.40223|-0.17272 +2016-07-01|-87.0|153.0|175.29662|-0.17242 +2016-07-01|-87.0|154.0|174.19135|-0.17211 +2016-07-01|-87.0|155.0|173.08648|-0.1718 +2016-07-01|-87.0|156.0|171.98205|-0.17148 +2016-07-01|-87.0|157.0|170.87811|-0.17115 +2016-07-01|-87.0|158.0|169.7747|-0.17081 +2016-07-01|-87.0|159.0|168.67186|-0.17046 +2016-07-01|-87.0|160.0|167.56965|-0.17011 +2016-07-01|-87.0|161.0|166.4681|-0.16974 +2016-07-01|-87.0|162.0|165.36727|-0.16938 +2016-07-01|-87.0|163.0|164.26719|-0.169 +2016-07-01|-87.0|164.0|163.16791|-0.16862 +2016-07-01|-87.0|165.0|162.06947|-0.16823 +2016-07-01|-87.0|166.0|160.97191|-0.16783 +2016-07-01|-87.0|167.0|159.87528|-0.16743 +2016-07-01|-87.0|168.0|158.77961|-0.16702 +2016-07-01|-87.0|169.0|157.68495|-0.16661 +2016-07-01|-87.0|170.0|156.59134|-0.16619 +2016-07-01|-87.0|171.0|155.49881|-0.16576 +2016-07-01|-87.0|172.0|154.40741|-0.16533 +2016-07-01|-87.0|173.0|153.31717|-0.16489 +2016-07-01|-87.0|174.0|152.22813|-0.16445 +2016-07-01|-87.0|175.0|151.14032|-0.16401 +2016-07-01|-87.0|176.0|150.05379|-0.16356 +2016-07-01|-87.0|177.0|148.96856|-0.1631 +2016-07-01|-87.0|178.0|147.88468|-0.16265 +2016-07-01|-87.0|179.0|146.80216|-0.16218 +2016-07-01|-87.0|-1.0|-26.32183|-0.13858 +2016-07-01|-87.0|-2.0|-25.39097|-0.13822 +2016-07-01|-87.0|-3.0|-24.46092|-0.13786 +2016-07-01|-87.0|-4.0|-23.53168|-0.1375 +2016-07-01|-87.0|-5.0|-22.60321|-0.13715 +2016-07-01|-87.0|-6.0|-21.67551|-0.1368 +2016-07-01|-87.0|-7.0|-20.74855|-0.13646 +2016-07-01|-87.0|-8.0|-19.82233|-0.13612 +2016-07-01|-87.0|-9.0|-18.89682|-0.13578 +2016-07-01|-87.0|-10.0|-17.97201|-0.13545 +2016-07-01|-87.0|-11.0|-17.04788|-0.13512 +2016-07-01|-87.0|-12.0|-16.12442|-0.1348 +2016-07-01|-87.0|-13.0|-15.2016|-0.13448 +2016-07-01|-87.0|-14.0|-14.27941|-0.13417 +2016-07-01|-87.0|-15.0|-13.35783|-0.13386 +2016-07-01|-87.0|-16.0|-12.43684|-0.13356 +2016-07-01|-87.0|-17.0|-11.51643|-0.13326 +2016-07-01|-87.0|-18.0|-10.59658|-0.13297 +2016-07-01|-87.0|-19.0|-9.67726|-0.13268 +2016-07-01|-87.0|-20.0|-8.75847|-0.13239 +2016-07-01|-87.0|-21.0|-7.84018|-0.13212 +2016-07-01|-87.0|-22.0|-6.92237|-0.13184 +2016-07-01|-87.0|-23.0|-6.00502|-0.13158 +2016-07-01|-87.0|-24.0|-5.08812|-0.13131 +2016-07-01|-87.0|-25.0|-4.17165|-0.13106 +2016-07-01|-87.0|-26.0|-3.25559|-0.13081 +2016-07-01|-87.0|-27.0|-2.33991|-0.13056 +2016-07-01|-87.0|-28.0|-1.4246|-0.13032 +2016-07-01|-87.0|-29.0|-0.50964|-0.13009 +2016-07-01|-87.0|-30.0|0.40498|-0.12986 +2016-07-01|-87.0|-31.0|1.3193|-0.12964 +2016-07-01|-87.0|-32.0|2.23333|-0.12942 +2016-07-01|-87.0|-33.0|3.14709|-0.12921 +2016-07-01|-87.0|-34.0|4.0606|-0.12901 +2016-07-01|-87.0|-35.0|4.97388|-0.12881 +2016-07-01|-87.0|-36.0|5.88696|-0.12862 +2016-07-01|-87.0|-37.0|6.79984|-0.12843 +2016-07-01|-87.0|-38.0|7.71255|-0.12825 +2016-07-01|-87.0|-39.0|8.62512|-0.12808 +2016-07-01|-87.0|-40.0|9.53756|-0.12791 +2016-07-01|-87.0|-41.0|10.4499|-0.12775 +2016-07-01|-87.0|-42.0|11.36214|-0.12759 +2016-07-01|-87.0|-43.0|12.27433|-0.12744 +2016-07-01|-87.0|-44.0|13.18647|-0.1273 +2016-07-01|-87.0|-45.0|14.09859|-0.12716 +2016-07-01|-87.0|-46.0|15.01071|-0.12703 +2016-07-01|-87.0|-47.0|15.92285|-0.12691 +2016-07-01|-87.0|-48.0|16.83503|-0.12679 +2016-07-01|-87.0|-49.0|17.74728|-0.12668 +2016-07-01|-87.0|-50.0|18.65961|-0.12658 +2016-07-01|-87.0|-51.0|19.57204|-0.12648 +2016-07-01|-87.0|-52.0|20.48461|-0.12639 +2016-07-01|-87.0|-53.0|21.39732|-0.1263 +2016-07-01|-87.0|-54.0|22.3102|-0.12623 +2016-07-01|-87.0|-55.0|23.22328|-0.12615 +2016-07-01|-87.0|-56.0|24.13658|-0.12609 +2016-07-01|-87.0|-57.0|25.05011|-0.12603 +2016-07-01|-87.0|-58.0|25.9639|-0.12598 +2016-07-01|-87.0|-59.0|26.87797|-0.12593 +2016-07-01|-87.0|-60.0|27.79234|-0.12589 +2016-07-01|-87.0|-61.0|28.70704|-0.12586 +2016-07-01|-87.0|-62.0|29.62209|-0.12583 +2016-07-01|-87.0|-63.0|30.5375|-0.12581 +2016-07-01|-87.0|-64.0|31.45331|-0.1258 +2016-07-01|-87.0|-65.0|32.36953|-0.12579 +2016-07-01|-87.0|-66.0|33.28619|-0.12579 +2016-07-01|-87.0|-67.0|34.20331|-0.12579 +2016-07-01|-87.0|-68.0|35.1209|-0.12581 +2016-07-01|-87.0|-69.0|36.039|-0.12583 +2016-07-01|-87.0|-70.0|36.95763|-0.12585 +2016-07-01|-87.0|-71.0|37.8768|-0.12588 +2016-07-01|-87.0|-72.0|38.79655|-0.12592 +2016-07-01|-87.0|-73.0|39.71689|-0.12597 +2016-07-01|-87.0|-74.0|40.63784|-0.12602 +2016-07-01|-87.0|-75.0|41.55943|-0.12607 +2016-07-01|-87.0|-76.0|42.48168|-0.12614 +2016-07-01|-87.0|-77.0|43.40462|-0.12621 +2016-07-01|-87.0|-78.0|44.32826|-0.12628 +2016-07-01|-87.0|-79.0|45.25263|-0.12637 +2016-07-01|-87.0|-80.0|46.17775|-0.12646 +2016-07-01|-87.0|-81.0|47.10364|-0.12655 +2016-07-01|-87.0|-82.0|48.03033|-0.12665 +2016-07-01|-87.0|-83.0|48.95783|-0.12676 +2016-07-01|-87.0|-84.0|49.88618|-0.12688 +2016-07-01|-87.0|-85.0|50.81539|-0.127 +2016-07-01|-87.0|-86.0|51.74548|-0.12712 +2016-07-01|-87.0|-87.0|52.67649|-0.12726 +2016-07-01|-87.0|-88.0|53.60842|-0.1274 +2016-07-01|-87.0|-89.0|54.54131|-0.12754 +2016-07-01|-87.0|-90.0|55.47517|-0.12769 +2016-07-01|-87.0|-91.0|56.41003|-0.12785 +2016-07-01|-87.0|-92.0|57.34591|-0.12802 +2016-07-01|-87.0|-93.0|58.28283|-0.12819 +2016-07-01|-87.0|-94.0|59.22082|-0.12836 +2016-07-01|-87.0|-95.0|60.15989|-0.12855 +2016-07-01|-87.0|-96.0|61.10007|-0.12874 +2016-07-01|-87.0|-97.0|62.04138|-0.12893 +2016-07-01|-87.0|-98.0|62.98385|-0.12913 +2016-07-01|-87.0|-99.0|63.92749|-0.12934 +2016-07-01|-87.0|-100.0|64.87232|-0.12956 +2016-07-01|-87.0|-101.0|65.81837|-0.12978 +2016-07-01|-87.0|-102.0|66.76566|-0.13 +2016-07-01|-87.0|-103.0|67.71421|-0.13023 +2016-07-01|-87.0|-104.0|68.66405|-0.13047 +2016-07-01|-87.0|-105.0|69.61519|-0.13071 +2016-07-01|-87.0|-106.0|70.56765|-0.13096 +2016-07-01|-87.0|-107.0|71.52145|-0.13122 +2016-07-01|-87.0|-108.0|72.47662|-0.13148 +2016-07-01|-87.0|-109.0|73.43318|-0.13175 +2016-07-01|-87.0|-110.0|74.39115|-0.13202 +2016-07-01|-87.0|-111.0|75.35054|-0.1323 +2016-07-01|-87.0|-112.0|76.31138|-0.13259 +2016-07-01|-87.0|-113.0|77.27368|-0.13288 +2016-07-01|-87.0|-114.0|78.23747|-0.13318 +2016-07-01|-87.0|-115.0|79.20277|-0.13348 +2016-07-01|-87.0|-116.0|80.16959|-0.13379 +2016-07-01|-87.0|-117.0|81.13795|-0.1341 +2016-07-01|-87.0|-118.0|82.10787|-0.13442 +2016-07-01|-87.0|-119.0|83.07938|-0.13475 +2016-07-01|-87.0|-120.0|84.05248|-0.13508 +2016-07-01|-87.0|-121.0|85.0272|-0.13541 +2016-07-01|-87.0|-122.0|86.00354|-0.13576 +2016-07-01|-87.0|-123.0|86.98154|-0.1361 +2016-07-01|-87.0|-124.0|87.9612|-0.13646 +2016-07-01|-87.0|-125.0|88.94255|-0.13681 +2016-07-01|-87.0|-126.0|89.92559|-0.13718 +2016-07-01|-87.0|-127.0|90.91034|-0.13754 +2016-07-01|-87.0|-128.0|91.89682|-0.13792 +2016-07-01|-87.0|-129.0|92.88505|-0.1383 +2016-07-01|-87.0|-130.0|93.87502|-0.13868 +2016-07-01|-87.0|-131.0|94.86677|-0.13907 +2016-07-01|-87.0|-132.0|95.8603|-0.13946 +2016-07-01|-87.0|-133.0|96.85562|-0.13986 +2016-07-01|-87.0|-134.0|97.85274|-0.14026 +2016-07-01|-87.0|-135.0|98.85169|-0.14067 +2016-07-01|-87.0|-136.0|99.85246|-0.14108 +2016-07-01|-87.0|-137.0|100.85507|-0.1415 +2016-07-01|-87.0|-138.0|101.85952|-0.14192 +2016-07-01|-87.0|-139.0|102.86583|-0.14235 +2016-07-01|-87.0|-140.0|103.87401|-0.14278 +2016-07-01|-87.0|-141.0|104.88405|-0.14321 +2016-07-01|-87.0|-142.0|105.89597|-0.14365 +2016-07-01|-87.0|-143.0|106.90978|-0.14409 +2016-07-01|-87.0|-144.0|107.92547|-0.14453 +2016-07-01|-87.0|-145.0|108.94306|-0.14498 +2016-07-01|-87.0|-146.0|109.96255|-0.14543 +2016-07-01|-87.0|-147.0|110.98393|-0.14589 +2016-07-01|-87.0|-148.0|112.00722|-0.14635 +2016-07-01|-87.0|-149.0|113.0324|-0.14681 +2016-07-01|-87.0|-150.0|114.0595|-0.14727 +2016-07-01|-87.0|-151.0|115.08849|-0.14774 +2016-07-01|-87.0|-152.0|116.11939|-0.14821 +2016-07-01|-87.0|-153.0|117.15219|-0.14869 +2016-07-01|-87.0|-154.0|118.18688|-0.14916 +2016-07-01|-87.0|-155.0|119.22346|-0.14964 +2016-07-01|-87.0|-156.0|120.26194|-0.15012 +2016-07-01|-87.0|-157.0|121.30229|-0.1506 +2016-07-01|-87.0|-158.0|122.34452|-0.15108 +2016-07-01|-87.0|-159.0|123.38861|-0.15156 +2016-07-01|-87.0|-160.0|124.43456|-0.15205 +2016-07-01|-87.0|-161.0|125.48236|-0.15254 +2016-07-01|-87.0|-162.0|126.532|-0.15302 +2016-07-01|-87.0|-163.0|127.58346|-0.15351 +2016-07-01|-87.0|-164.0|128.63674|-0.154 +2016-07-01|-87.0|-165.0|129.69181|-0.15449 +2016-07-01|-87.0|-166.0|130.74867|-0.15498 +2016-07-01|-87.0|-167.0|131.80729|-0.15547 +2016-07-01|-87.0|-168.0|132.86766|-0.15596 +2016-07-01|-87.0|-169.0|133.92977|-0.15644 +2016-07-01|-87.0|-170.0|134.99359|-0.15693 +2016-07-01|-87.0|-171.0|136.0591|-0.15742 +2016-07-01|-87.0|-172.0|137.12628|-0.1579 +2016-07-01|-87.0|-173.0|138.19511|-0.15839 +2016-07-01|-87.0|-174.0|139.26557|-0.15887 +2016-07-01|-87.0|-175.0|140.33763|-0.15935 +2016-07-01|-87.0|-176.0|141.41127|-0.15983 +2016-07-01|-87.0|-177.0|142.48646|-0.16031 +2016-07-01|-87.0|-178.0|143.56317|-0.16078 +2016-07-01|-87.0|-179.0|144.64138|-0.16125 +2016-07-01|-88.0|0.0|-28.16672|-0.14282 +2016-07-01|-88.0|1.0|-29.12044|-0.14307 +2016-07-01|-88.0|2.0|-30.07476|-0.14332 +2016-07-01|-88.0|3.0|-31.02972|-0.14358 +2016-07-01|-88.0|4.0|-31.98531|-0.14384 +2016-07-01|-88.0|5.0|-32.94154|-0.1441 +2016-07-01|-88.0|6.0|-33.89843|-0.14436 +2016-07-01|-88.0|7.0|-34.85599|-0.14463 +2016-07-01|-88.0|8.0|-35.81423|-0.14489 +2016-07-01|-88.0|9.0|-36.77316|-0.14516 +2016-07-01|-88.0|10.0|-37.7328|-0.14543 +2016-07-01|-88.0|11.0|-38.69314|-0.1457 +2016-07-01|-88.0|12.0|-39.65421|-0.14598 +2016-07-01|-88.0|13.0|-40.61601|-0.14625 +2016-07-01|-88.0|14.0|-41.57856|-0.14653 +2016-07-01|-88.0|15.0|-42.54186|-0.14681 +2016-07-01|-88.0|16.0|-43.50592|-0.14709 +2016-07-01|-88.0|17.0|-44.47076|-0.14737 +2016-07-01|-88.0|18.0|-45.43638|-0.14765 +2016-07-01|-88.0|19.0|-46.40279|-0.14793 +2016-07-01|-88.0|20.0|-47.37001|-0.14821 +2016-07-01|-88.0|21.0|-48.33804|-0.1485 +2016-07-01|-88.0|22.0|-49.30689|-0.14878 +2016-07-01|-88.0|23.0|-50.27657|-0.14907 +2016-07-01|-88.0|24.0|-51.24709|-0.14935 +2016-07-01|-88.0|25.0|-52.21845|-0.14964 +2016-07-01|-88.0|26.0|-53.19068|-0.14993 +2016-07-01|-88.0|27.0|-54.16377|-0.15021 +2016-07-01|-88.0|28.0|-55.13773|-0.1505 +2016-07-01|-88.0|29.0|-56.11257|-0.15079 +2016-07-01|-88.0|30.0|-57.08831|-0.15108 +2016-07-01|-88.0|31.0|-58.06494|-0.15137 +2016-07-01|-88.0|32.0|-59.04248|-0.15166 +2016-07-01|-88.0|33.0|-60.02093|-0.15194 +2016-07-01|-88.0|34.0|-61.0003|-0.15223 +2016-07-01|-88.0|35.0|-61.9806|-0.15252 +2016-07-01|-88.0|36.0|-62.96184|-0.15281 +2016-07-01|-88.0|37.0|-63.94401|-0.1531 +2016-07-01|-88.0|38.0|-64.92714|-0.15338 +2016-07-01|-88.0|39.0|-65.91122|-0.15367 +2016-07-01|-88.0|40.0|-66.89627|-0.15396 +2016-07-01|-88.0|41.0|-67.88228|-0.15424 +2016-07-01|-88.0|42.0|-68.86927|-0.15452 +2016-07-01|-88.0|43.0|-69.85723|-0.15481 +2016-07-01|-88.0|44.0|-70.84619|-0.15509 +2016-07-01|-88.0|45.0|-71.83613|-0.15537 +2016-07-01|-88.0|46.0|-72.82708|-0.15565 +2016-07-01|-88.0|47.0|-73.81902|-0.15593 +2016-07-01|-88.0|48.0|-74.81197|-0.15621 +2016-07-01|-88.0|49.0|-75.80594|-0.15649 +2016-07-01|-88.0|50.0|-76.80092|-0.15676 +2016-07-01|-88.0|51.0|-77.79693|-0.15704 +2016-07-01|-88.0|52.0|-78.79396|-0.15731 +2016-07-01|-88.0|53.0|-79.79201|-0.15758 +2016-07-01|-88.0|54.0|-80.79111|-0.15785 +2016-07-01|-88.0|55.0|-81.79124|-0.15812 +2016-07-01|-88.0|56.0|-82.79241|-0.15838 +2016-07-01|-88.0|57.0|-83.79462|-0.15864 +2016-07-01|-88.0|58.0|-84.79788|-0.15891 +2016-07-01|-88.0|59.0|-85.80219|-0.15916 +2016-07-01|-88.0|60.0|-86.80755|-0.15942 +2016-07-01|-88.0|61.0|-87.81396|-0.15968 +2016-07-01|-88.0|62.0|-88.82143|-0.15993 +2016-07-01|-88.0|63.0|-89.82996|-0.16018 +2016-07-01|-88.0|64.0|-90.83955|-0.16043 +2016-07-01|-88.0|65.0|-91.85019|-0.16067 +2016-07-01|-88.0|66.0|-92.8619|-0.16092 +2016-07-01|-88.0|67.0|-93.87467|-0.16116 +2016-07-01|-88.0|68.0|-94.8885|-0.16139 +2016-07-01|-88.0|69.0|-95.90339|-0.16163 +2016-07-01|-88.0|70.0|-96.91934|-0.16186 +2016-07-01|-88.0|71.0|-97.93636|-0.16209 +2016-07-01|-88.0|72.0|-98.95443|-0.16231 +2016-07-01|-88.0|73.0|-99.97357|-0.16254 +2016-07-01|-88.0|74.0|-100.99376|-0.16275 +2016-07-01|-88.0|75.0|-102.01501|-0.16297 +2016-07-01|-88.0|76.0|-103.03731|-0.16318 +2016-07-01|-88.0|77.0|-104.06066|-0.16339 +2016-07-01|-88.0|78.0|-105.08506|-0.1636 +2016-07-01|-88.0|79.0|-106.11051|-0.1638 +2016-07-01|-88.0|80.0|-107.137|-0.164 +2016-07-01|-88.0|81.0|-108.16453|-0.16419 +2016-07-01|-88.0|82.0|-109.19309|-0.16438 +2016-07-01|-88.0|83.0|-110.22268|-0.16457 +2016-07-01|-88.0|84.0|-111.2533|-0.16475 +2016-07-01|-88.0|85.0|-112.28494|-0.16493 +2016-07-01|-88.0|86.0|-113.31759|-0.16511 +2016-07-01|-88.0|87.0|-114.35125|-0.16528 +2016-07-01|-88.0|88.0|-115.38591|-0.16544 +2016-07-01|-88.0|89.0|-116.42157|-0.16561 +2016-07-01|-88.0|90.0|-117.45822|-0.16576 +2016-07-01|-88.0|91.0|-118.49585|-0.16592 +2016-07-01|-88.0|92.0|-119.53445|-0.16607 +2016-07-01|-88.0|93.0|-120.57401|-0.16621 +2016-07-01|-88.0|94.0|-121.61454|-0.16635 +2016-07-01|-88.0|95.0|-122.65601|-0.16649 +2016-07-01|-88.0|96.0|-123.69841|-0.16662 +2016-07-01|-88.0|97.0|-124.74175|-0.16674 +2016-07-01|-88.0|98.0|-125.786|-0.16686 +2016-07-01|-88.0|99.0|-126.83116|-0.16698 +2016-07-01|-88.0|100.0|-127.87722|-0.16709 +2016-07-01|-88.0|101.0|-128.92415|-0.1672 +2016-07-01|-88.0|102.0|-129.97197|-0.1673 +2016-07-01|-88.0|103.0|-131.02064|-0.16739 +2016-07-01|-88.0|104.0|-132.07015|-0.16748 +2016-07-01|-88.0|105.0|-133.12051|-0.16757 +2016-07-01|-88.0|106.0|-134.17168|-0.16765 +2016-07-01|-88.0|107.0|-135.22366|-0.16772 +2016-07-01|-88.0|108.0|-136.27642|-0.16779 +2016-07-01|-88.0|109.0|-137.32997|-0.16785 +2016-07-01|-88.0|110.0|-138.38428|-0.16791 +2016-07-01|-88.0|111.0|-139.43933|-0.16797 +2016-07-01|-88.0|112.0|-140.49511|-0.16801 +2016-07-01|-88.0|113.0|-141.5516|-0.16805 +2016-07-01|-88.0|114.0|-142.60879|-0.16809 +2016-07-01|-88.0|115.0|-143.66666|-0.16812 +2016-07-01|-88.0|116.0|-144.72518|-0.16814 +2016-07-01|-88.0|117.0|-145.78435|-0.16816 +2016-07-01|-88.0|118.0|-146.84414|-0.16817 +2016-07-01|-88.0|119.0|-147.90454|-0.16818 +2016-07-01|-88.0|120.0|-148.96552|-0.16818 +2016-07-01|-88.0|121.0|-150.02707|-0.16818 +2016-07-01|-88.0|122.0|-151.08916|-0.16817 +2016-07-01|-88.0|123.0|-152.15177|-0.16815 +2016-07-01|-88.0|124.0|-153.21489|-0.16813 +2016-07-01|-88.0|125.0|-154.2785|-0.1681 +2016-07-01|-88.0|126.0|-155.34256|-0.16806 +2016-07-01|-88.0|127.0|-156.40706|-0.16802 +2016-07-01|-88.0|128.0|-157.47198|-0.16798 +2016-07-01|-88.0|129.0|-158.53729|-0.16792 +2016-07-01|-88.0|130.0|-159.60298|-0.16786 +2016-07-01|-88.0|131.0|-160.66901|-0.1678 +2016-07-01|-88.0|132.0|-161.73537|-0.16773 +2016-07-01|-88.0|133.0|-162.80203|-0.16765 +2016-07-01|-88.0|134.0|-163.86897|-0.16757 +2016-07-01|-88.0|135.0|-164.93616|-0.16748 +2016-07-01|-88.0|136.0|-166.00358|-0.16739 +2016-07-01|-88.0|137.0|-167.07121|-0.16729 +2016-07-01|-88.0|138.0|-168.13901|-0.16718 +2016-07-01|-88.0|139.0|-169.20697|-0.16707 +2016-07-01|-88.0|140.0|-170.27506|-0.16695 +2016-07-01|-88.0|141.0|-171.34326|-0.16683 +2016-07-01|-88.0|142.0|-172.41153|-0.1667 +2016-07-01|-88.0|143.0|-173.47986|-0.16656 +2016-07-01|-88.0|144.0|-174.54821|-0.16642 +2016-07-01|-88.0|145.0|-175.61657|-0.16628 +2016-07-01|-88.0|146.0|-176.6849|-0.16613 +2016-07-01|-88.0|147.0|-177.75319|-0.16597 +2016-07-01|-88.0|148.0|-178.8214|-0.16581 +2016-07-01|-88.0|149.0|-179.8895|-0.16564 +2016-07-01|-88.0|150.0|179.04252|-0.16547 +2016-07-01|-88.0|151.0|177.9747|-0.16529 +2016-07-01|-88.0|152.0|176.90705|-0.1651 +2016-07-01|-88.0|153.0|175.83961|-0.16491 +2016-07-01|-88.0|154.0|174.77241|-0.16472 +2016-07-01|-88.0|155.0|173.70546|-0.16452 +2016-07-01|-88.0|156.0|172.63879|-0.16432 +2016-07-01|-88.0|157.0|171.57243|-0.16411 +2016-07-01|-88.0|158.0|170.50641|-0.16389 +2016-07-01|-88.0|159.0|169.44075|-0.16368 +2016-07-01|-88.0|160.0|168.37547|-0.16345 +2016-07-01|-88.0|161.0|167.31061|-0.16323 +2016-07-01|-88.0|162.0|166.24618|-0.16299 +2016-07-01|-88.0|163.0|165.18221|-0.16276 +2016-07-01|-88.0|164.0|164.11872|-0.16252 +2016-07-01|-88.0|165.0|163.05575|-0.16227 +2016-07-01|-88.0|166.0|161.9933|-0.16203 +2016-07-01|-88.0|167.0|160.93142|-0.16177 +2016-07-01|-88.0|168.0|159.87012|-0.16152 +2016-07-01|-88.0|169.0|158.80942|-0.16126 +2016-07-01|-88.0|170.0|157.74934|-0.161 +2016-07-01|-88.0|171.0|156.68992|-0.16073 +2016-07-01|-88.0|172.0|155.63117|-0.16046 +2016-07-01|-88.0|173.0|154.57311|-0.16019 +2016-07-01|-88.0|174.0|153.51577|-0.15991 +2016-07-01|-88.0|175.0|152.45916|-0.15963 +2016-07-01|-88.0|176.0|151.40332|-0.15935 +2016-07-01|-88.0|177.0|150.34825|-0.15906 +2016-07-01|-88.0|178.0|149.29398|-0.15878 +2016-07-01|-88.0|179.0|148.24053|-0.15849 +2016-07-01|-88.0|-1.0|-27.2136|-0.14257 +2016-07-01|-88.0|-2.0|-26.26107|-0.14232 +2016-07-01|-88.0|-3.0|-25.30912|-0.14207 +2016-07-01|-88.0|-4.0|-24.35773|-0.14183 +2016-07-01|-88.0|-5.0|-23.40689|-0.14159 +2016-07-01|-88.0|-6.0|-22.45659|-0.14135 +2016-07-01|-88.0|-7.0|-21.50682|-0.14112 +2016-07-01|-88.0|-8.0|-20.55757|-0.14089 +2016-07-01|-88.0|-9.0|-19.60881|-0.14066 +2016-07-01|-88.0|-10.0|-18.66054|-0.14043 +2016-07-01|-88.0|-11.0|-17.71275|-0.14021 +2016-07-01|-88.0|-12.0|-16.76543|-0.13999 +2016-07-01|-88.0|-13.0|-15.81855|-0.13977 +2016-07-01|-88.0|-14.0|-14.87211|-0.13956 +2016-07-01|-88.0|-15.0|-13.9261|-0.13935 +2016-07-01|-88.0|-16.0|-12.98049|-0.13914 +2016-07-01|-88.0|-17.0|-12.03528|-0.13893 +2016-07-01|-88.0|-18.0|-11.09045|-0.13873 +2016-07-01|-88.0|-19.0|-10.146|-0.13854 +2016-07-01|-88.0|-20.0|-9.20189|-0.13834 +2016-07-01|-88.0|-21.0|-8.25813|-0.13815 +2016-07-01|-88.0|-22.0|-7.3147|-0.13797 +2016-07-01|-88.0|-23.0|-6.37158|-0.13778 +2016-07-01|-88.0|-24.0|-5.42876|-0.1376 +2016-07-01|-88.0|-25.0|-4.48623|-0.13743 +2016-07-01|-88.0|-26.0|-3.54397|-0.13726 +2016-07-01|-88.0|-27.0|-2.60196|-0.13709 +2016-07-01|-88.0|-28.0|-1.6602|-0.13692 +2016-07-01|-88.0|-29.0|-0.71866|-0.13676 +2016-07-01|-88.0|-30.0|0.22266|-0.13661 +2016-07-01|-88.0|-31.0|1.16379|-0.13645 +2016-07-01|-88.0|-32.0|2.10473|-0.13631 +2016-07-01|-88.0|-33.0|3.0455|-0.13616 +2016-07-01|-88.0|-34.0|3.98612|-0.13602 +2016-07-01|-88.0|-35.0|4.9266|-0.13589 +2016-07-01|-88.0|-36.0|5.86696|-0.13575 +2016-07-01|-88.0|-37.0|6.8072|-0.13563 +2016-07-01|-88.0|-38.0|7.74736|-0.1355 +2016-07-01|-88.0|-39.0|8.68743|-0.13538 +2016-07-01|-88.0|-40.0|9.62745|-0.13527 +2016-07-01|-88.0|-41.0|10.56741|-0.13516 +2016-07-01|-88.0|-42.0|11.50734|-0.13505 +2016-07-01|-88.0|-43.0|12.44726|-0.13495 +2016-07-01|-88.0|-44.0|13.38717|-0.13485 +2016-07-01|-88.0|-45.0|14.3271|-0.13476 +2016-07-01|-88.0|-46.0|15.26706|-0.13467 +2016-07-01|-88.0|-47.0|16.20706|-0.13458 +2016-07-01|-88.0|-48.0|17.14713|-0.1345 +2016-07-01|-88.0|-49.0|18.08727|-0.13443 +2016-07-01|-88.0|-50.0|19.0275|-0.13436 +2016-07-01|-88.0|-51.0|19.96784|-0.13429 +2016-07-01|-88.0|-52.0|20.90831|-0.13423 +2016-07-01|-88.0|-53.0|21.84891|-0.13417 +2016-07-01|-88.0|-54.0|22.78967|-0.13412 +2016-07-01|-88.0|-55.0|23.7306|-0.13407 +2016-07-01|-88.0|-56.0|24.67172|-0.13402 +2016-07-01|-88.0|-57.0|25.61304|-0.13398 +2016-07-01|-88.0|-58.0|26.55458|-0.13395 +2016-07-01|-88.0|-59.0|27.49636|-0.13392 +2016-07-01|-88.0|-60.0|28.43839|-0.13389 +2016-07-01|-88.0|-61.0|29.38068|-0.13387 +2016-07-01|-88.0|-62.0|30.32325|-0.13386 +2016-07-01|-88.0|-63.0|31.26613|-0.13384 +2016-07-01|-88.0|-64.0|32.20932|-0.13384 +2016-07-01|-88.0|-65.0|33.15284|-0.13384 +2016-07-01|-88.0|-66.0|34.0967|-0.13384 +2016-07-01|-88.0|-67.0|35.04093|-0.13384 +2016-07-01|-88.0|-68.0|35.98553|-0.13386 +2016-07-01|-88.0|-69.0|36.93053|-0.13387 +2016-07-01|-88.0|-70.0|37.87594|-0.13389 +2016-07-01|-88.0|-71.0|38.82177|-0.13392 +2016-07-01|-88.0|-72.0|39.76805|-0.13395 +2016-07-01|-88.0|-73.0|40.71478|-0.13398 +2016-07-01|-88.0|-74.0|41.66199|-0.13402 +2016-07-01|-88.0|-75.0|42.60968|-0.13407 +2016-07-01|-88.0|-76.0|43.55788|-0.13411 +2016-07-01|-88.0|-77.0|44.5066|-0.13417 +2016-07-01|-88.0|-78.0|45.45585|-0.13423 +2016-07-01|-88.0|-79.0|46.40565|-0.13429 +2016-07-01|-88.0|-80.0|47.35602|-0.13436 +2016-07-01|-88.0|-81.0|48.30698|-0.13443 +2016-07-01|-88.0|-82.0|49.25853|-0.1345 +2016-07-01|-88.0|-83.0|50.21069|-0.13458 +2016-07-01|-88.0|-84.0|51.16348|-0.13467 +2016-07-01|-88.0|-85.0|52.11691|-0.13476 +2016-07-01|-88.0|-86.0|53.071|-0.13485 +2016-07-01|-88.0|-87.0|54.02576|-0.13495 +2016-07-01|-88.0|-88.0|54.98121|-0.13505 +2016-07-01|-88.0|-89.0|55.93737|-0.13516 +2016-07-01|-88.0|-90.0|56.89424|-0.13527 +2016-07-01|-88.0|-91.0|57.85184|-0.13539 +2016-07-01|-88.0|-92.0|58.81019|-0.13551 +2016-07-01|-88.0|-93.0|59.7693|-0.13564 +2016-07-01|-88.0|-94.0|60.72918|-0.13577 +2016-07-01|-88.0|-95.0|61.68985|-0.1359 +2016-07-01|-88.0|-96.0|62.65133|-0.13604 +2016-07-01|-88.0|-97.0|63.61362|-0.13618 +2016-07-01|-88.0|-98.0|64.57675|-0.13633 +2016-07-01|-88.0|-99.0|65.54071|-0.13648 +2016-07-01|-88.0|-100.0|66.50554|-0.13664 +2016-07-01|-88.0|-101.0|67.47124|-0.13679 +2016-07-01|-88.0|-102.0|68.43782|-0.13696 +2016-07-01|-88.0|-103.0|69.4053|-0.13713 +2016-07-01|-88.0|-104.0|70.37369|-0.1373 +2016-07-01|-88.0|-105.0|71.343|-0.13747 +2016-07-01|-88.0|-106.0|72.31325|-0.13766 +2016-07-01|-88.0|-107.0|73.28445|-0.13784 +2016-07-01|-88.0|-108.0|74.2566|-0.13803 +2016-07-01|-88.0|-109.0|75.22973|-0.13822 +2016-07-01|-88.0|-110.0|76.20384|-0.13842 +2016-07-01|-88.0|-111.0|77.17895|-0.13862 +2016-07-01|-88.0|-112.0|78.15506|-0.13882 +2016-07-01|-88.0|-113.0|79.13219|-0.13903 +2016-07-01|-88.0|-114.0|80.11034|-0.13924 +2016-07-01|-88.0|-115.0|81.08954|-0.13945 +2016-07-01|-88.0|-116.0|82.06978|-0.13967 +2016-07-01|-88.0|-117.0|83.05109|-0.1399 +2016-07-01|-88.0|-118.0|84.03346|-0.14012 +2016-07-01|-88.0|-119.0|85.01691|-0.14035 +2016-07-01|-88.0|-120.0|86.00144|-0.14059 +2016-07-01|-88.0|-121.0|86.98708|-0.14082 +2016-07-01|-88.0|-122.0|87.97381|-0.14106 +2016-07-01|-88.0|-123.0|88.96166|-0.14131 +2016-07-01|-88.0|-124.0|89.95063|-0.14155 +2016-07-01|-88.0|-125.0|90.94073|-0.1418 +2016-07-01|-88.0|-126.0|91.93197|-0.14205 +2016-07-01|-88.0|-127.0|92.92435|-0.14231 +2016-07-01|-88.0|-128.0|93.91788|-0.14257 +2016-07-01|-88.0|-129.0|94.91256|-0.14283 +2016-07-01|-88.0|-130.0|95.90841|-0.1431 +2016-07-01|-88.0|-131.0|96.90542|-0.14337 +2016-07-01|-88.0|-132.0|97.90361|-0.14364 +2016-07-01|-88.0|-133.0|98.90298|-0.14391 +2016-07-01|-88.0|-134.0|99.90352|-0.14419 +2016-07-01|-88.0|-135.0|100.90526|-0.14446 +2016-07-01|-88.0|-136.0|101.90818|-0.14475 +2016-07-01|-88.0|-137.0|102.9123|-0.14503 +2016-07-01|-88.0|-138.0|103.91761|-0.14532 +2016-07-01|-88.0|-139.0|104.92412|-0.1456 +2016-07-01|-88.0|-140.0|105.93183|-0.14589 +2016-07-01|-88.0|-141.0|106.94074|-0.14619 +2016-07-01|-88.0|-142.0|107.95086|-0.14648 +2016-07-01|-88.0|-143.0|108.96218|-0.14678 +2016-07-01|-88.0|-144.0|109.9747|-0.14708 +2016-07-01|-88.0|-145.0|110.98843|-0.14738 +2016-07-01|-88.0|-146.0|112.00336|-0.14768 +2016-07-01|-88.0|-147.0|113.01949|-0.14798 +2016-07-01|-88.0|-148.0|114.03682|-0.14829 +2016-07-01|-88.0|-149.0|115.05535|-0.14859 +2016-07-01|-88.0|-150.0|116.07507|-0.1489 +2016-07-01|-88.0|-151.0|117.09598|-0.14921 +2016-07-01|-88.0|-152.0|118.11809|-0.14952 +2016-07-01|-88.0|-153.0|119.14137|-0.14983 +2016-07-01|-88.0|-154.0|120.16584|-0.15014 +2016-07-01|-88.0|-155.0|121.19147|-0.15046 +2016-07-01|-88.0|-156.0|122.21828|-0.15077 +2016-07-01|-88.0|-157.0|123.24625|-0.15108 +2016-07-01|-88.0|-158.0|124.27537|-0.1514 +2016-07-01|-88.0|-159.0|125.30564|-0.15171 +2016-07-01|-88.0|-160.0|126.33705|-0.15203 +2016-07-01|-88.0|-161.0|127.36959|-0.15234 +2016-07-01|-88.0|-162.0|128.40326|-0.15266 +2016-07-01|-88.0|-163.0|129.43803|-0.15297 +2016-07-01|-88.0|-164.0|130.47391|-0.15329 +2016-07-01|-88.0|-165.0|131.51089|-0.1536 +2016-07-01|-88.0|-166.0|132.54894|-0.15391 +2016-07-01|-88.0|-167.0|133.58807|-0.15423 +2016-07-01|-88.0|-168.0|134.62825|-0.15454 +2016-07-01|-88.0|-169.0|135.66948|-0.15485 +2016-07-01|-88.0|-170.0|136.71174|-0.15516 +2016-07-01|-88.0|-171.0|137.75502|-0.15547 +2016-07-01|-88.0|-172.0|138.79931|-0.15578 +2016-07-01|-88.0|-173.0|139.84458|-0.15609 +2016-07-01|-88.0|-174.0|140.89083|-0.15639 +2016-07-01|-88.0|-175.0|141.93804|-0.1567 +2016-07-01|-88.0|-176.0|142.9862|-0.157 +2016-07-01|-88.0|-177.0|144.03528|-0.1573 +2016-07-01|-88.0|-178.0|145.08527|-0.1576 +2016-07-01|-88.0|-179.0|146.13615|-0.1579 +2016-07-01|-89.0|0.0|-29.1691|-0.14672 +2016-07-01|-89.0|1.0|-30.14529|-0.14684 +2016-07-01|-89.0|2.0|-31.12181|-0.14698 +2016-07-01|-89.0|3.0|-32.09867|-0.14711 +2016-07-01|-89.0|4.0|-33.07586|-0.14724 +2016-07-01|-89.0|5.0|-34.05341|-0.14737 +2016-07-01|-89.0|6.0|-35.03131|-0.14751 +2016-07-01|-89.0|7.0|-36.00957|-0.14765 +2016-07-01|-89.0|8.0|-36.98821|-0.14778 +2016-07-01|-89.0|9.0|-37.96721|-0.14792 +2016-07-01|-89.0|10.0|-38.9466|-0.14806 +2016-07-01|-89.0|11.0|-39.92637|-0.1482 +2016-07-01|-89.0|12.0|-40.90653|-0.14834 +2016-07-01|-89.0|13.0|-41.88709|-0.14848 +2016-07-01|-89.0|14.0|-42.86806|-0.14862 +2016-07-01|-89.0|15.0|-43.84943|-0.14876 +2016-07-01|-89.0|16.0|-44.83121|-0.14891 +2016-07-01|-89.0|17.0|-45.81342|-0.14905 +2016-07-01|-89.0|18.0|-46.79605|-0.14919 +2016-07-01|-89.0|19.0|-47.77911|-0.14934 +2016-07-01|-89.0|20.0|-48.7626|-0.14948 +2016-07-01|-89.0|21.0|-49.74654|-0.14963 +2016-07-01|-89.0|22.0|-50.73092|-0.14978 +2016-07-01|-89.0|23.0|-51.71575|-0.14992 +2016-07-01|-89.0|24.0|-52.70103|-0.15007 +2016-07-01|-89.0|25.0|-53.68677|-0.15021 +2016-07-01|-89.0|26.0|-54.67297|-0.15036 +2016-07-01|-89.0|27.0|-55.65964|-0.15051 +2016-07-01|-89.0|28.0|-56.64679|-0.15065 +2016-07-01|-89.0|29.0|-57.6344|-0.1508 +2016-07-01|-89.0|30.0|-58.6225|-0.15095 +2016-07-01|-89.0|31.0|-59.61108|-0.1511 +2016-07-01|-89.0|32.0|-60.60015|-0.15124 +2016-07-01|-89.0|33.0|-61.58971|-0.15139 +2016-07-01|-89.0|34.0|-62.57976|-0.15154 +2016-07-01|-89.0|35.0|-63.57031|-0.15168 +2016-07-01|-89.0|36.0|-64.56137|-0.15183 +2016-07-01|-89.0|37.0|-65.55292|-0.15198 +2016-07-01|-89.0|38.0|-66.54499|-0.15212 +2016-07-01|-89.0|39.0|-67.53756|-0.15227 +2016-07-01|-89.0|40.0|-68.53065|-0.15241 +2016-07-01|-89.0|41.0|-69.52425|-0.15256 +2016-07-01|-89.0|42.0|-70.51837|-0.1527 +2016-07-01|-89.0|43.0|-71.51301|-0.15284 +2016-07-01|-89.0|44.0|-72.50817|-0.15299 +2016-07-01|-89.0|45.0|-73.50386|-0.15313 +2016-07-01|-89.0|46.0|-74.50008|-0.15327 +2016-07-01|-89.0|47.0|-75.49682|-0.15341 +2016-07-01|-89.0|48.0|-76.4941|-0.15355 +2016-07-01|-89.0|49.0|-77.4919|-0.15369 +2016-07-01|-89.0|50.0|-78.49024|-0.15383 +2016-07-01|-89.0|51.0|-79.48912|-0.15397 +2016-07-01|-89.0|52.0|-80.48853|-0.1541 +2016-07-01|-89.0|53.0|-81.48848|-0.15424 +2016-07-01|-89.0|54.0|-82.48897|-0.15438 +2016-07-01|-89.0|55.0|-83.49|-0.15451 +2016-07-01|-89.0|56.0|-84.49156|-0.15464 +2016-07-01|-89.0|57.0|-85.49367|-0.15477 +2016-07-01|-89.0|58.0|-86.49631|-0.1549 +2016-07-01|-89.0|59.0|-87.4995|-0.15503 +2016-07-01|-89.0|60.0|-88.50323|-0.15516 +2016-07-01|-89.0|61.0|-89.50749|-0.15529 +2016-07-01|-89.0|62.0|-90.5123|-0.15541 +2016-07-01|-89.0|63.0|-91.51765|-0.15554 +2016-07-01|-89.0|64.0|-92.52353|-0.15566 +2016-07-01|-89.0|65.0|-93.52996|-0.15578 +2016-07-01|-89.0|66.0|-94.53692|-0.1559 +2016-07-01|-89.0|67.0|-95.54441|-0.15602 +2016-07-01|-89.0|68.0|-96.55245|-0.15614 +2016-07-01|-89.0|69.0|-97.56101|-0.15625 +2016-07-01|-89.0|70.0|-98.57011|-0.15637 +2016-07-01|-89.0|71.0|-99.57974|-0.15648 +2016-07-01|-89.0|72.0|-100.58989|-0.15659 +2016-07-01|-89.0|73.0|-101.60058|-0.1567 +2016-07-01|-89.0|74.0|-102.61178|-0.1568 +2016-07-01|-89.0|75.0|-103.62351|-0.15691 +2016-07-01|-89.0|76.0|-104.63576|-0.15701 +2016-07-01|-89.0|77.0|-105.64853|-0.15711 +2016-07-01|-89.0|78.0|-106.66181|-0.15721 +2016-07-01|-89.0|79.0|-107.6756|-0.15731 +2016-07-01|-89.0|80.0|-108.68989|-0.15741 +2016-07-01|-89.0|81.0|-109.70469|-0.1575 +2016-07-01|-89.0|82.0|-110.72|-0.15759 +2016-07-01|-89.0|83.0|-111.7358|-0.15768 +2016-07-01|-89.0|84.0|-112.75209|-0.15777 +2016-07-01|-89.0|85.0|-113.76887|-0.15785 +2016-07-01|-89.0|86.0|-114.78613|-0.15794 +2016-07-01|-89.0|87.0|-115.80388|-0.15802 +2016-07-01|-89.0|88.0|-116.8221|-0.1581 +2016-07-01|-89.0|89.0|-117.8408|-0.15817 +2016-07-01|-89.0|90.0|-118.85996|-0.15825 +2016-07-01|-89.0|91.0|-119.87958|-0.15832 +2016-07-01|-89.0|92.0|-120.89966|-0.15839 +2016-07-01|-89.0|93.0|-121.92019|-0.15845 +2016-07-01|-89.0|94.0|-122.94116|-0.15852 +2016-07-01|-89.0|95.0|-123.96257|-0.15858 +2016-07-01|-89.0|96.0|-124.98442|-0.15864 +2016-07-01|-89.0|97.0|-126.00669|-0.1587 +2016-07-01|-89.0|98.0|-127.02939|-0.15875 +2016-07-01|-89.0|99.0|-128.0525|-0.15881 +2016-07-01|-89.0|100.0|-129.07602|-0.15886 +2016-07-01|-89.0|101.0|-130.09994|-0.1589 +2016-07-01|-89.0|102.0|-131.12425|-0.15895 +2016-07-01|-89.0|103.0|-132.14896|-0.15899 +2016-07-01|-89.0|104.0|-133.17404|-0.15903 +2016-07-01|-89.0|105.0|-134.1995|-0.15907 +2016-07-01|-89.0|106.0|-135.22532|-0.1591 +2016-07-01|-89.0|107.0|-136.2515|-0.15913 +2016-07-01|-89.0|108.0|-137.27804|-0.15916 +2016-07-01|-89.0|109.0|-138.30491|-0.15919 +2016-07-01|-89.0|110.0|-139.33212|-0.15921 +2016-07-01|-89.0|111.0|-140.35966|-0.15923 +2016-07-01|-89.0|112.0|-141.38751|-0.15925 +2016-07-01|-89.0|113.0|-142.41568|-0.15927 +2016-07-01|-89.0|114.0|-143.44414|-0.15928 +2016-07-01|-89.0|115.0|-144.4729|-0.15929 +2016-07-01|-89.0|116.0|-145.50194|-0.1593 +2016-07-01|-89.0|117.0|-146.53125|-0.1593 +2016-07-01|-89.0|118.0|-147.56083|-0.1593 +2016-07-01|-89.0|119.0|-148.59067|-0.1593 +2016-07-01|-89.0|120.0|-149.62075|-0.1593 +2016-07-01|-89.0|121.0|-150.65107|-0.15929 +2016-07-01|-89.0|122.0|-151.68162|-0.15928 +2016-07-01|-89.0|123.0|-152.71238|-0.15927 +2016-07-01|-89.0|124.0|-153.74335|-0.15926 +2016-07-01|-89.0|125.0|-154.77452|-0.15924 +2016-07-01|-89.0|126.0|-155.80588|-0.15922 +2016-07-01|-89.0|127.0|-156.83741|-0.15919 +2016-07-01|-89.0|128.0|-157.86912|-0.15917 +2016-07-01|-89.0|129.0|-158.90098|-0.15914 +2016-07-01|-89.0|130.0|-159.93298|-0.15911 +2016-07-01|-89.0|131.0|-160.96512|-0.15907 +2016-07-01|-89.0|132.0|-161.99739|-0.15904 +2016-07-01|-89.0|133.0|-163.02978|-0.159 +2016-07-01|-89.0|134.0|-164.06226|-0.15895 +2016-07-01|-89.0|135.0|-165.09485|-0.15891 +2016-07-01|-89.0|136.0|-166.12751|-0.15886 +2016-07-01|-89.0|137.0|-167.16025|-0.15881 +2016-07-01|-89.0|138.0|-168.19304|-0.15876 +2016-07-01|-89.0|139.0|-169.22589|-0.1587 +2016-07-01|-89.0|140.0|-170.25878|-0.15864 +2016-07-01|-89.0|141.0|-171.29169|-0.15858 +2016-07-01|-89.0|142.0|-172.32462|-0.15852 +2016-07-01|-89.0|143.0|-173.35756|-0.15845 +2016-07-01|-89.0|144.0|-174.39049|-0.15838 +2016-07-01|-89.0|145.0|-175.42341|-0.15831 +2016-07-01|-89.0|146.0|-176.4563|-0.15824 +2016-07-01|-89.0|147.0|-177.48915|-0.15816 +2016-07-01|-89.0|148.0|-178.52195|-0.15808 +2016-07-01|-89.0|149.0|-179.55469|-0.158 +2016-07-01|-89.0|150.0|179.41265|-0.15792 +2016-07-01|-89.0|151.0|178.38006|-0.15783 +2016-07-01|-89.0|152.0|177.34757|-0.15775 +2016-07-01|-89.0|153.0|176.31519|-0.15765 +2016-07-01|-89.0|154.0|175.28292|-0.15756 +2016-07-01|-89.0|155.0|174.25078|-0.15747 +2016-07-01|-89.0|156.0|173.21878|-0.15737 +2016-07-01|-89.0|157.0|172.18692|-0.15727 +2016-07-01|-89.0|158.0|171.15523|-0.15717 +2016-07-01|-89.0|159.0|170.12371|-0.15706 +2016-07-01|-89.0|160.0|169.09237|-0.15696 +2016-07-01|-89.0|161.0|168.06122|-0.15685 +2016-07-01|-89.0|162.0|167.03028|-0.15674 +2016-07-01|-89.0|163.0|165.99955|-0.15663 +2016-07-01|-89.0|164.0|164.96904|-0.15651 +2016-07-01|-89.0|165.0|163.93877|-0.1564 +2016-07-01|-89.0|166.0|162.90875|-0.15628 +2016-07-01|-89.0|167.0|161.87897|-0.15616 +2016-07-01|-89.0|168.0|160.84947|-0.15604 +2016-07-01|-89.0|169.0|159.82024|-0.15592 +2016-07-01|-89.0|170.0|158.79129|-0.15579 +2016-07-01|-89.0|171.0|157.76264|-0.15567 +2016-07-01|-89.0|172.0|156.7343|-0.15554 +2016-07-01|-89.0|173.0|155.70627|-0.15541 +2016-07-01|-89.0|174.0|154.67856|-0.15528 +2016-07-01|-89.0|175.0|153.65118|-0.15514 +2016-07-01|-89.0|176.0|152.62415|-0.15501 +2016-07-01|-89.0|177.0|151.59747|-0.15488 +2016-07-01|-89.0|178.0|150.57115|-0.15474 +2016-07-01|-89.0|179.0|149.5452|-0.1546 +2016-07-01|-89.0|-1.0|-28.19324|-0.14659 +2016-07-01|-89.0|-2.0|-27.21769|-0.14646 +2016-07-01|-89.0|-3.0|-26.24245|-0.14633 +2016-07-01|-89.0|-4.0|-25.26751|-0.14621 +2016-07-01|-89.0|-5.0|-24.29287|-0.14608 +2016-07-01|-89.0|-6.0|-23.31852|-0.14596 +2016-07-01|-89.0|-7.0|-22.34445|-0.14584 +2016-07-01|-89.0|-8.0|-21.37065|-0.14572 +2016-07-01|-89.0|-9.0|-20.39712|-0.1456 +2016-07-01|-89.0|-10.0|-19.42385|-0.14549 +2016-07-01|-89.0|-11.0|-18.45083|-0.14537 +2016-07-01|-89.0|-12.0|-17.47806|-0.14526 +2016-07-01|-89.0|-13.0|-16.50553|-0.14515 +2016-07-01|-89.0|-14.0|-15.53322|-0.14504 +2016-07-01|-89.0|-15.0|-14.56114|-0.14493 +2016-07-01|-89.0|-16.0|-13.58928|-0.14482 +2016-07-01|-89.0|-17.0|-12.61762|-0.14472 +2016-07-01|-89.0|-18.0|-11.64616|-0.14461 +2016-07-01|-89.0|-19.0|-10.67489|-0.14451 +2016-07-01|-89.0|-20.0|-9.70381|-0.14441 +2016-07-01|-89.0|-21.0|-8.7329|-0.14431 +2016-07-01|-89.0|-22.0|-7.76216|-0.14422 +2016-07-01|-89.0|-23.0|-6.79158|-0.14412 +2016-07-01|-89.0|-24.0|-5.82115|-0.14403 +2016-07-01|-89.0|-25.0|-4.85087|-0.14394 +2016-07-01|-89.0|-26.0|-3.88072|-0.14385 +2016-07-01|-89.0|-27.0|-2.9107|-0.14377 +2016-07-01|-89.0|-28.0|-1.94079|-0.14368 +2016-07-01|-89.0|-29.0|-0.971|-0.1436 +2016-07-01|-89.0|-30.0|-0.00132|-0.14352 +2016-07-01|-89.0|-31.0|0.96828|-0.14344 +2016-07-01|-89.0|-32.0|1.93779|-0.14336 +2016-07-01|-89.0|-33.0|2.90722|-0.14329 +2016-07-01|-89.0|-34.0|3.87658|-0.14322 +2016-07-01|-89.0|-35.0|4.84588|-0.14315 +2016-07-01|-89.0|-36.0|5.81512|-0.14308 +2016-07-01|-89.0|-37.0|6.78433|-0.14301 +2016-07-01|-89.0|-38.0|7.7535|-0.14295 +2016-07-01|-89.0|-39.0|8.72264|-0.14289 +2016-07-01|-89.0|-40.0|9.69176|-0.14283 +2016-07-01|-89.0|-41.0|10.66088|-0.14277 +2016-07-01|-89.0|-42.0|11.62999|-0.14272 +2016-07-01|-89.0|-43.0|12.59911|-0.14267 +2016-07-01|-89.0|-44.0|13.56825|-0.14262 +2016-07-01|-89.0|-45.0|14.53741|-0.14257 +2016-07-01|-89.0|-46.0|15.5066|-0.14252 +2016-07-01|-89.0|-47.0|16.47584|-0.14248 +2016-07-01|-89.0|-48.0|17.44513|-0.14244 +2016-07-01|-89.0|-49.0|18.41447|-0.1424 +2016-07-01|-89.0|-50.0|19.38389|-0.14237 +2016-07-01|-89.0|-51.0|20.35338|-0.14233 +2016-07-01|-89.0|-52.0|21.32296|-0.1423 +2016-07-01|-89.0|-53.0|22.29263|-0.14227 +2016-07-01|-89.0|-54.0|23.2624|-0.14225 +2016-07-01|-89.0|-55.0|24.23229|-0.14222 +2016-07-01|-89.0|-56.0|25.2023|-0.1422 +2016-07-01|-89.0|-57.0|26.17243|-0.14218 +2016-07-01|-89.0|-58.0|27.1427|-0.14217 +2016-07-01|-89.0|-59.0|28.11312|-0.14215 +2016-07-01|-89.0|-60.0|29.08369|-0.14214 +2016-07-01|-89.0|-61.0|30.05442|-0.14213 +2016-07-01|-89.0|-62.0|31.02533|-0.14213 +2016-07-01|-89.0|-63.0|31.99641|-0.14212 +2016-07-01|-89.0|-64.0|32.96768|-0.14212 +2016-07-01|-89.0|-65.0|33.93915|-0.14212 +2016-07-01|-89.0|-66.0|34.91083|-0.14212 +2016-07-01|-89.0|-67.0|35.88272|-0.14213 +2016-07-01|-89.0|-68.0|36.85483|-0.14214 +2016-07-01|-89.0|-69.0|37.82717|-0.14215 +2016-07-01|-89.0|-70.0|38.79975|-0.14216 +2016-07-01|-89.0|-71.0|39.77257|-0.14218 +2016-07-01|-89.0|-72.0|40.74565|-0.14219 +2016-07-01|-89.0|-73.0|41.71899|-0.14222 +2016-07-01|-89.0|-74.0|42.69261|-0.14224 +2016-07-01|-89.0|-75.0|43.6665|-0.14226 +2016-07-01|-89.0|-76.0|44.64068|-0.14229 +2016-07-01|-89.0|-77.0|45.61516|-0.14232 +2016-07-01|-89.0|-78.0|46.58993|-0.14235 +2016-07-01|-89.0|-79.0|47.56502|-0.14239 +2016-07-01|-89.0|-80.0|48.54043|-0.14243 +2016-07-01|-89.0|-81.0|49.51616|-0.14247 +2016-07-01|-89.0|-82.0|50.49223|-0.14251 +2016-07-01|-89.0|-83.0|51.46864|-0.14255 +2016-07-01|-89.0|-84.0|52.44539|-0.1426 +2016-07-01|-89.0|-85.0|53.4225|-0.14265 +2016-07-01|-89.0|-86.0|54.39998|-0.1427 +2016-07-01|-89.0|-87.0|55.37783|-0.14276 +2016-07-01|-89.0|-88.0|56.35605|-0.14281 +2016-07-01|-89.0|-89.0|57.33466|-0.14287 +2016-07-01|-89.0|-90.0|58.31366|-0.14294 +2016-07-01|-89.0|-91.0|59.29306|-0.143 +2016-07-01|-89.0|-92.0|60.27286|-0.14306 +2016-07-01|-89.0|-93.0|61.25308|-0.14313 +2016-07-01|-89.0|-94.0|62.23372|-0.1432 +2016-07-01|-89.0|-95.0|63.21478|-0.14328 +2016-07-01|-89.0|-96.0|64.19627|-0.14335 +2016-07-01|-89.0|-97.0|65.1782|-0.14343 +2016-07-01|-89.0|-98.0|66.16058|-0.14351 +2016-07-01|-89.0|-99.0|67.1434|-0.14359 +2016-07-01|-89.0|-100.0|68.12668|-0.14367 +2016-07-01|-89.0|-101.0|69.11043|-0.14376 +2016-07-01|-89.0|-102.0|70.09464|-0.14385 +2016-07-01|-89.0|-103.0|71.07933|-0.14394 +2016-07-01|-89.0|-104.0|72.06449|-0.14403 +2016-07-01|-89.0|-105.0|73.05014|-0.14412 +2016-07-01|-89.0|-106.0|74.03628|-0.14422 +2016-07-01|-89.0|-107.0|75.02291|-0.14432 +2016-07-01|-89.0|-108.0|76.01004|-0.14442 +2016-07-01|-89.0|-109.0|76.99768|-0.14452 +2016-07-01|-89.0|-110.0|77.98583|-0.14462 +2016-07-01|-89.0|-111.0|78.97449|-0.14473 +2016-07-01|-89.0|-112.0|79.96367|-0.14484 +2016-07-01|-89.0|-113.0|80.95337|-0.14495 +2016-07-01|-89.0|-114.0|81.9436|-0.14506 +2016-07-01|-89.0|-115.0|82.93435|-0.14517 +2016-07-01|-89.0|-116.0|83.92565|-0.14528 +2016-07-01|-89.0|-117.0|84.91748|-0.1454 +2016-07-01|-89.0|-118.0|85.90985|-0.14552 +2016-07-01|-89.0|-119.0|86.90277|-0.14564 +2016-07-01|-89.0|-120.0|87.89624|-0.14576 +2016-07-01|-89.0|-121.0|88.89026|-0.14588 +2016-07-01|-89.0|-122.0|89.88483|-0.14601 +2016-07-01|-89.0|-123.0|90.87996|-0.14613 +2016-07-01|-89.0|-124.0|91.87565|-0.14626 +2016-07-01|-89.0|-125.0|92.8719|-0.14639 +2016-07-01|-89.0|-126.0|93.86871|-0.14652 +2016-07-01|-89.0|-127.0|94.86609|-0.14665 +2016-07-01|-89.0|-128.0|95.86404|-0.14679 +2016-07-01|-89.0|-129.0|96.86256|-0.14692 +2016-07-01|-89.0|-130.0|97.86165|-0.14706 +2016-07-01|-89.0|-131.0|98.86131|-0.14719 +2016-07-01|-89.0|-132.0|99.86155|-0.14733 +2016-07-01|-89.0|-133.0|100.86236|-0.14747 +2016-07-01|-89.0|-134.0|101.86374|-0.14761 +2016-07-01|-89.0|-135.0|102.8657|-0.14775 +2016-07-01|-89.0|-136.0|103.86824|-0.14789 +2016-07-01|-89.0|-137.0|104.87135|-0.14804 +2016-07-01|-89.0|-138.0|105.87504|-0.14818 +2016-07-01|-89.0|-139.0|106.8793|-0.14833 +2016-07-01|-89.0|-140.0|107.88414|-0.14847 +2016-07-01|-89.0|-141.0|108.88956|-0.14862 +2016-07-01|-89.0|-142.0|109.89554|-0.14877 +2016-07-01|-89.0|-143.0|110.9021|-0.14892 +2016-07-01|-89.0|-144.0|111.90924|-0.14907 +2016-07-01|-89.0|-145.0|112.91694|-0.14922 +2016-07-01|-89.0|-146.0|113.92521|-0.14937 +2016-07-01|-89.0|-147.0|114.93405|-0.14952 +2016-07-01|-89.0|-148.0|115.94345|-0.14967 +2016-07-01|-89.0|-149.0|116.95341|-0.14982 +2016-07-01|-89.0|-150.0|117.96394|-0.14997 +2016-07-01|-89.0|-151.0|118.97502|-0.15012 +2016-07-01|-89.0|-152.0|119.98666|-0.15028 +2016-07-01|-89.0|-153.0|120.99885|-0.15043 +2016-07-01|-89.0|-154.0|122.01158|-0.15058 +2016-07-01|-89.0|-155.0|123.02486|-0.15073 +2016-07-01|-89.0|-156.0|124.03868|-0.15089 +2016-07-01|-89.0|-157.0|125.05304|-0.15104 +2016-07-01|-89.0|-158.0|126.06793|-0.15119 +2016-07-01|-89.0|-159.0|127.08335|-0.15135 +2016-07-01|-89.0|-160.0|128.0993|-0.1515 +2016-07-01|-89.0|-161.0|129.11576|-0.15165 +2016-07-01|-89.0|-162.0|130.13274|-0.15181 +2016-07-01|-89.0|-163.0|131.15023|-0.15196 +2016-07-01|-89.0|-164.0|132.16822|-0.15211 +2016-07-01|-89.0|-165.0|133.18671|-0.15226 +2016-07-01|-89.0|-166.0|134.2057|-0.15241 +2016-07-01|-89.0|-167.0|135.22517|-0.15257 +2016-07-01|-89.0|-168.0|136.24512|-0.15272 +2016-07-01|-89.0|-169.0|137.26555|-0.15287 +2016-07-01|-89.0|-170.0|138.28644|-0.15302 +2016-07-01|-89.0|-171.0|139.3078|-0.15316 +2016-07-01|-89.0|-172.0|140.32961|-0.15331 +2016-07-01|-89.0|-173.0|141.35188|-0.15346 +2016-07-01|-89.0|-174.0|142.37458|-0.1536 +2016-07-01|-89.0|-175.0|143.39771|-0.15375 +2016-07-01|-89.0|-176.0|144.42127|-0.15389 +2016-07-01|-89.0|-177.0|145.44525|-0.15404 +2016-07-01|-89.0|-178.0|146.46965|-0.15418 +2016-07-01|-89.0|-179.0|147.49444|-0.15432 +2016-07-01|72.0|-121.0|21.37325|-0.7719 +2016-07-01|72.0|-122.0|21.7908|-0.77516 +2016-07-01|72.0|-123.0|22.14949|-0.77697 +2016-07-01|72.0|-124.0|22.45265|-0.77751 +2016-07-01|72.0|-125.0|22.70345|-0.77694 +2016-07-01|72.0|-126.0|22.9049|-0.77539 +2016-07-01|72.0|-127.0|23.05989|-0.773 +2016-07-01|72.0|-128.0|23.17113|-0.76987 +2016-07-01|72.0|-129.0|23.24119|-0.76609 +2016-07-01|72.0|-130.0|23.27248|-0.76174 +2016-07-01|72.0|-131.0|23.26729|-0.75691 +2016-07-01|72.0|-132.0|23.22775|-0.75164 +2016-07-01|72.0|-133.0|23.15586|-0.746 +2016-07-01|72.0|-134.0|23.0535|-0.74002 +2016-07-01|72.0|-135.0|22.92243|-0.73376 +2016-07-01|72.0|-136.0|22.76431|-0.72724 +2016-07-01|72.0|-137.0|22.58067|-0.72049 +2016-07-01|72.0|-138.0|22.37297|-0.71353 +2016-07-01|72.0|-139.0|22.14257|-0.7064 +2016-07-01|72.0|-140.0|21.89072|-0.6991 +2016-07-01|72.0|-141.0|21.61864|-0.69166 +2016-07-01|72.0|-142.0|21.32743|-0.68407 +2016-07-01|72.0|-143.0|21.01814|-0.67637 +2016-07-01|72.0|-144.0|20.69177|-0.66854 +2016-07-01|72.0|-145.0|20.34924|-0.66061 +2016-07-01|72.0|-146.0|19.99142|-0.65258 +2016-07-01|72.0|-147.0|19.61914|-0.64445 +2016-07-01|72.0|-148.0|19.23317|-0.63622 +2016-07-01|72.0|-149.0|18.83424|-0.62791 +2016-07-01|72.0|-150.0|18.42305|-0.61951 +2016-07-01|72.0|-151.0|18.00024|-0.61103 +2016-07-01|72.0|-152.0|17.56644|-0.60247 +2016-07-01|72.0|-153.0|17.12222|-0.59383 +2016-07-01|72.0|-154.0|16.66816|-0.58511 +2016-07-01|72.0|-155.0|16.20477|-0.57631 +2016-07-01|72.0|-156.0|15.73256|-0.56744 +2016-07-01|72.0|-157.0|15.25202|-0.5585 +2016-07-01|72.0|-158.0|14.76359|-0.54949 +2016-07-01|72.0|-159.0|14.26772|-0.54041 +2016-07-01|72.0|-160.0|13.76483|-0.53126 +2016-07-01|72.0|-161.0|13.25532|-0.52205 +2016-07-01|72.0|-162.0|12.73958|-0.51278 +2016-07-01|72.0|-163.0|12.21798|-0.50344 +2016-07-01|72.0|-164.0|11.69088|-0.49405 +2016-07-01|72.0|-165.0|11.15863|-0.4846 +2016-07-01|72.0|-166.0|10.62157|-0.4751 +2016-07-01|72.0|-167.0|10.08003|-0.46556 +2016-07-01|72.0|-168.0|9.53432|-0.45597 +2016-07-01|72.0|-169.0|8.98477|-0.44634 +2016-07-01|72.0|-170.0|8.43167|-0.43667 +2016-07-01|72.0|-171.0|7.87532|-0.42697 +2016-07-01|72.0|-172.0|7.31603|-0.41725 +2016-07-01|72.0|-173.0|6.75407|-0.4075 +2016-07-01|72.0|-174.0|6.18975|-0.39774 +2016-07-01|72.0|-175.0|5.62335|-0.38797 +2016-07-01|72.0|-176.0|5.05515|-0.37819 +2016-07-01|72.0|-177.0|4.48544|-0.36842 +2016-07-01|72.0|-178.0|3.91449|-0.35865 +2016-07-01|72.0|-179.0|3.34261|-0.3489 +2016-07-01|73.0|0.0|-3.1959|0.30178 +2016-07-01|73.0|1.0|-2.51953|0.2994 +2016-07-01|73.0|2.0|-1.84401|0.29706 +2016-07-01|73.0|3.0|-1.16945|0.29478 +2016-07-01|73.0|4.0|-0.49594|0.29254 +2016-07-01|73.0|5.0|0.1764|0.29035 +2016-07-01|73.0|6.0|0.84746|0.2882 +2016-07-01|73.0|7.0|1.51714|0.2861 +2016-07-01|73.0|8.0|2.18532|0.28404 +2016-07-01|73.0|9.0|2.8519|0.28202 +2016-07-01|73.0|10.0|3.51676|0.28004 +2016-07-01|73.0|11.0|4.17979|0.27809 +2016-07-01|73.0|12.0|4.84087|0.27618 +2016-07-01|73.0|13.0|5.49989|0.27431 +2016-07-01|73.0|14.0|6.15672|0.27247 +2016-07-01|73.0|15.0|6.81125|0.27066 +2016-07-01|73.0|16.0|7.46334|0.26888 +2016-07-01|73.0|17.0|8.11285|0.26713 +2016-07-01|73.0|18.0|8.75967|0.26541 +2016-07-01|73.0|19.0|9.40363|0.26372 +2016-07-01|73.0|20.0|10.0446|0.26205 +2016-07-01|73.0|21.0|10.68243|0.2604 +2016-07-01|73.0|22.0|11.31695|0.25877 +2016-07-01|73.0|23.0|11.94801|0.25717 +2016-07-01|73.0|24.0|12.57543|0.25558 +2016-07-01|73.0|25.0|13.19903|0.25401 +2016-07-01|73.0|26.0|13.81863|0.25245 +2016-07-01|73.0|27.0|14.43404|0.25091 +2016-07-01|73.0|28.0|15.04504|0.24937 +2016-07-01|73.0|29.0|15.65143|0.24785 +2016-07-01|73.0|30.0|16.25298|0.24634 +2016-07-01|73.0|31.0|16.84947|0.24484 +2016-07-01|73.0|32.0|17.44065|0.24334 +2016-07-01|73.0|33.0|18.02627|0.24184 +2016-07-01|73.0|34.0|18.60606|0.24034 +2016-07-01|73.0|35.0|19.17975|0.23885 +2016-07-01|73.0|36.0|19.74704|0.23735 +2016-07-01|73.0|37.0|20.30762|0.23585 +2016-07-01|73.0|38.0|20.86119|0.23434 +2016-07-01|73.0|39.0|21.4074|0.23282 +2016-07-01|73.0|40.0|21.94591|0.23129 +2016-07-01|73.0|41.0|22.47635|0.22974 +2016-07-01|73.0|42.0|22.99833|0.22819 +2016-07-01|73.0|43.0|23.51146|0.22661 +2016-07-01|73.0|44.0|24.01531|0.22501 +2016-07-01|73.0|45.0|24.50944|0.22339 +2016-07-01|73.0|46.0|24.99339|0.22173 +2016-07-01|73.0|47.0|25.46667|0.22005 +2016-07-01|73.0|48.0|25.92877|0.21834 +2016-07-01|73.0|49.0|26.37915|0.21658 +2016-07-01|73.0|50.0|26.81726|0.21479 +2016-07-01|73.0|51.0|27.24249|0.21294 +2016-07-01|73.0|52.0|27.65424|0.21105 +2016-07-01|73.0|53.0|28.05184|0.2091 +2016-07-01|73.0|54.0|28.43461|0.20709 +2016-07-01|73.0|55.0|28.80182|0.20501 +2016-07-01|73.0|56.0|29.15272|0.20286 +2016-07-01|73.0|57.0|29.48652|0.20064 +2016-07-01|73.0|58.0|29.80235|0.19832 +2016-07-01|73.0|59.0|30.09935|0.19592 +2016-07-01|73.0|60.0|30.37657|0.19341 +2016-07-01|73.0|61.0|30.63304|0.1908 +2016-07-01|73.0|62.0|30.86772|0.18806 +2016-07-01|73.0|63.0|31.07953|0.1852 +2016-07-01|73.0|64.0|31.26732|0.1822 +2016-07-01|73.0|65.0|31.42989|0.17906 +2016-07-01|73.0|66.0|31.56597|0.17576 +2016-07-01|73.0|67.0|31.67423|0.17228 +2016-07-01|73.0|68.0|31.7533|0.16862 +2016-07-01|73.0|69.0|31.8017|0.16476 +2016-07-01|73.0|70.0|31.81791|0.1607 +2016-07-01|73.0|71.0|31.80035|0.15641 +2016-07-01|73.0|72.0|31.74735|0.15187 +2016-07-01|73.0|73.0|31.6572|0.14708 +2016-07-01|73.0|74.0|31.5281|0.14202 +2016-07-01|73.0|75.0|31.35823|0.13668 +2016-07-01|73.0|76.0|31.1457|0.13103 +2016-07-01|73.0|77.0|30.88858|0.12506 +2016-07-01|73.0|78.0|30.58492|0.11875 +2016-07-01|73.0|79.0|30.23276|0.11211 +2016-07-01|73.0|80.0|29.83015|0.1051 +2016-07-01|73.0|81.0|29.37515|0.09772 +2016-07-01|73.0|82.0|28.86592|0.08996 +2016-07-01|73.0|83.0|28.30067|0.08183 +2016-07-01|73.0|84.0|27.67779|0.07332 +2016-07-01|73.0|85.0|26.9958|0.06443 +2016-07-01|73.0|86.0|26.25349|0.05518 +2016-07-01|73.0|87.0|25.44992|0.0456 +2016-07-01|73.0|88.0|24.58448|0.03569 +2016-07-01|73.0|89.0|23.657|0.02552 +2016-07-01|73.0|90.0|22.66778|0.01511 +2016-07-01|73.0|91.0|21.61766|0.00454 +2016-07-01|73.0|92.0|20.5081|-0.00614 +2016-07-01|73.0|93.0|19.34121|-0.01684 +2016-07-01|73.0|94.0|18.11983|-0.02748 +2016-07-01|73.0|95.0|16.84753|-0.03795 +2016-07-01|73.0|96.0|15.52867|-0.04815 +2016-07-01|73.0|97.0|14.16831|-0.05799 +2016-07-01|73.0|98.0|12.77226|-0.06734 +2016-07-01|73.0|99.0|11.34697|-0.07611 +2016-07-01|73.0|100.0|9.89943|-0.08421 +2016-07-01|73.0|101.0|8.43709|-0.09153 +2016-07-01|73.0|102.0|6.96773|-0.09802 +2016-07-01|73.0|103.0|5.49925|-0.10363 +2016-07-01|73.0|104.0|4.03958|-0.1083 +2016-07-01|73.0|105.0|2.59648|-0.11204 +2016-07-01|73.0|106.0|1.1774|-0.11484 +2016-07-01|73.0|107.0|-0.21066|-0.11674 +2016-07-01|73.0|108.0|-1.56123|-0.11777 +2016-07-01|73.0|109.0|-2.86853|-0.118 +2016-07-01|73.0|110.0|-4.12747|-0.11749 +2016-07-01|73.0|111.0|-5.33372|-0.11633 +2016-07-01|73.0|112.0|-6.48372|-0.1146 +2016-07-01|73.0|113.0|-7.57464|-0.11239 +2016-07-01|73.0|114.0|-8.60438|-0.10979 +2016-07-01|73.0|115.0|-9.57151|-0.10689 +2016-07-01|73.0|116.0|-10.47523|-0.10377 +2016-07-01|73.0|117.0|-11.31527|-0.10051 +2016-07-01|73.0|118.0|-12.09186|-0.09718 +2016-07-01|73.0|119.0|-12.80565|-0.09384 +2016-07-01|73.0|120.0|-13.45763|-0.09055 +2016-07-01|73.0|121.0|-14.04909|-0.08737 +2016-07-01|73.0|122.0|-14.58156|-0.08434 +2016-07-01|73.0|123.0|-15.05674|-0.0815 +2016-07-01|73.0|124.0|-15.47647|-0.07887 +2016-07-01|73.0|125.0|-15.84271|-0.07649 +2016-07-01|73.0|126.0|-16.15745|-0.07438 +2016-07-01|73.0|127.0|-16.42274|-0.07255 +2016-07-01|73.0|128.0|-16.64064|-0.07103 +2016-07-01|73.0|129.0|-16.81318|-0.06982 +2016-07-01|73.0|130.0|-16.94238|-0.06892 +2016-07-01|73.0|131.0|-17.03024|-0.06836 +2016-07-01|73.0|132.0|-17.07868|-0.06812 +2016-07-01|73.0|133.0|-17.0896|-0.06822 +2016-07-01|73.0|134.0|-17.0648|-0.06865 +2016-07-01|73.0|135.0|-17.00606|-0.06941 +2016-07-01|73.0|136.0|-16.91507|-0.07051 +2016-07-01|73.0|137.0|-16.79345|-0.07193 +2016-07-01|73.0|138.0|-16.64277|-0.07368 +2016-07-01|73.0|139.0|-16.46452|-0.07575 +2016-07-01|73.0|140.0|-16.26013|-0.07814 +2016-07-01|73.0|141.0|-16.03097|-0.08085 +2016-07-01|73.0|142.0|-15.77835|-0.08386 +2016-07-01|73.0|143.0|-15.50351|-0.08718 +2016-07-01|73.0|144.0|-15.20764|-0.0908 +2016-07-01|73.0|145.0|-14.89188|-0.09471 +2016-07-01|73.0|146.0|-14.5573|-0.09891 +2016-07-01|73.0|147.0|-14.20495|-0.1034 +2016-07-01|73.0|148.0|-13.83579|-0.10816 +2016-07-01|73.0|149.0|-13.45077|-0.11318 +2016-07-01|73.0|150.0|-13.05079|-0.11848 +2016-07-01|73.0|151.0|-12.63669|-0.12403 +2016-07-01|73.0|152.0|-12.20929|-0.12983 +2016-07-01|73.0|153.0|-11.76937|-0.13587 +2016-07-01|73.0|154.0|-11.31766|-0.14215 +2016-07-01|73.0|155.0|-10.85489|-0.14867 +2016-07-01|73.0|156.0|-10.38172|-0.1554 +2016-07-01|73.0|157.0|-9.89881|-0.16236 +2016-07-01|73.0|158.0|-9.40677|-0.16952 +2016-07-01|73.0|159.0|-8.9062|-0.17689 +2016-07-01|73.0|160.0|-8.39767|-0.18445 +2016-07-01|73.0|161.0|-7.88172|-0.1922 +2016-07-01|73.0|162.0|-7.35887|-0.20013 +2016-07-01|73.0|163.0|-6.82963|-0.20823 +2016-07-01|73.0|164.0|-6.29448|-0.2165 +2016-07-01|73.0|165.0|-5.75387|-0.22493 +2016-07-01|73.0|166.0|-5.20827|-0.23351 +2016-07-01|73.0|167.0|-4.65809|-0.24223 +2016-07-01|73.0|168.0|-4.10375|-0.25109 +2016-07-01|73.0|169.0|-3.54565|-0.26007 +2016-07-01|73.0|170.0|-2.98418|-0.26918 +2016-07-01|73.0|171.0|-2.41971|-0.2784 +2016-07-01|73.0|172.0|-1.85261|-0.28773 +2016-07-01|73.0|173.0|-1.28322|-0.29715 +2016-07-01|73.0|174.0|-0.71189|-0.30667 +2016-07-01|73.0|175.0|-0.13895|-0.31626 +2016-07-01|73.0|176.0|0.43527|-0.32594 +2016-07-01|73.0|177.0|1.01046|-0.33568 +2016-07-01|73.0|178.0|1.58629|-0.34549 +2016-07-01|73.0|179.0|2.16248|-0.35536 +2016-07-01|73.0|-1.0|-3.87299|0.30422 +2016-07-01|73.0|-2.0|-4.55071|0.30671 +2016-07-01|73.0|-3.0|-5.22895|0.30925 +2016-07-01|73.0|-4.0|-5.90758|0.31185 +2016-07-01|73.0|-5.0|-6.5865|0.31451 +2016-07-01|73.0|-6.0|-7.26558|0.31722 +2016-07-01|73.0|-7.0|-7.94471|0.32 +2016-07-01|73.0|-8.0|-8.62377|0.32283 +2016-07-01|73.0|-9.0|-9.30263|0.32573 +2016-07-01|73.0|-10.0|-9.98117|0.3287 +2016-07-01|73.0|-11.0|-10.65925|0.33173 +2016-07-01|73.0|-12.0|-11.33674|0.33483 +2016-07-01|73.0|-13.0|-12.0135|0.338 +2016-07-01|73.0|-14.0|-12.6894|0.34124 +2016-07-01|73.0|-15.0|-13.36428|0.34455 +2016-07-01|73.0|-16.0|-14.03799|0.34794 +2016-07-01|73.0|-17.0|-14.71039|0.3514 +2016-07-01|73.0|-18.0|-15.38131|0.35494 +2016-07-01|73.0|-19.0|-16.05059|0.35857 +2016-07-01|73.0|-20.0|-16.71805|0.36227 +2016-07-01|73.0|-21.0|-17.38353|0.36606 +2016-07-01|73.0|-22.0|-18.04683|0.36994 +2016-07-01|73.0|-23.0|-18.70778|0.3739 +2016-07-01|73.0|-24.0|-19.36617|0.37796 +2016-07-01|73.0|-25.0|-20.0218|0.38211 +2016-07-01|73.0|-26.0|-20.67447|0.38636 +2016-07-01|73.0|-27.0|-21.32395|0.39071 +2016-07-01|73.0|-28.0|-21.97002|0.39516 +2016-07-01|73.0|-29.0|-22.61243|0.39972 +2016-07-01|73.0|-30.0|-23.25096|0.40438 +2016-07-01|73.0|-31.0|-23.88532|0.40916 +2016-07-01|73.0|-32.0|-24.51527|0.41405 +2016-07-01|73.0|-33.0|-25.14052|0.41906 +2016-07-01|73.0|-34.0|-25.76077|0.4242 +2016-07-01|73.0|-35.0|-26.37573|0.42946 +2016-07-01|73.0|-36.0|-26.98506|0.43485 +2016-07-01|73.0|-37.0|-27.58844|0.44038 +2016-07-01|73.0|-38.0|-28.1855|0.44604 +2016-07-01|73.0|-39.0|-28.77589|0.45186 +2016-07-01|73.0|-40.0|-29.35921|0.45782 +2016-07-01|73.0|-41.0|-29.93505|0.46393 +2016-07-01|73.0|-42.0|-30.50298|0.4702 +2016-07-01|73.0|-43.0|-31.06255|0.47664 +2016-07-01|73.0|-44.0|-31.61327|0.48325 +2016-07-01|73.0|-45.0|-32.15464|0.49003 +2016-07-01|73.0|-46.0|-32.68614|0.497 +2016-07-01|73.0|-47.0|-33.20718|0.50415 +2016-07-01|73.0|-48.0|-33.71718|0.51149 +2016-07-01|73.0|-49.0|-34.21549|0.51904 +2016-07-01|73.0|-50.0|-34.70146|0.52678 +2016-07-01|73.0|-51.0|-35.17437|0.53474 +2016-07-01|73.0|-52.0|-35.63345|0.54292 +2016-07-01|73.0|-53.0|-36.07792|0.55132 +2016-07-01|73.0|-54.0|-36.50691|0.55994 +2016-07-01|73.0|-55.0|-36.91953|0.5688 +2016-07-01|73.0|-56.0|-37.31479|0.57789 +2016-07-01|73.0|-57.0|-37.69168|0.58723 +2016-07-01|73.0|-58.0|-38.04909|0.5968 +2016-07-01|73.0|-59.0|-38.38586|0.60662 +2016-07-01|73.0|-60.0|-38.70074|0.61668 +2016-07-01|73.0|-61.0|-38.9924|0.62698 +2016-07-01|73.0|-62.0|-39.2594|0.63752 +2016-07-01|73.0|-63.0|-39.50024|0.6483 +2016-07-01|73.0|-64.0|-39.71329|0.65929 +2016-07-01|73.0|-65.0|-39.8968|0.67049 +2016-07-01|73.0|-66.0|-40.04893|0.68187 +2016-07-01|73.0|-67.0|-40.1677|0.69342 +2016-07-01|73.0|-68.0|-40.25097|0.70511 +2016-07-01|73.0|-69.0|-40.2965|0.71689 +2016-07-01|73.0|-70.0|-40.30187|0.72872 +2016-07-01|73.0|-71.0|-40.26451|0.74055 +2016-07-01|73.0|-72.0|-40.18168|0.75229 +2016-07-01|73.0|-73.0|-40.05047|0.76387 +2016-07-01|73.0|-74.0|-39.8678|0.77518 +2016-07-01|73.0|-75.0|-39.6304|0.78611 +2016-07-01|73.0|-76.0|-39.33486|0.79651 +2016-07-01|73.0|-77.0|-38.97757|0.80621 +2016-07-01|73.0|-78.0|-38.55477|0.81501 +2016-07-01|73.0|-79.0|-38.06259|0.82268 +2016-07-01|73.0|-80.0|-37.49702|0.82896 +2016-07-01|73.0|-81.0|-36.85402|0.83355 +2016-07-01|73.0|-82.0|-36.12951|0.8361 +2016-07-01|73.0|-83.0|-35.31951|0.83622 +2016-07-01|73.0|-84.0|-34.42016|0.8335 +2016-07-01|73.0|-85.0|-33.42789|0.82746 +2016-07-01|73.0|-86.0|-32.33951|0.8176 +2016-07-01|73.0|-87.0|-31.15241|0.80341 +2016-07-01|73.0|-88.0|-29.86471|0.78436 +2016-07-01|73.0|-89.0|-28.47549|0.75992 +2016-07-01|73.0|-90.0|-26.98496|0.72962 +2016-07-01|73.0|-91.0|-25.39476|0.69306 +2016-07-01|73.0|-92.0|-23.70805|0.64991 +2016-07-01|73.0|-93.0|-21.92982|0.60001 +2016-07-01|73.0|-94.0|-20.06689|0.54338 +2016-07-01|73.0|-95.0|-18.12807|0.48023 +2016-07-01|73.0|-96.0|-16.12405|0.41102 +2016-07-01|73.0|-97.0|-14.06731|0.33644 +2016-07-01|73.0|-98.0|-11.97182|0.2574 +2016-07-01|73.0|-99.0|-9.85272|0.175 +2016-07-01|73.0|-100.0|-7.72587|0.09049 +2016-07-01|73.0|-101.0|-5.60732|0.00519 +2016-07-01|73.0|-102.0|-3.51282|-0.07954 +2016-07-01|73.0|-103.0|-1.45736|-0.16244 +2016-07-01|73.0|-104.0|0.54533|-0.24235 +2016-07-01|73.0|-105.0|2.48309|-0.31829 +2016-07-01|73.0|-106.0|4.34551|-0.38948 +2016-07-01|73.0|-107.0|6.12416|-0.45535 +2016-07-01|73.0|-108.0|7.8125|-0.51554 +2016-07-01|73.0|-109.0|9.4059|-0.56988 +2016-07-01|73.0|-110.0|10.90142|-0.61839 +2016-07-01|73.0|-111.0|12.29769|-0.6612 +2016-07-01|73.0|-112.0|13.59467|-0.69854 +2016-07-01|73.0|-113.0|14.79346|-0.73076 +2016-07-01|73.0|-114.0|15.89602|-0.7582 +2016-07-01|73.0|-115.0|16.90505|-0.78126 +2016-07-01|73.0|-116.0|17.82378|-0.80035 +2016-07-01|73.0|-117.0|18.65579|-0.81586 +2016-07-01|73.0|-118.0|19.40492|-0.82818 +2016-07-01|73.0|-119.0|20.07514|-0.83765 +2016-07-01|73.0|-120.0|20.67046|-0.84462 +2016-07-01|73.0|-121.0|21.19488|-0.84939 +2016-07-01|73.0|-122.0|21.65233|-0.85222 +2016-07-01|73.0|-123.0|22.04661|-0.85338 +2016-07-01|73.0|-124.0|22.3814|-0.85307 +2016-07-01|73.0|-125.0|22.66021|-0.85149 +2016-07-01|73.0|-126.0|22.88638|-0.84882 +2016-07-01|73.0|-127.0|23.06309|-0.8452 +2016-07-01|73.0|-128.0|23.19333|-0.84076 +2016-07-01|73.0|-129.0|23.27993|-0.83562 +2016-07-01|73.0|-130.0|23.32553|-0.82987 +2016-07-01|73.0|-131.0|23.33262|-0.82361 +2016-07-01|73.0|-132.0|23.30354|-0.8169 +2016-07-01|73.0|-133.0|23.24046|-0.80981 +2016-07-01|73.0|-134.0|23.14543|-0.80239 +2016-07-01|73.0|-135.0|23.02035|-0.79469 +2016-07-01|73.0|-136.0|22.867|-0.78675 +2016-07-01|73.0|-137.0|22.68706|-0.7786 +2016-07-01|73.0|-138.0|22.48207|-0.77026 +2016-07-01|73.0|-139.0|22.2535|-0.76178 +2016-07-01|73.0|-140.0|22.00271|-0.75315 +2016-07-01|73.0|-141.0|21.73096|-0.74441 +2016-07-01|73.0|-142.0|21.43946|-0.73557 +2016-07-01|73.0|-143.0|21.12932|-0.72663 +2016-07-01|73.0|-144.0|20.80159|-0.71761 +2016-07-01|73.0|-145.0|20.45725|-0.70851 +2016-07-01|73.0|-146.0|20.09722|-0.69934 +2016-07-01|73.0|-147.0|19.72237|-0.69012 +2016-07-01|73.0|-148.0|19.33352|-0.68083 +2016-07-01|73.0|-149.0|18.93144|-0.67149 +2016-07-01|73.0|-150.0|18.51685|-0.6621 +2016-07-01|73.0|-151.0|18.09043|-0.65265 +2016-07-01|73.0|-152.0|17.65283|-0.64316 +2016-07-01|73.0|-153.0|17.20466|-0.63363 +2016-07-01|73.0|-154.0|16.74651|-0.62405 +2016-07-01|73.0|-155.0|16.27892|-0.61442 +2016-07-01|73.0|-156.0|15.80241|-0.60475 +2016-07-01|73.0|-157.0|15.31749|-0.59505 +2016-07-01|73.0|-158.0|14.82463|-0.5853 +2016-07-01|73.0|-159.0|14.32427|-0.57551 +2016-07-01|73.0|-160.0|13.81686|-0.56569 +2016-07-01|73.0|-161.0|13.30281|-0.55583 +2016-07-01|73.0|-162.0|12.78252|-0.54593 +2016-07-01|73.0|-163.0|12.25637|-0.53601 +2016-07-01|73.0|-164.0|11.72473|-0.52605 +2016-07-01|73.0|-165.0|11.18797|-0.51606 +2016-07-01|73.0|-166.0|10.64642|-0.50605 +2016-07-01|73.0|-167.0|10.10042|-0.49602 +2016-07-01|73.0|-168.0|9.5503|-0.48597 +2016-07-01|73.0|-169.0|8.99639|-0.4759 +2016-07-01|73.0|-170.0|8.43898|-0.46582 +2016-07-01|73.0|-171.0|7.8784|-0.45573 +2016-07-01|73.0|-172.0|7.31493|-0.44563 +2016-07-01|73.0|-173.0|6.74888|-0.43554 +2016-07-01|73.0|-174.0|6.18054|-0.42544 +2016-07-01|73.0|-175.0|5.61021|-0.41536 +2016-07-01|73.0|-176.0|5.03816|-0.40529 +2016-07-01|73.0|-177.0|4.4647|-0.39524 +2016-07-01|73.0|-178.0|3.89011|-0.38522 +2016-07-01|73.0|-179.0|3.31468|-0.37523 +2016-07-01|74.0|0.0|-3.23471|0.31579 +2016-07-01|74.0|1.0|-2.54232|0.31335 +2016-07-01|74.0|2.0|-1.8507|0.31095 +2016-07-01|74.0|3.0|-1.15995|0.30861 +2016-07-01|74.0|4.0|-0.47017|0.30632 +2016-07-01|74.0|5.0|0.21852|0.30408 +2016-07-01|74.0|6.0|0.90603|0.30188 +2016-07-01|74.0|7.0|1.59223|0.29973 +2016-07-01|74.0|8.0|2.27703|0.29762 +2016-07-01|74.0|9.0|2.9603|0.29556 +2016-07-01|74.0|10.0|3.64195|0.29354 +2016-07-01|74.0|11.0|4.32185|0.29155 +2016-07-01|74.0|12.0|4.99989|0.28961 +2016-07-01|74.0|13.0|5.67595|0.2877 +2016-07-01|74.0|14.0|6.34992|0.28583 +2016-07-01|74.0|15.0|7.02166|0.28399 +2016-07-01|74.0|16.0|7.69105|0.28219 +2016-07-01|74.0|17.0|8.35796|0.28042 +2016-07-01|74.0|18.0|9.02226|0.27867 +2016-07-01|74.0|19.0|9.6838|0.27696 +2016-07-01|74.0|20.0|10.34244|0.27528 +2016-07-01|74.0|21.0|10.99803|0.27362 +2016-07-01|74.0|22.0|11.65042|0.27198 +2016-07-01|74.0|23.0|12.29944|0.27037 +2016-07-01|74.0|24.0|12.94493|0.26878 +2016-07-01|74.0|25.0|13.58671|0.26721 +2016-07-01|74.0|26.0|14.22461|0.26566 +2016-07-01|74.0|27.0|14.85842|0.26413 +2016-07-01|74.0|28.0|15.48797|0.26262 +2016-07-01|74.0|29.0|16.11303|0.26112 +2016-07-01|74.0|30.0|16.73341|0.25963 +2016-07-01|74.0|31.0|17.34886|0.25815 +2016-07-01|74.0|32.0|17.95917|0.25668 +2016-07-01|74.0|33.0|18.56408|0.25523 +2016-07-01|74.0|34.0|19.16334|0.25377 +2016-07-01|74.0|35.0|19.75669|0.25233 +2016-07-01|74.0|36.0|20.34384|0.25089 +2016-07-01|74.0|37.0|20.9245|0.24944 +2016-07-01|74.0|38.0|21.49837|0.248 +2016-07-01|74.0|39.0|22.06512|0.24656 +2016-07-01|74.0|40.0|22.62443|0.24511 +2016-07-01|74.0|41.0|23.17594|0.24365 From 79710450fb3021d4f38df7a7700b36f41241791b Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 22 Sep 2015 14:17:27 +0200 Subject: [PATCH 330/504] Adjusted visualisation of Default Fleet in races competition format --- .../partials/regattacompetition/RegattaCompetition.gss | 6 ++++++ .../regattacompetition/RegattaCompetitionFleet.java | 4 ++++ .../regattacompetition/RegattaCompetitionResources.java | 1 + 3 files changed, 11 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss index 1acc5dc3c90..274274cf125 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss @@ -83,6 +83,12 @@ .fleet_races { padding: 0 1.333333333333333em 1% 25%; } +.default_fleet > .fleet_corner, .default_fleet > .fleet_details { + display: none; +} +.default_fleet > .fleet_races { + padding-left: calc(1.333333333333333em - 1%); +} @media (min-width: 61em) { .fleet_races { padding-left: 17%; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java index f870d17123e..f28ff8c083f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java @@ -7,6 +7,7 @@ import com.google.gwt.dom.client.Style.Display; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; @@ -31,6 +32,9 @@ public class RegattaCompetitionFleet extends Widget { if (fleet.getFleet() != null) { fleetNameUi.setInnerText(fleet.getFleet().getFleetName()); fleetCornerUi.getStyle().setProperty("borderTopColor", fleet.getFleet().getFleetColor()); + if (LeaderboardNameConstants.DEFAULT_FLEET_NAME.equals(fleet.getFleet().getFleetName())) { + addStyleName(RegattaCompetitionResources.INSTANCE.css().default_fleet()); + } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionResources.java index e9ee8427ca9..f5bc0b2955f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionResources.java @@ -18,6 +18,7 @@ public interface RegattaCompetitionResources extends ClientBundle { String phase_head_info_item(); String regattalistitem(); String fleet(); + String default_fleet(); String fleet_corner(); String fleet_details(); String fleet_details_name(); From f4e07648078c6ccafd14cbeca7e5ae6df42fd160 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Tue, 22 Sep 2015 14:24:17 +0200 Subject: [PATCH 331/504] Updated the wiki page for typical data mining scenarios --- wiki/typical-data-mining-scenarios.md | 68 +++++++++++++++------------ 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/wiki/typical-data-mining-scenarios.md b/wiki/typical-data-mining-scenarios.md index 282577d3530..dfd4ba8adf8 100644 --- a/wiki/typical-data-mining-scenarios.md +++ b/wiki/typical-data-mining-scenarios.md @@ -4,11 +4,14 @@ ## Adding a new Data Mining Bundle -* Add a new java project bundle according to the [Typical Development Scenarios](typical-development-scenarios#Adding-a-Java-Project-Bundle) +The following points describe the steps to create a new data mining bundle. An example for a data mining bundle is `com.sap.sailing.datamining`. + +* Add a new java project bundle according to the [Typical Development Scenarios](/wiki/typical-development-scenarios#Adding-a-Java-Project-Bundle) * Add the necessary dependencies to the `MANIFEST.MF` * `com.sap.sse` (for the string messages) * `com.sap.sse.datamining` * `com.sap.sse.datamining.shared` + * `com.sap.sse.datamining.annotations` * Create an `Activator` for the new data mining bundle and provide a `DataMiningBundleService` to the OSGi-Context (see [Registration and Deregistration of Data Mining Bundles](data-mining-architecture#Registration-and-Deregistration-of-Data-Mining-Bundles) for detailed information) * This can be done by extending the `AbstractDataMiningActivator` and implementing it's abstract methods * Or by implementing your own `DataMiningBundleService` and register it as OSGi-Service @@ -16,12 +19,13 @@ * Create the new source folder `resources` * Add the package `` to `resources` * Create empty properties files for each supported language with the name scheme `_` - * Create a `ResourceBundleStringMessages` in the `DataMiningBundleService` + * Which languages are supported can be found in `ResourceBundleStringMessages.Util.initializeSupportedLocales()` + * Create a `ResourceBundleStringMessages` in the `DataMiningBundleService` of the new data mining bundle * The `ResourceBundleStringMessages` needs the resource base name, which should be `/` * A reference to this `ResourceBundleStringMessages` should be returned by the method `getStringMessages()` -* **[Optional]** It may be necessary to implement GWT specific components for the new Data Mining Bundle, like DTOs or a [Serialization Dummy](typical-data-mining-scenarios#Include-a-Type-forcefully-in-the-GWT-Serialization-Policy). +* **[Optional]** It may be necessary to implement GWT specific components for the new data mining bundle, like DTOs or a [Serialization Dummy](typical-data-mining-scenarios#Include-a-Type-forcefully-in-the-GWT-Serialization-Policy). * This should be done in a separate bundle. - * See [Typical Development Scenarios](typical-development-scenarios#Adding-a-shared-GWT-library-bundle) for instructions, how to add a shared GWT bundle. + * See [Typical Development Scenarios](/wiki/typical-development-scenarios#Adding-a-Java-Project-Bundle) for instructions, how to add a shared GWT bundle. ## Adding an absolute new Data Type @@ -29,20 +33,22 @@ A data type is an atomic unit on which the processing components operate. A data ### Create the necessary Data Types +The following points describe the steps to create a data type, that is based on `TrackedLegOfCompetitor`. How this has been done in the data mining bundle `com.sap.sailing.datamining` can be seen in the packages `com.sap.sailing.datamining.data` and `com.sap.sailing.datamining.impl.data`. + * Create an interface for the domain element. The naming convention for data type interfaces is `HasContext`. * If `TrackedLegOfCompetitor` would be the domain element, then the name of the data type interface should be `HasTrackedLegOfCompetitorContext`. * Create a data type interface for the steps from the data source to the domain element * In the case of the `TrackedLegOfCompetitor` the steps would be - * `RacingEventService` * `LeaderboardGroup` * `Leaderboard` * `TrackedRace` * `TrackedLeg` * `TrackedLegOfCompetitor` * This isn't mandatory for the framework to work, but it improves its performance, because it's possible to build a processor chain, that filters after each step. -* Add the data type interfaces to the `Classes` return by the method `getClassesWithMarkedMethods()` of the `DataMiningBundleService`. +* Add the data type interfaces to the `Classes` return by the method `getClassesWithMarkedMethods()` of the `DataMiningBundleService` of the data mining bundle. * Add methods to get the contextual information and annotate them, so that they get registered as functions. * To get the contextual data of a higher level data type interface annotate the getter for this interface with `@Connector(scanForStatistics=false)`. + * If the data type `HasTrackedLegOfCompetitorContext` should have access to the dimensions of the previous data type (in this case `HasTrackedLegContext`), a method like `HasTrackedLegContext getTrackedLegContext()` is necessary. * There's currently no parameter support for functions, except for signatures exactly like `(Locale, ResourceBundleStringMessages)`. * Cycles in the graph of annotated methods aren't supported and would result in an infinite loop during the function registration. * See [Data Mining Functions](data-mining-architecture#Data-Mining-Functions) for detailed information about the annotations. @@ -51,18 +57,20 @@ A data type is an atomic unit on which the processing components operate. A data ### Implement the Retrieval Processors and define the Retriever Chain -* Add a `DataSourceProvider` to the `DataMiningBundleService`, if it doesn't contain one for the data source of the data type. -* Implement a retrieval processor for each data type. +The following points describe the steps to create components for the data retrieval for the previously created data type. How this has been done in the data mining bundle `com.sap.sailing.datamining` can be seen in the package `com.sap.sailing.datamining.impl.components` and the class `SailingDataRetrievalChainDefinitions`. + +* Add a `DataSourceProvider` (see [Data Mining Architecture](/wiki/data-mining-architecture#Data-Source-Provider)) to the `DataMiningBundleService` of the data mining bundle, if it doesn't contain one for the data source of the data type. +* Implement a [retrieval processor](/wiki/data-mining-architecture#Retrieval-Processor) for each data type. * Retrieval processors should extend `AbstractRetrievalProcessor`. * Retrieval processors used by retriever chains need a constructor with the signature `(ExecutorService, Collection>, int)`. * A retrieval processor describes how to get from the input data type (like `RacingEventService` or `TrackedRace`) to the result data type (like `TrackedLeg`) with the method `retrieveData`. -* Create a `DataRetrieverChainDefinition` and add it to the `DataMiningBundleService`. +* Create a `DataRetrieverChainDefinition` and add it to the `DataMiningBundleService` of the data mining bundle (see [Data Mining Architecture](/wiki/data-mining-architecture#Defining-and-building-a-Data-Retriever-Chain)). * A retriever chain is created with its methods `startWith`, `addAfter` and `endWith`, that add `Classes` of your retrieval processors to the chain. * Each method has a parameter for the `Class` of the retrieved data type of the next step and some also have a parameter for the `Class` of the retrieval processor of the previous step to ensure type safety. * Each method has a parameter for a message key, that is needed for the internationalization of the chain. * The call order of these methods has to match `startWith addAfter* endWith` or an exception will be thrown. - * Every retrieval processor needs a constructor with the signature `(ExecutorService, Collection>, int)` or an exception will be thrown. - * See [Defining and building a Data Retriever Chain](data-mining-architecture#Defining-and-building-a-Data-Retriever-Chain) for examples and more detailed information. + * Every retrieval processor needs a constructor with the signature `(ExecutorService, Collection>, int)` or `(ExecutorService, Collection>, SettingsType, int)`. Otherwise an exception will be thrown. + * For an example of a retrieval processor with settings see `PolarGPSFixRetrievalProcessor`. ## Adding a new Data Type with a reusable Retriever Chain @@ -71,26 +79,26 @@ A data type is an atomic unit on which the processing components operate. A data * Split the existing retriever chain and diverge it two retriever chains. * The split point should be the last retrieval processor, that is shared by the retriever chains * If there would be these two retriever chains - - - - - -
    ExistingNew
    `RacingEventService`
    - `LeaderboardGroup`
    - `Leaderboard`
    - `TrackedRace`
    - `TrackedLeg`
    - `TrackedLegOfCompetitor` -
    `RacingEventService`
    - `LeaderboardGroup`
    - `Leaderboard`
    - `TrackedRace`
    - `MarkPassing` -
    - than existing retriever chain should be splitted after the retrieval processor for the `TrackedRaces`. + + + + + +
    ExistingNew
    `RacingEventService`
    + `LeaderboardGroup`
    + `Leaderboard`
    + `TrackedRace`
    + `TrackedLeg`
    + `TrackedLegOfCompetitor` +
    `RacingEventService`
    + `LeaderboardGroup`
    + `Leaderboard`
    + `TrackedRace`
    + `MarkPassing` +
    + then the existing retriever chain should be splitted after the retrieval processor for the `TrackedRaces`. * To split an existing retriever chain, create a new one after the split point with the usage of the existing one. Then move the `addAfter` and `endWith` calls to the new retriever chain. The first part of the split retriever chain can now be used to create the retriever chain for the new data type. - * Note, that it's not necessary to call `startWith`, if a retriever chain is used to create a new one. + * Note, that it's not allowed to call `startWith`, if a retriever chain is used to create a new one. * In pseudo code would this look like this:
    Before:
    
    From 540d433ee5fb41133eadb3f8b56e4bb270568dc5 Mon Sep 17 00:00:00 2001
    From: Frederik Petersen 
    Date: Tue, 22 Sep 2015 14:37:56 +0200
    Subject: [PATCH 332/504] Added dataCountPerAngle histogram to
     polarresultspresenter
    
    ---
     .../WindSpeedSteppingWithMaxDistance.java     | 46 ++++++++++
     .../sailing/domain/test/WindSteppingTest.java |  4 +-
     .../PolarBackendResultsPresenter.java         | 13 ++-
     .../ui/polarmining/PolarResultsPresenter.java | 89 ++++++++++++++++---
     .../datamining/shared/PolarAggregation.java   |  2 +
     .../shared/PolarAggregationImpl.java          | 11 ++-
     .../data/HasBackendPolarBoatClassContext.java |  2 +-
     7 files changed, 148 insertions(+), 19 deletions(-)
    
    diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/WindSpeedSteppingWithMaxDistance.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/WindSpeedSteppingWithMaxDistance.java
    index ae3159b1129..5f737ab0c6c 100644
    --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/WindSpeedSteppingWithMaxDistance.java
    +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/WindSpeedSteppingWithMaxDistance.java
    @@ -39,6 +39,52 @@ public class WindSpeedSteppingWithMaxDistance extends WindSpeedSteppingImpl {
         public double getMaxDistance() {
             return maxDistance;
         }
    +    
    +    public int getHistogramIndex(int numberOfHistogramColumns, double knots) {
    +        double minInKnots = getMinValueForIndex(getLevelIndexForValue(knots));
    +        double maxInKnots = getMaxValueForIndex(getLevelIndexForValue(knots));
    +        double cutMax = maxInKnots - minInKnots;
    +        double cutValue = knots - minInKnots;
    +        int columnIndex = (int) ((cutValue / cutMax) * 20);
    +        return columnIndex;
    +    }
    +
    +    private double getMinValueForIndex(int levelIndexForValue) {
    +        double result;
    +        if (levelIndexForValue == 0) {
    +            double levelMinusMaxDistance = levels[0] - maxDistance;
    +            if (levelMinusMaxDistance > 0) {
    +                result = levelMinusMaxDistance;
    +            } else {
    +                result = 0;
    +            }
    +        } else {
    +            double levelMinusMaxDistance = levels[levelIndexForValue] - maxDistance;
    +            double betweenLevels = levels[levelIndexForValue - 1] + ((levels[levelIndexForValue] - levels[levelIndexForValue - 1]) / 2.);
    +            if (levelMinusMaxDistance > betweenLevels) {
    +                result = levelMinusMaxDistance;
    +            } else {
    +                result = betweenLevels;
    +            }
    +        }
    +        return result;
    +    }
    +    
    +    private double getMaxValueForIndex(int levelIndexForValue) {
    +        double result;
    +        if (levelIndexForValue == levels.length - 1) {
    +            result = levels[levelIndexForValue] + maxDistance;
    +        } else {
    +            double levelPlusMaxDistance = levels[levelIndexForValue] + maxDistance;
    +            double betweenLevels = levels[levelIndexForValue] + ((levels[levelIndexForValue + 1] - levels[levelIndexForValue]) / 2.);
    +            if (levelPlusMaxDistance < betweenLevels) {
    +                result = levelPlusMaxDistance;
    +            } else {
    +                result = betweenLevels;
    +            }
    +        }
    +        return result;
    +    }
     
         @Override
         public int hashCode() {
    diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindSteppingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindSteppingTest.java
    index 55ff34a60d1..36fbdbc842f 100644
    --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindSteppingTest.java
    +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindSteppingTest.java
    @@ -24,7 +24,7 @@ public class WindSteppingTest {
         @Test
         public void testSteppingWithMaxDistance() {
             double[] levels = {2.,4.};
    -        WindSpeedStepping stepping = new WindSpeedSteppingWithMaxDistance(levels, 1.0);
    +        WindSpeedSteppingWithMaxDistance stepping = new WindSpeedSteppingWithMaxDistance(levels, 1.0);
             Assert.assertEquals(0, stepping.getLevelIndexForValue(1));
             Assert.assertEquals(1, stepping.getLevelIndexForValue(5));
             Assert.assertEquals(-1, stepping.getLevelIndexForValue(5.01));
    @@ -32,6 +32,8 @@ public class WindSteppingTest {
             Assert.assertEquals(-1, stepping.getLevelIndexForValue(8));
             Assert.assertEquals(2.0, stepping.getSteppedValueForValue(1.064), 0.005);
             Assert.assertEquals(-1.0, stepping.getSteppedValueForValue(7.8365), 0.005);
    +        Assert.assertEquals(5, stepping.getHistogramIndex(20, 1.5));
    +        Assert.assertEquals(15, stepping.getHistogramIndex(20, 2.5));
         }
     
     }
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java
    index 86226c448a9..d12331ff439 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java
    @@ -80,14 +80,19 @@ public class PolarBackendResultsPresenter extends AbstractResultsPresenter {
         private final SimpleLayoutPanel polarChartWrapperPanel;
         
         private final Chart dataCountHistogramChart;
    -    private final SimpleLayoutPanel dataCountHistogramChartWrapperPanel;
    +    private final Chart dataCountPerAngleHistogramChart;
    +    private final DockLayoutPanel histogramChartsWrapperPanel;
         
         private final Map histogramSeriesForPolarSeries= new HashMap<>();
    +    private final Map> perAngleHistogramSeriesForAngle = new HashMap<>();
     
         public PolarResultsPresenter(StringMessages stringMessages) {
             super(stringMessages);
    @@ -65,29 +72,71 @@ public class PolarResultsPresenter extends AbstractResultsPresenter {
                 }
             };
             polarChartWrapperPanel.add(polarChart);
    -        
    -        dataCountHistogramChart = createDataCountHistogramChart();
    -        dataCountHistogramChartWrapperPanel = new SimpleLayoutPanel() {
    +
    +        dataCountHistogramChart = createDataCountHistogramChart(stringMessages.beatAngle() + " ("
    +                + stringMessages.degreesShort() + ")");
    +        dataCountPerAngleHistogramChart = createDataCountHistogramChart(stringMessages.windSpeed());
    +        histogramChartsWrapperPanel = new DockLayoutPanel(Unit.PCT) {
                 @Override
                 public void onResize() {
                     dataCountHistogramChart.setSizeToMatchContainer();
                     dataCountHistogramChart.redraw();
    +                dataCountPerAngleHistogramChart.setSizeToMatchContainer();
    +                dataCountPerAngleHistogramChart.redraw();
                 }
             };
    -        dataCountHistogramChartWrapperPanel.add(dataCountHistogramChart);
    +        histogramChartsWrapperPanel.addNorth(dataCountHistogramChart, 50);
    +        histogramChartsWrapperPanel.addSouth(dataCountPerAngleHistogramChart, 50);
             
             dockLayoutPanel = new DockLayoutPanel(Unit.PCT);
             dockLayoutPanel.addWest(polarChartWrapperPanel, 40);
    -        dockLayoutPanel.addEast(dataCountHistogramChartWrapperPanel, 60);
    +        dockLayoutPanel.addEast(histogramChartsWrapperPanel, 60);
             
             setSeriesShowAndHideHandler();
    +        setSeriesPointSelectionHandler();
         }
         
    +    private void setSeriesPointSelectionHandler() {
    +        SeriesPlotOptions seriesPlotOptions = new SeriesPlotOptions();
    +        seriesPlotOptions.setPointSelectEventHandler(createPointSelectEventHandler());
    +        seriesPlotOptions.setPointUnselectEventHandler(createPointUnselectEventHandler());
    +    }
    +
    +    private PointUnselectEventHandler createPointUnselectEventHandler() {
    +        return new PointUnselectEventHandler() {
    +            
    +            @Override
    +            public boolean onUnselect(PointUnselectEvent pointUnselectEvent) {
    +                long angle = pointUnselectEvent.getXAsLong();
    +                Series series = polarChart.getSeries(pointUnselectEvent.getSeriesId());
    +                Series seriesToHide = perAngleHistogramSeriesForAngle.get(series).get(angle);
    +                seriesToHide.setVisible(false, true);
    +                return true;
    +            }
    +        };
    +    }
    +
    +    private PointSelectEventHandler createPointSelectEventHandler() {
    +        return new PointSelectEventHandler() {
    +
    +            @Override
    +            public boolean onSelect(PointSelectEvent pointSelectEvent) {
    +                long angle = pointSelectEvent.getXAsLong();
    +                Series series = polarChart.getSeries(pointSelectEvent.getSeriesId());
    +                Series seriesToHide = perAngleHistogramSeriesForAngle.get(series).get(angle);
    +                seriesToHide.setVisible(true, true);
    +                return true;
    +            }
    +        };
    +    }
    +
         private void setSeriesShowAndHideHandler() {
    -        
             SeriesPlotOptions seriesPlotOptions = new SeriesPlotOptions();
             seriesPlotOptions.setSeriesShowEventHandler(createSeriesShowEventHandler());
             seriesPlotOptions.setSeriesHideEventHandler(createSeriesHideEventHandler());
    +        seriesPlotOptions.setPointSelectEventHandler(createPointSelectEventHandler());
    +        seriesPlotOptions.setPointUnselectEventHandler(createPointUnselectEventHandler());
    +        seriesPlotOptions.setAllowPointSelect(true);
             polarChart.setSeriesPlotOptions(seriesPlotOptions );
         }
     
    @@ -119,12 +168,12 @@ public class PolarResultsPresenter extends AbstractResultsPresenter {
             };
         }
     
    -    private Chart createDataCountHistogramChart() {
    +    private Chart createDataCountHistogramChart(String xAxisLabel) {
             Chart histogramChart = new Chart().setType(Type.AREA).setHeight100().setWidth100();
             histogramChart.setTitle(new ChartTitle().setText(""), new ChartSubtitle().setText(""));
             histogramChart.getYAxis().setMin(0).setAxisTitle(new AxisTitle().setText(stringMessages.numberOfDataPoints()));
             histogramChart.getXAxis().setLabels(new XAxisLabels().setRotation(-90f).setY(30))
    -                .setAxisTitle(new AxisTitle().setText(stringMessages.beatAngle()));
    +                .setAxisTitle(new AxisTitle().setText(xAxisLabel));
             histogramChart.setAreaPlotOptions(new AreaPlotOptions().setLineColor("#666666")
                     .setLineWidth(1).setMarker(new Marker().setLineWidth(1).setLineColor("#666666")));
             histogramChart.setLegend(new Legend().setEnabled(false));
    @@ -176,13 +225,28 @@ public class PolarResultsPresenter extends AbstractResultsPresenter {
                 if (settings.getMinimumDataCountPerGraph() < count) {
                     Series polarSeries = polarChart.createSeries();
                     Series histogramSeries = dataCountHistogramChart.createSeries();
    +                int[][] histogramData = aggregation.getCountHistogramPerAngle();
    +                Map seriesPerAngle = new HashMap<>();
    +                perAngleHistogramSeriesForAngle.put(polarSeries, seriesPerAngle);
                     for (int i = 0; i < 360; i++) {
                         int convertedAngle = i > 180 ? i - 360 : i;
                         double speed = speedsPerAngle[i];
    +                    Point point = null;
                         if (countPerAngle[i] >= settings.getMinimumDataCountPerAngle() && speed > 0) {
    -                        polarSeries.addPoint(convertedAngle, speed, false, false, false);
    +                        point = new Point(convertedAngle, speed);
    +                        polarSeries.addPoint(point, false, false, false);
                         }  
                         histogramSeries.addPoint(convertedAngle, countPerAngle[i], false, false, false);
    +                    Series dataCountPerAngleSeries = dataCountPerAngleHistogramChart.createSeries();
    +                    int[] histogramDataForAngle = histogramData[i];
    +                    for (int j = 0; j < settings.getNumberOfHistogramColumns(); j++) {
    +                        dataCountPerAngleSeries.addPoint(j, histogramDataForAngle[j]);
    +                    }
    +                    dataCountPerAngleHistogramChart.addSeries(dataCountPerAngleSeries, false, false);
    +                    dataCountPerAngleSeries.setVisible(false, false);
    +                    if (point != null) {
    +                        seriesPerAngle.put((long) convertedAngle, dataCountPerAngleSeries);
    +                    }
                     }
                     polarSeries.setName(key.asString());
                     histogramSeries.setName(key.asString());
    @@ -190,6 +254,10 @@ public class PolarResultsPresenter extends AbstractResultsPresenter {
                     histogramSeries.setVisible(false, false);
                     histogramSeriesForPolarSeries.put(polarSeries, histogramSeries);
                     dataCountHistogramChart.addSeries(histogramSeries);
    +                for (Series seriesToHide : seriesPerAngle.values()) {
    +                    seriesToHide.setVisible(false, false);
    +                }
    +                dataCountPerAngleHistogramChart.redraw();
                 }
             }
             //Initially resize the chart. Otherwise it's too big. FIXME with a better solution
    @@ -199,6 +267,7 @@ public class PolarResultsPresenter extends AbstractResultsPresenter {
                 public void run() {
                     polarChart.setSizeToMatchContainer();
                     dataCountHistogramChart.setSizeToMatchContainer();
    +                dataCountPerAngleHistogramChart.setSizeToMatchContainer();
                 }
             };
             timer.schedule(200);
    diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java
    index 6a01491b74b..a1d1ec94c48 100644
    --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java
    +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java
    @@ -13,4 +13,6 @@ public interface PolarAggregation extends Serializable {
         int getCount();
         
         PolarDataMiningSettings getSettings();
    +    
    +    int[][] getCountHistogramPerAngle();
     }
    diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java
    index db80080b7cd..33459f4c751 100644
    --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java
    +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java
    @@ -32,8 +32,9 @@ public class PolarAggregationImpl implements PolarAggregation {
             }
             sumSpeedsPerAngle[angleDeg] += dataEntry.getBoatSpeed().getKnots();
             countPerAngle[angleDeg]++;
    -        // TODO add 1 to correct histogram column, for that we need to know min and max
    -        //histogramData[angleDeg][]
    +        int histogramIndex = settings.getWindSpeedStepping().getHistogramIndex(settings.getNumberOfHistogramColumns(),
    +                dataEntry.getWindSpeed().getKnots());
    +        histogramData[angleDeg][histogramIndex]++;
             count++;
         }
         
    @@ -62,7 +63,11 @@ public class PolarAggregationImpl implements PolarAggregation {
         public PolarDataMiningSettings getSettings() {
             return settings;
         }
    -    
    +
    +    @Override
    +    public int[][] getCountHistogramPerAngle() {
    +        return histogramData;
    +    }
         
     
     }
    diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasBackendPolarBoatClassContext.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasBackendPolarBoatClassContext.java
    index 4b0e606c9f4..0996219c097 100644
    --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasBackendPolarBoatClassContext.java
    +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/HasBackendPolarBoatClassContext.java
    @@ -7,7 +7,7 @@ import com.sap.sse.datamining.annotations.Statistic;
     
     public interface HasBackendPolarBoatClassContext {
         
    -    @Connector
    +    @Connector(messageKey="BoatClass")
         BoatClass getBoatClass();
     
         PolarDataService getPolarDataService();
    
    From a3b41cebde4d4dbc9d231313168793b8a58ec3d2 Mon Sep 17 00:00:00 2001
    From: Benjamin Barth 
    Date: Tue, 22 Sep 2015 14:57:07 +0200
    Subject: [PATCH 333/504] Removed unused SmartphoneStartView implementation
    
    ---
     .../place/start/SmartphoneStartView.java      | 40 -------------------
     .../place/start/SmartphoneStartView.ui.xml    | 12 ------
     2 files changed, 52 deletions(-)
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/SmartphoneStartView.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/SmartphoneStartView.ui.xml
    
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/SmartphoneStartView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/SmartphoneStartView.java
    deleted file mode 100644
    index 64ea4e5e4bf..00000000000
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/SmartphoneStartView.java
    +++ /dev/null
    @@ -1,40 +0,0 @@
    -package com.sap.sailing.gwt.home.client.place.start;
    -
    -import com.google.gwt.core.client.GWT;
    -import com.google.gwt.uibinder.client.UiBinder;
    -import com.google.gwt.uibinder.client.UiField;
    -import com.google.gwt.user.client.ui.Composite;
    -import com.google.gwt.user.client.ui.Widget;
    -import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    -import com.sap.sailing.gwt.home.desktop.partials.mainevents.MainEvents;
    -import com.sap.sailing.gwt.home.desktop.partials.mainmedia.MainMedia;
    -import com.sap.sailing.gwt.home.desktop.partials.stage.Stage;
    -import com.sap.sailing.gwt.ui.shared.start.StartViewDTO;
    -
    -public class SmartphoneStartView extends Composite implements StartView {
    -   
    -    private static StartPageMobileViewUiBinder uiBinder = GWT.create(StartPageMobileViewUiBinder.class);
    -
    -    interface StartPageMobileViewUiBinder extends UiBinder {
    -    }
    -
    -    @UiField(provided=true) Stage stage;
    -    // @UiField(provided=true) MainSponsors mainSponsors;
    -    @UiField(provided=true)  MainEvents mainEvents;
    -    @UiField(provided=true) MainMedia mainMedia;
    -
    -    public SmartphoneStartView(DesktopPlacesNavigator navigator) {
    -        stage = new Stage(navigator);
    -        // mainSponsors = new MainSponsors(navigator);
    -        mainEvents = new MainEvents(navigator);
    -        mainMedia = new MainMedia(navigator);
    -        initWidget(uiBinder.createAndBindUi(this));
    -    }
    -    
    -    @Override
    -    public void setData(StartViewDTO data) {
    -        stage.setFeaturedEvents(data.getStageEvents());
    -        mainEvents.setRecentEvents(data.getRecentEvents());
    -        mainMedia.setData(data.getVideos(), data.getPhotos());
    -    }
    -}
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/SmartphoneStartView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/SmartphoneStartView.ui.xml
    deleted file mode 100644
    index e5802aeea77..00000000000
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/SmartphoneStartView.ui.xml
    +++ /dev/null
    @@ -1,12 +0,0 @@
    -
    -
    -	
    -   	
    -   	    
    -		
    -   	    
    -   	    
    -   	    
    -	
    -    
    
    From aea2adfc380acf8d05bd84d92e4be04533a3b065 Mon Sep 17 00:00:00 2001
    From: Benjamin Barth 
    Date: Tue, 22 Sep 2015 14:57:35 +0200
    Subject: [PATCH 334/504] Refactoring - Moved desktop StartPlace into
     respective package
    
    ---
     .../gwt/home/client/place/event/AbstractEventActivity.java    | 2 +-
     .../sap/sailing/gwt/home/client/place/event/EventView.java    | 2 +-
     .../home/client/place/events/TabletAndDesktopEventsView.java  | 2 +-
     .../home/client/place/fakeseries/AbstractSeriesActivity.java  | 2 +-
     .../gwt/home/client/place/fakeseries/SeriesActivity.java      | 2 +-
     .../sailing/gwt/home/client/place/fakeseries/SeriesView.java  | 2 +-
     .../home/desktop/app/AbstractApplicationClientFactory.java    | 2 +-
     .../sailing/gwt/home/desktop/app/DesktopActivityMapper.java   | 4 ++--
     .../sailing/gwt/home/desktop/app/DesktopClientFactory.java    | 2 +-
     .../sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java  | 2 +-
     .../desktop/app/TabletAndDesktopApplicationClientFactory.java | 4 ++--
     .../sap/sailing/gwt/home/desktop/partials/header/Header.java  | 2 +-
     .../{client/place => desktop/places}/start/StartActivity.java | 2 +-
     .../place => desktop/places}/start/StartActivityProxy.java    | 2 +-
     .../place => desktop/places}/start/StartClientFactory.java    | 2 +-
     .../{client/place => desktop/places}/start/StartPlace.java    | 2 +-
     .../{client/place => desktop/places}/start/StartView.java     | 2 +-
     .../places}/start/TabletAndDesktopStartView.java              | 2 +-
     .../places}/start/TabletAndDesktopStartView.ui.xml            | 0
     .../sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java | 2 +-
     .../gwt/home/mobile/app/MobileApplicationClientFactory.java   | 2 +-
     .../sailing/gwt/home/mobile/app/MobilePlacesNavigator.java    | 2 +-
     .../sailing/gwt/home/mobile/places/start/StartActivity.java   | 2 +-
     .../gwt/home/mobile/places/start/StartActivityProxy.java      | 2 +-
     .../sailing/gwt/home/shared/app/ApplicationHistoryMapper.java | 2 +-
     25 files changed, 26 insertions(+), 26 deletions(-)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/start/StartActivity.java (96%)
     mode change 100755 => 100644
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/start/StartActivityProxy.java (92%)
     mode change 100755 => 100644
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/start/StartClientFactory.java (74%)
     mode change 100755 => 100644
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/start/StartPlace.java (94%)
     mode change 100755 => 100644
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/start/StartView.java (78%)
     mode change 100755 => 100644
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/start/TabletAndDesktopStartView.java (96%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/start/TabletAndDesktopStartView.ui.xml (100%)
    
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java
    index 7c6138529f8..97dd6d84565 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java
    @@ -18,8 +18,8 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewP
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace;
     import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java
    index fb618514b10..152a06cd6b8 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java
    @@ -12,7 +12,7 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboa
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace;
     import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
     import com.sap.sailing.gwt.ui.client.HomeServiceAsync;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.java
    index f1c920c9126..0926ab34f18 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.java
    @@ -5,10 +5,10 @@ import com.google.gwt.uibinder.client.UiBinder;
     import com.google.gwt.uibinder.client.UiField;
     import com.google.gwt.user.client.ui.Widget;
     import com.sap.sailing.gwt.common.client.controls.tabbar.BreadcrumbPane;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
     import com.sap.sailing.gwt.home.desktop.partials.eventsrecent.EventsOverviewRecent;
     import com.sap.sailing.gwt.home.desktop.partials.eventsupcoming.EventsOverviewUpcoming;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     import com.sap.sailing.gwt.ui.client.StringMessages;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java
    index deda7b19d7b..d358a2fe88b 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java
    @@ -12,8 +12,8 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
     import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
     import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory;
     import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java
    index 53a54541d95..5b97a39aa99 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java
    @@ -15,8 +15,8 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
     import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
     import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory;
     import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java
    index c564f0f25d7..474928404fa 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java
    @@ -9,7 +9,7 @@ import com.google.gwt.user.client.ui.IsWidget;
     import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
     import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
     import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
     import com.sap.sse.gwt.client.player.Timer;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractApplicationClientFactory.java
    index f896125fbd6..b358a7b6339 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractApplicationClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractApplicationClientFactory.java
    @@ -5,7 +5,7 @@ import com.google.gwt.place.shared.Place;
     import com.google.gwt.place.shared.PlaceController;
     import com.google.gwt.user.client.rpc.ServiceDefTarget;
     import com.google.web.bindery.event.shared.EventBus;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.client.HomeService;
     import com.sap.sailing.gwt.ui.client.HomeServiceAsync;
     import com.sap.sailing.gwt.ui.client.MediaService;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java
    index 89f3e1cac4a..fe157d83c3f 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java
    @@ -10,8 +10,6 @@ import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace;
     import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringActivityProxy;
     import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace;
    -import com.sap.sailing.gwt.home.client.place.start.StartActivityProxy;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactActivityProxy;
    @@ -22,6 +20,8 @@ import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultActivity
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartActivityProxy;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace;
     import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java
    index b5f33b5cd42..4bc26a3d761 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java
    @@ -4,12 +4,12 @@ import com.sap.sailing.gwt.home.client.place.event.EventClientFactory;
     import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory;
     import com.sap.sailing.gwt.home.client.place.events.EventsClientFactory;
     import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringClientFactory;
    -import com.sap.sailing.gwt.home.client.place.start.StartClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.error.ErrorClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsClientFactory;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewClientFactory;
     
     public interface DesktopClientFactory extends AboutUsClientFactory, ContactClientFactory, EventClientFactory,
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java
    index 5e3ef740833..e1a387abf75 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java
    @@ -14,12 +14,12 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewP
     import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
     import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
     import com.sap.sailing.gwt.home.shared.app.AbstractPlaceNavigator;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java
    index 5a0593e42f8..9d23b0724af 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java
    @@ -7,14 +7,14 @@ import com.sap.sailing.gwt.home.client.place.events.EventsView;
     import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView;
     import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringView;
     import com.sap.sailing.gwt.home.client.place.sponsoring.TabletAndDesktopSponsoringView;
    -import com.sap.sailing.gwt.home.client.place.start.StartView;
    -import com.sap.sailing.gwt.home.client.place.start.TabletAndDesktopStartView;
     import com.sap.sailing.gwt.home.desktop.places.error.TabletAndDesktopErrorView;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultView;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.TabletAndDesktopSearchResultView;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsView;
     import com.sap.sailing.gwt.home.desktop.places.solutions.TabletAndDesktopSolutionsView;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartView;
    +import com.sap.sailing.gwt.home.desktop.places.start.TabletAndDesktopStartView;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.TabletAndDesktopWhatsNewView;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewView;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java
    index 03d6baaeee5..c47f1983b2d 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java
    @@ -25,11 +25,11 @@ import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace;
     import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace;
     import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace;
     import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     import com.sap.sse.gwt.client.mvp.PlaceChangedEvent;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivity.java
    old mode 100755
    new mode 100644
    similarity index 96%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartActivity.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivity.java
    index 0cf3f39f564..537fb58dea9
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivity.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.start;
    +package com.sap.sailing.gwt.home.desktop.places.start;
     
     import com.google.gwt.activity.shared.AbstractActivity;
     import com.google.gwt.event.shared.EventBus;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivityProxy.java
    old mode 100755
    new mode 100644
    similarity index 92%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartActivityProxy.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivityProxy.java
    index 38c9a2dfa03..3f2bfd1f773
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartActivityProxy.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivityProxy.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.start;
    +package com.sap.sailing.gwt.home.desktop.places.start;
     
     import com.google.gwt.core.client.GWT;
     import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartClientFactory.java
    old mode 100755
    new mode 100644
    similarity index 74%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartClientFactory.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartClientFactory.java
    index 182c1f48715..b8f22d634eb
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartClientFactory.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.start;
    +package com.sap.sailing.gwt.home.desktop.places.start;
     
     import com.sap.sailing.gwt.ui.client.SailingClientFactory;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartPlace.java
    old mode 100755
    new mode 100644
    similarity index 94%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartPlace.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartPlace.java
    index aa8d1610d29..1a0836c5b0c
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartPlace.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartPlace.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.start;
    +package com.sap.sailing.gwt.home.desktop.places.start;
     
     import com.google.gwt.place.shared.Place;
     import com.google.gwt.place.shared.PlaceTokenizer;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartView.java
    old mode 100755
    new mode 100644
    similarity index 78%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartView.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartView.java
    index c0c7cd9392c..8575c56d7ac
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/StartView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartView.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.start;
    +package com.sap.sailing.gwt.home.desktop.places.start;
     
     import com.google.gwt.user.client.ui.Widget;
     import com.sap.sailing.gwt.ui.shared.start.StartViewDTO;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/TabletAndDesktopStartView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/TabletAndDesktopStartView.java
    similarity index 96%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/TabletAndDesktopStartView.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/TabletAndDesktopStartView.java
    index 3eca771c9c7..b7ca076c07c 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/TabletAndDesktopStartView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/TabletAndDesktopStartView.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.start;
    +package com.sap.sailing.gwt.home.desktop.places.start;
     
     import com.google.gwt.core.client.GWT;
     import com.google.gwt.uibinder.client.UiBinder;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/TabletAndDesktopStartView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/TabletAndDesktopStartView.ui.xml
    similarity index 100%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/start/TabletAndDesktopStartView.ui.xml
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/TabletAndDesktopStartView.ui.xml
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java
    index a2e054fabef..74a95a2e9ea 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java
    @@ -7,8 +7,8 @@ import com.google.gwt.place.shared.Place;
     import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace;
     import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.mobile.places.event.EventActivityProxy;
     import com.sap.sailing.gwt.home.mobile.places.events.EventsActivityProxy;
     import com.sap.sailing.gwt.home.mobile.places.series.SeriesActivityProxy;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationClientFactory.java
    index 356d3492455..e843ea0d804 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationClientFactory.java
    @@ -6,8 +6,8 @@ import com.google.gwt.place.shared.PlaceController;
     import com.google.gwt.user.client.rpc.ServiceDefTarget;
     import com.google.web.bindery.event.shared.EventBus;
     import com.google.web.bindery.event.shared.SimpleEventBus;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.app.ApplicationTopLevelView;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.mobile.places.MainView;
     import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
     import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystemImpl;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java
    index e738e44623b..44a4bf1c02f 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java
    @@ -9,12 +9,12 @@ import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
     import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
     import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java
    index f1eb9460352..dbe0d599d87 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java
    @@ -5,7 +5,7 @@ import com.google.gwt.event.shared.EventBus;
     import com.google.gwt.user.client.Window;
     import com.google.gwt.user.client.rpc.AsyncCallback;
     import com.google.gwt.user.client.ui.AcceptsOneWidget;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
     import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator;
     import com.sap.sailing.gwt.home.mobile.places.start.StartView.Presenter;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivityProxy.java
    index e4f9c970063..26c337eb8da 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivityProxy.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivityProxy.java
    @@ -1,7 +1,7 @@
     package com.sap.sailing.gwt.home.mobile.places.start;
     
     import com.google.gwt.core.client.GWT;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
     import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java
    index b669abbba0d..a0df1cd72b3 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java
    @@ -22,11 +22,11 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallL
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesMediaPlace;
     import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace;
    -import com.sap.sailing.gwt.home.client.place.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace;
     import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace;
     import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace;
    
    From 7512e5dbdce2211d0645991cad1cf66470418879 Mon Sep 17 00:00:00 2001
    From: Benjamin Barth 
    Date: Tue, 22 Sep 2015 15:05:23 +0200
    Subject: [PATCH 335/504] Refactoring - Moved desktop SponsoringPlace into
     respective package
    
    ---
     .../gwt/home/client/shared/mainsponsors/MainSponsors.java  | 2 +-
     .../gwt/home/desktop/app/DesktopActivityMapper.java        | 4 ++--
     .../sailing/gwt/home/desktop/app/DesktopClientFactory.java | 2 +-
     .../gwt/home/desktop/app/DesktopPlacesNavigator.java       | 2 +-
     .../app/TabletAndDesktopApplicationClientFactory.java      | 4 ++--
     .../places}/sponsoring/SponsoringActivity.java             | 2 +-
     .../places}/sponsoring/SponsoringActivityProxy.java        | 2 +-
     .../places}/sponsoring/SponsoringClientFactory.java        | 2 +-
     .../places}/sponsoring/SponsoringPlace.java                | 2 +-
     .../places}/sponsoring/SponsoringView.java                 | 2 +-
     .../places}/sponsoring/TabletAndDesktopSponsoringView.java | 2 +-
     .../sponsoring/TabletAndDesktopSponsoringView.ui.xml       | 7 ++-----
     .../gwt/home/shared/app/ApplicationHistoryMapper.java      | 2 +-
     13 files changed, 16 insertions(+), 19 deletions(-)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/sponsoring/SponsoringActivity.java (88%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/sponsoring/SponsoringActivityProxy.java (92%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/sponsoring/SponsoringClientFactory.java (74%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/sponsoring/SponsoringPlace.java (88%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/sponsoring/SponsoringView.java (63%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/sponsoring/TabletAndDesktopSponsoringView.java (92%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/sponsoring/TabletAndDesktopSponsoringView.ui.xml (50%)
    
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java
    index 134b3887abd..cf1f8c03e71 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java
    @@ -8,10 +8,10 @@ import com.google.gwt.uibinder.client.UiHandler;
     import com.google.gwt.user.client.ui.Anchor;
     import com.google.gwt.user.client.ui.Composite;
     import com.google.gwt.user.client.ui.Widget;
    -import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    +import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     
     public class MainSponsors extends Composite {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java
    index fe157d83c3f..8757675d7c2 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java
    @@ -8,8 +8,6 @@ import com.sap.sailing.gwt.home.client.place.event.EventActivityProxy;
     import com.sap.sailing.gwt.home.client.place.events.EventsActivityProxy;
     import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace;
    -import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringActivityProxy;
    -import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactActivityProxy;
    @@ -20,6 +18,8 @@ import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultActivity
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringActivityProxy;
    +import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringPlace;
     import com.sap.sailing.gwt.home.desktop.places.start.StartActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewActivityProxy;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java
    index 4bc26a3d761..b768124e50e 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java
    @@ -3,12 +3,12 @@ package com.sap.sailing.gwt.home.desktop.app;
     import com.sap.sailing.gwt.home.client.place.event.EventClientFactory;
     import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory;
     import com.sap.sailing.gwt.home.client.place.events.EventsClientFactory;
    -import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.error.ErrorClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsClientFactory;
    +import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.start.StartClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewClientFactory;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java
    index e1a387abf75..c3671425382 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java
    @@ -13,12 +13,12 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboa
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace;
     import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
    -import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    +import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringPlace;
     import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java
    index 9d23b0724af..72393b6f522 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java
    @@ -5,14 +5,14 @@ import com.google.gwt.place.shared.PlaceController;
     import com.google.web.bindery.event.shared.EventBus;
     import com.sap.sailing.gwt.home.client.place.events.EventsView;
     import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView;
    -import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringView;
    -import com.sap.sailing.gwt.home.client.place.sponsoring.TabletAndDesktopSponsoringView;
     import com.sap.sailing.gwt.home.desktop.places.error.TabletAndDesktopErrorView;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultView;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.TabletAndDesktopSearchResultView;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsView;
     import com.sap.sailing.gwt.home.desktop.places.solutions.TabletAndDesktopSolutionsView;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    +import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringView;
    +import com.sap.sailing.gwt.home.desktop.places.sponsoring.TabletAndDesktopSponsoringView;
     import com.sap.sailing.gwt.home.desktop.places.start.StartView;
     import com.sap.sailing.gwt.home.desktop.places.start.TabletAndDesktopStartView;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.TabletAndDesktopWhatsNewView;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringActivity.java
    similarity index 88%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringActivity.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringActivity.java
    index f2ce5b4f805..b17e5d1ffcc 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringActivity.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.sponsoring;
    +package com.sap.sailing.gwt.home.desktop.places.sponsoring;
     
     import com.google.gwt.activity.shared.AbstractActivity;
     import com.google.gwt.event.shared.EventBus;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringActivityProxy.java
    similarity index 92%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringActivityProxy.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringActivityProxy.java
    index 1f778d42dd0..7eeab6738c2 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringActivityProxy.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringActivityProxy.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.sponsoring;
    +package com.sap.sailing.gwt.home.desktop.places.sponsoring;
     
     import com.google.gwt.core.client.GWT;
     import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringClientFactory.java
    similarity index 74%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringClientFactory.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringClientFactory.java
    index 304e89dd044..9dcf2c6bd37 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringClientFactory.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.sponsoring;
    +package com.sap.sailing.gwt.home.desktop.places.sponsoring;
     
     import com.sap.sailing.gwt.ui.client.SailingClientFactory;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringPlace.java
    similarity index 88%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringPlace.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringPlace.java
    index 34720235206..e47aabeb167 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringPlace.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringPlace.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.sponsoring;
    +package com.sap.sailing.gwt.home.desktop.places.sponsoring;
     
     import com.google.gwt.place.shared.Place;
     import com.google.gwt.place.shared.PlaceTokenizer;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringView.java
    similarity index 63%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringView.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringView.java
    index a13f0f3015a..7ea0e95464b 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/SponsoringView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/SponsoringView.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.sponsoring;
    +package com.sap.sailing.gwt.home.desktop.places.sponsoring;
     
     import com.google.gwt.user.client.ui.Widget;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/TabletAndDesktopSponsoringView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/TabletAndDesktopSponsoringView.java
    similarity index 92%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/TabletAndDesktopSponsoringView.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/TabletAndDesktopSponsoringView.java
    index c9da3d8f987..9420f890351 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/TabletAndDesktopSponsoringView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/TabletAndDesktopSponsoringView.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.sponsoring;
    +package com.sap.sailing.gwt.home.desktop.places.sponsoring;
     
     import com.google.gwt.core.client.GWT;
     import com.google.gwt.uibinder.client.UiBinder;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/TabletAndDesktopSponsoringView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/TabletAndDesktopSponsoringView.ui.xml
    similarity index 50%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/TabletAndDesktopSponsoringView.ui.xml
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/TabletAndDesktopSponsoringView.ui.xml
    index 63b7dbb5582..40506ee300b 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/sponsoring/TabletAndDesktopSponsoringView.ui.xml
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/sponsoring/TabletAndDesktopSponsoringView.ui.xml
    @@ -1,10 +1,7 @@
     
    -
    +
     	
    - 
         
     		
     	
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java
    index a0df1cd72b3..756e52ceb8a 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java
    @@ -21,11 +21,11 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesLeaderbo
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesMediaPlace;
    -import com.sap.sailing.gwt.home.client.place.sponsoring.SponsoringPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringPlace;
     import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace;
     import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace;
    
    From ff531df253462f75043e327b605340b3879a4c1b Mon Sep 17 00:00:00 2001
    From: Frederik Petersen 
    Date: Tue, 22 Sep 2015 15:08:26 +0200
    Subject: [PATCH 336/504] Now zero values are inserted when actual data is not
     usable
    
    this leads to a slightly better presentations, because edges of valid data
    are not connected by meaningless straight lines
    ---
     .../sailing/gwt/ui/client/StringMessages.java |  1 +
     .../gwt/ui/client/StringMessages.properties   |  1 +
     .../ui/client/StringMessages_de.properties    |  1 +
     .../ui/polarmining/PolarResultsPresenter.java | 19 +++++++------------
     .../datamining/shared/PolarAggregation.java   |  1 +
     .../shared/PolarAggregationImpl.java          |  4 ++++
     .../shared/PolarDataMiningSettingsImpl.java   |  2 +-
     7 files changed, 16 insertions(+), 13 deletions(-)
    
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java
    index 0c967f041a3..390c2253fc6 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java
    @@ -563,6 +563,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c
         String polarSheetSplitByWindGaugesTooltip();
         String applyMinimumWindConfidence();
         String applyMinimumWindConfidenceTooltip();
    +    String windRangeDistribution();
         String pleaseSeeToolTips();
         String numberOfManeuversInRaceTooltip();
         String competitorColumnTooltip();
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties
    index 4f5c41602f3..4d3c08be5e3 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties
    @@ -557,6 +557,7 @@ polarSheetSplitByWindGauges=Split Windsources
     polarSheetSplitByWindGaugesTooltip=Splitting Windsources allows a better search for bad wind gauges.\nThe statistical correctness cannot be guaranteed. The same fix can\ncount into the resulting polar sheet multiple times (for different wind gauges).
     applyMinimumWindConfidence=Apply minimum wind confidence
     applyMinimumWindConfidenceTooltip=If checked the value in the box above will be used as the minimum valid wind confidence during generation.
    +windRangeDistribution=Distribution in the wind range.
     pleaseSeeToolTips=Please hover over the options to view tooltips where available.
     competitorColumnTooltip=Names of the members of this competitor.
     sailIdColumnTooltip=Shows the flag of the country and the sail number of the competitor.
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties
    index 067bef10378..7ff6908abc1 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties
    @@ -557,6 +557,7 @@ polarSheetSplitByWindGauges=Windquellen splitten
     polarSheetSplitByWindGaugesTooltip=Das Splitten der Windquellen erlaubt eine einfachere Suche nach Fehlern.\nEs werden für jeden Fix, für alle Windmesser, Daten zum Polardiagramm hinzugefügt.\nDiese Option garantiert keine statistische Aussagekraft.
     applyMinimumWindConfidence=Minimale Windkonfidenz anwenden
     applyMinimumWindConfidenceTooltip=Falls diese Box markiert ist, wird der Wert in der obigen Box als minimaler Windkonfidenzwert angewendet.
    +windRangeDistribution=Verteilung innerhalb des Windbereiches
     pleaseSeeToolTips=Bitte den Mauszeiger über die Optionen halten um Tooltips zu sehen.
     competitorColumnTooltip=Namen der Segler dieses Teilnehmers
     sailIdColumnTooltip=Zeigt die Länderflagge und die Segelnummer des Teilnehmers
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java
    index dc428f084b2..fb79db8fbf9 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java
    @@ -74,8 +74,8 @@ public class PolarResultsPresenter extends AbstractResultsPresenter {
             polarChartWrapperPanel.add(polarChart);
     
             dataCountHistogramChart = createDataCountHistogramChart(stringMessages.beatAngle() + " ("
    -                + stringMessages.degreesShort() + ")");
    -        dataCountPerAngleHistogramChart = createDataCountHistogramChart(stringMessages.windSpeed());
    +                + stringMessages.degreesShort() + ")", true);
    +        dataCountPerAngleHistogramChart = createDataCountHistogramChart(stringMessages.windRangeDistribution(), false);
             histogramChartsWrapperPanel = new DockLayoutPanel(Unit.PCT) {
                 @Override
                 public void onResize() {
    @@ -93,13 +93,6 @@ public class PolarResultsPresenter extends AbstractResultsPresenter {
             dockLayoutPanel.addEast(histogramChartsWrapperPanel, 60);
             
             setSeriesShowAndHideHandler();
    -        setSeriesPointSelectionHandler();
    -    }
    -    
    -    private void setSeriesPointSelectionHandler() {
    -        SeriesPlotOptions seriesPlotOptions = new SeriesPlotOptions();
    -        seriesPlotOptions.setPointSelectEventHandler(createPointSelectEventHandler());
    -        seriesPlotOptions.setPointUnselectEventHandler(createPointUnselectEventHandler());
         }
     
         private PointUnselectEventHandler createPointUnselectEventHandler() {
    @@ -168,11 +161,11 @@ public class PolarResultsPresenter extends AbstractResultsPresenter {
             };
         }
     
    -    private Chart createDataCountHistogramChart(String xAxisLabel) {
    +    private Chart createDataCountHistogramChart(String xAxisLabel, boolean showXLabels) {
             Chart histogramChart = new Chart().setType(Type.AREA).setHeight100().setWidth100();
             histogramChart.setTitle(new ChartTitle().setText(""), new ChartSubtitle().setText(""));
             histogramChart.getYAxis().setMin(0).setAxisTitle(new AxisTitle().setText(stringMessages.numberOfDataPoints()));
    -        histogramChart.getXAxis().setLabels(new XAxisLabels().setRotation(-90f).setY(30))
    +        histogramChart.getXAxis().setLabels(new XAxisLabels().setRotation(-90f).setY(30).setEnabled(showXLabels))
                     .setAxisTitle(new AxisTitle().setText(xAxisLabel));
             histogramChart.setAreaPlotOptions(new AreaPlotOptions().setLineColor("#666666")
                     .setLineWidth(1).setMarker(new Marker().setLineWidth(1).setLineColor("#666666")));
    @@ -235,7 +228,9 @@ public class PolarResultsPresenter extends AbstractResultsPresenter {
                         if (countPerAngle[i] >= settings.getMinimumDataCountPerAngle() && speed > 0) {
                             point = new Point(convertedAngle, speed);
                             polarSeries.addPoint(point, false, false, false);
    -                    }  
    +                    }  else {
    +                        polarSeries.addPoint(convertedAngle, 0, false, false, false);
    +                    }
                         histogramSeries.addPoint(convertedAngle, countPerAngle[i], false, false, false);
                         Series dataCountPerAngleSeries = dataCountPerAngleHistogramChart.createSeries();
                         int[] histogramDataForAngle = histogramData[i];
    diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java
    index a1d1ec94c48..181a61d84ec 100644
    --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java
    +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java
    @@ -15,4 +15,5 @@ public interface PolarAggregation extends Serializable {
         PolarDataMiningSettings getSettings();
         
         int[][] getCountHistogramPerAngle();
    +    
     }
    diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java
    index 33459f4c751..9e2a3e6bc50 100644
    --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java
    +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java
    @@ -7,6 +7,10 @@ public class PolarAggregationImpl implements PolarAggregation {
         private static final long serialVersionUID = 9177124509619315748L;
         private double[] sumSpeedsPerAngle = new double[360];
         private int[] countPerAngle = new int[360];
    +    /**
    +     * FIXME Righnt now the histogram data is only valid, if the results are grouped by windrange.
    +     * Otherwise the column-indices of different ranges are mixed in one histogram. 
    +     */
         private int[][] histogramData;
         private int count = 0;
         private PolarDataMiningSettings settings;
    diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java
    index 3c4c9361d12..24b5a560576 100644
    --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java
    +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java
    @@ -7,7 +7,7 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings {
         public static PolarDataMiningSettingsImpl createStandardPolarSettings() {
             double[] levels = { 4., 6., 8., 10., 12., 14., 16., 20., 25., 30. };
             WindSpeedSteppingWithMaxDistance windStepping = new WindSpeedSteppingWithMaxDistance(levels, 2.5);
    -        return new PolarDataMiningSettingsImpl(50, 0.01, true, 20, 20, true, true, windStepping);
    +        return new PolarDataMiningSettingsImpl(1000, 0.01, true, 100, 20, true, true, windStepping);
         }
     
         private static final long serialVersionUID = 2731616509404813790L;
    
    From 5d85182564a7e6749cf8b0fef3a28e571541ea4e Mon Sep 17 00:00:00 2001
    From: Benjamin Barth 
    Date: Tue, 22 Sep 2015 15:14:16 +0200
    Subject: [PATCH 337/504] Refactoring - Moved desktop EventsPlace into
     respective package
    
    ---
     .../gwt/home/client/place/event/AbstractEventActivity.java    | 2 +-
     .../sap/sailing/gwt/home/client/place/event/EventView.java    | 2 +-
     .../home/client/place/fakeseries/AbstractSeriesActivity.java  | 2 +-
     .../gwt/home/client/place/fakeseries/SeriesActivity.java      | 2 +-
     .../sailing/gwt/home/client/place/fakeseries/SeriesView.java  | 2 +-
     .../sailing/gwt/home/desktop/app/DesktopActivityMapper.java   | 4 ++--
     .../sailing/gwt/home/desktop/app/DesktopClientFactory.java    | 2 +-
     .../sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java  | 2 +-
     .../desktop/app/TabletAndDesktopApplicationClientFactory.java | 4 ++--
     .../sap/sailing/gwt/home/desktop/partials/header/Header.java  | 2 +-
     .../gwt/home/desktop/partials/mainevents/MainEvents.java      | 2 +-
     .../place => desktop/places}/events/AbstractEventsView.java   | 2 +-
     .../place => desktop/places}/events/EventsActivity.java       | 2 +-
     .../place => desktop/places}/events/EventsActivityProxy.java  | 2 +-
     .../place => desktop/places}/events/EventsClientFactory.java  | 2 +-
     .../{client/place => desktop/places}/events/EventsPlace.java  | 2 +-
     .../{client/place => desktop/places}/events/EventsView.java   | 2 +-
     .../places}/events/TabletAndDesktopEventsView.java            | 2 +-
     .../places}/events/TabletAndDesktopEventsView.ui.xml          | 0
     .../sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java | 2 +-
     .../sailing/gwt/home/mobile/app/MobilePlacesNavigator.java    | 2 +-
     .../sailing/gwt/home/mobile/places/events/EventsActivity.java | 2 +-
     .../gwt/home/mobile/places/events/EventsActivityProxy.java    | 2 +-
     .../sailing/gwt/home/shared/app/ApplicationHistoryMapper.java | 2 +-
     .../sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java  | 2 +-
     25 files changed, 26 insertions(+), 26 deletions(-)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/events/AbstractEventsView.java (88%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/events/EventsActivity.java (96%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/events/EventsActivityProxy.java (92%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/events/EventsClientFactory.java (74%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/events/EventsPlace.java (94%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/events/EventsView.java (79%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/events/TabletAndDesktopEventsView.java (97%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/events/TabletAndDesktopEventsView.ui.xml (100%)
    
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java
    index 97dd6d84565..66d133e5976 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java
    @@ -16,9 +16,9 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaP
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace;
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace;
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java
    index 152a06cd6b8..6fcc0aecd19 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java
    @@ -10,8 +10,8 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
     import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace;
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace;
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java
    index d358a2fe88b..1b2b78f1474 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java
    @@ -11,8 +11,8 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
     import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
     import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
     import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java
    index 5b97a39aa99..ca2d574323d 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java
    @@ -14,8 +14,8 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget;
     import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
     import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
     import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java
    index 474928404fa..b086189fc3d 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java
    @@ -8,7 +8,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
     import com.google.gwt.user.client.ui.IsWidget;
     import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
     import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java
    index 8757675d7c2..662bd159291 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java
    @@ -5,8 +5,6 @@ import com.google.gwt.activity.shared.ActivityMapper;
     import com.google.gwt.place.shared.Place;
     import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace;
     import com.sap.sailing.gwt.home.client.place.event.EventActivityProxy;
    -import com.sap.sailing.gwt.home.client.place.events.EventsActivityProxy;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
    @@ -14,6 +12,8 @@ import com.sap.sailing.gwt.home.desktop.places.contact.ContactActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
     import com.sap.sailing.gwt.home.desktop.places.error.ErrorActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsActivityProxy;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsActivityProxy;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java
    index b768124e50e..97cde96a1ce 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java
    @@ -2,10 +2,10 @@ package com.sap.sailing.gwt.home.desktop.app;
     
     import com.sap.sailing.gwt.home.client.place.event.EventClientFactory;
     import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory;
    -import com.sap.sailing.gwt.home.client.place.events.EventsClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.error.ErrorClientFactory;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsClientFactory;
     import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringClientFactory;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java
    index c3671425382..144e6ebcebe 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java
    @@ -11,10 +11,10 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaP
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaCompetitorAnalyticsPlace;
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace;
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java
    index 72393b6f522..92fc032d8f6 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java
    @@ -3,9 +3,9 @@ package com.sap.sailing.gwt.home.desktop.app;
     import com.google.gwt.event.shared.SimpleEventBus;
     import com.google.gwt.place.shared.PlaceController;
     import com.google.web.bindery.event.shared.EventBus;
    -import com.sap.sailing.gwt.home.client.place.events.EventsView;
    -import com.sap.sailing.gwt.home.client.place.events.TabletAndDesktopEventsView;
     import com.sap.sailing.gwt.home.desktop.places.error.TabletAndDesktopErrorView;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsView;
    +import com.sap.sailing.gwt.home.desktop.places.events.TabletAndDesktopEventsView;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultView;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.TabletAndDesktopSearchResultView;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsView;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java
    index c47f1983b2d..c6de98a9e05 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java
    @@ -24,8 +24,8 @@ import com.sap.sailing.gwt.common.client.i18n.TextMessages;
     import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace;
     import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace;
     import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java
    index 15a50ba59ca..2dc34c16d65 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java
    @@ -12,9 +12,9 @@ import com.google.gwt.user.client.ui.Composite;
     import com.google.gwt.user.client.ui.FlowPanel;
     import com.google.gwt.user.client.ui.Widget;
     import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
     import com.sap.sailing.gwt.home.desktop.partials.eventsrecent.RecentEventTeaser;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/AbstractEventsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/AbstractEventsView.java
    similarity index 88%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/AbstractEventsView.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/AbstractEventsView.java
    index 69168b8d0ab..906336dc374 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/AbstractEventsView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/AbstractEventsView.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.events;
    +package com.sap.sailing.gwt.home.desktop.places.events;
     
     import com.google.gwt.user.client.ui.Composite;
     import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivity.java
    similarity index 96%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivity.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivity.java
    index 0b7f50521c3..a25148a98ae 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivity.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.events;
    +package com.sap.sailing.gwt.home.desktop.places.events;
     
     import com.google.gwt.activity.shared.AbstractActivity;
     import com.google.gwt.event.shared.EventBus;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivityProxy.java
    similarity index 92%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivityProxy.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivityProxy.java
    index 4c461a8fd4c..ce132ebe43f 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsActivityProxy.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivityProxy.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.events;
    +package com.sap.sailing.gwt.home.desktop.places.events;
     
     import com.google.gwt.core.client.GWT;
     import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsClientFactory.java
    similarity index 74%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsClientFactory.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsClientFactory.java
    index 5689cbfa8db..e22c4b19335 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsClientFactory.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.events;
    +package com.sap.sailing.gwt.home.desktop.places.events;
     
     import com.sap.sailing.gwt.ui.client.SailingClientFactory;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsPlace.java
    similarity index 94%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsPlace.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsPlace.java
    index 271f944eeee..2b48104bad2 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsPlace.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsPlace.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.events;
    +package com.sap.sailing.gwt.home.desktop.places.events;
     
     import com.google.gwt.place.shared.Place;
     import com.google.gwt.place.shared.PlaceTokenizer;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsView.java
    similarity index 79%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsView.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsView.java
    index 5662fd6c1c9..62ed904259b 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/EventsView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsView.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.events;
    +package com.sap.sailing.gwt.home.desktop.places.events;
     
     import com.google.gwt.user.client.ui.IsWidget;
     import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/TabletAndDesktopEventsView.java
    similarity index 97%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/TabletAndDesktopEventsView.java
    index 0926ab34f18..a1c8fc5c5e9 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/TabletAndDesktopEventsView.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.client.place.events;
    +package com.sap.sailing.gwt.home.desktop.places.events;
     
     import com.google.gwt.core.client.GWT;
     import com.google.gwt.uibinder.client.UiBinder;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/TabletAndDesktopEventsView.ui.xml
    similarity index 100%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/events/TabletAndDesktopEventsView.ui.xml
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/TabletAndDesktopEventsView.ui.xml
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java
    index 74a95a2e9ea..29b07dc9b6a 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java
    @@ -5,8 +5,8 @@ import com.google.gwt.activity.shared.ActivityMapper;
     import com.google.gwt.core.client.GWT;
     import com.google.gwt.place.shared.Place;
     import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.mobile.places.event.EventActivityProxy;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java
    index 44a4bf1c02f..09b32d730c3 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java
    @@ -6,11 +6,11 @@ import com.google.gwt.place.shared.PlaceController;
     import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace;
     import com.sap.sailing.gwt.home.client.place.event.EventContext;
     import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivity.java
    index 23a5f968eb4..0e74aaa9145 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivity.java
    @@ -9,7 +9,7 @@ import com.google.gwt.user.client.Window;
     import com.google.gwt.user.client.rpc.AsyncCallback;
     import com.google.gwt.user.client.ui.AcceptsOneWidget;
     import com.sap.sailing.gwt.common.client.i18n.TextMessages;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
     import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator;
     import com.sap.sailing.gwt.home.mobile.places.events.EventsView.Presenter;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivityProxy.java
    index e39f76edb98..d9d5ebaaa8d 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivityProxy.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivityProxy.java
    @@ -1,7 +1,7 @@
     package com.sap.sailing.gwt.home.mobile.places.events;
     
     import com.google.gwt.core.client.GWT;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
     import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java
    index 756e52ceb8a..589aeb2cd79 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java
    @@ -14,7 +14,6 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboa
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace;
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace;
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesCompetitorAnalyticsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesLeaderboardsPlace;
    @@ -23,6 +22,7 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesMediaPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringPlace;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java
    index 4fdf6261e6a..90c0fb2d7c1 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java
    @@ -13,12 +13,12 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboa
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace;
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace;
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace;
    -import com.sap.sailing.gwt.home.client.place.events.EventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesCompetitorAnalyticsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesLeaderboardsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace;
    +import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     
     /**
      * Helper class to support converting old places to new ones.
    
    From 286b4348447ec4f2417663ddc7100b111e41c9a2 Mon Sep 17 00:00:00 2001
    From: Frederik Petersen 
    Date: Tue, 22 Sep 2015 15:50:52 +0200
    Subject: [PATCH 338/504] Exclude maneuvers from polar data mining
    
    ---
     .../datamining/components/PolarGPSFixRetrievalProcessor.java    | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java
    index 1d69eafa73a..bf89670c45c 100644
    --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java
    +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java
    @@ -62,7 +62,7 @@ public class PolarGPSFixRetrievalProcessor extends AbstractRetrievalProcessor= settings.getMinimumWindConfidence() : true)) {
                             GPSFixWithPolarContext potentialResult = new GPSFixWithPolarContext(fix, trackedRace, windSpeedRangeGroup, competitor,
                                     settings, wind, element);
    -                        if (!potentialResult.getWindSpeedRange().getSignifier().equals("null")) {
    +                        if (!potentialResult.getWindSpeedRange().getSignifier().equals("null") && !track.hasDirectionChange(fix.getTimePoint(), 5)) {
                                 result.add(potentialResult);
                             }
                         }
    
    From c6ffd90329eba279a11fba3e5353d626d65b79a5 Mon Sep 17 00:00:00 2001
    From: Benjamin Barth 
    Date: Tue, 22 Sep 2015 16:26:24 +0200
    Subject: [PATCH 339/504] Refactoring - Moved share places into respective
     packages
    
    ---
     .../home/client/place/event/AbstractEventActivity.java    | 4 ++--
     .../sailing/gwt/home/client/place/event/EventView.java    | 4 ++--
     .../client/place/fakeseries/AbstractSeriesActivity.java   | 4 ++--
     .../gwt/home/client/place/fakeseries/SeriesActivity.java  | 4 ++--
     .../gwt/home/client/place/fakeseries/SeriesView.java      | 4 ++--
     .../gwt/home/client/shared/mainsponsors/MainSponsors.java | 4 ++--
     .../desktop/app/AbstractApplicationClientFactory.java     | 2 +-
     .../gwt/home/desktop/app/DesktopActivityMapper.java       | 6 +++---
     .../gwt/home/desktop/app/DesktopPlacesNavigator.java      | 8 ++++----
     .../app/TabletAndDesktopApplicationClientFactory.java     | 2 +-
     .../sailing/gwt/home/desktop/partials/header/Header.java  | 8 ++++----
     .../gwt/home/desktop/partials/mainevents/MainEvents.java  | 2 +-
     .../gwt/home/desktop/partials/solutions/Solutions.java    | 4 ++--
     .../gwt/home/desktop/places/events/EventsActivity.java    | 1 +
     .../home/desktop/places/events/EventsActivityProxy.java   | 1 +
     .../desktop/places/events/TabletAndDesktopEventsView.java | 3 ++-
     .../home/desktop/places/solutions/SolutionsActivity.java  | 1 +
     .../desktop/places/solutions/SolutionsActivityProxy.java  | 1 +
     .../desktop/places/solutions/SolutionsClientFactory.java  | 2 +-
     .../places/solutions/TabletAndDesktopSolutionsView.java   | 2 +-
     .../gwt/home/desktop/places/start/StartActivity.java      | 1 +
     .../gwt/home/desktop/places/start/StartActivityProxy.java | 1 +
     .../sailing/gwt/home/mobile/app/MobileActivityMapper.java | 6 +++---
     .../home/mobile/app/MobileApplicationClientFactory.java   | 2 +-
     .../gwt/home/mobile/app/MobilePlacesNavigator.java        | 8 ++++----
     .../gwt/home/mobile/places/events/EventsActivity.java     | 2 +-
     .../home/mobile/places/events/EventsActivityProxy.java    | 2 +-
     .../home/mobile/places/solutions/SolutionsActivity.java   | 2 +-
     .../mobile/places/solutions/SolutionsActivityProxy.java   | 2 +-
     .../gwt/home/mobile/places/start/StartActivity.java       | 2 +-
     .../gwt/home/mobile/places/start/StartActivityProxy.java  | 2 +-
     .../gwt/home/shared/app/ApplicationHistoryMapper.java     | 6 +++---
     .../gwt/home/shared/app/ApplicationPlaceUpdater.java      | 2 +-
     .../{desktop => shared}/places/events/EventsPlace.java    | 2 +-
     .../places/solutions/SolutionsPlace.java                  | 2 +-
     .../home/{desktop => shared}/places/start/StartPlace.java | 2 +-
     36 files changed, 59 insertions(+), 52 deletions(-)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{desktop => shared}/places/events/EventsPlace.java (94%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{desktop => shared}/places/solutions/SolutionsPlace.java (96%)
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{desktop => shared}/places/start/StartPlace.java (94%)
    
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java
    index 66d133e5976..2e75dd2e2a7 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java
    @@ -18,11 +18,11 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewP
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory;
     import com.sap.sailing.gwt.ui.client.HomeServiceAsync;
     import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java
    index 6fcc0aecd19..fb1b2e0087f 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java
    @@ -11,10 +11,10 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaP
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace;
     import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
     import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.client.HomeServiceAsync;
     import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
     import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java
    index 1b2b78f1474..f50ef82fd35 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java
    @@ -12,10 +12,10 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
     import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
     import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
     import com.sap.sse.gwt.client.mvp.ErrorView;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java
    index ca2d574323d..d4d35eb7c82 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java
    @@ -15,10 +15,10 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
     import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
     import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
     import com.sap.sse.gwt.client.async.AsyncActionsExecutor;
     import com.sap.sse.gwt.client.player.Timer;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java
    index b086189fc3d..911ff99cd71 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java
    @@ -8,9 +8,9 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
     import com.google.gwt.user.client.ui.IsWidget;
     import com.sap.sailing.gwt.common.client.controls.tabbar.TabView;
     import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
     import com.sap.sse.gwt.client.player.Timer;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java
    index cf1f8c03e71..951d0b532c1 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/mainsponsors/MainSponsors.java
    @@ -9,10 +9,10 @@ import com.google.gwt.user.client.ui.Anchor;
     import com.google.gwt.user.client.ui.Composite;
     import com.google.gwt.user.client.ui.Widget;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
     import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
     
     public class MainSponsors extends Composite {
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractApplicationClientFactory.java
    index b358a7b6339..e3078db617d 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractApplicationClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/AbstractApplicationClientFactory.java
    @@ -5,7 +5,7 @@ import com.google.gwt.place.shared.Place;
     import com.google.gwt.place.shared.PlaceController;
     import com.google.gwt.user.client.rpc.ServiceDefTarget;
     import com.google.web.bindery.event.shared.EventBus;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.client.HomeService;
     import com.sap.sailing.gwt.ui.client.HomeServiceAsync;
     import com.sap.sailing.gwt.ui.client.MediaService;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java
    index 662bd159291..20c3cc9ade6 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java
    @@ -13,19 +13,19 @@ import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
     import com.sap.sailing.gwt.home.desktop.places.error.ErrorActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace;
     import com.sap.sailing.gwt.home.desktop.places.events.EventsActivityProxy;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsActivityProxy;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringPlace;
     import com.sap.sailing.gwt.home.desktop.places.start.StartActivityProxy;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewActivityProxy;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace;
     import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint;
     import com.sap.sailing.gwt.home.shared.app.ApplicationPlaceUpdater;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     
     public class DesktopActivityMapper implements ActivityMapper {
         private final DesktopClientFactory clientFactory;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java
    index 144e6ebcebe..ca335860f0c 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java
    @@ -14,16 +14,16 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewP
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
     import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringPlace;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
     import com.sap.sailing.gwt.home.shared.app.AbstractPlaceNavigator;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory;
     
     public class DesktopPlacesNavigator extends AbstractPlaceNavigator {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java
    index 92fc032d8f6..d5725a3b96f 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/TabletAndDesktopApplicationClientFactory.java
    @@ -10,7 +10,6 @@ import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultView;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.TabletAndDesktopSearchResultView;
     import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsView;
     import com.sap.sailing.gwt.home.desktop.places.solutions.TabletAndDesktopSolutionsView;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
     import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringView;
     import com.sap.sailing.gwt.home.desktop.places.sponsoring.TabletAndDesktopSponsoringView;
     import com.sap.sailing.gwt.home.desktop.places.start.StartView;
    @@ -20,6 +19,7 @@ import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewView;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
     import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
     import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystemImpl;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
     
     
     public class TabletAndDesktopApplicationClientFactory extends AbstractApplicationClientFactory implements DesktopClientFactory {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java
    index c6de98a9e05..c6718316c13 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java
    @@ -25,12 +25,12 @@ import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace;
     import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace;
     import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sse.gwt.client.mvp.PlaceChangedEvent;
     
     public class Header extends Composite {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java
    index 2dc34c16d65..57460502fb8 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java
    @@ -14,8 +14,8 @@ import com.google.gwt.user.client.ui.Widget;
     import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
     import com.sap.sailing.gwt.home.desktop.partials.eventsrecent.RecentEventTeaser;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
     import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO;
     
     public class MainEvents extends Composite {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/solutions/Solutions.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/solutions/Solutions.java
    index 949fac5c936..753ec251fd5 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/solutions/Solutions.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/solutions/Solutions.java
    @@ -16,11 +16,11 @@ import com.google.gwt.user.client.ui.Composite;
     import com.google.gwt.user.client.ui.Widget;
     import com.google.gwt.user.client.ui.impl.HyperlinkImpl;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
     
     public class Solutions extends Composite {
         interface SolutionsUiBinder extends UiBinder {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivity.java
    index a25148a98ae..95bf5555f0e 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivity.java
    @@ -6,6 +6,7 @@ import com.google.gwt.user.client.Window;
     import com.google.gwt.user.client.rpc.AsyncCallback;
     import com.google.gwt.user.client.ui.AcceptsOneWidget;
     import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
     import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO;
     import com.sap.sse.gwt.client.mvp.ErrorView;
     
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivityProxy.java
    index ce132ebe43f..158f0f08dd6 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivityProxy.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsActivityProxy.java
    @@ -1,6 +1,7 @@
     package com.sap.sailing.gwt.home.desktop.places.events;
     
     import com.google.gwt.core.client.GWT;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
     import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
     
     public class EventsActivityProxy extends AbstractActivityProxy {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/TabletAndDesktopEventsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/TabletAndDesktopEventsView.java
    index a1c8fc5c5e9..fe23fca016a 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/TabletAndDesktopEventsView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/TabletAndDesktopEventsView.java
    @@ -8,8 +8,9 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.BreadcrumbPane;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
     import com.sap.sailing.gwt.home.desktop.partials.eventsrecent.EventsOverviewRecent;
     import com.sap.sailing.gwt.home.desktop.partials.eventsupcoming.EventsOverviewUpcoming;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.client.StringMessages;
     
     public class TabletAndDesktopEventsView extends AbstractEventsView {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivity.java
    index 3664da52637..736a4d1b725 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivity.java
    @@ -5,6 +5,7 @@ import com.google.gwt.event.shared.EventBus;
     import com.google.gwt.user.client.Window;
     import com.google.gwt.user.client.ui.AcceptsOneWidget;
     import com.sap.sailing.gwt.common.client.i18n.TextMessages;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace;
     
     public class SolutionsActivity extends AbstractActivity {
         private final SolutionsPlace solutionsPlace;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivityProxy.java
    index 43869296a0c..40a0e6e99ee 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivityProxy.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsActivityProxy.java
    @@ -1,6 +1,7 @@
     package com.sap.sailing.gwt.home.desktop.places.solutions;
     
     import com.google.gwt.core.client.GWT;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace;
     import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
     
     public class SolutionsActivityProxy extends AbstractActivityProxy {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsClientFactory.java
    index 22b57d03eb7..7be2d04df50 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsClientFactory.java
    @@ -1,6 +1,6 @@
     package com.sap.sailing.gwt.home.desktop.places.solutions;
     
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
     import com.sap.sailing.gwt.ui.client.SailingClientFactory;
     
     public interface SolutionsClientFactory extends SailingClientFactory {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/TabletAndDesktopSolutionsView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/TabletAndDesktopSolutionsView.java
    index 61df6b234f4..f49d0ffafac 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/TabletAndDesktopSolutionsView.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/TabletAndDesktopSolutionsView.java
    @@ -7,7 +7,7 @@ import com.google.gwt.user.client.ui.Composite;
     import com.google.gwt.user.client.ui.Widget;
     import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator;
     import com.sap.sailing.gwt.home.desktop.partials.solutions.Solutions;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
     
     public class TabletAndDesktopSolutionsView extends Composite implements SolutionsView {
         private static SolutionsPageViewUiBinder uiBinder = GWT.create(SolutionsPageViewUiBinder.class);
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivity.java
    index 537fb58dea9..62819261076 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivity.java
    @@ -6,6 +6,7 @@ import com.google.gwt.user.client.Window;
     import com.google.gwt.user.client.rpc.AsyncCallback;
     import com.google.gwt.user.client.ui.AcceptsOneWidget;
     import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.shared.start.StartViewDTO;
     
     public class StartActivity extends AbstractActivity {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivityProxy.java
    index 3f2bfd1f773..7d91ee4a344 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivityProxy.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartActivityProxy.java
    @@ -1,6 +1,7 @@
     package com.sap.sailing.gwt.home.desktop.places.start;
     
     import com.google.gwt.core.client.GWT;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
     
     public class StartActivityProxy extends AbstractActivityProxy {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java
    index 29b07dc9b6a..684ab0973ab 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java
    @@ -6,9 +6,6 @@ import com.google.gwt.core.client.GWT;
     import com.google.gwt.place.shared.Place;
     import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.mobile.places.event.EventActivityProxy;
     import com.sap.sailing.gwt.home.mobile.places.events.EventsActivityProxy;
     import com.sap.sailing.gwt.home.mobile.places.series.SeriesActivityProxy;
    @@ -18,6 +15,9 @@ import com.sap.sailing.gwt.home.mobile.places.solutions.SolutionsActivityProxy;
     import com.sap.sailing.gwt.home.mobile.places.start.StartActivityProxy;
     import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint;
     import com.sap.sailing.gwt.home.shared.app.ApplicationPlaceUpdater;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     
     public class MobileActivityMapper implements ActivityMapper {
         private final MobileApplicationClientFactory clientFactory;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationClientFactory.java
    index e843ea0d804..6a99dfc9dee 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationClientFactory.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationClientFactory.java
    @@ -7,10 +7,10 @@ import com.google.gwt.user.client.rpc.ServiceDefTarget;
     import com.google.web.bindery.event.shared.EventBus;
     import com.google.web.bindery.event.shared.SimpleEventBus;
     import com.sap.sailing.gwt.home.desktop.app.ApplicationTopLevelView;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.mobile.places.MainView;
     import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem;
     import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystemImpl;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.client.HomeService;
     import com.sap.sailing.gwt.ui.client.HomeServiceAsync;
     import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java
    index 09b32d730c3..fa76530165a 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java
    @@ -10,16 +10,16 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs;
     import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace;
     import com.sap.sailing.gwt.home.shared.app.AbstractPlaceNavigator;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace.SolutionsNavigationTabs;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO;
     
     public class MobilePlacesNavigator extends AbstractPlaceNavigator {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivity.java
    index 0e74aaa9145..b0e934efe63 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivity.java
    @@ -9,11 +9,11 @@ import com.google.gwt.user.client.Window;
     import com.google.gwt.user.client.rpc.AsyncCallback;
     import com.google.gwt.user.client.ui.AcceptsOneWidget;
     import com.sap.sailing.gwt.common.client.i18n.TextMessages;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
     import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator;
     import com.sap.sailing.gwt.home.mobile.places.events.EventsView.Presenter;
     import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
     import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO;
     
     public class EventsActivity extends AbstractActivity implements Presenter {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivityProxy.java
    index d9d5ebaaa8d..4d65e26ae5f 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivityProxy.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/events/EventsActivityProxy.java
    @@ -1,8 +1,8 @@
     package com.sap.sailing.gwt.home.mobile.places.events;
     
     import com.google.gwt.core.client.GWT;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
     import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
     
     public class EventsActivityProxy extends AbstractActivityProxy {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivity.java
    index 474fb0cd812..af49d29fd7c 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivity.java
    @@ -3,8 +3,8 @@ package com.sap.sailing.gwt.home.mobile.places.solutions;
     import com.google.gwt.activity.shared.AbstractActivity;
     import com.google.gwt.event.shared.EventBus;
     import com.google.gwt.user.client.ui.AcceptsOneWidget;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace;
     
     public class SolutionsActivity extends AbstractActivity implements SolutionsView.Presenter {
         
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivityProxy.java
    index ab2ad8d7eb3..5f34856cbf8 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivityProxy.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/solutions/SolutionsActivityProxy.java
    @@ -1,8 +1,8 @@
     package com.sap.sailing.gwt.home.mobile.places.solutions;
     
     import com.google.gwt.core.client.GWT;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace;
     import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
     
     public class SolutionsActivityProxy extends AbstractActivityProxy {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java
    index dbe0d599d87..2d21e45842e 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivity.java
    @@ -5,11 +5,11 @@ import com.google.gwt.event.shared.EventBus;
     import com.google.gwt.user.client.Window;
     import com.google.gwt.user.client.rpc.AsyncCallback;
     import com.google.gwt.user.client.ui.AcceptsOneWidget;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
     import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator;
     import com.sap.sailing.gwt.home.mobile.places.start.StartView.Presenter;
     import com.sap.sailing.gwt.home.shared.app.PlaceNavigation;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sailing.gwt.ui.shared.dispatch.ListResult;
     import com.sap.sailing.gwt.ui.shared.dispatch.start.EventQuickfinderDTO;
     import com.sap.sailing.gwt.ui.shared.dispatch.start.GetRecentEventsAction;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivityProxy.java
    index 26c337eb8da..6a1003aed31 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivityProxy.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/start/StartActivityProxy.java
    @@ -1,8 +1,8 @@
     package com.sap.sailing.gwt.home.mobile.places.start;
     
     import com.google.gwt.core.client.GWT;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     import com.sap.sse.gwt.client.mvp.AbstractActivityProxy;
     
     public class StartActivityProxy extends AbstractActivityProxy {
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java
    index 589aeb2cd79..e7dd2483a44 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java
    @@ -22,15 +22,15 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesMediaPlace;
     import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace;
     import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
     import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace;
    -import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsPlace;
     import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringPlace;
    -import com.sap.sailing.gwt.home.desktop.places.start.StartPlace;
     import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace;
     import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace;
     import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace;
     import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace;
    +import com.sap.sailing.gwt.home.shared.places.start.StartPlace;
     
     @WithTokenizers({ AboutUsPlace.Tokenizer.class, ContactPlace.Tokenizer.class, EventPlace.Tokenizer.class,
             EventsPlace.Tokenizer.class, SolutionsPlace.Tokenizer.class, WhatsNewPlace.Tokenizer.class,
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java
    index 90c0fb2d7c1..50f5c2ba0cb 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java
    @@ -18,7 +18,7 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesCompetitorAnalyticsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesLeaderboardsPlace;
     import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace;
    -import com.sap.sailing.gwt.home.desktop.places.events.EventsPlace;
    +import com.sap.sailing.gwt.home.shared.places.events.EventsPlace;
     
     /**
      * Helper class to support converting old places to new ones.
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/events/EventsPlace.java
    similarity index 94%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsPlace.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/events/EventsPlace.java
    index 2b48104bad2..eb8bfb391f5 100755
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/events/EventsPlace.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/events/EventsPlace.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.desktop.places.events;
    +package com.sap.sailing.gwt.home.shared.places.events;
     
     import com.google.gwt.place.shared.Place;
     import com.google.gwt.place.shared.PlaceTokenizer;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/solutions/SolutionsPlace.java
    similarity index 96%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsPlace.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/solutions/SolutionsPlace.java
    index 4d100d0b6e4..712ed407c0f 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/solutions/SolutionsPlace.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/solutions/SolutionsPlace.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.desktop.places.solutions;
    +package com.sap.sailing.gwt.home.shared.places.solutions;
     
     import com.google.gwt.place.shared.PlaceTokenizer;
     import com.sap.sailing.gwt.common.client.AbstractBasePlace;
    diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/start/StartPlace.java
    similarity index 94%
    rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartPlace.java
    rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/start/StartPlace.java
    index 1a0836c5b0c..17105747593 100644
    --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/start/StartPlace.java
    +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/start/StartPlace.java
    @@ -1,4 +1,4 @@
    -package com.sap.sailing.gwt.home.desktop.places.start;
    +package com.sap.sailing.gwt.home.shared.places.start;
     
     import com.google.gwt.place.shared.Place;
     import com.google.gwt.place.shared.PlaceTokenizer;
    
    From dfea54d398f171ae55a76cbb9af564bcfb185d0f Mon Sep 17 00:00:00 2001
    From: Frederik Petersen 
    Date: Tue, 22 Sep 2015 16:28:30 +0200
    Subject: [PATCH 340/504] Removed old PolarSheets.html and its backend
     functionality
    
    replaced by datamining ui approach to polar generation.
    see wiki soon...
    ---
     .../domain/polars/PolarDataService.java       |  28 --
     .../test/PolarSheetGenerationServiceTest.java | 239 -----------
     java/com.sap.sailing.gwt.ui/PolarSheets.css   | 128 ------
     java/com.sap.sailing.gwt.ui/PolarSheets.html  |  33 --
     ...WT Remote Profiling (Run-Mode only).launch |   2 +-
     .../SailingGWT sdm.launch                     |   3 +-
     java/com.sap.sailing.gwt.ui/SailingGWT.launch |   3 +-
     java/com.sap.sailing.gwt.ui/build.properties  |   3 -
     java/com.sap.sailing.gwt.ui/pom.xml           |   1 -
     .../sailing/gwt/ui/client/SailingService.java |  11 -
     .../gwt/ui/client/SailingServiceAsync.java    |  11 -
     ...olarDataMiningSettingsDialogComponent.java |   1 -
     .../WindSpeedSteppingConfiguratorPanel.java   |   2 +-
     .../AbstractFilteredTrackedRacesList.java     |  32 --
     .../AngleOverDataSizeHistogramPanel.java      | 160 --------
     .../polarsheets/PolarChartControlPanel.java   | 117 ------
     ...heetGenerationSettingsDialogComponent.java | 178 ---------
     ...PolarSheetGenerationSettingsValidator.java | 106 -----
     .../PolarSheetListChangeListener.java         |   7 -
     .../ui/polarsheets/PolarSheetsChartPanel.java | 333 ----------------
     .../ui/polarsheets/PolarSheetsEntryPoint.java |  54 ---
     ...arSheetsHistogramDataArrangeButtonBar.java |  96 -----
     .../PolarSheetsHistogramPanel.java            | 151 -------
     .../gwt/ui/polarsheets/PolarSheetsPanel.java  | 372 ------------------
     .../PolarSheetsTrackedRacesList.java          |  98 -----
     .../PolarSheetsXYDiagramPopupPanel.java       |  89 -----
     .../gwt/ui/polarsheets/RaceFilter.java        |  47 ---
     .../gwt/ui/server/SailingServiceImpl.java     |  54 ---
     .../com/sap/sailing/gwt/ui/DataMining.gwt.xml |   1 -
     .../sap/sailing/gwt/ui/PolarSheets.gwt.xml    |  42 --
     .../polars/test/PolarSheetGenerationTest.java | 315 ---------------
     .../META-INF/MANIFEST.MF                      |   1 -
     .../PolarFixAggregationWorker.java            | 252 ------------
     .../aggregation/PolarFixAggregator.java       | 168 --------
     .../aggregation/PolarFixRaceInterval.java     |  14 -
     .../SimplePolarFixRaceInterval.java           |  28 --
     .../data/BoatAndWindSpeedWithOriginInfo.java  |  15 -
     .../polars/data/DataPointWithOriginInfo.java  |  11 -
     .../com/sap/sailing/polars/data/PolarFix.java |  18 -
     .../BoatAndWindSpeedWithOriginInfoImpl.java   |  41 --
     .../impl/DataPointWithOriginInfoImpl.java     |  39 --
     .../polars/data/impl/PolarFixImpl.java        | 122 ------
     .../generation/PolarSheetGenerator.java       | 273 -------------
     .../PolarSheetHistogramBuilder.java           |  81 ----
     .../polars/impl/PolarDataServiceImpl.java     |  24 --
     .../mining/MovingAveragePolarClusterKey.java  |  16 -
     .../polars/mining/MovingAverageProcessor.java |  20 -
     .../mining/MovingAverageProcessorImpl.java    | 223 -----------
     .../PolarDataDimensionCollectionFactory.java  |  18 +-
     .../MovingAverageBoatSpeedEstimator.java      |  88 -----
     50 files changed, 6 insertions(+), 4163 deletions(-)
     delete mode 100755 java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/PolarSheetGenerationServiceTest.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/PolarSheets.css
     delete mode 100644 java/com.sap.sailing.gwt.ui/PolarSheets.html
     rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/{polarsheets => polarmining}/WindSpeedSteppingConfiguratorPanel.java (98%)
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/AbstractFilteredTrackedRacesList.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/AngleOverDataSizeHistogramPanel.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarChartControlPanel.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarSheetGenerationSettingsDialogComponent.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarSheetGenerationSettingsValidator.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarSheetListChangeListener.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarSheetsChartPanel.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarSheetsEntryPoint.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarSheetsHistogramDataArrangeButtonBar.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarSheetsHistogramPanel.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarSheetsPanel.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarSheetsTrackedRacesList.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/PolarSheetsXYDiagramPopupPanel.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarsheets/RaceFilter.java
     delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/PolarSheets.gwt.xml
     delete mode 100644 java/com.sap.sailing.polars.test/src/com/sap/sailing/polars/test/PolarSheetGenerationTest.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregationWorker.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregator.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixRaceInterval.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/SimplePolarFixRaceInterval.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/BoatAndWindSpeedWithOriginInfo.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/DataPointWithOriginInfo.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/PolarFix.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/BoatAndWindSpeedWithOriginInfoImpl.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/DataPointWithOriginInfoImpl.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/PolarFixImpl.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetGenerator.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetHistogramBuilder.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAveragePolarClusterKey.java
     delete mode 100755 java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessor.java
     delete mode 100755 java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessorImpl.java
     delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/MovingAverageBoatSpeedEstimator.java
    
    diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polars/PolarDataService.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polars/PolarDataService.java
    index 4de45c1e63b..37817b4cbb5 100644
    --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polars/PolarDataService.java
    +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/polars/PolarDataService.java
    @@ -1,8 +1,6 @@
     package com.sap.sailing.domain.polars;
     
     import java.util.Set;
    -import java.util.concurrent.ExecutionException;
    -import java.util.concurrent.Executor;
     
     import org.apache.commons.math.analysis.polynomials.PolynomialFunction;
     
    @@ -14,8 +12,6 @@ import com.sap.sailing.domain.base.SpeedWithConfidence;
     import com.sap.sailing.domain.common.Bearing;
     import com.sap.sailing.domain.common.LegType;
     import com.sap.sailing.domain.common.ManeuverType;
    -import com.sap.sailing.domain.common.PolarSheetGenerationSettings;
    -import com.sap.sailing.domain.common.PolarSheetsData;
     import com.sap.sailing.domain.common.Speed;
     import com.sap.sailing.domain.common.Tack;
     import com.sap.sailing.domain.common.confidence.BearingWithConfidence;
    @@ -51,30 +47,6 @@ public interface PolarDataService {
          */
         SpeedWithConfidence getSpeed(BoatClass boatClass, Speed windSpeed, Bearing trueWindAngle)
                 throws NotEnoughDataHasBeenAddedException;
    -    
    -
    -    /**
    -     * Generates a polar sheet for given races and settings using the provided executor for the worker threads. This
    -     * method does not access a cache for now.
    -     * 
    -     * @param trackedRaces
    -     *            The set of races to generate the diagram for.
    -     * @param settings
    -     *            Settings as supplied by the user.
    -     * @param executor
    -     *            The executor to run the worker threads with.
    -     * @return The generated polar sheet with meta data.
    -     */
    -    PolarSheetsData generatePolarSheet(Set trackedRaces, PolarSheetGenerationSettings settings,
    -            Executor executor) throws InterruptedException, ExecutionException;
    -
    -    /**
    -     * 
    -     * @param boatClass
    -     *            The {@link BoatClass} to obtain the polar sheet for.
    -     * @return The polar sheet for all existing races of the {@link BoatClass}.
    -     */
    -    PolarSheetsData getPolarSheetForBoatClass(BoatClass boatClass);
     
         /**
          * 
    diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/PolarSheetGenerationServiceTest.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/PolarSheetGenerationServiceTest.java
    deleted file mode 100755
    index 0f3b6c8745e..00000000000
    --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/PolarSheetGenerationServiceTest.java
    +++ /dev/null
    @@ -1,239 +0,0 @@
    -package com.sap.sailing.gwt.ui.test;
    -
    -import java.util.ArrayList;
    -import java.util.HashSet;
    -import java.util.List;
    -import java.util.NavigableSet;
    -import java.util.Set;
    -import java.util.UUID;
    -import java.util.concurrent.ConcurrentSkipListSet;
    -
    -import junit.framework.Assert;
    -
    -import org.junit.Test;
    -
    -import com.sap.sailing.domain.base.BoatClass;
    -import com.sap.sailing.domain.base.Competitor;
    -import com.sap.sailing.domain.base.RaceDefinition;
    -import com.sap.sailing.domain.base.Waypoint;
    -import com.sap.sailing.domain.base.impl.BoatClassImpl;
    -import com.sap.sailing.domain.base.impl.BoatImpl;
    -import com.sap.sailing.domain.base.impl.CompetitorImpl;
    -import com.sap.sailing.domain.base.impl.CourseImpl;
    -import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
    -import com.sap.sailing.domain.base.impl.TeamImpl;
    -import com.sap.sailing.domain.base.impl.WaypointImpl;
    -import com.sap.sailing.domain.common.PolarSheetGenerationResponse;
    -import com.sap.sailing.domain.common.PolarSheetGenerationSettings;
    -import com.sap.sailing.domain.common.PolarSheetsData;
    -import com.sap.sailing.domain.common.Position;
    -import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
    -import com.sap.sailing.domain.common.RegattaNameAndRaceName;
    -import com.sap.sailing.domain.common.SpeedWithBearing;
    -import com.sap.sailing.domain.common.Wind;
    -import com.sap.sailing.domain.common.WindSource;
    -import com.sap.sailing.domain.common.WindSourceType;
    -import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
    -import com.sap.sailing.domain.common.impl.DegreePosition;
    -import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
    -import com.sap.sailing.domain.common.impl.PolarSheetGenerationSettingsImpl;
    -import com.sap.sailing.domain.common.impl.WindImpl;
    -import com.sap.sailing.domain.common.impl.WindSourceImpl;
    -import com.sap.sailing.domain.common.impl.WindSpeedSteppingWithMaxDistance;
    -import com.sap.sailing.domain.common.tracking.GPSFixMoving;
    -import com.sap.sailing.domain.common.tracking.impl.GPSFixMovingImpl;
    -import com.sap.sailing.domain.tracking.DynamicGPSFixTrack;
    -import com.sap.sailing.domain.tracking.DynamicTrackedRace;
    -import com.sap.sailing.domain.tracking.MarkPassing;
    -import com.sap.sailing.domain.tracking.WindWithConfidence;
    -import com.sap.sailing.domain.tracking.impl.DynamicGPSFixMovingTrackImpl;
    -import com.sap.sailing.domain.tracking.impl.MarkPassingByTimeComparator;
    -import com.sap.sailing.domain.tracking.impl.MarkPassingImpl;
    -import com.sap.sailing.domain.tracking.impl.WindWithConfidenceImpl;
    -import com.sap.sailing.gwt.ui.client.SailingService;
    -import com.sap.sailing.server.RacingEventService;
    -import com.sap.sailing.server.impl.RacingEventServiceImpl;
    -import com.sap.sse.common.Color;
    -import com.sap.sse.common.TimePoint;
    -import com.sap.sse.common.impl.MillisecondsTimePoint;
    -
    -public class PolarSheetGenerationServiceTest {
    -    
    -    private static final String BOAT_CLASS = "Forelle";
    -    
    -    @Test
    -    public void testPolarSheetGenerationService() throws Exception {
    -         
    -        SailingService service = new MockSailingServiceForPolarSheetGeneration();
    -
    -        double[] levels = { 4., 6., 8., 10., 12., 14., 16., 20., 25., 30. };
    -        WindSpeedSteppingWithMaxDistance windStepping = new WindSpeedSteppingWithMaxDistance(levels, 2.0);
    -        PolarSheetGenerationSettings settings = new PolarSheetGenerationSettingsImpl(1, 0, 1, 20, 0, false, true, 5,
    -                0.05, false, windStepping, false, 0);
    -        
    -        List idList = new ArrayList();
    -        idList.add(new RegattaNameAndRaceName("IrgendeineRegatta", "IrgendeinRennen"));
    -        
    -        PolarSheetGenerationResponse triggerData = service.generatePolarSheetForRaces(idList, settings, "");
    -        Assert.assertNotNull(triggerData);
    -        Assert.assertEquals(BOAT_CLASS, triggerData.getName());
    -        Assert.assertNotNull(triggerData.getId());
    -        
    -        PolarSheetsData results = triggerData.getData();
    -        
    -        Assert.assertNotNull(results);
    -        
    -        Assert.assertEquals(4, results.getDataCount());
    -        Assert.assertEquals(4.0, results.getAveragedPolarDataByWindSpeed()[0][45]);
    -        Assert.assertEquals(2.0, results.getAveragedPolarDataByWindSpeed()[0][55]);
    -        Assert.assertEquals(6.0, results.getAveragedPolarDataByWindSpeed()[0][35]);
    -        
    -    }
    -    
    -    
    -    @SuppressWarnings("serial")
    -    private class MockSailingServiceForPolarSheetGeneration extends SailingServiceImplMock {
    -        @Override
    -        protected RacingEventService getService() {
    -            RacingEventService service = new MockRacingEventServiceForPolarSheetGeneration();
    -            return service;
    -        }
    -    }
    -    
    -    private class MockRacingEventServiceForPolarSheetGeneration extends RacingEventServiceImpl {
    -        
    -        @Override
    -        public DynamicTrackedRace getTrackedRace(RegattaAndRaceIdentifier raceIdentifier) {
    -            MockTrackedRaceForPolarSheetGeneration trackedRace = new MockTrackedRaceForPolarSheetGeneration();
    -            return trackedRace;
    -        }
    -        
    -    }
    -    
    -    @SuppressWarnings("serial")
    -    private class MockTrackedRaceForPolarSheetGeneration extends MockedTrackedRace {
    -        @Override
    -        public DynamicGPSFixTrack getTrack(Competitor competitor) {
    -            DynamicGPSFixTrack track = new MockDynamicGPSFixMovinTrackForPolarSheetGeneration(competitor, 0);
    -            //Before start
    -            track.addGPSFix(new MockGPSFixMovingForPolarSheetGeneration(new DegreePosition(0.009, 0.009), new MillisecondsTimePoint(3), new KnotSpeedWithBearingImpl(12.0, new DegreeBearingImpl(-45.0))));
    -            //Race
    -            track.addGPSFix(new MockGPSFixMovingForPolarSheetGeneration(new DegreePosition(1.0, 1.0), new MillisecondsTimePoint(10), new KnotSpeedWithBearingImpl(3.0, new DegreeBearingImpl(-45.0))));
    -            track.addGPSFix(new MockGPSFixMovingForPolarSheetGeneration(new DegreePosition(1.001, 1.001), new MillisecondsTimePoint(11), new KnotSpeedWithBearingImpl(5.0, new DegreeBearingImpl(-45.0))));
    -            track.addGPSFix(new MockGPSFixMovingForPolarSheetGeneration(new DegreePosition(1.002, 1.002), new MillisecondsTimePoint(12), new KnotSpeedWithBearingImpl(2.0, new DegreeBearingImpl(-55.0))));
    -            track.addGPSFix(new MockGPSFixMovingForPolarSheetGeneration(new DegreePosition(1.003, 1.003), new MillisecondsTimePoint(13), new KnotSpeedWithBearingImpl(6.0, new DegreeBearingImpl(-35.0))));
    -            //After Finish
    -            track.addGPSFix(new MockGPSFixMovingForPolarSheetGeneration(new DegreePosition(1.01, 1.01), new MillisecondsTimePoint(75), new KnotSpeedWithBearingImpl(12.0, new DegreeBearingImpl(-45.0))));
    -            return track;
    -        }
    -        
    -        @Override
    -        public Wind getWind(Position p, TimePoint at) {
    -            Wind wind = new WindImpl(p, at, new KnotSpeedWithBearingImpl(2.0, new DegreeBearingImpl(180.0)));
    -            return wind;
    -        }
    -        
    -        @Override
    -        public Wind getWind(Position p, TimePoint at, Set windSourcesToExclude) {
    -            return getWind(p, at);
    -        }
    -        
    -        @Override
    -        public WindWithConfidence> getWindWithConfidence(Position p, TimePoint at) {
    -            return new WindWithConfidenceImpl>(new WindImpl(p, at,
    -                    new KnotSpeedWithBearingImpl(2.0, new DegreeBearingImpl(180.0))), 0.9,
    -                    new com.sap.sse.common.Util.Pair(p, at), true);
    -        }
    -        
    -        @Override
    -        public WindWithConfidence> getWindWithConfidence(Position p, TimePoint at,
    -                Set windSourcesToExclude) {
    -            return getWindWithConfidence(p, at);
    -        }
    -        
    -        @Override
    -        public RaceDefinition getRace() {
    -            BoatClass forelle = new BoatClassImpl("Forelle", true);
    -            ArrayList waypoints = new ArrayList();
    -            waypoints.add(new WaypointImpl(null));
    -            waypoints.add(new WaypointImpl(null));
    -            waypoints.add(new WaypointImpl(null));
    -            waypoints.add(new WaypointImpl(null));
    -            waypoints.add(new WaypointImpl(null));
    -            waypoints.add(new WaypointImpl(null));
    -            waypoints.add(new WaypointImpl(null));
    -            ArrayList competitors = new ArrayList();
    -            Competitor competitor = new CompetitorImpl(UUID.randomUUID(), "Hans Frantz", Color.RED, null, null, 
    -                    new TeamImpl("SAP", null, null), new BoatImpl("Schnelle Forelle", forelle, "GER000"), /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null);
    -            competitors.add(competitor);
    -            RaceDefinition race = new RaceDefinitionImpl("Forelle1", new CourseImpl("ForelleCourse", waypoints), forelle, competitors);
    -            return race;
    -        }
    -        
    -        @Override
    -        public NavigableSet getMarkPassings(Competitor competitor) {
    -            NavigableSet passings = new ConcurrentSkipListSet(
    -                    MarkPassingByTimeComparator.INSTANCE);
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(10), null, competitor));
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(20), null, competitor));
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(30), null, competitor));
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(40), null, competitor));
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(50), null, competitor));
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(60), null, competitor));
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(70), null, competitor));
    -            return passings;
    -        }
    -        
    -        @Override
    -        public Set getWindSources(WindSourceType type) {
    -            Set sources = new HashSet();
    -            sources.add(new WindSourceImpl(type));
    -            return sources;
    -        }
    -        
    -        @Override
    -        public TimePoint getStartOfRace() {
    -            return new MillisecondsTimePoint(9);
    -        }
    -        
    -        @Override
    -        public TimePoint getEndOfRace() {
    -            return new MillisecondsTimePoint(80);
    -        };
    -    }
    -    
    -    @SuppressWarnings("serial")
    -    private class MockGPSFixMovingForPolarSheetGeneration extends GPSFixMovingImpl {
    -
    -        public MockGPSFixMovingForPolarSheetGeneration(Position position, TimePoint timePoint, SpeedWithBearing speed) {
    -            super(position, timePoint, speed);
    -        }
    -        
    -        @Override
    -        public boolean isValidCached() {
    -            return true;
    -        }
    -        
    -    }
    -    
    -    @SuppressWarnings("serial")
    -    private class MockDynamicGPSFixMovinTrackForPolarSheetGeneration extends DynamicGPSFixMovingTrackImpl {
    -
    -        public MockDynamicGPSFixMovinTrackForPolarSheetGeneration(ItemType trackedItem,
    -                long millisecondsOverWhichToAverage) {
    -            super(trackedItem, millisecondsOverWhichToAverage);
    -        }
    -        
    -        @Override
    -        protected boolean isValid(NavigableSet rawFixes, GPSFixMoving e) {
    -            return true;
    -        }
    -        
    -        @Override
    -        public SpeedWithBearing getEstimatedSpeed(TimePoint at) {
    -            return this.getFirstFixAtOrAfter(at).getSpeed();
    -        }
    -        
    -    }
    -
    -}
    diff --git a/java/com.sap.sailing.gwt.ui/PolarSheets.css b/java/com.sap.sailing.gwt.ui/PolarSheets.css
    deleted file mode 100644
    index e94192e52cb..00000000000
    --- a/java/com.sap.sailing.gwt.ui/PolarSheets.css
    +++ /dev/null
    @@ -1,128 +0,0 @@
    -/** Add css rules here for your application. */
    -/*
    -    body #calendar:after
    -      content: " ";
    -      display: block;
    -      height: 0;
    -      clear: both;
    -      visibility: hidden;
    -*/
    -
    -.clear {
    -  clear: both;
    -  font-size: 1px;
    -  height: 0px;
    -  line-height: 0px;
    -  margin: -1px 0 0;
    -  width: 100%; }
    -
    -.cover {
    -  left: -1000px;
    -  overflow: hidden;
    -  position: absolute;
    -  top: -1000px; }
    -
    -body {
    -	background: #fff;
    -	font-family: 'Open Sans', Arial, Verdana, sans-serif;
    -	line-height: 1;
    -	font-size: 14px;
    -	font-weight: 400;
    -	padding: 85px 0 120px 0;
    -	margin: 0;
    -  }
    -
    -/** Example rules used by the template application (remove for your app) */
    -h1 {
    -  font-size: 2em;
    -  font-weight: bold;
    -  color: #777777;
    -  margin: 40px 0px 70px;
    -  text-align: center;
    -  }
    -
    -table {
    -  border-collapse: separate; }
    -
    -.leaderboardMargin {
    -	margin: 5px;
    -}
    -
    -.leaderboardContent {
    -}
    -
    -.leaderboardContent td, .leaderboardContent th {
    -	vertical-align: bottom;
    -	line-height: 1.3;
    -	padding-top: 2px;
    -}
    -
    -.leaderboardContent-toolbar {
    -
    -}
    -
    -.leaderboardLabel {
    -  border-bottom: 2px solid #007dc0;
    -  font-weight: bold;
    -  margin: 5px;
    - }
    -
    -.refreshAndSettings {
    -  background: #f2f2f2;
    -  border-bottom: 2px solid #fff;
    -  border-top: 2px solid #fff;
    -  height: 30px; }
    -
    -.refreshAndSettings table td {
    -    padding: 0 10px 0 0;}
    -
    -.refreshAndSettings table table td{
    -    padding: 0 0 0 0;}
    -
    -input.magnifier{
    -	display: block;
    -	margin: 3px auto 0 auto !important;
    -}
    -
    -body, table td, select, button {
    -    font-family: 'Open Sans', Arial, Verdana, sans-serif;
    -    font-weight: 300;
    -    font-size: 14px;
    -}
    -
    -.errorLabel {
    -	color: #FF0000;
    -}
    -
    -.abstractChartPanel-importantMessageOfChart {
    -    font-family: 'Open Sans',Arial,Verdana,sans-serif;
    -    font-weight: 600;
    -    font-size: 20px;
    -    height: 70px;
    -    margin: 0 auto;
    -    padding: 49px 0 0 80px;
    -    width: 300px;
    -    color: #7c7c7c;
    -	background: url(images/important-message.png) left center no-repeat;
    -}
    -
    -.LeaderboardHeader {
    -	position: relative;
    -	margin: 0 auto;
    -	width: 400px;
    -	text-align: center;
    -	font-family: 'Open Sans', Arial, Verdana, sans-serif;
    -	font-size: 18px;
    -	color: #fff;
    -	margin-top: 22px;
    -}
    -
    -.leaderboardHeading {
    -	font-size: 16px;
    -	font-family: 'Open Sans', Arial, Verdana, sans-serif;
    -	font-weight: bold;
    -}
    -
    -.gwt-DialogBox {
    -	z-index: 20;
    -}
    diff --git a/java/com.sap.sailing.gwt.ui/PolarSheets.html b/java/com.sap.sailing.gwt.ui/PolarSheets.html
    deleted file mode 100644
    index 8449145b9f7..00000000000
    --- a/java/com.sap.sailing.gwt.ui/PolarSheets.html
    +++ /dev/null
    @@ -1,33 +0,0 @@
    -
    -
    -
    -  
    -    
    -    SAP Sailing Analytics Polar Sheets
    -    
    -    
    -    
    -    
    -    
    -	
    -    
    -    
    -    
    -    
    -  
    -
    -    
    -  
    -
    -  
    -  
    -    
    -    
    -    
    -  
    -
    diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch
    index a3aff4a0ab3..47ba9bdd69b 100755
    --- a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch	
    +++ b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling (Run-Mode only).launch	
    @@ -56,7 +56,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch
    index eae6162cfdb..42cb71a2d96 100644
    --- a/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch	
    +++ b/java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch	
    @@ -11,7 +11,6 @@
     
     
     
    -
     
     
     
    @@ -74,7 +73,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch
    index c498593f424..e2cdc9e0df7 100755
    --- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch
    +++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch
    @@ -10,7 +10,6 @@
     
     
     
    -
     
     
     
    @@ -72,7 +71,7 @@
     
     
     
    -
    +
     
     
     
    diff --git a/java/com.sap.sailing.gwt.ui/build.properties b/java/com.sap.sailing.gwt.ui/build.properties
    index 75618842ba3..9a0247eb1d6 100644
    --- a/java/com.sap.sailing.gwt.ui/build.properties
    +++ b/java/com.sap.sailing.gwt.ui/build.properties
    @@ -21,7 +21,6 @@ bin.includes = META-INF/,\
                    RaceBoard.html,\
                    Spectator.html,\
                    com.sap.sailing.gwt.ui.Spectator/,\
    -               com.sap.sailing.gwt.ui.PolarSheets/,\
                    com.sap.sailing.gwt.ui.RaceBoard/,\
                    Spectator.css,\
                    com.sap.sailing.gwt.ui.Simulator/,\
    @@ -35,8 +34,6 @@ bin.includes = META-INF/,\
                    com.sap.sailing.gwt.ui.YoutubePopup/,\
                    YoutubePopup.html,\
                    BrowserUnsupported.html,\
    -               PolarSheets.css,\
    -               PolarSheets.html,\
                    com.sap.sailing.gwt.ui.DataMining/,\
                    DataMining.css,\
                    DataMining.html,\
    diff --git a/java/com.sap.sailing.gwt.ui/pom.xml b/java/com.sap.sailing.gwt.ui/pom.xml
    index 7585839ee56..d51dd03da2b 100755
    --- a/java/com.sap.sailing.gwt.ui/pom.xml
    +++ b/java/com.sap.sailing.gwt.ui/pom.xml
    @@ -163,7 +163,6 @@
                     com.sap.sailing.gwt.ui.YoutubePopup
                     com.sap.sailing.gwt.ui.Simulator
                     com.sap.sailing.gwt.regattaoverview.RegattaOverview
    -                com.sap.sailing.gwt.ui.PolarSheets
                   
                   
    -	
    -
    -	
    -
    -	
    -	
    -
    -	
    -	
    -  	
    -	
    -  	
    -	
    -	
    -
    -	
    -   	
    -	    
    -   	
    -	
    -   	
    -  	
    -  	
    -  	
    -  	
    -  	
    -	
    -	
    -	
    -	
    -	
    -	
    -		
    -	
    -	
    -
    \ No newline at end of file
    diff --git a/java/com.sap.sailing.polars.test/src/com/sap/sailing/polars/test/PolarSheetGenerationTest.java b/java/com.sap.sailing.polars.test/src/com/sap/sailing/polars/test/PolarSheetGenerationTest.java
    deleted file mode 100644
    index 2a95da4b34b..00000000000
    --- a/java/com.sap.sailing.polars.test/src/com/sap/sailing/polars/test/PolarSheetGenerationTest.java
    +++ /dev/null
    @@ -1,315 +0,0 @@
    -package com.sap.sailing.polars.test;
    -
    -import java.util.ArrayList;
    -import java.util.HashMap;
    -import java.util.HashSet;
    -import java.util.List;
    -import java.util.Map;
    -import java.util.NavigableSet;
    -import java.util.Set;
    -import java.util.UUID;
    -import java.util.concurrent.ConcurrentSkipListSet;
    -import java.util.concurrent.ExecutionException;
    -import java.util.concurrent.Executor;
    -import java.util.concurrent.LinkedBlockingQueue;
    -import java.util.concurrent.ThreadPoolExecutor;
    -import java.util.concurrent.TimeUnit;
    -
    -import org.junit.Assert;
    -import org.junit.Test;
    -
    -import com.sap.sailing.domain.base.BoatClass;
    -import com.sap.sailing.domain.base.Competitor;
    -import com.sap.sailing.domain.base.RaceDefinition;
    -import com.sap.sailing.domain.base.Waypoint;
    -import com.sap.sailing.domain.base.impl.BoatClassImpl;
    -import com.sap.sailing.domain.base.impl.BoatImpl;
    -import com.sap.sailing.domain.base.impl.CompetitorImpl;
    -import com.sap.sailing.domain.base.impl.CourseImpl;
    -import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
    -import com.sap.sailing.domain.base.impl.TeamImpl;
    -import com.sap.sailing.domain.base.impl.WaypointImpl;
    -import com.sap.sailing.domain.common.PolarSheetGenerationSettings;
    -import com.sap.sailing.domain.common.PolarSheetsData;
    -import com.sap.sailing.domain.common.PolarSheetsHistogramData;
    -import com.sap.sailing.domain.common.Position;
    -import com.sap.sailing.domain.common.SpeedWithBearing;
    -import com.sap.sailing.domain.common.Wind;
    -import com.sap.sailing.domain.common.WindSource;
    -import com.sap.sailing.domain.common.WindSourceType;
    -import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
    -import com.sap.sailing.domain.common.impl.DegreePosition;
    -import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
    -import com.sap.sailing.domain.common.impl.PolarSheetGenerationSettingsImpl;
    -import com.sap.sailing.domain.common.impl.WindImpl;
    -import com.sap.sailing.domain.common.impl.WindSourceImpl;
    -import com.sap.sailing.domain.common.impl.WindSpeedSteppingWithMaxDistance;
    -import com.sap.sailing.domain.common.tracking.GPSFixMoving;
    -import com.sap.sailing.domain.common.tracking.impl.GPSFixMovingImpl;
    -import com.sap.sailing.domain.test.mock.MockedTrackedRace;
    -import com.sap.sailing.domain.tracking.DynamicGPSFixTrack;
    -import com.sap.sailing.domain.tracking.MarkPassing;
    -import com.sap.sailing.domain.tracking.TrackedRace;
    -import com.sap.sailing.domain.tracking.WindWithConfidence;
    -import com.sap.sailing.domain.tracking.impl.DynamicGPSFixMovingTrackImpl;
    -import com.sap.sailing.domain.tracking.impl.MarkPassingByTimeComparator;
    -import com.sap.sailing.domain.tracking.impl.MarkPassingImpl;
    -import com.sap.sailing.domain.tracking.impl.WindWithConfidenceImpl;
    -import com.sap.sailing.polars.aggregation.PolarFixAggregationWorker;
    -import com.sap.sailing.polars.aggregation.PolarFixAggregator;
    -import com.sap.sailing.polars.aggregation.SimplePolarFixRaceInterval;
    -import com.sap.sailing.polars.data.DataPointWithOriginInfo;
    -import com.sap.sailing.polars.data.PolarFix;
    -import com.sap.sailing.polars.data.impl.DataPointWithOriginInfoImpl;
    -import com.sap.sailing.polars.generation.PolarSheetGenerator;
    -import com.sap.sailing.polars.generation.PolarSheetHistogramBuilder;
    -import com.sap.sse.common.Color;
    -import com.sap.sse.common.TimePoint;
    -import com.sap.sse.common.impl.MillisecondsTimePoint;
    -
    -public class PolarSheetGenerationTest {
    -    
    -    @Test
    -    public void testPolarSheetRawDataGeneration() throws InterruptedException, ExecutionException {
    -        Executor executor = new ThreadPoolExecutor(/* corePoolSize */Runtime.getRuntime().availableProcessors(),
    -        /* maximumPoolSize */Runtime.getRuntime().availableProcessors(),
    -        /* keepAliveTime */60, TimeUnit.SECONDS,
    -        /* workQueue */new LinkedBlockingQueue());
    -
    -        MockTrackedRaceForPolarSheetGeneration race = new MockTrackedRaceForPolarSheetGeneration();
    -        
    -        double[] levels = { 4., 6., 8., 10., 12., 14., 16., 20., 25., 30. };
    -        WindSpeedSteppingWithMaxDistance windStepping = new WindSpeedSteppingWithMaxDistance(levels, 2.0);
    -        PolarSheetGenerationSettings settings = new PolarSheetGenerationSettingsImpl(1, 0, 1, 20, 0, false, true, 5,
    -                0.05, false, windStepping, false, 0);
    -        
    -        TimePoint startTime = new MillisecondsTimePoint(9);
    -        TimePoint endTime = new MillisecondsTimePoint(80);
    -        // Only used for storing and exporting results in this test case:
    -        PolarFixAggregator resultContainer = new PolarFixAggregator(new SimplePolarFixRaceInterval(
    -                new HashSet()),
    -                settings, executor);
    -
    -        BoatClass forelle = new BoatClassImpl("Forelle", true);
    -        Competitor competitor = new CompetitorImpl(UUID.randomUUID(), "Hans Frantz", Color.RED, null, null, 
    -                new TeamImpl("SAP", null, null), new BoatImpl("Schnelle Forelle", forelle, "GER000"), /* timeOnTimeFactor */ null, /* timeOnDistanceAllowancePerNauticalMile */ null);
    -
    -        PolarFixAggregationWorker task = new PolarFixAggregationWorker(race,
    - resultContainer, startTime, endTime,
    -                competitor, settings, null);
    -  
    -        executor.execute(task);
    -        double timeUntilTimeout = 1000;
    -        while (!task.isDone() && timeUntilTimeout > 0) {
    -            Thread.sleep(100);
    -            timeUntilTimeout = timeUntilTimeout - 0.1;
    -        }
    -
    -        Set fixes = resultContainer.getAggregationResultAsSingleList();
    -        
    -        PolarSheetGenerator generator = new PolarSheetGenerator(fixes, settings);
    -        PolarSheetsData data = generator.generate();
    -        Assert.assertEquals(4, data.getDataCount());
    -        Assert.assertEquals(4.0, data.getAveragedPolarDataByWindSpeed()[0][45]);
    -        Assert.assertEquals(2.0, data.getAveragedPolarDataByWindSpeed()[0][55]);
    -        Assert.assertEquals(6.0, data.getAveragedPolarDataByWindSpeed()[0][35]);
    -        
    -    }
    -    
    -    @Test
    -    public void testHistogramBuilder() {
    -        double[] levels = { 4., 6., 8., 10., 12., 14., 16., 20., 25., 30. };
    -        WindSpeedSteppingWithMaxDistance windStepping = new WindSpeedSteppingWithMaxDistance(levels, 2.0);
    -        PolarSheetGenerationSettings settings = new PolarSheetGenerationSettingsImpl(1, 0, 1, 10, 0, false, true, 5,
    -                0.05, false, windStepping, false, 0);
    -        PolarSheetHistogramBuilder builder = new PolarSheetHistogramBuilder(settings);
    -        
    -        
    -        List rawData = new ArrayList();
    -        rawData.add(new DataPointWithOriginInfoImpl(1.09, "", ""));
    -        rawData.add(new DataPointWithOriginInfoImpl(1.0, "", ""));
    -        rawData.add(new DataPointWithOriginInfoImpl(1.11, "", ""));
    -        rawData.add(new DataPointWithOriginInfoImpl(1.46, "", ""));
    -        rawData.add(new DataPointWithOriginInfoImpl(1.56, "", ""));
    -        rawData.add(new DataPointWithOriginInfoImpl(2.05, "", ""));
    -        rawData.add(new DataPointWithOriginInfoImpl(2.09, "", ""));
    -        rawData.add(new DataPointWithOriginInfoImpl(3.0, "", ""));
    -        rawData.add(new DataPointWithOriginInfoImpl(2.999, "", ""));
    -        PolarSheetsHistogramData result = builder.build(rawData, 0, 0);
    -        Number[] xValues = result.getxValues();
    -        Assert.assertEquals(10, xValues.length);
    -        Assert.assertTrue(xValues[4].doubleValue() > 1.9 - 0.001 && xValues[4].doubleValue() < 1.9 + 0.001);
    -        Number[] yValues = result.getyValues();
    -        Assert.assertEquals(10, yValues.length);
    -        Assert.assertEquals(3, yValues[0]);
    -        Assert.assertEquals(0, yValues[1]);
    -        Assert.assertEquals(2, yValues[2]);
    -        Assert.assertEquals(2, yValues[9]);
    -    }
    -    
    -    @Test
    -    public void testOutlierNeighborhoodAlgorithm() {
    -        PolarSheetGenerationSettings settings = PolarSheetGenerationSettingsImpl.createStandardPolarSettings();
    -        List values = new ArrayList();
    -        values.add(new DataPointWithOriginInfoImpl(0., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        values.add(new DataPointWithOriginInfoImpl(20., "", ""));
    -        int[] count = new int[1];
    -        count[0] = values.size();
    -        Map> valuesInMap = new HashMap>();
    -        valuesInMap.put(0, values);
    -        double pct = PolarSheetGenerator.getNeighboorhoodSizePercentage(count, valuesInMap, 0, 0,
    -                new DataPointWithOriginInfoImpl(0.0, "", ""), settings);
    -
    -        Assert.assertTrue(pct < 0.05);
    -
    -        pct = PolarSheetGenerator.getNeighboorhoodSizePercentage(count, valuesInMap, 0, 2,
    -                new DataPointWithOriginInfoImpl(20.0, "", ""), settings);
    -  
    -        Assert.assertTrue(pct > 0.05);
    -        
    -    }
    -    
    -    
    -    @SuppressWarnings("serial")
    -    private class MockTrackedRaceForPolarSheetGeneration extends MockedTrackedRace {
    -        @Override
    -        public DynamicGPSFixTrack getTrack(Competitor competitor) {
    -            DynamicGPSFixTrack track = new MockDynamicGPSFixMovinTrackForPolarSheetGeneration(competitor, 0);
    -            //Before start
    -            track.addGPSFix(new MockGPSFixMovingForPolarSheetGeneration(new DegreePosition(0.009, 0.009), new MillisecondsTimePoint(3), new KnotSpeedWithBearingImpl(12.0, new DegreeBearingImpl(-45.0))));
    -            //Race
    -            track.addGPSFix(new MockGPSFixMovingForPolarSheetGeneration(new DegreePosition(1.0, 1.0), new MillisecondsTimePoint(10), new KnotSpeedWithBearingImpl(3.0, new DegreeBearingImpl(-45.0))));
    -            track.addGPSFix(new MockGPSFixMovingForPolarSheetGeneration(new DegreePosition(1.001, 1.001), new MillisecondsTimePoint(11), new KnotSpeedWithBearingImpl(5.0, new DegreeBearingImpl(-45.0))));
    -            track.addGPSFix(new MockGPSFixMovingForPolarSheetGeneration(new DegreePosition(1.002, 1.002), new MillisecondsTimePoint(12), new KnotSpeedWithBearingImpl(2.0, new DegreeBearingImpl(-55.0))));
    -            track.addGPSFix(new MockGPSFixMovingForPolarSheetGeneration(new DegreePosition(1.003, 1.003), new MillisecondsTimePoint(13), new KnotSpeedWithBearingImpl(6.0, new DegreeBearingImpl(-35.0))));
    -            //After Finish
    -            track.addGPSFix(new MockGPSFixMovingForPolarSheetGeneration(new DegreePosition(1.01, 1.01), new MillisecondsTimePoint(75), new KnotSpeedWithBearingImpl(12.0, new DegreeBearingImpl(-45.0))));
    -            return track;
    -        }
    -        
    -        @Override
    -        public Wind getWind(Position p, TimePoint at) {
    -            Wind wind = new WindImpl(p, at, new KnotSpeedWithBearingImpl(2.0, new DegreeBearingImpl(180.0)));
    -            return wind;
    -        }
    -        
    -        @Override
    -        public Wind getWind(Position p, TimePoint at, Set windSourcesToExclude) {
    -            return getWind(p, at);
    -        }
    -        
    -        @Override
    -        public WindWithConfidence> getWindWithConfidence(Position p, TimePoint at) {
    -            return new WindWithConfidenceImpl>(new WindImpl(p, at,
    -                    new KnotSpeedWithBearingImpl(2.0, new DegreeBearingImpl(180.0))), 0.9,
    -                    new com.sap.sse.common.Util.Pair(p, at), true);
    -        }
    -        
    -        @Override
    -        public WindWithConfidence> getWindWithConfidence(Position p, TimePoint at,
    -                Set windSourcesToExclude) {
    -            return getWindWithConfidence(p, at);
    -        }
    -        
    -        @Override
    -        public RaceDefinition getRace() {
    -            BoatClass forelle = new BoatClassImpl("Forelle", true);
    -            ArrayList waypoints = new ArrayList();
    -            waypoints.add(new WaypointImpl(null));
    -            waypoints.add(new WaypointImpl(null));
    -            waypoints.add(new WaypointImpl(null));
    -            waypoints.add(new WaypointImpl(null));
    -            waypoints.add(new WaypointImpl(null));
    -            waypoints.add(new WaypointImpl(null));
    -            waypoints.add(new WaypointImpl(null));
    -            RaceDefinition race = new RaceDefinitionImpl("Forelle1", new CourseImpl("ForelleCourse", waypoints), forelle, new ArrayList());
    -            return race;
    -        }
    -        
    -        @Override
    -        public NavigableSet getMarkPassings(Competitor competitor) {
    -            NavigableSet passings = new ConcurrentSkipListSet(
    -                    MarkPassingByTimeComparator.INSTANCE);
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(10), null, competitor));
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(20), null, competitor));
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(30), null, competitor));
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(40), null, competitor));
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(50), null, competitor));
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(60), null, competitor));
    -            passings.add(new MarkPassingImpl(new MillisecondsTimePoint(70), null, competitor));
    -            return passings;
    -        }
    -        
    -        @Override
    -        public Set getWindSources(WindSourceType type) {
    -            Set sources = new HashSet<>();
    -            sources.add(new WindSourceImpl(type));
    -            return sources;
    -        }
    -    }
    -    
    -    @SuppressWarnings("serial")
    -    private class MockGPSFixMovingForPolarSheetGeneration extends GPSFixMovingImpl {
    -
    -        public MockGPSFixMovingForPolarSheetGeneration(Position position, TimePoint timePoint, SpeedWithBearing speed) {
    -            super(position, timePoint, speed);
    -        }
    -        
    -        @Override
    -        public boolean isValidCached() {
    -            return true;
    -        }
    -        
    -    }
    -    
    -    @SuppressWarnings("serial")
    -    private class MockDynamicGPSFixMovinTrackForPolarSheetGeneration extends DynamicGPSFixMovingTrackImpl {
    -
    -        public MockDynamicGPSFixMovinTrackForPolarSheetGeneration(ItemType trackedItem,
    -                long millisecondsOverWhichToAverage) {
    -            super(trackedItem, millisecondsOverWhichToAverage);
    -        }
    -        
    -        @Override
    -        protected boolean isValid(NavigableSet rawFixes, GPSFixMoving e) {
    -            return true;
    -        }
    -        
    -        @Override
    -        public SpeedWithBearing getEstimatedSpeed(TimePoint at) {
    -            return this.getFirstFixAtOrAfter(at).getSpeed();
    -        }
    -        
    -    }
    -
    -}
    diff --git a/java/com.sap.sailing.polars/META-INF/MANIFEST.MF b/java/com.sap.sailing.polars/META-INF/MANIFEST.MF
    index 964acf9e30f..64b04cc4241 100644
    --- a/java/com.sap.sailing.polars/META-INF/MANIFEST.MF
    +++ b/java/com.sap.sailing.polars/META-INF/MANIFEST.MF
    @@ -7,7 +7,6 @@ Bundle-Vendor: SAP
     Bundle-RequiredExecutionEnvironment: JavaSE-1.8
     Bundle-ClassPath: .
     Export-Package: 
    - com.sap.sailing.polars.data,
      com.sap.sailing.polars.mining,
      com.sap.sailing.polars.regression,
      com.sap.sailing.polars.windestimation
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregationWorker.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregationWorker.java
    deleted file mode 100644
    index 1878d65ca0f..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregationWorker.java
    +++ /dev/null
    @@ -1,252 +0,0 @@
    -package com.sap.sailing.polars.aggregation;
    -
    -import java.util.ArrayList;
    -import java.util.Collection;
    -import java.util.HashSet;
    -import java.util.Iterator;
    -import java.util.List;
    -import java.util.NavigableSet;
    -import java.util.Set;
    -
    -import com.sap.sailing.domain.base.Competitor;
    -import com.sap.sailing.domain.common.PolarSheetGenerationSettings;
    -import com.sap.sailing.domain.common.Position;
    -import com.sap.sailing.domain.common.WindSource;
    -import com.sap.sailing.domain.common.WindSourceType;
    -import com.sap.sailing.domain.common.tracking.GPSFixMoving;
    -import com.sap.sailing.domain.tracking.GPSFixTrack;
    -import com.sap.sailing.domain.tracking.MarkPassing;
    -import com.sap.sailing.domain.tracking.TrackedRace;
    -import com.sap.sailing.domain.tracking.WindWithConfidence;
    -import com.sap.sailing.polars.data.PolarFix;
    -import com.sap.sailing.polars.data.impl.PolarFixImpl;
    -import com.sap.sse.common.TimePoint;
    -import com.sap.sse.common.Util.Pair;
    -
    -/**
    - * Iterates through the fixes of one competitor in one tracked race and fills the {@link PolarFixAggregator} with
    - * datapoints that are found for the speed of the boat and its angle to the wind
    - * 
    - * @author D054528 Frederik Petersen
    - * 
    - */
    -public class PolarFixAggregationWorker implements Runnable {
    -
    -    private final TrackedRace race;
    -
    -    private final PolarFixAggregator polarSheetGenerationWorker;
    -
    -    private TimePoint startTime;
    -
    -    private TimePoint endTime;
    -
    -    private final Competitor competitor;
    -
    -    private boolean noConfidence = false;
    -
    -    private boolean done = false;
    -
    -    private int finishedEarlyAtWaypoint = -1;
    -
    -    private PolarSheetGenerationSettings settings;
    -
    -    private Pair intervalBeginningAndEnd;
    -
    -    public PolarFixAggregationWorker(TrackedRace race, PolarFixAggregator polarSheetGenerationWorker,
    -            TimePoint startTime, TimePoint endTime, Competitor competitor, PolarSheetGenerationSettings settings,
    -            Pair intervalBeginningAndEnd) {
    -        super();
    -        this.race = race;
    -        this.polarSheetGenerationWorker = polarSheetGenerationWorker;
    -        this.startTime = startTime;
    -        this.endTime = endTime;
    -        this.competitor = competitor;
    -        this.settings = settings;
    -        this.intervalBeginningAndEnd = intervalBeginningAndEnd;
    -        optimizeStartTime();
    -        optimizeEndTime();
    -        checkIfRaceAborted();
    -        checkIfIntervalBeforeOrAfterRace();
    -    }
    -
    -    private void checkIfIntervalBeforeOrAfterRace() {
    -        if (intervalBeginningAndEnd != null) {
    -            TimePoint intervalStart = intervalBeginningAndEnd.getA();
    -            if (intervalStart.after(endTime)) {
    -                noConfidence = true;
    -            }
    -            TimePoint intervalEnd = intervalBeginningAndEnd.getB();
    -            if (intervalEnd.before(startTime)) {
    -                noConfidence = true;
    -            }
    -        }
    -    }
    -
    -    private void checkIfRaceAborted() {
    -        NavigableSet markPassings = race.getMarkPassings(competitor);
    -        if (markPassings == null || markPassings.size() < 1) {
    -            return;
    -        }
    -        if (markPassings.size() < race.getRace().getCourse().getLegs().size() + 1) {
    -            finishedEarlyAtWaypoint = markPassings.size() - 1;
    -        }
    -    }
    -
    -    private void optimizeEndTime() {
    -        NavigableSet markPassings = race.getMarkPassings(competitor);
    -        if (markPassings == null || markPassings.size() < 1) {
    -            return;
    -        }
    -        MarkPassing passedFinish = markPassings.last();
    -        TimePoint passedFinishTimePoint = passedFinish.getTimePoint();
    -        if (passedFinishTimePoint.before(endTime)) {
    -            endTime = passedFinishTimePoint;
    -        }
    -    }
    -
    -    private void optimizeStartTime() {
    -        NavigableSet markPassings = race.getMarkPassings(competitor);
    -        if (markPassings == null || markPassings.size() < 1) {
    -            noConfidence = true;
    -            return;
    -        }
    -        MarkPassing passedStart = markPassings.first();
    -        TimePoint passedStartTimePoint = passedStart.getTimePoint();
    -        if (passedStartTimePoint.after(startTime)) {
    -            startTime = passedStartTimePoint;
    -        }
    -    }
    -
    -    @Override
    -    public void run() {
    -        if (noConfidence || (finishedEarlyAtWaypoint != -1 && finishedEarlyAtWaypoint < 3)) {
    -            done = true;
    -        } else {
    -            GPSFixTrack track = race.getTrack(competitor);
    -            track.lockForRead();
    -            try {
    -                Iterator fixesIterator;
    -                if (intervalBeginningAndEnd != null) {
    -                    TimePoint startOfIntervalToCheck = intervalBeginningAndEnd.getA().before(startTime) ? startTime
    -                            : intervalBeginningAndEnd.getA();
    -                    TimePoint endOfIntervalToCheck = intervalBeginningAndEnd.getB().after(endTime) ? endTime
    -                            : intervalBeginningAndEnd.getB();
    -                    fixesIterator = track.getFixes(startOfIntervalToCheck, true, endOfIntervalToCheck, true).iterator();
    -                } else {
    -                    // No timepoint interval given
    -                    fixesIterator = track.getFixesIterator(startTime, true);
    -                }
    -                TimePoint lastConsideredTimePoint = null;
    -                if (finishedEarlyAtWaypoint != -1) {
    -                    NavigableSet markPassings = race.getMarkPassings(competitor);
    -                    MarkPassing lastConsideredPassing = markPassings.last();
    -                    lastConsideredPassing = markPassings.lower(lastConsideredPassing);
    -                    lastConsideredTimePoint = lastConsideredPassing.getTimePoint();
    -                }
    -                boolean reachedEnd = false;
    -                while (fixesIterator.hasNext() && reachedEnd == false) {
    -                    GPSFixMoving fix = fixesIterator.next();
    -                    if (fix.getTimePoint().after(endTime)
    -                            || (lastConsideredTimePoint != null && fix.getTimePoint().after(lastConsideredTimePoint))) {
    -                        reachedEnd = true;
    -                    } else {
    -                        addFixIfValid(track, fix);
    -                    }
    -                }
    -            } finally {
    -                track.unlockAfterRead();
    -                done = true;
    -            }
    -        }
    -    }
    -
    -    private void addFixIfValid(GPSFixTrack track, GPSFixMoving fix) {
    -        if (!track.hasDirectionChange(fix.getTimePoint(), race.getRace().getBoatClass()
    -                .getManeuverDegreeAngleThreshold())) {
    -            List>>> windWithConfidenceList = new ArrayList>>>();
    -            if (settings.useOnlyWindGaugesForWindSpeed()) {
    -                if (settings.splitByWindgauges()) {
    -                    windWithConfidenceList.addAll(addAllWindsOfWindGaugesSplitOneByOne(fix));
    -                } else {
    -                    windWithConfidenceList.add(new Pair>>(
    -                            createWindGaugesString(race), race.getWindWithConfidence(fix.getPosition(),
    -                                    fix.getTimePoint(), collectWindSourcesToIgnoreForSpeed())));
    -                }
    -            } else {
    -                windWithConfidenceList.add(new Pair>>("Combined",
    -                        race.getWindWithConfidence(fix.getPosition(), fix.getTimePoint())));
    -            }
    -
    -            for (Pair>> windWithSourceIdStringPair : windWithConfidenceList) {
    -                WindWithConfidence> windWithConfidence = windWithSourceIdStringPair.getB();
    -                if (windWithConfidence != null && windWithConfidence.useSpeed()
    -                        && windWithConfidence.getConfidence() >= settings.getMinimumWindConfidence()) {
    -                    PolarFix polarFix = new PolarFixImpl(fix, race, track, windWithConfidence.getObject(), settings,
    -                            windWithSourceIdStringPair.getA());
    -                    polarSheetGenerationWorker.addPolarFix(race.getRaceIdentifier(), polarFix);
    -                }
    -            }
    -        }
    -    }
    -
    -    private Collection>>> addAllWindsOfWindGaugesSplitOneByOne(
    -            GPSFixMoving fix) {
    -        Iterable windGaugeSources = race.getWindSources(WindSourceType.EXPEDITION);
    -        List>>> windWithConfidenceList = new ArrayList>>>();
    -        for (WindSource windGaugeSource : windGaugeSources) {
    -            Iterable allSources = race.getWindSources();
    -            Set allSourcesButTheSingleWindGaugeSource = new HashSet();
    -            for (WindSource windSource : allSources) {
    -                if (windSource != windGaugeSource) {
    -                    allSourcesButTheSingleWindGaugeSource.add(windSource);
    -                }
    -            }
    -            windWithConfidenceList.add(new Pair>>(windGaugeSource
    -                    .getId().toString(), race.getWindWithConfidence(fix.getPosition(), fix.getTimePoint(),
    -                    allSourcesButTheSingleWindGaugeSource)));
    -        }
    -        return windWithConfidenceList;
    -    }
    -
    -    private String createWindGaugesString(TrackedRace race) {
    -        Iterable gaugeWindSources = race.getWindSources(WindSourceType.EXPEDITION);
    -        String gaugeIdString = "";
    -        for (WindSource source : gaugeWindSources) {
    -            if (gaugeIdString.isEmpty()) {
    -                gaugeIdString = "" + source.getId();
    -            } else {
    -                gaugeIdString = gaugeIdString + "+" + source.getId();
    -            }
    -        }
    -        return gaugeIdString;
    -    }
    -
    -    public boolean isDone() {
    -        return done;
    -    }
    -
    -    private Set collectWindSourcesToIgnoreForSpeed() {
    -        Set windSourcesToExclude = new HashSet();
    -        Iterable combinedSources = race.getWindSources(WindSourceType.COMBINED);
    -        for (WindSource combinedSource : combinedSources) {
    -            windSourcesToExclude.add(combinedSource);
    -        }
    -        Iterable courseSources = race.getWindSources(WindSourceType.COURSE_BASED);
    -        for (WindSource courseSource : courseSources) {
    -            windSourcesToExclude.add(courseSource);
    -        }
    -        Iterable trackBasedSources = race.getWindSources(WindSourceType.TRACK_BASED_ESTIMATION);
    -        for (WindSource trackBasedSource : trackBasedSources) {
    -            windSourcesToExclude.add(trackBasedSource);
    -        }
    -        Iterable rcSources = race.getWindSources(WindSourceType.RACECOMMITTEE);
    -        for (WindSource rcSource : rcSources) {
    -            windSourcesToExclude.add(rcSource);
    -        }
    -        Iterable webSources = race.getWindSources(WindSourceType.WEB);
    -        for (WindSource webSource : webSources) {
    -            windSourcesToExclude.add(webSource);
    -        }
    -        return windSourcesToExclude;
    -    }
    -}
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregator.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregator.java
    deleted file mode 100644
    index ab1e99e2bd4..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixAggregator.java
    +++ /dev/null
    @@ -1,168 +0,0 @@
    -package com.sap.sailing.polars.aggregation;
    -
    -import java.util.ArrayList;
    -import java.util.HashMap;
    -import java.util.HashSet;
    -import java.util.List;
    -import java.util.Map;
    -import java.util.Map.Entry;
    -import java.util.Set;
    -import java.util.concurrent.ExecutionException;
    -import java.util.concurrent.Executor;
    -import java.util.concurrent.Future;
    -import java.util.concurrent.TimeUnit;
    -import java.util.concurrent.TimeoutException;
    -
    -import com.sap.sailing.domain.base.Competitor;
    -import com.sap.sailing.domain.base.RaceDefinition;
    -import com.sap.sailing.domain.common.PolarSheetGenerationSettings;
    -import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
    -import com.sap.sailing.domain.tracking.TrackedRace;
    -import com.sap.sailing.polars.data.PolarFix;
    -import com.sap.sse.common.TimePoint;
    -import com.sap.sse.common.Util.Pair;
    -
    -/**
    - * Allows extracting data about average speed for each angle creating the foundation of polar-sheet generation. Tasks
    - * are assigned to the executor per race & per competitor and the results are filled on the go to allow progress
    - * indication in the polar-sheet itself.
    - * 
    - * @author D054528 Frederik Petersen
    - * 
    - */
    -public class PolarFixAggregator implements Future>> {
    -
    -    private final Set workers;
    -
    -    private final Executor executor;
    -
    -    private final Map> fixes = new HashMap>();
    -
    -    /**
    -     * Will prepare the {@link PolarFixAggregationWorker}s per race & per competitor. This includes determining start
    -     * and end time.
    -     * 
    -     * @param updateInterval
    -     *            from which the data is to be collected
    -     * @param settings
    -     * @param executor
    -     *            executes the tasks upon {@link #startPolarFixAggregation()}
    -     */
    -    public PolarFixAggregator(PolarFixRaceInterval updateInterval, PolarSheetGenerationSettings settings,
    -            Executor executor) {
    -        this.executor = executor;
    -        workers = new HashSet();
    -        for (Entry>> entry : updateInterval
    -                .getCompetitorAndTimepointsForRace().entrySet()) {
    -            TrackedRace race = entry.getKey();
    -            TimePoint startTime = race.getStartOfRace();
    -            TimePoint endTime = race.getEndOfRace();
    -            if (endTime == null) {
    -                endTime = race.getTimePointOfNewestEvent();
    -            }
    -            RaceDefinition raceDefinition = race.getRace();
    -
    -            Map> detailedInterval = entry.getValue();
    -            if (detailedInterval == null) {
    -                Iterable competitors = raceDefinition.getCompetitors();
    -                for (Competitor competitor : competitors) {
    -                    PolarFixAggregationWorker task = new PolarFixAggregationWorker(race, this, startTime, endTime,
    -                            competitor, settings, null);
    -                    workers.add(task);
    -                }
    -            } else {
    -                for (Entry> competitorEntry : detailedInterval.entrySet()) {
    -                    Competitor competitor = competitorEntry.getKey();
    -                    Pair intervalBeginningAndEnd = competitorEntry.getValue();
    -                    PolarFixAggregationWorker task = new PolarFixAggregationWorker(race, this, startTime, endTime,
    -                            competitor, settings, intervalBeginningAndEnd);
    -                    workers.add(task);
    -                }
    -            }
    -
    -        }
    -    }
    -
    -    /**
    -     * Starts the {@link PolarFixAggregationWorker}s
    -     */
    -    public void startPolarFixAggregation() {
    -        for (Runnable task : workers) {
    -            executor.execute(task);
    -        }
    -    }
    -
    -    /**
    -     * To be called from {@link PolarFixAggregationWorker} for adding a datapoint to the list of results wind's speed in
    -     * knots
    -     */
    -    protected void addPolarFix(RegattaAndRaceIdentifier raceId, PolarFix polarFix) {
    -        synchronized (fixes) {
    -            List existingList = fixes.get(raceId);
    -            if (existingList == null) {
    -                existingList = new ArrayList();
    -                fixes.put(raceId, existingList);
    -            }
    -            existingList.add(polarFix);
    -        }
    -    }
    -
    -    private boolean allWorkersDone() {
    -        boolean complete = true;
    -        for (PolarFixAggregationWorker task : workers) {
    -            if (!task.isDone()) {
    -                complete = false;
    -                break;
    -            }
    -        }
    -        return complete;
    -    }
    -
    -    @Override
    -    public boolean cancel(boolean mayInterruptIfRunning) {
    -        return false;
    -    }
    -
    -    @Override
    -    public boolean isCancelled() {
    -        return false;
    -    }
    -
    -    @Override
    -    public boolean isDone() {
    -        return allWorkersDone();
    -    }
    -
    -    @Override
    -    public Map> get() throws InterruptedException, ExecutionException {
    -        while (!isDone()) {
    -            Thread.sleep(100);
    -        }
    -        return fixes;
    -    }
    -
    -    @Override
    -    public Map> get(long timeout, TimeUnit unit) throws InterruptedException,
    -            ExecutionException, TimeoutException {
    -        long timeRun = 0;
    -        long timeoutInMillis = unit.toMillis(timeout);
    -        while (!isDone() && timeRun < timeoutInMillis) {
    -            Thread.sleep(100);
    -            timeRun = timeRun + 100;
    -        }
    -        if (timeRun >= timeoutInMillis) {
    -            throw new TimeoutException();
    -        }
    -        return fixes;
    -    }
    -
    -    public Set getAggregationResultAsSingleList() throws InterruptedException, ExecutionException {
    -        Set fixes = new HashSet();
    -        Map> aggregationResult = get();
    -        for (List list : aggregationResult.values()) {
    -            fixes.addAll(list);
    -        }
    -        return fixes;
    -    }
    -
    -}
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixRaceInterval.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixRaceInterval.java
    deleted file mode 100644
    index 8c8c1a9ffc9..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/PolarFixRaceInterval.java
    +++ /dev/null
    @@ -1,14 +0,0 @@
    -package com.sap.sailing.polars.aggregation;
    -
    -import java.util.Map;
    -
    -import com.sap.sailing.domain.base.Competitor;
    -import com.sap.sailing.domain.tracking.TrackedRace;
    -import com.sap.sse.common.TimePoint;
    -import com.sap.sse.common.Util.Pair;
    -
    -public interface PolarFixRaceInterval {
    -
    -    Map>> getCompetitorAndTimepointsForRace();
    -
    -}
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/SimplePolarFixRaceInterval.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/SimplePolarFixRaceInterval.java
    deleted file mode 100644
    index 6f99bdff331..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/aggregation/SimplePolarFixRaceInterval.java
    +++ /dev/null
    @@ -1,28 +0,0 @@
    -package com.sap.sailing.polars.aggregation;
    -
    -import java.util.HashMap;
    -import java.util.Map;
    -import java.util.Set;
    -
    -import com.sap.sailing.domain.base.Competitor;
    -import com.sap.sailing.domain.tracking.TrackedRace;
    -import com.sap.sse.common.TimePoint;
    -import com.sap.sse.common.Util.Pair;
    -
    -public class SimplePolarFixRaceInterval implements PolarFixRaceInterval {
    -
    -    private final Map>> intervalMap;
    -
    -    public SimplePolarFixRaceInterval(Set races) {
    -        intervalMap = new HashMap>>();
    -        for (TrackedRace race : races) {
    -            intervalMap.put(race, null);
    -        }
    -    }
    -
    -    @Override
    -    public Map>> getCompetitorAndTimepointsForRace() {
    -        return intervalMap;
    -    }
    -
    -}
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/BoatAndWindSpeedWithOriginInfo.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/BoatAndWindSpeedWithOriginInfo.java
    deleted file mode 100644
    index 8293414e4f8..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/BoatAndWindSpeedWithOriginInfo.java
    +++ /dev/null
    @@ -1,15 +0,0 @@
    -package com.sap.sailing.polars.data;
    -
    -import com.sap.sailing.domain.common.Speed;
    -
    -public interface BoatAndWindSpeedWithOriginInfo {
    -
    -    public Speed getBoatSpeed();
    -
    -    public Speed getWindSpeed();
    -
    -    public String getWindGaugesIdString();
    -
    -    public String getDayString();
    -
    -}
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/DataPointWithOriginInfo.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/DataPointWithOriginInfo.java
    deleted file mode 100644
    index 9d8887e4064..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/DataPointWithOriginInfo.java
    +++ /dev/null
    @@ -1,11 +0,0 @@
    -package com.sap.sailing.polars.data;
    -
    -public interface DataPointWithOriginInfo extends Comparable {
    -
    -    public abstract Double getRawData();
    -
    -    public abstract String getWindGaugeIdString();
    -
    -    public abstract String getDayString();
    -
    -}
    \ No newline at end of file
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/PolarFix.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/PolarFix.java
    deleted file mode 100644
    index 3b0380d11be..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/PolarFix.java
    +++ /dev/null
    @@ -1,18 +0,0 @@
    -package com.sap.sailing.polars.data;
    -
    -import com.sap.sailing.domain.common.Speed;
    -import com.sap.sailing.domain.common.SpeedWithBearing;
    -
    -public interface PolarFix {
    -
    -    public abstract SpeedWithBearing getBoatSpeed();
    -
    -    public abstract Speed getWindSpeed();
    -
    -    public abstract double getTrueWindAngleDeg();
    -
    -    public abstract String getGaugeIdString();
    -
    -    public abstract String getDayString();
    -
    -}
    \ No newline at end of file
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/BoatAndWindSpeedWithOriginInfoImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/BoatAndWindSpeedWithOriginInfoImpl.java
    deleted file mode 100644
    index d9d7cccd76f..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/BoatAndWindSpeedWithOriginInfoImpl.java
    +++ /dev/null
    @@ -1,41 +0,0 @@
    -package com.sap.sailing.polars.data.impl;
    -
    -import com.sap.sailing.domain.common.Speed;
    -import com.sap.sailing.polars.data.BoatAndWindSpeedWithOriginInfo;
    -
    -public class BoatAndWindSpeedWithOriginInfoImpl implements BoatAndWindSpeedWithOriginInfo {
    -
    -    private Speed boatSpeed;
    -    private Speed windSpeed;
    -    private String windGaugesIdString;
    -    private String dayString;
    -
    -    public BoatAndWindSpeedWithOriginInfoImpl(Speed boatSpeed, Speed windSpeed, String windGaugesIdString,
    -            String dayString) {
    -        this.boatSpeed = boatSpeed;
    -        this.windSpeed = windSpeed;
    -        this.windGaugesIdString = windGaugesIdString;
    -        this.dayString = dayString;
    -    }
    -
    -    @Override
    -    public Speed getBoatSpeed() {
    -        return boatSpeed;
    -    }
    -
    -    @Override
    -    public Speed getWindSpeed() {
    -        return windSpeed;
    -    }
    -
    -    @Override
    -    public String getWindGaugesIdString() {
    -        return windGaugesIdString;
    -    }
    -
    -    @Override
    -    public String getDayString() {
    -        return dayString;
    -    }
    -
    -}
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/DataPointWithOriginInfoImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/DataPointWithOriginInfoImpl.java
    deleted file mode 100644
    index 680b667fdaf..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/DataPointWithOriginInfoImpl.java
    +++ /dev/null
    @@ -1,39 +0,0 @@
    -package com.sap.sailing.polars.data.impl;
    -
    -import com.sap.sailing.polars.data.DataPointWithOriginInfo;
    -
    -public class DataPointWithOriginInfoImpl implements DataPointWithOriginInfo {
    -
    -    private Double rawData;
    -
    -    private String windGaugeIdString;
    -
    -    private String dayString;
    -
    -    public DataPointWithOriginInfoImpl(Double rawData, String windGaugeIdString, String dayString) {
    -        this.rawData = rawData;
    -        this.windGaugeIdString = windGaugeIdString;
    -        this.dayString = dayString;
    -    }
    -
    -    @Override
    -    public Double getRawData() {
    -        return rawData;
    -    }
    -
    -    @Override
    -    public String getWindGaugeIdString() {
    -        return windGaugeIdString;
    -    }
    -
    -    @Override
    -    public String getDayString() {
    -        return dayString;
    -    }
    -
    -    @Override
    -    public int compareTo(DataPointWithOriginInfo o) {
    -        return getRawData().compareTo(o.getRawData());
    -    }
    -
    -}
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/PolarFixImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/PolarFixImpl.java
    deleted file mode 100644
    index 7b874d4e920..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/data/impl/PolarFixImpl.java
    +++ /dev/null
    @@ -1,122 +0,0 @@
    -package com.sap.sailing.polars.data.impl;
    -
    -import java.text.SimpleDateFormat;
    -import java.util.HashSet;
    -import java.util.Set;
    -
    -import com.sap.sailing.domain.base.Competitor;
    -import com.sap.sailing.domain.common.Bearing;
    -import com.sap.sailing.domain.common.PolarSheetGenerationSettings;
    -import com.sap.sailing.domain.common.Position;
    -import com.sap.sailing.domain.common.Speed;
    -import com.sap.sailing.domain.common.SpeedWithBearing;
    -import com.sap.sailing.domain.common.Wind;
    -import com.sap.sailing.domain.common.WindSource;
    -import com.sap.sailing.domain.common.WindSourceType;
    -import com.sap.sailing.domain.common.tracking.GPSFixMoving;
    -import com.sap.sailing.domain.tracking.GPSFixTrack;
    -import com.sap.sailing.domain.tracking.TrackedRace;
    -import com.sap.sailing.polars.data.PolarFix;
    -import com.sap.sse.common.TimePoint;
    -
    -public class PolarFixImpl implements PolarFix {
    -
    -    private SpeedWithBearing boatSpeed;
    -    private Speed windSpeed;
    -    private double trueWindAngleDeg;
    -    private String gaugeIdString;
    -    private String dayString;
    -
    -    public PolarFixImpl(GPSFixMoving fix, TrackedRace race, GPSFixTrack track,
    -            Wind windSpeed, PolarSheetGenerationSettings settings, String gaugeIdString) {
    -        boatSpeed = track.getEstimatedSpeed(fix.getTimePoint());
    -        Bearing bearing = boatSpeed.getBearing();
    -
    -        Position position = fix.getPosition();
    -        this.gaugeIdString = gaugeIdString;
    -        dayString = createDayString(race);
    -        this.windSpeed = windSpeed;
    -        Set windSourcesToExclude;
    -        if (settings.useOnlyEstimatedForWindDirection()) {
    -            windSourcesToExclude = collectWindSourcesToIgnoreForBearing(race, /* exclude course based */true);
    -        } else {
    -            windSourcesToExclude = new HashSet();
    -        }
    -
    -        Wind windEstimated = race.getWind(position, fix.getTimePoint(), windSourcesToExclude);
    -        if (windEstimated == null) {
    -            // no estimated wind; try to include course layout
    -            windSourcesToExclude = collectWindSourcesToIgnoreForBearing(race, /* exclude course based */false);
    -            windEstimated = race.getWind(position, fix.getTimePoint(), windSourcesToExclude);
    -        }
    -        if (windEstimated == null) {
    -            windEstimated = windSpeed; // maybe no upwind start; need to default to measured wind speed/direction
    -        }
    -        Bearing windBearing = windEstimated.getFrom();
    -        trueWindAngleDeg = bearing.getDifferenceTo(windBearing).getDegrees();
    -    }
    -
    -    private String createDayString(TrackedRace race) {
    -        TimePoint startTimePoint = race.getStartOfRace();
    -        String resultDateString = "NoDate";
    -        if (startTimePoint != null) {
    -            SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd");
    -            resultDateString = fmt.format(startTimePoint.asDate());
    -        }
    -
    -        return resultDateString;
    -    }
    -
    -    public Set collectWindSourcesToIgnoreForBearing(TrackedRace race, boolean excludeCourseBased) {
    -        Set windSourcesToExclude = new HashSet();
    -        Iterable combinedSources = race.getWindSources(WindSourceType.COMBINED);
    -        for (WindSource combinedSource : combinedSources) {
    -            windSourcesToExclude.add(combinedSource);
    -        }
    -        if (excludeCourseBased) {
    -            Iterable courseSources = race.getWindSources(WindSourceType.COURSE_BASED);
    -            for (WindSource courseSource : courseSources) {
    -                windSourcesToExclude.add(courseSource);
    -            }
    -        }
    -        Iterable expSources = race.getWindSources(WindSourceType.EXPEDITION);
    -        for (WindSource expSource : expSources) {
    -            windSourcesToExclude.add(expSource);
    -        }
    -        Iterable rcSources = race.getWindSources(WindSourceType.RACECOMMITTEE);
    -        for (WindSource rcSource : rcSources) {
    -            windSourcesToExclude.add(rcSource);
    -        }
    -        Iterable webSources = race.getWindSources(WindSourceType.WEB);
    -        for (WindSource webSource : webSources) {
    -            windSourcesToExclude.add(webSource);
    -        }
    -        return windSourcesToExclude;
    -    }
    -
    -    @Override
    -    public SpeedWithBearing getBoatSpeed() {
    -        return boatSpeed;
    -    }
    -
    -    @Override
    -    public Speed getWindSpeed() {
    -        return windSpeed;
    -    }
    -
    -    @Override
    -    public double getTrueWindAngleDeg() {
    -        return trueWindAngleDeg;
    -    }
    -
    -    @Override
    -    public String getGaugeIdString() {
    -        return gaugeIdString;
    -    }
    -
    -    @Override
    -    public String getDayString() {
    -        return dayString;
    -    }
    -
    -}
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetGenerator.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetGenerator.java
    deleted file mode 100644
    index a227cbf7212..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetGenerator.java
    +++ /dev/null
    @@ -1,273 +0,0 @@
    -package com.sap.sailing.polars.generation;
    -
    -import java.util.ArrayList;
    -import java.util.Collections;
    -import java.util.HashMap;
    -import java.util.List;
    -import java.util.Map;
    -import java.util.Set;
    -
    -import com.sap.sailing.domain.common.PolarSheetGenerationSettings;
    -import com.sap.sailing.domain.common.PolarSheetsData;
    -import com.sap.sailing.domain.common.PolarSheetsHistogramData;
    -import com.sap.sailing.domain.common.Speed;
    -import com.sap.sailing.domain.common.impl.PolarSheetsDataImpl;
    -import com.sap.sailing.domain.common.impl.WindSpeedSteppingWithMaxDistance;
    -import com.sap.sailing.polars.data.BoatAndWindSpeedWithOriginInfo;
    -import com.sap.sailing.polars.data.DataPointWithOriginInfo;
    -import com.sap.sailing.polars.data.PolarFix;
    -import com.sap.sailing.polars.data.impl.BoatAndWindSpeedWithOriginInfoImpl;
    -import com.sap.sailing.polars.data.impl.DataPointWithOriginInfoImpl;
    -
    -public class PolarSheetGenerator {
    -
    -    private final List> polarData;
    -
    -    private WindSpeedSteppingWithMaxDistance stepping;
    -
    -    private PolarSheetGenerationSettings settings;
    -
    -    private final Set fixes;
    -
    -    public PolarSheetGenerator(Set fixes, PolarSheetGenerationSettings settings) {
    -        this.settings = settings;
    -        this.fixes = fixes;
    -        stepping = settings.getWindSpeedStepping();
    -        polarData = initializePolarDataContainer();
    -    }
    -
    -    private List> initializePolarDataContainer() {
    -        List> container = new ArrayList>();
    -        for (int i = 0; i < 360; i++) {
    -            container.add(new ArrayList());
    -        }
    -        return container;
    -    }
    -
    -    private void addPolarFix(PolarFix polarFix) {
    -        long roundedAngleDeg = Math.round(polarFix.getTrueWindAngleDeg());
    -        Speed boatSpeed = polarFix.getBoatSpeed();
    -        Speed windSpeed = polarFix.getWindSpeed();
    -        int angleDeg = (int) roundedAngleDeg;
    -        if (angleDeg < 0) {
    -            angleDeg = (360 + angleDeg);
    -        }
    -        BoatAndWindSpeedWithOriginInfo speeds = new BoatAndWindSpeedWithOriginInfoImpl(boatSpeed, windSpeed,
    -                polarFix.getGaugeIdString(), polarFix.getDayString());
    -        polarData.get(angleDeg).add(speeds);
    -    }
    -
    -    /**
    -     * 
    -     * @return results already averaged per angle. Also datacount overall and per angle. And a completion flag to show
    -     *         if the complete polar sheet has been generated or if the current results are only an intermediate
    -     *         product.
    -     */
    -    public PolarSheetsData generate() {
    -
    -        for (PolarFix fix : fixes) {
    -            addPolarFix(fix);
    -        }
    -
    -        PolarSheetHistogramBuilder histogramBuilder = new PolarSheetHistogramBuilder(settings);
    -
    -        int levelCount = stepping.getNumberOfLevels();
    -        Number[][] averagedPolarDataByWindSpeed = new Number[levelCount][360];
    -        Integer[] dataCountPerAngle = new Integer[360];
    -        int dataCount = 0;
    -        Map dataCountPerAngleForWindspeed = new HashMap();
    -        Map> histogramDataMap = new HashMap>();
    -        Map totalDataCountPerWindSpeed = new HashMap();
    -        for (int levelIndex = 0; levelIndex < levelCount; levelIndex++) {
    -            dataCountPerAngleForWindspeed.put(levelIndex, new Integer[360]);
    -            histogramDataMap.put(levelIndex, new HashMap());
    -            totalDataCountPerWindSpeed.put(levelIndex, 0);
    -        }
    -        for (int angleIndex = 0; angleIndex < 360; angleIndex++) {
    -            // Avoid Concurrent modification of lists, so get current state as an array; lock would slow things down
    -            BoatAndWindSpeedWithOriginInfo[] values = polarData.get(angleIndex).toArray(
    -                    new BoatAndWindSpeedWithOriginInfo[polarData.get(angleIndex).size()]);
    -            dataCount = dataCount + values.length;
    -            dataCountPerAngle[angleIndex] = values.length;
    -            double[] sumsPerWindSpeed = new double[levelCount];
    -            int[] dataCountPerWindSpeed = new int[levelCount];
    -            Map> dataSetForWindLevel = new HashMap>();
    -            gatherPolarData(values, sumsPerWindSpeed, dataCountPerWindSpeed, dataSetForWindLevel);
    -
    -            calculateStatisticalMeasuresAndHistogramData(histogramBuilder, levelCount, averagedPolarDataByWindSpeed,
    -                    dataCountPerAngleForWindspeed, histogramDataMap, totalDataCountPerWindSpeed, angleIndex,
    -                    sumsPerWindSpeed, dataCountPerWindSpeed, dataSetForWindLevel);
    -
    -        }
    -
    -        for (int j = 0; j < levelCount; j++) {
    -            for (PolarSheetsHistogramData histogramData : histogramDataMap.get(j).values()) {
    -                Double polarSheetPointConfidenceMeasure = Math.min(1, histogramData.getCoefficiantOfVariation()
    -                        * (histogramData.getDataCount() / (double) totalDataCountPerWindSpeed.get(j)) * 80);
    -                histogramData.setConfidenceMeasure(polarSheetPointConfidenceMeasure);
    -            }
    -        }
    -
    -        PolarSheetsData data = new PolarSheetsDataImpl(averagedPolarDataByWindSpeed, dataCount,
    -                dataCountPerAngleForWindspeed, stepping, histogramDataMap);
    -
    -        return data;
    -    }
    -
    -    private void gatherPolarData(BoatAndWindSpeedWithOriginInfo[] values, double[] sumsPerWindSpeed,
    -            int[] dataCountPerWindSpeed, Map> dataSetForWindLevel) {
    -        for (BoatAndWindSpeedWithOriginInfo singleDataPoint : values) {
    -            if (singleDataPoint != null) {
    -                double windSpeed = singleDataPoint.getWindSpeed().getKnots();
    -                int level = stepping.getLevelIndexForValue(windSpeed);
    -                if (level >= 0) {
    -                    double speed = singleDataPoint.getBoatSpeed().getKnots();
    -                    String windGaugesIdString = singleDataPoint.getWindGaugesIdString();
    -                    String dayString = singleDataPoint.getDayString();
    -                    if (!dataSetForWindLevel.containsKey(level)) {
    -                        dataSetForWindLevel.put(level, new ArrayList());
    -                    }
    -                    dataSetForWindLevel.get(level).add(
    -                            new DataPointWithOriginInfoImpl(speed, windGaugesIdString, dayString));
    -                    sumsPerWindSpeed[level] = sumsPerWindSpeed[level] + speed;
    -                    dataCountPerWindSpeed[level]++;
    -                }
    -            }
    -        }
    -    }
    -
    -    private void calculateStatisticalMeasuresAndHistogramData(PolarSheetHistogramBuilder histogramBuilder,
    -            int levelCount, Number[][] averagedPolarDataByWindSpeed,
    -            Map dataCountPerAngleForWindspeed,
    -            Map> histogramDataMap,
    -            Map totalDataCountPerWindSpeed, int angleIndex, double[] sumsPerWindSpeed,
    -            int[] dataCountPerWindSpeed, Map> dataSetForWindLevel) {
    -        for (int levelIndex = 0; levelIndex < levelCount; levelIndex++) {
    -            if (settings.shouldRemoveOutliers() && dataSetForWindLevel.get(levelIndex) != null) {
    -                List withoutOutliers = new ArrayList();
    -                Collections.sort(dataSetForWindLevel.get(levelIndex));
    -                if (dataCountPerWindSpeed[levelIndex] > /* Minimum data count for outlier detection */10) {
    -                    performOutlierExclusion(sumsPerWindSpeed, dataCountPerWindSpeed, dataSetForWindLevel, levelIndex,
    -                            withoutOutliers);
    -                }
    -
    -            }
    -
    -            if (dataCountPerWindSpeed[levelIndex] < settings.getMinimumDataCountPerAngle()) {
    -                dataSetForWindLevel.put(levelIndex, new ArrayList());
    -                sumsPerWindSpeed[levelIndex] = 0;
    -                dataCountPerWindSpeed[levelIndex] = 0;
    -            }
    -            totalDataCountPerWindSpeed.put(levelIndex, totalDataCountPerWindSpeed.get(levelIndex)
    -                    + dataCountPerWindSpeed[levelIndex]);
    -            Double average = sumsPerWindSpeed[levelIndex] / dataCountPerWindSpeed[levelIndex];
    -            if (average.isNaN()) {
    -                average = new Double(0);
    -            }
    -            averagedPolarDataByWindSpeed[levelIndex][angleIndex] = average;
    -            dataCountPerAngleForWindspeed.get(levelIndex)[angleIndex] = dataCountPerWindSpeed[levelIndex];
    -            double coefficiantOfVariation = 0;
    -            if (dataCountPerWindSpeed[levelIndex] > 0 && average > 0) {
    -                Double variance = sumsPerWindSpeed[levelIndex] / dataCountPerWindSpeed[levelIndex];
    -                Double standardDeviation = Math.sqrt(variance);
    -                coefficiantOfVariation = standardDeviation / average;
    -            }
    -            List rawData = dataSetForWindLevel.get(levelIndex);
    -            if (rawData == null || rawData.size() <= 0) {
    -                continue;
    -            }
    -            PolarSheetsHistogramData histogramData = histogramBuilder
    -                    .build(rawData, angleIndex, coefficiantOfVariation);
    -            histogramDataMap.get(levelIndex).put(angleIndex, histogramData);
    -
    -        }
    -    }
    -
    -    private void performOutlierExclusion(double[] sumsPerWindSpeed, int[] dataCountPerWindSpeed,
    -            Map> dataSetForWindLevel, int levelIndex,
    -            List withoutOutliers) {
    -        for (int dataIndex = 0; dataIndex < dataSetForWindLevel.get(levelIndex).size(); dataIndex++) {
    -            DataPointWithOriginInfo dataPoint = dataSetForWindLevel.get(levelIndex).get(dataIndex);
    -            double pct = getNeighboorhoodSizePercentage(dataCountPerWindSpeed, dataSetForWindLevel, levelIndex,
    -                    dataIndex, dataPoint, settings);
    -            if (pct >= settings.getOutlierMinimumNeighborhoodPct()) {
    -                withoutOutliers.add(dataPoint);
    -            } else {
    -                sumsPerWindSpeed[levelIndex] = sumsPerWindSpeed[levelIndex] - dataPoint.getRawData();
    -                dataCountPerWindSpeed[levelIndex]--;
    -            }
    -        }
    -        dataSetForWindLevel.put(levelIndex, withoutOutliers);
    -    }
    -
    -    /**
    -     * This method calculates the pct of the points neighborhoods based on a distance (in the settings) compared to the
    -     * complete dataset.
    -     */
    -    public static double getNeighboorhoodSizePercentage(int[] dataCountPerWindSpeed,
    -            Map> valuesInMap, int levelIndex, int dataIndex,
    -            DataPointWithOriginInfo dataPoint, PolarSheetGenerationSettings settings) {
    -        int neighborCount = 0;
    -        double pct = .0;
    -
    -        int index = dataIndex;
    -        // Left side
    -        boolean done = false;
    -        while (!done) {
    -            index--;
    -            if (index < 0) {
    -                done = true;
    -            } else {
    -                Double dataPointToCheckForNeighborStatus = valuesInMap.get(levelIndex).get(index).getRawData();
    -                if (dataPoint.getRawData() - dataPointToCheckForNeighborStatus <= settings
    -                        .getOutlierDetectionNeighborhoodRadius()) {
    -                    neighborCount++;
    -                } else {
    -                    done = true;
    -                }
    -                pct = (double) neighborCount / (double) dataCountPerWindSpeed[levelIndex];
    -                if (pct >= settings.getOutlierMinimumNeighborhoodPct()) {
    -                    done = true;
    -                }
    -            }
    -        }
    -        index = dataIndex;
    -        // Right side
    -        done = false;
    -        while (!done) {
    -            index++;
    -            if (index >= dataCountPerWindSpeed[levelIndex]) {
    -                done = true;
    -            } else {
    -                Double dataPointToCheckForNeighborStatus = valuesInMap.get(levelIndex).get(index).getRawData();
    -                if (dataPointToCheckForNeighborStatus - dataPoint.getRawData() <= settings
    -                        .getOutlierDetectionNeighborhoodRadius()) {
    -                    neighborCount++;
    -                } else {
    -                    done = true;
    -                }
    -                pct = (double) neighborCount / (double) dataCountPerWindSpeed[levelIndex];
    -                if (pct >= settings.getOutlierMinimumNeighborhoodPct()) {
    -                    done = true;
    -                }
    -            }
    -        }
    -        pct = (double) neighborCount / (double) dataCountPerWindSpeed[levelIndex];
    -        return pct;
    -    }
    -
    -    /**
    -     * Can be used to present more detailed data.
    -     * 
    -     * @return The complete set of datapoints that have been added. Can be quite big, depending on the amount of races
    -     *         and competitors.
    -     */
    -    public List> getCompleteData() {
    -        return polarData;
    -    }
    -
    -    public WindSpeedSteppingWithMaxDistance getStepping() {
    -        return stepping;
    -    }
    -
    -}
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetHistogramBuilder.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetHistogramBuilder.java
    deleted file mode 100644
    index b6af619266e..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/generation/PolarSheetHistogramBuilder.java
    +++ /dev/null
    @@ -1,81 +0,0 @@
    -package com.sap.sailing.polars.generation;
    -
    -import java.util.Collections;
    -import java.util.HashMap;
    -import java.util.List;
    -import java.util.Map;
    -
    -import com.sap.sailing.domain.common.PolarSheetGenerationSettings;
    -import com.sap.sailing.domain.common.PolarSheetsHistogramData;
    -import com.sap.sailing.domain.common.impl.PolarSheetsHistogramDataImpl;
    -import com.sap.sailing.polars.data.DataPointWithOriginInfo;
    -
    -public class PolarSheetHistogramBuilder {
    -
    -    private PolarSheetGenerationSettings settings;
    -
    -    public PolarSheetHistogramBuilder(PolarSheetGenerationSettings settings) {
    -        this.settings = settings;
    -    }
    -
    -    public PolarSheetsHistogramData build(List rawData, int angleIndex,
    -            double coefficiantOfVariation) {
    -        DataPointWithOriginInfo minPoint = Collections.min(rawData);
    -        DataPointWithOriginInfo maxPoint = Collections.max(rawData);
    -
    -        Double min = minPoint.getRawData();
    -        Double max = maxPoint.getRawData();
    -
    -        int numberOfColumns = settings.getNumberOfHistogramColumns();
    -        double range = (max - min) / numberOfColumns;
    -        Double[] xValues = new Double[numberOfColumns];
    -        for (int u = 0; u < numberOfColumns; u++) {
    -            xValues[u] = min + u * range + (0.5 * range);
    -        }
    -
    -        Map yValuesByGaugeIds = new HashMap();
    -        Map yValuesByDay = new HashMap();
    -        Map yValuesByDayAndGaugeId = new HashMap();
    -        Integer[] yValues = new Integer[numberOfColumns];
    -        for (int i = 0; i < yValues.length; i++) {
    -            yValues[i] = 0;
    -        }
    -        for (DataPointWithOriginInfo dataPoint : rawData) {
    -            double notRoundedYet = (dataPoint.getRawData() - min) / range;
    -            int u = (int) notRoundedYet;
    -            if (u == numberOfColumns) {
    -                // For max value
    -                u = numberOfColumns - 1;
    -            }
    -            yValues[u]++;
    -
    -            String gaugeIdsString = dataPoint.getWindGaugeIdString();
    -            createHistogramDataForArrangeOption(numberOfColumns, yValuesByGaugeIds, u, gaugeIdsString);
    -
    -            String dayString = dataPoint.getDayString();
    -            createHistogramDataForArrangeOption(numberOfColumns, yValuesByDay, u, dayString);
    -
    -            String dayAndGaugeIdString = dayString + "-" + gaugeIdsString;
    -            createHistogramDataForArrangeOption(numberOfColumns, yValuesByDayAndGaugeId, u, dayAndGaugeIdString);
    -
    -        }
    -
    -        PolarSheetsHistogramData histogramData = new PolarSheetsHistogramDataImpl(angleIndex, xValues, yValues,
    -                yValuesByGaugeIds, yValuesByDay, yValuesByDayAndGaugeId, rawData.size(), coefficiantOfVariation);
    -        return histogramData;
    -    }
    -
    -    private void createHistogramDataForArrangeOption(int numberOfColumns, Map arrangerMap, int u,
    -            String arrangerString) {
    -        if (!arrangerMap.containsKey(arrangerString)) {
    -            Integer[] yValuesForArrangerString = new Integer[numberOfColumns];
    -            for (int i = 0; i < yValuesForArrangerString.length; i++) {
    -                yValuesForArrangerString[i] = 0;
    -            }
    -            arrangerMap.put(arrangerString, yValuesForArrangerString);
    -        }
    -        Integer[] yValuesForOneSpecificArrangerString = arrangerMap.get(arrangerString);
    -        yValuesForOneSpecificArrangerString[u]++;
    -    }
    -
    -}
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java
    index c88612c6323..17c60cebd1b 100755
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java
    +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java
    @@ -9,8 +9,6 @@ import java.net.MalformedURLException;
     import java.util.HashSet;
     import java.util.Set;
     import java.util.concurrent.ConcurrentHashMap;
    -import java.util.concurrent.ExecutionException;
    -import java.util.concurrent.Executor;
     import java.util.logging.Logger;
     
     import org.apache.commons.math.analysis.polynomials.PolynomialFunction;
    @@ -25,7 +23,6 @@ import com.sap.sailing.domain.common.Bearing;
     import com.sap.sailing.domain.common.LegType;
     import com.sap.sailing.domain.common.ManeuverType;
     import com.sap.sailing.domain.common.PolarSheetGenerationSettings;
    -import com.sap.sailing.domain.common.PolarSheetsData;
     import com.sap.sailing.domain.common.Speed;
     import com.sap.sailing.domain.common.Tack;
     import com.sap.sailing.domain.common.confidence.BearingWithConfidence;
    @@ -39,10 +36,6 @@ import com.sap.sailing.domain.polars.PolarDataService;
     import com.sap.sailing.domain.polars.PolarsChangedListener;
     import com.sap.sailing.domain.tracking.TrackedRace;
     import com.sap.sailing.polars.PolarDataOperation;
    -import com.sap.sailing.polars.aggregation.PolarFixAggregator;
    -import com.sap.sailing.polars.aggregation.SimplePolarFixRaceInterval;
    -import com.sap.sailing.polars.data.PolarFix;
    -import com.sap.sailing.polars.generation.PolarSheetGenerator;
     import com.sap.sailing.polars.mining.BearingClusterGroup;
     import com.sap.sailing.polars.mining.CubicRegressionPerCourseProcessor;
     import com.sap.sailing.polars.mining.PolarDataMiner;
    @@ -139,23 +132,6 @@ public class PolarDataServiceImpl implements PolarDataService,
             return averageSpeedAndCourseOverGround;
         }
     
    -    @Override
    -    public PolarSheetsData generatePolarSheet(Set trackedRaces, PolarSheetGenerationSettings settings,
    -            Executor executor) throws InterruptedException, ExecutionException {
    -        Set fixes;
    -        PolarFixAggregator aggregator = new PolarFixAggregator(new SimplePolarFixRaceInterval(trackedRaces), settings,
    -                executor);
    -        aggregator.startPolarFixAggregation();
    -        fixes = aggregator.getAggregationResultAsSingleList();
    -        PolarSheetGenerator generator = new PolarSheetGenerator(fixes, settings);
    -        return generator.generate();
    -    }
    -
    -    @Override
    -    public PolarSheetsData getPolarSheetForBoatClass(BoatClass boatClass) {
    -        return polarDataMiner.createFullSheetForBoatClass(boatClass);
    -    }
    -
         @Override
         public Set getAllBoatClassesWithPolarSheetsAvailable() {
             return polarDataMiner.getAvailableBoatClasses();
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAveragePolarClusterKey.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAveragePolarClusterKey.java
    deleted file mode 100644
    index 2b05318b6a3..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAveragePolarClusterKey.java
    +++ /dev/null
    @@ -1,16 +0,0 @@
    -package com.sap.sailing.polars.mining;
    -
    -import com.sap.sailing.domain.common.Speed;
    -import com.sap.sse.datamining.annotations.Dimension;
    -import com.sap.sse.datamining.data.Cluster;
    -
    -public interface MovingAveragePolarClusterKey extends LegTypePolarClusterKey {
    -
    -    /**
    -     * 
    -     * @return wind speed cluster
    -     */
    -    @Dimension(messageKey = "windSpeed")
    -    Cluster getWindSpeedCluster();
    -
    -}
    \ No newline at end of file
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessor.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessor.java
    deleted file mode 100755
    index 896c3f6aace..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessor.java
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -package com.sap.sailing.polars.mining;
    -
    -import java.io.Serializable;
    -
    -import com.sap.sailing.domain.base.BoatClass;
    -import com.sap.sailing.domain.base.SpeedWithBearingWithConfidence;
    -import com.sap.sailing.domain.common.LegType;
    -import com.sap.sailing.domain.common.Speed;
    -import com.sap.sailing.domain.polars.NotEnoughDataHasBeenAddedException;
    -import com.sap.sse.datamining.components.Processor;
    -import com.sap.sse.datamining.data.ClusterGroup;
    -import com.sap.sse.datamining.impl.components.GroupedDataEntry;
    -
    -public interface MovingAverageProcessor extends Processor, Void>,
    -        Serializable {
    -    SpeedWithBearingWithConfidence getAverageSpeedAndCourseOverGround(BoatClass boatClass, Speed windSpeed,
    -            LegType legType) throws NotEnoughDataHasBeenAddedException;
    -
    -    ClusterGroup getSpeedCluster();
    -}
    \ No newline at end of file
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessorImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessorImpl.java
    deleted file mode 100755
    index e48a36ebaaa..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/MovingAverageProcessorImpl.java
    +++ /dev/null
    @@ -1,223 +0,0 @@
    -package com.sap.sailing.polars.mining;
    -
    -import java.util.HashMap;
    -import java.util.Map;
    -import java.util.logging.Logger;
    -
    -import com.sap.sailing.domain.base.BoatClass;
    -import com.sap.sailing.domain.base.SpeedWithBearingWithConfidence;
    -import com.sap.sailing.domain.base.SpeedWithConfidence;
    -import com.sap.sailing.domain.base.impl.SpeedWithBearingWithConfidenceImpl;
    -import com.sap.sailing.domain.base.impl.SpeedWithConfidenceImpl;
    -import com.sap.sailing.domain.common.Bearing;
    -import com.sap.sailing.domain.common.LegType;
    -import com.sap.sailing.domain.common.Position;
    -import com.sap.sailing.domain.common.Speed;
    -import com.sap.sailing.domain.common.SpeedWithBearing;
    -import com.sap.sailing.domain.common.confidence.BearingWithConfidence;
    -import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
    -import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
    -import com.sap.sailing.domain.polars.NotEnoughDataHasBeenAddedException;
    -import com.sap.sailing.domain.tracking.WindWithConfidence;
    -import com.sap.sailing.polars.regression.MovingAverageBoatSpeedEstimator;
    -import com.sap.sse.common.TimePoint;
    -import com.sap.sse.common.Util.Pair;
    -import com.sap.sse.datamining.components.AdditionalResultDataBuilder;
    -import com.sap.sse.datamining.data.Cluster;
    -import com.sap.sse.datamining.data.ClusterGroup;
    -import com.sap.sse.datamining.factories.GroupKeyFactory;
    -import com.sap.sse.datamining.impl.components.GroupedDataEntry;
    -import com.sap.sse.datamining.shared.GroupKey;
    -
    -public class MovingAverageProcessorImpl implements MovingAverageProcessor {
    -
    -    private static final long serialVersionUID = 9016357546663534562L;
    -
    -    private static final Logger logger = Logger.getLogger(MovingAverageProcessorImpl.class.getName());
    -
    -    private final Map boatSpeedEstimators = new HashMap<>();
    -
    -    private final Map averageAngleContainers = new HashMap<>();
    -
    -    private final ClusterGroup speedClusterGroup;
    -
    -    public MovingAverageProcessorImpl(ClusterGroup speedClusterGroup) {
    -        this.speedClusterGroup = speedClusterGroup;
    -    }
    -
    -    @Override
    -    public boolean canProcessElements() {
    -        // TODO Auto-generated method stub
    -        return true;
    -    }
    -
    -    @Override
    -    public void processElement(GroupedDataEntry element) {
    -        GPSFixMovingWithPolarContext fix = element.getDataEntry();
    -        if (fix.getLegType() == LegType.UPWIND || fix.getLegType() == LegType.DOWNWIND) {
    -            GroupKey key = element.getKey();
    -            MovingAverageBoatSpeedEstimator boatSpeedEstimator;
    -            synchronized (boatSpeedEstimators) {
    -                boatSpeedEstimator = boatSpeedEstimators.get(key);
    -                if (boatSpeedEstimator == null) {
    -                    boatSpeedEstimator = new MovingAverageBoatSpeedEstimator();
    -                    boatSpeedEstimators.put(key, boatSpeedEstimator);
    -                }
    -            }
    -            AverageAngleContainer averageAngleContainer;
    -            synchronized (averageAngleContainers) {
    -                averageAngleContainer = averageAngleContainers.get(key);
    -                if (averageAngleContainer == null) {
    -                    averageAngleContainer = new AverageAngleContainer();
    -                    averageAngleContainers.put(key, averageAngleContainer);
    -                }
    -            }
    -            BearingWithConfidence angleToTheWind = fix.getAbsoluteAngleToTheWind();
    -            WindWithConfidence> windSpeed = fix.getWind();
    -            SpeedWithBearingWithConfidence boatSpeedWithConfidence = fix.getBoatSpeed();
    -            WindWithConfidence> windWithConfidenceForSpeed = windSpeed;
    -            double confidenceForWindSpeed = windWithConfidenceForSpeed.getConfidence();
    -            double confidenceForWindBearing = angleToTheWind.getConfidence();
    -            double confidenceForBoatSpeed = boatSpeedWithConfidence.getConfidence();
    -            double averagedConfidence = (confidenceForBoatSpeed + confidenceForWindBearing + confidenceForWindSpeed) / 3;
    -            averageAngleContainer.addFix(angleToTheWind.getObject().getDegrees());
    -            boatSpeedEstimator.addData(boatSpeedWithConfidence.getObject(), averagedConfidence);
    -        }
    -    }
    -
    -    @Override
    -    public void finish() throws InterruptedException {
    -        // Nothing to do here
    -    }
    -
    -    @Override
    -    public boolean isFinished() {
    -        return false;
    -    }
    -
    -    @Override
    -    public void abort() {
    -        // TODO Auto-generated method stub
    -    }
    -
    -    @Override
    -    public boolean isAborted() {
    -        // TODO Auto-generated method stub
    -        return false;
    -    }
    -
    -    @Override
    -    public AdditionalResultDataBuilder getAdditionalResultData(AdditionalResultDataBuilder additionalDataBuilder) {
    -        // TODO Auto-generated method stub
    -        return null;
    -    }
    -
    -    public static class SpeedWithConfidenceAndDataCount {
    -        private final SpeedWithConfidence speedWithConfidence;
    -        private final int dataCount;
    -
    -        protected SpeedWithConfidenceAndDataCount(SpeedWithConfidence speedWithConfidence, int dataCount) {
    -            super();
    -            this.speedWithConfidence = speedWithConfidence;
    -            this.dataCount = dataCount;
    -        }
    -
    -        public SpeedWithConfidence getSpeedWithConfidence() {
    -            return speedWithConfidence;
    -        }
    -
    -        public int getDataCount() {
    -            return dataCount;
    -        }
    -    }
    -
    -    private SpeedWithConfidenceAndDataCount estimateBoatSpeed(GroupKey key) throws NotEnoughDataHasBeenAddedException {
    -        MovingAverageBoatSpeedEstimator boatSpeedEstimator = boatSpeedEstimators.get(key);
    -        if (boatSpeedEstimator == null) {
    -            throw new NotEnoughDataHasBeenAddedException();
    -        }
    -        Speed speedWithoutConfidence = boatSpeedEstimator.estimateSpeed();
    -        final int dataCount = boatSpeedEstimator.getDataCount();
    -        double confidence = boatSpeedEstimator.getConfidence();
    -        return new SpeedWithConfidenceAndDataCount(new SpeedWithConfidenceImpl(speedWithoutConfidence,
    -                confidence, null), dataCount);
    -    }
    -
    -    private Bearing estimateAngle(GroupKey key) throws NotEnoughDataHasBeenAddedException {
    -        AverageAngleContainer averageAngleContainer = averageAngleContainers.get(key);
    -        if (averageAngleContainer == null) {
    -            throw new NotEnoughDataHasBeenAddedException();
    -        }
    -        return new DegreeBearingImpl(averageAngleContainer.getAverageAngleDeg());
    -    }
    -
    -    @Override
    -    public void onFailure(Throwable failure) {
    -        logger.severe("Polar Data Mining Pipe failed.");
    -        throw new RuntimeException("Polar Data Miner failed.", failure);
    -    }
    -
    -    @Override
    -    public Class> getInputType() {
    -        // TODO Auto-generated method stub
    -        return null;
    -    }
    -
    -    @Override
    -    public Class getResultType() {
    -        // No result type here, since this is a special case of a processor. It's the end of the pipe so to say.
    -        return null;
    -    }
    -
    -    @Override
    -    public SpeedWithBearingWithConfidence getAverageSpeedAndCourseOverGround(BoatClass boatClass,
    -            Speed windSpeed, LegType legType) throws NotEnoughDataHasBeenAddedException {
    -        SpeedWithBearingWithConfidence result = estimateSpeedAndAngle(boatClass, windSpeed, legType);
    -        return result;
    -    }
    -
    -    private SpeedWithBearingWithConfidence estimateSpeedAndAngle(BoatClass boatClass, Speed windSpeed,
    -            LegType legType) throws NotEnoughDataHasBeenAddedException {
    -        GroupKey key = createGroupKey(boatClass, windSpeed, legType);
    -        Bearing angleDiffTrueWindToBoat = estimateAngle(key);
    -        SpeedWithConfidence estimatedSpeed = estimateBoatSpeed(key).getSpeedWithConfidence();
    -        SpeedWithBearing speedWithBearing = new KnotSpeedWithBearingImpl(estimatedSpeed.getObject().getKnots(),
    -                angleDiffTrueWindToBoat);
    -        return new SpeedWithBearingWithConfidenceImpl(speedWithBearing, estimatedSpeed.getConfidence(), null);
    -    }
    -
    -    private GroupKey createGroupKey(final BoatClass boatClass, final Speed windSpeed, final LegType legType) {
    -        MovingAveragePolarClusterKey key = new MovingAveragePolarClusterKey() {
    -
    -            @Override
    -            public BoatClass getBoatClass() {
    -                return boatClass;
    -            }
    -
    -            @Override
    -            public Cluster getWindSpeedCluster() {
    -                return speedClusterGroup.getClusterFor(windSpeed);
    -            }
    -
    -            @Override
    -            public LegType getLegType() {
    -                return legType;
    -            }
    -        };
    -        GroupKey compoundKey;
    -        try {
    -            compoundKey = GroupKeyFactory.createNestingCompoundKeyFor(key, PolarDataDimensionCollectionFactory
    -                    .getMovingAverageClusterKeyDimensions().iterator());
    -        } catch (NoSuchMethodException e) {
    -            e.printStackTrace();
    -            throw new RuntimeException(e);
    -        }
    -        return compoundKey;
    -    }
    -
    -    @Override
    -    public ClusterGroup getSpeedCluster() {
    -        return speedClusterGroup;
    -    }
    -
    -}
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataDimensionCollectionFactory.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataDimensionCollectionFactory.java
    index 497a4ecc277..058c4bf28f5 100644
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataDimensionCollectionFactory.java
    +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataDimensionCollectionFactory.java
    @@ -12,24 +12,10 @@ import com.sap.sse.datamining.functions.Function;
     
     public class PolarDataDimensionCollectionFactory {
     
    -    public static Collection> getMovingAverageClusterKeyDimensions() throws NoSuchMethodException {
    -        Collection> dimensions = new ArrayList<>();
    -        FunctionFactory functionFactory = new FunctionFactory();
    -        addTackAndLegTypeDimensions(dimensions, functionFactory);
    -
    -        addPolarBaseDimension(dimensions, functionFactory);
    -
    -        Function windSpeedFunction = functionFactory
    -                .createMethodWrappingFunction(MovingAveragePolarClusterKey.class.getMethod("getWindSpeedCluster",
    -                        new Class[0]));
    -        dimensions.add(windSpeedFunction);
    -        return dimensions;
    -    }
    -
         private static void addTackAndLegTypeDimensions(Collection> dimensions, FunctionFactory functionFactory)
                 throws NoSuchMethodException {
             Function legTypeFunction = functionFactory
    -                .createMethodWrappingFunction(MovingAveragePolarClusterKey.class.getMethod("getLegType",
    +                .createMethodWrappingFunction(LegTypePolarClusterKey.class.getMethod("getLegType",
                             new Class[0]));
             dimensions.add(legTypeFunction);
         }
    @@ -37,7 +23,7 @@ public class PolarDataDimensionCollectionFactory {
         private static void addPolarBaseDimension(Collection> dimensions, FunctionFactory functionFactory)
                 throws NoSuchMethodException {
             Function boatClassFunction = functionFactory
    -                .createMethodWrappingFunction(MovingAveragePolarClusterKey.class.getMethod("getBoatClass",
    +                .createMethodWrappingFunction(BasePolarClusterKey.class.getMethod("getBoatClass",
                             new Class[0]));
             dimensions.add(boatClassFunction);
         }
    diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/MovingAverageBoatSpeedEstimator.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/MovingAverageBoatSpeedEstimator.java
    deleted file mode 100644
    index e71db7a76f5..00000000000
    --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/MovingAverageBoatSpeedEstimator.java
    +++ /dev/null
    @@ -1,88 +0,0 @@
    -package com.sap.sailing.polars.regression;
    -
    -import java.io.ObjectInputStream;
    -import java.io.Serializable;
    -
    -import com.sap.sailing.domain.common.Speed;
    -import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
    -import com.sap.sailing.domain.polars.NotEnoughDataHasBeenAddedException;
    -import com.sap.sailing.polars.mining.MovingAverageProcessorImpl;
    -import com.sap.sse.concurrent.LockUtil;
    -import com.sap.sse.concurrent.NamedReentrantReadWriteLock;
    -
    -/**
    - * Supplies incremental arithmetic mean for confidence and speed.
    - * 

    - * - * {@link #estimateSpeed(double, double)} returns the average of the speed. - *

    - * - * Note that this class should only be used for a small wind interval on a polar sheet. The - * {@link MovingAverageProcessorImpl} is one example for that. It has one instance of the - * {@link MovingAverageBoatSpeedEstimator} for each wind boatclass, speed level and rounded angle combination. - * - * @author Frederik Petersen (D054528) - * - */ -public class MovingAverageBoatSpeedEstimator implements Serializable { - - private static final long serialVersionUID = -254184914347332658L; - - private double speedSumInKnots = 0; - - private transient NamedReentrantReadWriteLock lock = createLock(); - - private double confidenceSum = 0; - - private int dataCount = 0; - - public Speed estimateSpeed() throws NotEnoughDataHasBeenAddedException { - LockUtil.lockForRead(lock); - if (dataCount < 1) { - throw new NotEnoughDataHasBeenAddedException(); - } - try { - return new KnotSpeedImpl(speedSumInKnots / dataCount); - } finally { - LockUtil.unlockAfterRead(lock); - } - } - - public void addData(Speed boatSpeed, double confidence) { - LockUtil.lockForWrite(lock); - try { - speedSumInKnots = speedSumInKnots + boatSpeed.getKnots(); - dataCount++; - confidenceSum = confidenceSum + confidence; - } finally { - LockUtil.unlockAfterWrite(lock); - } - } - - public int getDataCount() { - LockUtil.lockForRead(lock); - try { - return dataCount; - } finally { - LockUtil.unlockAfterRead(lock); - } - } - - public double getConfidence() { - LockUtil.lockForRead(lock); - try { - return confidenceSum / dataCount; - } finally { - LockUtil.unlockAfterRead(lock); - } - } - - private void readObject(ObjectInputStream ois) { - lock = createLock(); - } - - private NamedReentrantReadWriteLock createLock() { - return new NamedReentrantReadWriteLock(getClass().getName(), true); - } - -} From 6c8da8e90f4e269d278ea775c386645c485bb095 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 22 Sep 2015 17:39:12 +0200 Subject: [PATCH 341/504] Adjusted visualisation of Default Fleet in mobile races view --- .../partials/regattacompetition/RegattaCompetition.gss | 4 +++- .../partials/regattacompetition/RegattaCompetitionFleet.java | 5 +++++ .../regattacompetition/RegattaCompetitionFleetRace.ui.xml | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss index 7e28cfa979d..c0f5ee74935 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss @@ -78,7 +78,6 @@ padding: 1.066666666666667em 0; border-radius: 0.333333333333333em; color: #f6f9fc; - min-height: 4.4em; } .regattacompetition_phase_fleet_racetracked { background: #008fcc; @@ -126,3 +125,6 @@ -ms-transform: translateY(-50%); transform: translateY(-50%); } +.regattacompetition_phase_fleet_raceuntracked .regattacompetition_phase_fleet_race_arrow { + display: none; +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java index 027bcb5b2e5..67805119aba 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java @@ -7,6 +7,7 @@ import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sailing.gwt.home.mobile.partials.regattacompetition.RegattaCompetitionResources.LocalCss; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; @@ -34,6 +35,10 @@ public class RegattaCompetitionFleet extends Widget { if (fleetCount < 2) raceContainerUi.addClassName(CSS.regattacompetition_phase_fleetfullwidth()); fleetCornerUi.getStyle().setProperty("borderTopColor", fleet.getFleet().getFleetColor()); fleetNameUi.setInnerText(fleet.getFleet().getFleetName()); + if (LeaderboardNameConstants.DEFAULT_FLEET_NAME.equals(fleet.getFleet().getFleetName())) { + fleetCornerUi.removeFromParent(); + fleetNameUi.removeFromParent(); + } } public void addRace(SimpleRaceMetadataDTO race, String raceViewerUrl) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml index 93435c1d7c0..bec0b491e64 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml @@ -9,5 +9,6 @@

    +
    \ No newline at end of file From 8313b793cea367f61b9cd901af88acf5ad397e8d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 22 Sep 2015 21:09:29 +0200 Subject: [PATCH 342/504] fix for bug 2622: update the series in strict order, synchronously, when editing regatta through UI --- .../ui/adminconsole/RegattaListComposite.java | 44 ++++++++++++------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java index 869fd13bb26..ccf67907f9d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; +import java.util.Iterator; import java.util.List; import com.google.gwt.cell.client.AbstractCell; @@ -317,23 +318,32 @@ public class RegattaListComposite extends Composite implements RegattasDisplayer } })); - for (SeriesDTO series : editedRegatta.series) { - sailingService.updateSeries(regattaName, series.getName(), series.getName(), series.isMedal(), - series.getDiscardThresholds(), series.isStartsWithZeroScore(), - series.isFirstColumnIsNonDiscardableCarryForward(), series.hasSplitFleetContiguousScoring(), - series.getFleets(), new MarkedAsyncCallback(new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Error trying to update regatta " + editedRegatta.getName() - + ": " + caught.getMessage()); - } - - @Override - public void onSuccess(Void result) { - regattaRefresher.fillRegattas(); - } - })); - } + final Iterator seriesIter = editedRegatta.series.iterator(); + final Runnable r = new Runnable() { + @Override + public void run() { + if (seriesIter.hasNext()) { + final SeriesDTO series = seriesIter.next(); + sailingService.updateSeries(regattaName, series.getName(), series.getName(), series.isMedal(), + series.getDiscardThresholds(), series.isStartsWithZeroScore(), + series.isFirstColumnIsNonDiscardableCarryForward(), series.hasSplitFleetContiguousScoring(), + series.getFleets(), new MarkedAsyncCallback(new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Error trying to update regatta " + editedRegatta.getName() + + ": " + caught.getMessage()); + } + + @Override + public void onSuccess(Void result) { + regattaRefresher.fillRegattas(); + run(); // update next series if iterator has next element + } + })); + } + } + }; + r.run(); } protected List getSelectedRegattas() { From 8e17855339ea40a9fee5818c31260b01f652abcc Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 22 Sep 2015 21:11:45 +0200 Subject: [PATCH 343/504] updated admin console release notes --- java/com.sap.sailing.www/release_notes_admin.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java/com.sap.sailing.www/release_notes_admin.html b/java/com.sap.sailing.www/release_notes_admin.html index a50b6338956..0227996e103 100644 --- a/java/com.sap.sailing.www/release_notes_admin.html +++ b/java/com.sap.sailing.www/release_notes_admin.html @@ -37,6 +37,9 @@ created by the server if not known yet. Note that for such boat classes no boat class icon will be present when showing the regatta on the web page.
  • +
  • Bug fix: in rare cases, adding several series to a regatta in one go swapped the order + of the series to be created. This has now been fixed. +

June 2015

    From 675c094b2e5a20e48c0da3041927a0a380fbf0ab Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 22 Sep 2015 21:25:37 +0200 Subject: [PATCH 344/504] added PWA boat class name and logo --- .../domain/common/BoatClassMasterdata.java | 15 ++++++++------- .../common/client/BoatClassImageResolver.java | 9 +++++---- .../common/client/BoatClassImageResources.java | 3 +++ .../BoatClassVectorGraphicsResolver.java | 2 +- .../gwt/ui/client/images/boatclass/PWA.png | Bin 0 -> 14688 bytes .../release_notes_admin.html | 2 ++ 6 files changed, 19 insertions(+), 12 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/boatclass/PWA.png diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java index cb7d18e5d13..89b78c6464d 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java @@ -20,11 +20,13 @@ public enum BoatClassMasterdata { A_CAT ("A-Catamaran", true, 5.49, 2.30, BoatHullType.CATAMARAN, false, "A-Cat", "ACat", "A-Class Catamaran"), ALBIN_EXPRESS ("Albin Express", true, 7.77, 2.50, BoatHullType.MONOHULL, false), ALBIN_BALLAD ("Albin Ballad", true, 9.12, 2.95, BoatHullType.MONOHULL, false), + B_ONE ("B/ONE", true, 7.80, 2.49, BoatHullType.MONOHULL, true, "B-ONE"), CANOE_IC ("International Canoe", true, 5.20, 1.01, BoatHullType.MONOHULL, true, "Canoe IC", "Canoe-IC", "IC", "Kanu IC", "International Canoe", "International 10 Sq.m. Sailing Canoe"), CANOE_TAIFUN ("Canoe Taifun", true, 5.20, 1.32, BoatHullType.MONOHULL, false, "Taifun", "Taifun Kanu", "Kanu Taifun"), - B_ONE ("B/ONE", true, 7.80, 2.49, BoatHullType.MONOHULL, true, "B-ONE"), + CONTENDER ("Contender", true, 4.88, 1.42, BoatHullType.MONOHULL, false), D_ONE ("D-One", true, 4.23, 2.31, BoatHullType.MONOHULL, true, "Devoti D-One", "DOne", "D_One"), DRAGON_INT ("Dragon Int.", true, 8.89, 1.96, BoatHullType.MONOHULL, true, "Drachen", "Dragon"), + DYAS("Dyas", true, 7.15, 1.95, BoatHullType.MONOHULL, true), EXTREME_40 ("Extreme 40", false, 12.2, 6.60, BoatHullType.CATAMARAN, true, "Extreme-40", "Extreme40", "ESS40"), D_35 ("D35", false, 10.81, 6.89, BoatHullType.CATAMARAN, false), ELLIOTT_6M ("Elliott 6m", true, 6.0, 2.35, BoatHullType.MONOHULL, true, "Elliott6m"), @@ -32,6 +34,7 @@ public enum BoatClassMasterdata { F_18 ("Formula 18", true, 6.85, 2.25, BoatHullType.CATAMARAN, true, "F18", "F-18"), FARR_30 ("Farr 30", true, 9.42, 3.08, BoatHullType.MONOHULL, true, "F30", "F-30", "Farr-30"), FINN ("Finn", true, 4.50, 1.51, BoatHullType.MONOHULL, false), + FLYING_DUTCHMAN ("Flying Dutchman", true, 6.10, 1.80, BoatHullType.MONOHULL, true), FLYING_PHANTOM ("Flying Phantom", true, 5.52, 3.00, BoatHullType.CATAMARAN, true), FOLKBOAT ("Folkboat", true, 7.68, 2.20, BoatHullType.MONOHULL, false, "Folke", "Folkeboot"), FUN ("FUN", true, 7.20, 2.45, BoatHullType.MONOHULL, true, "FUN O.D.", "FUN OD", "Open FUN"), @@ -40,6 +43,7 @@ public enum BoatClassMasterdata { H_BOAT ("H-Boat", true, 8.28, 2.18, BoatHullType.MONOHULL, true, "HB"), HOBIE_TIGER ("Hobie Tiger", true, 5.51, 2.60, BoatHullType.CATAMARAN, true), HOBIE_WILD_CAT ("Hobie Wild Cat", true, 5.49, 2.59, BoatHullType.CATAMARAN, true, "Hobie Wild Cat F18"), + INTERNATIONAL_14("International 14", true, 4.27, 1.83, BoatHullType.MONOHULL, true, "I14", "Int.14", "Int14"), J22 ("J/22", true, 6.86, 2.44, BoatHullType.MONOHULL, true, "J22", "J-22"), J24 ("J/24", true, 7.32, 2.67, BoatHullType.MONOHULL, true, "J24", "J-24"), J70 ("J/70", true, 6.93, 2.25, BoatHullType.MONOHULL, true, "J70", "J-70"), @@ -58,9 +62,12 @@ public enum BoatClassMasterdata { NACRA_17 ("Nacra 17", true, 5.25, 2.59, BoatHullType.CATAMARAN, true, "N17", "Nacra-17"), O_JOLLE ("O-Jolle", true, 5.00, 1.66, BoatHullType.MONOHULL, false, "O Jolle", "OJolle", "Olympiajolle"), OK ("OK Dinghy", true, 5.25, 2.59, BoatHullType.MONOHULL, false, "OK-Dinghy", "OK-Jolle", "OK"), + OPEN_BIC("O'pen BIC", true, 2.75, 1.14, BoatHullType.MONOHULL, false, "OpenBIC"), OPTIMIST ("Optimist", true, 2.34, 1.07, BoatHullType.MONOHULL, false, "Opti", "Optimist Dinghy"), PIRATE ("Pirate", true, 5.00, 1.61, BoatHullType.MONOHULL, false, "Pirat", "Piraten"), PLATU_25 ("Platu 25", true, 7.53, 2.62, BoatHullType.MONOHULL, true, "Platu", "Platu-25", "PLA", "B25"), + PWA ("PWC", true, 5.0, 0.6, BoatHullType.MONOHULL, true, "Professional Windsurfers Association", "PWC World Tour"), + RC44 ("RC44", true, 13.35, 2.75, BoatHullType.MONOHULL, true), RS_X ("RS:X", true, 2.86, 0.93, BoatHullType.SURFERBOARD, false, "RS-X", "RSX", "RS:X"), RS_FEVA ("RS Feva", true, 3.64, 1.42, BoatHullType.MONOHULL, true, "RSFeva"), SONAR ("Sonar", true, 7.01, 2.39, BoatHullType.MONOHULL, true), @@ -71,12 +78,6 @@ public enum BoatClassMasterdata { TORNADO ("Tornado Catamaran", true, 6.10, 3.02, BoatHullType.CATAMARAN, true, "Tornado", "Tornado Cat"), TRIAS ("Trias", true, 9.20, 2.12, BoatHullType.MONOHULL, true), X_99 ("X-99", true, 9.96, 2.95, BoatHullType.MONOHULL, true, "X99"), - CONTENDER ("Contender", true, 4.88, 1.42, BoatHullType.MONOHULL, false), - RC44 ("RC44", true, 13.35, 2.75, BoatHullType.MONOHULL, true), - FLYING_DUTCHMAN ("Flying Dutchman", true, 6.10, 1.80, BoatHullType.MONOHULL, true), - DYAS("Dyas", true, 7.15, 1.95, BoatHullType.MONOHULL, true), - INTERNATIONAL_14("International 14", true, 4.27, 1.83, BoatHullType.MONOHULL, true, "I14", "Int.14", "Int14"), - OPEN_BIC("O'pen BIC", true, 2.75, 1.14, BoatHullType.MONOHULL, false, "OpenBIC"), // multi-class "boat classes"; to be replaced at some later point in time by something like a RegattaClass ORC ("ORC", true, 13.83, 3.91, BoatHullType.MONOHULL, true), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/BoatClassImageResolver.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/BoatClassImageResolver.java index 6be5f5a45b5..dfad0a8f8c4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/BoatClassImageResolver.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/BoatClassImageResolver.java @@ -40,6 +40,7 @@ public class BoatClassImageResolver { boatClassIconsMap.put(BoatClassMasterdata.CANOE_TAIFUN.getDisplayName(), imageResources.CanoeTaifunIcon()); boatClassIconsMap.put(BoatClassMasterdata.CONTENDER.getDisplayName(), imageResources.ContenderIcon()); boatClassIconsMap.put(BoatClassMasterdata.DRAGON_INT.getDisplayName(), imageResources.DragonIcon()); + boatClassIconsMap.put(BoatClassMasterdata.DYAS.getDisplayName(), imageResources.DyasIcon()); boatClassIconsMap.put(BoatClassMasterdata.EUROPE_INT.getDisplayName(), imageResources.EuropeIcon()); boatClassIconsMap.put(BoatClassMasterdata.EXTREME_40.getDisplayName(), imageResources.Extreme40Icon()); boatClassIconsMap.put(BoatClassMasterdata.D_ONE.getDisplayName(), imageResources.DOneIcon()); @@ -55,6 +56,7 @@ public class BoatClassImageResolver { boatClassIconsMap.put(BoatClassMasterdata.HOBIE_16.getDisplayName(), imageResources.HobieIcon()); boatClassIconsMap.put(BoatClassMasterdata.HOBIE_TIGER.getDisplayName(), imageResources.HobieIcon()); boatClassIconsMap.put(BoatClassMasterdata.HOBIE_WILD_CAT.getDisplayName(), imageResources.HobieIcon()); + boatClassIconsMap.put(BoatClassMasterdata.INTERNATIONAL_14.getDisplayName(), imageResources.International14Icon()); boatClassIconsMap.put(BoatClassMasterdata.J22.getDisplayName(), imageResources.J22Icon()); boatClassIconsMap.put(BoatClassMasterdata.J24.getDisplayName(), imageResources.J24Icon()); boatClassIconsMap.put(BoatClassMasterdata.J70.getDisplayName(), imageResources.J70Icon()); @@ -72,9 +74,12 @@ public class BoatClassImageResolver { boatClassIconsMap.put(BoatClassMasterdata.NACRA_17.getDisplayName(), imageResources.Nacra17Icon()); boatClassIconsMap.put(BoatClassMasterdata.O_JOLLE.getDisplayName(), imageResources.OJolleIcon()); boatClassIconsMap.put(BoatClassMasterdata.OK.getDisplayName(), imageResources.OKIcon()); + boatClassIconsMap.put(BoatClassMasterdata.OPEN_BIC.getDisplayName(), imageResources.OpenBicIcon()); boatClassIconsMap.put(BoatClassMasterdata.OPTIMIST.getDisplayName(), imageResources.OptimistIcon()); boatClassIconsMap.put(BoatClassMasterdata.PIRATE.getDisplayName(), imageResources.PiratIcon()); boatClassIconsMap.put(BoatClassMasterdata.PLATU_25.getDisplayName(), imageResources.Platu25Icon()); + boatClassIconsMap.put(BoatClassMasterdata.PWA.getDisplayName(), imageResources.PWAIcon()); + boatClassIconsMap.put(BoatClassMasterdata.RS800.getDisplayName(), imageResources.RS800Icon()); boatClassIconsMap.put(BoatClassMasterdata.RS_X.getDisplayName(), imageResources.RSXIcon()); boatClassIconsMap.put(BoatClassMasterdata.RS_FEVA.getDisplayName(), imageResources.RSFevaIcon()); boatClassIconsMap.put(BoatClassMasterdata.SONAR.getDisplayName(), imageResources.SonarIcon()); @@ -85,10 +90,6 @@ public class BoatClassImageResolver { boatClassIconsMap.put(BoatClassMasterdata.TORNADO.getDisplayName(), imageResources.TornadoIcon()); boatClassIconsMap.put(BoatClassMasterdata.TRIAS.getDisplayName(), imageResources.TriasIcon()); boatClassIconsMap.put(BoatClassMasterdata.X_99.getDisplayName(), imageResources.X99Icon()); - boatClassIconsMap.put(BoatClassMasterdata.INTERNATIONAL_14.getDisplayName(), imageResources.International14Icon()); - boatClassIconsMap.put(BoatClassMasterdata.DYAS.getDisplayName(), imageResources.DyasIcon()); - boatClassIconsMap.put(BoatClassMasterdata.OPEN_BIC.getDisplayName(), imageResources.OpenBicIcon()); - boatClassIconsMap.put(BoatClassMasterdata.RS800.getDisplayName(), imageResources.RS800Icon()); } public static ImageResource getBoatClassIconResource(String displayName) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/BoatClassImageResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/BoatClassImageResources.java index b03959ff82f..e74aed13b73 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/BoatClassImageResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/BoatClassImageResources.java @@ -196,4 +196,7 @@ public interface BoatClassImageResources extends ClientBundle { @Source("com/sap/sailing/gwt/ui/client/images/boatclass/D_ONE.png") ImageResource DOneIcon(); + @Source("com/sap/sailing/gwt/ui/client/images/boatclass/PWA.png") + ImageResource PWAIcon(); + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/BoatClassVectorGraphicsResolver.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/BoatClassVectorGraphicsResolver.java index 50c57d7bc62..856736ad876 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/BoatClassVectorGraphicsResolver.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/BoatClassVectorGraphicsResolver.java @@ -27,7 +27,7 @@ public class BoatClassVectorGraphicsResolver { BoatClassMasterdata.LASER_RADIAL, BoatClassMasterdata.LASER_4_7, BoatClassMasterdata.LASER_2, BoatClassMasterdata.CONTENDER, BoatClassMasterdata.FINN, BoatClassMasterdata.MUSTO_SKIFF, BoatClassMasterdata.OPEN_BIC, - BoatClassMasterdata.OPTIMIST, BoatClassMasterdata.RS_X, BoatClassMasterdata.STAR); + BoatClassMasterdata.OPTIMIST, BoatClassMasterdata.PWA, BoatClassMasterdata.RS_X, BoatClassMasterdata.STAR); BoatClassVectorGraphics _49er = new _49erVectorGraphics(BoatClassMasterdata._49ER, BoatClassMasterdata._49ERFX, BoatClassMasterdata._29ER, BoatClassMasterdata._18Footer); BoatClassVectorGraphics extreme40 = new Extreme40VectorGraphics(BoatClassMasterdata.EXTREME_40, diff --git a/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/boatclass/PWA.png b/java/com.sap.sailing.gwt.ui/src/main/resources/com/sap/sailing/gwt/ui/client/images/boatclass/PWA.png new file mode 100644 index 0000000000000000000000000000000000000000..65d75dad797cf3e90e480ef9eca850f0c320610f GIT binary patch literal 14688 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 literal 0 HcmV?d00001 diff --git a/java/com.sap.sailing.www/release_notes_admin.html b/java/com.sap.sailing.www/release_notes_admin.html index 0227996e103..2063bba61fc 100644 --- a/java/com.sap.sailing.www/release_notes_admin.html +++ b/java/com.sap.sailing.www/release_notes_admin.html @@ -37,6 +37,8 @@ created by the server if not known yet. Note that for such boat classes no boat class icon will be present when showing the regatta on the web page. +
  • Added boat classes Soling, Lago 26, Kielzugvogel, PWA (Professional Windsurfers Association) +
  • Bug fix: in rare cases, adding several series to a regatta in one go swapped the order of the series to be created. This has now been fixed.
  • From ecc21df0ab1700bcd65219bfea91ff85048e059d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 22 Sep 2015 22:15:42 +0200 Subject: [PATCH 345/504] fixed declination test that was assuming that 2016's declination data would have to come from the online service; now it's persistently cached --- .../sailing/declination/test/DeclinationServiceTest.java | 6 +++--- java/com.sap.sailing.www/release_notes_admin.html | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationServiceTest.java b/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationServiceTest.java index d0b580d801b..1cdb522ddb1 100755 --- a/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationServiceTest.java +++ b/java/com.sap.sailing.declination.test/src/com/sap/sailing/declination/test/DeclinationServiceTest.java @@ -35,11 +35,11 @@ public class DeclinationServiceTest extends AbstractDeclinationTest { @Test public void testDeclinationQueryNotMatchedInStore() throws IOException, ClassNotFoundException, ParseException { - Declination result = service.getDeclination(new MillisecondsTimePoint(simpleDateFormat.parse("2016-02-03").getTime()), + Declination result = service.getDeclination(new MillisecondsTimePoint(simpleDateFormat.parse("2019-02-03").getTime()), new DegreePosition(51, -5), /* timeoutForOnlineFetchInMilliseconds */ 30000); assertNotNull(result); - assertEquals(-2.41498, result.getBearing().getDegrees(), 0.0001); - assertEquals(0.15318, result.getAnnualChange().getDegrees(), 0.0001); + assertEquals(-1.9565, result.getBearing().getDegrees(), 0.0001); + assertEquals(0.15244, result.getAnnualChange().getDegrees(), 0.0001); } @Test diff --git a/java/com.sap.sailing.www/release_notes_admin.html b/java/com.sap.sailing.www/release_notes_admin.html index 2063bba61fc..476c0be0010 100644 --- a/java/com.sap.sailing.www/release_notes_admin.html +++ b/java/com.sap.sailing.www/release_notes_admin.html @@ -39,6 +39,8 @@
  • Added boat classes Soling, Lago 26, Kielzugvogel, PWA (Professional Windsurfers Association)
  • +
  • Included magnetic declination data for 2016 already. +
  • Bug fix: in rare cases, adding several series to a regatta in one go swapped the order of the series to be created. This has now been fixed.
  • From ec0fd563a3d42ff5c181bec208899b49c1af0028 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 22 Sep 2015 22:45:33 +0200 Subject: [PATCH 346/504] for elimination scoring, keep scores of promoted competitors up to end of race time point from which they got promoted --- ...WithEliminationsAndRoundsWinnerGets07.java | 25 +++++++++++++++++-- .../release_notes_admin.html | 10 ++++---- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java index 357ae0bec70..337e864477c 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LowPointWithEliminationsAndRoundsWinnerGets07.java @@ -205,14 +205,35 @@ public class LowPointWithEliminationsAndRoundsWinnerGets07 extends LowPoint { return result; } - private boolean participatesInNextRound(Leaderboard leaderboard, RaceColumnInSeries raceColumnInSeries, Competitor competitor, TimePoint timePoint, Iterator seriesInRegattaIter) { + /** + * A competitor can participate in the next round of an elimination after having been promoted from + * raceColumnInSeries. If the round represented by raceColumnInSeries is the last round in + * the elimination, the competitor obviously cannot participate in any next round, therefore false is + * returned in this case. Otherwise, next round participation is decided by first looking for a score correction. + * The score correction for the next column has to be valid at timePoint, then the competitor is considered + * having participated in that next round at timePoint. If no score correction is found for the next column, + * the next column is checked for a tracked race in which competitor competes. If such a race is found, + * the question remains whether this participation is considered "active" at timePoint. This is assumed + * if in the current round represented by raceColumnInSeries no tracked race is found for competitor + * (unlikely, but it means we cannot tell whether competitor has already finished her current race, and by + * default we then have to assume that it's over) or the end of that race was before timePoint.

    + * + * This will keep competitor's score in raceColumnInSeries for time points where the race + * in this column is still running. Only after the race has finished will the promotion become active and competitor + * lose her points in the current column. + */ + private boolean participatesInNextRound(Leaderboard leaderboard, RaceColumnInSeries raceColumnInSeries, + Competitor competitor, TimePoint timePoint, Iterator seriesInRegattaIter) { final boolean result; if (isLastRoundInElimination(raceColumnInSeries, seriesInRegattaIter)) { result = false; } else { final Series nextSeries = seriesInRegattaIter.next(); + final TrackedRace trackedRace; result = leaderboard.getScoreCorrection().isScoreCorrected(competitor, nextSeries.getRaceColumns().iterator().next(), timePoint) || - nextSeries.getRaceColumns().iterator().next().getFleetOfCompetitor(competitor) != null; + (nextSeries.getRaceColumns().iterator().next().getFleetOfCompetitor(competitor) != null && + ((trackedRace=raceColumnInSeries.getTrackedRace(competitor)) == null || trackedRace.getEndOfRace() == null || + trackedRace.getEndOfRace().before(timePoint))); } return result; } diff --git a/java/com.sap.sailing.www/release_notes_admin.html b/java/com.sap.sailing.www/release_notes_admin.html index e58212643b2..cba0b1a3226 100644 --- a/java/com.sap.sailing.www/release_notes_admin.html +++ b/java/com.sap.sailing.www/release_notes_admin.html @@ -33,6 +33,11 @@

  • The "Device Configuration" tab has been moved into a new top-level tab "Race Committee App".
  • +
  • Included magnetic declination data for 2016 already. +
  • +
  • Bug fix: in rare cases, adding several series to a regatta in one go swapped the order + of the series to be created. This has now been fixed. +

August 2015

    @@ -48,11 +53,6 @@
  • Added boat classes Soling, Lago 26, Kielzugvogel, PWA (Professional Windsurfers Association)
  • -
  • Included magnetic declination data for 2016 already. -
  • -
  • Bug fix: in rare cases, adding several series to a regatta in one go swapped the order - of the series to be created. This has now been fixed. -

June 2015

    From ab68fab1d224e6f0a05388c48506b53701b8b3ef Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 22 Sep 2015 22:50:40 +0200 Subject: [PATCH 347/504] fixed PWA boat class master data (typo: PWC --> PWA) --- .../src/com/sap/sailing/domain/common/BoatClassMasterdata.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java index 89b78c6464d..dd0ce21a1f7 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/BoatClassMasterdata.java @@ -66,7 +66,7 @@ public enum BoatClassMasterdata { OPTIMIST ("Optimist", true, 2.34, 1.07, BoatHullType.MONOHULL, false, "Opti", "Optimist Dinghy"), PIRATE ("Pirate", true, 5.00, 1.61, BoatHullType.MONOHULL, false, "Pirat", "Piraten"), PLATU_25 ("Platu 25", true, 7.53, 2.62, BoatHullType.MONOHULL, true, "Platu", "Platu-25", "PLA", "B25"), - PWA ("PWC", true, 5.0, 0.6, BoatHullType.MONOHULL, true, "Professional Windsurfers Association", "PWC World Tour"), + PWA ("PWA", true, 5.0, 0.6, BoatHullType.MONOHULL, true, "Professional Windsurfers Association", "PWA World Tour"), RC44 ("RC44", true, 13.35, 2.75, BoatHullType.MONOHULL, true), RS_X ("RS:X", true, 2.86, 0.93, BoatHullType.SURFERBOARD, false, "RS-X", "RSX", "RS:X"), RS_FEVA ("RS Feva", true, 3.64, 1.42, BoatHullType.MONOHULL, true, "RSFeva"), From e1cbf384ce46c6c1077b0cad13f9ed517582753a Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 23 Sep 2015 10:07:26 +0200 Subject: [PATCH 348/504] Refactoring - Removed unused series place and view classes --- .../fakeseries/AbstractSeriesActivity.java | 110 ------------------ .../TabletAndDesktopSeriesView.ui.xml | 3 - .../fakeseries/tabs/SeriesMediaPlace.java | 26 ----- .../fakeseries/tabs/SeriesMediaTabView.java | 78 ------------- .../fakeseries/tabs/SeriesMediaTabView.ui.xml | 6 - .../shared/app/ApplicationHistoryMapper.java | 4 - 6 files changed, 227 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesMediaPlace.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesMediaTabView.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesMediaTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java deleted file mode 100644 index f50ef82fd35..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesActivity.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries; - -import java.util.UUID; - -import com.google.gwt.activity.shared.AbstractActivity; -import com.google.gwt.core.shared.GWT; -import com.google.gwt.place.shared.Place; -import com.google.gwt.safehtml.shared.SafeUri; -import com.google.gwt.safehtml.shared.UriUtils; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; -import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory; -import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; -import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper; -import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; -import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; -import com.sap.sailing.gwt.home.shared.places.start.StartPlace; -import com.sap.sailing.gwt.ui.shared.media.MediaDTO; -import com.sap.sse.gwt.client.mvp.ErrorView; - -public abstract class AbstractSeriesActivity extends AbstractActivity implements SeriesView.Presenter { - - protected final PLACE currentPlace; - protected final SeriesContext ctx; - protected final SeriesClientFactory clientFactory; - - protected final DesktopPlacesNavigator homePlacesNavigator; - - private static final ApplicationHistoryMapper historyMapper = GWT.create(ApplicationHistoryMapper.class); - - public AbstractSeriesActivity(PLACE place, SeriesClientFactory clientFactory, DesktopPlacesNavigator homePlacesNavigator) { - this.currentPlace = place; - this.ctx = new SeriesContext(place.getCtx()); - this.clientFactory = clientFactory; - this.homePlacesNavigator = homePlacesNavigator; - } - - @Override - public SeriesContext getCtx() { - return ctx; - } - - @Override - public void handleTabPlaceSelection(TabView selectedActivity) { - Place tabPlaceToGo = selectedActivity.placeToFire(); - clientFactory.getPlaceController().goTo(tabPlaceToGo); - } - - public void navigateTo(Place place) { - clientFactory.getPlaceController().goTo(place); - } - - @Override - public SafeUri getUrl(AbstractSeriesPlace place) { - String token = historyMapper.getToken(place); - return UriUtils.fromString("#" + token); - } - - @Override - public PlaceNavigation getHomeNavigation() { - return homePlacesNavigator.getHomeNavigation(); - } - - @Override - public PlaceNavigation getEventsNavigation() { - return homePlacesNavigator.getEventsNavigation(); - } - - @Override - public PlaceNavigation getEventNavigation(UUID eventId) { - return homePlacesNavigator.getEventNavigation(eventId.toString(), null, false); - } - - @Override - public PlaceNavigation getCurrentEventSeriesNavigation() { - return homePlacesNavigator.getEventSeriesNavigation(ctx.getSeriesId(), null, false); - } - - @Override - public void ensureMedia(final AsyncCallback callback) { - if(ctx.getMedia() != null) { - callback.onSuccess(ctx.getMedia()); - return; - } - clientFactory.getHomeService().getMediaForEventSeries(ctx.getSeriesDTO().getId(), new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - // TODO @FM: extract error message - ErrorView errorView = clientFactory.createErrorView("Load media failure for series", caught); - getView().showErrorInCurrentTab(errorView); - // TODO: notify callback of failure? - // callback.onFailure(caught); - } - - @Override - public void onSuccess(MediaDTO result) { - ctx.withMedia(result); - callback.onSuccess(result); - } - }); - } - - @Override - public boolean hasMedia() { - return ctx.getSeriesDTO().isHasMedia(); - } - - protected abstract SeriesView getView(); -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.ui.xml index f6e28eb8c3e..5886dbae1df 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.ui.xml @@ -57,9 +57,6 @@ - - - \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesMediaPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesMediaPlace.java deleted file mode 100644 index d10501afecd..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesMediaPlace.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; - -import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; - -public class SeriesMediaPlace extends AbstractSeriesTabPlace { - public SeriesMediaPlace(String id) { - super(id); - } - - public SeriesMediaPlace(SeriesContext context) { - super(context); - } - - @Prefix(EventPrefixes.EventSeriesMedia) - public static class Tokenizer extends AbstractSeriesPlace.Tokenizer { - - @Override - protected SeriesMediaPlace getRealPlace(SeriesContext context) { - return new SeriesMediaPlace(context); - } - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesMediaTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesMediaTabView.java deleted file mode 100644 index 7b6212ecd83..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesMediaTabView.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.HTMLPanel; -import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesTabView; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView; -import com.sap.sailing.gwt.home.desktop.partials.media.MediaPage; -import com.sap.sailing.gwt.ui.shared.media.MediaDTO; - -public class SeriesMediaTabView extends Composite implements SeriesTabView { - - // TODO delete UiBinder if we do not need it for the new media page implementation - interface MyBinder extends UiBinder { - } - - @SuppressWarnings("unused") - private static MyBinder ourUiBinder = GWT.create(MyBinder.class); - private SeriesView.Presenter currentPresenter; - - public SeriesMediaTabView() { - } - - @Override - public Class getPlaceClassForActivation() { - return SeriesMediaPlace.class; - } - - @Override - public TabView.State getState() { - return TabView.State.INVISIBLE; - // TODO return currentPresenter.hasMedia() ? TabView.State.VISIBLE : TabView.State.INVISIBLE; - } - - @Override - public void start(SeriesMediaPlace myPlace, AcceptsOneWidget contentArea) { - final MediaPage mediaPage = new MediaPage(); - - currentPresenter.ensureMedia(new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - // TODO Auto-generated method stub - - } - - @Override - public void onSuccess(MediaDTO media) { - mediaPage.setMedia(media); - } - }); - - initWidget(mediaPage); - - // TODO do we need UiBinder here? -// initWidget(ourUiBinder.createAndBindUi(this)); - - contentArea.setWidget(this); - } - - @Override - public void stop() { - - } - - @Override - public SeriesMediaPlace placeToFire() { - return new SeriesMediaPlace(currentPresenter.getCtx()); - } - - @Override - public void setPresenter(SeriesView.Presenter currentPresenter) { - this.currentPresenter = currentPresenter; - } -} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesMediaTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesMediaTabView.ui.xml deleted file mode 100644 index 80baf30fc20..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesMediaTabView.ui.xml +++ /dev/null @@ -1,6 +0,0 @@ - - -

    This is the series media tab

    -
    -
    \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java index e7dd2483a44..a60c984a158 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java @@ -19,7 +19,6 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesCompetit import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesLeaderboardsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesMediaPlace; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; @@ -50,17 +49,14 @@ import com.sap.sailing.gwt.home.shared.places.start.StartPlace; RegattaMediaPlace.Tokenizer.class, // Fake series places: SeriesDefaultPlace.Tokenizer.class, - RegattaOverviewPlace.Tokenizer.class, SeriesEventsPlace.Tokenizer.class, EventSeriesCompetitorAnalyticsPlace.Tokenizer.class, EventSeriesOverallLeaderboardPlace.Tokenizer.class, EventSeriesLeaderboardsPlace.Tokenizer.class, - SeriesMediaPlace.Tokenizer.class, // Mobile only places: LatestNewsPlace.Tokenizer.class, MiniLeaderboardPlace.Tokenizer.class, SeriesMiniOverallLeaderboardPlace.Tokenizer.class - }) public interface ApplicationHistoryMapper extends PlaceHistoryMapper { } From 3b48993c631cf66ac02e1a3fa328a964d1f81e64 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 23 Sep 2015 08:55:35 +0000 Subject: [PATCH 349/504] Created Polars (markdown) --- Polars.md | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Polars.md diff --git a/Polars.md b/Polars.md new file mode 100644 index 00000000000..d26dd6b245c --- /dev/null +++ b/Polars.md @@ -0,0 +1,65 @@ +# Polars + +[[_TOC_]] + +## Introduction + +Polar Diagrams (or Polar Plots or Polars in short) describe how fast a boat can go depending on the wind speed and its angle to the true wind. It helps sailors to find the best angle to sail to reach their target destination. In the SAP Sailing Analytics we gather a lot of race data, which can be used to create estimations of the boats polar diagram. + +This wiki page provides information on how to use the polar features in the Analytics, details on the architecture and some further ideas and problems connected to the storage and generation of polars in our system. + +## Two Approaches + +It's important to understand that we have two different approaches for gathering polar diagrams in the Analytics. We give the user datamining tools to build custom polars and we also automatically gather polars for each boat class on the server to be used by other features through an API called the PolarDataService. + +### Custom Polars (Datamining) + +Custom Polars can be generated in the datamining UI. You can choose filters and groupings as you desire and fire a query at the server. The server than applies these settings and returns your custom polar diagram with some additional information like underlying data sizes. The focus in this approach lies on the configurability of the query to give the user a lot of power to answer the questions they ask concerning polars. Example: You want to compare the polars of the winner of a race with the polars of the sailor who finished last. You can do that with the datamining tools. A more detailed description on how to use the polar datamining features can be found here: _TODO_ + +What the polar datamining feature is **not**: It is not very fast for big queries and shouldn't be used (at least as is) for automated queries that are used in real time features. It is not optimized for that purpose. For those kind of things we provide a designated Backend API called *PolarDataService*. + +### PolarDataService (Backend API) + +The PolarDataService is a backend API providing access to polar data that is gathered on the backend. The data structures and aggregation is designed for fast responses and real time usage. The PolarDataService is registered as an OSGi Service and can be used very independently (you only need a dependency to com.sap.sailing.domain). You can for example ask the PolarDataService for an estimated speed and beatangle for a given boatclass, windspeed and legtype (upwind or downwind) or for an estimated speed for a given boatclass, windspeed and beatangle (e.g. for reaching legs). To be light memorywise, the backend structures don't save a lot of additional data, so it does not provide any custom filtering. + +For more information on how to use the PolarDataService, please see this section: _TODO_ + +## Using the Datamining UI for Polars + +_TODO_ + +## Using the PolarDataService + +_TODO_ + +## Polar Datamining Architecture + +_TODO_ + +### File Locations / Project Structure + +_TODO_ + +### Extending the Feature + +_TODO_ + +### Known Issues + +_TODO_ + +## PolarDataService Architecture + +_TODO_ + +### File Locations / Project Structure + +_TODO_ + +### Main Data Structure + +_TODO_ + +### File Locations + +_TODO_ From d09f8ce2dea039c94731fb1c5b29ed1bae9abefe Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 23 Sep 2015 08:57:10 +0000 Subject: [PATCH 350/504] Updated home (markdown) --- home.md | 1 + 1 file changed, 1 insertion(+) diff --git a/home.md b/home.md index c1ec06f448c..50ee84c389b 100644 --- a/home.md +++ b/home.md @@ -23,6 +23,7 @@ SAP is at the center of today’s technology revolution, developing innovations * [[Web Services API|wiki/sailing-webservices]] * [[Theses (Bachelor, Master, ...)|wiki/theses]] * [[Google Analytics (Web Page Tracking)|wiki/ganalytics]] + * [[Polars|wiki/Polars]] * Production Environment * [[Amazon EC2|wiki/amazon-ec2]] * [[EC2 Backup Strategy|wiki/amazon-ec2-backup-strategy]] From b659eebc38b9d4bf7536b0ee4ac0d7b6304725b7 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 23 Sep 2015 08:58:13 +0000 Subject: [PATCH 351/504] Created Polars (markdown) --- wiki/Polars.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 wiki/Polars.md diff --git a/wiki/Polars.md b/wiki/Polars.md new file mode 100644 index 00000000000..e373f1a511f --- /dev/null +++ b/wiki/Polars.md @@ -0,0 +1,65 @@ +# Polars + +[[_TOC_]] + +## Introduction + +Polar Diagrams (or Polar Plots or Polars in short) describe how fast a boat can go depending on the wind speed and its angle to the true wind. It helps sailors to find the best angle to sail to reach their target destination. In the SAP Sailing Analytics we gather a lot of race data, which can be used to create estimations of the boats polar diagram. + +This wiki page provides information on how to use the polar features in the Analytics, details on the architecture and some further ideas and problems connected to the storage and generation of polars in our system. + +## Two Different Approaches + +It's important to understand that we have two different approaches for gathering polar diagrams in the Analytics. We give the user datamining tools to build custom polars and we also automatically gather polars for each boat class on the server to be used by other features through an API called the PolarDataService. + +### Custom Polars (Datamining) + +Custom Polars can be generated in the datamining UI. You can choose filters and groupings as you desire and fire a query at the server. The server than applies these settings and returns your custom polar diagram with some additional information like underlying data sizes. The focus in this approach lies on the configurability of the query to give the user a lot of power to answer the questions they ask concerning polars. Example: You want to compare the polars of the winner of a race with the polars of the sailor who finished last. You can do that with the datamining tools. A more detailed description on how to use the polar datamining features can be found here: _TODO_ + +What the polar datamining feature is **not**: It is not very fast for big queries and shouldn't be used (at least as is) for automated queries that are used in real time features. It is not optimized for that purpose. For those kind of things we provide a designated Backend API called *PolarDataService*. + +### PolarDataService (Backend API) + +The PolarDataService is a backend API providing access to polar data that is gathered on the backend. The data structures and aggregation is designed for fast responses and real time usage. The PolarDataService is registered as an OSGi Service and can be used very independently (you only need a dependency to com.sap.sailing.domain). You can for example ask the PolarDataService for an estimated speed and beatangle for a given boatclass, windspeed and legtype (upwind or downwind) or for an estimated speed for a given boatclass, windspeed and beatangle (e.g. for reaching legs). To be light memorywise, the backend structures don't save a lot of additional data, so it does not provide any custom filtering. + +For more information on how to use the PolarDataService, please see this section: _TODO_ + +## Using the Datamining UI for Polars + +_TODO_ + +## Using the PolarDataService + +_TODO_ + +## Polar Datamining Architecture + +_TODO_ + +### File Locations / Project Structure + +_TODO_ + +### Extending the Feature + +_TODO_ + +### Known Issues + +_TODO_ + +## PolarDataService Architecture + +_TODO_ + +### File Locations / Project Structure + +_TODO_ + +### Main Data Structure + +_TODO_ + +### File Locations + +_TODO_ From a389af50142ceec83625e967134166d9995974dd Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 23 Sep 2015 08:58:43 +0000 Subject: [PATCH 352/504] Destroyed Polars (markdown) --- Polars.md | 65 ------------------------------------------------------- 1 file changed, 65 deletions(-) delete mode 100644 Polars.md diff --git a/Polars.md b/Polars.md deleted file mode 100644 index d26dd6b245c..00000000000 --- a/Polars.md +++ /dev/null @@ -1,65 +0,0 @@ -# Polars - -[[_TOC_]] - -## Introduction - -Polar Diagrams (or Polar Plots or Polars in short) describe how fast a boat can go depending on the wind speed and its angle to the true wind. It helps sailors to find the best angle to sail to reach their target destination. In the SAP Sailing Analytics we gather a lot of race data, which can be used to create estimations of the boats polar diagram. - -This wiki page provides information on how to use the polar features in the Analytics, details on the architecture and some further ideas and problems connected to the storage and generation of polars in our system. - -## Two Approaches - -It's important to understand that we have two different approaches for gathering polar diagrams in the Analytics. We give the user datamining tools to build custom polars and we also automatically gather polars for each boat class on the server to be used by other features through an API called the PolarDataService. - -### Custom Polars (Datamining) - -Custom Polars can be generated in the datamining UI. You can choose filters and groupings as you desire and fire a query at the server. The server than applies these settings and returns your custom polar diagram with some additional information like underlying data sizes. The focus in this approach lies on the configurability of the query to give the user a lot of power to answer the questions they ask concerning polars. Example: You want to compare the polars of the winner of a race with the polars of the sailor who finished last. You can do that with the datamining tools. A more detailed description on how to use the polar datamining features can be found here: _TODO_ - -What the polar datamining feature is **not**: It is not very fast for big queries and shouldn't be used (at least as is) for automated queries that are used in real time features. It is not optimized for that purpose. For those kind of things we provide a designated Backend API called *PolarDataService*. - -### PolarDataService (Backend API) - -The PolarDataService is a backend API providing access to polar data that is gathered on the backend. The data structures and aggregation is designed for fast responses and real time usage. The PolarDataService is registered as an OSGi Service and can be used very independently (you only need a dependency to com.sap.sailing.domain). You can for example ask the PolarDataService for an estimated speed and beatangle for a given boatclass, windspeed and legtype (upwind or downwind) or for an estimated speed for a given boatclass, windspeed and beatangle (e.g. for reaching legs). To be light memorywise, the backend structures don't save a lot of additional data, so it does not provide any custom filtering. - -For more information on how to use the PolarDataService, please see this section: _TODO_ - -## Using the Datamining UI for Polars - -_TODO_ - -## Using the PolarDataService - -_TODO_ - -## Polar Datamining Architecture - -_TODO_ - -### File Locations / Project Structure - -_TODO_ - -### Extending the Feature - -_TODO_ - -### Known Issues - -_TODO_ - -## PolarDataService Architecture - -_TODO_ - -### File Locations / Project Structure - -_TODO_ - -### Main Data Structure - -_TODO_ - -### File Locations - -_TODO_ From 987978ae2609c7d19fa15964ea38f2df4dc4709f Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 23 Sep 2015 11:00:47 +0200 Subject: [PATCH 353/504] Refactoring - Moved shared series places into respective package --- .../home/client/place/event/AbstractEventActivity.java | 2 +- .../sailing/gwt/home/client/place/event/EventView.java | 2 +- .../place/event/regatta/TabletAndDesktopEventView.java | 2 +- .../client/place/fakeseries/AbstractSeriesTabPlace.java | 3 +++ .../gwt/home/client/place/fakeseries/SeriesActivity.java | 3 +++ .../home/client/place/fakeseries/SeriesActivityProxy.java | 3 +++ .../gwt/home/client/place/fakeseries/SeriesTabView.java | 1 + .../gwt/home/client/place/fakeseries/SeriesView.java | 3 +++ .../tabs/EventSeriesCompetitorAnalyticsPlace.java | 4 ++-- .../fakeseries/tabs/EventSeriesLeaderboardsPlace.java | 4 ++-- .../tabs/EventSeriesOverallLeaderboardPlace.java | 4 ++-- .../client/place/fakeseries/tabs/SeriesEventsPlace.java | 4 ++-- .../client/place/fakeseries/tabs/SeriesOverviewPlace.java | 4 ++-- .../gwt/home/desktop/app/DesktopActivityMapper.java | 2 +- .../gwt/home/desktop/app/DesktopPlacesNavigator.java | 2 +- .../sailing/gwt/home/mobile/app/MobileActivityMapper.java | 2 +- .../gwt/home/mobile/app/MobilePlacesNavigator.java | 4 ++-- .../home/mobile/places/event/AbstractEventActivity.java | 2 +- .../gwt/home/mobile/places/series/SeriesActivity.java | 4 ++-- .../home/mobile/places/series/SeriesActivityProxy.java | 2 +- .../sailing/gwt/home/mobile/places/series/SeriesView.java | 2 +- .../SeriesMiniOverallLeaderboardActivity.java | 4 ++-- .../SeriesMiniOverallLeaderboardPlace.java | 4 ++-- .../minileaderboard/SeriesMiniOverallLeaderboardView.java | 2 +- .../SeriesMiniOverallLeaderboardViewImpl.java | 2 +- .../gwt/home/shared/app/ApplicationHistoryMapper.java | 2 +- .../gwt/home/shared/app/ApplicationPlaceUpdater.java | 4 ++-- .../places}/fakeseries/AbstractSeriesPlace.java | 2 +- .../place => shared/places}/fakeseries/SeriesContext.java | 8 ++------ .../places}/fakeseries/SeriesDefaultPlace.java | 2 +- 30 files changed, 49 insertions(+), 40 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => shared/places}/fakeseries/AbstractSeriesPlace.java (96%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => shared/places}/fakeseries/SeriesContext.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => shared/places}/fakeseries/SeriesDefaultPlace.java (92%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java index 2e75dd2e2a7..f29c3a09de1 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java @@ -16,12 +16,12 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaP import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.shared.places.start.StartPlace; import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory; import com.sap.sailing.gwt.ui.client.HomeServiceAsync; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java index fb1b2e0087f..fac2bcb8f32 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java @@ -10,10 +10,10 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.shared.places.start.StartPlace; import com.sap.sailing.gwt.ui.client.HomeServiceAsync; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.java index efde3168898..6588ec0e73c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.java @@ -20,10 +20,10 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanel; import com.sap.sailing.gwt.common.client.controls.tabbar.TabPanelPlaceSelectionEvent; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.common.client.i18n.TextMessages; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.desktop.partials.eventheader.EventHeader; import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesTabPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesTabPlace.java index ce88c3f6ccc..d793fde519e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesTabPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesTabPlace.java @@ -1,5 +1,8 @@ package com.sap.sailing.gwt.home.client.place.fakeseries; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; + public abstract class AbstractSeriesTabPlace extends AbstractSeriesPlace { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java index d4d35eb7c82..b8a7e733b64 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java @@ -18,6 +18,9 @@ import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.shared.places.start.StartPlace; import com.sap.sailing.gwt.ui.shared.media.MediaDTO; import com.sap.sse.gwt.client.async.AsyncActionsExecutor; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivityProxy.java index 009e99ff7b8..b1a485898c9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivityProxy.java @@ -10,6 +10,9 @@ import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesTabView.java index da8a7f0d828..bfef7dec278 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesTabView.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.home.client.place.fakeseries; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; public interface SeriesTabView extends TabView { } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java index 911ff99cd71..f4386ffe8d5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java @@ -10,6 +10,9 @@ import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.shared.places.start.StartPlace; import com.sap.sailing.gwt.ui.shared.media.MediaDTO; import com.sap.sse.gwt.client.player.Timer; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsPlace.java index 78f707c1632..e540a6fef4e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsPlace.java @@ -2,9 +2,9 @@ package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; public class EventSeriesCompetitorAnalyticsPlace extends AbstractSeriesTabPlace { public EventSeriesCompetitorAnalyticsPlace(String id) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsPlace.java index 64c815c72d6..562f5347733 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsPlace.java @@ -2,9 +2,9 @@ package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; public class EventSeriesLeaderboardsPlace extends AbstractSeriesTabPlace { public EventSeriesLeaderboardsPlace(String id) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesOverallLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesOverallLeaderboardPlace.java index 0ac7a6b3829..c2cc9a04887 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesOverallLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesOverallLeaderboardPlace.java @@ -2,9 +2,9 @@ package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; public class EventSeriesOverallLeaderboardPlace extends AbstractSeriesTabPlace { public EventSeriesOverallLeaderboardPlace(String id) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsPlace.java index eda58630994..dbf07ae3928 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsPlace.java @@ -2,9 +2,9 @@ package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; public class SeriesEventsPlace extends AbstractSeriesTabPlace { public SeriesEventsPlace(String id) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewPlace.java index 0b0ec1a7193..3bf02f7d440 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewPlace.java @@ -2,10 +2,10 @@ package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; public class SeriesOverviewPlace extends AbstractSeriesTabPlace implements HasMobileVersion { public SeriesOverviewPlace(String id) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java index 20c3cc9ade6..91d16655311 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java @@ -5,7 +5,6 @@ import com.google.gwt.activity.shared.ActivityMapper; import com.google.gwt.place.shared.Place; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventActivityProxy; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsActivityProxy; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.desktop.places.contact.ContactActivityProxy; @@ -24,6 +23,7 @@ import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint; import com.sap.sailing.gwt.home.shared.app.ApplicationPlaceUpdater; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.shared.places.start.StartPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java index ca335860f0c..19c92c466d2 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java @@ -11,7 +11,6 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaP import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaCompetitorAnalyticsPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; @@ -21,6 +20,7 @@ import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNa import com.sap.sailing.gwt.home.shared.app.AbstractPlaceNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.shared.places.start.StartPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java index 684ab0973ab..d0b5f2af81d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java @@ -5,7 +5,6 @@ import com.google.gwt.activity.shared.ActivityMapper; import com.google.gwt.core.client.GWT; import com.google.gwt.place.shared.Place; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.mobile.places.event.EventActivityProxy; import com.sap.sailing.gwt.home.mobile.places.events.EventsActivityProxy; import com.sap.sailing.gwt.home.mobile.places.series.SeriesActivityProxy; @@ -16,6 +15,7 @@ import com.sap.sailing.gwt.home.mobile.places.start.StartActivityProxy; import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint; import com.sap.sailing.gwt.home.shared.app.ApplicationPlaceUpdater; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.shared.places.start.StartPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java index fa76530165a..e0857bd0736 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java @@ -6,8 +6,6 @@ import com.google.gwt.place.shared.PlaceController; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; @@ -17,6 +15,8 @@ import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.shared.app.AbstractPlaceNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace.SolutionsNavigationTabs; import com.sap.sailing.gwt.home.shared.places.start.StartPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java index da88162b112..7ff596a5072 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -20,13 +20,13 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboa import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.news.LeaderboardNewsEntryDTO; import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java index 2cae1c076fa..90e6a5400fb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java @@ -6,8 +6,6 @@ import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; @@ -15,6 +13,8 @@ import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderbo import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO; public class SeriesActivity extends AbstractActivity implements SeriesView.Presenter { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivityProxy.java index 500deaeb911..567e406a08d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivityProxy.java @@ -1,8 +1,8 @@ package com.sap.sailing.gwt.home.mobile.places.series; import com.google.gwt.core.client.GWT; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; public class SeriesActivityProxy extends AbstractActivityProxy { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesView.java index 11a663cc68a..dbd1fe3f695 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesView.java @@ -3,10 +3,10 @@ package com.sap.sailing.gwt.home.mobile.places.series; import java.util.Collection; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.places.SeriesLeaderboardNavigationProvider; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; public interface SeriesView { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java index f9f7a15b596..b3f0c65a5bc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java @@ -6,14 +6,14 @@ import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO; public class SeriesMiniOverallLeaderboardActivity extends AbstractActivity implements SeriesMiniOverallLeaderboardView.Presenter { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardPlace.java index 033ba1b3707..6c61d41ad4a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardPlace.java @@ -3,10 +3,10 @@ package com.sap.sailing.gwt.home.mobile.places.series.minileaderboard; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.common.client.i18n.TextMessages; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.shared.app.HasLocationTitle; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; +import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; public class SeriesMiniOverallLeaderboardPlace extends AbstractSeriesPlace implements HasLocationTitle, HasMobileVersion { public SeriesMiniOverallLeaderboardPlace(String id) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardView.java index c4ac35ce5ae..c4e2cb84922 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardView.java @@ -3,11 +3,11 @@ package com.sap.sailing.gwt.home.mobile.places.series.minileaderboard; import java.util.Collection; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.places.SeriesLeaderboardNavigationProvider; import com.sap.sailing.gwt.home.mobile.places.series.OverallLeaderboardNavigationProvider; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; public interface SeriesMiniOverallLeaderboardView { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java index 5224ab9857a..13f5edf07d5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardViewImpl.java @@ -8,11 +8,11 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.seriesheader.SeriesHeader; import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniOverallLeaderbordAction; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java index a60c984a158..6e3249d7324 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java @@ -14,7 +14,6 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboa import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesCompetitorAnalyticsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesLeaderboardsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; @@ -28,6 +27,7 @@ import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.shared.places.start.StartPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java index 50f5c2ba0cb..b424cf5fdc7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java @@ -13,12 +13,12 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboa import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesContext; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesCompetitorAnalyticsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesLeaderboardsPlace; import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; +import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; /** * Helper class to support converting old places to new ones. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/AbstractSeriesPlace.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/AbstractSeriesPlace.java index 6e25d8dbfd0..0e61c2b1cc3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/AbstractSeriesPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries; +package com.sap.sailing.gwt.home.shared.places.fakeseries; import java.util.HashMap; import java.util.Map; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesContext.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesContext.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesContext.java index 615b3c13685..0264be2dc8f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesContext.java @@ -1,5 +1,6 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries; +package com.sap.sailing.gwt.home.shared.places.fakeseries; +import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO; import com.sap.sailing.gwt.ui.shared.media.MediaDTO; @@ -7,19 +8,14 @@ import com.sap.sailing.gwt.ui.shared.media.MediaDTO; * Common context used by the different tabs in the series place. * * @author pgtaboada - * */ public class SeriesContext { private String seriesId; - private EventSeriesViewDTO seriesDTO; - private MediaDTO media; - private EventSeriesAnalyticsDataManager analyticsManager; - public SeriesContext() { } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesDefaultPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesDefaultPlace.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesDefaultPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesDefaultPlace.java index 2906e082ebc..e98382878ac 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesDefaultPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesDefaultPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries; +package com.sap.sailing.gwt.home.shared.places.fakeseries; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; From bcb2ccc99c766d90d08bca78bc8fedd6745aa817 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 23 Sep 2015 11:04:03 +0200 Subject: [PATCH 354/504] Refactoring - Removed unused series place and view classes --- .../TabletAndDesktopSeriesView.ui.xml | 3 - .../fakeseries/tabs/SeriesOverviewPlace.java | 27 --------- .../tabs/SeriesOverviewTabView.java | 57 ------------------- .../tabs/SeriesOverviewTabView.ui.xml | 13 ----- 4 files changed, 100 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewPlace.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewTabView.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.ui.xml index 5886dbae1df..c80cb75b397 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.ui.xml @@ -42,9 +42,6 @@ - - - diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewPlace.java deleted file mode 100644 index 3bf02f7d440..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewPlace.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; - -import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace; -import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; -import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; -import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; - -public class SeriesOverviewPlace extends AbstractSeriesTabPlace implements HasMobileVersion { - public SeriesOverviewPlace(String id) { - super(id); - } - - public SeriesOverviewPlace(SeriesContext context) { - super(context); - } - - @Prefix(EventPrefixes.SeriesOverview) - public static class Tokenizer extends AbstractSeriesPlace.Tokenizer { - - @Override - protected SeriesOverviewPlace getRealPlace(SeriesContext context) { - return new SeriesOverviewPlace(context); - } - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewTabView.java deleted file mode 100644 index 0a9973c5a69..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewTabView.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesTabView; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView; - -public class SeriesOverviewTabView extends Composite implements SeriesTabView { - - interface MyBinder extends UiBinder { - } - - private static MyBinder ourUiBinder = GWT.create(MyBinder.class); - private SeriesView.Presenter currentPresenter; - - public SeriesOverviewTabView() { - } - - @Override - public Class getPlaceClassForActivation() { - return SeriesOverviewPlace.class; - } - - @Override - public TabView.State getState() { - return TabView.State.NOT_AVAILABLE_SHOW_NEXT_AVAILABLE; - } - - @Override - public void start(SeriesOverviewPlace myPlace, AcceptsOneWidget contentArea) { - initWidget(ourUiBinder.createAndBindUi(this)); - - // TODO implement contents - - contentArea.setWidget(this); - - } - - @Override - public void stop() { - - } - - @Override - public SeriesOverviewPlace placeToFire() { - return new SeriesOverviewPlace(currentPresenter.getCtx()); - } - - @Override - public void setPresenter(SeriesView.Presenter currentPresenter) { - this.currentPresenter = currentPresenter; - } -} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewTabView.ui.xml deleted file mode 100644 index d78635f45b3..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesOverviewTabView.ui.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - .container { - padding-top: 3em; - padding-bottom: 3em; - } - - - - \ No newline at end of file From 742729b0513b8c0418ba3d0cfd57b5475af7d526 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 23 Sep 2015 11:11:29 +0200 Subject: [PATCH 355/504] Refactoring - Moved shared series places and views into respective package --- .../tabs/EventSeriesCompetitorAnalyticsPlace.java | 2 +- .../tabs/EventSeriesCompetitorAnalyticsTabView.java | 4 ++-- .../fakeseries/tabs/EventSeriesLeaderboardTabView.java | 4 ++-- .../place/fakeseries/tabs/EventSeriesLeaderboardsPlace.java | 2 +- .../fakeseries/tabs/EventSeriesLeaderboardsTabView.java | 6 +++--- .../fakeseries/tabs/EventSeriesOverallLeaderboardPlace.java | 2 +- .../client/place/fakeseries/tabs/SeriesEventsPlace.java | 2 +- .../client/place/fakeseries/tabs/SeriesEventsTabView.java | 4 ++-- .../tabs/SharedLeaderboardEventSeriesTabView.java | 6 +++--- .../sailing/gwt/home/desktop/app/DesktopActivityMapper.java | 2 +- .../home/desktop/partials/seriesheader/SeriesHeader.java | 4 ++-- .../places}/fakeseries/AbstractSeriesTabPlace.java | 2 +- .../places}/fakeseries/EventSeriesAnalyticsDataManager.java | 2 +- .../place => desktop/places}/fakeseries/SeriesActivity.java | 2 +- .../places}/fakeseries/SeriesActivityProxy.java | 2 +- .../place => desktop/places}/fakeseries/SeriesTabView.java | 2 +- .../place => desktop/places}/fakeseries/SeriesView.java | 2 +- .../places}/fakeseries/TabletAndDesktopSeriesView.java | 2 +- .../places}/fakeseries/TabletAndDesktopSeriesView.ui.xml | 0 .../gwt/home/shared/places/fakeseries/SeriesContext.java | 2 +- 20 files changed, 27 insertions(+), 27 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/fakeseries/AbstractSeriesTabPlace.java (87%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/fakeseries/EventSeriesAnalyticsDataManager.java (99%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/fakeseries/SeriesActivity.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/fakeseries/SeriesActivityProxy.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/fakeseries/SeriesTabView.java (81%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/fakeseries/SeriesView.java (97%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/fakeseries/TabletAndDesktopSeriesView.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/fakeseries/TabletAndDesktopSeriesView.ui.xml (100%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsPlace.java index e540a6fef4e..32acc718519 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsPlace.java @@ -2,7 +2,7 @@ package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.AbstractSeriesTabPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java index 9a83a47fe05..3643f411137 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java @@ -15,10 +15,10 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView; import com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts.OldCompetitorCharts; import com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts.OldCompetitorChartsDelegateFullscreenViewer; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.EventSeriesAnalyticsDataManager; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.java index 3b3fffb6485..c3c20b3cb18 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.java @@ -10,10 +10,10 @@ import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView; import com.sap.sailing.gwt.home.desktop.partials.old.leaderboard.OldLeaderboard; import com.sap.sailing.gwt.home.desktop.partials.old.leaderboard.OldLeaderboardDelegateFullscreenViewer; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.EventSeriesAnalyticsDataManager; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView; import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsPlace.java index 562f5347733..943cd341191 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsPlace.java @@ -2,7 +2,7 @@ package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.AbstractSeriesTabPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.java index 79dfc6aae84..991a8f15c02 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.java @@ -12,11 +12,11 @@ import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesTabView; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView; import com.sap.sailing.gwt.home.desktop.partials.old.multileaderboard.OldMultiLeaderboard; import com.sap.sailing.gwt.home.desktop.partials.old.multileaderboard.OldMultiLeaderboardDelegateFullscreenViewer; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.EventSeriesAnalyticsDataManager; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesTabView; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView; import com.sap.sailing.gwt.home.desktop.utils.EventParamUtils; import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesOverallLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesOverallLeaderboardPlace.java index c2cc9a04887..d44aed8f077 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesOverallLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesOverallLeaderboardPlace.java @@ -2,7 +2,7 @@ package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.AbstractSeriesTabPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsPlace.java index dbf07ae3928..88215ffc45a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsPlace.java @@ -2,7 +2,7 @@ package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.AbstractSeriesTabPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.java index d87f0db3bea..22766910700 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.java @@ -9,9 +9,9 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesTabView; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView; import com.sap.sailing.gwt.home.desktop.partials.eventsrecent.RecentEventTeaser; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesTabView; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.EventState; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SharedLeaderboardEventSeriesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SharedLeaderboardEventSeriesTabView.java index b288999ddbb..2676b7f696d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SharedLeaderboardEventSeriesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SharedLeaderboardEventSeriesTabView.java @@ -3,9 +3,9 @@ package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Composite; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.gwt.home.client.place.fakeseries.AbstractSeriesTabPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesTabView; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.AbstractSeriesTabPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.EventSeriesAnalyticsDataManager; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesTabView; import com.sap.sailing.gwt.home.desktop.utils.EventParamUtils; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java index 91d16655311..d0afc74bf78 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java @@ -55,7 +55,7 @@ public class DesktopActivityMapper implements ActivityMapper { AbstractEventPlace eventPlace = (AbstractEventPlace) place; return new EventActivityProxy(eventPlace, clientFactory, clientFactory.getHomePlacesNavigator()); } else if (place instanceof AbstractSeriesPlace) { - return new com.sap.sailing.gwt.home.client.place.fakeseries.SeriesActivityProxy((AbstractSeriesPlace) place, clientFactory, clientFactory.getHomePlacesNavigator()); + return new com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesActivityProxy((AbstractSeriesPlace) place, clientFactory, clientFactory.getHomePlacesNavigator()); } else if (place instanceof EventsPlace) { return new EventsActivityProxy((EventsPlace) place, clientFactory); } else if (place instanceof StartPlace) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/seriesheader/SeriesHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/seriesheader/SeriesHeader.java index 35a6475021f..fd90bb612d3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/seriesheader/SeriesHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/seriesheader/SeriesHeader.java @@ -15,10 +15,10 @@ import com.google.gwt.user.client.ui.InlineLabel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.LinkUtil; import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView; -import com.sap.sailing.gwt.home.client.place.fakeseries.SeriesView.Presenter; import com.sap.sailing.gwt.home.desktop.partials.sharing.SharingButtons; import com.sap.sailing.gwt.home.desktop.partials.sharing.SharingMetadataProvider; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView.Presenter; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.utils.LabelTypeUtil; import com.sap.sailing.gwt.ui.client.StringMessages; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesTabPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/AbstractSeriesTabPlace.java similarity index 87% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesTabPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/AbstractSeriesTabPlace.java index d793fde519e..97370cd7fa5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/AbstractSeriesTabPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/AbstractSeriesTabPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries; +package com.sap.sailing.gwt.home.desktop.places.fakeseries; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/EventSeriesAnalyticsDataManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/EventSeriesAnalyticsDataManager.java similarity index 99% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/EventSeriesAnalyticsDataManager.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/EventSeriesAnalyticsDataManager.java index 703b2b15836..6d4f78e7f56 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/EventSeriesAnalyticsDataManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/EventSeriesAnalyticsDataManager.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries; +package com.sap.sailing.gwt.home.desktop.places.fakeseries; import java.util.ArrayList; import java.util.Iterator; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivity.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivity.java index b8a7e733b64..14bbcfa8234 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivity.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries; +package com.sap.sailing.gwt.home.desktop.places.fakeseries; import java.util.UUID; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivityProxy.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivityProxy.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivityProxy.java index b1a485898c9..9f5299a8718 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivityProxy.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries; +package com.sap.sailing.gwt.home.desktop.places.fakeseries; import java.util.UUID; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesTabView.java similarity index 81% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesTabView.java index bfef7dec278..93d79146cd9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries; +package com.sap.sailing.gwt.home.desktop.places.fakeseries; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesView.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesView.java index f4386ffe8d5..e7d92988ba6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/SeriesView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries; +package com.sap.sailing.gwt.home.desktop.places.fakeseries; import java.util.UUID; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/TabletAndDesktopSeriesView.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/TabletAndDesktopSeriesView.java index 51d8a1ccd37..371e315a631 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/TabletAndDesktopSeriesView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries; +package com.sap.sailing.gwt.home.desktop.places.fakeseries; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/TabletAndDesktopSeriesView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/TabletAndDesktopSeriesView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/TabletAndDesktopSeriesView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesContext.java index 0264be2dc8f..1827c8fce95 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesContext.java @@ -1,6 +1,6 @@ package com.sap.sailing.gwt.home.shared.places.fakeseries; -import com.sap.sailing.gwt.home.client.place.fakeseries.EventSeriesAnalyticsDataManager; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.EventSeriesAnalyticsDataManager; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO; import com.sap.sailing.gwt.ui.shared.media.MediaDTO; From fde1ddbc361f2dbfb1289dd011545868832753da Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 23 Sep 2015 11:24:49 +0200 Subject: [PATCH 356/504] Refactoring - Moved desktop series tab places and views into respective packages --- .../desktop/places/fakeseries/SeriesActivityProxy.java | 4 ++-- .../SharedLeaderboardEventSeriesTabView.java | 5 +---- .../fakeseries/TabletAndDesktopSeriesView.ui.xml | 10 +++++----- .../EventSeriesCompetitorAnalyticsPlace.java | 2 +- .../EventSeriesCompetitorAnalyticsTabView.java | 3 ++- .../EventSeriesCompetitorAnalyticsTabView.ui.xml | 0 .../fakeseries/eventstab}/SeriesEventsPlace.java | 2 +- .../fakeseries/eventstab}/SeriesEventsTabView.java | 2 +- .../fakeseries/eventstab}/SeriesEventsTabView.ui.xml | 0 .../leaderboardstab}/EventSeriesLeaderboardsPlace.java | 2 +- .../EventSeriesLeaderboardsTabView.java | 2 +- .../EventSeriesLeaderboardsTabView.ui.xml | 0 .../EventSeriesOverallLeaderboardPlace.java | 2 +- .../EventSeriesOverallLeaderboardTabView.java} | 9 +++++---- .../EventSeriesOverallLeaderboardTabView.ui.xml} | 0 .../gwt/home/mobile/places/series/SeriesActivity.java | 2 +- .../SeriesMiniOverallLeaderboardActivity.java | 2 +- .../gwt/home/shared/app/ApplicationHistoryMapper.java | 8 ++++---- .../gwt/home/shared/app/ApplicationPlaceUpdater.java | 6 +++--- 19 files changed, 30 insertions(+), 31 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs => desktop/places/fakeseries}/SharedLeaderboardEventSeriesTabView.java (86%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs => desktop/places/fakeseries/analyticstab}/EventSeriesCompetitorAnalyticsPlace.java (93%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs => desktop/places/fakeseries/analyticstab}/EventSeriesCompetitorAnalyticsTabView.java (97%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs => desktop/places/fakeseries/analyticstab}/EventSeriesCompetitorAnalyticsTabView.ui.xml (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs => desktop/places/fakeseries/eventstab}/SeriesEventsPlace.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs => desktop/places/fakeseries/eventstab}/SeriesEventsTabView.java (97%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs => desktop/places/fakeseries/eventstab}/SeriesEventsTabView.ui.xml (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs => desktop/places/fakeseries/leaderboardstab}/EventSeriesLeaderboardsPlace.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs => desktop/places/fakeseries/leaderboardstab}/EventSeriesLeaderboardsTabView.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs => desktop/places/fakeseries/leaderboardstab}/EventSeriesLeaderboardsTabView.ui.xml (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs => desktop/places/fakeseries/overallleaderboardtab}/EventSeriesOverallLeaderboardPlace.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.java => desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardTabView.java} (89%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.ui.xml => desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardTabView.ui.xml} (100%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivityProxy.java index 9f5299a8718..d87b19de09f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivityProxy.java @@ -5,10 +5,10 @@ import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory; -import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.eventstab.SeriesEventsPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.overallleaderboardtab.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SharedLeaderboardEventSeriesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SharedLeaderboardEventSeriesTabView.java similarity index 86% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SharedLeaderboardEventSeriesTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SharedLeaderboardEventSeriesTabView.java index 2676b7f696d..40467c8e921 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SharedLeaderboardEventSeriesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SharedLeaderboardEventSeriesTabView.java @@ -1,11 +1,8 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; +package com.sap.sailing.gwt.home.desktop.places.fakeseries; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Composite; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.gwt.home.desktop.places.fakeseries.AbstractSeriesTabPlace; -import com.sap.sailing.gwt.home.desktop.places.fakeseries.EventSeriesAnalyticsDataManager; -import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesTabView; import com.sap.sailing.gwt.home.desktop.utils.EventParamUtils; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/TabletAndDesktopSeriesView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/TabletAndDesktopSeriesView.ui.xml index c80cb75b397..a03b5ff6cad 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/TabletAndDesktopSeriesView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/TabletAndDesktopSeriesView.ui.xml @@ -2,7 +2,7 @@ + xmlns:s="urn:import:com.sap.sailing.gwt.home.desktop.places.fakeseries"> @@ -43,16 +43,16 @@ - + - + - + - + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsPlace.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsPlace.java index 32acc718519..a4eef6c6e34 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; +package com.sap.sailing.gwt.home.desktop.places.fakeseries.analyticstab; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsTabView.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsTabView.java index 3643f411137..feca67e33d7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; +package com.sap.sailing.gwt.home.desktop.places.fakeseries.analyticstab; import java.util.ArrayList; import java.util.Iterator; @@ -19,6 +19,7 @@ import com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts.OldCompeti import com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts.OldCompetitorChartsDelegateFullscreenViewer; import com.sap.sailing.gwt.home.desktop.places.fakeseries.EventSeriesAnalyticsDataManager; import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.SharedLeaderboardEventSeriesTabView; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsTabView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesCompetitorAnalyticsTabView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsPlace.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsPlace.java index 88215ffc45a..34977cadb58 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; +package com.sap.sailing.gwt.home.desktop.places.fakeseries.eventstab; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.java index 22766910700..641be2612e7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; +package com.sap.sailing.gwt.home.desktop.places.fakeseries.eventstab; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/SeriesEventsTabView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsPlace.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsPlace.java index 943cd341191..bbe8a11108c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; +package com.sap.sailing.gwt.home.desktop.places.fakeseries.leaderboardstab; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java index 991a8f15c02..1c9ef2ebacc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; +package com.sap.sailing.gwt.home.desktop.places.fakeseries.leaderboardstab; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardsTabView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesOverallLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardPlace.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesOverallLeaderboardPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardPlace.java index d44aed8f077..53dab4821b9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesOverallLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; +package com.sap.sailing.gwt.home.desktop.places.fakeseries.overallleaderboardtab; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardTabView.java similarity index 89% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardTabView.java index c3c20b3cb18..371714577d3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.fakeseries.tabs; +package com.sap.sailing.gwt.home.desktop.places.fakeseries.overallleaderboardtab; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; @@ -14,15 +14,16 @@ import com.sap.sailing.gwt.home.desktop.partials.old.leaderboard.OldLeaderboard; import com.sap.sailing.gwt.home.desktop.partials.old.leaderboard.OldLeaderboardDelegateFullscreenViewer; import com.sap.sailing.gwt.home.desktop.places.fakeseries.EventSeriesAnalyticsDataManager; import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.SharedLeaderboardEventSeriesTabView; import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; /** * Created by pgtaboada on 25.11.14. */ -public class EventSeriesLeaderboardTabView extends SharedLeaderboardEventSeriesTabView { +public class EventSeriesOverallLeaderboardTabView extends SharedLeaderboardEventSeriesTabView { - interface MyBinder extends UiBinder { + interface MyBinder extends UiBinder { } private static MyBinder ourUiBinder = GWT.create(MyBinder.class); @@ -32,7 +33,7 @@ public class EventSeriesLeaderboardTabView extends SharedLeaderboardEventSeriesT @UiField(provided = true) protected OldLeaderboard leaderboard; - public EventSeriesLeaderboardTabView() { + public EventSeriesOverallLeaderboardTabView() { leaderboard = new OldLeaderboard(new OldLeaderboardDelegateFullscreenViewer()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardTabView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/fakeseries/tabs/EventSeriesLeaderboardTabView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java index 90e6a5400fb..d570f732749 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java @@ -6,8 +6,8 @@ import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.overallleaderboardtab.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java index b3f0c65a5bc..8037259edd4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java @@ -6,8 +6,8 @@ import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.overallleaderboardtab.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java index 6e3249d7324..16c38443b03 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java @@ -14,12 +14,12 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboa import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesCompetitorAnalyticsPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesLeaderboardsPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.SeriesEventsPlace; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.analyticstab.EventSeriesCompetitorAnalyticsPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.eventstab.SeriesEventsPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.leaderboardstab.EventSeriesLeaderboardsPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.overallleaderboardtab.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java index b424cf5fdc7..8370284f5e7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java @@ -13,9 +13,9 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboa import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesCompetitorAnalyticsPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesLeaderboardsPlace; -import com.sap.sailing.gwt.home.client.place.fakeseries.tabs.EventSeriesOverallLeaderboardPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.analyticstab.EventSeriesCompetitorAnalyticsPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.leaderboardstab.EventSeriesLeaderboardsPlace; +import com.sap.sailing.gwt.home.desktop.places.fakeseries.overallleaderboardtab.EventSeriesOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; From ec8498f5498ec94d95a71b28d318955c1093a01c Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 23 Sep 2015 11:32:08 +0200 Subject: [PATCH 357/504] Refactoring - Moved shared PlaceTokenPrefixes constants into respective package --- .../client/place/event/EventDefaultPlace.java | 3 ++- .../tabs/MultiregattaMediaPlace.java | 4 ++-- .../tabs/MultiregattaOverviewPlace.java | 4 ++-- .../tabs/MultiregattaRegattasPlace.java | 4 ++-- .../tabs/RegattaCompetitorAnalyticsPlace.java | 4 ++-- .../regatta/tabs/RegattaLeaderboardPlace.java | 4 ++-- .../event/regatta/tabs/RegattaMediaPlace.java | 4 ++-- .../regatta/tabs/RegattaOverviewPlace.java | 4 ++-- .../event/regatta/tabs/RegattaRacesPlace.java | 4 ++-- .../EventSeriesCompetitorAnalyticsPlace.java | 4 ++-- .../eventstab/SeriesEventsPlace.java | 4 ++-- .../EventSeriesLeaderboardsPlace.java | 4 ++-- .../EventSeriesOverallLeaderboardPlace.java | 4 ++-- .../event/latestnews/LatestNewsPlace.java | 4 ++-- .../minileaderboard/MiniLeaderboardPlace.java | 4 ++-- .../SeriesMiniOverallLeaderboardPlace.java | 4 ++-- .../places/PlaceTokenPrefixes.java} | 24 +++++++++---------- .../places/fakeseries/SeriesDefaultPlace.java | 4 ++-- 18 files changed, 46 insertions(+), 45 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/EventPrefixes.java => shared/places/PlaceTokenPrefixes.java} (85%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventDefaultPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventDefaultPlace.java index 32e0584a05a..37fc021b721 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventDefaultPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventDefaultPlace.java @@ -2,6 +2,7 @@ package com.sap.sailing.gwt.home.client.place.event; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; public class EventDefaultPlace extends AbstractEventPlace implements HasMobileVersion { @@ -13,7 +14,7 @@ public class EventDefaultPlace extends AbstractEventPlace implements HasMobileVe super(eventUuidAsString); } - @Prefix(EventPrefixes.EventDefault) + @Prefix(PlaceTokenPrefixes.EventDefault) public static class Tokenizer extends AbstractEventPlace.Tokenizer { @Override protected EventDefaultPlace getRealPlace(EventContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java index c25c9b343ed..1b3a1c8cdfd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java @@ -3,10 +3,10 @@ package com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.multiregatta.AbstractMultiregattaEventPlace; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.MobileSupport; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; public class MultiregattaMediaPlace extends AbstractMultiregattaEventPlace implements MobileSupport { public MultiregattaMediaPlace(String id) { @@ -17,7 +17,7 @@ public class MultiregattaMediaPlace extends AbstractMultiregattaEventPlace imple super(context); } - @Prefix(EventPrefixes.MultiregattaMedia) + @Prefix(PlaceTokenPrefixes.MultiregattaMedia) public static class Tokenizer extends AbstractEventPlace.Tokenizer { @Override protected MultiregattaMediaPlace getRealPlace(EventContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewPlace.java index db10f6ae4d1..e4d56c41416 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewPlace.java @@ -3,9 +3,9 @@ package com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.multiregatta.AbstractMultiregattaEventPlace; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; public class MultiregattaOverviewPlace extends AbstractMultiregattaEventPlace implements HasMobileVersion { public MultiregattaOverviewPlace(String id) { @@ -16,7 +16,7 @@ public class MultiregattaOverviewPlace extends AbstractMultiregattaEventPlace im super(context); } - @Prefix(EventPrefixes.MultiregattaOverview) + @Prefix(PlaceTokenPrefixes.MultiregattaOverview) public static class Tokenizer extends AbstractEventPlace.Tokenizer { @Override protected MultiregattaOverviewPlace getRealPlace(EventContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasPlace.java index 66d1e28ca43..af1471e53a5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasPlace.java @@ -3,8 +3,8 @@ package com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.multiregatta.AbstractMultiregattaEventPlace; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; public class MultiregattaRegattasPlace extends AbstractMultiregattaEventPlace { public MultiregattaRegattasPlace(String id) { @@ -15,7 +15,7 @@ public class MultiregattaRegattasPlace extends AbstractMultiregattaEventPlace { super(context); } - @Prefix(EventPrefixes.MultiregattaRegattas) + @Prefix(PlaceTokenPrefixes.MultiregattaRegattas) public static class Tokenizer extends AbstractEventPlace.Tokenizer { @Override protected MultiregattaRegattasPlace getRealPlace(EventContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsPlace.java index a433f8b6669..0883270a0d4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsPlace.java @@ -3,8 +3,8 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; public class RegattaCompetitorAnalyticsPlace extends AbstractEventRegattaPlace { public RegattaCompetitorAnalyticsPlace(String id, String regattaId) { @@ -20,7 +20,7 @@ public class RegattaCompetitorAnalyticsPlace extends AbstractEventRegattaPlace { return new RegattaCompetitorAnalyticsPlace(ctx); } - @Prefix(EventPrefixes.RegattaCompetitorAnalytics) + @Prefix(PlaceTokenPrefixes.RegattaCompetitorAnalytics) public static class Tokenizer extends AbstractEventPlace.Tokenizer { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardPlace.java index a05821360ba..8b66b1dc7f8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardPlace.java @@ -3,8 +3,8 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; public class RegattaLeaderboardPlace extends AbstractEventRegattaPlace { public RegattaLeaderboardPlace(String id, String regattaId) { @@ -20,7 +20,7 @@ public class RegattaLeaderboardPlace extends AbstractEventRegattaPlace { return new RegattaLeaderboardPlace(ctx); } - @Prefix(EventPrefixes.RegattaLeaderboard) + @Prefix(PlaceTokenPrefixes.RegattaLeaderboard) public static class Tokenizer extends AbstractEventPlace.Tokenizer { @Override protected RegattaLeaderboardPlace getRealPlace(EventContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java index 2131e5ef157..3522e7a7da3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java @@ -3,10 +3,10 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.MobileSupport; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; public class RegattaMediaPlace extends AbstractEventRegattaPlace implements MobileSupport { public RegattaMediaPlace(String id, String regattaId) { @@ -22,7 +22,7 @@ public class RegattaMediaPlace extends AbstractEventRegattaPlace implements Mobi return new RegattaMediaPlace(ctx); } - @Prefix(EventPrefixes.RegattaMedia) + @Prefix(PlaceTokenPrefixes.RegattaMedia) public static class Tokenizer extends AbstractEventPlace.Tokenizer { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewPlace.java index 65f31ca4630..d9ccbe07e0d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewPlace.java @@ -3,9 +3,9 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; public class RegattaOverviewPlace extends AbstractEventRegattaPlace implements HasMobileVersion { public RegattaOverviewPlace(String id, String regattaId) { @@ -21,7 +21,7 @@ public class RegattaOverviewPlace extends AbstractEventRegattaPlace implements H return new RegattaOverviewPlace(ctx); } - @Prefix(EventPrefixes.RegattaOverview) + @Prefix(PlaceTokenPrefixes.RegattaOverview) public static class Tokenizer extends AbstractEventPlace.Tokenizer { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java index 5021ebeb835..32ee99e62a6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java @@ -3,10 +3,10 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.MobileSupport; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; public class RegattaRacesPlace extends AbstractEventRegattaPlace implements MobileSupport { public RegattaRacesPlace(String id, String leaderboardName) { @@ -22,7 +22,7 @@ public class RegattaRacesPlace extends AbstractEventRegattaPlace implements Mobi return new RegattaRacesPlace(ctx); } - @Prefix(EventPrefixes.RegattaRaces) + @Prefix(PlaceTokenPrefixes.RegattaRaces) public static class Tokenizer extends AbstractEventPlace.Tokenizer { @Override protected RegattaRacesPlace getRealPlace(EventContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsPlace.java index a4eef6c6e34..5a57403be2e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/analyticstab/EventSeriesCompetitorAnalyticsPlace.java @@ -1,8 +1,8 @@ package com.sap.sailing.gwt.home.desktop.places.fakeseries.analyticstab; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.desktop.places.fakeseries.AbstractSeriesTabPlace; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; @@ -15,7 +15,7 @@ public class EventSeriesCompetitorAnalyticsPlace extends AbstractSeriesTabPlace super(context); } - @Prefix(EventPrefixes.EventSeriesCompetitorAnalytics) + @Prefix(PlaceTokenPrefixes.EventSeriesCompetitorAnalytics) public static class Tokenizer extends AbstractSeriesPlace.Tokenizer { @Override protected EventSeriesCompetitorAnalyticsPlace getRealPlace(SeriesContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsPlace.java index 34977cadb58..fce80382075 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsPlace.java @@ -1,8 +1,8 @@ package com.sap.sailing.gwt.home.desktop.places.fakeseries.eventstab; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.desktop.places.fakeseries.AbstractSeriesTabPlace; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; @@ -15,7 +15,7 @@ public class SeriesEventsPlace extends AbstractSeriesTabPlace { super(context); } - @Prefix(EventPrefixes.SeriesEvents) + @Prefix(PlaceTokenPrefixes.SeriesEvents) public static class Tokenizer extends AbstractSeriesPlace.Tokenizer { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsPlace.java index bbe8a11108c..7884df431f4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/leaderboardstab/EventSeriesLeaderboardsPlace.java @@ -1,8 +1,8 @@ package com.sap.sailing.gwt.home.desktop.places.fakeseries.leaderboardstab; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.desktop.places.fakeseries.AbstractSeriesTabPlace; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; @@ -15,7 +15,7 @@ public class EventSeriesLeaderboardsPlace extends AbstractSeriesTabPlace { super(context); } - @Prefix(EventPrefixes.EventSeriesLeaderboards) + @Prefix(PlaceTokenPrefixes.EventSeriesLeaderboards) public static class Tokenizer extends AbstractSeriesPlace.Tokenizer { @Override protected EventSeriesLeaderboardsPlace getRealPlace(SeriesContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardPlace.java index 53dab4821b9..507b03a80bb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/overallleaderboardtab/EventSeriesOverallLeaderboardPlace.java @@ -1,8 +1,8 @@ package com.sap.sailing.gwt.home.desktop.places.fakeseries.overallleaderboardtab; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.desktop.places.fakeseries.AbstractSeriesTabPlace; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; @@ -15,7 +15,7 @@ public class EventSeriesOverallLeaderboardPlace extends AbstractSeriesTabPlace { super(context); } - @Prefix(EventPrefixes.EventSeriesOverallLeaderboard) + @Prefix(PlaceTokenPrefixes.EventSeriesOverallLeaderboard) public static class Tokenizer extends AbstractSeriesPlace.Tokenizer { @Override protected EventSeriesOverallLeaderboardPlace getRealPlace(SeriesContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsPlace.java index dcad4d21e5e..8e3bc65c8f4 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsPlace.java @@ -8,8 +8,8 @@ import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.common.client.i18n.TextMessages; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; public class LatestNewsPlace extends AbstractEventPlace implements HasMobileVersion { @@ -41,7 +41,7 @@ public class LatestNewsPlace extends AbstractEventPlace implements HasMobileVers return TextMessages.INSTANCE.headerLogo(); } - @Prefix(EventPrefixes.EventNews) + @Prefix(PlaceTokenPrefixes.EventNews) public static class Tokenizer extends AbstractEventPlace.Tokenizer { @Override protected LatestNewsPlace getRealPlace(EventContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java index 73a176f6e43..35efcb5b80f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java @@ -3,10 +3,10 @@ package com.sap.sailing.gwt.home.mobile.places.event.minileaderboard; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.app.HasLocationTitle; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; public class MiniLeaderboardPlace extends AbstractEventRegattaPlace implements HasLocationTitle, HasMobileVersion { public MiniLeaderboardPlace(String id, String regattaId) { @@ -22,7 +22,7 @@ public class MiniLeaderboardPlace extends AbstractEventRegattaPlace implements H return new MiniLeaderboardPlace(ctx); } - @Prefix(EventPrefixes.RegattaMiniLeaderboard) + @Prefix(PlaceTokenPrefixes.RegattaMiniLeaderboard) public static class Tokenizer extends AbstractEventPlace.Tokenizer { @Override protected MiniLeaderboardPlace getRealPlace(EventContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardPlace.java index 6c61d41ad4a..a151c46fd64 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardPlace.java @@ -2,9 +2,9 @@ package com.sap.sailing.gwt.home.mobile.places.series.minileaderboard; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.common.client.i18n.TextMessages; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.shared.app.HasLocationTitle; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; @@ -22,7 +22,7 @@ public class SeriesMiniOverallLeaderboardPlace extends AbstractSeriesPlace imple return TextMessages.INSTANCE.series(); } - @Prefix(EventPrefixes.EventSeriesMiniOverallLeaderboard) + @Prefix(PlaceTokenPrefixes.EventSeriesMiniOverallLeaderboard) public static class Tokenizer extends AbstractSeriesPlace.Tokenizer { @Override protected SeriesMiniOverallLeaderboardPlace getRealPlace(SeriesContext context) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventPrefixes.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/PlaceTokenPrefixes.java similarity index 85% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventPrefixes.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/PlaceTokenPrefixes.java index 61c7c5fed31..198fa384f86 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventPrefixes.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/PlaceTokenPrefixes.java @@ -1,25 +1,25 @@ -package com.sap.sailing.gwt.home.client.place.event; +package com.sap.sailing.gwt.home.shared.places; - -public class EventPrefixes { +public class PlaceTokenPrefixes { public static final String EventDefault = "/event/"; - public static final String MultiregattaOverview = "/multiregatta/overview/"; - public static final String MultiregattaRegattas = "/multiregatta/regattas/"; - public static final String MultiregattaMedia = "/multiregatta/media/"; + public static final String EventNews = "/event/news/"; + public static final String RegattaOverview = "/regatta/overview/"; public static final String RegattaRaces = "/regatta/races/"; public static final String RegattaLeaderboard = "/regatta/leaderboard/"; - public static final String RegattaMiniLeaderboard = "/regatta/minileaderboard/"; public static final String RegattaCompetitorAnalytics = "/regatta/competitoranalytics/"; public static final String RegattaMedia = "/regatta/media/"; + public static final String RegattaMiniLeaderboard = "/regatta/minileaderboard/"; + + public static final String MultiregattaOverview = "/multiregatta/overview/"; + public static final String MultiregattaRegattas = "/multiregatta/regattas/"; + public static final String MultiregattaMedia = "/multiregatta/media/"; + public static final String SeriesDefault = "/series/"; - public static final String SeriesOverview = "/series/overview/"; public static final String SeriesEvents = "/series/events/"; - public static final String EventSeriesCompetitorAnalytics = "/series/competitoranalytics/"; public static final String EventSeriesOverallLeaderboard = "/series/overallleaderboard/"; - public static final String EventSeriesMiniOverallLeaderboard = "/series/minioverallleaderboard/"; public static final String EventSeriesLeaderboards = "/series/leaderboards/"; - public static final String EventSeriesMedia = "/series/media/"; - public static final String EventNews = "/event/news/"; + public static final String EventSeriesCompetitorAnalytics = "/series/competitoranalytics/"; + public static final String EventSeriesMiniOverallLeaderboard = "/series/minioverallleaderboard/"; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesDefaultPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesDefaultPlace.java index e98382878ac..4aed28e9de9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesDefaultPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/fakeseries/SeriesDefaultPlace.java @@ -1,8 +1,8 @@ package com.sap.sailing.gwt.home.shared.places.fakeseries; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.EventPrefixes; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; +import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; public class SeriesDefaultPlace extends AbstractSeriesPlace implements HasMobileVersion { @@ -15,7 +15,7 @@ public class SeriesDefaultPlace extends AbstractSeriesPlace implements HasMobile super(eventUuidAsString); } - @Prefix(EventPrefixes.SeriesDefault) + @Prefix(PlaceTokenPrefixes.SeriesDefault) public static class Tokenizer extends AbstractSeriesPlace.Tokenizer { @Override protected SeriesDefaultPlace getRealPlace(SeriesContext context) { From 4f541a626809f8cf2ea9e1765ef4f68eff9487ab Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 23 Sep 2015 09:35:35 +0000 Subject: [PATCH 358/504] Updated Polars (markdown) --- wiki/Polars.md | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/wiki/Polars.md b/wiki/Polars.md index e373f1a511f..3b6c052841f 100644 --- a/wiki/Polars.md +++ b/wiki/Polars.md @@ -14,7 +14,7 @@ It's important to understand that we have two different approaches for gathering ### Custom Polars (Datamining) -Custom Polars can be generated in the datamining UI. You can choose filters and groupings as you desire and fire a query at the server. The server than applies these settings and returns your custom polar diagram with some additional information like underlying data sizes. The focus in this approach lies on the configurability of the query to give the user a lot of power to answer the questions they ask concerning polars. Example: You want to compare the polars of the winner of a race with the polars of the sailor who finished last. You can do that with the datamining tools. A more detailed description on how to use the polar datamining features can be found here: _TODO_ +Custom Polars can be generated in the datamining UI. You can choose filters and groupings as you desire and fire a query at the server. The server than applies these settings and returns your custom polar diagram with some additional information like underlying data sizes. The focus in this approach lies on the configurability of the query to give the user a lot of power to answer the questions they ask concerning polars. Example: You want to compare the polars of the winner of a race with the polars of the sailor who finished last. You can do that with the datamining tools. A more detailed description on how to use the polar datamining features can be found [here](#Using-the-Datamining-UI-for-Polars). What the polar datamining feature is **not**: It is not very fast for big queries and shouldn't be used (at least as is) for automated queries that are used in real time features. It is not optimized for that purpose. For those kind of things we provide a designated Backend API called *PolarDataService*. @@ -22,7 +22,7 @@ What the polar datamining feature is **not**: It is not very fast for big querie The PolarDataService is a backend API providing access to polar data that is gathered on the backend. The data structures and aggregation is designed for fast responses and real time usage. The PolarDataService is registered as an OSGi Service and can be used very independently (you only need a dependency to com.sap.sailing.domain). You can for example ask the PolarDataService for an estimated speed and beatangle for a given boatclass, windspeed and legtype (upwind or downwind) or for an estimated speed for a given boatclass, windspeed and beatangle (e.g. for reaching legs). To be light memorywise, the backend structures don't save a lot of additional data, so it does not provide any custom filtering. -For more information on how to use the PolarDataService, please see this section: _TODO_ +For more information on how to use the PolarDataService, please see [this section](#Using-the-PolarDataService). ## Using the Datamining UI for Polars @@ -50,16 +50,39 @@ _TODO_ ## PolarDataService Architecture -_TODO_ +The PolarDataService is an OSGi Service. The interface lives in com.sap.sailing.domain. Information on how to use the service is provided in [this section](#Using-the-PolarDataService). + +This section is addressed at developers who desire to understand the implementation of the service and how it gathers polar data automatically. ### File Locations / Project Structure -_TODO_ +Apart from the service interface which lives in com.sap.sailing.domain, everything else is in the com.sap.sailing.polars bundle. PolarDataServiceImpl implements the service and can be used as a good entry point when first trying to understand the code. +This implementation also implements ReplicableWithObjectInputStream to support replication of the gathered data when a new replica is attached. If not for that the gathered data would differ on different servers. + +The com.sap.sailing.polars bundle also provides an Activator that handles registration of the OSGi Service. + +Everything else in the bundle is related to the pipeline that filter, groups and aggregates the data. Some more detail is given below and a look into the code will certainly help. + +### Gathering Pipeline + +The implementation uses features of the datamining engine to build the gathering pipeline. The pipeline is fed with GPS fixes, when they come in. These are then filtered, grouped and in the end they are aggregated into the main data structure, which is detailed below. + +The pipeline is constructed in com.sap.sailing.polars.mining.PolarDataMiner. Here the core structure for the automatic polar gatherer is constructed. If you are looking to extend/change the mechanism, the PolarDataMiner is a good place to start looking for the desired part of the feature. + +The filtering excludes fixes where a boat was doing a maneuver or every boat that didn't finish in the top 10%, so that good sailors provide the data for higher quality polar data. ### Main Data Structure -_TODO_ +The last step of the gathering pipeline is putting the result into the main data structure where it lives in memory until the server is killed. The main data structure actually consists of two different aggregations: -### File Locations +#### SpeedRegressionPerAngleClusterProcessor -_TODO_ +The com.sap.sailing.polars.mining.SpeedRegressionPerAngleClusterProcessor contains data to answer requests which already supply a beat angle. It maintains a boatSpeed over windSpeed regression for every boatclass and 5degree beatangle combination. + +#### CubicRegressionPerCourseProcessor +The com.sap.sailing.polars.mining.CubicRegressionPerCourseProcessor contains data to answer requests which do not contain a beat angle but a legtype (upwind/downwind). It maintains two regression buckets. One boatSpeed over windSpeed and one beatAngle over windSpeed regression per boat class. + +#### Regressions +The regression magic is performed by the IncrementalAnyOrderLeastSquaresImpl class, which was inspired by this blog post: + +It can do online any order regressions with least squares and has optimizations to be especially quick for cubic regressions, as they are used for the regressions in the polar backend. From 46f91b202d998bcce6ebe6dc43dcb28e000b3cb9 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 23 Sep 2015 11:49:51 +0200 Subject: [PATCH 359/504] Refactoring - Moved shared event places and views into respective package --- .../gwt/home/client/place/event/AbstractEventActivity.java | 3 +++ .../gwt/home/client/place/event/EventActivityProxy.java | 3 +++ .../sap/sailing/gwt/home/client/place/event/EventView.java | 3 +++ .../event/multiregatta/AbstractMultiregattaEventPlace.java | 4 ++-- .../event/multiregatta/tabs/MultiregattaMediaPlace.java | 4 ++-- .../event/multiregatta/tabs/MultiregattaOverviewPlace.java | 4 ++-- .../event/multiregatta/tabs/MultiregattaRegattasPlace.java | 4 ++-- .../place/event/regatta/AbstractEventRegattaPlace.java | 4 ++-- .../client/place/event/regatta/EventRegattaActivity.java | 2 +- .../event/regatta/tabs/RegattaCompetitorAnalyticsPlace.java | 4 ++-- .../place/event/regatta/tabs/RegattaLeaderboardPlace.java | 4 ++-- .../client/place/event/regatta/tabs/RegattaMediaPlace.java | 4 ++-- .../place/event/regatta/tabs/RegattaOverviewPlace.java | 4 ++-- .../client/place/event/regatta/tabs/RegattaRacesPlace.java | 4 ++-- .../sailing/gwt/home/desktop/app/DesktopActivityMapper.java | 2 +- .../gwt/home/desktop/app/DesktopPlacesNavigator.java | 4 ++-- .../gwt/home/desktop/partials/eventheader/EventHeader.java | 2 +- .../partials/eventsrecent/EventsOverviewRecentYear.java | 2 +- .../eventsupcoming/EventsOverviewUpcomingEvent.java | 2 +- .../sailing/gwt/home/desktop/partials/header/Header.java | 2 +- .../gwt/home/desktop/partials/mainevents/MainEvents.java | 2 +- .../desktop/partials/searchresult/SearchResultItem.java | 2 +- .../home/desktop/partials/seriesheader/SeriesHeader.java | 2 +- .../gwt/home/desktop/partials/stage/StageTeaserBand.java | 2 +- .../gwt/home/desktop/places/fakeseries/SeriesActivity.java | 2 +- .../gwt/home/desktop/places/fakeseries/SeriesView.java | 2 +- .../places/fakeseries/eventstab/SeriesEventsTabView.java | 2 +- .../sailing/gwt/home/mobile/app/MobileActivityMapper.java | 2 +- .../sailing/gwt/home/mobile/app/MobilePlacesNavigator.java | 6 +++--- .../mobile/partials/recents/EventsOverviewRecentYear.java | 2 +- .../gwt/home/mobile/partials/stage/StageTeaserBand.java | 2 +- .../partials/upcoming/EventsOverviewUpcomingEvent.java | 2 +- .../gwt/home/mobile/places/event/AbstractEventActivity.java | 6 +++--- .../gwt/home/mobile/places/event/EventActivityProxy.java | 4 ++-- .../sailing/gwt/home/mobile/places/event/EventViewBase.java | 2 +- .../mobile/places/event/latestnews/LatestNewsPlace.java | 4 ++-- .../gwt/home/mobile/places/event/media/MediaActivity.java | 2 +- .../places/event/minileaderboard/MiniLeaderboardPlace.java | 4 ++-- .../home/mobile/places/event/overview/EventActivity.java | 2 +- .../gwt/home/shared/app/ApplicationHistoryMapper.java | 2 +- .../gwt/home/shared/app/ApplicationPlaceUpdater.java | 4 ++-- .../place => shared/places}/event/AbstractEventPlace.java | 2 +- .../{client/place => shared/places}/event/EventContext.java | 2 +- .../place => shared/places}/event/EventDefaultPlace.java | 2 +- 44 files changed, 69 insertions(+), 60 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => shared/places}/event/AbstractEventPlace.java (97%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => shared/places}/event/EventContext.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => shared/places}/event/EventDefaultPlace.java (93%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java index f29c3a09de1..a15ba210011 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java @@ -20,6 +20,9 @@ import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.shared.places.start.StartPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java index 2a1c0bba5d9..bbd305ce9a3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java @@ -19,6 +19,9 @@ import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java index fac2bcb8f32..29a19c74529 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java @@ -12,6 +12,9 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboa import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.shared.places.start.StartPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/AbstractMultiregattaEventPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/AbstractMultiregattaEventPlace.java index 645efd183f3..cf9bdef2f03 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/AbstractMultiregattaEventPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/AbstractMultiregattaEventPlace.java @@ -1,7 +1,7 @@ package com.sap.sailing.gwt.home.client.place.event.multiregatta; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; public abstract class AbstractMultiregattaEventPlace extends AbstractEventPlace { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java index 1b3a1c8cdfd..c6cab8d5a11 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java @@ -1,12 +1,12 @@ package com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.multiregatta.AbstractMultiregattaEventPlace; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.MobileSupport; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; public class MultiregattaMediaPlace extends AbstractMultiregattaEventPlace implements MobileSupport { public MultiregattaMediaPlace(String id) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewPlace.java index e4d56c41416..6add5671f80 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewPlace.java @@ -1,11 +1,11 @@ package com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.multiregatta.AbstractMultiregattaEventPlace; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; public class MultiregattaOverviewPlace extends AbstractMultiregattaEventPlace implements HasMobileVersion { public MultiregattaOverviewPlace(String id) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasPlace.java index af1471e53a5..039d410f377 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasPlace.java @@ -1,10 +1,10 @@ package com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.multiregatta.AbstractMultiregattaEventPlace; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; public class MultiregattaRegattasPlace extends AbstractMultiregattaEventPlace { public MultiregattaRegattasPlace(String id) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/AbstractEventRegattaPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/AbstractEventRegattaPlace.java index d8e6a282a46..1f28d057011 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/AbstractEventRegattaPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/AbstractEventRegattaPlace.java @@ -1,7 +1,7 @@ package com.sap.sailing.gwt.home.client.place.event.regatta; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; public abstract class AbstractEventRegattaPlace extends AbstractEventPlace { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaActivity.java index b0086c66c8c..cc252c443e2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaActivity.java @@ -5,12 +5,12 @@ import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.sap.sailing.gwt.home.client.place.event.AbstractEventActivity; import com.sap.sailing.gwt.home.client.place.event.EventClientFactory; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.client.place.event.EventView.PlaceCallback; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; import com.sap.sailing.gwt.ui.shared.eventview.RegattaReferenceDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsPlace.java index 0883270a0d4..dba5ca8f5c3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsPlace.java @@ -1,10 +1,10 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; public class RegattaCompetitorAnalyticsPlace extends AbstractEventRegattaPlace { public RegattaCompetitorAnalyticsPlace(String id, String regattaId) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardPlace.java index 8b66b1dc7f8..5b95f1bcc36 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardPlace.java @@ -1,10 +1,10 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; public class RegattaLeaderboardPlace extends AbstractEventRegattaPlace { public RegattaLeaderboardPlace(String id, String regattaId) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java index 3522e7a7da3..ec0db8277df 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java @@ -1,12 +1,12 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.MobileSupport; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; public class RegattaMediaPlace extends AbstractEventRegattaPlace implements MobileSupport { public RegattaMediaPlace(String id, String regattaId) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewPlace.java index d9ccbe07e0d..5cbb8083bc3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewPlace.java @@ -1,11 +1,11 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; public class RegattaOverviewPlace extends AbstractEventRegattaPlace implements HasMobileVersion { public RegattaOverviewPlace(String id, String regattaId) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java index 32ee99e62a6..35377462021 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java @@ -1,12 +1,12 @@ package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.MobileSupport; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; public class RegattaRacesPlace extends AbstractEventRegattaPlace implements MobileSupport { public RegattaRacesPlace(String id, String leaderboardName) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java index d0afc74bf78..bc68cc1080f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java @@ -3,7 +3,6 @@ package com.sap.sailing.gwt.home.desktop.app; import com.google.gwt.activity.shared.Activity; import com.google.gwt.activity.shared.ActivityMapper; import com.google.gwt.place.shared.Place; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventActivityProxy; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsActivityProxy; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; @@ -22,6 +21,7 @@ import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewActivityProxy; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint; import com.sap.sailing.gwt.home.shared.app.ApplicationPlaceUpdater; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java index 19c92c466d2..6d7c8b8b9db 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java @@ -4,8 +4,6 @@ import java.util.HashMap; import java.util.Map; import com.google.gwt.place.shared.PlaceController; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaRegattasPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaCompetitorAnalyticsPlace; @@ -19,6 +17,8 @@ import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNavigationTabs; import com.sap.sailing.gwt.home.shared.app.AbstractPlaceNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.java index 6e99fde9280..3882c34b868 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.java @@ -18,12 +18,12 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.LinkUtil; import com.sap.sailing.gwt.common.client.i18n.TextMessages; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.client.place.event.EventView.PlaceCallback; import com.sap.sailing.gwt.home.client.place.event.EventView.Presenter; import com.sap.sailing.gwt.home.desktop.partials.sharing.SharingButtons; import com.sap.sailing.gwt.home.desktop.partials.sharing.SharingMetadataProvider; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; import com.sap.sailing.gwt.home.shared.utils.DropdownHandler; import com.sap.sailing.gwt.home.shared.utils.EventDatesFormatterUtil; import com.sap.sailing.gwt.home.shared.utils.LabelTypeUtil; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.java index 20b259ad398..30245ab2cfd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsrecent/EventsOverviewRecentYear.java @@ -14,9 +14,9 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.utils.CollapseAnimation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.java index f2729b26a98..4371fc17da9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventsupcoming/EventsOverviewUpcomingEvent.java @@ -11,9 +11,9 @@ import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.DateUtil; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.utils.EventDatesFormatterUtil; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java index c6718316c13..b67526183f9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/header/Header.java @@ -21,12 +21,12 @@ import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.impl.HyperlinkImpl; import com.google.web.bindery.event.shared.EventBus; import com.sap.sailing.gwt.common.client.i18n.TextMessages; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace.SolutionsNavigationTabs; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java index 57460502fb8..aa84ec150ea 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainevents/MainEvents.java @@ -11,10 +11,10 @@ import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.desktop.partials.eventsrecent.RecentEventTeaser; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/searchresult/SearchResultItem.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/searchresult/SearchResultItem.java index 5a75649a675..5b8ef237ce9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/searchresult/SearchResultItem.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/searchresult/SearchResultItem.java @@ -11,10 +11,10 @@ import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.impl.HyperlinkImpl; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.utils.EventDatesFormatterUtil; import com.sap.sailing.gwt.ui.shared.EventBaseDTO; import com.sap.sailing.gwt.ui.shared.LeaderboardSearchResultDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/seriesheader/SeriesHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/seriesheader/SeriesHeader.java index fd90bb612d3..32cc3d65e6f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/seriesheader/SeriesHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/seriesheader/SeriesHeader.java @@ -14,12 +14,12 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.InlineLabel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.LinkUtil; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.desktop.partials.sharing.SharingButtons; import com.sap.sailing.gwt.home.desktop.partials.sharing.SharingMetadataProvider; import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView; import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView.Presenter; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.utils.LabelTypeUtil; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/StageTeaserBand.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/StageTeaserBand.java index 0637f641d40..a7ad3a080c9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/StageTeaserBand.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/StageTeaserBand.java @@ -11,10 +11,10 @@ import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.app.PlaceNavigator; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.ui.shared.start.EventStageDTO; public abstract class StageTeaserBand extends Composite { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivity.java index 14bbcfa8234..8a40b0422a6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesActivity.java @@ -12,11 +12,11 @@ import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesView.java index e7d92988ba6..c772d4ae8ff 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/SeriesView.java @@ -7,8 +7,8 @@ import com.google.gwt.safehtml.shared.SafeUri; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.IsWidget; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.java index 641be2612e7..220c55754bb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.java @@ -8,11 +8,11 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.desktop.partials.eventsrecent.RecentEventTeaser; import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesTabView; import com.sap.sailing.gwt.home.desktop.places.fakeseries.SeriesView; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.EventState; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java index d0b5f2af81d..3905ef61367 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileActivityMapper.java @@ -4,7 +4,6 @@ import com.google.gwt.activity.shared.Activity; import com.google.gwt.activity.shared.ActivityMapper; import com.google.gwt.core.client.GWT; import com.google.gwt.place.shared.Place; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.mobile.places.event.EventActivityProxy; import com.sap.sailing.gwt.home.mobile.places.events.EventsActivityProxy; import com.sap.sailing.gwt.home.mobile.places.series.SeriesActivityProxy; @@ -14,6 +13,7 @@ import com.sap.sailing.gwt.home.mobile.places.solutions.SolutionsActivityProxy; import com.sap.sailing.gwt.home.mobile.places.start.StartActivityProxy; import com.sap.sailing.gwt.home.shared.SwitchingEntryPoint; import com.sap.sailing.gwt.home.shared.app.ApplicationPlaceUpdater; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java index e0857bd0736..4aa8f82b747 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobilePlacesNavigator.java @@ -3,9 +3,6 @@ package com.sap.sailing.gwt.home.mobile.app; import java.util.List; import com.google.gwt.place.shared.PlaceController; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; @@ -14,6 +11,9 @@ import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace.WhatsNewNa import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.shared.app.AbstractPlaceNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.AbstractSeriesPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java index 25ca4b885aa..65d74003440 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/recents/EventsOverviewRecentYear.java @@ -13,10 +13,10 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; import com.sap.sailing.gwt.home.mobile.partials.stage.Stage; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.utils.CollapseAnimation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaserBand.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaserBand.java index 09ade211bca..ceec29dca9a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaserBand.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/stage/StageTeaserBand.java @@ -9,10 +9,10 @@ import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.app.PlaceNavigator; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.ui.shared.general.EventLinkAndMetadataDTO; public abstract class StageTeaserBand extends Composite { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/upcoming/EventsOverviewUpcomingEvent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/upcoming/EventsOverviewUpcomingEvent.java index a2af090a59a..1f4642b71b4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/upcoming/EventsOverviewUpcomingEvent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/upcoming/EventsOverviewUpcomingEvent.java @@ -10,9 +10,9 @@ import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.utils.EventDatesFormatterUtil; import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java index 7ff596a5072..c846d35cc86 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -12,9 +12,6 @@ import com.google.gwt.core.shared.GWT; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; @@ -26,6 +23,9 @@ import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderbo import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.news.LeaderboardNewsEntryDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java index 5e164d8146a..96807f33b3a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java @@ -4,8 +4,6 @@ import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; @@ -20,6 +18,8 @@ import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderbo import com.sap.sailing.gwt.home.mobile.places.event.overview.EventActivity; import com.sap.sailing.gwt.home.mobile.places.event.races.RacesActivity; import com.sap.sailing.gwt.home.mobile.places.event.regatta.RegattaActivity; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetEventViewAction; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sse.gwt.client.mvp.AbstractActivityProxy; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java index 663431134f0..01931f261b4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java @@ -3,13 +3,13 @@ package com.sap.sailing.gwt.home.mobile.places.event; import java.util.Collection; import com.google.gwt.user.client.ui.IsWidget; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.mobile.places.RegattaLeaderboardNavigationProvider; import com.sap.sailing.gwt.home.mobile.places.RegattaOverviewNavigationProvider; import com.sap.sailing.gwt.home.mobile.places.RegattaRacesNavigationProvider; import com.sap.sailing.gwt.home.mobile.places.SeriesLeaderboardNavigationProvider; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsPlace.java index 8e3bc65c8f4..5c5899d23f5 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/latestnews/LatestNewsPlace.java @@ -6,10 +6,10 @@ import java.util.List; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.common.client.i18n.TextMessages; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; public class LatestNewsPlace extends AbstractEventPlace implements HasMobileVersion { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaActivity.java index 55d21b3aa9e..53ca528a162 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/media/MediaActivity.java @@ -1,10 +1,10 @@ package com.sap.sailing.gwt.home.mobile.places.event.media; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; import com.sap.sailing.gwt.home.mobile.places.event.media.MediaView.Presenter; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; import com.sap.sailing.gwt.ui.shared.media.MediaDTO; public class MediaActivity extends AbstractEventActivity implements Presenter { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java index 35efcb5b80f..a84cfe033bc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java @@ -1,12 +1,12 @@ package com.sap.sailing.gwt.home.mobile.places.event.minileaderboard; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; -import com.sap.sailing.gwt.home.client.place.event.EventContext; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.app.HasLocationTitle; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; public class MiniLeaderboardPlace extends AbstractEventRegattaPlace implements HasLocationTitle, HasMobileVersion { public MiniLeaderboardPlace(String id, String regattaId) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventActivity.java index 65b198dc88a..3bc1e2a2db0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventActivity.java @@ -1,10 +1,10 @@ package com.sap.sailing.gwt.home.mobile.places.event.overview; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; import com.sap.sailing.gwt.home.mobile.places.event.overview.EventView.Presenter; +import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; import com.sap.sailing.gwt.ui.shared.media.MediaDTO; public class EventActivity extends AbstractEventActivity implements Presenter { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java index 16c38443b03..5d773db218a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java @@ -2,7 +2,6 @@ package com.sap.sailing.gwt.home.shared.app; import com.google.gwt.place.shared.PlaceHistoryMapper; import com.google.gwt.place.shared.WithTokenizers; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesPlace; @@ -26,6 +25,7 @@ import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.mobile.places.series.minileaderboard.SeriesMiniOverallLeaderboardPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.home.shared.places.solutions.SolutionsPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java index 8370284f5e7..a7dc5ec64e9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java @@ -1,8 +1,6 @@ package com.sap.sailing.gwt.home.shared.app; import com.google.gwt.place.shared.Place; -import com.sap.sailing.gwt.home.client.place.event.EventContext; -import com.sap.sailing.gwt.home.client.place.event.EventDefaultPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesPlace; @@ -16,6 +14,8 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlac import com.sap.sailing.gwt.home.desktop.places.fakeseries.analyticstab.EventSeriesCompetitorAnalyticsPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.leaderboardstab.EventSeriesLeaderboardsPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.overallleaderboardtab.EventSeriesOverallLeaderboardPlace; +import com.sap.sailing.gwt.home.shared.places.event.EventContext; +import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.places.events.EventsPlace; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesContext; import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/AbstractEventPlace.java similarity index 97% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/AbstractEventPlace.java index 3d7835f9428..18fc7986ae7 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/AbstractEventPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event; +package com.sap.sailing.gwt.home.shared.places.event; import java.util.HashMap; import java.util.Map; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/EventContext.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventContext.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/EventContext.java index 9bd8abc6f7b..61a59d5f6af 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/EventContext.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event; +package com.sap.sailing.gwt.home.shared.places.event; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventDefaultPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/EventDefaultPlace.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventDefaultPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/EventDefaultPlace.java index 37fc021b721..7c12e4c6a60 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventDefaultPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/EventDefaultPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event; +package com.sap.sailing.gwt.home.shared.places.event; import com.google.gwt.place.shared.Prefix; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; From e7d525bf03664684fa6f62aabeb8fec2b67c94f1 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 23 Sep 2015 12:15:42 +0200 Subject: [PATCH 360/504] Refactoring - Moved desktop multiregatta tab places and views into respective packages --- .../place/event/regatta/EventRegattaActivity.java | 8 ++++---- .../client/place/event/regatta/EventRegattaView.java | 2 +- .../event/regatta/tabs/RegattaRacesTabView.java | 2 +- .../gwt/home/desktop/app/DesktopActivityMapper.java | 2 +- .../gwt/home/desktop/app/DesktopClientFactory.java | 2 +- .../gwt/home/desktop/app/DesktopPlacesNavigator.java | 2 +- .../desktop/partials/eventheader/EventHeader.java | 6 +++--- .../partials/eventstage/EventOverviewStage.java | 2 +- .../desktop/partials/liveraces/LiveRacesList.java | 2 +- .../partials/multiregattalist/MultiRegattaList.java | 2 +- .../multiregattalist/MultiRegattaListItem.java | 2 +- .../desktop/partials/racelist/AbstractRaceList.java | 2 +- .../partials/racelist/RaceListColumnFactory.java | 2 +- .../home/desktop/partials/updates/UpdatesBox.java | 4 ++-- .../desktop/partials/updates/UpdatesBoxItem.java | 2 +- .../places}/event/AbstractEventActivity.java | 2 +- .../places}/event/EventActivityProxy.java | 12 ++++++------ .../places}/event/EventClientFactory.java | 2 +- .../place => desktop/places}/event/EventView.java | 2 +- .../multiregatta/AbstractMultiregattaEventPlace.java | 2 +- .../multiregatta/EventMultiregattaActivity.java | 12 ++++++------ .../event/multiregatta/EventMultiregattaView.java | 4 ++-- .../event/multiregatta/MultiregattaTabView.java | 2 +- .../TabletAndDesktopMultiRegattaEventView.java} | 8 ++++---- .../TabletAndDesktopMultiRegattaEventView.ui.xml} | 8 ++++---- .../mediatab}/MultiregattaMediaPlace.java | 4 ++-- .../mediatab}/MultiregattaMediaTabView.java | 8 ++++---- .../mediatab}/MultiregattaMediaTabView.ui.xml | 0 .../overviewtab}/MultiregattaOverviewPlace.java | 4 ++-- .../overviewtab}/MultiregattaOverviewTabView.java | 8 ++++---- .../overviewtab}/MultiregattaOverviewTabView.ui.xml | 0 .../regattastab}/MultiregattaRegattasPlace.java | 4 ++-- .../regattastab}/MultiregattaRegattasTabView.java | 8 ++++---- .../regattastab}/MultiregattaRegattasTabView.ui.xml | 0 .../mobile/places/event/AbstractEventActivity.java | 2 +- .../home/mobile/places/event/EventActivityProxy.java | 2 +- .../home/shared/app/ApplicationHistoryMapper.java | 6 +++--- .../gwt/home/shared/app/ApplicationPlaceUpdater.java | 4 ++-- 38 files changed, 73 insertions(+), 73 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/AbstractEventActivity.java (99%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/EventActivityProxy.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/EventClientFactory.java (80%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/EventView.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/multiregatta/AbstractMultiregattaEventPlace.java (86%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/multiregatta/EventMultiregattaActivity.java (76%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/multiregatta/EventMultiregattaView.java (60%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/multiregatta/MultiregattaTabView.java (75%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/multiregatta/TabletAndDesktopEventView.java => desktop/places/event/multiregatta/TabletAndDesktopMultiRegattaEventView.java} (95%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/multiregatta/TabletAndDesktopEventView.ui.xml => desktop/places/event/multiregatta/TabletAndDesktopMultiRegattaEventView.ui.xml} (85%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/multiregatta/tabs => desktop/places/event/multiregatta/mediatab}/MultiregattaMediaPlace.java (86%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/multiregatta/tabs => desktop/places/event/multiregatta/mediatab}/MultiregattaMediaTabView.java (87%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/multiregatta/tabs => desktop/places/event/multiregatta/mediatab}/MultiregattaMediaTabView.ui.xml (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/multiregatta/tabs => desktop/places/event/multiregatta/overviewtab}/MultiregattaOverviewPlace.java (83%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/multiregatta/tabs => desktop/places/event/multiregatta/overviewtab}/MultiregattaOverviewTabView.java (93%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/multiregatta/tabs => desktop/places/event/multiregatta/overviewtab}/MultiregattaOverviewTabView.ui.xml (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/multiregatta/tabs => desktop/places/event/multiregatta/regattastab}/MultiregattaRegattasPlace.java (82%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/multiregatta/tabs => desktop/places/event/multiregatta/regattastab}/MultiregattaRegattasTabView.java (92%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/multiregatta/tabs => desktop/places/event/multiregatta/regattastab}/MultiregattaRegattasTabView.ui.xml (100%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaActivity.java index cc252c443e2..620158342ca 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaActivity.java @@ -3,12 +3,12 @@ package com.sap.sailing.gwt.home.client.place.event.regatta; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventActivity; -import com.sap.sailing.gwt.home.client.place.event.EventClientFactory; -import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.EventView.PlaceCallback; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.event.AbstractEventActivity; +import com.sap.sailing.gwt.home.desktop.places.event.EventClientFactory; +import com.sap.sailing.gwt.home.desktop.places.event.EventView; +import com.sap.sailing.gwt.home.desktop.places.event.EventView.PlaceCallback; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.places.event.EventContext; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaView.java index db4926de47a..f61a65aaace 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaView.java @@ -1,7 +1,7 @@ package com.sap.sailing.gwt.home.client.place.event.regatta; -import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; +import com.sap.sailing.gwt.home.desktop.places.event.EventView; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sse.gwt.client.player.Timer; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java index 2ab2b455beb..bb4c0fa83f2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java @@ -15,7 +15,6 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; @@ -31,6 +30,7 @@ import com.sap.sailing.gwt.home.desktop.partials.regattacompetition.RegattaCompe import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.ListNavigationAction; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.SelectionCallback; +import com.sap.sailing.gwt.home.desktop.places.event.EventView; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.partials.regattanavigation.RaceStateLegend; import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java index bc68cc1080f..739f4a17fdf 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopActivityMapper.java @@ -3,13 +3,13 @@ package com.sap.sailing.gwt.home.desktop.app; import com.google.gwt.activity.shared.Activity; import com.google.gwt.activity.shared.ActivityMapper; import com.google.gwt.place.shared.Place; -import com.sap.sailing.gwt.home.client.place.event.EventActivityProxy; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsActivityProxy; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.desktop.places.contact.ContactActivityProxy; import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; import com.sap.sailing.gwt.home.desktop.places.error.ErrorActivityProxy; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; +import com.sap.sailing.gwt.home.desktop.places.event.EventActivityProxy; import com.sap.sailing.gwt.home.desktop.places.events.EventsActivityProxy; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultActivityProxy; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java index 97cde96a1ce..a90b56afe1f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopClientFactory.java @@ -1,10 +1,10 @@ package com.sap.sailing.gwt.home.desktop.app; -import com.sap.sailing.gwt.home.client.place.event.EventClientFactory; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesClientFactory; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsClientFactory; import com.sap.sailing.gwt.home.desktop.places.contact.ContactClientFactory; import com.sap.sailing.gwt.home.desktop.places.error.ErrorClientFactory; +import com.sap.sailing.gwt.home.desktop.places.event.EventClientFactory; import com.sap.sailing.gwt.home.desktop.places.events.EventsClientFactory; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultClientFactory; import com.sap.sailing.gwt.home.desktop.places.solutions.SolutionsClientFactory; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java index 6d7c8b8b9db..ccb83b74b82 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java @@ -4,13 +4,13 @@ import java.util.HashMap; import java.util.Map; import com.google.gwt.place.shared.PlaceController; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaRegattasPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaCompetitorAnalyticsPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.regattastab.MultiregattaRegattasPlace; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.java index 3882c34b868..71704e42210 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventheader/EventHeader.java @@ -18,11 +18,11 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.LinkUtil; import com.sap.sailing.gwt.common.client.i18n.TextMessages; -import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.EventView.PlaceCallback; -import com.sap.sailing.gwt.home.client.place.event.EventView.Presenter; import com.sap.sailing.gwt.home.desktop.partials.sharing.SharingButtons; import com.sap.sailing.gwt.home.desktop.partials.sharing.SharingMetadataProvider; +import com.sap.sailing.gwt.home.desktop.places.event.EventView; +import com.sap.sailing.gwt.home.desktop.places.event.EventView.PlaceCallback; +import com.sap.sailing.gwt.home.desktop.places.event.EventView.Presenter; import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; import com.sap.sailing.gwt.home.shared.utils.DropdownHandler; import com.sap.sailing.gwt.home.shared.utils.EventDatesFormatterUtil; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventstage/EventOverviewStage.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventstage/EventOverviewStage.java index b0ca6a07a2d..701581c6916 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventstage/EventOverviewStage.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/eventstage/EventOverviewStage.java @@ -12,8 +12,8 @@ import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.common.client.SharedResources.MediaCss; -import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.desktop.partials.updates.UpdatesBox; +import com.sap.sailing.gwt.home.desktop.places.event.EventView; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.partials.countdown.Countdown; import com.sap.sailing.gwt.home.shared.partials.countdown.Countdown.CountdownNavigationProvider; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/liveraces/LiveRacesList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/liveraces/LiveRacesList.java index 7cda283c01b..ea5e63edc89 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/liveraces/LiveRacesList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/liveraces/LiveRacesList.java @@ -4,13 +4,13 @@ import java.util.Collection; import com.google.gwt.dom.client.Style.Display; import com.google.gwt.user.client.ui.Composite; -import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.desktop.partials.racelist.AbstractRaceList; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListColumnFactory; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListColumnSet; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListContainer; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListDataUtil; import com.sap.sailing.gwt.home.desktop.partials.racelist.SortableRaceListColumn; +import com.sap.sailing.gwt.home.desktop.places.event.EventView; import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.CollectionResult; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java index d3dd6558984..81e9e2d2e14 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaList.java @@ -13,7 +13,7 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListItem.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListItem.java index 3a32746922e..5a8b33a2110 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListItem.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListItem.java @@ -5,8 +5,8 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.home.desktop.partials.regattaheader.RegattaHeader; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaWithProgressDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/AbstractRaceList.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/AbstractRaceList.java index 9622d04470d..99ce2dd63a2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/AbstractRaceList.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/AbstractRaceList.java @@ -13,9 +13,9 @@ import com.google.gwt.user.cellview.client.RowStyles; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.SimplePanel; import com.sap.sailing.domain.common.InvertibleComparator; -import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListColumnFactory.SortableRaceListStartTimeColumn; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources.LocalCss; +import com.sap.sailing.gwt.home.desktop.places.event.EventView; import com.sap.sailing.gwt.ui.leaderboard.SortedCellTable; import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.wind.AbstractWindDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListColumnFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListColumnFactory.java index f4fd7640757..bdc73ac0708 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListColumnFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/racelist/RaceListColumnFactory.java @@ -28,8 +28,8 @@ import com.sap.sailing.domain.common.impl.NaturalComparator; import com.sap.sailing.gwt.common.client.SharedResources; import com.sap.sailing.gwt.common.client.SharedResources.MainCss; import com.sap.sailing.gwt.common.client.i18n.TextMessages; -import com.sap.sailing.gwt.home.client.place.event.EventView; import com.sap.sailing.gwt.home.desktop.partials.racelist.RaceListResources.LocalCss; +import com.sap.sailing.gwt.home.desktop.places.event.EventView; import com.sap.sailing.gwt.regattaoverview.client.FlagsMeaningExplanator; import com.sap.sailing.gwt.regattaoverview.client.SailingFlagsBuilder; import com.sap.sailing.gwt.ui.client.FlagImageResolver; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/updates/UpdatesBox.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/updates/UpdatesBox.java index 2c0f114ae30..2f2d5c5ec2c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/updates/UpdatesBox.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/updates/UpdatesBox.java @@ -10,8 +10,8 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.EventView.Presenter; +import com.sap.sailing.gwt.home.desktop.places.event.EventView; +import com.sap.sailing.gwt.home.desktop.places.event.EventView.Presenter; import com.sap.sailing.gwt.ui.shared.dispatch.news.NewsEntryDTO; public class UpdatesBox extends Composite { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/updates/UpdatesBoxItem.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/updates/UpdatesBoxItem.java index 736e3b9c9ea..cfb9256a223 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/updates/UpdatesBoxItem.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/updates/UpdatesBoxItem.java @@ -15,7 +15,7 @@ import com.google.gwt.user.client.EventListener; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.BoatClassImageResolver; import com.sap.sailing.gwt.common.client.LinkUtil; -import com.sap.sailing.gwt.home.client.place.event.EventView; +import com.sap.sailing.gwt.home.desktop.places.event.EventView; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.news.AbstractRaceNewsEntryDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/AbstractEventActivity.java similarity index 99% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/AbstractEventActivity.java index a15ba210011..50123db2c30 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/AbstractEventActivity.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event; +package com.sap.sailing.gwt.home.desktop.places.event; import java.util.HashMap; import java.util.Map; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventActivityProxy.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventActivityProxy.java index bbd305ce9a3..854a4be1595 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventActivityProxy.java @@ -1,14 +1,9 @@ -package com.sap.sailing.gwt.home.client.place.event; +package com.sap.sailing.gwt.home.desktop.places.event; import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.AbstractMultiregattaEventPlace; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaActivity; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaOverviewPlace; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaRegattasPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaActivity; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; @@ -17,6 +12,11 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewP import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.AbstractMultiregattaEventPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.EventMultiregattaActivity; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.mediatab.MultiregattaMediaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.overviewtab.MultiregattaOverviewPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.regattastab.MultiregattaRegattasPlace; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventClientFactory.java similarity index 80% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventClientFactory.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventClientFactory.java index 8a0037e9bc4..a499726ef5a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventClientFactory.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event; +package com.sap.sailing.gwt.home.desktop.places.event; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; import com.sap.sailing.gwt.ui.client.SailingClientFactory; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventView.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventView.java index 29a19c74529..0548ae126c4 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/EventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event; +package com.sap.sailing.gwt.home.desktop.places.event; import com.google.gwt.place.shared.Place; import com.google.gwt.safehtml.shared.SafeUri; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/AbstractMultiregattaEventPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/AbstractMultiregattaEventPlace.java similarity index 86% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/AbstractMultiregattaEventPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/AbstractMultiregattaEventPlace.java index cf9bdef2f03..1fe824e6303 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/AbstractMultiregattaEventPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/AbstractMultiregattaEventPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.multiregatta; +package com.sap.sailing.gwt.home.desktop.places.event.multiregatta; import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; import com.sap.sailing.gwt.home.shared.places.event.EventContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/EventMultiregattaActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/EventMultiregattaActivity.java similarity index 76% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/EventMultiregattaActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/EventMultiregattaActivity.java index a183d8f12d2..14208a4978e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/EventMultiregattaActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/EventMultiregattaActivity.java @@ -1,16 +1,16 @@ -package com.sap.sailing.gwt.home.client.place.event.multiregatta; +package com.sap.sailing.gwt.home.desktop.places.event.multiregatta; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.event.AbstractEventActivity; -import com.sap.sailing.gwt.home.client.place.event.EventClientFactory; -import com.sap.sailing.gwt.home.client.place.event.EventView; -import com.sap.sailing.gwt.home.client.place.event.EventView.PlaceCallback; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.event.AbstractEventActivity; +import com.sap.sailing.gwt.home.desktop.places.event.EventClientFactory; +import com.sap.sailing.gwt.home.desktop.places.event.EventView; +import com.sap.sailing.gwt.home.desktop.places.event.EventView.PlaceCallback; public class EventMultiregattaActivity extends AbstractEventActivity implements EventMultiregattaView.Presenter { - private EventMultiregattaView currentView = new TabletAndDesktopEventView(); + private EventMultiregattaView currentView = new TabletAndDesktopMultiRegattaEventView(); public EventMultiregattaActivity(AbstractMultiregattaEventPlace place, EventClientFactory clientFactory, DesktopPlacesNavigator homePlacesNavigator) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/EventMultiregattaView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/EventMultiregattaView.java similarity index 60% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/EventMultiregattaView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/EventMultiregattaView.java index b0f01fb6932..72d960b470b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/EventMultiregattaView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/EventMultiregattaView.java @@ -1,6 +1,6 @@ -package com.sap.sailing.gwt.home.client.place.event.multiregatta; +package com.sap.sailing.gwt.home.desktop.places.event.multiregatta; -import com.sap.sailing.gwt.home.client.place.event.EventView; +import com.sap.sailing.gwt.home.desktop.places.event.EventView; public interface EventMultiregattaView extends EventView { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/MultiregattaTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/MultiregattaTabView.java similarity index 75% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/MultiregattaTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/MultiregattaTabView.java index 1d205db2d9a..dcc468cabd2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/MultiregattaTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/MultiregattaTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.multiregatta; +package com.sap.sailing.gwt.home.desktop.places.event.multiregatta; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/TabletAndDesktopMultiRegattaEventView.java similarity index 95% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/TabletAndDesktopMultiRegattaEventView.java index e9f636ca0d2..589098f4ac4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/TabletAndDesktopMultiRegattaEventView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.multiregatta; +package com.sap.sailing.gwt.home.desktop.places.event.multiregatta; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style; @@ -25,11 +25,11 @@ import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.ui.client.StringMessages; -public class TabletAndDesktopEventView extends Composite implements EventMultiregattaView { +public class TabletAndDesktopMultiRegattaEventView extends Composite implements EventMultiregattaView { private static final ApplicationHistoryMapper historyMapper = GWT. create(ApplicationHistoryMapper.class); - interface MyBinder extends UiBinder { + interface MyBinder extends UiBinder { } private static MyBinder uiBinder = GWT.create(MyBinder.class); @@ -41,7 +41,7 @@ public class TabletAndDesktopEventView extends Composite implements EventMultire private Presenter currentPresenter; - public TabletAndDesktopEventView() { + public TabletAndDesktopMultiRegattaEventView() { } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/TabletAndDesktopMultiRegattaEventView.ui.xml similarity index 85% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/TabletAndDesktopMultiRegattaEventView.ui.xml index ba01e7ad8e1..2a305874a35 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/TabletAndDesktopEventView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/TabletAndDesktopMultiRegattaEventView.ui.xml @@ -2,7 +2,7 @@ + xmlns:e="urn:import:com.sap.sailing.gwt.home.desktop.places.event.multiregatta"> .header { @@ -43,13 +43,13 @@ - + - + - + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/mediatab/MultiregattaMediaPlace.java similarity index 86% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/mediatab/MultiregattaMediaPlace.java index c6cab8d5a11..34b8cbee29c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/mediatab/MultiregattaMediaPlace.java @@ -1,7 +1,7 @@ -package com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.multiregatta.mediatab; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.AbstractMultiregattaEventPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.AbstractMultiregattaEventPlace; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.MobileSupport; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/mediatab/MultiregattaMediaTabView.java similarity index 87% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/mediatab/MultiregattaMediaTabView.java index b817db8044b..b8d4da0fc25 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/mediatab/MultiregattaMediaTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.multiregatta.mediatab; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; @@ -7,10 +7,10 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.MultiregattaTabView; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.home.desktop.partials.media.MediaPage; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.EventMultiregattaView; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.MultiregattaTabView; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.ui.shared.media.MediaDTO; /** diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/mediatab/MultiregattaMediaTabView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaMediaTabView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/mediatab/MultiregattaMediaTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/overviewtab/MultiregattaOverviewPlace.java similarity index 83% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/overviewtab/MultiregattaOverviewPlace.java index 6add5671f80..63711ffde8a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/overviewtab/MultiregattaOverviewPlace.java @@ -1,7 +1,7 @@ -package com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.multiregatta.overviewtab; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.AbstractMultiregattaEventPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.AbstractMultiregattaEventPlace; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/overviewtab/MultiregattaOverviewTabView.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/overviewtab/MultiregattaOverviewTabView.java index 4d491e1b8e1..0974cde3c7e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/overviewtab/MultiregattaOverviewTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.multiregatta.overviewtab; import java.util.Collection; @@ -9,9 +9,6 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.MultiregattaTabView; import com.sap.sailing.gwt.home.desktop.partials.eventstage.EventOverviewStage; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaList; @@ -19,6 +16,9 @@ import com.sap.sailing.gwt.home.desktop.partials.raceoffice.RaceOfficeSection; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter.DropdownFilterList; import com.sap.sailing.gwt.home.desktop.partials.statistics.StatisticsBox; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.EventMultiregattaView; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.MultiregattaTabView; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/overviewtab/MultiregattaOverviewTabView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaOverviewTabView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/overviewtab/MultiregattaOverviewTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/regattastab/MultiregattaRegattasPlace.java similarity index 82% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/regattastab/MultiregattaRegattasPlace.java index 039d410f377..b06aaea2935 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/regattastab/MultiregattaRegattasPlace.java @@ -1,7 +1,7 @@ -package com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.multiregatta.regattastab; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.AbstractMultiregattaEventPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.AbstractMultiregattaEventPlace; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; import com.sap.sailing.gwt.home.shared.places.event.EventContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/regattastab/MultiregattaRegattasTabView.java similarity index 92% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/regattastab/MultiregattaRegattasTabView.java index c06281aab51..32651f76aa6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/regattastab/MultiregattaRegattasTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.multiregatta.regattastab; import java.util.Collection; @@ -9,14 +9,14 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.EventMultiregattaView.Presenter; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.MultiregattaTabView; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaList; import com.sap.sailing.gwt.home.desktop.partials.raceoffice.RaceOfficeSection; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.DropdownFilter.DropdownFilterList; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.EventMultiregattaView; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.MultiregattaTabView; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.EventMultiregattaView.Presenter; import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; import com.sap.sailing.gwt.ui.client.StringMessages; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/regattastab/MultiregattaRegattasTabView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/multiregatta/tabs/MultiregattaRegattasTabView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/regattastab/MultiregattaRegattasTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java index c846d35cc86..b12a876b00c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -12,11 +12,11 @@ import com.google.gwt.core.shared.GWT; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.mediatab.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java index 96807f33b3a..9b372b732d5 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java @@ -4,11 +4,11 @@ import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.mediatab.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsActivity; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java index 5d773db218a..8f5eaa6d1f8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java @@ -5,9 +5,6 @@ import com.google.gwt.place.shared.WithTokenizers; import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesPlace; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaOverviewPlace; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaRegattasPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaCompetitorAnalyticsPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; @@ -15,6 +12,9 @@ import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewP import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.mediatab.MultiregattaMediaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.overviewtab.MultiregattaOverviewPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.regattastab.MultiregattaRegattasPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.analyticstab.EventSeriesCompetitorAnalyticsPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.eventstab.SeriesEventsPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.leaderboardstab.EventSeriesLeaderboardsPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java index a7dc5ec64e9..5f7137b1eab 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java @@ -4,13 +4,13 @@ import com.google.gwt.place.shared.Place; import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesPlace; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaMediaPlace; -import com.sap.sailing.gwt.home.client.place.event.multiregatta.tabs.MultiregattaRegattasPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaCompetitorAnalyticsPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.mediatab.MultiregattaMediaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.regattastab.MultiregattaRegattasPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.analyticstab.EventSeriesCompetitorAnalyticsPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.leaderboardstab.EventSeriesLeaderboardsPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.overallleaderboardtab.EventSeriesOverallLeaderboardPlace; From ec09bd9d9d783ab3c4e5588c10bb1112f03cf324 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 23 Sep 2015 12:34:41 +0200 Subject: [PATCH 361/504] Refactoring - Moved desktop regatta tab places and views into respective packages --- .../gwt/home/desktop/app/DesktopPlacesNavigator.java | 8 ++++---- .../regattacompetition/RegattaCompetitionSeries.java | 2 +- .../partials/searchresult/SearchResultItem.java | 2 +- .../desktop/places/event/AbstractEventActivity.java | 8 ++++---- .../desktop/places/event/EventActivityProxy.java | 12 ++++++------ .../gwt/home/desktop/places/event/EventView.java | 6 +++--- .../event/regatta/AbstractEventRegattaPlace.java | 2 +- .../places}/event/regatta/EventRegattaActivity.java | 6 +++--- .../places}/event/regatta/EventRegattaView.java | 4 ++-- .../event/regatta/RegattaAnalyticsDataManager.java | 2 +- .../places}/event/regatta/RegattaTabView.java | 2 +- .../regatta}/SharedLeaderboardRegattaTabView.java | 5 +---- .../regatta/TabletAndDesktopRegattaEventView.java} | 8 ++++---- .../regatta/TabletAndDesktopRegattaEventView.ui.xml} | 12 ++++++------ .../RegattaCompetitorAnalyticsPlace.java | 4 ++-- .../RegattaCompetitorAnalyticsTabView.java | 9 +++++---- .../RegattaCompetitorAnalyticsTabView.ui.xml | 0 .../leaderboardtab}/RegattaLeaderboardPlace.java | 4 ++-- .../leaderboardtab}/RegattaLeaderboardTabView.java | 9 +++++---- .../leaderboardtab}/RegattaLeaderboardTabView.ui.xml | 0 .../event/regatta/mediatab}/RegattaMediaPlace.java | 4 ++-- .../event/regatta/mediatab}/RegattaMediaTabView.java | 8 ++++---- .../regatta/mediatab}/RegattaMediaTabView.ui.xml | 0 .../regatta/overviewtab}/RegattaOverviewPlace.java | 4 ++-- .../regatta/overviewtab}/RegattaOverviewTabView.java | 8 ++++---- .../overviewtab}/RegattaOverviewTabView.ui.xml | 0 .../event/regatta/racestab}/RegattaRacesPlace.java | 4 ++-- .../event/regatta/racestab}/RegattaRacesTabView.java | 6 +++--- .../regatta/racestab}/RegattaRacesTabView.ui.xml | 0 .../mobile/places/event/AbstractEventActivity.java | 8 ++++---- .../home/mobile/places/event/EventActivityProxy.java | 6 +++--- .../event/minileaderboard/MiniLeaderboardPlace.java | 2 +- .../mobile/places/event/races/RacesActivity.java | 2 +- .../mobile/places/event/regatta/RegattaActivity.java | 2 +- .../home/shared/app/ApplicationHistoryMapper.java | 10 +++++----- .../gwt/home/shared/app/ApplicationPlaceUpdater.java | 10 +++++----- .../gwt/home/shared/places/event/EventContext.java | 2 +- 37 files changed, 90 insertions(+), 91 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/regatta/AbstractEventRegattaPlace.java (89%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/regatta/EventRegattaActivity.java (94%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/regatta/EventRegattaView.java (75%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/regatta/RegattaAnalyticsDataManager.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place => desktop/places}/event/regatta/RegattaTabView.java (75%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta}/SharedLeaderboardRegattaTabView.java (90%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/TabletAndDesktopEventView.java => desktop/places/event/regatta/TabletAndDesktopRegattaEventView.java} (96%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/TabletAndDesktopEventView.ui.xml => desktop/places/event/regatta/TabletAndDesktopRegattaEventView.ui.xml} (82%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/analyticstab}/RegattaCompetitorAnalyticsPlace.java (86%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/analyticstab}/RegattaCompetitorAnalyticsTabView.java (93%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/analyticstab}/RegattaCompetitorAnalyticsTabView.ui.xml (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/leaderboardtab}/RegattaLeaderboardPlace.java (85%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/leaderboardtab}/RegattaLeaderboardTabView.java (90%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/leaderboardtab}/RegattaLeaderboardTabView.ui.xml (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/mediatab}/RegattaMediaPlace.java (88%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/mediatab}/RegattaMediaTabView.java (87%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/mediatab}/RegattaMediaTabView.ui.xml (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/overviewtab}/RegattaOverviewPlace.java (86%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/overviewtab}/RegattaOverviewTabView.java (93%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/overviewtab}/RegattaOverviewTabView.ui.xml (100%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/racestab}/RegattaRacesPlace.java (88%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/racestab}/RegattaRacesTabView.java (98%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/place/event/regatta/tabs => desktop/places/event/regatta/racestab}/RegattaRacesTabView.ui.xml (100%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java index ccb83b74b82..b20cfbf3094 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/app/DesktopPlacesNavigator.java @@ -4,13 +4,13 @@ import java.util.HashMap; import java.util.Map; import com.google.gwt.place.shared.PlaceController; -import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaCompetitorAnalyticsPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.regattastab.MultiregattaRegattasPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.analyticstab.RegattaCompetitorAnalyticsPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.leaderboardtab.RegattaLeaderboardPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.overviewtab.RegattaOverviewPlace; import com.sap.sailing.gwt.home.desktop.places.searchresult.SearchResultPlace; import com.sap.sailing.gwt.home.desktop.places.sponsoring.SponsoringPlace; import com.sap.sailing.gwt.home.desktop.places.whatsnew.WhatsNewPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.java index 328cab6d293..8d007879056 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.java @@ -8,7 +8,7 @@ import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; -import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatSeriesDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/searchresult/SearchResultItem.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/searchresult/SearchResultItem.java index 5b8ef237ce9..9df6a400d5d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/searchresult/SearchResultItem.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/searchresult/SearchResultItem.java @@ -11,8 +11,8 @@ import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.impl.HyperlinkImpl; -import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.places.event.EventDefaultPlace; import com.sap.sailing.gwt.home.shared.utils.EventDatesFormatterUtil; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/AbstractEventActivity.java index 50123db2c30..8cef89c7f21 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/AbstractEventActivity.java @@ -12,11 +12,11 @@ import com.google.gwt.user.client.rpc.AsyncCallback; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.dto.RaceDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.leaderboardtab.RegattaLeaderboardPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.overviewtab.RegattaOverviewPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.racestab.RegattaRacesPlace; import com.sap.sailing.gwt.home.shared.app.ApplicationHistoryMapper; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventActivityProxy.java index 854a4be1595..ec44d7f3b1f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventActivityProxy.java @@ -4,12 +4,6 @@ import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaActivity; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.AbstractMultiregattaEventPlace; @@ -17,6 +11,12 @@ import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.EventMultirega import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.mediatab.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.overviewtab.MultiregattaOverviewPlace; import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.regattastab.MultiregattaRegattasPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.EventRegattaActivity; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.leaderboardtab.RegattaLeaderboardPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.mediatab.RegattaMediaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.overviewtab.RegattaOverviewPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.racestab.RegattaRacesPlace; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventView.java index 0548ae126c4..5c19199a527 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/EventView.java @@ -7,9 +7,9 @@ import com.google.gwt.user.client.ui.IsWidget; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.dto.RaceDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.leaderboardtab.RegattaLeaderboardPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.racestab.RegattaRacesPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/AbstractEventRegattaPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/AbstractEventRegattaPlace.java similarity index 89% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/AbstractEventRegattaPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/AbstractEventRegattaPlace.java index 1f28d057011..568d9294721 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/AbstractEventRegattaPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/AbstractEventRegattaPlace.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta; +package com.sap.sailing.gwt.home.desktop.places.event.regatta; import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; import com.sap.sailing.gwt.home.shared.places.event.EventContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/EventRegattaActivity.java similarity index 94% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaActivity.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/EventRegattaActivity.java index 620158342ca..75f913b62ea 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/EventRegattaActivity.java @@ -1,14 +1,14 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta; +package com.sap.sailing.gwt.home.desktop.places.event.regatta; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.desktop.app.DesktopPlacesNavigator; import com.sap.sailing.gwt.home.desktop.places.event.AbstractEventActivity; import com.sap.sailing.gwt.home.desktop.places.event.EventClientFactory; import com.sap.sailing.gwt.home.desktop.places.event.EventView; import com.sap.sailing.gwt.home.desktop.places.event.EventView.PlaceCallback; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.overviewtab.RegattaOverviewPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.places.event.EventContext; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; @@ -22,7 +22,7 @@ import com.sap.sse.gwt.client.player.Timer.PlayStates; import com.sap.sse.gwt.client.useragent.UserAgentDetails; public class EventRegattaActivity extends AbstractEventActivity implements EventRegattaView.Presenter { - private EventRegattaView currentView = new TabletAndDesktopEventView(); + private EventRegattaView currentView = new TabletAndDesktopRegattaEventView(); private final UserAgentDetails userAgent = new UserAgentDetails(Window.Navigator.getUserAgent()); private final AsyncActionsExecutor asyncActionsExecutor = new AsyncActionsExecutor(); private final long delayBetweenAutoAdvancesInMilliseconds = 3000l; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/EventRegattaView.java similarity index 75% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/EventRegattaView.java index f61a65aaace..33bb961352b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/EventRegattaView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/EventRegattaView.java @@ -1,7 +1,7 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta; +package com.sap.sailing.gwt.home.desktop.places.event.regatta; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; import com.sap.sailing.gwt.home.desktop.places.event.EventView; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.overviewtab.RegattaOverviewPlace; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sse.gwt.client.player.Timer; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/RegattaAnalyticsDataManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaAnalyticsDataManager.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/RegattaAnalyticsDataManager.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaAnalyticsDataManager.java index 67441dc299e..d0a2d2d6160 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/RegattaAnalyticsDataManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaAnalyticsDataManager.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta; +package com.sap.sailing.gwt.home.desktop.places.event.regatta; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/RegattaTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaTabView.java similarity index 75% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/RegattaTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaTabView.java index 266416e8488..e9a4ca0eba8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/RegattaTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/RegattaTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta; +package com.sap.sailing.gwt.home.desktop.places.event.regatta; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/SharedLeaderboardRegattaTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/SharedLeaderboardRegattaTabView.java similarity index 90% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/SharedLeaderboardRegattaTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/SharedLeaderboardRegattaTabView.java index 293e8cee00e..715496c44ce 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/SharedLeaderboardRegattaTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/SharedLeaderboardRegattaTabView.java @@ -1,11 +1,8 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.regatta; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Composite; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; -import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager; -import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; import com.sap.sailing.gwt.home.desktop.utils.EventParamUtils; import com.sap.sailing.gwt.ui.client.LeaderboardUpdateListener; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/TabletAndDesktopRegattaEventView.java similarity index 96% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/TabletAndDesktopRegattaEventView.java index 6588ec0e73c..ff5124c1efb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/TabletAndDesktopRegattaEventView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta; +package com.sap.sailing.gwt.home.desktop.places.event.regatta; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style; @@ -27,11 +27,11 @@ import com.sap.sailing.gwt.home.shared.places.fakeseries.SeriesDefaultPlace; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; -public class TabletAndDesktopEventView extends Composite implements EventRegattaView { +public class TabletAndDesktopRegattaEventView extends Composite implements EventRegattaView { private static final ApplicationHistoryMapper historyMapper = GWT. create(ApplicationHistoryMapper.class); - interface MyBinder extends UiBinder { + interface MyBinder extends UiBinder { } private static MyBinder uiBinder = GWT.create(MyBinder.class); @@ -43,7 +43,7 @@ public class TabletAndDesktopEventView extends Composite implements EventRegatta private Presenter currentPresenter; - public TabletAndDesktopEventView() { + public TabletAndDesktopRegattaEventView() { } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/TabletAndDesktopRegattaEventView.ui.xml similarity index 82% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/TabletAndDesktopRegattaEventView.ui.xml index 57c60a67f27..872d52fa5b7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/TabletAndDesktopEventView.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/TabletAndDesktopRegattaEventView.ui.xml @@ -2,7 +2,7 @@ + xmlns:e="urn:import:com.sap.sailing.gwt.home.desktop.places.event.regatta"> .header { @@ -43,19 +43,19 @@ - + - + - + - + - + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/analyticstab/RegattaCompetitorAnalyticsPlace.java similarity index 86% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/analyticstab/RegattaCompetitorAnalyticsPlace.java index dba5ca8f5c3..23d5da35644 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/analyticstab/RegattaCompetitorAnalyticsPlace.java @@ -1,7 +1,7 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.regatta.analyticstab; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; import com.sap.sailing.gwt.home.shared.places.event.EventContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/analyticstab/RegattaCompetitorAnalyticsTabView.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/analyticstab/RegattaCompetitorAnalyticsTabView.java index 7b51db5c07f..f11e8b5a192 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/analyticstab/RegattaCompetitorAnalyticsTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.regatta.analyticstab; import java.util.ArrayList; import java.util.Iterator; @@ -16,11 +16,12 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; -import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; -import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager; import com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts.OldCompetitorCharts; import com.sap.sailing.gwt.home.desktop.partials.old.competitorcharts.OldCompetitorChartsDelegateFullscreenViewer; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.EventRegattaView; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.RegattaAnalyticsDataManager; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.SharedLeaderboardRegattaTabView; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder; import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/analyticstab/RegattaCompetitorAnalyticsTabView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaCompetitorAnalyticsTabView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/analyticstab/RegattaCompetitorAnalyticsTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/leaderboardtab/RegattaLeaderboardPlace.java similarity index 85% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/leaderboardtab/RegattaLeaderboardPlace.java index 5b95f1bcc36..da1ff671816 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/leaderboardtab/RegattaLeaderboardPlace.java @@ -1,7 +1,7 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.regatta.leaderboardtab; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; import com.sap.sailing.gwt.home.shared.places.event.EventContext; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/leaderboardtab/RegattaLeaderboardTabView.java similarity index 90% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/leaderboardtab/RegattaLeaderboardTabView.java index 13d8796184a..b1bc983e47c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/leaderboardtab/RegattaLeaderboardTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.regatta.leaderboardtab; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; @@ -10,11 +10,12 @@ import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; -import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; -import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager; import com.sap.sailing.gwt.home.desktop.partials.old.leaderboard.OldLeaderboard; import com.sap.sailing.gwt.home.desktop.partials.old.leaderboard.OldLeaderboardDelegateFullscreenViewer; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.EventRegattaView; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.RegattaAnalyticsDataManager; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.SharedLeaderboardRegattaTabView; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.shared.partials.placeholder.Placeholder; import com.sap.sailing.gwt.ui.leaderboard.LeaderboardPanel; import com.sap.sailing.gwt.ui.shared.general.EventState; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/leaderboardtab/RegattaLeaderboardTabView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaLeaderboardTabView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/leaderboardtab/RegattaLeaderboardTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/mediatab/RegattaMediaPlace.java similarity index 88% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/mediatab/RegattaMediaPlace.java index ec0db8277df..90986daa6e1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/mediatab/RegattaMediaPlace.java @@ -1,7 +1,7 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.regatta.mediatab; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.MobileSupport; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/mediatab/RegattaMediaTabView.java similarity index 87% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/mediatab/RegattaMediaTabView.java index 093c01e6344..a94af7bfb31 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/mediatab/RegattaMediaTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.regatta.mediatab; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; @@ -7,10 +7,10 @@ import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; -import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; -import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; import com.sap.sailing.gwt.home.desktop.partials.media.MediaPage; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.EventRegattaView; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.RegattaTabView; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.ui.shared.media.MediaDTO; /** diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/mediatab/RegattaMediaTabView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaMediaTabView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/mediatab/RegattaMediaTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/overviewtab/RegattaOverviewPlace.java similarity index 86% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/overviewtab/RegattaOverviewPlace.java index 5cbb8083bc3..6596a609569 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/overviewtab/RegattaOverviewPlace.java @@ -1,7 +1,7 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.regatta.overviewtab; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; import com.sap.sailing.gwt.home.shared.places.event.AbstractEventPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/overviewtab/RegattaOverviewTabView.java similarity index 93% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/overviewtab/RegattaOverviewTabView.java index 363ee9f6ec4..adfd7391b1a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/overviewtab/RegattaOverviewTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.regatta.overviewtab; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; @@ -8,14 +8,14 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView; -import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; -import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; import com.sap.sailing.gwt.home.desktop.partials.eventstage.EventOverviewStage; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListItem; import com.sap.sailing.gwt.home.desktop.partials.standings.StandingsList; import com.sap.sailing.gwt.home.desktop.partials.statistics.StatisticsBox; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.EventRegattaView; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.RegattaTabView; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/overviewtab/RegattaOverviewTabView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaOverviewTabView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/overviewtab/RegattaOverviewTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesPlace.java similarity index 88% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesPlace.java index 35377462021..84b56f1334f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesPlace.java @@ -1,7 +1,7 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.regatta.racestab; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.app.MobileSupport; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.java similarity index 98% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.java index bb4c0fa83f2..d4824a03a3e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.place.event.regatta.tabs; +package com.sap.sailing.gwt.home.desktop.places.event.regatta.racestab; import java.util.Collection; import java.util.UUID; @@ -15,8 +15,6 @@ import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.controls.tabbar.TabView; -import com.sap.sailing.gwt.home.client.place.event.regatta.EventRegattaView.Presenter; -import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaTabView; import com.sap.sailing.gwt.home.desktop.partials.liveraces.LiveRacesList; import com.sap.sailing.gwt.home.desktop.partials.multiregattalist.MultiRegattaListItem; import com.sap.sailing.gwt.home.desktop.partials.racelist.AbstractRaceList; @@ -31,6 +29,8 @@ import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigatio import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.ListNavigationAction; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.SelectionCallback; import com.sap.sailing.gwt.home.desktop.places.event.EventView; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.RegattaTabView; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.EventRegattaView.Presenter; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.home.shared.partials.regattanavigation.RaceStateLegend; import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/place/event/regatta/tabs/RegattaRacesTabView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java index b12a876b00c..95b36178463 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -12,11 +12,11 @@ import com.google.gwt.core.shared.GWT; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.mediatab.MultiregattaMediaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.leaderboardtab.RegattaLeaderboardPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.mediatab.RegattaMediaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.overviewtab.RegattaOverviewPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.racestab.RegattaRacesPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase.Presenter; import com.sap.sailing.gwt.home.mobile.places.event.minileaderboard.MiniLeaderboardPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java index 9b372b732d5..b7501d7baf2 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventActivityProxy.java @@ -4,11 +4,11 @@ import java.util.UUID; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.places.error.ErrorPlace; import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.mediatab.MultiregattaMediaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.mediatab.RegattaMediaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.overviewtab.RegattaOverviewPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.racestab.RegattaRacesPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsActivity; import com.sap.sailing.gwt.home.mobile.places.event.latestnews.LatestNewsPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java index a84cfe033bc..d817a85f538 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/minileaderboard/MiniLeaderboardPlace.java @@ -1,7 +1,7 @@ package com.sap.sailing.gwt.home.mobile.places.event.minileaderboard; import com.google.gwt.place.shared.Prefix; -import com.sap.sailing.gwt.home.client.place.event.regatta.AbstractEventRegattaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.AbstractEventRegattaPlace; import com.sap.sailing.gwt.home.shared.app.HasLocationTitle; import com.sap.sailing.gwt.home.shared.app.HasMobileVersion; import com.sap.sailing.gwt.home.shared.places.PlaceTokenPrefixes; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesActivity.java index 250b8b3513f..0ac1b08e90d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesActivity.java @@ -1,6 +1,6 @@ package com.sap.sailing.gwt.home.mobile.places.event.races; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.racestab.RegattaRacesPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaActivity.java index 90eace1646e..5d76daf13e9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/regatta/RegattaActivity.java @@ -1,6 +1,6 @@ package com.sap.sailing.gwt.home.mobile.places.event.regatta; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.overviewtab.RegattaOverviewPlace; import com.sap.sailing.gwt.home.mobile.app.MobileApplicationClientFactory; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventActivity; import com.sap.sailing.gwt.home.mobile.places.event.EventViewBase; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java index 8f5eaa6d1f8..365d73020b8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationHistoryMapper.java @@ -5,16 +5,16 @@ import com.google.gwt.place.shared.WithTokenizers; import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaCompetitorAnalyticsPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.places.aboutus.AboutUsPlace; import com.sap.sailing.gwt.home.desktop.places.contact.ContactPlace; import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.mediatab.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.overviewtab.MultiregattaOverviewPlace; import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.regattastab.MultiregattaRegattasPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.analyticstab.RegattaCompetitorAnalyticsPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.leaderboardtab.RegattaLeaderboardPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.mediatab.RegattaMediaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.overviewtab.RegattaOverviewPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.racestab.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.analyticstab.EventSeriesCompetitorAnalyticsPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.eventstab.SeriesEventsPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.leaderboardstab.EventSeriesLeaderboardsPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java index 5f7137b1eab..08ac1a0ff54 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/app/ApplicationPlaceUpdater.java @@ -4,13 +4,13 @@ import com.google.gwt.place.shared.Place; import com.sap.sailing.gwt.home.client.place.event.legacy.EventPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.RegattaPlace; import com.sap.sailing.gwt.home.client.place.event.legacy.SeriesPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaCompetitorAnalyticsPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaLeaderboardPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaMediaPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaOverviewPlace; -import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.mediatab.MultiregattaMediaPlace; import com.sap.sailing.gwt.home.desktop.places.event.multiregatta.regattastab.MultiregattaRegattasPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.analyticstab.RegattaCompetitorAnalyticsPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.leaderboardtab.RegattaLeaderboardPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.mediatab.RegattaMediaPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.overviewtab.RegattaOverviewPlace; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.racestab.RegattaRacesPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.analyticstab.EventSeriesCompetitorAnalyticsPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.leaderboardstab.EventSeriesLeaderboardsPlace; import com.sap.sailing.gwt.home.desktop.places.fakeseries.overallleaderboardtab.EventSeriesOverallLeaderboardPlace; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/EventContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/EventContext.java index 61a59d5f6af..6ac78610dfe 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/EventContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/places/event/EventContext.java @@ -1,6 +1,6 @@ package com.sap.sailing.gwt.home.shared.places.event; -import com.sap.sailing.gwt.home.client.place.event.regatta.RegattaAnalyticsDataManager; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.RegattaAnalyticsDataManager; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; From 97764d07b194af48739188d352773383c925c12d Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Wed, 23 Sep 2015 10:37:24 +0000 Subject: [PATCH 362/504] Updated Polars (markdown) --- wiki/Polars.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/wiki/Polars.md b/wiki/Polars.md index 3b6c052841f..20ee93ecfdd 100644 --- a/wiki/Polars.md +++ b/wiki/Polars.md @@ -34,11 +34,22 @@ _TODO_ ## Polar Datamining Architecture -_TODO_ +For general information about the Datamining Architecture please see [this wikipage][wiki/wiki/data-mining-architecture]. + +This section will focus on the polar specific datamining functionality. + +At the time of writing there are two different retrieval chains for polar data. One is for displaying the PolarDataService Data which is automatically gathered in the backend. Most classes for that feature contain the word "Backend". It is quite simple and only allows filtering by boat class name. + +Most of the classes are for custom polar datamining. In this section we will concentrate on this feature. ### File Locations / Project Structure -_TODO_ +The project structure sticks to the best practices described [here][wiki/typical-development-scenarios]. There are two bundles: +com.sap.sailing.polars.datamining and com.sap.sailing.polars.datamining.shared; the latter containing classes that are serializable by the GWT engine. + +An Activator registeres the polar datamining functionality with the main datamining server. The data package contains the retrieval data classes, the component package contains retrieval processors and the aggregators package contains the two aggregators. + +The UI classes live in the gwt.ui bundle; more precisely in the com.sap.sailing.gwt.ui.polarmining package. ### Extending the Feature From e82a36bdd4fa33d1036ef3a11874ef3c6c63efb3 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 23 Sep 2015 13:43:35 +0200 Subject: [PATCH 363/504] Refactoring - Renamed and moved mobile main view into respective package --- .../mobile/app/MobileApplicationClientFactory.java | 3 +-- .../MainView.java => app/MobileApplicationView.java} | 11 +++++------ .../MobileApplicationView.ui.xml} | 0 3 files changed, 6 insertions(+), 8 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/{places/MainView.java => app/MobileApplicationView.java} (84%) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/{places/MainView.ui.xml => app/MobileApplicationView.ui.xml} (100%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationClientFactory.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationClientFactory.java index 6a99dfc9dee..7c309a3568d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationClientFactory.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationClientFactory.java @@ -7,7 +7,6 @@ import com.google.gwt.user.client.rpc.ServiceDefTarget; import com.google.web.bindery.event.shared.EventBus; import com.google.web.bindery.event.shared.SimpleEventBus; import com.sap.sailing.gwt.home.desktop.app.ApplicationTopLevelView; -import com.sap.sailing.gwt.home.mobile.places.MainView; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystemImpl; import com.sap.sailing.gwt.home.shared.places.start.StartPlace; @@ -40,7 +39,7 @@ public class MobileApplicationClientFactory extends SecureClientFactoryImpl { } private MobileApplicationClientFactory(EventBus eventBus, PlaceController placeController, MobilePlacesNavigator navigator) { - this(new MainView(navigator, eventBus), eventBus, placeController, navigator); + this(new MobileApplicationView(navigator, eventBus), eventBus, placeController, navigator); } public MobileApplicationClientFactory(ApplicationTopLevelView root, EventBus eventBus, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/MainView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationView.java similarity index 84% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/MainView.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationView.java index 489f69d1f23..cd20074b22c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/MainView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationView.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.mobile.places; +package com.sap.sailing.gwt.home.mobile.app; import com.google.gwt.core.client.GWT; import com.google.gwt.place.shared.Place; @@ -11,7 +11,6 @@ import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.google.web.bindery.event.shared.EventBus; import com.sap.sailing.gwt.home.desktop.app.ApplicationTopLevelView; -import com.sap.sailing.gwt.home.mobile.app.MobilePlacesNavigator; import com.sap.sailing.gwt.home.mobile.partials.footer.Footer; import com.sap.sailing.gwt.home.mobile.partials.header.Header; import com.sap.sailing.gwt.home.shared.app.HasLocationTitle; @@ -21,10 +20,10 @@ import com.sap.sse.gwt.client.ErrorReporter; /** * This is the top-level view of the application. Every time another presenter wants to reveal itself, - * {@link MainView} will add its content of the target inside the {@code mainContantPanel}. + * {@link MobileApplicationView} will add its content of the target inside the {@code mainContantPanel}. */ -public class MainView extends Composite implements ApplicationTopLevelView { - interface MyBinder extends UiBinder { +public class MobileApplicationView extends Composite implements ApplicationTopLevelView { + interface MyBinder extends UiBinder { } private static MyBinder uiBinder = GWT.create(MyBinder.class); @@ -40,7 +39,7 @@ public class MainView extends Composite implements ApplicationTopLevelView { @UiField SimplePanel mainContentPanel; - public MainView(MobilePlacesNavigator placeNavigator, EventBus eventBus) { + public MobileApplicationView(MobilePlacesNavigator placeNavigator, EventBus eventBus) { headerPanel = new Header(placeNavigator); footerPanel = new Footer(placeNavigator); initWidget(uiBinder.createAndBindUi(this)); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/MainView.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationView.ui.xml similarity index 100% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/MainView.ui.xml rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/app/MobileApplicationView.ui.xml From dab1f25c3400f807a02edd3e17cad904156dea81 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 23 Sep 2015 17:03:12 +0200 Subject: [PATCH 364/504] upgraded TracAPI to version 3.0.13 --- .../SailingDashboardsGWT sdm.launch | 94 +++++++++--------- .../SailingDashboardsGWT.launch | 94 +++++++++--------- .../META-INF/MANIFEST.MF | 2 +- java/com.tractrac.clientmodule/README.txt | 22 +++- .../com.tractrac.clientmodule/lib/TracAPI.jar | Bin 770949 -> 782608 bytes java/com.tractrac.clientmodule/pom.xml | 2 +- 6 files changed, 117 insertions(+), 97 deletions(-) diff --git a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch index aefd1e3ffb6..e6230b9950b 100755 --- a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch +++ b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT sdm.launch @@ -1,47 +1,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch index f9b334a695d..f6c7bd03e29 100755 --- a/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch +++ b/java/com.sap.sailing.dashboards.gwt/SailingDashboardsGWT.launch @@ -1,47 +1,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF b/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF index 0043b019213..f70e3ceadbc 100644 --- a/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF +++ b/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: TracTrac Client module Bundle-SymbolicName: com.tractrac.clientmodule -Bundle-Version: 3.0.12 +Bundle-Version: 3.0.13 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ClassPath: ., lib/TracAPI.jar diff --git a/java/com.tractrac.clientmodule/README.txt b/java/com.tractrac.clientmodule/README.txt index e3a23e66229..13c1e81daff 100644 --- a/java/com.tractrac.clientmodule/README.txt +++ b/java/com.tractrac.clientmodule/README.txt @@ -7,7 +7,7 @@ This zip package contains 2 folders: - lib -> contains the Trac-API compiled library - - src -> contains some code examples. + - src -> contains the source code of the API and some code examples The documentation can be retrieved online from http://tracdev.dk/maven-sites-clients/3.0.0/maven-java-parent/. @@ -15,7 +15,27 @@ It contains also some files: - test.sh -> script that compiles the code in the src folder, creates the test.jar library and execute the code of the example. - Manifest.txt -> manifest used to create the test.jar file + +******************************************** +************* TracAPI 3.0.13 *************** +******************************************** +This is a final version. Only fixes bugs in the implementation +Release date: 23/09/2015 +Build number: 11448 + + 1) Features + + - The script that generates the final version also includes a jar with the source code of the APIs + (Requested by Axel Uhl, 07/09/2015) + + 2) Bugs + + - When a new race is updated, the IRace.getParamsURI() is updated to null. (Reported by Juan Salvador Pérez, 10/09/2015) + + - The IRace.getMetadata(), ICompetitor.getMetadata and IControl.getMetadata() methods are not refreshed in + the model when the objects are updated in the event manager (Reported by Jorge Piera, 23/09/2015) + ******************************************** ************* TracAPI 3.0.12 *************** ******************************************** diff --git a/java/com.tractrac.clientmodule/lib/TracAPI.jar b/java/com.tractrac.clientmodule/lib/TracAPI.jar index 4ede0bdce1e9e150200982006729e28163951f0b..8a342b8b9a105cbc6fb3c79805516a753ede479e 100644 GIT binary patch delta 96953 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 C#VBO} delta 85684 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 diff --git a/java/com.tractrac.clientmodule/pom.xml b/java/com.tractrac.clientmodule/pom.xml index dfaa60532d3..e88cf4c0189 100755 --- a/java/com.tractrac.clientmodule/pom.xml +++ b/java/com.tractrac.clientmodule/pom.xml @@ -8,6 +8,6 @@ 1.0.0-SNAPSHOT com.tractrac.clientmodule - 3.0.12 + 3.0.13 eclipse-plugin From 1d74d33e984631a7cc4224f91fba05a8c8bf6fe7 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 24 Sep 2015 09:37:54 +0200 Subject: [PATCH 365/504] Improved the documentation --- .../datamining/DataMiningBundleService.java | 6 +- .../components/DataRetrieverChainBuilder.java | 12 +- .../DataRetrieverChainDefinition.java | 3 +- .../sse/datamining/components/Processor.java | 6 +- ...tiDimensionalNestingGroupingProcessor.java | 6 +- .../AbstractRetrievalProcessor.java | 8 + .../ParallelByDimensionGroupingProcessor.java | 6 +- .../ParallelFilteringProcessor.java | 10 ++ ...oupedElementsValueExtractionProcessor.java | 12 ++ ...mensionsValueNestingGroupingProcessor.java | 14 +- .../AbstractParallelAggregationProcessor.java | 8 +- .../impl/components/package-info.java | 4 + wiki/data-mining-architecture.md | 152 ++++++------------ wiki/typical-data-mining-scenarios.md | 30 +++- 14 files changed, 149 insertions(+), 128 deletions(-) create mode 100644 java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/package-info.java diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/DataMiningBundleService.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/DataMiningBundleService.java index 39493f98cb2..30fd25f6c4d 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/DataMiningBundleService.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/DataMiningBundleService.java @@ -7,10 +7,10 @@ import com.sap.sse.datamining.components.DataRetrieverChainDefinition; import com.sap.sse.i18n.ResourceBundleStringMessages; /** - * A Service that provides all necessary elements of a datamining bundle. A datamining bundle + * A Service that provides all necessary elements of a data mining bundle. A data mining bundle * has to register such a service to the context. Such registrations are automatically tracked - * by the domain independent datamining bundle, which calls the methods an integrates the bundle - * in the datamining framework. + * by the domain independent data mining bundle, which calls the methods an integrates the bundle + * in the data mining framework. * * @author Lennart Hensler (D054527) * diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainBuilder.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainBuilder.java index 5064e67c283..2b402e7a747 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainBuilder.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainBuilder.java @@ -2,6 +2,7 @@ package com.sap.sse.datamining.components; import com.sap.sse.common.settings.SerializableSettings; import com.sap.sse.datamining.impl.components.DataRetrieverLevel; +import com.sap.sse.datamining.impl.criterias.CompoundFilterCriterion; /** @@ -43,7 +44,8 @@ public interface DataRetrieverChainBuilder { public DataRetrieverLevel getCurrentRetrieverLevel(); /** - * Sets the filter for the data retriever of the current level. + * Sets the filter for the data retriever of the current level (replacing any filter that has been set). + * Use {@link CompoundFilterCriterion} for complex criteria. * * @throws IllegalStateException if {@link #stepFurther()} has not yet been called. * @throws IllegalArgumentException if the filters ElementType doesn't match the @@ -52,7 +54,7 @@ public interface DataRetrieverChainBuilder { public DataRetrieverChainBuilder setFilter(FilterCriterion filter); /** - * Sets the settings for the data retriever of the current level. + * Sets the settings for the data retriever of the current level (replacing any settings that have been set). * * @throws IllegalStateException if {@link #stepFurther()} has not yet been called. * @throws IllegalArgumentException if the SettingsType isn't applicable for the @@ -70,7 +72,11 @@ public interface DataRetrieverChainBuilder { public DataRetrieverChainBuilder addResultReceiver(Processor resultReceiver); /** - * Builds the configured data retriever chain. + * Builds the configured data retriever chain until the + * {@link #getCurrentRetrieverLevel() current retriever level} and returns its first processor. + *

    + * This method can be called multiple times and it's legal to modify the builder, after this method + * has been called. Previously created retriever chains won't be affected from this changes. * * @throws IllegalStateException if {@link #stepFurther()} has not yet been called. * @return The first processor of the built data retriever chain. diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainDefinition.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainDefinition.java index dd5d01faa14..c66f368a72c 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainDefinition.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/DataRetrieverChainDefinition.java @@ -22,7 +22,8 @@ import com.sap.sse.i18n.ResourceBundleStringMessages; * * * The Processors in the chain should extend {@link AbstractRetrievalProcessor}. - * If not, the processor has to have a constructor with the exact parameter list {@link ExecutorService}, {@link Collection}, int. + * If not, the processor has to have a constructor with the exact parameter list + * ({@link ExecutorService}, {@link Collection}, int) or ({@link ExecutorService}, {@link Collection}, SettingsType, int). * Otherwise an exception will be thrown, when you call one of the methods above.
    * To create a data retriever chain defined by a DataRetrieverChainDefinition, call {@link #startBuilding(ExecutorService)} * which returns an instance of {@link DataRetrieverChainBuilder}. diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/Processor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/Processor.java index ab26447d902..1e24fa942a0 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/Processor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/Processor.java @@ -24,8 +24,10 @@ public interface Processor { void onFailure(Throwable failure); /** - * Tells this Processor, that there won't be data incoming anymore.
    - * The called Processor will finish his work and call finish() on all subsequent processors. + * Tells this Processor, that there won't be any input anymore. This has the effect, that + * this Processor won't process new input ({@link #canProcessElements()} will return false + * after this method has been called).
    + * The called Processor will finish its work and call finish() on all subsequent processors. * * @throws InterruptedException */ diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java index db8d00840e8..50b1e3e03a3 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java @@ -18,6 +18,10 @@ public abstract class AbstractParallelMultiDimensionalNestingGroupingProcessor> parameterizedDimensions; + /** + * @throws IllegalArgumentException if any of the given function isn't a dimension + * or the given iterable is empty. + */ @SuppressWarnings("unchecked") public AbstractParallelMultiDimensionalNestingGroupingProcessor(Class dataType, ExecutorService executor, @@ -30,7 +34,7 @@ public abstract class AbstractParallelMultiDimensionalNestingGroupingProcessor> parameterizedDimensions) { if (parameterizedDimensions == null) { - throw new IllegalArgumentException("The given dimensions mustn't be null."); + throw new NullPointerException("The given dimensions mustn't be null."); } int size = 0; diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractRetrievalProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractRetrievalProcessor.java index 9cfad19b9b0..0dd97ca1182 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractRetrievalProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractRetrievalProcessor.java @@ -8,6 +8,14 @@ import com.sap.sse.datamining.components.AdditionalResultDataBuilder; import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.components.ProcessorInstruction; +/** + * Abstract base class for retrieval processors. These kind of processors retrieve multiple result elements + * from a single input element. Has an abstract method, that defines how the data is retrieved. + * + * @author Lennart Hensler (D054527) + * + * @see com.sap.sse.datamining.impl.components com.sap.sse.datamining.impl.components for general information about Processors. + */ public abstract class AbstractRetrievalProcessor extends AbstractParallelProcessor { private final int retrievalLevel; diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelByDimensionGroupingProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelByDimensionGroupingProcessor.java index 7cabf943899..6411f1292e1 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelByDimensionGroupingProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelByDimensionGroupingProcessor.java @@ -27,7 +27,11 @@ public class ParallelByDimensionGroupingProcessor extends private final Locale locale; private final DataMiningDTOFactory dtoFactory; - + + + /** + * @throws IllegalArgumentException if the given function isn't a dimension. + */ public ParallelByDimensionGroupingProcessor(Class dataType, ExecutorService executor, Collection, ?>> resultReceivers, diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelFilteringProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelFilteringProcessor.java index 2d4e02aa46a..9ef526f7873 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelFilteringProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelFilteringProcessor.java @@ -9,6 +9,16 @@ import com.sap.sse.datamining.components.FilterCriterion; import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.components.ProcessorInstruction; +/** + * Filters the given input elements by a {@link FilterCriterion}, so that only elements, that match the + * filter criterion are forwarded to the result receivers. + * + * @author Lennart Hensler (D054527) + * + * @param The type of the data to filter. + * + * @see com.sap.sse.datamining.impl.components com.sap.sse.datamining.impl.components for general information about Processors. + */ public class ParallelFilteringProcessor extends AbstractParallelProcessor { private final FilterCriterion filterCriterion; diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelGroupedElementsValueExtractionProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelGroupedElementsValueExtractionProcessor.java index f26c992383e..4adddda79de 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelGroupedElementsValueExtractionProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelGroupedElementsValueExtractionProcessor.java @@ -9,6 +9,18 @@ import com.sap.sse.datamining.components.ProcessorInstruction; import com.sap.sse.datamining.functions.Function; import com.sap.sse.datamining.functions.ParameterProvider; +/** + * These Processors are used to extract a value (defined by a {@link Function}) from grouped elements. + * + * @author Lennart Hensler (D054527) + * + * @param The type of the grouped data. The InputType of the Processor will be + * GroupedDataEntry. + * @param The return type of the function, that is used to extract the value. The + * ResultType of the Processor will be GroupedDataEntry>. + * + * @see com.sap.sse.datamining.impl.components com.sap.sse.datamining.impl.components for general information about Processors. + */ public class ParallelGroupedElementsValueExtractionProcessor extends AbstractParallelProcessor, GroupedDataEntry> { diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelMultiDimensionsValueNestingGroupingProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelMultiDimensionsValueNestingGroupingProcessor.java index dad4369dcde..1b154d7d3d3 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelMultiDimensionsValueNestingGroupingProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/ParallelMultiDimensionsValueNestingGroupingProcessor.java @@ -11,17 +11,23 @@ import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.impl.GenericGroupKey; /** - * A grouper that takes multiple dimensions (as {@link Function Functions} and groups the given elements - * by their values of the dimensions.
    - * A data element of the type T with the dimension values a and b - * would be grouped with the key {@literal a}.
    + * A grouper that takes multiple dimensions (as {@link Function Functions}) and groups the given elements + * by the values of the dimensions.
    + * A data element of the type T with the dimension values a, b and + * c would be grouped with the key {@literal a>}.
    * The order of the given dimensions determines the order of the key nesting. * * @author Lennart Hensler (D054527) + * + * @see com.sap.sse.datamining.impl.components com.sap.sse.datamining.impl.components for general information about Processors. */ public class ParallelMultiDimensionsValueNestingGroupingProcessor extends AbstractParallelMultiDimensionalNestingGroupingProcessor { + /** + * @throws IllegalArgumentException if any of the given function isn't a dimension + * or the given iterable is empty. + */ public ParallelMultiDimensionsValueNestingGroupingProcessor(Class dataType, ExecutorService executor, Collection, ?>> resultReceivers, diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java index f8856b641ba..e7143551ace 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java @@ -15,7 +15,7 @@ public abstract class AbstractParallelAggregationProcessor { private final String aggregationNameMessageKey; - private final Lock writeLock; + private final Lock lock; public AbstractParallelAggregationProcessor(Class inputType, Class resultType, @@ -24,7 +24,7 @@ public abstract class AbstractParallelAggregationProcessor(this, ProcessorInstructionPriority.Aggregation) { @Override public AggregatedType computeResult() { - writeLock.lock(); + lock.lock(); try { handleElement(element); } finally { - writeLock.unlock(); + lock.unlock(); } return AbstractParallelAggregationProcessor.super.createInvalidResult(); } diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/package-info.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/package-info.java new file mode 100644 index 00000000000..f258add8acd --- /dev/null +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/package-info.java @@ -0,0 +1,4 @@ +/** + * TODO + */ +package com.sap.sse.datamining.impl.components; \ No newline at end of file diff --git a/wiki/data-mining-architecture.md b/wiki/data-mining-architecture.md index 8884e3d727b..2e4a5ee845f 100644 --- a/wiki/data-mining-architecture.md +++ b/wiki/data-mining-architecture.md @@ -6,36 +6,29 @@ The data mining framework consists of four major parts. At first the general inf ## General Infrastructure -The central place to get information about the current state of the data mining and to perform actions is the OSGi-Service `DataMiningServer`. It provides information about the statistics, dimensions or data retriever chains, that are currently available. It also provides methods to create and run queries with a specific structure. For example a query, that returns all dimension values for a data type, or a standard statistic query (that is described in [Building and running Queries](#Building-and-running-Queries)). The server also has methods to get necessary elements to build your own queries (like an `ExecutorService` or the `ResourceBundleStringMessages`) or to convert DTOs to the data mining domain objects. +The central place to get information about the current state of the data mining and to perform actions is the OSGi-Service `DataMiningServer`. It provides information about the statistics, dimensions, data retriever chains and other data mining components, that are currently available. It also provides methods to create and run queries with a specific structure. For example a query, that returns all dimension values for a data type, or a standard statistic query (that is described in [Building and running Queries](#Building-and-running-Queries)). The server also has methods to get necessary elements to build your own queries (like an `ExecutorService` or the `ResourceBundleStringMessages`) or to convert DTOs to the data mining domain objects. ### Registration and Deregistration of Data Mining Bundles -The data mining framework listens constantly to the registrations and deregistrations of `DataMiningBundleServices` and adds/removes their provided data mining components. Such components are for example: +The data mining framework listens constantly to the registrations and deregistrations of `DataMiningBundleServices` and adds/removes their provided data mining components. Such components are for example (see its Javadoc for detailed information): * An instance of `ResourceBundleStringMessages`, that contains the string messages used by the data mining bundle * An iterable of `DataSourceProviders`, that are used to get the data source for queries * An iterable of `DataRetrieverChainDefinitions`, that are used by the bundle (see [Building and running Queries](#Building-and-running-Queries)) * An iterable of `Classes`, that provide the functions of the bundle (see [Data Mining Functions](#Data-Mining-Functions)) -To register/deregister a data mining bundle, you just have to register/deregister its `DataMiningBundleService` to the OSGi-Context. An easy way to achieve this, is to extend the `AbstractDataMiningActivator` with the activator of the data mining bundle. This handles the registration/deregistration in the start/stop-method and implements the `DataMiningBundleService`, which forces the concrete activator to implement the component providing methods. +To register/deregister a data mining bundle, you just have to register/deregister its `DataMiningBundleService` to the OSGi-Context. An easy way to achieve this, is to extend the `AbstractDataMiningActivator` with the activator of the data mining bundle. This handles the registration/deregistration in its start/stop-method and implements the `DataMiningBundleService`, which forces the concrete activator to implement the component providing methods. ### String Messages -A data mining bundle needs string messages, that are created server-side (for example to internationalize the display name of a function). To create string messages for the bundle do the following steps: - -* Create the new source folder `resources` -* Add the package `` to `resources` -* Create empty properties files for each supported language with the name scheme `_` -* Create a `ResourceBundleStringMessages` in the `DataMiningBundleService` - * The `ResourceBundleStringMessages` needs the resource base name, which should be `/` - * A reference to this `ResourceBundleStringMessages` should be returned by the method `getStringMessages()` +A data mining bundle needs string messages, that are created server-side (for example to internationalize the display name of a function). To create string messages for the bundle do the steps described in [Typical Data Mining Scenarios](/wiki/typical-data-mining-scenarios#Adding-a-new-Data-Mining-Bundle). The provided `ResourceBundleStringMessages` will be added to the string messages of the framework, when the data mining bundle is registered. The framework string messages are an instance of `CompoundResourceBundleStringMessages`, that logs message keys that occur multiple times with the log level `INFO`. ### Data Source Provider A `DataSourceProvider` provides an instance of a data source, that is used by queries. A data source can be from any type, for example is the `RacingEventService` used as one. Your own `DataSourceProviders` should extend `AbstractDataSourceProvider`. Have a look at `RacingEventServiceProvider` for an example.
    -These `DataSourceProviders` are used by the framework to create new queries. +These `DataSourceProviders` are used by the framework to create new queries (see `DataMiningServerImpl.createQuery(...)`. ### Client-Server Communication (Data Mining DTOs) @@ -47,7 +40,7 @@ These `DataSourceProviders` are used by the framework to create new queries. The interface `DataRetrieverChainDefinition` describes the order of retrieval processors ([Processors](#Processors) with the specific functionality to map an `InputType` to a `ResultType`) to get from the `DataSourceType` to the `DataType`. It provides methods to get some information about the retriever chain and to define the order of the processors. There's currently one implementation, which is the `SimpleDataRetrieverChainDefinition`. Every retriever chain has a `UUID` for identification, which is important for the client server communication. The `SimpleDataRetrieverChainDefinition` generates a new random `UUID` upon construction. -The `DataRetrieverChainDefinition` provides three methods to define the order of the retriever chain: +The `DataRetrieverChainDefinition` provides three methods to define the order of the retriever chain (for detailed information see its Javadoc): * The method `startWith` to define the first retrieval processor. * The other methods would throw an exception, if this method hasn't been called exactly once. @@ -59,30 +52,11 @@ The `DataRetrieverChainDefinition` provides three meth * This causes all modifying methods to throw an exception, if `endWith` has been called. * The parameter `lastAddedRetrieverType` is necessary to ensure, that the `ResultType` and `InputType` of successive retrieval processors match. -This results in the mandatory call order `startWith addAfter* endWith` to define a fresh retriever chain. This strict policy ensures, that the resulting retriever chain instances are type safe and work correctly. The retrieval processors added with this methods have to have a constructor with the signature `(ExecutorService, Collection>, int)` or an exception will be thrown. This constructor is used to create concrete instances of the retrieval processors via reflection, when a retriever chain is constructed. All the definition methods (and the constructors of `SimpleDataRetrieverChainDefinition`) have a `String` parameter for a string message key, that would return the name of the retrieval level/chain. This is necessary to display the retriever chain in a human readable way. +This results in the mandatory call order `startWith addAfter* endWith` to define a fresh retriever chain. This strict policy ensures, that the resulting retriever chain instances are type safe and work correctly. The retrieval processors added with this methods have to have a constructor with the signature `(ExecutorService, Collection>, int)` or `(ExecutorService, Collection>, SettingsType, int)`. Otherwise an exception will be thrown. This constructor is used to create concrete instances of the retrieval processors via reflection, when a retriever chain is constructed. All the definition methods (and the constructors of `SimpleDataRetrieverChainDefinition`) have a `String` parameter for a string message key, that would return the name of the retrieval level/chain. This is necessary to display the retriever chain in a human readable way. -This is an example for the correct definition of a fresh retriever chain: +The `SimpleDataRetrieverChainDefinition` has a second constructor, where the parameter for the `Class` of the `DataSourceType` is replaced with an `DataRetrieverChainDefinition`. This allows the reuse of existing retriever chain definitions and initializes the new one in the state as if the method `startWith` has been called exactly once (This means, that a call of `startWith` would throw an exception). This is an example for the correct reuse of an existing retriever. See `SailingDataRetrievalChainDefinitions` for examples how to create retriever chain definitions. - DataRetrieverChainDefinition legOfCompetitorRetrieverChainDefinition = new SimpleDataRetrieverChainDefinition<>(RacingEventService.class, HasTrackedLegOfCompetitorContext.class, "LegSailingDomainRetrieverChain"); - legOfCompetitorRetrieverChainDefinition.startWith(LeaderboardGroupRetrievalProcessor.class, LeaderboardGroupWithContext.class, "LeaderboardGroup"); - legOfCompetitorRetrieverChainDefinition.addAfter(LeaderboardGroupRetrievalProcessor.class, LeaderboardRetrievalProcessor.class, HasLeaderboardContext.class, "Leaderboard"); - legOfCompetitorRetrieverChainDefinition.addAfter(LeaderboardRetrievalProcessor.class, TrackedRaceRetrievalProcessor.class, HasTrackedRaceContext.class, "Race"); - legOfCompetitorRetrieverChainDefinition.addAfter(TrackedRaceRetrievalProcessor.class, TrackedLegRetrievalProcessor.class, HasTrackedLegContext.class, "Leg"); - legOfCompetitorRetrieverChainDefinition.endWith(TrackedLegRetrievalProcessor.class, TrackedLegOfCompetitorRetrievalProcessor.class, HasTrackedLegOfCompetitorContext.class, "LegOfCompetitor"); - -The `SimpleDataRetrieverChainDefinition` has a second constructor, where the parameter for the `Class` of the `DataSourceType` is replaced with an `DataRetrieverChainDefinition`. This allows the reuse of existing retriever chains and initializes the new one in the state as if the method `startWith` has been called exactly once. This is an example for the correct reuse of an existing retriever: - - DataRetrieverChainDefinition legOfCompetitorRetrieverChainDefinition = new SimpleDataRetrieverChainDefinition<>(RacingEventService.class, HasTrackedLegOfCompetitorContext.class, "LegSailingDomainRetrieverChain"); - legOfCompetitorRetrieverChainDefinition.startWith(LeaderboardGroupRetrievalProcessor.class, LeaderboardGroupWithContext.class, "LeaderboardGroup"); - legOfCompetitorRetrieverChainDefinition.addAfter(LeaderboardGroupRetrievalProcessor.class, LeaderboardRetrievalProcessor.class, HasLeaderboardContext.class, "Leaderboard"); - legOfCompetitorRetrieverChainDefinition.addAfter(LeaderboardRetrievalProcessor.class, TrackedRaceRetrievalProcessor.class, HasTrackedRaceContext.class, "Race"); - legOfCompetitorRetrieverChainDefinition.addAfter(TrackedRaceRetrievalProcessor.class, TrackedLegRetrievalProcessor.class, HasTrackedLegContext.class, "Leg"); - legOfCompetitorRetrieverChainDefinition.endWith(TrackedLegRetrievalProcessor.class, TrackedLegOfCompetitorRetrievalProcessor.class, HasTrackedLegOfCompetitorContext.class, "LegOfCompetitor"); - - DataRetrieverChainDefinition gpsFixRetrieverChainDefinition = new SimpleDataRetrieverChainDefinition<>(legOfCompetitorRetrieverChainDefinition, HasGPSFixContext.class, "GPSFixSailingDomainRetrieverChain"); - gpsFixRetrieverChainDefinition.endWith(TrackedLegOfCompetitorRetrievalProcessor.class, GPSFixRetrievalProcessor.class,HasGPSFixContext.class, "GpsFix"); - -Concrete data retriever chain instances can be constructed with a `DataRetrieverChainBuilder`. To get the builder of a **completed** `DataRetrieverChainDefinition` call its `startBuilding` method, which can be done as often as necessary. The interface `DataRetrieverChainBuilder` provides methods to iterate the defined retriever chain and to modify the current retrieval processor. +Concrete data retriever chain instances can be constructed with a `DataRetrieverChainBuilder`. To get the builder of a **completed** `DataRetrieverChainDefinition` call its `startBuilding` method, which can be done as often as necessary. The interface `DataRetrieverChainBuilder` provides methods to iterate the defined retriever chain and to modify the current retrieval processor (for detailed information see its Javadoc). * The method `stepFurther` iterates over the retriever chain and sets the next retrieval processor as the one to modify. * Is similar to the `next` method of `Iterator`. @@ -93,36 +67,9 @@ Concrete data retriever chain instances can be constructed with a `DataRetriever The builder has to be initialized, to call the modifying methods so that no exception is thrown. This means, that the `stepFurther` method has to be called at least once. This allows a better usage of the builder in loops as described in the construction examples. -* The method `setFilter`, sets the [Filter Criterion](#Filter-Criteria) that is applied after the current retrieval processor. - * If this method is called more than once for the same retrieval processor, than the old filter is replaced by the new one. Use `CompoundFilterCriterion` to filter with multiple criteria. - * The `ElementType` of the given criterion has to match the `ResultType` of the current retrieval processor or an exception will be thrown. Call the builders `getCurrentRetrievedDataType` method to get the current `ResultType`. -* The method `addResultReceiver` adds the given processor as a result receiver of the current retrieval processor, which means that all retrieved data elements will be forwarded to the result receiver. - * It's possible to add more than one result receiver to the same retrieval processor. - * Note that, successive retrieval processors will automatically be result receivers of the corresponding precursor. - * The `InputType` of the given processor has to match the `ResultType` of the current retrieval processor or an exception will be thrown. Call the builders `getCurrentRetrievedDataType` method to get the current `ResultType`. - All iterating and modifying methods return the builder. This can be used to make multiple calls in a single statement. The method `build` constructs the configured retriever chain until the **current** retrieval processor and returns the **first** processor of the concrete retriever chain instance. This can be useful in some cases, but the standard use case is to configure the retrieval processors, that should be configured and iterate through the builder until `canStepFurther` returns `false` (this results in instances of the complete retriever chain). `build` can be called as often as necessary and it's legal to configure the chain, after `build` has been called. Note that the previously created retriever chain instance won't be affected from these changes. -This is an example how a `DataRetrieverChainBuilder` can be configured in a single statement, which is useful for tests or fix configurations: - - DataRetrieverChainBuilder> chainBuilder = dataRetrieverChainDefinition.startBuilding(ConcurrencyTestsUtil.getExecutor()); - chainBuilder.stepFurther().stepFurther().setFilter(raceFilter).stepFurther().setFilter(legOfCompetitorFilter).addResultReceiver(legReceiver); - Processor, ?> firstRetrieverInChain = chainBuilder.build(); - -This is an example how a `DataRetrieverChainBuilder` can be configured with a loop, which is useful to create many different retriever chain instances of one definition: - - DataRetrieverChainBuilder chainBuilder = dataRetrieverChainDefinition().startBuilding(executor); - Map> criteriaMappedByRetrieverLevel = getFilterCriteriaForLevel(); - while (chainBuilder.canStepFurther()) { - chainBuilder.stepFurther(); - - if (criteriaMappedByRetrieverLevel.containsKey(chainBuilder.getCurrentRetrieverLevel())) { - chainBuilder.setFilter(criteriaMappedByRetrieverLevel.get(chainBuilder.getCurrentRetrieverLevel())); - } - } - chainBuilder.addResultReceiver(groupingProcessor); - - Processor firstRetrieverInChain = chainBuilder.build(); +How the retriever chain builders can be used can be seen in the tests in `TestDataRetrieverChainCreation` and the methods of `QueryFactory`. ### Building a Processor Query @@ -140,39 +87,23 @@ This is an example how a `DataRetrieverChainBuilder` can be conf ### Processors -Processors are the main component of the framework to process the data and work with the [Pipes and Filter Architecture](http://de.wikipedia.org/wiki/Pipes_und_Filter). The interface `Processor` describes the functionality of processors, which combines pipes and filters. It has methods to process given elements or to react to a thrown failure and also methods to control the work-flow (for example to finish or abort the work), but it doesn't have methods to get the result of the data processing. The results of processors are forwarded to something, that depends on the concrete implementation (this will be other processors in most cases). Here are the most important methods of `Processor`: - -* The method `canProcessElements` returns `true`, if the processor will accept new elements. -* The method `processElement` processes the given element and forwards the result. -* The method `onFailure` handles failures during the processing. - * The standard implementation is forwarding them to the last processor, that collects the failures, until the processing is finished. Than the failures will be handled. -* The method `finish` tells the processor to finish. - * It won't accept new elements given with `processElement`. - * After the processor has finished all remaining work, will it tell all result receivers to finish. -* The method `abort` aborts the processing immediately. - * The resulting data of the processor can be incomplete or undefined. - * It won't accept new elements given with `processElement`. - * All result receivers will be told to abort. +Processors are the main component of the framework to process the data and works like the [Pipes and Filter Architecture](http://de.wikipedia.org/wiki/Pipes_und_Filter). The interface `Processor` describes the functionality of processors, which combines pipes and filters. It has methods to process given elements or to react to a thrown failure and also methods to control the work-flow (for example to finish or abort the work), but it doesn't have methods to get the result of the data processing. The results of processors are forwarded to something, that depends on the concrete implementation (this will be other processors in most cases). For detailed information see the Javadoc of `Processor`. How this functionality is implemented, depends on the concrete implementation, but it should stick to this description, except for some special cases (like the last processor in a chain). New processors should extend `AbstractParallelProcessor`. This abstract implementation implements most of the functionality defined by `Processor`, with a parallel processing of the input elements. The parallelization is done in the method `processElement`: -* An `AbstractProcessorInstruction` created if for the given input element. -* The instruction is given to an `ExecutorService`, if it is valid. - * For example are `null` instructions invalid. +* Creates an `AbstractProcessorInstruction` for the given input element, if it's valid. + * An invalid input element is for example `null`. +* The instruction is given to an `ExecutorService`, if it's valid. + * An invalid instruction is for example `null`. * See [Processor Instructions](#Processor-Instructions) for detailed information about instructions. * The instruction forwards its result to the result receivers, after it has been executed. * The execution of instructions is handled by the `ExecutorService` of the processor. -Abstract processors have the following abstract methods: - -* The method `createInstruction` creates an `AbstractProcessorInstruction` for the given input element, in which the concrete functionality of the instruction is implemented. - * See [Processor Instructions](#Processor-Instructions) for detailed information about instructions. -* The method `setAdditionalData` sets the additional result data for the processor. - * For example the amount of filtered or retrieved data elements. +For detailed information see the implementation of `AbstractParallelProcessor`. An useful method for concrete processors is the protected method `createInvalidResult`, that returns an instruction, that won't be passed to the `ExecutorService`. This can be used to stop the processing of a specific input element (for example to filter the data). -There are useful implementations of the abstract processors, that are more specialized. These special processors implement the creation of instructions and the setting of the additional data for their special case. +There are useful implementations of the abstract processors, that are more specialized. These special processors implement the creation of instructions and the setting of the additional data for their special case. They can be found in the package `com.sap.sse.datamining.impl.components`. #### Retrieval Processor @@ -180,11 +111,11 @@ Retrieval processors are used to get many result elements (as `ResultType`) from #### Filtering Processor -Filtering processors are used to filter the input elements. The class `ParallelFilteringProcessor` is a concrete processor, that checks in its instructions, if a given input element matches a `FilterCriterion`. If yes, the given input element is returned as result and if not an invalid result (created with the method `createInvalidResult`) is returned. See [Filter Criteria](#Filter-Criteria) for detailed information about possible filters. +Filtering processors are used to filter the input elements. The class `ParallelFilteringProcessor` is a concrete processor, that checks if a given input element matches a `FilterCriterion`. If yes, the given input element is returned as result and if not an invalid result (created with the method `createInvalidResult`) is returned. See [Filter Criteria](#Filter-Criteria) for detailed information about possible filters. #### Grouping Processor -Grouping processors are used classify the data elements. The class `ParallelMultiDimensionsValueNestingGroupingProcessor` is a concrete processor, that creates a compound `GroupKey` for the dimension values of a collection of [Dimension Functions](#Dimensions) for a data element. The calculation of this group key is done in the processor instruction and the type of the results is `GroupedDataEntry`. The resulting group key is a nesting of the single dimension values. So if the dimension values for a data element would be +Grouping processors are used to classify the data elements. The class `ParallelMultiDimensionsValueNestingGroupingProcessor` is a concrete processor, that creates a compound `GroupKey` for the dimension values of a collection of [Dimensions](#Dimensions) for a data element. The calculation of this group key is done in the processor instruction and the type of the results is `GroupedDataEntry`. The resulting group key is a nesting of the single dimension values. So if the dimension values for a data element would be * Regatta Name: `Kieler Woche 2014` * Race Name: `505 Race 1` @@ -204,24 +135,37 @@ Extraction processors are used to get statistic value of a grouped data element. ### Aggregators -Aggregators are special processors, that are used to aggregate a collection of input elements (e.g. grouped statistic values) to a single result element (e.g. grouped statistic aggregate). The abstract class `AbstractParallelStoringAggregationProcessor` should be used to implement new aggregators. It creates instructions, that store the input element in a collection, that depends on the concrete implementation. The concrete aggregators doesn't have to use a concurrent collection, because the abstract aggregator handles the locking before storing an input element. The instructions always return an invalid result (created with the method `createInvalidResult`). This has the effect, that there won't be a result element forwarded to the result receivers, when the instruction has been executed. This is because the standard aggregator needs all input elements before it can calculate the aggregate. This is done in the implementation of the method `finish`. The calculated aggregate will then be forwarded to the result receivers. The abstract aggregator has two abstract methods: +Aggregators are special processors, that are used to aggregate a collection of input elements (e.g. grouped statistic values) to a single result element (e.g. grouped statistic aggregate). They are located in the package `com.sap.sse.datamining.impl.components.aggregators`. There are multiple abstract aggregation processors, that can be used to implement specific aggregators: -* The method `storeElement`, that is called in the instructions to store the given element in the specific collection. -* The method `aggregateResult`, that is called in the `finish` method. It calculates the aggregate for the stored input elements and returns a single result element. +* The `AbstractParallelAggregationProcessor` is the most abstract aggregator and is the base class for any other (abstract or not) aggregator. There are no restrictions for the generic parameters. `InputType` and `AggregatedType` can be anything. + * This processor creates instructions, that perform the following steps: + 1. Acquires a lock + 2. Handle the input element (this has to be implemented from the concrete aggregators) + 3. Release the lock + 4. Return an invalid result + * This means, that the concrete implementations don't have to care about concurrency, because of the locking done by the most abstract aggregator. + * The result of the aggregation is computed and forwarded, when no more input is expected (more specific in the `finish` method). +* The only class, that extends the previous aggregator is the `AbstractParallel`**`GroupedData`**`AggregationProcessor`, that does noting but adding a restriction to the generic parameters. The resulting `InputType` of this processor is `GroupedDataEntry` and the resulting `ResultType` is `Map`. This means, that this kind of processor expects grouped values and calculates an aggregation for all elements with the same group key. This class has two abstract subclasses (and several concrete aggregators): + * The `AbstractParallelGroupedData`**`Storing`**`AggregationProcessor` refines the names of the abstract methods to fit the specific purpose, that every input element is stored by the aggregator and that any calculation is done after every element is known. This is used by aggregators, that can't calculate the aggregation incrementally with each input element. For example to calculate the median. + * The `AbstractParallel`**`SingleGroupedValue`**`AggregationProcessor` takes a single input element (per key), that meets a specific condition compared to the other input elements (for the key). These values are returned as aggregation. This is used to calculate the minimum or the maximum. -**It's important to add a new entry to the enum `AggregatorType`, after a new type of aggregator has been implemented.** The aggregator won't be displayed in the generic data mining UI otherwise. This is legacy code from the previous architecture and will be removed in the future development. +There are several concrete aggregators, that are domain independent and will be available in every domain specific data mining bundle. For example to count the amount of elements with the same key or to calculate sum, average, median, minimum or maximum of numeric values. If you have to implement a new aggregator keep the following things in mind: -There are some concrete aggregators, that have `GroupedDataEntry` as `InputType` and `Map>)` or an exception will be thrown upon the construction of the `AggregationProcessorDefinition`. + * If the aggregator is located in a domain specific bundle, add its definition to the corresponding method of the `DataMiningBundleService` of this bundle. + * If the aggregator is located in the domain independent bundle, add its definition to the method `getDefaultAggregationProcessors()` of the `DataMiningFrameworkActivator`. -* Sum (implemented by `ParallelGroupedDoubleDataSumAggregationProcessor`) -* Average (implemented by `ParallelGroupedDoubleDataAverageAggregationProcessor`) -* Median (implemented by `ParallelGroupedDoubleDataMedianAggregationProcessor`) -* Maximum (implemented by `ParallelGroupedDoubleDataMaxAggregationProcessor`) -* Minimum (implemented by `ParallelGroupedDoubleDataMinAggregationProcessor`) -* Count (implemented by `ParallelGroupedDataCountAggregationProcessor`) - * This aggregator is type independent and can be used with any `GroupedDataEntry` - -There's also the special aggregator `ParallelGroupedDataCollectingAsSetProcessor`, that returns a `Map>` as result element. There's no entry in the enum `AggregatorType`, because this aggregator shouldn't be used by the end users. It is used to collect all dimension values of a collection of data elements. +There's also the special aggregator `ParallelGroupedDataCollectingAsSetProcessor`, that returns a `Map>` as result element. This aggregator isn't registered to the framework, because it shouldn't be used by the end users. It is used to collect all dimension values of a collection of data elements, which is a very special case. ### Processor Instructions @@ -235,13 +179,15 @@ Processor instructions are `Runnables` enriched with a priority. The abstract cl ### Data Types +In relationaler Umgebung wären es Fakten. + *This section is under construction.* ## Data Mining Functions Data Mining Functions are used by the [Data Processing Components](#Data-Processing-Components) to get the data from the data elements, that is necessary for the data processing. This can be for the filtration or grouping by dimension values (like the name of the regatta or the leg type) or for the extraction of the statistic values (like the traveled distance or the relative rank). Functions can be defined by annotating the methods of data types and domain types, that should be used to the data. There are currently the three annotations `Connector`, `Dimension` and `Statistic` with different properties and conditions as described below. This makes the system flexible and allows developers to add new or change existing dimensions and statistics very fast. This can also be done during run-time, if the corresponding OSGi-Bundles are hot deployed or refreshed (see [Registration and Deregistration of Data Mining Bundles](#Registration-and-Deregistration-of-Data-Mining-Bundles) for more information). -### Connecter +### Connector Methods marked with the annotation `Connector` indicate the framework, that the result type contains functions. The method has to match the following conditions, to be registered by the framework: diff --git a/wiki/typical-data-mining-scenarios.md b/wiki/typical-data-mining-scenarios.md index dfd4ba8adf8..c205e41ebf3 100644 --- a/wiki/typical-data-mining-scenarios.md +++ b/wiki/typical-data-mining-scenarios.md @@ -13,7 +13,7 @@ The following points describe the steps to create a new data mining bundle. An e * `com.sap.sse.datamining.shared` * `com.sap.sse.datamining.annotations` * Create an `Activator` for the new data mining bundle and provide a `DataMiningBundleService` to the OSGi-Context (see [Registration and Deregistration of Data Mining Bundles](data-mining-architecture#Registration-and-Deregistration-of-Data-Mining-Bundles) for detailed information) - * This can be done by extending the `AbstractDataMiningActivator` and implementing it's abstract methods + * This can be done by extending the `AbstractDataMiningActivator` and implementing it's abstract methods. (Recommended) * Or by implementing your own `DataMiningBundleService` and register it as OSGi-Service * Prepare the string messages * Create the new source folder `resources` @@ -29,7 +29,12 @@ The following points describe the steps to create a new data mining bundle. An e ## Adding an absolute new Data Type -A data type is an atomic unit on which the processing components operate. A data type is normally based on a domain element (like `GPSFixMoving` or `TrackedLegOfCompetitor`) and provides contextual information about it (like the name of the regatta or race) via [Functions](data-mining-architecture#Data-Mining-Functions). +*Konzeptionelle Beschreibung der Statistic Query: DataRetrieval -> Grouping -> Extraction -> Aggregation* + + + + +A data type is an atomic unit on which the processing components operate. A data type is normally based on a domain element (like `GPSFixMoving` or `TrackedLegOfCompetitor`) and provides contextual information about it (like the name of the regatta or race) via [Functions](data-mining-architecture#Data-Mining-Functions). *Dimensions and Statistics* ### Create the necessary Data Types @@ -37,7 +42,8 @@ The following points describe the steps to create a data type, that is based on * Create an interface for the domain element. The naming convention for data type interfaces is `HasContext`. * If `TrackedLegOfCompetitor` would be the domain element, then the name of the data type interface should be `HasTrackedLegOfCompetitorContext`. -* Create a data type interface for the steps from the data source to the domain element +* Create a data type interface for each important step from the data source to the domain element +* *Hierbei kann und sollte das Domänenmodell abstrahiert werden.* * In the case of the `TrackedLegOfCompetitor` the steps would be * `LeaderboardGroup` * `Leaderboard` @@ -45,10 +51,11 @@ The following points describe the steps to create a data type, that is based on * `TrackedLeg` * `TrackedLegOfCompetitor` * This isn't mandatory for the framework to work, but it improves its performance, because it's possible to build a processor chain, that filters after each step. -* Add the data type interfaces to the `Classes` return by the method `getClassesWithMarkedMethods()` of the `DataMiningBundleService` of the data mining bundle. -* Add methods to get the contextual information and annotate them, so that they get registered as functions. +* Add the data type interfaces to the classes returned by the method `getClassesWithMarkedMethods()` of the `DataMiningBundleService` of the data mining bundle. +* Add methods to get the contextual information and annotate *Referenz zur Architektur* them, so that they get registered as dimensions/statistics. + * *Kurze Informationen über die vorhandenen Annotationen* * To get the contextual data of a higher level data type interface annotate the getter for this interface with `@Connector(scanForStatistics=false)`. - * If the data type `HasTrackedLegOfCompetitorContext` should have access to the dimensions of the previous data type (in this case `HasTrackedLegContext`), a method like `HasTrackedLegContext getTrackedLegContext()` is necessary. + * If the data type `HasTrackedLegOfCompetitorContext` should have access to the dimensions of the previous data type (in this case `HasTrackedLegContext`), an annotated method like `HasTrackedLegContext getTrackedLegContext()` is necessary. * There's currently no parameter support for functions, except for signatures exactly like `(Locale, ResourceBundleStringMessages)`. * Cycles in the graph of annotated methods aren't supported and would result in an infinite loop during the function registration. * See [Data Mining Functions](data-mining-architecture#Data-Mining-Functions) for detailed information about the annotations. @@ -125,6 +132,17 @@ markPassingRetrieverChain.endWith(MarkPassingRetrievalProcessor.class); * Ensure, that all retriever chains are added to the `DataMiningBundleService` +### Implement your own Aggregators + +It may be necessary, that your data mining bundle needs domain specific [aggregator](/wiki/data-mining-architecture#Aggregators). For example to compute the aggregations for domain specific statistics (like `Distance`), that can't be done by the domain independent aggregators (located in `com.sap.sse.datamining.impl.components.aggregators`). To do this perform the following steps: + +* Implement your own aggregator according to the advice in [Data Mining Architecture](/wiki/data-mining-architecture#Aggregators). +* Provide a `AggregationProcessorDefinition` for the new aggregator in the corresponding method of the `DataMiningBundleService` of your data mining bundle. + * The current convention is, that every concrete aggregator provides its definition with a static method. + * Note that the aggregator needs a constructor with the signature `(ExecutorService, Collection>)` or an exception will be thrown upon the construction of the `AggregationProcessorDefinition`. + +For example see the `Activator` of the `com.sap.sailing.datamining` bundle and its aggregators in the package `com.sap.sailing.datamining.impl.components.aggregators`. + ## Include a Type forcefully in the GWT Serialization Policy It can happen, that a necessary type isn't included in the GWT Serialization Policy, because of the generality of the framework. To enforce the include of a type, the GWT-Service has to use the type in one of its methods. To do this, follow these steps: From 705326bdee3cd1285e9d30d795dc0691ca957d2a Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 10:24:41 +0200 Subject: [PATCH 366/504] Clean up and documentation removed unused classes in com.sap.sailing.polars[.test] and added documentation to used classes. --- .../test/WindSpeedAndAngleEstimatorTest.java | 260 ------------------ .../sailing/polars/PolarDataOperation.java | 8 + .../sap/sailing/polars/impl/Activator.java | 6 + .../sailing/polars/impl/CubicEquation.java | 11 + .../polars/impl/PolarDataServiceImpl.java | 11 +- .../mining/AbstractEnrichingProcessor.java | 8 + .../mining/AngleAndSpeedRegression.java | 18 ++ .../mining/AngleClusterPolarClusterKey.java | 6 + .../polars/mining/AverageAngleContainer.java | 21 -- .../polars/mining/BasePolarClusterKey.java | 7 + .../polars/mining/BearingClusterGroup.java | 19 ++ .../CubicRegressionPerCourseProcessor.java | 29 ++ .../mining/GPSFixMovingWithOriginInfo.java | 5 + .../mining/GPSFixMovingWithPolarContext.java | 7 + .../polars/mining/LegTypePolarClusterKey.java | 5 + .../PolarDataDimensionCollectionFactory.java | 7 + .../sailing/polars/mining/PolarDataMiner.java | 11 + .../polars/mining/PolarFixFilterCriteria.java | 8 + .../polars/mining/RoundedTrueWindAngle.java | 8 + ...eedRegressionPerAngleClusterProcessor.java | 17 ++ .../sailing/polars/mining/WindSpeedLevel.java | 54 ---- .../IncrementalAnyOrderLeastSquaresImpl.java | 4 + .../impl/WindSpeedAndAngleEstimator.java | 197 ------------- 23 files changed, 191 insertions(+), 536 deletions(-) delete mode 100755 java/com.sap.sailing.polars.test/src/com/sap/sailing/polars/test/WindSpeedAndAngleEstimatorTest.java delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AverageAngleContainer.java delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/WindSpeedLevel.java delete mode 100644 java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/WindSpeedAndAngleEstimator.java diff --git a/java/com.sap.sailing.polars.test/src/com/sap/sailing/polars/test/WindSpeedAndAngleEstimatorTest.java b/java/com.sap.sailing.polars.test/src/com/sap/sailing/polars/test/WindSpeedAndAngleEstimatorTest.java deleted file mode 100755 index 42f5f6d66eb..00000000000 --- a/java/com.sap.sailing.polars.test/src/com/sap/sailing/polars/test/WindSpeedAndAngleEstimatorTest.java +++ /dev/null @@ -1,260 +0,0 @@ -package com.sap.sailing.polars.test; - -import static org.hamcrest.Matchers.closeTo; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import org.junit.Test; - -import com.sap.sailing.domain.base.SpeedWithBearingWithConfidence; -import com.sap.sailing.domain.base.impl.SpeedWithBearingWithConfidenceImpl; -import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.impl.DegreeBearingImpl; -import com.sap.sailing.domain.common.impl.KnotSpeedImpl; -import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sailing.polars.regression.impl.WindSpeedAndAngleEstimator; -import com.sap.sse.common.Util.Pair; - -public class WindSpeedAndAngleEstimatorTest { - - private static final double ERROR = 0.0001; - - @Test - public void testAverageTrueWindSpeedAndAngleEstimationForSteadyGrowth() { - List>> averageBoatSpeedAndCourseForWindSpeed = new ArrayList<>(); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(5), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(3, - new DegreeBearingImpl(46)), 0.4, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(6), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4, - new DegreeBearingImpl(47)), 0.6, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(7), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4.5, - new DegreeBearingImpl(47.5)), 0.5, null))); - WindSpeedAndAngleEstimator estimator = new WindSpeedAndAngleEstimator(averageBoatSpeedAndCourseForWindSpeed); - - SpeedWithBearingWithConfidence result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(3)); - assertThat(result.getObject().getKnots(), closeTo(5, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(46, ERROR)); - assertThat(result.getConfidence(), closeTo(0.4, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(4)); - assertThat(result.getObject().getKnots(), closeTo(6, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(47, ERROR)); - assertThat(result.getConfidence(), closeTo(0.6, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(4.5)); - assertThat(result.getObject().getKnots(), closeTo(7, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(47.5, ERROR)); - assertThat(result.getConfidence(), closeTo(0.5, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(4.25)); - assertThat(result.getObject().getKnots(), closeTo(6.5, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(47.25, ERROR)); - assertThat(result.getConfidence(), closeTo(0.55, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(3.25)); - assertThat(result.getObject().getKnots(), closeTo(5.25, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(46.25, ERROR)); - assertThat(result.getConfidence(), closeTo(0.45, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(2.75)); - assertThat(result.getObject().getKnots(), closeTo(5, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(46, ERROR)); - assertThat(result.getConfidence(), closeTo(0.2, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(4.75)); - assertThat(result.getObject().getKnots(), closeTo(7, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(47.5, ERROR)); - assertThat(result.getConfidence(), closeTo(0.25, ERROR)); - } - - /** - * Not a realistic scenario in the sailing world, but testing for the sake of correctness of the algorithm - */ - @Test - public void testAverageTrueWindSpeedAndAngleEstimationForSteadyDeclination() { - List>> averageBoatSpeedAndCourseForWindSpeed = new ArrayList<>(); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(7), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(3, - new DegreeBearingImpl(46)), 0.4, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(6), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4, - new DegreeBearingImpl(47)), 0.6, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(5), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4.5, - new DegreeBearingImpl(47.5)), 0.5, null))); - WindSpeedAndAngleEstimator estimator = new WindSpeedAndAngleEstimator(averageBoatSpeedAndCourseForWindSpeed); - - SpeedWithBearingWithConfidence result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(3)); - assertThat(result.getObject().getKnots(), closeTo(7, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(46, ERROR)); - assertThat(result.getConfidence(), closeTo(0.4, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(4)); - assertThat(result.getObject().getKnots(), closeTo(6, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(47, ERROR)); - assertThat(result.getConfidence(), closeTo(0.6, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(4.5)); - assertThat(result.getObject().getKnots(), closeTo(5, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(47.5, ERROR)); - assertThat(result.getConfidence(), closeTo(0.5, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(4.25)); - assertThat(result.getObject().getKnots(), closeTo(5.5, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(47.25, ERROR)); - assertThat(result.getConfidence(), closeTo(0.55, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(3.25)); - assertThat(result.getObject().getKnots(), closeTo(6.75, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(46.25, ERROR)); - assertThat(result.getConfidence(), closeTo(0.45, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(2.75)); - assertThat(result.getObject().getKnots(), closeTo(7, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(46, ERROR)); - assertThat(result.getConfidence(), closeTo(0.2, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(4.75)); - assertThat(result.getObject().getKnots(), closeTo(5, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(47.5, ERROR)); - assertThat(result.getConfidence(), closeTo(0.25, ERROR)); - } - - @Test - public void testAverageTrueWindSpeedAndAngleEstimationNegative() { - List>> averageBoatSpeedAndCourseForWindSpeed = new ArrayList<>(); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(5), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(3, - new DegreeBearingImpl(46)), 0.4, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(6), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4, - new DegreeBearingImpl(47)), 0.6, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(7), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4.5, - new DegreeBearingImpl(47.5)), 0.5, null))); - WindSpeedAndAngleEstimator estimator = new WindSpeedAndAngleEstimator(averageBoatSpeedAndCourseForWindSpeed); - - SpeedWithBearingWithConfidence result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(2)); - assertThat(result, nullValue()); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(5.5)); - assertThat(result, nullValue()); - } - - @Test - public void testAverageTrueWindSpeedAndAngleEstimationForNonReversibleFunction() { - List>> averageBoatSpeedAndCourseForWindSpeed = new ArrayList<>(); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(5), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(3, - new DegreeBearingImpl(46)), 0.4, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(6), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4, - new DegreeBearingImpl(47)), 0.6, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(7), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4.5, - new DegreeBearingImpl(47.5)), 0.5, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(8), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4.25, - new DegreeBearingImpl(47.5)), 0.25, null))); - WindSpeedAndAngleEstimator estimator = new WindSpeedAndAngleEstimator(averageBoatSpeedAndCourseForWindSpeed); - - SpeedWithBearingWithConfidence result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(4.25)); - assertThat(result.getObject().getKnots(), closeTo(6.5, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(47.25, ERROR)); - assertThat(result.getConfidence(), closeTo(0.55, ERROR)); - } - - @Test - public void testAverageTrueWindSpeedAndAngleEstimationWithAllCandidatesReturned() { - List>> averageBoatSpeedAndCourseForWindSpeed = new ArrayList<>(); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(5), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(3, - new DegreeBearingImpl(46)), 0.4, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(6), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4, - new DegreeBearingImpl(47)), 0.6, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(7), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4.5, - new DegreeBearingImpl(47.5)), 0.5, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(8), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4.25, - new DegreeBearingImpl(47.5)), 0.25, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(9), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(3, - new DegreeBearingImpl(47.5)), 0.25, null))); - WindSpeedAndAngleEstimator estimator = new WindSpeedAndAngleEstimator(averageBoatSpeedAndCourseForWindSpeed); - - Set> result = estimator - .getAverageTrueWindSpeedAndAngleCandidates(new KnotSpeedImpl(4.3)); - assertThat(result.size(), is(2)); - for (SpeedWithBearingWithConfidence candidate : result) { - assertTrue(Math.abs(candidate.getConfidence()-0.2999999)<=ERROR || - Math.abs(candidate.getConfidence()-0.54)<=ERROR); - if (Math.abs(candidate.getConfidence() - 0.2999999) < ERROR) { - assertThat(candidate.getObject().getKnots(), closeTo(7.8, ERROR)); - assertThat(candidate.getObject().getBearing().getDegrees(), closeTo(47.5, ERROR)); - } else { - assertThat(candidate.getObject().getKnots(), closeTo(6.6, ERROR)); - assertThat(candidate.getObject().getBearing().getDegrees(), closeTo(47.3, ERROR)); - - } - } - - result = estimator.getAverageTrueWindSpeedAndAngleCandidates(new KnotSpeedImpl(2.9)); - assertThat(result.size(), is(2)); - for (SpeedWithBearingWithConfidence candidate : result) { - assertTrue(Math.abs(candidate.getConfidence()-0.2) <= ERROR || - Math.abs(candidate.getConfidence()-0.125) <= ERROR); - if (Math.abs(candidate.getConfidence() - 0.2) < ERROR) { - assertThat(candidate.getObject().getKnots(), closeTo(5, ERROR)); - assertThat(candidate.getObject().getBearing().getDegrees(), closeTo(46, ERROR)); - } else { - assertThat(candidate.getObject().getKnots(), closeTo(9, ERROR)); - assertThat(candidate.getObject().getBearing().getDegrees(), closeTo(47.5, ERROR)); - - } - } - result = estimator.getAverageTrueWindSpeedAndAngleCandidates(new KnotSpeedImpl(4.9)); - assertThat(result.size(), is(1)); - SpeedWithBearingWithConfidence candidate = result.iterator().next(); - assertThat(candidate.getObject().getKnots(), closeTo(7, ERROR)); - assertThat(candidate.getObject().getBearing().getDegrees(), closeTo(47.5, ERROR)); - assertThat(candidate.getConfidence(), closeTo(0.25, ERROR)); - } - - @Test - public void testAverageTrueWindSpeedAndAngleEstimationForTwoSamplingPointsWithSameBoatSpeed() { - List>> averageBoatSpeedAndCourseForWindSpeed = new ArrayList<>(); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(7), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4.5, - new DegreeBearingImpl(47.5)), 0.5, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(8), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(4.5, - new DegreeBearingImpl(47.5)), 0.4, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(9), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(5.5, - new DegreeBearingImpl(47.5)), 0.4, null))); - averageBoatSpeedAndCourseForWindSpeed.add(new Pair>( - new KnotSpeedImpl(10), new SpeedWithBearingWithConfidenceImpl(new KnotSpeedWithBearingImpl(5.5, - new DegreeBearingImpl(47.5)), 0.5, null))); - WindSpeedAndAngleEstimator estimator = new WindSpeedAndAngleEstimator(averageBoatSpeedAndCourseForWindSpeed); - - SpeedWithBearingWithConfidence result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(4.5)); - assertThat(result.getObject().getKnots(), closeTo(7.44444, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(47.5, ERROR)); - assertThat(result.getConfidence(), closeTo(0.455555, ERROR)); - - result = estimator.getAverageTrueWindSpeedAndAngle(new KnotSpeedImpl(5.5)); - assertThat(result.getObject().getKnots(), closeTo(9.555555, ERROR)); - assertThat(result.getObject().getBearing().getDegrees(), closeTo(47.5, ERROR)); - assertThat(result.getConfidence(), closeTo(0.455555, ERROR)); - } -} diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/PolarDataOperation.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/PolarDataOperation.java index 0c73e8ca736..f2188a3fd01 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/PolarDataOperation.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/PolarDataOperation.java @@ -3,6 +3,14 @@ package com.sap.sailing.polars; import com.sap.sailing.polars.impl.PolarDataServiceImpl; import com.sap.sse.replication.OperationWithResult; +/** + * + * Needed in the context of the initial replication of the polar data service. + * + * @author D054528 Frederik Petersen + * + * @param + */ public interface PolarDataOperation extends OperationWithResult { } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/Activator.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/Activator.java index d7227786ca2..4e9e72b5ff3 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/Activator.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/Activator.java @@ -13,6 +13,12 @@ import org.osgi.framework.ServiceRegistration; import com.sap.sailing.domain.polars.PolarDataService; import com.sap.sse.replication.Replicable; +/** + * Handles OSGi (de-)registration of the polar data service. + * + * @author D054528 (Frederik Petersen) + * + */ public class Activator implements BundleActivator { private static final Logger logger = Logger.getLogger(Activator.class.getName()); diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/CubicEquation.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/CubicEquation.java index 0047627ba28..ebe195f994f 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/CubicEquation.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/CubicEquation.java @@ -1,5 +1,12 @@ package com.sap.sailing.polars.impl; +/** + * Represents cubic equations in the form of a*x^3 + b*x^2 + c*x + d = 0 and can solve roots for x with {@link #solve()}. + * !Note that complex roots are not returned.! + * + * @author D054528 (Frederik Petersen) + * + */ public class CubicEquation { private double a; @@ -7,6 +14,9 @@ public class CubicEquation { private double c; private double d; + /** + * Create a cubic equation in the form of a*x^3 + b*x^2 + c*x + d = 0. + */ public CubicEquation(double a, double b, double c, double d) { this.a = a; this.b = b; @@ -16,6 +26,7 @@ public class CubicEquation { /** * Following: http://www.1728.org/cubic2.htm !The complex roots are not returned! + * Returned array can be of length one or three. Depending on how many real roots there are. */ public double[] solve() { diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java index 17c60cebd1b..3bb1b76d9d2 100755 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/impl/PolarDataServiceImpl.java @@ -47,14 +47,14 @@ import com.sap.sse.replication.OperationWithResult; import com.sap.sse.replication.ReplicationMasterDescriptor; import com.sap.sse.replication.impl.OperationWithResultWithIdWrapper; import com.sap.sse.replication.impl.ReplicableWithObjectInputStream; -import com.sap.sse.util.SmartFutureCache; /** - * Uses two chained {@link SmartFutureCache}s. One to store {@link PolarFix}es extracted from {@link TrackedRace}s and - * the other one for storing one polar sheet per boat class. This enables quick access to desired measures like optimal - * beat angles. + * Uses a custom datamining pipeline to aggregate incoming fixes in two regression based polar containers. + * + * For more information on polars in SAP Sailing Analytics, please see: http://wiki.sapsailing.com/wiki/Polars * * @author Frederik Petersen (D054528) + * @author Axel Uhl * */ public class PolarDataServiceImpl implements PolarDataService, @@ -79,6 +79,9 @@ public class PolarDataServiceImpl implements PolarDataService, private DomainFactory domainFactory; + /** + * Constructs the polar data service with default generation settings. + */ public PolarDataServiceImpl() { PolarSheetGenerationSettings settings = PolarSheetGenerationSettingsImpl.createBackendPolarSettings(); ClusterGroup angleClusterGroup = createAngleClusterGroup(); diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java index 2b0999df9b7..3ecd707f765 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AbstractEnrichingProcessor.java @@ -9,6 +9,11 @@ import com.sap.sse.datamining.components.ProcessorInstruction; import com.sap.sse.datamining.impl.components.AbstractParallelProcessor; import com.sap.sse.datamining.impl.components.AbstractProcessorInstruction; +/** + * This simple abstract processor can be used to enrich data. + * + * @author D054528 (Frederik Petersen) + */ public abstract class AbstractEnrichingProcessor extends AbstractParallelProcessor { @@ -28,6 +33,9 @@ public abstract class AbstractEnrichingProcessor extends }; } + /** + * Takes an input element, enriches it with context data and returns that result. + */ protected abstract ResultType enrich(InputType element); @Override diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleAndSpeedRegression.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleAndSpeedRegression.java index d681f31ea7a..4c0ae954db4 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleAndSpeedRegression.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleAndSpeedRegression.java @@ -25,6 +25,17 @@ import com.sap.sailing.polars.regression.impl.IncrementalAnyOrderLeastSquaresImp import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util.Pair; +/** + * This container has two regressions. One for boatSpeed over windSpeed and one for beatAngle over windSpeed + * estimations. + * + * It can return speed and angle for a given windSpeed and should only be used for restricted sets of input data. There + * should be one instance per BoatClass+LegType combination. This seperation needs to be taken care of in a higher level + * of the application. + * + * @author D054528 (Frederik Petersen) + * + */ public class AngleAndSpeedRegression implements Serializable { private static final long serialVersionUID = 6343595388753945979L; @@ -43,6 +54,10 @@ public class AngleAndSpeedRegression implements Serializable { angleRegression.addData(windSpeedInKnots, angleToTheWind.getObject().getDegrees()); } + /** + * Estimate the speed and angle for a given windSpeed by using the regressions contained in this class. + * Seperation by boatclass and legtype needs to be done on a higher level. + */ public SpeedWithBearingWithConfidence estimateSpeedAndAngle(Speed windSpeed) throws NotEnoughDataHasBeenAddedException { double windSpeedInKnots = windSpeed.getKnots(); @@ -57,6 +72,9 @@ public class AngleAndSpeedRegression implements Serializable { speedRegression.getNumberOfAddedPoints() / 100.0), null); } + /** + * Estimates wind speed candidates for the given input scenario based on the speed and angle regressions. + */ public Set> estimateTrueWindSpeedAndAngleCandidates(Speed speedOverGround, LegType legType, Tack tack) throws NotEnoughDataHasBeenAddedException { double[] coefficiants = speedRegression.getOrCreatePolynomialFunction().getCoefficients(); diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleClusterPolarClusterKey.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleClusterPolarClusterKey.java index 453fec195e4..22157d7b534 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleClusterPolarClusterKey.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AngleClusterPolarClusterKey.java @@ -4,6 +4,12 @@ import com.sap.sailing.domain.common.Bearing; import com.sap.sse.datamining.annotations.Dimension; import com.sap.sse.datamining.data.Cluster; +/** + * Allows to group the incoming fixes by beat angle range. + * + * @author D054528 (Frederik Petersen) + * + */ public interface AngleClusterPolarClusterKey extends BasePolarClusterKey { @Dimension(messageKey = "angleCluster") diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AverageAngleContainer.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AverageAngleContainer.java deleted file mode 100644 index c9c9f738e37..00000000000 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/AverageAngleContainer.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.sap.sailing.polars.mining; - -import java.io.Serializable; - -public class AverageAngleContainer implements Serializable { - private static final long serialVersionUID = -6370647955050312847L; - private int dataCount = 0; - private double angleSumDeg = 0.0; - private double averageAngleDeg = 0.0; - - public void addFix(double roundedAngleDeg) { - dataCount++; - angleSumDeg += roundedAngleDeg; - averageAngleDeg = angleSumDeg / (double) dataCount; - } - - Double getAverageAngleDeg() { - return averageAngleDeg; - } - -} diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BasePolarClusterKey.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BasePolarClusterKey.java index b8775d3f855..c429d790e37 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BasePolarClusterKey.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BasePolarClusterKey.java @@ -3,6 +3,13 @@ package com.sap.sailing.polars.mining; import com.sap.sailing.domain.base.BoatClass; import com.sap.sse.datamining.annotations.Dimension; +/** + * + * Allows grouping the incoming fixes by boat class. + * + * @author D054528 (Frederik Petersen) + * + */ public interface BasePolarClusterKey { @Dimension(messageKey = "boatClass") diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BearingClusterGroup.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BearingClusterGroup.java index 5f879362ea8..96227290990 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BearingClusterGroup.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BearingClusterGroup.java @@ -15,8 +15,27 @@ import com.sap.sse.datamining.impl.data.ComparatorClusterBoundary; import com.sap.sse.datamining.impl.data.ComparisonStrategy; import com.sap.sse.datamining.impl.data.FixClusterGroup; +/** + * Allows grouping angles into angle ranges. + * + * @author D054528 (Frederik Petersen) + * + */ public class BearingClusterGroup extends FixClusterGroup { + /** + * Creates an angle range grouping. + * + * E.g. call {@link #BearingClusterGroup(0, 10, 5)} if you wanr to group angle data that ranges from 0 to 10° into + * two containers. 0->5 and 5->10 + * + * @param startAngle + * smallest angle + * @param endAngle + * biggest angle + * @param clusterSize + * how big should each range be. + */ public BearingClusterGroup(int startAngle, int endAngle, int clusterSize) { super(createClusters(startAngle, endAngle, clusterSize)); } diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/CubicRegressionPerCourseProcessor.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/CubicRegressionPerCourseProcessor.java index ec42958f4b6..0d052e225b8 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/CubicRegressionPerCourseProcessor.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/CubicRegressionPerCourseProcessor.java @@ -23,6 +23,13 @@ import com.sap.sse.datamining.factories.GroupKeyFactory; import com.sap.sse.datamining.impl.components.GroupedDataEntry; import com.sap.sse.datamining.shared.GroupKey; +/** + * Groups incoming fixes by boatclass and legtype into {@link AngleAndSpeedRegression} instances and + * provides access methods to regression data. + * + * @author D054528 (Frederik Petersen) + * + */ public class CubicRegressionPerCourseProcessor implements Processor, Void>, Serializable { @@ -66,6 +73,9 @@ public class CubicRegressionPerCourseProcessor implements } } + /** + * Returns speed and twa for a given scenario, if data is available in the regression. + */ public SpeedWithBearingWithConfidence getAverageSpeedAndCourseOverGround(BoatClass boatClass, Speed windSpeed, LegType legType) throws NotEnoughDataHasBeenAddedException { GroupKey key = createGroupKey(boatClass, legType); @@ -78,6 +88,9 @@ public class CubicRegressionPerCourseProcessor implements return estimatedSpeedAndAngle; } + /** + * Returns windspeed and windangle candidates for a given scenario, if enough data is available. + */ public Set> estimateTrueWindSpeedAndAngleCandidates(BoatClass boatClass, Speed speedOverGround, LegType legType, Tack tack) { GroupKey key = createGroupKey(boatClass, legType); @@ -118,6 +131,14 @@ public class CubicRegressionPerCourseProcessor implements return compoundKey; } + /** + * Allows direct access to speed regression functions for debugging purposes. + * + * For actual usage of the data please use + * {@link #getAverageSpeedAndCourseOverGround(BoatClass, Speed, LegType)} + * and + * {@link #estimateTrueWindSpeedAndAngleCandidates(BoatClass, Speed, LegType, Tack)}. + */ public PolynomialFunction getSpeedRegressionFunction(BoatClass boatClass, LegType legType) throws NotEnoughDataHasBeenAddedException { GroupKey key = createGroupKey(boatClass, legType); @@ -130,6 +151,14 @@ public class CubicRegressionPerCourseProcessor implements return polynomialFunction; } + /** + * Allows direct access to angle regression functions for debugging purposes. + * + * For actual usage of the data please use + * {@link #getAverageSpeedAndCourseOverGround(BoatClass, Speed, LegType)} + * and + * {@link #estimateTrueWindSpeedAndAngleCandidates(BoatClass, Speed, LegType, Tack)}. + */ public PolynomialFunction getAngleRegressionFunction(BoatClass boatClass, LegType legType) throws NotEnoughDataHasBeenAddedException { GroupKey key = createGroupKey(boatClass, legType); diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/GPSFixMovingWithOriginInfo.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/GPSFixMovingWithOriginInfo.java index c077c344aac..69a0671379d 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/GPSFixMovingWithOriginInfo.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/GPSFixMovingWithOriginInfo.java @@ -4,6 +4,11 @@ import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.TrackedRace; +/** + * Encapsulates a {@link GPSFixMoving} with more data needed for polar aggregation. + * @author D054528 (Frederik Petersen) + * + */ public class GPSFixMovingWithOriginInfo { private final GPSFixMoving fix; diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/GPSFixMovingWithPolarContext.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/GPSFixMovingWithPolarContext.java index 0d02bd8ae7c..5e5fd9a5ab9 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/GPSFixMovingWithPolarContext.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/GPSFixMovingWithPolarContext.java @@ -27,6 +27,13 @@ import com.sap.sse.common.Util.Pair; import com.sap.sse.datamining.data.Cluster; import com.sap.sse.datamining.data.ClusterGroup; +/** + * Encapsulates a {@link GPSFixMoving} with some polar context. Some of the important and computeintensive data is + * calculated once and then cached for further usage in this class. + * + * @author D054528 (Frederik Petersen) + * + */ public class GPSFixMovingWithPolarContext implements LegTypePolarClusterKey, AngleClusterPolarClusterKey { private final GPSFixMoving fix; diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/LegTypePolarClusterKey.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/LegTypePolarClusterKey.java index 4c08883af94..3c2ddf8b664 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/LegTypePolarClusterKey.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/LegTypePolarClusterKey.java @@ -3,6 +3,11 @@ package com.sap.sailing.polars.mining; import com.sap.sailing.domain.common.LegType; import com.sap.sse.datamining.annotations.Dimension; +/** + * Allows grouping incoming fixes by legtype. + * @author D054528 (Frederik Petersen) + * + */ public interface LegTypePolarClusterKey extends BasePolarClusterKey { @Dimension(messageKey = "legType") diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataDimensionCollectionFactory.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataDimensionCollectionFactory.java index 058c4bf28f5..df4c547c4c8 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataDimensionCollectionFactory.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataDimensionCollectionFactory.java @@ -10,6 +10,13 @@ import com.sap.sse.datamining.data.Cluster; import com.sap.sse.datamining.factories.FunctionFactory; import com.sap.sse.datamining.functions.Function; +/** + * Needed in the context of the datamining pipeline for the polar backend. + * It provides the information about grouping classes. + * + * @author D054528 (Frederik Petersen) + * + */ public class PolarDataDimensionCollectionFactory { private static void addTackAndLegTypeDimensions(Collection> dimensions, FunctionFactory functionFactory) diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataMiner.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataMiner.java index 70d317cf6ee..2b8b469e76c 100755 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataMiner.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarDataMiner.java @@ -55,6 +55,17 @@ import com.sap.sse.datamining.impl.components.ParallelMultiDimensionsValueNestin import com.sap.sse.datamining.impl.functions.SimpleParameterizedFunction; import com.sap.sse.util.impl.ThreadFactoryWithPriority; +/** + * Entry point for the aggregation of backend polar data and backend to that data. + * + * Creates a polar data pipeline upon creation and puts incoming GPS fixes into that pipeline. + * Also holds references to the actual data containers in which the aggregation results lay. + * + * For more information on polars in SAP Sailing Analytics, please see: http://wiki.sapsailing.com/wiki/Polars + * + * @author D054528 (Frederik Petersen) + * + */ public class PolarDataMiner { private static final int EXECUTOR_QUEUE_SIZE = 100; diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarFixFilterCriteria.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarFixFilterCriteria.java index 88141f445ae..0a5c07eaa95 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarFixFilterCriteria.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/PolarFixFilterCriteria.java @@ -22,6 +22,14 @@ import com.sap.sse.common.Util.Pair; import com.sap.sse.common.impl.MillisecondsTimePoint; import com.sap.sse.datamining.components.FilterCriterion; +/** + * Contains several filter criteria for incoming fixes concerning their validity for the polar aggregation. + * + * It is used in the backend polar mining pipeline. + * + * @author D054528 (Frederik Petersen) + * + */ public class PolarFixFilterCriteria implements FilterCriterion { private static final Logger logger = Logger.getLogger(PolarFixFilterCriteria.class.getName()); diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/RoundedTrueWindAngle.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/RoundedTrueWindAngle.java index ef67dbbf112..7e944425b58 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/RoundedTrueWindAngle.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/RoundedTrueWindAngle.java @@ -2,6 +2,14 @@ package com.sap.sailing.polars.mining; import com.sap.sailing.domain.common.Bearing; +/** + * Rounds a {@link Bearing} and provides {@link #hashCode()} and {@link #equals(Object)} methods. + * + * (Basically an Integer class, but handles rounding in constructor). + * + * @author D054528 (Frederik Petersen) + * + */ public class RoundedTrueWindAngle { private final int angleDeg; diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/SpeedRegressionPerAngleClusterProcessor.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/SpeedRegressionPerAngleClusterProcessor.java index 9bd8d9f4f24..bc8693a6431 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/SpeedRegressionPerAngleClusterProcessor.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/SpeedRegressionPerAngleClusterProcessor.java @@ -29,6 +29,14 @@ import com.sap.sse.datamining.factories.GroupKeyFactory; import com.sap.sse.datamining.impl.components.GroupedDataEntry; import com.sap.sse.datamining.shared.GroupKey; +/** + * Holds one speed regression per BoatClass, WindSpeed, Beat Angle Range combination and provides means for adding and + * accessing data. Data is added incrementally in and not all historic fixes need to be maintained. This allows for a + * very space efficient structure. + * + * @author D054528 (Frederik Petersen) + * + */ public class SpeedRegressionPerAngleClusterProcessor implements Processor, Void>, Serializable { @@ -92,6 +100,8 @@ public class SpeedRegressionPerAngleClusterProcessor implements * There are angle clusters (size defined in the data mining pipeline construction), which each have their own * regression for boatspeed over windspeed. We don't know the thresholds or centers of the angle clusters here, so * we roughly interpolate by taking 10 values from angle-5 deg to angle+5 deg and average the speeds. + * + * At the time of writing the size of each angle range is 5° so this method provides a pretty smooth interpolation. */ public SpeedWithConfidence estimateBoatSpeed(BoatClass boatClass, Speed windSpeed, Bearing trueWindAngle) throws NotEnoughDataHasBeenAddedException { @@ -153,6 +163,13 @@ public class SpeedRegressionPerAngleClusterProcessor implements throw new RuntimeException("Polar Data Miner failed.", failure); } + + /** + * Allows direct access to angle regression functions for debugging purposes. + * + * For actual usage of the data please use + * {@link #estimateBoatSpeed(BoatClass, Speed, Bearing)}. + */ public PolynomialFunction getSpeedRegressionFunction(BoatClass boatClass, double trueWindAngle) throws NotEnoughDataHasBeenAddedException { GroupKey key = createGroupKey(boatClass, new DegreeBearingImpl(trueWindAngle)); diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/WindSpeedLevel.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/WindSpeedLevel.java deleted file mode 100644 index 07cbaac083c..00000000000 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/WindSpeedLevel.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.sap.sailing.polars.mining; - -import java.io.Serializable; - -import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.WindSpeedStepping; - -public class WindSpeedLevel implements Serializable { - - private static final long serialVersionUID = -4498750034316806342L; - private final int level; - private final WindSpeedStepping stepping; - - public WindSpeedLevel(Speed windSpeed, WindSpeedStepping stepping) { - this.level = stepping.getLevelIndexForValue(windSpeed.getKnots()); - this.stepping = stepping; - } - - @Override - public String toString() { - // FIXME right now the toString equals for different steppings. This will resolve in an equal groupkey in the - // datamining framework. The current approach is to use only the default WindStepping. - return "" + level; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + level; - result = prime * result + ((stepping == null) ? 0 : stepping.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - WindSpeedLevel other = (WindSpeedLevel) obj; - if (level != other.level) - return false; - if (stepping == null) { - if (other.stepping != null) - return false; - } else if (!stepping.equals(other.stepping)) - return false; - return true; - } - -} diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/IncrementalAnyOrderLeastSquaresImpl.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/IncrementalAnyOrderLeastSquaresImpl.java index b46250afafe..0fefd2ce27d 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/IncrementalAnyOrderLeastSquaresImpl.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/IncrementalAnyOrderLeastSquaresImpl.java @@ -26,6 +26,8 @@ import com.sap.sse.concurrent.NamedReentrantReadWriteLock; * > http://erikerlandson.github.io/blog/2012/07/05/deriving-an-incremental-form-of-the-polynomial-regression-equations/ * * + * It can be used in parallel, because it uses locking for adding and reading data. + * * * @author Frederik Petersen D054528 * @@ -225,6 +227,8 @@ public class IncrementalAnyOrderLeastSquaresImpl implements IncrementalLeastSqua CUBIC, CUBIC_NO_INTERCEPT; /** + * Use to provide a fast alternative to actually computing the inverseMatrix from scratch. + * Right now this uses precalculated equations for cubic functions. * * @param realMatrix * matrix to inverse diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/WindSpeedAndAngleEstimator.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/WindSpeedAndAngleEstimator.java deleted file mode 100644 index 796a87da9b9..00000000000 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/regression/impl/WindSpeedAndAngleEstimator.java +++ /dev/null @@ -1,197 +0,0 @@ -package com.sap.sailing.polars.regression.impl; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import com.sap.sailing.domain.base.SpeedWithBearingWithConfidence; -import com.sap.sailing.domain.base.impl.SpeedWithBearingWithConfidenceImpl; -import com.sap.sailing.domain.common.Speed; -import com.sap.sailing.domain.common.impl.DegreeBearingImpl; -import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; -import com.sap.sse.common.Util.Pair; - -public class WindSpeedAndAngleEstimator { - - private static final double DEFAULT_MAX_DISTANCE_TO_SAMPLING_POINT = 0.5; - private final List>> averageBoatSpeedAndCourseForWindSpeed; - private final double maxDistanceToSamplingPointFunctionInKnots; - - /** - * - * @param averageBoatSpeedAndCourseForWindSpeed - * List of sampling points. Needs to be sorted by windspeed (A of the Pair object) low to high - */ - public WindSpeedAndAngleEstimator( - List>> averageBoatSpeedAndCourseForWindSpeed) { - this(averageBoatSpeedAndCourseForWindSpeed, DEFAULT_MAX_DISTANCE_TO_SAMPLING_POINT); - } - - /** - * - * @param averageBoatSpeedAndCourseForWindSpeed - * List of sampling points. Needs to be sorted by windspeed (A of the Pair object) low to high - * @param maxDistanceToSamplingPointFunctionInKnots - * If there is only a sampling point on one side, what's the maximal distance to consider valid when - * comparing? - */ - public WindSpeedAndAngleEstimator( - List>> averageBoatSpeedAndCourseForWindSpeed, - double maxDistanceToSamplingPointFunctionInKnots) { - this.averageBoatSpeedAndCourseForWindSpeed = averageBoatSpeedAndCourseForWindSpeed; - this.maxDistanceToSamplingPointFunctionInKnots = maxDistanceToSamplingPointFunctionInKnots; - } - - /** - * Looks at all entries in {@link #dataCountAndAngleSumMap} and determines the wind speed and true wind angle at - * which the boat has most likely been sailing to achieve the boatSpeed provided. - * - * BE ADVISED: The result candidate with the highest confidence, which is returned here, is not necessarily the - * candidate which is the most likely to be correct. It really depends on the quality and quantity of gathered polar - * data. - * - * Use {@link #getAverageTrueWindSpeedAndAngleCandidates(Speed)} to get all candidates. - * - * @return null if none was found, otherwise candidate with highest confidence, found in the list returned by - * {@link #getAverageTrueWindSpeedAndAngleCandidates(Speed)} - */ - public SpeedWithBearingWithConfidence getAverageTrueWindSpeedAndAngle(Speed boatSpeed) { - Set> resultCandidates = getAverageTrueWindSpeedAndAngleCandidates(boatSpeed); - - SpeedWithBearingWithConfidence resultCandidateWithHighestConfidence = null; - for (SpeedWithBearingWithConfidence resultCandidate : resultCandidates) { - if (resultCandidateWithHighestConfidence == null - || resultCandidate.getConfidence() > resultCandidateWithHighestConfidence.getConfidence()) { - resultCandidateWithHighestConfidence = resultCandidate; - } - } - return resultCandidateWithHighestConfidence; - } - - /** - * Uses the constructor-supplied sampling points to find wind and course candidates for the supplied boatSpeed. - * - * @return empty set if the underlying data was not sufficient to estimate wind. Otherwise a set of candidates with - * windspeed course of the boat relative to the wind and a confidence which was derived from the confidences - * of underlying fixes, the amount of underlying fixes and the distance between the input boatSpeed and the - * sampling points supplied by the gathered polar data. - */ - public Set> getAverageTrueWindSpeedAndAngleCandidates(Speed boatSpeed) { - double requestedBoatSpeedInKnots = boatSpeed.getKnots(); - Pair> last = null; - Set> resultCandidates = new HashSet<>(); - Set> resultCandidatesWithDistance = new HashSet<>(); - for (Pair> averageSpeedForWindSpeed : averageBoatSpeedAndCourseForWindSpeed) { - Speed windSpeed = averageSpeedForWindSpeed.getA(); - SpeedWithBearingWithConfidence averageBoatSpeedWithCourse = averageSpeedForWindSpeed.getB(); - double currentBoatSpeedInKnots = averageBoatSpeedWithCourse.getObject().getKnots(); - if (last != null) { - double lastBoatSpeedInKnots = last.getB().getObject().getKnots(); - - if (lastBoatSpeedInKnots <= requestedBoatSpeedInKnots - && currentBoatSpeedInKnots >= requestedBoatSpeedInKnots) { - SpeedWithBearingWithConfidenceImpl resultCandidate = createWeightedResultCandidateForLowerLast( - requestedBoatSpeedInKnots, last, windSpeed, averageBoatSpeedWithCourse, - lastBoatSpeedInKnots, currentBoatSpeedInKnots); - resultCandidates.add(resultCandidate); - } else if (lastBoatSpeedInKnots >= requestedBoatSpeedInKnots - && currentBoatSpeedInKnots <= requestedBoatSpeedInKnots) { - SpeedWithBearingWithConfidenceImpl resultCandidate = createWeightedResultCandidateForHigherLast( - requestedBoatSpeedInKnots, last, windSpeed, averageBoatSpeedWithCourse, - lastBoatSpeedInKnots, currentBoatSpeedInKnots); - resultCandidates.add(resultCandidate); - } - } - /* - * This will be run when there was no candidate found in between the two sampling points (or we are at the - * beginning) and add a Candidate if the requested point was maxDistanceToSamplingPointFunctionInKnots or - * less away from the last regarded sampling point. The candidate (if valid) is then added to the - * resultCandidatesWithDistance set. Confidences are halved and the set is only used if the standard result - * set is empty in the end - */ - if (resultCandidates.size() == 0 && last != null) { - addResultCandidateIfDistanceValid(requestedBoatSpeedInKnots, resultCandidatesWithDistance, last.getA(), - last.getB()); - } - last = averageSpeedForWindSpeed; - } - // check last sampling point for distance match and return withDistance set if standard set is empty - if (last != null && resultCandidates.size() == 0) { - addResultCandidateIfDistanceValid(requestedBoatSpeedInKnots, resultCandidatesWithDistance, last.getA(), - last.getB()); - resultCandidates = resultCandidatesWithDistance; - } - return resultCandidates; - } - - /** - * Confidence will be halved in situations where there the requested speed does not lie between any sampling points. - * The speed and angle values are equal to the sampling point values. - */ - private void addResultCandidateIfDistanceValid(double requestedBoatSpeedInKnots, - Set> resultCandidates, Speed windSpeed, - SpeedWithBearingWithConfidence averageBoatSpeedWithCourse) { - if (Math.abs(averageBoatSpeedWithCourse.getObject().getKnots() - requestedBoatSpeedInKnots) <= maxDistanceToSamplingPointFunctionInKnots) { - SpeedWithBearingWithConfidence resultCandidate = new SpeedWithBearingWithConfidenceImpl( - new KnotSpeedWithBearingImpl(windSpeed.getKnots(), new DegreeBearingImpl(averageBoatSpeedWithCourse - .getObject().getBearing().getDegrees())), averageBoatSpeedWithCourse.getConfidence() * 0.5, - null); - resultCandidates.add(resultCandidate); - } - } - - private SpeedWithBearingWithConfidenceImpl createWeightedResultCandidateForHigherLast( - double requestedBoatSpeedInKnots, Pair> last, Speed windSpeed, - SpeedWithBearingWithConfidence averageBoatSpeedWithCourse, double lastBoatSpeedInKnots, - double currentBoatSpeedInKnots) { - double differenceBetweenBothSpeedsInKnots = lastBoatSpeedInKnots - currentBoatSpeedInKnots; - double ratio; - if (differenceBetweenBothSpeedsInKnots < 0.00001) { - // Both sampling points have the same ratio. Use confidence to determine the ratio - ratio = last.getB().getConfidence() - / (averageBoatSpeedWithCourse.getConfidence() + last.getB().getConfidence()); - } else { - double differenceBetweenRequestedAndLower = requestedBoatSpeedInKnots - currentBoatSpeedInKnots; - ratio = differenceBetweenRequestedAndLower / differenceBetweenBothSpeedsInKnots; - } - double weightedAverageWindSpeedInKnots = ((1 - ratio) * windSpeed.getKnots()) - + (ratio * last.getA().getKnots()); - double currentCourseInDeg = averageBoatSpeedWithCourse.getObject().getBearing().getDegrees(); - double lastCourseInDeg = last.getB().getObject().getBearing().getDegrees(); - double weightedAverageAngleInDeg = ((1 - ratio) * currentCourseInDeg) + (ratio * lastCourseInDeg); - double weightedAverageConfidence = ((1 - ratio) * averageBoatSpeedWithCourse.getConfidence()) - + (ratio * last.getB().getConfidence()); - SpeedWithBearingWithConfidenceImpl resultCandidate = new SpeedWithBearingWithConfidenceImpl( - new KnotSpeedWithBearingImpl(weightedAverageWindSpeedInKnots, new DegreeBearingImpl( - weightedAverageAngleInDeg)), weightedAverageConfidence, null); - return resultCandidate; - } - - private SpeedWithBearingWithConfidenceImpl createWeightedResultCandidateForLowerLast( - double requestedBoatSpeedInKnots, Pair> last, Speed windSpeed, - SpeedWithBearingWithConfidence averageBoatSpeedWithCourse, double lastBoatSpeedInKnots, - double currentBoatSpeedInKnots) { - double differenceBetweenBothSpeedsInKnots = currentBoatSpeedInKnots - lastBoatSpeedInKnots; - double ratio; - if (differenceBetweenBothSpeedsInKnots < 0.00001) { - // Both sampling points have the same ratio. Use confidence to determine the ratio - ratio = averageBoatSpeedWithCourse.getConfidence() - / (averageBoatSpeedWithCourse.getConfidence() + last.getB().getConfidence()); - } else { - double differenceBetweenRequestedAndLower = requestedBoatSpeedInKnots - lastBoatSpeedInKnots; - ratio = differenceBetweenRequestedAndLower / differenceBetweenBothSpeedsInKnots; - } - double weightedAverageWindSpeedInKnots = (ratio * windSpeed.getKnots()) - + ((1 - ratio) * last.getA().getKnots()); - double currentCourseInDeg = averageBoatSpeedWithCourse.getObject().getBearing().getDegrees(); - double lastCourseInDeg = last.getB().getObject().getBearing().getDegrees(); - double weightedAverageAngleInDeg = (ratio * currentCourseInDeg) + ((1 - ratio) * lastCourseInDeg); - double weightedAverageConfidence = (ratio * averageBoatSpeedWithCourse.getConfidence()) - + ((1 - ratio) * last.getB().getConfidence()); - SpeedWithBearingWithConfidenceImpl resultCandidate = new SpeedWithBearingWithConfidenceImpl( - new KnotSpeedWithBearingImpl(weightedAverageWindSpeedInKnots, new DegreeBearingImpl( - weightedAverageAngleInDeg)), weightedAverageConfidence, null); - return resultCandidate; - } - -} From 5c350746309d197319a4832a591f6fe6bc09bc20 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 24 Sep 2015 10:25:23 +0200 Subject: [PATCH 367/504] Removed unused LocaleSelection stub class --- .../home/client/shared/LocaleSelection.java | 35 ------------------- .../home/client/shared/LocaleSelection.ui.xml | 9 ----- 2 files changed, 44 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/LocaleSelection.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/LocaleSelection.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/LocaleSelection.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/LocaleSelection.java deleted file mode 100644 index 2a378b8c49c..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/LocaleSelection.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.sap.sailing.gwt.home.client.shared; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.event.dom.client.ChangeEvent; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.uibinder.client.UiHandler; -import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.ListBox; -import com.google.gwt.user.client.ui.Widget; - -public class LocaleSelection extends Composite { - private static LocaleSelectionCompositeUiBinder uiBinder = GWT.create(LocaleSelectionCompositeUiBinder.class); - - interface LocaleSelectionCompositeUiBinder extends UiBinder { - } - - @UiField(provided = true) - ListBox localeSelection; - - public LocaleSelection() { - localeSelection = new ListBox(); - localeSelection.setMultipleSelect(false); - - localeSelection.addItem("Deutsch"); - localeSelection.addItem("English"); - initWidget(uiBinder.createAndBindUi(this)); - } - - @UiHandler("localeSelection") - void onLocaleSelectionChange(ChangeEvent event) { - Window.alert(localeSelection.getItemText(localeSelection.getSelectedIndex())); - } -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/LocaleSelection.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/LocaleSelection.ui.xml deleted file mode 100644 index f44238dc874..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/LocaleSelection.ui.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - \ No newline at end of file From e5576f6a733b75387cc39da04f7d4e515799562c Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 10:42:26 +0200 Subject: [PATCH 368/504] Added documentation to gwt.ui.polarmining classes --- .../PolarBackendResultsPresenter.java | 11 ++++++++++- .../PolarDataMiningSettingsDialogComponent.java | 6 ++++++ .../PolarDataMiningSettingsValidator.java | 6 ++++++ .../ui/polarmining/PolarResultsPresenter.java | 17 ++++++++++++++++- .../WindSpeedSteppingConfiguratorPanel.java | 2 +- 5 files changed, 39 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java index d12331ff439..43bef8a597e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarBackendResultsPresenter.java @@ -31,7 +31,16 @@ import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; - +/** + * Is able to present {@link PolarBackendData}.
    Has one polar chart showing the perAngle regression data and two + * x-y-linecharts that show speed and angle over windspeed regressions. + * + *

    + * Used in conjunction with the datamining framework. + * + * @author D054528 (Frederik Petersen) + * + */ public class PolarBackendResultsPresenter extends AbstractResultsPresenter { private final DockLayoutPanel dockLayoutPanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java index c2bfad6e712..56572d2da1c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsDialogComponent.java @@ -15,6 +15,12 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog; import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; +/** + * Provides a widget for configuring {@link PolarDataMiningSettings}, including validation. + * + * @author D054528 (Frederik Petersen) + * + */ public class PolarDataMiningSettingsDialogComponent implements SettingsDialogComponent { private PolarDataMiningSettings settings; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsValidator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsValidator.java index 9e999055eb4..ceca4ade0ea 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsValidator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarDataMiningSettingsValidator.java @@ -4,6 +4,12 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.polars.datamining.shared.PolarDataMiningSettings; import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator; +/** + * Allows validation of {@link PolarDataMiningSettings}, such that confidence values are not <0 or >1 and so on. + * + * @author D054528 (Frederik Petersen) + * + */ public class PolarDataMiningSettingsValidator implements Validator { private final StringMessages stringMessages; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java index fb79db8fbf9..9e76e60c77b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java @@ -45,7 +45,22 @@ import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.impl.dto.QueryResultDTO; import com.sap.sse.gwt.client.shared.components.SettingsDialogComponent; - +/** + * Allows presentation of {@link PolarAggregation} data. + * + *

    + * + * Contains a polar chart on the left displaying the actual polar diagram and two histograms on the right. The upper + * histogram shows datacount over angle and the second one shows datacount over windrange upon clicking a point in the + * polar chart. + * + *

    + * + * Used in conjunction with the datamining framework. + * + * @author D054528 (Frederik Petersen) + * + */ public class PolarResultsPresenter extends AbstractResultsPresenter { private final DockLayoutPanel dockLayoutPanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/WindSpeedSteppingConfiguratorPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/WindSpeedSteppingConfiguratorPanel.java index 8c4ef5a4724..a1b8462b702 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/WindSpeedSteppingConfiguratorPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/WindSpeedSteppingConfiguratorPanel.java @@ -16,7 +16,7 @@ import com.sap.sailing.domain.common.impl.WindSpeedSteppingWithMaxDistance; /** * A Panel which allows the user to configure a {@link WindSpeedStepping}. * - * @author d054528 Frederik Petersen + * @author D054528 (Frederik Petersen) * */ public class WindSpeedSteppingConfiguratorPanel extends HorizontalPanel { From c15710fae2224033f50fe7c1d6ee7155087a55ea Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 10:55:02 +0200 Subject: [PATCH 369/504] Added some documentation to polar datamining bundles also removed unused dependency --- .../datamining/shared/PolarDataMiningSettings.java | 7 +++++++ .../shared/PolarDataMiningSettingsImpl.java | 5 +++++ .../shared/PolarsDataMiningSerializationDummy.java | 8 ++++++++ .../META-INF/MANIFEST.MF | 1 - .../com/sap/sailing/polars/datamining/Activator.java | 7 +++++++ .../PolarsDataRetrievalChainDefinitions.java | 12 ++++++++++++ .../components/PolarGPSFixRetrievalProcessor.java | 6 ++++++ .../PolarBackendDataAggregationProcessor.java | 6 ++++++ .../aggregators/PolarDataAggregationProcessor.java | 6 ++++++ 9 files changed, 57 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettings.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettings.java index d75a7dddcec..f4112e61046 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettings.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettings.java @@ -3,6 +3,13 @@ package com.sap.sailing.polars.datamining.shared; import com.sap.sailing.domain.common.impl.WindSpeedSteppingWithMaxDistance; import com.sap.sse.common.settings.SerializableSettings; +/** + * Settings for polar datamining per datamining UI. Allows the user to configure some settings that are applied during + * retrieval and aggregation. + * + * @author D054528 (Frederik Petersen) + * + */ public abstract class PolarDataMiningSettings extends SerializableSettings { private static final long serialVersionUID = 3670315004615987482L; diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java index 24b5a560576..7f7bba781ef 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarDataMiningSettingsImpl.java @@ -2,6 +2,11 @@ package com.sap.sailing.polars.datamining.shared; import com.sap.sailing.domain.common.impl.WindSpeedSteppingWithMaxDistance; +/** + * Standard implementation of {@link PolarDataMiningSettings}. + * @author D054528 (Frederik Petersen) + * + */ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings { public static PolarDataMiningSettingsImpl createStandardPolarSettings() { diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java index 3b09be4c126..41cb2edcf34 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarsDataMiningSerializationDummy.java @@ -2,6 +2,14 @@ package com.sap.sailing.polars.datamining.shared; import com.sap.sse.datamining.shared.SerializationDummy; +/** + * Dummy class for including some DTOs in the GWT serialization policy. The datamining framework is so generic, that + * classes are not automatically included in the policy, even though they are needed. That is why this dummy has to be + * created. + * + * @author D054528 (Frederik Petersen) + * + */ @SuppressWarnings("unused") public final class PolarsDataMiningSerializationDummy implements SerializationDummy { private static final long serialVersionUID = 2L; diff --git a/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF b/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF index e7534a74a49..88c0c345dd9 100644 --- a/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.polars.datamining/META-INF/MANIFEST.MF @@ -16,7 +16,6 @@ Require-Bundle: org.eclipse.osgi;bundle-version="3.10.1", com.sap.sailing.domain;bundle-version="1.0.0", com.sap.sailing.domain.shared.android, com.sap.sailing.domain.common;bundle-version="1.0.0", - com.sap.sailing.polars;bundle-version="1.0.0", com.sap.sailing.polars.datamining.shared, org.apache.commons.math Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java index 888e0cef3af..ca25a127162 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/Activator.java @@ -24,6 +24,13 @@ import com.sap.sse.datamining.impl.AbstractDataMiningActivator; import com.sap.sse.i18n.ResourceBundleStringMessages; import com.sap.sse.i18n.impl.ResourceBundleStringMessagesImpl; +/** + * Handles all necessary registration for a datamining bundle. See + * http://wiki.sapsailing.com/wiki/typical-data-mining-scenarios for more information. + * + * @author D054528 (Frederik Petersen) + * + */ public class Activator extends AbstractDataMiningActivator { private static final String STRING_MESSAGES_BASE_NAME = "stringmessages/Polars_StringMessages"; diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java index b510f3bb937..671bcdef397 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/PolarsDataRetrievalChainDefinitions.java @@ -3,6 +3,7 @@ package com.sap.sailing.polars.datamining; import java.util.ArrayList; import java.util.Collection; +import com.sap.sailing.domain.polars.PolarDataService; import com.sap.sailing.polars.datamining.components.BackendPolarsBoatClassRetrievalProcessor; import com.sap.sailing.polars.datamining.components.PolarCompetitorRetrievalProcessor; import com.sap.sailing.polars.datamining.components.PolarFleetRetrievalProcessor; @@ -26,6 +27,17 @@ import com.sap.sse.datamining.components.DataRetrieverChainDefinition; import com.sap.sse.datamining.impl.components.SimpleDataRetrieverChainDefinition; import com.sap.sse.datamining.impl.components.SingleDataRetrieverChainDefinition; +/** + * Builds the polar related retriever chains. + * + *

    + * + * At the time of writing there are two chains, one for actual generation of custom polars and one for simple access of + * backend saved polar in the {@link PolarDataService} + * + * @author D054528 (Frederik Petersen) + * + */ public class PolarsDataRetrievalChainDefinitions { private final Collection> dataRetrieverChainDefinitions; diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java index bf89670c45c..06b22c5b128 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/PolarGPSFixRetrievalProcessor.java @@ -27,6 +27,12 @@ import com.sap.sse.datamining.components.Processor; import com.sap.sse.datamining.data.ClusterGroup; import com.sap.sse.datamining.impl.components.AbstractRetrievalProcessor; +/** + * Essential retriever in the polar datamining pipeline that also handles some standard filtering. + * + * @author D054528 (Frederik Petersen) + * + */ public class PolarGPSFixRetrievalProcessor extends AbstractRetrievalProcessor { private final PolarDataMiningSettings settings; diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarBackendDataAggregationProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarBackendDataAggregationProcessor.java index d3cbd54931e..51536022205 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarBackendDataAggregationProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarBackendDataAggregationProcessor.java @@ -24,6 +24,12 @@ import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefiniti import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelGroupedDataAggregationProcessor; import com.sap.sse.datamining.shared.GroupKey; +/** + * Creates one {@link PolarBackendData} per element. Due to the nature of the backend data there will be only one element per groupkey (boatclass). + * + * @author D054528 (Frederik Petersen) + * + */ public class PolarBackendDataAggregationProcessor extends AbstractParallelGroupedDataAggregationProcessor { private static final String POLARS_MESSAGE_KEY = "Polars"; diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java index 5cbf7ec40d3..552b5882483 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/components/aggregators/PolarDataAggregationProcessor.java @@ -15,6 +15,12 @@ import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefiniti import com.sap.sse.datamining.impl.components.aggregators.AbstractParallelGroupedDataAggregationProcessor; import com.sap.sse.datamining.shared.GroupKey; +/** + * Keeps one {@link PolarAggregation} per group key and incrementally updates that aggregation when elements are added. + * + * @author D054528 (Frederik Petersen) + * + */ public class PolarDataAggregationProcessor extends AbstractParallelGroupedDataAggregationProcessor { private static final String POLARS_MESSAGE_KEY = "Polars"; From 9f967afb72e96a7b3067262c9a086e3716d76ac2 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 24 Sep 2015 11:01:01 +0200 Subject: [PATCH 370/504] Refactoring - Moved desktop LongNamesUtil into respective package and removed unsued methods --- .../desktop/partials/event/EventTeaser.java | 2 +- .../partials/mainmedia/MainMediaVideo.java | 2 +- .../utils}/LongNamesUtil.java | 28 +------------------ 3 files changed, 3 insertions(+), 29 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/{client/shared => desktop/utils}/LongNamesUtil.java (50%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/event/EventTeaser.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/event/EventTeaser.java index 6e6d7f8aab7..1b4beabe795 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/event/EventTeaser.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/event/EventTeaser.java @@ -13,7 +13,7 @@ import com.google.gwt.user.client.EventListener; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.common.client.LinkUtil; -import com.sap.sailing.gwt.home.client.shared.LongNamesUtil; +import com.sap.sailing.gwt.home.desktop.utils.LongNamesUtil; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.utils.EventDatesFormatterUtil; import com.sap.sailing.gwt.home.shared.utils.LabelTypeUtil; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainmedia/MainMediaVideo.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainmedia/MainMediaVideo.java index e686d9a28b7..c58d256cb6e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainmedia/MainMediaVideo.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/mainmedia/MainMediaVideo.java @@ -9,7 +9,7 @@ import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.client.shared.LongNamesUtil; +import com.sap.sailing.gwt.home.desktop.utils.LongNamesUtil; import com.sap.sailing.gwt.home.shared.partials.videoplayer.VideoPlayer; import com.sap.sailing.gwt.ui.shared.media.SailingVideoDTO; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/LongNamesUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/utils/LongNamesUtil.java similarity index 50% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/LongNamesUtil.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/utils/LongNamesUtil.java index 03a7eb6a7cb..0ab327ca86b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/client/shared/LongNamesUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/utils/LongNamesUtil.java @@ -1,4 +1,4 @@ -package com.sap.sailing.gwt.home.client.shared; +package com.sap.sailing.gwt.home.desktop.utils; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; @@ -6,19 +6,10 @@ import com.google.gwt.safehtml.shared.SafeHtmlBuilder; /** * A utility class for handling long names * @author Frank - * */ public class LongNamesUtil { private static String NAME_SPLIT_RULE1 = " - "; - public static String shortenLongName(String name, int maxLength) { - String result = name; - if (name.length() > maxLength) { - name = name.substring(0, maxLength - 3) + "..."; - } - return result; - } - public static SafeHtml breakLongName(String name) { SafeHtmlBuilder builder = new SafeHtmlBuilder(); if(name != null) { @@ -39,21 +30,4 @@ public class LongNamesUtil { return builder.toSafeHtml(); } - /** - * Temp -> remove as soon as we have a display name for a leaderboardGroup - */ - public static String shortenLeaderboardGroupName(String eventName, String leaderboardGroupName) { - String result = leaderboardGroupName; - if (result.startsWith(eventName) && !eventName.equals(leaderboardGroupName)) { - result = result.substring(eventName.length(), result.length()); - result = result.trim(); - - if (result.startsWith("-") || result.startsWith("/")) { - result = result.substring(1, result.length()); - result = result.trim(); - } - } - return result; - } - } From 637650d558cc9f28198dbd831548e1a35cbcea8e Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 24 Sep 2015 11:36:02 +0200 Subject: [PATCH 371/504] Improved the data mining functions documentation --- .../sse/datamining/annotations/Connector.java | 4 +- .../sse/datamining/annotations/Dimension.java | 4 +- .../sse/datamining/annotations/Statistic.java | 6 +- .../sse/datamining/annotations/data/Unit.java | 7 ++ .../ConcatenatingCompoundFunction.java | 49 +++++++++- wiki/data-mining-architecture.md | 91 +++++++++---------- 6 files changed, 104 insertions(+), 57 deletions(-) diff --git a/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/Connector.java b/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/Connector.java index 34b0b6340fa..6a325ecdd89 100644 --- a/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/Connector.java +++ b/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/Connector.java @@ -7,7 +7,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Methods marked with this annotation indicate, that the result type contains marked methods.
    + * Methods marked with this annotation indicate, that the return type of the annotated method contains marked methods.
    * The marked method has to match the following conditions or the data mining could fail: *

      *
    • Has no parameters
    • @@ -24,7 +24,7 @@ public @interface Connector { /** * The message key used for internationalization.
      - * If there are more than one ordinal in a function (e.g. if the function is an instance of ConcatenatingCompoundFunction), + * If there is more than one message key in a function (e.g. if the function is an instance of ConcatenatingCompoundFunction), * then the messages will be concatenated (separated by a space). */ public String messageKey() default ""; diff --git a/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/Dimension.java b/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/Dimension.java index e0865a48433..3612daa7f11 100644 --- a/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/Dimension.java +++ b/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/Dimension.java @@ -9,7 +9,7 @@ import java.util.Locale; /** * Methods marked with this annotation will be used as dimensions for the data mining framework. The method will be called, - * if the dimension value of a data element is requested.
      + * if the dimension value of a Fact is requested.
      * The marked method has to match the following conditions or the data mining could fail: *
        *
      • Has no parameters (except if the parameter list is exactly {@link Locale}, {@link ResourceBundleStringMessages})
      • @@ -33,7 +33,7 @@ public @interface Dimension { /** * The message key used for internationalization.
        - * If there are more than one ordinal in a function (e.g. if the function is an instance of ConcatenatingCompoundFunction), + * If there is more than one message key in a function (e.g. if the function is an instance of ConcatenatingCompoundFunction), * then the messages will be concatenated (separated by a space). */ public String messageKey(); diff --git a/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/Statistic.java b/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/Statistic.java index 9061913d0b3..dfd15457a01 100644 --- a/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/Statistic.java +++ b/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/Statistic.java @@ -10,8 +10,8 @@ import java.util.Locale; import com.sap.sse.datamining.annotations.data.Unit; /** - * Methods marked with this annotation will be used as computable statistic for the data mining framework. The method will be called, - * if the statistic value of a data element is extracted.
        + * Methods marked with this annotation will be used as computable key figures for the data mining framework. The method will be called, + * if the key figure of a data element is requested.
        * The marked method has to match the following conditions or the data mining could fail: *
          *
        • Has no parameters (except if the parameter list is exactly {@link Locale}, {@link ResourceBundleStringMessages})
        • @@ -30,7 +30,7 @@ public @interface Statistic { /** * The message key used for internationalization.
          - * If there are more than one ordinal in a function (e.g. if the function is an instance of ConcatenatingCompoundFunction), + * If there is more than one message key in a function (e.g. if the function is an instance of ConcatenatingCompoundFunction), * then the messages will be concatenated (separated by a space). */ public String messageKey(); diff --git a/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/data/Unit.java b/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/data/Unit.java index d7eef7ced07..6375389dca2 100644 --- a/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/data/Unit.java +++ b/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/data/Unit.java @@ -1,5 +1,12 @@ package com.sap.sse.datamining.annotations.data; +/** + * Enum for the different Units of key figures.
          + * Every member needs a message key in StringMessages*.properties of {@link com.sap.sse.datamining}. + * + * @author Lennart Hensler (D054527) + * + */ public enum Unit { None, Knots, Meters diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java index fedd91bb28e..70d1edbd00e 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java @@ -10,6 +10,14 @@ import com.sap.sse.datamining.functions.Function; import com.sap.sse.datamining.functions.ParameterProvider; import com.sap.sse.i18n.ResourceBundleStringMessages; +/** + * Provides the {@link Function} interface for a list of functions in a way that the functions are concatenated + * (like foo().bar().value();). + * + * @author Lennart Hensler (D054527) + * + * @param the return type of the compound function + */ public class ConcatenatingCompoundFunction extends AbstractFunction { private static final String SIMPLE_NAME_CHAIN_CONNECTOR = " -> "; @@ -63,27 +71,43 @@ public class ConcatenatingCompoundFunction extends AbstractFunction< } } + /** + * @return the declaring type of the first function. + */ @Override public Class getDeclaringType() { return getFirstFunction().getDeclaringType(); } + + /** + * @return the parameters of the first function. + */ @Override public Iterable> getParameters() { return getFirstFunction().getParameters(); } + /** + * @return the return type of the last function. + */ @SuppressWarnings("unchecked") // The cast has to work. The types were checked in the constructor. @Override public Class getReturnType() { return (Class) getLastFunction().getReturnType(); } + /** + * @return the concatenated simple names of the functions separated by {@value #SIMPLE_NAME_CHAIN_CONNECTOR}. + */ @Override public String getSimpleName() { return simpleName; } + /** + * The concatenated localized names of the functions separated by {@value #LOCALIZED_NAME_CHAIN_CONNECTOR}. + */ @Override public String getLocalizedName(Locale locale, ResourceBundleStringMessages stringMessages) { if (!isLocalizable()) { @@ -92,7 +116,6 @@ public class ConcatenatingCompoundFunction extends AbstractFunction< return buildLocalizedNameChain(locale, stringMessages); } - @Override public boolean isLocalizable() { for (Function function : functions) { @@ -118,12 +141,19 @@ public class ConcatenatingCompoundFunction extends AbstractFunction< return builder.toString(); } + /** + * Invokes the functions concatenated (like foo().bar().value();).
          + * Returns null, if any of the functions returned null. + */ @Override public ReturnType tryToInvoke(Object instance) { return tryToInvoke(instance, ParameterProvider.NULL); } - - @SuppressWarnings("unchecked") + + /** + * Invokes the functions concatenated (like foo(parameters).bar().value();).
          + * Returns null, if any of the functions returned null. + */ @Override public ReturnType tryToInvoke(Object instance, ParameterProvider parameterProvider) { Iterator> functionsIterator = functions.iterator(); @@ -135,19 +165,30 @@ public class ConcatenatingCompoundFunction extends AbstractFunction< return null; } } - return (ReturnType) result; + @SuppressWarnings("unchecked") + ReturnType typedResult = (ReturnType) result; + return typedResult; } + /** + * @return the {@link Unit result Unit} of the last function. + */ @Override public Unit getResultUnit() { return getLastFunction().getResultUnit(); } + /** + * @return the result decimals of the last function. + */ @Override public int getResultDecimals() { return getLastFunction().getResultDecimals(); } + /** + * @return the smallest ordinal of the functions. + */ @Override public int getOrdinal() { return ordinal; diff --git a/wiki/data-mining-architecture.md b/wiki/data-mining-architecture.md index 2e4a5ee845f..267dcd83dd4 100644 --- a/wiki/data-mining-architecture.md +++ b/wiki/data-mining-architecture.md @@ -131,7 +131,7 @@ There's also the abstract class `AbstractParallelMultiDimensionalNestingGrouping #### Extraction Processor -Extraction processors are used to get statistic value of a grouped data element. The class `ParallelGroupedElementsValueExtractionProcessor` is a concrete processor, that takes `GroupedDataEntry` as input elements and has `GroupedDataEntry` as result elements. It needs a [Statistic Function](#Statistics) to extract the statistic value from the data elements, which is done in its instructions. If the statistic value is `null`, then an invalid result (created with the method `createInvalidResult`) is returned. If the value is something else, then the statistic value grouped by the key of the data element is returned. +Extraction processors are used to get key figures of a grouped Fact. The class `ParallelGroupedElementsValueExtractionProcessor` is a concrete processor, that takes `GroupedDataEntry` as input elements and has `GroupedDataEntry` as result elements. It needs a [Statistic Function](#Statistics) to extract the statistic value from the data elements, which is done in its instructions. If the statistic value is `null`, then an invalid result (created with the method `createInvalidResult`) is returned. If the value is something else, then the statistic value grouped by the key of the data element is returned. ### Aggregators @@ -185,18 +185,49 @@ In relationaler Umgebung wären es Fakten. ## Data Mining Functions -Data Mining Functions are used by the [Data Processing Components](#Data-Processing-Components) to get the data from the data elements, that is necessary for the data processing. This can be for the filtration or grouping by dimension values (like the name of the regatta or the leg type) or for the extraction of the statistic values (like the traveled distance or the relative rank). Functions can be defined by annotating the methods of data types and domain types, that should be used to the data. There are currently the three annotations `Connector`, `Dimension` and `Statistic` with different properties and conditions as described below. This makes the system flexible and allows developers to add new or change existing dimensions and statistics very fast. This can also be done during run-time, if the corresponding OSGi-Bundles are hot deployed or refreshed (see [Registration and Deregistration of Data Mining Bundles](#Registration-and-Deregistration-of-Data-Mining-Bundles) for more information). +Data Mining Functions are used by the [Data Processing Components](#Data-Processing-Components) to get the data from the Facts, that is necessary for the data processing. This can be for the filtration or grouping by dimension values (like the name of the regatta or the leg type) or for the extraction of the statistic values (like the traveled distance or the relative rank). Functions are defined by annotating the methods of Facts and domain types. There are currently three annotations `Connector`, `Dimension` and `Statistic` (located in `com.sap.sse.datamining.annotations`) with different properties and conditions as described below. This makes the system flexible and allows developers to add new or change existing dimensions and statistics very fast. This can also be done during run-time, if the corresponding OSGi-Bundles are hot deployed or refreshed (see [Registration and Deregistration of Data Mining Bundles](#Registration-and-Deregistration-of-Data-Mining-Bundles) for more information). -### Connector +### Function Registration Process -Methods marked with the annotation `Connector` indicate the framework, that the result type contains functions. The method has to match the following conditions, to be registered by the framework: +The function registration process is triggered, when a [DataMiningBundleService is registered to the OSGi-Context](#Registration-and-Deregistration-of-Data-Mining-Bundles). The classes returned by the method `getClassesWithMarkedMethods` of the `DataMiningBundleService` are given to a `FunctionRegistry`. The registry iterates over all public methods (including those declared by the class or interface and those inherited from superclasses and superinterfaces) for each of the given classes and does the following: + +* If the method is a valid [Connector](#Connectors), then the method gets converted to a `Function`, which is added to the list of *previous functions*. The return type of the function gets registered to the `FunctionRegistry`. +* If the method is a valid [Dimension](#Dimensions), then the method gets converted to a `Function`, which is registered as dimension. If the list of *previous functions* isn't empty, than the list and the dimension will be saved as `ConcatenatingCompoundFunction`. +* If the method is a valid [Statistic](#Statistics) and no connector in the list of *previous functions* has set the `scanForStatistics` to `false`, then the method gets converted to a `Function`, which is registered as statistic. If the list of *previous functions* isn't empty, than the list and the statistic will be saved as `ConcatenatingCompoundFunction`. + +What is a valid connector/dimension/statistic and what isn't is described in the following sections. The implementations of `Functions` are located in the package `com.sap.sse.datamining.impl.functions`. + +Currently unsupported is + +* Annotating a method with multiple data mining annotations. + * The annotations `Dimension` and `Statistic` have a higher priority than `Connector`, so a method annotated with `Dimension` and `Connector` will be handled as `Dimensions`. +* Cycles in the annotation graph. + * For example, if `A` has the connector `B foo()` and `B` has the connector `A bar()`. + * This would result in an infinite loop during the registration process, that should lead to a `StackOverflowError`. + +### Compound Functions + +Compound functions provide the `Function` interface for a list of functions. There is currently only the `ConcatenatingCompoundFunction`, that capsules a list of functions, that are called one after another (like the java statement `foo().bar().value();`). It's necessary to handle some of the methods declared in the `Function` interface in a special way, which is described here. + +* The methods `getDeclaringType` and `getParameters` return the corresponding value of the **first** function in the list. +* The methods `getReturnType`, `getResultUnit`, `getResultDecimals` and `isDimension` return the corresponding value of the **last** function in the list. +* The `tryToInvoke` methods invoke the first function in the list with the given instance and all other functions with the return value of the previous function. + * It returns `null`, if any of the functions in the list returned `null`. +* The method `getOrdinal` returns the smallest ordinal of the functions in the list. +* The method `getSimpleName` returns the concatenated simple names of the functions in the list separated by `->`. +* The method `isLocalizable` returns `true`, if any of the functions in the list is localizable. +* The method `getLocalizedName` returns the name of the function, if the name has been set, the simple name, if the compound function isn't localizable or the concatenated simple names of the functions in the list separated by a single space. + +### Connectors + +Methods marked as `Connector` indicate, that the return type of the annotated method contains marked methods. The method has to match the following conditions, to be registered by the framework: * It has no parameters. * The return type isn't `void`. * It should be side effect free. * This isn't checked by the framework, so methods with side effects will be registered, but this could have strange effects on the data mining. -Connecter can have the following properties: +Connectors can have the following properties: * A `String messageKey` with the default `""`, that is used for the internationalization. * An `int ordinal` with the default `Integer.MAX_VALUE`, that is used for the sorting of functions (the standard sorting is ascending). @@ -207,7 +238,7 @@ How the presence of multiple `messageKeys` and `ordinals` in compound functions ### Dimensions -Methods marked with the annotation `Dimension` will be registered as dimension by the framework. The method will be called via reflection, if the dimension value of data elements of this data type is requested (for example to filter or group the data). The method has to match the following conditions, to be registered by the framework: +Methods marked with the annotation `Dimension` will be registered as dimension by the framework. The method will be called via reflection, if the dimension value of a Fact is requested (for example to [filter](#Filtering-Processor) or [group](#Grouping-Processor) the data). The method has to match the following conditions, to be registered by the framework: * It has no parameters, except if the parameter list is exactly `Locale, ResourceBundleStringMessages`. * The return type isn't `void`. @@ -216,29 +247,28 @@ Methods marked with the annotation `Dimension` will be registered as dimension b The return type of the marked method should be: -* A primitive type or wrapper class or -* Classes that implement `equals`, `hashCode` - * Or the grouping could become incorrect. -* and `toString`. - * Or the result presentation will be unreadable. +* A primitive type or wrapper class +* Classes that implement + * `equals` and `hashCode` or the grouping could become incorrect. + * `toString` or the result presentation will be unreadable. Dimensions have the following properties: -* The mandatory `String messageKey`, that is used for the internationalization. +* The mandatory `String messageKey`, that is used for internationalization. * An `int ordinal` with the default `Integer.MAX_VALUE`, that is used for the sorting of functions (the standard sorting is ascending). How the presence of multiple `messageKeys` and `ordinals` in compound functions work is described in [Compound Functions](#Compound-Functions). ### Statistics -Methods marked with the annotation `Statistic` will be registered as computable statistics by the framework. The method will be called via reflection, if the statistic value of a data elements of this data type is requested (for example for the statistic extraction). The method has to match the following conditions, to be registered by the framework: +Methods marked with the annotation `Statistic` will be registered as computable key figure by the framework. The method will be called via reflection, if the key figure of a Fact is requested (for example for the value [extraction](Extraction-Processor)). The method has to match the following conditions, to be registered by the framework: * It has no parameters, except if the parameter list is exactly `Locale, ResourceBundleStringMessages`. * The return type isn't `void`. * It should be side effect free. * This isn't checked by the framework, so methods with side effects will be registered, but this could have strange effects on the data mining. -The return type of the method has to be processable by an aggregator (described in [Processors](#Processors)) of the data mining framework, for example `int` or `double`. +The return type of the method has to be processable by an [aggregator](#Aggregators) of the data mining framework. Statistics have the following properties: @@ -249,35 +279,4 @@ Statistics have the following properties: * Every member of `Unit` needs a message key in the string messages of the bundle `com.sap.sse.datamining` for internationalization purposes. For example has the unit `Meters` the entry `Meters=m` in the file `StringMessages_en.properties`. * An `int resultDecimals` with the default `0`, that sets the number of the visible result decimals. -How the presence of multiple `messageKeys` and `ordinals` in compound functions work is described in [Compound Functions](#Compound-Functions). - -### Function Registration Process - -The function registration process is triggered, when a [data mining bundle is registered](#Registration-and-Deregistration-of-Data-Mining-Bundles). The classes returned by the method `getClassesWithMarkedMethods` of the `DataMiningBundleService` are given to a `FunctionRegistry`. The registry iterates over all public methods (including those declared by the class or interface and those inherited from superclasses and superinterfaces) for each of the given classes and does the following: - -* If the method is a valid [Connector](#Connecter), then the method gets converted to a `Function`, which is added to the list of *previous functions*. The return type of the function gets registered to the `FunctionRegistry`. -* If the method is a valid [Dimension](#Dimensions), then the method gets converted to a `Function`, which is registered as dimension. If the list of *previous functions* isn't empty, than the list and the dimension will be saved as `ConcatenatingCompoundFunction`. -* If the method is a valid [Statistic](#Statistics) and no connector in the list of *previous functions* has set the `scanForStatistics` to `false`, then the method gets converted to a `Function`, which is registered as statistic. If the list of *previous functions* isn't empty, than the list and the statistic will be saved as `ConcatenatingCompoundFunction`. - -What is a valid connector/dimension/statistic and what isn't is described in the corresponding sections of this wiki page. How the `ConcatenatingCompoundFunction` works in detail, is described in [Compound Functions](#Compound-Functions). - -Currently unsupported are - -* Annotating a method with multiple data mining annotations. - * The annotations `Dimension` and `Statistic` have a higher priority than `Connector`, so a method annotated with `Dimension` and `Connector` will be handled as `Dimensions`. -* Cycles in the annotation graph. - * For example, if `A` has the connector `B foo()` and `B` has the connector `A bar()`. - * This would result in an infinite loop during the registration process, that should lead to a `StackOverflowError`. - -### Compound Functions - -Compound functions provide the `Function` interface for a collection of functions. There is currently only the `ConcatenatingCompoundFunction`, that capsules a list of functions, that are called one after another (like the java statement `foo().bar().stat();`). It's necessary to handle some of the methods declared in the `Function` interface in a special way, what is described here. - -* The methods `getDeclaringType` and `getParameters` return the corresponding value of the **first** function in the list. -* The methods `getReturnType`, `getResultUnit`, `getResultDecimals` and `isDimension` return the corresponding value of the **last** function in the list. -* The `tryToInvoke` methods invoke the first function in the list with the given instance and all other functions with the return value of the previous function. - * It returns `null`, if one of the functions in the list returned `null`. -* The method `getOrdinal` returns the smallest ordinal of the functions in the list. -* The method `getSimpleName` returns the name of the function, if the name has been set. If not returns the method the concatenated simple names of the functions in the list separated by `->`. -* The method `isLocalizable` returns `true`, if any of the functions in the list is localizable. -* The method `getLocalizedName` returns the name of the function, if the name has been set, the simple name, if the compound function isn't localizable or the concatenated simple names of the functions in the list separated by a single space. \ No newline at end of file +How the presence of multiple `messageKeys` and `ordinals` in compound functions work is described in [Compound Functions](#Compound-Functions). \ No newline at end of file From b243ab44a460bc9f0af41c839336768ab59bf857 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 09:58:30 +0000 Subject: [PATCH 372/504] Updated Polars (markdown) --- wiki/Polars.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/wiki/Polars.md b/wiki/Polars.md index 20ee93ecfdd..4f3a32d0d50 100644 --- a/wiki/Polars.md +++ b/wiki/Polars.md @@ -57,7 +57,8 @@ _TODO_ ### Known Issues -_TODO_ +* Bug 3055 - Tooltip at Polarsheets Histogramm disappears +* Bug 3056 - Polar Sheets Histogram shows average value for number of data points ## PolarDataService Architecture @@ -97,3 +98,11 @@ The com.sap.sailing.polars.mining.CubicRegressionPerCourseProcessor contains dat The regression magic is performed by the IncrementalAnyOrderLeastSquaresImpl class, which was inspired by this blog post: It can do online any order regressions with least squares and has optimizations to be especially quick for cubic regressions, as they are used for the regressions in the polar backend. + +## Replication with Use Case + +"Bug 2563 - Support replication of polar data service" states the need for interserver communication when it comes to the polars that reside in the backend. The standard event scenario is that we have one event server for each ongoing event and the archive server for the past events. We still want to be able to access polar data of the past when being on the live server. This is obvious when we think about the presentation of the simulator at a live event. It will not work very well in the beginning of the event when no races are loaded yet. Thus it would be great to have the archive data available. Multiple approaches have been discussed and I will list them here trying to sort them descending by feasability. + +### System.properties +### Replication +### Manual Import From 91c4e53c854e21af75c68445bdbce9abbc225093 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 24 Sep 2015 12:07:48 +0200 Subject: [PATCH 373/504] deliver the competitor of a RaceLogRegisterCompetitorEventImpl as the list of involved boats; this should also fix the serialization which always delivered an empty competitor list --- .../race/tracking/impl/RaceLogRegisterCompetitorEventImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/impl/RaceLogRegisterCompetitorEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/impl/RaceLogRegisterCompetitorEventImpl.java index fb3791e2963..eb20dd7f79a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/impl/RaceLogRegisterCompetitorEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/impl/RaceLogRegisterCompetitorEventImpl.java @@ -1,6 +1,7 @@ package com.sap.sailing.domain.abstractlog.race.tracking.impl; import java.io.Serializable; +import java.util.Collections; import java.util.List; import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor; @@ -35,7 +36,7 @@ public class RaceLogRegisterCompetitorEventImpl extends BaseRegisterCompetitorEv @Override public List getInvolvedBoats() { - return raceLogEventData.getInvolvedBoats(); + return Collections.singletonList(getCompetitor()); } @Override From de3f23a647a4cfeaf9c3161f7ee852ec6d94bffa Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 10:11:11 +0000 Subject: [PATCH 374/504] Updated Polars (markdown) --- wiki/Polars.md | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/wiki/Polars.md b/wiki/Polars.md index 4f3a32d0d50..d8440e15ad6 100644 --- a/wiki/Polars.md +++ b/wiki/Polars.md @@ -53,7 +53,10 @@ The UI classes live in the gwt.ui bundle; more precisely in the com.sap.sailing. ### Extending the Feature -_TODO_ +The feature can be extended by adding dimensions to the types in the polar.datamining bundle. +This dimensions then serve as a new option in filtering and grouping. + +How that works is displayed [here][wiki/typical-development-scenarios]. ### Known Issues @@ -104,5 +107,19 @@ It can do online any order regressions with least squares and has optimizations "Bug 2563 - Support replication of polar data service" states the need for interserver communication when it comes to the polars that reside in the backend. The standard event scenario is that we have one event server for each ongoing event and the archive server for the past events. We still want to be able to access polar data of the past when being on the live server. This is obvious when we think about the presentation of the simulator at a live event. It will not work very well in the beginning of the event when no races are loaded yet. Thus it would be great to have the archive data available. Multiple approaches have been discussed and I will list them here trying to sort them descending by feasability. ### System.properties -### Replication + +We could just let the admin specify a System Property that is read by the polar bundle upon start. The system property should contain a URL to a remote server where polars are available. (E.g. the archive server). The bundle then requests the current polar aggregation from the remote server. If successful it will set this aggregation as the initial aggregation in it. If unsuccessful the server will start with empty containers. + +This would be quite simple to implement (as opposed to multiway replication) and still be sufficient for the typical event + archive scenario. + ### Manual Import + +The manual import approach is pretty similar to the System.properties approach, but as opposed to defining a system property, the admin could import the polars during the run time of the server similar to the Master Data Import feature. There are some problems with that approach, since merging of to non-empty aggregations in non-trivial and also a UI would have to be created. + +### Replication + +We could use Axels replication framework. It would allow for a more flexible approach, but a lot of work would have to be done to allow replication in that direction and between multiple servers that are not in a master-replica-configuration. + +### Hard Coded Polars + +Some suggested it would be okay to just read out the polars of the archive and hard-code them into the server as an initial polar state, that is then changed by new incoming data. That is a very static approach and defeats the dynamic nature of the whole polar approach but it is very simple to do. From 1a6a80448dc14b266be9fbf953cca3c8bf27e099 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 13:34:19 +0200 Subject: [PATCH 375/504] Fixed datacount per angle histogram display --- .../WindSpeedSteppingWithMaxDistance.java | 6 ++--- .../sailing/domain/test/WindSteppingTest.java | 4 ++-- .../gwt/ui/client/StringMessages.properties | 2 +- .../ui/client/StringMessages_de.properties | 2 +- .../ui/polarmining/PolarResultsPresenter.java | 16 ++++++-------- .../datamining/shared/PolarAggregation.java | 3 ++- .../shared/PolarAggregationImpl.java | 22 +++++++++++++------ 7 files changed, 31 insertions(+), 24 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/WindSpeedSteppingWithMaxDistance.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/WindSpeedSteppingWithMaxDistance.java index 5f737ab0c6c..203ecbc3d06 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/WindSpeedSteppingWithMaxDistance.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/WindSpeedSteppingWithMaxDistance.java @@ -40,13 +40,13 @@ public class WindSpeedSteppingWithMaxDistance extends WindSpeedSteppingImpl { return maxDistance; } - public int getHistogramIndex(int numberOfHistogramColumns, double knots) { + public double getHistogramXValue(int numberOfHistogramColumns, double knots) { double minInKnots = getMinValueForIndex(getLevelIndexForValue(knots)); double maxInKnots = getMaxValueForIndex(getLevelIndexForValue(knots)); double cutMax = maxInKnots - minInKnots; double cutValue = knots - minInKnots; - int columnIndex = (int) ((cutValue / cutMax) * 20); - return columnIndex; + int columnIndex = (int) ((cutValue / cutMax) * numberOfHistogramColumns); + return minInKnots + columnIndex * (cutMax / numberOfHistogramColumns) + 0.5 * (cutMax / numberOfHistogramColumns); } private double getMinValueForIndex(int levelIndexForValue) { diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindSteppingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindSteppingTest.java index 36fbdbc842f..4d01be47c38 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindSteppingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/WindSteppingTest.java @@ -32,8 +32,8 @@ public class WindSteppingTest { Assert.assertEquals(-1, stepping.getLevelIndexForValue(8)); Assert.assertEquals(2.0, stepping.getSteppedValueForValue(1.064), 0.005); Assert.assertEquals(-1.0, stepping.getSteppedValueForValue(7.8365), 0.005); - Assert.assertEquals(5, stepping.getHistogramIndex(20, 1.5)); - Assert.assertEquals(15, stepping.getHistogramIndex(20, 2.5)); + Assert.assertEquals(1.55, stepping.getHistogramXValue(20, 1.5)); + Assert.assertEquals(2.55, stepping.getHistogramXValue(20, 2.5)); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 7e33886fbd4..20eadd66304 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -551,7 +551,7 @@ polarSheetOutlierDetectionRadius=Outlier detection neighborhood radius polarSheetOutlierDetectionRadiusTooltip=The radius used in the distance based outlier\ndetection algorithm. polarSheetOutlierDetectionMinimumPerc=Minimum outlier detection neighborhood percentage polarSheetOutlierDetectionMinimumPercTooltip=The percentage of neightborhood datapoints / overall datapoints\nneeds to be at less than the given value for the point to be considered an outlier. -polarSheetNumberOfHistogramColumns=Number of histogram columns +polarSheetNumberOfHistogramColumns=Number of histogram columns per wind range polarSheetWindSteppingInKnots=Wind stepping in knots polarSheetWindSteppingMaxDistance=Max. distance to wind level polarSheetWindSteppingMaxDistanceTooltip=Sets a max radius for which fixes will be assigned to the wind levels. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index f734361c40a..a4be68f976d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -551,7 +551,7 @@ polarSheetOutlierDetectionRadius=Radius der Ausreißernachbarschaft polarSheetOutlierDetectionRadiusTooltip=Der Nachbarschaftsradius, der in der distanzbasierten\nAusreißeranalyse verwendet wird. polarSheetOutlierDetectionMinimumPerc=Minimaler Anteil einer Nachbarschaft in der Ausreißeranalyse polarSheetOutlierDetectionMinimumPercTooltip=Der Anteil der Nachbarschaft an der Menge der Gesamtpunkte.\nFalls dieser Anteil kleiner ist als die gegebene Grenze,\ndann wird der betrachte Punkt als Ausreißer eingestuft. -polarSheetNumberOfHistogramColumns=Anzahl der Spalten im Histogramm +polarSheetNumberOfHistogramColumns=Anzahl der Spalten im Histogramm pro Windbereich polarSheetWindSteppingInKnots=Wind Einteilung in Knoten polarSheetWindSteppingMaxDistance=Max. Distanz zu den Windstufen polarSheetWindSteppingMaxDistanceTooltip=Stellt den maximales Radius um die Windstufen ein,\ndamit keine Fixes vollkommen entfernten Windgeschwindigkeiten\ndazugezogen werden. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java index 9e76e60c77b..c2929b688f0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/polarmining/PolarResultsPresenter.java @@ -6,6 +6,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import org.moxieapps.gwt.highcharts.client.AxisTitle; import org.moxieapps.gwt.highcharts.client.Chart; @@ -25,7 +26,6 @@ import org.moxieapps.gwt.highcharts.client.events.SeriesHideEventHandler; import org.moxieapps.gwt.highcharts.client.events.SeriesShowEvent; import org.moxieapps.gwt.highcharts.client.events.SeriesShowEventHandler; import org.moxieapps.gwt.highcharts.client.labels.XAxisLabels; -import org.moxieapps.gwt.highcharts.client.plotOptions.AreaPlotOptions; import org.moxieapps.gwt.highcharts.client.plotOptions.LinePlotOptions; import org.moxieapps.gwt.highcharts.client.plotOptions.Marker; import org.moxieapps.gwt.highcharts.client.plotOptions.SeriesPlotOptions; @@ -90,7 +90,7 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { dataCountHistogramChart = createDataCountHistogramChart(stringMessages.beatAngle() + " (" + stringMessages.degreesShort() + ")", true); - dataCountPerAngleHistogramChart = createDataCountHistogramChart(stringMessages.windRangeDistribution(), false); + dataCountPerAngleHistogramChart = createDataCountHistogramChart(stringMessages.windSpeed(), true); histogramChartsWrapperPanel = new DockLayoutPanel(Unit.PCT) { @Override public void onResize() { @@ -177,13 +177,11 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { } private Chart createDataCountHistogramChart(String xAxisLabel, boolean showXLabels) { - Chart histogramChart = new Chart().setType(Type.AREA).setHeight100().setWidth100(); + Chart histogramChart = new Chart().setType(Type.COLUMN).setHeight100().setWidth100(); histogramChart.setTitle(new ChartTitle().setText(""), new ChartSubtitle().setText("")); histogramChart.getYAxis().setMin(0).setAxisTitle(new AxisTitle().setText(stringMessages.numberOfDataPoints())); histogramChart.getXAxis().setLabels(new XAxisLabels().setRotation(-90f).setY(30).setEnabled(showXLabels)) .setAxisTitle(new AxisTitle().setText(xAxisLabel)); - histogramChart.setAreaPlotOptions(new AreaPlotOptions().setLineColor("#666666") - .setLineWidth(1).setMarker(new Marker().setLineWidth(1).setLineColor("#666666"))); histogramChart.setLegend(new Legend().setEnabled(false)); histogramChart.setExporting(new Exporting().setEnabled(false)); return histogramChart; @@ -233,7 +231,7 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { if (settings.getMinimumDataCountPerGraph() < count) { Series polarSeries = polarChart.createSeries(); Series histogramSeries = dataCountHistogramChart.createSeries(); - int[][] histogramData = aggregation.getCountHistogramPerAngle(); + Map> histogramData = aggregation.getCountHistogramPerAngle(); Map seriesPerAngle = new HashMap<>(); perAngleHistogramSeriesForAngle.put(polarSeries, seriesPerAngle); for (int i = 0; i < 360; i++) { @@ -248,9 +246,9 @@ public class PolarResultsPresenter extends AbstractResultsPresenter { } histogramSeries.addPoint(convertedAngle, countPerAngle[i], false, false, false); Series dataCountPerAngleSeries = dataCountPerAngleHistogramChart.createSeries(); - int[] histogramDataForAngle = histogramData[i]; - for (int j = 0; j < settings.getNumberOfHistogramColumns(); j++) { - dataCountPerAngleSeries.addPoint(j, histogramDataForAngle[j]); + Map histogramDataForAngle = histogramData.get(i); + for (Entry entry : histogramDataForAngle.entrySet()) { + dataCountPerAngleSeries.addPoint(entry.getKey(), entry.getValue()); } dataCountPerAngleHistogramChart.addSeries(dataCountPerAngleSeries, false, false); dataCountPerAngleSeries.setVisible(false, false); diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java index 181a61d84ec..3e8782065e1 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregation.java @@ -1,6 +1,7 @@ package com.sap.sailing.polars.datamining.shared; import java.io.Serializable; +import java.util.Map; public interface PolarAggregation extends Serializable { @@ -14,6 +15,6 @@ public interface PolarAggregation extends Serializable { PolarDataMiningSettings getSettings(); - int[][] getCountHistogramPerAngle(); + Map> getCountHistogramPerAngle(); } diff --git a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java index 9e2a3e6bc50..5e8b999e004 100644 --- a/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java +++ b/java/com.sap.sailing.polars.datamining.shared/src/com/sap/sailing/polars/datamining/shared/PolarAggregationImpl.java @@ -1,5 +1,8 @@ package com.sap.sailing.polars.datamining.shared; +import java.util.HashMap; +import java.util.Map; + public class PolarAggregationImpl implements PolarAggregation { @@ -8,10 +11,10 @@ public class PolarAggregationImpl implements PolarAggregation { private double[] sumSpeedsPerAngle = new double[360]; private int[] countPerAngle = new int[360]; /** - * FIXME Righnt now the histogram data is only valid, if the results are grouped by windrange. + * FIXME Right now the histogram data is only valid, if the results are grouped by windrange. * Otherwise the column-indices of different ranges are mixed in one histogram. */ - private int[][] histogramData; + private Map> histogramData; private int count = 0; private PolarDataMiningSettings settings; @@ -21,9 +24,9 @@ public class PolarAggregationImpl implements PolarAggregation { public PolarAggregationImpl(PolarDataMiningSettings polarDataMiningSettings) { this.settings = polarDataMiningSettings; - histogramData = new int[360][]; + histogramData = new HashMap<>(); for (int i = 0; i < 360; i++) { - histogramData[i] = new int[settings.getNumberOfHistogramColumns()]; + histogramData.put(i, new HashMap()); } } @@ -36,9 +39,14 @@ public class PolarAggregationImpl implements PolarAggregation { } sumSpeedsPerAngle[angleDeg] += dataEntry.getBoatSpeed().getKnots(); countPerAngle[angleDeg]++; - int histogramIndex = settings.getWindSpeedStepping().getHistogramIndex(settings.getNumberOfHistogramColumns(), + Double histogramXValue = settings.getWindSpeedStepping().getHistogramXValue(settings.getNumberOfHistogramColumns(), dataEntry.getWindSpeed().getKnots()); - histogramData[angleDeg][histogramIndex]++; + Map histDataForAngle = histogramData.get(angleDeg); + if (!histDataForAngle.containsKey(histogramXValue)) { + histDataForAngle.put(histogramXValue, 0); + } + Integer currentCount = histDataForAngle.get(histogramXValue) + 1; + histDataForAngle.put(histogramXValue, currentCount); count++; } @@ -69,7 +77,7 @@ public class PolarAggregationImpl implements PolarAggregation { } @Override - public int[][] getCountHistogramPerAngle() { + public Map> getCountHistogramPerAngle() { return histogramData; } From c080e0a663aba36489e941c6a450dd6b7485ae85 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 11:56:40 +0000 Subject: [PATCH 376/504] Updated Polars (markdown) --- wiki/Polars.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/wiki/Polars.md b/wiki/Polars.md index d8440e15ad6..a1e723dd792 100644 --- a/wiki/Polars.md +++ b/wiki/Polars.md @@ -14,7 +14,7 @@ It's important to understand that we have two different approaches for gathering ### Custom Polars (Datamining) -Custom Polars can be generated in the datamining UI. You can choose filters and groupings as you desire and fire a query at the server. The server than applies these settings and returns your custom polar diagram with some additional information like underlying data sizes. The focus in this approach lies on the configurability of the query to give the user a lot of power to answer the questions they ask concerning polars. Example: You want to compare the polars of the winner of a race with the polars of the sailor who finished last. You can do that with the datamining tools. A more detailed description on how to use the polar datamining features can be found [here](#Using-the-Datamining-UI-for-Polars). +Custom Polars can be generated in the datamining UI. You can choose filters and groupings as you desire and fire a query at the server. The server than applies these settings and returns your custom polar diagram with some additional information like underlying data sizes. The focus in this approach lies on the configurability of the query to give the user a lot of power to answer the questions they ask concerning polars. Example: You want to compare the polars of the winner of a race with the polars of the sailor who finished last. You can do that with the datamining tools. A more detailed description on how to use the polar datamining features can be found [here](#polars_using-the-datamining-ui-for-polars). What the polar datamining feature is **not**: It is not very fast for big queries and shouldn't be used (at least as is) for automated queries that are used in real time features. It is not optimized for that purpose. For those kind of things we provide a designated Backend API called *PolarDataService*. @@ -22,7 +22,7 @@ What the polar datamining feature is **not**: It is not very fast for big querie The PolarDataService is a backend API providing access to polar data that is gathered on the backend. The data structures and aggregation is designed for fast responses and real time usage. The PolarDataService is registered as an OSGi Service and can be used very independently (you only need a dependency to com.sap.sailing.domain). You can for example ask the PolarDataService for an estimated speed and beatangle for a given boatclass, windspeed and legtype (upwind or downwind) or for an estimated speed for a given boatclass, windspeed and beatangle (e.g. for reaching legs). To be light memorywise, the backend structures don't save a lot of additional data, so it does not provide any custom filtering. -For more information on how to use the PolarDataService, please see [this section](#Using-the-PolarDataService). +For more information on how to use the PolarDataService, please see [this section](#polars_using-the-polardataservice). ## Using the Datamining UI for Polars @@ -34,7 +34,7 @@ _TODO_ ## Polar Datamining Architecture -For general information about the Datamining Architecture please see [this wikipage][wiki/wiki/data-mining-architecture]. +For general information about the Datamining Architecture please see [this wikipage](wiki/wiki/data-mining-architecture). This section will focus on the polar specific datamining functionality. @@ -44,7 +44,7 @@ Most of the classes are for custom polar datamining. In this section we will con ### File Locations / Project Structure -The project structure sticks to the best practices described [here][wiki/typical-development-scenarios]. There are two bundles: +The project structure sticks to the best practices described [here](wiki/typical-development-scenarios). There are two bundles: com.sap.sailing.polars.datamining and com.sap.sailing.polars.datamining.shared; the latter containing classes that are serializable by the GWT engine. An Activator registeres the polar datamining functionality with the main datamining server. The data package contains the retrieval data classes, the component package contains retrieval processors and the aggregators package contains the two aggregators. @@ -56,7 +56,7 @@ The UI classes live in the gwt.ui bundle; more precisely in the com.sap.sailing. The feature can be extended by adding dimensions to the types in the polar.datamining bundle. This dimensions then serve as a new option in filtering and grouping. -How that works is displayed [here][wiki/typical-development-scenarios]. +How that works is displayed [here](wiki/typical-development-scenarios). ### Known Issues @@ -65,7 +65,7 @@ How that works is displayed [here][wiki/typical-development-scenarios]. ## PolarDataService Architecture -The PolarDataService is an OSGi Service. The interface lives in com.sap.sailing.domain. Information on how to use the service is provided in [this section](#Using-the-PolarDataService). +The PolarDataService is an OSGi Service. The interface lives in com.sap.sailing.domain. Information on how to use the service is provided in [this section](#polars_using-the-polardataservice). This section is addressed at developers who desire to understand the implementation of the service and how it gathers polar data automatically. From 10202da5aa0b04cee53ac0d506fe8f368c2a258b Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 12:00:16 +0000 Subject: [PATCH 377/504] Updated Polars (markdown) --- wiki/Polars.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wiki/Polars.md b/wiki/Polars.md index a1e723dd792..7ae10a41dd8 100644 --- a/wiki/Polars.md +++ b/wiki/Polars.md @@ -34,7 +34,7 @@ _TODO_ ## Polar Datamining Architecture -For general information about the Datamining Architecture please see [this wikipage](wiki/wiki/data-mining-architecture). +For general information about the Datamining Architecture please see [this wikipage](/wiki/wiki/data-mining-architecture). This section will focus on the polar specific datamining functionality. @@ -44,7 +44,7 @@ Most of the classes are for custom polar datamining. In this section we will con ### File Locations / Project Structure -The project structure sticks to the best practices described [here](wiki/typical-development-scenarios). There are two bundles: +The project structure sticks to the best practices described [here](/wiki/typical-development-scenarios). There are two bundles: com.sap.sailing.polars.datamining and com.sap.sailing.polars.datamining.shared; the latter containing classes that are serializable by the GWT engine. An Activator registeres the polar datamining functionality with the main datamining server. The data package contains the retrieval data classes, the component package contains retrieval processors and the aggregators package contains the two aggregators. @@ -56,7 +56,7 @@ The UI classes live in the gwt.ui bundle; more precisely in the com.sap.sailing. The feature can be extended by adding dimensions to the types in the polar.datamining bundle. This dimensions then serve as a new option in filtering and grouping. -How that works is displayed [here](wiki/typical-development-scenarios). +How that works is displayed [here](/wiki/typical-development-scenarios). ### Known Issues @@ -122,4 +122,4 @@ We could use Axels replication framework. It would allow for a more flexible app ### Hard Coded Polars -Some suggested it would be okay to just read out the polars of the archive and hard-code them into the server as an initial polar state, that is then changed by new incoming data. That is a very static approach and defeats the dynamic nature of the whole polar approach but it is very simple to do. +Some suggested it would be okay to just read out the polars of the archive and hard-code them into the server as an initial polar state, that is then changed by new incoming data. That is a very static approach and defeats the dynamic nature of the whole polar approach but it is very simple to do. \ No newline at end of file From 353c2e91c7b28b2116f20bb65e60ab60bde0930b Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 12:00:55 +0000 Subject: [PATCH 378/504] Updated data mining architecture (markdown) --- wiki/data-mining-architecture.md | 288 +++++++------------------------ 1 file changed, 65 insertions(+), 223 deletions(-) diff --git a/wiki/data-mining-architecture.md b/wiki/data-mining-architecture.md index 2e4a5ee845f..db34cc19738 100644 --- a/wiki/data-mining-architecture.md +++ b/wiki/data-mining-architecture.md @@ -1,283 +1,125 @@ -# Data Mining Architecture - -The data mining framework consists of four major parts. At first the general infrastructure, that handles the registration and deregistration of data mining bundles and provides information about the data mining components, that are currently available. The next part is about how to build and run queries. After that come the data processing components, that are used by queries and contain the main functionality of the framework. The last part are the functions, that are used by the data processing components and that can be changed during run-time. +# Polars [[_TOC_]] -## General Infrastructure +## Introduction -The central place to get information about the current state of the data mining and to perform actions is the OSGi-Service `DataMiningServer`. It provides information about the statistics, dimensions, data retriever chains and other data mining components, that are currently available. It also provides methods to create and run queries with a specific structure. For example a query, that returns all dimension values for a data type, or a standard statistic query (that is described in [Building and running Queries](#Building-and-running-Queries)). The server also has methods to get necessary elements to build your own queries (like an `ExecutorService` or the `ResourceBundleStringMessages`) or to convert DTOs to the data mining domain objects. +Polar Diagrams (or Polar Plots or Polars in short) describe how fast a boat can go depending on the wind speed and its angle to the true wind. It helps sailors to find the best angle to sail to reach their target destination. In the SAP Sailing Analytics we gather a lot of race data, which can be used to create estimations of the boats polar diagram. -### Registration and Deregistration of Data Mining Bundles +This wiki page provides information on how to use the polar features in the Analytics, details on the architecture and some further ideas and problems connected to the storage and generation of polars in our system. -The data mining framework listens constantly to the registrations and deregistrations of `DataMiningBundleServices` and adds/removes their provided data mining components. Such components are for example (see its Javadoc for detailed information): +## Two Different Approaches -* An instance of `ResourceBundleStringMessages`, that contains the string messages used by the data mining bundle -* An iterable of `DataSourceProviders`, that are used to get the data source for queries -* An iterable of `DataRetrieverChainDefinitions`, that are used by the bundle (see [Building and running Queries](#Building-and-running-Queries)) -* An iterable of `Classes`, that provide the functions of the bundle (see [Data Mining Functions](#Data-Mining-Functions)) +It's important to understand that we have two different approaches for gathering polar diagrams in the Analytics. We give the user datamining tools to build custom polars and we also automatically gather polars for each boat class on the server to be used by other features through an API called the PolarDataService. -To register/deregister a data mining bundle, you just have to register/deregister its `DataMiningBundleService` to the OSGi-Context. An easy way to achieve this, is to extend the `AbstractDataMiningActivator` with the activator of the data mining bundle. This handles the registration/deregistration in its start/stop-method and implements the `DataMiningBundleService`, which forces the concrete activator to implement the component providing methods. +### Custom Polars (Datamining) -### String Messages +Custom Polars can be generated in the datamining UI. You can choose filters and groupings as you desire and fire a query at the server. The server than applies these settings and returns your custom polar diagram with some additional information like underlying data sizes. The focus in this approach lies on the configurability of the query to give the user a lot of power to answer the questions they ask concerning polars. Example: You want to compare the polars of the winner of a race with the polars of the sailor who finished last. You can do that with the datamining tools. A more detailed description on how to use the polar datamining features can be found [here](#polars_using-the-datamining-ui-for-polars). -A data mining bundle needs string messages, that are created server-side (for example to internationalize the display name of a function). To create string messages for the bundle do the steps described in [Typical Data Mining Scenarios](/wiki/typical-data-mining-scenarios#Adding-a-new-Data-Mining-Bundle). +What the polar datamining feature is **not**: It is not very fast for big queries and shouldn't be used (at least as is) for automated queries that are used in real time features. It is not optimized for that purpose. For those kind of things we provide a designated Backend API called *PolarDataService*. -The provided `ResourceBundleStringMessages` will be added to the string messages of the framework, when the data mining bundle is registered. The framework string messages are an instance of `CompoundResourceBundleStringMessages`, that logs message keys that occur multiple times with the log level `INFO`. +### PolarDataService (Backend API) -### Data Source Provider +The PolarDataService is a backend API providing access to polar data that is gathered on the backend. The data structures and aggregation is designed for fast responses and real time usage. The PolarDataService is registered as an OSGi Service and can be used very independently (you only need a dependency to com.sap.sailing.domain). You can for example ask the PolarDataService for an estimated speed and beatangle for a given boatclass, windspeed and legtype (upwind or downwind) or for an estimated speed for a given boatclass, windspeed and beatangle (e.g. for reaching legs). To be light memorywise, the backend structures don't save a lot of additional data, so it does not provide any custom filtering. -A `DataSourceProvider` provides an instance of a data source, that is used by queries. A data source can be from any type, for example is the `RacingEventService` used as one. Your own `DataSourceProviders` should extend `AbstractDataSourceProvider`. Have a look at `RacingEventServiceProvider` for an example.
          -These `DataSourceProviders` are used by the framework to create new queries (see `DataMiningServerImpl.createQuery(...)`. +For more information on how to use the PolarDataService, please see [this section](#polars_using-the-polardataservice). -### Client-Server Communication (Data Mining DTOs) +## Using the Datamining UI for Polars -*This site is under construction.* +_TODO_ -## Building and running Queries +## Using the PolarDataService -### Defining and building a Data Retriever Chain +_TODO_ -The interface `DataRetrieverChainDefinition` describes the order of retrieval processors ([Processors](#Processors) with the specific functionality to map an `InputType` to a `ResultType`) to get from the `DataSourceType` to the `DataType`. It provides methods to get some information about the retriever chain and to define the order of the processors. There's currently one implementation, which is the `SimpleDataRetrieverChainDefinition`. Every retriever chain has a `UUID` for identification, which is important for the client server communication. The `SimpleDataRetrieverChainDefinition` generates a new random `UUID` upon construction. +## Polar Datamining Architecture -The `DataRetrieverChainDefinition` provides three methods to define the order of the retriever chain (for detailed information see its Javadoc): +For general information about the Datamining Architecture please see [this wikipage](/wiki/data-mining-architecture). -* The method `startWith` to define the first retrieval processor. - * The other methods would throw an exception, if this method hasn't been called exactly once. - * Calling this method more than once causes an exception. -* The method `addAfter` to add a retrieval processor to the end a the list. - * The parameter `lastAddedRetrieverType` is necessary to ensure, that the `ResultType` and `InputType` of successive retrieval processors match. -* The method `endWith` to complete the retriever chain with the last retrieval processor - * Completing a retriever chain makes it immutable. - * This causes all modifying methods to throw an exception, if `endWith` has been called. - * The parameter `lastAddedRetrieverType` is necessary to ensure, that the `ResultType` and `InputType` of successive retrieval processors match. +This section will focus on the polar specific datamining functionality. -This results in the mandatory call order `startWith addAfter* endWith` to define a fresh retriever chain. This strict policy ensures, that the resulting retriever chain instances are type safe and work correctly. The retrieval processors added with this methods have to have a constructor with the signature `(ExecutorService, Collection>, int)` or `(ExecutorService, Collection>, SettingsType, int)`. Otherwise an exception will be thrown. This constructor is used to create concrete instances of the retrieval processors via reflection, when a retriever chain is constructed. All the definition methods (and the constructors of `SimpleDataRetrieverChainDefinition`) have a `String` parameter for a string message key, that would return the name of the retrieval level/chain. This is necessary to display the retriever chain in a human readable way. +At the time of writing there are two different retrieval chains for polar data. One is for displaying the PolarDataService Data which is automatically gathered in the backend. Most classes for that feature contain the word "Backend". It is quite simple and only allows filtering by boat class name. -The `SimpleDataRetrieverChainDefinition` has a second constructor, where the parameter for the `Class` of the `DataSourceType` is replaced with an `DataRetrieverChainDefinition`. This allows the reuse of existing retriever chain definitions and initializes the new one in the state as if the method `startWith` has been called exactly once (This means, that a call of `startWith` would throw an exception). This is an example for the correct reuse of an existing retriever. See `SailingDataRetrievalChainDefinitions` for examples how to create retriever chain definitions. +Most of the classes are for custom polar datamining. In this section we will concentrate on this feature. -Concrete data retriever chain instances can be constructed with a `DataRetrieverChainBuilder`. To get the builder of a **completed** `DataRetrieverChainDefinition` call its `startBuilding` method, which can be done as often as necessary. The interface `DataRetrieverChainBuilder` provides methods to iterate the defined retriever chain and to modify the current retrieval processor (for detailed information see its Javadoc). +### File Locations / Project Structure -* The method `stepFurther` iterates over the retriever chain and sets the next retrieval processor as the one to modify. - * Is similar to the `next` method of `Iterator`. - * Initializes the builder, which is necessary to call the modifying methods. - * Throws an exception, if the builder can't step any further. -* The method `canStepFurther` returns `true`, if `stepFurther` can be called at least once more. - * Is similar to the `hasNext` method of `Iterator` +The project structure sticks to the best practices described [here](/wiki/typical-development-scenarios). There are two bundles: +com.sap.sailing.polars.datamining and com.sap.sailing.polars.datamining.shared; the latter containing classes that are serializable by the GWT engine. -The builder has to be initialized, to call the modifying methods so that no exception is thrown. This means, that the `stepFurther` method has to be called at least once. This allows a better usage of the builder in loops as described in the construction examples. +An Activator registeres the polar datamining functionality with the main datamining server. The data package contains the retrieval data classes, the component package contains retrieval processors and the aggregators package contains the two aggregators. -All iterating and modifying methods return the builder. This can be used to make multiple calls in a single statement. The method `build` constructs the configured retriever chain until the **current** retrieval processor and returns the **first** processor of the concrete retriever chain instance. This can be useful in some cases, but the standard use case is to configure the retrieval processors, that should be configured and iterate through the builder until `canStepFurther` returns `false` (this results in instances of the complete retriever chain). `build` can be called as often as necessary and it's legal to configure the chain, after `build` has been called. Note that the previously created retriever chain instance won't be affected from these changes. +The UI classes live in the gwt.ui bundle; more precisely in the com.sap.sailing.gwt.ui.polarmining package. -How the retriever chain builders can be used can be seen in the tests in `TestDataRetrieverChainCreation` and the methods of `QueryFactory`. +### Extending the Feature -### Building a Processor Query +The feature can be extended by adding dimensions to the types in the polar.datamining bundle. +This dimensions then serve as a new option in filtering and grouping. -*This section is under construction.* +How that works is displayed [here](/wiki/typical-development-scenarios). -### Running a Query directly +### Known Issues -*This section is under construction.* +* Bug 3055 - Tooltip at Polarsheets Histogramm disappears +* Bug 3056 - Polar Sheets Histogram shows average value for number of data points -### Running a Query with the `DataMiningServer` +## PolarDataService Architecture -*This section is under construction.* +The PolarDataService is an OSGi Service. The interface lives in com.sap.sailing.domain. Information on how to use the service is provided in [this section](#polars_using-the-polardataservice). -## Data Processing Components +This section is addressed at developers who desire to understand the implementation of the service and how it gathers polar data automatically. -### Processors +### File Locations / Project Structure -Processors are the main component of the framework to process the data and works like the [Pipes and Filter Architecture](http://de.wikipedia.org/wiki/Pipes_und_Filter). The interface `Processor` describes the functionality of processors, which combines pipes and filters. It has methods to process given elements or to react to a thrown failure and also methods to control the work-flow (for example to finish or abort the work), but it doesn't have methods to get the result of the data processing. The results of processors are forwarded to something, that depends on the concrete implementation (this will be other processors in most cases). For detailed information see the Javadoc of `Processor`. +Apart from the service interface which lives in com.sap.sailing.domain, everything else is in the com.sap.sailing.polars bundle. PolarDataServiceImpl implements the service and can be used as a good entry point when first trying to understand the code. +This implementation also implements ReplicableWithObjectInputStream to support replication of the gathered data when a new replica is attached. If not for that the gathered data would differ on different servers. -How this functionality is implemented, depends on the concrete implementation, but it should stick to this description, except for some special cases (like the last processor in a chain). New processors should extend `AbstractParallelProcessor`. This abstract implementation implements most of the functionality defined by `Processor`, with a parallel processing of the input elements. The parallelization is done in the method `processElement`: +The com.sap.sailing.polars bundle also provides an Activator that handles registration of the OSGi Service. -* Creates an `AbstractProcessorInstruction` for the given input element, if it's valid. - * An invalid input element is for example `null`. -* The instruction is given to an `ExecutorService`, if it's valid. - * An invalid instruction is for example `null`. - * See [Processor Instructions](#Processor-Instructions) for detailed information about instructions. -* The instruction forwards its result to the result receivers, after it has been executed. -* The execution of instructions is handled by the `ExecutorService` of the processor. +Everything else in the bundle is related to the pipeline that filter, groups and aggregates the data. Some more detail is given below and a look into the code will certainly help. -For detailed information see the implementation of `AbstractParallelProcessor`. +### Gathering Pipeline -An useful method for concrete processors is the protected method `createInvalidResult`, that returns an instruction, that won't be passed to the `ExecutorService`. This can be used to stop the processing of a specific input element (for example to filter the data). +The implementation uses features of the datamining engine to build the gathering pipeline. The pipeline is fed with GPS fixes, when they come in. These are then filtered, grouped and in the end they are aggregated into the main data structure, which is detailed below. -There are useful implementations of the abstract processors, that are more specialized. These special processors implement the creation of instructions and the setting of the additional data for their special case. They can be found in the package `com.sap.sse.datamining.impl.components`. +The pipeline is constructed in com.sap.sailing.polars.mining.PolarDataMiner. Here the core structure for the automatic polar gatherer is constructed. If you are looking to extend/change the mechanism, the PolarDataMiner is a good place to start looking for the desired part of the feature. -#### Retrieval Processor +The filtering excludes fixes where a boat was doing a maneuver or every boat that didn't finish in the top 10%, so that good sailors provide the data for higher quality polar data. -Retrieval processors are used to get many result elements (as `ResultType`) from one input element (as `InputType`). The abstract class `AbstractRetrievalProcessor` should be used to implement concrete retrieval processors. It has the abstract method `retrieveData`, that has to implement the concrete algorithm to get the result elements from the input element. This method is used by the created instructions, which forwards each retrieved data element to the result receivers. The instruction itself returns an invalid result (created with the method `createInvalidResult`). +### Main Data Structure -#### Filtering Processor +The last step of the gathering pipeline is putting the result into the main data structure where it lives in memory until the server is killed. The main data structure actually consists of two different aggregations: -Filtering processors are used to filter the input elements. The class `ParallelFilteringProcessor` is a concrete processor, that checks if a given input element matches a `FilterCriterion`. If yes, the given input element is returned as result and if not an invalid result (created with the method `createInvalidResult`) is returned. See [Filter Criteria](#Filter-Criteria) for detailed information about possible filters. +#### SpeedRegressionPerAngleClusterProcessor -#### Grouping Processor +The com.sap.sailing.polars.mining.SpeedRegressionPerAngleClusterProcessor contains data to answer requests which already supply a beat angle. It maintains a boatSpeed over windSpeed regression for every boatclass and 5degree beatangle combination. -Grouping processors are used to classify the data elements. The class `ParallelMultiDimensionsValueNestingGroupingProcessor` is a concrete processor, that creates a compound `GroupKey` for the dimension values of a collection of [Dimensions](#Dimensions) for a data element. The calculation of this group key is done in the processor instruction and the type of the results is `GroupedDataEntry`. The resulting group key is a nesting of the single dimension values. So if the dimension values for a data element would be +#### CubicRegressionPerCourseProcessor +The com.sap.sailing.polars.mining.CubicRegressionPerCourseProcessor contains data to answer requests which do not contain a beat angle but a legtype (upwind/downwind). It maintains two regression buckets. One boatSpeed over windSpeed and one beatAngle over windSpeed regression per boat class. -* Regatta Name: `Kieler Woche 2014` -* Race Name: `505 Race 1` -* Leg Type: `UPWIND` +#### Regressions +The regression magic is performed by the IncrementalAnyOrderLeastSquaresImpl class, which was inspired by this blog post: -And the dimensions to group by would be the list `[Regatta Name, Race Name, Leg Type]`, then the resulting group key would be `Kieler Woche 2014 (505 Race 1 (UPWIND))`. The `Functions`, that are given to the grouping processor have to meet some conditions or an exception will be thrown upon construction: +It can do online any order regressions with least squares and has optimizations to be especially quick for cubic regressions, as they are used for the regressions in the polar backend. -* The given iterable mustn't be `null`. -* The given iterable mustn't be empty. -* Every `Function` has to be a dimension. +## Replication with Use Case -There's also the abstract class `AbstractParallelMultiDimensionalNestingGroupingProcessor` (that is implemented by the dimensions value processor), that implements the functionality to build the nested key out of a collection of dimensions. It has the abstract method `createGroupKeyFor`, that has to implement the concrete key creation for the data element for a single dimension. +"Bug 2563 - Support replication of polar data service" states the need for interserver communication when it comes to the polars that reside in the backend. The standard event scenario is that we have one event server for each ongoing event and the archive server for the past events. We still want to be able to access polar data of the past when being on the live server. This is obvious when we think about the presentation of the simulator at a live event. It will not work very well in the beginning of the event when no races are loaded yet. Thus it would be great to have the archive data available. Multiple approaches have been discussed and I will list them here trying to sort them descending by feasability. -#### Extraction Processor +### System.properties -Extraction processors are used to get statistic value of a grouped data element. The class `ParallelGroupedElementsValueExtractionProcessor` is a concrete processor, that takes `GroupedDataEntry` as input elements and has `GroupedDataEntry` as result elements. It needs a [Statistic Function](#Statistics) to extract the statistic value from the data elements, which is done in its instructions. If the statistic value is `null`, then an invalid result (created with the method `createInvalidResult`) is returned. If the value is something else, then the statistic value grouped by the key of the data element is returned. +We could just let the admin specify a System Property that is read by the polar bundle upon start. The system property should contain a URL to a remote server where polars are available. (E.g. the archive server). The bundle then requests the current polar aggregation from the remote server. If successful it will set this aggregation as the initial aggregation in it. If unsuccessful the server will start with empty containers. -### Aggregators +This would be quite simple to implement (as opposed to multiway replication) and still be sufficient for the typical event + archive scenario. -Aggregators are special processors, that are used to aggregate a collection of input elements (e.g. grouped statistic values) to a single result element (e.g. grouped statistic aggregate). They are located in the package `com.sap.sse.datamining.impl.components.aggregators`. There are multiple abstract aggregation processors, that can be used to implement specific aggregators: +### Manual Import -* The `AbstractParallelAggregationProcessor` is the most abstract aggregator and is the base class for any other (abstract or not) aggregator. There are no restrictions for the generic parameters. `InputType` and `AggregatedType` can be anything. - * This processor creates instructions, that perform the following steps: - 1. Acquires a lock - 2. Handle the input element (this has to be implemented from the concrete aggregators) - 3. Release the lock - 4. Return an invalid result - * This means, that the concrete implementations don't have to care about concurrency, because of the locking done by the most abstract aggregator. - * The result of the aggregation is computed and forwarded, when no more input is expected (more specific in the `finish` method). -* The only class, that extends the previous aggregator is the `AbstractParallel`**`GroupedData`**`AggregationProcessor`, that does noting but adding a restriction to the generic parameters. The resulting `InputType` of this processor is `GroupedDataEntry` and the resulting `ResultType` is `Map`. This means, that this kind of processor expects grouped values and calculates an aggregation for all elements with the same group key. This class has two abstract subclasses (and several concrete aggregators): - * The `AbstractParallelGroupedData`**`Storing`**`AggregationProcessor` refines the names of the abstract methods to fit the specific purpose, that every input element is stored by the aggregator and that any calculation is done after every element is known. This is used by aggregators, that can't calculate the aggregation incrementally with each input element. For example to calculate the median. - * The `AbstractParallel`**`SingleGroupedValue`**`AggregationProcessor` takes a single input element (per key), that meets a specific condition compared to the other input elements (for the key). These values are returned as aggregation. This is used to calculate the minimum or the maximum. +The manual import approach is pretty similar to the System.properties approach, but as opposed to defining a system property, the admin could import the polars during the run time of the server similar to the Master Data Import feature. There are some problems with that approach, since merging of to non-empty aggregations in non-trivial and also a UI would have to be created. -There are several concrete aggregators, that are domain independent and will be available in every domain specific data mining bundle. For example to count the amount of elements with the same key or to calculate sum, average, median, minimum or maximum of numeric values. If you have to implement a new aggregator keep the following things in mind: +### Replication -* Where should the new aggregator be located? - * If it's domain independent put it in `com.sap.sse.datamining.impl.components.aggregators`. - * If it's domain specific put it in the corresponding data mining bundle. -* Which abstract class should be used as base for the new aggregator? - * If the input of the new aggregator aren't grouped data or if it's purpose is very special use `AbstractParallelAggregationProcessor`. - * If the aggregation can be calculated incrementally with each new input element use `AbstractParallelGroupedDataAggregationProcessor`, otherwise use `AbstractParallelGroupedDataStoringAggregationProcessor`. - * If the aggregation is of the kind, that a single value is picked from the collection of input elements use `AbstractParallelSingleGroupedValueAggregationProcessor`. -* Where should the new aggregator be registered? - * Aggregators are registered to the framework with its `AggregationProcessorDefinition`. - * The current convention is, that every concrete aggregator provides its definition with a static method. - * Note that the aggregator needs a constructor with the signature `(ExecutorService, Collection>)` or an exception will be thrown upon the construction of the `AggregationProcessorDefinition`. - * If the aggregator is located in a domain specific bundle, add its definition to the corresponding method of the `DataMiningBundleService` of this bundle. - * If the aggregator is located in the domain independent bundle, add its definition to the method `getDefaultAggregationProcessors()` of the `DataMiningFrameworkActivator`. +We could use Axels replication framework. It would allow for a more flexible approach, but a lot of work would have to be done to allow replication in that direction and between multiple servers that are not in a master-replica-configuration. -There's also the special aggregator `ParallelGroupedDataCollectingAsSetProcessor`, that returns a `Map>` as result element. This aggregator isn't registered to the framework, because it shouldn't be used by the end users. It is used to collect all dimension values of a collection of data elements, which is a very special case. +### Hard Coded Polars -### Processor Instructions - -*This section is under construction.* - -Processor instructions are `Runnables` enriched with a priority. The abstract class `AbstractProcessorInstruction` should be used to create new instructions. - -### Filter Criteria - -*This section is under construction.* - -### Data Types - -In relationaler Umgebung wären es Fakten. - -*This section is under construction.* - -## Data Mining Functions - -Data Mining Functions are used by the [Data Processing Components](#Data-Processing-Components) to get the data from the data elements, that is necessary for the data processing. This can be for the filtration or grouping by dimension values (like the name of the regatta or the leg type) or for the extraction of the statistic values (like the traveled distance or the relative rank). Functions can be defined by annotating the methods of data types and domain types, that should be used to the data. There are currently the three annotations `Connector`, `Dimension` and `Statistic` with different properties and conditions as described below. This makes the system flexible and allows developers to add new or change existing dimensions and statistics very fast. This can also be done during run-time, if the corresponding OSGi-Bundles are hot deployed or refreshed (see [Registration and Deregistration of Data Mining Bundles](#Registration-and-Deregistration-of-Data-Mining-Bundles) for more information). - -### Connector - -Methods marked with the annotation `Connector` indicate the framework, that the result type contains functions. The method has to match the following conditions, to be registered by the framework: - -* It has no parameters. -* The return type isn't `void`. -* It should be side effect free. - * This isn't checked by the framework, so methods with side effects will be registered, but this could have strange effects on the data mining. - -Connecter can have the following properties: - -* A `String messageKey` with the default `""`, that is used for the internationalization. -* An `int ordinal` with the default `Integer.MAX_VALUE`, that is used for the sorting of functions (the standard sorting is ascending). -* A `boolean scanForStatistics` with the default `true`, that indicates the framework, if the statistics contained by the return type of the marked method should be registered. - * This is useful for connections to *higher level* data types, to be able to use their dimensions, without the registration of unwanted or even wrong statistics. - -How the presence of multiple `messageKeys` and `ordinals` in compound functions work is described in [Compound Functions](#Compound-Functions). - -### Dimensions - -Methods marked with the annotation `Dimension` will be registered as dimension by the framework. The method will be called via reflection, if the dimension value of data elements of this data type is requested (for example to filter or group the data). The method has to match the following conditions, to be registered by the framework: - -* It has no parameters, except if the parameter list is exactly `Locale, ResourceBundleStringMessages`. -* The return type isn't `void`. -* It should be side effect free. - * This isn't checked by the framework, so methods with side effects will be registered, but this could have strange effects on the data mining. - -The return type of the marked method should be: - -* A primitive type or wrapper class or -* Classes that implement `equals`, `hashCode` - * Or the grouping could become incorrect. -* and `toString`. - * Or the result presentation will be unreadable. - -Dimensions have the following properties: - -* The mandatory `String messageKey`, that is used for the internationalization. -* An `int ordinal` with the default `Integer.MAX_VALUE`, that is used for the sorting of functions (the standard sorting is ascending). - -How the presence of multiple `messageKeys` and `ordinals` in compound functions work is described in [Compound Functions](#Compound-Functions). - -### Statistics - -Methods marked with the annotation `Statistic` will be registered as computable statistics by the framework. The method will be called via reflection, if the statistic value of a data elements of this data type is requested (for example for the statistic extraction). The method has to match the following conditions, to be registered by the framework: - -* It has no parameters, except if the parameter list is exactly `Locale, ResourceBundleStringMessages`. -* The return type isn't `void`. -* It should be side effect free. - * This isn't checked by the framework, so methods with side effects will be registered, but this could have strange effects on the data mining. - -The return type of the method has to be processable by an aggregator (described in [Processors](#Processors)) of the data mining framework, for example `int` or `double`. - -Statistics have the following properties: - -* The mandatory `String messageKey`, that is used for the internationalization. -* An `int ordinal` with the default `Integer.MAX_VALUE`, that is used for the sorting of functions (the standard sorting is ascending). -* A `Unit resultUnit` with the default `Unit.None`, that is shown in the result presentation. - * `Unit` is an enum located in the bundle `com.sap.sse.datamining.shared`. - * Every member of `Unit` needs a message key in the string messages of the bundle `com.sap.sse.datamining` for internationalization purposes. For example has the unit `Meters` the entry `Meters=m` in the file `StringMessages_en.properties`. -* An `int resultDecimals` with the default `0`, that sets the number of the visible result decimals. - -How the presence of multiple `messageKeys` and `ordinals` in compound functions work is described in [Compound Functions](#Compound-Functions). - -### Function Registration Process - -The function registration process is triggered, when a [data mining bundle is registered](#Registration-and-Deregistration-of-Data-Mining-Bundles). The classes returned by the method `getClassesWithMarkedMethods` of the `DataMiningBundleService` are given to a `FunctionRegistry`. The registry iterates over all public methods (including those declared by the class or interface and those inherited from superclasses and superinterfaces) for each of the given classes and does the following: - -* If the method is a valid [Connector](#Connecter), then the method gets converted to a `Function`, which is added to the list of *previous functions*. The return type of the function gets registered to the `FunctionRegistry`. -* If the method is a valid [Dimension](#Dimensions), then the method gets converted to a `Function`, which is registered as dimension. If the list of *previous functions* isn't empty, than the list and the dimension will be saved as `ConcatenatingCompoundFunction`. -* If the method is a valid [Statistic](#Statistics) and no connector in the list of *previous functions* has set the `scanForStatistics` to `false`, then the method gets converted to a `Function`, which is registered as statistic. If the list of *previous functions* isn't empty, than the list and the statistic will be saved as `ConcatenatingCompoundFunction`. - -What is a valid connector/dimension/statistic and what isn't is described in the corresponding sections of this wiki page. How the `ConcatenatingCompoundFunction` works in detail, is described in [Compound Functions](#Compound-Functions). - -Currently unsupported are - -* Annotating a method with multiple data mining annotations. - * The annotations `Dimension` and `Statistic` have a higher priority than `Connector`, so a method annotated with `Dimension` and `Connector` will be handled as `Dimensions`. -* Cycles in the annotation graph. - * For example, if `A` has the connector `B foo()` and `B` has the connector `A bar()`. - * This would result in an infinite loop during the registration process, that should lead to a `StackOverflowError`. - -### Compound Functions - -Compound functions provide the `Function` interface for a collection of functions. There is currently only the `ConcatenatingCompoundFunction`, that capsules a list of functions, that are called one after another (like the java statement `foo().bar().stat();`). It's necessary to handle some of the methods declared in the `Function` interface in a special way, what is described here. - -* The methods `getDeclaringType` and `getParameters` return the corresponding value of the **first** function in the list. -* The methods `getReturnType`, `getResultUnit`, `getResultDecimals` and `isDimension` return the corresponding value of the **last** function in the list. -* The `tryToInvoke` methods invoke the first function in the list with the given instance and all other functions with the return value of the previous function. - * It returns `null`, if one of the functions in the list returned `null`. -* The method `getOrdinal` returns the smallest ordinal of the functions in the list. -* The method `getSimpleName` returns the name of the function, if the name has been set. If not returns the method the concatenated simple names of the functions in the list separated by `->`. -* The method `isLocalizable` returns `true`, if any of the functions in the list is localizable. -* The method `getLocalizedName` returns the name of the function, if the name has been set, the simple name, if the compound function isn't localizable or the concatenated simple names of the functions in the list separated by a single space. \ No newline at end of file +Some suggested it would be okay to just read out the polars of the archive and hard-code them into the server as an initial polar state, that is then changed by new incoming data. That is a very static approach and defeats the dynamic nature of the whole polar approach but it is very simple to do. From 43dd4e56d3fae2c2902172ac2e37ecaba034e53d Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 12:02:57 +0000 Subject: [PATCH 379/504] Updated data mining architecture (markdown) --- wiki/data-mining-architecture.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wiki/data-mining-architecture.md b/wiki/data-mining-architecture.md index db34cc19738..48389e55b86 100644 --- a/wiki/data-mining-architecture.md +++ b/wiki/data-mining-architecture.md @@ -44,7 +44,7 @@ Most of the classes are for custom polar datamining. In this section we will con ### File Locations / Project Structure -The project structure sticks to the best practices described [here](/wiki/typical-development-scenarios). There are two bundles: +The project structure sticks to the best practices described [here](/wiki/typical-data-mining-scenarios). There are two bundles: com.sap.sailing.polars.datamining and com.sap.sailing.polars.datamining.shared; the latter containing classes that are serializable by the GWT engine. An Activator registeres the polar datamining functionality with the main datamining server. The data package contains the retrieval data classes, the component package contains retrieval processors and the aggregators package contains the two aggregators. @@ -56,7 +56,7 @@ The UI classes live in the gwt.ui bundle; more precisely in the com.sap.sailing. The feature can be extended by adding dimensions to the types in the polar.datamining bundle. This dimensions then serve as a new option in filtering and grouping. -How that works is displayed [here](/wiki/typical-development-scenarios). +How that works is displayed [here](/wiki/typical-data-mining-scenarios). ### Known Issues From 67bb5b3d2138cd44e0dd15ecce447e0a9c9639e6 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 12:06:07 +0000 Subject: [PATCH 380/504] Updated Polars (markdown) --- wiki/Polars.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wiki/Polars.md b/wiki/Polars.md index 7ae10a41dd8..48389e55b86 100644 --- a/wiki/Polars.md +++ b/wiki/Polars.md @@ -34,7 +34,7 @@ _TODO_ ## Polar Datamining Architecture -For general information about the Datamining Architecture please see [this wikipage](/wiki/wiki/data-mining-architecture). +For general information about the Datamining Architecture please see [this wikipage](/wiki/data-mining-architecture). This section will focus on the polar specific datamining functionality. @@ -44,7 +44,7 @@ Most of the classes are for custom polar datamining. In this section we will con ### File Locations / Project Structure -The project structure sticks to the best practices described [here](/wiki/typical-development-scenarios). There are two bundles: +The project structure sticks to the best practices described [here](/wiki/typical-data-mining-scenarios). There are two bundles: com.sap.sailing.polars.datamining and com.sap.sailing.polars.datamining.shared; the latter containing classes that are serializable by the GWT engine. An Activator registeres the polar datamining functionality with the main datamining server. The data package contains the retrieval data classes, the component package contains retrieval processors and the aggregators package contains the two aggregators. @@ -56,7 +56,7 @@ The UI classes live in the gwt.ui bundle; more precisely in the com.sap.sailing. The feature can be extended by adding dimensions to the types in the polar.datamining bundle. This dimensions then serve as a new option in filtering and grouping. -How that works is displayed [here](/wiki/typical-development-scenarios). +How that works is displayed [here](/wiki/typical-data-mining-scenarios). ### Known Issues @@ -122,4 +122,4 @@ We could use Axels replication framework. It would allow for a more flexible app ### Hard Coded Polars -Some suggested it would be okay to just read out the polars of the archive and hard-code them into the server as an initial polar state, that is then changed by new incoming data. That is a very static approach and defeats the dynamic nature of the whole polar approach but it is very simple to do. \ No newline at end of file +Some suggested it would be okay to just read out the polars of the archive and hard-code them into the server as an initial polar state, that is then changed by new incoming data. That is a very static approach and defeats the dynamic nature of the whole polar approach but it is very simple to do. From 974ce7a0ed0a19f7fc375fcd6dd6e3a3970ec885 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 24 Sep 2015 14:12:12 +0200 Subject: [PATCH 381/504] Documentated the data mining process for statistic queries --- wiki/data-mining-architecture.md | 6 +- .../datamining/AbstractQueryProcess.svg | 1516 ++++++++++++++ .../datamining/DataRetrievalInDetail.svg | 1805 +++++++++++++++++ .../datamining/ExampleFactStructure.svg | 1692 +++++++++++++++ wiki/typical-data-mining-scenarios.md | 96 +- 5 files changed, 5080 insertions(+), 35 deletions(-) create mode 100644 wiki/images/datamining/AbstractQueryProcess.svg create mode 100644 wiki/images/datamining/DataRetrievalInDetail.svg create mode 100644 wiki/images/datamining/ExampleFactStructure.svg diff --git a/wiki/data-mining-architecture.md b/wiki/data-mining-architecture.md index 267dcd83dd4..08fc07191d8 100644 --- a/wiki/data-mining-architecture.md +++ b/wiki/data-mining-architecture.md @@ -6,7 +6,7 @@ The data mining framework consists of four major parts. At first the general inf ## General Infrastructure -The central place to get information about the current state of the data mining and to perform actions is the OSGi-Service `DataMiningServer`. It provides information about the statistics, dimensions, data retriever chains and other data mining components, that are currently available. It also provides methods to create and run queries with a specific structure. For example a query, that returns all dimension values for a data type, or a standard statistic query (that is described in [Building and running Queries](#Building-and-running-Queries)). The server also has methods to get necessary elements to build your own queries (like an `ExecutorService` or the `ResourceBundleStringMessages`) or to convert DTOs to the data mining domain objects. +The central place to get information about the current state of the data mining and to perform actions is the OSGi-Service `DataMiningServer`. It provides information about the statistics, dimensions, data retriever chains and other data mining components, that are available at runtime. It also provides methods to create and run queries with a specific structure. For example a query, that returns all dimension values for a Fact, or a standard statistic query (that is described in [Building and running Queries](#Building-and-running-Queries)). The server also has methods to get necessary elements to build your own queries (like an `ExecutorService` or the `ResourceBundleStringMessages`) or to convert DTOs to the data mining domain objects. ### Registration and Deregistration of Data Mining Bundles @@ -177,7 +177,7 @@ Processor instructions are `Runnables` enriched with a priority. The abstract cl *This section is under construction.* -### Data Types +### Facts In relationaler Umgebung wären es Fakten. @@ -232,7 +232,7 @@ Connectors can have the following properties: * A `String messageKey` with the default `""`, that is used for the internationalization. * An `int ordinal` with the default `Integer.MAX_VALUE`, that is used for the sorting of functions (the standard sorting is ascending). * A `boolean scanForStatistics` with the default `true`, that indicates the framework, if the statistics contained by the return type of the marked method should be registered. - * This is useful for connections to *higher level* data types, to be able to use their dimensions, without the registration of unwanted or even wrong statistics. + * This is useful for connections to *higher level* Facts, to be able to use their dimensions, without the registration of unwanted or even wrong statistics. How the presence of multiple `messageKeys` and `ordinals` in compound functions work is described in [Compound Functions](#Compound-Functions). diff --git a/wiki/images/datamining/AbstractQueryProcess.svg b/wiki/images/datamining/AbstractQueryProcess.svg new file mode 100644 index 00000000000..62c2bdbb46e --- /dev/null +++ b/wiki/images/datamining/AbstractQueryProcess.svg @@ -0,0 +1,1516 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Data Mining Process + + + + + + + + + Data Retrieval + + + + + + + + + DataSourceProvider + <DataSourceType> + + + + + + + + + + + + + + + Retriever + <DataSourceType, + RetrievedType> + + + + + + + + + + + + + + + + + + + + + Grouper + <RetrievedType> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Extractor + <RetrievedType, + ExtractedType> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Aggregator + <Extracted Type, + Aggregated Type> + + + + + + + + + + + + + + + + + + + + + Process Result + + + Dimension 1 + + + Dimension 2 + + + Dimension n + + + Extraction Function + + + Data Source + + + Data Source + + + [Group Key, Extracted Value] + + + [Group Key, Extracted Value] + multiple times + + + [Group Key, Fact] + + + [Group Key, Fact] + + + Map<Group Key, + Aggregated Value> + + + Fact + + + multiple + Facts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wiki/images/datamining/DataRetrievalInDetail.svg b/wiki/images/datamining/DataRetrievalInDetail.svg new file mode 100644 index 00000000000..f5f9d2fc1bf --- /dev/null +++ b/wiki/images/datamining/DataRetrievalInDetail.svg @@ -0,0 +1,1805 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Data Retrieval in Detail + + + + + + + + + DataSourceProvider + <DataSourceType> + + + + + + + + + Retriever 1 + <DataSourceType, + RetrievedType 1> + + + + + + + + + Retriever 2 + <RetrievedType 1, + RetrievedType 2> + + + + + + + + + Retriever 3 + <RetrievedType 2, + RetrievedType 3> + + + + + + + + + Retriever n + <RetrievedType n-1, + RetrievedType n> + + + + + + + + + Filter 1 + <RetrievedType 1> + + + + + + + + + Filter 2 + <RetrievedType 2> + + + + + + + + + Filter n + <RetrievedType n-1> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + multiple Facts + + + Filter Criterion 1 + + + Filter Criterion 2 + + + Filter Criterion n + + + Intermediate Element + + + filtered Intermediate + Element + + + Intermediate + Element + + + multiple + Intermediate + Elements + + + Intermediate Element + + + filtered Intermediate + Element + + + Intermediate + Element + + + multiple + Intermediate + Elements + + + Intermediate Element + + + filtered Intermediate + Element + + + Intermediate + Element + + + multiple + Intermediate + Elements + + + Data Source + + + Data Source + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wiki/images/datamining/ExampleFactStructure.svg b/wiki/images/datamining/ExampleFactStructure.svg new file mode 100644 index 00000000000..e54b1b346b4 --- /dev/null +++ b/wiki/images/datamining/ExampleFactStructure.svg @@ -0,0 +1,1692 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Domain + + + + + + + + + + <<Interface>> + Regatta + + + + + + + + + + <<Interface>> + Leaderboard + + + + + + + + + + <<Interface>> + TrackedRace + + + + + + + + + + + Data Mining Bundle + + + + + + + + + + <<Interface>> + TrackedLegOfCompetitor + + + + + + + + + + <<Interface>> + TrackedLeg + + + + + + + + + + <<Interface>> + HasRegatteContext + + + + + + + + + + <<Interface>> + HasLeaderboardContext + + + + + + + + + + <<Interface>> + HasTrackedRaceContext + + + + + + + + + + <<Interface>> + HasTrackedLegContext + + + + + + + + + + <<Interface>> + HasTrackedLegOfCompetitorContext + + + + + + + + + + RegattaWithContext + + + + + + + + + + LeaderboardWithContext + + + + + + + + + + TrackedRaceWithContext + + + + + + + + + + TrackedLegWithContext + + + + + + + + + + TrackedLegOfCompetitorWithContext + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @Connector(scanForStatistics=false) + + + @Connector(scanForStatistics=false) + + + @Connector(scanForStatistics=false) + + + @Connector(scanForStatistics=false) + + diff --git a/wiki/typical-data-mining-scenarios.md b/wiki/typical-data-mining-scenarios.md index c205e41ebf3..42d5671104f 100644 --- a/wiki/typical-data-mining-scenarios.md +++ b/wiki/typical-data-mining-scenarios.md @@ -27,12 +27,73 @@ The following points describe the steps to create a new data mining bundle. An e * This should be done in a separate bundle. * See [Typical Development Scenarios](/wiki/typical-development-scenarios#Adding-a-Java-Project-Bundle) for instructions, how to add a shared GWT bundle. -## Adding an absolute new Data Type +## Implementing the Data Mining Components -*Konzeptionelle Beschreibung der Statistic Query: DataRetrieval -> Grouping -> Extraction -> Aggregation* +Before you start to implement the components, you should get an overview about the data mining process that is shown in the image below. + +The data mining process consists of different steps that will be described below. Elements that are **bold** are the components you'll have to implement. The project `com.sap.sailing.dataming` is a fully implemented data mining bundle, where you can see the concrete implementation of the different components. +1. At first a **DataSourceProvider** is necessary that is used to get a *Data Source* of a specific type. + * This *Data Source* is the starting point for the data you want to analyze. + * A concrete *Data Source* is for example the `RacingEventService`. + * A concrete DataSourceProvider would be the `RacingEventServiceProvider`. +2. The *Data Source* is given to a **Retriever** that retrieves multiple **Facts** (of the same type) from it. + * A Fact can be roughly described as an enriched and abstracted domain element (for example a `TrackedRace`). + * Enriched means that the Fact provides contextual information and Key Figures in a way that they can be easily used by in the data mining process. + * Contextual information could be the name of the race, the regatta of the race or the course area on which the race took place. + * Key Figures could be the speed at start for a specific competitor or the number of jibes that have been performed during the race. + * Abstracted means, that the Fact provides a user friendly view of the domain element(s) it represents and isn't just a domain element with a richer interface. + * For example need the previously described Key Figures not only information about the race, but also about a specific competitor. Therefore a Fact that provides such Key Figures abstracts a tuple of race and competitor. +3. The Facts are given (one by one) to a Grouper that provides each Fact with a group key. This key is used to categorize the Fact. + * The key consists of a single or multiple contextual information. **Dimensions** are used to get the concrete values. + * If you want to analyze the number jibes of each race in a set of races the dimension that provides the name of a race would be used to group each race. + * A key can contain multiple dimensional values. This results in a key, that nests the values according to the order of the used dimensions. + * For example if you want to do the previous analysis not only for each race, but for each leg per race and you have races of multiple regattas. In this case dimensions that provide the information about the regatta name, the race name and the leg number would be necessary. + * The resulting group key would have the structure `>>`. + * The output of a Grouper is a tuple of the group key and the Fact. +4. The [Key, Fact]-Tuple is given to an Extractor that extracts the Key Figure from the Fact. + * An **Extration Function** is used to get the concrete value from the Fact. + * The output of an extractor is a tuple of the group key and the extracted value. +5. The [Key, Value]-Tuple is given to an **Aggregator** that calculates an aggregate for each group key from the given values with this group key. + * Examples for aggregates would be the sum, average or maximum of the given values. + * An example would be the analysis of the sum of jibes performed in multiple regattas. Therefore the dimension for the regatta name, the extraction function for the number of jibes performed in a race and an aggregator that calculates the sum would be used. + * The result would be a map that maps each group key to the sum of jibes. + * In this case the type of the extracted value and the type of the aggregated value would be the same, but this doesn't have to be the case. + +### Implement the Fact and the Data Retrieval + +### Implement your own Aggregators + +It may be necessary, that your data mining bundle needs domain specific [aggregator](/wiki/data-mining-architecture#Aggregators). For example to compute the aggregations for domain specific statistics (like `Distance`), that can't be done by the domain independent aggregators (located in `com.sap.sse.datamining.impl.components.aggregators`). To do this perform the following steps: + +* Implement your own aggregator according to the advice in [Data Mining Architecture](/wiki/data-mining-architecture#Aggregators). +* Provide a `AggregationProcessorDefinition` for the new aggregator in the corresponding method of the `DataMiningBundleService` of your data mining bundle. + * The current convention is, that every concrete aggregator provides its definition with a static method. + * Note that the aggregator needs a constructor with the signature `(ExecutorService, Collection>)` or an exception will be thrown upon the construction of the `AggregationProcessorDefinition`. + +For example see the `Activator` of the `com.sap.sailing.datamining` bundle and its aggregators in the package `com.sap.sailing.datamining.impl.components.aggregators`. + +## Include a Type forcefully in the GWT Serialization Policy + +It can happen, that a necessary type isn't included in the GWT Serialization Policy, because of the generality of the framework. To enforce the include of a type, the GWT-Service has to use the type in one of its methods. To do this, follow these steps: + +* Create a dummy class in a shared bundle, if such a dummy class doesn't exist already in the scope of the type. + * For example like `SSEDataMiningSerializationDummy`. + * The class has to implement the interface `SerializationDummy` and should only have a private standard constructor, to prevent an accidental instantiation. + * Implementing this interface adds the dummy automatically to the serialization policy, without changing the `DataMiningService`. +* Add a private non-final instance variable of the type to the dummy. + +The type will be included in the GWT Serialization Policy, because the `DataMiningService` has a method, that uses the interface `SerializationDummy`, that uses the type. + +If you can't implement `SerializationDummy` for any reasons do the following: + +* Implement the interface `Serializable` or `IsSerializable` instead. +* Add a pseudo method to the GWT-Service, that uses the dummy class. + * For example like `SerializationDummy pseudoMethodSoThatSomeClassesAreAddedToTheGWTSerializationPolicy()`. + +## Deprecated Documentation A data type is an atomic unit on which the processing components operate. A data type is normally based on a domain element (like `GPSFixMoving` or `TrackedLegOfCompetitor`) and provides contextual information about it (like the name of the regatta or race) via [Functions](data-mining-architecture#Data-Mining-Functions). *Dimensions and Statistics* @@ -130,33 +191,4 @@ trackedLegRetrieverChain.endWith(TrackedLegOfCompetitorRetrievalProcessor.class) RetrieverChain markPassingRetrieverChain = new RetrieverChain(trackedRaceRetrieverChain, MarkPassing.class); markPassingRetrieverChain.endWith(MarkPassingRetrievalProcessor.class); -* Ensure, that all retriever chains are added to the `DataMiningBundleService` - -### Implement your own Aggregators - -It may be necessary, that your data mining bundle needs domain specific [aggregator](/wiki/data-mining-architecture#Aggregators). For example to compute the aggregations for domain specific statistics (like `Distance`), that can't be done by the domain independent aggregators (located in `com.sap.sse.datamining.impl.components.aggregators`). To do this perform the following steps: - -* Implement your own aggregator according to the advice in [Data Mining Architecture](/wiki/data-mining-architecture#Aggregators). -* Provide a `AggregationProcessorDefinition` for the new aggregator in the corresponding method of the `DataMiningBundleService` of your data mining bundle. - * The current convention is, that every concrete aggregator provides its definition with a static method. - * Note that the aggregator needs a constructor with the signature `(ExecutorService, Collection>)` or an exception will be thrown upon the construction of the `AggregationProcessorDefinition`. - -For example see the `Activator` of the `com.sap.sailing.datamining` bundle and its aggregators in the package `com.sap.sailing.datamining.impl.components.aggregators`. - -## Include a Type forcefully in the GWT Serialization Policy - -It can happen, that a necessary type isn't included in the GWT Serialization Policy, because of the generality of the framework. To enforce the include of a type, the GWT-Service has to use the type in one of its methods. To do this, follow these steps: - -* Create a dummy class in a shared bundle, if such a dummy class doesn't exist already in the scope of the type. - * For example like `SSEDataMiningSerializationDummy`. - * The class has to implement the interface `SerializationDummy` and should only have a private standard constructor, to prevent an accidental instantiation. - * Implementing this interface adds the dummy automatically to the serialization policy, without changing the `DataMiningService`. -* Add a private non-final instance variable of the type to the dummy. - -The type will be included in the GWT Serialization Policy, because the `DataMiningService` has a method, that uses the interface `SerializationDummy`, that uses the type. - -If you can't implement `SerializationDummy` for any reasons do the following: - -* Implement the interface `Serializable` or `IsSerializable` instead. -* Add a pseudo method to the GWT-Service, that uses the dummy class. - * For example like `SerializationDummy pseudoMethodSoThatSomeClassesAreAddedToTheGWTSerializationPolicy()`. \ No newline at end of file +* Ensure, that all retriever chains are added to the `DataMiningBundleService` \ No newline at end of file From bb24cc936632904d54d86e2274acc000ca256f9c Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 12:17:58 +0000 Subject: [PATCH 382/504] Updated Polars (markdown) --- wiki/Polars.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wiki/Polars.md b/wiki/Polars.md index 48389e55b86..96982096cf7 100644 --- a/wiki/Polars.md +++ b/wiki/Polars.md @@ -30,7 +30,9 @@ _TODO_ ## Using the PolarDataService -_TODO_ +The PolarDataService is the interface to look at, when you want to use access the backend aggregated polar data. Its methods are eqipped with JavaDoc explanations and you can look at the usages of the methods to see typical ways to use the interface. + +The PolarDataService is an OSGi service. Above all it is retrieved by the RacingEventService. The RacingEventService supplies some needed objects like DomainFactories and also feeds the PolarDataService with fresh fixes. You can benefit from that because, if you have a chance to obtain the RacingEventService or maybe already have a reference to it, you can simply call service.getPolarDataService() and voila: You can start using the PolarDataService. If not you can look into handling the OSGi service listening yourself to obtain the PolarDataService. ## Polar Datamining Architecture From 53db109609cf29e79e89df25a0d2f7843c523e8a Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 13:01:51 +0000 Subject: [PATCH 383/504] Updated Polars (markdown) --- wiki/Polars.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/wiki/Polars.md b/wiki/Polars.md index 96982096cf7..447d4f58d73 100644 --- a/wiki/Polars.md +++ b/wiki/Polars.md @@ -26,7 +26,25 @@ For more information on how to use the PolarDataService, please see [this sectio ## Using the Datamining UI for Polars -_TODO_ +There are two different data retriever chains that can be used for viewing polars. One of them ("Polars") supports the actual datamining approach with custom filtering and grouping and the queries that run on the server can be very time-intensive. The other one ("Backend Polars") can only be used to look at the data that is aggregated on the backend automatically. The latter option doesn't allow filtering or grouping apart from the boat class. The feature is mostly intended for developers that use or want to use the PolarDataService and want to have a preview for how the data looks, that they get when they use the service. + +### Polars + +When generating custom polars you can use the settings button in the UI to configure some settings. Most of them have tooltips that explain them in some more detail. After changing the settings, all filters and grouping has to be reconfigured. This is due to the fact that some of the settings actually affect the possible values of the filters. One example for it is the wind range that you can define in the settings. + +It makes a lot of sense to the wind range as a grouping dimension. It is allowed not to do it, but in most cases it will generate a useless diagram, since data from a lot of different wind speeds is averaged and thus mixed with each other. + +It is important to use the Polars Aggregator (and not Count which is a standard Datamining Aggregator which just counts the elements). + +When you run the query be aware, that it can take some time depending on your filtering options and the amount (and size) of races loaded. This is mostly due to wind computation in the backend. Maybe this can be optimized in the future. + +#### Presentation + +The data is presented in three charts. On the left you find the main polar chart that presents the polar diagrams as grouped. On the upper right there is a histogram that shows the underlying dataCount per Angle. Upon showing and hiding chart series in the polar chart, the connected histograms also show and hide. + +The third chart is empty when first shown. It can show how the data for one single point in the polar chart is distributed over the underlying wind range. Just click a point in the polar chart to show that data. When clicking another point, the old data will be hidden and only the data for the new point is shown. + +### Backend Polars ## Using the PolarDataService From 24f3a768c16663266e5adb6761b6cbfcd4138547 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 24 Sep 2015 15:29:13 +0200 Subject: [PATCH 384/504] Avoid showing carry forward race columns in regatta overview --- .../sailing/gwt/ui/server/SailingServiceImpl.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 5a9ff4dd41d..2385ec81d77 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -4127,13 +4127,14 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S private void getRegattaOverviewEntries(boolean showOnlyRacesOfSameDay, Calendar dayToCheck, CourseArea courseArea, Leaderboard leaderboard, String boatClassName, String regattaName, String seriesName, RaceColumn raceColumn, Map> entriesPerFleet) { - - for (Fleet fleet : raceColumn.getFleets()) { - RegattaOverviewEntryDTO entry = createRegattaOverviewEntryDTO(courseArea, - leaderboard, boatClassName, regattaName, seriesName, raceColumn, fleet, - showOnlyRacesOfSameDay, dayToCheck); - if (entry != null) { - addRegattaOverviewEntryToEntriesPerFleet(entriesPerFleet, fleet, entry); + if (!raceColumn.isCarryForward()) { + for (Fleet fleet : raceColumn.getFleets()) { + RegattaOverviewEntryDTO entry = createRegattaOverviewEntryDTO(courseArea, + leaderboard, boatClassName, regattaName, seriesName, raceColumn, fleet, + showOnlyRacesOfSameDay, dayToCheck); + if (entry != null) { + addRegattaOverviewEntryToEntriesPerFleet(entriesPerFleet, fleet, entry); + } } } } From 8795999af00dddd5cb3785bb22ae903ae3802b1b Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 13:40:08 +0000 Subject: [PATCH 385/504] Updated Polars (markdown) --- wiki/Polars.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/wiki/Polars.md b/wiki/Polars.md index 447d4f58d73..3d8553847ce 100644 --- a/wiki/Polars.md +++ b/wiki/Polars.md @@ -46,6 +46,12 @@ The third chart is empty when first shown. It can show how the data for one sing ### Backend Polars +Displaying backend polars in the datamining UI is quite simple: Choose the "Backend Polars" Retriever chain, filter by boat class name, choose the "Polars" aggregator and run the query. The query should not take long since the PolarDataService is optimzed for quick response times. + +#### Presentation + +Like the custom polars, the backend polars are presented in 3 charts. The main chart is also a polar chart which is quite similar to the on used for custom polars. The other two charts are different. They are not related to underlying data but rather show the regression functions boatspeed over windspeed and beatangle over windspeed for upwind and downwind. + ## Using the PolarDataService The PolarDataService is the interface to look at, when you want to use access the backend aggregated polar data. Its methods are eqipped with JavaDoc explanations and you can look at the usages of the methods to see typical ways to use the interface. From 241d8911d093cfa3f2ad5b48a59155b275469ba2 Mon Sep 17 00:00:00 2001 From: fmittag Date: Thu, 24 Sep 2015 15:42:18 +0200 Subject: [PATCH 386/504] fix for bug Bug 3252 - Buoy zone not displayed for windward mark the reason was a mark with mark.type = null --- .../client/shared/racemap/CourseMarkOverlay.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java index ec808143ae2..f5171398ee8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java @@ -9,6 +9,7 @@ import com.google.gwt.maps.client.MapWidget; import com.google.gwt.maps.client.base.LatLng; import com.google.gwt.maps.client.base.Point; import com.google.gwt.maps.client.base.Size; +import com.google.gwt.user.client.Window; import com.sap.sailing.domain.common.MarkType; import com.sap.sailing.domain.common.Position; import com.sap.sailing.gwt.ui.shared.MarkDTO; @@ -71,7 +72,7 @@ public class CourseMarkOverlay extends CanvasOverlayV3 { double canvasWidth = markScaleAndSize.getB().getWidth(); double canvasHeight = markScaleAndSize.getB().getHeight(); double buoyZoneRadiusInPixel = -1; - if (showBuoyZone && mark.type == MarkType.BUOY) { + if (showBuoyZone && isMarkWithBuoyZone(mark)) { buoyZoneRadiusInPixel = calculateRadiusOfBoundingBoxInPixels(mapProjection, position, buoyZoneRadiusInMeter); if (buoyZoneRadiusInPixel > MIN_BUOYZONE_RADIUS_IN_PX) { @@ -85,8 +86,8 @@ public class CourseMarkOverlay extends CanvasOverlayV3 { // draw the course mark markVectorGraphics.drawMarkToCanvas(context2d, isSelected, canvasWidth, canvasHeight, markSizeScaleFactor); // draw the buoy zone - if (showBuoyZone && mark.type == MarkType.BUOY && buoyZoneRadiusInPixel > MIN_BUOYZONE_RADIUS_IN_PX) { - CssColor grayTransparentColor = CssColor.make("rgba(50,90,135,0.75)"); + if (showBuoyZone && isMarkWithBuoyZone(mark) && buoyZoneRadiusInPixel > MIN_BUOYZONE_RADIUS_IN_PX) { + CssColor grayTransparentColor = CssColor.make("rgba(37,158,255,0.75)"); // this translation is important for drawing lines with a real line width of 1 pixel context2d.setStrokeStyle(grayTransparentColor); context2d.setLineWidth(1.0); @@ -104,7 +105,7 @@ public class CourseMarkOverlay extends CanvasOverlayV3 { lastHeight = canvasHeight; } Point buoyPositionInPx = mapProjection.fromLatLngToDivPixel(coordinateSystem.toLatLng(position)); - if (showBuoyZone && mark.type == MarkType.BUOY && buoyZoneRadiusInPixel > MIN_BUOYZONE_RADIUS_IN_PX) { + if (showBuoyZone && isMarkWithBuoyZone(mark) && buoyZoneRadiusInPixel > MIN_BUOYZONE_RADIUS_IN_PX) { setCanvasPosition(buoyPositionInPx.getX() - buoyZoneRadiusInPixel, buoyPositionInPx.getY() - buoyZoneRadiusInPixel); } else { setCanvasPosition(buoyPositionInPx.getX() - canvasWidth / 2.0, buoyPositionInPx.getY() - canvasHeight / 2.0); @@ -112,6 +113,11 @@ public class CourseMarkOverlay extends CanvasOverlayV3 { } } + private boolean isMarkWithBuoyZone(MarkDTO mark) { + return mark.type == null || mark.type == MarkType.BUOY || mark.type == MarkType.STARTBOAT || + mark.type == MarkType.FINISHBOAT || mark.type == MarkType.LANDMARK; + } + /** * Compares the drawing parameters to {@link #lastLegType} and the other last.... If anything has * changed, the result is true. From fc5d76af06aa6d9531d9e9acc8e5f5925512b331 Mon Sep 17 00:00:00 2001 From: fmittag Date: Thu, 24 Sep 2015 15:43:38 +0200 Subject: [PATCH 387/504] made the links in the celltables opening the link destination in a new window in LeaderboardConfigPanel --- .../sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java index aff17961513..61f4c85bfb2 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java @@ -77,7 +77,7 @@ TrackedRaceChangedListener, LeaderboardsDisplayer { } interface AnchorTemplates extends SafeHtmlTemplates { - @SafeHtmlTemplates.Template("{1}") + @SafeHtmlTemplates.Template("{1}") SafeHtml cell(String url, String displayName); } From 9eb90ad68612b9633e7c896b389790bb1c81d656 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 13:57:42 +0000 Subject: [PATCH 388/504] Updated Polars (markdown) --- wiki/Polars.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/wiki/Polars.md b/wiki/Polars.md index 3d8553847ce..aac32387467 100644 --- a/wiki/Polars.md +++ b/wiki/Polars.md @@ -149,3 +149,17 @@ We could use Axels replication framework. It would allow for a more flexible app ### Hard Coded Polars Some suggested it would be okay to just read out the polars of the archive and hard-code them into the server as an initial polar state, that is then changed by new incoming data. That is a very static approach and defeats the dynamic nature of the whole polar approach but it is very simple to do. + +## Other Approaches + +Some short notes on other approaches for gathering polar data. + +### Manual Polars + +We tried creating a tool that allows an expert to gather data for manually creating polars. The development of this tool was triggered by Marcus from STG. + +For a given set of races the main algorithm finds situations where two boats on different hulls pass each other closely (locationwise). It then presents these results to the user and the user can have a closer look and decide if this data should be added to the aggregation. + +The problem with this approach is that it is a lot of work to get together a set of data that is not tiny. It is also unclear what to do with the data afterwards. + +The tool hasn't really been used in production and thus the code has not been merged into the master branch. It resides on the branch marcus-polars. From 2bfa41a8dbc1c6b7c40d7127b875f11f49819d00 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Thu, 24 Sep 2015 13:59:06 +0000 Subject: [PATCH 389/504] Updated Polars (markdown) --- wiki/Polars.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/wiki/Polars.md b/wiki/Polars.md index aac32387467..c6d9358fb23 100644 --- a/wiki/Polars.md +++ b/wiki/Polars.md @@ -86,8 +86,7 @@ How that works is displayed [here](/wiki/typical-data-mining-scenarios). ### Known Issues -* Bug 3055 - Tooltip at Polarsheets Histogramm disappears -* Bug 3056 - Polar Sheets Histogram shows average value for number of data points +none right now ## PolarDataService Architecture From 5e6d19521cd955d446eb0b70e85251577e1aa018 Mon Sep 17 00:00:00 2001 From: fmittag Date: Thu, 24 Sep 2015 16:24:03 +0200 Subject: [PATCH 390/504] removed unused import --- .../sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java index f5171398ee8..1ee74519251 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/CourseMarkOverlay.java @@ -9,7 +9,6 @@ import com.google.gwt.maps.client.MapWidget; import com.google.gwt.maps.client.base.LatLng; import com.google.gwt.maps.client.base.Point; import com.google.gwt.maps.client.base.Size; -import com.google.gwt.user.client.Window; import com.sap.sailing.domain.common.MarkType; import com.sap.sailing.domain.common.Position; import com.sap.sailing.gwt.ui.shared.MarkDTO; From e566bc9137b7e1f28b948bd8bec0e93c9a3d9031 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 24 Sep 2015 19:16:26 +0200 Subject: [PATCH 391/504] Added a few lines to the documentation of the data mining process --- wiki/typical-data-mining-scenarios.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/wiki/typical-data-mining-scenarios.md b/wiki/typical-data-mining-scenarios.md index 42d5671104f..23914020027 100644 --- a/wiki/typical-data-mining-scenarios.md +++ b/wiki/typical-data-mining-scenarios.md @@ -36,10 +36,10 @@ Before you start to implement the components, you should get an overview about t The data mining process consists of different steps that will be described below. Elements that are **bold** are the components you'll have to implement. The project `com.sap.sailing.dataming` is a fully implemented data mining bundle, where you can see the concrete implementation of the different components. 1. At first a **DataSourceProvider** is necessary that is used to get a *Data Source* of a specific type. - * This *Data Source* is the starting point for the data you want to analyze. - * A concrete *Data Source* is for example the `RacingEventService`. + * This Data Source is the starting point for the data you want to analyze. + * A concrete Data Source is for example the `RacingEventService`. * A concrete DataSourceProvider would be the `RacingEventServiceProvider`. -2. The *Data Source* is given to a **Retriever** that retrieves multiple **Facts** (of the same type) from it. +2. The Data Source is given to a **Retriever** that retrieves multiple **Facts** (of the same type) from it. * A Fact can be roughly described as an enriched and abstracted domain element (for example a `TrackedRace`). * Enriched means that the Fact provides contextual information and Key Figures in a way that they can be easily used by in the data mining process. * Contextual information could be the name of the race, the regatta of the race or the course area on which the race took place. @@ -55,15 +55,23 @@ The data mining process consists of different steps that will be described below * The output of a Grouper is a tuple of the group key and the Fact. 4. The [Key, Fact]-Tuple is given to an Extractor that extracts the Key Figure from the Fact. * An **Extration Function** is used to get the concrete value from the Fact. - * The output of an extractor is a tuple of the group key and the extracted value. + * The output of an Extractor is a tuple of the group key and the extracted value. 5. The [Key, Value]-Tuple is given to an **Aggregator** that calculates an aggregate for each group key from the given values with this group key. * Examples for aggregates would be the sum, average or maximum of the given values. - * An example would be the analysis of the sum of jibes performed in multiple regattas. Therefore the dimension for the regatta name, the extraction function for the number of jibes performed in a race and an aggregator that calculates the sum would be used. + * An example would be the analysis of the sum of jibes performed in multiple regattas. Therefore the dimension for the regatta name, the extraction function for the number of jibes performed in a race and an Aggregator that calculates the sum would be used. * The result would be a map that maps each group key to the sum of jibes. - * In this case the type of the extracted value and the type of the aggregated value would be the same, but this doesn't have to be the case. + * In this example the type of the extracted value and the type of the aggregated value would be the same, but this doesn't have to be the case. + +The main task to integrate the data mining bundle is to define the Fact (with its dimensions and extraction functions) that should be analyzed and to implement the data retrieval to get the facts from the Data Source. The second task would be to implement domain specific Aggregators that are able to process the type of the Key Figure. This may not necessary, because there are some domain independent Aggregators (for example for numeric values) that are available to every domain specific data mining bundle. So it isn't necessary to implement an Aggregator in the bundle, if the type of the Key Figure is a `Number`. See the package `com.sap.sse.datamining.impl.components.aggregators` for the available domain independent aggregators. + +The following sections describe how to implement the different components. + +Note that the process described above is a very specific process to calculate aggregations from a collection of Facts (in the code referred as Statistic Query) and that the data mining framework is capable to execute many other processes. For general and more detailed information about the framework and its architecture see [Data Mining Architecture](data-mining-architecture). ### Implement the Fact and the Data Retrieval +The concrete interfaces and classes that are needed to implement the Fact depend on what you want to analyze in the new data mining bundle. A good starting point is to think about the domain elements that contain the data you want to analyze, how to get the instances of these domain elements and whats the + ### Implement your own Aggregators It may be necessary, that your data mining bundle needs domain specific [aggregator](/wiki/data-mining-architecture#Aggregators). For example to compute the aggregations for domain specific statistics (like `Distance`), that can't be done by the domain independent aggregators (located in `com.sap.sse.datamining.impl.components.aggregators`). To do this perform the following steps: From c2ea04a0857aa92179f484a2e52c69df20e20fbd Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 24 Sep 2015 22:42:12 +0200 Subject: [PATCH 392/504] Documented the data retrieval in detail --- .../datamining/DataRetrievalInDetail.svg | 1133 ++++++++++------- wiki/typical-data-mining-scenarios.md | 35 +- 2 files changed, 728 insertions(+), 440 deletions(-) diff --git a/wiki/images/datamining/DataRetrievalInDetail.svg b/wiki/images/datamining/DataRetrievalInDetail.svg index f5f9d2fc1bf..08ae66343aa 100644 --- a/wiki/images/datamining/DataRetrievalInDetail.svg +++ b/wiki/images/datamining/DataRetrievalInDetail.svg @@ -13,7 +13,7 @@ stroke="rgb(0,0,0)" text-rendering="auto" stroke-linecap="square" - width="588" + width="599" stroke-miterlimit="10" stroke-opacity="0" shape-rendering="auto" @@ -33,7 +33,7 @@ inkscape:version="0.48.2 r9819" sodipodi:docname="DataRetrievalInDetail.svg"> + id="metadata598"> @@ -54,11 +54,11 @@ inkscape:pageshadow="2" inkscape:window-width="1858" inkscape:window-height="1058" - id="namedview518" + id="namedview596" showgrid="false" - inkscape:zoom="1.4984127" - inkscape:cx="325.62777" - inkscape:cy="276.70391" + inkscape:zoom="2.1190756" + inkscape:cx="516.4016" + inkscape:cy="56.466535" inkscape:window-x="54" inkscape:window-y="-8" inkscape:window-maximized="1" @@ -73,7 +73,7 @@ clipPathUnits="userSpaceOnUse"> + d="M-7 -7 L598 -7 L598 637 L-7 637 L-7 -7 Z" /> + d="M-7 -7 L139 -7 L139 51 L-7 51 L-7 -7 Z" /> + d="M0 0 L0 40 L128 40 L128 0 Z" /> + d="M-106 -16 L212 -16 L212 32 L-106 32 L-106 -16 Z" /> + d="M-83 -16 L166 -16 L166 32 L-83 32 L-83 -16 Z" /> + d="M-44 -16 L88 -16 L88 32 L-44 32 L-44 -16 Z" /> + d="M-66 -33 L132 -33 L132 66 L-66 66 L-66 -33 Z" /> + d="M-119 -34 L238 -34 L238 68 L-119 68 L-119 -34 Z" /> + d="M-79 -50 L158 -50 L158 100 L-79 100 L-79 -50 Z" /> + d="M-135 -16 L270 -16 L270 32 L-135 32 L-135 -16 Z" /> + d="M-120 -37 L240 -37 L240 74 L-120 74 L-120 -37 Z" /> + d="M-79 -33 L158 -33 L158 66 L-79 66 L-79 -33 Z" /> + d="M-77 -39 L154 -39 L154 78 L-77 78 L-77 -39 Z" /> + d="M-78 -52 L156 -52 L156 104 L-78 104 L-78 -52 Z" /> + d="M-120 -39 L240 -39 L240 78 L-120 78 L-120 -39 Z" /> + + + + + + + + + + + + + + + + + + DataSourceProvider Retriever 1 <DataSourceType, Retriever 2 <RetrievedType 1, Retriever 3 <RetrievedType 2, Retriever n <RetrievedType n-1, - - - - - - - Filter 1 - <RetrievedType 1> - - - - - + transform="translate(343,151)"> - Filter 2 - <RetrievedType 2> - - + transform="translate(343,151)"> + transform="translate(343,151)"> + Filter 1 + <RetrievedType 1> + + + + + + Filter 2 + <RetrievedType 2> + + + + + + + + Filter n + x="40">Filter n-1 + transform="translate(202,555)"> + transform="translate(202,555)"> - + multiple Facts + y="0" + x="0" /> + + + + transform="translate(343,541)"> Filter Criterion 1 + x="45">Filter n + <RetrievedType n> + + + + + + + + + + + + + + + + + + + transform="translate(476,553)"> Filter Criterion 2 - - - Filter Criterion n + transform="translate(407,586)"> Intermediate Element + x="10">filtered Fact + Fact + + + multiple + Facts + + filtered Intermediate Element - Intermediate - Element - - multiple Intermediate Elements Intermediate Element filtered Intermediate Element + Intermediate + Element + + Intermediate Element multiple Intermediate Elements + transform="translate(2,511)"> Intermediate Element + Intermediate Element + + filtered Intermediate Element + Filter Criterion 1 + + Intermediate Element multiple Intermediate Elements + Filter Criterion 2 + + Data Source Data Source + + Filter Criterion n-1 + - - - - - + + + + + + + + + + diff --git a/wiki/typical-data-mining-scenarios.md b/wiki/typical-data-mining-scenarios.md index 23914020027..49b8500cc4b 100644 --- a/wiki/typical-data-mining-scenarios.md +++ b/wiki/typical-data-mining-scenarios.md @@ -70,11 +70,40 @@ Note that the process described above is a very specific process to calculate ag ### Implement the Fact and the Data Retrieval -The concrete interfaces and classes that are needed to implement the Fact depend on what you want to analyze in the new data mining bundle. A good starting point is to think about the domain elements that contain the data you want to analyze, how to get the instances of these domain elements and whats the +The concrete interfaces and classes that are needed to implement the Fact depend on what you want to analyze in the new data mining bundle. A good starting point is to think about the domain elements that contain the data you want to analyze, how to get the instances of these domain elements. -### Implement your own Aggregators +* For example if you want to analyze the traveled distance and the speed of a competitor, the `TrackedLegOfCompetitor` would be the domain element of your choice. +* This class is located in the sailing domain, so the entrypoint to get instances would be the `RacingEventService`, which will be the Data Source. +* There are multiple ways to get `TrackedLegOfCompetitors` from the `RacingEventService`. + * For example `LeaderboardGroup` → `Leaderboard` → `RaceColumn` → `TrackedRace` → `TrackedLeg` → `TrackedLegOfCompetitor` + * Or `Regatta` → `Series` → `RaceColumn` → `TrackedRace` → `TrackedLeg` → `TrackedLegOfCompetitor` -It may be necessary, that your data mining bundle needs domain specific [aggregator](/wiki/data-mining-architecture#Aggregators). For example to compute the aggregations for domain specific statistics (like `Distance`), that can't be done by the domain independent aggregators (located in `com.sap.sse.datamining.impl.components.aggregators`). To do this perform the following steps: +But before the data retrieval is implemented, it's worth to have a more detailed look on the process that performs the retrieval. + + + +The data retrieval process can be separated in multiple levels. Each level is performed by its own Retriever that produces multiple intermediate elements from the the given element (Data Source or intermediate element) until the last retriever produces the Facts. After every Retriever is a Filter that has a Filter Criterion, which is used to check, if the given meets a condition. + +* The standard criterion that is used, checks if the dimensional value of the given element (provided via a Dimension) matches a specific value. +* For example if you want to analyze races of a specific regatta, but a retriever would provide races of many regattas the Filter can be used to exclude the unwanted races. +* Filter Criteria can also be defined in a more general way. See the [Data Mining Architecture](/wiki/data-mining-architecture#Filter-Criteria) for detailed information. + +Splitting the data retrieval into multiple levels provides several benefits for the whole data mining process: + +* The possibility to filter the elements after each retriever level improves the performance, because less elements have to be retrieved by the following Retrievers. +* It's possible to reuse Retrievers for the data retrieval process of other Facts. This reduces future implementation effort. + +To split the data retrieval in multiple levels, it is necessary to implement the corresponding intermediate elements. These elements are very similar to the Fact (there aren't any differences from an objective point of view) so it's possible to reuse these intermediate elements to implement new Facts. But in the context of defining a concrete new Fact, their types will be referred to as Intermediate Types to distinguish them from the Fact. + +How to implement a new Fact with supporting Intermediate Types will be described in the following section. + +#### Implement the Fact and the Intermediate Types + +#### Implement the Retrievers and put them together + +### Implement domain specific Aggregators + +It may be necessary, that your data mining bundle needs domain specific [aggregator](/wiki/data-mining-architecture#Aggregators). For example to compute the aggregations for domain specific Key Figures (like `Distance`), that can't be done by the domain independent aggregators (located in `com.sap.sse.datamining.impl.components.aggregators`). To do this perform the following steps: * Implement your own aggregator according to the advice in [Data Mining Architecture](/wiki/data-mining-architecture#Aggregators). * Provide a `AggregationProcessorDefinition` for the new aggregator in the corresponding method of the `DataMiningBundleService` of your data mining bundle. From 11d0a0391193b23ae20de7019977b5f17b8056af Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Fri, 25 Sep 2015 10:25:29 +0200 Subject: [PATCH 393/504] Updated the diagram for the example fact structure --- .../datamining/ExampleFactStructure.svg | 1852 ++++++++++------- 1 file changed, 1124 insertions(+), 728 deletions(-) diff --git a/wiki/images/datamining/ExampleFactStructure.svg b/wiki/images/datamining/ExampleFactStructure.svg index e54b1b346b4..b54398bf350 100644 --- a/wiki/images/datamining/ExampleFactStructure.svg +++ b/wiki/images/datamining/ExampleFactStructure.svg @@ -13,7 +13,7 @@ stroke="rgb(0,0,0)" text-rendering="auto" stroke-linecap="square" - width="768" + width="824" stroke-miterlimit="10" stroke-opacity="0" shape-rendering="auto" @@ -21,7 +21,7 @@ stroke-dasharray="none" font-weight="normal" stroke-width="1" - height="419" + height="605" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" @@ -30,10 +30,10 @@ image-rendering="auto" id="svg2" version="1.1" - inkscape:version="0.48.2 r9819" + inkscape:version="0.48.5 r10040" sodipodi:docname="ExampleFactStructure.svg"> + id="metadata615"> @@ -52,14 +52,14 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1858" - inkscape:window-height="1058" - id="namedview481" + inkscape:window-width="1920" + inkscape:window-height="1017" + id="namedview613" showgrid="false" - inkscape:zoom="1.2705825" - inkscape:cx="573.58638" - inkscape:cy="123.94788" - inkscape:window-x="54" + inkscape:zoom="1.1033203" + inkscape:cx="609.68877" + inkscape:cy="188.04161" + inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="svg2" /> @@ -73,14 +73,14 @@ clipPathUnits="userSpaceOnUse"> + d="M-7 -7 L206 -7 L206 610 L-7 610 L-7 -7 Z" /> + d="M0 0 L0 16 L195 16 L195 0 Z" /> + d="M-7 -7 L607 -7 L607 610 L-7 610 L-7 -7 Z" /> + d="M0 0 L0 16 L596 16 L596 0 Z" /> + d="M-7 -7 L234 -7 L234 67 L-7 67 L-7 -7 Z" /> + d="M0 0 L0 24 L223 24 L223 0 Z" /> + d="M-7 -7 L234 -7 L234 51 L-7 51 L-7 -7 Z" /> + d="M0 0 L0 8 L223 8 L223 0 Z" /> + d="M-7 -7 L234 -7 L234 131 L-7 131 L-7 -7 Z" /> + d="M0 0 L0 88 L223 88 L223 0 Z" /> + d="M-7 -7 L234 -7 L234 83 L-7 83 L-7 -7 Z" /> + d="M0 0 L0 40 L223 40 L223 0 Z" /> + d="M-7 -7 L234 -7 L234 99 L-7 99 L-7 -7 Z" /> + d="M0 0 L0 56 L223 56 L223 0 Z" /> + d="M-7 -7 L297 -7 L297 51 L-7 51 L-7 -7 Z" /> + d="M0 0 L0 24 L286 24 L286 0 Z" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + d="m 0,20 194,0 0,578 L 0,598 0,0 38,0 38,20" /> + d="m 184,25 -5,10 10,0 z" /> + transform="translate(20,51)"> + transform="translate(20,51)"> + transform="translate(20,51)"> <<Interface>> + transform="translate(20,142)"> + transform="translate(20,142)"> + transform="translate(20,142)"> <<Interface>> + transform="translate(20,281)"> + transform="translate(20,281)"> + transform="translate(20,281)"> <<Interface>> + transform="translate(224,2)"> + transform="translate(224,2)"> + d="m 0,20 595,0 0,578 -595,0 0,-598 119,0 0,20" /> + d="m 585,25 -5,10 10,0 z" /> + transform="translate(224,22)"> Data Mining Bundle + x="245">Data Mining Bundle + transform="translate(20,527)"> + transform="translate(20,527)"> + transform="translate(20,527)"> <<Interface>> + transform="translate(20,404)"> + transform="translate(20,404)"> + transform="translate(20,404)"> <<Interface>> + +getName() : String + + <<Interface>> + transform="translate(240,142)"> + transform="translate(240,142)"> + transform="translate(240,142)"> <<Interface>> + transform="translate(240,225)"> + transform="translate(240,225)"> + transform="translate(240,257)"> +getCourseArea() : CourseArea + + + +getBoatClass() : BoatClass + + + +getFleet() : Fleet + + + +getRace() : RaceDefinition + + + +getYear() : Integer + + + <<Interface>> - - - - - - - - <<Interface>> - HasTrackedLegContext - - - - - - - - - - <<Interface>> - HasTrackedLegOfCompetitorContext - - - - - - - - - - RegattaWithContext - - - - - - - - - - LeaderboardWithContext - - + transform="translate(239,388)"> + transform="translate(239,388)"> + y2="32" /> + transform="translate(239,420)"> +getLegType() : LegType + + + +getLegNumber() : int + + + TrackedRaceWithContext + x="73"><<Interface>> + HasTrackedLegContext - - - - - - - - TrackedLegWithContext - - + transform="translate(239,503)"> + transform="translate(239,503)"> + + + +getCompetitor() : Competitor + + + +getDistanceTraveled() : Distance + + + +getRankGainsOrLosses() : Double + + + <<Interface>> + HasTrackedLegOfCompetitorContext + + + + + + + - TrackedLegOfCompetitorWithContext - - - - - - - - - - - - - - - - - + transform="translate(518,59)"> + -regatta : Regatta - + - + id="text363" + clip-path="url(#clipPath21)" + y="13" + xml:space="preserve" + x="85">RegattaWithContext + + + + + + + + + + -regattaContext : HasRegattaContext + + + -leaderboard : Leaderboard + + + LeaderboardWithContext + + + + + + + + + + -leaderboardContext : HasLeaderboardContext + + + -fleet : Fleet + + + -trackedRace : TrackedRace + + + -year : Integer + + + TrackedRaceWithContext + + + + + + + + + + -trackedRaceContext : HasTrackedRaceContext + + + -trackedLeg : TrackedLeg + + + -legType : LegType + + + TrackedLegWithContext + + + + + + + + + + -trackedLegContext : HasTrackedLegContext + + + -trackedLegOfCompetitor : TrackedLegOfCompetit... + + + -competitor : Competitor + + + TrackedLegOfCompetitorWithContext - - - - - - - + clip-path="url(#clipPath28)" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + transform="translate(300,50)"> + transform="translate(300,133)"> + transform="translate(297,296)"> + transform="translate(297,411)"> + transform="translate(342,477)"> @Connector(scanForStatistics=false) + transform="translate(342,360)"> @Connector(scanForStatistics=false) + transform="translate(346,197)"> @Connector(scanForStatistics=false) + transform="translate(345,113)"> @Connector(scanForStatistics=false) From 4e279b673207c4f415977865b057ba17f33407ed Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Fri, 25 Sep 2015 10:43:04 +0200 Subject: [PATCH 394/504] The memory status is only logged, if a query is running --- .../components/management/QueryManagerMemoryMonitor.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/management/QueryManagerMemoryMonitor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/management/QueryManagerMemoryMonitor.java index 55a015775d3..f23f4c9f071 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/management/QueryManagerMemoryMonitor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/management/QueryManagerMemoryMonitor.java @@ -58,7 +58,10 @@ public class QueryManagerMemoryMonitor implements MemoryMonitor { final long totalMemory = infoProvider.totalMemory(); final double freeMemoryInPercent = (double) freeMemory / totalMemory; final int numberOfRunningQueries = queryManager.getNumberOfRunningQueries(); - logStatus(freeMemory, totalMemory, freeMemoryInPercent, numberOfRunningQueries); + + if (numberOfRunningQueries > 0) { + logStatus(freeMemory, totalMemory, freeMemoryInPercent, numberOfRunningQueries); + } boolean actionHasBeenPerformed = false; final Iterator actionsIterator = actions.iterator(); From 7f0b561d78792a1465e44d5f83077f34805bdef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Fri, 25 Sep 2015 11:28:52 +0200 Subject: [PATCH 395/504] Bug 1528 - Remove Depcreated Raclog Identifier --- .../persistence/impl/DomainObjectFactoryImpl.java | 14 -------------- .../abstractlog/race/SimpleRaceLogIdentifier.java | 2 -- .../race/impl/SimpleRaceLogIdentifierImpl.java | 9 --------- .../test/StoreAndLoadDeviceIdentifierTest.java | 1 - ...tStoringAndRetrievingRaceLogInLeaderboards.java | 4 ++-- .../TestStoringAndRetrievingRaceLogInRegatta.java | 4 ++-- 6 files changed, 4 insertions(+), 30 deletions(-) diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java index a4485602e8d..d132dd645c7 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java @@ -1258,20 +1258,6 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { BasicDBObject query = new BasicDBObject(); query.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(identifier.getIdentifier())); loadRaceLogEvents(result, query); - - // query for events with deprecated identifier format... - query.put(FieldNames.RACE_LOG_IDENTIFIER.name(), MongoUtils.escapeDollarAndDot(identifier.getDeprecatedIdentifier())); - - List eventsToMigrate = loadRaceLogEvents(result, query); - if (!eventsToMigrate.isEmpty()) { - // ... migrate them... - MongoRaceLogStoreVisitor storeVisitor = new MongoRaceLogStoreVisitor(identifier, new MongoObjectFactoryImpl(database, serviceFinderFactory)); - for (RaceLogEvent event : eventsToMigrate) { - event.accept(storeVisitor); - } - // ... and delete the old ones... - database.getCollection(CollectionNames.RACE_LOGS.name()).remove(query); - } } catch (Throwable t) { // something went wrong during DB access; report, then use empty new race log logger.log(Level.SEVERE, "Error connecting to MongoDB, unable to load recorded race log data. Check MongoDB settings."); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/SimpleRaceLogIdentifier.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/SimpleRaceLogIdentifier.java index 4e5d65e9f28..5dc573afaa4 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/SimpleRaceLogIdentifier.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/SimpleRaceLogIdentifier.java @@ -12,6 +12,4 @@ public interface SimpleRaceLogIdentifier extends Serializable { String getFleetName(); Triple getIdentifier(); - - String getDeprecatedIdentifier(); } \ No newline at end of file diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/SimpleRaceLogIdentifierImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/SimpleRaceLogIdentifierImpl.java index a5bcdd12c36..366ec5bd51c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/SimpleRaceLogIdentifierImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/SimpleRaceLogIdentifierImpl.java @@ -41,15 +41,6 @@ public class SimpleRaceLogIdentifierImpl implements SimpleRaceLogIdentifier { regattaLikeParentName, raceColumnName, fleetName); } - @Override - public String getDeprecatedIdentifier() { - return String.format("%s.%s.%s", - regattaLikeParentName, - raceColumnName, - fleetName); - } - - @Override public int hashCode() { final int prime = 31; diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadDeviceIdentifierTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadDeviceIdentifierTest.java index 89d38c56576..6929cd0e4ad 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadDeviceIdentifierTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadDeviceIdentifierTest.java @@ -64,7 +64,6 @@ public class StoreAndLoadDeviceIdentifierTest extends AbstractMongoDBTest { logIdentifier = mock(RaceLogIdentifier.class); com.sap.sse.common.Util.Triple triple = new com.sap.sse.common.Util.Triple("a", "b", UUID.randomUUID().toString()); when(logIdentifier.getIdentifier()).thenReturn(triple); - when(logIdentifier.getDeprecatedIdentifier()).thenReturn(""); } private RaceLog loadRaceLog() { diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInLeaderboards.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInLeaderboards.java index 8644fe893c8..2eefda7a85f 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInLeaderboards.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInLeaderboards.java @@ -61,7 +61,7 @@ import com.sap.sailing.domain.leaderboard.impl.ThresholdBasedResultDiscardingRul import com.sap.sailing.domain.persistence.PersistenceFactory; import com.sap.sailing.domain.persistence.impl.FieldNames; import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl; -import com.sap.sailing.domain.persistence.impl.MongoUtils; +import com.sap.sailing.domain.persistence.impl.TripleSerializer; import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sse.common.Color; import com.sap.sse.common.Duration; @@ -344,7 +344,7 @@ public class TestStoringAndRetrievingRaceLogInLeaderboards extends RaceLogMongoD result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogFinishPositioningConfirmedEvent.class.getSimpleName()); DBObject raceLogResult = new BasicDBObject(); - raceLogResult.put(FieldNames.RACE_LOG_IDENTIFIER.name(), MongoUtils.escapeDollarAndDot(raceColumn.getRaceLogIdentifier(defaultFleet).getDeprecatedIdentifier())); + raceLogResult.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceColumn.getRaceLogIdentifier(defaultFleet).getIdentifier())); raceLogResult.put(FieldNames.RACE_LOG_EVENT.name(), result); MongoObjectFactoryImpl factoryImpl = (MongoObjectFactoryImpl) mongoObjectFactory; diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInRegatta.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInRegatta.java index a849ca177c8..cd61dca59f0 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInRegatta.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingRaceLogInRegatta.java @@ -48,7 +48,7 @@ import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.persistence.impl.FieldNames; import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl; -import com.sap.sailing.domain.persistence.impl.MongoUtils; +import com.sap.sailing.domain.persistence.impl.TripleSerializer; import com.sap.sse.common.Color; import com.sap.sse.common.Util; import com.sap.sse.common.impl.MillisecondsTimePoint; @@ -285,7 +285,7 @@ public class TestStoringAndRetrievingRaceLogInRegatta extends AbstractTestStorin result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogFinishPositioningConfirmedEvent.class.getSimpleName()); DBObject raceLogResult = new BasicDBObject(); - raceLogResult.put(FieldNames.RACE_LOG_IDENTIFIER.name(), MongoUtils.escapeDollarAndDot(raceColumn.getRaceLogIdentifier(fleet).getDeprecatedIdentifier())); + raceLogResult.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceColumn.getRaceLogIdentifier(fleet).getIdentifier())); raceLogResult.put(FieldNames.RACE_LOG_EVENT.name(), result); MongoObjectFactoryImpl factoryImpl = (MongoObjectFactoryImpl) mongoObjectFactory; From 82bcf2b755653ed38b98e0114590108a805e3647 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Fri, 25 Sep 2015 14:23:22 +0200 Subject: [PATCH 396/504] Remove unused code, which fetches competitors only on RaceLogs --- .../ui/adminconsole/CompetitorTableWrapper.java | 10 +++------- ...ceLogTrackingCompetitorRegistrationsDialog.java | 2 +- .../sap/sailing/gwt/ui/client/SailingService.java | 11 +---------- .../sailing/gwt/ui/client/SailingServiceAsync.java | 2 +- .../sailing/gwt/ui/server/SailingServiceImpl.java | 14 +------------- 5 files changed, 7 insertions(+), 32 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java index 35387f78236..17a598fa13e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java @@ -224,20 +224,16 @@ public class CompetitorTableWrapper> ext } public void refreshCompetitorList(String leaderboardName) { - refreshCompetitorList(leaderboardName, false, null); - } - - public void refreshCompetitorList(String leaderboardName, boolean lookInRaceLogs) { - refreshCompetitorList(leaderboardName, lookInRaceLogs, null); + refreshCompetitorList(leaderboardName, null); } /** * @param leaderboardName If null, all existing competitors are loaded */ - public void refreshCompetitorList(String leaderboardName, boolean lookInRaceLogs, final Callback, + public void refreshCompetitorList(String leaderboardName, final Callback, Throwable> callback) { if(leaderboardName != null) { - sailingService.getCompetitorsOfLeaderboard(leaderboardName, lookInRaceLogs, new AsyncCallback>() { + sailingService.getCompetitorsOfLeaderboard(leaderboardName, new AsyncCallback>() { @Override public void onFailure(Throwable caught) { errorReporter.reportError("Remote Procedure Call getCompetitors() - Failure: " + caught.getMessage()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java index e8dd358326a..805e2715b4e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java @@ -143,7 +143,7 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi protected void refreshCompetitors() { registeredCompetitorsTable.getDataProvider().getList().clear(); - allCompetitorsTable.refreshCompetitorList(null, true, new Callback, Throwable>() { + allCompetitorsTable.refreshCompetitorList(null, new Callback, Throwable>() { @Override public void onSuccess(Iterable result) { center(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 109606b72ff..9b7f1719ad8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -10,9 +10,7 @@ import java.util.UUID; import com.google.gwt.user.client.rpc.RemoteService; import com.sap.sailing.domain.abstractlog.Revokable; -import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogDenoteForTrackingEvent; -import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.RemoteSailingServerReference; import com.sap.sailing.domain.common.DataImportProgress; import com.sap.sailing.domain.common.DetailType; @@ -410,14 +408,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS Iterable getCompetitors(); - /** - * - * @param leaderboardName - * @param lookInRaceLogs If set to {@code true}, the {@link RaceLog}s are checked for the competitor registrations. - * If set to {@code false}, the {@link RaceDefinition}s are checked instead. - * @return - */ - Iterable getCompetitorsOfLeaderboard(String leaderboardName, boolean lookInRaceLogs); + Iterable getCompetitorsOfLeaderboard(String leaderboardName); CompetitorDTO addOrUpdateCompetitor(CompetitorDTO competitor) throws Exception; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index e0ca83cb0c6..927c6134b14 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -526,7 +526,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void getCompetitors(AsyncCallback> asyncCallback); - void getCompetitorsOfLeaderboard(String leaderboardName, boolean lookInRaceLogs, + void getCompetitorsOfLeaderboard(String leaderboardName, AsyncCallback> asyncCallback); void addOrUpdateCompetitor(CompetitorDTO competitor, AsyncCallback asyncCallback); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 5d37a081c30..3f458aa7598 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -4499,21 +4499,9 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public Iterable getCompetitorsOfLeaderboard(String leaderboardName, boolean lookInRaceLogs) { - if (lookInRaceLogs) { - Set result = new HashSet(); - Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName); - for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { - for (Fleet fleet : raceColumn.getFleets()) { - RaceLog raceLog = raceColumn.getRaceLog(fleet); - result.addAll(new RegisteredCompetitorsAnalyzer<>(raceLog).analyze()); - } - } - return convertToCompetitorDTOs(result); - } else { + public Iterable getCompetitorsOfLeaderboard(String leaderboardName) { Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName); return convertToCompetitorDTOs(leaderboard.getAllCompetitors()); - } } @Override From a02be9adc57e623e68694de64d952e2a9b088c8e Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Fri, 25 Sep 2015 14:52:25 +0200 Subject: [PATCH 397/504] Fixed bug 3286 existing regatta and race logs for imported races are now cleared if override flag is set. If override is not set and the log is not empty, the imported log will not be applied. --- .../ImportMasterDataOperation.java | 80 ++++++++++++------- 1 file changed, 53 insertions(+), 27 deletions(-) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java index 86872dc0615..533a37782af 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java @@ -249,8 +249,8 @@ public class ImportMasterDataOperation extends } if (leaderboard != null) { toState.addLeaderboard(leaderboard); - storeRaceLogEvents(leaderboard, toState.getMongoObjectFactory(), toState.getDomainObjectFactory()); - storeRegattaLogEvents(leaderboard, toState.getMongoObjectFactory(), toState.getDomainObjectFactory()); + storeRaceLogEvents(leaderboard, toState.getMongoObjectFactory(), toState.getDomainObjectFactory(), override); + storeRegattaLogEvents(leaderboard, toState.getMongoObjectFactory(), toState.getDomainObjectFactory(), override); creationCount.addOneLeaderboard(leaderboard.getName()); relinkTrackedRacesIfPossible(toState, leaderboard); toState.updateStoredLeaderboard(leaderboard); @@ -275,33 +275,46 @@ public class ImportMasterDataOperation extends } /** - * Ensures that the race log events are stored to the receiving instance's database. The race logs have been received - * in serialized form on the {@link RaceColumn} objects, but the database doesn't yet know about them. This method uses - * a MongoRaceLogStoreVisitor to store all race log events to the database. + * Ensures that the race log events are stored to the receiving instance's database. The race logs have been + * received in serialized form on the {@link RaceColumn} objects, but the database doesn't yet know about them. This + * method uses a MongoRaceLogStoreVisitor to store all race log events to the database. */ - private void storeRaceLogEvents(Leaderboard leaderboard, MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory) { - RaceLogStore mongoRaceLogStore = MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory); + private void storeRaceLogEvents(Leaderboard leaderboard, MongoObjectFactory mongoObjectFactory, + DomainObjectFactory domainObjectFactory, boolean override) { + RaceLogStore mongoRaceLogStore = MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, + domainObjectFactory); for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { for (Fleet fleet : raceColumn.getFleets()) { RaceLog log = raceColumn.getRaceLog(fleet); if (log != null) { RaceLogIdentifier identifier = raceColumn.getRaceLogIdentifier(fleet); - RaceLogEventVisitor storeVisitor = MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStoreVisitor( - identifier, mongoObjectFactory); - log.lockForRead(); - try { - for (RaceLogEvent event : log.getRawFixes()) { - event.accept(storeVisitor); - } - } finally { - log.unlockAfterRead(); + RaceLog currentPersistedLog = mongoRaceLogStore.getRaceLog(identifier, true); + if (currentPersistedLog.isEmpty()) { + addAllmportedEvents(mongoObjectFactory, mongoRaceLogStore, log, identifier); + } else if (override) { + // Clear existing race log + mongoRaceLogStore.removeRaceLog(identifier); + addAllmportedEvents(mongoObjectFactory, mongoRaceLogStore, log, identifier); } - // Make sure listener is added to race log - mongoRaceLogStore.addImportedRaceLog(log, identifier); } } } + } + private void addAllmportedEvents(MongoObjectFactory mongoObjectFactory, RaceLogStore mongoRaceLogStore, + RaceLog log, RaceLogIdentifier identifier) { + RaceLogEventVisitor storeVisitor = MongoRaceLogStoreFactory.INSTANCE + .getMongoRaceLogStoreVisitor(identifier, mongoObjectFactory); + log.lockForRead(); + try { + for (RaceLogEvent event : log.getRawFixes()) { + event.accept(storeVisitor); + } + } finally { + log.unlockAfterRead(); + } + // Make sure listener is added to race log + mongoRaceLogStore.addImportedRaceLog(log, identifier); } /** @@ -309,7 +322,8 @@ public class ImportMasterDataOperation extends * potentially {@link HasRegattaLike has} an attached RegattaLog, which then must be stored in the database. * @see #storeRaceLogEvents(Leaderboard, MongoObjectFactory) */ - private void storeRegattaLogEvents(Leaderboard leaderboard, MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory) { + private void storeRegattaLogEvents(Leaderboard leaderboard, MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory, + boolean override) { RegattaLogStore regattaLogStore = MongoRegattaLogStoreFactory.INSTANCE.getMongoRegattaLogStore(mongoObjectFactory, domainObjectFactory); if (leaderboard instanceof HasRegattaLike) { IsRegattaLike regattaLike = ((HasRegattaLike) leaderboard).getRegattaLike(); @@ -317,18 +331,30 @@ public class ImportMasterDataOperation extends RegattaLikeIdentifier identifier = regattaLike.getRegattaLikeIdentifier(); RegattaLogEventVisitor storeVisitor = MongoRegattaLogStoreFactory.INSTANCE.getMongoRegattaLogStoreVisitor( identifier, mongoObjectFactory); - log.lockForRead(); - try { - for (RegattaLogEvent event : log.getRawFixes()) { - event.accept(storeVisitor); - } - } finally { - log.unlockAfterRead(); + RegattaLog currentPersistedLog = regattaLogStore.getRegattaLog(identifier, true); + if (currentPersistedLog.isEmpty()) { + addAllImportedRegattaEvents(regattaLogStore, log, identifier, storeVisitor); + } else if (override) { + //Clear existing regatta log + regattaLogStore.removeRegattaLog(identifier); + addAllImportedRegattaEvents(regattaLogStore, log, identifier, storeVisitor); } - regattaLogStore.addImportedRegattaLog(log, identifier); } } + private void addAllImportedRegattaEvents(RegattaLogStore regattaLogStore, RegattaLog log, + RegattaLikeIdentifier identifier, RegattaLogEventVisitor storeVisitor) { + log.lockForRead(); + try { + for (RegattaLogEvent event : log.getRawFixes()) { + event.accept(storeVisitor); + } + } finally { + log.unlockAfterRead(); + } + regattaLogStore.addImportedRegattaLog(log, identifier); + } + private void relinkTrackedRacesIfPossible(RacingEventService toState, Leaderboard newLeaderboard) { if (newLeaderboard instanceof FlexibleLeaderboard) { for (RaceColumn raceColumn : newLeaderboard.getRaceColumns()) { From cf7190f33cc70dd4d987df4155aa70b51427c383 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Fri, 25 Sep 2015 14:53:00 +0200 Subject: [PATCH 398/504] Rename getters for competitor registration to clarify behavior --- .../ui/adminconsole/AddDeviceMappingToRaceLogDialog.java | 2 +- .../adminconsole/AddDeviceMappingToRegattaLogDialog.java | 2 +- .../ui/adminconsole/ImportFixesAndAddMappingsDialog.java | 2 +- .../adminconsole/RaceLogTrackingEventManagementPanel.java | 4 ++-- .../com/sap/sailing/gwt/ui/client/SailingService.java | 8 ++++---- .../sap/sailing/gwt/ui/client/SailingServiceAsync.java | 4 ++-- .../com/sap/sailing/gwt/ui/server/SailingServiceImpl.java | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRaceLogDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRaceLogDialog.java index 397a8bfd18b..1efd6427091 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRaceLogDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRaceLogDialog.java @@ -124,7 +124,7 @@ public class AddDeviceMappingToRaceLogDialog extends DataEntryDialog>() { + sailingService.getCompetitorRegistrationsOnRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { @Override public void onSuccess(Collection result) { competitorTable.refreshCompetitorList(result); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java index a3b76983a3f..fd8d3741607 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java @@ -129,7 +129,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf @Override public void getRegisteredCompetitors( final Callback, Throwable> callback) { - sailingService.getCompetitorRegistrations(leaderboardName, + sailingService.getCompetitorRegistrationsOnRegattaLog(leaderboardName, new AsyncCallback>() { @Override public void onSuccess(Collection result) { @@ -212,7 +212,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf @Override public void getRegisteredCompetitors( final Callback, Throwable> callback) { - sailingService.getCompetitorRegistrations(leaderboardName, raceColumnName, + sailingService.getCompetitorRegistrationsOnRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { @Override public void onSuccess(Collection result) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 9b7f1719ad8..003fe1b3cc8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -461,15 +461,15 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS /** * Get the competitors registered in this racelog. Does not automatically include the competitors - * {@link #getCompetitorRegistrations(String) registered for the leaderboard}. + * {@link #getCompetitorRegistrationsOnRaceLog(String) registered for the leaderboard}. */ - Collection getCompetitorRegistrations(String leaderboardName, String raceColumnName, String fleetName); + Collection getCompetitorRegistrationsOnRaceLog(String leaderboardName, String raceColumnName, String fleetName); /** * Get the competitors registered in this leaderboard. Does not automatically include the competitors - * {@link #getCompetitorRegistrations(String, String, String) registered for the racelog}. + * {@link #getCompetitorRegistrationsOnRegattaLog(String, String, String) registered for the racelog}. */ - Collection getCompetitorRegistrations(String leaderboardName) throws DoesNotHaveRegattaLogException; + Collection getCompetitorRegistrationsOnRegattaLog(String leaderboardName) throws DoesNotHaveRegattaLogException; void addMarkToRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index 927c6134b14..d04cb36d217 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -591,7 +591,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void setCompetitorRegistrations(String leaderboardName,Set competitors, AsyncCallback callback); - void getCompetitorRegistrations(String leaderboardName, String raceColumnName, String fleetName, + void getCompetitorRegistrationsOnRaceLog(String leaderboardName, String raceColumnName, String fleetName, AsyncCallback> callback); void addMarkToRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO, @@ -671,7 +671,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void setStartTimeReceivedForRace(RaceIdentifier raceIdentifier, Date newStartTimeReceived, AsyncCallback callback); - void getCompetitorRegistrations(String leaderboardName, AsyncCallback> callback); + void getCompetitorRegistrationsOnRegattaLog(String leaderboardName, AsyncCallback> callback); void createXYDiagramForBoatClass(String itemText, AsyncCallback asyncCallback); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 3f458aa7598..ef0827694fe 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -4907,14 +4907,14 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public Collection getCompetitorRegistrations(String leaderboardName, String raceColumnName, String fleetName) { + public Collection getCompetitorRegistrationsOnRaceLog(String leaderboardName, String raceColumnName, String fleetName) { return convertToCompetitorDTOs( new RegisteredCompetitorsAnalyzer<>( getRaceLog(leaderboardName, raceColumnName, fleetName)).analyze()); } @Override - public Collection getCompetitorRegistrations(String leaderboardName) + public Collection getCompetitorRegistrationsOnRegattaLog(String leaderboardName) throws DoesNotHaveRegattaLogException { return convertToCompetitorDTOs( new RegisteredCompetitorsAnalyzer<>( From 840d6ca61316f8867f799a927d36c45dd3fe5f4c Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Fri, 25 Sep 2015 14:57:19 +0200 Subject: [PATCH 399/504] Reload racelogs after master data import --- .../operationaltransformation/ImportMasterDataOperation.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java index 533a37782af..7f063b7418e 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java @@ -297,6 +297,7 @@ public class ImportMasterDataOperation extends addAllmportedEvents(mongoObjectFactory, mongoRaceLogStore, log, identifier); } } + raceColumn.reloadRaceLog(fleet); } } } From b37960142b7cc60e4cfd82adfed9f291ee456515 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Fri, 25 Sep 2015 15:00:40 +0200 Subject: [PATCH 400/504] Revert last commit --- .../operationaltransformation/ImportMasterDataOperation.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java index 7f063b7418e..533a37782af 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java @@ -297,7 +297,6 @@ public class ImportMasterDataOperation extends addAllmportedEvents(mongoObjectFactory, mongoRaceLogStore, log, identifier); } } - raceColumn.reloadRaceLog(fleet); } } } From 3eae897e7f541f254bbd4ecdcc342584169c2e87 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 25 Sep 2015 15:13:41 +0200 Subject: [PATCH 401/504] improved performance of RaceRankComparator; see also bug 3296; still more work required --- .../impl/AbstractRaceRankComparator.java | 8 +++++++ .../tracking/impl/RaceRankComparator.java | 21 +++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceRankComparator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceRankComparator.java index 4a0aebe880d..a3fc907c059 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceRankComparator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/AbstractRaceRankComparator.java @@ -57,6 +57,14 @@ public abstract class AbstractRaceRankComparator> implem this.lessIsBetter = lessIsBetter; } + protected TimePoint getTimePoint() { + return timePoint; + } + + protected TrackedRace getTrackedRace() { + return trackedRace; + } + @Override public int compare(Competitor o1, Competitor o2) { int result; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/RaceRankComparator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/RaceRankComparator.java index 56f6202c8d8..4fca6e8dc46 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/RaceRankComparator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/RaceRankComparator.java @@ -39,21 +39,24 @@ import com.sap.sse.common.TimePoint; */ public class RaceRankComparator extends AbstractRaceRankComparator { private final Map windwardDistanceToGoInLegCache; + private final WindLegTypeAndLegBearingCache cache; public RaceRankComparator(TrackedRace trackedRace, TimePoint timePoint, WindLegTypeAndLegBearingCache cache) { super(trackedRace, timePoint, /* lessIsBetter */ true); + this.cache = cache; this.windwardDistanceToGoInLegCache = new HashMap(); - for (Competitor competitor : trackedRace.getRace().getCompetitors()) { - final TrackedLegOfCompetitor trackedLegOfCompetitor = trackedRace.getTrackedLeg(competitor, timePoint); - if (trackedLegOfCompetitor != null) { - windwardDistanceToGoInLegCache.put(competitor, trackedLegOfCompetitor.getWindwardDistanceToGo(timePoint, - WindPositionMode.LEG_MIDDLE, cache)); - } - } } @Override - protected Distance getComparisonValueForSameLeg(Competitor o1) { - return windwardDistanceToGoInLegCache.get(o1); + protected Distance getComparisonValueForSameLeg(Competitor competitor) { + Distance result = windwardDistanceToGoInLegCache.get(competitor); + if (result == null) { + final TrackedLegOfCompetitor trackedLegOfCompetitor = getTrackedRace().getTrackedLeg(competitor, getTimePoint()); + if (trackedLegOfCompetitor != null) { + result = trackedLegOfCompetitor.getWindwardDistanceToGo(getTimePoint(), WindPositionMode.LEG_MIDDLE, cache); + windwardDistanceToGoInLegCache.put(competitor, result); + } + } + return result; } } From 760b6a248e7defab0869287eea94a6e8f2b88c36 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 25 Sep 2015 15:19:59 +0200 Subject: [PATCH 402/504] use array instead of Set for result receiver collection for faster iteration --- .../components/TestDataRetrieverChainCreation.java | 7 +++---- .../impl/components/AbstractParallelProcessor.java | 10 +++++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestDataRetrieverChainCreation.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestDataRetrieverChainCreation.java index 8eae2018411..da6730e4b82 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestDataRetrieverChainCreation.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/TestDataRetrieverChainCreation.java @@ -12,7 +12,6 @@ import java.util.List; import org.junit.Before; import org.junit.Test; -import com.sap.sse.common.Util; import com.sap.sse.common.settings.SerializableSettings; import com.sap.sse.datamining.components.DataRetrieverChainBuilder; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; @@ -291,9 +290,9 @@ public class TestDataRetrieverChainCreation { } private Test_RetrievalProcessorWithSettings getLastRetriever(Processor, ?> firstRetriever) { - TestRaceWithContextRetrievalProcessor raceRetriever = (TestRaceWithContextRetrievalProcessor) Util.get(((TestRegattaRetrievalProcessor) firstRetriever).getResultReceivers(), 0); - TestLegOfCompetitorWithContextRetrievalProcessor legRetriever = (TestLegOfCompetitorWithContextRetrievalProcessor) Util.get(raceRetriever.getResultReceivers(), 0); - Test_RetrievalProcessorWithSettings lastRetriever = (Test_RetrievalProcessorWithSettings) Util.get(legRetriever.getResultReceivers(), 0); + TestRaceWithContextRetrievalProcessor raceRetriever = (TestRaceWithContextRetrievalProcessor) ((TestRegattaRetrievalProcessor) firstRetriever).getResultReceivers()[0]; + TestLegOfCompetitorWithContextRetrievalProcessor legRetriever = (TestLegOfCompetitorWithContextRetrievalProcessor) raceRetriever.getResultReceivers()[0]; + Test_RetrievalProcessorWithSettings lastRetriever = (Test_RetrievalProcessorWithSettings) legRetriever.getResultReceivers()[0]; return lastRetriever; } diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java index bdef6e50e63..8098ad85580 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelProcessor.java @@ -1,8 +1,6 @@ package com.sap.sse.datamining.impl.components; import java.util.Collection; -import java.util.HashSet; -import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.atomic.AtomicInteger; @@ -20,7 +18,7 @@ public abstract class AbstractParallelProcessor extends A private static final Logger LOGGER = Logger.getLogger(AbstractParallelProcessor.class.getName()); private static final int SLEEP_TIME_DURING_FINISHING = 100; - private final Set> resultReceivers; + private final Processor[] resultReceivers; private final ExecutorService executor; private final AtomicInteger unfinishedInstructionsCounter; @@ -30,7 +28,9 @@ public abstract class AbstractParallelProcessor extends A public AbstractParallelProcessor(Class inputType, Class resultType, ExecutorService executor, Collection> resultReceivers) { super(inputType, resultType); this.executor = executor; - this.resultReceivers = new HashSet>(resultReceivers); + @SuppressWarnings("unchecked") + final Processor[] resultReceiversAsArray = (Processor[]) new Processor[resultReceivers.size()]; + this.resultReceivers = resultReceivers.toArray(resultReceiversAsArray); unfinishedInstructionsCounter = new AtomicInteger(); } @@ -74,7 +74,7 @@ public abstract class AbstractParallelProcessor extends A unfinishedInstructionsCounter.getAndDecrement(); } - protected Iterable> getResultReceivers() { + protected Processor[] getResultReceivers() { return resultReceivers; } From 619fda4ebb4ba4f787fc18e78a698a88b2155af6 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 25 Sep 2015 15:20:51 +0200 Subject: [PATCH 403/504] use synchronization instead of ReentrantLock for writer-only synchronization in aggregator --- .../AbstractParallelAggregationProcessor.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java index e7143551ace..6f2ca24cfc1 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/AbstractParallelAggregationProcessor.java @@ -2,8 +2,6 @@ package com.sap.sse.datamining.impl.components.aggregators; import java.util.Collection; import java.util.concurrent.ExecutorService; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; import com.sap.sse.datamining.components.AdditionalResultDataBuilder; import com.sap.sse.datamining.components.Processor; @@ -15,7 +13,7 @@ public abstract class AbstractParallelAggregationProcessor { private final String aggregationNameMessageKey; - private final Lock lock; + private final Object monitor; public AbstractParallelAggregationProcessor(Class inputType, Class resultType, @@ -24,7 +22,7 @@ public abstract class AbstractParallelAggregationProcessor(this, ProcessorInstructionPriority.Aggregation) { @Override public AggregatedType computeResult() { - lock.lock(); - try { + synchronized (monitor) { handleElement(element); - } finally { - lock.unlock(); } return AbstractParallelAggregationProcessor.super.createInvalidResult(); } From 6626b6a6d9727d6cdb4a4acb03a1913cfa0e7eba Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 25 Sep 2015 15:10:14 +0200 Subject: [PATCH 404/504] fixed pom.xml of com.sap.sse.datamining.test to use eclipse-*test*-plugin as packaging type --- java/com.sap.sse.datamining.test/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.datamining.test/pom.xml b/java/com.sap.sse.datamining.test/pom.xml index 1cade4b0a7c..d40b5ff5dc6 100644 --- a/java/com.sap.sse.datamining.test/pom.xml +++ b/java/com.sap.sse.datamining.test/pom.xml @@ -9,5 +9,5 @@ 1.0.0-SNAPSHOT com.sap.sse.datamining.test - eclipse-plugin + eclipse-test-plugin From 870294fbc3945989c40fc661aa11820df5a33d5d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 25 Sep 2015 15:04:27 +0200 Subject: [PATCH 405/504] fixed datamining test --- ...bstractParallelMultiDimensionalNestingGroupingProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java index 50b1e3e03a3..08d905ee7e4 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/AbstractParallelMultiDimensionalNestingGroupingProcessor.java @@ -34,7 +34,7 @@ public abstract class AbstractParallelMultiDimensionalNestingGroupingProcessor> parameterizedDimensions) { if (parameterizedDimensions == null) { - throw new NullPointerException("The given dimensions mustn't be null."); + throw new IllegalArgumentException("The given dimensions mustn't be null."); } int size = 0; From 2588c98682f14f16ef9c5282dc63c46ee21720a7 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 25 Sep 2015 15:22:48 +0200 Subject: [PATCH 406/504] use limited-size queue and execute data mining instructions in same thread when executor queue is full --- .../datamining/impl/DataMiningExecutorService.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningExecutorService.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningExecutorService.java index 860009ee402..e1e65619bbb 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningExecutorService.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/DataMiningExecutorService.java @@ -1,13 +1,19 @@ package com.sap.sse.datamining.impl; -import java.util.concurrent.PriorityBlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class DataMiningExecutorService extends ThreadPoolExecutor { - public DataMiningExecutorService(int corePoolSize) { - super(corePoolSize, corePoolSize, 60, TimeUnit.SECONDS, new PriorityBlockingQueue()); + super(corePoolSize, corePoolSize, 60, TimeUnit.SECONDS, new LinkedBlockingQueue(corePoolSize), + new RejectedExecutionHandler() { + @Override + public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { + r.run(); + } + }); } } From 12d2dee2eff78a60704692d3c7d0bf5b54c2ffdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Fri, 25 Sep 2015 15:32:36 +0200 Subject: [PATCH 407/504] Allow to edit competitors in RaceLogTracking AdminConsole --- ...TrackingCompetitorRegistrationsDialog.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java index 805e2715b4e..71c5a85282f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java @@ -56,7 +56,17 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi openAddCompetitorDialog(); } }); + + Button editCompetitorButton = new Button(stringMessages.edit(stringMessages.competitor())); + editCompetitorButton.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + openEditCompetitorDialog(); + } + }); + buttonPanel.add(addCompetitorButton); + buttonPanel.add(editCompetitorButton); super.addButtons(buttonPanel); } @@ -139,6 +149,39 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi } }).show(); } + + private void openEditCompetitorDialog() { + //get currently selected competitor + if (registeredCompetitorsTable.getSelectionModel().getSelectedSet().size() != 1){ + // show some warning + } else { + final CompetitorDTO competitorToEdit = registeredCompetitorsTable.getSelectionModel().getSelectedSet().iterator().next(); + new CompetitorEditDialog(stringMessages, competitorToEdit, + new DataEntryDialog.DialogCallback() { + @Override + public void ok(CompetitorDTO competitor) { + sailingService.addOrUpdateCompetitor(competitor, new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Error trying to add competitor: " + caught.getMessage()); + } + + @Override + public void onSuccess(CompetitorDTO updatedCompetitor) { + int editedCompetitorIndex = registeredCompetitorsTable.getDataProvider().getList().indexOf(competitorToEdit); + registeredCompetitorsTable.getDataProvider().getList().remove(competitorToEdit); + registeredCompetitorsTable.getDataProvider().getList().add(editedCompetitorIndex, updatedCompetitor); + registeredCompetitorsTable.getDataProvider().refresh(); + } + }); + } + + @Override + public void cancel() { + } + }).show(); + } + } protected void refreshCompetitors() { registeredCompetitorsTable.getDataProvider().getList().clear(); From d0d62734cff1a0310a687d247a378e6a7036dfa5 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 25 Sep 2015 15:38:10 +0200 Subject: [PATCH 408/504] use IntHolder and DoubleHolder to avoid excessive Map inserts in aggregator --- ...NumberDataAverageAggregationProcessor.java | 45 ++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedNumberDataAverageAggregationProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedNumberDataAverageAggregationProcessor.java index 9ddf94e65e2..01a1f697f7c 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedNumberDataAverageAggregationProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedNumberDataAverageAggregationProcessor.java @@ -14,6 +14,23 @@ import com.sap.sse.datamining.shared.GroupKey; public class ParallelGroupedNumberDataAverageAggregationProcessor extends AbstractParallelGroupedDataStoringAggregationProcessor { + private static class IntHolder { + public int value; + + public IntHolder(int value) { + super(); + this.value = value; + } + } + + private static class DoubleHolder { + public double value; + + public DoubleHolder(double value) { + super(); + this.value = value; + } + } private static final AggregationProcessorDefinition DEFINITION = new SimpleAggregationProcessorDefinition<>(Number.class, Number.class, "Average", ParallelGroupedNumberDataAverageAggregationProcessor.class); @@ -22,38 +39,44 @@ public class ParallelGroupedNumberDataAverageAggregationProcessor return DEFINITION; } - private final ParallelGroupedNumberDataSumAggregationProcessor sumAggregationProcessor; - private final Map elementAmountPerKey; + private final Map sumPerKey; + private final Map elementAmountPerKey; public ParallelGroupedNumberDataAverageAggregationProcessor(ExecutorService executor, Collection, ?>> resultReceivers) { super(executor, resultReceivers, "Average"); elementAmountPerKey = new HashMap<>(); - sumAggregationProcessor = new ParallelGroupedNumberDataSumAggregationProcessor(executor, resultReceivers); + sumPerKey = new HashMap<>(); } @Override protected void storeElement(GroupedDataEntry element) { incrementElementAmount(element); - sumAggregationProcessor.handleElement(element); + DoubleHolder aggregate = sumPerKey.get(element.getKey()); + if (aggregate == null) { + aggregate = new DoubleHolder(element.getDataEntry().doubleValue()); + sumPerKey.put(element.getKey(), aggregate); + } else { + aggregate.value += element.getDataEntry().doubleValue(); + } } private void incrementElementAmount(GroupedDataEntry element) { GroupKey key = element.getKey(); - if (!elementAmountPerKey.containsKey(key)) { - elementAmountPerKey.put(key, 0); + IntHolder currentAmount = elementAmountPerKey.get(key); + if (currentAmount == null) { + elementAmountPerKey.put(key, new IntHolder(1)); + } else { + currentAmount.value++; } - Integer currentAmount = elementAmountPerKey.get(key); - elementAmountPerKey.put(key, currentAmount + 1); } @Override protected Map aggregateResult() { Map result = new HashMap<>(); - Map sumAggregation = sumAggregationProcessor.getResult(); - for (Entry sumAggregationEntry : sumAggregation.entrySet()) { + for (Entry sumAggregationEntry : sumPerKey.entrySet()) { GroupKey key = sumAggregationEntry.getKey(); - result.put(key, sumAggregationEntry.getValue().doubleValue() / elementAmountPerKey.get(key).doubleValue()); + result.put(key, sumAggregationEntry.getValue().value / elementAmountPerKey.get(key).value); } return result; } From b8d9316036b9cbbfc23d309bacca8219be0aa543 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Fri, 25 Sep 2015 15:42:32 +0200 Subject: [PATCH 409/504] Fixed race log overwrite for master data import connected to bug 3286 --- .../com/sap/sailing/domain/base/impl/AbstractRaceColumn.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java index ae4152f9869..0326029e140 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java @@ -42,9 +42,6 @@ public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implem public synchronized void setRaceLogInformation(RaceLogStore raceLogStore, RegattaLikeIdentifier regattaLikeParent) { this.raceLogStore = raceLogStore; this.regattaLikeParent = regattaLikeParent; - for (final Fleet fleet : getFleets()) { - reloadRaceLog(fleet); - } } @Override From f12cb52ce79d9b5ae2f429520a659626fc433fb1 Mon Sep 17 00:00:00 2001 From: Frederik Petersen Date: Fri, 25 Sep 2015 15:49:44 +0200 Subject: [PATCH 410/504] Reverted last commit --- .../com/sap/sailing/domain/base/impl/AbstractRaceColumn.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java index 0326029e140..1c5e11ac162 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java @@ -42,6 +42,9 @@ public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implem public synchronized void setRaceLogInformation(RaceLogStore raceLogStore, RegattaLikeIdentifier regattaLikeParent) { this.raceLogStore = raceLogStore; this.regattaLikeParent = regattaLikeParent; + for (final Fleet fleet : getFleets()) { + reloadRaceLog(fleet); + } } @Override From c47d9860b5b5386988c0b596d732e4b14fb78809 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 25 Sep 2015 16:31:16 +0200 Subject: [PATCH 411/504] removed Unit concept from data mining --- .../data/HasRaceOfCompetitorContext.java | 3 +-- .../HasTrackedLegOfCompetitorContext.java | 3 +-- .../com/sap/sailing/domain/common/Speed.java | 3 +-- .../datamining/presentation/ResultsChart.java | 3 +-- .../META-INF/MANIFEST.MF | 3 +-- .../sse/datamining/annotations/Statistic.java | 7 ----- .../sse/datamining/annotations/data/Unit.java | 14 ---------- .../shared/AdditionalResultData.java | 5 ---- .../datamining/shared/QueryResultBase.java | 3 --- .../SSEDataMiningSerializationDummy.java | 4 --- .../shared/impl/AdditionalResultDataImpl.java | 27 +++++-------------- .../shared/impl/NullAdditionalResultData.java | 11 -------- .../shared/impl/QueryResultBaseImpl.java | 11 -------- .../datamining/impl/TestStatisticQuery.java | 4 +-- .../impl/functions/TestCompoundFunction.java | 2 -- .../test/data/impl/DataTypeInterface.java | 3 +-- .../sse/datamining/test/domain/Test_Leg.java | 3 +-- .../AdditionalResultDataBuilder.java | 7 +++-- .../sse/datamining/functions/Function.java | 3 --- .../OverwritingResultDataBuilder.java | 21 +-------------- ...lGroupedDataCountAggregationProcessor.java | 2 -- .../AdditionalMethodWrappingFunctionData.java | 9 +------ .../ConcatenatingCompoundFunction.java | 9 ------- .../functions/MethodWrappingFunction.java | 27 ++++--------------- 24 files changed, 24 insertions(+), 163 deletions(-) delete mode 100644 java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/data/Unit.java diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java index 43e7c6b54f0..b73d7fab06f 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasRaceOfCompetitorContext.java @@ -5,7 +5,6 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.Speed; import com.sap.sse.datamining.annotations.Connector; import com.sap.sse.datamining.annotations.Statistic; -import com.sap.sse.datamining.annotations.data.Unit; public interface HasRaceOfCompetitorContext { @@ -15,7 +14,7 @@ public interface HasRaceOfCompetitorContext { @Connector(messageKey="Competitor") public Competitor getCompetitor(); - @Statistic(messageKey="DistanceAtStart", resultUnit=Unit.None, resultDecimals=2, ordinal=0) + @Statistic(messageKey="DistanceAtStart", resultDecimals=2, ordinal=0) public Distance getDistanceToStartLineAtStart(); @Statistic(messageKey="DistanceToStarboardSideAtStart", resultDecimals=2, ordinal=1) diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitorContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitorContext.java index b72588dd537..c863c6bb2f7 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitorContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedLegOfCompetitorContext.java @@ -5,7 +5,6 @@ import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sse.datamining.annotations.Connector; import com.sap.sse.datamining.annotations.Statistic; -import com.sap.sse.datamining.annotations.data.Unit; public interface HasTrackedLegOfCompetitorContext { @@ -17,7 +16,7 @@ public interface HasTrackedLegOfCompetitorContext { @Connector(messageKey="Competitor") public Competitor getCompetitor(); - @Statistic(messageKey="DistanceTraveled", resultUnit=Unit.None, resultDecimals=0, ordinal=0) + @Statistic(messageKey="DistanceTraveled", resultDecimals=0, ordinal=0) public Distance getDistanceTraveled(); @Statistic(messageKey="RankGainsOrLosses", resultDecimals=2, ordinal=1) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java index 528d4462725..50ab82ccfd3 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/Speed.java @@ -5,7 +5,6 @@ import java.io.Serializable; import com.sap.sse.common.Duration; import com.sap.sse.common.TimePoint; import com.sap.sse.datamining.annotations.Statistic; -import com.sap.sse.datamining.annotations.data.Unit; /** * A speed, convertible in various units of measure. Can be negative. @@ -63,7 +62,7 @@ public interface Speed extends Comparable, Serializable { } }; - @Statistic(messageKey="", resultDecimals=2, resultUnit=Unit.Knots) + @Statistic(messageKey="", resultDecimals=2) double getKnots(); double getMetersPerSecond(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/ResultsChart.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/ResultsChart.java index d9512c56a31..71a02206cbc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/ResultsChart.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/datamining/presentation/ResultsChart.java @@ -186,8 +186,7 @@ public class ResultsChart extends AbstractResultsPresenterWithDataProviders @@ -45,11 +43,6 @@ public @interface Statistic { */ public int ordinal() default Integer.MAX_VALUE; - /** - * The {@link Unit} of the methods return value. The default value is {@link Unit#None}. - */ - public Unit resultUnit() default Unit.None; - /** * The number of decimals of the methods return value. The default value is 0. */ diff --git a/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/data/Unit.java b/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/data/Unit.java deleted file mode 100644 index 6375389dca2..00000000000 --- a/java/com.sap.sse.datamining.annotations/src/com/sap/sse/datamining/annotations/data/Unit.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.sap.sse.datamining.annotations.data; - -/** - * Enum for the different Units of key figures.
          - * Every member needs a message key in StringMessages*.properties of {@link com.sap.sse.datamining}. - * - * @author Lennart Hensler (D054527) - * - */ -public enum Unit { - - None, Knots, Meters - -} diff --git a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/AdditionalResultData.java b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/AdditionalResultData.java index 2e6f297ec4b..49b7118b2c4 100644 --- a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/AdditionalResultData.java +++ b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/AdditionalResultData.java @@ -2,8 +2,6 @@ package com.sap.sse.datamining.shared; import java.io.Serializable; -import com.sap.sse.datamining.annotations.data.Unit; - public interface AdditionalResultData extends Serializable { public int getRetrievedDataAmount(); @@ -12,9 +10,6 @@ public interface AdditionalResultData extends Serializable { public String getResultSignifier(); - public Unit getUnit(); - public String getUnitSignifier(); - public int getValueDecimals(); } diff --git a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/QueryResultBase.java b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/QueryResultBase.java index b4f5793cfbf..0c35f7821f5 100644 --- a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/QueryResultBase.java +++ b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/QueryResultBase.java @@ -3,7 +3,6 @@ package com.sap.sse.datamining.shared; import java.io.Serializable; import java.util.Map; -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.shared.data.QueryResultState; public interface QueryResultBase extends Serializable { @@ -18,8 +17,6 @@ public interface QueryResultBase extends Serializable { */ public String getResultSignifier(); - public Unit getUnit(); - public String getUnitSignifier(); public int getValueDecimals(); public boolean isEmpty(); diff --git a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/SSEDataMiningSerializationDummy.java b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/SSEDataMiningSerializationDummy.java index 90830456318..c0ffaa2cd0b 100644 --- a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/SSEDataMiningSerializationDummy.java +++ b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/SSEDataMiningSerializationDummy.java @@ -1,8 +1,5 @@ package com.sap.sse.datamining.shared; -import java.io.Serializable; - -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.shared.impl.GenericGroupKey; import com.sap.sse.datamining.shared.impl.dto.ClusterDTO; @@ -13,7 +10,6 @@ public final class SSEDataMiningSerializationDummy implements SerializationDummy private GenericGroupKey groupKey; private ClusterDTO cluster; private Number n; - private Unit unit; private SSEDataMiningSerializationDummy() { } diff --git a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/AdditionalResultDataImpl.java b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/AdditionalResultDataImpl.java index 9feeb2ffc71..cb6ca138233 100644 --- a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/AdditionalResultDataImpl.java +++ b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/AdditionalResultDataImpl.java @@ -1,6 +1,5 @@ package com.sap.sse.datamining.shared.impl; -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.shared.AdditionalResultData; public class AdditionalResultDataImpl implements AdditionalResultData { @@ -8,8 +7,6 @@ public class AdditionalResultDataImpl implements AdditionalResultData { private int retrievedDataAmount; private String resultSignifier; - private Unit unit; - private String unitSignifier; private int valueDecimals; private long calculationTimeInNanos; @@ -19,14 +16,12 @@ public class AdditionalResultDataImpl implements AdditionalResultData { @Deprecated AdditionalResultDataImpl() { } - public AdditionalResultDataImpl(int retrievedDataAmount, String resultSignifier, Unit unit, String unitSignifier, - int valueDecimals, long calculationTimeInNanos) { - this.retrievedDataAmount = retrievedDataAmount; - this.resultSignifier = resultSignifier; - this.unit = unit; - this.unitSignifier = unitSignifier; - this.valueDecimals = valueDecimals; - this.calculationTimeInNanos = calculationTimeInNanos; + public AdditionalResultDataImpl(int retrievedDataAmount, String resultSignifier, int valueDecimals, + long calculationTimeInNanos) { + this.retrievedDataAmount = retrievedDataAmount; + this.resultSignifier = resultSignifier; + this.valueDecimals = valueDecimals; + this.calculationTimeInNanos = calculationTimeInNanos; } @Override @@ -44,16 +39,6 @@ public class AdditionalResultDataImpl implements AdditionalResultData { return resultSignifier; } - @Override - public Unit getUnit() { - return unit; - } - - @Override - public String getUnitSignifier() { - return unitSignifier; - } - @Override public int getValueDecimals() { return valueDecimals; diff --git a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/NullAdditionalResultData.java b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/NullAdditionalResultData.java index a06ca208427..34315bcd52b 100644 --- a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/NullAdditionalResultData.java +++ b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/NullAdditionalResultData.java @@ -1,6 +1,5 @@ package com.sap.sse.datamining.shared.impl; -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.shared.AdditionalResultData; /** @@ -34,16 +33,6 @@ public class NullAdditionalResultData implements AdditionalResultData { return ""; } - @Override - public Unit getUnit() { - return Unit.None; - } - - @Override - public String getUnitSignifier() { - return ""; - } - @Override public int getValueDecimals() { return 0; diff --git a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/QueryResultBaseImpl.java b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/QueryResultBaseImpl.java index 1046e82efab..25e9e8c9708 100644 --- a/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/QueryResultBaseImpl.java +++ b/java/com.sap.sse.datamining.shared/src/com/sap/sse/datamining/shared/impl/QueryResultBaseImpl.java @@ -3,7 +3,6 @@ package com.sap.sse.datamining.shared.impl; import java.util.HashMap; import java.util.Map; -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.shared.AdditionalResultData; import com.sap.sse.datamining.shared.GroupKey; import com.sap.sse.datamining.shared.QueryResultBase; @@ -63,16 +62,6 @@ public abstract class QueryResultBaseImpl implements QueryResultBase return additionalData.getResultSignifier(); } - @Override - public Unit getUnit() { - return additionalData.getUnit(); - } - - @Override - public String getUnitSignifier() { - return additionalData.getUnitSignifier(); - } - @Override public int getValueDecimals() { return additionalData.getValueDecimals(); diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestStatisticQuery.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestStatisticQuery.java index c3df732c6da..ff637110dc6 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestStatisticQuery.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/TestStatisticQuery.java @@ -19,7 +19,6 @@ import com.sap.sse.datamining.ModifiableDataMiningServer; import com.sap.sse.datamining.Query; import com.sap.sse.datamining.QueryState; import com.sap.sse.datamining.StatisticQueryDefinition; -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.components.AggregationProcessorDefinition; import com.sap.sse.datamining.components.DataRetrieverChainDefinition; import com.sap.sse.datamining.components.Processor; @@ -141,7 +140,7 @@ public class TestStatisticQuery { results.put(new GenericGroupKey(3), 3.0); results.put(new GenericGroupKey(4), 10.0); - QueryResultImpl result = new QueryResultImpl<>(QueryResultState.NORMAL, java.lang.Number.class, results, new AdditionalResultDataImpl(dataSource.size() - 2, "Cross Sum (Sum)", Unit.None, "", 0, 0)); + QueryResultImpl result = new QueryResultImpl<>(QueryResultState.NORMAL, java.lang.Number.class, results, new AdditionalResultDataImpl(dataSource.size() - 2, "Cross Sum (Sum)", 0, 0)); return result; } @@ -150,7 +149,6 @@ public class TestStatisticQuery { assertThat("Result values aren't correct.", result.getResults(), is(expectedResult.getResults())); assertThat("Retrieved data amount isn't correct.", result.getRetrievedDataAmount(), is(expectedResult.getRetrievedDataAmount())); assertThat("Result signifier isn't correct.", result.getResultSignifier(), is(expectedResult.getResultSignifier())); - assertThat("Unit isn't correct.", result.getUnit(), is(expectedResult.getUnit())); assertThat("Value decimals aren't correct.", result.getValueDecimals(), is(expectedResult.getValueDecimals())); } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestCompoundFunction.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestCompoundFunction.java index 550c9b54802..f142cc3a33e 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestCompoundFunction.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/functions/TestCompoundFunction.java @@ -10,7 +10,6 @@ import java.util.Locale; import org.junit.Before; import org.junit.Test; -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.functions.Function; import com.sap.sse.datamining.test.data.impl.ContainerElement; import com.sap.sse.datamining.test.data.impl.ContainerElementImpl; @@ -52,7 +51,6 @@ public class TestCompoundFunction { compoundFunction.getDeclaringType().equals(MarkedContainer.class), is(true)); assertThat(compoundFunction.getSimpleName(), is("getContainerElement -> getName")); assertThat(compoundFunction.getLocalizedName(Locale.ENGLISH, TestsUtil.getTestStringMessages()), is("Name")); - assertThat(compoundFunction.getResultUnit(), is(Unit.None)); assertThat(compoundFunction.getResultDecimals(), is(0)); } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/DataTypeInterface.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/DataTypeInterface.java index adec72e76d6..81f79f07eb3 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/DataTypeInterface.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/data/impl/DataTypeInterface.java @@ -1,11 +1,10 @@ package com.sap.sse.datamining.test.data.impl; import com.sap.sse.datamining.annotations.Statistic; -import com.sap.sse.datamining.annotations.data.Unit; public interface DataTypeInterface { - @Statistic(messageKey="speedInKnots", resultUnit=Unit.Knots, resultDecimals=2) + @Statistic(messageKey="speedInKnots", resultDecimals=2) public int getSpeedInKnots(); } diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/domain/Test_Leg.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/domain/Test_Leg.java index 356ce3f802e..554388be2c2 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/domain/Test_Leg.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/test/domain/Test_Leg.java @@ -1,11 +1,10 @@ package com.sap.sse.datamining.test.domain; import com.sap.sse.datamining.annotations.Statistic; -import com.sap.sse.datamining.annotations.data.Unit; public interface Test_Leg { - @Statistic(messageKey="DistanceTraveled", resultUnit=Unit.Meters, resultDecimals=0) + @Statistic(messageKey="DistanceTraveled", resultDecimals=0) public double getDistanceTraveled(); } diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/AdditionalResultDataBuilder.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/AdditionalResultDataBuilder.java index c3a94e54fe2..6a18852bf22 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/AdditionalResultDataBuilder.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/components/AdditionalResultDataBuilder.java @@ -2,7 +2,6 @@ package com.sap.sse.datamining.components; import java.util.Locale; -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.functions.Function; import com.sap.sse.datamining.shared.AdditionalResultData; import com.sap.sse.i18n.ResourceBundleStringMessages; @@ -20,12 +19,12 @@ public interface AdditionalResultDataBuilder { public int getRetrievedDataAmount(); /** - * Sets the used {@link Function} for the statistic extraction. Also sets the {@linkplain Unit result unit} and the amount of - * decimals to the values of the Function ({@link Function#getResultUnit()} and {@link Function#getResultDecimals()}). + * Sets the used {@link Function} for the statistic extraction. Also sets the amount of decimals to the values of + * the Function ({@link Function#getResultDecimals()}). + * * @param extractionFunction */ public void setExtractionFunction(Function extractionFunction); - public void setResultUnit(Unit resultUnit); public void setResultDecimals(int resultDecimals); public void setAggregationNameMessageKey(String aggregationNameMessageKey); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java index b45bcb7b2a3..cc78829b24c 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/functions/Function.java @@ -3,7 +3,6 @@ package com.sap.sse.datamining.functions; import java.lang.reflect.InvocationTargetException; import java.util.Locale; -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.i18n.ResourceBundleStringMessages; public interface Function { @@ -44,8 +43,6 @@ public interface Function { */ public ReturnType tryToInvoke(Object instance, ParameterProvider parameterProvider); - public Unit getResultUnit(); - public int getResultDecimals(); public int getOrdinal(); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/OverwritingResultDataBuilder.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/OverwritingResultDataBuilder.java index f311a681a81..39d35382caf 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/OverwritingResultDataBuilder.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/OverwritingResultDataBuilder.java @@ -2,7 +2,6 @@ package com.sap.sse.datamining.impl.components; import java.util.Locale; -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.components.AdditionalResultDataBuilder; import com.sap.sse.datamining.functions.Function; import com.sap.sse.datamining.shared.AdditionalResultData; @@ -21,7 +20,6 @@ public class OverwritingResultDataBuilder implements AdditionalResultDataBuilder private int retrievedDataAmount; private Function extractionFunction; private String aggregationNameMessageKey; - private Unit resultUnit; private int resultDecimals; /** @@ -29,16 +27,13 @@ public class OverwritingResultDataBuilder implements AdditionalResultDataBuilder */ public OverwritingResultDataBuilder() { retrievedDataAmount = 0; - resultUnit = Unit.None; resultDecimals = 0; } @Override public AdditionalResultData build(long calculationTimeInNanos, ResourceBundleStringMessages stringMessages, Locale locale) { - String unitSignifier = buildUnitSignifier(stringMessages, locale); String resultSignifier = buildResultSignifier(stringMessages, locale); - return new AdditionalResultDataImpl(retrievedDataAmount, resultSignifier, resultUnit, unitSignifier, - resultDecimals, calculationTimeInNanos); + return new AdditionalResultDataImpl(retrievedDataAmount, resultSignifier, resultDecimals, calculationTimeInNanos); } private String buildResultSignifier(ResourceBundleStringMessages stringMessages, Locale locale) { @@ -51,14 +46,6 @@ public class OverwritingResultDataBuilder implements AdditionalResultDataBuilder return stringMessages.get(locale, "ResultSignifier", extractedStatisticName, aggregationName); } - private String buildUnitSignifier(ResourceBundleStringMessages stringMessages, Locale locale) { - if (resultUnit == null || resultUnit == Unit.None) { - return ""; - } - - return stringMessages.get(locale, resultUnit.toString()); - } - @Override public void setRetrievedDataAmount(int retrievedDataAmount) { this.retrievedDataAmount = retrievedDataAmount; @@ -72,15 +59,9 @@ public class OverwritingResultDataBuilder implements AdditionalResultDataBuilder @Override public void setExtractionFunction(Function extractionFunction) { this.extractionFunction = extractionFunction; - setResultUnit(extractionFunction.getResultUnit()); setResultDecimals(extractionFunction.getResultDecimals()); } - @Override - public void setResultUnit(Unit resultUnit) { - this.resultUnit = resultUnit; - } - @Override public void setResultDecimals(int resultDecimals) { this.resultDecimals = resultDecimals; diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedDataCountAggregationProcessor.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedDataCountAggregationProcessor.java index 3e5643eae30..c4ad6f79347 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedDataCountAggregationProcessor.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/components/aggregators/ParallelGroupedDataCountAggregationProcessor.java @@ -5,7 +5,6 @@ import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.components.AdditionalResultDataBuilder; import com.sap.sse.datamining.components.AggregationProcessorDefinition; import com.sap.sse.datamining.components.Processor; @@ -49,7 +48,6 @@ public class ParallelGroupedDataCountAggregationProcessor @Override protected void setAdditionalData(AdditionalResultDataBuilder additionalDataBuilder) { super.setAdditionalData(additionalDataBuilder); - additionalDataBuilder.setResultUnit(Unit.None); additionalDataBuilder.setResultDecimals(0); } diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/AdditionalMethodWrappingFunctionData.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/AdditionalMethodWrappingFunctionData.java index 86886bdbbd9..88a77a10e0d 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/AdditionalMethodWrappingFunctionData.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/AdditionalMethodWrappingFunctionData.java @@ -1,17 +1,14 @@ package com.sap.sse.datamining.impl.functions; -import com.sap.sse.datamining.annotations.data.Unit; public class AdditionalMethodWrappingFunctionData { private final String messageKey; - private final Unit resultUnit; private final int resultDecimals; private final int ordinal; - public AdditionalMethodWrappingFunctionData(String messageKey, Unit resultUnit, int resultValueDecimals, int ordinal) { + public AdditionalMethodWrappingFunctionData(String messageKey, int resultValueDecimals, int ordinal) { this.messageKey = messageKey; - this.resultUnit = resultUnit; this.resultDecimals = resultValueDecimals; this.ordinal = ordinal; } @@ -20,10 +17,6 @@ public class AdditionalMethodWrappingFunctionData { return messageKey; } - public Unit getResultUnit() { - return resultUnit; - } - public int getResultDecimals() { return resultDecimals; } diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java index 70d1edbd00e..118d4bbb4d3 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/ConcatenatingCompoundFunction.java @@ -5,7 +5,6 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.functions.Function; import com.sap.sse.datamining.functions.ParameterProvider; import com.sap.sse.i18n.ResourceBundleStringMessages; @@ -170,14 +169,6 @@ public class ConcatenatingCompoundFunction extends AbstractFunction< return typedResult; } - /** - * @return the {@link Unit result Unit} of the last function. - */ - @Override - public Unit getResultUnit() { - return getLastFunction().getResultUnit(); - } - /** * @return the result decimals of the last function. */ diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java index 8c679155e0c..99d71d71de0 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/functions/MethodWrappingFunction.java @@ -9,7 +9,6 @@ import java.util.logging.Level; import com.sap.sse.datamining.annotations.Connector; import com.sap.sse.datamining.annotations.Dimension; import com.sap.sse.datamining.annotations.Statistic; -import com.sap.sse.datamining.annotations.data.Unit; import com.sap.sse.datamining.functions.ParameterProvider; import com.sap.sse.i18n.ResourceBundleStringMessages; @@ -44,21 +43,21 @@ public class MethodWrappingFunction extends AbstractFunction extends AbstractFunction extends AbstractFunction Date: Fri, 25 Sep 2015 16:36:00 +0200 Subject: [PATCH 412/504] Add email feature in RaceLogTracking Tab --- .../gwt/ui/adminconsole/CompetitorPanel.java | 73 +-------------- ...TrackingCompetitorRegistrationsDialog.java | 71 +++++++++++++- .../RaceLogTrackingEventManagementPanel.java | 4 +- .../SelectEventAndHostnameDialog.java | 92 +++++++++++++++++++ .../sailing/gwt/ui/client/SailingService.java | 2 +- .../gwt/ui/client/SailingServiceAsync.java | 2 +- .../sailing/gwt/ui/client/StringMessages.java | 2 + .../gwt/ui/client/StringMessages.properties | 1 + .../ui/client/StringMessages_de.properties | 1 + .../ui/client/StringMessages_ru.properties | 1 + .../ui/client/StringMessages_zh.properties | 1 + .../gwt/ui/server/SailingServiceImpl.java | 2 +- 12 files changed, 173 insertions(+), 79 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectEventAndHostnameDialog.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java index c3544fab81d..ee91faf8c88 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java @@ -1,7 +1,6 @@ package com.sap.sailing.gwt.ui.adminconsole; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Set; @@ -13,12 +12,9 @@ import com.google.gwt.i18n.client.LocaleInfo; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.SimplePanel; -import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; -import com.google.gwt.user.client.ui.Widget; import com.google.gwt.view.client.MultiSelectionModel; import com.google.gwt.view.client.SelectionChangeEvent; import com.google.gwt.view.client.SelectionChangeEvent.Handler; @@ -30,9 +26,6 @@ import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; import com.sap.sse.gwt.client.ErrorReporter; -import com.sap.sse.gwt.client.controls.GenericListBox; -import com.sap.sse.gwt.client.controls.GenericListBox.ValueBuilder; -import com.sap.sse.gwt.client.dialog.DataEntryDialog; import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback; /** @@ -212,76 +205,12 @@ public class CompetitorPanel extends SimplePanel { }).show(); } - private class SelectEventAndHostnameDialog extends DataEntryDialog> { - private GenericListBox events; - private TextBox serverUrl; - - public SelectEventAndHostnameDialog(DialogCallback> callback) { - super(stringMessages.selectEventForInvitation(), null, stringMessages.inviteCompetitors(), stringMessages.cancel(), - new Validator>() { - @Override - public String getErrorMessage(Pair valueToValidate) { - if (valueToValidate.getA() == null) { - return stringMessages.pleaseSelectAnEvent(); - } else if (valueToValidate.getB() == null || valueToValidate.getB().isEmpty()) { - return stringMessages.pleaseEnterA(stringMessages.hostname()); - } - return null; - } - }, false, callback); - } - - @Override - protected Pair getResult() { - EventDTO event = events.getValue(); - String serverUrlString = serverUrl.getValue(); - if (serverUrlString.endsWith("/")) { - serverUrlString = serverUrlString.substring(0, serverUrlString.length() - 1); - } - return new Pair<>(event, serverUrlString); - } - - @Override - protected Widget getAdditionalWidget() { - Grid grid = new Grid(2, 2); - grid.setWidget(0, 0, createLabel(stringMessages.hostname())); - serverUrl = createTextBox(Window.Location.getProtocol() + "//" + Window.Location.getHost()); - grid.setWidget(0, 1, serverUrl); - - grid.setWidget(1, 0, createLabel(stringMessages.event())); - events = createGenericListBox(new ValueBuilder() { - @Override - public String getValue(EventDTO item) { - if (item == null) { - return ""; - } - return item.getName(); - } - }, false); - grid.setWidget(1, 1, events); - - events.addItem((EventDTO) null); - sailingService.getEventsForLeaderboard(leaderboardName, new AsyncCallback>() { - @Override - public void onSuccess(Collection result) { - events.addItems(result); - } - - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not load events: " + caught.getMessage()); - } - }); - return grid; - } - } - private String getLocaleInfo() { return LocaleInfo.getCurrentLocale().getLocaleName(); } private void openChooseEventDialogAndSendMails(final Set competitors) { - new SelectEventAndHostnameDialog(new DialogCallback>() { + new SelectEventAndHostnameDialog(sailingService, stringMessages, errorReporter, leaderboardName, new DialogCallback>() { @Override public void ok(Pair result) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java index 71c5a85282f..be989c7832c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java @@ -9,6 +9,8 @@ import java.util.Set; import com.google.gwt.core.client.Callback; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.i18n.client.LocaleInfo; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.CaptionPanel; @@ -21,15 +23,19 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.CompetitorDTOImpl; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sse.common.Util; +import com.sap.sse.common.Util.Pair; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog; +import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback; public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDialog { protected CompetitorTableWrapper> allCompetitorsTable; protected CompetitorTableWrapper> registeredCompetitorsTable; protected final boolean filterByLeaderBoardInitially = false; protected final CompetitorRegistrationHandler competitorRegistrationsHandler; + private String leaderboardName; static interface CompetitorRegistrationHandler { void getRegisteredCompetitors(Callback, Throwable> callback); @@ -38,11 +44,12 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi } public RaceLogTrackingCompetitorRegistrationsDialog(final SailingServiceAsync sailingService, - final StringMessages stringMessages, final ErrorReporter errorReporter, boolean editable, + final StringMessages stringMessages, final ErrorReporter errorReporter, boolean editable, String leaderboardName, CompetitorRegistrationHandler competitorRegistrationHandler) { super(sailingService, stringMessages, errorReporter, editable); this.competitorRegistrationsHandler = competitorRegistrationHandler; - + this.leaderboardName = leaderboardName; + setupUi(); refreshCompetitors(); } @@ -65,11 +72,71 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi } }); + final Button inviteCompetitorsButton = new Button(stringMessages.inviteSelectedCompetitors()); + inviteCompetitorsButton.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + Collection competitorsToInvite = null; + if (registeredCompetitorsTable.getSelectionModel().getSelectedSet().size() > 0){ + competitorsToInvite = registeredCompetitorsTable.getSelectionModel().getSelectedSet(); + } else { + Collection competitors = registeredCompetitorsTable.dataProvider.getList(); + competitorsToInvite = new ArrayList(competitors); + } + + boolean emailProvidedForAll = isEmailProvidedForAll(competitorsToInvite); + + if (emailProvidedForAll) { + openChooseEventDialogAndSendMails(competitorsToInvite); + } else { + Window.alert(stringMessages.notAllCompetitorsProvideEmail()); + } + } + + private boolean isEmailProvidedForAll(Iterable allCompetitors) { + for (CompetitorDTO competitor : allCompetitors) { + if (!competitor.hasEmail()) { + return false; + } + } + + return true; + } + }); + buttonPanel.add(addCompetitorButton); buttonPanel.add(editCompetitorButton); + buttonPanel.add(inviteCompetitorsButton); super.addButtons(buttonPanel); } + + private void openChooseEventDialogAndSendMails(final Collection competitors) { + new SelectEventAndHostnameDialog(sailingService, stringMessages, errorReporter, leaderboardName, new DialogCallback>() { + + @Override + public void ok(Pair result) { + sailingService.inviteCompetitorsForTrackingViaEmail(result.getB(), result.getA(), leaderboardName, + competitors, LocaleInfo.getCurrentLocale().getLocaleName(), new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + Window.alert(stringMessages.sendingMailsFailed() + caught.getMessage()); + } + + @Override + public void onSuccess(Void result) { + Window.alert(stringMessages.sendingMailsSuccessful()); + } + }); + } + + @Override + public void cancel() { + + } + }).show(); + } private void move(CompetitorTableWrapper from, CompetitorTableWrapper to, Collection toMove) { if (!toMove.isEmpty()) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java index fd8d3741607..e13702ab700 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java @@ -107,7 +107,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf denoteForRaceLogTracking(leaderboardDTO); } else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_COMPETITOR_REGISTRATIONS.equals(value)) { new RaceLogTrackingCompetitorRegistrationsDialog(sailingService, stringMessages, errorReporter, - /* editable */ true, new CompetitorRegistrationHandler() { + /* editable */ true, leaderboardName, new CompetitorRegistrationHandler() { @Override public void setRegisteredCompetitors(Set registeredCompetitors) { @@ -208,7 +208,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_COMPETITOR_REGISTRATIONS .equals(value)) { new RaceLogTrackingCompetitorRegistrationsDialog(sailingService, stringMessages, errorReporter, - editable, new CompetitorRegistrationHandler() { + editable, leaderboardName, new CompetitorRegistrationHandler() { @Override public void getRegisteredCompetitors( final Callback, Throwable> callback) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectEventAndHostnameDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectEventAndHostnameDialog.java new file mode 100644 index 00000000000..b564b789508 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectEventAndHostnameDialog.java @@ -0,0 +1,92 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import java.util.Collection; + +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.Grid; +import com.google.gwt.user.client.ui.TextBox; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.EventDTO; +import com.sap.sse.common.Util.Pair; +import com.sap.sse.gwt.client.ErrorReporter; +import com.sap.sse.gwt.client.controls.GenericListBox; +import com.sap.sse.gwt.client.controls.GenericListBox.ValueBuilder; +import com.sap.sse.gwt.client.dialog.DataEntryDialog; + +public class SelectEventAndHostnameDialog extends DataEntryDialog> { + private GenericListBox events; + private TextBox serverUrl; + private StringMessages stringMessages; + private String leaderboardName; + private SailingServiceAsync sailingService; + private ErrorReporter errorReporter; + + public SelectEventAndHostnameDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages, + final ErrorReporter errorReporter, final String leaderboardName, + DialogCallback> callback) { + super(stringMessages.selectEventForInvitation(), null, stringMessages.inviteCompetitors(), stringMessages + .cancel(), new Validator>() { + @Override + public String getErrorMessage(Pair valueToValidate) { + if (valueToValidate.getA() == null) { + return stringMessages.pleaseSelectAnEvent(); + } else if (valueToValidate.getB() == null || valueToValidate.getB().isEmpty()) { + return stringMessages.pleaseEnterA(stringMessages.hostname()); + } + return null; + } + }, false, callback); + + this.stringMessages = stringMessages; + this.leaderboardName = leaderboardName; + this.sailingService = sailingService; + this.errorReporter = errorReporter; + } + + @Override + protected Pair getResult() { + EventDTO event = events.getValue(); + String serverUrlString = serverUrl.getValue(); + if (serverUrlString.endsWith("/")) { + serverUrlString = serverUrlString.substring(0, serverUrlString.length() - 1); + } + return new Pair<>(event, serverUrlString); + } + + @Override + protected Widget getAdditionalWidget() { + Grid grid = new Grid(2, 2); + grid.setWidget(0, 0, createLabel(stringMessages.hostname())); + serverUrl = createTextBox(Window.Location.getProtocol() + "//" + Window.Location.getHost()); + grid.setWidget(0, 1, serverUrl); + + grid.setWidget(1, 0, createLabel(stringMessages.event())); + events = createGenericListBox(new ValueBuilder() { + @Override + public String getValue(EventDTO item) { + if (item == null) { + return ""; + } + return item.getName(); + } + }, false); + grid.setWidget(1, 1, events); + + events.addItem((EventDTO) null); + sailingService.getEventsForLeaderboard(leaderboardName, new AsyncCallback>() { + @Override + public void onSuccess(Collection result) { + events.addItems(result); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not load events: " + caught.getMessage()); + } + }); + return grid; + } +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 003fe1b3cc8..0c301f13235 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -592,7 +592,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS List getDeviceMappingsFromLogHierarchy(String leaderboardName, String raceColumnName, String fleetName) throws TransformationException; void inviteCompetitorsForTrackingViaEmail(String serverUrlWithoutTrailingSlash, EventDTO event, - String leaderboardName, Set competitors, String localeInfo) throws MailException; + String leaderboardName, Collection competitors, String localeInfo) throws MailException; Iterable getMarksInRaceLogsAndTrackedRaces(String leaderboardName); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index d04cb36d217..52709944221 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -702,7 +702,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void getActiveFileStorageServiceName(AsyncCallback callback); void inviteCompetitorsForTrackingViaEmail(String serverUrlWithoutTrailingSlash, EventDTO event, - String leaderboardName, Set competitors, String localeInfo, AsyncCallback callback); + String leaderboardName, Collection competitors, String localeInfo, AsyncCallback callback); void getMarksInRaceLogsAndTrackedRaces(String leaderboardName, AsyncCallback> callback); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index b75ca90445b..74f28f28ebd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -3,6 +3,7 @@ package com.sap.sailing.gwt.ui.client; import com.google.gwt.core.client.GWT; import com.google.gwt.i18n.client.LocalizableResource.DefaultLocale; import com.google.gwt.json.client.JSONValue; +import com.google.gwt.safehtml.shared.SafeHtml; import com.sap.sse.gwt.client.DefaultRule_0_1_2_n; import com.sap.sse.gwt.client.DefaultRule_0_1_n; import com.sap.sse.gwt.client.DefaultRule_1_0n; @@ -1387,4 +1388,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String tabbedResultsPresenter(); String polarResultsPresenter(); String dataMiningRetrieval(); + String inviteSelectedCompetitors(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 20eadd66304..0adebc29b64 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1188,6 +1188,7 @@ errorTryingToObtainRaceLogMarkPassingData=Error trying to obtain race log mark p email=E-Mail pleaseEnterAnEmail=Please enter an E-Mail. inviteCompetitors=Invite competitors +inviteSelectedCompetitors=Invite selected competitors notAllCompetitorsProvideEmail=Not all competitors provide an E-Mail sendingMailsFailed=Sending Mails failed sendingMailsSuccessful=Successfully sent E-Mails diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index a4be68f976d..aab7aae3039 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1177,6 +1177,7 @@ errorTryingToObtainRaceLogMarkPassingData=Fehler beim Laden der Umrundungsinform email=E-Mail pleaseEnterAnEmail=Bitte geben Sie eine E-Mail ein. inviteCompetitors=Teilnehmer einladen +inviteSelectedCompetitors=Ausgewählte Teilnehmer einladen notAllCompetitorsProvideEmail=Nicht alle Teilnehmer haben eine E-Mail angegeben sendingMailsFailed=Versenden der E-Mails fehlgeschlagen sendingMailsSuccessful=Versenden der E-Mails war erfolgreich! diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index bfb41d94731..e65c31ed414 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1122,6 +1122,7 @@ errorTryingToObtainRaceLogMarkPassingData=Error trying to obtain race log mark p email=эмаль pleaseEnterAnEmail=Пожалуйста, введите эмаль inviteCompetitors=приглашать Участники +inviteSelectedCompetitors=Invite selected competitors notAllCompetitorsProvideEmail=Not all competitors provide an E-Mail sendingMailsFailed=Sending Mails failed sendingMailsSuccessful=Successfully sent E-Mails diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index ff348d59349..3f6330920f4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -229,6 +229,7 @@ pauseAutomaticRefresh=Pause automatic refresh distanceInMeters=距离 noColor=No color inviteCompetitors=Invite competitors +inviteSelectedCompetitors=Invite selected competitors topNCompetitorsByTotalRank=Total Top {0} windData=Wind data abort=Abort diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index ef0827694fe..aedb1ff0495 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -5668,7 +5668,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S @Override public void inviteCompetitorsForTrackingViaEmail(String serverUrlWithoutTrailingSlash, EventDTO eventDto, - String leaderboardName, Set competitorDtos, String localeInfoName) throws MailException { + String leaderboardName, Collection competitorDtos, String localeInfoName) throws MailException { Event event = getService().getEvent(eventDto.id); Set competitors = new HashSet<>(); for (CompetitorDTO c : competitorDtos) { From a7005a095a041b1dc3ab7fcc3dd591182c5ec04c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 25 Sep 2015 23:10:04 +0200 Subject: [PATCH 413/504] flipped order of hamcrest and mockito imports, hoping that now the correct hamcrest version (the old one) is used --- java/com.sap.sse.datamining.test/META-INF/MANIFEST.MF | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sse.datamining.test/META-INF/MANIFEST.MF b/java/com.sap.sse.datamining.test/META-INF/MANIFEST.MF index 983253935bf..acbcf2dbc96 100644 --- a/java/com.sap.sse.datamining.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.datamining.test/META-INF/MANIFEST.MF @@ -6,8 +6,8 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Fragment-Host: com.sap.sse.datamining -Require-Bundle: org.mockito.mockito-core;bundle-version="1.9.5", - org.hamcrest;bundle-version="1.1.0", +Require-Bundle: org.hamcrest;bundle-version="1.1.0", + org.mockito.mockito-core;bundle-version="1.9.5", com.sap.sse.datamining.annotations;bundle-version="1.0.0" Import-Package: junit.framework;version="4.8.2", org.junit;version="4.8.2", From a90677ed4bf54a0114c124c63b2cb5a133aed2f3 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sat, 26 Sep 2015 09:59:08 +0200 Subject: [PATCH 414/504] aftermath to commit 7f0b561d78792a1465e44d5f83077f34805bdef9, cleaning up the tests that were testing migration of old identifier formats --- .../test/StoreAndLoadRaceLogsTest.java | 94 ------------------- 1 file changed, 94 deletions(-) diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadRaceLogsTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadRaceLogsTest.java index 55efd4b8754..d9740110b41 100644 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadRaceLogsTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/StoreAndLoadRaceLogsTest.java @@ -1,8 +1,6 @@ package com.sap.sailing.mongodb.test; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -11,11 +9,8 @@ import java.net.UnknownHostException; import java.util.Collections; import java.util.UUID; -import org.bson.types.ObjectId; import org.junit.Test; -import com.mongodb.BasicDBObject; -import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.MongoException; import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl; @@ -28,9 +23,7 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.persistence.PersistenceFactory; import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl; -import com.sap.sailing.domain.persistence.impl.FieldNames; import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl; -import com.sap.sailing.domain.persistence.impl.TripleSerializer; import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.racelog.impl.RaceLogIdentifierImpl; import com.sap.sailing.domain.regattalike.RegattaLikeIdentifier; @@ -97,93 +90,6 @@ public class StoreAndLoadRaceLogsTest extends AbstractMongoDBTest { } } - @Test - public void testdLoadObsoleteIdentifier() { - // Identifier is A.A B.B C.C - - DBObject dbEvent1 = (DBObject) com.mongodb.util.JSON.parse(createOldFormatRaceLogEventJson(UUID.randomUUID())); - mongoFactory.getRaceLogCollection().insert(dbEvent1); - DBObject dbEvent2 = (DBObject) com.mongodb.util.JSON.parse(createOldFormatRaceLogEventJson(UUID.randomUUID())); - mongoFactory.getRaceLogCollection().insert(dbEvent2); - - RaceLog raceLog = domainFactory.loadRaceLog(createIdentifier("A.A", "B.B", "C.C")); - try { - raceLog.lockForRead(); - assertEquals(2, Util.size(raceLog.getRawFixes())); - } finally { - raceLog.unlockAfterRead(); - } - } - - @Test - public void testLoadObsoleteAndNewIdentifier() { - // event1 stored with obsolete identifier - DBObject dbEvent1 = (DBObject) com.mongodb.util.JSON.parse(createOldFormatRaceLogEventJson(UUID.randomUUID())); - mongoFactory.getRaceLogCollection().insert(dbEvent1); - - // event2 stored with new identifier - RaceLogIdentifier identifier = createIdentifier("A.A", "B.B", "C.C"); - RaceLogFlagEvent event2 = createRaceLogFlagEvent(UUID.randomUUID()); - DBObject dbEvent2 = mongoFactory.storeRaceLogEntry(identifier, event2); - mongoFactory.getRaceLogCollection().insert(dbEvent2); - - RaceLog raceLog = domainFactory.loadRaceLog(identifier); - try { - raceLog.lockForRead(); - assertEquals(2, Util.size(raceLog.getRawFixes())); - } finally { - raceLog.unlockAfterRead(); - } - } - - @Test - public void testMigrateObsoleteIdentifier() { - DBCollection collection = mongoFactory.getRaceLogCollection(); - RaceLogIdentifier identifier = createIdentifier("A.A", "B.B", "C.C"); - - // Insert new style event (which should be untouched by migration)... - RaceLogFlagEvent newStyleEvent = createRaceLogFlagEvent(UUID.randomUUID()); - DBObject newStyleEventObject = mongoFactory.storeRaceLogEntry(identifier, newStyleEvent); - mongoFactory.getRaceLogCollection().insert(newStyleEventObject); - - // ... insert old style event... - DBObject dbEvent1 = (DBObject) com.mongodb.util.JSON.parse(createOldFormatRaceLogEventJson(UUID.randomUUID())); - collection.insert(dbEvent1); - - // ... ensure that it is in the database... - BasicDBObject query = new BasicDBObject(); - query.put(FieldNames.RACE_LOG_IDENTIFIER.name(), OldFormatRaceLogIdentifier); - assertTrue(collection.find(query).hasNext()); - - // ... loading it should trigger the migration... - domainFactory.loadRaceLog(identifier); - - // ... check that old event is gone... - assertFalse("Event with old identifier should be gone after migration", collection.find(query).hasNext()); - - // ... and new event is stored... - query.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(identifier.getIdentifier())); - assertTrue("After migration the event should be found with new identifier", collection.find(query).hasNext()); - - // ... finally loading this racelog should yield both our events - RaceLog raceLog = domainFactory.loadRaceLog(identifier); - try { - raceLog.lockForRead(); - assertEquals(2, Util.size(raceLog.getRawFixes())); - } finally { - raceLog.unlockAfterRead(); - } - } - - private static final String OldFormatRaceLogIdentifier = "A%2EA%2EB%2EB%2EC%2EC"; - - private String createOldFormatRaceLogEventJson(Serializable id) { - return "{ \"_id\" : { \"$oid\" : \""+ new ObjectId().toHexString() + "\"} , \"RACE_LOG_IDENTIFIER\" : \"" + OldFormatRaceLogIdentifier + "\" , \"RACE_LOG_EVENT\" : " - + "{ \"TIME_AS_MILLIS\" : 42 , \"RACE_LOG_EVENT_CREATED_AT\" : 1376058090051 , \"RACE_LOG_EVENT_ID\" : { \"$uuid\" : \"" + id.toString() + "\"} , " - + "\"RACE_LOG_EVENT_PASS_ID\" : 42 , \"RACE_LOG_EVENT_INVOLVED_BOATS\" : [ ] , \"RACE_LOG_EVENT_CLASS\" : \"RaceLogFlagEvent\" , \"RACE_LOG_EVENT_FLAG_UPPER\" : \"ALPHA\" , " - + "\"RACE_LOG_EVENT_FLAG_LOWER\" : \"BRAVO\" , \"RACE_LOG_EVENT_FLAG_DISPLAYED\" : \"true\"}}"; - } - private RaceLogIdentifier createIdentifier(String groupName, String raceColumnName, String fleetName) { RegattaLikeIdentifier regattaLike = mock(RegattaLikeIdentifier.class); when(regattaLike.getName()).thenReturn(groupName); From 73653ec3b75c9925a7647a7873bfed7069fbf549 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sat, 26 Sep 2015 10:07:25 +0200 Subject: [PATCH 415/504] avoido use of Hamcrest anyOf matcher; there was an incompatible change between 1.1 and 1.3, and Maven seems to use something different than Eclipse... --- .../impl/components/management/TestMemoryMonitorAction.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/management/TestMemoryMonitorAction.java b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/management/TestMemoryMonitorAction.java index 4e94ee7273b..70b150dda68 100644 --- a/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/management/TestMemoryMonitorAction.java +++ b/java/com.sap.sse.datamining.test/src/com/sap/sse/datamining/impl/components/management/TestMemoryMonitorAction.java @@ -1,8 +1,8 @@ package com.sap.sse.datamining.impl.components.management; -import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.Collections; @@ -15,7 +15,6 @@ import com.sap.sse.datamining.test.util.components.management.Test_MemoryMonitor public class TestMemoryMonitorAction { - @SuppressWarnings("unchecked") @Test public void testSimpleActionOrdering() { MemoryMonitorAction low = new Test_MemoryMonitorAction(0.8); @@ -27,7 +26,7 @@ public class TestMemoryMonitorAction { List expectedOrder1 = Arrays.asList(high1, high2, medium, low); List expectedOrder2 = Arrays.asList(high2, high1, medium, low); - assertThat(actions, anyOf(is(expectedOrder1), is(expectedOrder2))); + assertTrue(actions.equals(expectedOrder1) || actions.equals(expectedOrder2)); } @Test From 47185ef08d60a26a9d498d9d13fa3f5229d3b6d3 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 28 Sep 2015 11:05:21 +0200 Subject: [PATCH 416/504] Fixed ordering of fleets by name to use NaturalComparator --- .../com/sap/sailing/gwt/ui/shared/race/FleetMetadataDTO.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/FleetMetadataDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/FleetMetadataDTO.java index 6f5bd7cb243..59dd4af0c35 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/FleetMetadataDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/FleetMetadataDTO.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.ui.shared.race; import com.google.gwt.user.client.rpc.IsSerializable; +import com.sap.sse.common.util.NaturalComparator; public class FleetMetadataDTO implements IsSerializable, Comparable { @@ -35,7 +36,7 @@ public class FleetMetadataDTO implements IsSerializable, Comparable Date: Mon, 28 Sep 2015 11:26:47 +0200 Subject: [PATCH 417/504] Adds dialog allowing for the creation of a default regatta leaderboard after regatta creation --- .../adminconsole/AbstractOkCancelDialog.java | 35 ++++++++++++++++ ...CreateDefaultRegattaLeaderboardDialog.java | 41 +++++++++++++++++++ .../adminconsole/RegattaManagementPanel.java | 9 ++++ .../sailing/gwt/ui/client/StringMessages.java | 1 + .../gwt/ui/client/StringMessages.properties | 1 + .../ui/client/StringMessages_de.properties | 1 + 6 files changed, 88 insertions(+) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractOkCancelDialog.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractOkCancelDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractOkCancelDialog.java new file mode 100644 index 00000000000..9ad73fbf9af --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractOkCancelDialog.java @@ -0,0 +1,35 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.Panel; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.gwt.client.ErrorReporter; + +public abstract class AbstractOkCancelDialog extends AbstractCancelableDialog { + + protected Button okButton; + + public AbstractOkCancelDialog(SailingServiceAsync sailingService, StringMessages stringMessages, + ErrorReporter errorReporter) { + super(sailingService, stringMessages, errorReporter); + } + + protected void addButtons(Panel buttonPanel) { + super.addButtons(buttonPanel); + okButton = new Button(stringMessages.ok()); + okButton.setTitle(stringMessages.canOnlyBeEditedBeforeStartingTracking()); + okButton.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + ok(); + } + }); + buttonPanel.add(okButton); + } + + protected abstract void ok(); + +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java new file mode 100644 index 00000000000..7c05b48326e --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java @@ -0,0 +1,41 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.sap.sailing.domain.common.RegattaIdentifier; +import com.sap.sailing.domain.common.RegattaName; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.RegattaDTO; +import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; +import com.sap.sse.gwt.client.ErrorReporter; + +public class CreateDefaultRegattaLeaderboardDialog extends AbstractOkCancelDialog{ + + private RegattaDTO regatta; + + public CreateDefaultRegattaLeaderboardDialog(SailingServiceAsync sailingService, StringMessages stringMessages, + ErrorReporter errorReporter, RegattaDTO regatta) { + super(sailingService, stringMessages, errorReporter); + this.regatta = regatta; + setupUi(); + } + + @Override + protected void ok() { + RegattaIdentifier regattaIdentifier = new RegattaName(regatta.getName()); + sailingService.createRegattaLeaderboard(regattaIdentifier, regatta.getName(), new int[]{}, + new AsyncCallback() { + @Override + public void onFailure(Throwable t) { + errorReporter.reportError("Error trying to create default regatta leaderboard for " + regatta.getName() + + ": " + t.getMessage()); + } + + @Override + public void onSuccess(StrippedLeaderboardDTO result) { + hide(); + } + }); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaManagementPanel.java index a75c1af581a..e3e8ee8415f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaManagementPanel.java @@ -156,12 +156,21 @@ public class RegattaManagementPanel extends SimplePanel implements RegattasDispl @Override public void ok(RegattaDTO newRegatta) { createNewRegatta(newRegatta); + openCreateDefaultRegattaLeaderboardDialog(newRegatta); } }); dialog.ensureDebugId("RegattaCreateDialog"); dialog.show(); } + private void openCreateDefaultRegattaLeaderboardDialog(final RegattaDTO newRegatta){ + CreateDefaultRegattaLeaderboardDialog dialog = new CreateDefaultRegattaLeaderboardDialog(sailingService, stringMessages, errorReporter, newRegatta); + dialog.ensureDebugId("CreateDefaultRegattaLeaderboardDialog"); + dialog.setText(stringMessages.createDefaultRegattaLeaderboard()); + dialog.setTitle(stringMessages.createDefaultRegattaLeaderboard()); + dialog.show(); + } + private void createNewRegatta(final RegattaDTO newRegatta) { LinkedHashMap seriesStructure = new LinkedHashMap(); for (SeriesDTO seriesDTO : newRegatta.series) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index b75ca90445b..685a7b5b5c9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1387,4 +1387,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String tabbedResultsPresenter(); String polarResultsPresenter(); String dataMiningRetrieval(); + String createDefaultRegattaLeaderboard(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 20eadd66304..a7db4837cac 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -427,6 +427,7 @@ scoringSchemeLowPointWithEliminationsAndRoundsWinnerGets07Description=A variant scoringSystem=Scoring system createFlexibleLeaderboard=Create flexible leaderboard createRegattaLeaderboard=Create regatta leaderboard +createDefaultRegattaLeaderboard=Create default regatta leaderboard editFlexibleLeaderboard=Edit flexible leaderboard editRegattaLeaderboard=Edit regatta leaderboard defaultRegatta=Default regatta diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index a4be68f976d..f6ea661b9ef 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -428,6 +428,7 @@ scoringSchemeLowPointWithEliminationsAndRoundsWinnerGets07Description=Eine Varia scoringSystem=Bepunktungssystem createFlexibleLeaderboard=Flexible Rangliste anlegen createRegattaLeaderboard=Rangliste für Regatta anlegen +createDefaultRegattaLeaderboard=Standard-Rangliste für Regatta anlegen editFlexibleLeaderboard=Flexible Rangliste ändern editRegattaLeaderboard=Rangliste für Regatta ändern defaultRegatta=Regatta automatisch wählen/anlegen From efd442851a2c8911eae0fe78d6620a63475e88c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Mon, 28 Sep 2015 13:16:55 +0200 Subject: [PATCH 418/504] Fixes bug 3232: Better tool tip for regatta log's 'Denote for RaceLog tracking'? --- .../RaceLogTrackingEventManagementImagesBarCell.java | 2 +- .../main/java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_de.properties | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementImagesBarCell.java index 690b3d8525a..8c5f4bf10f5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementImagesBarCell.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementImagesBarCell.java @@ -30,7 +30,7 @@ public class RaceLogTrackingEventManagementImagesBarCell extends ImagesBarCell { protected Iterable getImageSpecs() { ArrayList result = new ArrayList(); - result.add(new ImageSpec(ACTION_DENOTE_FOR_RACELOG_TRACKING, stringMessages.denoteForRaceLogTracking(), + result.add(new ImageSpec(ACTION_DENOTE_FOR_RACELOG_TRACKING, stringMessages.denoteAllRacesForRaceLogTrackingShorctut(), makeImagePrototype(resources.denoteForRaceLogTracking()))); result.add(new ImageSpec(ACTION_COMPETITOR_REGISTRATIONS, stringMessages.competitorRegistrations(), makeImagePrototype(resources.competitorRegistrations()))); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index b75ca90445b..50be91a6802 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1387,4 +1387,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String tabbedResultsPresenter(); String polarResultsPresenter(); String dataMiningRetrieval(); + String denoteAllRacesForRaceLogTrackingShorctut(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 20eadd66304..02162053c0d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1355,3 +1355,4 @@ resultsChart=Results Chart tabbedResultsPresenter=Tabbed Results Presenter polarResultsPresenter=Polar Results Presenter dataMiningRetrieval=Data Retrieval +denoteAllRacesForRaceLogTrackingShorctut=Shortcut to denote all races for racelog tracking \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index a4be68f976d..8b2a8c478db 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1344,3 +1344,4 @@ resultsChart=Ergebnis-Diagramm tabbedResultsPresenter=Tab Ergebnis-Darsteller polarResultsPresenter=Polar Ergebnis-Darsteller dataMiningRetrieval=Datenbeschaffung +denoteAllRacesForRaceLogTrackingShorctut=Alle rennen für racelog tracking markieren \ No newline at end of file From ca5db520b97f8d9053c8e78d653b79f82a75210b Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 28 Sep 2015 14:54:36 +0200 Subject: [PATCH 419/504] Adjusted layout of mobile regatta progress --- .../mobile/partials/eventsteps/EventSteps.gss | 33 +++++++++++-------- .../partials/eventsteps/EventStepsPhase.java | 3 +- .../eventsteps/EventStepsPhase.ui.xml | 6 ++-- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss index 8ca5f79a5b2..512941e868a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss @@ -10,32 +10,38 @@ } .eventsteps_phases_phase { font-size: 1rem; - width: 50%; + width: 100%; display: inline-block; padding: 0 0.666666666666666em; vertical-align: top; } +.eventsteps_phases_phase:last-child { + margin-bottom: 0.333333333333333em +} .eventsteps_phases_phaseinactive { color: #999; } -.eventsteps_phases_phase:nth-child(2n-1) { - padding-right: 0.333333333333333em; -} -.eventsteps_phases_phase:nth-child(2n) { - padding-left: 0.333333333333333em; -} +/* .eventsteps_phases_phase:nth-child(2n-1) { */ +/* padding-right: 0.333333333333333em; */ +/* } */ +/* .eventsteps_phases_phase:nth-child(2n) { */ +/* padding-left: 0.333333333333333em; */ +/* } */ .eventsteps_phases_phase_name { font-size: 0.866666666666667em; font-weight: 600; text-transform: uppercase; - text-align: center; - padding: .666666666666667em 0; +/* text-align: center; */ +/* padding: .666666666666667em 0; */ + display: inline; + vertical-align: middle; } .eventsteps_phases_phase_progressbar { height: 1.266666666666667em; width: 100%; border: 1px solid #dedede; padding: 1px; + margin-bottom: 0.333333333333333em; } .eventsteps_phases_phase_progressbar_fleet { font-size: inherit; @@ -45,17 +51,18 @@ } .eventsteps_phases_phase_progress { text-align: center; - margin: 0.666666666666667em 0; + margin-top: 0.666666666666667em; + margin-bottom: 0.333333333333333em; } img.eventsteps_phases_phase_progress_icon { - display: inline-block; + display: inline; vertical-align: middle; height: 1.133333333333333em; width: 1.133333333333333em; - margin-right: 0.666666666666667em; + margin: 0 0.333333333333333em; } .eventsteps_phases_phase_progress_text { font-size: 0.866666666666667em; - display: inline-block; + display: inline; vertical-align: middle; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java index ed2f315dbf6..a7eaa299ca9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java @@ -8,7 +8,6 @@ import java.util.Map.Entry; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.ImageElement; -import com.google.gwt.dom.client.SpanElement; import com.google.gwt.dom.client.Style.Display; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; @@ -29,7 +28,7 @@ public class EventStepsPhase extends Composite { @UiField DivElement nameUi; @UiField ImageElement checkUi; - @UiField SpanElement progressUi; + @UiField DivElement progressUi; @UiField DivElement fleetsContainerUi; public EventStepsPhase(RegattaProgressSeriesDTO seriesProgress) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.ui.xml index 03cc9fbe001..5305dfde6a4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.ui.xml @@ -5,11 +5,11 @@ -
          -
          +
          - +
          +
          \ No newline at end of file From f1d31385b0fe9056050dc70e0d7d6fa98edf03c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Mon, 28 Sep 2015 13:29:50 +0200 Subject: [PATCH 420/504] Fixes spelling error --- .../src/com/sap/sailing/domain/abstractlog/Revokable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/Revokable.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/Revokable.java index a4643c274a3..abdad5cd632 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/Revokable.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/Revokable.java @@ -11,7 +11,7 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; * the event-iterators of the {@code RaceLog} ({@link RaceLog#getUnrevokedEvents()}, * {@link RaceLog#getUnrevokedEventsDescending()}). *

          - * The event {@code r} can only successufully revoke {@code e}, if {@code r}'s priority is higher + * The event {@code r} can only successfully revoke {@code e}, if {@code r}'s priority is higher * (author prio, timepoint), and if {@code e} is of an event type that implements {@code Revokable}. * @author Fredrik Teschke * From 3b19a22de4087a7e3be5d0ca6d4a78daa0db02aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Mon, 28 Sep 2015 14:56:19 +0200 Subject: [PATCH 421/504] Add delete button to course layout feature of RaceLog Tracking --- .../adminconsole/CourseManagementWidget.java | 1 + ...RaceLogTrackingCourseDefinitionDialog.java | 26 ++++++++++++++++++- .../sailing/gwt/ui/client/SailingService.java | 3 +++ .../gwt/ui/client/SailingServiceAsync.java | 3 +++ .../gwt/ui/server/SailingServiceImpl.java | 23 ++++++++++++++++ 5 files changed, 55 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java index d0fbe2008fd..4b25ef55602 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java @@ -103,6 +103,7 @@ public abstract class CourseManagementWidget implements IsWidget { } } }); + waypoints.getTable().addColumn(waypointsActionColumn); waypoints.getSelectionModel().addSelectionChangeHandler(new Handler() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCourseDefinitionDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCourseDefinitionDialog.java index 10931edfc9b..194def283a5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCourseDefinitionDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCourseDefinitionDialog.java @@ -1,5 +1,7 @@ package com.sap.sailing.gwt.ui.adminconsole; +import java.util.Set; + import com.google.gwt.cell.client.FieldUpdater; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; @@ -47,7 +49,29 @@ public class RaceLogTrackingCourseDefinitionDialog extends RaceLogTrackingDialog }); marksBtnsPanel.add(addMark); - + Button removeMark = new Button(stringMessages.remove(stringMessages.mark())); + removeMark.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + Set marksToRemove = marks.getSelectionModel().getSelectedSet(); + + for (MarkDTO markToRemove : marksToRemove) { + sailingService.revokeMarkDefinitionEventInRaceLog(leaderboardName, raceColumnName, fleetName, markToRemove, new AsyncCallback() { + + @Override + public void onSuccess(Void result) { + refresh(); + } + + @Override + public void onFailure(Throwable caught) { + } + }); + } + } + }); + marksBtnsPanel.add(removeMark); + Button cancel = new Button(stringMessages.cancel()); cancel.addClickHandler(new ClickHandler() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 109606b72ff..15f1493ed1f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -616,4 +616,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS void setTrackingTimes(RaceLogSetTrackingTimesDTO dto); Pair getTrackingTimes(String leaderboardName, String raceColumnName, String fleetName); + + void revokeMarkDefinitionEventInRaceLog(String leaderboardName, String raceColumnName, String fleetName, + MarkDTO markDTO); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index e0ca83cb0c6..17d74d4ef32 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -719,4 +719,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void getTrackingTimes(String leaderboardName, String raceColumnName, String fleetName, AsyncCallback> callback); + + void revokeMarkDefinitionEventInRaceLog(String leaderboardName, String raceColumnName, String fleetName, + MarkDTO markDTO, AsyncCallback callback); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 5d37a081c30..8b0a0624bd5 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -79,6 +79,7 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.FlagPoleSta import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.ReadonlyGateStartRacingProcedure; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.ReadonlyRRS26RacingProcedure; import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogCloseOpenEndedDeviceMappingEvent; +import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogDefineMarkEvent; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.DefinedMarkFinder; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogOpenEndedDeviceMappingCloser; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogTrackingStateAnalyzer; @@ -4994,6 +4995,28 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S raceLog.add(event); } + @Override + public void revokeMarkDefinitionEventInRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO) { + RaceLog raceLog = getRaceLog(leaderboardName, raceColumnName, fleetName); + + final List raceLogDeviceMarkMappingEvents = new AllEventsOfTypeFinder<>(raceLog, /* only unrevoked */ true, RaceLogDefineMarkEvent.class).analyze(); + + RaceLogEvent eventToRevoke = null; + for (RaceLogEvent event : raceLogDeviceMarkMappingEvents) { + RaceLogDefineMarkEvent defineMarkEvent = (RaceLogDefineMarkEvent) event; + if (defineMarkEvent.getMark().getId().toString().equals(markDTO.getIdAsString())){ + eventToRevoke = event; + } + } + + if (eventToRevoke != null){ + RaceLogEvent event = RaceLogEventFactory.INSTANCE.createRevokeEvent(getService().getServerAuthor(), raceLog.getCurrentPassId(), eventToRevoke, "Revoked by AdminConsole (RaceLogTracking)"); + raceLog.add(event); + } else { + logger.warning("Could not revoke event for mark "+markDTO.getIdAsString()+". Mark not found in RaceLog."); + } + } + @Override public Iterable getMarksInRaceLog(String leaderboardName, String raceColumnName, String fleetName) { RaceLog raceLog = getRaceLog(leaderboardName, raceColumnName, fleetName); From d28595c6e56149ac0b9db6433d7b8d4e2c122c2f Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Mon, 28 Sep 2015 16:22:26 +0200 Subject: [PATCH 422/504] Fixed layout bug caused by unneccesarry z-index in desktop Stage --- .../com/sap/sailing/gwt/home/desktop/partials/stage/Stage.gss | 1 - .../sap/sailing/gwt/home/desktop/partials/stage/Stage.ui.xml | 3 --- 2 files changed, 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/Stage.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/Stage.gss index 12db23a34a5..926374a21bf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/Stage.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/Stage.gss @@ -7,7 +7,6 @@ -ms-backface-visibility: hidden; -o-backface-visibility: hidden; backface-visibility: hidden; - z-index: 1; } .swiperslide { font-size: 15px; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/Stage.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/Stage.ui.xml index 5ce3172c035..c9dd3fbfcb6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/Stage.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/Stage.ui.xml @@ -10,9 +10,6 @@

          -
          -
          -
From ff73911117d42f59e9eb15b46d2a9fbb23d17e25 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 29 Sep 2015 09:33:51 +0200 Subject: [PATCH 423/504] fixing bug 3301: NPE when copying competitors from race that has no course set --- .../impl/RaceLogTrackingAdapterImpl.java | 49 ++++++++++--------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java index 6922a252cc4..2cc56a1a4e4 100755 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java @@ -205,33 +205,36 @@ public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter { SharedDomainFactory baseDomainFactory, RacingEventService service) { CourseBase course = new LastPublishedCourseDesignFinder(fromRaceLog).analyze(); final Set marks = new HashSet<>(); - course.getWaypoints().forEach(wp->Util.addAll(wp.getMarks(), marks)); + if (course != null) { + course.getWaypoints().forEach(wp->Util.addAll(wp.getMarks(), marks)); + } final Set competitors = new RegisteredCompetitorsAnalyzer<>(fromRaceLog).analyze(); final List raceLogDeviceMarkMappingEvents = new AllEventsOfTypeFinder<>(fromRaceLog, /* only unrevoked */ true, RaceLogDeviceMarkMappingEvent.class).analyze(); for (RaceLog toRaceLog : toRaceLogs) { - if (course == null || !new RaceLogTrackingStateAnalyzer(toRaceLog).analyze().isForTracking()) { - continue; + if (new RaceLogTrackingStateAnalyzer(toRaceLog).analyze().isForTracking()) { + if (course != null) { + CourseBase newCourse = new CourseDataImpl("Copy of \"" + course.getName() + "\""); + TimePoint now = MillisecondsTimePoint.now(); + int i = 0; + revokeAlreadyDefinedMarks(toRaceLog, service.getServerAuthor()); + for (Waypoint oldWaypoint : course.getWaypoints()) { + newCourse.addWaypoint(i++, oldWaypoint); + } + for (Mark mark : marks) { + RaceLogEvent event = RaceLogEventFactory.INSTANCE.createDefineMarkEvent(now, + service.getServerAuthor(), toRaceLog.getCurrentPassId(), mark); + toRaceLog.add(event); + } + for (RaceLogEvent raceLogDeviceMarkMappingEvent : raceLogDeviceMarkMappingEvents) { + toRaceLog.add(raceLogDeviceMarkMappingEvent); + } + int passId = toRaceLog.getCurrentPassId(); + RaceLogEvent newCourseEvent = RaceLogEventFactory.INSTANCE.createCourseDesignChangedEvent(now, + service.getServerAuthor(), passId, newCourse); + toRaceLog.add(newCourseEvent); + } + registerCompetitors(service, toRaceLog, competitors); } - CourseBase newCourse = new CourseDataImpl("Copy of \"" + course.getName() + "\""); - TimePoint now = MillisecondsTimePoint.now(); - int i = 0; - revokeAlreadyDefinedMarks(toRaceLog, service.getServerAuthor()); - for (Waypoint oldWaypoint : course.getWaypoints()) { - newCourse.addWaypoint(i++, oldWaypoint); - } - for (Mark mark : marks) { - RaceLogEvent event = RaceLogEventFactory.INSTANCE.createDefineMarkEvent(now, - service.getServerAuthor(), toRaceLog.getCurrentPassId(), mark); - toRaceLog.add(event); - } - for (RaceLogEvent raceLogDeviceMarkMappingEvent : raceLogDeviceMarkMappingEvents) { - toRaceLog.add(raceLogDeviceMarkMappingEvent); - } - int passId = toRaceLog.getCurrentPassId(); - RaceLogEvent newCourseEvent = RaceLogEventFactory.INSTANCE.createCourseDesignChangedEvent(now, - service.getServerAuthor(), passId, newCourse); - toRaceLog.add(newCourseEvent); - registerCompetitors(service, toRaceLog, competitors); } } From 5ac689a083e7d039d4013219b109d97bba390f59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Tue, 29 Sep 2015 10:00:03 +0200 Subject: [PATCH 424/504] Remove unused import --- .../main/java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 74f28f28ebd..e825ba54a7f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -3,7 +3,6 @@ package com.sap.sailing.gwt.ui.client; import com.google.gwt.core.client.GWT; import com.google.gwt.i18n.client.LocalizableResource.DefaultLocale; import com.google.gwt.json.client.JSONValue; -import com.google.gwt.safehtml.shared.SafeHtml; import com.sap.sse.gwt.client.DefaultRule_0_1_2_n; import com.sap.sse.gwt.client.DefaultRule_0_1_n; import com.sap.sse.gwt.client.DefaultRule_1_0n; From 5a4299ed7d9d9aef0a71c466f9706f1476c9d9da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Tue, 29 Sep 2015 10:22:15 +0200 Subject: [PATCH 425/504] Harmonize Competitor Invitation Feature --- .../gwt/ui/adminconsole/CompetitorPanel.java | 15 ++++++++++----- ...gTrackingCompetitorRegistrationsDialog.java | 18 +++++++++--------- .../sailing/gwt/ui/client/StringMessages.java | 1 + .../gwt/ui/client/StringMessages.properties | 1 + .../gwt/ui/client/StringMessages_de.properties | 1 + 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java index ee91faf8c88..40400c7600f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java @@ -102,17 +102,22 @@ public class CompetitorPanel extends SimplePanel { //only if this competitor panel is connected to a leaderboard, we want to enable invitations if (leaderboardName != null) { - final Button inviteCompetitorsButton = new Button(stringMessages.inviteCompetitors()); + final Button inviteCompetitorsButton = new Button(stringMessages.inviteSelectedCompetitors()); inviteCompetitorsButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { Set competitors = competitorSelectionModel.getSelectedSet(); - boolean emailProvidedForAll = isEmailProvidedForAll(competitors); - if (emailProvidedForAll) { - openChooseEventDialogAndSendMails(competitors); + if (competitors.size() == 0){ + Window.alert(stringMessages.selectAtLeastOneCompetitorForInvitation()); } else { - Window.alert(stringMessages.notAllCompetitorsProvideEmail()); + boolean emailProvidedForAll = isEmailProvidedForAll(competitors); + + if (emailProvidedForAll) { + openChooseEventDialogAndSendMails(competitors); + } else { + Window.alert(stringMessages.notAllCompetitorsProvideEmail()); + } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java index be989c7832c..b48427cb31a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java @@ -77,19 +77,19 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi @Override public void onClick(ClickEvent event) { Collection competitorsToInvite = null; + if (registeredCompetitorsTable.getSelectionModel().getSelectedSet().size() > 0){ competitorsToInvite = registeredCompetitorsTable.getSelectionModel().getSelectedSet(); - } else { - Collection competitors = registeredCompetitorsTable.dataProvider.getList(); - competitorsToInvite = new ArrayList(competitors); - } - - boolean emailProvidedForAll = isEmailProvidedForAll(competitorsToInvite); + boolean emailProvidedForAll = isEmailProvidedForAll(competitorsToInvite); - if (emailProvidedForAll) { - openChooseEventDialogAndSendMails(competitorsToInvite); + if (emailProvidedForAll) { + openChooseEventDialogAndSendMails(competitorsToInvite); + } else { + Window.alert(stringMessages.notAllCompetitorsProvideEmail()); + } + } else { - Window.alert(stringMessages.notAllCompetitorsProvideEmail()); + Window.alert(stringMessages.selectAtLeastOneCompetitorForInvitation()); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index e825ba54a7f..04d41b37b60 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -283,6 +283,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String refreshIntervalMustBeGreaterThanXSeconds(String seconds); String competitorCharts(); String selectAtLeastOneCompetitor(); + String selectAtLeastOneCompetitorForInvitation(); String directionChange(); String speedChange(); String degreesShort(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 0adebc29b64..a350e6419b5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -290,6 +290,7 @@ refreshInterval=Refresh interval (s) refreshIntervalMustBeGreaterThanXSeconds=Refresh interval must be greater than {0} seconds competitorCharts=Competitor Chart selectAtLeastOneCompetitor=To show the competitor charts, select at least one competitor +selectAtLeastOneCompetitorForInvitation=To send invitation E-Mails, select at least one competitor directionChange=Direction change speedChange=Speed change degreesShort=deg diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index aab7aae3039..7250c721c33 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -291,6 +291,7 @@ refreshInterval=Aktualisierungs-Interval (s) refreshIntervalMustBeGreaterThanXSeconds=Aktualisierungs-Interval muss größer als {0} Sekunden sein competitorCharts=Teilnehmer-Diagramme selectAtLeastOneCompetitor=Um die Teilnehmer-Diagramme anzeigen zu lassen, wähle mindestens einen Teilnehmer aus +selectAtLeastOneCompetitorForInvitation=Um Einladungen zu versenden, wähle mindestens einen Teilnehmer aus directionChange=Richtungsänderung speedChange=Geschwindigkeitsänderung degreesShort=deg From 6121d2963840fb3b853b624e66cf020b81f9318b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Tue, 29 Sep 2015 10:33:41 +0200 Subject: [PATCH 426/504] Remove AbstractOkCancelDialog --- .../adminconsole/AbstractOkCancelDialog.java | 35 ------------------- ...CreateDefaultRegattaLeaderboardDialog.java | 23 ++++++++++-- 2 files changed, 20 insertions(+), 38 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractOkCancelDialog.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractOkCancelDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractOkCancelDialog.java deleted file mode 100644 index 9ad73fbf9af..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractOkCancelDialog.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.sap.sailing.gwt.ui.adminconsole; - -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.Panel; -import com.sap.sailing.gwt.ui.client.SailingServiceAsync; -import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sse.gwt.client.ErrorReporter; - -public abstract class AbstractOkCancelDialog extends AbstractCancelableDialog { - - protected Button okButton; - - public AbstractOkCancelDialog(SailingServiceAsync sailingService, StringMessages stringMessages, - ErrorReporter errorReporter) { - super(sailingService, stringMessages, errorReporter); - } - - protected void addButtons(Panel buttonPanel) { - super.addButtons(buttonPanel); - okButton = new Button(stringMessages.ok()); - okButton.setTitle(stringMessages.canOnlyBeEditedBeforeStartingTracking()); - okButton.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - ok(); - } - }); - buttonPanel.add(okButton); - } - - protected abstract void ok(); - -} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java index 7c05b48326e..acfdfc2c4c1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java @@ -1,6 +1,10 @@ package com.sap.sailing.gwt.ui.adminconsole; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.Panel; import com.sap.sailing.domain.common.RegattaIdentifier; import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; @@ -9,9 +13,10 @@ import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; import com.sap.sse.gwt.client.ErrorReporter; -public class CreateDefaultRegattaLeaderboardDialog extends AbstractOkCancelDialog{ +public class CreateDefaultRegattaLeaderboardDialog extends AbstractCancelableDialog{ private RegattaDTO regatta; + private Button okButton; public CreateDefaultRegattaLeaderboardDialog(SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter, RegattaDTO regatta) { @@ -19,8 +24,20 @@ public class CreateDefaultRegattaLeaderboardDialog extends AbstractOkCancelDialo this.regatta = regatta; setupUi(); } - - @Override + + protected void addButtons(Panel buttonPanel) { + super.addButtons(buttonPanel); + okButton = new Button(stringMessages.ok()); + okButton.setTitle(stringMessages.canOnlyBeEditedBeforeStartingTracking()); + okButton.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + ok(); + } + }); + buttonPanel.add(okButton); + } + protected void ok() { RegattaIdentifier regattaIdentifier = new RegattaName(regatta.getName()); sailingService.createRegattaLeaderboard(regattaIdentifier, regatta.getName(), new int[]{}, From 40086fc626d27e860d64bdf4223db79b41f7346f Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 29 Sep 2015 15:33:56 +0200 Subject: [PATCH 427/504] remove JSP stuff from target platform --- .../features/target-jsp/feature.xml | 50 ------------------ .../javax.el_2.1.0.v201105211819.jar | Bin 69402 -> 0 bytes ...x.servlet.jsp.jstl_1.2.0.v201105211821.jar | Bin 51761 -> 0 bytes .../javax.servlet.jsp_2.1.0.v201105211820.jar | Bin 115632 -> 0 bytes ...e.jasper.glassfish_2.1.0.v201105210816.jar | Bin 677381 -> 0 bytes ...standard.glassfish_1.2.0.v201105210653.jar | Bin 429212 -> 0 bytes 6 files changed, 50 deletions(-) delete mode 100644 java/com.sap.sailing.targetplatform.base/features/target-jsp/feature.xml delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-jsp/javax.el_2.1.0.v201105211819.jar delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-jsp/javax.servlet.jsp.jstl_1.2.0.v201105211821.jar delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-jsp/javax.servlet.jsp_2.1.0.v201105211820.jar delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-jsp/org.apache.jasper.glassfish_2.1.0.v201105210816.jar delete mode 100644 java/com.sap.sailing.targetplatform.base/plugins/target-jsp/org.apache.taglibs.standard.glassfish_1.2.0.v201105210653.jar diff --git a/java/com.sap.sailing.targetplatform.base/features/target-jsp/feature.xml b/java/com.sap.sailing.targetplatform.base/features/target-jsp/feature.xml deleted file mode 100644 index e2e90ffca51..00000000000 --- a/java/com.sap.sailing.targetplatform.base/features/target-jsp/feature.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - Java Server Pages libraries - - - - NA. - - - - - - - - - - - - - diff --git a/java/com.sap.sailing.targetplatform.base/plugins/target-jsp/javax.el_2.1.0.v201105211819.jar b/java/com.sap.sailing.targetplatform.base/plugins/target-jsp/javax.el_2.1.0.v201105211819.jar deleted file mode 100644 index 6d65ce4813f1060dd64160ef2c8cb42565e7e39a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69402 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

u<{ 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�OdV@msXXg>sH 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 diff --git a/java/com.sap.sailing.targetplatform.base/plugins/target-jsp/javax.servlet.jsp_2.1.0.v201105211820.jar b/java/com.sap.sailing.targetplatform.base/plugins/target-jsp/javax.servlet.jsp_2.1.0.v201105211820.jar deleted file mode 100644 index ff39b580f6dda5cfbbeca0b43cfae98a5b3a6707..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115632 zcmaI7Q;;T1)U8>zZQHhO+qP}Hx@=c>*|uG8*|u$SzJD&x8O7|3$eSH`nUU*Rxweul zC>RmaVK1@8V}y*1I;c3#ds(w+m`Wi& znVZ_!YffH(l-U9-*1P0x(m%0N&77^KmL6ss??V||aD-DVfl>tL*H;6LlYhVE`2VoJ z0-qB!aYaD=Ih-x%1$!5LeTEO;7e1m44iw(|(LbPy_zM=9HiZYE%n370%P z6JY`L@byR;S5#jIJA3^U@Ya}U?rnw--K=1Dgd(a46=izvdij2TD{wQrBZ?spCNf)0 zG{sjGeL^|=!m$LSD*;N8p=v)di%E68=9$HsP!kbPx|VjJE~*m()!qs7?WRI5Vyp(t zz8~{$Zh!I{O8kZ{+IkEkUtta#d}@9gAlv)6+RX%gr4XY*mT(@RF2OT7Dt{d(RSwq(!Mv?yij6u< zT4pGb(V>s*o;MvzduWoAn8c9>8p`ng`*j=nrRcY&KEb|^D_}s#K+n)RjZ#^BK?mVG zYgJ0}%W)cnjCq%H2(E8MmT!R;_b$PRv4FI4hd(5NOBF=>z|O@RwC+URM}1&rerxs9 zrp?-GF5ild;{NY8-6E!9!+~1`(S1wG_@ccJt+vW}!#a&`uHP*kIU5NBAzz2B@OxhP ze3qS9aVh>+JwL2(o7PgtFm83pYb3a30xogVPxifQ_oN0u?r5 zU~p-1r@m%zbPw>cw&H{x=LI}j!7E!C11qecZ`AV~e+1M0_8w6IF%=Kp&iq5cXM6rWL~8i)$6xBPIKJ8np&E2 zzIBzpa#huGswARJ`IO>#ATL$Z4OOZPq8@<3JVrE4*;Uka50VHbMq+Z`Vnt7Tj5ezJ zzyP9AW=(@W%dXGJrt&TbBZ0dFhLKLiAPYm4B=qC?^fls~b*-o0K`p=TyjSLcvMpC) zg^<`Z#S6*L^=5nlx^b3a(fOXRGwxs!NH0fu#`-`|wT%dy+{W~j*5&O3^PU<;GfSW) zRwbzy=F?`{x!XrDdqT37DCwS50HGJeRHBtokKXvPe`r=$W9xLxE!LEG8a$lhY*f@^ zEipFR)ud}PErT*yYR(^)LyFH{z6O}ZYk&Q{z$6&9Ee?DNS2M?M ztT-x{?&b`&`k3l?I<~t%w3{ax*1s#FG3`e;Prt@DYlgICHq$-9i(xr)fH}LtC-7Zr z%S-tUPaX!jYQ*g#)JBIvlCF2N>bL87;2f4fJCeHdq7;FWsnmXTWB#tko=9|u3cO$7}ASUXwOta`7U3es?ZC?emL_=h;UHWJ~FTM;Z zYy!s46i1;oE%$L2e|7rpv|aReHurbJ?oY#GFsyss`AKkyvvcJ5m@rxVS|*jN1ff44 z3Zi4?W`LS&9EJj1PRw-B zNI>0r_;k~y{+8(`ocJnICI#p-i%T_?xR^-*awA$A*_K895!CnHR+Ew=6Ijbk11|HM zPAymj>m>HyibZS8zb>|-XiCxUhVtIr?JZ@H&^Q@E5n=~MOV28(vQo3;rjBKs## zendXg79Z9ipd2SWK2`>;m4aZzm6b4Fm{N{J(UH6OxHM#TA$GKFxe}CRx~8rjiJ7=N z!zDCHiwos0>a{Vd2fU7McbM{+Y{3o`rVH;9*) zg*_7<*@bQ_LlP-PzySO%w|0(dQ}|7m@4Jr0Ur3HKbzfctkSruli(X|-R!62uR}v&qBA2$xL<6&1ViM zWc1xir-FuK5$f@-#QDhj@!52VMxapj7I^MhVNnAF0O%SlVIBPER48X|#pKv=K&h;4 zjoIun3DW$%&1CFZo@DtchQEJV9)Y#X`KNA~N_7d#^9sAH+2eV`_3NXp$Fu#E?jOyL z#mswi-*d%|N}@vNzZnt=+t0TVW3koX$+`yIsFD$ifR4Nw^M_{1eQQ-_SF@IkeD_~O zC0R%)-vaN-A7~(;8GIlhrT?WNxBp)n66k+xNO4g)X(d&02?kY(8ZGIRe`grmnquFP zdQS&EL@df+!!cg462jPG5CiffV?>2htUn);8k(z1F&b{SOMkkD-fx^{mj4lfyQ_ZG zl^SX&rw90C^-T)|%z3%|Oo#;=F4v(*6)nE)FUs=%5HC*E?AH16{_`rko)frnz38QrE9`>A*0T0nMrHn3? zbl7=W60>QHA*68mZ%ChOYO8hzfP3~n^8B#)#F3VP9p8EXc>kO%?=a?XF*rGSQ+jE( z=1Ie<#H$F^vSm7lST6i!aV%_Vep&pmAVC8W-8a@4fw{TyXeS3N*=9;ZMp+h=0_#W` zS7wUn@zGnSEI^xOD%O(*){D1tX3v)vg9P4OB}ZCN^=Rq|)6ROuTWhZQvYveZF zu2i=Z0{_wN`#L-oR0||>Boyr4a_J=o^llqHY%MAIbui#5^oVfDy;{74y6&0Df4`%R z942$`LRTBOt5vF+#0Kv8w1ntMURqcL5MR8S;sk>X9?J zWJ}_CL9>7;I%NtMe~n-E(>MN8o33M0S~_?B6O7E>?Lu42#N;rfGRnES7MCt0=0&md zg@!LY9cQh*SR_LF*mk3E>BAhF-MAOW4KWn4MILS57x-c5p@)e~Dqg5B<$`ZpE9BQX z63svL>kiMPl$u_|cXq}pxKU3L#+?eio;PjQK5f3TougL*dd|sbcx^{^`zu}fG3pFw z`A@_@-2QS%k_6>Vo0GsiP-E;iQWEwO%LB8V?NVq`9^jK#$nkas38J_Du{*7DkLK8q zJOrhQ!{k;yb?@6-FEvkN_Y@60?=<6hS6$Ajnm@X!`2ozuN#XFuAqp`~M+fTxZt*St zTu^&lJvycNJ^`#pmsX@!SM;`&VX5tBTuU_DDC$11OT$Z(!4NIDE{75^hx?_mCB2v7 zrq#tYO zaJnO)$+GQvHJ}@}8-uOIn)gFN?I2srGjIQv7mb7S>q#odgkb!1UDxn?f=`Mr7&f%3 zT8iLvA+ns+Xt~wd2ICtt|Adpzo}=A$N2{toYD9>w4Knmkxq%ahepAhGqg{YC@E z@`+pn7`N$ZkDvUT*mE|AySS#ff1mS4zx~p9)V88*NtG1nc{KL|D(6Q zlw{Wd(@ly;Q}r4qrXifwd;7v(9pa6R$dELUGq6ovdkC9waXV#`3W`j7`|su&9S~&6 zqVEf*$HAHBR&=1Jz3>8Z_4<0gy(f73I=@Z7FxqnSFB&yrK@P2O;uh&~oE%YXddy#- zM)1w5TAKZauAX>=#d3efwR_!yVb70&o(UAN2APFokclBTQwyjH^8CSugv!*Z-TQZv z*V6p$g$Y%CQ(Y-u9PGd6k#I;4C{*sBch*|YkP{OH`3iZ7u%{O)2s0dem=dVqaQO|8 zJ}Voud%qbm-GW-0Ihm{^u$37(7zuh=f&x=0bu4}xo-lP=2(4`@Mh+$u9oB@2(*MJv-!7@7i5X1Ho^v zW|$tc9i!l62Y0X@;zW1cC-AsCY&darnbt;Q14E^zRoi23PAj43GwLA-KIU0>??5$) zrL!JKPs3k%&FQZTFrh#Q_|rMzIaSWJBDa4GTx6JrOnh+Vxccas(R};HbjuDmUh^1u zoC0Yu#E%gd+4ek>^|obIT0zr^&L;OaUR>=UJqC$a7|aH(7ESj3SAjj3OxwUkN~n1U zaY;z~Oh7xwrh7)T{b4h|MH{}3N!VJ*TT%MX@PX<8BiK{M?HWT18hH*93Wm15FZY_{ z?*aCB?z{Zv0*pt=DGZ5rmQ3?2^dalgc{hv|g5OlP?EKi@Du7&%SXq?h9Bme$*N_4| zPWjCj$^Jg*3CK2r(B+b8>oA{|Vg~-C>zRRQ9rDkCdrFOp)tf z?~-267HMize;F9(#q=GO61ao|CeLWrOXF;`@2LjI?DUGQhrJ|FL{Ry?R0X@cnt6+h zPOq4nKWQXhq??sHnvd6O>JfR9Vd4Z?QXLcF9x=1AYuzMYZdasV*}Tb^x10Va17I*S zNR{Q!8xBlAP__1eGYadO!CItJn}>Y19fPe$b?WqMXzLYBC#QtVw5zvymzO2%8-g8$ z9=*|kt@BEti8bN=A1o+|P3&V)?JrEuOtD}VR-PC&4z4$toC%VeTLlNjsk?$3V?zfp zN8`NVzAs-oF^)J(n^Yi%t=qNv*QutnfHUVaV30_b~BduY|6$X!X1 zh{7h>f|iq67X4`yK3|C);hA%O%$EZsEHR4=gRbobOI^&C)>ljC&;P0Cj^<>IuPaIM=NQ)Z?Kzx zj7jUq0dCK7z)zsm`TJB{RA)WW2E79GbYZ3Av9)#aEgg5>}hvuu22?FwN9uriw zz7?&_l$Sx4;yd@A)radTEcH8TM1Hg6y^a6yLOYWqMH=D0H{7TQ)>%=ik#gURZ&l_t zn_>xH)^A~GVg&BFDv-K z-H7)(2hE?Kua&QsRc%*Z{$^MUG{35T*59!2;}iI`JIL#}vwIy5x&l9w9`WS*S)u$XqE={XwesEARVQgDYCOS&Cf z&&QI)w&`FdT0=NGzCr^?fA+ymj7Is-*czIU7@SQ;Bsfx7htj6u=SY8iKBY&msaEng z_+Vac>fpS8MK+AP?#H&kq;+3aPp;k51B>Zplwi~Ejq}+4z&E&ssc6m(c55#_L;Q+c zeNB%$S$<)aqaBuYf#sKNwr0472f&v!m>b${%-?n)uYT}X{r1^2H2Bqo!CeAyYwwNK zn&Z4NIQAyrxge%?Iylr<%D8Efl(f-faqGG7&Q`_8V&1(a#4cFLU~ldRb`y~ME_jk) zLBrrxXPIRAf(N6+j%IF3a%Q#O_#@{!>HPDVc*$#n72ftVHi^HjRrX3(SzALx;_!A} z(qWVV_yigp7+XdJeJI(m`HoXquCT;p^I%a-hyzC-P;a`}Moj8mFLivYG4MbyQ z=RS_~#2XKEcZLaP92B`GF~AM#ymMkVrG;SL{TOC;Y7$J%G=MsFMmB1gl)7@RB_KnftP4zkFMZHZqcC6dbv(W-^T$Pt zOB##1`%KN4?D%74OBRlcCBPl{i`fTLV_Y((SpIdnnIIN$k~0Q7Q9DoA`M8jlVGV$i znTLlHxbs$xW&c$fkKoj;QvSFA2f6BzhB5sax8SBNjep|9>fUjpFMcwG`OIO7%EZD4 z5&77D6(j-Y$uTq|F^EkyPpCE7fl)tS%f|r0)HjlLdE^ zI;#q6D%f#HdCYS;nAUxr@P+d=L6|k?PK)p(Myu-GF!Fbzk7uJb)yzmObRC;zt_S<4 zGQ+8tlKyg8w8#(tC7(8cJlb198Ty~8>2hgLYuyk+Yn$sAq+^%{9995q4ZA9TwBs^K^4pvPWV%K)d(bKBZh{|Mt;74_3!9kH)YCG6O^k{8KSm3Gh+xRTTaB^Xlnxp z#mWYcJLI-c8lCWO*eUgvCNxDB9Gz8qgsLff#X`jKL(KYs@{B$_KWDAWrTcQsz8zT? z506G{)UdN0gs(<=hNNPpotxvdwbw#antzXIOE4f?(dq>Ea6I8xrD~b2xPl>y&P)>6{tIg}_`8gM@Avd^mx=M*FA>zM&Oo+mEMC!0`gR zx*IID4Nn@$St20_B)YjCWoSR8eu82+?!yMSZ(f1r0Sv?C7a|66v41Z;o7ua8J{fVu zZNFPvJ$4?{?xyks$+%esF_?FR<(~S3rd~V~4p`D03~>S8j=#@QZ8Dxw&k5k_jc?w( zoZf-D{=B`!<91d}dbW_aXV30Wt&cV|7?cHRP*8A0L}7cUav$W9A!$g!1CZ>sneL9H zT>mK0hS%0#Ieyl$Rf%&G1L4Lnfdink#rV3BAbf;8T$mJEo<+dF;=Yx4ZWttM7>}&J zQ9Y-inGmw?-c>@az?DQK6o;Zf;n&u{LDe2}jRsF-?C_b_Ov~mBk6<;XM?6VXSGoX(XS4)~%UN6b`_{t8(z`T(v(2zRB!x9c|#!mOxS zon)V9>fXG~2@9Zs0$1S>L-fn|h!W9P3NKmLsaVb$?JJAhhG3(vOlgo^ziD|2REd%JEx6!(#VtV(iauQ+~Q)ZLGD|8F+_uk6io^-kv@K1GYvu(JF?<4gcPscs8 z6)r^|bbt!Zf%C;^uAVm=Kfbx`-L4uz>BG%qV(u{uv1R@}`Df8ty`6S2? zNbe}9jy-K*i+Y}q4a``R@(uf;;I7P`N|7IyioIK7B{K=%=Q5!ib@*y#+(zI*7Ax#?!mkR9M$zTTbQiKYn0JCt{ zYIxb{!P9j$Uf(1=-<4!oS0AmS;fj}$rpzfvLS^vPp+@n!LbEy2$B$*CzkT<#^plA$ z$meL7;Z4y|v-qa%_gy%BTu>F)S4z%5@eQGx%ES|}?bVm#GoXJRwG(?uC`hYF0nl{@ z1&r6a+3D=8w;(CC2wE?&8Jw3@P^;76IHURDZERoMo2zFdFwSE- z-@D<#mBn8^%&SDvx9DW?@zV;b`8gi8RcjDfBY7TgO?`Z+x zWqdsu{*P_$(WnJS1`h-Tf$@LEtl_Nxd-UQz4*TDj1^S=A4hi)?!3>c9+5W5l?Y9g4 zKMvyj*Zp67CMPW_uAnMzD6A^S!o=X_<+iP(>$*9L9`IVX=2EI^4N;oMW{rCq-Eb69 zBWf+y;XsiRNnTIX22nrGKos-+%%9N{Tx{m~p&?(&E`7D$bo!8Yn>zw~-_a+|IGKlX z>t4ZAX2AD&B$(>H;dXHOekt-L?@`nYdH;O5y35yL#R>PFqgnUz`K`CW;cD7ehqE)$ z;}Z;fTX!3v6FYJt)7_)3Pk)=iS=Hj@=}IY3T?gyz>F?|5`n*pcpg*UoIr;p({Sb-x z1`qva!%(YM!^tjd8J0bi{S_XZg4EyF1sFHX;uX%&xNq1;azvXMB@bRmk3) zv{w2l8pSjclI%Jykz5*DCkT5_n{l)s)Ihif&k-I1zuFpxxCVw0N2RlWaj(r(bD(jd zx#ql^?6+|3(s<0pYpBD^lJ0yyp_LPf8BjUDKOo7~@@pwgt-3iPUdheGq0 z_s5eMf>Z`tVeGUU?I)VfNSv0pL;Z|zYc=k8hE^l$TVeiw;Ip}oY`w$$1*ZtQSkG!M zZ0pdYQ&PI6b|AZ_kvyjN?dAEF(V7?Z#CQl&_;3%Rp63H-%Pb8RMfga<-6%{Yl$LUV zl|N-NkmFEJuV3dYBTxUtAo6#P0b#}%kBsKuTy2`6~Y&OyQv+OppC80 zTf-Irp&0=hM0uXuPbDJgpCit11BObyx0D_;e_@8Ro19dRfvE_#$_$|^Y!Z-VP#q=Y z%si~ZNB`Ni62hrN6%GA})7hhGAlu6#G}YC<>_Vm!6e)d4(9IyT2}u3HG}gAs%m*C4Jg48e+-1~;6R?zo7sF5>|RLLq_q=Fm(% zQX&3eF6Kc>Y_DehBPp4x=}QIxMswlDtTmk+J({E{X}+9N=C6BdMat?fN$Mv~ z;L70`HL=7>y%c+5&{09aa1b#;UuR!03#wp%KQBgeE}As%)UdjQF$bU|j{Rfp!=4 zN0tYe|9%vZ%|pUZgTz)LULQ$3#v$g{1ufF!|_uq z=~bkX7-5p}tOQBOvK{zKI?3$v`xRSw!kasv$9Vs&O8!<*RKoRqsR`tS9ojIel7zSv zg3Re>F`3&%8}dQffW0i}%ZW=|7^kct#J{@JgF2}yr_Hwew_xq)=kbx{v5R#J3fU&S zG;}rTBy1_7u%MaYgD6ZO?l4u5q042Ubm)D^xm7jaIK3j)ZP|zJP}IY*jDDXh3|var z#AzolZC&sJHl!{{Rg%O4HP_wW{fNJtA?S&w{G<2K3*=n4WAN4Bv?7HsabZFUyFoL0 zHu(OB(c(L8$83To%t^;7__L|5gBTujgshO;GGN=kptpMcEX#n0QRKqO_Y1&u zP4qg}Z?oZZ1qf&kpIXLo#MX6s@0RUwT^aVm@)B5SW6r!eqr-5ij%(nmuVqrQPyPuF={CEI{=d` zf5YonmNy#7b8Jb;W#K+WibwyNM^Oc5mK!Ne!lF{OlJGALlOR3LWb_VJcXsbb6Tc1D zN@752h3SPGz^s8?s8_7Ug6YkQeQ3jXD6AW_`3VAxkA(oWJLW|4xa(V%{DvBx=!ZtsP>@5UBX;G z3;^A#+>e6N;eL+WCjQC8Q&aKhx*_W=W5IdZGV^`dqfoZKDyk1W{Tn}m6!IeMiAA}^ z-)ZL?){eD6g{u2Xk1g7edp={{+N2IjriJX~x-zKh350`B$gs)fkO}gyA5M0;;ci}^ zh)x5>TQw;O8fKojBu5Z8foSH;6|UkfBNMmCGEsO!Jpzhe4V#Z5JB4)yp~C52T0!=C z$!eKAMB}N?@oR3mX?gnl;rbaa`PP}p*L35ZKheeV^JqOyxIasdyMgYV78PAb5n3P> z{W+8RY)QL`gi1R1(ZYnU9GT@#_zY?!V~rivb!X7>T4n%(1&18JRrNh}hf#VRW*CaY zA9X2Jc+Bk5?60(1ho$?Q0OX@|;;}bBz7VuNW$r+7hdlb7T5rQhMVk4Z&wA?QD}-gW z8lgE1GSnH+x;D|A2IGBVN>|n+MtAzJ@<+4X&hx(W-;?6e-x~H&UF+@K*C-( zu2g#QwnZ|`BWLm0U^iYl7^r*Y`4BZ#47S`8-b;oG)7lFvd1U!70A>tVy` zbALLnKAMy(vBG2AVTt93bDh`0V#2(xpHwkxrCQuvQK8MpHy?Af*pVqihS)Y!>Mb3d zvRNsO9$$@X2@oq`j;AoqTC2cw2SJVWlbw$5gWfY>ZxG_dB;+ao7oS^7U|ghP`YDUj z1e?sY%Z1l8ZkL%B*N~5=PhOh9OMvK-d13!>{usEJ?VT-dV*xxwlG&-T|B|#?Hx(3n za1Fnl5w~9ox9A~zjh~LJG99OckXwmn2xg39#&D0z+_eWxt;O6brh9fyb%!V*T288( zP&q}EAH<0>Tv^lXSLe3n`_>gC2#f{+a)5-vN}!J|G80Vg=|LJ6@rr39XE?|nVdw0C zfeo+Flj`4})%y#@^Nw{ADLMxcCt6(0v0S+;aqXB;U&wn0o$lsBjTW$Y@XTfdssXX1 zJP6!FYqA)evXSy`H(t8OX$U`)3e>t(aC#uaYm;}k(27AA92laHzzqGbG6$5ie#zT3 zHq9ugTWVT1I|LnIEbywY@(kiW@^`>FHd`?6a5CDJ(YY2pQBb#f#DyPKkZxtto#|%m z_&b4<@MdIeWP97hy|3FKHmB=L=jS9(t2zK9(6F{P=*FrSIAHj^T$XY^j8>h4LLOVp zRR!DW0!W@AD+Y(e7pB2z>ht*f^Ae=G*QZ0Tr%Si?$LD+T`Jxv|P=B}Q8@XBUtKP4# z`!`GEZ2KX=z2{^V62oBh`Tzm%W&is?VJo1$t4G_=wdHto5W*2d=$C+F+3iw@lXVMS zVF;YhQr?k$!Ij4eem?xa-%#@5>5~#Zdp86wWCG6q7LTy2nN*%u0Nlk-ep+e6yZEIw z>tw@g2Dcvq#fbQA%hp*0!)%6@H~3tE0};O#gx~U9J*r!n0xxb$SPmUjAu%Dgo6V+` zkzq+E-GRL)GxqT)VAk^RJ0u!p<_WilSVVHd-kAXTmVPiDv^RL~%;U>1fXPQ;0usSI zWD-Xn_cI!(L!;G&H*f#&;!Z}$hr9n7=60oN(^86xsMRkm2rR;~(~I~t93pHq3->JU z&}P!}L~F#fW>oj^P$Hw6TjCG)JMOl(rA2$TA{;}04=SS0egp0ha2I>&#wA4oen7}S zyAOkdR3z?!sF+n1&Z1)*vK*f)l#ah7UMKQM-QfLu)7JyIw2;A}&QW0BUP!0r!^WM} z1Z?`rD?iWh<3NsKcP^orv)FgrdUP_?&{p9=-R+Mg=ofU<0yl}Bii^*0jd$ypt^FdC zdCYv^CDNxyjd>Qe{hK!8ULZ=6I1{yMeo^^jg#_OSXr7hVcgx9aNTy93!k)$)aRnmC zj^5$*p;H-kI(vMXjJe!FD=cfVXJ#hWcAj%+?gaIEIWS};Fggnau{{}S;D&6jMe?prt%kgBY<%#Kh@>O-Po zxC?%pIX-@+B6%W(0@LgLdgGh(+J5IqEo7EZE9N3`|F#faWZ}kM4;M-og?gRsarq!< z|FrS{Mo}vzHyoTRI3W1RV?|4eTT<9{8k7zF3NFKX`<3bgy{BlZNy{!r3dyyCABMxL z*^EbW5`r$Ia~pGfdAF86xV(ANd&K+&{vT*>Za#>xM+5>gp!@%WcI^KzXcrX|llvcL zpZ3>wCDCp?=?W0foElYOA+1PlOs`!K#ib^Wb^x;xO3Qn61LcyMheqCt5~4X-O$fXR zNY_%L@y+V6x8J6Y;)*2{yeX*Di@&`YEjp|G^$q0e?Ym5{PF`k`a}*cfli=#?kZEG^8K$jZ!fRE@_EUu#;#hrdaG-ceT_#s`t;z)WgDju-f7f+f4 z!rv&_KP2{fKuL*f(4?6+-A}6DHsNHP3cR%nV&5(t3A{xik%~mbd8II@yRPbnvFNsJ zq67)zleT%ivu*RZ4?RTS3WI$9DxDhUT%Ku~Sh>6kfBC^hoc=v`FCx%N&@y}@;~a62 zuhKqVk1&WoI8F}7n=eJBpWe75{GzvaL9L!r2!$2vI%$eEKhnG<&?4oWm2Rc22OrlU2b&cAxHggg@c`oU>=R z=S@g+*hpUywXi^2sht7DZ3aqetvnR(Y?q&zQUC^_|sq!J$=DB zPp%zviP}g;fRp0j$qlV`=s30jOsx~#t138T{}NKe5IulFr!P$Nm1F)wLQy<83y7rq zBgHjh{bl7Ok{LTI(s~Ha&5SyWHCcXR!J7yyF&kTE7E8>b?I6ZpmyE6)o_Y&XRPgn* zANb#d4r(7Jc^))Ekr&C2u@xsLwY@7ayfQY67W(~ohpO#7yqBIb!S^ZNo{Pi~=TaZv zIRRNJIS4LifNU603UnZubEi@{t2&MURsQ^f6fF~G(!>Yk*`y5QF+q*Sk_4wzTh7*E>+~4tssFgO^Qgk6i z8p(?K1a!aVW#lZ53wka^2H_t+{_TR@!Plj=d^}tF^j7oG{b|Ig!41ZfA_kN%lVOAY z*b|};(qJ*D&$&*P-&0U!G^oy5F*taV&@rlV60o&)Xdc@WA`)cyqO&v9FvFdYRAmRb zx_B|_z6SSwF{D-)`1viuHD)!;ut?Z(VC{wyr!vG@1LzkSO9N@~#=#3&AsPgdcWRAB za}YX29B{51qJe8jCK)(_?Uja(`?o;wvoqln5R5T9a^J)@xC1=b7{CE%b#CHJcLRh8 zUJOFHB0LzJ@spJPBAZaC)Bl_R32FLZLfr>dB=MVGu}E1Xgff?_p$%hm(BlLw%h{W* zPS-*Xk3Aq(VMgH{kB_h4+>FQ)Y_!M3Ja4iq-JJvOQfnh5*6L1d*cBI!kI5{#dBf^D zH8p3zvlFUtD>)I*7_wx=dm91){NUHsc^t!}Jv*?D>}wWk(5dHF0$S@CHmWFe1ktu9 zM)9vcOLkaW5-{vSYxp#im>!uprCCDflpV8hpJM!vt4XtJN>QDc#NhR%z#;p6g}!C7 z#tqahJ9R9FqhgvLhB}yI0mMNLq9&QUz6@mYH+nEV%W)j9E&m#9()ejj@?IS1ukF)Y zfVhhTI`q$bB?C0(lLfuX_Omhkg9W_v&o&N-)2?lF3{))aGL~!|i_TfVy++)Axb^bJ zzaks#7xj^Q{wtM5GDgj2j0eoK|9@$JU)#C zb##ozzoyB(34aAMe;$$3MHI29w1>QkuxV<=p1+FeZ6ARKWFH{LAg-i+D|jh6cn{vZ z^v#N;FA&_>K#Jb2zJC8GIV`fSIOanz@{wJng#5S6HE=xqIwir_2;}=iPu=TE z0$6RwdB$8q5J`fG4xIK9@*d;NZ#K7vzbKIYP&+YhsGQ7B` zA?UbfHgq!__8E`XuSAW|F$EpSlij!Dv((@uy z?x7ffi^#@s$41zxmLlw`GsL}KCCyG#_@00g2ia7ItlfCK=5gp%T)GOQZJ^d>%5?J> zHtLNPzR>F=QBko=-ES|T#qzB;rqfRonm=XMe+n@4V1*^iRZ($FZsMZ?9|w{#caXF8 z=g{*%yD!4B)~g>ArBa1t6&`T>iDYVcFsiKb8oE9tHK}AFA>t@WW0c`8*3t;qeXkBG zWoUQvHHdJdp9D5(@O!fC@S3Ps`G>-2aOi>UkMIOb*t2hrTo~_Ke@DOF+QIj)E{QFJI4o=-ajqE9OACaru#s9gUK7wIVcWpwd~Tc<)1AWj?W) zKzGU!=W(1RgS4_uf-x=)J(5!+om*|(oW->|R1fl2@E5piOIWw#!f!w5*!-T3Z5ZYc zAz%V@z-@f_r(fYNpQ;olcM1N3J<)3IxC1k?hRr%t*Lh%&Fo^)^@md!{VJyO{Yry`a z0z%$uO~{@)-e#*jdteRa%xbx77YInpb&|9pv`@ofVcKXc&FAN^2VL(2MOp%nMw&ak zCjbG#h>z0gjraOrThEO?SGPi>zl>wh9dR47X;xCyusG4YC5P^dtdr4*>{*Q58HNT$ z`Io&EapduH$6)FkNQAo1Vp*s<{uN$~*=hzoBr;^Po-Rzl*fQD&fEyq+O=|qnW+<9? z-GaN2i1k}^Ta}_7S!c?wwcG9)(?WxQ1Rc@e9`axC)ZR$g-*BpTniWl9GADF`G9EcY zHJT1`-FRvp!(D^gqeI!k@~pXGqjUhFYTGBxDRIJ}Dnf*ZhlI=sJQbbWz3_#!x-!Yz zTB`A!A?_wwJRkitq}F`?ZwX_k5|pt-ixvdLo5G7Kwna6oM} z)mr);zY5}BX7TT>gny85EV_YJA5#w0e`7+72FfVzo@|H+D+1{^9Il07y__L6LXY`~ z8?TZtg!Lh>0wYQW>-_xGqi)jZ2OM^gy@G=xXHCCgxOPR=$ID*dD7WA$6z4NskjGUK znpJKe62-j`ZFs0>i#uc$Vyl=DXWe#|^ik6iCv=bR0@0O*ghd|)>PDdRA4;wxd9Y^94cL(le(2hMNn5hT zA@`f#FEbTLnzPZCDm=csK?%zfbDm;JCTxId#LQ=2=w1UOZEp`nYK=>1_N%NREG%b15)K*an)blK9<3kecM&3dJRKXkar?F7{BiiA8XDL(S`n479gF8WQ?$nJ!Twh4 za|f)Z1Q0eEJlB0@u0a?@XkLQVdyV5_nh@|X2CNMM)XL#{W5hBn#!hF zu@UqT{;8#GM)+{dC_7(lW_vSZ`nDC@%!_+p?Bjom0No%?cD(&W#d)gb>^$l~tbzZG z>HS04IiLE%*=@4GMgTVd+4%$fZOe3U8fEtSBn=5FMp@L5XvBmw1<~_Y9&&U*;q9I| z<->(9xq9#ZD0M}^zy0#^qLkH_qv(e`Pr~tmJo|;R50T*=isJioCkV0&Pmw|k;I)Jf zVP#1o$DRjofyl~3YyyXO7nK1a0;|sVibRAhiMZISFN)jZgE$PHGVoiPU`^|9Jn*y2 z`1#tDNcim%l>p5<^O4du5Y;gXs45@_FEQ@rdK`dI$b}UtgmS>ZdwKdoP!L=2pgR-+%;9}paReoe=f8W){hWAfP! zY?v?g1YVT}gu@umF$se2gBssPaPkwOYL0QVS4GGX#l~o{0QAd%za5+bM&xs(;qw#Wpovx@ky_> z_E(I?Y?Cl3@c_Qu{%)y;iYQrr3KrG0y2g2j-|_Sy{{LX_ErT*^l6_y?-QC^Y-QA&a zcXxO9#@(I9Y1|rjr*U^0cbCgMv(JvR&zW~_%(okHA!0=kJW-4F{3|OnD_7O8NMv3s zzeyWVQ4hrBy?Y`n&^93<=ujI_q3gExyw=G&x_PC+F@`H4D(1pDQAQ!wr!~_B>;hnG#@6J9#f)4i0R=aRZv+(4qj8IBJKQFan?TC> z=lWle$>Zok&;#?;YmAY&FBJ7FB>j#J@25Q=o-yca;ZPwapncf3>@vYgOvBb3aq5su zIq5VKxeHRaYZL9yNF#ERIs-35p&>^QikWUP+g-^kRRzR=lL!`A=n^KL*6b6!m;(S1 zC?kQ2NLty~cYLyE&jy5+!Nh5)34Oy>3M=v*N~8xdw|%KBkYt@IKo0Yjz}`Brezind20fKa1Q4}b}1$L(4vY!_+QrmI4JITr9TLaFKt;{L; z$mG-BfO0=ZZhQW1CI$22FX|phmWvcp?E=v269n0ZmWQrM49we`1Tq|o+k+kq{(hgQ zzx~5)v7NA2L)(6}@7@A%(?9HP#S2Jr88 za|_1KUEF3vj-Tz(vZJ?2d0y@obB_WO5x<2eLNl@Aw8Wool4jm@)7-}A?oZ7;$roWx z`FVVdh5f`IndIfXoaB{`VmKiyor*+^XZrWp!+I65I zB^Z68U)P)D&-%shROj_D^L=JS&$Ya+KhQlz*yxa!x{43>UZJ~efhtz`T(AFVl>AX0 zix9X<6A3z>uSaBe+iLQ+JO@dg+;}WBGRa~B3RnCfiV_iN*Wd}Bp)()U=dae7`n(#p3gy;=G zbb!+&v#=<_WBf4GgP=jdHFpA}6zrOdwj9STI9) zH3w3#l2-elHcEhcsga^Jf1a(Sx!`|f_@`j0ek|=v*2(lM!<3Qg63fvl(kx~`OedV3 zW%KnU1PO3VtV9%D{ubSUx;PN5E(@ZT$+oxAxyP$9ue|nY^8Aj=v4g5~(@5rARkyZ= zuw~RoV)gUvpddI%aCN^Q|HK;6iq2qHvX*zdJNqeBV)2S`&}A?JIYAx#6dJR@ zfdi|GA}WuqVooz_U@XOKKI#xDINXnUCx{o(+9cXrRv{-KKdGdD-WrPLPe3IaNt1a= zH|e#3k_Q1QFsax=P|O4jgw6pFdfkBg#QlqG3N5rYLzPC>%-NcJ1 zGF;L>35C&DWTw)*@+8>p>o6C26418-@0Zmw3nL#6Bv4i-83yB9{>-%AgENhGMTY)! zH=px#k=7Vyon$l#KX8tdhM~Lpk`s}FeCbtz2J-&7oAmFbYa%*M$#dF1_x~dFxj{WEX zbK%34#eH^s>M(sy$o(dxg*f)j==t7_dB<;4L68o(#~pbdvT3%j$`S~5+mvA@F&H1^?NU!1{*q_Vq<%u%l(piPoM}Nd=B$ zAfd=sZbV)@2dW=~QuCr{h3D%8*RJwVHo~dW;rp*x)RQ_v=)s*a+kz*f`F^<=patZE5UU3=2twW4Pm>dK*xgc z2vYT?NJ&91ji$#3uuZVBEpJV$Bv;X@z?Z)Ql!uM*fdA$daZHFK({+_6?ZdEvQ_mk$ zN;_}UMQJg`bbuQ&(!;12&}*%bka&gbLL!AC9=<(A}MNzfNK${4iOQ=QRoyJUfs zJGHrHbj7?BwO4(GEvJ#U4?OUKT9VRl-=E6zsNKnzoZ!z_7?vw$bjJ#w8&ppdUPo%g z8#(T~n?+x)(FLp7!Q7vL!Y87KC%o=AZ=(m3EZzoMu!`{AX5M93`__O{yGy6R<yH*!N>Mq<)Z|ep1B9>}DtE!jj+cB6+p9|*cgO_L zY(x!rPB4-FjS8yDYe}6=e^IJOyAE9~-aQ8oT1RJY5Fe^dkI5L%8oE5l@y{8n=c*^` z$U7PsBuiWxcAk8Xo|F-&nl(_T%1;+dNmhR2)~ST+o0$x+lfdvGW&KO)>uVhYcEdCA zl~{&0Ss();Eiofa>m|P$fV|Q zoL)HsyA?fmTM0fZ zpKyWWKQMUb6j6+@*@tzrN25)6j)KzNdSQYcI3A-5)5xM7-((`AD>M~X^PTTqvj`?r zcD*z<9K@*>xPf@rj;o@kZ2_Yeb-8C4FO2cVK$DlsVokjkNHb3UbY0zXcwFN+al(B! zGG0XxR4vfe&I|^%$vY-qb<_a_t-f9r^wa9qIGH3S`fZ`XG41~0sK2l( zoOYd3W#+o;ymq76y3O^#!fUwTFjN<~YkzG7^gYY9;*?Gi)gLnBGe&+C%80B zBL~ohs4>o&as}3z{m>Y?^{Xnf66|1DZ1}+4g23;Ivn~}0mLr}P!@55(qHOAyOxk-7 z#H>X*hP2Q1k$ad|jTF!@`B1f)k~!NTUH#K}D)(B$yRd!^*mOT>#hIR*s(=EH{>~<} zY~KEpCxGd7BfN__7`V|^vEUtY%dg-8-F#H|;B`Fbtk7j%rI|%$d1j$Uklydes%LCv zKLAx{7=>me$7wK}YNOhsKLvLJq7S8c3vZ>SbxMt!ej15Vc2*oP>`ITzt+g}|Ihr9s zo$FfphlKO&@~jrOGedinsZ)(HH_Wi5K*$>EBYgtj!jY6*)-IYdDAphWr6NOv>wAAG z-pGrt7Tmk!rp$R?@}Z3C3Q<^A(&pBKBcy>hcG@(N<(>_-d&)8FuI5}`nfr!1&<#n` zxmZgd^eeIufH?e77Cz(w&La$lgfrfvWeeQcSH!~9&>0ZGL9Z<_KPb#_#U&QD5(pR`U*VbY{ECtSdO6axs=A?0 z5_cL**Wlp*WN;X_SQHjZXN5@>#L22S>KyE8*=<@V~ zZe1x^u2P93bM9pu!valJJQjMuf~kZ?&DzQHoTxz9({Syg6lqt)%M$CNcNPE(TyZrV zH;umo>%7|}Ccofwjn@?LrZ_sR0_WK+qRMr^a(Dlp;e1ntc9=8`MDg~aK?&!6x8ZG8 zl^b@97rIG`69P}oxqPM%#})HbRR^@%VKTZFChh3S?umMPSHSa1ehyV@?aUJ;yK3@L z)}3(X0@p4Zh>D2WY^$XIG$BsIZ>pgM(-DvWPiT?T0FZ=P{E)GC4dYf0SB*KFBTWPd zPk2~bpc!n0>Wz-#UlXftJ*Cej_cWEdATs$jibFs@4nn1x(&@IE7 z7Ia29#m2Zx6PTa;R)nb{pqL0;D38n~%`ygj^R)9CbpZN4O|>@xXQfW+64YXFlXJ|e zGEA3t_5uA_k9`zx1B@Vms2nY3d)gjrR+6sT8RM^&4#YYAy%P#hEKPAv@;Kif=Sbm5P~?HiaaV?3O?;)Xb%gBZ`5_}Qg=^{#D zPzvE2Uf8+=U4N&u9@JOAdoylAQx~`7qBjrmkJUM;*#=DNy5M32*gh>kv#k6_v6^JQUND zSBquE!kWAT4TmiV%sxA8w$nIY{a2K5$+i`FZNY#;DKT=yfg$bZ?t0!;yB$AsD3uhZ zNuGFE!vVc`xPlntR>tUyDj6Xm8Oidd@7h1UxxCbxLwyq{nAmZlifT9NjE!*Jf({pl z@|vH1?K$$72D~8eGQOJ1eUf)IJWQC7G)4f4l*7NfuAds+$amHEtHq z3@nW&N*HT!y3naF1oh2dN#g)+sjMq1mC-ioQ^IUsOlsl1dRS#FTl>@$)&>U}r zqq}^sGC^gLL2%=|?zN`Tw&^^ub;p>@VbeyW8k=D=erKD_9Dek&IQ`6iuNC?P*qB+U ztp}2wmWAV#ukj?NM2E$AW7)A*U6Ik^Mlh_NEG78RG*9;p-!-l!|K-~E%xyz`oQi)H zNsX7>;tft!S(S8MmkC|x`odcex#zCIkS+_mQYE<$y%(1PjV=n4bG4d7T|rV`t7#q+ zyfdN_7=JS5NCc=QQ)KSyv|Y50IYebe9n83FOvRWEU^h#}R}HX&sAveIUsWuabD&g> znOG4nA|-Nj9R+p~6ukWwEiu;L3h9Q6jO&%otBfTioL3>>8?SPu4#881dW8gAJFAWY zaSs+G0m$1q+#VQst8FM;LY>%UMipjt?l#}nDDZM~LfT^R zGk>CxC}s&Oa(;uuzoH&PA6JWNQ^}HS$|I8;DBH(#5PXxKCMAEIsTWP4cg+kOXoP6? z=(w+64ekrm$l8&2j`+o9G9(VEnH#1!fP*3zb-ACnLpPVJU~!W=Gjf_#{z%_?BghqY zA)sT0Wp{H_wTH@&Jtvh3(cS>$ab3XGYV)C@@74ol6DOOD$o7_Y627lY8`0?54|L7F z!JgrNM<_1RXh%xl>-g)95DMwet-~OZka4-Rg@-5?h#zp@b5!$ZoQ*gLoMS8ik!W=t z5u3kL$hb4ACq**yR;IIwA_U8ItHrz zI8(P@hPGzBeznif`!kmU33SQ;)YKn&LJG-w5(c&*!|%(-#gMHk*yJWWQC71L1#J0j zi;b*Su&Sg`jTG4R>Clp_OR5hduX&t>tQMp$1R2fU`#u>r2T)p-q+B)j?>y!P*cp4z z!fag+cDw=LNbwVu1@*CLI^7P3`%2m{TL4@q;z2{r@;DvU){MifS1zzb!RuO$d5OQ?eLNj5d)6L&vC!u}8yj%7N5A~j)EGNjnT925U8+v3q; z1J=`)fE1tXfjPgh^fQAqacpMk%QQ4fCbSmkQ96YT=F*h3PULYY#%q$l{b|GTog(X& z++-8GvzDd!K5vEuKc}~tP|6%gG#6np+1LB1@uNx2JBaH0YP|qO%yA)XpCE~GTz3i7 zeOkMGfnNyjc8l@^v0FOg#xCxou$5TY8!sHHX*I99?Yywb4^!#};qmFEHfTWz*!#_* z&jN2H?^Z3=3lz-Eg?e;S9jv!nN12ivEe1YI0w2eXOt39!s?M%Wa;8?$Of{=z*hNY? z6=fw~lSUh@wf3b)gS zI#?mS`Xk1u#SjAEK2nI!kOm_4jw(=#+<8&u^FF-Lr!po3Vr0z(&Zt06ybM<6r?S7T z>wzLzF9x}0eyV9Vlb`ESDE~Hw$7Sh2A2IT1I@=!Q-B(4uhyhE>I(-kML(?*)#(;E~ z2L|kHS%rT-qh-ZbIK$^teiv}GvY?%7_d>k+gCt|p)7_ULl20CN%~FW!=KPlo7<=>2 zBUhe|V|fnDd+^oW{wDOgw?ir~u7g;op^p+Zr(AOo=di6%#M>q7N?g^w<=Qixmu0;8N}f1`_+aAq94n-_7D&`Av<2FRPtw2Mu6 zw%oIy7lzDAn!i@@8bV<}+;)25RV15d1)g{5N{yUmv3D1)(<tZXQnz`BwYflOl8AZRSDoI8gUv z=pGEMj&2dlbB!(KOc)c<)q)ran6w-S9)_NpClF@TwHC*D#dtO={t=3dK}Yoa-8g2s5m_MpHkbT{0D2x=lguq!YsJ^v0_TFMq=n^|W-%wJ^KzEwB0 z$%Y-eK?WuHW1EBZx(W6Wyxs4cM6(*EyBrv(ndd;lGBPu;c`WP4ny!M_DR(J|DogTB zhrOy#vNFmg7K-=`IJhSCFQso$Bo)nuT~T>k0;7f4KJhccbs2KrE5RM>3%p@;AgmcV zaa_t&Z!~HJnL=SC3t{u)aYSm|dM!|(F`ISZt`m?RZ0rdsI^Sv=uI)}1%NaL`%2Xts zVyLVMc^x0yh2L)>VUio77vZR)$vj7Ox)(@%eTZd}18*n!wc=v~x!G3xf?--3MI0TC z^`Ibnq`@roJW^)qik4t`@!3RBu7uT)NU5H(amkk&`ia1<98&??<+^@g?8yju#*#`C zqJkyMD7IlgkHxW5_UN5~8e={l>T%Dn4pVYh-_)m}-KC;qBJkykT+BK1ki;>(A{nki zn*#BEl&v8nf1slqcXiAe{&+@xI1b!z)-Zx|xKgw0KttkWk8O;j>$O0;=mj;mSf2BR zZjUOI;lo_1jyiO+qb^+`nw8>m9H``0@nY3=Fc&UF^lj^8QK;M3fpB-gLF0FuRBWA1 zes8Fjq4wziHo1t+pPMohcY)sEUvp}>l;%7%F&p`CLFm0)OY0gDtfDj1mZEs1%h?L+ z()bEdE!MO+SWr2jLsiq&Dafo+E>Y5BAXnpaLK-ZYApXeIaSUmx5bIMODhl1w-*l(K z-p1PWq1EFM9krDz-JPlFa7nsqHpc7QDooe-juVzGf#moK^r(sPUR*i4{!-)Lx=F}G z%6}7xue103n`m|%;ggYq8td6){^OTEi4Vk=N5tywD!;0OX4~e;K6w}?&f=gFWB9@+kYZU3Cm8MtHDkhhK0A0iFq>2!eNCw z?Dc}XwF=VbwbRq~)xaH2<8n%MY6Lf96H1J{ttsx<>ESCIY=%( zE-Wf!i}?;5&QwrZYa^Yu^DD6r7+y zy0jH#Ss)o$HtPp#-@om^71@tXAv&0TpNdvavK8M9@ghK<&)A= z<8_5{t@|*gNNhd>SzvS^xl) znE!o=_3FRlkeV1-Ti839&{^1;D#KBX%FEHx$;m2G&`yp^f4h{Tq4I~=M|VIaAv43q z#5f{FD@LbYqB?5J=nhG^xlv-0X1clY=dwYSij-1r{m0g9U!cJn!Ou0^GN0GqZ_S4J z{M5kE&c#{J)WX`tiT*#?)(!UA*3!V$!2LgJ1^3^roJ<^DtxcT&qt;0OS8Gcr`~T<; zf5F23`PBdG|NnId6YKxzCOH4{CXOafb}o)a|DlY3Ewul?AIRCj%*6da(+2AEM*rwb zI&)_m>nb%xyHz#>-^H4iKlxSx>XC_X5@_NArtMl#^o*8fTDeeCMYK&QPs zAEU z_Mn*s)PkWCput4KZJE1C)xXuFP1J|6*Xa4!Bz0OM24}KEb_b!1V<Gz|HXuGwBfGN#a6{;);!T*k2UDy*G@2(&w!c zy$&=uXgNHa6ULS%;&x!msM@WN_}AbBuE!D^8u)k4TVIL5(x}`dAXrO^j9SiU-N`2s z#9YAP7LiC7xJe1GA8BHm-q&Uc0C3G)mP?}A>QB_cq7pmiw)C?v-d($HYZPV$s-Uq@ zW9ZdQSH_x*Ue%#utDCEaSc0$fA4w-M)1{`xIkGc)>}s|2_&y#8$u_JzllU!(Qm)UQ zaf?40_B2R)G-RSKixgEOY94ikf+-S`iWsI|PeEY!Q9?hj+TiP}*Y8C6-51?Yfr(Ur zY8kRGg1FTuFJ-J=YvAq4Q!&UY+M?HskDJML+(QC!P&kSl4w<|M26jG1yG*PjZL!(J z1qb4;I`3V(=e;lv6R3$)(`+METu^hor7(5EXhG&v=B1lMDQ`|^m!75%sG-#(z>3Z| zj@cXKY$xQcISv{_N4Zitab`=jFrxyS`)y^7%_Ry{tRDFxoeM$AoPf03QO*F7$4Gam z@uh@!wk8@n?Rf3lrzx=p1}Yp!o%9Qi=~)E*=vpZsGl}h**F(8V*=Sz&VoAfCqsGag z)G+*$`G+=(^sTmH6O_@kM>Znq*96xfckViq?eE^|2vdP&D9p+}hDoeHEiNo>Z7T;( zEG>X59s@(2fKK^=hZ#q*)NGYA!4X!F?vkDCtdy5#3;D+|k1#QdRS<1eRJS{d0NSmg zZQlxGRn2~%wJl!Rvt;z!ad{>lea1l*xPTYQyK6gf)1H}$W+#EQ_@@zGW=da$=nK*weExc@Nv)h z=?>ZMQZf&FLmrGVGEl0;pvAp7TJnY*f9!VbC^*3*9sz>QB( zrnYI?TP5rR6Q){-;>Qa_&%sP59D^pCE@I1HpldK)1vg#h_NfP5i9z7QZ^2#_xX$QJ_S3jy+l0Qo|Id?7&o zzk>kztIGMm7l;4Xy#0#;@t0`f%x`J#Y)Q9!;ZAYT-aFAB&P z1>}nY@(( zzy06*2T?~yJ4X=%X9GGTYXc`IA0;h2BtZ;bU}y+yi>OWsEzcVz^+Igq&5jQ9Ocp{` z%A}^x)7Fm?Xtm7DD&T#N;IH$^kdX0T0pBTh*?$HTtv_DtOnM)Blj|KkoAfTrBCush=b6koSEKu zxI*j6nWPivniBh~&}wK`iQ#cJAoe(($1ti(R!cW^EhXZ0C_Mt{!A8P1)Gq`{_KD}&JGP<90H84vMc zHSc0a;v>gj6UC)3i0bBG@u!izQ|Pzg2a?FOakH7_QWnBwiMWYTWM%^5LreoU$JLNi z3c3!y`ePnk{UtxyMCLu%`a_lLLe)P^TfX1I)T3w>c?R>WG#sX}W#Bo#H? z@D#ON;{uG4@m64aBgT;+N$H;e7{F2R!&EfV(l(QWBB1QhGk@sQJMsE9gv9cNW^RlUtpc>v{G2;kOL+P)Au-b23V?87A5{BJXMrwyZ{UbSYw z#$!wl4YR9__ZoSTo+HMK6qwedCfK%zk#(i1&|_^%mZJJG>s(E3qa%s`K;Mv33lIw= zUNS*V!Kv-&#VavcL%Pbxf;wcM7V4lK8HwNB>e`ttbX!gI~-NI$rrKmVw^sjJ1JF2t(w)Yly5XU~pLn@FFuj(98h;^}(oXJ^D-uLmMy%)?h zHLe!9Tzs%xlNuFcJRr6wzq=#SPG4j=*D0Jg#JA(h5h5>R%>9UKF$QNucd8{8kbP2c z>7VU7vf8!~e>_pO8rB1_Ln#QkE>1gbd$T=Z1>inVd4gE0pG!C)Lk7xC*p3hH0w$I2 zVYk(qu$~s7P@i+(5u7thqE^?G{Hj+bgpocE_jOapQ0BJvJB zZ@^r?A{N=|`JG=AmDT^pM`KYaV_way`rf>Li1CMg_<#97`Ew_$)2>Q$}FhN{bOAEYdv^?8Cm^54fVU4*{N5 zhYBd^5n;j$neA?<3o_g4j-3Y*&m*935=TU!yQ99@L8pfu*!}L!8E!YFSn$LM3+e6Q zD21CG2ThT*WqL*NXozyMWU);PLTIsilmxW0h?@qblQ@TE`C(bSYgKX7Xi2PX#`7%7 z=&;q#N{AdUl^FOb@$U?=A2U-B;E5KmUK9>$>4s>Az$o2AaCX`%@CgjhMm!d@!GhzD zu6Ie2Ui3`sqdQdST&QY|k6|zgmL^Uf#SOQEOFNx5ml5ZPu9(>_xYOLeqK~sN;90=c z-9UJB41091X!+l5x_38?LDN<*aJ=;X3LvLuu%qvva#{S_aZd8Lg1Q@-*#G4f|0~ys zTb1h-KnVRn&DT5uoHDzz4=}fmPQ|iQK!&{%ie9XCQMQtjUMV2!O4^Xv34z}d#xz3{ z3DnOVf9HO=VE=jZboUOZkB$vg{(6usaL^6iv8Omu(k9EjkU8oY5#Vw*;RF1a0W_pu)Yp7=zWu+=ApX|Tiy0U>+c|ptSNALbm1?5AmxKsW z-U`v*+tRB6qE_vRV|3)Z!lPFtwkCJeuUTPBC+yeifd@Eg!4*x&=TF`+3%A8cp_KJWHP9!v?+q)kwg}~$F%C~^ z&9`|-K3qPhtAPxyi=2KCO<$z#eB;j`u$ESnp@gcpW|oF>}xuvC-6~483BjpJxf)-Di$&nh7iZ!9d}%5tPA6x)w_6T>T>p zN7crKm1Mv{kZPh>(5KY8Ibk1;JyxV?G?{pT)~MZw1}FfCz)gJFzq;p zyXdKJP7V4jGu;Go)cokK@ zvf9$Nc@vU#vy?NhB(2Joea|-jY-hL?8Kw=YdNO9-6Y>tm z-zWUcVIdTKc5J`Xlx&fAA0d*fH^*LEIjsJ(4$RPGwx}a)otXkbs~lqSTn>46oQO`E zn~`@zwtgOGV%(Qr({dG`#kY499S@p=c*SWOkIqkMFq@)zNtRb=NKwLBtwtbyU=GbX`34uWB@?$sGbiVyZpfpJ*v@kRNs#$wQ4!pFIw z!c4zj{o(nGo!0SrUf}<->qENngYeHtA@pw}1^(YTwttlsg6eS&b zO^u1U6o50;F^=R4M&=4;>I#M?28LHA#T$nyu;24kEILwdo6cEo9SxHOa|#m;gCh{e z2$)Nq`mJD!2oq{f`ul>6S+>`SbbPKd-+}Y03ZY8>$$XiT+RT9TF!i{TU5I zH*KtpPQ*{Xy`c?A%MK9WCF@28Dv8v&>z!nX%@&cA-McjJ>zS_dUzFaq0| znwjOKFHhAxzypLWAq}fN*n(b@#~zBf1XPJXk$|g}1(JUgT`*euN!PpaC$Gvge%A|# zyBw0%;`=^^4r=JEn#e_HlK|o6TN&XCp{S$c5G1TI>>kKLrp!<6Kg$cUC>%LHG_@>f z)-FIF8XK*VJM9yGT23x^?1}8!x*jrNk5vXIKNiNcshq`4IF>i6OpQbx2D3@&1^ z@=8T2!cYwPI~k7v^i`h0*CmKh96#kDt`;`rTEO(mT2u;_hZLA6EKD!u?*duB6rEPe6s{ zd=*%1`K^N-16gXdsK^32596xG`a~gxrhVcZErP#)%6tCBHQd^uF&uqr!o3sU+-xDTyz zXwGUiZkIj=Wiqw&#L9D~;ZG&X8YYJ0_#fbXbvp#{qdEZC8z!ZX$s8L)r-u`AC!Mr-`|6}GDqH3juEsEmHUUbR^GFFU^K%vkGRvFQ_VNqd$Wo{{>#70ns zuH73)L)ZRC*Z-dW==%))Ss~x|@40V^KAxtoKjnr4@tMpvoi;d|Ihmgx=5zgkTOtmz zQdm1mw?ji8P+|5{s0`Ot7`#^-WIw6{;|&WHtCAuoq&iFVwS`ta%Qq;H8&ztm)D}>( z=Gg6QzUOrMA>>dZZr?^D#sh5_^H~b& z>9u{w&k}?5DM<5@GdnCbf!xHG!F)xAY@uShvv#tE6oY1H)GEAYcp4e+6(8*dB zJQ1GxUE9zq=%n{Yll_wGA#2^t8B*JnF$g{Bp1Xuyq$aL66-6)fF<~KYQDOQrAT$$; z@3*~lpEwrZ!evBcvua1-PFtj#>YfTs`J>8!85Q5RtB^=kP~`bUX4%oF<8(}pd<$rD8@ z`jWQ>CHI_-h#T!EROoTG+kMQ{2k%x-2bf)h?e46C=YHm2L^mH)zmuEE(7`dpD8)kQ=LIgI(O?P>PjI z%ss?Rz+Q)3L(^iVP0=kX!*+%jXN+Mq&hI{aK-NRbiM#w3OfT6Y@z@c3f#?goIp`j9 z2@1(iz(cnUwJizBPm&dX>C=l&`pUYk2w8))K%z~=L$u8#s_Z^zaVOyvRU~x1b}jAf zhn^&?$xITU7dKeLQBY$o(W_%UvnrAbfIACPG{+E3W%(G|;5JO#JXuJ(m-#3s!KF)R zR!6+Yf(OkRW>L%*h7aZp?VgbLQl}?=#HOzD98-3ibgiY$ zZU?QTtTa(xYxw$mlhTP-5GK~FB_$7i=+~B-;VUXbgf9UHh*^^{GHF3!Azi&_wBZE|A^x1_m z5$moQPrxL({7b&YKC5GgX#D;it=}HBgfA0ia5|gz{k~9-$D)6SV!mYKJ_#{>fY?@) zH}ltD(WTX7cF^_zHAy1-m!0_u>K2vxKYB7GVa#?;044N8a<0fF8arVlPuo*i3O6`J zJ+O_^BmkzM;TVi<&e&eNwaG+YXdqG?2(qj{5PT~i!HkS}5tP{4;&tl6smsZGkl)Ye z18|G*oN@ftH5L;~zLz7Z9cEoXf*4n|580&p0_tq85n(GiLM{4~K zh$hCcrWmZW7)Q%v?*&lx)i3+h zJ8*Kd!%xjU*>HVkhj^gpH_{dim?pt?G%z5o6?ik>QN#wyv6X&mGPhmKp2w^0wV}7% zrHjC3HfY|0=;p@)TgTUz3Yu@X1-QWKr#3{|w7fyDy(eCVI&N6@UbBoMBxMW*(&_dk z81S;w44wJ);r6z^)u^`{bFqkR;rd7jIAJHZ$o06CIj-8L!an#nj9UM}TYo`Skc^3? zbScO`nY#p9VVa;SzO?jpp~33-Hhu}cz=ygO%EqrYUK485X{$ik=KBvH&`u?FzWZr5 z6aTizLH+k;qhR3ZWb%L5PE72?XR!+m~c?)$;?uJ~mXKdKn7}rADQwzPfuxWpck) zT5?Kww8J999mSLPS2F~~hzbs5)+?b$0#`A9o6@y_1r<3-+?1}$F~K1Ly}}J_H?#@M z)pNSq%%0NL?+^6ku=W^(T5Bn-pZ~74TiN_; z(2i=JFpz$#fBAX+{mkZH7j6F+{gAm9kEBq`)24WW8kaq8dU z^n*rnh!6lCuSU6yN_5S@DN8OR&4;elQFl9-)0c(m+EqOamapSDQb@bB>os$FdEdYN1HAJ`??crVRFpyJmQn+~J z_m8Ro9$SS9)~C>;|5j|ezcuy$7F*QSz}m&&v$*%qIc4^z>Yvum3migJK+vUr45z-- zQtc2_`y(UV;LwnQT^(oDw1o8Zjp!R0-7CQ7+Z$*;^|;40Nz?PJR?fq{oWr+j+p*_?{Ifvw>XyQrdO&K9*cjL;F@Z4!0;?~ynbh`+w_Ugo$hg5q zZjgT{ETY>pYEwgfO+T~;87-Rc5@{-UU-fJVTnNG?<{VCX&wqyUVcNP zXoRVoty}LCGGTW#KkkoH=S}+xoyAAtxIWQL_F$i0X=t$I^`p`NVq-^JGn-!Nn38;- zFbU?oKa}AvGmE_VYk25y+g_`E_SUa|JMsV53Cid25Oc9L`l|vjYhZ8xzX|{*F^q75 z0tliX1d+4mJBZc|4o0#@24y5@S^6P}gxE_o&{x)Ic-_L7J^f`4k+~x;%paThi`f3K z-o2G^RVY#^=^QxFax?}rg;8b84Utt8mbB^-wUo%2-%LmvO@-62s;TF%Grb7l;SAc> z{D_RKu9=|UM~O)UfCLB|&1XnnUHMNnU?mfA1k!|ITP7ZT@;YYvC+!XlY{PEGnb)d76f` ztBE5C<3DXTIYtpGPyj{rLRtD}9vi~#j2&z>Axtn)8EP7@OuCo@nT3r{gFhN-%;UN^ z{CVfvkVnVE;S&&oflOMmMJ81G4{e-DQnS$7V>S5vRtr*W#beD{l#!|wQMI(3NH_6? zWb0PK@L!K6dqLhDeA>M%YU!2E`PaOeRxX794{vW76xp_I>lTGW0)@M~ySux)ySqD7 zA&I-YySqc-?o{E0ySu|Hc#(616s`y)jj^A*ZeID78Tr~By_|Bp{Gw)^t4e&C-lBf2@^{2JQxW(K!N}`5pUu(JcUD}4=$VNDIrCMR_%34+- zj&llsJTIB13LtYv4HI3%3dW%^lHuU&NHHlfuZtIN>nhhAcy&ip)yXNZt!NV;ZV~oj>EvP0TTN$wCa0}&t=gI)M?ay-26b4? zjjB|k8w(vv1Ah()V89vT!0$+4L>aOKJF-OXGib4}6pqE5Mgj}U!o>xto62H%_2&O?@UuZc*-KqA=8DE{RNbn1F z5FuMQwnkB%p36^39$EeN1i#BzERZ`XZ@tX4Vti+$1B3j`)&GI_wU^yUfT~2 zZ-jkD$V88hnB&;tMP-Lab(e==K-Fu*oD0kt`rpn7i`&{BtlypL*`-H}_%s1AUM33| zc*~(BGKr(jm+8O`Qyu%1MD)AydB;D-7XLr-*Pc|ql@Lqq8@XWAL@&|RdC3gar2OGxrv9idE&uuy zL5o+VGJ9TY34O0z6z8a8P&2)&a-P{6Oges%Abxkt6m(@USoe`{A2=yH+^e_+aD?4? z#ZPGMkMMWf-YgOLGgN-J;AJIIc!~i?j$tgT8GaH+Dzom7AkUI3o`0+z+tr(PUMvcF z$Fa=3o=fM&MLTOmZ44{sU!=d=%@##LqqjvNc@Vx{Deauao@HP0O9-=t-?sDiN-iSO>V6oNzv6&(vY%P)u~#j9RrSkK zJ?vGcnoxO1s;Qtx$z`|uGEOA*VFdZTeT4rnx!_(Z;ja5U(l7kukzVw_e1H7^>xlDz zF#CK{Y!;MU+&(uJtjoAGNeMM)$a4cjeakSc`00Rs=--5Rf%{>+C1q7O`9LPy97()J1 zxK0=5a30WJb7|FPf1sGEVwR~WGiLtgH;y>R1Cw4XWi;=anKkvZE(NG-!rCgOmB3ek`O3SVE!ihVND>b|Ek_O#{Z}ASb-eDc3Zls zmD#@O*L>Ve+(O)(;UUHxVqqjR4Adi?@8>B_9G^h0Tm?Vyn8P7#Y(k3Iv{p?bL0X=7Wj&YI(-!o=vc z1qE%jCID)JvNM?xvN&v55bd!KvA z={G-^Ht{j)aKwr&y9W0hT@rj_kx{o%KMjgXzuah~zmgbiXlni zrsyKVyq>2)Y;P)!!bgbz5zsfv`L!y7;3`F6xC_3Q&a%P@gZh2o(Axw>{t8ko?DJ=y zS^|zDXnk!LyS6?Gb*;o*HdLhuq}(ntr?*1=Pznkqec#eCTdtlk!iA4wQ7k~E5x0^h z2oVq3hl(MFWzH^aqv=|coKy1+Y_vif0lb6!1%Td0aC`KpU0nFbko~_80Moxr!oL8( z;GL(Xu|+QxXrm0!$U`@1lax6o4KkS1m{FLA+-M#zq**@yy}k_LAO6t`Dbq>9hv9oC zj@h$}R;EA@CClY))_s%pv_G-8cwxT*QfU|=IBK%NaLeC}Bh6zfk%q?(#=mI~dLB`K z#P*myYk;vUr*ME5tas_o7pS&lqzyG)4iUgC=q`FFQOnyfr)sMs_eaoDj7iKwNZVYjK2vVJ5w32gcak!Qe%e#8S+({CoFDtc#G`EJOGTTSYqG}jQU zh4pr)8VI$|a%-p;81TXCsQ2#_7WK1Suv_XTFviXg=!a&7kK7I=wqh zn_(O+m7QAxBu#Kq4a&cbF+g+4g61W`$+IU)`G~ZM_8puXj;$56<&Vp?F-)i>V?=5V z=2nU}Fc{q{7tYC#_cu}p+tr}R`&+%&EkD3m?&he}PT zg)FX@E6=kJSwb*o$dX1h#yzt$sRtyT6`Ta}{qM7Gx`<$I;wJ`+|HBwC|9>&~EN{{7 zXw=R9`l$m(!FsXag8H8r2+V2FE7ODNNMi5yp%i(Im0=LeV znXZ?|Q8L6pniB1r<1L%(LU>gT0Xz_Y%@~>W+7BV__k+=x=rS5na!kmQ5{jC zQ6*8+!~IY}sUR?cW9Ft7S16dpmaI07$|?@#nvUEu6Q4^<4WU|C1{}nN!I-h^ z4AcSxyd7l-5`IFRj~nv+V4P5_TU-Zimk-2_w(Q{Bs~a55^A=FQ*YTFqb-NdB<7d>d zkf_?_SkrES+c;psrO}4pfIn6}@3PU|&a1b^y6@i7bo!$wqq6ps`Kj2{c|u{#_;#UI zMJhX7A@LniCa{`0PdteDR(2mYCvLonhn2v8^e5L2wR+UrgdIC-iWnq2KQSoS)rUf?6XDMsKeZJ%i(?BBN*`H9LKAKpiW?LbY6u#R z1>(uhXr<#_fLT)e`!-r*N!-2ttp@r?o&oqJ3;kQ>E+ive3l1031V$Cm#k2r_*bf|&lB;t+GkUw+6qVakvBAk+S{uVCW!`R$DR zyDE=K=)rXj<};pVG-(clOj`D)k_}5nv#FD1+f?-tn`ja{CPWZ2OOW{f!FJSi?qcv- z>|BG@4-`PcCklVQ`EkOS9g@%EwSWdlj@LlMFWU5_3IEv!PG+^&Nju7A8H&;3Vs>9@ zHOCI+ZLsKFw=cQiQbv>Xcip%dV($T^7USuyLi!T5lW?~>+@w7KV)F0Hsz4=sL~Zi) z(-17)^M8SG+q2zp0th4f1mXH8QMXIPswT6Nys(n6l(1G{wV^rkCi> z5R1r)Rs>BM)8$pKmTB23To5P4?QhL1KxlCpU?|za+IJmrBoCuBQN|e5Wu+-*_yJCJ zU)&-8U}-VVXuDX#Q!a$p`r=|b-FPq|YOb&Lg52K*To{ig?v%}V>CQb;7<3wNn<<69 zP<06lp{^c1<2~23`sCoO{fBwDc`_}7IHmlIb3YTNE0qxR^DqN!`&1C#x9C}RT?#+3 z?w{R8N5+S>V#fHKgzso4L9W4ZL#}HopQdQO_-|8$#z$D=E4cLt_^~b+`zoEg<(6R( z(x}QAiSBQ-%gYpA@(4;ipvq%bViUL<(h5m?Zp`9`QXefIXR8*>luD-Ob>F9WMIRih zfrLM0a$il{ppii=mtMLIlPugs7T519bQ46*06`p=-^A$kQ@OC}`EI`2SfKdh?~<=O z?Mzg2lT_wv(m}7J>lo!6S$Ikq+tKw|Qc0d>0L7UC2TBv?6u~ z)&gGoZnCJ)C|QfMo(eB6FBcM5JQo1Bi|g5?5CdW?u~cx93o8#;HSEU=MoW@#+ROZ5car z{RCm%iHyo_Q+3dI9IaI{zTsBe@ThStyprzOs1+UvUB5pPJ)23B+)bo!vZ3&Z^YwgY zNtVC@-yy|Dcv&JJe-QjU=hd%%8^ao;n!-zpSwO}`(m@+Nza)P65@TW9Kth8;$OC?s$>3Nr-MkW zL5x7Y&*QPX8*E|#VqgE%8n5$3n)5|g+9v~V|6(A+dvNA$=97U`Ld7ev6r&{X&VBkD zF5wynEY>Z=N1e_)%;yRrh;bnp`(Uy@h?P25J9ZQdQifVgFB<$q8&_3FHefU88FYIJ2W_O&IY2$%cc8p2Uewy96fxR$KbGBIl&@c8|`W^V{OXA z@XqD-F!U(&gu&(Z_;5ZhcPc4*1@RgMb4c3U3d)m@R#$<^5n$?^7Yb~&xyda|KAF+t z^A@9Qa|JHT9el9yKw*z(R|=jl)HiYi&0A8veUXe)`D90_YQjAi++jC|(4u$xnrqTxVYy|bJ)C2U!fZLh>7 zcY4%slP`M<+Zw=RNyZWPxM6$nbqzx%9Y>^&S^-|_0Uz9Rchy?Erg){_T7GIQ+j^kZ zSuB5Tk#tJWMo*S0uN*nfrw_<5NF}h2K82dR^4Vgp_q+#hL-^6pi`6j-y~1~%U`v7R zc)J74Cr;l&8>E@EqD}q?I>oyNbl?K;S22u209;|Pm}9hvM}6{uZs8sxs#9YJgkUJQ zWkg+kSCAF;!xcQGm51;5QWz`ws%l7!UnOS^RIp_lNyHi-aOeD*BqJI*SfnK1(ozA( zuBbb=JfOrTC2@T!>XEf5e_>!SO;IKRGJ5zo2Dx@Z7Ju2I$^T&t*#Copv^=sR%DWw8 z+8li2_on=9P}o}#0L1_}pAi(8k)SXftb59RF(7SfA&ndE9pxhsR)z%vU99DN-D11% zkvq~HkLOblG$y*tr*=9vJl9_CribOfm@y3J?!wYzv|nH+6XG)!mPcqJ*E_w*ZGRlR+*?9%L0^ENk_{@`Vc1?a()3m8BQh$av zT>YgrE3>*=jWUFHw3HdoOteV~b#!`OeMx|XGrv_kW%T0iIg50$U$OG+EuyM)$&10( z8MHa^eqM%}+6aC|@dY9y~Z_bYU%HY#gNxyo{%{+s~}^qViH9 zQ6W*apz>0^Et6mbBqFRLZci{rrpW*LcI~6XM{e4OF@`RLl+7aJ+fxX%jjKxKCr#>u z=(j1k@yEssirR}=%ym%GT*2vIwsnqF0nC#ldJdf!^)?qSaehZYDjrQ+WcXfz)y`N+ z2*k#s+f0T4C+5ZII|Hl7kliM7dS?^K=hoVo>N zlaU$6m5DFl^skB+q{`WvshA0B7Hk{RMk&1G8ow=b~|629F+< zUqRpIX0toOgb3tJGfm{DUb1g8o$d9y-`_qPCR@jI&B@S=wZe~L0P86_8%gRI5a*oQ zJ{hZc5A3I^nCyI6= zctZzqZ41?H2)IoO5rbVBz?B>65h&V>0JUQO=TL0{J(;)Gi)AK!>yVxPY10g zoyV&?+qy}|>NhJxDK48uM-1>s{9VEg?+p;`SCNu1ZpR@b?AX7Jsq=q^@I+DT#uCrl z-8NCty`{64mWo1oK_hQzWELZ`DSGB(1lef8HqQ1eHhnhv<04}sD+A4x2xj-zztXV1 zPX6Sj*zAK+tBZSh)!cm88Q`$}E~}P@GaB zf-U-$({xE{1KV$a2CzVT&ei4!r-WU9925F#p0t%2Oz+SugoI9;`q+-nIYHupl!BD{ zQwOP_wQ?khM9xqxt|HtgVF06=l1YA?8((DsSM_pS@0%jNC?Pv&JNV0e=FrwduaDL* zIn4Vke(Tu>QI3l%3Z+HkF-PAzm73}ZhbqszJ8r==Z&JK=DLYE!3PE0)h?8n^s9+q{ zueB~(ghH8!{PPB_l53n6w;=J$Yse_|r73G@y&^*_LYAs8db;vX__Ycmc9DeN`ZPY~Va9>tlsaMO+f-ONL=SD|Mr%wnp- zALzyJSd?#YKa&2Z87%Wk$+lOEXyf^zXBc7^Ftg#cvFL-wQq5VGXm-s zjzt}Fi1BwELQf~FuW5By-WGX7i`};Jnw$<>k)^3Mq9GFpTQrF6f*zqGm2IKtqKuQi zO$=U~3Ia_Ez2E;XeYzJgpO5@3d#Z!{r$_6e|Ltcboc~e5^-nYS?ZejlUdmel#99;t zocb1&L&1aL5mA_d5RK&b<>soB%~;%tu5*j+rTo=j;XqU`WI@fl;?Q!(P60S$P{?Xp zR@T#`y_ws^L(T>N7aF59LQSe3a|zxiU2Q&djAozSB8`%Dv;8i=AoYR`Y zknewIQCAOG%KO--a5mwoI+w(?n;T&9>M$!#OiRrT&cy`=#wu$yz+m>F2Vi`y? zg4bx`Ld}@n@&hSH0?hsPn1{e*N*w2|Wha~QWP7*!VA4e^d(ll!T+xxvcz?$@!#yiR z>tWtyIPcq2tJ!tPg;MmzaC$z&87&rEB&TVzPMZ*JQR?IDXg*v_TuoeHv>z@g7lh^S zrg=&c4r%~$)A+ssJiYazi4;abkyBy^t?e++dEr@`3!7$prl4nrVcFtA&kkIFvGf5o zo&G`)-SA<68|M%iFgPOA<_gGR=v^$=PEHL0bX*jG*?~Z6HQ$6FgCk-56{5&9lKVYG zb4^5%cAjNI)jlPAd^6peQ%``CJ!tL5?MU)or{~H)iLd4wxvve@yt1SEQXLl$>^Kkp zw~e|@a|U;xKYG{fR=T;PdB#ig%J7iPy7f!4hbi~hhcKrf@5D4I%Bpe2vnfBpFw7*i z$#?~sw9EWN%lf+WUO8PnM6AOzb0>EgkAQP=gWrZwaC#$$ze$t)(k#9PFCtdKfcO4J zHcen6_sxX}op8YzDfpN^(q|y{Yx(=Y2x2)jPQ7v~Ncz`C%fl7GwH9em7i#cOtei zgs?m3|9397a?Y&yR|{D4KPsQ_e|PKud*i2Ax*#v24u3FXdE0o_)&?@leg6*IoBZ>u zQmrN~Lo3<{yhd|xp(N&bAg#DI3$ai;IpO*o$z=8y*_B4k43@$u25DgnZz-?qqLLEc zw?BK{Efe3TwbtV@)u_&xZSAjTstc<$-OV7yzClYj>#i}0h=7r;wP8AI-m=>2OJ%WN0xhSl#FoV#j1$k1Tn)Y+W>;Re0D8 z-O`e?GZ&Z>bWu}s>2x&;$g}p6%=XPLO#pLZ4GQEpchbz`QYA*R!!oGWDwV2^8R4!} zpJPkPFDsx*HEN6k!|6~3QL$BRlL{Z4?fzxjf71Z}&FkX_u&zUAvBXIzbOvby6xLT-v~7j>M%y zM7<*fSa02&K$YZs|9~sor?_p!0Z-{yJesQo*I$^Koa?WTGUXnJPtKz0&~R(Gt+xrT z?giBphResY>n#NS;^^(BgljR<>Q@?QtUiD&GYxd)w$@4-0HPeemZQ$SJlwFL=U8yCJ}4g*t}Dv=HirTQq2%`6vfVToS98^paKk(# zQ*!?|XQ0TG*4xF-Q_RdEx%WBIpRp~^`%HJ6u>dObS(*)d`P{vba9KrG*THN`qm9um zfOqB+B=pNSL-`J)Roy!Ch^3qZhh$#4)14sSfLi%>BYUSoKGlKl^nT@2N26(^dmKZ3 zr@?B6!ES|tcbX9NrJaFp$)y&kmu70WBI^4=qWd!(J(Cz@Zt10npsv$!Th~E8<$><( ze&)}Q`-?A~1if`pyQNXzFB9EI;bfb}Ait3Jy{FasI}ZLi4fm}M^<@q@`25oMq*{OC zQ+}N~+Uli}h^0j*kMz%r;)i~r?|UBx*PgbA_;I$=0>2^X{|Eyd25sp8j=oG`)|7d_OoNL;cbcyUo74e!MPD@?HK|h}1>5JSccaX0; zh)uuGQbFV-XPrO6DL(p7s~f{%Oz+;XH+I91jxTPCAglDXQ9*Brj4_PPzk5}Z3&b=P z`)p7quwFdZZJE2k_cy}I;&HRItu~S9q%k@J0(TlbEJqqtHT`jUX~&)`Y7FL|(M)gd z)0@*zG=8Z$gV5X8tk0-kdbArMRXckThJE` z?JctO`2y=rWB&p9*ICteBJYRbr%`=G`6si={9jeWf-z{t zhKI&%7d$VgG`=lNuRJRj6+LQNPG>FKuw|fx9WCy!W_q7{7#A2I#RiDD#A)AFs| zs>Pi5iWhaq8fW^%~fd@sBQnu>%uJG5lt>wWtu7}6{?=l zvYBzjn|1Yg{tnQZuscp(uNQ`qb{V(YD^CfocBXPR)hbP1rh~qsE~!Z2_#xNJqZlgKZ+!suf!7Q>&E?g5t$-m4H=;Bo`wh)Dt^gB%-c_ z3l1lOfLx!bsaPmrQq}>Zg_W|Ihf+tb$5E`Z4GKV(QLdn8pqWxyL@UDv@!*q4@#CefFvuNR8_#J8<*|>O(oEsDJ9yIO8a zhWu=3d*@?vk}knUy_9zc3Piryh0+g9ZdJ$7H*%ke;k-o=l`wVC z2q$^IhSIi5b-mkCq%LPSCpo_}8UDkoQRx!SVELy>tR&%N{k7BT_|IH7c#@NR%4yrKljFb#m3|%W}84co1Rdqw5vg1YjP#<57b5x@X6Oc zhqJ}y!R;nTTbWfUyp#j+FG+s40_>9QFOIZKZ>fZ%GLkT)qkTmDUeZjsg#0ihZAh$s zKH!G@&yr4MBq@?}`tcy~fW%$vctAXfczk#0BO|OLKi%-QOQKO40;vYwXbWkZXuLM* zQ#Hv(f=LrX!(Kd-&v1xSWvodNNy`fZeoQZ(9}q3Z?nU-i`gOeU4E z8hO)fN++E~g1?s4>(+fK8p8_%Ur<@zsT1%jw-Kk=luY8qf~6>{A2#~YsIuIwAy7Eh zJVcQkx^70NXTXbMv)RfUDPyzi-4HD8PrZ0wfDu0YZNN<@3Kt_LD>YKrC+^FPY3E!XZV`Y zoijT-=A=3MlG*XPI)3~yixSbj>UoHX>Bx>*b@H&cMzH*Xf(6CDR~tfHn<>VHr?Hzf38D8mtJ8s4zmN*He=?29FPx&=bCV+Eh2_Z1oM59LPu3rAUB2}nmE{1&no z(nmg-R7nX%M0W8Xm!Ri)W|q|GIR~%g>O5nX`Tm(O`eH!5=E7JOYIziyd=kI+@5 zYi69hlGNs`UC6uSDvnYbv;X8y-lCo5>d*2$v*PA&%o#r85_iec&r$w<&pyIGd5$=g#}DtlRc8#~Ln=5jX8iF^Ry?;cD8of9b%<|- zmxcW6HVkT>e^BXJW=-f|@a(Hm5<#67RGpf~09jrrE|Kgha=8W4(RS%&7;+!ITzK_1 z+^p=Ym<#$vxQwIL?Kg8#HECh=95!~2{cX5t&X(S%0r5vN^O-=JE53TgUfMdwcME4% zSWWkzmSs&eC;ihfCD2S{oH-!)E$;ScWAQnR>xE)E@S?XNR1jRvI>*&=EZX|{%g@`* zttAULAA%vP<1v`a1H7$q_-rF8j>s{LqI?Ah#`r!T5Px|o!&?LH6R0m=Xwd%2OR@Z) zyp*!By@RQVpo@!>rID+P>HphQ^Di@1rKatGe1Q5cM`O8YMEJc9)esVjHX5+RBuTJ| z&DacJ>%&-0m4-5*rM>4mNm|my?69Obr)|-L?kXfqv*aeB_smUk1TxIer7%o39?{w| zd5*X|r+&`fn-6gV-o94cX*Hwlw9oc0-{d&IfA}0+=jhvS_}!p?aoa@2q&8(4^AH#c zWWtNDOHn|pz;-&46e4g_q7kBPFXOiD#5?6rHz-P%LoWYi^Ls|Qyuf@y){QFR7h74h z@lijgxUq6C@))d$VDD-rmYS`eR9WPaMFKpmQuJfce0o;>ZDqn%6!rA6S-Y=Y15-XH z__#MrO4o6#nR^E4S5QGS)sVcE(=w&nw5zMgW%Ifzr(%ebAjzd9??1tcDaBlz(kHhd zmu6vmp3aWju~xgOUEV592&Oc&h88>NN41(7EibIBzDq2{OG@r6(ypMTn9Ae}kF~|= zZk>l7eOT(YrTY>-`eeqnn1=nCmF(sizL;5rT4AG!$*7WKmD$W3JUqoknV$I|av_{T zr4FK;;_TaJ$whLcuG&GIx;jClV-lPTs zMoON8Cr~f0Dn~cc{TsCHAUp1@3|kdk$V%(;o3yY_b>FDk;mIG zoOZ^^vZW9k70`JJ4mm-SNPNUw4M@!rrAZDwL8(Dp(AuOn3AI_;G;JE%Y|H^BipKRW zwoZlzwBPodbWOTR}BD8QUzl>qL#ABL=a;TTW?$t4*&m8^bCG zj$r~^OCkjLtqy(|ghmve{0;sBP8;Fpz*_6Ht3#eD=G*&XGto z5Ik(Q25`txC^#tf((#lV#1PO1h&V{~lJOK9@XAq_4q$?-dgusJtAKMe>O{k17@qdG z5?~6}2V^3f2*ut6$iO%eM#>qce8(N~>pc^fi=7Uhg_DjY?>|HgCn*Md>Liedz79s^ z_@eynYTwOdZu>$`iM{F1+GDL5T=;J5L{51A<`OWpRoEj}Eh)NS$~B7SLpG3t)*NdAG^8$Vn8`X+QA`Q~G(PlqF9 zk~%?F7zXs;wF4CGZ>E>I1~%4L?Fm2jP1v>cE{!ZEOiAra?r+F}?A{zXDw(w-r%^ zKoQER3;T4ua|;#XNf_dZ7~;uT#PJt+Gpm0hLjDS*;#pwny?~CRyl+5L)y&ONVN|ES z(bMf$1~)-2aTw&IVzz-J0J!;OpSA|=lEruQ6n)_ejUbpkLiKJ@nnIzr-7)oj^wZ;O z9sEYe*Z_7Wuky;2_X%usQ=5>-W6iX!luNAZvQ}ypqsv zsMdR_Y3Hf6eRU%PnOf@XjOkl`x+N;}va8^*E`-uHf=1nbNk0^HnGrtB%i<8~aLB|P zvRsK`IqSt>H4I31jMKUVG;MpXL`dI4>E*k1O1(HlaXDmhIVK>rit2iV-0$deeMcz8 z_AkPF&4S<7PaLr25)lcJEauY^7B2-pmnB0`$OSe=L@QClDU#zB;Bif%k$bqt1CJD$ z4pBI7F|taSU4Gz|lt>mySGEaJwo6%hWwAVCW)-np2HDL~bcu4k0f!EKy#n5cI{5P) zpCQxE!PB>3=SSQ-db?(24@J54(ZckXz~m40vL|bvSFF45pDUBC%$iiVEB0ijtmvOs zsJrjW{h9Q8mLtY9-5t}$_1CbxVrrhhx0c=_9(x{xwMyZ8DIY@q=}2D0HP-bb$T8JK zp}cTC+(}C1H_WD10&j=G4^$NrmM0WI$2byY$IiI^{mudXvO{v3H|C9LygW|#@b8Bo zQ00i&S)Wk~57Ix$|Nn91ftsO{rJ<3H>3>>j|E2o2avdPbbb#r`G;zD@KI~QY4b5Oq7{6a+l#?3Xd^5Y*w8q84 zEiv~;d@a6$US~Z>C$@Yv86_7nluXri8Cca|G<-ejuJmt$!b>lW&SS!{OmF4v;9+Z{&!o>lXX0Yg zq@nA)%7*6qP}5owUE;QwjC?U%s5l>KG^%T7x=c-(F==xBB`!7y?5oC?#!Ae$$1ZdN zQK`aR7w&QNjGu$Oy>A??3-bQ$ojf3|vqvkTPkp_25$OKGqXEL~ri|~HCu!P@{ab40 zREBaEt^u$RMEhgcU=Fd^4toJU`(NKDqeQJ+?Rvg5Gg<5@SKYu9Rk}h*H$xQRnj{kk z)iNN*gZhVi9t%)}-Z3Qwl%@7dwFYmHL0S?I4C4sN;|f~??R{@FX6^Zs@d8jpGR#7ppEzqR-vp9ZW92ra2B^6MW?R88+IK8`eqi9|kMf^y z$Zra}vmC>dEBXT-h+Et6@AD;H_y=0F58?UyYG!NQL2z(`S1(HzzWI|-j)d_L#zb*$ z5HigFh?VuEF(VpsF7q7P$Ju|5!ww$)k(g0biy{?qizE_fM42fMuFbFVvU`1fkdVVr zlgobeg!|6vmrDa>=m1;Xt>v`L%{y3GADsdF__L(P0Pwa_%b_7pK@A1@p-?=aMH=8{ z#?)#JN6Bn6ikqd$nYoi3AQ&0cr`QNkV9U@tKZJ_4z}uXWUg1DsJ_yGap%qvmO<`|> zgcUPfi)94bhOTOtV*kp)sf!WJ^a)b-;1ADroj;Llugc+-^mhWbknhY2QK52 zidd74sG=D^TDo{Uzop=RyklC$iUAmkuncL|Yklq$OEPc+jNLi?Bd8 zP6y(c4-shBYP@#BzZ*Qt@USu!w<>ZyR}z8eWqx1$MnA*PSR7r|zb;``rN0!!F;2qt zMr$0OnIa(bJ9nltnnknZ)%~j?t+LcKMdW1Z?s#D7ALqvCuYqMTj?jJg!MycslPhc> z3JaCSsb5pc%n#u71pMQsGuYZ9&Yw3g9WXfcnVjRURL+GNiz`-UQXzSzD-7`*@ zh%J(0739(oPN-u2ZgpA+EoqA^&V;MUNXc<_YddzS9QC{s3z01faQcFiM5vP^^vH?e z9=j1$qcHby1xvI6=?RGog3?pBc?-@9DMt0iIyrXfIFfk#;uX%WH3>dvZ2unQ5YY5{ zi062E%E}&$tfG&M{JYEQNJ)s9EPb12F3LZvln@3D+$1VA4M8n#ghO?RW#fz59|3ky z(p?ab8N)pXDLCEdhAv&(8W(mkfm1~j_n>~1#fyQ0gA8`M@KYHO&dGaUhM?>p3UMS% z+0e^f>vJGRu?hqsqWRk2gc`2;HmN2Zd^KI zQU%+)je70&7=+!{GjzC9FbMS9M%43%7k<=p*IFGau)`Akts`V~*tfic&2QM&-8qz{ z4sMshNQcyo+qGTwU5)^Kofkl~D@N})BOHIb#sP4F(UJOI5v)B1-|Y5~Qls~FHawnU zNPId~3eI^Nd@ROh;yoJPSgefIBH{A&oF!vYp&fp^SEBz1L`@YxW+^O}GNeAbeqIq3R0NFC&N`yOv>XZw8%sr5FwlCXf2_f6DqbcPY0*+O zol0a-=Pf;_8I_KueXN!99Nt?DpM_96P)|7AuLnLHduC}i`eJYm3wSzq;=$X!|vpVoUoA0Hy#ea?BugrGu=;GgFo3&YragArF`F) zeAe3g%__g2Q-c!i>|n7DswEJVp(Q%D)p!*oFIO#z^ z+*0+WkiS;-u$qc{xdk00N0QU@YO$p$t3Q4yowuNUE$H`iCmKa3MKtX8c~#COWy5Pm zWSadH^@wQy9}>uk0odn6y10II-x6rg-ZupIBF9G&DrLuEj#mf;tPuMgvmN@!JKeKc zE82nad)JCO9H4u`i~dW$nL5uq9z1niYnBh68<(l@E;F%n4{liK=7xpNv_wvDQsk@i zTOW+pLMf?V`K+zK0xZJfx4WEJ{c4VOYy2|AG>GIGdbl+kPrB z(!0(FOk&&k5~p;1!nmx};yp(*Q_1fp=Hz&tsZm!7r1)3`FzN5j3+*3oZdXD9^?zhW zUG4X;dlAdl2hRfsjod+e{aLWYcGHUku2OM4I__{U4jp!0?5&&NgycM!bW=**A z1MEvOKJrDYtd?y|C!bx*$|}K*aK+7Zggfr_*5mc{W9Ph8^XMQcXB!8UPngj`}77zAkb!*O(uhcV+4=IGR zgwQ-8@@I3x0<56a08oZX{hNDKx&4CGp?V2Ac~*>lhRBy0;T#=Gbz*y8O2KM^^it@3 z7ruBk31jG;KoX(ON%>KG^PY`&pO+NcSC97>+pF!ggId=iXx@hqmC5Rd#@PCvr?PXt zkqemVpjd+h2b#^qh!&mylIA_wE%Nmx`!g3B|u_q%yb?HB6jgP{jv#B)nXHAXNY ziq>MY$qLcY^#&g?^I2lFQ=yJRL%V-?!DLA>sqBN}jpRypz$Rn~c#Jy6@@2Fs3nJ$g-ysI}E#((b) z!Jyxe##eIFaEh^*2#>YkX;lR=8YhD!;Jh%x2mgjcpd2wWtuAQ#RdtYZ2Pw*71?4x~5xCHxA>P8|7^sqh!^05yg%HqXG{Rza4jMu2wIbN? z(6G=CJBVvQFuuqu7gf70AsIQXiv@h+fb!I@w$@YDFuS)u*?L;6x|xCr4)JFvsNJm^ z@9>Be4JZSXjuU}0Jmy52&fmvMTV|g!gb{HQU2ab3-kPsYD% zEFac8r5vd{oP; z@a8G67-c)rC>m9WMd40S$(7eEVV^SH*rIC)6Vo{>?GFZhAH?2!BEJcN94rhq12Er7 zr|tY0JkkEv^8M2OYcEGZd{#M@7)ujzFS|#DCQc2d=aI8&I@lEBt2UWqCMpy2Ya%IQ z5nY33QaKpU{JupQr^@x-^l^vOd>~%9)nE@ihGq7KF3sAF zUl2tWIiX4`g6^c{RK97?^C8Br{{xLj9ce@*mg^nk9oU6u*d-=1tK-ktUX||6`6tdQ zHqe$!4UeBUJJkMtmdOk2F;X!_Qm9!pMd$okj=-_XF^O6#aRiLQPTVx+4C3QH37OkU!ZT7C&9Yme!$gks!_|mhU>2sdBZz~| zdD~tTAEt?b{g-%qmoO#4O^RAcrroVxKi7w^G0&fkYM^gU*JQ}^TLxX&)a2nob_=qk zj@cl=Smk+Qd=Kkt*r5kCWVv^oR{|x@rt0|?>k#9<+Unn2-BUS(0@$ zrP4N(vS@=kKyU;%4t?PHUsr>}RM$6)RE!t*#D>Yue8)|)d6K$p9jq!diKvyAspR{0 z5U;e4J!iuig~ex0z#67n0@>=t-cSp<(<#GPe`71VUh9(DT?aKB`gUv6D@AE&@d3%S zzZmL;DB7|rl%g){`Y%h#ms(+~xTall;I8klE3Y|@)rdp=gP{hbseX!e0ISbNDsGU}heGtOTZY|rA#Gf2=AyCfXn>cBme*GgZWRg8 z*(l>R!z^%T5>Z~?(?^*&l2$ZFPG1=vEV{&xi5$Y?H0)!{;Mo*n+ajD4;DL&2jg&6r zwC&NVanA~KP+DCCsRc8wY08d^EEO*Ysj7-8@K$uexqD9RVLB%SYiO4OMp!2jXM9sP z&=Si0UBMW`dusC^Wg{61dv;=H$7m9tHlnIofBsD!il^Rxz)B9{HmTr!v{*cIN>t~- zU8%PWcgQ?k0P=YE>ISan+?|~(i?u$J1CInI4>yMnx3u0~a(1`WMVRvw0TFEM=*3iC zkM&O^bAwd~dg^yx^~^~lR)wuwm~EO31_7Ge^v6BoVAmDuExPR)}AqMDmDRx8N4 zK~O)BwEr%poeqI7%3&<0R$Lv+&)c>ir*ALThH{cyptOD+EA?KxnBW5(xXrnbk^8#! zM=Y4V+T-S5wcr-@D|05)@{B=O?Uifl>FOLHQ3^ZckLuA$)v>rD`)#=H z)9@`8rxzUTb@|k*v(f>JPKvXQ{LbN0i{?!@`rup@B=@S_o|;I+`@cn!X!DBak2U63 zR?EHpYo3PPtS=wQ9!UXrkg}9_ba|+D`P=yMOU~j z)SnC26BD$CJGnmTn3<$tzPHZ5_2^dZ5%I6QH1)w1;C4}Hr<~3RL^ap@WUh@V$gtnm z(J~<7T>~a1%%(=@loZC%`(zlO;Q6(#vIooC-{~R0erXRxnaxW;8Fmz@r7{I2zb*7P zPk8S~@(n_voPg|oQjZii?$c|700E9lJQH}URc8-O3oxG|=3b83 ztnSf%&CsA+!(`LX?g?n?IfB%u%V2_^^UbNVtbX$h2a%3``CR=N8?nIcFu$IiRhpt8 z(A5Ze=L~;L=o$!oE6uS*-g_cpOsP07lSG%dueqe&D|Qdx$mrUi=Bi-KH|y;qYw79z zTS=@KGcE!Cg@t5j8gdBCH35Cg(N#-63)GWWG@X8;*6;^o1~Wf}!`&z{v^;=!=V7?K zC+?*47!(4@Bga*0CHA*bkS`Be>+==s@REv4NJC5*mmO9-%{+wsk@-A?(=0D%UGBUM zsagL)bF3zy>d~vCVA~<>ya5I?xlrKtH42JSzln&n{@4|MlghdK%g`#Fle6E*rtJ_l z6Cl?RYWUVC9@*Owv2i$+HB;t9#<#kYujGLDsw7l!&&zpQa&_mbW>Fm9on9vV8mmEg zSm1)sVRTr0>}Iy=W4}0tu>q62C1vw~q(b!a41~v?*paW5!RD!Nz_V8r-njuo1#M7Q z^Nk_OpdU`BTC#WN{eNv|N^t5Y67WDkt0Mo?cJ}|KG5%kj)YIIA{-0LrW^8F^ZQ^3= z;%&%m$o$`uDQ*Y4KSlt!j9{AFB;Z=W?V|kNN^HDbRJwMw?3WcAwi71V0UhQgcm@jP zT;OdN&`W4pW#{z@;)xCL&b;e<--hEi8x|8s_lf4ZYkYl5-rC)TxgXH>{`reOP*8v{-jQUS!L6Tm#m4^qGLz8|;qJHLyM6Y(EIQ`aRa`pm z@@Xnv!kc%FOULS+2#&U$ISBA$+i}xe?aZA4W0yYdNG46X9$HGS%f0e=hHgCguR1yo zhfKA%7N^@i{l9~IzvM7T{*&h>1zE+1_X_AcbY zV@SHts^&Wy0ikLSOHOTw(96hDhL$;;ny{6W?rK#~!>Mq!T=FvKH&!gia{Xv$+L3zj zEoWpl7Trq-jI(s;ncsP&R>+t&9V0r8Ktr>TpbVNOJNGq;n9CV?_CGpTc{&@vZ*A@L zVk2l)FoB-hC_rT76lnkUuT54lrH;lOvCV9csHreH3=8CuB7 zY97*>0_)7jQ+c+M_Swz={z4a@Q0jRZ(ox3dlfKkaOX=-i!i#An2CRvgXLfU~cAl{> zu>O`|dtx|kQ(@`jw)5h^{^m3>M6-A#Ev~{#uEy*6Nj7h@jf{*>8ssbovH7%cSyxKD zx$XPbP%2(LlP$~U>mY-1(Cj3tNXK+B?jWsqzfxlHtYXGU#3#j4xPWDg)C85JFb7{m zb*UbauQ)e!X|gFIWWyA29nVUT?i*0Ry*(3kW>t|tUwQR0^aRb|2+TF;Jx96Dr4rn4bR>3JrNbSijtE$2 z2R~*G#g{0OAl^KO2v|Z_Ep|%f{Dj@~IDY*RvkYvH_YT3;0yR8pqgWXEae{!h1izX? zZys77<`UmBPQ0q6Po5WB(4N!@lks>d1fo_Bg6I@pB`}wKG0LY7qxy=zu*MA1B9a}v z^8E`m1rCz#nJLuM5IuO^nPrzEgvsZ=nE4CUV|A!ejH(W*b1G>ZROo$a>Npg2{@@!T ze4*Y{b^P+;YFM-!f=2fe%^AcV9^yC4OT2Av-Xr&z^7~-o3F)9!RddX=Kv05X)grnd zL_OP=`cusO7))Cf46O$lkQyo`4dk#FXR~z(!Q=9u)>GFbSX(QPZ1lurRj)k^p&alZ zr+}jlRYG)wzJ1+f8WJ&6{Tktn(c&9r*$(s?HTqs~1udfL>H9A~rml|!kaVgd_@2dg zvFc*LAreZ26($cOny^Oki1bCJnT*^F6*IV!L|Z8Khu|HSYz~+}dQuLO8&R3S*>;~6 zHlZ?hV-X8xI0dBZ0DSqfVtTaL1Rzx<=p2|0w+!npW^7Lh%Cgn7fhv!Qh(@fVc{~~S z)9L{gQgCN30fCZ5vbgB^57*QTPOsFHr^FvQmtSPc*J9uQDz54ZK+(~`n6{`#Z@Y-MURAdbgW z>|tC(!aiz=JNceMcgQdA6IZ5M+EgsCf<#EqRcUG_b>;hSV}zzFL~}R;(W#9ipn=M( zGLYqNHWm+*pG@G3*2Bt3fUzPU8&7rego>l-`_*2S=4~0LLQZbq?NfJ@53{%Jep~&w zpshRBIJ&k(s(Hu})dqYmn89Xo=5uxn4Sevmc za<<2UpGD=1LGh%Emb4@+D05LXl2sva<3!Vm{k-7Xq%6&FNGv@O(uthoqC;tr0#!su zay*s*>TH6}R4JT`@~lxl41&!xhiMI@VMd@o{}2<+R+N~$NPZ2tXY=|&MO(=xwbh>9 zqEY1cTy8RsD+|#n9~zvM-iTZ zhvk_WCkQO&H+vBP=eUK?z z96R)_dumjP9VU26UaDb0t_|eRGGw8WgLt-b`oV>8A!O$ONAVW3CaBhUqIg}3K$Nwq z1<~5nN(bJ2Mi`gqo`5_@)1*~NBueW%=>{JeLtzuLrkRn60$~3lBqm`M8j_c&6&E{4ggZ2N!9~`-2hn8>dp9t> z^PgAHdq0BU`2zIUx$bBm5TlXB4Yz7_m*d}K)&7q*@sAap?2otS{BG?0eKMxgtkduGEkLUF2lKg!D`PK^0wyB%r0>LOTeT;cKYrw73`oMohHN`x*xRL(RTuE{Mw?|Hv z|BRg1I=i0R?dX9V-!N(ZS$R5YIeb?$mpMn{G9@!jeOiBcxVia}prxg#Q^=*Zx4M7) zUk!qY-pDDhyDQ#_lf{5uKRpEp8w7F{uz3d#Gc{!cJeu+b{%AVBZ@=f(+@5^BuRbR_ zVlo=i-=818e?b(|8`3+x)x2-Mf7wrNJktHfv}vJ#Pn}34R6HmYe9Wc!(;|_;xcVQy1{AL!J^V;-X(CFj;wQ4uMF< zXx>z+t}?V965#9oPVY;tsvQ+(s97T>{v{&LvYHY|30v2kCU~HobM;Q<$;l4^72=soX=w`0yRpco#A%yiL$7gs>-BhBqv!@WnVf|8(Of40}$0d z^9H+M_u|#NJn}$lZh6+%v|^JQqhceLCG3=@s&j4P?<3XYGM;hV5^we-*^H` z0AepO8sbf?dX+QTw=LUvnAtLpH$RBnfJ_>{|E(R61b?#Og=lO7LPBI)GU=T0U1hg{ zst3wRWZOEsa4sCs0|_?=v(Kw(1mBOI17&{fJ6UlgMzBESJjo{{E}#gJhek{UdJ0j= zVX$@tS-=WT(`-oW^96)N+lcaZRdag9h*!Ey$7C>@?y?6n5ile z9du|NL?UW)1T+<ZOFg!IL=rruijS|2yfC277*2h0y_CtqR6`hpISpL<7n zu8cdJ&ph3iuuWgndcoO$gFw|EY5=BX|6%bP&NKmSfbBrLRx%xf51>bj2(6Fl75B=Nu$#T8PW4_N-qbA9ZIENO-kb>0MFp*DHyfzMKs*H4D}4}uaA!94UYAh zmW+%Tzrzf_pTZ0SKjDjb2&{iX&h0q#vSuu-xHk5d=(21$at$Hcn*2pWgC{rKHAegJ zmwme7u{8vqagw0<)@rTo5a+bcmw;pUPc`Q=1r6r2XQAMWN@ep(5c)r6>JP@<6f{Ub z95J%+!L{^+?1fju>X(pQ=II!YHuLr51}Td?ZuIMwoS7^1BAs>jx74Z-Pp(e zC5@S4B}sKlWMmZPxd3!CLrD7SD5mXIav5fljgZn&)nNd%C+!TP6tVD8rop}~u;~3B zHIXi8!15w;m<9Qd%nj)+I10NLEYHwk6NT|TA0!mmdZICDfZA)`i)s)KeQsx1jvA{5 zI?Q{>576c+W4hSYV>3JOz%v#EG)T&40a{SKsK-NKDhCdIGtrjY%3*lc`v}vJi$Hmi zgz;501%GJ_+cIx5nJV~1jy!~WamXtH7C@AKr*h{e;-Y0^viN#06m2a(-e)Kbh-rog(_iFlxg0s3LNA#rDkzZnpM{1K6Ios>kH+TXz%nUUJ9d-V?7*tf6HTUUgsWX`gp5NbXv0;HQT%QDy9K^`+-#PTMX#SWnVn#zXMVA9D1DEJoIi z7#3sW9>g9wk_W;=IG95dfXqWa%9I!3z1jiN{IXMKNMf$PhyXdH9z4d&9Tttir`ndz zwoq}61~ZIH9&^x$+Lofh9C$Y#$1%mtQ5uZW)vFqJxPrkIK^t+b*x6(d9Q+V_{kT?I3(j8->$Sc zXaWtmn@X%2HCI}Q@!&Rfi&)q2!j_eN9Ip|at5{n~BU2+xs$G^e?cs~_cpco0FI?tj z<^Tx?{x6NrGe4P0M+oW08>>wd z(KS)VGK1rAw`*Ab;Py8Dp^zzqX*2sAj64}j9N5^xD)XQme2!6@cvK=Jo-u$IEMk&zelSLxadLEEMk-0`D_DAzUOgoNVd-r^yfezkD=vJ~b z0uLVFxV#Z%`@sGFoVNzC%k_`e1lCrU1tHg_ucyVd!kCQ>s%p*h)~LAE9Rm^XqRwl? z6Klp?KL6p{_hrf=Za#25kI+og>AJp`QdFy6L#en2<|e%ol@Ty@Yi7m{v?iubt?3O=@Y zC>WMBolk&KX+N^6FZIt4%(ol3?**>1lRo;>2-V*xlal_-#<5VM<7*b>RIGzRbn(iQ z-f`ask;80dyMctI+J5wh6OnRUqF9CQ=!>lB5};KR5+Vz1;4pi9rSqQJJFN#@P$2{x z+_R6`s+>M)AR|BZEC*iM3TiXqZKN%RQ9=0DKb1z!&X{~|b)gI_0JR-zHys#K$&v*4 z7S@*>kJIi+k7WhzuBTFR`xxqgj@dz<{%VM7(N9Y^E1qLs@CV|=I-%B%ppiiKQ=^ia zv<%-6k#Lr7XDOQ19h?aHzq{wjTmyDkNA*@T{Ol1&X4XY346GR+ZPK9@U9aHq^D30R-*0&Z_TA0#hZJ8jao@A$&gEtP6H4 z(SQpB(+lFMEK7m2Abjq=UDC$ar#ho0jT&6ht3Ji^10l*}0y!q81PjSh`3 z5+@L}<5PKy`*m&MtR2c2@)U%o3t{dHW2kp%OBj8h<94p0d=Qq?h5gwBdU_BRf`0ji z1(1IaL$U~xE1h%K$mTs?ws;#si>0{~@aMkJEpRNmN$q>sTem;b@SCczZ8%I(RI51i z-&zAUEt$*~KNJ)VM0b7z?4LGy-@OpSX7({+8o>-9TkV~d0a$f$^@O0-i)^m(Ju_d7K(3^V|w^FLDly={X@%QYIqFI3caIRe$f-5rM!6n@Kkn$bFUV z?YT#57SB96nFRm(wMmTvrrh%YijavRk)Xv(OtFV0`@rTc;S+kITEVXpt?ff$yx7<;9s3 z+p@-^QCKuZGE)<2=){tRLs7z~Fjr*9?&k3ZvaJmYzG)1q)&8&`J5EcZL>`hMs8^@I z#V5-1VQA;nj_vLL*-jnmpS0q#Gi{nwiA8m=&23$+O+ezGu#-y&wiAOFl3wPG$blU{AoN(L71MECUP2Ni3P<&>kN<90YP11(d`1IgVuY%m=8oY@FkuM*Mjx+;Y z#40y6xxX3mA|su(I^&dseusTuZ^p&h3ZbM%+Q+YK+C*;=1Wy7u(x!n0K%=pasGKx< zWl!$N)#Z{2cqPQrnKKh&!3b}qI)w1`#F3&$|H{b-*59Y%5>K3CS0VpeB|_9&T+9H2 zK}^0ggF#7H1WzH5lE+gF*8>rba7h7@Fh^TtQzd$}1IOZYl?zhWXamQZg%lg*Bh!#B zQ;sCdwkQ%l2`@yu`}jn(DA1!vUBFrCo}1D$qutO1`c z<6;Iw?KPy$4n(?DT@dShUx=p4Qu#v&k$xqU9nkEjcq`acXnX_&6x47E7oGg(-USB9 z-n25Kl&V)Hh4BtE7W-FE5T9%j%1M{XfD}Za7$XZxN&mp}ZV&Vk)TS9}0itGIYDYyt zHH5TvGE*<1V$>H_7rqQ}FnGosG!~3kK0|d?-)=;jhmOH|LV8CIbiN_2u+JC# zVrWjg04y}ZybOX8XwT0I+YBQOAEpBA4+3!(rnUlHDykB^R1=PU$N>}uMPX4czZ!!H z+)5Wz=f_<6$7wizCw=`ObJ*FDo!|c!UeC}>7=c$gQ>ONuf)=Todfn!&dhC|K_%Ye0fTXrW2#O|USks@0@+-@YKK}8R zHov1>`rpQR7a;M`HjN4KeE})qZhnf8!bqJj5yrOtB8Z?5QN{rhmT@T&rdu6T|t%6*{#XDACyO*r&W(R{kR!h=c{#&KXCF-!2gZneh(2T8aQnV$;jOjuu2Q&novNiZNs+7@a|m zpox*WaeYIgMW!5KF})U9TOO#~S%Sc?F)M5erj`zOS)D1he+!c3*|YMvJAgO!&pZ|~ ztiL3ys&^6Z8;Aqt)7L_`_P(fnc6-bjM+Y5}V-=vYw)RJ)oRBO?SU;eo5c-KVgw*!6 z!h+y^2&zDNNjHg!I_yJ@f%V}MZ~hL_M?iwhWQitafgvMsF}i|y(@SYm z#gQD!fjc=y&-P~1DseDEi~y+mSf@ua^BF4@ls1XcUb4?Pja|W@GA?3^)0y#bL|A7e z8N(-FVpY}-G^WzUa(9jy`C>UoTu9{L?@w|04<53d28nA84_gC!?4-fz?WDKQHO44O z4h>4t59x?^W61S@RVXJ(?2kJUyt8PEha*^>zxwoHAubpb%Il`fA#Oy1By;tLEOCu78-djT!sIs2|&ER{pl8R&x4*xXdK4M ziAqXHtsHCC@{||Zfr^vDFCxwLgPx3&kaSWTLgaX14ubq9$-y>yB#dGX=I;lQa~2Cm z4o;emC=yyP6e@MUqsuoMEKRji@=C6vS5qBh%t1KiW>t+h2NGbi!zznj(NI5{aN}rP zQUWyU%t6YIisH;I!otMH;~USfx1$y`Tr1}XQT9o|pZSxuwoe!GV?SPfA7i}x@f487 zlwrI%VWmLB3TYeM*uAV+{!7n|P{K-kTBx{I)`-|NerY3)v-6ce=A?CHyT=2<% z2&Sap9Tl7Mb)`t{gV3u)(Ob2fR`43E!RGGX?rMr8WH2=v0#3IXamfLp-9|?!ho^0e zrkj|UmDNvXtwrvK``KY_?G>G) z7mu)}XAlw`dH~HO`+LC{moLBAqp5%up?!e!Ns$bQ2}s{)EfjxZ3}^Hrrq=*vc548vTNPN9WIE?FfF{BtOhE3~s=`ZH~c#mv}hTw{4ibvoYpeH#c zRI4aj+$O{PF{aT*nna)J$cc=Qc=VJmV29HE1gIqN;d5PrMRwi^AK3+x=gr+$P&h~| zpF#7h9ZC)!2Rh1jQv|;#yY+AoTQVD^ByuUp((7wc8J#y7lT3Kap|T{XLLVTo?5*=F zr!OgQILzkDK?(BG(VuF*5u{y`Y5vWzH+Ma-->x0KwDIKiXYrT{$@J*TiS!9PG7U-IfX`{)I)gyr-f>&vfA<3Q@n~(k|Ng z%j6%v`s61IH?X0<99 z6vI*@-8Ecxc5lt{<|hv7rQAeH;wK~AJ8{?eh|Nr$;viBy-J49D7U*>^I*mbhxitBh z6K|4Y3ShvwC!2WVFREXM-2^=S3;Dch=Fq;Rw{-Jj*TIN0Fryv|lP~3i9)|Wn--!06 z@Nx#VmjsUl39kezzmz{8Pgn)@z<=VIykNcRCh|gJ)D!%x)xQKvbap|n2u&J36qxYY zh|oXnv1*X@nfgUBQCZb{Ck?|}6c#DMN6d~8`fLtS4m!&mhaOgNn`Q_g8K_BVM-(f= z?>@hSaf7i@Qn`JCF8PI$@zdEa$1AA_8m05|X^lpu;z%DlYrqTU|Dbq&olO+QBkftb z!}aQJiC+m2U=i)6f!VR2Wf1i^U_9|mu5elGT9JOC`AKl{a#7x(6P*bXJ72fuFkxyD z(eD(dF~{`K>lD#~3cF+w&Kh4wJw#|7D3=vzLnTwH4z{tpWb`%0 zGm$6f6wWpF>b+4PxkNTUH1EuD1f)U7vF64!9FHIvog2CUm-? zCRd>P%uWWkGBU`<;i3n=TwsV5ipJZNEUPt#Ae<6>#I-PekAD_UWEWUT%rQzjMMcupT8`waYr|5 z@-B(lFEuD30V{wBSe%AkQ=)O0@z2Wf;Sqp!81?(rhB|C#x}q}?}{O0XP2 zzfm!e<{d}gjt^C*l2)(!*NIlbb&ygz{ijOi9A1E1zaaNfJ?l0#t4{xf8B<9^+Kp`0 z3LX+EQq)nTvCR$~PPLCAQ?`ggUcCmc1NxUw>0~o=i!(MRI#zB%Rt0Y(H;OA3*^&)0 z<+Aq?Fy8%Bq=PzZ5X+e=wuyd4*P5{LW0hQG(O1v&W1W^@0?!Tmik&}iOp?ZxA+mwX zCbdl5Qr%d}rlwGwiLi8By0i_kus}H0_slhxz@pHVw&SgVsj$MKedu^kBdp`-RU1os z=#=)&(e%{0f6H)_vEUnFjwtKhl}ZMkgz%l`VLBLiVe7aGgK9og;Q{xq<<_Vs{59zr z)yNjg?DGX}24VeIcl9>2RIS`gR5eh| zB^~s#S|@r2=zI58fqfcpPL^4*6aZ`Z(8c&xVrZlmJVGrgd)_S>bE#biJnepMz%xwe zU^=~=x(tiCu55Qn-6xNEP181|oi4|{ddI6%zL8r_yY5W)Nsn%mJ$7qm!GSp687nY8 z;8-H@yl44i*ZS{Gs|QaV{od}Pe_gwUHRS`yM*ZRi6x{(CVoX}?o#kCh=lXkHIh;f2 z5l!xi+rh}j0S*VP+gCq>kV63NY0=wff;+nOJe9PqJY-&plIC=tY+^&cNX$QZH13g@ zs@Jbsm81Nrfdky9Z&_~+V~+A^efa${cC){Odg_wx6t}sTC$9bL4(C?E*UcBq3Id@f z?I!*vh<_oUeSQw2wkJ>0&jmg^*@r0%Lydz*hQC&gqkvxWJ|7y41Ma;%6cibQ)M_0nsoE zqEN`asE@val%uSRbueEA{Kw@Bz5;Jmxo(k~+R0gYE=9}-w&Q``9eDZsPm>3&RtJ?KRMSQc^PAVxIUXSKb+#LuM3TZk6Tuc75&(lqT^90wM_D9Kn zruu$ARtsB8^UE7|478ypRUXx(TYuxF-2z}fhwn;?(^>xp>@ z+v%;U^T)^GY+$_Nz#Tl16$|WV#Jr}{K>4-sO^%qY!m%Nsaecf`mwKyGE_c0~i@SLa zlHkhu;5VupHf#5T34y-xz|L-(bn{(m7mL&oqhI|LwMCE2>Th|}MRMHe`?@W60!QUk z%^^!Zlx$Y1C0}OPqex+vD)RoB>@dbA;`^eyJhzD{<1G!oA%aq8!wrdeo<8{oG6Kb^VfvpXz-M(btoPzGQEcX!Uht@KOD1e{JB3XBtRcKD!Y}479jiy+^%$m-&D&5v zSlH~$$6z+*7W>nV1Z{coj5N^K7=ny%w?MUIUU|N?V#v9w77yXx41$opAJXmmQp}_> zO@U3qqAc=b*yXLIn>GL?rhmG}l_st|}*>GQp?Vk>1NqGv&1VCCcrw)!7Cb0)xX)Qza_V!@Op>~U)6 zhttMJTQ>H1K(o$vS@A($cWt+zjx8)Tu9N7}c@wi_0$^y+n79jVRIMgnqQ!95HN4f` zccX{B2=K54sgV^A98(GA&?w)UOnj%WZr0BAOX<5GddjU?F*_*wObjJk2LH?uvxF zVkVu?9G>2E=XG8i);^%~3+k>cJr{V7BBH|NGLx7xPLl>4PG)=gvWE{0T=S~;|BI48 zt4ktYF1bQdJ}Ie<2TU*9@DTv)gpvwOh#$sOODzkFYW!E5oEvD@7=|bJRNzm15&d>J z40}qSTynpL*|YQsbe?%6`$qG~RNO~RVo^Cl`*^;6=@3RbP$Fe}&v)H(Aq5bBP3>sZ z-6}n(2`?do5nD;x-7%Qwr9zri7o2rT4n7uMeJ!GSo+S8*ZX)Q;a)Rahd&kn?r!jNY z)Xfy1SFfw&VgkSYamPAKpG?_HK*KXAvEM})u&{W{Nii7+UA})Gd$V#Pf{4T%__6hGSnyWc7}&2@?!A8!&_Biht-ULnEr!(T3b*uw-uw$#BexF6Ho|Q!D@)|Ng&9URe1?mJsdrX_CH|%}%I%8>9^gnxtfKEgX&+sVp`9&cPEKa)X~nS` zysKHeH`%JYGVBn`XxQzcuh!;>igSJnvO{NgFNo__cWuMZ(vUKgkFZ%?zEw-!a64^D zsyy({k!bnzd(%BlUYGOa?yudqfFEN)%J&G=-Tcpgb)dA1b8L5D0s$F2{BJu0%>V5S z;7Ym_1{*R*`XPA}3(0C$=}~9k6+r!Rqmn_k=EY2(V&A|AvZePp@V`6gCM*n?aV10& zMv1w4TuWEn$v^+kTYqBf|32|akC9bRlP=)L)3JQAc(1_M?-|5rNAI*ZD@#B{ZeAV1%iw!xINwq+`nAwJ02NNt&?OnfJ4 z@AOo~m(8|8P}sGLyE}W=$21uuMxEYU3!`>$rLRj7@UIq@8|bm-D#l{sS|Mfji?|4FOu63pz*`^xXv#pB6#@* za=)WFZ%2F1FF6I}#$q`gf4*;yS35A@o{z_#@CNk#d|ep&^9k@3f6L4LV7`BpOJPjQ z0CoMaMErd9a5b>r^F+t=_EOWf(IAdWW5|yx=fK$L#E7I%@kysAg`=4Be`<@TSGv3vi2-8J+f<;xwD)=8PgXZy57VdAh*j^~3joq&3aL`& z02IMHlW0nk`6b*YPM_x&w^l}%3xs8@x`&wsG5u;bL(-Bug!;x*=J}vfk=c!oPAck2+v>$qhQ2f}*^;%(M$zTu zLWQr`%AkXz%_ttU$%`Yy1TJyQGws2zYI+VcsEifqRJ1c5%k&gX+_{V8)2l9=&v;Q{Y=`_&j z@W%A8SiK77#lo5L7=(R;!fVYs32c!>x6-ghlZ>faV+k)#!nPGG!x1 zMR&=TEOmDls5ELA_$fL-v&jz`FKXcQ){pvvIYA#GkUQb*9F&HrZ6o>i zvT5Jg?llT%GJyi>9Z+umr-fJ+g*!bYqbmccpc6_cc$m)!dN*m_2(mXA9|i#x88Tp_ z(w~ZUfx)t~?#yVV>N(TJe*SX?yz%Q1nyuhk>(COBM+Ax)fuN+W&v<=qi{F8tHNnh6 z7eO&N^XBu6u<2jOGj~-F|3y)S&Oxt)_RL8|!9XeI3DgmcsbvNct&si?WA7NGS+H~q zw{6?DZQHhO+jdXewlQtnp0;gFThq4>;+*e`c;C4<;&~!=>|a%xm8-IH)y_rhyeTYz zzJ z7zE-VNtY$F>u@lDrds_sHK4dW&lJL7EanW;JEfdon3~DWNbK=Z_XR@Z>f-p|$AP1> zi$vD^8>srbgH75z^nT}k>;3>1_aLCeSh>V<-==^&3*x5uUQhq!MI#m*4g3#W0`vhE zQ(_cKg)}kTmqC*el2BW|mts#yTL)FZOuV@O7!B2S#c*KuYRe*7*&o-^$z~)}jy^<~ z+CDY|+Y|e^3^lRSSw8E>xa69e1%i8AX^|}}^7j#`w`&$m8LKz2Nou{JXjo^$BX68F z%u?84^f2nlCPyGuB4%RkDt8WZvb?1_*v#hP@Ze*-JAk-DE>xFFURWa(q>1MY?#ja`}Fwxv|wzo?&DEbgG9jY{@lV}>kz@H_vV{qY`lc5|M z!*t<)cAnZc)HEHYX|=z`-{~9sWmPodfI8m`!gQEV{)rgbO8E9XLq~sB;_f$7S<8y- zfZHWp88Ft@69Jg@wAqx65n+-T0K$&{AV#69jO1*SIHLf*j}pKZtk?K}C??-RVhfUW zf@Lc?3h#6W|13X%#<_4I!G)65|g3JIOl z$QIIFS6MKHnjG-&>(9T`P2LpEBRhh+u~L=SN)*Y~F+$};1Hn*Yb+!RQthd_$JYwOf zlnCjOZL5zdF*kN&0_P{*V6ewKw1TQ&o+8j}%Dszo0pntJ$!R#C;fzFBVX{>XHm1i< zhc#111l1U+XihPzST*X$HiBN$ZkM2xqqjkpi!{(Hoel%&2m1{Yc7e3ci`uIeUIE{K z_MLFb5X$mZK7?Tz0}#p`JBNBiCOXcG8w|>!3DuZUi50zk^vXAITD(nM*6abC-SF#{ zuWvzO<2i=%fkZ^a2`pLZZn*#!;6i34VhISd0V^k9$A;~81=&~InhC)BNU(7C!E+!e z3we9NCht=KBLgv}!5Rkc0SLv8^#5!g08EoBblnrJYEe+K>rHOvp!Z+~)dsr-77ka; z9ABug^~s?X6C%QYw^fHES1@D@+`!bb4^=qf!byU91;i znhTO$8@b>c z$-quUCyR`=jnbEo%gEp(x5g0l!PjoHwD*X%rP1X#Aa#Oc4k9+@I#0;C8N{mHoBPqB zcY;O4mYpm2HX@d0O-bKB)t?VqU1EP-&znoD(2L=Z#hrBm`xyxX5S9?EoUUX7hrU9&ZDREJy+j+$(Pr0g*{UBX*LvBi|XM4U88_ zsPzV(K_vebFr2YoUUo`nL(XO#=LI99lp6F&Vsn>ZFab?`aeXxT;r8bc8LxGJbplkL zHvnh`rb8)rPw^rw_Si*!Sd!wtziOiKu3ZXx?xoS&x-Q5KG`Fn3^th&;`W^>(*Hj-$ zDe$eLX5DhkkZ*FUP%o)cpos>GXE$1CrgrF6;wh@1&FWi0nH<@lgj*Y~3uA+4o?uXU z%UMfFR*QEjU#4?3Yy+Wbt_sG}M|+{sB6q93ne)uUF1f|5242OZF!wC;`U)(E$2eO% zlk2ga<`k>h1OyKhJBrTH@SKg4CzUR0%$o93BGW;sF6=EHLz6;h8HgX=1s?M%r>TsD zuB$35c4)xI+qet!$|VHwoW<&e>sVb&v9q=tW%7BE?ofXuwRFCDfe=D6yoh^yhv$pA zqoQu{TcNHLP#>VyiVv_apXRSI&(h<&-7|3U{$50Idw`n@NPGp-%04zbl-^i}BJYS# z;mh{tkVQdY<%XS+`Nz|NJ8>7bJDh0n*QRbrz4uSx4d7Y%hxP?xoEyZb>o&M*oSMou;XEyF^?Foe#@O*^H{dRf3D%jH zJAHE7pj)0Trdu0Jv`Ami{KRGgNX?bAT#5}dutx;bHx5%=%fc^|B(ZRBC%I1bfcme9 zsh=xvA>^T`zXz@lW7Kwa2SBlyu}HGo`>DpaMHF?DXT|hw>D^Z2jiL)sN0T(my8C&@ zPj72rb;{_x5AGpMts5RF9XImh-QH5V*y_$U~`(?Py3 z4yphh8t{+5X2+p1wiWgjNZdYn$!U^t%{>XQ1;@dIu>C?mrwLMjV3Pc$>pN`xyNOd~ zHxiv?o*Re1N<@)B8pQ<@*Cx=^T{&7~Ye*jg!u-QFm+qo7C-X zww`S++Ts$_?&xp2x!dt-ZlDZ;Z>>!Jy-8m(0v`{J1V-HMs9Qm#o zhz=#@t@L}-RbeWvs~&EzQDeo3tj-skd{mlaf&w^hFY#k#qnVyaBr8Dtv(5Y4(X*Wq za&!7Si58YuAUD3vE(KCe53RCKkB4gjL~bA6ZVs!bBfK~QJ$G|(xob#V6LH_Y!YKHXY%l@RZO1ctW(DB1wF1uYy`#PefqK4ZCh*HnLR~{; z@c{-*9ie(K{U3kv#fNJ@dj-9oRaBDkr&+5+)|Zj(q+CERt5R9^@lCiu;njiq4-F>A z0syX~Jgz`0;P<_SU%{Dj9kbX|yFJjGCK{;OfeUUymfE7w)oxgzy|TE53)8*pEhfn? zLU;E-!2^@x9oI&OIMZ!mayMG}07EB;7{e22=#r_1wf9u7SnrnpK+?su$E|zxN{lTk zaGXFtBDo0jh;TQ6Q+O~+kbvG-=y1FN!eM?P=B~UJ0Kas`G^8r;`4VJ&Y?q+~|Agm0 zZ8ZVcgj;jOS%2|D;c*q}YtZ*vqf}@IUFE6d*3yJ{n8m4u*X z`3kwMrGGGXtp&LQOn+CG&w>>=r^KWV{4t#P{hz;$i?J5BTU=c&cGf}O2K4O~{MeSh zYWd%l5_?g05Lr5!IczK61W9SA?klj1NAz?IUT;lo?#0Q(8x7xre{>JWypOSTB48M7ou5)TUyxS8&hQeUOa;DI-ID~PByZ3ON(-t%X z4Mq}+__z?pML0tdV337;DX8Pln+A-mYh$}`TEDnSr=IuuNHRZy<9m@@AJTnkTbp9hERSNO zY-Hf#+)<`w=h5MHp%1Rwtl2#dA7;2nI3EOgM;g3RRTx~syLi28>DL@Lm%<@12=+;b z7Y~meEp!!FFBXjp(@QVH+1R;KBYLSZEDe8JM~dmJy0JsAk)3JlOJ-eJ2UFUnYyld< zPVO_UeG>S@>)kMulKJ4tJv&k$n8`-L5pb#1)C`_g&}WcMCv@wjz%i&xW@0@T1jAA~ zoP6g4+yUSHIWnk-XiJaNanSb52(u#H`q~)K3@<~AGwK{2f6HVLq_kVV?{4;FgsxTI zdo<<+w_65>x)1a{o9)nMw60)m1-T2)0I*^+)WxA&J+`~KWRQamZ2u_-J#?;b!j|Pe&{7Jw=N;!el>%Fu zNjcir{?=Ka+MYiBTy942NvqlL6-o>$3kA-j9UKf#!}6T6TWEpT@>u_1;=Nica_7=6 zZ{UVZ)_5T7B=oLi=_c8JQ*m?<{$+zhM^~)Mjc1E_FyUgis%PL)S|P5<&+W$YfZjR{ zkJ~lZ#k(~M(%XO_f0B~eX-=~+9u8=EK;~0}wYWk9YZev6g9Fug2DKDuT5=fcAy^09OC=dgk_ z*A|impL?208bXows#EY2_WExEL5MMVW6{JN!z9DocBxI`h6|^(ZRN3 zq0anp=M%C%9Eqiv-?y6uK3)@prH&1$XwDe^Y^~4<9m)5v$7-JE7MPM@v-)}D#%kueEinfPnS0U07ry*qCE!QUEt;Oep! z=+krBrm@k1jgQh}F_D!pwfxC;aY`+W4Gsgi$wY=B1^|qZGcOPi^;Nu2$g|vQ-QtX# zppP(^4E$gfoy?_WkCZ?!7hf|1lt5ma4^|GIwJsAX?INfvmsbBMx4`pOF3qoKhm=a# zY7S(Eva%f%S)md&^iY&f5zSsM7ch)eQ?Z04?S)E8u14sjDn!qu3@WNwj{ws?kUnIv zz)o!NZYG^|e>GmLrio_crt1}^Fb68($d)fbTn#^rAj3+kZ9Q?SQ_Q6ri3!IwF|sga0OFK~2{J5QuYVAC_bQkx_OUwvX!=P4HG6%fr&d7Y^=3Uo zL*?Q^nH_7>6wIb)k53qH)68Pq=$4*Ag(0h|8i@x{()t_ z@wk{smOVRAP|OLErP4q=ncOiMIst>E7@TIE16V&wwNwoQ)X4gpUxTJz&`-b`M1nkp zv$Mvv1*``&CGO`D#jJ6zjv zRye^sKYb=N5RCss^G81$WSwxaq^4nV%g@wvB+U^&y3gpZ>@xh_33SR0b#E6b{;hHs z*|RWHeQ)g@N&en9bb!*bW#vV6-;(E%*YC2P;Ana+hG)UhQ>-^71v3M>ye-dNve7J(p#~F z9t8ux$pfnl6$_of_C8dygY2FZgHW|MJmp3SnMZ=YNUM!B#LNC1v&W!^OG$4&qUfXk z`wkNH_c#!M6IWZPo1qT`ut)1EK6k?3Duz~wG+5}6vd6dfIiq>heCR_LPuit>_L72C z8Xd@YkE4EEcI=soY`Vc2_8X)~cF};<0%ZgV-ITxcS~}jr_A3{+iq?K$!?PFC_HKH* zk5@sw<|n~4-=zJ}kVkFy7gsfES-9GS2AH$edPf5QZ_*YEFz3FrSAs~o zlu9+w8`2qHU-$P8B(3kYm2}!!WwRGg(-0dSHtDtevg;3uwVR`$APzu?yHPzz(NK?m^eHA&N=VY;;rjxNdBB?b`=WLh2w#gcw{_vky{-1x;VdEvp(or1w$5~b(*A7(>vIBJ;Z5Cl zE}Q^wO8XV|XgmEq-I(EY<+)8i^oN+aJJLNe$Fnl$bR(QkJv452^bA*30=)HOEH$03 zy`PFIu1udIGfcC5tSLEd81!MwTr(5p*{ckJ&{s7E)tJc|(K z57^{-c)GW3M!kzchP#~GTeevtFy~*QIzHp?s6mzeEpnMj~{2k7agAQggv4E z;jfw{*ti~?Urk!5Rb5h)A*TU`syLDQux_iMKiT4~d%2Zr)RTQhC1_UbY|Uvwyhr24 zDC}5-YyH8@4?R{5zgF``BqHr}GZ9Q&&|AS3eFDp)VVKx6ZoTNizPJ-gK09trxpVe+D>hRP7kVLk6Hj4#I~P+smw%~x_$u$nFDjt?xn6Fl zfeXWBKu9c%*ityJV~>UZkugQ{BcgvdnsURGnv&M?#-PVyiGSpUEV4rc$@4j$DA#+1 zHUtp9`}v7`=XJ(i&i*Us;}v=r5YLq1M?Z(~0+lU8arHTOdpwV;uR4#hMzt57Jy$Lz zkn@JMIPHBOD(wn8Zqs(0NWC>wnWU#{JU5}R+SP3E2sqdX=I_lqZ^6U2>DB^j4o0Ld zVHeV21D5vkY*Q0RpXnU2uP!>FD5jWBzG2_r1A`0@=(!9iZrQ%0Zor)#YG+HYxema2 zQB+ILAEmm9GGUsLE|(GE?|A4>a?R$wF;8!x=;1|6C^rz=Y>ik7n)(bDOYTDnoC%iJ zwuvLZSYlY9EM*vEmS^sS&`zw0K?h)Rm&JJcq<4NqT8TNve^3g0J;#l8nr1omF{ZNNjk7B2eX1{noc#+vYXEFlWvB$ zYF~R?W3t1ato&a=)VA2u6

%e~M#R&?io-J>N;|(A&qArYmZrOEN=CK_>@VLU9N3 z`Tw|Ymfo-X2wF3LEx1H@R-|Z^czxeSiFQo84+1XXOg`LDpd1%&p#gd-3dw3j(IUXf z55qgRkhsk3{uZH3Urcfr#?ZH@A%r>wKxzdc$B`apSa*_Nt{#;ChqaApqz$pYC2t!3 zDtklw|6pxpR|f}sr+=eHtkR_2q5ukSQkwEgae`2R!W)e3k5sL`AC*Wdf>coel!P`H zL&6S6UPK#_13*0i^ak+;{Xr5uBq1*Vd{B;88gUnyEz#}F&b~A4C);;bZNMpn zy0w?@4Z{f=j5LE=rUtfQXDxI3H;|J@snYDaJRWCG?}Vh7zdOn`y_7GQ#yVEX7dYh8 z!m8G4ze?tg{J54VlnTvUW%e-Co{&#Xz{FoZOgef@zOU{;d64| zR?mKg;ch#_8Zsu!0qN9ChSz#kum7%K*x4J=Oc3i`L1v4r`9#MQm1JXYKXy2uh%2{myI!kFibIgYJ0V(Gmux3|a|`EZl8HmD0d zl%C^`$W7BPcYSEGaF@EB$CzRC!o&S1QmdTFDsn_Q_l0tf83@0;CjJ30k0{gWMUKf1 zOezV}U-V3RYL4PA5tRnyuoIB;Cb9QGE&GdlU^e{27GL%CpZebtw9i8d-@srE`Zr); z_}fwy@w79vwKV>ZaHaFVAtJ5;YCr)-)V^7(1}J{NXIN4J91#cP*&MQ@WO*S? z>XQ|mzb_t19}xuwCWPc!Z>*iamK^}O88SyA?`M=NQu!63kv_zy5>@ivB~DZMSh1Du zg6Wm3;ra!Ems`_}&9~epuTfd@{t>?lyj}LK z-%}?1YyAGtN?!j)OEFhFV;4(%J4rh;`+wOZR!LqSOAyBw7#bo7N-6rO4xHG=nw^); z){Bv_LXcxFK@S{frQdY<5^f~EL^3iGoIe1+^2{ELM&fz*X!^bTW80f~&G*IG9e$VD z4Rhg9ES~UPma3wcIazMhD&Mpm4j69~=4iB?+IRSo0|^GZXKuR8`WL9BA+xwsR(y>4 z7=1gs!;yE+9|ahe!Q8~!E)9{iz`1RPo?DjZ;gl!5B){^-1VU%ND~Dv+iP3u>@w{=4 z@D!ZiFe%GjMODNVA9XPAHReC(%zkc5K)on^>HEeloT4UfAzYgi>Z_0KivMG zjnY+NQVLiQp?YRSM#hJv9dciGE;=}`-jjmb2u`X`8H4@mhv}N88=2uJE4*I-KIxMO z0-=XRM`vZZ)!Y5WCvYFDSjg!<6Cutl+TEuUPaYrr!3KvXK|=m#N~}KbigBkGF^p3a zYX^gA=?Oh&S*`rYz9lTILeCc7@Vp%sw%q;ZI{uk(<& z!{yY0Tp@8mN*Bm*WNj{csa}TRFv#v58F7q1k3CQ`L>|pqTt`{1{kQ{wUI@q)$ju0n z{7{&y;6EX4*N#YoLMrH4KMcWl{t+l2TkTgR+&2j!vaM?IlH8MN1p&Qa~?Oc$58Lzr7053bRw6mk5 z^8NAZ6||4h4deIpazKF#QA%?eOp3;8w9CS;iKzCHFcs!c0t_r-zJtJ}e$Ou(yvWED zEyg7#mOU!Cx52~+3!@dmdjeFmR0!;t1xbM*XlC$U$kfrpV-McJg9e3S<@#r)M}-H4 z-@Bd~MjS9-%|$DmT-RgWW*6{*dDh&fhkZWP2C!4}G zWkU+EB}i$DcM9p&d@>e=c;^x1z;?w|{DNOn^0FjeOo*YrDq{oPJn7EGJNZ;&O!=#R zLZ690aM&nQnQqavQ6}+0XpB)Q=6;kTHRd)rEj>a`7KyPAx|P=7!TrM>=BV_b?BA}q z{Hr@?{s!vb?vOP3KC?Kx+L}833&6M^?N|7~z`%sTfvJI^fgu=}7@8QE z82~q6a0HMb19N}38~}%i<&o@6{GLeN_y2!yK|uO{nd*PS^}lm;`yc1%`M=IlP{N3d z8rWFYE42OkAhM_~0m zG`GJFp8RivSNJ|*iWs^W{>w$73A0k)Y57R+yloNVr!jqQblP%ov`4jvA_!x-!kI5} zcpIUtR3oJ?t$YwTeqT5exnco3x|{j&hP@xm{p;f&z+D*Pfoqcv0vCE4yDid!y!y^* z^`BXtKc;^$$V{)FP8~-2MJUDL8g5Ep>pHg2te!P%S(+nlb9_?lt#b$~To0?^C5OZ9 zaeTBIi*aPiXy>(rZetmu8Gs)S4h9<3MVXVq2xZ;-cE_~&Fe#EvP|z49(aKn6y{TV* z&dX!d_2;3xV&2D2Ys5B?j~zpFckid2cTES(jAI9_Jay97(Id763q=H)^v6T$UII%k zQ@};It-8VdtEDBUZ^gmex3P@=y6h?bW=>^GTL&A{|11aJ#7Vh91_aTYW?5li+W6mE zfgUtJV9_qF1yq0tQ7a<4C2J@YGesII2I?AifnO+wI0OU>T@LPIW^wi7ceeHQ0JDwr z<{pBvWfz#6Hry1$$UHO%Rqu|&k`BENK4KK6yT*3lkj>uZSg!{xPEZV0A5hVbrU ztAGDz1JMh=P8f`DO9OsqkNbL`~P>$Nm13c#}-B5H6C4C-)6D92c#sd$!d84 zUJ-b;Ly{1Jm5fn#$SkF$$M!y`ZE#ob%u3+-4ZMq5Qb(Z5qXLD5@)KV5U5UgGNN67r z0fHm}0f`6D-K@1?tr|DsD1+O5CY$qlCTETQtHT$(FUcdCFk6Z~`iV*SCZyDQ1_iiC zu-J-*k~OS=Rklv<0`-?0%thg`PL3@_%k*568K!KQhOBF8Rn%EI)gU02$KocxeHOEr zYjnXZ?i5x>ksTL|B37O{jVd{J!P;U=%`X?zp9N?-a?`nsw&De{nEO7v<;$4^;=rz^ z!sFIres*`8W}>XP({q?_p{)g{Kf79e3y(B)YN}AzEn+&^?pv&ESyagNTc>#}t&BN4 z(03_Vk)|Ap&_}t6CbSl9%7K!%@m2KLWe165i*Or)thzRuvs|MEEBVKqtG81R$2RP! zykzMY6;}|Z2%Cf)IzMAO;awc%~f6Pq~Ad zV1oU2M9iW#jfeY!Z`sKDDgXp72%u7xtbb4ek#z!5$_~M(Ws-Ie{uWr z4|pi`S6u!7OzTXS%SY^y6t87)_LYiM?MOOdhdxE7gi6X|yfxNb@;Y^i~~OTK2V- z%Sis{m~iN^Q41PsG_mo#C%3&h+Q-3>78(5IGaaH&3B5D&_b_u|rp8;9<)AeMM3O(` zgRJ6$VDHM$?h*Dq5qL|2-YBM(sZLu(ikJt0h%#myULpf%m9dNP+9L3(6`-YJ0QNY1 zZ3Wyy{tyZ#pc=omqCG>2H`x;2qv;_u5oQl?y#DZ*S7sFD>oK$^d&flkU}CfEr0r+B zEaYLci&cu@0pj9|r|!j`FVk4Pi}Ye=$Tap~lNig^AM_zGJRCildSPUuH~&BO_+E$+EZFbDRXF6|kcQ}QNb?^=cU6>? z|JGCXr7kI+ z%{&z|)Q-XH7*E&@<%uM|7_5cdBu$(s0j3j~?<8&(c=oJIb|^tBt@5XX5#qEjVU8q^ zE8c!ZCq`5SPB@^jV+uh#IhxYl18k^2rk9QA06GsE%tk}wexw+N1Xfb3#~H2YMF5mc zXfsr4s4TQLniE{BR{?s?LILvXa8Ii zlg&Y!&ns-k`evG(j{RI<#*}je2}8zE$&gU?6`Wn|!`o8 zOunZ$%^q%_VY@rsh_F=PE0r@VX%ePtmO}ZdcZU5BN0Be{-D`et3HE>85-9&KjuJF6 zbof3;{rl9cvSYufhQZ4&>v$foZ3(EFe()&1d=pC^>dx2eO&c; z`6ulL?JF{yz&cALxW|4hxSl{^RErd_p1^**kk5)^wvFQg@8R3_O|J9x>x}Ei-Qvy{ zK)MiLSS`jOMu&04s6%oAagOHQ2x}OzI*YLL3C2v_DHnZ(*8*!&W`nuiy~(@|Th#NC z5?2ySEQu^ybmfr~x95%;ZS)2VvthBS`p>PF<_fdSY1dk=F4hwz=Fz?DXRAp1jIhZ` zJL_{7=*sC>Hky`xf(pG9W}HWJRW#vhG`L_L`wTSFYr16#-I8@imdw zM{9sWt@V0`<@)bX80L5dK$e*?jj^BqDda=~Bf&{?5E_t#EFDDLp7%j=51-g&Op}4)R6r!XMBZHF(gsWFDWrxv9Ta^)|~LRGs0RuM^v8soNI>rX*k z$fcm)SkCf}iFo(^h8cu;zVQv0+!XS2MJ78!Yoi0s57gjewTn#3{j8M~^S)Dv=6j~Q z1fs71y+Q-_r-Q&!XM|gQ#9rWjWpICnXz;+V-%d-BUe@oscHd22fEIf?E4A~LSG`{I z$nrdy?x+X|o)_(gh-VdKXd)<)kQSrCLbYVrPti-HGW~pMn>8ZTju2`{KnH}HxrCax zLoFCLe=D@||MLqjaJ$$c*Y8RQ62#v?_pj;QH|YMSDEQwxSc>YFGqNhm*B0BA-C{Fr zD2fy`3W97)GDKk^ZOTFriqNYCt*N^99BR9#EE2uxl*f-k!?onf0x5Cx?RxS*dEVdP zTRlEun6$>YL6>z_DH~?T#6c^QMJRa=0csvlcq-y6`x)jnVo`udY2Wa?yMqUaG@2hIo3$tpL=97 zOhJzd!`-exNovb$PqQ(O$$R6Ics6JK=oSN3#r z_tQFdWl~=*yXA1Dt_=%Xqh(=o1U!@?L-B4vP;pQhDh>%ArGM}s(8e-Gj$?u~!_U1I zO0Tb!QK3m2AYK|cMhqLG5z}<)3r4Ey#)it)^j8Gg8ctENT zaEz=o>X;UUGmfk<_QdUBMZ2UU)HSrt?1S;<-x;OiDU5o|SFU!LcJg!RQZ6!;Rz_PE z@f4Loe-tVY$LOX1nk3uNHTLMxpf!(4BGWhe6NDVr?<#>aq{UCS2BG*(I4fC`Z;6fgG>|Hz}uKTq~<| zK$lrE;u}Je#Y~5t#pDoM&bG>r0$sD)f@WROuW>X-*`Qk4E7G>ncwHWRcP`f5p;%|P zRE6z&(KwQ1od`424&zsHSoaGKqz_?xYW5|b`t(7irw(g;)v@C*o!aUg0@}oFARw50^b_Y zlb**we2}1L@SuCYTYA7S@ND8BqU&hXuVNk4842n+}1U+Vho+`(r& zxA{+cf%~-#j;iY#Pa#0af%-A|J?sfQt6!4p=>o^ zwgwv}sVPdqZVY3Rom#cTQ}|uEIzS`2s9ZNY4qrEL{SA5jvkqo|8G^qJ#_{*&_72}+ zU%Y1F`n&P^CmqaIpTKkaIrILBI?%s;zo4jrdjy~niCYZP3d2d!a~AFz1^m%qoJcmGmV~>W;VedjpefF zSes#;8pfe6+quuBCM_IqlTJJ(vsZa!!GK}DE<1FwO~kfD2X68e&5S zSC@%xR%^Cg)xM@xWS5bG)d1#JwL)FB9Mx2|1ok}B5vMz;%ckv)dvh6~a&x4m=3HdP z+5T(UYlg9EnU}oPLhVFmv^dtj`W>Z+)xvZOmAZykjc7(!d&n-Gb!EX(LtJST5jU7C zZo$H{w?h(kT)Q=BVyipX1}#1rIHZYB%P+-+O%@C{*DLW@lod3WFB58ka)l&A3fvOc zDh<`J;ks5+cCi85m5)0WiiOC+xB?*cyM3(XgC;QcEGP>Yw!5))+*khv%QSKyN*rSqN=%bYM zUG#f}A@C$JBWu42Z(eN<;Oe~n*J`y_Hh)I_(s}qJ9O+~{TuqxHtNrBX=wN^M$Ln3t zroVPscGPyl+_+$mO}$#Wg@@t8+FMX2(LK44C0hVO*eF83I>E!Jrg)iBr2Sejvteuk zK7wG%hqWnI=!p}~Gpk7s2B9b;S~R-0^;>4IOVpbEwK0H;qZPG!1rPmrq5L@nZk#9|-e z!*3Q)!*pMTD!%LjokZRlbE0=>v$Lq^OPSRD5Y}o9cq(ByP2J!26c2)RoxzwV@?lOH z*1>C4#azZ-Syg~0AB3{?M7&;P1-6EEO~&==DZQ#Fcrn+?x1BN2f9@>xZDe3=q4O@m zUwWjCtBV*%GICUVb`G0)%00c1-F=~~bi#VLuiJn;`abHJm0H{Y-hBi#aZjQVl)IMs z9&E2m_}A1p`TyYXt{-#k+}7@bj6!`#IP%Z$&7O`X(bbxSQ=d5xkFg#)KN4T`_H;FZ ziiBE2GrxoX_FfSw;wybNB5RAMVCm?NY?xG$pPKN(Y#Y$9k<&hN;cw2QlOm#!mMEdH`1Y3@bMNuSQ zBoqiOl?ap;M0^NZO)H|Ut=-TElKclwf$QGJf+M5~`|)?^YnXxF@{A@PA~?vsAdszsI<)1T+A_ulm{Z~W@zbaj?B}To8TLrtuuySNx>|0 zI#@259l^2 z=`rAh8^uca-%uD~&!mb9p_bJ;ukk*SJZGHE@w8Tv!eCa$+%wUQStQNR%w^dw?~x1& z2rJATm@snzV)=QooiEWq)Ugh&j0n!b(WcbcGM=oPwTtZe)p%xAsD|++ZWjlVx$sSR zj{vV*GL{kJ{l43Q_!w<4{mN>xYo?;x&x}IbR3IcQ77`N*4JvlOvKB=L>k?L;i%brh zl%RIORhf$=^a_KgzIdqIXf#{X*z{6lxI~T5@C#p)O4J@r5m6XdZMiIDwD(HW_=Lv3 z8k!as7;PdtestS57U2wgoF15bC5jzC2r)Yr#4ce59^Ly_(B+^J4hP-=?-#` z{G|OkTvtT${Ei9v4?7Ape!&R<@%x`zt5=MS8SHOC@K>7g zI|#%qZA||g1F?!5-;@bTw(X*r^-|@}<#*6THoc(PsBfKk6x8Zp;;pW-%0^UYRDP*J zqPP9V~@IO>^$PTyvRPQ1>P_^Ec#_@n{6e3f!l1)(Y%>5b+8*g=zAu`MFK_ z43_ln3iaw-7_I8u>1~UZmX)5x`O07LpZ1#wkuzFV3)LaXg$fiZ1#`~kP8xMbr5=M~sM4485sL4-v|C5c6 zQM=Df{;nly|CNpZzvVao_48HQnme*8&Zz$)n{{{zw1L7J^tcNoL`0(`dwx1uD2b{- zO_G^JnG88Aa}8~@SAh5z@D4AXYV>yl8RrMZnZ05Deqa9cDtWx#=NXqw7~%COc|82L z&S&?NR=?}+q_eGFzSo$Dr#aQY^P&brx>?9W{_68ePnG=RT$P=*#BCL(#k{GQ2Y5Ks z8K~wKt2-4hiF{a9>9cKSVBriAe=gd&kxKH6Yh+^IPvOsTK8vxD98eP-(kwH{Y1xd4 z0KWnX1>@TEyer!C(!#73wvK$(LsR7uBRy6!R!=rcc?uxbBXd_zA>1py2xEvtWiqm9 zO%Qqtv!gewQ{I%jH6eXdmg9aX$w5ha2ofRrv63LB04f?*UP9~4lG?z`MCk5J8;sQ6 z?gf71RFkR#)nzH6>6AkxD=6&_(`_TlK_|%+XDo384MD0j5G&lI*dFh9m@3o~Fco8s zTO9pk1LQB9XKu(UHqq#QC6lVnLH`Uz@am9!J~0oRf8YXH~7E)q0E ztnTb~XtlOdz_E`vthAo@ECwyqWr@Luf9%;5X~+^|m)LITb>>L*)yFN@yJfV9 z8SA}t6gH#)+CadvJjFCb)T&|~4Ks~3AAiLA?z zi+DxIMKwpuMK zEkw^4V`Q8V;fpDIk+MFeJzfJx?fD6#ynH8EB-^la9#Tm?UJ;qCG*M5sW^e7NvW%A5 zf}n*${TkoW{Fq@*gW;8Esj5fnC%S>;#Sjx^ z?wFT@Xhe?)w0=Q(o#HXOz!PnPFSyAL@EW|ui8#SK!rxY%3E+3a*r_rNqQ);2c5!=&6wXN0J<$ie4SA>3ZJWnd_H)oWyyj#1TnRFdF zO}R7ExijdSGo11#YVs$HtxeZwI3@q5wDSO`vV8;i$(|XRl})y+BBSiR6(Qp|#1Y3j zR!9_OugnxuDpEu;v&-HxQbI;D%4dJd|It^Ub55N8-_^r=UGL@c{O)J3`+n~CDt*Qq&N9$1U`9>BI9!D{CV)+1W~ ze5`$Es!A~GFf=QV*f>t>K>1A2UPDt|fz#lbL#Dm5zBt~8B)XaCBo|@|7Gi%N z=ya_){kMH(os4#Ah_a73OyOcowmD*+qupI8Gg{B1wgRQH`rH?M>p9;M45ayXl#Y14 zTW|jw>ld*4^7!R_G^wta*%-n*M8wHW@LQP9TfxXwvKh?z=-nQl5x8L=X(@2?xOUL6 zD?{xWO+laes12bnIWnd)YV&8I4<+ZMjMzFdV$(&8PbeO0JHqtB#%cD^GXtBjH;F0F z)@M(Lu(9LPwnonC{dHr^5m&GU`dZ<(~veqp${7?V`|H0t9y>WLeC z-bceHPjDR_nWZ^)*@TQOJfCcif3hs)Y1l(`zTSIorKQa-YAQ~JF}m6|#@_9D#BaJW~L=+-7P;$kQrc_=Sv{XxkO#Lp3sL&KzoI%pUL; z6~E}2(W|-eC3X17Om}LhbB{&|r)RYp!jnI8f9ca}Y+i%ZgmusI9Jx&LXU}%ii68EA zIjwjVPSBe5ZZoD)QE{=I;$U!{x24dQ$sle94uj>O%kIDUodyBU@I|l?LeGmNg5_M<}WwSRLpbKyXW0u z&@mfrp8Iv_MN^!;TwOfD{_&zf1XPE}-5~iSG_F>BoENv!dq|F~gMolB2Wve$urRI+6dBks`J3(MRHeHv^o=SMRt$- z$$R5Bgri}m+>MWfd&fG}T=iv2;kngf6MX_+=j%E6g^Wb(hTO9`SjlpR-U z*cW7QKJ0S}JsPXMWd6#J-G_<(WR@O;--ZK^u-oPpl}gC;0q-Ps{pb+Mc8J@NW*fI7 zB;=i&@?`7j>Rmjq_jA6e4sO#}Ji>S`hM1hgCBBM(-kCQ1E&1D)Bf+)uxHrZwoP!Bd?p3CW$g8?iv*?*A@ zXDnHE>G)}z`5d4aJyg~_(oN`W;6KvDPQ8>#RAw*889gR9!Lz?HzJo{6;2o_i4Trb9 zzV)};T#IitHv><8=15pOkl=l@c`Zd_GdQe7o9o@6YUtR(aB2@S{^Iv}8-i=vrTEZ@ zwGXM&LWJz$VlpTEOxyt>)evd_S8Dj+Q2KJEtL z+nG}zdDp||{~lRVd)vU;)*)i#LmL%$JX4Z23^@I+am|!eI@Kb{tyyfl()Z6UYLI5% zyctlZ^O9m4wM2iTrTsB#89^Q4Hc+JV4|VM=Lv80CIm%leX?KY;;RA&G{c>eL9$S zp(uEiH-W}P`Y#i)lZ2$qx1EZlow8GIo4_bO@fkTaTlZWCO`tHAINVpVC!Al43LQOc`h; zj7K&|K54LtWq#g&;oXJczT{&@dL|Zc%5FX2x8V}Gh+i1-*uZ?Yevy zctPVq>u?v3&Ag++sU+O+;AqoK=JX?U4#jX#1!pFU5Fz`+2a@yA7kJ9r^bC1 zhemJ~mS>rG1$@^o!g|_DIl)f83+sKP-&qQvnTwzCZ@C`+it86d&*DFt*>1()`chR-C4FMh&VN~7 zc4|KEs*RaD+v~3kxrcvjXj?SpK*7DdF!%X{;cJQZxmSy)yhvMW`(btQ{&Bx`3FfoZ5=8z&K!O#j<>&vP|`u&%} zZ*OO|>*AMhdCXI}31M(5)dGd)$MzB?jkM3H!B?PYNp6X&U-KXdJ1t{=C4q17!99IN zryMS8c<$uE@JSt+wz}dsaY8rEy779U63dN`SJi}z>h3DG$LY|pUw8`BCsX>OKqGx; zfU&`fru+^=nDtrK+ZW)~>VZm+pWzF(SHM21groD z9U0#@>9}%#@D3|t|{KE zvYE<=B0I}P#%7UfW(q6P<&}+5aiBJouX5Wo4d{GASyi3nhvV<2H{W{x;2Jn?LJnX1 zj3lZ)+{3wDsa@c~gh_&swW)7=l#JzsPT$y9 zpF#)PqQbI@JBOy`DEY5c*8e4pBN>)dilDoE(rRBK9!_FfmAtMRcj~pXTnEbw4v4hs zU6s#0*l^Xpf>H*UcGN84k}Zv$Eeol2LU!c~du<%AwdPpnm@XHM_h}5zG@I74bKr3! ziwvi^L^|54GCAh8C7bBOZ)13au$}`#Sa+6t`4m^vDUPivhC2G>`lRGqV@dESxq=9a zuD>c9^_b)*uj-gkb*#LX6xsh?X8D*_Rt#RA&`H*=DOR^FMy36| z2_-^y)oL1>kc2kB86kv>T*S45i31*4Y+bCjkO%kIf-f%fk9l8ZT8jj>ScdJfWsbbv zBW>b3MElMsYZzt|SZiI}Vy%Bg4Xut`r1UtSL6m|P*q8_EJL}dJt+uC%D<|mb>)(AKK#gNFRYE`BSitcnl&@e4momKuhf{!)&JP0S{8IJM58hpEDJf#B zt!c6I=~Y#iaJ|ED0~1sV@8#dmKdR?Fxq6upE)r>L_n%M3q~J~9|AxFX_lJmht+sBDW@tMQf0B3K}S z;naD~x`*5_cZSHe0k;o6j-G<|?Sda4`)tz^z(VA>(NeDQ%{rE@t@y(@1>$tQDb*(& zv$=-${Y`#Tde!!pp8T?p#Zyhh_8)4QwN1X1JJ?fzulj{&2y!g&UZXx=FULV~7 z<{9w{g;UCkQQCTmFjYRfso07fwU@kfa>rf5KkqwZd3_4ewif#LOZg!Gas43Kan~U8 ztW;e+i5%0QA+KYjY@^59@XN%!uo#A8Bvl-C@9?|E;LaX*Yh^Qn^C@4>B z9vBI09)Mcd&gy3+Ng>*qQfW*cGM>ucnyZQoVt0C`lP;V5o)#S1Dr#+1?U@ z-;#NSdgNQiHu`U@8D_8L#NBOpRHiPT4BnocFzvxog%vUnQErt{b1I#`sWPq=wtSp_8NyS{O!OD z8j^;V5@mg`Z8CKIJWIzLrfM>O1=-|T;@JoEwO8#F{(fMr&we9^=*n4|ApY32wMojB zPRfuGd$0DTGly?*;t2`*2o)-**Nw|esHEAz*MxH4y{Cw;f!Pa-6OUVcy>`rNWUWQ? z#=}r#oLOOClE97JM%u_r-iFum^N%wO_sS@cpCn@XB$F$6vp266(Qlry`u!NYP<*(l z40NY0@a(Oo$9li=#}XUdD$}-gcL(=9epp8Suw*5@p`a`;w^=r={-FM4;mh#QP~w?= zJ@xSjsA19#>!IM!h2pWv-k%BAvLXucMX2_lkCza0o~leioT_?v3UU~h#AfbXLN;i~ zsNwO_YE8l1lTjedm_4fWD1$*w%bhA?irE*{F}j}5v}>@{ak z2vOK1@t+`?I&yxCyXAo@%aP(Ro9T36akDM2>=lQ~g4T(Q7mY%qW^F2A;J=Bm$*07wv5IUXc8`xP+AtmGD!|5T*k+)*S;87pk ztLy}Q%TWngX?l0ZGUkqAUA#b2z4&ycKIbES4^^L3>#j?6A^wu`4G0}Qe|5Z@S8Z*G z7KmA52wxqPail7gNT7O7!kNNc7pFyWXW?$tvq6SycV39i8lS#BH92^djJodOKr&-@ zmH@5sR@gPohBxZ{?ca}gyu@DKwg4^qI#zR5tUA}-MoMjGYJD163Ic-co`pM3&-#YC zYl}Rs@9;;48i;dV6=D@A6T$T#i}|P}CKe;~RbB{GU&;6CTYZt42qC2hXE^?=6~6PZ zOIz#fq}5_+BzH9@QfrHANdss3`@P2daY`lfD4cT_E|BNwn>wWt6FIaW&uKGCAoiFl zzkNWNd`g348hCe6OBsxJotUp?z3Azi$k9DZ&_90h4RL&S!V58^W5*ZY6`%V@%M0XU zH6=Vb>oU1vWQwOh>N>qqnS`Udyp^ha>(IT$3ex6#gENj3cZ?7>&t5@T@AEl8P^|4JY_B#^5NsZz zN*2wyLgqL|>|{hN1g~k(c&}P8-jnNtJJ#aSpA=bhMm0pRxUmJ_{8jlg8KHx1R+OF- z(n(D-A5Pw%rSuht$KO`FpUiRBX{|<&^>)hp)$4ZLYyKOtJ_(1$)h;|#lQwA8dlJG_ zOI^@$xT4k!mThbF|_~Bc`GSfB7E%J6ZeVSfMF*pN7 z=EB9tC6a>gZt+`iau<$WIchl8eeO$KoL2bi{f48HVY;XLd#bii5VcyZ)k#3}TEnX4 zq5^}5i=&4f93kZ5=ImnYhJ@R?Yx1>eHmNUbwrZcrKl52bK=U+_jv$|=paGGZmad?Y z3)$z>E;#(78aRggl-F%jc;$S|@cTccwFZry#^1Vgx0U+)s7<#J^*{mO)xM8U`*3I= zG!P>2Gwl2Pq;I-U&NpCl-_8U9e+9!jTF_QLEib69qjFSRUPoO;+3>WGw#v8W?NM%r z@)l4&bZSDQ0A=XVHU%{(kw75-Qj`_7)b$LNRfG&xFbSSd&ysNhGbaK%2!s|D0HFcE zUkL_=@~DXVl;_;E`lQdCr439NedJ61{CEboR?4J zL3AzfpciGU1q#L%<_LFjw-tgT&SNHITlUX#082oWplb=f)?n@IfwVji^yBVFvBd;O z-Y6j)#B_jqLcOuZ*^d$f0;%~oj=Qa!r=u+rYg}ryxLd!(b#QmV8XvvU$XoqP?@!s= z@ogQkA`YV^A!Jv?&L^$06&`y1ckfC<{^K_Y6BB^bYX$}VFavZP@QV@-L4VYqkUi4L z5i=fYGX{MbB^24B*ZR*E_o07xDH zw^cYhfg^i2Ab`ocxH!UL-yHyaclYG|!*L5HnyOMWUlnviUa%8m-{FEc!~1)nvGQi^ z$eX``*l>_kE;QcE!##M)2r!$Vn89Esu_$Tb=@Wo+0ky-4hLq0T3+WBBb=h`)uzPt< z3AIjcucQ=y$+S$~9z+!=44f?g*au*yP;^N~Cjq3a96T&&DWu8YgSU5OQy?QWFM{lD zfCO&ex84aWd%?b&(_zhVZZ3tmHvp=G9JB2Z!CS-AJyK}w2LJc!6J~~^*P-v_K<_UA zT_3%LM?BjNx1C$8&8F10`=#fPO!K0pj|ps9{u$Cyhe*Q<@bCRa8GA*S^J&bF18f^; zI@|U+J7EUY)vs7E@+xcnhS_ZTNtg>TKZ9p`!MzjMUhK)#gSxrf{szo^JoogrtEOh~ zpm&}0s=dJ8E?}g0-?O1xjUpC}0ImvD{q}ZuCy>?r7OCtBb@bTLr(m{$_?C5Fh#woJ92FCqzF|Eb7hyNk>~DA;coY}+p)DF**k&UF3?KT~7oUr3-*jxiVTOVH){Uk&?TM9GVx?-(Ce2|B}nY z<9{mh#O@-US~COXK@QizmPrvUm-Lf=C~|j!&?PJBPvF|50NAgJp$Tl7`;P*57eJIl zb?6qzkqp=viK7XiUEM=~Aq<=w*!+7Pb7#EXUBXyGqVe{zB_o&+(C1s4tvw|CJnH&6 z5$q1OJY2&f3X;A;3xV*VC7m0xZt$;#2+|C;a*qEPcv*^AitLv3xyqo6 zqu`K%2vjAyh+3BaE<$uS5vZSIL>ECI{9i?ESHLa>h3Y03T?DJze;4unE036UjOxS` zz3qIm-c7`hUGy*BcQLuB?mE#ItogRT;et)T?(H1auOj;Hk=gF|Of|9LGX_#bGzh7Kvd)*qIo24lzpt^_~xU@AVAB4o1Jng~_c#vCT#=1nUUw+`We|RLe>9L7gBT zJM$MCZ_MPP8pMgBwcCoM{|k*_h>6KZHT*zt$8xFI`B=Lfs?s0*tfM3yJND;taqrSb zRh^@=58T1V-pz;rvp7&yyXbQ$Zx$Bz9;$duI;vI=y|YZ*#Y)FCtHA`LYU{R@f;&O& b{=Q#TgnF9z1l#{&0DiiF`mG8469n=<>+@Mv diff --git a/java/com.sap.sailing.targetplatform.base/plugins/target-jsp/org.apache.jasper.glassfish_2.1.0.v201105210816.jar b/java/com.sap.sailing.targetplatform.base/plugins/target-jsp/org.apache.jasper.glassfish_2.1.0.v201105210816.jar deleted file mode 100644 index 387a12b0172a24bde4ced4753d684eedb1318d6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 677381 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 z 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

JeeSGqXx|)7rVkP-Gcx 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⁡67gVR1nSn`1OXz%bdm*RJ) zTAu_|M+`T4UR~s|=Xp}c`?bV)meGHD`|D(y#SqH9OxIHaR4$CSAHEVirwt;J+@9cb z^09$yJS`3xPZ*MYe)Z8GOG!EZsNDN|sTkezk{QGp<2(%3C2sP@7i8CTUa~WN^@-d% zZ|v`LijUecj4_|mUCq<=9#z z>-{Po1h=OFaUB#udkgz18}N63!fK zg%|l*IiQJMI6(2Ubijn^XV4v!R8SrKF){7WI82Cm6GwDyj7lS>ut7FR0Z1UujM>6~ zAz=s>j_m+GME;O2BnK+$73}7?A@4B_6DR@vJ%%R?2E=*dBNwi8HCj?>b}0F>IezT` z43}6CSfggpn-pe2)G&GnXat=jc)Vdb83uOT5j}Dc4t%|_BYTK8{;0?0ylV*t7tA;{ z6WsW{Gd@^5s7Fb}y!!3pw4pCyPc*yNEr^1tl`j1h{K*Vyn=-zWC(T$E6xZ`3)ik4rB_bWj(JzRlRyY{ zNExDM1n2hN5w9m^2p#?{pgDlZg1KV_Bw#oa%>Ayn+tUQ=YfyN9&YUS?kOp4CWMP7M zqA+TZ6fy=U6o-wKD`D^r9$5z>s4dl0C2 zs|=aJy{q!cA98_zi=%%XIDh92^+|xm#KlSU6^+I6N)RH8tvk6}?fZ(XXudE&Jg^H2 zZWH&pH&N7|fd(xqztQ~6x%Soflbox!%uAR_Ag6%slMM2oCif~4(w(;G@hmL6_~&Fg z7psO2sNh~@z3&eP&;cf7U0+Mej*f{tQagC-*QE7#WV_3SF^u)o#W9$5DK)WpRoz1= z2=RDTi^J2E)2UXcIu2#6WHL26Ze{6YvNUOKW&RX0HA(Jp_P6zxB-(8Jf|b+C6_9A% ze6j|Q($z+&OI<@Ne{A9kDrm}~qeL){A%UCgq4BMB#Gc<*e?p1ecfCEVptcX|F9)Eu zM!5-I8@t!mgYY&9V=5LlqBd$Dc%6Kp>YW6GZQO(R0mWPFcDu)|WoX@Sz3swTK5#w2 zg|K-nE#5ov?V=*If29N}C^~gYgJ;%&39F@bis z{!rWV7n_goeQ~voji|YZU@-b1>Y9*Vjuh~LHHJ*O^2fd5xxNg`mlu0KJ3!)t@v6FZ zz+DV6#P-ykcda!=?X@K-yRoiAC5`y`pzKH^ItUuF;q(IwKn`Pvp^jp~q$Y48g2m_7 zCe^tQ8Yhxi-CgSqW$5xYDF|4E-Jo000(j#9zrGdRty~pc?Qnw5DQ-Gj7zD3@-D@jB zFX$WYfq6-s6|Dr66dTZgD=9DshnYe_D`JD&@p+_y^2+a7v<`aSSbR0oH_3bChx8P^ zvKiZDvNy_Q8LWtWI_ZSNzr{($KhGn<9ww+5cW$aqM>NiX#XN`Niog!hXm$~b<x)}g>ADb}P6b-rV!3->&$da*ug99r6-sh_e@v_onlL6kd#xM;krXCoPL zL%k9!zWgB>dT8+i>GEEi7DEU8`*(dbNZt^ZeC5`BkSGZo9#ZPcj|- zGg0LFmj+C@1TU+rCUC( z=`deo5!ii`LAY&Lmo3zuzqaG@!WAD+mAl{4z|rL%;IkG?>*V>_R>=t&y_hwmNCmEA zCbf_=W6T?bW`Or-Muy$Y$LBpe8SvRN&M%(puPHN>5fn^T2rp@#S+2_|&;1#nOwepE z5S}_jhy%2rz{cNVHL?66PPd83VRP`}(;X|&hWN{ew1>cE6NazoQ*B;Du~CBQS#n1; zAe0NOz{e!&o&e~UoOVCds4}maTrYzd@dWcIoqcWoQF1D2aZ9)GhA{v(!#IukXuix9 z(K4i(eEg}nuiFl>ZCA+hbOP|L(pfJiVqQ-x8&jnoI4Be(Y{07fGHo9=Y)3B?!zvsh z9_W57*q-jKd2YzBmcJ2i<@K)Q5PeyKk7GSK4<}fM$hp(lzh>?-1%#>cqZ^5i@rOM6 zKvumh^sC5EU;9Zo{q0TPk{QYqDG=f(yCWn^p(sz{(wKj$kg`aBaOLSymoIG1Wvr|F zIZE>=MAf$*WP_upDejOeO|j2`J-}-t``UX?Zr3)*q}{N(&6MKl;s;}AH{{S-VpUaL z`S%BaLN-r)vOPHX)fPMaBoJ;sOolH(AP-O|<3-~4qANyZNB30e_`Cby1swt!NG$^D zETMdX>z1Q&-Wo0wnIVFxzamS4U-4#9ZJ#Fxtmn*r##I4+$1ivj_MQ0;@8!rNITTSd zTPuk;NR(ieI}jYnaxG;{@Ek9H(_zo#d|laj$LLJ zHBW|iI6<1LFT=fmt0{BFE!g`jZ~dfOpn6|NWAafuPiaTvAthI#cYtk-r=fgGT_(+* zHgUs{NkBMZor*@UZP?NmcWhswa=@YzPXI1r|3Uc+O#0)iu>f-_?z&D>oJ7Q-%QmhyCQ_bSeLrF!MW#Qm#7j-;7O%| zyKym1{!GX8!vKP_uRO>72TbymUc+^{-En94`f0hxr2Ng(ez^jJhvEtbcS!0{Q}T$- z2Fyo=K<)mK_LsqFbjRoq!D#a|QU12kHNtodOXy<0TLNNGm_%b8>c`H*Hp zsBHXgL%z?Dv%NoDONX}-2YUtbNQ#qN6#%)U*(dO){H3`6NK-EAg7F> zRdMmlj5?+KU{s3?7fb5R_58zhHyG+ph5SiJX>Q51yd9w-_A^l8=t5SMjF;nR`4e-EY~ ze&!vOr+F0Sck0RN1E`7%ScO&bl_6h zbL_q31AOb^InNmSyNi9uqIg3|ZArNU$I15G|KVMeSH=@cSJj0NDa{ITgU12x2q zilGNUNTDSo!yHR3gRPsODPxdlkY^o#MGo*em8;Im!{Q5F?(#0s0i->lF!ZZ-hsHY<` zRUbw&DyB$57nXI@tZRsy39~*$X)Yfh%;5JWb#@tgJ?9&=fWklipg!KEwRO+}PEDeS z7hHPs^*jVFt+hUGmvx7TvG0JfFT8ab0kTz<}U>xBIKh}#v&ofMtjWymk-LO9+F zYFfgo7h4Cg57+r;863jSr4!kxF7)terCuwhf9n+XrMDe0(Id0yq;;tzHILfLVjt~F z;1>Sja9`a?v|!#XYxd#>&%l~`5gUTOCB>>op}VGls-UvAO>6v1;nR_N#2y_LVezC8 z&gC*~Fq$RdDkd@uLJ@DiG@m521?4(8V%Cs=ZQ7?-jc$-Vr&=x|4*=zG9gm zk?Oj%P!mdY)Ek@ZI@qZg0TK0OxXBo7DF%udKp0xKZ=?xWHws&W=8Tbimb8^$4p#=ViZjnJwJK-UYl?UdnW{4%Is z;fB_?47+8v@)k;P2{>pNwU3(Cu^MdSFR0_-0vxn8i=zTU0Q8CP!zq$C7)WXKjZH@DM$I%>qqm3XY%LFWkdfH z7Uq*^`s8w}uVeb@8lqxLb|N6m{Fj{DgDS1lqELbl$z@cQ$)E=`Bbsv$_6}2*!u@-i z1Wc1rAQWMr%u~u2eq+SqHu@EG8`)s6d*9|&^Ye#6G|?X39hxtryKK8^${AdY^;LtqxT zqK+}A|Meq1H#Mr*(xhLG*SZialXtai2oWsPO*O$es|d#M2sFmk%9u}}r}jCNfvb9s!qr@lzoch}TheDMpic*eFF zAAZ4iDVo+IH`|C-x7ba~wRMgp2kKwQ3(;<1&Wh7=xG zI8Vv1d5WFtcVB7y#7__2XZxWYo$`{s{sjHFT-xo=iv4q*O4Il}+ioqI!*j)5J~^mc ze2&4t9Ob9PazBs(tOBOGMm@7!vz`c`3C%N{*hI|rtbl>^ah-)*O%wl!JDvmh1B9{e z+bNU0H@+90U@XD{CWDX+!ir2qmTe2&Bkmh!1Jkd}H~BFr#Ir39eyZIk#{WWZpFgd% z)3<5kF!+B$FU$WHy(a(Na`}$h6SjAiF>*H&{a@$g%>UDRiBph;9b!WEGpVUlYlK7E z9ZHKVl1wZvBnI#a#}*M;D`%hY>3aS^qKH48N&|ZknDJpsIJrV39t=dzxTh7Tkf(ee zSFTBCYL=%oWl*aZr_rm!E4u6i&|=C0?K>0w`Hj8;JhQt1h9o zf`KV?p{|p6>ur3p3~cDNCBll>(YDIzN!qZWY72Ebui< zv#cczqF>y&n4OY>PKg;i0MSe{-PVJ%TLrCP;B{O~erbF`Y`}6K?DgjuFAzhj3a0cA zugCSK%XP0sdH=u9R|rE)5A4OGDzorDXHkZ~5A`=w-SD-8hPUP_BTiQC=HUvS*suX< zBqz{ss-eQxWoqaC-y=|1Fq)(s`BtTLw4{%Y6Nc@)pvR2tNfSUdL~~X$>r0c=y||v+PNz_O7ix#WZ}W*7vcY zo8B&DBCWx4h8l-q)yb0h-h{+%kJmX5)ffk6n{@QB3lFHzK!Hk47ZMMNW6H{v9h5c5 z99~?@YG{T>aet~>Tz-qiX5$q zdU>(j@&I)?e5_G&=&7~8Hb&WW!*|EPaVGpGrttG#IguF*w?w&!rd%15@08y?A8Yo8+5?gYLH9&^}RsZsU z%n1_+?fih1-<%_8g)0tj=C8%aBS(QEzhWvSKY!7>uCPBRQ*ZHfQ(Fw|LQJ~^AUi5i zNL`1HP#r42GE*-_!%fc@7%3kiM!Ujrbn4C+G?y9mHi?o(sSfYFkUU8C=1^VqT`HI= zoK_u0YsOD`B%IJ*|2sF=LEY{p;rlJX2JxT3&;5T3es?1iMPuv#L4BTzj^dIK`WK=P zO{%k`AqocLggpi=X{D5u>oT<#JBsL1rD@yu0OF#(H}iYU0H<`%D3tu;tif&rbN-pV zkfVI0-|Jj1>rSUHE0CyPAOM6Z%u9sUK$Ft+gkU}jb4`y%R%ARH9#oJzS{ohe(n4cp zRMrSBl0d#M*&Y9`x`wty=OZ#ay62Y}gR^hKLfs<0hNs$vu$SICN|6WSBhxdVk~=p8 zkhx%BW2crIz*z6|n-m!H9SP*;d5?3n#s_Egc~i^f ztZQ@ThCMl(Y|u;ABcuH9k!WV(WorRd-*hXIp#45#<+xTV6c3{lS3AZntcuv&UWd9w z(k2KULxe}$MMT8s@(Pmu6nCB7)%tXCp{__$l#xi!>gF=Nc;K#j6`Hl|-_Ln3lQPlD zcTR_X!12=w-0T?M$?YEQ(L=2h`ew_us;MC*K)W~EDcwU zq3$^GJ**soq?5v+7s2??-9JdVz*5v9PL)TxbNQVoJ{)vCl<;K6YPTC0w={gk?F7zg z7EjfHiC&5w%q^!#4*^#; z6|I2fu>{+)^^r0TR8KMq2(4zaLcrwCEO$en+*129ESYnJSenZAc<&GaL`YLF&R`6r zQ0UvT%TW`)PhpYBYs}etnI(ExSgthPG z6ZIdLkLdr8<)dopY-VICVPxX!;OzCkJ|C(diol=fU)O^p(8|$TW+bYSBtHnQSY2q#lw>OM7u<0eC>3|?GznE-t+uaJ6^s!{AV|Ug8m>A zdsd(t*gTJqgrdHq&h!CsfF5NOg`}c(>h1f1=k|`X?rj*+0Q5EfTX4qwh_vL}b}ua^ za-=t2`?XCPoQ7wlurpS8y-;`Gd1slNATzA67o-mTL?bqMh(0sC@{7!%6PR(%d;&Pu zLUpz9yY#?tuYFY0ITlym{nJ|4u_qbG2FC{>?1&z16hbv>4f-4aUi`mc<@==h#J>Tz zV(~_;2pz67;Xyd9s?`>xEXs92!Ny4YA&-k<=8^al403c=x}O-2)C=g3G*Yx3GDs>N z3-@ljT)sP))9_UyB_rs$)VlQ~gU7H}mO?NWSLAFpLKyE)u0>8d)O>}Ul1D=dd4r54 z$=}T>(wO-+>vi;K_bl&I?;0v8PQk!%K&;KFkX%TxG(yOIM>q|Flbp?|n6@Y*%T`Am z4#x0AHFgz|%l$-EN4%C7Hm$v(K80=@6sJ=Hxa}?rRX333Xp8hJ?RnEFG^5?CmDaLd zxsIc$!I0aSm-+_IL4zfc_b_{N`yijM$kJ>Lo$x~CRwbV);Ot4Ji=~7IkJeK84V&1&B;IOP4 z&8R)IXDW&9+v9PBI^60Fxj)+N7fsjJ7y}>4c8O_{ z+~sge8zvnKmI?$pXvV!{{QQvp#|fsdekaNm325L2OuXm!qJ6Aoe)U|(cqzn zm9E@HP9#QdJZEx2gQR3Vpa=gBC2Or)*WS=RHD9${jy9wm>|p$9Wup|+(uTCLy4q*4 z18iRx=w5pf-05X?Ns%-5ygm45cfxz(d%`=-nPGAx_=S$baA?3&H6^{QkbPcirI3AH zilcDPWmTRs=d_4VwajIepOT%sbXnSwqO2gpYlVc?ozI8t182asKjiYjgTEkj5dU%l2O4dl%h}!!slt6v_3lp_D zQ)a!m+t;#2opGn5=ja?EquxPh+xw~O$&OCL&b(SPE>9Sr*>Xf>PZK>9{?Dw=-zKqk zPGltTcD!wZAk$4L&t`3(<@`1=(sWC9<`iCJc-%?T*&ztH0XAgVI;jXUk^rtO zmSPD|9;kgMGF)TYb#o^9ZOWQit?))YrbO6X-=O2GCPL(n;3Ody8mi=0TLXm*J=Twh zfuS5Z$zBdS=H>6`!rmlJ4-c;OtEcgPmTcK2F z%^`#>q?F4_*9RK3!MFRkxla*Em9LD5?A130!7-$qZHlLxEOE$D=zWJsKm=jeizQ~_ z9aUb)nP`>BM>)!H!;ekX+q?8fI?rVrRV^ zZaq`wW1!>!<&SK+T&!+w3z?spTaRk4sG9`nqsW&ZI75>yVImAo{I=X9Nh+j)l%kqaAw$=`hHRtcWV>zh z44Fr4!)mhF1Z3J@pktv|pd{?Zh`#3{1!5_lmfB=^(+5(YA3cWb_EN4 zLN)Q+Nyu0f+A6*2eI8_|7vIb~Lrk8Bc22W?`a#xkZBko{-Y#Ug+H%jH z02`v2kKEMcCQ@M~iWFvQ)&5MZ3HHsR5L>C~T$57yuD!Iw58+DZz}c8Nda1POsj#fl zpN}FE8jHTX@Pheq){2`_-m}5G1O+0-t;15wQVZ?kD$Z!5O>BqV`$6`@Jn!h>8p@+C zjtKfxnnK`NqgpW*82PF2mn_=%HwYe!QgzVeafzyk{8kwJDpi{crpoCps{&LKb>`d| zVZN|cGTP!!1kTp=a*?@hwol8+o!{I1AuRaJvHa+yvaT$L&oKa*@nX)K!YKuZ&(NxL zQhE|8KBer$>XB+2hJ5TydsSz$UxhYZR3S_7<7`E>bednAHXSYD;p+yl>SryMwuX84 z^U{&rai)zYTh4hZl}eDjXW7Yzbqulu(zv{|J(?;3a6TVBuox4i2Z6U3! zgad-07lh`%te4h|_e?u(ZuyiiZf^CIHm-i<6gLhO*A7TssU$@vS^|jcVqdRU(kvms zy;`C!{;eM;Q2x6PcdPvOIQx63M8VRjdz?Vo?+W(!SP2hH*9r*_t4FOkfr{T-xPJLn zbAnBr)cU}bzt5`>l;!VmJv8C78})b(51(jWKLZ;{B`q;oP(~An7Cqn)>9O>Lh< z#m32MMag-dR-h7KC7k(}`4w%I*N8|h=eU)2I&gxzwi*v7T*O~puV`U1BBcG=bzhhZ zz?VnB4!4}YzNZ~~;L+-KfNb6`N}b<4wx9L#`;Q6Jv@&!~7qg`V*RRBtSn=!^GZJ10 z`q8nclhJ274TqG`C$t7O7YY5ZN=M|`;}ia^uM0OPBdT1D32rzqCp(a#A^Hp0pY{xL z>s%yfor_DV)Z}o9H9Lc3XX8c%We(H>0W;W78xAHj)#?VBmacJ^^yp4uH9Kdi2v7Wr zItz#pTN(nM!Z~nM?i(dUqRoFDD<(GpKvZ zRaHIVo|Lnfyf>pm&#)pVe)2XGKEX+>a2%not^2G3-v#KjeOa#InHFeZ7=uU3h}y9( zPvu!96eCnKfE!e2@14hp_F5@4AW!us!}&MY16r3Z(Gl423L4aE&qINmyZ-?w-P-=_ejgAgD^ zW+)+gFb-;Cd57^x|2^$nG*D*tNc#bv4p%!?Vl!e=swINfPo%Ttks&>i^}38JZwD{7 zc;8E$VSmVaR875&Qw={26?v~jRF(V2sF)TeK$Z3}tW?6k)hz$zVVUEbP?_2Qk`xyt zrs?O$Mpc1OFakEH?f6F^GF7ucSeIb$+H&9%|Ar%AKc|4_SmCs@=#DWFR==cV2d)~ikJ*P^&RZ6;Ad|%`u{jyY>oVtb83UHbg zP-~e#^66&%5B)S~DKw49$Q1{}M2@Z1C{S>D;IFUjFmmq__dvnf34g+rx<7`dG~%xL zZrWinv6>5Ge>l$8rX0?@A_XMPpy>>&Fr7^ZLc$$`c<;p z?Urkz3eH#cA6fHPx<$IlTmL^)f8hl+xxEqv145_FWS&?*{T?0oW*C_XiZ~vD5pOi* zeyVhTNq8WQJk+{aeLdn4|H216GYRU6MbDFOOo_6j>_Mg0cQ!K)m!aszG?!cQlvyEO z6;qy<#Uvgxmh-pZhU+EBcEHkjK>;kV0FHuJWf7<9rSBWI?zkPM@kE~AW)VZR>CNr#M_dN5*23SkA0w+KvuIms-CqM*$Z)2IG{=a&E?fODIos%+Iir5==!vdRLh9qBh*p6H|Q$@eIv z>A{bk?QO|c0Vs|gU9COOWdAj-&9$UGhnL^zHttitcTqQN1c4H9EvbOPJlXD~{B~DC ztab@k*sh+a>_Heln@#%5LxL2J|RIirQH=uC%gX+e-QDvr)y5j!>>}r*(MH2<}7AYz%69>%8#CEgz zPGDkOeMh5y7Lm(F1@_A05VmZ5vl!RqC_#n>jI(O^qbB5A+wers+xmp zOl$U7#SdxNr!QB<7KvZpS_HgJA4?^9MV9jyLwa<|`N|08*GatfYTG>m`)P)F{pwE; z@7+j0pt;B*{JRoleC-o1-UMhL(u$r^`57Kw-emYFBu{l^|0MrQ_%(EbXJR$B00nyN z?MUVEsvAd$<^GI#@8LHmK>N}ee(G5<&OTre$OE-oJbp&rEBtT3DE_|HHMBwE=cTao z+AwF;a~>(c`B3-6j0fozpnI+;_2Y)*?k^6=7Z&(|ffCn0iQd~8oy;>tKyk=rp+8{I zqzm0jXSe|pE7*&rckq6Mari=~qTLHMM;wN6#(@`0mQPtQDNA-p=*P8kzrJ!JJP6N6$o9FpJe%8 z6*o>Ubd?q|3qj?lt0;bf(5#3wzxSbDz8O?#zvZU}3!rQoRfAp;Ox8Sv1%D@!y8M-& zZqhL3Kq626b2oQ*$Wt1?YGA@oQBHzqp<=;!e~hbIoZx_a=X`{5xQki6tDZeY=i*if z`m01rLY%h9TxE(aS0%Yc*1u9`5wj9qR28H_K;~Vz&p+{odt@~Vf36}x|NHi{r~V{t zK{+|L0GRwBFBNL57HviF2wqNrCOn*lUE}AIWE?s zrj5j@r<>^uCRf{-!V#Y?%E(Teb0VR1=%OTOJ35}-Y)!#vAl6S|GhjNNG2EhGJvdgL ze2iHxhXKCWxXa_^o0;0F2#d~f*l&>*<*HEQrV}qsAcxDBZ9no|6X!Siu2MVGt-2i} z^kuVVi6?u~l2;pk1UK21+LbV62-xBE6*$HAtSzXU5V=GTD^w*CbtSQG5nmifPrqFT zXVD25Wm9{r8z~H`ThU@L@cOOXp2P@4&SG4!dGPQ#odn-JC$$|sX@!{$x83{s&!OO( z__C7gH;!<;NsGw+LF}X@Z=Sz9UJSQk+IkG$>n_g_pc2Q}yRPtao-6)V;)#im$*Ss}O{TcI+jviaK$Bi&=<0(9>k6?%UY{gYrBrDn;o*GUFp~J!s z{8lk8uLn==9Lc&)OfUT(wMrnzJ=lLKuUfxqh64k;DAKg)Epa#@^ zFE<_=7s8SUb>eg_UWtGg+;%K8-W)^+yahUPuO}W+ccBT-;X=wpSCWX*ttYaIYkNQ( zBm;Z~IupZDYXAe}hTIYT0S14#8|INLXCQC^(h#O2eZZ-QYS#}$0yHF3)=@`6NI#Hf zw>mHkTw&n2?&}b0g{pesiv&m&eqnL0BcAOFr^Gq(x$SksEx#ye%Op^)O> z5dLGQK*v%}j*EiP0#V1fC=5Xu4+sCCKvy)clDw5iN$3Az?3|)Rd71>@wr$%sZriqP z+wR-8ZQH(W+qP|U@Au8@%#E~O1KS+(~L1;s!9 zaE-|AfyXedL{=^nzaVniN9t@4@@eJ(mC6`F{TiWb1Bl!eg80iau$`zm`%qVmH^xG; z?~{HxFJRtI<>!}D<+@@|#L>rU(mSN>4Hchz7$w$Hg99Z)PF{V!^&^lGe6-}+DabIc z@>fm@*Ax2V%wlT=a%EfMId5CY4At3F{i%On_>?1^6V5D;*uvmNo8-9@3Ezw`y1o%2 z9u(8m0N|Bl24Cc3iuA(B1cs?`K5o7$eY09w`DKw>h4gccff4vRvA>1r^(*6Yd44I5 z#$F34;R{y#Dc4vPR*l$<8Hyp~d%K#wS?dDraTXquW00AEuJ&Z2Q_Dz>0=QA!s7`4# z;4olH+(ikm~`Q=(0Ng++lIq5qoAH=!U{GEhujwk z`m_p^O~vPDmC5heA)H&C`KA6wXjXld$u%as^ZWO%jpr75q4C$T?hNx!yY~MOniaCM zwl?`!42k4FpHwaWy@CIymt8H=4dn>+N2X!S+Lax$RvsxY3{0FYAWq&0uoy@XHux5T z0H|4(&8VSmP3Hx$&$5}eI(E6jCK(A7byR9m6;{fM)n7$fQw!gwc{%5~iPuJM!)g5+ zxTS}ic`bVj#P#v;aNF*B)64IrbLWp+59iMubRhuNU4CGH#`+c5R(Y?=0ug*oMs|Nh zElfyII4Ts6m1iL%FCM&TKU5Ohw^FOP6p5h&C~1H#uf0=e&4Z2r0R>5Z9!p%5%~Hqu zqdO7Cwc_s8JaVNo?Pkf-DU`Rj<`yoDOG~g_#4IR&?NX4=7E9LPQ-`}VX*M`_0wk|( z#2_85Ql4Uy#KpcPl^V!;%}}7Gm^gYUi-S^!4m7FDf@fgs3Me=7miI>W&<1e5zH)yN z){g81YO|Hsnb_Vk8Tdeee1no6rZ@xoaSrwHn6!@`gRPvFMeMSbT$te6rg&AQK&0iQ z{s0~=-jWgQ1x!l`d!86_h|ZIH_OBvxEEtD+E+nY40AZ36{cz-FORHvH40tS6CpyC= zw6jAx%LjAijTpurTc(__M+Ru9^ZPU1LU2J%Y39V;nNpjX$A0f|E8=<|&8h_+2Jm;< zXJA$NT)7?HZYVSkc|Fv#%^UsHMQ!AHuSbRtV+B5wvou*P91rI1@Uv^ojl<8b^?YMB zsnx#x%xaW*WH>={Gqn+-B=To&@y(VtI^v-K(~e#G&aje6Y@^4fPC8qw)DkNsV$!DRNV!Tz2D`?0fg& z-gWtyK^QshXk48v`x;@lxGEaVt3@PFGPP}E?Hhu$v&zk9<9Et+>h_Z;_BND`2r1=B z6^HVO31#KVv{J+F2v90Z<;9BI$}%N|TEqMZ5h^TY8r8Y70*N6c)LaF7j|*}P*9lHr zdQ);2!R!uiuJnKtX)o(T1up|#n~m8*UmxAC$<;znA>F5{zLQa+O0FS8HC^P7$3l^6 zWME2YG3;sSUlsJzl{vh?xVQn;4`q6ZdOK-BF_wh9khq|RR@Pz`O&K{I4|FBm%k4-) zGFLUryz9Evt%Nlr&rEe8ym#h8fmnaSL$ah$pT5wSW)y0sGdqqPM~q?cD-Y0)_~WG~ zAba;e!Jcc76GJ}9T85D$OFq%o{+!HGbbd`H=!S+`+~_fuJ8kwCT;+8!>0B}pc@am32W`eYHI%JrEAwtm7j(=CI2Cz~33$EB zLoJ2ML8k+@!ZZJ7fqtustNdMss0cC?x<+xk=S1=NH-5%PgYH-yR~cM|&>%U=BJ7hE zqvhR(#)vvFv;gd#U91&M8NEPfYIcmIl9s~|9S%;^Geh*9N2HCDP$}4z{dM`t` zb06oeH;RmB-3u&;hjNcgxPyAnO9<~V8xr~(2gOl*^Z?I#*Z{r-!eXSAca@61Wlw?7 zyHf|Rb^sCHbr+E^)}u}d&nyV3d|oX@gh_jd z;vxHR>K*RBh#$rSm3rzehH|Q1@?EpvfVYLKXz1V`^=jgqMqwcr7w^MN#KVfAs+H7> z%h|WvDT6v~9t+Yuzy8b?a>B8Pu1kY`dB46k2x;SLC(}jcsYxuM-oKlT;(GBhTBUhD zP|Dr26R=Hz0CZF(K)J9_!y8P`=q?@2uH|(JE!W^y;?vCM{su?wgFzN`o0%o#{q# z!VJiO)s{f**26npmn6*Q5cCk$g|aKDKNha<%1r`*1Q@f9G8oWGrlKlKge{ttET%Mb zIK@a~st*t7Gs+6xBNA}gDqu@LKn3wq8BVKoZ2dOvPf6 zs^I)U{zay4C<&JpdvGan z!J&XASIauBaXzgvY>gT2p%Sgc)?k`+RRj6K8t(WucufX@W9*3!=%r!$Wuy0`r0)cY zhX?Kx4*F9Sx+@%@knFV#HY>JN=Iji*v>R%usFg8eBit8!;#qdl$t(IbgSMc=Sy(3O z^w^wZ)(lvW#C=*8{wBqhp zpk~G&?4kHkwsZTH`oR_5HDBeS_!)3YZ=-e^GJPnntmKUceC*ZQnEDM6;lkyoAVP&# z>H7hywviD;%Fz(0>gH&L&nX4#1Ghk54t&_0NHV#PT9;U9Qn>o)O?+WDuMeSlmz z#vizc<9)K+f_PabF{65SCfaRw=QLecM- zbo)J`kRDk0dNDsC&F26XyWL0wF#DG#L0;!MVrwK|cy6V%a(M>9|*;}@? zKfH}oY4@oxVkJ|zakJmmD4%mmZ+%YK=5JJ?os*}IH6_X13%auZ7z^!1tUb{*RlKjY zo2ZU5eOSrbeY7L)%FOH8S9K57zq0{*g@QlO?R-V>OWGMhZXeK}eTZs)g5*qxBsQT) zLY$FljbFJkPg*o3gP0z64(9|t@!E8T2YK#uv(LnUZ`~_ijLN!_+~JB>W%>z z4WB^FzX1ANuJg)10^gj-O?y%gT`}(jtae{&<80oCy`MVdC*KkLCiCEaqaSNc=rMUT zp_Xb6ZoO7bv4Nx)s(xjCgS+2}yCLz*^+taKKkOVUo@GnOCEpR&mG=Xof3aQ6Kt)@`QBD040o3`gyK{$Uee^E%VyKQHxG1=C;MU$c=~?UWXn}$WaXk zdI|AnjK}7+=%EY!X<9$}ayd(9!O29gH*$JVZOWt2h7+dbk5LHbq-d5_@m40Ns--ka zXZ$GEwGl0#%VD;7$UTa%1TAmKILl^PLz7%IF>=oOAoKfoIK)v~db$(n;VzCw3{L29 zeQ&-KjUxt3=9I?!U7&#<*{<+Gn40YI5ZoS>M4N*Zghs9GZ@7g@jVfg;iC2S4@wN;K z9w4f@1L0G1E#~X;<#|T%65?1^+y{#Dwg4Ac_WJyM1o}*@>%1xhRMPkLX!DGyF-BHV zd_%D>VVLz(@cg}5cpWt`Sg}V>%i)xa7V6k{GaF2A6r0e;dzl#|St*bfPdpIjp!h{T z_pjcBS{u~Epd^ZYw&e1d_ES^m<*|)O9)d=f@bT8uCAw-&5bj@Cc6UiUykG{HFQdnC z{ltP40W-!*#?buoug>A;omcOmEf-qod6jIclZj}z*czXGMBj>>YVnSYrisr%WnDli zw{Z<71_%dy^)eA9l#Y>~X7Sr_IdOlaCV|d)$S$c=&8ayfs`dZY9Q)UbD?Ylc!TQVh zoc|*uPWeBrxPR5>`QHq5v*us0XK9K5#MmQoObQ4R1k5;**4P9UHWC3%Lb^Wz0c0~| zOe&2b9g-QD?Ik-xRkhp3YldDhV4FCrAVfBfWw1gUhG8%x8-{5x z54P8ISiF|LL^cj%;N_oUSiWDq@et4P(IG3h+(E-MAU4Lc=+2&|;qE~T2Q};7L5+xtW}3g7Ji3q3T1U!G&cM}8 z{LaMntmKa?=}jEgy$6gywzfs-PUvnwe7@u9iYW@fmeEN+BvOu;5E^X0Qo)P1jvT;% zXs35I6$D#~-Cc@jcGUN+9Xgh=NM)vfMefl%XdtI5bFg#hSjN1G&YnF_?jCVothr`8 zLxW758XC6LZS0ywl84i&KPn0agmjyZY_+w zavtk?G6m;G*ST1%>ykD(7i0q_Bv!0(jVM?{(_)(vkEDSo92ru2v&xR1ukJt7yMDPX z^He`~sNJ)Sm^gsGCCHdKxx=U-=;zS&lE_=qLOMW2WBup~K#HxckIzzW4JkX&c5qQn6yj zjlYDl-T(dM*8Khz!cI|Bt5D9q+;qQN{^VFR2>%pfjmf@t;nVO|@)Q3f_xKcnMYAcf!s- zgVwFjqugd*Ed{?a6qRNv)7S_~*f)2O?nA`@OgC zt>N6>+7~)YPZOC_{TL>W#zdf9=?oUA((UOMv{A-h%09$r_J>9r9(po}L%zZ?GfSX# zhC7yhC{AWHd=%C%x_0S?>Aa#t(kk1xCOiojDXX?+;0%@D)M=|Lf)Oqil*anW{aA!P zcvbb<#Y6KV+N0aEwB25+ZqRO&ylQbCs|xZR){OZE33_k=y6aMaFY@@4NMp|pd_d~Z z=CGNi?Z`Pp<-s3jUvg21uK84x7=dNv>b&zWvk;Fr{`(qtd`-c(M9t}Qh?a;QUdZ0T zD())#<~h@=X>iRvEt5it=C0ZE;>44uJDTaYWh@SRIW05L_*MyfO0#E>HxJPU5%D4i zJH{SxFoPh8bvXI-b0#@8dj(=QMahpzt|c3Ips3SiKpd^A!ceoX zn-lCp0Abe1Q(b4{G8eE4Ur&9n5exP?fH_UM>a(S-6Ss$U<>Jy%2dU1q^{$CpNTu(y z6@Sg^Qrtw8=?<8JT*_{t=B6d>UgKzu5!qheNj+WmMi)19*EB2MSsHO5m|5jWN8}P; z?QEMkuV`V%^4WE7;P|~LeQl90>mA#4YTF>SGq`&qM}@5|V@1+R<5mDx>dqF?T=iyU zK~)-R+?kc8mgc7@0RgYXWOI0KmOy(kri`@Z=2@>67DL*_+R zoJAew<@0BX>2MX*6WT8OT0|O+?y7_tbL(We&Q$Vn#xmB^=cLJ}kL*n9El0HvvEs-D7LczvTVk(B{s;6q^u4~!|_KXf3N-ZUls#6&qx|lzdAvVfG(!8$- zBGi|+eTo~(IEThW^4b%lrRG6e?Ih)ty(cWyl#)uCN@<0c+WSVP+uM&NtNuv?%_boW z3(;lj6*W=O&~y*M_aNABUDeD{DdHhR(09&%eDPwSRFC_f$vlFum@=|2qA=j36xAX! zNQ1qiqmLZtx&-CNbX`Uk4*xcth`bGP3Y2DB!|qJXpr4F?%ThT?SA3+U$Xxoo? zYu2H6RUkU@_nU_#cV1Ep!v4GdLE40T>Q-rmuUtF}whG1zJx!BP&yk&8M@Hu2buKWO zad}zMM{3$zH(hF4vD0P5^R$O8&X@{^(CstV*3&>b9wxOF;Eqp&E%(Bqk<4k!v{%nn zyfjG98u;%rJO_V-T{Xd#FQX2w=s0~BmxY0cg?}8vmkQJ>8R`vR#J#NzpN=LOaI%mo zR4T2wo*}S|K!Czu=ri<5)_X{0{d#XBzkE5-mY2?DxRJKbvwT}Y6qaYCitNZR3>2k} zYX-#^c*7@~)x%#xkz@RCAVM3>h7(3tHMa%Y)2GO8$hjn3j)6N;-++%ROa_SI>gYnN zNgJpw6q}wIi$z)l#ui;c)?mkuAIO#Xh5&=KCLxuC32qY5!Y^0_O09INcPJ+>ZY!fG z1TW)L0j=OqmzPzl?$b1v%LaR3 zha;N1YJPEe!3o<%&?28v}M@d5hk?lI-)r zX#|#=Fuv-X0s2J*wD3W5uD3=@X}VUwWx|VOqKc)CNv>k*;cD{2!eJSnywjj>Z}J(; z&Sk%nlzPOO%$uN_0#|mK{w%77CE=~X($uiBn5soS_~t-sn^7ow&N{cZTp#XR0v&3% zOf6lsLhExn)Z3O0co8F2hCK~yI%;sP<=R^@Bqo2Afo~sr7tSRt^bya4c1*cUEm^g~ z+STamOY}tt_#rMDEc6^7b&A*Yk+<`E%5(09b&{&{Ksz;E$L`y@8JD+aW->=jh2`T& z=2R9Z$WWM3&aQpbBR(W;%bGC`WSy!q*?Y)k|7TgHR@AfS0Uk8zxyVVo(32`n%gZ!CEAFMTyJXP zea!U@siCm$zJy`A(>|h#7lNU$U`w=tFr$h0{+*FJBmG_-q6lUa!(HAMWj)2-s7|xV zYr^2b2w^9t2XC9c;Lby4{auYAjw7ZU$R7ywsMtb`T+m|@XPK293Qx=e3OqT|yr2TU zYN851>znsE9&3voJB!?TEREHEyi7}lw>fQnO!FhZk+y50O8(pBrza-7>N)0vjz2RN z%Ta|_+oXw_S@tUNI$ThA?=#PNFM}e(x=;LAS~j;1KAjW1dcuwS&e}^8;V~m@ckd%U z^Mf8UVSCr^UmtA-VjprKZ1|u9Kdo}h8b6WPt0(fOmj`rDqeUNSqH<*mdx#jdLg3P~ z25@w?(k|Cw`x2pBPcvVBhoxdp9B3-Lww{5**K)Db}0|>aX$Q)9;f&q~r zH3)5ryQM&C(Aw0ql((cXOM5%^Q8B%}XfO+V#sRgU-H5NMyJBF{3G=QPH9_#OxXT8> zFTJ7x&0JX#wzyfVMFUE0vZ1A*X!&BH#Xz8|RRi7uDyK_(&H=1IPe38Pnt-wXa(OEH zg}t0WCs0}R_Q}1hK>TLCzKWXBe2j%6p?*-_BmNY>6tlxFT-0gggMD$o;eokOjO0Vj z>Qq86?1SK7+Y~};?Gxc_H>-padtciAz5^N6-{=Cd&&kCTc5=2m^x(1@h<;j!M8CKP z)FnJ(+@&1)aLa`I*`^Z8d`r${-9J%$!-mU;jPYA-v`Y=@Q#o|XJ$bYRTDy8c?iLHT zyVuI4YzUX@6Sj82fb3g3)B^|{G)KP|hm!R`7B}U94j1Z96!&;vhHG(eiYsZC)`A1k z4!KQd7cPJs^cty6YZotoEx-%(8o5pHFEzLY1i#Lh`o89X(6Zscz(;l4)cdpM0CC-V zApaSJ8{5YYx^0+O?}`&6x9$-9h!Nn|bRhn@9aC7u1=WM_8W7+J3buBq?wuCUaK(Z3 zcM@Zh{ML&*CK=D@4wpM7ah{{`u?ClXml-IRSw03Ant^1N&|ZEQGT;P67r|X=w-)FI zvWxyU|L?!XXO5F0&>;{aP|~l%jWpgi#4;Q~!ZI+kbB4k}aF^a~g;~_o&%!02t9Q+c zqGy)Rz%7-}!7ZI*;KmF6L3kD3RSKBFppYO~i&?mn3h;yc+=v-DPy*Una{%k6xUJ~5 z1JOlx*V(0qNg|4)VwjC#9wTJfjA=Z@;GRy&PLH-*y%YA%3Sa@;ig7X)ak`}j!!j9Z zXX%SEVVRG4FmJ*=InWId1MwxjP3XPBfLL%Kz(aa%?AFbEiw^`m;-gAYB< z-QJ??+o)_6e+Z|C!>f-#yboqifgb+$7B=JWXBBa0DZ5woXD@Wi2i3a~H6c;B@;grgVr zWFTxE1Y1AVsxZIVReXs@+V2U0?^exra1{w0K}$|{^$ClU`ouS_Z5z%3!&GK#@}jH4 zeKzqc6N7;&6_+@AOK-j#1p7MaV}LBMle)W;hP#vcyAvToZGaIcnCuxsXGHBPm>G81 za132M#;#2!ZOH~V3GL&ssfSyngdRZH29J62dD-lmY%boT#RksH@dDWnSOaqNkF!Hg z>%*vI@OpLEJQCs3$WCtaYz?gifsJ(wDm60KdA#6x7O{*aq=M*TS2{VDRiP#mejSVg zss5!#<)?Xjm&OWRv>IE*rO0CUX~I#c$Qj7FqkCR%QCHV6Uqe~nTnrxhL&9}WjQQdu zl!8cUt8=M^dgauEeQ|bDQF7kkSqbpOJeC83>0?qjowL!?yfxe=o$?fpM}+DvIdq)C zbj!Og5w#@KV{Rs5>aK?DlC)$cw|@1|oS9_G4~wA3t_X7H(@+8-m34w*7OUE&?#9g6 z37Ym$AKuW|=NMP67}60+hcI8XLR+J!GfJXVpH(@2R<)i~o!p~Qs0kT%Z97=6peNWz z7WpVKU6Vp-z#xu@XpOWf-x~WOX5&U7YR6_o(J(ZVM5>dLGD#*iQA&?6+4G_e zNaHi;s^S@{Df6HMDQ4kidY)!?VIEG-@J!P@VGiRJ>9%V7@5wO42qAiK|n>Ftv0h6+Nnxb14nm4Zt zq>62~`Du=MkU27&23X^$F)6j-8}~%Jh1ebDz0g^Dd8P4R`iJcKTd$8(!1H18j(=_f zg6iP^3iKXqx7|&@uRA3fR#IKcVPP8t+$r1$lEY>2R^rOe1jKf!7q21uK;?Xe!E(? zklo<92jp3mK9G9*E4Q@Y5Iag-pONoDZGHys#a~yOPM9a1~Gno~oQ*oe7guwtzmUPWtTGvY(+h^hCjldc~ ziE&(vVWT4r5XDU!E=CbA0X9EL06SWQ^14GYokCrNh~1am9&o#paR-n)_P@pJ?$hPP zb@o&g;XgzcNGQ(mhR~~%My{dZfEn{@YOT*p`n!F4LfM7t5RmhzDeC~ev3g7s}Q;%@arb#)Q*Vp%|El#qIrS13ah2Y zVFTPtXBcSen@=++5E28=THNp-iw9IP1XJE4Y)*X66j``ugG7o&GQO~+2)&9UDj0*) zB5$S^QT0UFi-Y1zBz}@ThiJXNUhdG+6pEKv4VTStmi45O0G$=eL&`KBimY!bt*;j` z2)dECNyMSCj@Ec!$+z>eu2rs7V}ml;>g3r5(oe(q4K!kl-B?qA7XOgEO9L$DcxpYxdObo94_-lgG7 zZcJyB4YsBUBIJM+0+ru;;VD*mFmIi+MM6f;_S=P+@eNl(QE8Roeh6mgRsCDPP8OFXx z)`dOO|HqvzS~pB@mozCPRgu3dOZ0#(BXHwPxGTfLg}izId+E;>(0$^#y9>0< zt#n&3q3=Gl%i58thFf}?yNn^W-~@^cX`eY&=)n>!UCCP7cri+v?82gq+;2|hGTV+} z;w&&$%fqKzUYW@DldYPdx?U`Be;rhs}9}(wG(0zwsl*R zYiVF$`SdmS*FvO|d0(cp)8}H$b4*g+3 z!w-ObrTFN?E!hW5i;eA*ctuj)J+O!3>mxtLWVqEZ?-#1WgC79%hMVp`*+cRMtm#KL zAn&enoj;t^LEPQ~HOUe-f|s*BLFw~Gl~%3=@n7^dO;6cEq*fA%=us*>F9~6-c*L`P zmgNg^Bb4e;=QK_B*fAALSoT7&4M2K$zlunHmh<$x`kOBP#cdmqRJ2vlmyEELq&lpX zOdT-R5rC5|spP&^#49JW!H&og}a#c}90=ZCm8In=~pksFQIm&QEiZD%~!r z=-1-cA!%v?*p4}FHGuPM&1TRidum6wy6&%(;5LD@P|QqUe>H+D(fLNw1-xVbi8n2w zUE*C2`*M)_c{M0^WJOw;&JcUY%lG3Ky7x*rIUJjg%fHw74a$7D^4atQru~ZBco19n z8)CYcq%A7JfV;R?R`U0TM35J!$fl6SY@dZ8Ip;1V7SPO`ynA>|z=}CYmr&szF&1#{ zy!va#a9?Xu=r3droyiets^iBx0H-npa3#dj-zFR>#|DhFgBDE?Qsp@4ilA&tsPE>O zws}~agWev1)%tk6pskKvo~+s9n;uv#bC_+h3-fS}e;e=~C}m~fm4J0eTfJSg>~T-l z-!QxR_LrZVp$yVn@cIr>Uc8|6`YBNZ+9l89TKEfwY_pqPd?Y@!14voA?&vq9$ci4QM#k@(>QW~CpImHeC!IhMQJVEQKo^U zI#y0k#>1!HQeeI&7pKP9Op2pF;Pl_4n8H1Opcug6op7%XR1dBbnyZCd1JpLqYz1ol zZB1D24#@vN&5^Ulv8M;m&CyZpa3ksqmd2yh&uW0^0VBJK|=;1U_oR5N8{z;0!)lz?~npt`E2c3w_2{R`Owh z$qP_v!Ok)tWRJ)TqGf?^UC3(>ISCR?z}X=rbhrN_e+5xBvl7YWwK}QNKFWC;~mM&kY0%E z5762p)#1F=W#CRfh9~auJhr^JpFicJ*!0eJ@Y*9<=h2M3$W1SjCw9ubmp#-Mto9?I zbpbrFE!M=2$t6-?aXb=tuVW0DuP->AVQBp4(a8FRs%wI=H*kFgLHNSW8zGki|5Ww< zZ&mbbg>j86clbu>852jK_cW{A+mA11wlAg8{25}h!?N&+RCnC9ycF#Rgdm1pIQmyeI>veSYyk(&=(K3#1VF`N?L06QX0YlmVoor@-3W2QYL zjcG#MN~t7LsF`hYU!<9o9AS`9 zlu81fd|$;vOK!yJSgyGqm-DNMu1AWL4zz{~GDEi?iDToO$F4{N5Jyb<~t>vuIswK_dHlbxQJ}>jch~2jk*PE{_IT)uL7tsd0wYhO)T+6p2hM z39e|_cdhdZBkQ;hz(4+?6{1+beL(1%;VlVYCtG`^@t7w$H5e*faSyyg5?k8?D@QnR zTBNh|G_!A|O#$ zRQ`Gx9rTkkw-y|SnZ&@w`oGx>d?t%JTsQAScSY!Y?jFTUZ2pKl@bMv~{9)gwJL2YY z=a|lCC2kFW9it-)#etPTg+jsBgRG>k3aD3OvKHjRv-2~Jv2y-I9q4KL$t6=`=Y4_P zDasp5M>ueP2ceJ&0fF!k6Y`JTMJhlXoJH=FnG|7&dV|WtJb0Ansez^oD&?g+;;EQuV-76wyS6Y|ZoLSN1mL!twPG&>i-hD`4iFAnpU z+Q;!=VE?6U*84|5lXN%a77_Iw_YP`J4t%HtduW>&bK^qW+K`6Ci*1xoyVcTkCFqrC zm&11?|CJbpJ&Zntg4w7u@fCX9slF{%qJKdBysP|?DjdCMU!g#)U03K1ldR*rx7yn5 zpexi)wL$Vrzm_Iuq^X{lgVmY`CpP?DY)go8_gpphVjk}Mvn*`q`|GF|z_1j^C~@i7 z9TpVG3q7;iv=o6fqZEwxGyO9;{tSm5{o*u!J5e!-Nr z0t_1%@=&Ht&|MJ5(SPK_jM{=G>ik6-y8gm6|L=-#%>TpoR@)oars-%On>id#r}mx=7x2GN3QcgQacNAuLoFfFU%O^PQfu_H{8BpA>? zk>@HjZM;Jf1x1@`t;Yo&oVQ>NFQVdf8+>^=X3t+~{HT({^b+Bc);7-}ug)C?C z>5z$PgIB+->j&{s$y~q?qrj9?1{QWJQb-cw|RzyFbzqFVMcut*b zxm6?DHr#~KYz{T!9OqnVfz!qj$NF6{=*%4`8g3Fi)Xudzz0XpI2YaSi-|y7-Qmxp1 z%B(|u(p(M}&T?V-)G~eMSTV@TFs+@8eFLtUKA^f-4bP$R`m*J^psuog$lZ^*1e1Pg zC$@!;7ky;vBJ$cK>U;Z zk>zbEsmThb_EeSOboj-&)w0IIr@fj}oU+>dfbZ4W#Na}EaK=NNL#)eEq3yC&6F%ZZ zRNHc!D6TZQA*YHN-HJ^E8|1Mf^Xf5Yv!2(1cI%jCVulVa^d(~sZ73M>oV7KDC8>cQ zRV)qlW9}4{aXlp;$g?bSE>y)*(^9u4_8HTw+D$si#mq5)N-}7(BZ6N{W%;O0%)`wu zI+F|)+oLKHE|r2A36#V#wF16y<#09$7J@m`@O>nk_*0f}BqUhLq$CPb1PMxf=1H!0%1KQmYR({a6>@f%uXo_{2*kTp!Zl1 zJdw^H`j(K9rZ11%_1==XsbOR5Rkrqxj4ap-Q#C7Ss{!AX%0J1idk7A0bs0Bq-8t}TLoAJ9AN?6TL&uFgY3OAUxTc-l>T3}?$8DV`h-e?eyss!;lP)h5CA6_i z>gf~2vWy<}3-LMGqOI*CODvR8Q?d5!^ahO2me%$=XJm;UW!-7xJkt%yQ#{w{M1n@S zWHVXE4kxkm86#AllF#EjZmEin59;2CJsz6|Y!MG_1JWrE=C*j1tKJRu%{bxpa{*^; zE!>T{0T&1(@xsKiB%0rYtCw@yo!0(e^>EL+qHPI7vfU<@P7!&tluerXPN#ss+2j)i zr6>w!-)K_g8wJVdCZKGL?^w~u=cu84QifdLV+7Ib)WvpG%z3}m^CQnvp|Zt$4DYai z%jWGgyy9;7x6(i`S0)JzZdCM&&X}c<;>zFPkX{$yx>xok6j1^^A z$PG4VTrt(yzsPUk%2ia}|Ly5(DpSRtf4`zwL7$?IJ~7yC2NOg2C$NmA2E$Ua2B9Ld z1|n&n+MntHnP2}cxR&l+82-8FKAq3SB1^%_X6Hci?&VqiE-z>g5fSnO9~Bk8-~>6+9cCs>vpjHp(69+*E1_Ewz8==j zi+J3quH0XD=MhNd_h62X^I8ZZVf7<@#(I+)3-o0tXuMAoa8O^IojQe#(o2K}pCC2M zz^UkyE$Cof86H{ya_h%Xja*JR477(FVX2UK;3a@2x#mP!O3DJtc|r0l?_%{4=I{cr z{J~h+%8Ujkrc-68t{`gjt-26=0T_PIk|^p#GvE23_973-r_4ZsqchvEdA%y}^PRE` zxw-g(%ZH%%?`}b_ruJ@sUmIawWW40r#G%iK(Ff(mSh_6)OhlCj>VBC-stmC~z(R}z z)`{j{nxW^i!l>BhNZCaOQwxPCbz}>vtTeXOBC>qdE`-CMubFu!iuoq@0r6w9Q4dtj zjy~chT$U_opv6>a=EZASU*kF~#jkg#h4bEWqKiu6B}x`#L*|T6sHy>OvFUbJggdIV z>^^p9Z|`Yz(KIXAUJ{V(zZvC>BF)5i5`onNrqEC>pwcKJT9)76(K{UV z>Pho60&q7E5mZ2i4g)x8mN^OsOJ0l$tVekwmn+uM#hv>9S(ORqKQ#MY&^dItxrn}}+c0K84Ny9L_S z8Q>uWiZ3D$+F+64*c{&$f777t)Mr@?)vY44BGNG0&Lfoj(soI5=54dN~@ zRM%dE`^@_7cFO@SRM(kmmjj%;SHKI$?K9v__}`h;+wFz}8L;hq)h=M1+Z>?ngr2UX>LTTs{riwBezUOUaGO1$6UXRtVFj>kI9UW!6zc5vL=ie=YNl_EC-A*YMhyOb zy84o<=Y%7`8O7mBz^Cpa96{t65uaMJ@w-#$lZCx{ZfiZ?O_EM7dPGU@2>#S?fK3ph z`(LzO@)c15FkxVf@o+@Kp|cnAdtjc^58eMJ|BKFb@dNZ1K1uHC+a=rB=P<$qt4EP} zfG^s!+J2}R9@3wT8YHK<)xR}dW>fcA&nip0b^80fAbDE`-7Av6F$63IW=0ObEaHo$+7^uH4}Y!`kZg#3_7WOI~I zl0wSES(r;MJnBQG=0TPFgG8)Hs>Zh&9cZ3~47T8u?nk#>%TNal0^gEk(Q)Vyf4k6- z$ZK)mPa7X^_zgFH?7eKf0I=E15iDq5LrC)~=R~lbiH|r0i4%14C5O$S)L98uT{eRx>sbS)!|^JhDJ8svdF<2CwYLsb9K#J`0{PBt*lZBs+#?urQbq z*yZW>vdFXOW42M$&B|sk1}&8T9RI5D#VhtAYfKuJ?#?wXOs6Wf6Qf3zLSgO7fFm~| zwcP^>{+*!9RHo4uoDr@unb{WA5gzee(Pp#%H(T+l`qew~XESu)nB(F-1xkH}X9l(v z%#meYOxu!rW(yC#)3%Mg6WBJ#<|78j*|_ZSha^qPHn{yFR%pbh!g*F)QXkLcxhNM# z&vkN#>CZY62`QHQoX>^h>in{)vDZRxiXaDLY@SXAtZJ%nC za61re3{bQySqQM5B^&~y%Vo8y4#QQc6I*JhkNlRlDnY%tI7RGjAhhAr6cS8AvPpc& z`Q`E1d*SP8@^ECv4Il7v&w&@{sZ0p~G(eoC@K<{g0f)Y3342kVZuJjoP9^R($*KjF}cm`N@* zZb;*ZFE?uaR;J=Xk2ONWYu0&4VB#*tmb)^0(;A5`nb|-yfH?)Zl8oNSXrU?E zQP-f);bcf?HY#OwL6nLZLwQ1KrgMfDYI+q|h<#AvTv5zBCYy8y1PJE{_C{>;ODWMf zrV%TKVET@KAFUcwR8mfiraPj1RcrFEr^)+-RKNSwvfIXj{LbH0(^x z{AJ3tI4tvlg&ZR(hyJD;+$AY@ZI!<2k$QR;8|-dtrohOiR1t07a=^mWDNRq)J`lp~ zw7U3&gBbrk4RiC^2T^-SN0V`1Y&P0sT_MIZhT{*_#Z|Gd@RraQ0Bp~{<#+Jq!&L+r z0KgsmpALxsp|taVi|hYOe*fd}C{~Ad*D}HM{b3p7l#rvp5Z3??V(Or^S!l{+s0->- zWm}$$-Wx`so~GfoVV)-;Ia5VIwJ#t-7r17?2;xLk2q{!54U0I~hgBG)rr<)LcLx^+ z-MKj=k;!PXz|ZCT>i)U++4=Ztec|`Z@qU+x!ODi?%jsfM$Z~<{?y5JBCEicp?@sF8s*3REGw^lAo!_ISlJ!v?#yKXrY1ugCA zY^N?S!vsum9}l$wryLL zwr$(C?Mke)ZB|-0_c{AU{NKaf`}-f}!<-Q-VvXn+z4g&YYsnHJ2Kw_`or4u}q|%lG zVM#ap<2!0>IAJ5mk=yW^4uJA#le*J*x(^c&fH;%AOAd0F@SLPNXWHyNJ)HN!q8LSd zG^zRIg2|UG9E3GYlc->w-^2Zh5fMvmp#BUcw58Q*yhNncX$*oFQb0)i?m%6mKPxh9 zMwybL=t$UHx>#x*Pc%oO3}dGx@<@d(Y|$hP8i`bTAei8ovD3oK4naK{rcYA+v`=~VBNTdN`lvTHvi?}e?PZfVSwH=DoZUN#0 z2S((EJT=YPfwtml88KB8X^Y!*1~c5|N(MsUfRo69QzZk85u_EaOqP@FsY+=QyCkK` zK?dijd#SQTngcDytTO@N=CyXY_ziPK5{aKn#8V%m;G}*B4G9P`-=MGrXZ0Bsxk%?y zaQ7E#M{v}WrGjaU2E{68u-OwD07RA;iA~T9G7Hcp0m;&ICN>k+G$zbGV<@L1tkigy zSFCN}A!x2b`QCGk^QRaxqWKr7VzNX-ZRzxj?G%Zaji`p%jZuvyllzOMX*NeX7P5|@ zB6Al(j+e{zL4uq)6|UW5_H6|wR(v8AFvg}Dc#uT{X}J>3ydwZJYW*wss4K&k1;RR~ zn*M$_ho9&Yf&Bp{c9LXCbP0V#k5)#b(AAQ|^O=|pv=QARE;OP}(B7+zJQo-_4}fG1 zdPEkaw7Yo?E2L;RVgh+ol|PX&ZnsR88N-+?CNak+pDDic{dEI623GEIi^H#M9n{9w z>BFH${O*Pb>q}Dy)Q-SB9*ApF@d?5W2F@@gb2oV~_?M@A>}x38lp=`Y3aQM6%?^i! zyViL|TMV9%snLO0NMoama;sLEEXLOs_l3c%C02-lxx?6~c-%<%Uh49)fWgFQ z)3iln9B~c}5BJWPyF)KtTQ8Wa1-t5CSMy`QwGGUXIr;+pY_0IXGiE+!Fw-E@ATtq@ zRxW-Sei43^zS@8a%o~-&eybbV*9!&3bRRTwsv7n!>K0&aR7}4Obsp*zL?t4AjraMTKt7C7E<*_1%y4%f z7HQ+hSLEI3Jra90wavU=*@LF??l}U%>G_KI;$ey-`<8OyE~w*qsm(KgxQLn_$e)d# zsTotv<+V)UWRebw!DD5eb{)LjQwXY&dd6Bjzi)&+zbOo=gn!R?C+0Pgs8`QL&X9gf zTVN5sqpHeMBRC?D>hE2v8|f_~km)Odp&ID|r5W)C6-c$-Mnv$z*4LwtW~xPSgm&7Y z1Wn$q09D!52d)s##LpKUn8-|39Z3W3$zV=D)yVdDfJ6_N)Gg$ z?1kjA*%so`-!5>Q>m9ka1}@nl2d)sRM5t34L@Rl!_GD@c&wgJ2hr;6psm ziMD#!R`_i?!g6pQ^8j(@W*6zHD}}GdJ?sVy;p;EK1v!M*&NUHE; z_Wf*-yE(g_ug24}#U`~lxf)lbY{0Ff({D>dLj-4|@{EK|T?!_A&Qwvk7&lf-jg0#k zXFGU!GNCgl33t^s-$)i5Y8Jdh}*8~Eg z)Y2GTKJ==baBMh2po|1BCLju_ET%bo%82X2M1HT&i=;JOpDT_xWho;WhM|vi-P}Fh}<6^ z22VrUFB*D13xNQOjL&6AXw`^tN_-2!(jPV?=KKfbS!^V!l=%J0&KXz38@4LjOqWXF zH80AA_%4a^IN@^4}#acSjlV=kuI-)6)XPm^h7C9z5k903Khxg=% zO&RXq>FyhxL7lj%L^W5d?$iygv7)h@4;5{D5JwH`Opiy_sIsvAf}vd?8AJFjB{;2X zuv!2Q_$0(PYmh!hPhVObJfeh)3E>eyT}96f?Jl{0oy`zC zPwUQOqAU0H@+fyTTPsabm%LAHIl1H34G#|>!y~}UERTHed zoO%_M^S5K2mXnDnzn5~HXGTV`S{6940EAhbL&Sxh+kY&#A#HNVmRQ1RG;Fjxp@H3+ z06Di)pmuoM+-wxVHb1WyoQ8_p8I~;OMwRoG*lN}!ShOLv8!1XwAWzK(LKmt z-IQlGtlMF<3Gvkeouk&*Hq?LA3jt{D7``xaR@C2^>`NO8Dt~0Q7b(=Wu9{L+-vE~B zEnRlND~>BLl$)BmICnO6s+yOse{dgF94^dEwyT=Rp+#yAr%8>CpkykmGA6G-NW2_z zHBeecW<0IRcy7KuCnZavtIrlpuUx8lZgTZ)TD0MO67drDZJZg64S80lx130E4Kcnm z%^br$w_Q`UU668(@fID-v_9tSmHfG5gX=k@{sYv52zT?NGgR{$G3~^7J!WgqzO!HR zbEfeH%JZX~=}p?Yx1t=arp%|adU~X10sNz?d5`zh@Tuk{)1M{T$Ho3QI4s<+aV`wzS; zC+1dM!hK-Bk!^Fks+E9KP_(wvOBM6R<@e%V;I@t0&`L1on5O5<9FS5~pGswFwHgik zW{ZI~icsltoB#{_=HDcF(G4cv*iB7)El%Ep3oRb9zly zA&Bpsjb{eTE5}&(&(G^h4}KYa`pPrkTG^QyKDQ4kP>;RdW?C1pEoew)m#fI>_IaKr zw8~H$K6`w$+_q?nulMm^ zq?Dv&?TDy~?30{ARjC24J(lc4y-2#QNiY_C_>PtHTnQ)RT|Cej)i&{5I>8A*YuNv zv;485@dMzI8|28Va8d$IG#BcQ<|a$b5b3jQ%N1sjqnPx|rskFdRvKuIN)Kg^;nQO6 zI~Or;StevD4jXDp%>HHihK~Fdx{Y&hU1}cY$zW6VX8(nsht4c3L;jOOyDG-zZ@pQD zxrVmT#1-c5ursvz=iNu0mnKhPToT9g*h6^f;RzHnW$3E*8bj(RM@pHh_WVP_ zC@D&vHM_tdNI?Z%-BsJWzv?(KoTO2Ljbg8;LnojIaIA@L5(cj883qSM_1mX@-bxv~ z@Iiju=iZ;=Tk@`H?W$=V3~^r~Y~KFh{h(nK5ID)3g^LcuV^2Vzw4j^aL@{}4%G-J6 z_8Kve1U+b>LwE5~ZtaPVoEha{iacTSn{m=gHUQ$s(GPSwP6g11WjJ_Bj(E0K?HNv< zglYgR7>`k zhC6tF+#Ae$+*zMB(M?E_vwNYoO<43rad*5&S!2=mWjc7ZFV|Z!scUL6ZigFE*+^ua zrx)rX(vrON9Jae^gK*A4vfeOn3vM$K&slwipNKcg=Y#*Q&Nqr@d3-j}4J#05T=*8& z!M=-ZLERS9WONMz>FbEri+Uh#;Ad>03LgX#z}XcstUM_vY7crRG$B@l&Mfs_8DM0L zcK~n#v!}uB?DaFI2k@82S2x~hyW_>IKGDBpS6Ek~FLy#juj!EAGy6`%y>v4X%Sp|bj=XVkAwE-0 zz2jcCoXm14%B6Nm+4bknCPMi*m!)Ar0$!;~W?_R>S#nBTj7aW?jOiS_2S;O!hI>Jw z5BydewhH zu3nVkJ?yZbebNnkx&G>4#B^Y=s1&Kg`B4-)YpH!$7MsmJd1X6&(#CP!{R5WE1tGdxwIb9<|xHv^P>lDV}^R}pww5UGn(!h_&VDvF5&474|UKhxAc?O3H zEnUWSMAtu_3RB7;bP(Ec2@Ok<0+iD!wPQ)JrF$$cEvoA!kun}=dQLU z^UH)1%JS>7pYSw1jCJ$H7$<6`quXN9)ZV5`B+t$1Z)-fKZQC&?Ug3lZr_SENh zp$_hiFS(eKBebxyvKYf9gAF0K;D%8z>J#=b6xk4bRWVm&8~o_-iQkNZ1{o9{pVLv} z+6NxZIp@+FMSJZ6Do2c3VxvnocRVP%qQVxgS%z7S=cvYH)c+*zGYZ{grg!z?g#TF@ zx5Ezj)%XLNg!+3RxDXaiEUKZ2Sjdlcr&DSZm-Z2(Kg7n}@!Fo2>i5<9nZ4|%P7&uS zb0xgv8aUNKB{RGc0>+L&>x>*u^zOu^t3ltTe zvc>^Hcez%pV!&3{Jkvlfh%(J#CgV}|Yt~h!r;P9O{`}1M%%L@)*}Tcdct?r31aw!e z5|^-GWr~%g^j|bETX@(wIL5I}wS1~$j+V)LFVFsbgDxlPjh2imMP^mYKxM=eIe*5D zE7Emql-!qY(DP?C8<)bC#n0MXPHE0LT;AR!id;m09xj}h^F=7BOckuuSyidG)gRCt zR!`Bc5gQaHS~eXfI;K=8pUL#y5Z^|-a&&Gq?^TKpjZ2tQt_6bJjc6GUYYE%;R?r+) zhAV5-e~m`y)>X7oN*pX1t0M3DhLO8dqLfGx>XLat1#))TPUa$a^Lc!ZVr7e3q`dGz>vdeV@6xB73Zl6<^=DZo9UN4HZ+y* z(dZx_Q=DHgZr}uMWEGzo>FYK}j-TTx+aeiG0S|)SOBM^J3EW-(-r#OrqAc-sbyK^l zzV4+|{W`hpY(qN9174s;m<0Y&?yCAn1QxMN+skB{4{jR$SY(=yH_#8A02EpX2D^_P z7;_ryxc3ee(QTFw8%-l_NSJ)s8G1K9T2aA>u54gX2+_QgYKT%ib68SAD|uHL77&Q} zXp}V&Y6V$BtA#q9L4VQi;+${w+>QPC;J>#z1W0o4@R(1hU2~Z0j91QXD35-_W83R< z89Z&MnenIq#B(2vGE$c!0~2wL%4!7is#H>;N>>Sv=9AalZ7B9w<9K& zJe!_(_|Nd-UY3^Vb7HUI;Tr_`TO`k$Khjgu)ldShk$2Dtun2^Yk`Nr?+S^>7K zCXi%iQRn>eh!Ettl_?j^2MwFY9oSW}Gy_@%leQRR0+4 zw)yGek0L;n3+0m_4D}*J2^tiQ5I0zAHo!i+$wz|{j|DZBhTm55f!5~vDNG~mpiQ(S z?Z8ds8oCdguudO;#!c5|dacEGsZh%oRykH>rGYaW(~54UmLImrKG6>OI}Pb>qi>@Z*xME0f6AxjDx_ z4ro*TuM(7kt?l0>W0In_>|gTRimNo*sLyldp#nvE9ZAhxmTrCNW|+8%OnK?YwKjUA zbJi}B^LPgVB>7=*Uyw2JX40x^Hr7de-g9Q1`*AXDrGwYk`}4aVS_cqgl7;BcPo?_> zJy|}dw%F{WM=+pfP#H z^#O{)*7V4uFwXKn87(x()M}|G)$OPz73;I+4w3vMAgfsV40nmW~!j&j?P-h%g%WC{%A_#ELFAr1jQ^bh( zjO>Y-hhyNkQyjD&+`OxBM%ZWg8fF#QzIOIL=b|CEYAK90Pu0noeVS!C~9x6B=l1+x6&ARB7j*S8E&GHQ)o# zQ=|tF4ADS3`(QeU3{_a-S*owTfu2|g@_P_&!g%7+omoFbBK*{K>@j$)X}2!FiXHGQ z(2!C?0&oE?70N6k?*yJ&YB^Z8^cFb}*J;Uo(?buXXBquv1jK%znTB2J&UQZE^c)WO zrl&+^Kx;Zx_8RLPVBDiDxl;-slH5rj;voC{$K&j=m=4jurZraoaa!Yl=W+jEkg_JT zPKS&gVl@YIB0&Bds%uuE9WAVMrpk@~XOqSa(5fp^JYut#3Z;GA%Wt@2QDq#? zlV*iDHT8!yM=so$==Zy&N4#&Fds)3&Ev$&wJf}*kYd;vGm31JV43%-pq4Mu5(M1_j zZoJXPZ6B^`ompd}p=8CH81$wK_5n4EA zi+-hoHY2MykTOUZaYVzG3zY1^0d4G91&iTK@>x^Gb**1)xNJ#0 zewLrS>zNP+cQHe~#-wbL31Ptru)*UCR5sWB8u`xQhNy=iyV8pD%5rz#M{OwgGqsz_ z6VpdRQTd#xo(g3?C{G6P@w^g80ec{yFXh;vMnb4=mcTl+{gac{ps7T9ck$|!wYgRX z4abL%U$;?|Y2-vNC<#r-a}d_>cTZo#$2O$p*7=8JHO_?e4#D0Ewry(FqE$3;FG0ch z72hS{CC1c+$UN4cnwz&89lZ)-jna?V+hPse!<$%%no#ZG*G!sZtdh7c5VL#Qx(8>9 z)0JH`O7z7*k>7p6+Pd`+dP8+pZju8Lkr`&6pnqW#B_e;S-Y;yD`H$G-U&K@X#wP#c zqDWMt?O)WZ!#SMo8&$~szsW!F2&^b8!)2tINP;7U8uSQ^t~xvz+Y_73IqPc zLKL^f6d{P7e;!}vX`r5Y5M3!NjjQJPMfACE=&R z?|7sXf3lo0kZ1<5qf&K1GL5^RQXrPu z;0{;iv3F48yG=@Ocbwx$CJjY)MAT3iT@DHi%@#U^9R<7DMa9f?azKo^dHQ-F864Gn zVbL7T&g=cCD6>ARk`XI?(dTLwm+D)`cgckUj66@>p%2`g(Z)BlkJ`G}GBP0q9L*uP z{3@@0hMvHj4hLMiR7YL;##y;|APJ)gVAbpM^)1(2T1>SvH)FaOQlK)v2_`BW`G5yj zrk=Unz>+_eqrxV0rVw-tz{xki61%yVf2MG~Wj6|GFwV@{@mOEaFtS}SF zE)-4CDq0I0#XJWR=OL~>Ki@!Z$)%Gtx1PmxoQ+{PAdeDEu z$p131_+LN#yMq$9CNc2Wz+#j6Qt`bP51vMoGF@p3ifv&&B1P%G4;ESnv591Sc+El5 zb`adQU|2#S01KbQsAsI_^AegdNB0WvTeO_vDBu)Ua7XExg2NEK>-g2Cuu(SMPJ1N+ zoup$|T`l_>uPVbuwVlZNWP28od&i{^fTAx8y6EhGDCtGQ{uwd?kmWv*|J|th!q2e4 zzzrz&rqv}o@M*qpdFZlo>*8-^*0$2`3||Tg`%~P-=oKlMd#zR?BY)wr~TT#}QF| z3lA}X>3=}u>%TdsO z-h0oB?FXX&jN;a{X(fy$Tsvlr^3Q?;xeygVl=L~EcS-+`) zxy59RCOM4<=nk^#3rnqy#(awV-T3HcgqV`Ac+*QW=%ksXq|(d~v3t&`JOhbQr#@qN zyqImbddOEDR_i3cE^)MbLoq8+Pa5>~L!(kFUE4ugQ!&$rh^|tx&h|lGsaLAr#}kUD zwi&Jf-XRvh`r_jeLg^AJhSP9{&o*8jWB@<5$kyBoQoqm_fuI*IahAt~I>`MqIXsKD zT(zT193Pf9hCf!=%C}qFlZw%sc1E>1F2`VtnMt;4@8hDtnpURFsnhZWvXytHR*p7x zzwTJ!_T!3)qp6xf$}&XxrrL&20lMw&GIPQ*hA6)vV9c9HhGs~I=G&i0aeYS;Xg}q& zHVaxa274RUZS)e}8Duv_B9@jsT51PAzI!%ew*2KDi2HGa17EQr_K&gguVvZa?jdgU zw{yt^Z5Msdzb{@vk-`xhoo=;N1t!hap~yI?W>WxHx|uKU zM#Fxx-5jV6F6J_9afq5mN*6EZvo2`7)|B#$6e>60i7~qVh`^Qm8O1yeC~;cW62`_* z-%SuSCpjHPuhpO}<#``BmX0T>i)198G*VEDxjs}LNEld6lgm~LoT695Lg}Ao>%7bU z8hqGLO`a!795y#^U7EuedXGLpKrM01g~2sKOn4G(}PoLs0D(oJo)TRr^M zA-Y`k?#gX5jwI|q`dg>5MoGzJ=<%G5hSqOYeSimBdh2(T6x@DSR79fprY z8i^~nfSO6L;x9H~zio7NBv%&HT4iXhTSI;bl2eg`Acdh%aRC#mG z^obfMRtskuSDSvAx_6#>_DwwL1m*d55z0XpzpVF&h$Pi>B6^Fz#FL648SgiOC@6Tt zkGm&D{(%L#1!&8kDn25YH<~oKzy83FqXYNLk@z26XN~~zLUAqriYES1e4@4^X0Jza z1M*jt*1bQn`FvUU;2$mguO;%|QL1EXX>9X%pvHZfmJd1j)7+21UrVWzG7R%OEud(& z6+b(DrjUIpzYwKL zmUMC@O2lMijNVZkX%orRiWyOuR+v@DW}<(L>Tz`HAzJ*n5~|JTiHghOEkulKgf$^> zU?l(`dg2P&e&(KnQ~%gACHxbckI0_=xn=K8^kknY1X~2J33DHzmampy8OpUNrkWcn z@B;OhiPb@|xP!k;jQEd<_+OL&gr)v#;=kio)%{Be0OdpHaB4DR=lcNPvcNd%&om;? z(m4r%^5D|Ef%I>%#mQs)anMpGyOTt}Qp1}hsx+)EH3J|KQkF4MP!NfMXq3yEpe`*p zE({)ZKdmx+j=ESALT3kceeO0~uh<{g8@4h`KVA3He+fUO0HdS-rc)K<6ATMhfQewD zTC{5qF2bA!*mVb^V0KsQCj|pA7tO>d?2u8F)6@)iL6KO=<)A8z2m;tE5Lhr;OO=HT zX5E;yzf{ZgeaVPA$^(X@RUiS=))As}vqG6?i4}7FgHQpQ0~b5>YHXWIDj6~&d(sD7 zlF!)Baq zk*Utr^JeDKSNl492K5+aVyytSl4K7}qZ()t3S)}Hb;K_pyJbOWBq7vBvSo4^%^YdV z7${R7hV_Z6>nSe=1$kh4jt+rv$$iEsR%fWOpLQ) zZ5^5_E7~kHvjFjypEnzvpQV;3Y$M6smv1YfSt_1#Hm2NQJ?5Gv!WPHk>SJwfZ`ZFt z5cf40yRG*hE1}7nZ#IswQf;11N1t*XigZ(KS2sbB3^V24j+=>m z+=I}MX&Evwl8WWvjI*MEY6&Ks5?NWaD+h=ri*M)C`zV2_5@V8A+6iU*pXz0uy!DP& z2BbCX8JYMc`acsoR!fGO7w9!2XT7#XLfcBbaoZwmfkcSh#!i_A?cFgqs#~Iu1QqCO zttE?LMWuC;V@{!RqGVPv7{_NAI)4#~-C5Fc@i^LK{cLB1tyWp1*Qn69YJgTy&!aLw z8tNA#7w_<4A&HNw54vL!pUYez@Ecms9AB(vZK7V)kc=W8H#DlxE<#3fMqWuE=}2cG zEH2I{AfU~vod(Q>MQ&JdteCXgH)9>O${!3nur9XOO-E_4p02B14TG|>wA=e(;j^-Q z@eyF%L%t0#x0dB-G=|3%=5LcBC3oKOuNm-b18E`*0J1?#OZLv|55aENk_jIW}!kK<{WsnU$OJS zZer$`9+bi<(NB(c@C#}c2=QCtxV0~eX7D38pG64N6%F_jhEJiFA8`kAPc1a8=*1WX z)CuXO^|FH8(y5CQ7au>R_X0@)5Qdm=)~>a2(4dfaEp}eBqan2l3cf9!rUsljX$4+E z?Rel&+6P2WJ^4xb9`l3QAV1ah%Kq@7uuI@8>DBSe=n~tp@yl_K8@ASI%#++c0(x|x zrI~lZZ~P*G{UV?8d+k~d;<4=tC3||U_a&_Nvtp?e&ewl;s z7$%rV@B^uSKTI*}TLSC$!&@=M+4D)-Yxi*qblW`Z+vVw84{KoSY_2avlf4Y+d4i9= z-UN?)NV)djpjmI6R3Y2Ix++3$?!$xCj=<1Xb-RiVFBKuM+!pY}Ge zSLIzjDK+&Ez~z*f*Et<*{x;GAyXUqIAI%#*!9lOt?QxS`Qvg+MQ%Tl*)b(^QeCc-- z?s@ZvXW!w*jMpWQje9o4)ST#`v)(nARIt{i%XYRM%;xRfTMOfl6!9>UD_ww#0RfaH z$C(A}M0sG^y|Pz?dVNNA8<6D<&dVjmi#c4yE~ZwLr9ERc9^wHF=QyTKKbJ#<>9U>G zOlBWhhgjEiy{9WF$&Y%9o>_>J0#S%nC`$8HsHEf`BEn6Lav8-TLCFp|3+frxl&ty8 z;?gqWK64pQ!m#W-Psk1inPm(Llb5$}8aYp(XKy#aY=ZLuhZKPV;=>$B3mvnWeoN1@7^idsYGOqK~kM;0Z1uKv95O8z+aB0l=+jG$yLbsoVD6yvJNCPRIXH>@G-a* znQ^|~piK8|U51lOwMLcE7)NEP?GHH~`^z5oIc)nxr-lW$#?kY?Vp^##uxO9nqQ-681V^dE%s<`Sui4OO|C`o)e zEh0c47kw~@sp-zgN;!Ikd>BZ$%2*3(j`wQNgP&kTyECez*lLN;1lBtB*SrWGS8*Ba zt70a0@0XcY8(XOm>(Sv;a!n!6U zIUZ>R^X=n*gXww#!|mh6Xz`_&`J8^J8k1Uj<`QoQKyZ?KAH=Oaq-c!r##G&zN)yvHM#a$zeCo9wAantCEmGH581X9HJo4}10Syqi3w z&@W!(wzy;zN<(4v;ZQt7QRLylY2jdZ$h66|oT_Aoby^rP%;7n*?_p+gB!(FbQ%qK< zNjYJ{&8}XpzyIW;uf;Pb!{M$it6r>EeI_b1b<9obGTNFN@jNoR-nP?GCTJ=e6`Pu* z#rTc9+P7Ihb(E~KV5KvF?IpI2Dnrs~r-i7Gd#yHqgGv&}EJH3(AkXtIVv{8wkT6EL z(8`>OIH^34(pfOIY|5?@sa%jtnS$cMv8KctrN$*|JWroEJv+ME(Ru4&FgPbU}CPpPQg%Qu|uT)Jjx~q+6%#)56+^5_806QPYkrMwR zFH{yZk{%!5Em%%&^1}qL(hIFz+rFjbE=I|JAW^i%WF+&~O==nx_50F?mwe`gE@s@TvBQ zI6)E1_pk#PZA>`?ArXxEFz6imTrF9n_Oe{B3*rQ{%_9mhTWvatx3P4KJ?N}l5v{Tz z`q&{ilG#Es5<96oH}`$q<`ZQCVm?8$^)1K31hx2 zkBKy=^;+_obetxin5Eh7#HGBpsNDwv$MV0_{~mCb<%=Y z6Po3^sYX|ci++7iug&)da57{pkU+GXk6A=Fqm@$iDC`frs?&9{nN8xy93Kl|ZMBXi z*;Rn=Xu-*hh8Z4~b1Ia7=Ahx>qWB#^777v{$2ela`C7VnvjH5UM+uXdu~bNq5+LOY z!s6-!z_-i{Ocu+Dne9d;)FKGf;SkeH?51lkk<;5yE}MqjybnBj0L;t+&pHVlm?FRA z`e)Ikhk6Mt(EI7%B@GfDSv)u`cNkXccw};Mmm|dX@@z@fL`)2PGNs#ji5<0KOUI3V z98xbs(iB}GbF_bX+qYS59^fxzj`WX5oBuXk_dmVuzX-1Azf@-*wk8Z$QyE|o_}_zt zfd#V8S69_U3+s`@1c=e0$zB-T#YtpL`l;X-C_;+>i|qi7p&|_?kSeVBZ}RdLY8M6- z8|#|ZmKO$^O-&u#N8PLm;tY)V4-+YlGhL7CcR8NPo>yNW&huFQ8)>)#N;sr)kfyL- zxB!YJNTA4P(Vr_MyQlF}B5PE;m($jss)4J zz@V#lALd?r*rb5OD3H@arNt%9@2QMXBx840uQfoVf^|VOABR~a2H}{=vOQ8Q2BQi> zsNK^a-#}%~zjw}z2~pc%I7%-Rl`XQFrJu>eW6}=GwE)Kmdp7mgqJ_(kfe6Apu~Z=q zq@CtiaZd0+0(uK=KQXddX~rPGQuDzn{Da1k#V^vTO6O*CrtHKEIQ9!esdJ(l(B=L!K%o6CSk+Yxp^;o%Tm>V z(k;DV1CbE!6=YVRqnaqp@0;a-lw<_Y!*maZ*7;C?C{S<|3Uo_aSB1H+qS3d2ILuY+ z4h-hC#Z(b2LMa)Ug(?}wdNy_oVb9iDsQ{)Oalr!Toz|7U_z~DBbx(EFFc+*7A2RGT zvw>i$^}-Ev!Q^)!MN!!wf^(yW`%=r1OHAl_F8<7Gqs-=`9uj=*ldDPuxX=KqNRg(mFp-3=L8g9A=48NZPVGc7_~O z2V4jS8JLW^)|KYQlsQT(n;jRLB=sg`6M#yZvZ!@}0boPL1^(fD7SO7|Vy;;;Eng=& z=|YGQE;*q%q>ydsr@Y~EUw1twO3S7Cpy=%KrbejqHg-@R%PW7l#q%}@HuU6l}sf5JnVVRDaorEfC8pDOKzP{`Mz$L_FEc;gW zlbEtAj)O~y*@hytigs3FHnXvslm1UzU87F2W`${slS&F>0n7Zx5UxEnn(!wNX9*l|(ve z@rXw=coM@W^Y_!A7b`GGY21_@5*+ysBIUHRZX9`CBA;=#!H^`vDrzjpD(zSzP3CFS z-gB*6Eo;LuyZ(g98^bX*6w!D|h9RSm)=8b-nV-58P#5QWrT`^f^~ujh7`P_YEiYQBI8KA+Qqs^=OvV$>!OWdOZ`!SPD|=4K?nxEtkoeTA z3EiIMTdmFo)1|dz&20-xfzqy34McD{XGV57Rr2LTYj`P+jMRyWvOe4{Z*Zv4v*T?U?0~tg1WaDc z%SVN{HRsU7UJvF*uehm+lEZe?!NkzJXO1CZde{YyF-rNA;)ml|hVHP#*mvgYGiJ}# zf^6yEb_VNQKI}5XXr`@&m58_4T`Cg0Kpolkg4O{ScHfhRq4LpHTafMDjzR2 z@mtnYB21&+o_6EceO26JVP3CiVhujVbv|zLR%VbBEVuOAy-qTeySHo&Mv`qJ)(GGT zNcch!_bl;7xJ~mDVAn?uBR-wVJfV^rphBBIo!Vblm*B27=(CQI_rLi3kg&EzIL*&; z-;R+P_cIs#e^vt%jhOj=sOYm+nN|ihW*4m=?7j|Nd9kVEwEE~B8F6QB)U z$p}{%x2p~2ZtR^TZE~Dm3ZoMjAEXd|s_#ng2;4Cd{ z6dC0V$G*TIZj9E9LFDg2WlzWo5E>ceiK&FFccD=$!l_z|L&D160TTJ`+GY#q^8GrEZwdNg=|9&w_4eB2t8&B!Bks zqP)p&Im-%=O2%E_(ORGlEGNEwXaHh*(AYzN2bSRBAs=XV4tFMy-i0bXK*`O=^uU1c zxO!wM4SZgVgy(kA%BO16p@aN#XVm3FwCv|pa(0o*Ns^V2EI4m}jMCtPCPk-6HYI~DibHwo7 zDNJtObWlX+E=mNPxL`iry~>?0v3*RoQwJC5RM>S|Dw|fVo&8A&9S;U&)!|flu5k+4-ZS5qKi@OHJ5WN!EP! zTZ>sBjf$d0WuMV(pt=F|VW^2j*nKG?mR<@00=5Lul397Fw(>THF;|7Sn_7_?@TXNh7PWt>;)jB1T@9 zN*BTwsUlU5)A{g7sN*bz6DMYAG|HSeWi+u&5zumwtb9`YiGyx1bEAr61W^o+h3KvG zobZ9)KtOBg_*G7nlC*mh_5%MOIcX713efA3?{Awm;610xFE=5mJsv+GYBY{Z=H8%& zLR%4A?zk@HxLox0!gt!y$@_TlGCdLVCiP1v%C9#c95oGMc59D2)B2EOv0KXQxP8$+Z?E)1mnmSsNj&U` z$a3co=*5(@qyauKMXyb%WYq&i_S`{#OeT?9wtv)N`Ph>tM|6+{dYhqok_A5IO0Gvp z?|vT~@?NHT*g>qrQwY%uzF3Ui0 zcbDMM(73xb?(Xgm!7T)LcXxMpZ`_^W79_Y6AX&bdZ)Yk@>#vo?`Mtj1_Pg9Jo-}Kk&2yaB4eLtL`q5VmE$Ox=z02UJq*sZZy z=dyz!9j@{I#n){?+U{&- zx;!c$wF>uN1(r!?9x4sGi%aUy+`U3>hf`#_Ukr+&d?QS*StG&p>0|~Wiro^u-*Dyk zKcDt-P__j>PWc=pwQ75RPGlR?6m>a|;U90{B66Le*0j181P*DAiLp5Wd|kad7E}zV z`n=9@Z|y3gYA?xGA>J%W{U?u$;zv3UmvmU)@jAZK4I=vg<~{LhjH!i5>7{dz)IJJVle&^FyE_(8^zzV zhr3<<{uWm+9b!npFvcr2+A1siqf>mA)NqDKu1GgbuFcbmPtQ)M%uCVIi`OZ>f-cpg zPgF&eVZFP#@T zJvG&^f@Eqow{R`e&evW{%f_@tAPsf-rQU>(AyPm1awQFsuUSw1p9C(-Z{;y7EoUw*bRk%Sy8n z+R3ag5JG-y7HHtp9=?h4TQsrf9^_+DvC)6#R zsd;Q$so{Y(whZ-Sb7iDK zsFo0Yvrw4Hq(6b-8F=n)?XfKYKUF8EUR1dfH(6L|kE2QW_J7s0ol#Wbjn<_W8LVaI z{A@4ngXgF>86~oX!=sr;1MV7nE?K70Fox0f+Fa2WS+W`cm`&pwFEFm)*yYrmZ79z= zJ)rBvopZSr9j2JTcr^ra*`IW*K`qB;#Hr)RlH>C!K4@QOuP;zq3QU$PkF`1pY(z_2 zxdv}A-F9~9ef>qpZZ^XJYqP1HqoOfNt)O1(9h+Z+&(+O8S&?&GvS{PG;W*8p#9|Qd z92E^@bx3JYAK}Dr8*kSiamQ!D=Q|OO$u5Ow4Yl~m7Ik~t-V$3~au(kHO@26KB8j(5 z^Ov5s|F8q9d78ZFn;dOlVRO0USMm-OR!%C1*xR0DxoV*7R7~B3Ifq~kMY2XJ#^oIT zb^$+qRAW+s-`kM1tYQdipVZO!uEFsX{9^_Cy_{5p(9;_F3$RR>=85`z zv>Sl6T@oy@R8byQZ9+5T5K1XVLk{?XranJY4<7`$?2nJ+9%2mD2;D-`=PoQn9|CYP zv+w$+4*Tz&oA?ci0kvXDthglXB^CWVbqrci*zYJij`f!%-SnR5O#0K( zO7hM5)~7MW<+<{Ek-kti`DGA4@iT~l0c0E5j`nQ7>eLxtmf9-?;#b`l>cFZ2k{)d~ z?gtg4c#^UT3PX`9|1t$EDAFS5nIH-lO}u8S+(4%crH$>=6Ai6$M>smc>m{@jL}Wl&hv=qOucx1X=fjm-;=LjH$kX^b-YeRgc3x%nI@TL|^6ei* zHQ}?YvZIfJn(&8&=zk8VBL8hbRWr8y=cA(*myY%Nnv)WZd+wB zIH)Vm`BoX_{%{?%I-mgMsM&{`Ku*S&dkdx?Q9VBdm&I`9oFb9KN{5v#4i4?(JlW@V3#cXj?H+X`w?_}*9_anU>uMBv(^^%Hqi+Wa)Fw7GJ{HX5xl5t$uVjUcO*A- zlqpibk_~KsMUp8s(Naabbe1WNNzu>Xk^5^IqU;ofRM|XD^i<$-nhmVAO-jx_ziV=6 z8OzyDJW|NHuCyR%sY+qcPY&MW70Z?8V`CSPg%}F8)Tj9n6T)?e)^q0&aNBHs!Ail& z`TCIF$>>sRF>(1*L~@LdCoc6F*}0+^bx!76?%7s&-5y~QCaXa`c zD1qQOmg;;dpv;@*>tLcTb2D)Gd3d8jbr6m7$$h#SYNgd9foHu#{64@`KmQM2D-eQ! z{ccI~l{LIIxA7p8>Pp-l7?u*q{iBJf_J??sxI*fE@(_*c-7&ySU6Rr2MXdOTiRfA^ zx2=yPiCeI)t@x0_eDjue*EU&FvhEVCwNhoP!^CA~N`eWdYb$0WN#uQVwk)(Rww-Fd z{s0OzANIL2n&w>Xmx6pT5fzcLk6S?(`cvns@+zCl{BScze>?*7dMz>_DjEjt!GQhu zz5=6@L-!TSijE*}b#uMJ`HYgnvGL*NQAc0$;63UY*ZZhtO-K5muY@W}lh!JVX*DRV zz*c*$TfIW)##0VG%e5TDbDH;QUCS3j2O`t0+9`_K&zWLb@zWLuvig1(rI@SF1L5Jxe8<5UVl7J*zDd0v0p=q!>0(GX>tWm1 z;El|;9S@i{dJa~z)QfEH3hA=_zSA{@_xpL&IQ4tU;?MH(i5|C0^F_M^c!FfV*lT1J zO$!eoHiyMFr721KU%-g(iDp5177)SO@&28(&yl{sW(hLxV735Dfe-gRO3Q2GeNFD-olewcuAOe$dB<7oh7PZXl#&RSC36Cb>z@d{V^iPZYuMP*Ah)pOatuVl7YJa3 zk=kiAAnxV{fV8Etrug?A6H#z*i9&9s;PH9g^t+4&ersLg7UCC9LdhVQ(ol!CksQEmlUCGo~vClmr>kH*0lu$Hh+QTN2|cpmHMzOxG?hO20$ znl_luIOOh36sNjd?Ex)XG5LqZ6MO9M!NgxiirxAxJqf0{e-YoZA4QsQME`R$)9iJJY#*ddyKtK)GFO&FHAaETFOPo#jb zyc|3A0+hYobx<)pY1`^i`%mvxy*lbYG(zEll!?!u-;_tzi>%?v?3eXe+4%Too7lS8 zo_;;W<$Y?sjwaJ)uWG1fGc)MyCG0UVI#eOvyShg~1&!r%lmCFv%)@hS+(zPBXs+hO z$6$;&#rZo1jC+lJ=$*%KACA8bDm5B|Eik=7X^RV9-rtIa1M*pU=*1zKV3Nf_n)nDx zYx#2>D(F7X>+UIwgAcYChkktvLGeX8ir{8c@8gH8$Hg_k!%RpETu=l_I%s|`71nf; z9Y}^08)y#PKuY=XZS^tG_$zCwh#QnPK6FBa>XiHZo6o*z18=I%V-ZiLujlvSms;*r z7g5HhS}~A}B!Mh%qSVQlk+u#GwnsfVxH6Q1#3o%*WJv$;6q^1fXa}!V_3?*p;p5gh!4`lSqyHLq{wwC^%203B1dQUm0{+QOJfd*Dl`T#f{ z8CF@g-2Aw+a3CPk6@&fKQ}`CWCbKz8GcsSwPpa?B^s1;|74CDojdXWSr73N+(esXkniCO`GES5 zSYn~!3X=GPpdFHb@+_TL(yq-}!*%>)FBLU$+; z;bbbNnAH9z3y)niv6ED$Fu}^ggn{G=!UaGfe-Gg(RJfp-E*VEBlcX6rnVSe$l3b-% zf~AvB1&weYc>nxcvJUmPg@(>}qb;Q2#jN8_x0mD3=__J3|Fd^k5=ds;F!QNYWhM&p zA`ywAXbb#1vup;_hG;6*)Cn!RBH0mM{IW@Iu@Q-nWWpI=8viq^3acHyHU9C$*x1;_ z8l!1h^qtvxqVxA?L~}jL0~7qTv39i)b5_PQ=aAqRg7R%h6)nvJS*T&yi?b}R{{^jA3ee%UmQckAVCQJ=tw zaLK}**!zBIk-}?RlhM9ZA&5sQI^wioSe^15X`U(GE2Po^WXUZQVgNB&O;{G4OK0=g z!ZbMdo#89duV#52x*E1l>Qzd`2=PwY3q<783r^W7>*9f*)#xO0Mgr&x0IAKyY^Y?@RB+*DE;Mb4n4onT%NJ?RtNg5<2T*@2pPm-_v+rE^;DE7Z%lOR})11YfJY_82JaJiS$w|OQ$=VWfXAt4afu>+ z-0v+@i_#f`M>%o~xTWvIS7>EYf3P6&UT}kyNX3da5JNO0l5;o}>vihLw*)66a4Ln) zj`C(?zpb1Q@F!`gke?dNILoK7Z*8*ln2{cbq*c<{mu;vx571l7kUllrEwu2`YKX8j zCkh@E!gOQ#+1a{jX~S#?Kf($ z_7zLaR-a?tNc?{CY9lln{8)@4^tyouvE}_l(kZl!Oh;+DClJLJX6roPuTF>ila58Y)1cE|kjLm}O0U@-!!`(pvjwf84Qq>J6A!0;5yT%} z`7#4Pm``*r(@*nt6a+fJ&?pCQNi zB6LU$H8gg?2Q(%r^YYoWP|!y$`5{5&4_d{%uH@PAC2g+wkOxzaLD64QCmhs53zt`l zAOSJQSEcrsePmN61B91q<$40*o{@Pa;?H%pEH?y~qhYyrY)?kV>GTLa35>18WGkkj z@&jcoh665}vWxLeSlh-`ZW#pClK}p2f+2PdCJ=t~#!+XWhU$LvfxL6FsKm_*# z4QRjTLdd8je}z_O*0FK&&5`jmtmXsv-fdz8g(1!Ma|LL`>lPWku)43e$O^sV<89m> z^uhEELcvx1F7ZjEPPb?@aluX;y_4hq3MfvjSc5Ik&Tu~0_6q)E<3nV6v+A{@J=sKu zhmvHQ0aszy_`YFDT|6CONmtG;q%==oZ$HtXs!ZBpqsGMV*q)liBRXcn7xktBqDWXI zUyacf#l2CnYB~R`X}(~#v+>QDTCDiQ@NF88MpJHyGSzqg`Qoo)=>I8hMJT+Ai+K1B z_8O{T74voSvuEO3Rk$C3HTZb#o{WD{cnU37Fkti-A z4%(Ic3>eBi5jvo$TuoUgUNm0k<09pN|X@-hZfqu4clOeNqi7N_Qvjl z)@KEOEy6*35)$(OAyWnyLrOYW*M343SYJ}u8K^)#wzQ$7u8%J04(E6&7T#{NUrFx* z=NyF_c5T<5{TXxW^W8?aUwY#;@=Tw^+Z2)Ft<;O(vzMFEH+cTP!=4X@+zRhp><>b7 z%TM#w{sAvYT2p~qGiJ?AXbP4HtknoX(R+}bBwgBgnho%4L)7~goZ9_OOMLBl-98EZ z#~_3Y@C&&Y&l7yM_&6Jh=7*p$Vtz&^O;`h@h!-{Bx*1=bpC4s~frI zM8%K2&NIh4v>xnoNvxeI`?mhhPAz*n==(d3sbU=b8-?8^w)^+`(AuJOZjX5EUtToQ z!N~*(=U~my>)$2j3%#hhQNd-;@P2`L!yyO>AaBx(IGShPP9{WD**{XAp+aoHQEa}| zqcrXC+tN_W`S!h(lswCqm&ihl+9`YL&AuwD4RYAnTjFwz16GkZrg;_Ln!%g1&|ki^ znsATCoxlMLm3lXXd%L9uZ*grXMCeDx3W${zj9|h`Qf5)@3%wb(~T8LVmmhy8AT_n015t znp&P=$9F6*RPg!K6Sc#N>lcfee#HE^(h$$i#JjElLF?WX898)7Bf{bmyQ1bq z`^1&TX%$#LS>B)=puLf9anriSDUo|@vQg;LtamYclr&?M>@kaKX8@J>ZLT<#YM3c# zB9$W8>jaCg3zhII5tUW1rgV^h-H(eM(&-L*;m3vNltlVqZBSdl`3~fL=lHr|GQE5c z_fTnSsgU~FB)K69_C803FD#)jwroM>I#wOTl*#dLkhc7**D+uy`pr83HKfuMbDT1< zmuBVd^B<`ly5eud0?z)he;PYbt^)cjYQb0NzyGbv?1qqeSNo%u(BIB0r~lLvD(b=iMUIKeVG?#fqo6#jGqYd1$zHUS?db#;=5g{2^&gQ^>Ms?0jya z#VGYLnHoTgtXq;u)g#R1gfJdNHF|U@cxpYpt8SYd@4|*$z)LiXFpI}lz1gI zU3;}}0);BtV(RblGsjeayODk8u`&-GXVc@n;I$ls`qB(&ncCi2$U=ODy?ANM z8GRGM^vymd@tO~tT!h4Q4KxT<=J0q(cw=amV(hUoKzp+iN=!aRh&4 zd*=UA$Kk*5&i=n#lz$G@soAT3cxU_Lh~lKC$bJ{4_bWoC(l)?A+mR^&O3|~2{7|y7 zS$0UIvLkSJPGY{+w_N(RyL1}O8*6AT5l+G8e;*_?ag*KURnSZgWXt~gxOvC? zca`@IB7L|taK*_?d4dD_`*mR*Nh5+m3vm~Bl`xrbS%!jch^UndFOKS*xrIxKsPp(H z=RvC}9oj4(0#cJqGr=6 zE2|ygwO`P|)Y#dMXpIasgbsml4f)d_BB(X%(7H3&4gqpn+wR+y3EOA4m7R!8mn}|q zb$*BCQUw#iVDgq$3!2CkT(9~K%S8=OxfToyDVCMsZfYyp6`I#M}z$$oPrmpW1< zchP=zTiCDVpmFr#C7^ zqfkRf$M=))HYTEo)x5A-_M;4xzRR`SFq3xUbRzxzk<9%{4~LO3NrSN9jp;5=&?AK{ zuWNV70p<4me1wNv_NWhUXZ{Hq!;iVb14tb=q=xqJPp{jS&LBxRHaq?0`B+p}B-2!( zIu9cvF0HACbjzE9P-cgQ_9C*tc94$ehuj{g zK$h3bBVX)WyX*2J$3T@vJ`?X@`fOGRWZ$=eE2oa;jK*$twv@7y-1aQaJKIvrI}h-> z#!JT>hQqk5E|SMSbwVfWZW)J7Ef2Jsp1>=g$kk;-<&dL-j6c6!LOR2&-B63wGn}+ zpB)AL!#BD$&c{rF3Kd;?VZDb{kdC4!?)6~-*IFNq2WlA8HJrb5m|6h=))I^}xGy_} zpxEj+i? z<{JPzdf*W^+_t*UN7+I27ifNDAxS5=*OZ9&_8HYL5k`yHgxne__2%SLg&}%-lVrhr zyIh-dv&tFKm4Yv{x-T+WuSnlBN*Wk7JiLr~xQT$q7j?Uzohja=>O5M7(?R24RLS}m zdI7%M2zS5bY&q&mP#o$tv~FJ0Lwj!;Nv9Z^kji_WljvKt$W2uB`qgp#xtLC)iU;3= zZjEaQb2I`0|Km2x??lO4C~FHLMKp@rZfHeHe`0MfK1kQqQKRpMC4X^?E`EkzN-uc1 zzQO(jm*xzcw>baNBK|Km*QEZtbpQ?Y$4*HV|LHrHQvjqhMxsG1xI$SXl}OrRflhJmLy7)?`9hB5%cA9( zYn&4?p&sVjP?yi+xu2%b+hd;4&ZqSLSpXJxWn_4yF*dHcUg8%T7x=*OdCCFTQc96& zszkQ&06#Z|y<1$j%NOsES45vF^U&EX(1w${d{^R(870ydr~P7HO1}M^TZ@@@=~X)h z`4n^eaS8Rv=ngS8*f@OIW^+3QjiPAdtwiYfwN|_KH9H%#YPgy=q2bsr51YY46G7M2 zQIk@ScP6tgYlV@}=XBNtfR8BHWw#{^Nc>ApVW#gBZUsn{VHY(lf zO)vgSDwsJTeG5Zl1m*zabF2ug<%$}bj>X~6f4`0>ht%d!Zy~U6iMd2|z2ZEPc9b&x z;L|E{c*O|)O!Ryg{#tk${%MG$uEF9+>`$(=rWj-iwN<|Fao;KaCT=cvwyKlCfFy#T zhLiRH4T7Nhbw=PUww|)EDJc_4UXwLJm5Id+^HXB#F_C~wA9_CWME zrKa!00i}OxLplz?5<%J%|KewlZhDn~{oijLT{K*7HpTi_9>ErWdLSKY$s)TpEjI)cEOKBZpHcPIFA}puCq_lL+U?>5 zb_{KM*M3(yAz}^lq-EUyOsq{=pn}6Tcc`tGdS#^68-?tJK6^;DbY%VpsB1QNpPM-U zgv$)_5}@D}=ayVvL$3Z4PzJ#ihy5m{mU=tA$l#~gtk8!V*e3#w2d7Gbup2xI|2O#h z-vSuC9gUf$4;cWe|35&%`hNooUDba81=Lt#OrSmunSCbCs9X3z!1vMuBqE)>?Qtag2l$8+L+I0-U){ zV6?sL^i6HEWEyny@M89hgsZB@D3nyuCN(;GK0|q{j@AnCR*N0PU}V6q4SQn&0hIN)ij%j#+K5tYf>?q zw5;8td`E4Kr7UBGnF{a@6Po>$s8QjhxFGZ8ko@~pcfi+Ibxf+QF_umj`kf9_^VN)> z2-iM|ukm^G=~x{VIM4d-k4!r5f)zOG_Ayke>Sbf+ht;E{TpSv%Zc%n7uq>JCv}Z6t z2j-;p%Csu_(eGdYy@vdaIE6*Szz<$GqJ6XN3FTn{$uA~N3eJk~7?J}$cd9?!LwV!G z2}^u41JdFkH7FuU1NF=vLkBi>TQ6@T^BQFwc0Mx>Qz+Za-uWCQge*;~Q4dZkyvz19 zcj4=E6unKyM=lB1I?R<0ZNjInPH#QhQ7kuSY^XQ4+jfc(4{O^6WG=V3XEvI5%?=}z z1P6x)M`19^hRdEL&H>5D3M57Af(7BF;qM27j~}^M^-s?9C#j1uvpj%p@jYK!Ud->nab&o}zHH9BbV|e_{Ygy|nUt5v9U8HEM$*}2kpIBC z?89JWK8!B7VN{ADuRN^_3VU1FC8MDqn#g6QL0)z~GnW#9odI}~T0`Tasi8?o4fuG< z52z~$_GbsukI{0+c|kjxiVQG206a0H5VrRZks0W?!xXW*W6gzB+QH+N5Yf8|pNh2h z4iObxAfhP<``wroE@7BMW_h%a4(Sz|KUuVckvD%H%6dQ0^w1Gzb8-y1oXp_=tku3J zLsAo>WM>bAE&Zm;5$DHm^ZQeoyozUrky*h~?9rDzk-HMn)OA^#6(ipOtxOw+s@9pK z$i@~6-dFchN27VbIziSvk3{7r1p34f()+koA!!LdT!?3>05a_&saXGK9Y1jwwi_dl zeV&z0!~TojYoeDOfn5*rjpx?%AVV`N%&UE$g%%%$K)gYQ-I`}~`9l}HJT#ioK{Vgo z1I>tfwa}zf_(}5<#XZ!h3`@AjU~I+v5WfuZCsM7AKy8VNXma?Mvh=!>KZ7S1xLT;N z6U^SNN?&js$OhXm&DW;OSQ??Ds@!pxIPXT~4f}6opI1ec9ZgAQr)Ib^ za=FtpVcIpB*EgvjI1AC}w+$ZKt84eJs|EXnS9YW|qc`Czblx*_Y$5O;YCy}rkc#1o zn12(VDQ_J2{*wM98hUJTb#eTNhQ5B3H2!l=j`#mD8v6HKZMYlOR}FmkNwBN#!pB3n z9c{O~pe)QHcrJJ@ut17d1xw6D_zNXV+8jgq8X{oj3#WLI2}H`AT0bP%zwhr~)V!&UoE-b6Cbp)gt1Z=U7v6ZEexGJRXEPeL1bl_crrGs{z(s7A z>*s~ggm2gB=YXumR-!lR3HSwNhvw81KnS%-xoZJI2)#*eloX%~y-Bv~0PzIpsnt&c z;RDSN*kyr;LtJCpm4;A+_tfY|gfzgqP7J7n_NCwDgV;fQ7U_?J^vAev3NVCv1MG4^ z^dUZr_5X!Zg~klb2-FUIf%-+OWjW9Zx1wHeHsB4nB3W-77=w0>Hz0w)saxL>m_xh9 zKQM!FE;b;Dac(*wh<(mBAc%WzJK%$`EqlEk_=Me^w|fAc$KYA8y9kxX_>44QiQwP8 z+XU4obsYt5Nb`&xXh`?m68N#o3EZK1eh+lS^$pwgf&M0UjSKx(>N*bkulThh^k2E_ zE2zH)*Q8K?)oCl0kP4bHWCE3R*gnB9WQc^B9UDFrRz@D}9a`VhW*Xwi2!;#<96Ago z;^G47brP^q)PeMf>XtwhO$&8gAW}{FOr}ONv+Y!L0`#4PJc)pht&!v?HwTmbjfT)_dWOq@NA>>?~it;6t zEDSPcs9=jt)rvJaX)Ev{G@YNsy)^N*hqz1Lwx3H9omkDddnQW+T}4<*bcK6kzN^2w z^0ExUOmtym=G5s)~-ja)`XbpHcY{PL76hB1r{cBYQSR zL@GI#+eS2ZblJYUg9sj&yQ;Gg?O6Iv6gwq>NJp7rSw6HV2k(9|yu4%~k|E36ro0@A zFJ=RUGdY?0BQ$@JFlTet<CM>8Z}rmN6`dYQj1w8POO>k6QEl}#6R zBFUEtmR-T0o>FS3k4?#u3g_*FUb{Jww)FJWJdnt*NM}Y(- zH+FxEyPV(w2lc*?cx(*sC=ws67e!Vcfz+wmmG^|w{ndCx@r2v@0!4gVxK~0?xO)Jk#R!uyFlrE}*MCo!$rB_o2G7~o!tx4JP_QuBQ z=Js-(%eUcjy~jwoeRpa%(<%VL=W(Olp4!r>wTns+Ev^;ssj(@N4377hb$L!X0(Hr^ z?-JEx*i^6u=;Y^fVTe}OFxI?0R4Mmpsq;gZ{h4vpjT0AnP>7adaV+KqB`RMYUOWL> zq6l?(HImNCULc;CnyK1>C|oiSO9mw6Mf8mFP2wALuIF)>GB~CNpku|gESh>CC3BiC z(<1BKuL9h!K3vRbl}qxnQP$HyM*(FjNq;>+(u0m|EpI0eb`h#EQ3HW8vU7KacC{G+ zvN(uwiSyd0;4irPn9?6B>^5WmqpMqKK{N-6OG%_a8{uQTT)Zof03vUXrb;8avFOhc_O5iwE!1F2FZW4*fZNU znVPNL`NdO&qo~i<^UEfk6yDklE@R6|CaFdo#DQbUdgcREyo;3A(x(@v!3$Cpqd9n) zu{YL4m#^Imb1um`T$*^5Bl2jm1Z1%uGTPIFDrS9wDB)&^wKI4;sC@dgi{DRz3h3!; ziV_r7frZY-JjrLuxfm{A9{~i2_N&^rt-MScd(THVMa|X03fAq;bh1@iN+L8wW&DLw zW<0qURaG{TC9?_QaO3CFp6LTOIKinQ6H2J${>{KKTAp-#)&6`gfvQSCC3Tu2YS?*G z!Tqrrsh~ z$JoMG*-JX3tVL(^%f&@JR!~-;1a)Izcw2DTT`?g@S%?wGNBaLpD`~aG7x|ckPuhn;T zUy`w&$|eJTJW82RRl%bSHPr^zmb%97CLr}OXP5efPbQ^GTAaV((gMa{WJ{S`+)J!! ziXBUt5HxYHO~V9m)ipJLT3E`$^69DOs_QkdcQsZPLbWJzcd48$*}0G$F#QXRV)my&9TjXY3a82!@V zKKz?Pc*JlV4R2#p5rs(RQ0QaCmq#6=!}f%iq-!;t;?hEn_*L{6^hqVEFtf56b79rm zphcp~aX7}lOgoi|%|EoM36M-^GC5vr*6Q@;?Bnq7`Dol^AS`a)#V%e2Ah1rMH1>Ml zX~Y$Pt+fkRc{#G8V@$3Va{HYbRkw_Kh~l`&O+*L-49!N%gE%Q2E`3~p!iXG)QXnD8 zq1=v&`r>A{oLms1m2N}p3l)~no%hJi$eDhon)^du|ALaJFJ;#lN)1>KjP`7MQPd|QWzm;W5TG*6o7xMW|@ zlCL`3Y@i)^fBty&^I^rQE-0w1rYGv_>{gRq!&MJMa?f8d?wU$Sb(IKe-SMd#D2-=& zzghxsW>mndk?;mMh6SeR+?OT}fxar0N2z?4@4iztRb1m*~EtD`i@ zj>%I1Na~cNh*KX!C&K&(hR^Y-d2A}j#2nu=6H_Xk=H8wLz`2#SRDeqre2=k&?8>dD z(=5)LNSl-_o)@RL^@gGMO)?N0zd_kLfLq=tJGSnpncZKKr`#OWjjjl+st)%3e%9{mr+fs=_4|=FOu-n%n`E2RhF;u143a{` z|455TD=WK_O;U97A4@S7lqv$_pV+X>i0)Wg!FH}MjBQ0Anh;-)Qs(ag?b?!;(filsy0|23vlSz8IW_)@1`l>IdO z!+CQFQIzY%X0o7EYOeZ%roT#bN7@10%gRpiA!rIDy|3fZj=uTcg({F=gjb@JtEU& zzj!zemaGqjYJRX4qBdqOOQ`7?8-1l80xxXDF>l1fqrqV@m+oSjH#LW2@)@dO**Ur8h}tC3W{0g)MOBL%yTz zZV-KIXOUhiCB5X;I-_A{M$Cgd@l@f`k&+8b;Pu4r3FgI)KVtMS;R_i8OPgMAD+?fy z7o%>%#}E**?bm%{$mw#(c-c;IUx-XpKK9*K6do zQgkLlW>Rqzr=U;RQvbNs{sM6`p$fT>6=G&p$t6+V)!-pN_lLV~0I4hmZ&39tn~67Sx9qoYWh(zN6P>IPNgNW+wyJYEG&4VUirB z+d=BsM{5%B;PDh2uctsKq+Bm^*qTa0gKkRBes1Nkv$gLT=^kRvYNj$2+Jz3x##P>i zl$foAMO6uzC3hFPoP2Q=kITwGqfyjlWi@$}d6xx!@$ciwctt8i$4OJRDx$pK95umSumiEMUFN+5%E#VJE$>zPh01as!Z0VqK&bo$Z6xayrzIs3?HgEh{`#Woac=n~gm8 zZ^~LD>!U6!QWT zqP<2Xbu#svOZuE8W&&g{>Lr8^K26>5=cWz*`nHRW@-_UJJP)Pb&ak0-5Dw}Lq4#E;%i(=Of;uxV_xIYAv5yL4Wpaqf<+o>af z9!igHR|299z8ur3D}WE$4#z1ifEdypVU5bDEdUmppVBBVKoW`w?K(Ih2r?HZfLMTL z*9(FP(G%2P1!;hJ-5J0I)lIhxgm6TBjtlUB>ZacnfVe_@7VZy&6vVi02vCIb1?;jx z1j{p*Vs z%|Ivoihg}=-~&c=n~^HCF7+D0z$N-Q;y^FfIsJe?#<}HyKX!M>t{;>ldUxM0CX|rI zHRM1UoPYN2F{1zXU0ekJh+SLgKDFyfs6M@GUFbgfYu*7z+-`&G_rSko&pV>%qVRB3 z%Cz=K+Y7rjNV!JWD=?^d{PVlva;%=ZL2YcFK0&a^+XK7A$lK$)Imp}KU47(SyK4uS zD~D?m7)1`x%z;JZT;prGAWMAyjol_>!O`8X$o_!?itNw)L3w7^oB&*VXA1ilReX?WdJyRygz4%Y}lngnlVL7MpdcGosRt9ZT{18Ic5Ap@EOz9|EW zEYB4%LesltguX2Uv&_#KFhY~Nwn+Z11G6m89acIB1bXcAS;=4b$%>pFr!mQs3gfp? zgndo0wmWQX=7Rk?mOfcm(TKM?1~&%@-%t1r6x7C$A4K#Jiu!g1wzr8TBuMO_a#)Ra zkwqeLp2fl?SVK?uybAB%^GJ$r9nTFT)2gB@I(%N(hMtZPBQthrf;$L#sdw2Hsy*MU zPwAbu1xI0+q-0xYM#L@~gNrgXSvUp59y*C@Nr-b2ER0myod+E$f$|!6kWSM@?qW_- zIm?u8u4uK|*o8w*T4Y712=j;Q@`FvqE>B_+EL*Jvl6gEup&U_w|-=I#kVqg(Z& zf2rx&qq{k5GqTsR*vY12Ql$^@gdinW7^pa6PaTpH31$o1q^*OC9r=S|HtJC|%y3mD z%0})!|0q2y8{v4dHzBx-_E%x>!|G*89l_d&KBlGwD=;AB;imQe55~?ZNRuX7*E4N% z+O}=mwr$(|n$xyz+qP|M+O~E2k9{J}-Hua{7gbjoQI)xBDc{FNQuiYOY(K1@ZFv5; z*5Q_YI{KFLiCU@TrRdHDT?5+;VQ#1aUhRTL3!99Lu}giXs6^@5{yK~~aFT^jCRU`2 zPB3Fxr^B>e&?2q>v@Sl@&3@3ioy|i}=;Y z^?N{$yt^cEWAX~CU9zEUB%4@ChKrXcWAV*V2xqI&;qN}a!qnuzOlMreBK4a&TiI!x z$fyPXnwX*ht!_`T)nKdPR3-9$6pNEFtmT7UyJ)4HXwn<24#hf+l__6cwg!_1!hYtO zkyY~ZpUd3`q9Las7shnl^z#B1CxiUWM$?Pum+E!@;tmV>&~`~1S+(e5X}jhaF&Z`_ zE0N7kQ%O|=;4#aP*gS)gbLP9}Qe7t1Etl7Hi7QL(jE~y$*;%QJ-Pn;wWUrxn zy??ELyE1a`v3s{~v0L16b!*sV&A4YO%CdR-c^x43xomF9_gj@$kLtc>>4&e`N-U7k zdkhyu8DvE)GR5#-Wn)G{BTZ=nj^&J56EVLOZO#vr@4q~O`6cyHyJCwtb7p2`Av9jpQ+8!iz#+pk%j31ix~5& zU%vW3CJSLB@I#18nK?w7w1pu=a%arLaX&)TP`+BWciE$lBgq#;%>+Mv-{eoOurDz~ zBG}R3??s^xKcNK~^W=8Rqi(9#6l$AdCSNJ1ePc2GxBacpuX`$K%)`th^1uPZ3&~p< zk;`v*%IdcBdwwR+PJ>V};+^m3qm#+RwJG&zzu{ze)h34V8BvCz88PHt>fPf2e~I2u z|0dP#+xy3HG2iaA-UX0h@|?F-Ml^NR* z8edm3KnKL8ls+`z9gxSBF#degLs4ZlG+n(UYjxP{^ooC-Tb-cIiwpD)!7aIK@e?My$MsHt z=n~ve0`Z3Rwj_3`z`nh9S%UNJl)Dy!aU$xF8F#E>kcsb-0%1XJ3hE;Ru_|5uGaErh zuXZJgmCnTiT=`}fJl!;WTFUWxDPA7_G=z11UT8GMYi`;x2ia7gbYKX0Hfc!F0-=|#8 zxtVGevez|Qp!20M-)6Mmc!IlZF5x*kdAP@BSc_%8u1%UJW-AEpnZ5TQx`Mqi1om_Q zvLy>&*LcpYnQ(|nGI{CTpk5##Xh>>8c}aZ+013!A1T~4gY;FKQ3DCg=3}1(E*6A@@ z#mM_w(HZr>Pir8jj|)Kq(-xtoUWvoPP}s_FX%-!lnc*F?<&Gw`KXUsidVrv|1a zBumNzGmA4Iz8*211G87lvYZ%sw08}0oquMhmT5V7MYN9%(2I_IS{14Mr-sPB24cJZVGqh?}AC;OqS7vBsR3DX+I)`Rx6(uigmXFGO?=n17%GJsWV2z*>3)*(SMx1=vA)hw@{YQnZxDAoLnoE8-E}&;xjq z9V^}nixw5OIIExm-coH@^(_@UMEIMRK^;O>BsU;{66!-*nl;5MRlnv$uf-MWL)}M9 zAT~tz^j;|t-R49Z<=SAVX8AtUN4{jooHukp4#bBk1$?O0CEQrNkE_7D-5(iV?yTAt@H^EV4YHQElWXu z*-&&{PO%sX*dp#qK+%Q5GvO>J61qU{tm0GoHU4Zn(uoLuFh3=L8R!&* z5yBX0lrUB%mk!_y@`jAgua6HXfH**4Pv`#)XiKh_ld4Y?6PLuDW0vwz?n>(QNxn<< z!~jr1SQFc00XTtLkXr+LKS6NuYa@DXfxIBO<#thkYLMKsdQ(7r@o$I#dJrGs{7R6G zq_N_;umED9Er8TAOHQ&N!nu@!znd`2l(QgU*!M;pZ;iH|}JwpaYtd?~s<xi|-PF0o-%8(iL)+$~~TDqFVWe z4?n77FdkW|_@1mZ{4Q2%lb;P~eKO~EtyB?TZ}1teQnpPO!B?v=eYCdbv7Avk`eD2o z^m>}jZ(J()dO9~P(s)yGVm{TEZg@qT^7&Y8L~_Pg@lvE4{8~ux{jR2bfCmMd ztzV|fj=Yu5B3?}w@!n-huYB(@Nh^Wq@KHM_sh>G;$s+ub}?j$3m!K^BQI z<`^jr&xG%E5ikQ+iPAjs01a94(8nDyJ|icdyAM&!*Ys1SAo;-AFBJ9>YF9B!2XMwGuO+yz2 zXJngZJzDA!L%kgIWxHHGvWxV*cu$7q@*ot+%{27{s-nrDG zs(CglvXGR#)M;LB7@Bo+T0u_}j85Im;fGZP22o=yjPh9g4gISjAjnCHDR@r`Uldw3 z`K#wKLnwZuR}uGHlR%JB;^+s@gUTwj_iIQpYL_~PHc7&-Rz8Fop8OP=wbsm&_U4t& zltY`e)-cAo6o0Ya>&dGt{~>)Sc3^HcH?NNhm~NWoB{C51YCZx(0HC_$g03HyyCCX< zIB;Sx*BE>0#=qC%t>Rx82ugMJO2yfuvSb?*ML*&QR-R(sEN2?x$qyU;U?wI(1qTs}}l(A7Zy32<(Ws}Oo zhANmzuq3#<>iJn3#vTnwNW^B54@B~Er8%*T#>5c)mTn6~o@caxwyHU_beUzOQR+Lj zUD=*onxAj6vO72v@Zoz|2zYb7Oyfid@+S4{CY#q?+0@8RPsUxW?aJF|QY$EX!xuoZ zjGZ8a;h=A3X5Ex*E_MFLDabPcj69%=9#%ZQ_0$ z>FIMPnwmb>rkfLA0k-5b4&6i#gHjIHmL6XK-t-xp6a+7^!cx{VWr>KUSIhr$q$(^qD$KRfH5AFa(x*CCZBPprd@bTuOu_lWq?O>xRM_Yk)deerAjt`#rL1_NrBAwg;`k-)Z35IB6tvu$JD3CV8u#*Ms>bAo-g{i*QH|JnoP#ODSSDyV4(|*}$v7p)RcAws|7uw-p&_kf7Z zy$pan8X0MLn0`*I+bf-x#5HTeqw=CE!Uw@gJuYU?zqI&MuOro)n{4~{$6qC)KPFFwh!8leA59ZK-G_xc!pqtJzr1}qP@Nh!ALR380~X{ zrQwgw-=e*h!7sy*2{4_|LhOvhOfSWdt`xt&S#htY{YK2Vn``gDZ+Uwr$~j ziA@&-Z>MiBL&juT8b(FqnYo4VL_)v9AKSM*k<}IkEhV{|Cnun3@O?>}pmmmfjJ71J zIhBl_ie?(xW&rcF6(&S0m;tgRl{7|`G-hp7c^4#O4)9q7%&PG~73V8vhG{v_dXn5P z?%79h{${Nh>6bcFe&MGHvRkyciSPu%sz|PvI8$Vms>*#~(5k35emujtaCnq{s`O;_ z65X$n8O-B zt82MFHj}scDm$hWfs?MBODVXf`~x;|!{(KD1)ex9%Y#WdJd=#>a|ES0*{~_PmG5$e zhg>VyW-2A!ov&_#(*%)GB*=%0%ne^O?NUuJBGKS#tgs@8%U0Vnh{{&Wci5?_%t2xI z>~MX{&Mo6E)K;pg$}BrVccG_Vd3al`SK^BhpaHR&%zo&Vek3?7){vB^sa$CW9r|r9 z@kwU9WOb~c(rOWzJGulE=rq+^t4$?uY1f(z&=yWS(mZJd8`s%H7)(O0meFsFx(5X# zuyw9RK?DpX5&{zc#m8#b(3J>>P|=e@!CWc{eC2Ph0-!?K&D(@^thq#zXUnJ|fkK4% zFEIU64|45$X-JwTiwju8IPavC*%W zu#nd{dfDuhp6bG;^NO5>ZZjC6*wU~eo}4f~qo)`-EE5)l4fQP?Ho$f~4HDnZ%8nv! z7RAC^?KzrsRe7w^l8?Z8|F+DAR=C#=N4JO{4R^3SMf<~lE*WuS{l)ae*=+Hg|AnBv{=^j z2{|mEspoz~VO8*nnv&NuyI*8mC47`o&FdaXuDEVsT7+K(JqxwYdPD5c{Y>2|_U*q? z;WOb{tXboI#Cj@xqw!MsglpP)z7TpudrEr4dYAaj3VcIbVctz1cIRJkuQ$E3t|FP4 zLwbRzV!^8beIcfan^|1HNoXY2EpIwh(d6()5$ z!<+TI+tQ@_N?p$2D|p&&e9#xQ;sui-S_Bgy-j8SD7scV2d!KyB*O)+EFQWUY_^mJnC zosCYRmT1O`2%=pz4>ywBtZ~#dE+1YmmV`+#Ae_xk5VaspFZcGAj+b4LJ~fp|2(k36 z&c-Fj&y2%W7mGqvD~D$nJjV1@U}a05&>ZBjlkE%%;(>r79c2s_0jB zac})w+OJB@2AHnt!Y(Ot8MKgyO-z?cLuj0(1SLJx6u=`PHN4(-&9Th!(FE7J4$bRZ zetc`)k0E5lWbBYo#7Sl_U3mpM~W+km6X?8D78~$;Ljxur50hAqCRd)aOhH+qeA-aD zbqRcwSJjyHgwVc}_Fogq!*wVH?Ja*tU+%YF(<)*4(3flk&6i9B?UsV8k*#aw`Ejwr zXR^6DP$k@Y+YlAWvV}~)9~0Q771M0^+>dX5Q^}lIA$Rt;kI9NSYUzo&=7>4*eaMUn z<#r$JXfS(BT4K^(c6yax0t&UY^pb<^t2iK0&9#dV0J3T zpW%@T@F=gD<B z;RcN~hVDYzz;_n%fZ18b40M$4@b)xr=?m;!}H1 z*vb1$*(m|usb>0WufF4Rkx_6_N~<8FtaxM{fAy4aQ@+mKEOk@Col8gx^kidEnNgfs zj8Swu7g`j1$UBR8vwt-633^N6RXi__nV)}f(B$*!OfERKB6E>0?%9mSSK2vJ6 zdMI0`?UMIW&Z*|9*m$P?4#qc{)dXYT=w*u~4fG4Ufy}0(=tRTcKf^SVj#7fXV`wBR zL<8`KG{_$sJ2+7j>X0y`fvIS6v8UsP&;J!JHZ$SgO?-%#WZK z>Gbmw;Q_DQVB5a4Dm5*va!bED@K~*iOE>kZ=#0M`mXlOp8V>aMdR1{1B9ER-woBJ_w{qSlGX#T?OmJ;vVK4I2{L9 z#(?L{#B_de>p}*jf2!s{g`>Apiw(DuS10`(cA82-6Dr@Fv>>~A5ubBq-+BH0s#>hB zWgJ_^<;e&M=oYjOO34e42*pGRTtc>Gy0(AIb+{WUSgmC}C@(ie!MWtu(}!8b15|Atq=V{n6`4{zo1~dq|aN?HfpK&QvHE{l!F4R za8H#@xL%%WLmedVk7;z6nqu<6&67M*TTAkU*_N0fvnX^CQy#M!Ia0whwF#RvvvoYN z60&VSym2l_DX$M<3!v46qO$r%2g)g%a+Eo5pl!4XZJ5n8nP_^7%5PM6DS@N0n{X5l zf~vGzy~T?DmCl8JB}t{7x}9tCrV!F=(tTb-ysFo3PhBrgGVoN8g(g%tu6WB8S&H{o zA0TC02=FD8wj{9FwB0W0PME}5ze;OH7s#d&r61H~H4{Y}2}|wpXd@?SBo_ciqsX5o z6Ck)M@X$XY1L)BOpn5_QpF!u9=t2cP4$({K0S$SAQqNN5N%LXIE~WHw`jBXs)C9=9 zQP{`$Qd%#_h4Q>%+$8#vb{5tES{@trgg&ufB>B*MmuAe|sSN~sVqKQ$40#@#sAYQM z4^Pz^!roY{Lv$x(=WC3hA7LxCd$Ox$?exvg*yzXRi%+&Y$ad9%wSppB;L9`L0V>?yuflv&;AfogPA8$$j|n zYVdXw9>`vpKP7mj{K99J;O`7SEp*HI2B;p6-J`y^^@@5%)z0beogUO)MBXaAv%WBU zRQ&>Xa(jlZXLt6W&++cW9%EjW-pD>oKAFCfzc{|dzXSZr{D%CNdqkXWyB5W;6dtRL z&~8>FlIpqLv$85aAW(6U<&2K^>ZT9&4Isbc7pZcvUNKyB<)V*d%isDw6uy2OkAxSV4;GJ1>Z7I)Sd3Wh-kKw| zG8*|G4CBNq^&uMqtn)qynfMpvGBP%Gw*|R-?bvEr z&Xj&@d;w`$7Mq~BB%WI!oy3{!CpO&n^5DS6xUh+DHL29}AwL?r^Bs-OlZm2p?{$lZu(2ZSrJe zBj3@6tqypO4*Gmxy*zy9VSGZz!}{xj1p>fA4MKp7U{Q*(FejOu$r)hC*+43prP;S` z`aDALXqhzmY38@hiF-*4ST^lI^h@F(V$f}NbK^klFm3jT3UIuw8bf!Y@U0A-^>HF) zD=X&GiZFFn`3tCiS_X{@BCjsg3&1l>iR;%y@l=fqYe_^oE12KvRYdt*qvvv}n4%4_ zA_Xd^(W#%MNI20*?EmzrjoWY(PP7KVi473GA0@cBNV+7SC1T#-Z{ka_#H-Qm`f{!N z;$6k-TEk}KHV^7B#;PjuI)Q2@ z6q@pOB93cRC#MxYr4R%UGIO1F7tCrNDFoTZ)=;<~bt9*FNl5q#<})^Ica=E7pL&KU z$)=F7O(x#?LcWq9Z{i1AM)Y$;*S1E7a!;04qxB%knPQzddX{vj=ihBnxPS$AjmtF0 zn##Yg7$pzBU9%-&_yFISM@jSw?|T?yclW{6R&Kt&f~nB z^1^=_EO=$!fc}kam0WZs?rYJP$f|hCFADd+S;gKVU7tWH4J~u>C+?Q5;@NPKVEI|s zoA{T4mhDA2;St<^gyX|$16(!WE>>nfM2RBqzDSa-6$1APV@ppBA2Z_c_&(Fim)gIfEJ|1>UvsQi0WAFL-`F$+-JA z9j~7x#Hw`3FC3Y6V6qt6yK~_^eO@Of(kryYh3lLPONAs6ke4B>kH4nr|^7del*)6;ZMbK@G zZaU3y&(%vxs2@*kGZC-Xza6d@Hni{9IY_7TCg`zLUG|1(8vA>v%MTbfJ(J^+_E*R8 z92@!!gO24ualxcGA@2*F8Xab(dWaGLc+A2@Uj+%)Ar?8a2IIryx`$)HsYL1Z(NbTE z?ZQ$$mHUM4TbyTCJ*r}SkY~K{Z|CV;W=4X�-1_)6UgO3$<>6vAk~7mGydRk*{sf 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 z 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 z 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℞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 z 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 IMWlcIKS??+-2eap From 16579217b756c2224e19dd216522667fc18cfb66 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 29 Sep 2015 18:11:04 +0200 Subject: [PATCH 428/504] upgraded TracAPI to 3.0.14 --- .../META-INF/MANIFEST.MF | 2 +- .../com.tractrac.clientmodule/lib/TracAPI.jar | Bin 782608 -> 783263 bytes java/com.tractrac.clientmodule/pom.xml | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF b/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF index f70e3ceadbc..5d853dd0bcf 100644 --- a/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF +++ b/java/com.tractrac.clientmodule/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: TracTrac Client module Bundle-SymbolicName: com.tractrac.clientmodule -Bundle-Version: 3.0.13 +Bundle-Version: 3.0.14 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ClassPath: ., lib/TracAPI.jar diff --git a/java/com.tractrac.clientmodule/lib/TracAPI.jar b/java/com.tractrac.clientmodule/lib/TracAPI.jar index 8a342b8b9a105cbc6fb3c79805516a753ede479e..70fda01cf7e328d22bdf10a96d413de15776b91c 100644 GIT binary patch delta 57364 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 U1>(A0(62^DO(CTa79LXn2QI3I9{>OV delta 57254 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.0.0-SNAPSHOT com.tractrac.clientmodule - 3.0.13 + 3.0.14 eclipse-plugin From 4d8f94ac1f029bc078fc33378facd5bd9ccc9dec Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 30 Sep 2015 10:17:23 +0200 Subject: [PATCH 429/504] Competition Format - Added background color for fleets in desktop version --- .../regattacompetition/RegattaCompetitionFleet.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java index f28ff8c083f..670e4758741 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java @@ -10,7 +10,10 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; +import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; +import com.sap.sse.common.Util.Triple; +import com.sap.sse.common.impl.RGBColor; public class RegattaCompetitionFleet extends Widget { @@ -27,6 +30,7 @@ public class RegattaCompetitionFleet extends Widget { public RegattaCompetitionFleet(RaceCompetitionFormatFleetDTO fleet) { setElement(uiBinder.createAndBindUi(this)); + getElement().getStyle().setBackgroundColor(getBackgroundColor(fleet.getFleet())); this.competitorCountUi.setInnerText(I18N.competitorsCount(fleet.getCompetitorCount())); this.competitorCountUi.getStyle().setDisplay(fleet.getCompetitorCount() == 0 ? Display.NONE : Display.BLOCK); if (fleet.getFleet() != null) { @@ -42,5 +46,10 @@ public class RegattaCompetitionFleet extends Widget { RegattaCompetitionFleetRace competitionRace = new RegattaCompetitionFleetRace(race, raceViewerURL); racesContainerUi.appendChild(competitionRace.getElement()); } + + private String getBackgroundColor(FleetMetadataDTO fleet) { + Triple rgbValues = new RGBColor(fleet.getFleetColor()).getAsRGB(); + return "rgba(" + rgbValues.getA() + "," + rgbValues.getB() + "," + rgbValues.getC() + ", 0.1)"; + } } From 723da94bfc6f71780ab71dbae9f25fc834e56fa8 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 30 Sep 2015 10:18:01 +0200 Subject: [PATCH 430/504] Competition Format - Adjusted mouse cursor for non-clickable races --- .../desktop/partials/regattacompetition/RegattaCompetition.gss | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss index 274274cf125..7216cec7f30 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss @@ -150,6 +150,7 @@ } .fleet_races_raceuntracked { background-color: #999; + cursor: default; } .fleet_races_raceuntracked:hover { background-color: #8a8a8a; From 58c84639b2020dfb228212a5d173d6b5238c33f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Wed, 30 Sep 2015 11:00:12 +0200 Subject: [PATCH 431/504] Allow to add device mappings in regattalog --- ...=> AbstractLogAddDeviceMappingDialog.java} | 80 ++++---------- .../RaceLogAddDeviceMappingDialog.java | 73 ++++++++++++ .../RaceLogTrackingDeviceMappingsDialog.java | 2 +- ... => RegattaLogAddDeviceMappingDialog.java} | 104 ++++++++---------- ...egattaLogTrackingDeviceMappingsDialog.java | 68 ++++++++---- 5 files changed, 184 insertions(+), 143 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/{AddDeviceMappingToRaceLogDialog.java => AbstractLogAddDeviceMappingDialog.java} (72%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogAddDeviceMappingDialog.java rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/{AddDeviceMappingToRegattaLogDialog.java => RegattaLogAddDeviceMappingDialog.java} (52%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRaceLogDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogAddDeviceMappingDialog.java similarity index 72% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRaceLogDialog.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogAddDeviceMappingDialog.java index 397a8bfd18b..fc3353d32de 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRaceLogDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogAddDeviceMappingDialog.java @@ -20,31 +20,29 @@ import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants; import com.sap.sailing.domain.common.racelog.tracking.MappableToDevice; -import com.sap.sailing.domain.common.racelog.tracking.QRCodeURLCreationException; import com.sap.sailing.gwt.ui.adminconsole.ItemToMapToDeviceSelectionPanel.SelectionChangedHandler; -import com.sap.sailing.gwt.ui.client.GwtUrlHelper; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.BetterDateTimeBox; -import com.sap.sailing.gwt.ui.shared.DeviceIdentifierDTO; import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO; import com.sap.sailing.gwt.ui.shared.MarkDTO; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog; -public class AddDeviceMappingToRaceLogDialog extends DataEntryDialog { - private final BetterDateTimeBox from; - private final BetterDateTimeBox to; - private final ListBox deviceType; - private final TextBox deviceId; - private final DeviceMappingQRCodeWidget qrWidget; - private final StringMessages stringMessages; - private MappableToDevice selectedItem; - private final ItemToMapToDeviceSelectionPanel itemSelectionPanel; +public abstract class AbstractLogAddDeviceMappingDialog extends DataEntryDialog { + protected final BetterDateTimeBox from; + protected final BetterDateTimeBox to; + protected final ListBox deviceType; + protected final TextBox deviceId; + protected final DeviceMappingQRCodeWidget qrWidget; + protected final StringMessages stringMessages; + protected MappableToDevice selectedItem; + protected final ItemToMapToDeviceSelectionPanel itemSelectionPanel; + protected final SailingServiceAsync sailingService; + protected Grid entryGrid; - public AddDeviceMappingToRaceLogDialog(SailingServiceAsync sailingService, final ErrorReporter errorReporter, - final StringMessages stringMessages, final String leaderboardName, final String raceColumnName, - final String fleetName, DialogCallback callback, final DeviceMappingDTO mapping) { + public AbstractLogAddDeviceMappingDialog(SailingServiceAsync sailingService, final ErrorReporter errorReporter, + final StringMessages stringMessages, DialogCallback callback, final DeviceMappingDTO mapping) { super(stringMessages.add(stringMessages.deviceMappings()), stringMessages.add(stringMessages.deviceMappings()), stringMessages.add(), stringMessages.cancel(), new DataEntryDialog.Validator() { @Override @@ -75,6 +73,7 @@ public class AddDeviceMappingToRaceLogDialog extends DataEntryDialog callback, final DeviceMappingDTO mapping) { + super(sailingService, errorReporter, stringMessages, callback, mapping); + this.leaderboardName = leaderboardName; + this.fleetName = fleetName; + this.raceColumnName = raceColumnName; + + loadCompetitorsAndMarks(); + } + + @Override + protected DeviceMappingDTO getResult() { + String deviceTypeS = deviceType.getSelectedIndex() < 0 ? null : deviceType.getValue(deviceType + .getSelectedIndex()); + DeviceIdentifierDTO deviceIdentifier = new DeviceIdentifierDTO(deviceTypeS, deviceId.getValue()); + return new DeviceMappingDTO(deviceIdentifier, from.getValue(), to.getValue(), selectedItem, null); + } + + @Override + protected DeviceMappingQRCodeWidget setupQRCodeWidget() { + return new DeviceMappingQRCodeWidget(stringMessages, new DeviceMappingQRCodeWidget.URLFactory() { + @SuppressWarnings("deprecation") + @Override + public String createURL(String baseUrlWithoutTrailingSlash, String mappedItemType, String mappedItemId) + throws QRCodeURLCreationException { + if (from.getValue() == null && to.getValue() == null) { + throw new QRCodeURLCreationException(stringMessages.atMostOneEndOfTheTimeRangeMayBeOpen()); + } + + Long fromMillis = null; + if (from.getValue() != null){ + fromMillis = from.getValue().getTime(); + } + + Long toMillis = null; + if (to.getValue() != null) { + toMillis = to.getValue().getTime(); + } + + return DeviceMappingConstants.getDeviceMappingForRaceLogUrl(baseUrlWithoutTrailingSlash, + leaderboardName, raceColumnName, fleetName, mappedItemType, mappedItemId, fromMillis, toMillis, + GwtUrlHelper.INSTANCE); + } + }); + } + + @Override + protected void loadCompetitorsAndMarks() { + sailingService.getCompetitorRegistrations(leaderboardName, raceColumnName, fleetName, + itemSelectionPanel.getSetCompetitorsCallback()); + + sailingService.getMarksInRaceLog(leaderboardName, raceColumnName, fleetName, + itemSelectionPanel.getSetMarksCallback()); + } + +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java index 8101497db86..321076a5559 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java @@ -49,7 +49,7 @@ public class RaceLogTrackingDeviceMappingsDialog extends AbstractLogTrackingDevi @Override protected void showAddMappingDialog(DeviceMappingDTO mapping) { - new AddDeviceMappingToRaceLogDialog(sailingService, errorReporter, stringMessages, leaderboardName, + new RaceLogAddDeviceMappingDialog(sailingService, errorReporter, stringMessages, leaderboardName, raceColumnName, fleetName, new DataEntryDialog.DialogCallback() { @Override public void ok(final DeviceMappingDTO mapping) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRegattaLogDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogAddDeviceMappingDialog.java similarity index 52% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRegattaLogDialog.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogAddDeviceMappingDialog.java index 0ba0bce6020..f1cd6599f69 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRegattaLogDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogAddDeviceMappingDialog.java @@ -5,59 +5,45 @@ import java.util.Collection; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.CaptionPanel; -import com.google.gwt.user.client.ui.Grid; -import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; -import com.google.gwt.user.client.ui.Panel; -import com.google.gwt.user.client.ui.VerticalPanel; -import com.sap.sailing.domain.common.dto.CompetitorDTO; +import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants; import com.sap.sailing.domain.common.racelog.tracking.QRCodeURLCreationException; -import com.sap.sailing.gwt.ui.adminconsole.ItemToMapToDeviceSelectionPanel.SelectionChangedHandler; import com.sap.sailing.gwt.ui.client.GwtUrlHelper; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.DeviceIdentifierDTO; +import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO; import com.sap.sailing.gwt.ui.shared.EventDTO; -import com.sap.sailing.gwt.ui.shared.MarkDTO; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.controls.GenericListBox; import com.sap.sse.gwt.client.controls.GenericListBox.ValueBuilder; -public class AddDeviceMappingToRegattaLogDialog extends AbstractCancelableDialog { - private DeviceMappingQRCodeWidget qrWidget; - private ItemToMapToDeviceSelectionPanel itemSelectionPanel; +public class RegattaLogAddDeviceMappingDialog extends AbstractLogAddDeviceMappingDialog { private final String leaderboardName; + private final GenericListBox events; - public AddDeviceMappingToRegattaLogDialog(SailingServiceAsync sailingService, final ErrorReporter errorReporter, - final StringMessages stringMessages, final String leaderboardName) { - super(sailingService, stringMessages, errorReporter); + public RegattaLogAddDeviceMappingDialog(SailingServiceAsync sailingService, final ErrorReporter errorReporter, + final StringMessages stringMessages, final String leaderboardName, DialogCallback callback, final DeviceMappingDTO mapping) { + super(sailingService, errorReporter, stringMessages, callback, mapping); this.leaderboardName = leaderboardName; - setupUi(); - center(); - } - - @Override - protected void addMainContent(Panel mainPanel) { - super.addMainContent(mainPanel); - - CaptionPanel inputPanel = new CaptionPanel(); - Grid inputGrid = new Grid(1, 2); - inputPanel.add(inputGrid); - inputGrid.setWidget(0, 0, new Label(stringMessages.event())); - final GenericListBox events = new GenericListBox(new ValueBuilder() { + + loadCompetitorsAndMarks(); + + events = new GenericListBox(new ValueBuilder() { @Override public String getValue(EventDTO item) { return item.getName(); } }); - inputGrid.setWidget(0, 1, events); + events.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { qrWidget.generateQRCode(); } }); + sailingService.getEventsForLeaderboard(leaderboardName, new AsyncCallback>() { @Override public void onSuccess(Collection result) { @@ -69,30 +55,22 @@ public class AddDeviceMappingToRegattaLogDialog extends AbstractCancelableDialog errorReporter.reportError("Could not load events: " + caught.getMessage()); } }); + } - itemSelectionPanel = new ItemToMapToDeviceSelectionPanel(sailingService, stringMessages, errorReporter, - new SelectionChangedHandler() { - @Override - public void onSelectionChange(MarkDTO mark) { - qrWidget.setMappedItem(DeviceMappingConstants.URL_MARK_ID_AS_STRING, mark.getIdAsString()); - qrWidget.generateQRCode(); - } + @Override + protected Widget getAdditionalWidget() { + Widget panel = super.getAdditionalWidget(); + + entryGrid.insertRow(0); + entryGrid.setWidget(0, 0, new Label(stringMessages.event())); + entryGrid.setWidget(0, 1, events); + + return panel; + } - @Override - public void onSelectionChange(CompetitorDTO competitor) { - qrWidget.setMappedItem(DeviceMappingConstants.URL_COMPETITOR_ID_AS_STRING, - competitor.getIdAsString()); - qrWidget.generateQRCode(); - } - }, null); - - // load table content - sailingService.getCompetitorRegistrations(leaderboardName, itemSelectionPanel.getSetCompetitorsCallback()); - // fetching marks definitions from the race logs; note that currently there are no mark *definitions* - // on regatta logs although there can be mark/device assignments on a regatta log which then gives the - // mark a position that applies across all races in the regatta-like thing - sailingService.getMarksInRaceLogsAndTrackedRaces(leaderboardName, itemSelectionPanel.getSetMarksCallback()); - qrWidget = new DeviceMappingQRCodeWidget(stringMessages, new DeviceMappingQRCodeWidget.URLFactory() { + @Override + protected DeviceMappingQRCodeWidget setupQRCodeWidget() { + return new DeviceMappingQRCodeWidget(stringMessages, new DeviceMappingQRCodeWidget.URLFactory() { @Override public String createURL(String baseUrlWithoutTrailingSlash, String mappedItemType, String mappedItemId) throws QRCodeURLCreationException { @@ -104,18 +82,22 @@ public class AddDeviceMappingToRegattaLogDialog extends AbstractCancelableDialog leaderboardName, mappedItemType, mappedItemId, GwtUrlHelper.INSTANCE); } }); - qrWidget.generateQRCode(); + } - VerticalPanel leftSidePanel = new VerticalPanel(); - leftSidePanel.add(inputPanel); + @Override + protected DeviceMappingDTO getResult() { + String deviceTypeS = deviceType.getSelectedIndex() < 0 ? null : deviceType.getValue(deviceType + .getSelectedIndex()); + DeviceIdentifierDTO deviceIdentifier = new DeviceIdentifierDTO(deviceTypeS, deviceId.getValue()); + return new DeviceMappingDTO(deviceIdentifier, from.getValue(), to.getValue(), selectedItem, null); + } - CaptionPanel qrContentPanel = new CaptionPanel(); - leftSidePanel.add(qrContentPanel); - qrContentPanel.add(qrWidget); - - HorizontalPanel panel = new HorizontalPanel(); - mainPanel.add(panel); - panel.add(leftSidePanel); - panel.add(itemSelectionPanel); + @Override + protected void loadCompetitorsAndMarks() { + sailingService.getCompetitorRegistrations(leaderboardName, itemSelectionPanel.getSetCompetitorsCallback()); + // fetching marks definitions from the race logs; note that currently there are no mark *definitions* + // on regatta logs although there can be mark/device assignments on a regatta log which then gives the + // mark a position that applies across all races in the regatta-like thing + sailingService.getMarksInRaceLogsAndTrackedRaces(leaderboardName, itemSelectionPanel.getSetMarksCallback()); } } \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java index 32230142be6..0209c712367 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java @@ -12,50 +12,73 @@ import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog; public class RegattaLogTrackingDeviceMappingsDialog extends AbstractLogTrackingDeviceMappingsDialog { - protected String leaderboardName; + protected final String leaderboardName; public RegattaLogTrackingDeviceMappingsDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages, final ErrorReporter errorReporter, final String leaderboardName) { super(sailingService, stringMessages, errorReporter); this.leaderboardName = leaderboardName; - + refresh(); } @Override protected void refresh() { - sailingService.getDeviceMappingsFromLogHierarchy(leaderboardName, - new AsyncCallback>() { - @Override - public void onSuccess(List result) { - mappings = result; + sailingService.getDeviceMappingsFromLogHierarchy(leaderboardName, new AsyncCallback>() { + @Override + public void onSuccess(List result) { + mappings = result; - updateChart(); - deviceMappingTable.refresh(mappings); - } + updateChart(); + deviceMappingTable.refresh(mappings); + } - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not load mappings for marks: " + caught.getMessage()); - } - }); + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not load mappings for marks: " + caught.getMessage()); + } + }); } @Override protected void showAddMappingDialog(DeviceMappingDTO mapping) { - new AddDeviceMappingToRegattaLogDialog(sailingService, errorReporter, stringMessages, leaderboardName).show(); + new RegattaLogAddDeviceMappingDialog(sailingService, errorReporter, stringMessages, leaderboardName, + new DataEntryDialog.DialogCallback() { + @Override + public void ok(final DeviceMappingDTO mapping) { + sailingService.addDeviceMappingToRegattaLog(leaderboardName, mapping, + new AsyncCallback() { + @Override + public void onSuccess(Void result) { + refresh(); + } + + @Override + public void onFailure(Throwable caught) { + showAddMappingDialog(mapping); + errorReporter.reportError("Could not add mapping: " + caught.getMessage()); + } + }); + } + + @Override + public void cancel() { + refresh(); + } + }, mapping).show(); } @Override protected void importFixes() { - new RegattaLogImportFixesAndAddMappingsDialog(sailingService, errorReporter, stringMessages, leaderboardName, new DataEntryDialog.DialogCallback>() { + new RegattaLogImportFixesAndAddMappingsDialog(sailingService, errorReporter, stringMessages, leaderboardName, + new DataEntryDialog.DialogCallback>() { @Override public void ok(Collection editedObject) { for (DeviceMappingDTO mapping : editedObject) { - sailingService.addDeviceMappingToRegattaLog(leaderboardName, - mapping, new AsyncCallback() { + sailingService.addDeviceMappingToRegattaLog(leaderboardName, mapping, + new AsyncCallback() { @Override public void onSuccess(Void result) { refresh(); @@ -87,7 +110,8 @@ public class RegattaLogTrackingDeviceMappingsDialog extends AbstractLogTrackingD new DataEntryDialog.DialogCallback() { @Override public void ok(java.util.Date editedObject) { - sailingService.closeOpenEndedDeviceMapping(leaderboardName, dto, editedObject, new AsyncCallback() { + sailingService.closeOpenEndedDeviceMapping(leaderboardName, dto, editedObject, + new AsyncCallback() { @Override public void onSuccess(Void result) { refresh(); @@ -106,8 +130,8 @@ public class RegattaLogTrackingDeviceMappingsDialog extends AbstractLogTrackingD } }).show(); } else if (RaceLogTrackingDeviceMappingsImagesBarCell.ACTION_REMOVE.equals(value)) { - sailingService.revokeRaceAndRegattaLogEvents(leaderboardName, - dto.originalRaceLogEventIds, new AsyncCallback() { + sailingService.revokeRaceAndRegattaLogEvents(leaderboardName, dto.originalRaceLogEventIds, + new AsyncCallback() { @Override public void onFailure(Throwable caught) { errorReporter.reportError("Could not remove mappings: " + caught.getMessage()); From 634bd423d2152c9e183d87586be0b563bc2900bb Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 30 Sep 2015 12:08:31 +0200 Subject: [PATCH 432/504] Competition Format - Added additional StringMessages --- .../main/java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 + .../java/com/sap/sailing/gwt/ui/client/StringMessages.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_de.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_ru.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_zh.properties | 1 + 5 files changed, 5 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index a455637917f..009d9803034 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1396,4 +1396,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String tabbedResultsPresenter(); String polarResultsPresenter(); String dataMiningRetrieval(); + String watch(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 5f827ad1dd0..2e82fb69d1e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1367,3 +1367,4 @@ resultsChart=Results Chart tabbedResultsPresenter=Tabbed Results Presenter polarResultsPresenter=Polar Results Presenter dataMiningRetrieval=Data Retrieval +watch=Watch \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index bde02d53eae..957f40e6b62 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1356,3 +1356,4 @@ resultsChart=Ergebnis-Diagramm tabbedResultsPresenter=Tab Ergebnis-Darsteller polarResultsPresenter=Polar Ergebnis-Darsteller dataMiningRetrieval=Datenbeschaffung +watch=Verfolgen \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 8036b27b93d..3eb137601a6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1303,3 +1303,4 @@ resultsChart=Results Chart tabbedResultsPresenter=Tabbed Results Presenter polarResultsPresenter=Polar Results Presenter dataMiningRetrieval=Data Retrieval +watch=Watch \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 16d687d1af8..ded25881bb7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1331,3 +1331,4 @@ photosCount[one]={0,number} photo eventsHaveTakenPlace={0} events have taken place eventsHaveTakenPlace[one]= One event has taken place raceOffice=Race Office +watch=Watch \ No newline at end of file From f754ddba2eb6a0bacb81440da66cea8f103ec5c3 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 30 Sep 2015 14:17:29 +0200 Subject: [PATCH 433/504] Competition Format - Adjusted representation of different race states in desktop version --- .../regattacompetition/RegattaCompetition.gss | 38 ++++++++++++++----- .../RegattaCompetitionFleetRace.java | 12 ++++-- .../RegattaCompetitionFleetRace.ui.xml | 5 ++- .../RegattaCompetitionResources.java | 4 +- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss index 7216cec7f30..50238a401f0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss @@ -109,6 +109,7 @@ text-align: center; color: #fff; padding: 0.333333333333333em 0.333333333333333em; + vertical-align: top; } @media (min-width: 45em) { .fleet_races_race { @@ -126,13 +127,13 @@ text-decoration: none; } .fleet_races_race_name, -.fleet_races_race_date { +.fleet_races_race_info { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .fleet_races_race_name { - font-size: 1.466666666666667em; + font-size: 1.166666666666667em; font-weight: 700; } .fleet_races_race_name:after { @@ -141,20 +142,20 @@ width: 0.466666666666667em; height: 0.466666666666667em; background: url("images/home/skip-forward.png") no-repeat center center; - margin: 0 0 0.133333333333333em 0.133333333333333em; + margin: 0 0 0.033333333333333em 0.133333333333333em; + font-size: 1.466666666666667em; } -.fleet_races_race_date { +.fleet_races_race_info { width: 100%; font-size: 0.666666666666667em; font-weight: 600; } .fleet_races_raceuntracked { - background-color: #999; + color: #008fcc; + background-color: #fff; + border: 1px solid #008fcc; cursor: default; } -.fleet_races_raceuntracked:hover { - background-color: #8a8a8a; -} .fleet_races_racelive { background-color: #e94a1b; } @@ -163,16 +164,28 @@ } .fleet_races_raceplanned { color: #999; - background-color: #fff; border: 1px solid #999; padding: 0.266666666666666em 0.266666666666666em; } .fleet_races_raceplanned:hover { - background-color: #e6e6e6; + background-color: #8a8a8a; } .fleet_races_raceuntracked .fleet_races_race_name:after { display: none; } +.fleet_races_racelive.fleet_races_raceuntracked { + color: #e94a1b; + background-color: #fff; + border: 1px solid #e94a1b; +} +.fleet_races_raceplanned.fleet_races_raceuntracked { + background-color: #fff; + color: #999; + border: 1px solid #999; +} +.fleet_races_raceuntracked:hover { + background-color: #e6e6e6; +} .regattalistitem .fleet { border: none; border-bottom: 1px solid #dedede; @@ -180,3 +193,8 @@ .regattalistitem .fleet:last-of-type { border-radius: 0; } +.fleet_races_race_date { +} +.fleet_races_race_state { + text-transform: uppercase; +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java index 0dc2184b43d..946b16ca98e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java @@ -6,6 +6,7 @@ import com.google.gwt.dom.client.DivElement; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.UIObject; +import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingState; @@ -19,7 +20,9 @@ public class RegattaCompetitionFleetRace extends UIObject { } @UiField RegattaCompetitionResources local_res; + @UiField StringMessages i18n; @UiField DivElement raceNameUi; + @UiField DivElement raceStateUi; @UiField DivElement raceDateUi; private final AnchorElement anchorUi; @@ -38,13 +41,16 @@ public class RegattaCompetitionFleetRace extends UIObject { } private void setupRaceState(RaceTrackingState trackingState, RaceViewState viewState) { + boolean isUntrackedRace = trackingState != RaceTrackingState.TRACKED_VALID_DATA; if (viewState == RaceViewState.RUNNING) { anchorUi.addClassName(local_res.css().fleet_races_racelive()); + raceStateUi.setInnerText(isUntrackedRace ? i18n.live() : i18n.watch()); } else if (viewState == RaceViewState.PLANNED || viewState == RaceViewState.SCHEDULED) { anchorUi.addClassName(local_res.css().fleet_races_raceplanned()); + raceStateUi.setInnerText(i18n.raceIsPlanned()); + } else { + raceStateUi.setInnerText(isUntrackedRace ? i18n.finished() : i18n.analyze()); } - if (trackingState != RaceTrackingState.TRACKED_VALID_DATA) { - anchorUi.addClassName(local_res.css().fleet_races_raceuntracked()); - } + setStyleName(anchorUi, local_res.css().fleet_races_raceuntracked(), isUntrackedRace); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml index d0fb43d68d5..e83a632c2c2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml @@ -6,8 +6,9 @@
-
- +
+
+
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionResources.java index f5bc0b2955f..25731591094 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionResources.java @@ -26,9 +26,11 @@ public interface RegattaCompetitionResources extends ClientBundle { String fleet_races(); String fleet_races_race(); String fleet_races_race_name(); - String fleet_races_race_date(); + String fleet_races_race_info(); String fleet_races_raceuntracked(); String fleet_races_racelive(); String fleet_races_raceplanned(); + String fleet_races_race_date(); + String fleet_races_race_state(); } } From 7e62ffa3c3aa0799b9150df5b00c7b580dfe8162 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 30 Sep 2015 15:06:20 +0200 Subject: [PATCH 434/504] Competition Format - Added additional/adjusted StringMessages --- .../java/com/sap/sailing/gwt/ui/client/StringMessages.java | 3 ++- .../com/sap/sailing/gwt/ui/client/StringMessages.properties | 3 ++- .../com/sap/sailing/gwt/ui/client/StringMessages_de.properties | 3 ++- .../com/sap/sailing/gwt/ui/client/StringMessages_ru.properties | 3 ++- .../com/sap/sailing/gwt/ui/client/StringMessages_zh.properties | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 009d9803034..4f4c4e5f181 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1396,5 +1396,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String tabbedResultsPresenter(); String polarResultsPresenter(); String dataMiningRetrieval(); - String watch(); + String actionWatch(); + String actionAnalyze(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 2e82fb69d1e..25d8bf22a9d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1367,4 +1367,5 @@ resultsChart=Results Chart tabbedResultsPresenter=Tabbed Results Presenter polarResultsPresenter=Polar Results Presenter dataMiningRetrieval=Data Retrieval -watch=Watch \ No newline at end of file +actionWatch=Watch +actionAnalyze=Analyze \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 957f40e6b62..697f4df2251 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1356,4 +1356,5 @@ resultsChart=Ergebnis-Diagramm tabbedResultsPresenter=Tab Ergebnis-Darsteller polarResultsPresenter=Polar Ergebnis-Darsteller dataMiningRetrieval=Datenbeschaffung -watch=Verfolgen \ No newline at end of file +actionWatch=Verfolgen +actionAnalyze=Analysieren \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index 3eb137601a6..a01491d1eda 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1303,4 +1303,5 @@ resultsChart=Results Chart tabbedResultsPresenter=Tabbed Results Presenter polarResultsPresenter=Polar Results Presenter dataMiningRetrieval=Data Retrieval -watch=Watch \ No newline at end of file +actionWatch=Watch +actionAnalyze=Analyze \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index ded25881bb7..37a406f8377 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1331,4 +1331,5 @@ photosCount[one]={0,number} photo eventsHaveTakenPlace={0} events have taken place eventsHaveTakenPlace[one]= One event has taken place raceOffice=Race Office -watch=Watch \ No newline at end of file +actionWatch=Watch +actionAnalyze=Analyze \ No newline at end of file From 5fa8464b9ca6c309e0200d551d6e89623b7e5602 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 30 Sep 2015 15:40:17 +0200 Subject: [PATCH 435/504] add key up handler on suggest box created by DataEntryDialog to trigger validator --- .../sap/sse/gwt/client/dialog/DataEntryDialog.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/dialog/DataEntryDialog.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/dialog/DataEntryDialog.java index f470a779705..0a1b5ea575c 100755 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/dialog/DataEntryDialog.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/dialog/DataEntryDialog.java @@ -12,6 +12,8 @@ import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.KeyUpEvent; +import com.google.gwt.event.dom.client.KeyUpHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.user.client.rpc.AsyncCallback; @@ -175,12 +177,24 @@ public abstract class DataEntryDialog { oracle.addAll(suggestValuesAsCollection); oracle.setDefaultSuggestionsFromText(suggestValuesAsCollection); final SuggestBox result = new SuggestBox(oracle); + result.getValueBox().addValueChangeHandler(new ValueChangeHandler() { + @Override + public void onValueChange(ValueChangeEvent event) { + validate(); + } + }); result.getValueBox().addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { validate(); } }); + result.getValueBox().addKeyUpHandler(new KeyUpHandler() { + @Override + public void onKeyUp(KeyUpEvent event) { + validate(); + } + }); DialogUtils.linkEnterToButton(getOkButton(), result.getValueBox()); DialogUtils.linkEscapeToButton(getCancelButton(), result.getValueBox()); return result; From f8cda401e593f3b35f6283c6f109a7433494b0cf Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 30 Sep 2015 15:41:03 +0200 Subject: [PATCH 436/504] don't use a display name for the regatta leaderboard created upon user request --- .../ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java index acfdfc2c4c1..1852da65e91 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java @@ -40,7 +40,7 @@ public class CreateDefaultRegattaLeaderboardDialog extends AbstractCancelableDia protected void ok() { RegattaIdentifier regattaIdentifier = new RegattaName(regatta.getName()); - sailingService.createRegattaLeaderboard(regattaIdentifier, regatta.getName(), new int[]{}, + sailingService.createRegattaLeaderboard(regattaIdentifier, /* displayName */ null, new int[]{}, new AsyncCallback() { @Override public void onFailure(Throwable t) { From fbca9c9b85a412a1b47a3634be4ff90ccede15cc Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 30 Sep 2015 15:55:37 +0200 Subject: [PATCH 437/504] Competition Format - Adjusted representation of different race states in desktop version --- .../regattacompetition/RegattaCompetition.gss | 15 +++++++-------- .../RegattaCompetitionFleetRace.java | 4 ++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss index 50238a401f0..60513d3cda5 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss @@ -108,7 +108,7 @@ text-decoration: none; text-align: center; color: #fff; - padding: 0.333333333333333em 0.333333333333333em; + padding: 0.233333333333333em 0.233333333333333em; vertical-align: top; } @media (min-width: 45em) { @@ -127,7 +127,8 @@ text-decoration: none; } .fleet_races_race_name, -.fleet_races_race_info { +.fleet_races_race_state, +.fleet_races_race_date { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; @@ -153,7 +154,7 @@ .fleet_races_raceuntracked { color: #008fcc; background-color: #fff; - border: 1px solid #008fcc; + border: 2px solid #008fcc; cursor: default; } .fleet_races_racelive { @@ -163,9 +164,7 @@ background-color: #d54115; } .fleet_races_raceplanned { - color: #999; - border: 1px solid #999; - padding: 0.266666666666666em 0.266666666666666em; + background-color: #999; } .fleet_races_raceplanned:hover { background-color: #8a8a8a; @@ -176,12 +175,12 @@ .fleet_races_racelive.fleet_races_raceuntracked { color: #e94a1b; background-color: #fff; - border: 1px solid #e94a1b; + border-color: #e94a1b; } .fleet_races_raceplanned.fleet_races_raceuntracked { background-color: #fff; color: #999; - border: 1px solid #999; + border-color: #999; } .fleet_races_raceuntracked:hover { background-color: #e6e6e6; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java index 946b16ca98e..f4d83c29d30 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java @@ -44,12 +44,12 @@ public class RegattaCompetitionFleetRace extends UIObject { boolean isUntrackedRace = trackingState != RaceTrackingState.TRACKED_VALID_DATA; if (viewState == RaceViewState.RUNNING) { anchorUi.addClassName(local_res.css().fleet_races_racelive()); - raceStateUi.setInnerText(isUntrackedRace ? i18n.live() : i18n.watch()); + raceStateUi.setInnerText(isUntrackedRace ? i18n.live() : i18n.actionWatch()); } else if (viewState == RaceViewState.PLANNED || viewState == RaceViewState.SCHEDULED) { anchorUi.addClassName(local_res.css().fleet_races_raceplanned()); raceStateUi.setInnerText(i18n.raceIsPlanned()); } else { - raceStateUi.setInnerText(isUntrackedRace ? i18n.finished() : i18n.analyze()); + raceStateUi.setInnerText(isUntrackedRace ? i18n.finished() : i18n.actionAnalyze()); } setStyleName(anchorUi, local_res.css().fleet_races_raceuntracked(), isUntrackedRace); } From 3e19595eeba7cf01e422a6694422384c17394b30 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 30 Sep 2015 15:59:03 +0200 Subject: [PATCH 438/504] Added new date format for: weekday, month (abbreviation) and day --- .../client/DateAndTimeFormatterUtil.java | 119 +++++++++--------- 1 file changed, 61 insertions(+), 58 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/common/client/DateAndTimeFormatterUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/common/client/DateAndTimeFormatterUtil.java index 88b4b5207be..832a8211299 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/common/client/DateAndTimeFormatterUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/common/client/DateAndTimeFormatterUtil.java @@ -1,58 +1,61 @@ -package com.sap.sailing.gwt.ui.common.client; - -import java.util.Date; - -import com.google.gwt.i18n.client.DateTimeFormat; -import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat; -import com.google.gwt.i18n.client.TimeZone; -import com.google.gwt.text.client.DateTimeFormatRenderer; - -public class DateAndTimeFormatterUtil { - public static TimeZone timeZoneWithoutOffset = TimeZone.createTimeZone(0); - - public static DateTimeFormatRenderer defaultDateFormatter = new DateTimeFormatRenderer( - DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT)); - public static DateTimeFormatRenderer defaultTimeFormatter = new DateTimeFormatRenderer( - DateTimeFormat.getFormat(PredefinedFormat.TIME_LONG)); - - public static DateTimeFormatRenderer longDateFormatter = new DateTimeFormatRenderer( - DateTimeFormat.getFormat(DateTimeFormat.PredefinedFormat.DATE_LONG)); - public static DateTimeFormatRenderer longTimeFormatter = new DateTimeFormatRenderer( - DateTimeFormat.getFormat("HH:mm:ss zzz"), timeZoneWithoutOffset); - - private static DateTimeFormatRenderer secondsTimeFormatter = new DateTimeFormatRenderer( - DateTimeFormat.getFormat("m:ss"), timeZoneWithoutOffset); - private static DateTimeFormatRenderer minutesAndSecondsTimeFormatter = new DateTimeFormatRenderer( - DateTimeFormat.getFormat("mm:ss"), timeZoneWithoutOffset); - private static DateTimeFormatRenderer hoursAndMinutesAndSecondsTimeFormatter = new DateTimeFormatRenderer( - DateTimeFormat.getFormat("HH:mm:ss"), timeZoneWithoutOffset); - - public static String formatDateRange(Date startDate, Date endDate) { - return defaultDateFormatter.render(startDate) + " - " + defaultDateFormatter.render(endDate); - } - - public static String formatElapsedTime(long timeInMilliseconds) { - String result = ""; - int seconds = (int) (timeInMilliseconds / 1000) % 60 ; - int minutes = (int) ((timeInMilliseconds / (1000*60)) % 60); - int hours = (int) ((timeInMilliseconds / (1000*60*60)) % 24); - if(hours > 0) { - result = hoursAndMinutesAndSecondsTimeFormatter.render(new Date(timeInMilliseconds)); - } else if (minutes > 0) { - result = minutesAndSecondsTimeFormatter.render(new Date(timeInMilliseconds)); - } else if (seconds > 0) { - result = secondsTimeFormatter.render(new Date(timeInMilliseconds)); - } - - return result; - } - - public static String formatDateAndTime(Date date) { - String result = ""; - if(date != null) { - result = defaultDateFormatter.render(date) + " " + defaultTimeFormatter.render(date); - } - - return result; - } -} +package com.sap.sailing.gwt.ui.common.client; + +import java.util.Date; + +import com.google.gwt.i18n.client.DateTimeFormat; +import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat; +import com.google.gwt.i18n.client.LocaleInfo; +import com.google.gwt.i18n.client.TimeZone; +import com.google.gwt.text.client.DateTimeFormatRenderer; + +public class DateAndTimeFormatterUtil { + public static TimeZone timeZoneWithoutOffset = TimeZone.createTimeZone(0); + + public static DateTimeFormatRenderer defaultDateFormatter = new DateTimeFormatRenderer( + DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT)); + public static DateTimeFormatRenderer defaultTimeFormatter = new DateTimeFormatRenderer( + DateTimeFormat.getFormat(PredefinedFormat.TIME_LONG)); + + public static DateTimeFormatRenderer weekdayMonthAbbrDayDateFormatter = new DateTimeFormatRenderer( + DateTimeFormat.getFormat("EEE, " + LocaleInfo.getCurrentLocale().getDateTimeFormatInfo().formatMonthAbbrevDay())); + public static DateTimeFormatRenderer longDateFormatter = new DateTimeFormatRenderer( + DateTimeFormat.getFormat(DateTimeFormat.PredefinedFormat.DATE_LONG)); + public static DateTimeFormatRenderer longTimeFormatter = new DateTimeFormatRenderer( + DateTimeFormat.getFormat("HH:mm:ss zzz"), timeZoneWithoutOffset); + + private static DateTimeFormatRenderer secondsTimeFormatter = new DateTimeFormatRenderer( + DateTimeFormat.getFormat("m:ss"), timeZoneWithoutOffset); + private static DateTimeFormatRenderer minutesAndSecondsTimeFormatter = new DateTimeFormatRenderer( + DateTimeFormat.getFormat("mm:ss"), timeZoneWithoutOffset); + private static DateTimeFormatRenderer hoursAndMinutesAndSecondsTimeFormatter = new DateTimeFormatRenderer( + DateTimeFormat.getFormat("HH:mm:ss"), timeZoneWithoutOffset); + + public static String formatDateRange(Date startDate, Date endDate) { + return defaultDateFormatter.render(startDate) + " - " + defaultDateFormatter.render(endDate); + } + + public static String formatElapsedTime(long timeInMilliseconds) { + String result = ""; + int seconds = (int) (timeInMilliseconds / 1000) % 60 ; + int minutes = (int) ((timeInMilliseconds / (1000*60)) % 60); + int hours = (int) ((timeInMilliseconds / (1000*60*60)) % 24); + if(hours > 0) { + result = hoursAndMinutesAndSecondsTimeFormatter.render(new Date(timeInMilliseconds)); + } else if (minutes > 0) { + result = minutesAndSecondsTimeFormatter.render(new Date(timeInMilliseconds)); + } else if (seconds > 0) { + result = secondsTimeFormatter.render(new Date(timeInMilliseconds)); + } + + return result; + } + + public static String formatDateAndTime(Date date) { + String result = ""; + if(date != null) { + result = defaultDateFormatter.render(date) + " " + defaultTimeFormatter.render(date); + } + + return result; + } +} From e2ce4c44af914fd84ec4933fd7d9efc66566542b Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 30 Sep 2015 15:59:52 +0200 Subject: [PATCH 439/504] Competition Format - Used new date format for races in desktop version --- .../regattacompetition/RegattaCompetitionFleetRace.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java index f4d83c29d30..ea884bcbf88 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleetRace.java @@ -35,7 +35,7 @@ public class RegattaCompetitionFleetRace extends UIObject { setupRaceState(race.getTrackingState(), race.getViewState()); this.raceNameUi.setInnerText(race.getRaceName()); if (race.getStart() != null) { - this.raceDateUi.setInnerText(DateAndTimeFormatterUtil.defaultDateFormatter.render(race.getStart())); + this.raceDateUi.setInnerText(DateAndTimeFormatterUtil.weekdayMonthAbbrDayDateFormatter.render(race.getStart())); } setElement(anchorUi); } From dcaab0c4e76903dade9f38bc4ffa4d08b055c480 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 30 Sep 2015 16:10:41 +0200 Subject: [PATCH 440/504] Competition Format - Fixed representation of untracked races in desktop version --- .../desktop/partials/regattacompetition/RegattaCompetition.gss | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss index 60513d3cda5..160303aac4a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetition.gss @@ -155,6 +155,7 @@ color: #008fcc; background-color: #fff; border: 2px solid #008fcc; + padding: 0.133333333333333em 0.233333333333333em; cursor: default; } .fleet_races_racelive { From c1356a442fe8a781a82834f532efd2c620875c6a Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 30 Sep 2015 16:16:15 +0200 Subject: [PATCH 441/504] Competition Format - Removed no longer needed race state legend in desktop version --- .../event/regatta/racestab/RegattaRacesTabView.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.java index d4824a03a3e..bda4b497383 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.java @@ -29,13 +29,12 @@ import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigatio import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.ListNavigationAction; import com.sap.sailing.gwt.home.desktop.partials.regattanavigation.ListNavigationPanel.SelectionCallback; import com.sap.sailing.gwt.home.desktop.places.event.EventView; -import com.sap.sailing.gwt.home.desktop.places.event.regatta.RegattaTabView; import com.sap.sailing.gwt.home.desktop.places.event.regatta.EventRegattaView.Presenter; +import com.sap.sailing.gwt.home.desktop.places.event.regatta.RegattaTabView; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; -import com.sap.sailing.gwt.home.shared.partials.regattanavigation.RaceStateLegend; +import com.sap.sailing.gwt.home.shared.refresh.ActionProvider.AbstractActionProvider; import com.sap.sailing.gwt.home.shared.refresh.RefreshManager; import com.sap.sailing.gwt.home.shared.refresh.RefreshableWidget; -import com.sap.sailing.gwt.home.shared.refresh.ActionProvider.AbstractActionProvider; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.Action; import com.sap.sailing.gwt.ui.shared.dispatch.DTO; @@ -58,7 +57,7 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView(new RegattaRacesTabViewNavigationSelectionCallback()); - listNavigationPanelUi.setAdditionalWidget(new RaceStateLegend()); + // listNavigationPanelUi.setAdditionalWidget(new RaceStateLegend()); liveRacesListUi = new LiveRacesList(currentPresenter, false); raceListContainerUi = new RaceListContainer<>(I18N.finishedRaces(), I18N.noFinishedRaces(), new RaceListFinishedRaces(currentPresenter)); initWidget(ourUiBinder.createAndBindUi(RegattaRacesTabView.this)); From a4a62bf8dc8f85e4333e75231bdfecfd47531d7e Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 30 Sep 2015 18:01:10 +0200 Subject: [PATCH 442/504] harmonizing the way how competitors are determined, cached and updated for leaderboard and regatta --- .../domain/test/mock/MockedTrackedRace.java | 16 ++ .../sap/sailing/domain/base/RaceColumn.java | 9 ++ .../com/sap/sailing/domain/base/Regatta.java | 3 +- .../domain/base/impl/AbstractRaceColumn.java | 24 +++ .../sailing/domain/base/impl/RegattaImpl.java | 56 +++++-- .../domain/leaderboard/HasRaceColumns.java | 12 ++ .../HasRaceColumnsAndRegattaLike.java | 7 + .../domain/leaderboard/Leaderboard.java | 2 +- .../leaderboard/LeaderboardCacheManager.java | 74 +-------- .../impl/AbstractLeaderboardImpl.java | 34 +--- ...ProviderFromRaceColumnsAndRegattaLike.java | 149 ++++++++++++++++++ .../impl/FlexibleLeaderboardImpl.java | 15 -- .../meta/MetaLeaderboardColumn.java | 5 + .../LeaderboardThatHasRegattaLike.java | 3 +- 14 files changed, 282 insertions(+), 127 deletions(-) create mode 100644 java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/HasRaceColumns.java create mode 100644 java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/HasRaceColumnsAndRegattaLike.java create mode 100644 java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java index 4c3d0485d2f..50d85683056 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java @@ -49,6 +49,7 @@ import com.sap.sailing.domain.racelog.tracking.GPSFixStore; import com.sap.sailing.domain.ranking.RankingMetric; import com.sap.sailing.domain.ranking.RankingMetric.RankingInfo; import com.sap.sailing.domain.ranking.RankingMetricConstructor; +import com.sap.sailing.domain.regattalike.IsRegattaLike; import com.sap.sailing.domain.regattalike.RegattaLikeIdentifier; import com.sap.sailing.domain.regattalike.RegattaLikeListener; import com.sap.sailing.domain.tracking.CourseDesignChangedListener; @@ -471,6 +472,21 @@ public class MockedTrackedRace implements DynamicTrackedRace { public RaceColumn getRaceColumnByName(String raceColumnName) { return null; } + + @Override + public IsRegattaLike getRegattaLike() { + return null; + } + + @Override + public RaceLog getRacelog(String raceColumnName, String fleetName) { + return null; + } + + @Override + public Iterable getRaceColumns() { + return null; + } }; } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java index 64a34b1f1fc..12a8a97b9c0 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java @@ -1,6 +1,7 @@ package com.sap.sailing.domain.base; import com.sap.sailing.domain.abstractlog.race.RaceLog; +import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.common.RaceIdentifier; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.MetaLeaderboard; @@ -227,4 +228,12 @@ public interface RaceColumn extends Named { boolean hasSplitFleets(); RaceExecutionOrderProvider getRaceExecutionOrderProvider(); + + /** + * Provides the combined set of competitors from all {@link #getTrackedRace(Fleet) tracked races attached to this column} + * plus the competitors registered through any {@link RaceLog} {@link #getRaceLog(Fleet) attached to this column}. Note that + * this does not include competitors registered through any {@link RegattaLog} on the structure owning (directly or transitively) + * this column. + */ + Iterable getAllCompetitors(); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Regatta.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Regatta.java index 6415cd5901f..49056157559 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Regatta.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Regatta.java @@ -4,6 +4,7 @@ import com.sap.sailing.domain.base.configuration.RegattaConfiguration; import com.sap.sailing.domain.common.RankingMetrics; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.RegattaIdentifier; +import com.sap.sailing.domain.leaderboard.HasRaceColumnsAndRegattaLike; import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.ranking.RankingMetricConstructor; import com.sap.sailing.domain.ranking.RankingMetricsFactory; @@ -22,7 +23,7 @@ import com.sap.sse.common.WithID; * @author Axel Uhl (d043530) * */ -public interface Regatta extends Named, WithID, IsRegattaLike { +public interface Regatta extends Named, WithID, IsRegattaLike, HasRaceColumnsAndRegattaLike { ScoringScheme getScoringScheme(); /** diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java index 1c5e11ac162..61499851241 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java @@ -3,11 +3,14 @@ package com.sap.sailing.domain.base.impl; import java.io.IOException; import java.io.ObjectInputStream; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import java.util.logging.Logger; import com.sap.sailing.domain.abstractlog.race.RaceLog; +import com.sap.sailing.domain.abstractlog.shared.analyzing.RegisteredCompetitorsAnalyzer; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; @@ -206,4 +209,25 @@ public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implem public void setMasterDataExportOngoingThreadFlag(boolean flagValue) { trackedRaces.setMasterDataExportOngoingThreadFlag(flagValue); } + + + @Override + public Iterable getAllCompetitors() { + Set result = new HashSet<>(); + for (Fleet fleet : getFleets()) { + TrackedRace trackedRace = getTrackedRace(fleet); + if (trackedRace != null) { + Util.addAll(trackedRace.getRace().getCompetitors(), result); + } else { + // if no tracked race is found, use competitors from race log; this assumes that if a tracked + // race exists, its competitors set takes precedence over what's in the race log. Usually, + // the tracked race will have the same competitors as those in the race log, or more because + // those from the regatta log are added to the tracked race as well. + Set viaRaceLog = new RegisteredCompetitorsAnalyzer<>(getRaceLog(fleet)).analyze(); + result.addAll(viaRaceLog); + } + } + return result; + } + } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java index 1a44cc0b251..cf30214a41b 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java @@ -16,9 +16,9 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; import java.util.logging.Logger; +import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; -import com.sap.sailing.domain.abstractlog.shared.analyzing.RegisteredCompetitorsAnalyzer; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseArea; @@ -40,6 +40,7 @@ import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.domain.common.RegattaNameAndRaceName; import com.sap.sailing.domain.leaderboard.ResultDiscardingRule; import com.sap.sailing.domain.leaderboard.ScoringScheme; +import com.sap.sailing.domain.leaderboard.impl.CompetitorProviderFromRaceColumnsAndRegattaLike; import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore; @@ -111,6 +112,8 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene * Defaults to true. See {@link Regatta#useStartTimeInference()}. */ private boolean useStartTimeInference; + + private transient CompetitorProviderFromRaceColumnsAndRegattaLike competitorsProvider; /** * Constructs a regatta with an empty {@link RaceLogStore}. @@ -171,7 +174,6 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene * @param series * all {@link Series} in this iterable will have their {@link Series#setRegatta(Regatta) regatta set} to * this new regatta. - * @param rankingMetricConstructor TODO */ public RegattaImpl(RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, String name, BoatClass boatClass, TimePoint startDate, TimePoint endDate, Iterable series, boolean persistent, ScoringScheme scoringScheme, @@ -363,24 +365,15 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene @Override public Iterable getAllCompetitors() { Set result = new HashSet(); + if (competitorsProvider == null) { + competitorsProvider = new CompetitorProviderFromRaceColumnsAndRegattaLike(this); + } + Util.addAll(competitorsProvider.getAllCompetitors(), result); for (RaceDefinition race : getAllRaces()) { for (Competitor c : race.getCompetitors()) { result.add(c); } } - for (Series series : getSeries()) { - for (RaceColumn rc : series.getRaceColumns()) { - for (Fleet fleet : rc.getFleets()) { - TrackedRace trackedRace = rc.getTrackedRace(fleet); - if (trackedRace != null) { - Util.addAll(trackedRace.getRace().getCompetitors(), result); - } - } - } - } - //consider {@link RegattaLog} - Set viaLog = new RegisteredCompetitorsAnalyzer<>(regattaLikeHelper.getRegattaLog()).analyze(); - result.addAll(viaLog); return result; } @@ -700,4 +693,37 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene public RaceColumn getRaceColumnByName(String raceColumnName) { return regattaLikeHelper.getRaceColumnByName(raceColumnName); } + + @Override + public IsRegattaLike getRegattaLike() { + return this; + } + + @Override + public RaceLog getRacelog(String raceColumnName, String fleetName) { + final RaceLog result; + final RaceColumn raceColumn = getRaceColumnByName(raceColumnName); + if (raceColumn == null) { + result = null; + } else { + final Fleet fleet = raceColumn.getFleetByName(fleetName); + if (fleet == null) { + result = null; + } else { + result = raceColumn.getRaceLog(fleet); + } + } + return result; + } + + @Override + public Iterable getRaceColumns() { + final List result = new ArrayList<>(); + for (final Series series : getSeries()) { + for (final RaceColumnInSeries rc : series.getRaceColumns()) { + result.add(rc); + } + } + return result; + } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/HasRaceColumns.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/HasRaceColumns.java new file mode 100644 index 00000000000..e66e4765e4f --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/HasRaceColumns.java @@ -0,0 +1,12 @@ +package com.sap.sailing.domain.leaderboard; + +import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.domain.base.RaceColumnListener; + +public interface HasRaceColumns { + Iterable getRaceColumns(); + + void addRaceColumnListener(RaceColumnListener listener); + + void removeRaceColumnListener(RaceColumnListener listener); +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/HasRaceColumnsAndRegattaLike.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/HasRaceColumnsAndRegattaLike.java new file mode 100644 index 00000000000..0bc3be68e60 --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/HasRaceColumnsAndRegattaLike.java @@ -0,0 +1,7 @@ +package com.sap.sailing.domain.leaderboard; + +import com.sap.sailing.domain.regattalike.HasRegattaLike; + +public interface HasRaceColumnsAndRegattaLike extends HasRegattaLike, HasRaceColumns { + +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/Leaderboard.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/Leaderboard.java index 1178bf289c9..61b69a61bac 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/Leaderboard.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/Leaderboard.java @@ -44,7 +44,7 @@ import com.sap.sse.common.Util; * @author Axel Uhl (d043530) * */ -public interface Leaderboard extends LeaderboardBase { +public interface Leaderboard extends LeaderboardBase, HasRaceColumns { /** * If the leaderboard is a "matrix" with the cells being defined by a competitor / race "coordinate," * then this interface defines the structure of the "cells." diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java index bdb5c767ba1..39636a492e6 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java @@ -8,7 +8,6 @@ import java.util.Set; import java.util.WeakHashMap; import java.util.concurrent.ConcurrentHashMap; -import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CompetitorChangeListener; import com.sap.sailing.domain.base.Fleet; @@ -16,9 +15,9 @@ import com.sap.sailing.domain.base.Nationality; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumnListener; import com.sap.sailing.domain.base.WithNationality; +import com.sap.sailing.domain.base.impl.RaceColumnListenerWithDefaultAction; import com.sap.sailing.domain.common.MaxPointsReason; import com.sap.sailing.domain.leaderboard.caching.LeaderboardCache; -import com.sap.sailing.domain.racelog.RaceLogIdentifier; import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.impl.AbstractRaceChangeListener; @@ -262,9 +261,14 @@ public class LeaderboardCacheManager { leaderboard.getScoreCorrection().addScoreCorrectionListener(scoreCorrectionListener); scoreCorrectionListeners.put(leaderboard, scoreCorrectionListener); competitorChangeListeners.put(leaderboard, competitorChangeListener); - final RaceColumnListener raceColumnListener = new RaceColumnListener() { + final RaceColumnListener raceColumnListener = new RaceColumnListenerWithDefaultAction() { private static final long serialVersionUID = 8165124797028386317L; + @Override + public void defaultAction() { + removeFromCache(leaderboard); + } + @Override public void trackedRaceLinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) { removeFromCache(leaderboard); @@ -278,70 +282,6 @@ public class LeaderboardCacheManager { public boolean isTransient() { return true; } - - @Override - public void trackedRaceUnlinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) { - removeFromCache(leaderboard); // removes all listeners from invalidationListenersPerLeaderboard and from their TrackedRaces - } - - @Override - public void isMedalRaceChanged(RaceColumn raceColumn, boolean newIsMedalRace) { - removeFromCache(leaderboard); - } - - @Override - public void isStartsWithZeroScoreChanged(RaceColumn raceColumn, boolean newIsStartsWithZeroScore) { - removeFromCache(leaderboard); - } - - @Override - public void hasSplitFleetContiguousScoringChanged(RaceColumn raceColumn, boolean hasSplitFleetContiguousScoring) { - removeFromCache(leaderboard); - } - - @Override - public void isFirstColumnIsNonDiscardableCarryForwardChanged(RaceColumn raceColumn, - boolean firstColumnIsNonDiscardableCarryForward) { - removeFromCache(leaderboard); - } - - @Override - public void raceColumnAddedToContainer(RaceColumn raceColumn) { - removeFromCache(leaderboard); - } - - @Override - public void raceColumnRemovedFromContainer(RaceColumn raceColumn) { - removeFromCache(leaderboard); - } - - @Override - public void raceColumnMoved(RaceColumn raceColumn, int newIndex) { - removeFromCache(leaderboard); - } - - @Override - public void factorChanged(RaceColumn raceColumn, Double oldFactor, Double newFactor) { - removeFromCache(leaderboard); - } - - @Override - public void resultDiscardingRuleChanged(ResultDiscardingRule oldDiscardingRule, - ResultDiscardingRule newDiscardingRule) { - removeFromCache(leaderboard); - } - - @Override - public void competitorDisplayNameChanged(Competitor competitor, String oldDisplayName, - String displayName) { - removeFromCache(leaderboard); - } - - @Override - public void raceLogEventAdded(RaceColumn raceColumn, RaceLogIdentifier raceLogIdentifier, - RaceLogEvent event) { - removeFromCache(leaderboard); - } }; leaderboard.addRaceColumnListener(raceColumnListener); synchronized (raceColumnListeners) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java index 7cee58bf028..c93f076e7d1 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java @@ -12,9 +12,9 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumnListener; import com.sap.sailing.domain.common.MaxPointsReason; +import com.sap.sailing.domain.leaderboard.HasRaceColumnsAndRegattaLike; import com.sap.sailing.domain.leaderboard.ScoreCorrection; import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule; -import com.sap.sailing.domain.regattalike.HasRegattaLike; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.common.TimePoint; @@ -28,14 +28,14 @@ import com.sap.sse.common.TimePoint; * @author Axel Uhl (D043530) * */ -public abstract class AbstractLeaderboardImpl extends AbstractSimpleLeaderboardImpl implements HasRegattaLike{ +public abstract class AbstractLeaderboardImpl extends AbstractSimpleLeaderboardImpl implements HasRaceColumnsAndRegattaLike { private static final long serialVersionUID = -328091952760083438L; - + /** * Cache for the combined competitors of this leaderboard; taken from the {@link TrackedRace#getRace() races of the * tracked races} associated with this leaderboard. Updated when the set of tracked races changes. */ - private transient Iterable allCompetitorsCache; + private transient CompetitorProviderFromRaceColumnsAndRegattaLike competitorsProvider; /** * @param scoreComparator the comparator to use to compare basic scores, such as net points @@ -77,18 +77,10 @@ public abstract class AbstractLeaderboardImpl extends AbstractSimpleLeaderboardI */ @Override public Iterable getAllCompetitors() { - if (allCompetitorsCache == null) { - Set result = new HashSet(); - synchronized (this) { - for (TrackedRace r : getTrackedRaces()) { - for (Competitor c : r.getRace().getCompetitors()) { - result.add(c); - } - } - } - allCompetitorsCache = result; + if (competitorsProvider == null) { + competitorsProvider = new CompetitorProviderFromRaceColumnsAndRegattaLike(this); } - return allCompetitorsCache; + return competitorsProvider.getAllCompetitors(); } @Override @@ -144,18 +136,6 @@ public abstract class AbstractLeaderboardImpl extends AbstractSimpleLeaderboardI return correctedRank; } - @Override - public void trackedRaceLinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) { - allCompetitorsCache = null; - super.trackedRaceLinked(raceColumn, fleet, trackedRace); - } - - @Override - public void trackedRaceUnlinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) { - allCompetitorsCache = null; - super.trackedRaceUnlinked(raceColumn, fleet, trackedRace); - } - // Note: no need to redefine isMedalRaceChanged because that doesn't affect the competitorsCache @Override diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java new file mode 100644 index 00000000000..3e15afd35f6 --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java @@ -0,0 +1,149 @@ +package com.sap.sailing.domain.leaderboard.impl; + +import java.util.HashSet; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; + +import com.sap.sailing.domain.abstractlog.race.RaceLog; +import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; +import com.sap.sailing.domain.abstractlog.race.RaceLogRevokeEvent; +import com.sap.sailing.domain.abstractlog.race.impl.BaseRaceLogEventVisitor; +import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogRegisterCompetitorEvent; +import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; +import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; +import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; +import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRevokeEvent; +import com.sap.sailing.domain.abstractlog.regatta.impl.BaseRegattaLogEventVisitor; +import com.sap.sailing.domain.abstractlog.shared.analyzing.RegisteredCompetitorsAnalyzer; +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.RaceColumn; +import com.sap.sailing.domain.base.RaceColumnListener; +import com.sap.sailing.domain.base.impl.RaceColumnListenerWithDefaultAction; +import com.sap.sailing.domain.leaderboard.HasRaceColumnsAndRegattaLike; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.common.Util; + +/** + * A caching provider of a competitor set, based on the tracked races and {@link RaceLog}s of the {@link RaceColumn}s of + * a {@link HasRaceColumnsAndRegattaLike} and the {@link RegattaLog} of the same object. After an answer has been provided, + * it is cached. The cache is invalidated when one of the following events occurs: + *
    + *
  • a competitor is registered with or unregistered from a race log of any of the race columns or the regatta log
  • + *
  • a race column is added or removed
  • + *
  • a tracked race is linked to or unlinked from any of the race columns
  • + *
+ * + * @author Axel Uhl (d043530) + * + */ +public class CompetitorProviderFromRaceColumnsAndRegattaLike { + private static final Logger logger = Logger.getLogger(CompetitorProviderFromRaceColumnsAndRegattaLike.class.getName()); + + private final HasRaceColumnsAndRegattaLike provider; + + private final RegattaLogEventVisitor regattaLogCompetitorsCacheInvalidationListener; + + private final RaceLogEventVisitor raceLogCompetitorsCacheInvalidationListener; + + private final RaceColumnListener raceColumnListener; + + private transient Iterable allCompetitorsCache; + + public CompetitorProviderFromRaceColumnsAndRegattaLike(HasRaceColumnsAndRegattaLike provider) { + super(); + this.provider = provider; + regattaLogCompetitorsCacheInvalidationListener = new BaseRegattaLogEventVisitor() { + @Override + public void visit(RegattaLogRegisterCompetitorEvent event) { + invalidateAllCompetitorsCache(); + } + + @Override + public void visit(RegattaLogRevokeEvent event) { + try { + if (RegattaLogRegisterCompetitorEvent.class.isAssignableFrom(Class.forName(event.getRevokedEventType()))) { + + } + } catch (ClassNotFoundException e) { + logger.log(Level.WARNING, "Problem occurred trying to resolve revoked event class "+event.getRevokedEventType(), e); + } + } + }; + raceLogCompetitorsCacheInvalidationListener = new BaseRaceLogEventVisitor() { + @Override + public void visit(RaceLogRegisterCompetitorEvent event) { + invalidateAllCompetitorsCache(); + } + + @Override + public void visit(RaceLogRevokeEvent event) { + try { + if (RaceLogRegisterCompetitorEvent.class.isAssignableFrom(Class.forName(event.getRevokedEventType()))) { + + } + } catch (ClassNotFoundException e) { + logger.log(Level.WARNING, "Problem occurred trying to resolve revoked event class "+event.getRevokedEventType(), e); + } + } + }; + raceColumnListener = new RaceColumnListenerWithDefaultAction() { + private static final long serialVersionUID = -8678230058730043052L; + + @Override + public void defaultAction() {} + + @Override + public void trackedRaceLinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) { + invalidateAllCompetitorsCache(); + } + + @Override + public void trackedRaceUnlinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) { + invalidateAllCompetitorsCache(); + } + + @Override + public void raceColumnAddedToContainer(RaceColumn raceColumn) { + invalidateAllCompetitorsCache(); + } + + @Override + public void raceColumnRemovedFromContainer(RaceColumn raceColumn) { + invalidateAllCompetitorsCache(); + } + }; + } + + public Iterable getAllCompetitors() { + if (allCompetitorsCache == null) { + final Set result = new HashSet<>(); + for (RaceColumn rc : provider.getRaceColumns()) { + Util.addAll(rc.getAllCompetitors(), result); + for (final Fleet fleet : rc.getFleets()) { + rc.getRaceLog(fleet).addListener(raceLogCompetitorsCacheInvalidationListener); + } + } + provider.addRaceColumnListener(raceColumnListener); + // consider {@link RegattaLog} + Set viaLog = new RegisteredCompetitorsAnalyzer<>(provider.getRegattaLike().getRegattaLog()).analyze(); + result.addAll(viaLog); + provider.getRegattaLike().getRegattaLog().addListener(regattaLogCompetitorsCacheInvalidationListener); + allCompetitorsCache = result; + } + return allCompetitorsCache; + } + + private void invalidateAllCompetitorsCache() { + allCompetitorsCache = null; + provider.getRegattaLike().getRegattaLog().removeListener(regattaLogCompetitorsCacheInvalidationListener); + for (final RaceColumn rc : provider.getRaceColumns()) { + for (final Fleet fleet : rc.getFleets()) { + rc.getRaceLog(fleet).removeListener(raceLogCompetitorsCacheInvalidationListener); + } + } + provider.removeRaceColumnListener(raceColumnListener); + } + +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/FlexibleLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/FlexibleLeaderboardImpl.java index 705b30ccac3..cac68155f89 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/FlexibleLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/FlexibleLeaderboardImpl.java @@ -8,14 +8,11 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.logging.Logger; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; -import com.sap.sailing.domain.abstractlog.shared.analyzing.RegisteredCompetitorsAnalyzer; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.CourseArea; import com.sap.sailing.domain.base.Fleet; @@ -319,18 +316,6 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements return regattaLikeHelper.getTimeOnDistanceAllowancePerNauticalMile(competitor); } - @Override - public Iterable getAllCompetitors() { - Set result = new HashSet<>(); - for (Competitor c : super.getAllCompetitors()) { - result.add(c); - } - //consider {@link RegattaLog} - Set viaLog = new RegisteredCompetitorsAnalyzer<>(regattaLikeHelper.getRegattaLog()).analyze(); - result.addAll(viaLog); - return result; - } - private class RaceExecutionOrderCache extends AbstractRaceExecutionOrderProvider { private static final long serialVersionUID = 652833386555762661L; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java index df62cb5e664..f97fed4fccd 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java @@ -203,4 +203,9 @@ public class MetaLeaderboardColumn extends SimpleAbstractRaceColumn implements R public RaceExecutionOrderProvider getRaceExecutionOrderProvider() { return null; } + + @Override + public Iterable getAllCompetitors() { + return leaderboard.getAllCompetitors(); + } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/regattalike/LeaderboardThatHasRegattaLike.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/regattalike/LeaderboardThatHasRegattaLike.java index 6899eb31421..1731a2710c3 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/regattalike/LeaderboardThatHasRegattaLike.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/regattalike/LeaderboardThatHasRegattaLike.java @@ -1,6 +1,7 @@ package com.sap.sailing.domain.regattalike; +import com.sap.sailing.domain.leaderboard.HasRaceColumnsAndRegattaLike; import com.sap.sailing.domain.leaderboard.Leaderboard; -public interface LeaderboardThatHasRegattaLike extends Leaderboard, HasRegattaLike { +public interface LeaderboardThatHasRegattaLike extends Leaderboard, HasRaceColumnsAndRegattaLike { } From b36c0464635cafdb8af25549ce2f3c48a82d9345 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 1 Oct 2015 08:14:09 +0200 Subject: [PATCH 443/504] fixed serialization properties of new CompetitorProviderFromRaceColumnsAndRegattaLike listeners --- ...itorProviderFromRaceColumnsAndRegattaLike.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java index 3e15afd35f6..b0f060d9aa5 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java @@ -54,6 +54,13 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { public CompetitorProviderFromRaceColumnsAndRegattaLike(HasRaceColumnsAndRegattaLike provider) { super(); this.provider = provider; + // A note regarding listener serializability: RaceLogListener and RegattaLogListener objects + // don't need to be serializable as the log listeners are a transient structure. The race column + // listeners, however, need to explicitly declare that they are transient. + // This enclosing object is intended not to be serialized and shall be re-constructed by + // its users after de-serialization. Therefore, the transient-ness of the log listeners works + // as intended, and the race column listener explicitly returns true from its isTransient() + // method. regattaLogCompetitorsCacheInvalidationListener = new BaseRegattaLogEventVisitor() { @Override public void visit(RegattaLogRegisterCompetitorEvent event) { @@ -94,6 +101,14 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { @Override public void defaultAction() {} + /** + * As the entire provider object is considered transient, its listeners are so, too. + */ + @Override + public boolean isTransient() { + return true; + } + @Override public void trackedRaceLinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) { invalidateAllCompetitorsCache(); From 42d0fb791dd853366c1010a0671f4a4a2a5fb15d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Thu, 1 Oct 2015 10:29:41 +0200 Subject: [PATCH 444/504] Refactor CompetitorRegistrationDialogs to use DataEntryDialog --- ...bstractCompetitorRegistrationsDialog.java} | 126 ++++++++---------- .../AddDeviceMappingToRaceLogDialog.java | 2 +- .../AddDeviceMappingToRegattaLogDialog.java | 2 +- .../ImportFixesAndAddMappingsDialog.java | 2 +- .../RaceLogCompetitorRegistrationDialog.java | 44 ++++++ .../RaceLogTrackingEventManagementPanel.java | 111 ++++++--------- ...egattaLogCompetitorRegistrationDialog.java | 40 ++++++ .../sailing/gwt/ui/client/SailingService.java | 12 +- .../gwt/ui/client/SailingServiceAsync.java | 8 +- .../sailing/gwt/ui/client/StringMessages.java | 1 + .../gwt/ui/client/StringMessages.properties | 3 +- .../ui/client/StringMessages_de.properties | 3 +- .../gwt/ui/server/SailingServiceImpl.java | 8 +- 13 files changed, 204 insertions(+), 158 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/{RaceLogTrackingCompetitorRegistrationsDialog.java => AbstractCompetitorRegistrationsDialog.java} (70%) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCompetitorRegistrationDialog.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogCompetitorRegistrationDialog.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractCompetitorRegistrationsDialog.java similarity index 70% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractCompetitorRegistrationsDialog.java index e8dd358326a..bfb98de0b9a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCompetitorRegistrationsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractCompetitorRegistrationsDialog.java @@ -12,10 +12,11 @@ import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.CaptionPanel; +import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.HorizontalPanel; -import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.VerticalPanel; +import com.google.gwt.user.client.ui.Widget; import com.google.gwt.view.client.MultiSelectionModel; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.CompetitorDTOImpl; @@ -25,30 +26,29 @@ import com.sap.sse.common.Util; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog; -public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDialog { +public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDialog> { protected CompetitorTableWrapper> allCompetitorsTable; protected CompetitorTableWrapper> registeredCompetitorsTable; protected final boolean filterByLeaderBoardInitially = false; - protected final CompetitorRegistrationHandler competitorRegistrationsHandler; + private final StringMessages stringMessages; + protected final SailingServiceAsync sailingService; + final ErrorReporter errorReporter; + private boolean editable; - static interface CompetitorRegistrationHandler { - void getRegisteredCompetitors(Callback, Throwable> callback); - - void setRegisteredCompetitors(Set competitors); - } - - public RaceLogTrackingCompetitorRegistrationsDialog(final SailingServiceAsync sailingService, + public AbstractCompetitorRegistrationsDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages, final ErrorReporter errorReporter, boolean editable, - CompetitorRegistrationHandler competitorRegistrationHandler) { - super(sailingService, stringMessages, errorReporter, editable); - this.competitorRegistrationsHandler = competitorRegistrationHandler; - - setupUi(); - refreshCompetitors(); + DialogCallback> callback) { + super(stringMessages.registerCompetitors(), /*messsage*/ null, stringMessages.ok(), stringMessages.cancel(), /*validator*/ null, callback); + this.stringMessages = stringMessages; + this.sailingService = sailingService; + this.errorReporter = errorReporter; + this.editable = editable; } - + @Override - protected void addButtons(Panel buttonPanel) { + protected Widget getAdditionalWidget() { + FlowPanel mainPanel = new FlowPanel(); + Button addCompetitorButton = new Button(stringMessages.add(stringMessages.competitor())); addCompetitorButton.addClickHandler(new ClickHandler() { @Override @@ -56,35 +56,8 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi openAddCompetitorDialog(); } }); - buttonPanel.add(addCompetitorButton); - super.addButtons(buttonPanel); - } - - private void move(CompetitorTableWrapper from, CompetitorTableWrapper to, Collection toMove) { - if (!toMove.isEmpty()) { - List newFromList = new ArrayList<>(); - Util.addAll(from.getFilterField().getAll(), newFromList); - newFromList.removeAll(toMove); - from.getFilterField().updateAll(newFromList); - List newToList = new ArrayList<>(); - Util.addAll(to.getFilterField().getAll(), newToList); - newToList.addAll(toMove); - to.getFilterField().updateAll(newToList); - } - } - - private void moveSelected(CompetitorTableWrapper> from, - CompetitorTableWrapper> to) { - move(from, to, from.getSelectionModel().getSelectedSet()); - } - - @Override - protected void addMainContent(Panel mainPanel) { - super.addMainContent(mainPanel); - - HorizontalPanel panel = new HorizontalPanel(); - mainPanel.add(panel); + HorizontalPanel competitorRegistrationPanel = new HorizontalPanel(); CaptionPanel allCompetitorsPanel = new CaptionPanel(stringMessages.competitorPool()); CaptionPanel registeredCompetitorsPanel = new CaptionPanel(stringMessages.registeredCompetitors()); allCompetitorsTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ true); @@ -110,11 +83,37 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi moveSelected(registeredCompetitorsTable, allCompetitorsTable); } }); - panel.add(registeredCompetitorsPanel); - panel.add(movePanel); - panel.setCellVerticalAlignment(movePanel, HasVerticalAlignment.ALIGN_MIDDLE); - panel.add(allCompetitorsPanel); + competitorRegistrationPanel.add(registeredCompetitorsPanel); + competitorRegistrationPanel.add(movePanel); + competitorRegistrationPanel.setCellVerticalAlignment(movePanel, HasVerticalAlignment.ALIGN_MIDDLE); + competitorRegistrationPanel.add(allCompetitorsPanel); + + refreshCompetitors(); + + mainPanel.add(addCompetitorButton); + mainPanel.add(competitorRegistrationPanel); + + return mainPanel; } + + void move(CompetitorTableWrapper from, CompetitorTableWrapper to, Collection toMove) { + if (!toMove.isEmpty()) { + List newFromList = new ArrayList<>(); + Util.addAll(from.getFilterField().getAll(), newFromList); + newFromList.removeAll(toMove); + from.getFilterField().updateAll(newFromList); + List newToList = new ArrayList<>(); + Util.addAll(to.getFilterField().getAll(), newToList); + newToList.addAll(toMove); + to.getFilterField().updateAll(newToList); + } + } + + private void moveSelected(CompetitorTableWrapper> from, + CompetitorTableWrapper> to) { + move(from, to, from.getSelectionModel().getSelectedSet()); + } + private void openAddCompetitorDialog() { new CompetitorEditDialog(stringMessages, new CompetitorDTOImpl(), @@ -143,38 +142,25 @@ public class RaceLogTrackingCompetitorRegistrationsDialog extends AbstractSaveDi protected void refreshCompetitors() { registeredCompetitorsTable.getDataProvider().getList().clear(); + allCompetitorsTable.refreshCompetitorList(null, true, new Callback, Throwable>() { @Override public void onSuccess(Iterable result) { - center(); - - competitorRegistrationsHandler - .getRegisteredCompetitors(new Callback, Throwable>() { - @Override - public void onSuccess(Collection result) { - // add competitors that are already registered - move(allCompetitorsTable, registeredCompetitorsTable, result); - } - - @Override - public void onFailure(Throwable reason) { - errorReporter.reportError("Could not load already registered competitors: " - + reason.getMessage()); - } - }); + setRegisteredCompetitors(); } - + @Override public void onFailure(Throwable reason) { } }); } + + protected abstract void setRegisteredCompetitors(); @Override - protected void save() { + protected Set getResult() { final Set registeredCompetitors = new HashSet<>(); Util.addAll(registeredCompetitorsTable.getAllCompetitors(), registeredCompetitors); - competitorRegistrationsHandler.setRegisteredCompetitors(registeredCompetitors); - hide(); + return registeredCompetitors; } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRaceLogDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRaceLogDialog.java index 397a8bfd18b..8eff62a7807 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRaceLogDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AddDeviceMappingToRaceLogDialog.java @@ -124,7 +124,7 @@ public class AddDeviceMappingToRaceLogDialog extends DataEntryDialog>() { + sailingService.getCompetitorRegistrationsInRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { @Override public void onSuccess(Collection result) { competitorTable.refreshCompetitorList(result); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCompetitorRegistrationDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCompetitorRegistrationDialog.java new file mode 100644 index 00000000000..28d1e4a597b --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCompetitorRegistrationDialog.java @@ -0,0 +1,44 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import java.util.Collection; +import java.util.Set; + +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.sap.sailing.domain.common.dto.CompetitorDTO; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.gwt.client.ErrorReporter; + +public class RaceLogCompetitorRegistrationDialog extends AbstractCompetitorRegistrationsDialog { + + private String leaderboardName; + private String fleetName; + private String raceColumnName; + + public RaceLogCompetitorRegistrationDialog(SailingServiceAsync sailingService, StringMessages stringMessages, + ErrorReporter errorReporter, boolean editable, String leaderboardName, String raceColumnName, String fleetName, + com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback> callback) { + super(sailingService, stringMessages, errorReporter, editable, callback); + this.leaderboardName = leaderboardName; + this.raceColumnName = raceColumnName; + this.fleetName = fleetName; + } + + @Override + protected void setRegisteredCompetitors() { + sailingService.getCompetitorRegistrationsInRaceLog(leaderboardName, raceColumnName, fleetName, + new AsyncCallback>() { + @Override + public void onSuccess(Collection registeredCompetitors) { + move(allCompetitorsTable, registeredCompetitorsTable, registeredCompetitors); + } + + @Override + public void onFailure(Throwable reason) { + errorReporter.reportError("Could not load already registered competitors: " + + reason.getMessage()); + } + }); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java index a3b76983a3f..1bfdd8fbd72 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java @@ -1,12 +1,10 @@ package com.sap.sailing.gwt.ui.adminconsole; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Set; import com.google.gwt.cell.client.FieldUpdater; -import com.google.gwt.core.client.Callback; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.i18n.client.LocaleInfo; @@ -26,7 +24,6 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.domain.common.racelog.tracking.RaceLogTrackingState; -import com.sap.sailing.gwt.ui.adminconsole.RaceLogTrackingCompetitorRegistrationsDialog.CompetitorRegistrationHandler; import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer; import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher; import com.sap.sailing.gwt.ui.client.RegattaRefresher; @@ -106,43 +103,32 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf if (RaceLogTrackingEventManagementImagesBarCell.ACTION_DENOTE_FOR_RACELOG_TRACKING.equals(value)) { denoteForRaceLogTracking(leaderboardDTO); } else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_COMPETITOR_REGISTRATIONS.equals(value)) { - new RaceLogTrackingCompetitorRegistrationsDialog(sailingService, stringMessages, errorReporter, - /* editable */ true, new CompetitorRegistrationHandler() { - - @Override - public void setRegisteredCompetitors(Set registeredCompetitors) { - sailingService.setCompetitorRegistrations(leaderboardName, registeredCompetitors, - new AsyncCallback() { - @Override - public void onSuccess(Void result) { - // pass - } + new RegattaLogCompetitorRegistrationDialog(sailingService, stringMessages, errorReporter, /*editable*/ true, + leaderboardName, new DialogCallback>() { - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not save competitor registrations: " - + caught.getMessage()); - } + @Override + public void ok(Set registeredCompetitors) { + sailingService.setCompetitorRegistrationsInRegattaLog(leaderboardName, registeredCompetitors, + new AsyncCallback() { + @Override + public void onSuccess(Void result) { + // pass + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not save competitor registrations: " + + caught.getMessage()); + } }); - } + } - @Override - public void getRegisteredCompetitors( - final Callback, Throwable> callback) { - sailingService.getCompetitorRegistrations(leaderboardName, - new AsyncCallback>() { - @Override - public void onSuccess(Collection result) { - callback.onSuccess(result); - } + @Override + public void cancel() { + + } - @Override - public void onFailure(Throwable caught) { - callback.onFailure(caught); - } - }); - } - }).show(); + }).show(); } else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_MAP_DEVICES.equals(value)) { new AddDeviceMappingToRegattaLogDialog(sailingService, errorReporter, stringMessages, leaderboardName).show(); @@ -207,44 +193,31 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf removeDenotation(object.getA(), object.getB()); } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_COMPETITOR_REGISTRATIONS .equals(value)) { - new RaceLogTrackingCompetitorRegistrationsDialog(sailingService, stringMessages, errorReporter, - editable, new CompetitorRegistrationHandler() { - @Override - public void getRegisteredCompetitors( - final Callback, Throwable> callback) { - sailingService.getCompetitorRegistrations(leaderboardName, raceColumnName, - fleetName, new AsyncCallback>() { - @Override - public void onSuccess(Collection result) { - callback.onSuccess(result); - } + new RaceLogCompetitorRegistrationDialog(sailingService, stringMessages, errorReporter, editable, leaderboardName, + raceColumnName, fleetName, new DialogCallback>() { - @Override - public void onFailure(Throwable caught) { - callback.onFailure(caught); - } - }); + @Override + public void ok(final Set registeredCompetitors) { + sailingService.setCompetitorRegistrationsInRaceLog(leaderboardName, raceColumnName, + fleetName, registeredCompetitors, new AsyncCallback() { + @Override + public void onSuccess(Void result) { + object.getA().getRaceLogTrackingInfo(object.getB()).competitorRegistrationsExists = !registeredCompetitors.isEmpty(); } @Override - public void setRegisteredCompetitors(final Set registeredCompetitors) { - sailingService.setCompetitorRegistrations(leaderboardName, raceColumnName, - fleetName, registeredCompetitors, new AsyncCallback() { - @Override - public void onSuccess(Void result) { - object.getA().getRaceLogTrackingInfo(object.getB()).competitorRegistrationsExists = !registeredCompetitors - .isEmpty(); - } - - @Override - public void onFailure(Throwable caught) { - errorReporter - .reportError("Could not save competitor registrations: " - + caught.getMessage()); - } - }); + public void onFailure(Throwable caught) { + errorReporter + .reportError("Could not save competitor registrations: " + + caught.getMessage()); } - }).show(); + }); + } + + @Override + public void cancel() { + } + }).show(); } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_DEFINE_COURSE.equals(value)) { new RaceLogTrackingCourseDefinitionDialog(sailingService, stringMessages, errorReporter, leaderboardName, raceColumnName, fleetName).show(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogCompetitorRegistrationDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogCompetitorRegistrationDialog.java new file mode 100644 index 00000000000..8cf53ed4394 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogCompetitorRegistrationDialog.java @@ -0,0 +1,40 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import java.util.Collection; +import java.util.Set; + +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.sap.sailing.domain.common.dto.CompetitorDTO; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.gwt.client.ErrorReporter; + +public class RegattaLogCompetitorRegistrationDialog extends AbstractCompetitorRegistrationsDialog { + + private String leaderboardName; + + public RegattaLogCompetitorRegistrationDialog(SailingServiceAsync sailingService, StringMessages stringMessages, + ErrorReporter errorReporter, boolean editable, String leaderboardName, + com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback> callback) { + super(sailingService, stringMessages, errorReporter, editable, callback); + this.leaderboardName = leaderboardName; + } + + @Override + protected void setRegisteredCompetitors() { + sailingService.getCompetitorRegistrationsInRegattaLog(leaderboardName, + new AsyncCallback>() { + @Override + public void onSuccess(Collection registeredCompetitors) { + move(allCompetitorsTable, registeredCompetitorsTable, registeredCompetitors); + } + + @Override + public void onFailure(Throwable reason) { + errorReporter.reportError("Could not load already registered competitors: " + + reason.getMessage()); + } + }); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 15f1493ed1f..5fecf229381 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -466,19 +466,19 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS void startRaceLogTracking(String leaderboardName, String raceColumnName, String fleetName, boolean trackWind, boolean correctWindByDeclination) throws NotDenotedForRaceLogTrackingException, Exception; - void setCompetitorRegistrations(String leaderboardName, String raceColumnName, String fleetName, Set competitors); + void setCompetitorRegistrationsInRaceLog(String leaderboardName, String raceColumnName, String fleetName, Set competitors); /** * Get the competitors registered in this racelog. Does not automatically include the competitors - * {@link #getCompetitorRegistrations(String) registered for the leaderboard}. + * {@link #getCompetitorRegistrationsInRegattaLog(String) registered for the leaderboard}. */ - Collection getCompetitorRegistrations(String leaderboardName, String raceColumnName, String fleetName); + Collection getCompetitorRegistrationsInRaceLog(String leaderboardName, String raceColumnName, String fleetName); /** * Get the competitors registered in this leaderboard. Does not automatically include the competitors - * {@link #getCompetitorRegistrations(String, String, String) registered for the racelog}. + * {@link #getCompetitorRegistrationsInRaceLog(String, String, String) registered for the racelog}. */ - Collection getCompetitorRegistrations(String leaderboardName) throws DoesNotHaveRegattaLogException; + Collection getCompetitorRegistrationsInRegattaLog(String leaderboardName) throws DoesNotHaveRegattaLogException; void addMarkToRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO); @@ -577,7 +577,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS void updateFixedMarkPassing(String leaderboardName, RaceColumnDTO raceColumnDTO, FleetDTO fleet, Integer indexOfWaypoint, Date dateOfMarkPassing, CompetitorDTO competitorDTO); - void setCompetitorRegistrations(String leaderboardName, Set competitors) + void setCompetitorRegistrationsInRegattaLog(String leaderboardName, Set competitors) throws DoesNotHaveRegattaLogException; /** diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index 17d74d4ef32..285c97f65d6 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -581,17 +581,17 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan * Set the competitor registrations in the racelog. Unregisters formerly registered competitors * that are not listed in {@code competitors}. */ - void setCompetitorRegistrations(String leaderboardName, String raceColumnName, String fleetName, + void setCompetitorRegistrationsInRaceLog(String leaderboardName, String raceColumnName, String fleetName, Set competitors, AsyncCallback callback); /** * Set the competitor registrations in the leaderboard. Unregisters formerly registered competitors * that are not listed in {@code competitors}. */ - void setCompetitorRegistrations(String leaderboardName,Set competitors, + void setCompetitorRegistrationsInRegattaLog(String leaderboardName,Set competitors, AsyncCallback callback); - void getCompetitorRegistrations(String leaderboardName, String raceColumnName, String fleetName, + void getCompetitorRegistrationsInRaceLog(String leaderboardName, String raceColumnName, String fleetName, AsyncCallback> callback); void addMarkToRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO, @@ -671,7 +671,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void setStartTimeReceivedForRace(RaceIdentifier raceIdentifier, Date newStartTimeReceived, AsyncCallback callback); - void getCompetitorRegistrations(String leaderboardName, AsyncCallback> callback); + void getCompetitorRegistrationsInRegattaLog(String leaderboardName, AsyncCallback> callback); void createXYDiagramForBoatClass(String itemText, AsyncCallback asyncCallback); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 50be91a6802..c6ea8d378f1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1388,4 +1388,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String polarResultsPresenter(); String dataMiningRetrieval(); String denoteAllRacesForRaceLogTrackingShorctut(); + String registerCompetitors(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 02162053c0d..7837f0d802b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1355,4 +1355,5 @@ resultsChart=Results Chart tabbedResultsPresenter=Tabbed Results Presenter polarResultsPresenter=Polar Results Presenter dataMiningRetrieval=Data Retrieval -denoteAllRacesForRaceLogTrackingShorctut=Shortcut to denote all races for racelog tracking \ No newline at end of file +denoteAllRacesForRaceLogTrackingShorctut=Shortcut to denote all races for racelog tracking +registerCompetitors=Register Competitors \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 8b2a8c478db..ff2ff30c975 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1344,4 +1344,5 @@ resultsChart=Ergebnis-Diagramm tabbedResultsPresenter=Tab Ergebnis-Darsteller polarResultsPresenter=Polar Ergebnis-Darsteller dataMiningRetrieval=Datenbeschaffung -denoteAllRacesForRaceLogTrackingShorctut=Alle rennen für racelog tracking markieren \ No newline at end of file +denoteAllRacesForRaceLogTrackingShorctut=Alle rennen für racelog tracking markieren +registerCompetitors=Teilnehmer anmelden \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 8b0a0624bd5..7c217e703f1 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -4920,14 +4920,14 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public Collection getCompetitorRegistrations(String leaderboardName, String raceColumnName, String fleetName) { + public Collection getCompetitorRegistrationsInRaceLog(String leaderboardName, String raceColumnName, String fleetName) { return convertToCompetitorDTOs( new RegisteredCompetitorsAnalyzer<>( getRaceLog(leaderboardName, raceColumnName, fleetName)).analyze()); } @Override - public Collection getCompetitorRegistrations(String leaderboardName) + public Collection getCompetitorRegistrationsInRegattaLog(String leaderboardName) throws DoesNotHaveRegattaLogException { return convertToCompetitorDTOs( new RegisteredCompetitorsAnalyzer<>( @@ -4939,7 +4939,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public void setCompetitorRegistrations(String leaderboardName, String raceColumnName, String fleetName, + public void setCompetitorRegistrationsInRaceLog(String leaderboardName, String raceColumnName, String fleetName, Set competitorDTOs) { RaceLog raceLog = getRaceLog(leaderboardName, raceColumnName, fleetName); Set competitors = new HashSet(); @@ -4951,7 +4951,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public void setCompetitorRegistrations(String leaderboardName, Set competitorDTOs) + public void setCompetitorRegistrationsInRegattaLog(String leaderboardName, Set competitorDTOs) throws DoesNotHaveRegattaLogException { RegattaLog regattaLog = getRegattaLogInternal(leaderboardName); Set competitors = new HashSet(); From 4a82b228fb5c2ad934e9e2be5fb73205ca62dc3d Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 1 Oct 2015 11:10:00 +0200 Subject: [PATCH 445/504] added functionality to obtain competitors from race log / tracked race in preparation for use for RCApp; started test case --- ...mpetitorProviderCacheInvalidationTest.java | 84 +++++++++++++++++++ .../sap/sailing/domain/base/RaceColumn.java | 14 +++- .../domain/base/impl/AbstractRaceColumn.java | 16 ++++ ...ProviderFromRaceColumnsAndRegattaLike.java | 54 +++++++++--- .../impl/FlexibleLeaderboardImpl.java | 6 +- .../meta/MetaLeaderboardColumn.java | 11 +++ .../impl/rc/CompetitorsJsonExportServlet.java | 11 --- 7 files changed, 169 insertions(+), 27 deletions(-) create mode 100644 java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java new file mode 100644 index 00000000000..a16a279d57a --- /dev/null +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java @@ -0,0 +1,84 @@ +package com.sap.sailing.domain.test; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.junit.Before; +import org.junit.Test; + +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.impl.BoatClassImpl; +import com.sap.sailing.domain.base.impl.CourseAreaImpl; +import com.sap.sailing.domain.base.impl.FleetImpl; +import com.sap.sailing.domain.base.impl.RegattaImpl; +import com.sap.sailing.domain.base.impl.SeriesImpl; +import com.sap.sailing.domain.common.BoatClassMasterdata; +import com.sap.sailing.domain.leaderboard.impl.CompetitorProviderFromRaceColumnsAndRegattaLike; +import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl; +import com.sap.sailing.domain.leaderboard.impl.LowPoint; +import com.sap.sailing.domain.leaderboard.impl.RegattaLeaderboardImpl; +import com.sap.sailing.domain.leaderboard.impl.ThresholdBasedResultDiscardingRuleImpl; +import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore; +import com.sap.sailing.domain.regattalog.impl.EmptyRegattaLogStore; +import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithStartTimeAndRanks; +import com.sap.sailing.domain.tracking.TrackedRace; +import com.sap.sse.common.Util; +import com.sap.sse.common.impl.MillisecondsTimePoint; + +/** + * Tests the behavior of the class {@link CompetitorProviderFromRaceColumnsAndRegattaLike}, paying particular + * attention to its caching and cache invalidation logic. When competitors are added to regatta logs or race logs + * or when a tracked race is attached to a column or a column is added or removed, its caches need to be + * invalidated and re-calculated accordingly. + * + * @author Axel Uhl (d043530) + * + */ +public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboardTest { + private CompetitorProviderFromRaceColumnsAndRegattaLike competitorProviderFlexibleLeaderboard; + private CompetitorProviderFromRaceColumnsAndRegattaLike competitorProviderRegattaLeaderboard; + private FlexibleLeaderboardImpl flexibleLeaderboard; + private RegattaLeaderboardImpl regattaLeaderboard; + private RegattaImpl regatta; + final int NUMBER_OF_COMP_LISTS = 4; + @SuppressWarnings("unchecked") + private List[] compLists = (List[]) new List[NUMBER_OF_COMP_LISTS]; + + @Before + public void setUp() { + final CourseAreaImpl courseArea = new CourseAreaImpl( + "Test Course Area", UUID.randomUUID()); + flexibleLeaderboard = new FlexibleLeaderboardImpl("Test Flexible Leaderboard", + new ThresholdBasedResultDiscardingRuleImpl(new int[0]), new LowPoint(), courseArea); + competitorProviderFlexibleLeaderboard = new CompetitorProviderFromRaceColumnsAndRegattaLike(flexibleLeaderboard); + regatta = new RegattaImpl(EmptyRaceLogStore.INSTANCE, + EmptyRegattaLogStore.INSTANCE, "Test Regatta", new BoatClassImpl("49er", BoatClassMasterdata._49ER), /* startDate */ + null, /* endDate */null, /* trackedRegattaRegistry */null, new LowPoint(), UUID.randomUUID(), + courseArea); + regattaLeaderboard = new RegattaLeaderboardImpl(regatta, new ThresholdBasedResultDiscardingRuleImpl(new int[0])); + regatta.addSeries(new SeriesImpl("Test Series", /* isMedal */false, Arrays.asList(new FleetImpl("Yellow"), + new FleetImpl("Blue")), Arrays.asList("R1", "R2", "R3"), /* trackedRegattaRegistry */null)); + for (int l = 0; l < NUMBER_OF_COMP_LISTS; l++) { + compLists[l] = new ArrayList(); + for (int i = 0; i < 10; i++) { + compLists[l].add(createCompetitor("" + l + "/" + i)); + } + } + } + + @Test + public void testSimpleCompetitorListOnOneRace() { + TrackedRace trackedRace = new MockedTrackedRaceWithStartTimeAndRanks(MillisecondsTimePoint.now(), compLists[0]); + flexibleLeaderboard.addRace(trackedRace, "R1", /* medalRace */ false); + Set expected = new HashSet<>(compLists[0]); + Set actual = new HashSet<>(); + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors(), actual); + assertEquals(expected, actual); + } +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java index 12a8a97b9c0..73d88aa7405 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumn.java @@ -230,10 +230,16 @@ public interface RaceColumn extends Named { RaceExecutionOrderProvider getRaceExecutionOrderProvider(); /** - * Provides the combined set of competitors from all {@link #getTrackedRace(Fleet) tracked races attached to this column} - * plus the competitors registered through any {@link RaceLog} {@link #getRaceLog(Fleet) attached to this column}. Note that - * this does not include competitors registered through any {@link RegattaLog} on the structure owning (directly or transitively) - * this column. + * Provides the combined set of competitors from all {@link #getTrackedRace(Fleet) tracked races attached to this + * column} or, in case a fleet does not have a tracked race attached, the competitors registered through the + * respective {@link RaceLog} {@link #getRaceLog(Fleet) attached to this column for that fleet}. Note that this does + * not include competitors registered through any {@link RegattaLog} on the structure owning (directly or + * transitively) this column. */ Iterable getAllCompetitors(); + + /** + * Same as {@link #getAllCompetitors()}, but restricted to the single race identified by the fleet parameter. + */ + Iterable getAllCompetitors(Fleet fleet); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java index 61499851241..322a90a446b 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java @@ -230,4 +230,20 @@ public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implem return result; } + @Override + public Iterable getAllCompetitors(final Fleet fleet) { + final Iterable result; + TrackedRace trackedRace = getTrackedRace(fleet); + if (trackedRace != null) { + result = trackedRace.getRace().getCompetitors(); + } else { + // if no tracked race is found, use competitors from race log; this assumes that if a tracked + // race exists, its competitors set takes precedence over what's in the race log. Usually, + // the tracked race will have the same competitors as those in the race log, or more because + // those from the regatta log are added to the tracked race as well. + Set viaRaceLog = new RegisteredCompetitorsAnalyzer<>(getRaceLog(fleet)).analyze(); + result = viaRaceLog; + } + return result; + } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java index b0f060d9aa5..db535cd5d38 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java @@ -2,6 +2,7 @@ package com.sap.sailing.domain.leaderboard.impl; import java.util.HashSet; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; import java.util.logging.Logger; @@ -24,6 +25,7 @@ import com.sap.sailing.domain.base.impl.RaceColumnListenerWithDefaultAction; import com.sap.sailing.domain.leaderboard.HasRaceColumnsAndRegattaLike; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.common.Util; +import com.sap.sse.common.Util.Pair; /** * A caching provider of a competitor set, based on the tracked races and {@link RaceLog}s of the {@link RaceColumn}s of @@ -49,11 +51,14 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { private final RaceColumnListener raceColumnListener; - private transient Iterable allCompetitorsCache; + private Iterable allCompetitorsCache; + + private final ConcurrentHashMap, Iterable> allCompetitorsCacheByRace; public CompetitorProviderFromRaceColumnsAndRegattaLike(HasRaceColumnsAndRegattaLike provider) { super(); this.provider = provider; + this.allCompetitorsCacheByRace = new ConcurrentHashMap<>(); // A note regarding listener serializability: RaceLogListener and RegattaLogListener objects // don't need to be serializable as the log listeners are a transient structure. The race column // listeners, however, need to explicitly declare that they are transient. @@ -64,14 +69,14 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { regattaLogCompetitorsCacheInvalidationListener = new BaseRegattaLogEventVisitor() { @Override public void visit(RegattaLogRegisterCompetitorEvent event) { - invalidateAllCompetitorsCache(); + invalidateAllCompetitorsCaches(); } @Override public void visit(RegattaLogRevokeEvent event) { try { if (RegattaLogRegisterCompetitorEvent.class.isAssignableFrom(Class.forName(event.getRevokedEventType()))) { - + invalidateAllCompetitorsCaches(); } } catch (ClassNotFoundException e) { logger.log(Level.WARNING, "Problem occurred trying to resolve revoked event class "+event.getRevokedEventType(), e); @@ -81,14 +86,14 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { raceLogCompetitorsCacheInvalidationListener = new BaseRaceLogEventVisitor() { @Override public void visit(RaceLogRegisterCompetitorEvent event) { - invalidateAllCompetitorsCache(); + invalidateAllCompetitorsCaches(); } @Override public void visit(RaceLogRevokeEvent event) { try { if (RaceLogRegisterCompetitorEvent.class.isAssignableFrom(Class.forName(event.getRevokedEventType()))) { - + invalidateAllCompetitorsCaches(); } } catch (ClassNotFoundException e) { logger.log(Level.WARNING, "Problem occurred trying to resolve revoked event class "+event.getRevokedEventType(), e); @@ -111,22 +116,22 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { @Override public void trackedRaceLinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) { - invalidateAllCompetitorsCache(); + invalidateAllCompetitorsCaches(); } @Override public void trackedRaceUnlinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) { - invalidateAllCompetitorsCache(); + invalidateAllCompetitorsCaches(); } @Override public void raceColumnAddedToContainer(RaceColumn raceColumn) { - invalidateAllCompetitorsCache(); + invalidateAllCompetitorsCaches(); } @Override public void raceColumnRemovedFromContainer(RaceColumn raceColumn) { - invalidateAllCompetitorsCache(); + invalidateAllCompetitorsCaches(); } }; } @@ -149,16 +154,45 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { } return allCompetitorsCache; } + + /** + * Obtains competitors from the regatta log and adds those from the tracked race for the + * raceColumn/fleet combination or the race log, if no tracked race is attached for this + * combination. Does not eliminate suppressed competitors. + */ + public Iterable getAllCompetitors(final RaceColumn raceColumn, final Fleet fleet) { + Pair key = new Pair<>(raceColumn, fleet); + Iterable result = allCompetitorsCacheByRace.get(key); + if (result == null) { + final Set resultSet = new HashSet<>(); + Util.addAll(raceColumn.getAllCompetitors(fleet), resultSet); + // note: adding listeners is idempotent; at most one occurrence of this listener exists in the race log's listeners set + raceColumn.getRaceLog(fleet).addListener(raceLogCompetitorsCacheInvalidationListener); + // consider {@link RegattaLog} + Set viaLog = new RegisteredCompetitorsAnalyzer<>(provider.getRegattaLike().getRegattaLog()).analyze(); + resultSet.addAll(viaLog); + // note: adding listeners is idempotent; at most one occurrence of this listener exists in the regatta log's listeners set + provider.getRegattaLike().getRegattaLog().addListener(regattaLogCompetitorsCacheInvalidationListener); + result = resultSet; + allCompetitorsCacheByRace.put(key, result); + } + return result; + } - private void invalidateAllCompetitorsCache() { + private void invalidateAllCompetitorsCaches() { allCompetitorsCache = null; + // note: adding listeners was idempotent; at most one occurrence of this listener exists in the regatta log's listeners set provider.getRegattaLike().getRegattaLog().removeListener(regattaLogCompetitorsCacheInvalidationListener); for (final RaceColumn rc : provider.getRaceColumns()) { for (final Fleet fleet : rc.getFleets()) { + // note: adding listeners was idempotent; at most one occurrence of this listener exists in the race log's listeners set rc.getRaceLog(fleet).removeListener(raceLogCompetitorsCacheInvalidationListener); } } + // note: adding listeners was idempotent; at most one occurrence of this listener exists in the race column listeners set provider.removeRaceColumnListener(raceColumnListener); + allCompetitorsCacheByRace.clear(); // this is a little coarse-grained; but given the typical access patterns it should be good enough. + // The change frequency of competitors lists on individual races is much lower than the access frequency to this structure. } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/FlexibleLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/FlexibleLeaderboardImpl.java index cac68155f89..ab37c03d57d 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/FlexibleLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/FlexibleLeaderboardImpl.java @@ -142,8 +142,10 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements private FlexibleRaceColumn addRaceColumn(String name, boolean medalRace, boolean logAlreadyExistingColumn) { FlexibleRaceColumn column = getRaceColumnByName(name); if (column != null) { - final String msg = "Trying to create race column with duplicate name "+name+" in leaderboard "+getName(); - logger.severe(msg); + if (logAlreadyExistingColumn) { + final String msg = "Trying to create race column with duplicate name " + name + " in leaderboard " + getName(); + logger.severe(msg); + } } else { column = createRaceColumn(name, medalRace); column.addRaceColumnListener(this); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java index f97fed4fccd..ea5f9fc74a9 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java @@ -208,4 +208,15 @@ public class MetaLeaderboardColumn extends SimpleAbstractRaceColumn implements R public Iterable getAllCompetitors() { return leaderboard.getAllCompetitors(); } + + @Override + public Iterable getAllCompetitors(Fleet fleet) { + final Iterable result; + if (fleet == metaFleet) { + result = leaderboard.getAllCompetitors(); + } else { + result = Collections.emptySet(); + } + return result; + } } diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/CompetitorsJsonExportServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/CompetitorsJsonExportServlet.java index c890e4411db..632fdde94b2 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/CompetitorsJsonExportServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/CompetitorsJsonExportServlet.java @@ -28,52 +28,42 @@ public class CompetitorsJsonExportServlet extends AbstractJsonHttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String leaderboardName = request.getParameter(RaceLogServletConstants.PARAMS_LEADERBOARD_NAME); if (leaderboardName == null) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, String.format("Missing parameter '%s'.", RaceLogServletConstants.PARAMS_LEADERBOARD_NAME)); return; } - String raceColumnName = request.getParameter(RaceLogServletConstants.PARAMS_RACE_COLUMN_NAME); if (raceColumnName == null) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, String.format("Missing parameter '%s'.", RaceLogServletConstants.PARAMS_RACE_COLUMN_NAME)); return; } - String fleetName = request.getParameter(RaceLogServletConstants.PARAMS_RACE_FLEET_NAME); if (fleetName == null) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, String.format("Missing parameter '%s'.", RaceLogServletConstants.PARAMS_RACE_FLEET_NAME)); return; } - RacingEventService service = getService(); - Leaderboard leaderboard = service.getLeaderboardByName(leaderboardName); if (leaderboard == null) { response.sendError(HttpServletResponse.SC_NOT_FOUND, "No such leaderboard found."); return; } - RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName); if (raceColumn == null) { response.sendError(HttpServletResponse.SC_NOT_FOUND, "No such race column found."); return; } - Fleet fleet = raceColumn.getFleetByName(fleetName); if (fleet == null) { response.sendError(HttpServletResponse.SC_NOT_FOUND, "No such fleet found."); return; } - TrackedRace trackedRace = raceColumn.getTrackedRace(fleet); - JSONArray result = new JSONArray(); - if (trackedRace != null) { CompetitorJsonSerializer serializer = new CompetitorJsonSerializer(new TeamJsonSerializer( new PersonJsonSerializer(new NationalityJsonSerializer())), new BoatJsonSerializer(new BoatClassJsonSerializer())); @@ -82,7 +72,6 @@ public class CompetitorsJsonExportServlet extends AbstractJsonHttpServlet { result.add(serializer.serialize(competitor)); } } - setJsonResponseHeader(response); result.writeJSONString(response.getWriter()); } From 1ff1773760f052348ca25d6fefeb372a3a8f6d34 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 1 Oct 2015 11:28:01 +0200 Subject: [PATCH 446/504] extended test cases for CompetitorProviderFromRaceColumnsAndRegattaLike --- ...mpetitorProviderCacheInvalidationTest.java | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java index a16a279d57a..f41f12ee7d4 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java @@ -70,10 +70,11 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard compLists[l].add(createCompetitor("" + l + "/" + i)); } } + competitorProviderRegattaLeaderboard = new CompetitorProviderFromRaceColumnsAndRegattaLike(regattaLeaderboard); } @Test - public void testSimpleCompetitorListOnOneRace() { + public void testSimpleCompetitorListOnOneRaceInFlexibleLeaderboard() { TrackedRace trackedRace = new MockedTrackedRaceWithStartTimeAndRanks(MillisecondsTimePoint.now(), compLists[0]); flexibleLeaderboard.addRace(trackedRace, "R1", /* medalRace */ false); Set expected = new HashSet<>(compLists[0]); @@ -81,4 +82,40 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors(), actual); assertEquals(expected, actual); } + + @Test + public void testTwoCompetitorListsOnTwoRacesInFlexibleLeaderboard() { + TrackedRace trackedRace1 = new MockedTrackedRaceWithStartTimeAndRanks(MillisecondsTimePoint.now(), compLists[0]); + flexibleLeaderboard.addRace(trackedRace1, "R1", /* medalRace */ false); + TrackedRace trackedRace2 = new MockedTrackedRaceWithStartTimeAndRanks(MillisecondsTimePoint.now(), compLists[1]); + flexibleLeaderboard.addRace(trackedRace2, "R2", /* medalRace */ false); + Set expected = new HashSet<>(compLists[0]); + expected.addAll(compLists[1]); + Set actual = new HashSet<>(); + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors(), actual); + assertEquals(expected, actual); + } + + @Test + public void testSimpleCompetitorListOnOneRaceInRegattaLeaderboard() { + TrackedRace trackedRace = new MockedTrackedRaceWithStartTimeAndRanks(MillisecondsTimePoint.now(), compLists[0]); + regattaLeaderboard.getRaceColumnByName("R1").setTrackedRace(regattaLeaderboard.getRaceColumnByName("R1").getFleetByName("Yellow"), trackedRace); + Set expected = new HashSet<>(compLists[0]); + Set actual = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors(), actual); + assertEquals(expected, actual); + } + + @Test + public void testTwoCompetitorListsOnTwoRacesInRegattaLeaderboard() { + TrackedRace trackedRace1 = new MockedTrackedRaceWithStartTimeAndRanks(MillisecondsTimePoint.now(), compLists[0]); + regattaLeaderboard.getRaceColumnByName("R1").setTrackedRace(regattaLeaderboard.getRaceColumnByName("R1").getFleetByName("Yellow"), trackedRace1); + TrackedRace trackedRace2 = new MockedTrackedRaceWithStartTimeAndRanks(MillisecondsTimePoint.now(), compLists[1]); + regattaLeaderboard.getRaceColumnByName("R1").setTrackedRace(regattaLeaderboard.getRaceColumnByName("R1").getFleetByName("Blue"), trackedRace2); + Set expected = new HashSet<>(compLists[0]); + expected.addAll(compLists[1]); + Set actual = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors(), actual); + assertEquals(expected, actual); + } } From edead1d1cdc6758dea5d9ffa990502c877bfe163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Thu, 1 Oct 2015 11:30:53 +0200 Subject: [PATCH 447/504] Refactor RaceLogTrackingCourseDefinitionDialog to use DataEntryDialog --- .../adminconsole/CourseManagementWidget.java | 24 +- .../RaceCourseManagementPanel.java | 31 +++ .../RaceLogCourseManagementWidget.java | 150 +++++++++++++ ...RaceLogTrackingCourseDefinitionDialog.java | 208 ++++-------------- .../RaceLogTrackingEventManagementPanel.java | 28 ++- 5 files changed, 247 insertions(+), 194 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCourseManagementWidget.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java index 4b25ef55602..3ac01a1e044 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseManagementWidget.java @@ -46,7 +46,6 @@ public abstract class CourseManagementWidget implements IsWidget { protected final HorizontalPanel waypointsBtnsPanel; protected final HorizontalPanel controlPointsBtnsPanel; protected final HorizontalPanel marksBtnsPanel; - protected final HorizontalPanel buttonsPanel; protected final Button insertWaypointBefore; protected final Button insertWaypointAfter; @@ -155,25 +154,6 @@ public abstract class CourseManagementWidget implements IsWidget { } }); controlPointsBtnsPanel.add(addControlPoint); - - buttonsPanel = new HorizontalPanel(); - mainPanel.setWidget(2, 2, buttonsPanel); - Button refreshBtn = new Button(stringMessages.refresh()); - refreshBtn.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - refresh(); - } - }); - buttonsPanel.add(refreshBtn); - Button saveBtn = new Button(stringMessages.save()); - saveBtn.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - save(); - } - }); - buttonsPanel.add(saveBtn); } private void removeWaypoint(WaypointDTO waypoint) { @@ -194,7 +174,7 @@ public abstract class CourseManagementWidget implements IsWidget { } } - protected abstract void save(); + protected void save(){}; private T getFirstSelected(SetSelectionModel selectionModel) { if (selectionModel.getSelectedSet().isEmpty()) { @@ -246,7 +226,7 @@ public abstract class CourseManagementWidget implements IsWidget { }).show(); } - public abstract void refresh(); + public void refresh(){}; protected void updateWaypointsAndControlPoints(RaceCourseDTO raceCourseDTO) { waypoints.getDataProvider().getList().clear(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceCourseManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceCourseManagementPanel.java index 89259e0ba1c..df0832354c8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceCourseManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceCourseManagementPanel.java @@ -2,8 +2,13 @@ package com.sap.sailing.gwt.ui.adminconsole; import java.util.Date; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.HorizontalPanel; import com.sap.sailing.gwt.ui.client.RegattaRefresher; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -66,7 +71,33 @@ public class RaceCourseManagementPanel extends AbstractRaceManagementPanel { } } }; + + FlowPanel courseManagementPanel = new FlowPanel(); + courseManagementPanel.add(courseManagementWidget); + + HorizontalPanel buttonsPanel = new HorizontalPanel(); + + Button refreshBtn = new Button(stringMessages.refresh()); + refreshBtn.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + courseManagementWidget.refresh(); + } + }); + + buttonsPanel.add(refreshBtn); + + Button saveBtn = new Button(stringMessages.save()); + saveBtn.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + courseManagementWidget.save(); + } + }); + + buttonsPanel.add(saveBtn); this.selectedRaceContentPanel.add(courseManagementWidget); + this.selectedRaceContentPanel.add(buttonsPanel); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCourseManagementWidget.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCourseManagementWidget.java new file mode 100644 index 00000000000..0790c403d34 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCourseManagementWidget.java @@ -0,0 +1,150 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import java.util.Set; + +import com.google.gwt.cell.client.FieldUpdater; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.Button; +import com.sap.sailing.domain.common.Position; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.MarkDTO; +import com.sap.sailing.gwt.ui.shared.RaceCourseDTO; +import com.sap.sse.gwt.client.ErrorReporter; +import com.sap.sse.gwt.client.dialog.DataEntryDialog; + +public class RaceLogCourseManagementWidget extends CourseManagementWidget { + protected final String leaderboardName; + protected final String raceColumnName; + protected final String fleetName; + + public RaceLogCourseManagementWidget(final SailingServiceAsync sailingService, final ErrorReporter errorReporter, + final StringMessages stringMessages, final String leaderboardName, final String raceColumnName, + final String fleetName) { + super(sailingService, errorReporter, stringMessages); + + this.leaderboardName = leaderboardName; + this.raceColumnName = raceColumnName; + this.fleetName = fleetName; + + Button addMark = new Button(stringMessages.add(stringMessages.mark())); + addMark.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + new MarkEditDialog(stringMessages, new MarkDTO(null, null), true, + new DataEntryDialog.DialogCallback() { + @Override + public void ok(MarkDTO mark) { + sailingService.addMarkToRaceLog(leaderboardName, raceColumnName, fleetName, mark, + new AsyncCallback() { + @Override + public void onSuccess(Void result) { + refresh(); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not add mark: " + caught.getMessage()); + } + }); + } + + @Override + public void cancel() { + } + }).show(); + } + }); + marksBtnsPanel.add(addMark); + + Button removeMark = new Button(stringMessages.remove(stringMessages.mark())); + removeMark.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + Set marksToRemove = marks.getSelectionModel().getSelectedSet(); + + for (MarkDTO markToRemove : marksToRemove) { + sailingService.revokeMarkDefinitionEventInRaceLog(leaderboardName, raceColumnName, fleetName, + markToRemove, new AsyncCallback() { + + @Override + public void onSuccess(Void result) { + refresh(); + } + + @Override + public void onFailure(Throwable caught) { + } + }); + } + } + }); + marksBtnsPanel.add(removeMark); + + ImagesBarColumn actionColumn = new ImagesBarColumn( + new RaceLogTrackingCourseDefinitionDialogMarksImagesBarCell(stringMessages)); + actionColumn.setFieldUpdater(new FieldUpdater() { + @Override + public void update(int index, final MarkDTO markDTO, String value) { + if (RaceLogTrackingCourseDefinitionDialogMarksImagesBarCell.ACTION_PING.equals(value)) { + new PositionEntryDialog(stringMessages.pingPosition(stringMessages.mark()), stringMessages, + new DataEntryDialog.DialogCallback() { + @Override + public void ok(Position position) { + sailingService.pingMarkViaRaceLogTracking(leaderboardName, raceColumnName, + fleetName, markDTO, position, new AsyncCallback() { + + @Override + public void onSuccess(Void result) { + refresh(); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not ping mark: " + + caught.getMessage()); + } + }); + } + + @Override + public void cancel() { + } + }).show(); + } + } + }); + marks.getTable().addColumn(actionColumn); + } + + @Override + public void refresh() { + sailingService.getLastCourseDefinitionInRaceLog(leaderboardName, raceColumnName, fleetName, + new AsyncCallback() { + @Override + public void onSuccess(RaceCourseDTO result) { + updateWaypointsAndControlPoints(result); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not load course: " + caught.getMessage()); + } + }); + + sailingService.getMarksInRaceLog(leaderboardName, raceColumnName, fleetName, + new AsyncCallback>() { + @Override + public void onSuccess(Iterable result) { + marks.refresh(result); + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not load marks: " + caught.getMessage()); + } + }); + } +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCourseDefinitionDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCourseDefinitionDialog.java index 194def283a5..5556aa82964 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCourseDefinitionDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingCourseDefinitionDialog.java @@ -1,189 +1,57 @@ package com.sap.sailing.gwt.ui.adminconsole; -import java.util.Set; +import java.util.List; -import com.google.gwt.cell.client.FieldUpdater; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.Panel; -import com.sap.sailing.domain.common.Position; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.shared.MarkDTO; -import com.sap.sailing.gwt.ui.shared.RaceCourseDTO; +import com.sap.sailing.gwt.ui.shared.ControlPointDTO; +import com.sap.sse.common.Util.Pair; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog; -public class RaceLogTrackingCourseDefinitionDialog extends RaceLogTrackingDialog { - private class RaceLogCourseManagementWidget extends CourseManagementWidget { - public RaceLogCourseManagementWidget(final SailingServiceAsync sailingService, final ErrorReporter errorReporter, - final StringMessages stringMessages) { - super(sailingService, errorReporter, stringMessages); - - Button addMark = new Button(stringMessages.add(stringMessages.mark())); - addMark.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - new MarkEditDialog(stringMessages, new MarkDTO(null, null), true, new DataEntryDialog.DialogCallback() { - @Override - public void ok(MarkDTO mark) { - sailingService.addMarkToRaceLog(leaderboardName, raceColumnName, fleetName, mark, new AsyncCallback() { - @Override - public void onSuccess(Void result) { - courseManagementWidget.refresh(); - } - - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not add mark: " + caught.getMessage()); - } - }); - } +public class RaceLogTrackingCourseDefinitionDialog extends + DataEntryDialog>> { - @Override - public void cancel() {} - }).show(); - } - }); - marksBtnsPanel.add(addMark); - - Button removeMark = new Button(stringMessages.remove(stringMessages.mark())); - removeMark.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - Set marksToRemove = marks.getSelectionModel().getSelectedSet(); - - for (MarkDTO markToRemove : marksToRemove) { - sailingService.revokeMarkDefinitionEventInRaceLog(leaderboardName, raceColumnName, fleetName, markToRemove, new AsyncCallback() { - - @Override - public void onSuccess(Void result) { - refresh(); - } - - @Override - public void onFailure(Throwable caught) { - } - }); - } - } - }); - marksBtnsPanel.add(removeMark); - - Button cancel = new Button(stringMessages.cancel()); - cancel.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - hide(); - } - }); - buttonsPanel.add(cancel); - - ImagesBarColumn actionColumn = - new ImagesBarColumn( - new RaceLogTrackingCourseDefinitionDialogMarksImagesBarCell(stringMessages)); - actionColumn.setFieldUpdater(new FieldUpdater() { - @Override - public void update(int index, final MarkDTO markDTO, String value) { - if (RaceLogTrackingCourseDefinitionDialogMarksImagesBarCell.ACTION_PING.equals(value)) { - new PositionEntryDialog(stringMessages.pingPosition(stringMessages.mark()), - stringMessages, new DataEntryDialog.DialogCallback() { - @Override - public void ok(Position position) { - sailingService.pingMarkViaRaceLogTracking(leaderboardName, raceColumnName, fleetName, - markDTO, position, new AsyncCallback() { - - @Override - public void onSuccess(Void result) { - refresh(); - } - - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not ping mark: " + caught.getMessage()); - } - }); - } - - @Override - public void cancel() {} - }).show(); - } - } - }); - marks.getTable().addColumn(actionColumn); - } - - @Override - protected void save() { - sailingService.addCourseDefinitionToRaceLog(leaderboardName, raceColumnName, fleetName, - createWaypointPairs(), new AsyncCallback() { - @Override - public void onSuccess(Void result) { - hide(); - } - - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could note save course: " + caught.getMessage()); - } - }); - } - - @Override - public void refresh() { - sailingService.getLastCourseDefinitionInRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback() { - @Override - public void onSuccess(RaceCourseDTO result) { - updateWaypointsAndControlPoints(result); - } - - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not load course: " + caught.getMessage()); - } - }); - - sailingService.getMarksInRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { - @Override - public void onSuccess(Iterable result) { - marks.refresh(result); - } - - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not load marks: " + caught.getMessage()); - } - }); - } - }; - private CourseManagementWidget courseManagementWidget; - - public RaceLogTrackingCourseDefinitionDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages, - final ErrorReporter errorReporter, final String leaderboardName, final String raceColumnName, final String fleetName) { - super(sailingService, stringMessages, errorReporter, leaderboardName, raceColumnName, fleetName); - setupUi(); + private Button refreshButton; + + public RaceLogTrackingCourseDefinitionDialog(final SailingServiceAsync sailingService, + final StringMessages stringMessages, final ErrorReporter errorReporter, final String leaderboardName, + final String raceColumnName, final String fleetName, + DialogCallback>> callback) { + + super(stringMessages.defineCourse(), null, stringMessages.save(), stringMessages.cancel(), /* validator */null, + callback); + + courseManagementWidget = new RaceLogCourseManagementWidget(sailingService, errorReporter, stringMessages, + leaderboardName, raceColumnName, fleetName); + + refreshButton = new Button(stringMessages.refresh()); + refreshButton.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + courseManagementWidget.refresh(); + } + }); + courseManagementWidget.refresh(); } - - @Override - protected void addMainContent(Panel mainPanel) { - super.addMainContent(mainPanel); - - courseManagementWidget = new RaceLogCourseManagementWidget(sailingService, errorReporter, stringMessages); - mainPanel.add(courseManagementWidget); - } - - @Override - protected void addButtons(Panel buttonPanel) { - //reuse buttons of widget - } @Override - protected void save() { - //won't be called, as we are reusing widget buttons + protected Widget getAdditionalWidget() { + FlowPanel panel = new FlowPanel(); + panel.add(refreshButton); + panel.add(courseManagementWidget); + return panel; + } + @Override + protected List> getResult() { + return courseManagementWidget.createWaypointPairs(); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java index 1bfdd8fbd72..6b1c6f9c5a0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java @@ -34,10 +34,13 @@ import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sailing.gwt.ui.shared.RaceLogSetStartTimeAndProcedureDTO; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; import com.sap.sse.common.Util; +import com.sap.sse.common.Util.Pair; import com.sap.sse.common.Util.Triple; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog; import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback; +import com.sap.sailing.gwt.ui.shared.ControlPointDTO; +import com.sap.sailing.domain.common.PassingInstruction; /** * Allows the user to start and stop tracking of races using the RaceLog-tracking connector. @@ -219,8 +222,29 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf } }).show(); } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_DEFINE_COURSE.equals(value)) { - new RaceLogTrackingCourseDefinitionDialog(sailingService, stringMessages, errorReporter, - leaderboardName, raceColumnName, fleetName).show(); + new RaceLogTrackingCourseDefinitionDialog(sailingService, stringMessages, errorReporter, leaderboardName, raceColumnName, + fleetName, new DialogCallback>>() { + + @Override + public void cancel() { + } + + @Override + public void ok(List> waypointPairs) { + sailingService.addCourseDefinitionToRaceLog(leaderboardName, raceColumnName, fleetName, waypointPairs, + new AsyncCallback() { + @Override + public void onSuccess(Void result) { + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could note save course: " + caught.getMessage()); + } + }); + } + }).show(); + } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_MAP_DEVICES.equals(value)) { new RaceLogTrackingDeviceMappingsDialog(sailingService, stringMessages, errorReporter, leaderboardName, raceColumnName, fleetName).show(); } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_COPY.equals(value)) { From 3a860fe5282e8b58f0ac22ba1916abc3424bb2c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Thu, 1 Oct 2015 13:10:21 +0200 Subject: [PATCH 448/504] Refactor CreateDefaultRegattaLeaderboardDialog to use DataEntryDialog --- ...CreateDefaultRegattaLeaderboardDialog.java | 46 +++---------------- .../adminconsole/RegattaManagementPanel.java | 27 +++++++++-- .../sailing/gwt/ui/client/StringMessages.java | 1 + .../gwt/ui/client/StringMessages.properties | 3 +- .../ui/client/StringMessages_de.properties | 3 +- 5 files changed, 34 insertions(+), 46 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java index 1852da65e91..adc27848469 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateDefaultRegattaLeaderboardDialog.java @@ -1,58 +1,26 @@ package com.sap.sailing.gwt.ui.adminconsole; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.Panel; import com.sap.sailing.domain.common.RegattaIdentifier; import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.RegattaDTO; -import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; import com.sap.sse.gwt.client.ErrorReporter; +import com.sap.sse.gwt.client.dialog.DataEntryDialog; -public class CreateDefaultRegattaLeaderboardDialog extends AbstractCancelableDialog{ +public class CreateDefaultRegattaLeaderboardDialog extends DataEntryDialog{ private RegattaDTO regatta; - private Button okButton; public CreateDefaultRegattaLeaderboardDialog(SailingServiceAsync sailingService, StringMessages stringMessages, - ErrorReporter errorReporter, RegattaDTO regatta) { - super(sailingService, stringMessages, errorReporter); + ErrorReporter errorReporter, RegattaDTO regatta, DialogCallback callback) { + super(stringMessages.createDefaultRegattaLeaderboard(), /*message*/ stringMessages.doYouWantToCreateADefaultRegattaLeaderboard(), stringMessages.yes(), stringMessages.no(), /*validator*/ null, callback); this.regatta = regatta; - setupUi(); } - protected void addButtons(Panel buttonPanel) { - super.addButtons(buttonPanel); - okButton = new Button(stringMessages.ok()); - okButton.setTitle(stringMessages.canOnlyBeEditedBeforeStartingTracking()); - okButton.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - ok(); - } - }); - buttonPanel.add(okButton); - } - - protected void ok() { - RegattaIdentifier regattaIdentifier = new RegattaName(regatta.getName()); - sailingService.createRegattaLeaderboard(regattaIdentifier, /* displayName */ null, new int[]{}, - new AsyncCallback() { - @Override - public void onFailure(Throwable t) { - errorReporter.reportError("Error trying to create default regatta leaderboard for " + regatta.getName() - + ": " + t.getMessage()); - } - - @Override - public void onSuccess(StrippedLeaderboardDTO result) { - hide(); - } - }); + @Override + protected RegattaIdentifier getResult() { + return new RegattaName(regatta.getName()); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaManagementPanel.java index e3e8ee8415f..9c1dcbdbd1e 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaManagementPanel.java @@ -28,6 +28,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sailing.gwt.ui.shared.SeriesDTO; +import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback; @@ -164,11 +165,27 @@ public class RegattaManagementPanel extends SimplePanel implements RegattasDispl } private void openCreateDefaultRegattaLeaderboardDialog(final RegattaDTO newRegatta){ - CreateDefaultRegattaLeaderboardDialog dialog = new CreateDefaultRegattaLeaderboardDialog(sailingService, stringMessages, errorReporter, newRegatta); - dialog.ensureDebugId("CreateDefaultRegattaLeaderboardDialog"); - dialog.setText(stringMessages.createDefaultRegattaLeaderboard()); - dialog.setTitle(stringMessages.createDefaultRegattaLeaderboard()); - dialog.show(); + new CreateDefaultRegattaLeaderboardDialog(sailingService, stringMessages, errorReporter, newRegatta, new DialogCallback() { + @Override + public void ok(RegattaIdentifier regattaIdentifier) { + sailingService.createRegattaLeaderboard(regattaIdentifier, /* displayName */ null, new int[]{}, + new AsyncCallback() { + @Override + public void onFailure(Throwable t) { + errorReporter.reportError("Error trying to create default regatta leaderboard for " + newRegatta.getName() + + ": " + t.getMessage()); + } + + @Override + public void onSuccess(StrippedLeaderboardDTO result) { + } + }); + } + + @Override + public void cancel() { + } + }).show(); } private void createNewRegatta(final RegattaDTO newRegatta) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 6e4250e042f..3ebe41a916b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1390,4 +1390,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String denoteAllRacesForRaceLogTrackingShorctut(); String registerCompetitors(); String createDefaultRegattaLeaderboard(); + String doYouWantToCreateADefaultRegattaLeaderboard(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 79f86047e96..238c61b23bc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1357,4 +1357,5 @@ tabbedResultsPresenter=Tabbed Results Presenter polarResultsPresenter=Polar Results Presenter dataMiningRetrieval=Data Retrieval denoteAllRacesForRaceLogTrackingShorctut=Shortcut to denote all races for racelog tracking -registerCompetitors=Register Competitors \ No newline at end of file +registerCompetitors=Register Competitors +doYouWantToCreateADefaultRegattaLeaderboard=Do you want to create a default Regatta Leaderboard? \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index fd4fc91316a..c8f425a6aa6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1346,4 +1346,5 @@ tabbedResultsPresenter=Tab Ergebnis-Darsteller polarResultsPresenter=Polar Ergebnis-Darsteller dataMiningRetrieval=Datenbeschaffung denoteAllRacesForRaceLogTrackingShorctut=Alle rennen für racelog tracking markieren -registerCompetitors=Teilnehmer anmelden \ No newline at end of file +registerCompetitors=Teilnehmer anmelden +doYouWantToCreateADefaultRegattaLeaderboard=Möchten Sie eine Standardrangliste für die Regatta anlegen? \ No newline at end of file From 4a4fb39f654788f1a9ed1be1ee6782e2090f830c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 1 Oct 2015 13:12:22 +0200 Subject: [PATCH 449/504] extended test cases for CompetitorProviderFromRaceColumnsAndRegattaLike --- ...mpetitorProviderCacheInvalidationTest.java | 155 ++++++++++++++++++ 1 file changed, 155 insertions(+) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java index f41f12ee7d4..b7a4e313292 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -12,6 +13,11 @@ import java.util.UUID; import org.junit.Before; import org.junit.Test; +import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl; +import com.sap.sailing.domain.abstractlog.race.RaceLog; +import com.sap.sailing.domain.abstractlog.race.RaceLogEventFactory; +import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; +import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.impl.BoatClassImpl; import com.sap.sailing.domain.base.impl.CourseAreaImpl; @@ -19,6 +25,7 @@ import com.sap.sailing.domain.base.impl.FleetImpl; import com.sap.sailing.domain.base.impl.RegattaImpl; import com.sap.sailing.domain.base.impl.SeriesImpl; import com.sap.sailing.domain.common.BoatClassMasterdata; +import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sailing.domain.leaderboard.impl.CompetitorProviderFromRaceColumnsAndRegattaLike; import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl; import com.sap.sailing.domain.leaderboard.impl.LowPoint; @@ -81,6 +88,70 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard Set actual = new HashSet<>(); Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors(), actual); assertEquals(expected, actual); + Set actualForRace = new HashSet<>(); + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors( + flexibleLeaderboard.getRaceColumnByName("R1"), + flexibleLeaderboard.getFleet(LeaderboardNameConstants.DEFAULT_FLEET_NAME)), actualForRace); + assertEquals(expected, actualForRace); + } + + @Test + public void testSimpleCompetitorListOnOneRaceLogInFlexibleLeaderboard() { + flexibleLeaderboard.addRaceColumn("R1", /* medalRace */ false); + RaceLog raceLog = flexibleLeaderboard.getRacelog("R1", LeaderboardNameConstants.DEFAULT_FLEET_NAME); + for (Competitor c : compLists[0]) { + raceLog.add(RaceLogEventFactory.INSTANCE.createRegisterCompetitorEvent(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), 1, c)); + } + Set expected = new HashSet<>(compLists[0]); + Set actual = new HashSet<>(); + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors(), actual); + assertEquals(expected, actual); + Set actualForRace = new HashSet<>(); + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors( + flexibleLeaderboard.getRaceColumnByName("R1"), + flexibleLeaderboard.getFleet(LeaderboardNameConstants.DEFAULT_FLEET_NAME)), actualForRace); + assertEquals(expected, actualForRace); + } + + @Test + public void testSimpleCompetitorListOnRegattaLogInFlexibleLeaderboard() { + flexibleLeaderboard.addRaceColumn("R1", /* medalRace */ false); + RegattaLog regattaLog = flexibleLeaderboard.getRegattaLog(); + for (Competitor c : compLists[0]) { + regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), MillisecondsTimePoint.now(), UUID.randomUUID(), c)); + } + Set expected = new HashSet<>(compLists[0]); + Set actual = new HashSet<>(); + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors(), actual); + assertEquals(expected, actual); + Set actualForRace = new HashSet<>(); + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors( + flexibleLeaderboard.getRaceColumnByName("R1"), + flexibleLeaderboard.getFleet(LeaderboardNameConstants.DEFAULT_FLEET_NAME)), actualForRace); + assertEquals(expected, actualForRace); + } + + @Test + public void testSimpleCompetitorListOnOneRaceLogAndRegattaLogInFlexibleLeaderboard() { + flexibleLeaderboard.addRaceColumn("R1", /* medalRace */ false); + RegattaLog regattaLog = flexibleLeaderboard.getRegattaLog(); + for (Competitor c : compLists[0]) { + regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), MillisecondsTimePoint.now(), UUID.randomUUID(), c)); + } + RaceLog raceLog = flexibleLeaderboard.getRacelog("R1", LeaderboardNameConstants.DEFAULT_FLEET_NAME); + for (Competitor c : compLists[1]) { + raceLog.add(RaceLogEventFactory.INSTANCE.createRegisterCompetitorEvent(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), 1, c)); + } + Set expected = new HashSet<>(compLists[0]); + expected.addAll(compLists[1]); + Set actual = new HashSet<>(); + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors(), actual); + assertEquals(expected, actual); + Set actualForRace = new HashSet<>(); + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors( + flexibleLeaderboard.getRaceColumnByName("R1"), + flexibleLeaderboard.getFleet(LeaderboardNameConstants.DEFAULT_FLEET_NAME)), actualForRace); + assertEquals(expected, actualForRace); } @Test @@ -94,6 +165,16 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard Set actual = new HashSet<>(); Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors(), actual); assertEquals(expected, actual); + Set actualForRace1 = new HashSet<>(); + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors( + flexibleLeaderboard.getRaceColumnByName("R1"), + flexibleLeaderboard.getFleet(LeaderboardNameConstants.DEFAULT_FLEET_NAME)), actualForRace1); + Set actualForRace2 = new HashSet<>(); + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors( + flexibleLeaderboard.getRaceColumnByName("R2"), + flexibleLeaderboard.getFleet(LeaderboardNameConstants.DEFAULT_FLEET_NAME)), actualForRace2); + assertEquals(new HashSet<>(compLists[0]), actualForRace1); + assertEquals(new HashSet<>(compLists[1]), actualForRace2); } @Test @@ -104,6 +185,14 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard Set actual = new HashSet<>(); Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors(), actual); assertEquals(expected, actual); + Set actualForRaceYellow = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( + regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Yellow")), actualForRaceYellow); + assertEquals(expected, actualForRaceYellow); + Set actualForRaceBlue = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( + regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Blue")), actualForRaceBlue); + assertEquals(Collections.emptySet(), actualForRaceBlue); } @Test @@ -117,5 +206,71 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard Set actual = new HashSet<>(); Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors(), actual); assertEquals(expected, actual); + Set actualForRaceYellow = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( + regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Yellow")), actualForRaceYellow); + assertEquals(new HashSet<>(compLists[0]), actualForRaceYellow); + Set actualForRaceBlue = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( + regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Blue")), actualForRaceBlue); + assertEquals(new HashSet<>(compLists[1]), actualForRaceBlue); } + + @Test + public void testSimpleCompetitorListOnOneRaceLogInRegattaLeaderboard() { + RaceLog raceLog = regattaLeaderboard.getRacelog("R1", "Yellow"); + for (Competitor c : compLists[0]) { + raceLog.add(RaceLogEventFactory.INSTANCE.createRegisterCompetitorEvent(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), 1, c)); + } + Set expected = new HashSet<>(compLists[0]); + Set actual = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors(), actual); + assertEquals(expected, actual); + Set actualForRaceYellow = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( + regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Yellow")), actualForRaceYellow); + assertEquals(new HashSet<>(compLists[0]), actualForRaceYellow); + } + + @Test + public void testSimpleCompetitorListOnRegattaLogInRegattaLeaderboard() { + RegattaLog regattaLog = regattaLeaderboard.getRegatta().getRegattaLog(); + for (Competitor c : compLists[0]) { + regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), MillisecondsTimePoint.now(), UUID.randomUUID(), c)); + } + Set expected = new HashSet<>(compLists[0]); + Set actual = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors(), actual); + assertEquals(expected, actual); + Set actualForRaceYellow = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( + regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Yellow")), actualForRaceYellow); + assertEquals(new HashSet<>(compLists[0]), actualForRaceYellow); + Set actualForRaceBlue = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( + regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Blue")), actualForRaceBlue); + assertEquals(new HashSet<>(compLists[0]), actualForRaceBlue); + } + + @Test + public void testSimpleCompetitorListOnOneRaceLogAndRegattaLogInRegattaLeaderboard() { + RegattaLog regattaLog = regattaLeaderboard.getRegatta().getRegattaLog(); + for (Competitor c : compLists[0]) { + regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), MillisecondsTimePoint.now(), UUID.randomUUID(), c)); + } + RaceLog raceLog = regattaLeaderboard.getRacelog("R1", "Yellow"); + for (Competitor c : compLists[1]) { + raceLog.add(RaceLogEventFactory.INSTANCE.createRegisterCompetitorEvent(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), 1, c)); + } + Set expected = new HashSet<>(compLists[0]); + expected.addAll(compLists[1]); + Set actual = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors(), actual); + assertEquals(expected, actual); + Set actualForRaceYellow = new HashSet<>(); + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( + regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Yellow")), actualForRaceYellow); + assertEquals(expected, actualForRaceYellow); + } + } From 1df0b9c647494fb501ab5aab15411dea5fec1f2c Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 1 Oct 2015 14:13:00 +0200 Subject: [PATCH 450/504] Competition Format - Adjusted representation of different race states in mobile version --- .../regattacompetition/RegattaCompetition.gss | 52 ++++++++++++++----- .../RegattaCompetitionFleetRace.java | 17 ++++-- .../RegattaCompetitionFleetRace.ui.xml | 5 +- .../RegattaCompetitionResources.java | 2 + 4 files changed, 56 insertions(+), 20 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss index c0f5ee74935..1d7860b3ea0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss @@ -48,7 +48,7 @@ .regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_race_title { position: absolute; top: 50%; - left: 1em; + left: 1.133333333333333em; -webkit-transform: translateY(-50%); -moz-transform: translateY(-50%); -ms-transform: translateY(-50%); @@ -57,9 +57,9 @@ .regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_race_title:after { display: none; } -.regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_race_subtitle { - font-size: 0.866666666666667em; -} +/* .regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_race_subtitle { */ +/* font-size: 0.866666666666667em; */ +/* } */ .regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_race_arrow { display: block; } @@ -83,25 +83,39 @@ background: #008fcc; } .regattacompetition_phase_fleet_raceuntracked { -/* background: #666; */ - background: #f0ab00; + color: #008fcc; + background-color: #fff; + border: 0.133333333333333em solid #008fcc; + padding: .933333333333333em 0; + cursor: default; } .regattacompetition_phase_fleet_raceuntracked .regattacompetition_phase_fleet_race_title:after { display: none; } +.regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_raceuntracked .regattacompetition_phase_fleet_race_title { + left: 1em; +} .regattacompetition_phase_fleet_racelive { - background: #e94a1b; + background-color: #e94a1b; } .regattacompetition_phase_fleet_raceplanned { - background: #f6f9fc; - color: #999; - border: 1px solid #999; + background-color: #999; } .regattacompetition_phase_fleet_raceplanned .regattacompetition_phase_fleet_race_title:after { display: none; } +.regattacompetition_phase_fleet_racelive.regattacompetition_phase_fleet_raceuntracked { + color: #e94a1b; + background-color: #fff; + border-color: #e94a1b; +} +.regattacompetition_phase_fleet_raceplanned.regattacompetition_phase_fleet_raceuntracked { + background-color: #fff; + color: #999; + border-color: #999; +} .regattacompetition_phase_fleet_race_title { - font-size: 1.066666666666667em; + font-size: 1.222222222222222em; font-weight: 700; } .regattacompetition_phase_fleet_race_title:after { @@ -112,8 +126,7 @@ background: url("images/home/skip-forward.png") no-repeat center center; } .regattacompetition_phase_fleet_race_subtitle { - font-size: 0.666666666666667em; - text-transform: capitalize; + font-size: 0.7em; } .regattacompetition_phase_fleet_race_arrow { display: none; @@ -128,3 +141,16 @@ .regattacompetition_phase_fleet_raceuntracked .regattacompetition_phase_fleet_race_arrow { display: none; } +.regattacompetition_phase_fleet_race_state { + text-transform: uppercase; +} +.regattacompetition_phase_fleet_race_date { +} +.regattacompetition_phase_fleet_race_title, +.regattacompetition_phase_fleet_race_state, +.regattacompetition_phase_fleet_race_date { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java index 013877f1e12..825064cad60 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java @@ -6,6 +6,7 @@ import com.google.gwt.dom.client.DivElement; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.UIObject; +import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO; import com.sap.sailing.gwt.ui.shared.race.SimpleRaceMetadataDTO.RaceTrackingState; @@ -19,8 +20,10 @@ public class RegattaCompetitionFleetRace extends UIObject { } @UiField RegattaCompetitionResources local_res; + @UiField StringMessages i18n; @UiField DivElement raceNameUi; @UiField DivElement raceDateUi; + @UiField DivElement raceStateUi; private final AnchorElement anchor; public RegattaCompetitionFleetRace(SimpleRaceMetadataDTO race, String raceViewerUrl) { @@ -35,16 +38,20 @@ public class RegattaCompetitionFleetRace extends UIObject { } private void setupRaceState(RaceTrackingState trackingState, RaceViewState viewState) { + boolean isUntrackedRace = trackingState != RaceTrackingState.TRACKED_VALID_DATA; if (viewState == RaceViewState.RUNNING) { anchor.addClassName(local_res.css().regattacompetition_phase_fleet_racelive()); + raceStateUi.setInnerText(isUntrackedRace ? i18n.live() : i18n.actionWatch()); } else if (viewState == RaceViewState.PLANNED || viewState == RaceViewState.SCHEDULED) { anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceplanned()); + raceStateUi.setInnerText(i18n.raceIsPlanned()); + } else { + // TODO: As long as there is no mobile race viewer, show all races as untracked + // raceStateUi.setInnerText(isUntrackedRace ? i18n.finished() : i18n.actionAnalyze()); + raceStateUi.setInnerText(i18n.finished()); } - // TODO: As long as there is no mobile race viewer, show all races as untracked (with different background-color) - anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceuntracked()); - // if (trackingState != RaceTrackingState.TRACKED_VALID_DATA) { - // anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceuntracked()); - // } + setStyleName(anchor, local_res.css().regattacompetition_phase_fleet_raceuntracked(), true); + // setStyleName(anchor, local_res.css().regattacompetition_phase_fleet_raceuntracked(), isUntrackedRace); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml index bec0b491e64..549780f5151 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.ui.xml @@ -6,8 +6,9 @@
-
- +
+
+
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionResources.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionResources.java index fe73b2874ac..165bf96304e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionResources.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionResources.java @@ -30,5 +30,7 @@ public interface RegattaCompetitionResources extends ClientBundle { String regattacompetition_phase_fleet_raceuntracked(); String regattacompetition_phase_fleet_racelive(); String regattacompetition_phase_fleet_raceplanned(); + String regattacompetition_phase_fleet_race_state(); + String regattacompetition_phase_fleet_race_date(); } } From d72d660d4fdd989465e4463dd033fe42e4ad1ffe Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 1 Oct 2015 14:19:58 +0200 Subject: [PATCH 451/504] Competition Format - Removed no longer needed race state legend in mobile version --- .../TempMobileRaceStateLegend.java | 21 ------------------- .../TempMobileRaceStateLegend.ui.xml | 19 ----------------- .../places/event/races/RacesViewImpl.ui.xml | 8 +------ 3 files changed, 1 insertion(+), 47 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.ui.xml diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.java deleted file mode 100644 index 2dbe860abbe..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.sap.sailing.gwt.home.mobile.partials.regattacompetition; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.Element; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.gwt.home.shared.partials.regattanavigation.RegattaNavigationResources; - -public class TempMobileRaceStateLegend extends Widget { - - private static RaceStateLegendUiBinder uiBinder = GWT.create(RaceStateLegendUiBinder.class); - - interface RaceStateLegendUiBinder extends UiBinder { - } - - public TempMobileRaceStateLegend() { - RegattaNavigationResources.INSTANCE.css().ensureInjected(); - setElement(uiBinder.createAndBindUi(this)); - } - -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.ui.xml deleted file mode 100644 index d5f66f23870..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/TempMobileRaceStateLegend.ui.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -
-
- -
-
- -
-
- -
-
-
\ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml index b44db2ddc14..c7c078ad88b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.ui.xml @@ -9,18 +9,12 @@ .pageTitle { font-size: 1.066666666666667em; font-weight: 700; - margin-top: 0.666666666666667em; - } - div.legend { - margin-top: 0.666666666666667em; - margin-bottom: 0.666666666666667em; + margin: 0.666666666666667em 0; }
- -
From 13dca0d6d62176f673c179e849d97761434a1c57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Thu, 1 Oct 2015 14:24:18 +0200 Subject: [PATCH 452/504] Show all competitors for races including the ones from the RegattaLog --- .../RaceLogAddDeviceMappingDialog.java | 2 +- .../RaceLogCompetitorRegistrationDialog.java | 2 +- ...aceLogImportFixesAndAddMappingsDialog.java | 2 +- .../sailing/gwt/ui/client/SailingService.java | 9 +++---- .../gwt/ui/client/SailingServiceAsync.java | 6 ++--- .../gwt/ui/server/SailingServiceImpl.java | 25 +++++++++++++------ 6 files changed, 26 insertions(+), 20 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogAddDeviceMappingDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogAddDeviceMappingDialog.java index 525b701bab1..29a1f4e379a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogAddDeviceMappingDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogAddDeviceMappingDialog.java @@ -63,7 +63,7 @@ public class RaceLogAddDeviceMappingDialog extends AbstractLogAddDeviceMappingDi @Override protected void loadCompetitorsAndMarks() { - sailingService.getCompetitorRegistrationsInRaceLog(leaderboardName, raceColumnName, fleetName, + sailingService.getCompetitorRegistrationsFromLogHierarchy(leaderboardName, raceColumnName, fleetName, itemSelectionPanel.getSetCompetitorsCallback()); sailingService.getMarksInRaceLog(leaderboardName, raceColumnName, fleetName, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCompetitorRegistrationDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCompetitorRegistrationDialog.java index 28d1e4a597b..1fa68449128 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCompetitorRegistrationDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCompetitorRegistrationDialog.java @@ -26,7 +26,7 @@ public class RaceLogCompetitorRegistrationDialog extends AbstractCompetitorRegis @Override protected void setRegisteredCompetitors() { - sailingService.getCompetitorRegistrationsInRaceLog(leaderboardName, raceColumnName, fleetName, + sailingService.getCompetitorRegistrationsFromLogHierarchy(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { @Override public void onSuccess(Collection registeredCompetitors) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java index 67da1ae04f0..236cb70f347 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java @@ -46,7 +46,7 @@ public class RaceLogImportFixesAndAddMappingsDialog extends AbstractLogImportFix @Override void getCompetitorRegistrations(SailingServiceAsync sailingService, final ErrorReporter errorReporter) { - sailingService.getCompetitorRegistrationsInRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { + sailingService.getCompetitorRegistrationsFromLogHierarchy(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { @Override public void onSuccess(Collection result) { competitorTable.refreshCompetitorList(result); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 04810a9be84..84548a16bf7 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -467,12 +467,6 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS throws NotDenotedForRaceLogTrackingException, Exception; void setCompetitorRegistrationsInRaceLog(String leaderboardName, String raceColumnName, String fleetName, Set competitors); - - /** - * Get the competitors registered in this racelog. Does not automatically include the competitors - * {@link #getCompetitorRegistrationsInRegattaLog(String) registered for the leaderboard}. - */ - Collection getCompetitorRegistrationsInRaceLog(String leaderboardName, String raceColumnName, String fleetName); /** * Get the competitors registered in this leaderboard. Does not automatically include the competitors @@ -630,4 +624,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS void revokeMarkDefinitionEventInRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO); + + Collection getCompetitorRegistrationsFromLogHierarchy(String leaderboardName, String raceColumnName, + String fleetName); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index 87468e6539e..0a48eaa58ea 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -591,9 +591,6 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void setCompetitorRegistrationsInRegattaLog(String leaderboardName,Set competitors, AsyncCallback callback); - void getCompetitorRegistrationsInRaceLog(String leaderboardName, String raceColumnName, String fleetName, - AsyncCallback> callback); - void addMarkToRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO, AsyncCallback callback); @@ -734,4 +731,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void revokeMarkDefinitionEventInRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO, AsyncCallback callback); + + void getCompetitorRegistrationsFromLogHierarchy(String leaderboardName, String raceColumnName, String fleetName, + AsyncCallback> setCompetitorsCallback); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 6f4edacf09a..75a604a7a22 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -4921,14 +4921,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S Fleet fleet = raceColumn.getFleetByName(fleetName); return raceColumn.getRaceLog(fleet); } - - @Override - public Collection getCompetitorRegistrationsInRaceLog(String leaderboardName, String raceColumnName, String fleetName) { - return convertToCompetitorDTOs( - new RegisteredCompetitorsAnalyzer<>( - getRaceLog(leaderboardName, raceColumnName, fleetName)).analyze()); - } - + private Competitor getCompetitor(CompetitorDTO dto) { return getService().getCompetitorStore().getExistingCompetitorByIdAsString(dto.getIdAsString()); } @@ -5889,4 +5882,20 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } return result; } + + @Override + public Collection getCompetitorRegistrationsFromLogHierarchy(String leaderboardName, + String raceColumnName, String fleetName) { + List> logHierarchy = getLogHierarchy(leaderboardName, raceColumnName, fleetName); + + Collection competitorRegistrations = new ArrayList(); + + for (AbstractLog abstractLog : logHierarchy) { + competitorRegistrations.addAll(convertToCompetitorDTOs( + new RegisteredCompetitorsAnalyzer<>( + abstractLog).analyze())); + } + + return competitorRegistrations; + } } From 466283610720e2977851252ed0e9c35c21d73667 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 1 Oct 2015 14:33:03 +0200 Subject: [PATCH 453/504] Competition Format - Used new date format for races in mobile version --- .../regattacompetition/RegattaCompetitionFleetRace.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java index 825064cad60..612207709d9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java @@ -33,7 +33,7 @@ public class RegattaCompetitionFleetRace extends UIObject { setupRaceState(race.getTrackingState(), race.getViewState()); this.raceNameUi.setInnerText(race.getRaceName()); if (race.getStart() != null) { - this.raceDateUi.setInnerText(DateAndTimeFormatterUtil.defaultDateFormatter.render(race.getStart())); + this.raceDateUi.setInnerText(DateAndTimeFormatterUtil.weekdayMonthAbbrDayDateFormatter.render(race.getStart())); } } From 591c7366dfc6d9d31c9e4fb1a6ee1e8a49e6d186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Thu, 1 Oct 2015 14:56:23 +0200 Subject: [PATCH 454/504] Refactor TrackingDeviceMappingDialogs to use DataEntryDialog --- ...stractLogTrackingDeviceMappingsDialog.java | 91 ++++++++++--------- .../RaceLogTrackingDeviceMappingsDialog.java | 10 +- .../RaceLogTrackingEventManagementPanel.java | 21 ++++- ...egattaLogTrackingDeviceMappingsDialog.java | 9 +- 4 files changed, 82 insertions(+), 49 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogTrackingDeviceMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogTrackingDeviceMappingsDialog.java index 75eb78cfbf4..4a14ddb6a0e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogTrackingDeviceMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLogTrackingDeviceMappingsDialog.java @@ -24,8 +24,9 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.json.client.JSONObject; import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HorizontalPanel; -import com.google.gwt.user.client.ui.Panel; +import com.google.gwt.user.client.ui.Widget; import com.google.gwt.view.client.CellPreviewEvent; import com.sap.sailing.gwt.ui.adminconsole.DeviceMappingTableWrapper.FilterChangedHandler; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; @@ -34,27 +35,60 @@ import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil; import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO; import com.sap.sailing.gwt.ui.shared.MarkDTO; import com.sap.sse.gwt.client.ErrorReporter; +import com.sap.sse.gwt.client.dialog.DataEntryDialog; -public abstract class AbstractLogTrackingDeviceMappingsDialog extends AbstractSaveDialog { +public abstract class AbstractLogTrackingDeviceMappingsDialog extends DataEntryDialog { public static final double PERCENTAGE_OF_TIMESPAN_TO_EXTEND_OPEN_ENDS = 0.1; public static final String FIELD_INDEX = "index"; public static final int CHART_WIDTH = 500; public static final String SERIES_COLOR = "#fcb913"; - List mappings = new ArrayList(); - DeviceMappingTableWrapper deviceMappingTable; + protected ErrorReporter errorReporter; + protected SailingServiceAsync sailingService; + protected StringMessages stringMessages; + protected List mappings = new ArrayList(); + protected DeviceMappingTableWrapper deviceMappingTable; private Point[] data; private Date latest; private Date earliest; - private Chart chart; + + public AbstractLogTrackingDeviceMappingsDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages, - final ErrorReporter errorReporter) { - super(sailingService, stringMessages, errorReporter, false); - setupUi(); + final ErrorReporter errorReporter, DialogCallback callback) { + super(stringMessages.mapDevices(), /*message*/ null, stringMessages.ok(), stringMessages.cancel(), /*validator*/ null, callback); + + this.stringMessages = stringMessages; + this.sailingService = sailingService; + this.errorReporter = errorReporter; + } + + @Override + protected Widget getAdditionalWidget() { + FlowPanel mainPanel = new FlowPanel(); + + HorizontalPanel buttonPanel = new HorizontalPanel(); + Button addMappingButton = new Button(stringMessages.add()); + addMappingButton.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + addMapping(); + } + }); + buttonPanel.add(addMappingButton); + + Button importBtn = new Button(stringMessages.importFixes()); + importBtn.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + importFixes(); + } + }); + buttonPanel.add(importBtn); + mainPanel.add(buttonPanel); deviceMappingTable = new DeviceMappingTableWrapper(sailingService, stringMessages, errorReporter); @@ -78,8 +112,8 @@ public abstract class AbstractLogTrackingDeviceMappingsDialog extends AbstractSa actionCol.setFieldUpdater(getActionColFieldUpdater()); deviceMappingTable.getTable().addColumn(actionCol, stringMessages.actions()); - HorizontalPanel panel = new HorizontalPanel(); - mainPanel.add(panel); + HorizontalPanel deviceMappingPannel = new HorizontalPanel(); + mainPanel.add(deviceMappingPannel); chart = new Chart() .setType(Series.Type.COLUMN_RANGE) @@ -130,43 +164,14 @@ public abstract class AbstractLogTrackingDeviceMappingsDialog extends AbstractSa } })); - panel.add(chart); - panel.add(deviceMappingTable); - - center(); + deviceMappingPannel.add(chart); + deviceMappingPannel.add(deviceMappingTable); + + return mainPanel; } protected abstract FieldUpdater getActionColFieldUpdater(); - - @Override - protected void addButtons(Panel buttonPanel) { - Button addCompetitorButton = new Button(stringMessages.add()); - addCompetitorButton.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - addMapping(); - } - }); - buttonPanel.add(addCompetitorButton); - Button importBtn = new Button(stringMessages.importFixes()); - importBtn.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - importFixes(); - } - }); - buttonPanel.add(importBtn); - - super.addButtons(buttonPanel); - } - - @Override - protected void save() { - // TODO Auto-generated method stub - - } - void updateChart() { earliest = new Date(Long.MAX_VALUE); latest = new Date(Long.MIN_VALUE); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java index 321076a5559..a9fb9d3246b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java @@ -18,9 +18,10 @@ public class RaceLogTrackingDeviceMappingsDialog extends AbstractLogTrackingDevi public RaceLogTrackingDeviceMappingsDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages, final ErrorReporter errorReporter, final String leaderboardName, - final String raceColumnName, final String fleetName) { + final String raceColumnName, final String fleetName, DialogCallback callback) { - super(sailingService, stringMessages, errorReporter); + super(sailingService, stringMessages, errorReporter, callback); + this.leaderboardName = leaderboardName; this.raceColumnName = raceColumnName; this.fleetName = fleetName; @@ -154,4 +155,9 @@ public class RaceLogTrackingDeviceMappingsDialog extends AbstractLogTrackingDevi } }; } + + @Override + protected Void getResult() { + return null; + } } \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java index 73c77b3de12..2f1764bbd9f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java @@ -133,7 +133,16 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf }).show(); } else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_MAP_DEVICES.equals(value)) { - new RegattaLogTrackingDeviceMappingsDialog(sailingService, stringMessages, errorReporter, leaderboardName).show(); + new RegattaLogTrackingDeviceMappingsDialog(sailingService, stringMessages, errorReporter, + leaderboardName, new DialogCallback() { + @Override + public void ok(Void editedObject) { + } + + @Override + public void cancel() { + } + }).show(); } else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_INVITE_BUOY_TENDERS.equals(value)) { openChooseEventDialogAndSendMails(leaderboardName); } else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_SHOW_REGATTA_LOG.equals(value)) { @@ -245,7 +254,15 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf }).show(); } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_MAP_DEVICES.equals(value)) { - new RaceLogTrackingDeviceMappingsDialog(sailingService, stringMessages, errorReporter, leaderboardName, raceColumnName, fleetName).show(); + new RaceLogTrackingDeviceMappingsDialog(sailingService, stringMessages, errorReporter, leaderboardName, raceColumnName, fleetName, new DialogCallback() { + @Override + public void ok(Void editedObject) { + } + + @Override + public void cancel() { + } + }).show(); } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_COPY.equals(value)) { List races = new ArrayList<>(raceColumnTable.getDataProvider().getList()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java index 0209c712367..86672aeb74a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogTrackingDeviceMappingsDialog.java @@ -15,9 +15,9 @@ public class RegattaLogTrackingDeviceMappingsDialog extends AbstractLogTrackingD protected final String leaderboardName; public RegattaLogTrackingDeviceMappingsDialog(final SailingServiceAsync sailingService, - final StringMessages stringMessages, final ErrorReporter errorReporter, final String leaderboardName) { + final StringMessages stringMessages, final ErrorReporter errorReporter, final String leaderboardName, DialogCallback callback) { - super(sailingService, stringMessages, errorReporter); + super(sailingService, stringMessages, errorReporter, callback); this.leaderboardName = leaderboardName; refresh(); @@ -148,4 +148,9 @@ public class RegattaLogTrackingDeviceMappingsDialog extends AbstractLogTrackingD } }; } + + @Override + protected Void getResult() { + return null; + } } \ No newline at end of file From ad6d7958cf0f768653c155e766b9f6d55499e0e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Thu, 1 Oct 2015 14:59:01 +0200 Subject: [PATCH 455/504] Remove unused AbstractCancelable/AbstractSaveDialog --- .../AbstractCancelableDialog.java | 56 ------------------- .../ui/adminconsole/AbstractSaveDialog.java | 39 ------------- .../adminconsole/RaceLogTrackingDialog.java | 23 -------- 3 files changed, 118 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractCancelableDialog.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractSaveDialog.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDialog.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractCancelableDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractCancelableDialog.java deleted file mode 100644 index 57c9f84d396..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractCancelableDialog.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.sap.sailing.gwt.ui.adminconsole; - -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.DialogBox; -import com.google.gwt.user.client.ui.HorizontalPanel; -import com.google.gwt.user.client.ui.Panel; -import com.google.gwt.user.client.ui.VerticalPanel; -import com.sap.sailing.gwt.ui.client.SailingServiceAsync; -import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sse.gwt.client.ErrorReporter; - -public abstract class AbstractCancelableDialog extends DialogBox { - - protected final SailingServiceAsync sailingService; - protected final StringMessages stringMessages; - protected final ErrorReporter errorReporter; - protected final VerticalPanel mainPanel; - - public AbstractCancelableDialog(SailingServiceAsync sailingService, StringMessages stringMessages, - ErrorReporter errorReporter) { - this.sailingService = sailingService; - this.errorReporter = errorReporter; - this.stringMessages = stringMessages; - - mainPanel = new VerticalPanel(); - setWidget(mainPanel); - } - - /** - * Call from subclass - this allows for finishing constructors of subclasses before building the UI. - */ - protected void setupUi() { - addMainContent(mainPanel); - center(); - } - - protected void addMainContent(Panel mainPanel) { - HorizontalPanel buttonPanel = new HorizontalPanel(); - mainPanel.add(buttonPanel); - - addButtons(buttonPanel); - } - - protected void addButtons(Panel buttonPanel) { - Button cancel = new Button(stringMessages.cancel()); - cancel.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - hide(); - } - }); - buttonPanel.add(cancel); - } -} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractSaveDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractSaveDialog.java deleted file mode 100644 index 464df223935..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractSaveDialog.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.sap.sailing.gwt.ui.adminconsole; - -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.Panel; -import com.sap.sailing.gwt.ui.client.SailingServiceAsync; -import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sse.gwt.client.ErrorReporter; - -public abstract class AbstractSaveDialog extends AbstractCancelableDialog { - - protected Button saveButton; - protected final boolean editable; - - public AbstractSaveDialog(SailingServiceAsync sailingService, StringMessages stringMessages, - ErrorReporter errorReporter, boolean editable) { - super(sailingService, stringMessages, errorReporter); - this.editable = editable; - } - - protected void addButtons(Panel buttonPanel) { - super.addButtons(buttonPanel); - if (editable) { - saveButton = new Button(stringMessages.save()); - saveButton.setTitle(stringMessages.canOnlyBeEditedBeforeStartingTracking()); - saveButton.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - save(); - } - }); - buttonPanel.add(saveButton); - } - } - - protected abstract void save(); - -} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDialog.java deleted file mode 100644 index 345cb6df5db..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDialog.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.sap.sailing.gwt.ui.adminconsole; - -import com.sap.sailing.gwt.ui.client.SailingServiceAsync; -import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sse.gwt.client.ErrorReporter; - -public abstract class RaceLogTrackingDialog extends AbstractSaveDialog { - protected final String leaderboardName; - protected final String raceColumnName; - protected final String fleetName; - public RaceLogTrackingDialog(SailingServiceAsync sailingService, StringMessages stringMessages, - ErrorReporter errorReporter, String leaderboardName, String raceColumnName, String fleetName) { - this(sailingService, stringMessages, errorReporter, leaderboardName, raceColumnName, fleetName, true); - } - - public RaceLogTrackingDialog(SailingServiceAsync sailingService, StringMessages stringMessages, - ErrorReporter errorReporter, String leaderboardName, String raceColumnName, String fleetName, boolean editable) { - super(sailingService, stringMessages, errorReporter, editable); - this.leaderboardName = leaderboardName; - this.raceColumnName = raceColumnName; - this.fleetName = fleetName; - } -} From 73d1928db09c116268adc130b13b7ce8f4dad56a Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 1 Oct 2015 15:23:08 +0200 Subject: [PATCH 456/504] added more tests for competitor calculation, bug 3302 --- ...mpetitorProviderCacheInvalidationTest.java | 6 ++ .../impl/AbstractSimpleLeaderboardImpl.java | 66 +++++++++++++------ ...ProviderFromRaceColumnsAndRegattaLike.java | 15 +++-- 3 files changed, 61 insertions(+), 26 deletions(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java index b7a4e313292..ee46cefbe52 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java @@ -262,11 +262,17 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard for (Competitor c : compLists[1]) { raceLog.add(RaceLogEventFactory.INSTANCE.createRegisterCompetitorEvent(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), 1, c)); } + regattaLeaderboard.setSuppressed(compLists[0].get(compLists[0].size()-1), /* suppressed */ true); Set expected = new HashSet<>(compLists[0]); expected.addAll(compLists[1]); + Set expectedWithoutSuppressed = new HashSet<>(expected); + expectedWithoutSuppressed.remove(compLists[0].get(compLists[0].size()-1)); Set actual = new HashSet<>(); Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors(), actual); assertEquals(expected, actual); + Set actualWithoutSuppressed = new HashSet<>(); + Util.addAll(regattaLeaderboard.getCompetitors(), actualWithoutSuppressed); + assertEquals(expectedWithoutSuppressed, actualWithoutSuppressed); Set actualForRaceYellow = new HashSet<>(); Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Yellow")), actualForRaceYellow); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java index 1ead18e195c..7086df70b5a 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java @@ -14,6 +14,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.NavigableSet; +import java.util.NoSuchElementException; import java.util.Set; import java.util.UUID; import java.util.concurrent.Callable; @@ -1096,31 +1097,54 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race @Override public Iterable getCompetitors() { - // TODO bug 1348: try to cache result; invalidation would have to listen for columns added and suppression changing; - // for meta-leaderbaords, transitive listening to those events would be necessary. - Set result = new HashSet<>(); - for (Competitor competitor : getAllCompetitors()) { - if (!isSuppressed(competitor)) { - result.add(competitor); - } + final Iterable result; + // mostly the set of suppressed competitors is empty; in this case, avoid having to loop over the + // potentially large set of competitors + if (Util.isEmpty(getSuppressedCompetitors())) { + result = getAllCompetitors(); + } else { + final Iterable allCompetitors = getAllCompetitors(); + final Set suppressed = new HashSet<>(); + Util.addAll(getSuppressedCompetitors(), suppressed); + result = new Iterable() { + @Override + public Iterator iterator() { + return new Iterator() { + private final Iterator allIter = allCompetitors.iterator(); + private Competitor next = advance(); + + private Competitor advance() { + next = null; + while (allIter.hasNext() && next == null) { + next = allIter.next(); + if (suppressed.contains(next)) { + next = null; + } + } + return next; + } + + @Override + public boolean hasNext() { + return next != null; + } + + @Override + public Competitor next() { + if (next == null) { + throw new NoSuchElementException(); + } + final Competitor result = next; + advance(); + return result; + } + }; + } + }; } return result; } - /** - * Defines the difference between {@link #getCompetitors} and {@link #getAllCompetitors}. If a competitor is suppressed, - * it won't participate in the scoring process, particularly because it isn't considered by {@link #getCompetitorsFromBestToWorst(TimePoint)} - * nor {@link #getCompetitorsFromBestToWorst(RaceColumn, TimePoint)}. - */ - private boolean isSuppressed(Competitor competitor) { - LockUtil.lockForRead(suppressedCompetitorsLock); - try { - return suppressedCompetitors.contains(competitor); - } finally { - LockUtil.unlockAfterRead(suppressedCompetitorsLock); - } - } - @Override public Iterable getSuppressedCompetitors() { LockUtil.lockForRead(suppressedCompetitorsLock); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java index db535cd5d38..fbf18e485bc 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java @@ -147,9 +147,8 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { } provider.addRaceColumnListener(raceColumnListener); // consider {@link RegattaLog} - Set viaLog = new RegisteredCompetitorsAnalyzer<>(provider.getRegattaLike().getRegattaLog()).analyze(); + Set viaLog = getCompetitorsFromRegattaLogAndRegisterAsRegattaLogListener(); result.addAll(viaLog); - provider.getRegattaLike().getRegattaLog().addListener(regattaLogCompetitorsCacheInvalidationListener); allCompetitorsCache = result; } return allCompetitorsCache; @@ -168,17 +167,23 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { Util.addAll(raceColumn.getAllCompetitors(fleet), resultSet); // note: adding listeners is idempotent; at most one occurrence of this listener exists in the race log's listeners set raceColumn.getRaceLog(fleet).addListener(raceLogCompetitorsCacheInvalidationListener); + provider.addRaceColumnListener(raceColumnListener); // consider {@link RegattaLog} - Set viaLog = new RegisteredCompetitorsAnalyzer<>(provider.getRegattaLike().getRegattaLog()).analyze(); + Set viaLog = getCompetitorsFromRegattaLogAndRegisterAsRegattaLogListener(); resultSet.addAll(viaLog); - // note: adding listeners is idempotent; at most one occurrence of this listener exists in the regatta log's listeners set - provider.getRegattaLike().getRegattaLog().addListener(regattaLogCompetitorsCacheInvalidationListener); result = resultSet; allCompetitorsCacheByRace.put(key, result); } return result; } + private Set getCompetitorsFromRegattaLogAndRegisterAsRegattaLogListener() { + Set viaLog = new RegisteredCompetitorsAnalyzer<>(provider.getRegattaLike().getRegattaLog()).analyze(); + // note: adding listeners is idempotent; at most one occurrence of this listener exists in the regatta log's listeners set + provider.getRegattaLike().getRegattaLog().addListener(regattaLogCompetitorsCacheInvalidationListener); + return viaLog; + } + private void invalidateAllCompetitorsCaches() { allCompetitorsCache = null; // note: adding listeners was idempotent; at most one occurrence of this listener exists in the regatta log's listeners set From 97a3fe6473428f9f8b0b9152fd478bb22a82ee46 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 1 Oct 2015 15:26:42 +0200 Subject: [PATCH 457/504] fixed updating of team object with new nationality when a competitor is updated; replaced getOrCreateTeam by createTeam; teams are not really re-used --- .../impl/DomainFactoryImpl.java | 33 +++++-------------- 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java index 9a161cb0b33..49dbb11f836 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java @@ -28,7 +28,6 @@ import com.sap.sailing.domain.base.ControlPoint; import com.sap.sailing.domain.base.Course; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.Nationality; -import com.sap.sailing.domain.base.Person; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Sideline; @@ -104,8 +103,6 @@ public class DomainFactoryImpl implements DomainFactory { private final Map, DynamicPerson> personCache = new HashMap<>(); - private final Map teamCache = new HashMap<>(); - /** * Caches regattas by their name and their boat class's name */ @@ -261,7 +258,7 @@ public class DomainFactoryImpl implements DomainFactory { nationality = null; logger.log(Level.SEVERE, "Unknown nationality "+nationalityAsString+" for competitor "+name+"; leaving null", iae); } - DynamicTeam team = getOrCreateTeam(name, nationality, competitorId); + DynamicTeam team = createTeam(name, nationality, competitorId); DynamicBoat boat = new BoatImpl(shortName, boatClass, shortName); result = competitorStore.getOrCreateCompetitor(competitorId, name, null /* displayColor */, null /* email */, null /* flagImag */, team, boat, (double) timeOnTimeFactor, @@ -270,27 +267,15 @@ public class DomainFactoryImpl implements DomainFactory { return result; } - /** - * If a team called name already is known by this domain factory, it is returned. Otherwise, the team name - * is split along "+" signs with one {@link Person} object created for each part. If an existing team is found, its - * nationality will be updated to match nationality. - */ - private DynamicTeam getOrCreateTeam(String name, Nationality nationality, UUID competitorId) { - synchronized (teamCache) { - DynamicTeam result = teamCache.get(competitorId); - if (result == null) { - String[] sailorNames = name.split("\\b*\\+\\b*"); - List sailors = new ArrayList(); - for (String sailorName : sailorNames) { - sailors.add(getOrCreatePerson(sailorName.trim(), nationality, competitorId)); - } - result = new TeamImpl(name, sailors, /* TODO coach not known */null); - teamCache.put(competitorId, result); - } else { - result.setNationality(nationality); - } - return result; + private DynamicTeam createTeam(String name, Nationality nationality, UUID competitorId) { + DynamicTeam result; + String[] sailorNames = name.split("\\b*\\+\\b*"); + List sailors = new ArrayList(); + for (String sailorName : sailorNames) { + sailors.add(getOrCreatePerson(sailorName.trim(), nationality, competitorId)); } + result = new TeamImpl(name, sailors, /* TODO coach not known */null); + return result; } @Override From 39e2578f78adf80f0449087ea1fa9eca80b4a504 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 1 Oct 2015 15:28:48 +0200 Subject: [PATCH 458/504] Competition Format - Adjusted representation of different race states in mobile version --- .../regattacompetition/RegattaCompetition.gss | 11 ++++++++--- .../RegattaCompetitionFleetRace.java | 9 ++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss index 1d7860b3ea0..9c59c4c2d67 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetition.gss @@ -45,6 +45,9 @@ .regattacompetition_phase_fleet:last-child { padding-right: 0.666666666666667em; } +.regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_race { + height: 3.466666666666666666em; +} .regattacompetition_phase_fleetfullwidth .regattacompetition_phase_fleet_race_title { position: absolute; top: 50%; @@ -75,9 +78,11 @@ background: #008fcc; margin-bottom: 0.666666666666667em; text-align: center; - padding: 1.066666666666667em 0; + padding: .8em 0; border-radius: 0.333333333333333em; - color: #f6f9fc; + color: #fff; + /* color: #f6f9fc; alternative white*/ + height: 5em; } .regattacompetition_phase_fleet_racetracked { background: #008fcc; @@ -86,7 +91,7 @@ color: #008fcc; background-color: #fff; border: 0.133333333333333em solid #008fcc; - padding: .933333333333333em 0; + padding: .666666666666667em 0; cursor: default; } .regattacompetition_phase_fleet_raceuntracked .regattacompetition_phase_fleet_race_title:after { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java index 612207709d9..22e163e303b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleetRace.java @@ -38,7 +38,9 @@ public class RegattaCompetitionFleetRace extends UIObject { } private void setupRaceState(RaceTrackingState trackingState, RaceViewState viewState) { - boolean isUntrackedRace = trackingState != RaceTrackingState.TRACKED_VALID_DATA; + // TODO: As long as there is no mobile race viewer, show all races as untracked + boolean isUntrackedRace = true; + // boolean isUntrackedRace = trackingState != RaceTrackingState.TRACKED_VALID_DATA; if (viewState == RaceViewState.RUNNING) { anchor.addClassName(local_res.css().regattacompetition_phase_fleet_racelive()); raceStateUi.setInnerText(isUntrackedRace ? i18n.live() : i18n.actionWatch()); @@ -46,12 +48,9 @@ public class RegattaCompetitionFleetRace extends UIObject { anchor.addClassName(local_res.css().regattacompetition_phase_fleet_raceplanned()); raceStateUi.setInnerText(i18n.raceIsPlanned()); } else { - // TODO: As long as there is no mobile race viewer, show all races as untracked - // raceStateUi.setInnerText(isUntrackedRace ? i18n.finished() : i18n.actionAnalyze()); - raceStateUi.setInnerText(i18n.finished()); + raceStateUi.setInnerText(isUntrackedRace ? i18n.finished() : i18n.actionAnalyze()); } setStyleName(anchor, local_res.css().regattacompetition_phase_fleet_raceuntracked(), true); - // setStyleName(anchor, local_res.css().regattacompetition_phase_fleet_raceuntracked(), isUntrackedRace); } } From fa0d66e756e4af56f5c2ef468d5140c18771093b Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 1 Oct 2015 15:58:46 +0200 Subject: [PATCH 459/504] made WindSourceWithAdditionalID.id final --- .../sailing/domain/common/impl/WindSourceWithAdditionalID.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/WindSourceWithAdditionalID.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/WindSourceWithAdditionalID.java index bf042e1a7e6..cd8c1508d0e 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/WindSourceWithAdditionalID.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/impl/WindSourceWithAdditionalID.java @@ -13,7 +13,7 @@ import com.sap.sailing.domain.common.WindSourceType; public class WindSourceWithAdditionalID extends WindSourceImpl { private static final long serialVersionUID = -142955860536561690L; - private String id; + private final String id; public WindSourceWithAdditionalID(WindSourceType type, String id) { super(type); From 3af571f4ba9bbc00254cb3fbf59843a3997010ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Thu, 1 Oct 2015 16:54:08 +0200 Subject: [PATCH 460/504] Allow to choose whether to copy course, competitors or both --- .../RaceLogTrackingAdapter.java | 30 ++++--- .../impl/RaceLogTrackingAdapterImpl.java | 48 ++++++---- .../CopyCourseAndCompetitorsDialog.java | 80 +++++++++++++++++ .../CourseAndCompetitorCopyOperation.java | 90 +++++++++++++++++++ .../RaceLogTrackingEventManagementPanel.java | 57 ++++-------- .../ui/adminconsole/SelectRacesDialog.java | 55 ------------ .../sailing/gwt/ui/client/SailingService.java | 22 +++-- .../gwt/ui/client/SailingServiceAsync.java | 10 ++- .../sailing/gwt/ui/client/StringMessages.java | 2 + .../gwt/ui/client/StringMessages.properties | 4 +- .../ui/client/StringMessages_de.properties | 4 +- .../gwt/ui/server/SailingServiceImpl.java | 15 +++- 12 files changed, 279 insertions(+), 138 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CopyCourseAndCompetitorsDialog.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseAndCompetitorCopyOperation.java delete mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectRacesDialog.java diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/RaceLogTrackingAdapter.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/RaceLogTrackingAdapter.java index 42f1e823dda..6204f5fd191 100755 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/RaceLogTrackingAdapter.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/RaceLogTrackingAdapter.java @@ -79,20 +79,12 @@ public interface RaceLogTrackingAdapter { * @see #pingMark(RaceLog, Mark, GPSFix, RacingEventService) using a random {@link PingDeviceIdentifier} */ void pingMark(RaceLog raceLogToAddTo, Mark mark, GPSFix gpsFix, RacingEventService service); - + /** * @see #pingMark(RaceLog, Mark, GPSFix, RacingEventService) */ void pingMark(RegattaLog regattaLogToAddTo, Mark mark, GPSFix gpsFix, RacingEventService service); - /** - * Duplicate the course and competitor registrations in the newest {@link RaceLogCourseDesignChangedEvent} in - * {@code from} race log to the {@code to} race logs. The {@link Mark}s and {@link ControlPoint}s are duplicated and - * not reused. This also inserts the necessary {@link RaceLogDefineMarkEvent}s into the {@code to} race logs. - */ - void copyCourseAndCompetitors(RaceLog from, Set to, SharedDomainFactory baseDomainFactory, - RacingEventService service); - /** * If not yet registered, register the competitors in {@code competitors}, and unregister all already registered * competitors not in {@code competitors}. @@ -107,15 +99,31 @@ public interface RaceLogTrackingAdapter { /** * Invite competitors for tracking via the Tracking App by sending out emails. - * @throws MailException + * + * @throws MailException */ void inviteCompetitorsForTrackingViaEmail(Event event, Leaderboard leaderboard, String serverUrlWithoutTrailingSlash, Set competitors, Locale locale) throws MailException; /** * Invite buoy tenders for buoy pinging via the Buoy Tender App by sending out emails. - * @throws MailException + * + * @throws MailException */ void inviteBuoyTenderViaEmail(Event event, Leaderboard leaderboard, String serverUrlWithoutTrailingSlash, String emails, Locale locale) throws MailException; + + /** + * Duplicate the course in the newest {@link RaceLogCourseDesignChangedEvent} in {@code from} race log to the + * {@code to} race logs. The {@link Mark}s and {@link ControlPoint}s are duplicated and not reused. This also + * inserts the necessary {@link RaceLogDefineMarkEvent}s into the {@code to} race logs. + */ + void copyCourse(RaceLog fromRaceLog, Set toRaceLogs, SharedDomainFactory baseDomainFactory, + RacingEventService service); + + /** + * Duplicate the competitor registrations from the {@code from} race log to the {@code to} race logs. + */ + void copyCompetitors(RaceLog from, Set to, + RacingEventService service); } diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java index 2cc56a1a4e4..309f42ec296 100755 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java @@ -92,8 +92,8 @@ public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter { } @Override - public RaceHandle startTracking(RacingEventService service, Leaderboard leaderboard, RaceColumn raceColumn, Fleet fleet) - throws NotDenotedForRaceLogTrackingException, Exception { + public RaceHandle startTracking(RacingEventService service, Leaderboard leaderboard, RaceColumn raceColumn, + Fleet fleet) throws NotDenotedForRaceLogTrackingException, Exception { RaceLog raceLog = raceColumn.getRaceLog(fleet); RaceLogTrackingState raceLogTrackingState = new RaceLogTrackingStateAnalyzer(raceLog).analyze(); if (!raceLogTrackingState.isForTracking()) { @@ -189,8 +189,8 @@ public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter { } private void revokeAlreadyDefinedMarks(RaceLog raceLog, AbstractLogEventAuthor author) { - List markEvents = new AllEventsOfTypeFinder<>(raceLog, /* only unrevoked */ true, RaceLogDefineMarkEvent.class) - .analyze(); + List markEvents = new AllEventsOfTypeFinder<>(raceLog, /* only unrevoked */true, + RaceLogDefineMarkEvent.class).analyze(); for (RaceLogEvent event : markEvents) { try { raceLog.revokeEvent(author, event, "removing mark that was already defined"); @@ -201,15 +201,19 @@ public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter { } @Override - public void copyCourseAndCompetitors(RaceLog fromRaceLog, Set toRaceLogs, - SharedDomainFactory baseDomainFactory, RacingEventService service) { + public void copyCourse(RaceLog fromRaceLog, Set toRaceLogs, SharedDomainFactory baseDomainFactory, + RacingEventService service) { CourseBase course = new LastPublishedCourseDesignFinder(fromRaceLog).analyze(); final Set marks = new HashSet<>(); if (course != null) { - course.getWaypoints().forEach(wp->Util.addAll(wp.getMarks(), marks)); + course.getWaypoints().forEach(wp -> Util.addAll(wp.getMarks(), marks)); } - final Set competitors = new RegisteredCompetitorsAnalyzer<>(fromRaceLog).analyze(); - final List raceLogDeviceMarkMappingEvents = new AllEventsOfTypeFinder<>(fromRaceLog, /* only unrevoked */ true, RaceLogDeviceMarkMappingEvent.class).analyze(); + + final List raceLogDeviceMarkMappingEvents = new AllEventsOfTypeFinder<>(fromRaceLog, /* + * only + * unrevoked + */true, + RaceLogDeviceMarkMappingEvent.class).analyze(); for (RaceLog toRaceLog : toRaceLogs) { if (new RaceLogTrackingStateAnalyzer(toRaceLog).analyze().isForTracking()) { if (course != null) { @@ -233,11 +237,20 @@ public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter { service.getServerAuthor(), passId, newCourse); toRaceLog.add(newCourseEvent); } - registerCompetitors(service, toRaceLog, competitors); + } } } + @Override + public void copyCompetitors(RaceLog fromRaceLog, Set toRaceLogs, + RacingEventService service) { + final Set competitors = new RegisteredCompetitorsAnalyzer<>(fromRaceLog).analyze(); + for (RaceLog toRaceLog : toRaceLogs) { + registerCompetitors(service, toRaceLog, competitors); + } + } + @FunctionalInterface private static interface DeviceMarkMappingEventFactory> { EventT createDeviceMarkMapping(DeviceIdentifier device, TimePoint timePoint); @@ -266,13 +279,10 @@ public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter { @Override public void pingMark(RegattaLog regattaLog, Mark mark, GPSFix gpsFix, RacingEventService service) { - pingMark( - regattaLog, - mark, - gpsFix, - service, - (DeviceIdentifier dev, TimePoint timePoint) -> new RegattaLogDeviceMarkMappingEventImpl(timePoint, service - .getServerAuthor(), timePoint, UUID.randomUUID(), mark, dev, timePoint, timePoint), new PingDeviceIdentifierImpl()); + pingMark(regattaLog, mark, gpsFix, service, + (DeviceIdentifier dev, TimePoint timePoint) -> new RegattaLogDeviceMarkMappingEventImpl(timePoint, + service.getServerAuthor(), timePoint, UUID.randomUUID(), mark, dev, timePoint, timePoint), + new PingDeviceIdentifierImpl()); } @Override @@ -418,9 +428,9 @@ public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter { String[] emailArray = emails.split(","); String leaderboardName = leaderboard.getName(); - + String eventId = event.getId().toString(); - + // http:///buoy-tender/checkin?event_id=&leaderboard_name= String url = DeviceMappingConstants.getBuoyTenderInvitationUrl(serverUrlWithoutTrailingSlash, leaderboardName, eventId, NonGwtUrlHelper.INSTANCE); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CopyCourseAndCompetitorsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CopyCourseAndCompetitorsDialog.java new file mode 100644 index 00000000000..096b8f8b20b --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CopyCourseAndCompetitorsDialog.java @@ -0,0 +1,80 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import java.util.Collection; +import java.util.Set; + +import com.google.gwt.user.client.ui.CheckBox; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.HorizontalPanel; +import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.view.client.MultiSelectionModel; +import com.google.gwt.view.client.SelectionChangeEvent; +import com.google.gwt.view.client.SelectionChangeEvent.Handler; +import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sse.gwt.client.ErrorReporter; +import com.sap.sse.gwt.client.dialog.DataEntryDialog; + +public class CopyCourseAndCompetitorsDialog extends DataEntryDialog { + private final RaceTableWrapper> + racesTable; + private final CheckBox courseCheckBox; + private final CheckBox competitorCheckBox; + private SailingServiceAsync sailingService; + private ErrorReporter errorReporter; + + + public CopyCourseAndCompetitorsDialog(SailingServiceAsync sailingService, ErrorReporter errorReporter, final StringMessages stringMessages, + Collection races, + String leaderboardName, DialogCallback dialogCallback) { + super(stringMessages.selectRaces(), stringMessages.selectRaces(), stringMessages.ok(), stringMessages.cancel(), + new Validator() { + @Override + public String getErrorMessage(CourseAndCompetitorCopyOperation valueToValidate) { + if (valueToValidate.getRaceLogsToCopyTo().isEmpty()) { + return stringMessages.selectAtLeastOne(); + } + return null; + } + }, true, dialogCallback); + racesTable = new RaceTableWrapper>( + sailingService, stringMessages, errorReporter, /* multiSelection */ true); + racesTable.setSelectedLeaderboardName(leaderboardName); + racesTable.getDataProvider().getList().addAll(races); + racesTable.getSelectionModel().addSelectionChangeHandler(new Handler() { + @Override + public void onSelectionChange(SelectionChangeEvent event) { + validate(); + } + }); + + courseCheckBox = new CheckBox(stringMessages.copyCourse()); + courseCheckBox.setValue(true); + competitorCheckBox = new CheckBox(stringMessages.copyCompetitors()); + competitorCheckBox.setValue(true); + + this.sailingService = sailingService; + this.errorReporter = errorReporter; + } + + @Override + protected Widget getAdditionalWidget() { + FlowPanel mainPanel = new FlowPanel(); + + HorizontalPanel checkBoxPanel = new HorizontalPanel(); + checkBoxPanel.add(courseCheckBox); + checkBoxPanel.add(competitorCheckBox); + + mainPanel.add(checkBoxPanel); + mainPanel.add(racesTable); + return mainPanel; + } + + @Override + protected CourseAndCompetitorCopyOperation getResult() { + Set racesToCopyTo = racesTable.getSelectionModel().getSelectedSet(); + return new CourseAndCompetitorCopyOperation(racesToCopyTo, courseCheckBox.getValue(), competitorCheckBox.getValue(), sailingService, errorReporter); + } + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseAndCompetitorCopyOperation.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseAndCompetitorCopyOperation.java new file mode 100644 index 00000000000..28b39a55e0b --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CourseAndCompetitorCopyOperation.java @@ -0,0 +1,90 @@ +package com.sap.sailing.gwt.ui.adminconsole; + +import java.util.Set; + +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality; +import com.sap.sailing.gwt.ui.client.SailingServiceAsync; +import com.sap.sse.common.Util; +import com.sap.sse.common.Util.Triple; +import com.sap.sse.gwt.client.ErrorReporter; + +public class CourseAndCompetitorCopyOperation { + + Set raceLogsToCopyTo; + boolean copyCourse; + boolean copyCompetitors; + private ErrorReporter errorReporter; + private SailingServiceAsync sailingService; + + public CourseAndCompetitorCopyOperation(Set racesToCopyTo, + boolean copyCourse, boolean copyCompetitors, SailingServiceAsync sailingService, ErrorReporter errorReporter) { + this.raceLogsToCopyTo = racesToCopyTo; + this.copyCourse = copyCourse; + this.copyCompetitors = copyCompetitors; + this.sailingService = sailingService; + this.errorReporter = errorReporter; + } + + public Set getRaceLogsToCopyTo() { + return raceLogsToCopyTo; + } + + public boolean copyCourse() { + return copyCourse; + } + + public boolean copyCompetitors() { + return copyCompetitors; + } + + public void perform(Triple fromTriple) { + + } + + private Set> convertToRacelogs(String leaderboardName) { + Set> toRaceLogs = new java.util.HashSet<>(); + for (RaceColumnDTOAndFleetDTOWithNameBasedEquality race : raceLogsToCopyTo) { + toRaceLogs.add(toTriple(leaderboardName, race)); + } + return toRaceLogs; + } + + private Util.Triple toTriple(String leaderboardName, + RaceColumnDTOAndFleetDTOWithNameBasedEquality race) { + return new Util.Triple(leaderboardName, race.getA().getName(), race.getB().getName()); + } + + public void perform(String leaderboardName, RaceColumnDTOAndFleetDTOWithNameBasedEquality raceColumnDTOAndFleetDTO) { + Triple fromTriple = toTriple(leaderboardName, raceColumnDTOAndFleetDTO); + Set> toRacelogs = convertToRacelogs(leaderboardName); + + if (copyCourse) { + sailingService.copyCourseToOtherRaceLogs(fromTriple, toRacelogs, new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not copy course and competitors: " + caught.getMessage()); + } + + @Override + public void onSuccess(Void result) { + + } + }); + } + + if (copyCompetitors) { + sailingService.copyCompetitorsToOtherRaceLogs(fromTriple, toRacelogs, new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError("Could not copy course and competitors: " + caught.getMessage()); + } + + @Override + public void onSuccess(Void result) { + + } + }); + } + } +} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java index a3b76983a3f..5a6013b3e09 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java @@ -36,7 +36,6 @@ import com.sap.sailing.gwt.ui.client.shared.controls.SelectionCheckboxColumn; import com.sap.sailing.gwt.ui.shared.EventDTO; import com.sap.sailing.gwt.ui.shared.RaceLogSetStartTimeAndProcedureDTO; import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; -import com.sap.sse.common.Util; import com.sap.sse.common.Util.Triple; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog; @@ -195,16 +194,16 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf new RaceLogTrackingEventManagementRaceImagesBarCell(stringMessages)); raceActionColumn.setFieldUpdater(new FieldUpdater() { @Override - public void update(int index, final RaceColumnDTOAndFleetDTOWithNameBasedEquality object, String value) { + public void update(int index, final RaceColumnDTOAndFleetDTOWithNameBasedEquality raceColumnDTOAndFleetDTO, String value) { final String leaderboardName = getSelectedLeaderboardName(); - final String raceColumnName = object.getA().getName(); - final String fleetName = object.getB().getName(); - boolean editable = ! (doesTrackerExist(object) && - getTrackingState(object) == RaceLogTrackingState.TRACKING); + final String raceColumnName = raceColumnDTOAndFleetDTO.getA().getName(); + final String fleetName = raceColumnDTOAndFleetDTO.getB().getName(); + boolean editable = ! (doesTrackerExist(raceColumnDTOAndFleetDTO) && + getTrackingState(raceColumnDTOAndFleetDTO) == RaceLogTrackingState.TRACKING); if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_DENOTE_FOR_RACELOG_TRACKING.equals(value)) { - denoteForRaceLogTracking(object.getA(), object.getB()); + denoteForRaceLogTracking(raceColumnDTOAndFleetDTO.getA(), raceColumnDTOAndFleetDTO.getB()); } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_REMOVE_DENOTATION.equals(value)) { - removeDenotation(object.getA(), object.getB()); + removeDenotation(raceColumnDTOAndFleetDTO.getA(), raceColumnDTOAndFleetDTO.getB()); } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_COMPETITOR_REGISTRATIONS .equals(value)) { new RaceLogTrackingCompetitorRegistrationsDialog(sailingService, stringMessages, errorReporter, @@ -232,7 +231,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf fleetName, registeredCompetitors, new AsyncCallback() { @Override public void onSuccess(Void result) { - object.getA().getRaceLogTrackingInfo(object.getB()).competitorRegistrationsExists = !registeredCompetitors + raceColumnDTOAndFleetDTO.getA().getRaceLogTrackingInfo(raceColumnDTOAndFleetDTO.getB()).competitorRegistrationsExists = !registeredCompetitors .isEmpty(); } @@ -253,43 +252,28 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_COPY.equals(value)) { List races = new ArrayList<>(raceColumnTable.getDataProvider().getList()); - races.remove(object); - new SelectRacesDialog(sailingService, errorReporter, stringMessages, races, - leaderboardName, new DialogCallback>() { + races.remove(raceColumnDTOAndFleetDTO); + new CopyCourseAndCompetitorsDialog(sailingService, errorReporter, stringMessages, races, + leaderboardName, new DialogCallback() { @Override - public void ok(Set editedObject) { - Set> toRaceLogs = new java.util.HashSet<>(); - for (RaceColumnDTOAndFleetDTOWithNameBasedEquality race : editedObject) { - toRaceLogs.add(toTriple(leaderboardName, race)); - } - sailingService.copyCourseAndCompetitorsToOtherRaceLogs( - toTriple(leaderboardName, object), toRaceLogs, new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not copy course and competitors: " + caught.getMessage()); - } - - @Override - public void onSuccess(Void result) { - loadAndRefreshLeaderboard(leaderboardName, object.getA().getName()); - } - }); - + public void ok(CourseAndCompetitorCopyOperation operation) { + operation.perform(leaderboardName, raceColumnDTOAndFleetDTO); + loadAndRefreshLeaderboard(leaderboardName, raceColumnDTOAndFleetDTO.getA().getName()); } @Override public void cancel() {} }).show(); } else if (LeaderboardRaceConfigImagesBarCell.ACTION_EDIT.equals(value)) { - editRaceColumnOfLeaderboard(object); + editRaceColumnOfLeaderboard(raceColumnDTOAndFleetDTO); } else if (LeaderboardRaceConfigImagesBarCell.ACTION_UNLINK.equals(value)) { - unlinkRaceColumnFromTrackedRace(object.getA().getRaceColumnName(), object.getB()); + unlinkRaceColumnFromTrackedRace(raceColumnDTOAndFleetDTO.getA().getRaceColumnName(), raceColumnDTOAndFleetDTO.getB()); } else if (LeaderboardRaceConfigImagesBarCell.ACTION_REFRESH_RACELOG.equals(value)) { - refreshRaceLog(object.getA(), object.getB(), true); + refreshRaceLog(raceColumnDTOAndFleetDTO.getA(), raceColumnDTOAndFleetDTO.getB(), true); } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_SET_STARTTIME.equals(value)) { setStartTime(getSelectedRaceColumnWithFleet().getA(), getSelectedRaceColumnWithFleet().getB()); } else if (LeaderboardRaceConfigImagesBarCell.ACTION_SHOW_RACELOG.equals(value)) { - showRaceLog(object.getA(), object.getB()); + showRaceLog(raceColumnDTOAndFleetDTO.getA(), raceColumnDTOAndFleetDTO.getB()); } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_SET_TRACKING_TIMES.equals(value)) { setTrackingTimes(getSelectedRaceColumnWithFleet().getA(), getSelectedRaceColumnWithFleet().getB());; } @@ -301,11 +285,6 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf racesTable.addColumn(raceActionColumn, stringMessages.actions()); racesTable.setWidth("600px"); } - - private Util.Triple toTriple(String leaderboardName, - RaceColumnDTOAndFleetDTOWithNameBasedEquality race) { - return new Util.Triple(leaderboardName, race.getA().getName(), race.getB().getName()); - } @Override protected void addLeaderboardControls(Panel controlsPanel) {} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectRacesDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectRacesDialog.java deleted file mode 100644 index 71189f16a8b..00000000000 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SelectRacesDialog.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.sap.sailing.gwt.ui.adminconsole; - -import java.util.Collection; -import java.util.Set; - -import com.google.gwt.user.client.ui.Widget; -import com.google.gwt.view.client.MultiSelectionModel; -import com.google.gwt.view.client.SelectionChangeEvent; -import com.google.gwt.view.client.SelectionChangeEvent.Handler; -import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality; -import com.sap.sailing.gwt.ui.client.SailingServiceAsync; -import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sse.gwt.client.ErrorReporter; -import com.sap.sse.gwt.client.dialog.DataEntryDialog; - -public class SelectRacesDialog extends DataEntryDialog> { - private final RaceTableWrapper> - racesTable; - - public SelectRacesDialog(SailingServiceAsync sailingService, ErrorReporter errorReporter, final StringMessages stringMessages, - Collection races, - String leaderboardName, DialogCallback> dialogCallback) { - super(stringMessages.selectRaces(), stringMessages.selectRaces(), stringMessages.ok(), stringMessages.cancel(), - new Validator>() { - @Override - public String getErrorMessage(Set valueToValidate) { - if (valueToValidate.isEmpty()) { - return stringMessages.selectAtLeastOne(); - } - return null; - } - }, true, dialogCallback); - racesTable = new RaceTableWrapper>( - sailingService, stringMessages, errorReporter, /* multiSelection */ true); - racesTable.setSelectedLeaderboardName(leaderboardName); - racesTable.getDataProvider().getList().addAll(races); - racesTable.getSelectionModel().addSelectionChangeHandler(new Handler() { - @Override - public void onSelectionChange(SelectionChangeEvent event) { - validate(); - } - }); - } - - @Override - protected Widget getAdditionalWidget() { - return racesTable.asWidget(); - } - - @Override - protected Set getResult() { - return racesTable.getSelectionModel().getSelectedSet(); - } - -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 15f1493ed1f..3eb66f72d6a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -92,6 +92,7 @@ import com.sap.sse.common.NoCorrespondingServiceRegisteredException; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; +import com.sap.sse.common.Util.Triple; import com.sap.sse.common.mail.MailException; import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.gwt.client.ServerInfoDTO; @@ -497,13 +498,6 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS */ void pingMarkViaRaceLogTracking(String leaderboardName, String raceColumnName, String fleetName, MarkDTO mark, Position position); - /** - * @param raceLogFrom identifies the race log to copy from by its leaderboard name, race column name and fleet name - * @param raceLogsTo identifies the race log to copy from by their leaderboard name, race column name and fleet name - */ - void copyCourseAndCompetitorsToOtherRaceLogs(Util.Triple raceLogFrom, - Set> raceLogsTo); - void addDeviceMappingToRaceLog(String leaderboardName, String raceColumnName, String fleetName, DeviceMappingDTO mapping) throws TransformationException; @@ -619,4 +613,18 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS void revokeMarkDefinitionEventInRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO); + + /** + * @param raceLogFrom identifies the race log to copy from by its leaderboard name, race column name and fleet name + * @param raceLogsTo identifies the race log to copy from by their leaderboard name, race column name and fleet name + */ + void copyCompetitorsToOtherRaceLogs(Triple fromTriple, + Set> toTriples); + + /** + * @param raceLogFrom identifies the race log to copy from by its leaderboard name, race column name and fleet name + * @param raceLogsTo identifies the race log to copy from by their leaderboard name, race column name and fleet name + */ + void copyCourseToOtherRaceLogs(Triple fromTriple, + Set> toTriples); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index 17d74d4ef32..9794cbc554d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -81,6 +81,7 @@ import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; import com.sap.sse.common.Util.Pair; +import com.sap.sse.common.Util.Triple; import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.gwt.client.ServerInfoRetriever; import com.sap.sse.gwt.client.filestorage.FileStorageManagementGwtServiceAsync; @@ -634,9 +635,6 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void removeDenotationForRaceLogTracking(String leaderboardName, String raceColumnName, String fleetName, AsyncCallback callback); - void copyCourseAndCompetitorsToOtherRaceLogs(Util.Triple raceLogFrom, - Set> raceLogsTo, AsyncCallback callback); - void getGPSFixImporterTypes(AsyncCallback> callback); void getTrackFileImportDeviceIds(List uuids, AsyncCallback> callback); @@ -722,4 +720,10 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void revokeMarkDefinitionEventInRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO, AsyncCallback callback); + + void copyCompetitorsToOtherRaceLogs(Triple fromTriple, + Set> toTriples, AsyncCallback callback); + + void copyCourseToOtherRaceLogs(Triple fromTriple, + Set> toTriples, AsyncCallback callback); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 50be91a6802..7283a9265e3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1388,4 +1388,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String polarResultsPresenter(); String dataMiningRetrieval(); String denoteAllRacesForRaceLogTrackingShorctut(); + String copyCourse(); + String copyCompetitors(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 02162053c0d..0fcf81d3ff9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1355,4 +1355,6 @@ resultsChart=Results Chart tabbedResultsPresenter=Tabbed Results Presenter polarResultsPresenter=Polar Results Presenter dataMiningRetrieval=Data Retrieval -denoteAllRacesForRaceLogTrackingShorctut=Shortcut to denote all races for racelog tracking \ No newline at end of file +denoteAllRacesForRaceLogTrackingShorctut=Shortcut to denote all races for racelog tracking +copyCourse=Copy Course +copyCompetitors=Copy Competitors \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 8b2a8c478db..2bfbd9af365 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1344,4 +1344,6 @@ resultsChart=Ergebnis-Diagramm tabbedResultsPresenter=Tab Ergebnis-Darsteller polarResultsPresenter=Polar Ergebnis-Darsteller dataMiningRetrieval=Datenbeschaffung -denoteAllRacesForRaceLogTrackingShorctut=Alle rennen für racelog tracking markieren \ No newline at end of file +denoteAllRacesForRaceLogTrackingShorctut=Alle rennen für racelog tracking markieren +copyCourse=Kurs kopieren +copyCompetitors=Teilnehmer kopieren \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 8b0a0624bd5..1429a575e19 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -5146,14 +5146,25 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public void copyCourseAndCompetitorsToOtherRaceLogs(com.sap.sse.common.Util.Triple fromTriple, + public void copyCourseToOtherRaceLogs(com.sap.sse.common.Util.Triple fromTriple, Set> toTriples) { RaceLog fromRaceLog = getRaceLog(fromTriple); Set toRaceLogs = new HashSet<>(); for (com.sap.sse.common.Util.Triple toTriple : toTriples) { toRaceLogs.add(getRaceLog(toTriple)); } - getRaceLogTrackingAdapter().copyCourseAndCompetitors(fromRaceLog, toRaceLogs, baseDomainFactory, getService()); + getRaceLogTrackingAdapter().copyCourse(fromRaceLog, toRaceLogs, baseDomainFactory, getService()); + } + + @Override + public void copyCompetitorsToOtherRaceLogs(com.sap.sse.common.Util.Triple fromTriple, + Set> toTriples) { + RaceLog fromRaceLog = getRaceLog(fromTriple); + Set toRaceLogs = new HashSet<>(); + for (com.sap.sse.common.Util.Triple toTriple : toTriples) { + toRaceLogs.add(getRaceLog(toTriple)); + } + getRaceLogTrackingAdapter().copyCompetitors(fromRaceLog, toRaceLogs, getService()); } private TypeBasedServiceFinder getDeviceIdentifierStringSerializerHandlerFinder( From 1ca0cc02534324178de40015f0a9002588283881 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 1 Oct 2015 17:51:29 +0200 Subject: [PATCH 461/504] fixing averse effects of ce7ac3c47dd47ad47e530bb4b9e9180a4a4f33f2 on serializability of PolarDataMiner --- .../polars/datamining/data/impl/SpeedClusterGroup.java | 3 ++- .../com/sap/sailing/polars/mining/BearingClusterGroup.java | 3 ++- .../src/com/sap/sse/datamining/data/Cluster.java | 3 ++- .../src/com/sap/sse/datamining/data/ClusterBoundary.java | 4 +++- .../src/com/sap/sse/datamining/data/ClusterGroup.java | 4 +++- .../com/sap/sse/datamining/impl/data/AbstractCluster.java | 6 ++++-- .../sse/datamining/impl/data/AbstractClusterBoundary.java | 7 +++++-- .../impl/data/ClusterWithLowerAndUpperBoundaries.java | 6 ++++-- .../datamining/impl/data/ClusterWithSingleBoundary.java | 6 ++++-- .../datamining/impl/data/ComparableClusterBoundary.java | 5 ++++- .../datamining/impl/data/ComparatorClusterBoundary.java | 6 ++++-- .../com/sap/sse/datamining/impl/data/FixClusterGroup.java | 6 ++++-- .../com/sap/sse/datamining/impl/data/LocalizedCluster.java | 4 +++- 13 files changed, 44 insertions(+), 19 deletions(-) diff --git a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/SpeedClusterGroup.java b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/SpeedClusterGroup.java index 88eb2d91f7c..ae0ea02cb34 100644 --- a/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/SpeedClusterGroup.java +++ b/java/com.sap.sailing.polars.datamining/src/com/sap/sailing/polars/datamining/data/impl/SpeedClusterGroup.java @@ -15,7 +15,8 @@ import com.sap.sse.datamining.impl.data.ComparisonStrategy; import com.sap.sse.datamining.impl.data.FixClusterGroup; public class SpeedClusterGroup extends FixClusterGroup { - + private static final long serialVersionUID = -3428022721991223921L; + /** * A {@link SpeedClusterGroup} lets the user set the level mids for all its clusters. The Boundaries will * automatically be determined. They are in the middle between each level mid but only if the distance between level diff --git a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BearingClusterGroup.java b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BearingClusterGroup.java index 96227290990..51c0418294a 100644 --- a/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BearingClusterGroup.java +++ b/java/com.sap.sailing.polars/src/com/sap/sailing/polars/mining/BearingClusterGroup.java @@ -22,7 +22,8 @@ import com.sap.sse.datamining.impl.data.FixClusterGroup; * */ public class BearingClusterGroup extends FixClusterGroup { - + private static final long serialVersionUID = -3810975212669767738L; + /** * Creates an angle range grouping. * diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/data/Cluster.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/data/Cluster.java index 0b016f179e7..cfdf26fb9f1 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/data/Cluster.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/data/Cluster.java @@ -1,5 +1,6 @@ package com.sap.sse.datamining.data; +import java.io.Serializable; import java.util.Locale; import com.sap.sse.i18n.ResourceBundleStringMessages; @@ -16,7 +17,7 @@ import com.sap.sse.i18n.ResourceBundleStringMessages; * @see ClusterBoundary * @see ClusterGroup */ -public interface Cluster { +public interface Cluster extends Serializable { public String asLocalizedString(Locale locale, ResourceBundleStringMessages stringMessages); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/data/ClusterBoundary.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/data/ClusterBoundary.java index 45f2b9fd03b..2715e6500fc 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/data/ClusterBoundary.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/data/ClusterBoundary.java @@ -1,5 +1,7 @@ package com.sap.sse.datamining.data; +import java.io.Serializable; + import com.sap.sse.datamining.impl.data.ComparisonStrategy; /** @@ -11,7 +13,7 @@ import com.sap.sse.datamining.impl.data.ComparisonStrategy; * * @see Cluster */ -public interface ClusterBoundary { +public interface ClusterBoundary extends Serializable { public boolean contains(ElementType value); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/data/ClusterGroup.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/data/ClusterGroup.java index 548ec959054..72ae3c36164 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/data/ClusterGroup.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/data/ClusterGroup.java @@ -1,5 +1,7 @@ package com.sap.sse.datamining.data; +import java.io.Serializable; + /** * Represents a collection of {@link Cluster Clusters} and provides a method to get the @@ -11,7 +13,7 @@ package com.sap.sse.datamining.data; * * @see Cluster */ -public interface ClusterGroup { +public interface ClusterGroup extends Serializable { /** * @param value the element to get the {@link Cluster} for diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/AbstractCluster.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/AbstractCluster.java index ad95f775bf1..2485132e728 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/AbstractCluster.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/AbstractCluster.java @@ -1,5 +1,6 @@ package com.sap.sse.datamining.impl.data; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Locale; @@ -8,8 +9,9 @@ import com.sap.sse.datamining.data.Cluster; import com.sap.sse.datamining.data.ClusterBoundary; import com.sap.sse.i18n.ResourceBundleStringMessages; -public abstract class AbstractCluster implements Cluster { - +public abstract class AbstractCluster implements Cluster { + private static final long serialVersionUID = 1606840566021644768L; + private Collection> boundaries; public AbstractCluster(Collection> boundaries) { diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/AbstractClusterBoundary.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/AbstractClusterBoundary.java index b42df0c8e3d..f4aaa651fe7 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/AbstractClusterBoundary.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/AbstractClusterBoundary.java @@ -1,9 +1,12 @@ package com.sap.sse.datamining.impl.data; +import java.io.Serializable; + import com.sap.sse.datamining.data.ClusterBoundary; -public abstract class AbstractClusterBoundary implements ClusterBoundary { - +public abstract class AbstractClusterBoundary implements ClusterBoundary { + private static final long serialVersionUID = 513488430319010656L; + private final ElementType boundaryValue; private final ComparisonStrategy strategy; diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ClusterWithLowerAndUpperBoundaries.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ClusterWithLowerAndUpperBoundaries.java index aded7ade234..46d4700718f 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ClusterWithLowerAndUpperBoundaries.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ClusterWithLowerAndUpperBoundaries.java @@ -1,13 +1,15 @@ package com.sap.sse.datamining.impl.data; +import java.io.Serializable; import java.util.Arrays; import java.util.Iterator; import com.sap.sse.datamining.data.Cluster; import com.sap.sse.datamining.data.ClusterBoundary; -public class ClusterWithLowerAndUpperBoundaries extends AbstractCluster { - +public class ClusterWithLowerAndUpperBoundaries extends AbstractCluster { + private static final long serialVersionUID = -845964568416163995L; + /** * A {@link Cluster} with a lower and an upper boundary. This Cluster contains * all elements, that are contained by the given lowerBound and the given diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ClusterWithSingleBoundary.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ClusterWithSingleBoundary.java index 4b0ac2c8a6c..10f4ab877d7 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ClusterWithSingleBoundary.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ClusterWithSingleBoundary.java @@ -1,12 +1,14 @@ package com.sap.sse.datamining.impl.data; +import java.io.Serializable; import java.util.Arrays; import com.sap.sse.datamining.data.Cluster; import com.sap.sse.datamining.data.ClusterBoundary; -public class ClusterWithSingleBoundary extends AbstractCluster { - +public class ClusterWithSingleBoundary extends AbstractCluster { + private static final long serialVersionUID = -3188802475809553490L; + private static final char INFINITE = '\u221e'; /** diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ComparableClusterBoundary.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ComparableClusterBoundary.java index 2d019649b63..32829dedbe2 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ComparableClusterBoundary.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ComparableClusterBoundary.java @@ -1,7 +1,10 @@ package com.sap.sse.datamining.impl.data; +import java.io.Serializable; -public class ComparableClusterBoundary> extends AbstractClusterBoundary { + +public class ComparableClusterBoundary & Serializable> extends AbstractClusterBoundary { + private static final long serialVersionUID = -930603995272128901L; public ComparableClusterBoundary(ElementType boundaryValue, ComparisonStrategy strategy) { super(boundaryValue, strategy); diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ComparatorClusterBoundary.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ComparatorClusterBoundary.java index beb58232b85..66db37f57cd 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ComparatorClusterBoundary.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/ComparatorClusterBoundary.java @@ -1,9 +1,11 @@ package com.sap.sse.datamining.impl.data; +import java.io.Serializable; import java.util.Comparator; -public class ComparatorClusterBoundary extends AbstractClusterBoundary { - +public class ComparatorClusterBoundary extends AbstractClusterBoundary { + private static final long serialVersionUID = -8177984229875233720L; + private final Comparator comparator; public ComparatorClusterBoundary(ElementType boundaryValue, ComparisonStrategy strategy, diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/FixClusterGroup.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/FixClusterGroup.java index 8875d8216dc..92e4448981f 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/FixClusterGroup.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/FixClusterGroup.java @@ -1,5 +1,6 @@ package com.sap.sse.datamining.impl.data; +import java.io.Serializable; import java.util.Collection; import java.util.HashSet; import java.util.Set; @@ -7,8 +8,9 @@ import java.util.Set; import com.sap.sse.datamining.data.Cluster; import com.sap.sse.datamining.data.ClusterGroup; -public class FixClusterGroup implements ClusterGroup { - +public class FixClusterGroup implements ClusterGroup { + private static final long serialVersionUID = -5080331147800848136L; + private final Set> clusters; public FixClusterGroup(Collection> clusters) { diff --git a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/LocalizedCluster.java b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/LocalizedCluster.java index a271e7312f5..51d5cded0ec 100644 --- a/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/LocalizedCluster.java +++ b/java/com.sap.sse.datamining/src/com/sap/sse/datamining/impl/data/LocalizedCluster.java @@ -1,11 +1,13 @@ package com.sap.sse.datamining.impl.data; +import java.io.Serializable; import java.util.Locale; import com.sap.sse.datamining.data.Cluster; import com.sap.sse.i18n.ResourceBundleStringMessages; -public class LocalizedCluster implements Cluster { +public class LocalizedCluster implements Cluster { + private static final long serialVersionUID = 6621306336227572117L; private final String messageKey; private final Cluster cluster; From aeaffd1f24d5ef4225397eb2d3334c8038c0ff69 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 1 Oct 2015 18:01:23 +0200 Subject: [PATCH 462/504] Added additional StringMessages for mobile series event navigation --- .../main/java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 + .../java/com/sap/sailing/gwt/ui/client/StringMessages.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_de.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_ru.properties | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages_zh.properties | 1 + 5 files changed, 5 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 4f4c4e5f181..f5d7b7956ac 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1333,6 +1333,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip(); String sailorInfo(); String sailorInfoLongText(); + String eventQuickfinder(); String regattaQuickfinder(); String resultsQuickfinder(); String racesQuickfinder(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 25d8bf22a9d..2a648f50546 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1302,6 +1302,7 @@ raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Calc.Time raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Calculated time at estimated arrival at the competitor that is currently farthest ahead in the race;\nestimation based on average VMG in current leg and equal (calculated) performance to fastest boat in all subsequent legs sailorInfo=Sailor Info sailorInfoLongText=Official Results, Protests,\nNotice Board, Sailor weather: +eventQuickfinder=Event Quickfinder regattaQuickfinder=Regatta Quickfinder resultsQuickfinder=Results Quickfinder racesQuickfinder=Races Quickfinder diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 697f4df2251..1a79a536e9d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1291,6 +1291,7 @@ raceCalcluatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Ber.Zeit@ raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Berechnete Zeit bei erwarteter Ankunft am derzeit absolut in Führung liegenden Teilnehmers;\nSchätzung basierend auf durchschnittlichem VMG im aktuellen Bahnschenkel und gleicher verrechneter Geschwindigket wie der absolut in Führung liegende Teilnehmer\nfür alle nachfolgenden Bahnschenkel sailorInfo=Segler Infos sailorInfoLongText=Offizielle Ergebnisse, Proteste,\nNotice Board, Segler-Wetter: +eventQuickfinder=Veranstaltung-Schnellauswahl regattaQuickfinder=Regatta-Schnellauswahl resultsQuickfinder=Ergebnis-Schnellauswahl racesQuickfinder=Wettfahrt-Schnellauswahl diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index a01491d1eda..2143916f26f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1236,6 +1236,7 @@ raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Calc.Time raceCalculatedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Calculated time at estimated arrival at the competitor that is currently farthest ahead in the race;\nestimation based on average VMG in current leg and equal (calculated) performance to fastest boat in all subsequent legs sailorInfo=Моряки информация sailorInfoLongText=Official Results, Protests,\nNotice Board, Sailor weather: +eventQuickfinder=Event Quickfinder regattaQuickfinder=Regatta Quickfinder resultsQuickfinder=Results Quickfinder racesQuickfinder=Races Quickfinder diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index 37a406f8377..c4187ec9158 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1288,6 +1288,7 @@ sailorInfoLongText=Find here Notice Board,\nProtests, Sailor weather: winner=Winner durationPlain=Duration finishedRaces=Finished Races +eventQuickfinder=Event Quickfinder regattaQuickfinder=Regatta Quickfinder resultsQuickfinder=Results Quickfinder racesQuickfinder=Races Quickfinder From 6e1e1cc438a885cb35c0c92904ad1cb82a42b745 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 1 Oct 2015 18:02:22 +0200 Subject: [PATCH 463/504] Adjusted/extended mobile series event navigation --- .../mobile/places/QuickfinderPresenter.java | 62 +++++++++++++++++-- ...SeriesEventOverviewNavigationProvider.java | 11 ++++ .../SeriesEventRacesNavigationProvider.java | 10 +++ .../places/event/AbstractEventActivity.java | 10 +++ .../places/event/AbstractEventView.java | 6 +- .../mobile/places/event/EventViewBase.java | 5 +- .../places/event/overview/EventViewImpl.java | 8 +++ .../places/event/races/RacesViewImpl.java | 8 ++- 8 files changed, 111 insertions(+), 9 deletions(-) create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/SeriesEventOverviewNavigationProvider.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/SeriesEventRacesNavigationProvider.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java index 1827c4d5399..5a3e8669045 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/QuickfinderPresenter.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.home.mobile.places; import java.util.Collection; +import java.util.UUID; import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; @@ -43,23 +44,67 @@ public class QuickfinderPresenter { } public static QuickfinderPresenter getForSeriesLeaderboards(Quickfinder quickfinder, String seriesName, - SeriesLeaderboardNavigationProvider navigator, Collection eventsOfSeries) { - return new QuickfinderPresenter(quickfinder, navigator, seriesName, eventsOfSeries); + final SeriesLeaderboardNavigationProvider navigator, Collection eventsOfSeries) { + return new QuickfinderPresenter(quickfinder, MSG.resultsQuickfinder(), new SeriesEventPlaceNaviationProvider() { + @Override + public PlaceNavigation getPlaceNavigation(UUID eventId) { + return navigator.getMiniLeaderboardNavigation(eventId); + } + + @Override + public PlaceNavigation getOverallPlaceNavigation() { + return navigator.getMiniOverallLeaderboardNavigation(); + } + }, seriesName, eventsOfSeries); } - private QuickfinderPresenter(Quickfinder quickfinder, SeriesLeaderboardNavigationProvider navigator, String seriesName, Collection eventsOfSeries) { + public static QuickfinderPresenter getForSeriesEventRaces(Quickfinder quickfinder, String seriesName, + final SeriesEventRacesNavigationProvider navigator, Collection eventsOfSeries) { + return new QuickfinderPresenter(quickfinder, MSG.racesQuickfinder(), new SeriesEventPlaceNaviationProvider() { + @Override + public PlaceNavigation getPlaceNavigation(UUID eventId) { + return navigator.getSeriesEventRacesNavigation(eventId); + } + + @Override + public PlaceNavigation getOverallPlaceNavigation() { + return null; + } + }, seriesName, eventsOfSeries); + } + + public static QuickfinderPresenter getForSeriesEventOverview(Quickfinder quickfinder, String seriesName, + final SeriesEventOverviewNavigationProvider navigator, Collection eventsOfSeries) { + return new QuickfinderPresenter(quickfinder, MSG.eventQuickfinder(), new SeriesEventPlaceNaviationProvider() { + @Override + public PlaceNavigation getPlaceNavigation(UUID eventId) { + return navigator.getSeriesEventOverviewNavigation(eventId); + } + + @Override + public PlaceNavigation getOverallPlaceNavigation() { + return null; + } + }, seriesName, eventsOfSeries); + } + + private QuickfinderPresenter(Quickfinder quickfinder, String placeholder, SeriesEventPlaceNaviationProvider provider, + String seriesName, Collection eventsOfSeries) { if (eventsOfSeries == null) { quickfinder.removeFromParent(); return; } - quickfinder.addPlaceholderItem(MSG.resultsQuickfinder()); - quickfinder.addItemToGroup(seriesName, MSG.overallLeaderboardSelection(), navigator.getMiniOverallLeaderboardNavigation()); + quickfinder.addPlaceholderItem(placeholder); + PlaceNavigation overallPlaceNavigation = provider.getOverallPlaceNavigation(); + if (overallPlaceNavigation != null) { + quickfinder.addItemToGroup(seriesName, MSG.overallLeaderboardSelection(), overallPlaceNavigation); + } for (EventReferenceDTO eventOfSeries : eventsOfSeries) { String displayName = eventOfSeries.getDisplayName(); if(eventOfSeries instanceof EventMetadataDTO) { displayName = ((EventMetadataDTO) eventOfSeries).getLocationOrDisplayName(); } - quickfinder.addItemToGroup(seriesName, displayName, navigator.getMiniLeaderboardNavigation(eventOfSeries.getId())); + quickfinder.addItemToGroup(seriesName, displayName, provider.getPlaceNavigation(eventOfSeries.getId())); } } @@ -79,6 +124,11 @@ public class QuickfinderPresenter { } } + private interface SeriesEventPlaceNaviationProvider { + PlaceNavigation getOverallPlaceNavigation(); + PlaceNavigation getPlaceNavigation(UUID eventId); + } + private interface RegattaPlaceNaviationProvider { PlaceNavigation getPlaceNavigation(String regattaId); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/SeriesEventOverviewNavigationProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/SeriesEventOverviewNavigationProvider.java new file mode 100644 index 00000000000..80f1d9545f3 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/SeriesEventOverviewNavigationProvider.java @@ -0,0 +1,11 @@ +package com.sap.sailing.gwt.home.mobile.places; + +import java.util.UUID; + +import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; + +public interface SeriesEventOverviewNavigationProvider { + + PlaceNavigation getSeriesEventOverviewNavigation(UUID eventId); + +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/SeriesEventRacesNavigationProvider.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/SeriesEventRacesNavigationProvider.java new file mode 100644 index 00000000000..92b78b82653 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/SeriesEventRacesNavigationProvider.java @@ -0,0 +1,10 @@ +package com.sap.sailing.gwt.home.mobile.places; + +import java.util.UUID; + +import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; + +public interface SeriesEventRacesNavigationProvider { + + PlaceNavigation getSeriesEventRacesNavigation(UUID eventId); +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java index 95b36178463..12267399f88 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -168,10 +168,20 @@ public abstract class AbstractEventActivity ex return clientFactory.getNavigator().getEventNavigation(new RegattaOverviewPlace(ctx), null, false); } + @Override + public PlaceNavigation getSeriesEventOverviewNavigation(UUID eventId) { + return clientFactory.getNavigator().getEventNavigation(new EventDefaultPlace(eventId.toString()), null, false); + } + public PlaceNavigation getRegattaRacesNavigation(String regattaId) { EventContext ctx = new EventContext(getCtx()).withRegattaId(regattaId).withRegattaAnalyticsManager(null); return clientFactory.getNavigator().getEventNavigation(new RegattaRacesPlace(ctx), null, false); } + + @Override + public PlaceNavigation getSeriesEventRacesNavigation(UUID eventId) { + return clientFactory.getNavigator().getEventNavigation(new RegattaRacesPlace(eventId.toString(), null), null, false); + } public String getRaceViewerURL(String regattaName, String trackedRaceName) { return null; // TODO No mobile "RaceViewer implemented yet diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java index 2ea074d6a13..23a6c8c89fd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventView.java @@ -76,6 +76,10 @@ public abstract class AbstractEventView

exten QuickfinderPresenter.getForRegattaLeaderboards(quickfinder, currentPresenter, regattaMetadatas); } + protected void setQuickFinderValues(Quickfinder quickfinder, String seriesName, Collection eventsOfSeries) { + QuickfinderPresenter.getForSeriesLeaderboards(quickfinder, seriesName, currentPresenter, eventsOfSeries); + } + protected void initRacesNavigation(Panel container) { MobileSection mobileSection = new MobileSection(); SectionHeaderContent header = new SectionHeaderContent(); @@ -93,7 +97,7 @@ public abstract class AbstractEventView

exten @Override public final void setQuickFinderValues(String seriesName, Collection eventsOfSeries) { - QuickfinderPresenter.getForSeriesLeaderboards(layout.quickFinderUi, seriesName, currentPresenter, eventsOfSeries); + setQuickFinderValues(layout.quickFinderUi, seriesName, eventsOfSeries); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java index 01931f261b4..5b9b21652ed 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/EventViewBase.java @@ -6,6 +6,8 @@ import com.google.gwt.user.client.ui.IsWidget; import com.sap.sailing.gwt.home.mobile.places.RegattaLeaderboardNavigationProvider; import com.sap.sailing.gwt.home.mobile.places.RegattaOverviewNavigationProvider; import com.sap.sailing.gwt.home.mobile.places.RegattaRacesNavigationProvider; +import com.sap.sailing.gwt.home.mobile.places.SeriesEventOverviewNavigationProvider; +import com.sap.sailing.gwt.home.mobile.places.SeriesEventRacesNavigationProvider; import com.sap.sailing.gwt.home.mobile.places.SeriesLeaderboardNavigationProvider; import com.sap.sailing.gwt.home.shared.app.PlaceNavigation; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; @@ -26,7 +28,8 @@ public interface EventViewBase extends IsWidget { void setSeriesNavigation(String buttonLabel, PlaceNavigation placeNavigation); public interface Presenter extends RegattaLeaderboardNavigationProvider, SeriesLeaderboardNavigationProvider, - RegattaRacesNavigationProvider, RegattaOverviewNavigationProvider { + RegattaRacesNavigationProvider, SeriesEventRacesNavigationProvider, RegattaOverviewNavigationProvider, + SeriesEventOverviewNavigationProvider { EventContext getCtx(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java index baee807c58c..46413fd6e20 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/overview/EventViewImpl.java @@ -9,9 +9,11 @@ import com.sap.sailing.gwt.home.mobile.partials.eventsteps.EventSteps; import com.sap.sailing.gwt.home.mobile.partials.impressions.Impressions; import com.sap.sailing.gwt.home.mobile.partials.liveraces.RegattaLiveRaces; import com.sap.sailing.gwt.home.mobile.partials.minileaderboard.MinileaderboardBox; +import com.sap.sailing.gwt.home.mobile.partials.quickfinder.Quickfinder; import com.sap.sailing.gwt.home.mobile.partials.regattaStatus.RegattaStatus; import com.sap.sailing.gwt.home.mobile.partials.statisticsBox.StatisticsBox; import com.sap.sailing.gwt.home.mobile.partials.updatesBox.UpdatesBox; +import com.sap.sailing.gwt.home.mobile.places.QuickfinderPresenter; import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView; import com.sap.sailing.gwt.home.shared.ExperimentalFeatures; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -23,6 +25,7 @@ import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMiniLeaderbordAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaStatisticsAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattaWithProgressAction; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetRegattasAndLiveRacesForEventAction; +import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; import com.sap.sailing.gwt.ui.shared.general.EventState; import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO; @@ -113,6 +116,11 @@ public class EventViewImpl extends AbstractEventView implem : new GetRegattaStatisticsAction(getEventId(), getRegattaId())); container.add(statisticsBoxUi); } + + @Override + protected void setQuickFinderValues(Quickfinder quickfinder, String seriesName, Collection eventsOfSeries) { + QuickfinderPresenter.getForSeriesEventOverview(quickfinder, seriesName, currentPresenter, eventsOfSeries); + } @Override public void setMediaForImpressions(int nrOfImages, int nrOfVideos, Collection images) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java index cddc97e722e..0b85bc6e5be 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/races/RacesViewImpl.java @@ -13,6 +13,7 @@ import com.sap.sailing.gwt.home.mobile.places.event.AbstractEventView; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetCompetitionFormatRacesAction; import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType; import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO; +import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO; public class RacesViewImpl extends AbstractEventView implements RacesView { @@ -34,5 +35,10 @@ public class RacesViewImpl extends AbstractEventView implem protected void setQuickFinderValues(Quickfinder quickfinder, Collection regattaMetadatas) { QuickfinderPresenter.getForRegattaRaces(quickfinder, currentPresenter, regattaMetadatas); } - + + @Override + protected void setQuickFinderValues(Quickfinder quickfinder, String seriesName, Collection eventsOfSeries) { + QuickfinderPresenter.getForSeriesEventRaces(quickfinder, seriesName, currentPresenter, eventsOfSeries); + } + } From 63248d6e8ac2aa31629cdfdc2b8b884a598b0c4a Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 1 Oct 2015 22:09:25 +0200 Subject: [PATCH 464/504] introduced Leaderboard.get[All]Competitors(RaceColumn, Fleet), based on CompetitorProvider... and use it in competitor servlet --- .../domain/leaderboard/Leaderboard.java | 16 ++++ .../impl/AbstractLeaderboardImpl.java | 6 ++ .../impl/AbstractSimpleLeaderboardImpl.java | 85 +++++++++++-------- .../meta/AbstractMetaLeaderboard.java | 12 +++ .../impl/rc/CompetitorsJsonExportServlet.java | 13 +-- 5 files changed, 88 insertions(+), 44 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/Leaderboard.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/Leaderboard.java index 61b69a61bac..b423bce0676 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/Leaderboard.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/Leaderboard.java @@ -93,6 +93,22 @@ public interface Leaderboard extends LeaderboardBase, HasRaceColumns { * @return all competitors in this leaderboard, including the suppressed ones. */ Iterable getAllCompetitors(); + + /** + * Retrieves all competitors expected to race in the fleet and column specified. + * When a {@link TrackedRace} is {@link RaceColumn#getTrackedRace(Fleet) attached} to the race + * column for the fleet specified, its competitor set is returned. Otherwise, + * the competitors are collected from any other information, such as a regatta log and/or the + * race log for the combination of race column and fleet or, in case of a meta-leaderboard, + * from the leaderboard represented by the race column. + */ + Iterable getAllCompetitors(RaceColumn raceColumn, Fleet fleet); + + /** + * Same as {@link #getAllCompetitors(RaceColumn, Fleet)} with competitors from {@link #getSuppressedCompetitors()} + * removed + */ + Iterable getCompetitors(RaceColumn raceColumn, Fleet fleet); /** * Convenience method which returns the difference between {@link #getAllCompetitors()} and {@link #getCompetitors()}. diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java index c93f076e7d1..3857e797c5b 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java @@ -83,6 +83,11 @@ public abstract class AbstractLeaderboardImpl extends AbstractSimpleLeaderboardI return competitorsProvider.getAllCompetitors(); } + @Override + public Iterable getAllCompetitors(RaceColumn raceColumn, Fleet fleet) { + return competitorsProvider.getAllCompetitors(raceColumn, fleet); + } + @Override public Competitor getCompetitorByIdAsString(String idAsString) { for (Competitor competitor : getAllCompetitors()) { @@ -162,4 +167,5 @@ public abstract class AbstractLeaderboardImpl extends AbstractSimpleLeaderboardI Fleet fleet = raceColumn.getFleetByName(fleetName); return raceColumn.getRaceLog(fleet); } + } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java index 7086df70b5a..1f36ec0afee 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java @@ -1106,44 +1106,59 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race final Iterable allCompetitors = getAllCompetitors(); final Set suppressed = new HashSet<>(); Util.addAll(getSuppressedCompetitors(), suppressed); - result = new Iterable() { - @Override - public Iterator iterator() { - return new Iterator() { - private final Iterator allIter = allCompetitors.iterator(); - private Competitor next = advance(); - - private Competitor advance() { - next = null; - while (allIter.hasNext() && next == null) { - next = allIter.next(); - if (suppressed.contains(next)) { - next = null; - } - } - return next; - } - - @Override - public boolean hasNext() { - return next != null; - } - - @Override - public Competitor next() { - if (next == null) { - throw new NoSuchElementException(); - } - final Competitor result = next; - advance(); - return result; - } - }; - } - }; + result = getCompetitorIterableSkippingSuppressed(allCompetitors, suppressed); } return result; } + + @Override + public Iterable getCompetitors(RaceColumn raceColumn, Fleet fleet) { + return getCompetitorIterableSkippingSuppressed(getAllCompetitors(raceColumn, fleet), getSuppressedCompetitors()); + } + + /** + * return an iterable with a smart iterator that filters out the suppressed elements on demand + */ + protected Iterable getCompetitorIterableSkippingSuppressed(final Iterable allCompetitors, + final Iterable suppressed) { + final Iterable result; + result = new Iterable() { + @Override + public Iterator iterator() { + return new Iterator() { + private final Iterator allIter = allCompetitors.iterator(); + private Competitor next = advance(); + + private Competitor advance() { + next = null; + while (allIter.hasNext() && next == null) { + next = allIter.next(); + if (Util.contains(suppressed, next)) { + next = null; + } + } + return next; + } + + @Override + public boolean hasNext() { + return next != null; + } + + @Override + public Competitor next() { + if (next == null) { + throw new NoSuchElementException(); + } + final Competitor result = next; + advance(); + return result; + } + }; + } + }; + return result; + } @Override public Iterable getSuppressedCompetitors() { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/AbstractMetaLeaderboard.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/AbstractMetaLeaderboard.java index d7618dd1cb1..030b22f75db 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/AbstractMetaLeaderboard.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/AbstractMetaLeaderboard.java @@ -5,6 +5,7 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -147,6 +148,17 @@ public abstract class AbstractMetaLeaderboard extends AbstractSimpleLeaderboardI return result; } + @Override + public Iterable getAllCompetitors(RaceColumn raceColumn, Fleet fleet) { + final Iterable result; + if (fleet == metaFleet && Util.contains(getRaceColumns(), raceColumn)) { + result = ((MetaLeaderboardColumn) raceColumn).getAllCompetitors(); + } else { + result = Collections.emptySet(); + } + return result; + } + @Override public Fleet getFleet(String fleetName) { return fleetName.equals(metaFleet.getName()) ? metaFleet : null; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/CompetitorsJsonExportServlet.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/CompetitorsJsonExportServlet.java index 632fdde94b2..8efd5107173 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/CompetitorsJsonExportServlet.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/impl/rc/CompetitorsJsonExportServlet.java @@ -13,7 +13,6 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.common.racelog.RaceLogServletConstants; import com.sap.sailing.domain.leaderboard.Leaderboard; -import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.gateway.AbstractJsonHttpServlet; import com.sap.sailing.server.gateway.serialization.impl.BoatClassJsonSerializer; @@ -62,15 +61,11 @@ public class CompetitorsJsonExportServlet extends AbstractJsonHttpServlet { response.sendError(HttpServletResponse.SC_NOT_FOUND, "No such fleet found."); return; } - TrackedRace trackedRace = raceColumn.getTrackedRace(fleet); JSONArray result = new JSONArray(); - if (trackedRace != null) { - CompetitorJsonSerializer serializer = new CompetitorJsonSerializer(new TeamJsonSerializer( - new PersonJsonSerializer(new NationalityJsonSerializer())), new BoatJsonSerializer(new BoatClassJsonSerializer())); - - for (Competitor competitor : raceColumn.getRaceDefinition(fleet).getCompetitors()) { - result.add(serializer.serialize(competitor)); - } + CompetitorJsonSerializer serializer = new CompetitorJsonSerializer(new TeamJsonSerializer( + new PersonJsonSerializer(new NationalityJsonSerializer())), new BoatJsonSerializer(new BoatClassJsonSerializer())); + for (Competitor competitor : leaderboard.getCompetitors(raceColumn, fleet)) { + result.add(serializer.serialize(competitor)); } setJsonResponseHeader(response); result.writeJSONString(response.getWriter()); From 54e8ebfff6cfdfd8741ec5290edbc5f7835a7d1b Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 1 Oct 2015 19:44:35 +0200 Subject: [PATCH 465/504] formatting changes only --- .../impl/CompetitorWithID.java | 18 +++++++++--------- .../impl/DomainFactoryImpl.java | 8 ++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/CompetitorWithID.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/CompetitorWithID.java index 1b0d9499523..717d4f38716 100644 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/CompetitorWithID.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/CompetitorWithID.java @@ -41,15 +41,15 @@ public class CompetitorWithID implements Competitor { return id; } - @Override - public String toString() { - return "CompetitorWithID [boatID=" + boatID + ", threeLetterIOCCode=" - + threeLetterIOCCode + ", name=" + name + ", id=" + id + "]"; - } + @Override + public String toString() { + return "CompetitorWithID [boatID=" + boatID + ", threeLetterIOCCode=" + threeLetterIOCCode + ", name=" + name + + ", id=" + id + "]"; + } - @Override - public List getCrew() { - return crew; - } + @Override + public List getCrew() { + return crew; + } } diff --git a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/DomainFactoryImpl.java index cb41a8738dc..6227fb48c01 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/DomainFactoryImpl.java @@ -249,12 +249,12 @@ public class DomainFactoryImpl implements DomainFactory { private Iterable createCompetitorList(StartList startList, String raceId, BoatClass boatClass) { List result = new ArrayList(); for (com.sap.sailing.domain.swisstimingadapter.Competitor swissTimingCompetitor : startList.getCompetitors()) { - Competitor domainCompetitor; - if(swissTimingCompetitor.getID() != null) { + Competitor domainCompetitor; + if (swissTimingCompetitor.getID() != null) { domainCompetitor = createCompetitorWithID(swissTimingCompetitor, boatClass); - } else { + } else { domainCompetitor = createCompetitorWithoutID(swissTimingCompetitor, raceId, boatClass); - } + } result.add(domainCompetitor); } return result; From 8213cb9a3d89669ccbbe6ef7433879c21956f343 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 1 Oct 2015 23:33:21 +0200 Subject: [PATCH 466/504] made access to competitor provider null-safe --- .../leaderboard/impl/AbstractLeaderboardImpl.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java index 3857e797c5b..e5947108d43 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardImpl.java @@ -77,15 +77,19 @@ public abstract class AbstractLeaderboardImpl extends AbstractSimpleLeaderboardI */ @Override public Iterable getAllCompetitors() { - if (competitorsProvider == null) { - competitorsProvider = new CompetitorProviderFromRaceColumnsAndRegattaLike(this); - } - return competitorsProvider.getAllCompetitors(); + return getOrCreateCompetitorsProvider().getAllCompetitors(); } @Override public Iterable getAllCompetitors(RaceColumn raceColumn, Fleet fleet) { - return competitorsProvider.getAllCompetitors(raceColumn, fleet); + return getOrCreateCompetitorsProvider().getAllCompetitors(raceColumn, fleet); + } + + private CompetitorProviderFromRaceColumnsAndRegattaLike getOrCreateCompetitorsProvider() { + if (competitorsProvider == null) { + competitorsProvider = new CompetitorProviderFromRaceColumnsAndRegattaLike(this); + } + return competitorsProvider; } @Override From cdc818836b1b3916164109a69a56b415f809d2bb Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 2 Oct 2015 10:12:35 +0200 Subject: [PATCH 467/504] added tests for cache invalidation in CompetitorProvider...; added two missing try/finally clauses around locking code --- .../abstractlog/impl/AbstractLogImpl.java | 16 ++-- ...mpetitorProviderCacheInvalidationTest.java | 88 ++++++++++++++++--- 2 files changed, 88 insertions(+), 16 deletions(-) diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogImpl.java index 21684189a64..4436a2045bb 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogImpl.java @@ -123,8 +123,11 @@ extends TrackImpl implements AbstractLog { try { checkIfSuccessfullyRevokes(revokeEvent); lockForWrite(); - revokedEventIds.add(revokeEvent.getRevokedEventId()); - unlockAfterWrite(); + try { + revokedEventIds.add(revokeEvent.getRevokedEventId()); + } finally { + unlockAfterWrite(); + } } catch (NotRevokableException e) { logger.log(Level.WARNING, e.getMessage()); } @@ -133,9 +136,12 @@ extends TrackImpl implements AbstractLog { private void checkIfSuccessfullyRevokes(RevokeEvent revokeEvent) throws NotRevokableException { lockForRead(); - EventT revokedEvent = getEventById(revokeEvent.getRevokedEventId()); - unlockAfterRead(); - + EventT revokedEvent; + try { + revokedEvent = getEventById(revokeEvent.getRevokedEventId()); + } finally { + unlockAfterRead(); + } if (revokedEvent == null) { // it can happen that the event that has been revoked is not yet loaded - as we assume // that race log events never get removed we can safely continue and assume that diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java index ee46cefbe52..2d261296651 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorProviderCacheInvalidationTest.java @@ -1,12 +1,15 @@ package com.sap.sailing.domain.test; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.UUID; @@ -16,7 +19,9 @@ import org.junit.Test; import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEventFactory; +import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; +import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.impl.BoatClassImpl; @@ -26,6 +31,7 @@ import com.sap.sailing.domain.base.impl.RegattaImpl; import com.sap.sailing.domain.base.impl.SeriesImpl; import com.sap.sailing.domain.common.BoatClassMasterdata; import com.sap.sailing.domain.common.LeaderboardNameConstants; +import com.sap.sailing.domain.common.abstractlog.NotRevokableException; import com.sap.sailing.domain.leaderboard.impl.CompetitorProviderFromRaceColumnsAndRegattaLike; import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl; import com.sap.sailing.domain.leaderboard.impl.LowPoint; @@ -99,8 +105,13 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard public void testSimpleCompetitorListOnOneRaceLogInFlexibleLeaderboard() { flexibleLeaderboard.addRaceColumn("R1", /* medalRace */ false); RaceLog raceLog = flexibleLeaderboard.getRacelog("R1", LeaderboardNameConstants.DEFAULT_FLEET_NAME); + final int passId = 1; + final LogEventAuthorImpl author = new LogEventAuthorImpl("Me", 0); + final Map competitorOnRaceLogRegistrationEvents = new HashMap<>(); for (Competitor c : compLists[0]) { - raceLog.add(RaceLogEventFactory.INSTANCE.createRegisterCompetitorEvent(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), 1, c)); + final RaceLogRegisterCompetitorEvent registerCompetitorEvent = RaceLogEventFactory.INSTANCE.createRegisterCompetitorEvent(MillisecondsTimePoint.now(), author, passId, c); + raceLog.add(registerCompetitorEvent); + competitorOnRaceLogRegistrationEvents.put(c, registerCompetitorEvent); } Set expected = new HashSet<>(compLists[0]); Set actual = new HashSet<>(); @@ -111,6 +122,26 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard flexibleLeaderboard.getRaceColumnByName("R1"), flexibleLeaderboard.getFleet(LeaderboardNameConstants.DEFAULT_FLEET_NAME)), actualForRace); assertEquals(expected, actualForRace); + // we're now revoking a competitor registration on the race log and assert + // that the competitor is gone from the list: + final Competitor competitorToRevokeFromRaceLog = compLists[0].get(2); + raceLog.add(RaceLogEventFactory.INSTANCE.createRevokeEvent(author, passId, competitorOnRaceLogRegistrationEvents.get(competitorToRevokeFromRaceLog), "Test revoking")); + actualForRace = new HashSet<>(); // try another time; cache should of course yield an equal result (although + // we're not asserting here that the result actually comes from the cache) + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors( + flexibleLeaderboard.getRaceColumnByName("R1"), + flexibleLeaderboard.getFleet(LeaderboardNameConstants.DEFAULT_FLEET_NAME)), actualForRace); + expected.remove(competitorToRevokeFromRaceLog); + assertEquals(expected.size(), actualForRace.size()); + assertEquals(expected, actualForRace); + flexibleLeaderboard.removeRaceColumn("R1"); // test that changes to the race columns invalidate the cache + flexibleLeaderboard.addRaceColumn("R1", /* medalRace */ false); + actualForRace = new HashSet<>(); // try another time; cache should of course yield an equal result (although + // we're not asserting here that the result actually comes from the cache) + Util.addAll(competitorProviderFlexibleLeaderboard.getAllCompetitors( + flexibleLeaderboard.getRaceColumnByName("R1"), + flexibleLeaderboard.getFleet(LeaderboardNameConstants.DEFAULT_FLEET_NAME)), actualForRace); + assertTrue(actualForRace.isEmpty()); } @Test @@ -233,10 +264,14 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard } @Test - public void testSimpleCompetitorListOnRegattaLogInRegattaLeaderboard() { + public void testSimpleCompetitorListOnRegattaLogInRegattaLeaderboard() throws NotRevokableException { RegattaLog regattaLog = regattaLeaderboard.getRegatta().getRegattaLog(); + final Map competitorOnRegattaLogRegistrationEvents = new HashMap<>(); + final LogEventAuthorImpl author = new LogEventAuthorImpl("Me", 0); for (Competitor c : compLists[0]) { - regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), MillisecondsTimePoint.now(), UUID.randomUUID(), c)); + final RegattaLogRegisterCompetitorEventImpl registerCompetitorEvent = new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), author, MillisecondsTimePoint.now(), UUID.randomUUID(), c); + regattaLog.add(registerCompetitorEvent); + competitorOnRegattaLogRegistrationEvents.put(c, registerCompetitorEvent); } Set expected = new HashSet<>(compLists[0]); Set actual = new HashSet<>(); @@ -250,23 +285,38 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Blue")), actualForRaceBlue); assertEquals(new HashSet<>(compLists[0]), actualForRaceBlue); + // now revoke one registration again from the regatta log + final Competitor competitorToRevokeFromRegattaLog = compLists[0].get(2); + regattaLog.revokeEvent(author, competitorOnRegattaLogRegistrationEvents.get(competitorToRevokeFromRegattaLog)); + actualForRaceYellow = new HashSet<>(); // try another time; cache should of course yield an equal result (although + // we're not asserting here that the result actually comes from the cache) + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( + regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Yellow")), actualForRaceYellow); + expected.remove(competitorToRevokeFromRegattaLog); + assertEquals(expected.size(), actualForRaceYellow.size()); + assertEquals(expected, actualForRaceYellow); } @Test public void testSimpleCompetitorListOnOneRaceLogAndRegattaLogInRegattaLeaderboard() { - RegattaLog regattaLog = regattaLeaderboard.getRegatta().getRegattaLog(); + final RegattaLog regattaLog = regattaLeaderboard.getRegatta().getRegattaLog(); + final LogEventAuthorImpl author = new LogEventAuthorImpl("Me", 0); for (Competitor c : compLists[0]) { - regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), MillisecondsTimePoint.now(), UUID.randomUUID(), c)); + regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(MillisecondsTimePoint.now(), author, MillisecondsTimePoint.now(), UUID.randomUUID(), c)); } - RaceLog raceLog = regattaLeaderboard.getRacelog("R1", "Yellow"); - for (Competitor c : compLists[1]) { - raceLog.add(RaceLogEventFactory.INSTANCE.createRegisterCompetitorEvent(MillisecondsTimePoint.now(), new LogEventAuthorImpl("Me", 0), 1, c)); + final RaceLog raceLog = regattaLeaderboard.getRacelog("R1", "Yellow"); + final int passId = 1; + final Map competitorOnRaceLogRegistrationEvents = new HashMap<>(); + for (Competitor c : compLists[passId]) { + final RaceLogRegisterCompetitorEvent registerCompetitorEvent = RaceLogEventFactory.INSTANCE.createRegisterCompetitorEvent(MillisecondsTimePoint.now(), author, passId, c); + raceLog.add(registerCompetitorEvent); + competitorOnRaceLogRegistrationEvents.put(c, registerCompetitorEvent); } - regattaLeaderboard.setSuppressed(compLists[0].get(compLists[0].size()-1), /* suppressed */ true); + regattaLeaderboard.setSuppressed(compLists[0].get(compLists[0].size()-passId), /* suppressed */ true); Set expected = new HashSet<>(compLists[0]); - expected.addAll(compLists[1]); + expected.addAll(compLists[passId]); Set expectedWithoutSuppressed = new HashSet<>(expected); - expectedWithoutSuppressed.remove(compLists[0].get(compLists[0].size()-1)); + expectedWithoutSuppressed.remove(compLists[0].get(compLists[0].size()-passId)); Set actual = new HashSet<>(); Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors(), actual); assertEquals(expected, actual); @@ -277,6 +327,22 @@ public class CompetitorProviderCacheInvalidationTest extends AbstractLeaderboard Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Yellow")), actualForRaceYellow); assertEquals(expected, actualForRaceYellow); + actualForRaceYellow = new HashSet<>(); // try another time; cache should of course yield an equal result (although + // we're not asserting here that the result actually comes from the cache) + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( + regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Yellow")), actualForRaceYellow); + assertEquals(expected, actualForRaceYellow); + // But now it gets interesting: we're revoking a competitor registration on the race log and assert + // that the competitor is gone from the list: + final Competitor competitorToRevokeFromRaceLog = compLists[passId].get(2); + raceLog.add(RaceLogEventFactory.INSTANCE.createRevokeEvent(author, passId, competitorOnRaceLogRegistrationEvents.get(competitorToRevokeFromRaceLog), "Test revoking")); + actualForRaceYellow = new HashSet<>(); // try another time; cache should of course yield an equal result (although + // we're not asserting here that the result actually comes from the cache) + Util.addAll(competitorProviderRegattaLeaderboard.getAllCompetitors( + regattaLeaderboard.getRaceColumnByName("R1"), regattaLeaderboard.getFleet("Yellow")), actualForRaceYellow); + expected.remove(competitorToRevokeFromRaceLog); + assertEquals(expected.size(), actualForRaceYellow.size()); + assertEquals(expected, actualForRaceYellow); } } From 72a149d7b14e82ac3a0938db6379784edef318eb Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 2 Oct 2015 10:41:55 +0200 Subject: [PATCH 468/504] as an aftermath to bug 3302 we can now determine a competitor's fleet also from the race log competitor assignments --- .../sap/sailing/domain/base/impl/AbstractRaceColumn.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java index 322a90a446b..e03614bd77e 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/AbstractRaceColumn.java @@ -120,9 +120,9 @@ public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implem @Override public Fleet getFleetOfCompetitor(Competitor competitor) { - for (Map.Entry e : trackedRaces.entrySet()) { - if (Util.contains(e.getValue().getRace().getCompetitors(), competitor)) { - return e.getKey(); + for (final Fleet fleet : getFleets()) { + if (Util.contains(getAllCompetitors(fleet), competitor)) { + return fleet; } } return null; From 4aa7271832e6e14fabfcdcde9bdf2d849888e5a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Fri, 2 Oct 2015 11:09:20 +0200 Subject: [PATCH 469/504] Add CreateDefaultRegattaDeialog to Selenium Tests --- .../gwt/ui/adminconsole/RegattaManagementPanel.java | 7 +++++-- .../local-test-environment.xml | 4 ++-- .../src/com/sap/sailing/selenium/pages/HostPage.java | 2 +- .../DefaultRegattaLeaderboardCreateDialogPO.java | 12 ++++++++++++ .../regatta/RegattaStructureManagementPanelPO.java | 7 +++++++ 5 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/regatta/DefaultRegattaLeaderboardCreateDialogPO.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaManagementPanel.java index 9c1dcbdbd1e..236bce167ba 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaManagementPanel.java @@ -165,7 +165,7 @@ public class RegattaManagementPanel extends SimplePanel implements RegattasDispl } private void openCreateDefaultRegattaLeaderboardDialog(final RegattaDTO newRegatta){ - new CreateDefaultRegattaLeaderboardDialog(sailingService, stringMessages, errorReporter, newRegatta, new DialogCallback() { + CreateDefaultRegattaLeaderboardDialog dialog = new CreateDefaultRegattaLeaderboardDialog(sailingService, stringMessages, errorReporter, newRegatta, new DialogCallback() { @Override public void ok(RegattaIdentifier regattaIdentifier) { sailingService.createRegattaLeaderboard(regattaIdentifier, /* displayName */ null, new int[]{}, @@ -185,7 +185,10 @@ public class RegattaManagementPanel extends SimplePanel implements RegattasDispl @Override public void cancel() { } - }).show(); + }); + + dialog.ensureDebugId("CreateDefaultRegattaDialog"); + dialog.show(); } private void createNewRegatta(final RegattaDTO newRegatta) { diff --git a/java/com.sap.sailing.selenium.test/local-test-environment.xml b/java/com.sap.sailing.selenium.test/local-test-environment.xml index 1830f4c8e3b..75f0d53540a 100755 --- a/java/com.sap.sailing.selenium.test/local-test-environment.xml +++ b/java/com.sap.sailing.selenium.test/local-test-environment.xml @@ -39,10 +39,10 @@ webdriver.firefox.bin - c:/Program Files (x86)/Mozilla Firefox/firefox.exe + - + /home/jan/Downloads/firefox/firefox diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/HostPage.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/HostPage.java index 145fe69a903..42fc19e4cc7 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/HostPage.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/HostPage.java @@ -20,7 +20,7 @@ public class HostPage extends PageObject { protected static final int DEFAULT_PAGE_LOAD_TIMEOUT = 60; public static final String getGWTCodeServer() { - String codeServer = System.getProperty(GWT_CODE_SERVER_PARAMETER_NAME); + String codeServer = "127.0.0.1:50802";//System.getProperty(GWT_CODE_SERVER_PARAMETER_NAME); if (codeServer == null) { return NO_CODE_SERVER_PARAMTER_VALUE; } diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/regatta/DefaultRegattaLeaderboardCreateDialogPO.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/regatta/DefaultRegattaLeaderboardCreateDialogPO.java new file mode 100644 index 00000000000..740b7051b14 --- /dev/null +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/regatta/DefaultRegattaLeaderboardCreateDialogPO.java @@ -0,0 +1,12 @@ +package com.sap.sailing.selenium.pages.adminconsole.regatta; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +import com.sap.sailing.selenium.pages.common.DataEntryDialogPO; + +public class DefaultRegattaLeaderboardCreateDialogPO extends DataEntryDialogPO { + public DefaultRegattaLeaderboardCreateDialogPO(WebDriver driver, WebElement element) { + super(driver, element); + } +} diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/regatta/RegattaStructureManagementPanelPO.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/regatta/RegattaStructureManagementPanelPO.java index 5db9249d35b..774ba59ebfa 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/regatta/RegattaStructureManagementPanelPO.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/adminconsole/regatta/RegattaStructureManagementPanelPO.java @@ -47,8 +47,15 @@ public class RegattaStructureManagementPanelPO extends PageArea { addSeriesDialog.pressOk(); // QUESTION: How do we handle an error (here or in the dialog)? createRegattaDialog.pressOk(); + DefaultRegattaLeaderboardCreateDialogPO createDefaultRegattaLeaderboardDialog = createDefaultRegattaLeaderboard(); + createDefaultRegattaLeaderboardDialog.pressCancel(); } + private DefaultRegattaLeaderboardCreateDialogPO createDefaultRegattaLeaderboard() { + WebElement dialog = findElementBySeleniumId(this.driver, "CreateDefaultRegattaDialog"); //$NON-NLS-1$ + return new DefaultRegattaLeaderboardCreateDialogPO(this.driver, dialog); + } + public RegattaListCompositePO getRegattaList() { return new RegattaListCompositePO(this.driver, this.regattaList); } From 19e417745f469cb635b314a7666ff52589ff6074 Mon Sep 17 00:00:00 2001 From: Fredrik Teschke Date: Fri, 2 Oct 2015 11:49:44 +0000 Subject: [PATCH 470/504] state default credentials (admin/admin) in onboarding information --- wiki/onboarding.md | 1 + 1 file changed, 1 insertion(+) diff --git a/wiki/onboarding.md b/wiki/onboarding.md index 3c2786fde0e..b03d31f79b9 100644 --- a/wiki/onboarding.md +++ b/wiki/onboarding.md @@ -73,6 +73,7 @@ First of all, make sure you've looked at http://www.amazon.de/Patterns-Elements- * Start the appropriate Eclipse launch configuration (e.g. 'Sailing Server (Proxy)') You´ll find this in the run dropdown * Run "SailingGWT" in the run dropdown 5. Within the Race Analysis Suite + * Default Login: user "admin", password "admin" * For TracTrac Events: (Date 27.11.2012) Use Live URI tcp://10.18.22.156:4412, Stored URI tcp://10.18.22.156:4413, JSON URL http://germanmaster.traclive.dk/events/event_20120905_erEuropean/jsonservice.php * Press List Races From 7fe8de5eb2654e9efe40ff1925e937bc27f30135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Fri, 2 Oct 2015 15:22:55 +0200 Subject: [PATCH 471/504] Removes accidently committed local platform parameters for selenium --- java/com.sap.sailing.selenium.test/local-test-environment.xml | 4 ++-- .../src/com/sap/sailing/selenium/pages/HostPage.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.selenium.test/local-test-environment.xml b/java/com.sap.sailing.selenium.test/local-test-environment.xml index 75f0d53540a..12359527203 100755 --- a/java/com.sap.sailing.selenium.test/local-test-environment.xml +++ b/java/com.sap.sailing.selenium.test/local-test-environment.xml @@ -39,10 +39,10 @@ webdriver.firefox.bin - + c:/Program Files (x86)/Mozilla Firefox/firefox.exe - /home/jan/Downloads/firefox/firefox + diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/HostPage.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/HostPage.java index 42fc19e4cc7..145fe69a903 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/HostPage.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/pages/HostPage.java @@ -20,7 +20,7 @@ public class HostPage extends PageObject { protected static final int DEFAULT_PAGE_LOAD_TIMEOUT = 60; public static final String getGWTCodeServer() { - String codeServer = "127.0.0.1:50802";//System.getProperty(GWT_CODE_SERVER_PARAMETER_NAME); + String codeServer = System.getProperty(GWT_CODE_SERVER_PARAMETER_NAME); if (codeServer == null) { return NO_CODE_SERVER_PARAMTER_VALUE; } From 56d2010f6fd3f236698901595a7917ffdd7716f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Fri, 2 Oct 2015 16:45:25 +0200 Subject: [PATCH 472/504] Improve wording of competitor registration dialog --- .../ui/adminconsole/AbstractCompetitorRegistrationsDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractCompetitorRegistrationsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractCompetitorRegistrationsDialog.java index e57dfaf11ee..2f9512b9a72 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractCompetitorRegistrationsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractCompetitorRegistrationsDialog.java @@ -38,7 +38,7 @@ public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDia public AbstractCompetitorRegistrationsDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages, final ErrorReporter errorReporter, boolean editable, DialogCallback> callback) { - super(stringMessages.registerCompetitors(), /*messsage*/ null, stringMessages.ok(), stringMessages.cancel(), /*validator*/ null, callback); + super(stringMessages.registerCompetitors(), /*messsage*/ null, stringMessages.save(), stringMessages.cancel(), /*validator*/ null, callback); this.stringMessages = stringMessages; this.sailingService = sailingService; this.errorReporter = errorReporter; From 74e82858fa041c8452fdb8bd787d781200cd7444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Fri, 2 Oct 2015 16:51:17 +0200 Subject: [PATCH 473/504] Get all competitors in RegattaLogAddDeviceMappingDialog --- .../RegattaLogAddDeviceMappingDialog.java | 2 +- .../sailing/gwt/ui/client/SailingService.java | 3 +- .../gwt/ui/client/SailingServiceAsync.java | 242 ++++++++++-------- .../gwt/ui/server/SailingServiceImpl.java | 5 +- 4 files changed, 141 insertions(+), 111 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogAddDeviceMappingDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogAddDeviceMappingDialog.java index fe29e24fbf1..141d8d96dc8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogAddDeviceMappingDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogAddDeviceMappingDialog.java @@ -94,7 +94,7 @@ public class RegattaLogAddDeviceMappingDialog extends AbstractLogAddDeviceMappin @Override protected void loadCompetitorsAndMarks() { - sailingService.getCompetitorRegistrationsInRegattaLog(leaderboardName, itemSelectionPanel.getSetCompetitorsCallback()); + sailingService.getCompetitorRegistrationsFromLogHierarchy(leaderboardName, itemSelectionPanel.getSetCompetitorsCallback()); // fetching marks definitions from the race logs; note that currently there are no mark *definitions* // on regatta logs although there can be mark/device assignments on a regatta log which then gives the // mark a position that applies across all races in the regatta-like thing diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 0837cd72aef..4281899c411 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -610,8 +610,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS void revokeMarkDefinitionEventInRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO); - Collection getCompetitorRegistrationsFromLogHierarchy(String leaderboardName, String raceColumnName, - String fleetName); + Collection getCompetitorRegistrationsFromLogHierarchy(String leaderboardName); /** * @param raceLogFrom identifies the race log to copy from by its leaderboard name, race column name and fleet name diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index ddc1be05e26..94c44a2d695 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -99,9 +99,11 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan /** * The string returned in the callback's pair is the common event name - * @param listHiddenRaces + * + * @param listHiddenRaces */ - void listTracTracRacesInEvent(String eventJsonURL, boolean listHiddenRaces, AsyncCallback>> callback); + void listTracTracRacesInEvent(String eventJsonURL, boolean listHiddenRaces, + AsyncCallback>> callback); /** * @param regattaToAddTo @@ -125,9 +127,10 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan * be null or the empty string in which case the server will use the * {@link TracTracRaceRecordDTO#storedURI} from the rr race record. */ - void trackWithTracTrac(RegattaIdentifier regattaToAddTo, - Iterable rrs, String liveURI, String storedURI, String courseDesignUpdateURI, boolean trackWind, boolean correctWindByDeclination, - boolean simulateWithStartTimeNow, boolean useInternalMarkPassingAlgorithm, String tracTracUsername, String tracTracPassword, AsyncCallback callback); + void trackWithTracTrac(RegattaIdentifier regattaToAddTo, Iterable rrs, String liveURI, + String storedURI, String courseDesignUpdateURI, boolean trackWind, boolean correctWindByDeclination, + boolean simulateWithStartTimeNow, boolean useInternalMarkPassingAlgorithm, String tracTracUsername, + String tracTracPassword, AsyncCallback callback); void trackWithSwissTiming(RegattaIdentifier regattaToAddTo, Iterable rrs, String hostname, int port, boolean trackWind, boolean correctWindByDeclination, @@ -139,8 +142,8 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void getPreviousTracTracConfigurations(AsyncCallback> callback); - void storeTracTracConfiguration(String name, String jsonURL, String liveDataURI, String storedDataURI, String courseDesignUpdateURI, String tracTracUsername, String tracTracPassword, - AsyncCallback callback); + void storeTracTracConfiguration(String name, String jsonURL, String liveDataURI, String storedDataURI, + String courseDesignUpdateURI, String tracTracUsername, String tracTracPassword, AsyncCallback callback); void stopTrackingEvent(RegattaIdentifier eventIdentifier, AsyncCallback callback); @@ -148,11 +151,14 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan /** * Untracks the race and removes it from the regatta. It will also be removed in all leaderboards - * @param regattaNamesAndRaceNames The identifier for the regatta name, and the race name to remove + * + * @param regattaNamesAndRaceNames + * The identifier for the regatta name, and the race name to remove */ void removeAndUntrackRaces(Iterable regattaNamesAndRaceNames, AsyncCallback callback); - void getRawWindFixes(RegattaAndRaceIdentifier raceIdentifier, Collection windSources, AsyncCallback callback); + void getRawWindFixes(RegattaAndRaceIdentifier raceIdentifier, Collection windSources, + AsyncCallback callback); /** * @param windSourceTypeNames @@ -175,8 +181,8 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan * if null, data from all available wind sources will be returned, otherwise only from those * whose {@link WindSource} name is contained in the windSources collection. */ - void getAveragedWindInfo(RegattaAndRaceIdentifier raceIdentifier, Date from, long millisecondsStepWidth, int numberOfFixes, - double latDeg, double lngDeg, Collection windSourceTypeNames, + void getAveragedWindInfo(RegattaAndRaceIdentifier raceIdentifier, Date from, long millisecondsStepWidth, + int numberOfFixes, double latDeg, double lngDeg, Collection windSourceTypeNames, AsyncCallback callback); /** @@ -196,22 +202,24 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan boolean includeCombinedWindForAllLegMiddles, AsyncCallback callback); void getPolarResults(RegattaAndRaceIdentifier raceIdentifier, AsyncCallback callback); - + void getSimulatorResults(LegIdentifier legIdentifier, AsyncCallback callback); - + void setWind(RegattaAndRaceIdentifier raceIdentifier, WindDTO wind, AsyncCallback callback); void removeWind(RegattaAndRaceIdentifier raceIdentifier, WindDTO windDTO, AsyncCallback callback); void getRaceTimesInfo(RegattaAndRaceIdentifier raceIdentifier, AsyncCallback callback); - void getRaceTimesInfos(Collection raceIdentifiers, AsyncCallback> callback); + void getRaceTimesInfos(Collection raceIdentifiers, + AsyncCallback> callback); - void getCoursePositions(RegattaAndRaceIdentifier raceIdentifier, Date date, AsyncCallback asyncCallback); + void getCoursePositions(RegattaAndRaceIdentifier raceIdentifier, Date date, + AsyncCallback asyncCallback); void getLeaderboardByName(String leaderboardName, Date date, - Collection namesOfRaceColumnsForWhichToLoadLegDetails, - boolean addOverallDetails, String previousLeaderboardId, boolean fillNetPointsUncorrected, + Collection namesOfRaceColumnsForWhichToLoadLegDetails, boolean addOverallDetails, + String previousLeaderboardId, boolean fillNetPointsUncorrected, AsyncCallback callback); void getLeaderboardNames(AsyncCallback> callback); @@ -224,11 +232,11 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void updateLeaderboard(String leaderboardName, String newLeaderboardName, String newLeaderboardDisplayName, int[] newDiscardingThreasholds, UUID newCourseAreaId, AsyncCallback callback); - void createFlexibleLeaderboard(String leaderboardName, String leaderboardDisplayName, int[] discardThresholds, ScoringSchemeType scoringSchemeType, UUID courseAreaId, - AsyncCallback asyncCallback); + void createFlexibleLeaderboard(String leaderboardName, String leaderboardDisplayName, int[] discardThresholds, + ScoringSchemeType scoringSchemeType, UUID courseAreaId, AsyncCallback asyncCallback); - void createRegattaLeaderboard(RegattaIdentifier regattaIdentifier, String leaderboardDisplayName, int[] discardThresholds, - AsyncCallback asyncCallback); + void createRegattaLeaderboard(RegattaIdentifier regattaIdentifier, String leaderboardDisplayName, + int[] discardThresholds, AsyncCallback asyncCallback); void removeLeaderboard(String leaderboardName, AsyncCallback asyncCallback); @@ -239,7 +247,8 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void addColumnToLeaderboard(String columnName, String leaderboardName, boolean medalRace, AsyncCallback callback); - void renameLeaderboardColumn(String leaderboardName, String oldColumnName, String newColumnName, AsyncCallback callback); + void renameLeaderboardColumn(String leaderboardName, String oldColumnName, String newColumnName, + AsyncCallback callback); void removeLeaderboardColumn(String leaderboardName, String columnName, AsyncCallback callback); @@ -250,7 +259,8 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan * The key set of the map returned contains all fleets of the race column identified by the combination of * leaderboardName and raceColumnName. If a value is null, there is no * tracked race currently linked to the fleet in the race column; otherwise, the value is the {@link RaceIdentifier} - * of the tracked race currently connected for the fleet whose name is the key. The map returned is never null. + * of the tracked race currently connected for the fleet whose name is the key. The map returned is never + * null. */ void getRegattaAndRaceNameOfTrackedRaceConnectedToLeaderboardColumn(String leaderboardName, String raceColumnName, AsyncCallback> callback); @@ -258,10 +268,12 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void disconnectLeaderboardColumnFromTrackedRace(String leaderboardName, String raceColumnName, String fleetName, AsyncCallback callback); - void updateLeaderboardCarryValue(String leaderboardName, String competitorIdAsString, Double carriedPoints, AsyncCallback callback); + void updateLeaderboardCarryValue(String leaderboardName, String competitorIdAsString, Double carriedPoints, + AsyncCallback callback); void updateLeaderboardMaxPointsReason(String leaderboardName, String competitorIdAsString, String raceColumnName, - MaxPointsReason maxPointsReason, Date date, AsyncCallback> asyncCallback); + MaxPointsReason maxPointsReason, Date date, + AsyncCallback> asyncCallback); void updateLeaderboardScoreCorrection(String leaderboardName, String competitorIdAsString, String columnName, Double correctedScore, Date date, AsyncCallback> asyncCallback); @@ -281,23 +293,26 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void updateIsMedalRace(String leaderboardName, String columnName, boolean isMedalRace, AsyncCallback callback); - void updateRaceDelayToLive(RegattaAndRaceIdentifier regattaAndRaceIdentifier, long delayToLiveInMs, AsyncCallback callback); + void updateRaceDelayToLive(RegattaAndRaceIdentifier regattaAndRaceIdentifier, long delayToLiveInMs, + AsyncCallback callback); - void updateRacesDelayToLive(List regattaAndRaceIdentifiers, long delayToLiveInMs, AsyncCallback callback); + void updateRacesDelayToLive(List regattaAndRaceIdentifiers, long delayToLiveInMs, + AsyncCallback callback); void getPreviousSwissTimingConfigurations(AsyncCallback> asyncCallback); void getRacesOfSwissTimingEvent(String eventJsonUrl, AsyncCallback asyncCallback); - void storeSwissTimingConfiguration(String configName, String jsonURL, String hostname, int port, AsyncCallback asyncCallback); + void storeSwissTimingConfiguration(String configName, String jsonURL, String hostname, int port, + AsyncCallback asyncCallback); void getCountryCodes(AsyncCallback callback); - void getDouglasPoints(RegattaAndRaceIdentifier raceIdentifier, Map from, Map to, - double meters, AsyncCallback>> callback); + void getDouglasPoints(RegattaAndRaceIdentifier raceIdentifier, Map from, + Map to, double meters, AsyncCallback>> callback); - void getManeuvers(RegattaAndRaceIdentifier raceIdentifier, Map from, Map to, - AsyncCallback>> callback); + void getManeuvers(RegattaAndRaceIdentifier raceIdentifier, Map from, + Map to, AsyncCallback>> callback); void getLeaderboardGroups(boolean withGeoLocationData, AsyncCallback> callback); @@ -317,19 +332,22 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void removeLeaderboardGroups(Set groupNames, AsyncCallback asyncCallback); /** - * Creates a new group with the name groupname, the description description and an empty list of leaderboards.
- * @param displayName TODO - * @param displayGroupsInReverseOrder TODO + * Creates a new group with the name groupname, the description description and an empty + * list of leaderboards.
+ * + * @param displayName + * TODO + * @param displayGroupsInReverseOrder + * TODO */ - void createLeaderboardGroup(String groupName, String description, - String displayName, boolean displayGroupsInReverseOrder, - int[] overallLeaderboardDiscardThresholds, ScoringSchemeType overallLeaderboardScoringSchemeType, AsyncCallback callback); + void createLeaderboardGroup(String groupName, String description, String displayName, + boolean displayGroupsInReverseOrder, int[] overallLeaderboardDiscardThresholds, + ScoringSchemeType overallLeaderboardScoringSchemeType, AsyncCallback callback); void updateLeaderboardGroup(String oldName, String newName, String description, String newDisplayName, List leaderboardNames, int[] overallLeaderboardDiscardThresholds, ScoringSchemeType overallLeaderboardScoringSchemeType, AsyncCallback callback); - void setRaceIsKnownToStartUpwind(RegattaAndRaceIdentifier raceIdentifier, boolean raceIsKnownToStartUpwind, AsyncCallback callback); @@ -341,13 +359,14 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan * use null to indicate "live" in which case the server live time stamp for the race * identified by raceIdentifier will be used, considering that race's delay. */ - void getRaceMapData(RegattaAndRaceIdentifier raceIdentifier, Date date, Map fromPerCompetitorIdAsString, - Map toPerCompetitorIdAsString, boolean extrapolate, LegIdentifier simulationLegIdentifier, AsyncCallback callback); + void getRaceMapData(RegattaAndRaceIdentifier raceIdentifier, Date date, + Map fromPerCompetitorIdAsString, Map toPerCompetitorIdAsString, + boolean extrapolate, LegIdentifier simulationLegIdentifier, AsyncCallback callback); void getReplicaInfo(AsyncCallback callback); - void startReplicatingFromMaster(String messagingHost, String masterName, String exchangeName, int servletPort, int messagingPort, - AsyncCallback callback); + void startReplicatingFromMaster(String messagingHost, String masterName, String exchangeName, int servletPort, + int messagingPort, AsyncCallback callback); void getEvents(AsyncCallback> callback); @@ -367,13 +386,14 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void removeEvents(Collection eventIds, AsyncCallback asyncCallback); - void createEvent(String eventName, String eventDescription, Date startDate, Date endDate, String venue, boolean isPublic, - List courseAreaNames, String officialWebsiteURL, String sailorsInfoWebsiteURL, Iterable images, Iterable videos, - AsyncCallback callback); + void createEvent(String eventName, String eventDescription, Date startDate, Date endDate, String venue, + boolean isPublic, List courseAreaNames, String officialWebsiteURL, String sailorsInfoWebsiteURL, + Iterable images, Iterable videos, AsyncCallback callback); void updateEvent(UUID eventId, String eventName, String eventDescription, Date startDate, Date endDate, - VenueDTO venue, boolean isPublic, Iterable leaderboardGroupIds, String officialWebsiteURL, String sailorsInfoWebsiteURL, - Iterable images, Iterable videos, AsyncCallback callback); + VenueDTO venue, boolean isPublic, Iterable leaderboardGroupIds, String officialWebsiteURL, + String sailorsInfoWebsiteURL, Iterable images, Iterable videos, + AsyncCallback callback); void createCourseAreas(UUID eventId, String[] courseAreaNames, AsyncCallback callback); @@ -389,7 +409,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void removeRaceColumnFromSeries(RegattaIdentifier regattaIdentifier, String seriesName, String columnName, AsyncCallback callback); - void moveRaceColumnInSeriesUp(RegattaIdentifier regattaIdentifier, String seriesName, String columnName, + void moveRaceColumnInSeriesUp(RegattaIdentifier regattaIdentifier, String seriesName, String columnName, AsyncCallback callback); void moveRaceColumnInSeriesDown(RegattaIdentifier regattaIdentifier, String seriesName, String columnName, @@ -400,9 +420,9 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan ScoringSchemeType scoringSchemeType, UUID defaultCourseAreaId, boolean useStartTimeInference, RankingMetrics rankingMetricType, AsyncCallback callback); - void addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName, List> columnNames, - AsyncCallback> callback); - + void addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName, + List> columnNames, AsyncCallback> callback); + void updateSeries(RegattaIdentifier regattaIdentifier, String seriesName, String newSeriesName, boolean isMedal, int[] resultDiscardingThresholds, boolean startsWithZeroScore, boolean firstRaceIsNonDiscardableCarryForward, boolean hasSplitFleetScore, List fleets, @@ -422,7 +442,8 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void getRaceCourse(RegattaAndRaceIdentifier raceIdentifier, Date date, AsyncCallback callback); - void updateRaceCourse(RegattaAndRaceIdentifier raceIdentifier, List> controlPoints, AsyncCallback callback); + void updateRaceCourse(RegattaAndRaceIdentifier raceIdentifier, + List> controlPoints, AsyncCallback callback); void getServerConfiguration(AsyncCallback callback); @@ -432,7 +453,8 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void removeSailingServers(Set toRemove, AsyncCallback callback); - void addRemoteSailingServerReference(RemoteSailingServerReferenceDTO sailingServer, AsyncCallback callback); + void addRemoteSailingServerReference(RemoteSailingServerReferenceDTO sailingServer, + AsyncCallback callback); void getResultImportUrls(String resultProviderName, AsyncCallback> callback); @@ -449,7 +471,8 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void getLeaderboard(String leaderboardName, AsyncCallback callback); - void suppressCompetitorInLeaderboard(String leaderboardName, String competitorIdAsString, boolean suppressed, AsyncCallback asyncCallback); + void suppressCompetitorInLeaderboard(String leaderboardName, String competitorIdAsString, boolean suppressed, + AsyncCallback asyncCallback); void updateLeaderboardColumnFactor(String leaderboardName, String columnName, Double newFactor, AsyncCallback callback); @@ -457,13 +480,14 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void listSwissTiminigReplayRaces(String swissTimingUrl, AsyncCallback> asyncCallback); void getCompetitorsRaceData(RegattaAndRaceIdentifier race, List competitors, Date from, Date to, - long stepSize, DetailType detailType, String leaderboarGroupName, String leaderboardName, AsyncCallback callback); + long stepSize, DetailType detailType, String leaderboarGroupName, String leaderboardName, + AsyncCallback callback); /** - * Finds out the names of all {@link com.sap.sailing.domain.leaderboard.MetaLeaderboard}s managed by this server that - * {@link com.sap.sailing.domain.leaderboard.MetaLeaderboard#getLeaderboards() contain} the leaderboard identified by leaderboardName. The - * names of those meta-leaderboards are returned. The list returned is never null but may be empty if no such - * leaderboard is found. + * Finds out the names of all {@link com.sap.sailing.domain.leaderboard.MetaLeaderboard}s managed by this server + * that {@link com.sap.sailing.domain.leaderboard.MetaLeaderboard#getLeaderboards() contain} the leaderboard + * identified by leaderboardName. The names of those meta-leaderboards are returned. The list returned + * is never null but may be empty if no such leaderboard is found. */ void getOverallLeaderboardNamesContaining(String leaderboardName, AsyncCallback> asyncCallback); @@ -497,14 +521,14 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void getRegattaStructureOfEvent(UUID eventId, AsyncCallback> callback); - void getRaceStateEntriesForRaceGroup(UUID eventId, List visibleCourseAreas, - List visibleRegattas, boolean showOnlyCurrentlyRunningRaces, boolean showOnlyRacesOfSameDay, + void getRaceStateEntriesForRaceGroup(UUID eventId, List visibleCourseAreas, List visibleRegattas, + boolean showOnlyCurrentlyRunningRaces, boolean showOnlyRacesOfSameDay, AsyncCallback> markedAsyncCallback); void getRaceStateEntriesForLeaderboard(String leaderboardName, boolean showOnlyCurrentlyRunningRaces, boolean showOnlyRacesOfSameDay, List visibleRegattas, AsyncCallback> callback); - + void stopAllReplicas(AsyncCallback asyncCallback); void stopSingleReplicaInstance(String identifier, AsyncCallback asyncCallback); @@ -512,23 +536,23 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void reloadRaceLog(String leaderboardName, RaceColumnDTO raceColumnDTO, FleetDTO fleet, AsyncCallback asyncCallback); - void getRaceLog(String leaderboardName, RaceColumnDTO raceColumnDTO, FleetDTO fleet, AsyncCallback callback); + void getRaceLog(String leaderboardName, RaceColumnDTO raceColumnDTO, FleetDTO fleet, + AsyncCallback callback); - void getRegattaLog(String leaderboardName, AsyncCallback callback); + void getRegattaLog(String leaderboardName, AsyncCallback callback); void importMasterData(String host, String[] names, boolean override, boolean compress, boolean exportWind, boolean exportDeviceConfigurations, AsyncCallback asyncCallback); void getImportOperationProgress(UUID id, AsyncCallback asyncCallback); - + void getStructureImportOperationProgress(AsyncCallback asyncCallback); void getLeaderboardGroupNamesFromRemoteServer(String host, AsyncCallback> leaderboardGroupNames); void getCompetitors(AsyncCallback> asyncCallback); - void getCompetitorsOfLeaderboard(String leaderboardName, - AsyncCallback> asyncCallback); + void getCompetitorsOfLeaderboard(String leaderboardName, AsyncCallback> asyncCallback); void addOrUpdateCompetitor(CompetitorDTO competitor, AsyncCallback asyncCallback); @@ -538,13 +562,18 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void getDeviceConfiguration(DeviceConfigurationMatcherDTO matcher, AsyncCallback callback); - void createOrUpdateDeviceConfiguration(DeviceConfigurationMatcherDTO matcherDTO, DeviceConfigurationDTO configurationDTO, AsyncCallback callback); + void createOrUpdateDeviceConfiguration(DeviceConfigurationMatcherDTO matcherDTO, + DeviceConfigurationDTO configurationDTO, AsyncCallback callback); - void removeDeviceConfiguration(DeviceConfigurationMatcherType type, List clientIds, AsyncCallback asyncCallback); + void removeDeviceConfiguration(DeviceConfigurationMatcherType type, List clientIds, + AsyncCallback asyncCallback); /** * Sets the a new start time. - * @param dto {@link RaceLogSetStartTimeAndProcedureDTO} identifying the race to set the start time on and the new start time. + * + * @param dto + * {@link RaceLogSetStartTimeAndProcedureDTO} identifying the race to set the start time on and the new + * start time. */ void setStartTimeAndProcedure(RaceLogSetStartTimeAndProcedureDTO dto, AsyncCallback callback); @@ -556,21 +585,21 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan AsyncCallback> callback); void getAllIgtimiAccountEmailAddresses(AsyncCallback> callback); - + void getIgtimiAuthorizationUrl(AsyncCallback callback); - + void authorizeAccessToIgtimiUser(String eMailAddress, String password, AsyncCallback callback); void removeIgtimiAccount(String eMailOfAccountToRemove, AsyncCallback asyncCallback); - void importWindFromIgtimi(List selectedRaces, boolean correctByDeclination, AsyncCallback> asyncCallback); - + void importWindFromIgtimi(List selectedRaces, boolean correctByDeclination, + AsyncCallback> asyncCallback); + void getEventById(UUID id, boolean withStatisticalData, AsyncCallback callback); - + void getLeaderboardsByEvent(EventDTO event, AsyncCallback> callback); - void denoteForRaceLogTracking(String leaderboardName, - String raceColumnName, String fleetName, + void denoteForRaceLogTracking(String leaderboardName, String raceColumnName, String fleetName, AsyncCallback callback); void denoteForRaceLogTracking(String leaderboardName, AsyncCallback callback); @@ -579,17 +608,17 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan boolean correctWindByDeclination, AsyncCallback callback); /** - * Set the competitor registrations in the racelog. Unregisters formerly registered competitors - * that are not listed in {@code competitors}. + * Set the competitor registrations in the racelog. Unregisters formerly registered competitors that are not listed + * in {@code competitors}. */ void setCompetitorRegistrationsInRaceLog(String leaderboardName, String raceColumnName, String fleetName, Set competitors, AsyncCallback callback); /** - * Set the competitor registrations in the leaderboard. Unregisters formerly registered competitors - * that are not listed in {@code competitors}. + * Set the competitor registrations in the leaderboard. Unregisters formerly registered competitors that are not + * listed in {@code competitors}. */ - void setCompetitorRegistrationsInRegattaLog(String leaderboardName,Set competitors, + void setCompetitorRegistrationsInRegattaLog(String leaderboardName, Set competitors, AsyncCallback callback); void getCompetitorRegistrationsOnRaceLog(String leaderboardName, String raceColumnName, String fleetName, @@ -627,8 +656,8 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void closeOpenEndedDeviceMapping(String leaderboardName, String raceColumnName, String fleetName, DeviceMappingDTO mapping, Date closingTimePoint, AsyncCallback callback); - void revokeRaceAndRegattaLogEvents(String leaderboardName, String raceColumnName, String fleetName, List eventIds, - AsyncCallback callback); + void revokeRaceAndRegattaLogEvents(String leaderboardName, String raceColumnName, String fleetName, + List eventIds, AsyncCallback callback); void removeSeries(RegattaIdentifier regattaIdentifier, String seriesName, AsyncCallback callback); @@ -637,7 +666,8 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void getGPSFixImporterTypes(AsyncCallback> callback); - void getTrackFileImportDeviceIds(List uuids, AsyncCallback> callback); + void getTrackFileImportDeviceIds(List uuids, + AsyncCallback> callback); /** * A client should search a server in a two-step process. First, the client should ask the server which other @@ -654,10 +684,9 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan */ void getSearchServerNames(AsyncCallback> callback); - /** - * Call this method once for each result of {@link #getSearchServerNames()} and once with null for - * the serverNameOfNullForMain parameter. + * Call this method once for each result of {@link #getSearchServerNames()} and once with null for the + * serverNameOfNullForMain parameter. * * @param serverNameOrNullForMain * use null to search on the server to which this request is sent; use a name as retrieved @@ -667,38 +696,40 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void search(String serverNameOrNullForMain, KeywordQuery query, AsyncCallback> callback); - void setStartTimeReceivedForRace(RaceIdentifier raceIdentifier, Date newStartTimeReceived, AsyncCallback callback); + void setStartTimeReceivedForRace(RaceIdentifier raceIdentifier, Date newStartTimeReceived, + AsyncCallback callback); void createXYDiagramForBoatClass(String itemText, AsyncCallback asyncCallback); void getEventsForLeaderboard(String leaderboardName, AsyncCallback> callback); - + /** * Imports regatta structure definitions from an ISAF XRR document * - * @param manage2SailJsonUrl the URL pointing to a Manage2Sail JSON document that contains the link to the XRR document + * @param manage2SailJsonUrl + * the URL pointing to a Manage2Sail JSON document that contains the link to the XRR document */ void getRegattas(String manage2SailJsonUrl, AsyncCallback> asyncCallback); - + void getCompetitorMarkPassings(RegattaAndRaceIdentifier race, CompetitorDTO competitorDTO, AsyncCallback> callback); - void getCompetitorRaceLogMarkPassingData(String leaderboardName, RaceColumnDTO raceColumnDTO, FleetDTO fleet, CompetitorDTO competitor, - AsyncCallback> callback); + void getCompetitorRaceLogMarkPassingData(String leaderboardName, RaceColumnDTO raceColumnDTO, FleetDTO fleet, + CompetitorDTO competitor, AsyncCallback> callback); void updateSuppressedMarkPassings(String leaderboardName, RaceColumnDTO raceColumnDTO, FleetDTO fleet, Integer newZeroBasedIndexOfSuppressedMarkPassing, CompetitorDTO competitorDTO, AsyncCallback callback); - void createRegattaStructure(Iterable regattaNames, - EventDTO newEvent, AsyncCallback asyncCallback); + void createRegattaStructure(Iterable regattaNames, EventDTO newEvent, AsyncCallback asyncCallback); + + void updateFixedMarkPassing(String leaderboardName, RaceColumnDTO raceColumnDTO, FleetDTO fleet, + Integer indexOfWaypoint, Date dateOfMarkPassing, CompetitorDTO competitorDTO, AsyncCallback callback); - void updateFixedMarkPassing(String leaderboardName, RaceColumnDTO raceColumnDTO, FleetDTO fleet, Integer indexOfWaypoint, - Date dateOfMarkPassing, CompetitorDTO competitorDTO, AsyncCallback callback); - void getActiveFileStorageServiceName(AsyncCallback callback); void inviteCompetitorsForTrackingViaEmail(String serverUrlWithoutTrailingSlash, EventDTO event, - String leaderboardName, Collection competitors, String localeInfo, AsyncCallback callback); + String leaderboardName, Collection competitors, String localeInfo, + AsyncCallback callback); void getMarksInRaceLogsAndTrackedRaces(String leaderboardName, AsyncCallback> callback); @@ -721,10 +752,11 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void addDeviceMappingToRegattaLog(String leaderboardName, DeviceMappingDTO dto, AsyncCallback callback); - void doesRegattaLogContainCompetitors(String name, AsyncCallback regattaLogCallBack); + void doesRegattaLogContainCompetitors(String name, AsyncCallback regattaLogCallBack); + + void getRaceIdentifier(String regattaLikeName, String raceColumnName, String fleetName, + AsyncCallback asyncCallback); - void getRaceIdentifier(String regattaLikeName, String raceColumnName, String fleetName, AsyncCallback asyncCallback); - void setTrackingTimes(RaceLogSetTrackingTimesDTO dto, AsyncCallback callback); void getTrackingTimes(String leaderboardName, String raceColumnName, String fleetName, @@ -733,7 +765,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void revokeMarkDefinitionEventInRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO, AsyncCallback callback); - void getCompetitorRegistrationsFromLogHierarchy(String leaderboardName, String raceColumnName, String fleetName, + void getCompetitorRegistrationsFromLogHierarchy(String leaderboardName, AsyncCallback> setCompetitorsCallback); void copyCompetitorsToOtherRaceLogs(Triple fromTriple, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 3ebb5cdf2d7..ddc53289ea1 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -5883,9 +5883,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public Collection getCompetitorRegistrationsFromLogHierarchy(String leaderboardName, - String raceColumnName, String fleetName) { - List> logHierarchy = getLogHierarchy(leaderboardName, raceColumnName, fleetName); + public Collection getCompetitorRegistrationsFromLogHierarchy(String leaderboardName) { + List> logHierarchy = getLogHierarchy(leaderboardName); Collection competitorRegistrations = new ArrayList(); From 13be14cf9233ae7ff8018fc7a120b9107458348c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Fri, 2 Oct 2015 16:53:36 +0200 Subject: [PATCH 474/504] Get all competitors in RaceLogImportFixesAndAddMarksDialog --- .../gwt/ui/adminconsole/RaceLogAddDeviceMappingDialog.java | 2 +- .../ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogAddDeviceMappingDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogAddDeviceMappingDialog.java index 29a1f4e379a..44dc0cee952 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogAddDeviceMappingDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogAddDeviceMappingDialog.java @@ -63,7 +63,7 @@ public class RaceLogAddDeviceMappingDialog extends AbstractLogAddDeviceMappingDi @Override protected void loadCompetitorsAndMarks() { - sailingService.getCompetitorRegistrationsFromLogHierarchy(leaderboardName, raceColumnName, fleetName, + sailingService.getCompetitorRegistrationsFromLogHierarchy(leaderboardName, itemSelectionPanel.getSetCompetitorsCallback()); sailingService.getMarksInRaceLog(leaderboardName, raceColumnName, fleetName, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java index 236cb70f347..45076f8b76f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogImportFixesAndAddMappingsDialog.java @@ -46,7 +46,7 @@ public class RaceLogImportFixesAndAddMappingsDialog extends AbstractLogImportFix @Override void getCompetitorRegistrations(SailingServiceAsync sailingService, final ErrorReporter errorReporter) { - sailingService.getCompetitorRegistrationsFromLogHierarchy(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { + sailingService.getCompetitorRegistrationsFromLogHierarchy(leaderboardName, new AsyncCallback>() { @Override public void onSuccess(Collection result) { competitorTable.refreshCompetitorList(result); From 2c13d3d3f3a6d8f9582efb973b9f4521866daa4c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 2 Oct 2015 17:58:39 +0200 Subject: [PATCH 475/504] fixed scoring issue: competitor scores need to be added up by individual column validity, not by requiring the column to be valid for both competitors --- .../impl/LeaderboardTotalRankComparator.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LeaderboardTotalRankComparator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LeaderboardTotalRankComparator.java index 2f8443558f8..64d1990ff54 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LeaderboardTotalRankComparator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/LeaderboardTotalRankComparator.java @@ -110,10 +110,11 @@ public class LeaderboardTotalRankComparator implements Comparator { for (RaceColumn raceColumn : getLeaderboard().getRaceColumns()) { needToResetO1ScoreUponNextValidResult = raceColumn.isStartsWithZeroScore(); needToResetO2ScoreUponNextValidResult = raceColumn.isStartsWithZeroScore(); - if (getLeaderboard().getScoringScheme().isValidInTotalScore(getLeaderboard(), raceColumn, o1, timePoint) - && getLeaderboard().getScoringScheme().isValidInTotalScore(getLeaderboard(), raceColumn, o2, timePoint)) { - int preemptiveColumnResult = 0; - final Double o1Score = totalPointsCache.get(new Util.Pair(o1, raceColumn)); + final boolean o1ValidInTotalScore = getLeaderboard().getScoringScheme().isValidInTotalScore(getLeaderboard(), raceColumn, o1, timePoint); + final boolean o2ValidInTotalScore = getLeaderboard().getScoringScheme().isValidInTotalScore(getLeaderboard(), raceColumn, o2, timePoint); + final Double o1Score; + if (o1ValidInTotalScore) { + o1Score = totalPointsCache.get(new Util.Pair(o1, raceColumn)); if (o1Score != null) { o1Scores.add(new Util.Pair(raceColumn, o1Score)); if (needToResetO1ScoreUponNextValidResult) { @@ -122,7 +123,12 @@ public class LeaderboardTotalRankComparator implements Comparator { } o1ScoreSum += o1Score; } - final Double o2Score = totalPointsCache.get(new Util.Pair(o2, raceColumn)); + } else { + o1Score = null; + } + final Double o2Score; + if (o2ValidInTotalScore) { + o2Score = totalPointsCache.get(new Util.Pair(o2, raceColumn)); if (o2Score != null) { o2Scores.add(new Util.Pair(raceColumn, o2Score)); if (needToResetO2ScoreUponNextValidResult) { @@ -131,6 +137,11 @@ public class LeaderboardTotalRankComparator implements Comparator { } o2ScoreSum += o2Score; } + } else { + o2Score = null; + } + if (o1ValidInTotalScore && o2ValidInTotalScore) { + int preemptiveColumnResult = 0; if (raceColumn.isMedalRace()) { // only count the score for the medal race score if it wasn't a carry-forward column if (!raceColumn.isCarryForward()) { From 22579f8b50a8255dad46f4227c3da197a3512e42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Mon, 5 Oct 2015 09:06:36 +0200 Subject: [PATCH 476/504] Rename RaceLogTracking to SmartphoneTracking --- .../sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java | 6 +++--- ...nel.java => SmartphoneTrackingEventManagementPanel.java} | 4 ++-- .../java/com/sap/sailing/gwt/ui/client/StringMessages.java | 2 +- .../com/sap/sailing/gwt/ui/client/StringMessages.properties | 4 ++-- .../sap/sailing/gwt/ui/client/StringMessages_de.properties | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) rename java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/{RaceLogTrackingEventManagementPanel.java => SmartphoneTrackingEventManagementPanel.java} (99%) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java index 17083bf6bc2..c5401d56185 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java @@ -177,14 +177,14 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint implements getStringMessages().swissTimingEvents(), Permission.MANAGE_TRACKED_RACES); regattasDisplayers.add(swisstimingEventManagementPanel); - final RaceLogTrackingEventManagementPanel raceLogTrackingEventManagementPanel = new RaceLogTrackingEventManagementPanel( + final SmartphoneTrackingEventManagementPanel raceLogTrackingEventManagementPanel = new SmartphoneTrackingEventManagementPanel( sailingService, this, this, this, getStringMessages()); - panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel(raceLogTrackingEventManagementPanel) { + panel.addToTabPanel(connectorsTabPanel, new DefaultRefreshableAdminConsolePanel(raceLogTrackingEventManagementPanel) { @Override public void refreshAfterBecomingVisible() { fillLeaderboards(); } - }, getStringMessages().raceLogTracking(), Permission.MANAGE_TRACKED_RACES); + }, getStringMessages().smartphoneTracking(), Permission.MANAGE_TRACKED_RACES); regattasDisplayers.add(raceLogTrackingEventManagementPanel); leaderboardsDisplayers.add(raceLogTrackingEventManagementPanel); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java similarity index 99% rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java rename to java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java index 3bb53644db8..d7c2c30cfa3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java @@ -44,14 +44,14 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback; /** * Allows the user to start and stop tracking of races using the RaceLog-tracking connector. */ -public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConfigPanel implements LeaderboardsDisplayer { +public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardConfigPanel implements LeaderboardsDisplayer { private Button startTrackingButton; private TrackFileImportDeviceIdentifierTableWrapper deviceIdentifierTable; private CheckBox correctWindDirectionForDeclination; private CheckBox trackWind; protected boolean regattaHasCompetitors = false; - public RaceLogTrackingEventManagementPanel(SailingServiceAsync sailingService, + public SmartphoneTrackingEventManagementPanel(SailingServiceAsync sailingService, RegattaRefresher regattaRefresher, LeaderboardsRefresher leaderboardsRefresher, ErrorReporter errorReporter, StringMessages stringMessages) { super(sailingService, regattaRefresher, leaderboardsRefresher, errorReporter, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index ab5098fd6ef..aa6eb518c3d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1021,7 +1021,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String addRaceLogTracker(); String addRaceLogTrackers(); String denoteForRaceLogTracking(); - String raceLogTracking(); String startRaceLogTracking(); String filterByLeaderboard(); String removeLeaderboardFilter(); @@ -1395,4 +1394,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String doYouWantToCreateADefaultRegattaLeaderboard(); String copyCourse(); String copyCompetitors(); + String smartphoneTracking(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 2c1f2d319d3..967d50534c6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -992,7 +992,6 @@ hasSplitFleetContiguousScoring=Split fleets scored contiguously addRaceLogTracker=Add RaceLog Tracker addRaceLogTrackers=Add RaceLog Trackers denoteForRaceLogTracking=Denote for RaceLog tracking -raceLogTracking=RaceLog Tracking startRaceLogTracking=Start RaceLog Tracking filterByLeaderboard=Filter by Leaderboard removeLeaderboardFilter=Remove Leaderboard filter @@ -1362,4 +1361,5 @@ denoteAllRacesForRaceLogTrackingShorctut=Shortcut to denote all races for racelo registerCompetitors=Register Competitors doYouWantToCreateADefaultRegattaLeaderboard=Do you want to create a default Regatta Leaderboard? copyCourse=Copy Course -copyCompetitors=Copy Competitors \ No newline at end of file +copyCompetitors=Copy Competitors +smartphoneTracking=Smartphone Tracking \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 8b72a450ba2..fb7115e6bc7 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -987,7 +987,6 @@ hasSplitFleetContiguousScoring=Gruppen durchgängig bepunkten addRaceLogTracker=RaceLog Tracker hinzufügen addRaceLogTrackers=RaceLog Tracker hinzufügen denoteForRaceLogTracking=Für RaceLog Tracking markieren -raceLogTracking=RaceLog Tracking startRaceLogTracking=RaceLog Tracking starten filterByLeaderboard=Nach Rangliste filtern removeLeaderboardFilter=Nicht nach Rangliste filtern @@ -1352,3 +1351,4 @@ registerCompetitors=Teilnehmer anmelden doYouWantToCreateADefaultRegattaLeaderboard=Möchten Sie eine Standardrangliste für die Regatta anlegen? copyCourse=Kurs kopieren copyCompetitors=Teilnehmer kopieren +smartphoneTracking=Smartphone Tracking \ No newline at end of file From a97ae659bfd4198a43c1ae57a2dece41148587fa Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 6 Oct 2015 14:40:43 +0200 Subject: [PATCH 477/504] Changed text alignment of regatta progress information in mobile version --- .../sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss | 1 - 1 file changed, 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss index 512941e868a..282125f546d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventSteps.gss @@ -50,7 +50,6 @@ height: 100%; } .eventsteps_phases_phase_progress { - text-align: center; margin-top: 0.666666666666667em; margin-bottom: 0.333333333333333em; } From ea0a37b1f1a40a8f0ba4dc0a30035186988459b3 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 6 Oct 2015 17:39:13 +0200 Subject: [PATCH 478/504] Adjusted calculations to shown number of races instead of race columns --- .../MultiRegattaListSteps.java | 4 +- .../MultiRegattaListStepsBody.java | 2 +- .../partials/eventsteps/EventStepsPhase.java | 2 +- .../sailing/gwt/server/HomeServiceUtil.java | 8 +- .../dispatch/event/LeaderboardContext.java | 2 +- .../event/RegattaProgressCalculator.java | 94 ++++++++----------- .../dispatch/event/StatisticsCalculator.java | 2 +- .../regatta/RegattaProgressFleetDTO.java | 8 +- .../regatta/RegattaProgressSeriesDTO.java | 14 ++- 9 files changed, 67 insertions(+), 69 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.java index 9d61b988bed..14b1aded385 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListSteps.java @@ -45,11 +45,11 @@ public class MultiRegattaListSteps extends Composite { initWidget(uiBinder.createAndBindUi(this)); double sumParts = 0; for(RegattaProgressSeriesDTO seriesProgress : regattaProgress.getSeries()) { - double parts = Math.pow(seriesProgress.getTotalRaceCount(), 0.4); + double parts = Math.pow(seriesProgress.getMaxRacesPerFleet(), 0.4); sumParts += parts; } for(RegattaProgressSeriesDTO seriesProgress : regattaProgress.getSeries()) { - double parts = Math.pow(seriesProgress.getTotalRaceCount(), 0.4); + double parts = Math.pow(seriesProgress.getMaxRacesPerFleet(), 0.4); double percentage = 100.0 * parts / sumParts; MultiRegattaListStepsBody stepsBody = new MultiRegattaListStepsBody(seriesProgress); allMultiregattaSteps.add(stepsBody); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.java index 30ca0ce4cf7..aa8e0fe628e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/multiregattalist/MultiRegattaListStepsBody.java @@ -55,7 +55,7 @@ public class MultiRegattaListStepsBody extends UIObject implements RequiresResiz progressUi.setInnerText(I18N.currentOfTotal( seriesProgress.getProgressRaceCount(), seriesProgress.getTotalRaceCount())); } - addFleetProgresses(seriesProgress.getFleetState(), seriesProgress.getTotalRaceCount()); + addFleetProgresses(seriesProgress.getFleetState(), seriesProgress.getMaxRacesPerFleet()); setFleetsTooltip(seriesProgress.getFleetNames()); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java index a7eaa299ca9..ca0a233e37f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/eventsteps/EventStepsPhase.java @@ -44,7 +44,7 @@ public class EventStepsPhase extends Composite { if (seriesProgress.getProgressRaceCount() == 0) { addStyleName(EventStepsResources.INSTANCE.css().eventsteps_phases_phaseinactive()); } - addFleetProgresses(seriesProgress.getFleetState(), seriesProgress.getTotalRaceCount()); + addFleetProgresses(seriesProgress.getFleetState(), seriesProgress.getMaxRacesPerFleet()); } private void addFleetProgresses(Map fleetStates, int totalRaceCount) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java index 4333c58e712..3e5585ce6c9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java @@ -179,11 +179,13 @@ public final class HomeServiceUtil { } public static int calculateRaceCount(Leaderboard sl) { - int count=0; + int nonCarryForwardRacesCount = 0; for (RaceColumn column : sl.getRaceColumns()) { - count += Util.size(column.getFleets()); + if (!column.isCarryForward()) { + nonCarryForwardRacesCount += Util.size(column.getFleets()); + } } - return count; + return nonCarryForwardRacesCount; } public static int calculateRaceColumnCount(Leaderboard sl) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/LeaderboardContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/LeaderboardContext.java index f93522c50ca..c4634e96be4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/LeaderboardContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/LeaderboardContext.java @@ -210,7 +210,7 @@ public class LeaderboardContext { regattaDTO.setBoatCategory(leaderboardGroup.getDisplayName() != null ? leaderboardGroup.getDisplayName() : leaderboardGroup.getName()); } regattaDTO.setCompetitorsCount(HomeServiceUtil.calculateCompetitorsCount(leaderboard)); - regattaDTO.setRaceCount(HomeServiceUtil.calculateRaceColumnCount(leaderboard)); + regattaDTO.setRaceCount(HomeServiceUtil.calculateRaceCount(leaderboard)); regattaDTO.setBoatClass(HomeServiceUtil.getBoatClassName(leaderboard)); if(leaderboard instanceof RegattaLeaderboard) { regattaDTO.setStartDate(getStartDateWithEventFallback()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RegattaProgressCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RegattaProgressCalculator.java index 6515b2bac73..fe80646e8d4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RegattaProgressCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RegattaProgressCalculator.java @@ -1,10 +1,9 @@ package com.sap.sailing.gwt.ui.shared.dispatch.event; import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.Map; -import java.util.Set; +import java.util.Map.Entry; import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressDTO; import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressFleetDTO; @@ -12,71 +11,56 @@ import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaProgressSeriesDTO; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; public class RegattaProgressCalculator implements EventActionUtil.RaceCallback { - private final Map> racesPerSeries = new LinkedHashMap<>(); - private final Map>> racesPerSeriesAndFleet = new HashMap<>(); - private final Map>> liveRacesPerSeriesAndFleet = new HashMap<>(); - private final Map fleets = new HashMap<>(); + private Map> infoPerSeriesAndFleet = new LinkedHashMap<>(); + @Override public void doForRace(RaceContext context) { - String seriesName = context.getSeriesName(); - - Set racesInSeries = racesPerSeries.get(seriesName); - if(racesInSeries == null) { - racesInSeries = new HashSet<>(); - racesPerSeries.put(seriesName, racesInSeries); + FleetInfo fleetInfo = getFleetInfo(context.getSeriesName(), context.getFleetName()); + if (fleetInfo.metadata == null) fleetInfo.metadata = context.getFleetMetadata(); + fleetInfo.numberOfRaces++; + if (context.isFinished()) fleetInfo.numberOfFinishedRaces++; + if (context.isLive()) fleetInfo.numberOfLiveRaces++; + } + + private Map getSeriesInfo(String seriesName) { + Map seriesInfo = infoPerSeriesAndFleet.get(seriesName); + if (seriesInfo == null) { + infoPerSeriesAndFleet.put(seriesName, seriesInfo = new HashMap<>()); } - String raceName = context.getRaceName(); - racesInSeries.add(raceName); - - Map> racesInSeriesAndFleet = racesPerSeriesAndFleet.get(seriesName); - if(racesInSeriesAndFleet == null) { - racesInSeriesAndFleet = new LinkedHashMap>(); - racesPerSeriesAndFleet.put(seriesName, racesInSeriesAndFleet); - } - String fleetName = context.getFleetName(); - Set racesInFleet = racesInSeriesAndFleet.get(fleetName); - if(racesInFleet == null) { - racesInFleet = new HashSet<>(); - racesInSeriesAndFleet.put(fleetName, racesInFleet); - } - Map> liveRacesInSeriesAndFleet = liveRacesPerSeriesAndFleet.get(seriesName); - if(liveRacesInSeriesAndFleet == null) { - liveRacesInSeriesAndFleet = new LinkedHashMap>(); - liveRacesPerSeriesAndFleet.put(seriesName, liveRacesInSeriesAndFleet); - } - Set liveRacesInFleet = liveRacesInSeriesAndFleet.get(fleetName); - if(liveRacesInFleet == null) { - liveRacesInFleet = new HashSet<>(); - liveRacesInSeriesAndFleet.put(fleetName, liveRacesInFleet); - } - if(context.isFinished()) { - racesInFleet.add(raceName); - } - if(context.isLive()) { - liveRacesInFleet.add(raceName); - } - - if(!fleets.containsKey(fleetName)) { - fleets.put(fleetName, context.getFleetMetadata()); + return seriesInfo; + } + + private FleetInfo getFleetInfo(String seriesName, String fleetName) { + Map seriesInfo = getSeriesInfo(seriesName); + FleetInfo fleetInfo = seriesInfo.get(fleetName); + if (fleetInfo == null) { + seriesInfo.put(fleetName, fleetInfo = new FleetInfo()); } + return fleetInfo; } public RegattaProgressDTO getResult() { RegattaProgressDTO progress = new RegattaProgressDTO(); - for(Map.Entry> racesInSeries : racesPerSeries.entrySet()) { - String seriesName = racesInSeries.getKey(); - int totalRaceCount = racesInSeries.getValue().size(); - RegattaProgressSeriesDTO regattaProgressOfSeries = new RegattaProgressSeriesDTO(seriesName, totalRaceCount); - for(Map.Entry> racesInFleet : racesPerSeriesAndFleet.get(seriesName).entrySet()) { - String fleetName = racesInFleet.getKey(); - int finishedRacesForFleet = racesInFleet.getValue().size(); - int liveRacesForFleet = liveRacesPerSeriesAndFleet.get(seriesName).get(fleetName).size(); - regattaProgressOfSeries.addFleet(fleets.get(fleetName), new RegattaProgressFleetDTO(finishedRacesForFleet, liveRacesForFleet)); + for (Entry> seriesInfo : infoPerSeriesAndFleet.entrySet()) { + RegattaProgressSeriesDTO series = new RegattaProgressSeriesDTO(seriesInfo.getKey()); + for (FleetInfo fleetInfo : seriesInfo.getValue().values()) { + series.addFleet(fleetInfo.metadata, fleetInfo.getRegattaProgressFleetDTO()); } - progress.addSeries(regattaProgressOfSeries); + progress.addSeries(series); } return progress; } + + private class FleetInfo { + private FleetMetadataDTO metadata; + private int numberOfRaces = 0; + private int numberOfFinishedRaces = 0; + private int numberOfLiveRaces = 0; + + private RegattaProgressFleetDTO getRegattaProgressFleetDTO() { + return new RegattaProgressFleetDTO(numberOfRaces, numberOfFinishedRaces, numberOfLiveRaces); + } + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/StatisticsCalculator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/StatisticsCalculator.java index 3ed9bf8b613..14dc4a56363 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/StatisticsCalculator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/StatisticsCalculator.java @@ -42,7 +42,7 @@ public class StatisticsCalculator implements LeaderboardCallback { @Override public void doForLeaderboard(LeaderboardContext context) { competitors += HomeServiceUtil.calculateCompetitorsCount(context.getLeaderboard()); - races += HomeServiceUtil.calculateRaceColumnCount(context.getLeaderboard()); + races += HomeServiceUtil.calculateRaceCount(context.getLeaderboard()); trackedRaces += HomeServiceUtil.calculateTrackedRaceCount(context.getLeaderboard()); regattas++; String disableStats = System.getenv("DISABLE_STATS"); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/regatta/RegattaProgressFleetDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/regatta/RegattaProgressFleetDTO.java index be3a530de8e..17e3457278c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/regatta/RegattaProgressFleetDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/regatta/RegattaProgressFleetDTO.java @@ -3,6 +3,7 @@ package com.sap.sailing.gwt.ui.shared.dispatch.regatta; import com.sap.sailing.gwt.ui.shared.dispatch.DTO; public class RegattaProgressFleetDTO implements DTO { + private int raceCount; private int finishedRaceCount; private int liveRaceCount; @@ -10,10 +11,15 @@ public class RegattaProgressFleetDTO implements DTO { private RegattaProgressFleetDTO() { } - public RegattaProgressFleetDTO(int finishedRaceCount, int liveRaceCount) { + public RegattaProgressFleetDTO( int raceCount, int finishedRaceCount, int liveRaceCount) { + this.raceCount = raceCount; this.finishedRaceCount = finishedRaceCount; this.liveRaceCount = liveRaceCount; } + + public int getRaceCount() { + return raceCount; + } public int getFinishedRaceCount() { return finishedRaceCount; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/regatta/RegattaProgressSeriesDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/regatta/RegattaProgressSeriesDTO.java index 3b24e905f18..5423a372393 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/regatta/RegattaProgressSeriesDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/regatta/RegattaProgressSeriesDTO.java @@ -9,15 +9,15 @@ import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; public class RegattaProgressSeriesDTO implements DTO { private String name; private int totalRaceCount; + private int maxRacesPerFleet; private TreeMap fleetState = new TreeMap<>(); @SuppressWarnings("unused") private RegattaProgressSeriesDTO() { } - public RegattaProgressSeriesDTO(String name, int totalRaceCount) { + public RegattaProgressSeriesDTO(String name) { this.name = name; - this.totalRaceCount = totalRaceCount; } public String getName() { @@ -28,12 +28,18 @@ public class RegattaProgressSeriesDTO implements DTO { return totalRaceCount; } + public int getMaxRacesPerFleet() { + return maxRacesPerFleet; + } + public Map getFleetState() { return fleetState; } public void addFleet(FleetMetadataDTO fleet, RegattaProgressFleetDTO stats) { fleetState.put(fleet, stats); + totalRaceCount += stats.getRaceCount(); + maxRacesPerFleet = Math.max(maxRacesPerFleet, stats.getRaceCount()); } public String[] getFleetNames() { @@ -47,7 +53,7 @@ public class RegattaProgressSeriesDTO implements DTO { public boolean isCompleted() { for (RegattaProgressFleetDTO stats : fleetState.values()) { - if (stats.getFinishedRaceCount() < totalRaceCount) { + if (stats.getRaceCount() != stats.getFinishedRaceCount()) { return false; } } @@ -57,7 +63,7 @@ public class RegattaProgressSeriesDTO implements DTO { public int getProgressRaceCount() { int progressRaceCount = 0; for (RegattaProgressFleetDTO stats : fleetState.values()) { - progressRaceCount = Math.max(progressRaceCount, stats.getFinishedRaceCount()); + progressRaceCount += stats.getFinishedRaceCount(); } return progressRaceCount; } From b2b31c8f271b1fd8fd7aeeaa37b6d793c9f327e3 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 7 Oct 2015 10:32:57 +0200 Subject: [PATCH 479/504] Initially hide boat class filter --- .../home/desktop/partials/regattanavigation/DropdownFilter.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/DropdownFilter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/DropdownFilter.java index 30803b913a8..336019ffefd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/DropdownFilter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattanavigation/DropdownFilter.java @@ -39,6 +39,7 @@ public class DropdownFilter extends Composite { CSS.ensureInjected(); initWidget(uiBinder.createAndBindUi(this)); this.dropdownHandler = new ListFilterDropdownHandler(); + setVisible(false); } public void updateFilterValues() { From 70abf0510b030eabfe5a1d67436ddf7106fa27e9 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 7 Oct 2015 11:00:39 +0200 Subject: [PATCH 480/504] Adjusted layout of photo gallery on desktop media page --- .../gwt/home/desktop/partials/media/MediaPage.ui.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/MediaPage.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/MediaPage.ui.xml index ddcabbe77a0..dd57660602b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/MediaPage.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/MediaPage.ui.xml @@ -63,6 +63,12 @@ left: 0px; right: 0px; } + .photolist { + padding: 0 10px; + } + .photolist > * { + padding: 0 5px; + }

- +
\ No newline at end of file From e0dbe9f9bc18b15bc354f4784595760df557af8a Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 7 Oct 2015 11:21:45 +0200 Subject: [PATCH 481/504] The correct image is shown in the fullscreen viewer when clicking on the image slider --- .../controls/carousel/ImageCarousel.java | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.java index 7443f99e063..87133c19eeb 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.java @@ -8,6 +8,7 @@ import com.google.gwt.core.client.Scheduler; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.EventTarget; import com.google.gwt.dom.client.ImageElement; import com.google.gwt.dom.client.Style.Cursor; import com.google.gwt.dom.client.Style.Unit; @@ -104,10 +105,12 @@ public class ImageCarousel extends Widget { init(); } - public void onClick() { - GWT.log("Current slide: " + currentSlideIndex); - if (fsViewer != null) { - fsViewer.show(currentImages.get(currentSlideIndex), currentImages); + public void onClick(EventTarget eventTarget) { + if(fsViewer != null && Element.is(eventTarget)) { + TYPE imageData = getImageData(eventTarget.cast()); + if(imageData != null) { + fsViewer.show(imageData, currentImages); + } } } @@ -126,16 +129,16 @@ public class ImageCarousel extends Widget { .on( 'click', '.slick-slide', - function() { - sliderReference.@com.sap.sse.gwt.client.controls.carousel.ImageCarousel::onClick()(); - }); + $entry(function(event) { + sliderReference.@com.sap.sse.gwt.client.controls.carousel.ImageCarousel::onClick(Lcom/google/gwt/dom/client/EventTarget;)(event.target); + })); slider .on( 'afterChange', - function(event, index) { + $entry(function(event, index) { sliderReference.@com.sap.sse.gwt.client.controls.carousel.ImageCarousel::currentSlideIndex = index.currentSlide; - }); + })); $wnd .$( @@ -187,6 +190,7 @@ public class ImageCarousel extends Widget { imageHolder.getStyle().setHeight(imagesHeight, Unit.PX); imageHolder.getStyle().setWidth(Math.round(width * (imagesHeight / (double) height)), Unit.PX); imageHolder.appendChild(imageElement); + setImageData(imageElement, image); getElement().appendChild(imageHolder); @@ -195,6 +199,17 @@ public class ImageCarousel extends Widget { setShowDots(false); } } + + private native void setImageData(Element element, TYPE imageData) /*-{ + element.imageData = imageData; + }-*/; + + private native TYPE getImageData(Element element) /*-{ + if(typeof element.imageData == "undefined") { + return null; + } + return element.imageData; + }-*/; /** * Define spacing between images in carousel. In fact, it is setting the img margins in pixels. From fdad04a6869cb8cf152181e3e4acf017a552427f Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 7 Oct 2015 13:25:38 +0200 Subject: [PATCH 482/504] Code format --- .../gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml index 2df8570a654..51258ef2a7f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml @@ -16,7 +16,6 @@ } .subSlider .slick-active { border: 4px solid white; - } .previewBar { border-top: 1px solid white; From ca724a5e81f05f4117a884653f2e411c4aac7cee Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 7 Oct 2015 13:26:02 +0200 Subject: [PATCH 483/504] Removed unused code --- .../sse/gwt/client/controls/carousel/ImageCarousel.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.java index 87133c19eeb..f05fadbfec3 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.java @@ -307,14 +307,6 @@ public class ImageCarousel extends Widget { public void execute() { try { setupSlider(reference); - - for (int childIndex = 0; childIndex < getElement().getChildCount(); childIndex++) { - Element child = Element.as(getElement().getChild(childIndex)); - if (child.getClassName() != null && child.getClassName().contains("slick-track")) { - - } - } - } catch (Exception e) { GWT.log("Catched Exception on slider init", e); } From a8865227a2c37d869bae8898bec3d3351a43daac Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 7 Oct 2015 13:26:52 +0200 Subject: [PATCH 484/504] Simplified initial selection for the fullscreen image viewer --- .../partials/media/SailingGalleryPlayer.java | 69 ++++++++----------- 1 file changed, 28 insertions(+), 41 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.java index ea43e7385d4..e19ba58c17c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.java @@ -3,8 +3,6 @@ package com.sap.sailing.gwt.home.desktop.partials.media; import java.util.Collection; import com.google.gwt.core.client.GWT; -import com.google.gwt.core.client.Scheduler; -import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.ImageElement; @@ -30,7 +28,7 @@ public class SailingGalleryPlayer extends ResizeComposite { public SailingGalleryPlayer(SailingImageDTO selected, Collection images) { initWidget(uiBinder.createAndBindUi(this)); - selectedIdx = Math.max(selectedIdx, Util.indexOf(images, selected)); + selectedIdx = Math.max(0, Util.indexOf(images, selected)); for (SailingImageDTO i : images) { mainSliderUi.appendChild(createMainImgElement(i)); subSliderUi.appendChild(createThumbImgElement(i)); @@ -60,12 +58,6 @@ public class SailingGalleryPlayer extends ResizeComposite { @Override protected void onLoad() { _onLoad(); - Scheduler.get().scheduleDeferred(new ScheduledCommand() { - @Override - public void execute() { - gotoSlider(selectedIdx); - } - }); } @Override @@ -73,16 +65,9 @@ public class SailingGalleryPlayer extends ResizeComposite { refreshSlider(); } - native void gotoSlider(int index) /*-{ - $wnd.$('.mainSlider').slick('slickGoTo', index, true); - $wnd.$('.subSlider').slick('slickGoTo', index, true); - $wnd.$('.mainSlider').slick('setPosition'); - $wnd.$('.subSlider').slick('setPosition'); - }-*/; - native void refreshSlider() /*-{ - $wnd.$('.mainSlider').slick('setOption', null, null, true); - $wnd.$('.subSlider').slick('setOption', null, null, true); + $wnd.$('.mainSlider').slick('setOption', null, null, true); + $wnd.$('.subSlider').slick('setOption', null, null, true); }-*/; /** @@ -91,28 +76,30 @@ public class SailingGalleryPlayer extends ResizeComposite { * @param uniqueId */ native void _onLoad() /*-{ - $wnd.$('.mainSlider').slick({ - lazyLoad : 'ondemand', - slidesToShow : 1, - slidesToScroll : 1, - arrows : false, - centerMode : false, - variableWidth : false, - adaptiveHeight : false, - asNavFor : '.subSlider' - }); - $wnd.$('.subSlider').slick({ - lazyLoad : 'ondemand', - infinite : true, - slidesToShow : 1, - slidesToScroll : 1, - swipeToSlide : true, - centerMode : true, - asNavFor : '.mainSlider', - arrows : false, - variableWidth : true, - focusOnSelect : true, - draggable : false - }); + $wnd.$('.mainSlider').slick({ + lazyLoad : 'ondemand', + slidesToShow : 1, + slidesToScroll : 1, + arrows : false, + centerMode : false, + variableWidth : false, + adaptiveHeight : false, + asNavFor : '.subSlider', + initialSlide : this.@com.sap.sailing.gwt.home.desktop.partials.media.SailingGalleryPlayer::selectedIdx + }); + $wnd.$('.subSlider').slick({ + lazyLoad : 'ondemand', + infinite : true, + slidesToShow : 1, + slidesToScroll : 1, + swipeToSlide : true, + centerMode : true, + asNavFor : '.mainSlider', + arrows : false, + variableWidth : true, + focusOnSelect : true, + draggable : false, + initialSlide : this.@com.sap.sailing.gwt.home.desktop.partials.media.SailingGalleryPlayer::selectedIdx + }); }-*/; } From 6b5a8654aa91fcaecc32aec90b4939d6bdc7397e Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 7 Oct 2015 13:36:10 +0200 Subject: [PATCH 485/504] Slick updated to version 1.5.8 --- java/com.sap.sailing.gwt.ui/Home.html | 4 +- .../js/jquery.slick/slick-1.5.0.min.js | 20 - .../js/jquery.slick/slick-1.5.5.css | 116 - .../js/jquery.slick/slick-1.5.5.js | 2365 ----------------- .../js/jquery.slick/slick-1.5.5.min.js | 18 - ...-theme-1.5.5.css => slick-1.5.8-theme.css} | 0 .../{slick-1.5.0.css => slick-1.5.8.css} | 3 + .../js/jquery.slick/slick-1.5.8.min.js | 18 + .../js/jquery.slick/slick-theme-1.5.0.css | 90 - 9 files changed, 23 insertions(+), 2611 deletions(-) delete mode 100644 java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.0.min.js delete mode 100644 java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.5.css delete mode 100644 java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.5.js delete mode 100644 java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.5.min.js rename java/com.sap.sailing.gwt.ui/js/jquery.slick/{slick-theme-1.5.5.css => slick-1.5.8-theme.css} (100%) rename java/com.sap.sailing.gwt.ui/js/jquery.slick/{slick-1.5.0.css => slick-1.5.8.css} (97%) create mode 100644 java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js delete mode 100644 java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-theme-1.5.0.css diff --git a/java/com.sap.sailing.gwt.ui/Home.html b/java/com.sap.sailing.gwt.ui/Home.html index c4d43930037..5562e95e8e2 100644 --- a/java/com.sap.sailing.gwt.ui/Home.html +++ b/java/com.sap.sailing.gwt.ui/Home.html @@ -13,8 +13,8 @@ - - + + diff --git a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.0.min.js b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.0.min.js deleted file mode 100644 index 475450b874c..00000000000 --- a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.0.min.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - _ _ _ _ - ___| (_) ___| | __ (_)___ -/ __| | |/ __| |/ / | / __| -\__ \ | | (__| < _ | \__ \ -|___/_|_|\___|_|\_(_)/ |___/ - |__/ - - Version: 1.5.0 - Author: Ken Wheeler - Website: http://kenwheeler.github.io - Docs: http://kenwheeler.github.io/slick - Repo: http://github.com/kenwheeler/slick - Issues: http://github.com/kenwheeler/slick/issues - - */ -/* global window, document, define, jQuery, setInterval, clearInterval */ - -!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,g,h,e=this;if(e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(a,b){return'"},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.hidden="hidden",e.paused=!1,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,f,d),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,g=e.options.responsive||null,g&&g.length>-1){e.respondTo=e.options.respondTo||"window";for(h in g)g.hasOwnProperty(h)&&(e.breakpoints.push(g[h].breakpoint),e.breakpointSettings[g[h].breakpoint]=g[h].settings);e.breakpoints.sort(function(a,b){return e.options.mobileFirst===!0?a-b:b-a})}"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.msHidden?(e.hidden="msHidden",e.visibilityChange="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.init(),e.checkResponsive(!0)}var b=0;return c}(),b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),d[e.animType]=e.options.vertical===!1?"translate3d("+b+"px, 0px, 0px)":"translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.asNavFor=function(b){var c=this,d=null!==c.options.asNavFor?a(c.options.asNavFor).slick("getSlick"):null;null!==d&&d.slideHandler(b,!0)},b.prototype.applyTransition=function(a){var b=this,c={};c[b.transitionType]=b.options.fade===!1?b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:"opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer),a.slideCount>a.options.slidesToShow&&a.paused!==!0&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this;a.options.infinite===!1?1===a.direction?(a.currentSlide+1===a.slideCount-1&&(a.direction=0),a.slideHandler(a.currentSlide+a.options.slidesToScroll)):(0===a.currentSlide-1&&(a.direction=1),a.slideHandler(a.currentSlide-a.options.slidesToScroll)):a.slideHandler(a.currentSlide+a.options.slidesToScroll)},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&b.slideCount>b.options.slidesToShow&&(b.$prevArrow=a(b.options.prevArrow),b.$nextArrow=a(b.options.nextArrow),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.appendTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled"))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(d='
    ',c=0;c<=b.getDotCount();c+=1)d+="
  • "+b.options.customPaging.call(this,b,c)+"
  • ";d+="
",b.$dots=a(d).appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),b.$slidesCache=b.$slides,b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('
').appendTo(b.$slider):b.$slides.wrapAll('
').parent(),b.$list=b.$slideTrack.wrap('
').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.options.accessibility===!0&&b.$list.prop("tabIndex",0),b.setSlideClasses("number"==typeof this.currentSlide?this.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;c-1&&null!==c.originalSettings.responsive){e=null;for(d in c.breakpoints)c.breakpoints.hasOwnProperty(d)&&(c.originalSettings.mobileFirst===!1?fc.breakpoints[d]&&(e=c.breakpoints[d]));null!==e?null!==c.activeBreakpoint?e!==c.activeBreakpoint&&(c.activeBreakpoint=e,"unslick"===c.breakpointSettings[e]?c.unslick():(c.options=a.extend({},c.originalSettings,c.breakpointSettings[e]),b===!0&&(c.currentSlide=c.options.initialSlide),c.refresh())):(c.activeBreakpoint=e,"unslick"===c.breakpointSettings[e]?c.unslick():(c.options=a.extend({},c.originalSettings,c.breakpointSettings[e]),b===!0&&(c.currentSlide=c.options.initialSlide),c.refresh())):null!==c.activeBreakpoint&&(c.activeBreakpoint=null,c.options=c.originalSettings,b===!0&&(c.currentSlide=c.options.initialSlide),c.refresh())}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.target);switch(e.is("a")&&b.preventDefault(),h=0!==d.slideCount%d.options.slidesToScroll,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||a(b.target).parent().index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c);break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(ab.options.slidesToShow&&a("li",b.$dots).off("click.slick",b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&b.options.autoplay===!0&&a("li",b.$dots).off("mouseenter.slick",b.setPaused.bind(b,!0)).off("mouseleave.slick",b.setPaused.bind(b,!1)),b.options.arrows===!0&&b.slideCount>b.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),b.options.autoplay===!0&&a(document).off(b.visibilityChange,b.visibility),b.$list.off("mouseenter.slick",b.setPaused.bind(b,!0)),b.$list.off("mouseleave.slick",b.setPaused.bind(b,!1)),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.html(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(){var b=this;b.autoPlayClear(),b.touchObject={},b.cleanUpEvents(),a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&"object"!=typeof b.options.prevArrow&&b.$prevArrow.remove(),b.$nextArrow&&"object"!=typeof b.options.nextArrow&&b.$nextArrow.remove(),b.$slides&&(b.$slides.removeClass("slick-slide slick-active slick-center slick-visible").attr("aria-hidden","true").removeAttr("data-slick-index").css({position:"",left:"",top:"",zIndex:"",opacity:"",width:""}),b.$slider.html(b.$slides)),b.cleanUpRows(),b.$slider.removeClass("slick-slider"),b.$slider.removeClass("slick-initialized")},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:1e3}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:1e3}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)d=Math.ceil(a.slideCount/a.options.slidesToScroll);else if(a.options.centerMode===!0)d=a.slideCount;else for(;bb.options.slidesToShow&&(b.slideOffset=-1*b.slideWidth*b.options.slidesToShow,e=-1*d*b.options.slidesToShow),0!==b.slideCount%b.options.slidesToScroll&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=-1*(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth,e=-1*(b.options.slidesToShow-(a-b.slideCount))*d):(b.slideOffset=-1*b.slideCount%b.options.slidesToScroll*b.slideWidth,e=-1*b.slideCount%b.options.slidesToScroll*d))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?-1*a*b.slideWidth+b.slideOffset:-1*a*d+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?(e=a.slideCount-a.options.slidesToShow+1,a.options.centerMode===!0&&(e=a.slideCount)):(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(){var b=this;a(b.$slider).hasClass("slick-initialized")||(a(b.$slider).addClass("slick-initialized"),b.buildRows(),b.buildOut(),b.setProps(),b.startLoad(),b.loadSlider(),b.initializeEvents(),b.updateArrows(),b.updateDots()),b.$slider.trigger("init",[b])},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&b.options.autoplay===!0&&a("li",b.$dots).on("mouseenter.slick",b.setPaused.bind(b,!0)).on("mouseleave.slick",b.setPaused.bind(b,!1))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),b.options.autoplay===!0&&a(document).on(b.visibilityChange,b.visibility.bind(b)),b.$list.on("mouseenter.slick",b.setPaused.bind(b,!0)),b.$list.on("mouseleave.slick",b.setPaused.bind(b,!1)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange.bind(b)),a(window).on("resize.slick.slick-"+b.instanceUid,b.resize.bind(b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show(),a.options.autoplay===!0&&a.autoPlay()},b.prototype.keyHandler=function(a){var b=this;37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:"next"}})},b.prototype.lazyLoad=function(){function g(b){a("img[data-lazy]",b).each(function(){var b=a(this),c=a(this).attr("data-lazy"),d=document.createElement("img");d.onload=function(){b.animate({opacity:1},200)},d.src=c,b.css({opacity:0}).attr("src",c).removeAttr("data-lazy").removeClass("slick-loading")})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=e+b.options.slidesToShow,b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.paused=!1,a.autoPlay()},b.prototype.postSlide=function(a){var b=this;b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay===!0&&b.paused===!1&&b.autoPlay()},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(){var c,d,b=this;c=a("img[data-lazy]",b.$slider).length,c>0&&(d=a("img[data-lazy]",b.$slider).first(),d.attr("src",d.attr("data-lazy")).removeClass("slick-loading").load(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad(),b.options.adaptiveHeight===!0&&b.setPosition()}).error(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad()}))},b.prototype.refresh=function(){var b=this,c=b.currentSlide;b.destroy(),a.extend(b,b.initials),b.init(),b.changeSlide({data:{message:"index",index:c}},!1)},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses(0),b.setPosition(),b.$slider.trigger("reInit",[b])},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,d.reinit(),void 0)},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=-1*b.slideWidth*d,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:800,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:800,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:900,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(a,b,c){var d=this;d.options[a]=b,c===!0&&(d.unload(),d.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;b.$slider.find(".slick-slide").removeClass("slick-active").attr("aria-hidden","true").removeClass("slick-center"),d=b.$slider.find(".slick-slide"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a,d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-ab.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.setPaused=function(a){var b=this;b.options.autoplay===!0&&b.options.pauseOnHover===!0&&(b.paused=a,b.autoPlayClear())},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.$slider.find(".slick-slide").removeClass("slick-active").attr("aria-hidden","true"),c.$slides.eq(e).addClass("slick-active").attr("aria-hidden","false"),c.options.centerMode===!0&&(c.$slider.find(".slick-slide").removeClass("slick-center"),c.$slides.eq(e).addClass("slick-center")),c.asNavFor(e),void 0):(c.slideHandler(e),void 0)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):(i.options.autoplay===!0&&clearInterval(i.autoPlayTimer),e=0>d?0!==i.slideCount%i.options.slidesToScroll?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?0!==i.slideCount%i.options.slidesToScroll?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?i.fadeSlide(e,function(){i.postSlide(e)}):i.postSlide(e),i.animateHeight(),void 0):(c!==!0?i.animateSlide(h,function(){i.postSlide(e)}):i.postSlide(e),void 0)))},b.prototype.startLoad=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.hide(),a.$nextArrow.hide()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.hide(),a.$slider.addClass("slick-loading")},b.prototype.swipeDirection=function(){var a,b,c,d,e=this;return a=e.touchObject.startX-e.touchObject.curX,b=e.touchObject.startY-e.touchObject.curY,c=Math.atan2(b,a),d=Math.round(180*c/Math.PI),0>d&&(d=360-Math.abs(d)),45>=d&&d>=0?e.options.rtl===!1?"left":"right":360>=d&&d>=315?e.options.rtl===!1?"left":"right":d>=135&&225>=d?e.options.rtl===!1?"right":"left":e.options.verticalSwiping===!0?d>=35&&135>=d?"left":"right":"vertical"},b.prototype.swipeEnd=function(){var c,b=this;if(b.dragging=!1,b.shouldClick=b.touchObject.swipeLength>10?!1:!0,void 0===b.touchObject.curX)return!1;if(b.touchObject.edgeHit===!0&&b.$slider.trigger("edge",[b,b.swipeDirection()]),b.touchObject.swipeLength>=b.touchObject.minSwipe)switch(b.swipeDirection()){case"left":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide+b.getSlideCount()):b.currentSlide+b.getSlideCount(),b.slideHandler(c),b.currentDirection=0,b.touchObject={},b.$slider.trigger("swipe",[b,"left"]);break;case"right":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide-b.getSlideCount()):b.currentSlide-b.getSlideCount(),b.slideHandler(c),b.currentDirection=1,b.touchObject={},b.$slider.trigger("swipe",[b,"right"])}else b.touchObject.startX!==b.touchObject.curX&&(b.slideHandler(b.currentSlide),b.touchObject={})},b.prototype.swipeHandler=function(a){var b=this; -if(!(b.options.swipe===!1||"ontouchend"in document&&b.options.swipe===!1||b.options.draggable===!1&&-1!==a.type.indexOf("mouse")))switch(b.touchObject.fingerCount=a.originalEvent&&void 0!==a.originalEvent.touches?a.originalEvent.touches.length:1,b.touchObject.minSwipe=b.listWidth/b.options.touchThreshold,b.options.verticalSwiping===!0&&(b.touchObject.minSwipe=b.listHeight/b.options.touchThreshold),a.data.action){case"start":b.swipeStart(a);break;case"move":b.swipeMove(a);break;case"end":b.swipeEnd(a)}},b.prototype.swipeMove=function(a){var d,e,f,g,h,b=this;return h=void 0!==a.originalEvent?a.originalEvent.touches:null,!b.dragging||h&&1!==h.length?!1:(d=b.getLeft(b.currentSlide),b.touchObject.curX=void 0!==h?h[0].pageX:a.clientX,b.touchObject.curY=void 0!==h?h[0].pageY:a.clientY,b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curX-b.touchObject.startX,2))),b.options.verticalSwiping===!0&&(b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curY-b.touchObject.startY,2)))),e=b.swipeDirection(),"vertical"!==e?(void 0!==a.originalEvent&&b.touchObject.swipeLength>4&&a.preventDefault(),g=(b.options.rtl===!1?1:-1)*(b.touchObject.curX>b.touchObject.startX?1:-1),b.options.verticalSwiping===!0&&(g=b.touchObject.curY>b.touchObject.startY?1:-1),f=b.touchObject.swipeLength,b.touchObject.edgeHit=!1,b.options.infinite===!1&&(0===b.currentSlide&&"right"===e||b.currentSlide>=b.getDotCount()&&"left"===e)&&(f=b.touchObject.swipeLength*b.options.edgeFriction,b.touchObject.edgeHit=!0),b.swipeLeft=b.options.vertical===!1?d+f*g:d+f*(b.$list.height()/b.listWidth)*g,b.options.verticalSwiping===!0&&(b.swipeLeft=d+f*g),b.options.fade===!0||b.options.touchMove===!1?!1:b.animating===!0?(b.swipeLeft=null,!1):(b.setCSS(b.swipeLeft),void 0)):void 0)},b.prototype.swipeStart=function(a){var c,b=this;return 1!==b.touchObject.fingerCount||b.slideCount<=b.options.slidesToShow?(b.touchObject={},!1):(void 0!==a.originalEvent&&void 0!==a.originalEvent.touches&&(c=a.originalEvent.touches[0]),b.touchObject.startX=b.touchObject.curX=void 0!==c?c.pageX:a.clientX,b.touchObject.startY=b.touchObject.curY=void 0!==c?c.pageY:a.clientY,b.dragging=!0,void 0)},b.prototype.unfilterSlides=b.prototype.slickUnfilter=function(){var a=this;null!==a.$slidesCache&&(a.unload(),a.$slideTrack.children(this.options.slide).detach(),a.$slidesCache.appendTo(a.$slideTrack),a.reinit())},b.prototype.unload=function(){var b=this;a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&"object"!=typeof b.options.prevArrow&&b.$prevArrow.remove(),b.$nextArrow&&"object"!=typeof b.options.nextArrow&&b.$nextArrow.remove(),b.$slides.removeClass("slick-slide slick-active slick-visible").attr("aria-hidden","true").css("width","")},b.prototype.unslick=function(){var a=this;a.destroy()},b.prototype.updateArrows=function(){var b,a=this;b=Math.floor(a.options.slidesToShow/2),a.options.arrows===!0&&a.options.infinite!==!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.removeClass("slick-disabled"),a.$nextArrow.removeClass("slick-disabled"),0===a.currentSlide?(a.$prevArrow.addClass("slick-disabled"),a.$nextArrow.removeClass("slick-disabled")):a.currentSlide>=a.slideCount-a.options.slidesToShow&&a.options.centerMode===!1?(a.$nextArrow.addClass("slick-disabled"),a.$prevArrow.removeClass("slick-disabled")):a.currentSlide>=a.slideCount-1&&a.options.centerMode===!0&&(a.$nextArrow.addClass("slick-disabled"),a.$prevArrow.removeClass("slick-disabled")))},b.prototype.updateDots=function(){var a=this;null!==a.$dots&&(a.$dots.find("li").removeClass("slick-active").attr("aria-hidden","true"),a.$dots.find("li").eq(Math.floor(a.currentSlide/a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden","false"))},b.prototype.visibility=function(){var a=this;document[a.hidden]?(a.paused=!0,a.autoPlayClear()):(a.paused=!1,a.autoPlay())},a.fn.slick=function(){var g,a=this,c=arguments[0],d=Array.prototype.slice.call(arguments,1),e=a.length,f=0;for(f;e>f;f++)if("object"==typeof c||"undefined"==typeof c?a[f].slick=new b(a[f],c):g=a[f].slick[c].apply(a[f].slick,d),"undefined"!=typeof g)return g;return a}}); \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.5.css b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.5.css deleted file mode 100644 index 59119f4e6b2..00000000000 --- a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.5.css +++ /dev/null @@ -1,116 +0,0 @@ -/* Slider */ -.slick-slider -{ - position: relative; - - display: block; - - -moz-box-sizing: border-box; - box-sizing: border-box; - - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - -webkit-touch-callout: none; - -khtml-user-select: none; - -ms-touch-action: pan-y; - touch-action: pan-y; - -webkit-tap-highlight-color: transparent; -} - -.slick-list -{ - position: relative; - - display: block; - overflow: hidden; - - margin: 0; - padding: 0; -} -.slick-list:focus -{ - outline: none; -} -.slick-list.dragging -{ - cursor: pointer; - cursor: hand; -} - -.slick-slider .slick-track, -.slick-slider .slick-list -{ - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - -ms-transform: translate3d(0, 0, 0); - -o-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); -} - -.slick-track -{ - position: relative; - top: 0; - left: 0; - - display: block; -} -.slick-track:before, -.slick-track:after -{ - display: table; - - content: ''; -} -.slick-track:after -{ - clear: both; -} -.slick-loading .slick-track -{ - visibility: hidden; -} - -.slick-slide -{ - display: none; - float: left; - - height: 100%; - min-height: 1px; -} -[dir='rtl'] .slick-slide -{ - float: right; -} -.slick-slide img -{ - display: block; -} -.slick-slide.slick-loading img -{ - display: none; -} -.slick-slide.dragging img -{ - pointer-events: none; -} -.slick-initialized .slick-slide -{ - display: block; -} -.slick-loading .slick-slide -{ - visibility: hidden; -} -.slick-vertical .slick-slide -{ - display: block; - - height: auto; - - border: 1px solid transparent; -} \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.5.js b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.5.js deleted file mode 100644 index 915dc763496..00000000000 --- a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.5.js +++ /dev/null @@ -1,2365 +0,0 @@ -/* - _ _ _ _ - ___| (_) ___| | __ (_)___ -/ __| | |/ __| |/ / | / __| -\__ \ | | (__| < _ | \__ \ -|___/_|_|\___|_|\_(_)/ |___/ - |__/ - - Version: 1.5.5 - Author: Ken Wheeler - Website: http://kenwheeler.github.io - Docs: http://kenwheeler.github.io/slick - Repo: http://github.com/kenwheeler/slick - Issues: http://github.com/kenwheeler/slick/issues - - */ -/* global window, document, define, jQuery, setInterval, clearInterval */ -(function(factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - define(['jquery'], factory); - } else if (typeof exports !== 'undefined') { - module.exports = factory(require('jquery')); - } else { - factory(jQuery); - } - -}(function($) { - 'use strict'; - var Slick = window.Slick || {}; - - Slick = (function() { - - var instanceUid = 0; - - function Slick(element, settings) { - - var _ = this, - dataSettings, responsiveSettings, breakpoint; - - _.defaults = { - accessibility: true, - adaptiveHeight: false, - appendArrows: $(element), - appendDots: $(element), - arrows: true, - asNavFor: null, - prevArrow: '', - nextArrow: '', - autoplay: false, - autoplaySpeed: 3000, - centerMode: false, - centerPadding: '50px', - cssEase: 'ease', - customPaging: function(slider, i) { - return ''; - }, - dots: false, - dotsClass: 'slick-dots', - draggable: true, - easing: 'linear', - edgeFriction: 0.35, - fade: false, - focusOnSelect: false, - infinite: true, - initialSlide: 0, - lazyLoad: 'ondemand', - mobileFirst: false, - pauseOnHover: true, - pauseOnDotsHover: false, - respondTo: 'window', - responsive: null, - rows: 1, - rtl: false, - slide: '', - slidesPerRow: 1, - slidesToShow: 1, - slidesToScroll: 1, - speed: 500, - swipe: true, - swipeToSlide: false, - touchMove: true, - touchThreshold: 5, - useCSS: true, - variableWidth: false, - vertical: false, - verticalSwiping: false, - waitForAnimate: true - }; - - _.initials = { - animating: false, - dragging: false, - autoPlayTimer: null, - currentDirection: 0, - currentLeft: null, - currentSlide: 0, - direction: 1, - $dots: null, - listWidth: null, - listHeight: null, - loadIndex: 0, - $nextArrow: null, - $prevArrow: null, - slideCount: null, - slideWidth: null, - $slideTrack: null, - $slides: null, - sliding: false, - slideOffset: 0, - swipeLeft: null, - $list: null, - touchObject: {}, - transformsEnabled: false, - unslicked: false - }; - - $.extend(_, _.initials); - - _.activeBreakpoint = null; - _.animType = null; - _.animProp = null; - _.breakpoints = []; - _.breakpointSettings = []; - _.cssTransitions = false; - _.hidden = 'hidden'; - _.paused = false; - _.positionProp = null; - _.respondTo = null; - _.rowCount = 1; - _.shouldClick = true; - _.$slider = $(element); - _.$slidesCache = null; - _.transformType = null; - _.transitionType = null; - _.visibilityChange = 'visibilitychange'; - _.windowWidth = 0; - _.windowTimer = null; - - dataSettings = $(element).data('slick') || {}; - - _.options = $.extend({}, _.defaults, dataSettings, settings); - - _.currentSlide = _.options.initialSlide; - - _.originalSettings = _.options; - responsiveSettings = _.options.responsive || null; - - if (responsiveSettings && responsiveSettings.length > -1) { - _.respondTo = _.options.respondTo || 'window'; - for (breakpoint in responsiveSettings) { - if (responsiveSettings.hasOwnProperty(breakpoint)) { - _.breakpoints.push(responsiveSettings[ - breakpoint].breakpoint); - _.breakpointSettings[responsiveSettings[ - breakpoint].breakpoint] = - responsiveSettings[breakpoint].settings; - } - } - _.breakpoints.sort(function(a, b) { - if (_.options.mobileFirst === true) { - return a - b; - } else { - return b - a; - } - }); - } - - if (typeof document.mozHidden !== 'undefined') { - _.hidden = 'mozHidden'; - _.visibilityChange = 'mozvisibilitychange'; - } else if (typeof document.webkitHidden !== 'undefined') { - _.hidden = 'webkitHidden'; - _.visibilityChange = 'webkitvisibilitychange'; - } - - _.autoPlay = $.proxy(_.autoPlay, _); - _.autoPlayClear = $.proxy(_.autoPlayClear, _); - _.changeSlide = $.proxy(_.changeSlide, _); - _.clickHandler = $.proxy(_.clickHandler, _); - _.selectHandler = $.proxy(_.selectHandler, _); - _.setPosition = $.proxy(_.setPosition, _); - _.swipeHandler = $.proxy(_.swipeHandler, _); - _.dragHandler = $.proxy(_.dragHandler, _); - _.keyHandler = $.proxy(_.keyHandler, _); - _.autoPlayIterator = $.proxy(_.autoPlayIterator, _); - - _.instanceUid = instanceUid++; - - // A simple way to check for HTML strings - // Strict HTML recognition (must start with <) - // Extracted from jQuery v1.11 source - _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/; - - _.init(true); - - _.checkResponsive(true); - - } - - return Slick; - - }()); - - Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) { - - var _ = this; - - if (typeof(index) === 'boolean') { - addBefore = index; - index = null; - } else if (index < 0 || (index >= _.slideCount)) { - return false; - } - - _.unload(); - - if (typeof(index) === 'number') { - if (index === 0 && _.$slides.length === 0) { - $(markup).appendTo(_.$slideTrack); - } else if (addBefore) { - $(markup).insertBefore(_.$slides.eq(index)); - } else { - $(markup).insertAfter(_.$slides.eq(index)); - } - } else { - if (addBefore === true) { - $(markup).prependTo(_.$slideTrack); - } else { - $(markup).appendTo(_.$slideTrack); - } - } - - _.$slides = _.$slideTrack.children(this.options.slide); - - _.$slideTrack.children(this.options.slide).detach(); - - _.$slideTrack.append(_.$slides); - - _.$slides.each(function(index, element) { - $(element).attr('data-slick-index', index); - }); - - _.$slidesCache = _.$slides; - - _.reinit(); - - }; - - Slick.prototype.animateHeight = function() { - var _ = this; - if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { - var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); - _.$list.animate({ - height: targetHeight - }, _.options.speed); - } - }; - - Slick.prototype.animateSlide = function(targetLeft, callback) { - - var animProps = {}, - _ = this; - - _.animateHeight(); - - if (_.options.rtl === true && _.options.vertical === false) { - targetLeft = -targetLeft; - } - if (_.transformsEnabled === false) { - if (_.options.vertical === false) { - _.$slideTrack.animate({ - left: targetLeft - }, _.options.speed, _.options.easing, callback); - } else { - _.$slideTrack.animate({ - top: targetLeft - }, _.options.speed, _.options.easing, callback); - } - - } else { - - if (_.cssTransitions === false) { - if (_.options.rtl === true) { - _.currentLeft = -(_.currentLeft); - } - $({ - animStart: _.currentLeft - }).animate({ - animStart: targetLeft - }, { - duration: _.options.speed, - easing: _.options.easing, - step: function(now) { - now = Math.ceil(now); - if (_.options.vertical === false) { - animProps[_.animType] = 'translate(' + - now + 'px, 0px)'; - _.$slideTrack.css(animProps); - } else { - animProps[_.animType] = 'translate(0px,' + - now + 'px)'; - _.$slideTrack.css(animProps); - } - }, - complete: function() { - if (callback) { - callback.call(); - } - } - }); - - } else { - - _.applyTransition(); - targetLeft = Math.ceil(targetLeft); - - if (_.options.vertical === false) { - animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)'; - } else { - animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)'; - } - _.$slideTrack.css(animProps); - - if (callback) { - setTimeout(function() { - - _.disableTransition(); - - callback.call(); - }, _.options.speed); - } - - } - - } - - }; - - Slick.prototype.asNavFor = function(index) { - - var _ = this, - asNavFor = _.options.asNavFor; - - if ( asNavFor && asNavFor !== null ) { - asNavFor = $(asNavFor).not(_.$slider); - } - - if ( asNavFor !== null && typeof asNavFor === "object" ) { - asNavFor.each(function() { - var target = $(this).slick('getSlick'); - if(!target.unslicked) { - target.slideHandler(index, true); - } - }); - } - - }; - - Slick.prototype.applyTransition = function(slide) { - - var _ = this, - transition = {}; - - if (_.options.fade === false) { - transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase; - } else { - transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase; - } - - if (_.options.fade === false) { - _.$slideTrack.css(transition); - } else { - _.$slides.eq(slide).css(transition); - } - - }; - - Slick.prototype.autoPlay = function() { - - var _ = this; - - if (_.autoPlayTimer) { - clearInterval(_.autoPlayTimer); - } - - if (_.slideCount > _.options.slidesToShow && _.paused !== true) { - _.autoPlayTimer = setInterval(_.autoPlayIterator, - _.options.autoplaySpeed); - } - - }; - - Slick.prototype.autoPlayClear = function() { - - var _ = this; - if (_.autoPlayTimer) { - clearInterval(_.autoPlayTimer); - } - - }; - - Slick.prototype.autoPlayIterator = function() { - - var _ = this; - - if (_.options.infinite === false) { - - if (_.direction === 1) { - - if ((_.currentSlide + 1) === _.slideCount - - 1) { - _.direction = 0; - } - - _.slideHandler(_.currentSlide + _.options.slidesToScroll); - - } else { - - if ((_.currentSlide - 1 === 0)) { - - _.direction = 1; - - } - - _.slideHandler(_.currentSlide - _.options.slidesToScroll); - - } - - } else { - - _.slideHandler(_.currentSlide + _.options.slidesToScroll); - - } - - }; - - Slick.prototype.buildArrows = function() { - - var _ = this; - - if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { - - _.$prevArrow = $(_.options.prevArrow); - _.$nextArrow = $(_.options.nextArrow); - - if (_.htmlExpr.test(_.options.prevArrow)) { - _.$prevArrow.appendTo(_.options.appendArrows); - } - - if (_.htmlExpr.test(_.options.nextArrow)) { - _.$nextArrow.appendTo(_.options.appendArrows); - } - - if (_.options.infinite !== true) { - _.$prevArrow.addClass('slick-disabled'); - } - - } - - }; - - Slick.prototype.buildDots = function() { - - var _ = this, - i, dotString; - - if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { - - dotString = '
    '; - - for (i = 0; i <= _.getDotCount(); i += 1) { - dotString += '
  • ' + _.options.customPaging.call(this, _, i) + '
  • '; - } - - dotString += '
'; - - _.$dots = $(dotString).appendTo( - _.options.appendDots); - - _.$dots.find('li').first().addClass('slick-active').attr('aria-hidden', 'false'); - - } - - }; - - Slick.prototype.buildOut = function() { - - var _ = this; - - _.$slides = _.$slider.children( - ':not(.slick-cloned)').addClass( - 'slick-slide'); - _.slideCount = _.$slides.length; - - _.$slides.each(function(index, element) { - $(element) - .attr('data-slick-index', index) - .data('originalStyling', $(element).attr('style') || ''); - }); - - _.$slidesCache = _.$slides; - - _.$slider.addClass('slick-slider'); - - _.$slideTrack = (_.slideCount === 0) ? - $('
').appendTo(_.$slider) : - _.$slides.wrapAll('
').parent(); - - _.$list = _.$slideTrack.wrap( - '
').parent(); - _.$slideTrack.css('opacity', 0); - - if (_.options.centerMode === true || _.options.swipeToSlide === true) { - _.options.slidesToScroll = 1; - } - - $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading'); - - _.setupInfinite(); - - _.buildArrows(); - - _.buildDots(); - - _.updateDots(); - - if (_.options.accessibility === true) { - _.$list.prop('tabIndex', 0); - } - - _.setSlideClasses(typeof this.currentSlide === 'number' ? this.currentSlide : 0); - - if (_.options.draggable === true) { - _.$list.addClass('draggable'); - } - - }; - - Slick.prototype.buildRows = function() { - - var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection; - - newSlides = document.createDocumentFragment(); - originalSlides = _.$slider.children(); - - if(_.options.rows > 1) { - slidesPerSection = _.options.slidesPerRow * _.options.rows; - numOfSlides = Math.ceil( - originalSlides.length / slidesPerSection - ); - - for(a = 0; a < numOfSlides; a++){ - var slide = document.createElement('div'); - for(b = 0; b < _.options.rows; b++) { - var row = document.createElement('div'); - for(c = 0; c < _.options.slidesPerRow; c++) { - var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c)); - if (originalSlides.get(target)) { - row.appendChild(originalSlides.get(target)); - } - } - slide.appendChild(row); - } - newSlides.appendChild(slide); - }; - _.$slider.html(newSlides); - _.$slider.children().children().children() - .css({ - 'width':(100 / _.options.slidesPerRow) + "%", - 'display': 'inline-block' - }); - }; - - }; - - Slick.prototype.checkResponsive = function(initial) { - - var _ = this, - breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false; - var sliderWidth = _.$slider.width(); - var windowWidth = window.innerWidth || $(window).width(); - - if (_.respondTo === 'window') { - respondToWidth = windowWidth; - } else if (_.respondTo === 'slider') { - respondToWidth = sliderWidth; - } else if (_.respondTo === 'min') { - respondToWidth = Math.min(windowWidth, sliderWidth); - } - - if (_.originalSettings.responsive && _.originalSettings - .responsive.length > -1 && _.originalSettings.responsive !== null) { - - targetBreakpoint = null; - - for (breakpoint in _.breakpoints) { - if (_.breakpoints.hasOwnProperty(breakpoint)) { - if (_.originalSettings.mobileFirst === false) { - if (respondToWidth < _.breakpoints[breakpoint]) { - targetBreakpoint = _.breakpoints[breakpoint]; - } - } else { - if (respondToWidth > _.breakpoints[breakpoint]) { - targetBreakpoint = _.breakpoints[breakpoint]; - } - } - } - } - - if (targetBreakpoint !== null) { - if (_.activeBreakpoint !== null) { - if (targetBreakpoint !== _.activeBreakpoint) { - _.activeBreakpoint = - targetBreakpoint; - if (_.breakpointSettings[targetBreakpoint] === 'unslick') { - _.unslick(targetBreakpoint); - } else { - _.options = $.extend({}, _.originalSettings, - _.breakpointSettings[ - targetBreakpoint]); - if (initial === true) { - _.currentSlide = _.options.initialSlide; - } - _.refresh(initial); - } - triggerBreakpoint = targetBreakpoint; - } - } else { - _.activeBreakpoint = targetBreakpoint; - if (_.breakpointSettings[targetBreakpoint] === 'unslick') { - _.unslick(targetBreakpoint); - } else { - _.options = $.extend({}, _.originalSettings, - _.breakpointSettings[ - targetBreakpoint]); - if (initial === true) { - _.currentSlide = _.options.initialSlide; - } - _.refresh(initial); - } - triggerBreakpoint = targetBreakpoint; - } - } else { - if (_.activeBreakpoint !== null) { - _.activeBreakpoint = null; - _.options = _.originalSettings; - if (initial === true) { - _.currentSlide = _.options.initialSlide; - } - _.refresh(initial); - triggerBreakpoint = targetBreakpoint; - } - } - - // only trigger breakpoints during an actual break. not on initialize. - if( !initial && triggerBreakpoint !== false ) { - _.$slider.trigger('breakpoint', [_, triggerBreakpoint]); - } - } - - }; - - Slick.prototype.changeSlide = function(event, dontAnimate) { - - var _ = this, - $target = $(event.target), - indexOffset, slideOffset, unevenOffset; - - // If target is a link, prevent default action. - if($target.is('a')) { - event.preventDefault(); - } - - // If target is not the
  • element (ie: a child), find the
  • . - if(!$target.is('li')) { - $target = $target.closest('li'); - } - - unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0); - indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll; - - switch (event.data.message) { - - case 'previous': - slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset; - if (_.slideCount > _.options.slidesToShow) { - _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate); - } - break; - - case 'next': - slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset; - if (_.slideCount > _.options.slidesToShow) { - _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate); - } - break; - - case 'index': - var index = event.data.index === 0 ? 0 : - event.data.index || $target.index() * _.options.slidesToScroll; - - _.slideHandler(_.checkNavigable(index), false, dontAnimate); - $target.children().trigger("focus"); - break; - - default: - return; - } - - }; - - Slick.prototype.checkNavigable = function(index) { - - var _ = this, - navigables, prevNavigable; - - navigables = _.getNavigableIndexes(); - prevNavigable = 0; - if (index > navigables[navigables.length - 1]) { - index = navigables[navigables.length - 1]; - } else { - for (var n in navigables) { - if (index < navigables[n]) { - index = prevNavigable; - break; - } - prevNavigable = navigables[n]; - } - } - - return index; - }; - - Slick.prototype.cleanUpEvents = function() { - - var _ = this; - - if (_.options.dots && _.$dots !== null) { - - $('li', _.$dots).off('click.slick', _.changeSlide); - - if (_.options.pauseOnDotsHover === true && _.options.autoplay === true) { - - $('li', _.$dots) - .off('mouseenter.slick', $.proxy(_.setPaused, _, true)) - .off('mouseleave.slick', $.proxy(_.setPaused, _, false)); - - } - - } - - if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { - _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide); - _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide); - } - - _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler); - _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler); - _.$list.off('touchend.slick mouseup.slick', _.swipeHandler); - _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler); - - _.$list.off('click.slick', _.clickHandler); - - $(document).off(_.visibilityChange, _.visibility); - - _.$list.off('mouseenter.slick', $.proxy(_.setPaused, _, true)); - _.$list.off('mouseleave.slick', $.proxy(_.setPaused, _, false)); - - if (_.options.accessibility === true) { - _.$list.off('keydown.slick', _.keyHandler); - } - - if (_.options.focusOnSelect === true) { - $(_.$slideTrack).children().off('click.slick', _.selectHandler); - } - - $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange); - - $(window).off('resize.slick.slick-' + _.instanceUid, _.resize); - - $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault); - - $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition); - $(document).off('ready.slick.slick-' + _.instanceUid, _.setPosition); - }; - - Slick.prototype.cleanUpRows = function() { - - var _ = this, originalSlides; - - if(_.options.rows > 1) { - originalSlides = _.$slides.children().children(); - originalSlides.removeAttr('style'); - _.$slider.html(originalSlides); - } - - }; - - Slick.prototype.clickHandler = function(event) { - - var _ = this; - - if (_.shouldClick === false) { - event.stopImmediatePropagation(); - event.stopPropagation(); - event.preventDefault(); - } - - }; - - Slick.prototype.destroy = function(refresh) { - - var _ = this; - - _.autoPlayClear(); - - _.touchObject = {}; - - _.cleanUpEvents(); - - $('.slick-cloned', _.$slider).detach(); - - if (_.$dots) { - _.$dots.remove(); - } - if (_.$prevArrow && (typeof _.options.prevArrow !== 'object')) { - _.$prevArrow.remove(); - } - if (_.$nextArrow && (typeof _.options.nextArrow !== 'object')) { - _.$nextArrow.remove(); - } - - if (_.$slides) { - - _.$slides - .removeClass('slick-slide slick-active slick-center slick-visible') - .removeAttr('aria-hidden') - .removeAttr('data-slick-index') - .each(function(){ - $(this).attr('style', $(this).data('originalStyling')); - }); - - _.$slideTrack.children(this.options.slide).detach(); - - _.$slideTrack.detach(); - - _.$list.detach(); - - _.$slider.append(_.$slides); - } - - _.cleanUpRows(); - - _.$slider.removeClass('slick-slider'); - _.$slider.removeClass('slick-initialized'); - - _.unslicked = true; - - if(!refresh) { - _.$slider.trigger('destroy', [_]); - } - - }; - - Slick.prototype.disableTransition = function(slide) { - - var _ = this, - transition = {}; - - transition[_.transitionType] = ''; - - if (_.options.fade === false) { - _.$slideTrack.css(transition); - } else { - _.$slides.eq(slide).css(transition); - } - - }; - - Slick.prototype.fadeSlide = function(slideIndex, callback) { - - var _ = this; - - if (_.cssTransitions === false) { - - _.$slides.eq(slideIndex).css({ - zIndex: 1000 - }); - - _.$slides.eq(slideIndex).animate({ - opacity: 1 - }, _.options.speed, _.options.easing, callback); - - } else { - - _.applyTransition(slideIndex); - - _.$slides.eq(slideIndex).css({ - opacity: 1, - zIndex: 1000 - }); - - if (callback) { - setTimeout(function() { - - _.disableTransition(slideIndex); - - callback.call(); - }, _.options.speed); - } - - } - - }; - - Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) { - - var _ = this; - - if (filter !== null) { - - _.unload(); - - _.$slideTrack.children(this.options.slide).detach(); - - _.$slidesCache.filter(filter).appendTo(_.$slideTrack); - - _.reinit(); - - } - - }; - - Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() { - - var _ = this; - return _.currentSlide; - - }; - - Slick.prototype.getDotCount = function() { - - var _ = this; - - var breakPoint = 0; - var counter = 0; - var pagerQty = 0; - - if (_.options.infinite === true) { - while (breakPoint < _.slideCount) { - ++pagerQty; - breakPoint = counter + _.options.slidesToShow; - counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; - } - } else if (_.options.centerMode === true) { - pagerQty = _.slideCount; - } else { - while (breakPoint < _.slideCount) { - ++pagerQty; - breakPoint = counter + _.options.slidesToShow; - counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; - } - } - - return pagerQty - 1; - - }; - - Slick.prototype.getLeft = function(slideIndex) { - - var _ = this, - targetLeft, - verticalHeight, - verticalOffset = 0, - targetSlide; - - _.slideOffset = 0; - verticalHeight = _.$slides.first().outerHeight(); - - if (_.options.infinite === true) { - if (_.slideCount > _.options.slidesToShow) { - _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1; - verticalOffset = (verticalHeight * _.options.slidesToShow) * -1; - } - if (_.slideCount % _.options.slidesToScroll !== 0) { - if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) { - if (slideIndex > _.slideCount) { - _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1; - verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1; - } else { - _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1; - verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1; - } - } - } - } else { - if (slideIndex + _.options.slidesToShow > _.slideCount) { - _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth; - verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight; - } - } - - if (_.slideCount <= _.options.slidesToShow) { - _.slideOffset = 0; - verticalOffset = 0; - } - - if (_.options.centerMode === true && _.options.infinite === true) { - _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth; - } else if (_.options.centerMode === true) { - _.slideOffset = 0; - _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2); - } - - if (_.options.vertical === false) { - targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset; - } else { - targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset; - } - - if (_.options.variableWidth === true) { - - if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { - targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex); - } else { - targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow); - } - - targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; - - if (_.options.centerMode === true) { - if (_.options.infinite === false) { - targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex); - } else { - targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1); - } - targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; - targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2; - } - } - - return targetLeft; - - }; - - Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) { - - var _ = this; - - return _.options[option]; - - }; - - Slick.prototype.getNavigableIndexes = function() { - - var _ = this, - breakPoint = 0, - counter = 0, - indexes = [], - max; - - if (_.options.infinite === false) { - max = _.slideCount; - } else { - breakPoint = _.options.slidesToScroll * -1; - counter = _.options.slidesToScroll * -1; - max = _.slideCount * 2; - } - - while (breakPoint < max) { - indexes.push(breakPoint); - breakPoint = counter + _.options.slidesToScroll; - counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; - } - - return indexes; - - }; - - Slick.prototype.getSlick = function() { - - return this; - - }; - - Slick.prototype.getSlideCount = function() { - - var _ = this, - slidesTraversed, swipedSlide, centerOffset; - - centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0; - - if (_.options.swipeToSlide === true) { - _.$slideTrack.find('.slick-slide').each(function(index, slide) { - if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) { - swipedSlide = slide; - return false; - } - }); - - slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1; - - return slidesTraversed; - - } else { - return _.options.slidesToScroll; - } - - }; - - Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) { - - var _ = this; - - _.changeSlide({ - data: { - message: 'index', - index: parseInt(slide) - } - }, dontAnimate); - - }; - - Slick.prototype.init = function(creation) { - - var _ = this; - - if (!$(_.$slider).hasClass('slick-initialized')) { - - $(_.$slider).addClass('slick-initialized'); - _.buildRows(); - _.buildOut(); - _.setProps(); - _.startLoad(); - _.loadSlider(); - _.initializeEvents(); - _.updateArrows(); - _.updateDots(); - } - - if (creation) { - _.$slider.trigger('init', [_]); - } - - }; - - Slick.prototype.initArrowEvents = function() { - - var _ = this; - - if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { - _.$prevArrow.on('click.slick', { - message: 'previous' - }, _.changeSlide); - _.$nextArrow.on('click.slick', { - message: 'next' - }, _.changeSlide); - } - - }; - - Slick.prototype.initDotEvents = function() { - - var _ = this; - - if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { - $('li', _.$dots).on('click.slick', { - message: 'index' - }, _.changeSlide); - } - - if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.options.autoplay === true) { - $('li', _.$dots) - .on('mouseenter.slick', $.proxy(_.setPaused, _, true)) - .on('mouseleave.slick', $.proxy(_.setPaused, _, false)); - } - - }; - - Slick.prototype.initializeEvents = function() { - - var _ = this; - - _.initArrowEvents(); - - _.initDotEvents(); - - _.$list.on('touchstart.slick mousedown.slick', { - action: 'start' - }, _.swipeHandler); - _.$list.on('touchmove.slick mousemove.slick', { - action: 'move' - }, _.swipeHandler); - _.$list.on('touchend.slick mouseup.slick', { - action: 'end' - }, _.swipeHandler); - _.$list.on('touchcancel.slick mouseleave.slick', { - action: 'end' - }, _.swipeHandler); - - _.$list.on('click.slick', _.clickHandler); - - $(document).on(_.visibilityChange, $.proxy(_.visibility, _)); - - _.$list.on('mouseenter.slick', $.proxy(_.setPaused, _, true)); - _.$list.on('mouseleave.slick', $.proxy(_.setPaused, _, false)); - - if (_.options.accessibility === true) { - _.$list.on('keydown.slick', _.keyHandler); - } - - if (_.options.focusOnSelect === true) { - $(_.$slideTrack).children().on('click.slick', _.selectHandler); - } - - $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _)); - - $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _)); - - $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault); - - $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition); - $(document).on('ready.slick.slick-' + _.instanceUid, _.setPosition); - - }; - - Slick.prototype.initUI = function() { - - var _ = this; - - if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { - - _.$prevArrow.show(); - _.$nextArrow.show(); - - } - - if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { - - _.$dots.show(); - - } - - if (_.options.autoplay === true) { - - _.autoPlay(); - - } - - }; - - Slick.prototype.keyHandler = function(event) { - - var _ = this; - - if (event.keyCode === 37 && _.options.accessibility === true) { - _.changeSlide({ - data: { - message: 'previous' - } - }); - } else if (event.keyCode === 39 && _.options.accessibility === true) { - _.changeSlide({ - data: { - message: 'next' - } - }); - } - - }; - - Slick.prototype.lazyLoad = function() { - - var _ = this, - loadRange, cloneRange, rangeStart, rangeEnd; - - function loadImages(imagesScope) { - $('img[data-lazy]', imagesScope).each(function() { - var image = $(this), - imageSource = $(this).attr('data-lazy'), - imageToLoad = document.createElement('img'); - - imageToLoad.onload = function() { - image.animate({ - opacity: 1 - }, 200); - }; - imageToLoad.src = imageSource; - - image - .css({ - opacity: 0 - }) - .attr('src', imageSource) - .removeAttr('data-lazy') - .removeClass('slick-loading'); - }); - } - - if (_.options.centerMode === true) { - if (_.options.infinite === true) { - rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1); - rangeEnd = rangeStart + _.options.slidesToShow + 2; - } else { - rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1)); - rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide; - } - } else { - rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide; - rangeEnd = rangeStart + _.options.slidesToShow; - if (_.options.fade === true) { - if (rangeStart > 0) rangeStart--; - if (rangeEnd <= _.slideCount) rangeEnd++; - } - } - - loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd); - loadImages(loadRange); - - if (_.slideCount <= _.options.slidesToShow) { - cloneRange = _.$slider.find('.slick-slide'); - loadImages(cloneRange); - } else - if (_.currentSlide >= _.slideCount - _.options.slidesToShow) { - cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow); - loadImages(cloneRange); - } else if (_.currentSlide === 0) { - cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1); - loadImages(cloneRange); - } - - }; - - Slick.prototype.loadSlider = function() { - - var _ = this; - - _.setPosition(); - - _.$slideTrack.css({ - opacity: 1 - }); - - _.$slider.removeClass('slick-loading'); - - _.initUI(); - - if (_.options.lazyLoad === 'progressive') { - _.progressiveLazyLoad(); - } - - }; - - Slick.prototype.next = Slick.prototype.slickNext = function() { - - var _ = this; - - _.changeSlide({ - data: { - message: 'next' - } - }); - - }; - - Slick.prototype.orientationChange = function() { - - var _ = this; - - _.checkResponsive(); - _.setPosition(); - - }; - - Slick.prototype.pause = Slick.prototype.slickPause = function() { - - var _ = this; - - _.autoPlayClear(); - _.paused = true; - - }; - - Slick.prototype.play = Slick.prototype.slickPlay = function() { - - var _ = this; - - _.paused = false; - _.autoPlay(); - - }; - - Slick.prototype.postSlide = function(index) { - - var _ = this; - - _.$slider.trigger('afterChange', [_, index]); - - _.animating = false; - - _.setPosition(); - - _.swipeLeft = null; - - if (_.options.autoplay === true && _.paused === false) { - _.autoPlay(); - } - - }; - - Slick.prototype.prev = Slick.prototype.slickPrev = function() { - - var _ = this; - - _.changeSlide({ - data: { - message: 'previous' - } - }); - - }; - - Slick.prototype.preventDefault = function(e) { - e.preventDefault(); - }; - - Slick.prototype.progressiveLazyLoad = function() { - - var _ = this, - imgCount, targetImage; - - imgCount = $('img[data-lazy]', _.$slider).length; - - if (imgCount > 0) { - targetImage = $('img[data-lazy]', _.$slider).first(); - targetImage.attr('src', targetImage.attr('data-lazy')).removeClass('slick-loading').load(function() { - targetImage.removeAttr('data-lazy'); - _.progressiveLazyLoad(); - - if (_.options.adaptiveHeight === true) { - _.setPosition(); - } - }) - .error(function() { - targetImage.removeAttr('data-lazy'); - _.progressiveLazyLoad(); - }); - } - - }; - - Slick.prototype.refresh = function( initializing ) { - - var _ = this, - currentSlide = _.currentSlide; - - _.destroy(true); - - $.extend(_, _.initials); - - _.init(); - - if( !initializing ) { - - _.changeSlide({ - data: { - message: 'index', - index: currentSlide - } - }, false); - - } - - }; - - Slick.prototype.reinit = function() { - - var _ = this; - - _.$slides = _.$slideTrack.children(_.options.slide).addClass( - 'slick-slide'); - - _.slideCount = _.$slides.length; - - if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) { - _.currentSlide = _.currentSlide - _.options.slidesToScroll; - } - - if (_.slideCount <= _.options.slidesToShow) { - _.currentSlide = 0; - } - - _.setProps(); - - _.setupInfinite(); - - _.buildArrows(); - - _.updateArrows(); - - _.initArrowEvents(); - - _.buildDots(); - - _.updateDots(); - - _.initDotEvents(); - - if (_.options.focusOnSelect === true) { - $(_.$slideTrack).children().on('click.slick', _.selectHandler); - } - - _.setSlideClasses(0); - - _.setPosition(); - - _.$slider.trigger('reInit', [_]); - - }; - - Slick.prototype.resize = function() { - - var _ = this; - - if ($(window).width() !== _.windowWidth) { - clearTimeout(_.windowDelay); - _.windowDelay = window.setTimeout(function() { - _.windowWidth = $(window).width(); - _.checkResponsive(); - if( !_.unslicked ) { _.setPosition(); } - }, 50); - } - }; - - Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) { - - var _ = this; - - if (typeof(index) === 'boolean') { - removeBefore = index; - index = removeBefore === true ? 0 : _.slideCount - 1; - } else { - index = removeBefore === true ? --index : index; - } - - if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) { - return false; - } - - _.unload(); - - if (removeAll === true) { - _.$slideTrack.children().remove(); - } else { - _.$slideTrack.children(this.options.slide).eq(index).remove(); - } - - _.$slides = _.$slideTrack.children(this.options.slide); - - _.$slideTrack.children(this.options.slide).detach(); - - _.$slideTrack.append(_.$slides); - - _.$slidesCache = _.$slides; - - _.reinit(); - - }; - - Slick.prototype.setCSS = function(position) { - - var _ = this, - positionProps = {}, - x, y; - - if (_.options.rtl === true) { - position = -position; - } - x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px'; - y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px'; - - positionProps[_.positionProp] = position; - - if (_.transformsEnabled === false) { - _.$slideTrack.css(positionProps); - } else { - positionProps = {}; - if (_.cssTransitions === false) { - positionProps[_.animType] = 'translate(' + x + ', ' + y + ')'; - _.$slideTrack.css(positionProps); - } else { - positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)'; - _.$slideTrack.css(positionProps); - } - } - - }; - - Slick.prototype.setDimensions = function() { - - var _ = this; - - if (_.options.vertical === false) { - if (_.options.centerMode === true) { - _.$list.css({ - padding: ('0px ' + _.options.centerPadding) - }); - } - } else { - _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow); - if (_.options.centerMode === true) { - _.$list.css({ - padding: (_.options.centerPadding + ' 0px') - }); - } - } - - _.listWidth = _.$list.width(); - _.listHeight = _.$list.height(); - - - if (_.options.vertical === false && _.options.variableWidth === false) { - _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow); - _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length))); - - } else if (_.options.variableWidth === true) { - _.$slideTrack.width(5000 * _.slideCount); - } else { - _.slideWidth = Math.ceil(_.listWidth); - _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length))); - } - - var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width(); - if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset); - - }; - - Slick.prototype.setFade = function() { - - var _ = this, - targetLeft; - - _.$slides.each(function(index, element) { - targetLeft = (_.slideWidth * index) * -1; - if (_.options.rtl === true) { - $(element).css({ - position: 'relative', - right: targetLeft, - top: 0, - zIndex: 800, - opacity: 0 - }); - } else { - $(element).css({ - position: 'relative', - left: targetLeft, - top: 0, - zIndex: 800, - opacity: 0 - }); - } - }); - - _.$slides.eq(_.currentSlide).css({ - zIndex: 900, - opacity: 1 - }); - - }; - - Slick.prototype.setHeight = function() { - - var _ = this; - - if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { - var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); - _.$list.css('height', targetHeight); - } - - }; - - Slick.prototype.setOption = Slick.prototype.slickSetOption = function(option, value, refresh) { - - var _ = this; - _.options[option] = value; - - if (refresh === true) { - _.unload(); - _.reinit(); - } - - }; - - Slick.prototype.setPosition = function() { - - var _ = this; - - _.setDimensions(); - - _.setHeight(); - - if (_.options.fade === false) { - _.setCSS(_.getLeft(_.currentSlide)); - } else { - _.setFade(); - } - - _.$slider.trigger('setPosition', [_]); - - }; - - Slick.prototype.setProps = function() { - - var _ = this, - bodyStyle = document.body.style; - - _.positionProp = _.options.vertical === true ? 'top' : 'left'; - - if (_.positionProp === 'top') { - _.$slider.addClass('slick-vertical'); - } else { - _.$slider.removeClass('slick-vertical'); - } - - if (bodyStyle.WebkitTransition !== undefined || - bodyStyle.MozTransition !== undefined || - bodyStyle.msTransition !== undefined) { - if (_.options.useCSS === true) { - _.cssTransitions = true; - } - } - - if (bodyStyle.OTransform !== undefined) { - _.animType = 'OTransform'; - _.transformType = '-o-transform'; - _.transitionType = 'OTransition'; - if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false; - } - if (bodyStyle.MozTransform !== undefined) { - _.animType = 'MozTransform'; - _.transformType = '-moz-transform'; - _.transitionType = 'MozTransition'; - if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false; - } - if (bodyStyle.webkitTransform !== undefined) { - _.animType = 'webkitTransform'; - _.transformType = '-webkit-transform'; - _.transitionType = 'webkitTransition'; - if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false; - } - if (bodyStyle.msTransform !== undefined) { - _.animType = 'msTransform'; - _.transformType = '-ms-transform'; - _.transitionType = 'msTransition'; - if (bodyStyle.msTransform === undefined) _.animType = false; - } - if (bodyStyle.transform !== undefined && _.animType !== false) { - _.animType = 'transform'; - _.transformType = 'transform'; - _.transitionType = 'transition'; - } - _.transformsEnabled = (_.animType !== null && _.animType !== false); - - }; - - - Slick.prototype.setSlideClasses = function(index) { - - var _ = this, - centerOffset, allSlides, indexOffset, remainder; - - _.$slider.find('.slick-slide').removeClass('slick-active').attr('aria-hidden', 'true').removeClass('slick-center'); - allSlides = _.$slider.find('.slick-slide'); - - if (_.options.centerMode === true) { - - centerOffset = Math.floor(_.options.slidesToShow / 2); - - if (_.options.infinite === true) { - - if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) { - _.$slides.slice(index - centerOffset, index + centerOffset + 1).addClass('slick-active').attr('aria-hidden', 'false'); - } else { - indexOffset = _.options.slidesToShow + index; - allSlides.slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2).addClass('slick-active').attr('aria-hidden', 'false'); - } - - if (index === 0) { - allSlides.eq(allSlides.length - 1 - _.options.slidesToShow).addClass('slick-center'); - } else if (index === _.slideCount - 1) { - allSlides.eq(_.options.slidesToShow).addClass('slick-center'); - } - - } - - _.$slides.eq(index).addClass('slick-center'); - - } else { - - if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) { - _.$slides.slice(index, index + _.options.slidesToShow).addClass('slick-active').attr('aria-hidden', 'false'); - } else if (allSlides.length <= _.options.slidesToShow) { - allSlides.addClass('slick-active').attr('aria-hidden', 'false'); - } else { - remainder = _.slideCount % _.options.slidesToShow; - indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index; - if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) { - allSlides.slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder).addClass('slick-active').attr('aria-hidden', 'false'); - } else { - allSlides.slice(indexOffset, indexOffset + _.options.slidesToShow).addClass('slick-active').attr('aria-hidden', 'false'); - } - } - - } - - if (_.options.lazyLoad === 'ondemand') { - _.lazyLoad(); - } - - }; - - Slick.prototype.setupInfinite = function() { - - var _ = this, - i, slideIndex, infiniteCount; - - if (_.options.fade === true) { - _.options.centerMode = false; - } - - if (_.options.infinite === true && _.options.fade === false) { - - slideIndex = null; - - if (_.slideCount > _.options.slidesToShow) { - - if (_.options.centerMode === true) { - infiniteCount = _.options.slidesToShow + 1; - } else { - infiniteCount = _.options.slidesToShow; - } - - for (i = _.slideCount; i > (_.slideCount - - infiniteCount); i -= 1) { - slideIndex = i - 1; - $(_.$slides[slideIndex]).clone(true).attr('id', '') - .attr('data-slick-index', slideIndex - _.slideCount) - .prependTo(_.$slideTrack).addClass('slick-cloned'); - } - for (i = 0; i < infiniteCount; i += 1) { - slideIndex = i; - $(_.$slides[slideIndex]).clone(true).attr('id', '') - .attr('data-slick-index', slideIndex + _.slideCount) - .appendTo(_.$slideTrack).addClass('slick-cloned'); - } - _.$slideTrack.find('.slick-cloned').find('[id]').each(function() { - $(this).attr('id', ''); - }); - - } - - } - - }; - - Slick.prototype.setPaused = function(paused) { - - var _ = this; - - if (_.options.autoplay === true && _.options.pauseOnHover === true) { - _.paused = paused; - if (!paused) { - _.autoPlay(); - } else { - _.autoPlayClear(); - } - } - }; - - Slick.prototype.selectHandler = function(event) { - - var _ = this; - - var targetElement = $(event.target).is('.slick-slide') ? - $(event.target) : - $(event.target).parents('.slick-slide'); - - var index = parseInt(targetElement.attr('data-slick-index')); - - if (!index) index = 0; - - if (_.slideCount <= _.options.slidesToShow) { - _.$slider.find('.slick-slide').removeClass('slick-active').attr('aria-hidden', 'true'); - _.$slides.eq(index).addClass('slick-active').attr("aria-hidden", "false"); - if (_.options.centerMode === true) { - _.$slider.find('.slick-slide').removeClass('slick-center'); - _.$slides.eq(index).addClass('slick-center'); - } - _.asNavFor(index); - return; - } - _.slideHandler(index); - - }; - - Slick.prototype.slideHandler = function(index, sync, dontAnimate) { - - var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null, - _ = this; - - sync = sync || false; - - if (_.animating === true && _.options.waitForAnimate === true) { - return; - } - - if (_.options.fade === true && _.currentSlide === index) { - return; - } - - if (_.slideCount <= _.options.slidesToShow) { - return; - } - - if (sync === false) { - _.asNavFor(index); - } - - targetSlide = index; - targetLeft = _.getLeft(targetSlide); - slideLeft = _.getLeft(_.currentSlide); - - _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft; - - if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) { - if (_.options.fade === false) { - targetSlide = _.currentSlide; - if (dontAnimate !== true) { - _.animateSlide(slideLeft, function() { - _.postSlide(targetSlide); - }); - } else { - _.postSlide(targetSlide); - } - } - return; - } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) { - if (_.options.fade === false) { - targetSlide = _.currentSlide; - if (dontAnimate !== true) { - _.animateSlide(slideLeft, function() { - _.postSlide(targetSlide); - }); - } else { - _.postSlide(targetSlide); - } - } - return; - } - - if (_.options.autoplay === true) { - clearInterval(_.autoPlayTimer); - } - - if (targetSlide < 0) { - if (_.slideCount % _.options.slidesToScroll !== 0) { - animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll); - } else { - animSlide = _.slideCount + targetSlide; - } - } else if (targetSlide >= _.slideCount) { - if (_.slideCount % _.options.slidesToScroll !== 0) { - animSlide = 0; - } else { - animSlide = targetSlide - _.slideCount; - } - } else { - animSlide = targetSlide; - } - - _.animating = true; - - _.$slider.trigger("beforeChange", [_, _.currentSlide, animSlide]); - - oldSlide = _.currentSlide; - _.currentSlide = animSlide; - - _.setSlideClasses(_.currentSlide); - - _.updateDots(); - _.updateArrows(); - - if (_.options.fade === true) { - if (dontAnimate !== true) { - _.fadeSlide(animSlide, function() { - _.postSlide(animSlide); - }); - } else { - _.postSlide(animSlide); - } - _.animateHeight(); - return; - } - - if (dontAnimate !== true) { - _.animateSlide(targetLeft, function() { - _.postSlide(animSlide); - }); - } else { - _.postSlide(animSlide); - } - - }; - - Slick.prototype.startLoad = function() { - - var _ = this; - - if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { - - _.$prevArrow.hide(); - _.$nextArrow.hide(); - - } - - if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { - - _.$dots.hide(); - - } - - _.$slider.addClass('slick-loading'); - - }; - - Slick.prototype.swipeDirection = function() { - - var xDist, yDist, r, swipeAngle, _ = this; - - xDist = _.touchObject.startX - _.touchObject.curX; - yDist = _.touchObject.startY - _.touchObject.curY; - r = Math.atan2(yDist, xDist); - - swipeAngle = Math.round(r * 180 / Math.PI); - if (swipeAngle < 0) { - swipeAngle = 360 - Math.abs(swipeAngle); - } - - if ((swipeAngle <= 45) && (swipeAngle >= 0)) { - return (_.options.rtl === false ? 'left' : 'right'); - } - if ((swipeAngle <= 360) && (swipeAngle >= 315)) { - return (_.options.rtl === false ? 'left' : 'right'); - } - if ((swipeAngle >= 135) && (swipeAngle <= 225)) { - return (_.options.rtl === false ? 'right' : 'left'); - } - if (_.options.verticalSwiping === true) { - if ((swipeAngle >= 35) && (swipeAngle <= 135)) { - return 'left'; - } else { - return 'right'; - } - } - - return 'vertical'; - - }; - - Slick.prototype.swipeEnd = function(event) { - - var _ = this, - slideCount; - - _.dragging = false; - - _.shouldClick = (_.touchObject.swipeLength > 10) ? false : true; - - if (_.touchObject.curX === undefined) { - return false; - } - - if (_.touchObject.edgeHit === true) { - _.$slider.trigger("edge", [_, _.swipeDirection()]); - } - - if (_.touchObject.swipeLength >= _.touchObject.minSwipe) { - - switch (_.swipeDirection()) { - case 'left': - slideCount = _.options.swipeToSlide ? _.checkNavigable(_.currentSlide + _.getSlideCount()) : _.currentSlide + _.getSlideCount(); - _.slideHandler(slideCount); - _.currentDirection = 0; - _.touchObject = {}; - _.$slider.trigger("swipe", [_, "left"]); - break; - - case 'right': - slideCount = _.options.swipeToSlide ? _.checkNavigable(_.currentSlide - _.getSlideCount()) : _.currentSlide - _.getSlideCount(); - _.slideHandler(slideCount); - _.currentDirection = 1; - _.touchObject = {}; - _.$slider.trigger("swipe", [_, "right"]); - break; - } - } else { - if (_.touchObject.startX !== _.touchObject.curX) { - _.slideHandler(_.currentSlide); - _.touchObject = {}; - } - } - - }; - - Slick.prototype.swipeHandler = function(event) { - - var _ = this; - - if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) { - return; - } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) { - return; - } - - _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ? - event.originalEvent.touches.length : 1; - - _.touchObject.minSwipe = _.listWidth / _.options - .touchThreshold; - - if (_.options.verticalSwiping === true) { - _.touchObject.minSwipe = _.listHeight / _.options - .touchThreshold; - } - - switch (event.data.action) { - - case 'start': - _.swipeStart(event); - break; - - case 'move': - _.swipeMove(event); - break; - - case 'end': - _.swipeEnd(event); - break; - - } - - }; - - Slick.prototype.swipeMove = function(event) { - - var _ = this, - edgeWasHit = false, - curLeft, swipeDirection, swipeLength, positionOffset, touches; - - touches = event.originalEvent !== undefined ? event.originalEvent.touches : null; - - if (!_.dragging || touches && touches.length !== 1) { - return false; - } - - curLeft = _.getLeft(_.currentSlide); - - _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX; - _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY; - - _.touchObject.swipeLength = Math.round(Math.sqrt( - Math.pow(_.touchObject.curX - _.touchObject.startX, 2))); - - if (_.options.verticalSwiping === true) { - _.touchObject.swipeLength = Math.round(Math.sqrt( - Math.pow(_.touchObject.curY - _.touchObject.startY, 2))); - } - - swipeDirection = _.swipeDirection(); - - if (swipeDirection === 'vertical') { - return; - } - - if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) { - event.preventDefault(); - } - - positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1); - if (_.options.verticalSwiping === true) { - positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1; - } - - - swipeLength = _.touchObject.swipeLength; - - _.touchObject.edgeHit = false; - - if (_.options.infinite === false) { - if ((_.currentSlide === 0 && swipeDirection === "right") || (_.currentSlide >= _.getDotCount() && swipeDirection === "left")) { - swipeLength = _.touchObject.swipeLength * _.options.edgeFriction; - _.touchObject.edgeHit = true; - } - } - - if (_.options.vertical === false) { - _.swipeLeft = curLeft + swipeLength * positionOffset; - } else { - _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset; - } - if (_.options.verticalSwiping === true) { - _.swipeLeft = curLeft + swipeLength * positionOffset; - } - - if (_.options.fade === true || _.options.touchMove === false) { - return false; - } - - if (_.animating === true) { - _.swipeLeft = null; - return false; - } - - _.setCSS(_.swipeLeft); - - }; - - Slick.prototype.swipeStart = function(event) { - - var _ = this, - touches; - - if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) { - _.touchObject = {}; - return false; - } - - if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) { - touches = event.originalEvent.touches[0]; - } - - _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX; - _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY; - - _.dragging = true; - - }; - - Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() { - - var _ = this; - - if (_.$slidesCache !== null) { - - _.unload(); - - _.$slideTrack.children(this.options.slide).detach(); - - _.$slidesCache.appendTo(_.$slideTrack); - - _.reinit(); - - } - - }; - - Slick.prototype.unload = function() { - - var _ = this; - - $('.slick-cloned', _.$slider).remove(); - if (_.$dots) { - _.$dots.remove(); - } - if (_.$prevArrow && (typeof _.options.prevArrow !== 'object')) { - _.$prevArrow.remove(); - } - if (_.$nextArrow && (typeof _.options.nextArrow !== 'object')) { - _.$nextArrow.remove(); - } - _.$slides.removeClass('slick-slide slick-active slick-visible').attr("aria-hidden", "true").css('width', ''); - - }; - - Slick.prototype.unslick = function(fromBreakpoint) { - - var _ = this; - _.$slider.trigger('unslick', [_, fromBreakpoint]); - _.destroy(); - - }; - - Slick.prototype.updateArrows = function() { - - var _ = this, - centerOffset; - - centerOffset = Math.floor(_.options.slidesToShow / 2); - - if (_.options.arrows === true && _.options.infinite !== - true && _.slideCount > _.options.slidesToShow) { - _.$prevArrow.removeClass('slick-disabled'); - _.$nextArrow.removeClass('slick-disabled'); - if (_.currentSlide === 0) { - _.$prevArrow.addClass('slick-disabled'); - _.$nextArrow.removeClass('slick-disabled'); - } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) { - _.$nextArrow.addClass('slick-disabled'); - _.$prevArrow.removeClass('slick-disabled'); - } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) { - _.$nextArrow.addClass('slick-disabled'); - _.$prevArrow.removeClass('slick-disabled'); - } - } - - }; - - Slick.prototype.updateDots = function() { - - var _ = this; - - if (_.$dots !== null) { - - _.$dots.find('li').removeClass('slick-active').attr("aria-hidden", "true"); - _.$dots.find('li').eq(Math.floor(_.currentSlide / _.options.slidesToScroll)).addClass('slick-active').attr("aria-hidden", "false"); - - } - - }; - - Slick.prototype.visibility = function() { - - var _ = this; - - if (document[_.hidden]) { - _.paused = true; - _.autoPlayClear(); - } else { - if (_.options.autoplay === true) { - _.paused = false; - _.autoPlay(); - } - } - - }; - - $.fn.slick = function() { - var _ = this, - opt = arguments[0], - args = Array.prototype.slice.call(arguments, 1), - l = _.length, - i = 0, - ret; - for (i; i < l; i++) { - if (typeof opt == 'object' || typeof opt == 'undefined') - _[i].slick = new Slick(_[i], opt); - else - ret = _[i].slick[opt].apply(_[i].slick, args); - if (typeof ret != 'undefined') return ret; - } - return _; - }; - -})); diff --git a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.5.min.js b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.5.min.js deleted file mode 100644 index d2ef9736e3e..00000000000 --- a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.5.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - _ _ _ _ - ___| (_) ___| | __ (_)___ -/ __| | |/ __| |/ / | / __| -\__ \ | | (__| < _ | \__ \ -|___/_|_|\___|_|\_(_)/ |___/ - |__/ - - Version: 1.5.5 - Author: Ken Wheeler - Website: http://kenwheeler.github.io - Docs: http://kenwheeler.github.io/slick - Repo: http://github.com/kenwheeler/slick - Issues: http://github.com/kenwheeler/slick/issues - - */ -!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,g,h,e=this;if(e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(a,b){return'"},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.hidden="hidden",e.paused=!1,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,f,d),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,g=e.options.responsive||null,g&&g.length>-1){e.respondTo=e.options.respondTo||"window";for(h in g)g.hasOwnProperty(h)&&(e.breakpoints.push(g[h].breakpoint),e.breakpointSettings[g[h].breakpoint]=g[h].settings);e.breakpoints.sort(function(a,b){return e.options.mobileFirst===!0?a-b:b-a})}"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.init(!0),e.checkResponsive(!0)}var b=0;return c}(),b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),d[e.animType]=e.options.vertical===!1?"translate3d("+b+"px, 0px, 0px)":"translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.asNavFor=function(b){var c=this,d=c.options.asNavFor;d&&null!==d&&(d=a(d).not(c.$slider)),null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};c[b.transitionType]=b.options.fade===!1?b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:"opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer),a.slideCount>a.options.slidesToShow&&a.paused!==!0&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this;a.options.infinite===!1?1===a.direction?(a.currentSlide+1===a.slideCount-1&&(a.direction=0),a.slideHandler(a.currentSlide+a.options.slidesToScroll)):(0===a.currentSlide-1&&(a.direction=1),a.slideHandler(a.currentSlide-a.options.slidesToScroll)):a.slideHandler(a.currentSlide+a.options.slidesToScroll)},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&b.slideCount>b.options.slidesToShow&&(b.$prevArrow=a(b.options.prevArrow),b.$nextArrow=a(b.options.nextArrow),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.appendTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled"))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(d='
      ',c=0;c<=b.getDotCount();c+=1)d+="
    • "+b.options.customPaging.call(this,b,c)+"
    • ";d+="
    ",b.$dots=a(d).appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slidesCache=b.$slides,b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('
    ').appendTo(b.$slider):b.$slides.wrapAll('
    ').parent(),b.$list=b.$slideTrack.wrap('
    ').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.options.accessibility===!0&&b.$list.prop("tabIndex",0),b.setSlideClasses("number"==typeof this.currentSlide?this.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;c-1&&null!==c.originalSettings.responsive){e=null;for(d in c.breakpoints)c.breakpoints.hasOwnProperty(d)&&(c.originalSettings.mobileFirst===!1?fc.breakpoints[d]&&(e=c.breakpoints[d]));null!==e?null!==c.activeBreakpoint?e!==c.activeBreakpoint&&(c.activeBreakpoint=e,"unslick"===c.breakpointSettings[e]?c.unslick(e):(c.options=a.extend({},c.originalSettings,c.breakpointSettings[e]),b===!0&&(c.currentSlide=c.options.initialSlide),c.refresh(b)),g=e):(c.activeBreakpoint=e,"unslick"===c.breakpointSettings[e]?c.unslick(e):(c.options=a.extend({},c.originalSettings,c.breakpointSettings[e]),b===!0&&(c.currentSlide=c.options.initialSlide),c.refresh(b)),g=e):null!==c.activeBreakpoint&&(c.activeBreakpoint=null,c.options=c.originalSettings,b===!0&&(c.currentSlide=c.options.initialSlide),c.refresh(b),g=e),b||g===!1||c.$slider.trigger("breakpoint",[c,g])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.target);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=0!==d.slideCount%d.options.slidesToScroll,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(ab.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.$list.off("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.html(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&"object"!=typeof c.options.prevArrow&&c.$prevArrow.remove(),c.$nextArrow&&"object"!=typeof c.options.nextArrow&&c.$nextArrow.remove(),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:1e3}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:1e3}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;bb.options.slidesToShow&&(b.slideOffset=-1*b.slideWidth*b.options.slidesToShow,e=-1*d*b.options.slidesToShow),0!==b.slideCount%b.options.slidesToScroll&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=-1*(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth,e=-1*(b.options.slidesToShow-(a-b.slideCount))*d):(b.slideOffset=-1*b.slideCount%b.options.slidesToScroll*b.slideWidth,e=-1*b.slideCount%b.options.slidesToScroll*d))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?-1*a*b.slideWidth+b.slideOffset:-1*a*d+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots()),b&&c.$slider.trigger("init",[c])},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&b.options.autoplay===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.setPaused,b,!0)).on("mouseleave.slick",a.proxy(b.setPaused,b,!1))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.$list.on("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.on("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show(),a.options.autoplay===!0&&a.autoPlay()},b.prototype.keyHandler=function(a){var b=this;37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:"next"}})},b.prototype.lazyLoad=function(){function g(b){a("img[data-lazy]",b).each(function(){var b=a(this),c=a(this).attr("data-lazy"),d=document.createElement("img");d.onload=function(){b.animate({opacity:1},200)},d.src=c,b.css({opacity:0}).attr("src",c).removeAttr("data-lazy").removeClass("slick-loading")})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=e+b.options.slidesToShow,b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.paused=!1,a.autoPlay()},b.prototype.postSlide=function(a){var b=this;b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay===!0&&b.paused===!1&&b.autoPlay()},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(){var c,d,b=this;c=a("img[data-lazy]",b.$slider).length,c>0&&(d=a("img[data-lazy]",b.$slider).first(),d.attr("src",d.attr("data-lazy")).removeClass("slick-loading").load(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad(),b.options.adaptiveHeight===!0&&b.setPosition()}).error(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad()}))},b.prototype.refresh=function(b){var c=this,d=c.currentSlide;c.destroy(!0),a.extend(c,c.initials),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses(0),b.setPosition(),b.$slider.trigger("reInit",[b])},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,d.reinit(),void 0)},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=-1*b.slideWidth*d,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:800,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:800,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:900,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(a,b,c){var d=this;d.options[a]=b,c===!0&&(d.unload(),d.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;b.$slider.find(".slick-slide").removeClass("slick-active").attr("aria-hidden","true").removeClass("slick-center"),d=b.$slider.find(".slick-slide"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a,d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-ab.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.setPaused=function(a){var b=this;b.options.autoplay===!0&&b.options.pauseOnHover===!0&&(b.paused=a,a?b.autoPlayClear():b.autoPlay())},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.$slider.find(".slick-slide").removeClass("slick-active").attr("aria-hidden","true"),c.$slides.eq(e).addClass("slick-active").attr("aria-hidden","false"),c.options.centerMode===!0&&(c.$slider.find(".slick-slide").removeClass("slick-center"),c.$slides.eq(e).addClass("slick-center")),c.asNavFor(e),void 0):(c.slideHandler(e),void 0)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):(i.options.autoplay===!0&&clearInterval(i.autoPlayTimer),e=0>d?0!==i.slideCount%i.options.slidesToScroll?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?0!==i.slideCount%i.options.slidesToScroll?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?i.fadeSlide(e,function(){i.postSlide(e)}):i.postSlide(e),i.animateHeight(),void 0):(c!==!0?i.animateSlide(h,function(){i.postSlide(e)}):i.postSlide(e),void 0)))},b.prototype.startLoad=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.hide(),a.$nextArrow.hide()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.hide(),a.$slider.addClass("slick-loading")},b.prototype.swipeDirection=function(){var a,b,c,d,e=this;return a=e.touchObject.startX-e.touchObject.curX,b=e.touchObject.startY-e.touchObject.curY,c=Math.atan2(b,a),d=Math.round(180*c/Math.PI),0>d&&(d=360-Math.abs(d)),45>=d&&d>=0?e.options.rtl===!1?"left":"right":360>=d&&d>=315?e.options.rtl===!1?"left":"right":d>=135&&225>=d?e.options.rtl===!1?"right":"left":e.options.verticalSwiping===!0?d>=35&&135>=d?"left":"right":"vertical"},b.prototype.swipeEnd=function(){var c,b=this;if(b.dragging=!1,b.shouldClick=b.touchObject.swipeLength>10?!1:!0,void 0===b.touchObject.curX)return!1;if(b.touchObject.edgeHit===!0&&b.$slider.trigger("edge",[b,b.swipeDirection()]),b.touchObject.swipeLength>=b.touchObject.minSwipe)switch(b.swipeDirection()){case"left":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide+b.getSlideCount()):b.currentSlide+b.getSlideCount(),b.slideHandler(c),b.currentDirection=0,b.touchObject={},b.$slider.trigger("swipe",[b,"left"]);break;case"right":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide-b.getSlideCount()):b.currentSlide-b.getSlideCount(),b.slideHandler(c),b.currentDirection=1,b.touchObject={},b.$slider.trigger("swipe",[b,"right"]) -}else b.touchObject.startX!==b.touchObject.curX&&(b.slideHandler(b.currentSlide),b.touchObject={})},b.prototype.swipeHandler=function(a){var b=this;if(!(b.options.swipe===!1||"ontouchend"in document&&b.options.swipe===!1||b.options.draggable===!1&&-1!==a.type.indexOf("mouse")))switch(b.touchObject.fingerCount=a.originalEvent&&void 0!==a.originalEvent.touches?a.originalEvent.touches.length:1,b.touchObject.minSwipe=b.listWidth/b.options.touchThreshold,b.options.verticalSwiping===!0&&(b.touchObject.minSwipe=b.listHeight/b.options.touchThreshold),a.data.action){case"start":b.swipeStart(a);break;case"move":b.swipeMove(a);break;case"end":b.swipeEnd(a)}},b.prototype.swipeMove=function(a){var d,e,f,g,h,b=this;return h=void 0!==a.originalEvent?a.originalEvent.touches:null,!b.dragging||h&&1!==h.length?!1:(d=b.getLeft(b.currentSlide),b.touchObject.curX=void 0!==h?h[0].pageX:a.clientX,b.touchObject.curY=void 0!==h?h[0].pageY:a.clientY,b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curX-b.touchObject.startX,2))),b.options.verticalSwiping===!0&&(b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curY-b.touchObject.startY,2)))),e=b.swipeDirection(),"vertical"!==e?(void 0!==a.originalEvent&&b.touchObject.swipeLength>4&&a.preventDefault(),g=(b.options.rtl===!1?1:-1)*(b.touchObject.curX>b.touchObject.startX?1:-1),b.options.verticalSwiping===!0&&(g=b.touchObject.curY>b.touchObject.startY?1:-1),f=b.touchObject.swipeLength,b.touchObject.edgeHit=!1,b.options.infinite===!1&&(0===b.currentSlide&&"right"===e||b.currentSlide>=b.getDotCount()&&"left"===e)&&(f=b.touchObject.swipeLength*b.options.edgeFriction,b.touchObject.edgeHit=!0),b.swipeLeft=b.options.vertical===!1?d+f*g:d+f*(b.$list.height()/b.listWidth)*g,b.options.verticalSwiping===!0&&(b.swipeLeft=d+f*g),b.options.fade===!0||b.options.touchMove===!1?!1:b.animating===!0?(b.swipeLeft=null,!1):(b.setCSS(b.swipeLeft),void 0)):void 0)},b.prototype.swipeStart=function(a){var c,b=this;return 1!==b.touchObject.fingerCount||b.slideCount<=b.options.slidesToShow?(b.touchObject={},!1):(void 0!==a.originalEvent&&void 0!==a.originalEvent.touches&&(c=a.originalEvent.touches[0]),b.touchObject.startX=b.touchObject.curX=void 0!==c?c.pageX:a.clientX,b.touchObject.startY=b.touchObject.curY=void 0!==c?c.pageY:a.clientY,b.dragging=!0,void 0)},b.prototype.unfilterSlides=b.prototype.slickUnfilter=function(){var a=this;null!==a.$slidesCache&&(a.unload(),a.$slideTrack.children(this.options.slide).detach(),a.$slidesCache.appendTo(a.$slideTrack),a.reinit())},b.prototype.unload=function(){var b=this;a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&"object"!=typeof b.options.prevArrow&&b.$prevArrow.remove(),b.$nextArrow&&"object"!=typeof b.options.nextArrow&&b.$nextArrow.remove(),b.$slides.removeClass("slick-slide slick-active slick-visible").attr("aria-hidden","true").css("width","")},b.prototype.unslick=function(a){var b=this;b.$slider.trigger("unslick",[b,a]),b.destroy()},b.prototype.updateArrows=function(){var b,a=this;b=Math.floor(a.options.slidesToShow/2),a.options.arrows===!0&&a.options.infinite!==!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.removeClass("slick-disabled"),a.$nextArrow.removeClass("slick-disabled"),0===a.currentSlide?(a.$prevArrow.addClass("slick-disabled"),a.$nextArrow.removeClass("slick-disabled")):a.currentSlide>=a.slideCount-a.options.slidesToShow&&a.options.centerMode===!1?(a.$nextArrow.addClass("slick-disabled"),a.$prevArrow.removeClass("slick-disabled")):a.currentSlide>=a.slideCount-1&&a.options.centerMode===!0&&(a.$nextArrow.addClass("slick-disabled"),a.$prevArrow.removeClass("slick-disabled")))},b.prototype.updateDots=function(){var a=this;null!==a.$dots&&(a.$dots.find("li").removeClass("slick-active").attr("aria-hidden","true"),a.$dots.find("li").eq(Math.floor(a.currentSlide/a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden","false"))},b.prototype.visibility=function(){var a=this;document[a.hidden]?(a.paused=!0,a.autoPlayClear()):a.options.autoplay===!0&&(a.paused=!1,a.autoPlay())},a.fn.slick=function(){var g,a=this,c=arguments[0],d=Array.prototype.slice.call(arguments,1),e=a.length,f=0;for(f;e>f;f++)if("object"==typeof c||"undefined"==typeof c?a[f].slick=new b(a[f],c):g=a[f].slick[c].apply(a[f].slick,d),"undefined"!=typeof g)return g;return a}}); diff --git a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-theme-1.5.5.css b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8-theme.css similarity index 100% rename from java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-theme-1.5.5.css rename to java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8-theme.css diff --git a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.0.css b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.css similarity index 97% rename from java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.0.css rename to java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.css index 59119f4e6b2..e7f56074dc4 100644 --- a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.0.css +++ b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.css @@ -113,4 +113,7 @@ height: auto; border: 1px solid transparent; +} +.slick-arrow.slick-hidden { + display: none; } \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js new file mode 100644 index 00000000000..0fc69add684 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js @@ -0,0 +1,18 @@ +/* + _ _ _ _ + ___| (_) ___| | __ (_)___ +/ __| | |/ __| |/ / | / __| +\__ \ | | (__| < _ | \__ \ +|___/_|_|\___|_|\_(_)/ |___/ + |__/ + + Version: 1.5.8 + Author: Ken Wheeler + Website: http://kenwheeler.github.io + Docs: http://kenwheeler.github.io/slick + Repo: http://github.com/kenwheeler/slick + Issues: http://github.com/kenwheeler/slick/issues + + */ +!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(a,b){return'"},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.hidden="hidden",e.paused=!1,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,f,d),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0),e.checkResponsive(!0)}var b=0;return c}(),b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),d[e.animType]=e.options.vertical===!1?"translate3d("+b+"px, 0px, 0px)":"translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.asNavFor=function(b){var c=this,d=c.options.asNavFor;d&&null!==d&&(d=a(d).not(c.$slider)),null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};c[b.transitionType]=b.options.fade===!1?b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:"opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer),a.slideCount>a.options.slidesToShow&&a.paused!==!0&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this;a.options.infinite===!1?1===a.direction?(a.currentSlide+1===a.slideCount-1&&(a.direction=0),a.slideHandler(a.currentSlide+a.options.slidesToScroll)):(0===a.currentSlide-1&&(a.direction=1),a.slideHandler(a.currentSlide-a.options.slidesToScroll)):a.slideHandler(a.currentSlide+a.options.slidesToScroll)},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass("slick-arrow"),b.$nextArrow=a(b.options.nextArrow).addClass("slick-arrow"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.prependTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(d='
      ',c=0;c<=b.getDotCount();c+=1)d+="
    • "+b.options.customPaging.call(this,b,c)+"
    • ";d+="
    ",b.$dots=a(d).appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slidesCache=b.$slides,b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('
    ').appendTo(b.$slider):b.$slides.wrapAll('
    ').parent(),b.$list=b.$slideTrack.wrap('
    ').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;cd.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger("breakpoint",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.target);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=0!==d.slideCount%d.options.slidesToScroll,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(ab.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.$list.off("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.html(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;bb.options.slidesToShow&&(b.slideOffset=-1*b.slideWidth*b.options.slidesToShow,e=-1*d*b.options.slidesToShow),0!==b.slideCount%b.options.slidesToScroll&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=-1*(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth,e=-1*(b.options.slidesToShow-(a-b.slideCount))*d):(b.slideOffset=-1*b.slideCount%b.options.slidesToScroll*b.slideWidth,e=-1*b.slideCount%b.options.slidesToScroll*d))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?-1*a*b.slideWidth+b.slideOffset:-1*a*d+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots()),b&&c.$slider.trigger("init",[c]),c.options.accessibility===!0&&c.initADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&b.options.autoplay===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.setPaused,b,!0)).on("mouseleave.slick",a.proxy(b.setPaused,b,!1))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.$list.on("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.on("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show(),a.options.autoplay===!0&&a.autoPlay()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:"next"}}))},b.prototype.lazyLoad=function(){function g(b){a("img[data-lazy]",b).each(function(){var b=a(this),c=a(this).attr("data-lazy"),d=document.createElement("img");d.onload=function(){b.animate({opacity:0},100,function(){b.attr("src",c).animate({opacity:1},200,function(){b.removeAttr("data-lazy").removeClass("slick-loading")})})},d.src=c})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=e+b.options.slidesToShow,b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.paused=!1,a.autoPlay()},b.prototype.postSlide=function(a){var b=this;b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay===!0&&b.paused===!1&&b.autoPlay(),b.options.accessibility===!0&&b.initADA()},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(){var c,d,b=this;c=a("img[data-lazy]",b.$slider).length,c>0&&(d=a("img[data-lazy]",b.$slider).first(),d.attr("src",d.attr("data-lazy")).removeClass("slick-loading").load(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad(),b.options.adaptiveHeight===!0&&b.setPosition()}).error(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad()}))},b.prototype.refresh=function(b){var c=this,d=c.currentSlide;c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if("array"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||"window";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses(0),b.setPosition(),b.$slider.trigger("reInit",[b]),b.options.autoplay===!0&&b.focusHandler()},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,d.reinit(),void 0)},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=-1*b.slideWidth*d,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(b,c,d){var f,g,e=this;if("responsive"===b&&"array"===a.type(c))for(g in c)if("array"!==a.type(e.options.responsive))e.options.responsive=[c[g]];else{for(f=e.options.responsive.length-1;f>=0;)e.options.responsive[f].breakpoint===c[g].breakpoint&&e.options.responsive.splice(f,1),f--;e.options.responsive.push(c[g])}else e.options[b]=c;d===!0&&(e.unload(),e.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&("number"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),b.$slides.eq(a).addClass("slick-current"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a,d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-ab.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.setPaused=function(a){var b=this;b.options.autoplay===!0&&b.options.pauseOnHover===!0&&(b.paused=a,a?b.autoPlayClear():b.autoPlay())},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),c.asNavFor(e),void 0):(c.slideHandler(e),void 0)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):(i.options.autoplay===!0&&clearInterval(i.autoPlayTimer),e=0>d?0!==i.slideCount%i.options.slidesToScroll?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?0!==i.slideCount%i.options.slidesToScroll?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?(i.fadeSlideOut(f),i.fadeSlide(e,function(){i.postSlide(e) +})):i.postSlide(e),i.animateHeight(),void 0):(c!==!0?i.animateSlide(h,function(){i.postSlide(e)}):i.postSlide(e),void 0)))},b.prototype.startLoad=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.hide(),a.$nextArrow.hide()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.hide(),a.$slider.addClass("slick-loading")},b.prototype.swipeDirection=function(){var a,b,c,d,e=this;return a=e.touchObject.startX-e.touchObject.curX,b=e.touchObject.startY-e.touchObject.curY,c=Math.atan2(b,a),d=Math.round(180*c/Math.PI),0>d&&(d=360-Math.abs(d)),45>=d&&d>=0?e.options.rtl===!1?"left":"right":360>=d&&d>=315?e.options.rtl===!1?"left":"right":d>=135&&225>=d?e.options.rtl===!1?"right":"left":e.options.verticalSwiping===!0?d>=35&&135>=d?"left":"right":"vertical"},b.prototype.swipeEnd=function(){var c,b=this;if(b.dragging=!1,b.shouldClick=b.touchObject.swipeLength>10?!1:!0,void 0===b.touchObject.curX)return!1;if(b.touchObject.edgeHit===!0&&b.$slider.trigger("edge",[b,b.swipeDirection()]),b.touchObject.swipeLength>=b.touchObject.minSwipe)switch(b.swipeDirection()){case"left":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide+b.getSlideCount()):b.currentSlide+b.getSlideCount(),b.slideHandler(c),b.currentDirection=0,b.touchObject={},b.$slider.trigger("swipe",[b,"left"]);break;case"right":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide-b.getSlideCount()):b.currentSlide-b.getSlideCount(),b.slideHandler(c),b.currentDirection=1,b.touchObject={},b.$slider.trigger("swipe",[b,"right"])}else b.touchObject.startX!==b.touchObject.curX&&(b.slideHandler(b.currentSlide),b.touchObject={})},b.prototype.swipeHandler=function(a){var b=this;if(!(b.options.swipe===!1||"ontouchend"in document&&b.options.swipe===!1||b.options.draggable===!1&&-1!==a.type.indexOf("mouse")))switch(b.touchObject.fingerCount=a.originalEvent&&void 0!==a.originalEvent.touches?a.originalEvent.touches.length:1,b.touchObject.minSwipe=b.listWidth/b.options.touchThreshold,b.options.verticalSwiping===!0&&(b.touchObject.minSwipe=b.listHeight/b.options.touchThreshold),a.data.action){case"start":b.swipeStart(a);break;case"move":b.swipeMove(a);break;case"end":b.swipeEnd(a)}},b.prototype.swipeMove=function(a){var d,e,f,g,h,b=this;return h=void 0!==a.originalEvent?a.originalEvent.touches:null,!b.dragging||h&&1!==h.length?!1:(d=b.getLeft(b.currentSlide),b.touchObject.curX=void 0!==h?h[0].pageX:a.clientX,b.touchObject.curY=void 0!==h?h[0].pageY:a.clientY,b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curX-b.touchObject.startX,2))),b.options.verticalSwiping===!0&&(b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curY-b.touchObject.startY,2)))),e=b.swipeDirection(),"vertical"!==e?(void 0!==a.originalEvent&&b.touchObject.swipeLength>4&&a.preventDefault(),g=(b.options.rtl===!1?1:-1)*(b.touchObject.curX>b.touchObject.startX?1:-1),b.options.verticalSwiping===!0&&(g=b.touchObject.curY>b.touchObject.startY?1:-1),f=b.touchObject.swipeLength,b.touchObject.edgeHit=!1,b.options.infinite===!1&&(0===b.currentSlide&&"right"===e||b.currentSlide>=b.getDotCount()&&"left"===e)&&(f=b.touchObject.swipeLength*b.options.edgeFriction,b.touchObject.edgeHit=!0),b.swipeLeft=b.options.vertical===!1?d+f*g:d+f*(b.$list.height()/b.listWidth)*g,b.options.verticalSwiping===!0&&(b.swipeLeft=d+f*g),b.options.fade===!0||b.options.touchMove===!1?!1:b.animating===!0?(b.swipeLeft=null,!1):(b.setCSS(b.swipeLeft),void 0)):void 0)},b.prototype.swipeStart=function(a){var c,b=this;return 1!==b.touchObject.fingerCount||b.slideCount<=b.options.slidesToShow?(b.touchObject={},!1):(void 0!==a.originalEvent&&void 0!==a.originalEvent.touches&&(c=a.originalEvent.touches[0]),b.touchObject.startX=b.touchObject.curX=void 0!==c?c.pageX:a.clientX,b.touchObject.startY=b.touchObject.curY=void 0!==c?c.pageY:a.clientY,b.dragging=!0,void 0)},b.prototype.unfilterSlides=b.prototype.slickUnfilter=function(){var a=this;null!==a.$slidesCache&&(a.unload(),a.$slideTrack.children(this.options.slide).detach(),a.$slidesCache.appendTo(a.$slideTrack),a.reinit())},b.prototype.unload=function(){var b=this;a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.remove(),b.$nextArrow&&b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.remove(),b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},b.prototype.unslick=function(a){var b=this;b.$slider.trigger("unslick",[b,a]),b.destroy()},b.prototype.updateArrows=function(){var b,a=this;b=Math.floor(a.options.slidesToShow/2),a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&!a.options.infinite&&(a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===a.currentSlide?(a.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-a.options.slidesToShow&&a.options.centerMode===!1?(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-1&&a.options.centerMode===!0&&(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},b.prototype.updateDots=function(){var a=this;null!==a.$dots&&(a.$dots.find("li").removeClass("slick-active").attr("aria-hidden","true"),a.$dots.find("li").eq(Math.floor(a.currentSlide/a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden","false"))},b.prototype.visibility=function(){var a=this;document[a.hidden]?(a.paused=!0,a.autoPlayClear()):a.options.autoplay===!0&&(a.paused=!1,a.autoPlay())},b.prototype.initADA=function(){var b=this;b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),b.$slideTrack.attr("role","listbox"),b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c){a(this).attr({role:"option","aria-describedby":"slick-slide"+b.instanceUid+c})}),null!==b.$dots&&b.$dots.attr("role","tablist").find("li").each(function(c){a(this).attr({role:"presentation","aria-selected":"false","aria-controls":"navigation"+b.instanceUid+c,id:"slick-slide"+b.instanceUid+c})}).first().attr("aria-selected","true").end().find("button").attr("role","button").end().closest("div").attr("role","toolbar"),b.activateADA()},b.prototype.activateADA=function(){var a=this,b=a.$slider.find("*").is(":focus");a.$slideTrack.find(".slick-active").attr({"aria-hidden":"false",tabindex:"0"}).find("a, input, button, select").attr({tabindex:"0"}),b&&a.$slideTrack.find(".slick-active").focus()},b.prototype.focusHandler=function(){var b=this;b.$slider.on("focus.slick blur.slick","*",function(c){c.stopImmediatePropagation();var d=a(this);setTimeout(function(){b.isPlay&&(d.is(":focus")?(b.autoPlayClear(),b.paused=!0):(b.paused=!1,b.autoPlay()))},0)})},a.fn.slick=function(){var g,a=this,c=arguments[0],d=Array.prototype.slice.call(arguments,1),e=a.length,f=0;for(f;e>f;f++)if("object"==typeof c||"undefined"==typeof c?a[f].slick=new b(a[f],c):g=a[f].slick[c].apply(a[f].slick,d),"undefined"!=typeof g)return g;return a}}); \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-theme-1.5.0.css b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-theme-1.5.0.css deleted file mode 100644 index 715f0fdf1a6..00000000000 --- a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-theme-1.5.0.css +++ /dev/null @@ -1,90 +0,0 @@ -@charset 'UTF-8'; - -/* Dots */ -.slick-slider -{ - margin-bottom: 30px; -} - -.slick-dots -{ - position: absolute; - bottom: -45px; - - display: block; - - width: 100%; - padding: 0; - - list-style: none; - - text-align: center; -} -.slick-dots li -{ - position: relative; - - display: inline-block; - - width: 20px; - height: 20px; - margin: 0 5px; - padding: 0; - - cursor: pointer; -} -.slick-dots li button -{ - font-size: 0; - line-height: 0; - - display: block; - - width: 20px; - height: 20px; - padding: 5px; - - cursor: pointer; - - color: transparent; - border: 0; - outline: none; - background: transparent; -} -.slick-dots li button:hover, -.slick-dots li button:focus -{ - outline: none; -} -.slick-dots li button:hover:before, -.slick-dots li button:focus:before -{ - opacity: 1; -} -.slick-dots li button:before -{ - font-family: 'slick'; - font-size: 6px; - line-height: 20px; - - position: absolute; - top: 0; - left: 0; - - width: 20px; - height: 20px; - - content: '•'; - text-align: center; - - opacity: .25; - color: black; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.slick-dots li.slick-active button:before -{ - opacity: .75; - color: black; -} From e821b3f25611115d5e9aaf11b094990c8e54a3f5 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 7 Oct 2015 14:28:00 +0200 Subject: [PATCH 486/504] Fixed keyboard navigation in fullscreen viewer --- .../gwt/home/desktop/partials/media/SailingGalleryPlayer.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.java index e19ba58c17c..6dad5c2209a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.java @@ -5,6 +5,7 @@ import java.util.Collection; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.DivElement; import com.google.gwt.dom.client.Document; +import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.ImageElement; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.uibinder.client.UiBinder; @@ -58,6 +59,8 @@ public class SailingGalleryPlayer extends ResizeComposite { @Override protected void onLoad() { _onLoad(); + mainSliderUi.getChild(0).cast().setTabIndex(0); + mainSliderUi.getChild(0).cast().focus(); } @Override From 9379e1cc19a11cf9af3758f61936e97ac4a8ced4 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 7 Oct 2015 15:05:03 +0200 Subject: [PATCH 487/504] Adjusted slick slider styles to avoid focus border --- .../home/desktop/partials/media/SailingGalleryPlayer.ui.xml | 6 +++++- .../sse/gwt/client/controls/carousel/ImageCarousel.ui.xml | 3 +++ .../sse/gwt/client/controls/carousel/WidgetCarousel.ui.xml | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml index 51258ef2a7f..44a3547190a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml @@ -1,7 +1,7 @@ - @external slick-active; + @external slick-slide, slick-active; .mainSlider { height: 100%; } @@ -17,6 +17,10 @@ .subSlider .slick-active { border: 4px solid white; } + + .mainSlider .slick-slide:focus, .subSlider .slick-slide:focus { + outline: 0; + } .previewBar { border-top: 1px solid white; padding: 10px; diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.ui.xml b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.ui.xml index 67106673da7..d6e996a579c 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.ui.xml +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.ui.xml @@ -90,6 +90,9 @@ background-color: #fcfcfc; } + .slider .slick-slide:focus { + outline: 0; + } .slider .slick-prev, .slider .slick-next { position: absolute; diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/WidgetCarousel.ui.xml b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/WidgetCarousel.ui.xml index bb37450a7ca..20b8164d448 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/WidgetCarousel.ui.xml +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/WidgetCarousel.ui.xml @@ -19,6 +19,10 @@ background-color: #fcfcfc; } + .slider .slick-slide:focus { + outline: 0; + } + .slider .slick-prev { left: 0px; height: 60px; From 39453a9874a968dbce626a98f0224df309fbe716 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 7 Oct 2015 15:06:58 +0200 Subject: [PATCH 488/504] Cleanup initialization of ImageCarousel widget --- .../client/controls/carousel/ImageCarousel.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.java b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.java index f05fadbfec3..1c51ec0988e 100644 --- a/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.java +++ b/java/com.sap.sse.gwt/src/com/sap/sse/gwt/client/controls/carousel/ImageCarousel.java @@ -99,9 +99,13 @@ public class ImageCarousel extends Widget { */ public ImageCarousel() { setElement(ourUiBinder.createAndBindUi(this)); - uniqueId = "slider_" + Document.get().createUniqueId(); getElement().addClassName(uniqueId); + } + + @Override + protected void onLoad() { + super.onLoad(); init(); } @@ -140,11 +144,7 @@ public class ImageCarousel extends Widget { sliderReference.@com.sap.sse.gwt.client.controls.carousel.ImageCarousel::currentSlideIndex = index.currentSlide; })); - $wnd - .$( - '.' - + (sliderReference.@com.sap.sse.gwt.client.controls.carousel.ImageCarousel::uniqueId)) - .slick( + slider.slick( { dots : (sliderReference.@com.sap.sse.gwt.client.controls.carousel.ImageCarousel::showDots), infinite : (sliderReference.@com.sap.sse.gwt.client.controls.carousel.ImageCarousel::infiniteScrolling), @@ -300,9 +300,7 @@ public class ImageCarousel extends Widget { */ private void init() { final ImageCarousel reference = this; - Scheduler.get().scheduleDeferred(new Command() { - @Override public void execute() { try { From 90ad9bb818a0a2aaf1192f28ba16802a5430489f Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 7 Oct 2015 15:07:36 +0200 Subject: [PATCH 489/504] Fixed slick slider previous button positioning --- java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js index 0fc69add684..f158d9e17a7 100644 --- a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js +++ b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js @@ -14,5 +14,5 @@ Issues: http://github.com/kenwheeler/slick/issues */ -!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(a,b){return'"},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.hidden="hidden",e.paused=!1,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,f,d),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0),e.checkResponsive(!0)}var b=0;return c}(),b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),d[e.animType]=e.options.vertical===!1?"translate3d("+b+"px, 0px, 0px)":"translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.asNavFor=function(b){var c=this,d=c.options.asNavFor;d&&null!==d&&(d=a(d).not(c.$slider)),null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};c[b.transitionType]=b.options.fade===!1?b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:"opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer),a.slideCount>a.options.slidesToShow&&a.paused!==!0&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this;a.options.infinite===!1?1===a.direction?(a.currentSlide+1===a.slideCount-1&&(a.direction=0),a.slideHandler(a.currentSlide+a.options.slidesToScroll)):(0===a.currentSlide-1&&(a.direction=1),a.slideHandler(a.currentSlide-a.options.slidesToScroll)):a.slideHandler(a.currentSlide+a.options.slidesToScroll)},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass("slick-arrow"),b.$nextArrow=a(b.options.nextArrow).addClass("slick-arrow"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.prependTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(d='
      ',c=0;c<=b.getDotCount();c+=1)d+="
    • "+b.options.customPaging.call(this,b,c)+"
    • ";d+="
    ",b.$dots=a(d).appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slidesCache=b.$slides,b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('
    ').appendTo(b.$slider):b.$slides.wrapAll('
    ').parent(),b.$list=b.$slideTrack.wrap('
    ').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;cd.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger("breakpoint",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.target);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=0!==d.slideCount%d.options.slidesToScroll,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(ab.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.$list.off("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.html(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;bb.options.slidesToShow&&(b.slideOffset=-1*b.slideWidth*b.options.slidesToShow,e=-1*d*b.options.slidesToShow),0!==b.slideCount%b.options.slidesToScroll&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=-1*(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth,e=-1*(b.options.slidesToShow-(a-b.slideCount))*d):(b.slideOffset=-1*b.slideCount%b.options.slidesToScroll*b.slideWidth,e=-1*b.slideCount%b.options.slidesToScroll*d))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?-1*a*b.slideWidth+b.slideOffset:-1*a*d+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots()),b&&c.$slider.trigger("init",[c]),c.options.accessibility===!0&&c.initADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&b.options.autoplay===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.setPaused,b,!0)).on("mouseleave.slick",a.proxy(b.setPaused,b,!1))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.$list.on("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.on("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show(),a.options.autoplay===!0&&a.autoPlay()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:"next"}}))},b.prototype.lazyLoad=function(){function g(b){a("img[data-lazy]",b).each(function(){var b=a(this),c=a(this).attr("data-lazy"),d=document.createElement("img");d.onload=function(){b.animate({opacity:0},100,function(){b.attr("src",c).animate({opacity:1},200,function(){b.removeAttr("data-lazy").removeClass("slick-loading")})})},d.src=c})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=e+b.options.slidesToShow,b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.paused=!1,a.autoPlay()},b.prototype.postSlide=function(a){var b=this;b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay===!0&&b.paused===!1&&b.autoPlay(),b.options.accessibility===!0&&b.initADA()},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(){var c,d,b=this;c=a("img[data-lazy]",b.$slider).length,c>0&&(d=a("img[data-lazy]",b.$slider).first(),d.attr("src",d.attr("data-lazy")).removeClass("slick-loading").load(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad(),b.options.adaptiveHeight===!0&&b.setPosition()}).error(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad()}))},b.prototype.refresh=function(b){var c=this,d=c.currentSlide;c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if("array"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||"window";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses(0),b.setPosition(),b.$slider.trigger("reInit",[b]),b.options.autoplay===!0&&b.focusHandler()},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,d.reinit(),void 0)},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=-1*b.slideWidth*d,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(b,c,d){var f,g,e=this;if("responsive"===b&&"array"===a.type(c))for(g in c)if("array"!==a.type(e.options.responsive))e.options.responsive=[c[g]];else{for(f=e.options.responsive.length-1;f>=0;)e.options.responsive[f].breakpoint===c[g].breakpoint&&e.options.responsive.splice(f,1),f--;e.options.responsive.push(c[g])}else e.options[b]=c;d===!0&&(e.unload(),e.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&("number"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),b.$slides.eq(a).addClass("slick-current"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a,d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-ab.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.setPaused=function(a){var b=this;b.options.autoplay===!0&&b.options.pauseOnHover===!0&&(b.paused=a,a?b.autoPlayClear():b.autoPlay())},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),c.asNavFor(e),void 0):(c.slideHandler(e),void 0)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):(i.options.autoplay===!0&&clearInterval(i.autoPlayTimer),e=0>d?0!==i.slideCount%i.options.slidesToScroll?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?0!==i.slideCount%i.options.slidesToScroll?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?(i.fadeSlideOut(f),i.fadeSlide(e,function(){i.postSlide(e) +!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(a,b){return'"},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.hidden="hidden",e.paused=!1,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,f,d),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0),e.checkResponsive(!0)}var b=0;return c}(),b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),d[e.animType]=e.options.vertical===!1?"translate3d("+b+"px, 0px, 0px)":"translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.asNavFor=function(b){var c=this,d=c.options.asNavFor;d&&null!==d&&(d=a(d).not(c.$slider)),null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};c[b.transitionType]=b.options.fade===!1?b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:"opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer),a.slideCount>a.options.slidesToShow&&a.paused!==!0&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this;a.options.infinite===!1?1===a.direction?(a.currentSlide+1===a.slideCount-1&&(a.direction=0),a.slideHandler(a.currentSlide+a.options.slidesToScroll)):(0===a.currentSlide-1&&(a.direction=1),a.slideHandler(a.currentSlide-a.options.slidesToScroll)):a.slideHandler(a.currentSlide+a.options.slidesToScroll)},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass("slick-arrow"),b.$nextArrow=a(b.options.nextArrow).addClass("slick-arrow"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.appendTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(d='
      ',c=0;c<=b.getDotCount();c+=1)d+="
    • "+b.options.customPaging.call(this,b,c)+"
    • ";d+="
    ",b.$dots=a(d).appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slidesCache=b.$slides,b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('
    ').appendTo(b.$slider):b.$slides.wrapAll('
    ').parent(),b.$list=b.$slideTrack.wrap('
    ').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;cd.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger("breakpoint",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.target);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=0!==d.slideCount%d.options.slidesToScroll,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(ab.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.$list.off("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.html(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;bb.options.slidesToShow&&(b.slideOffset=-1*b.slideWidth*b.options.slidesToShow,e=-1*d*b.options.slidesToShow),0!==b.slideCount%b.options.slidesToScroll&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=-1*(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth,e=-1*(b.options.slidesToShow-(a-b.slideCount))*d):(b.slideOffset=-1*b.slideCount%b.options.slidesToScroll*b.slideWidth,e=-1*b.slideCount%b.options.slidesToScroll*d))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?-1*a*b.slideWidth+b.slideOffset:-1*a*d+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots()),b&&c.$slider.trigger("init",[c]),c.options.accessibility===!0&&c.initADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&b.options.autoplay===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.setPaused,b,!0)).on("mouseleave.slick",a.proxy(b.setPaused,b,!1))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.$list.on("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.on("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show(),a.options.autoplay===!0&&a.autoPlay()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:"next"}}))},b.prototype.lazyLoad=function(){function g(b){a("img[data-lazy]",b).each(function(){var b=a(this),c=a(this).attr("data-lazy"),d=document.createElement("img");d.onload=function(){b.animate({opacity:0},100,function(){b.attr("src",c).animate({opacity:1},200,function(){b.removeAttr("data-lazy").removeClass("slick-loading")})})},d.src=c})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=e+b.options.slidesToShow,b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.paused=!1,a.autoPlay()},b.prototype.postSlide=function(a){var b=this;b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay===!0&&b.paused===!1&&b.autoPlay(),b.options.accessibility===!0&&b.initADA()},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(){var c,d,b=this;c=a("img[data-lazy]",b.$slider).length,c>0&&(d=a("img[data-lazy]",b.$slider).first(),d.attr("src",d.attr("data-lazy")).removeClass("slick-loading").load(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad(),b.options.adaptiveHeight===!0&&b.setPosition()}).error(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad()}))},b.prototype.refresh=function(b){var c=this,d=c.currentSlide;c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if("array"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||"window";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses(0),b.setPosition(),b.$slider.trigger("reInit",[b]),b.options.autoplay===!0&&b.focusHandler()},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,d.reinit(),void 0)},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=-1*b.slideWidth*d,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(b,c,d){var f,g,e=this;if("responsive"===b&&"array"===a.type(c))for(g in c)if("array"!==a.type(e.options.responsive))e.options.responsive=[c[g]];else{for(f=e.options.responsive.length-1;f>=0;)e.options.responsive[f].breakpoint===c[g].breakpoint&&e.options.responsive.splice(f,1),f--;e.options.responsive.push(c[g])}else e.options[b]=c;d===!0&&(e.unload(),e.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&("number"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),b.$slides.eq(a).addClass("slick-current"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a,d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-ab.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.setPaused=function(a){var b=this;b.options.autoplay===!0&&b.options.pauseOnHover===!0&&(b.paused=a,a?b.autoPlayClear():b.autoPlay())},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),c.asNavFor(e),void 0):(c.slideHandler(e),void 0)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):(i.options.autoplay===!0&&clearInterval(i.autoPlayTimer),e=0>d?0!==i.slideCount%i.options.slidesToScroll?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?0!==i.slideCount%i.options.slidesToScroll?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?(i.fadeSlideOut(f),i.fadeSlide(e,function(){i.postSlide(e) })):i.postSlide(e),i.animateHeight(),void 0):(c!==!0?i.animateSlide(h,function(){i.postSlide(e)}):i.postSlide(e),void 0)))},b.prototype.startLoad=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.hide(),a.$nextArrow.hide()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.hide(),a.$slider.addClass("slick-loading")},b.prototype.swipeDirection=function(){var a,b,c,d,e=this;return a=e.touchObject.startX-e.touchObject.curX,b=e.touchObject.startY-e.touchObject.curY,c=Math.atan2(b,a),d=Math.round(180*c/Math.PI),0>d&&(d=360-Math.abs(d)),45>=d&&d>=0?e.options.rtl===!1?"left":"right":360>=d&&d>=315?e.options.rtl===!1?"left":"right":d>=135&&225>=d?e.options.rtl===!1?"right":"left":e.options.verticalSwiping===!0?d>=35&&135>=d?"left":"right":"vertical"},b.prototype.swipeEnd=function(){var c,b=this;if(b.dragging=!1,b.shouldClick=b.touchObject.swipeLength>10?!1:!0,void 0===b.touchObject.curX)return!1;if(b.touchObject.edgeHit===!0&&b.$slider.trigger("edge",[b,b.swipeDirection()]),b.touchObject.swipeLength>=b.touchObject.minSwipe)switch(b.swipeDirection()){case"left":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide+b.getSlideCount()):b.currentSlide+b.getSlideCount(),b.slideHandler(c),b.currentDirection=0,b.touchObject={},b.$slider.trigger("swipe",[b,"left"]);break;case"right":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide-b.getSlideCount()):b.currentSlide-b.getSlideCount(),b.slideHandler(c),b.currentDirection=1,b.touchObject={},b.$slider.trigger("swipe",[b,"right"])}else b.touchObject.startX!==b.touchObject.curX&&(b.slideHandler(b.currentSlide),b.touchObject={})},b.prototype.swipeHandler=function(a){var b=this;if(!(b.options.swipe===!1||"ontouchend"in document&&b.options.swipe===!1||b.options.draggable===!1&&-1!==a.type.indexOf("mouse")))switch(b.touchObject.fingerCount=a.originalEvent&&void 0!==a.originalEvent.touches?a.originalEvent.touches.length:1,b.touchObject.minSwipe=b.listWidth/b.options.touchThreshold,b.options.verticalSwiping===!0&&(b.touchObject.minSwipe=b.listHeight/b.options.touchThreshold),a.data.action){case"start":b.swipeStart(a);break;case"move":b.swipeMove(a);break;case"end":b.swipeEnd(a)}},b.prototype.swipeMove=function(a){var d,e,f,g,h,b=this;return h=void 0!==a.originalEvent?a.originalEvent.touches:null,!b.dragging||h&&1!==h.length?!1:(d=b.getLeft(b.currentSlide),b.touchObject.curX=void 0!==h?h[0].pageX:a.clientX,b.touchObject.curY=void 0!==h?h[0].pageY:a.clientY,b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curX-b.touchObject.startX,2))),b.options.verticalSwiping===!0&&(b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curY-b.touchObject.startY,2)))),e=b.swipeDirection(),"vertical"!==e?(void 0!==a.originalEvent&&b.touchObject.swipeLength>4&&a.preventDefault(),g=(b.options.rtl===!1?1:-1)*(b.touchObject.curX>b.touchObject.startX?1:-1),b.options.verticalSwiping===!0&&(g=b.touchObject.curY>b.touchObject.startY?1:-1),f=b.touchObject.swipeLength,b.touchObject.edgeHit=!1,b.options.infinite===!1&&(0===b.currentSlide&&"right"===e||b.currentSlide>=b.getDotCount()&&"left"===e)&&(f=b.touchObject.swipeLength*b.options.edgeFriction,b.touchObject.edgeHit=!0),b.swipeLeft=b.options.vertical===!1?d+f*g:d+f*(b.$list.height()/b.listWidth)*g,b.options.verticalSwiping===!0&&(b.swipeLeft=d+f*g),b.options.fade===!0||b.options.touchMove===!1?!1:b.animating===!0?(b.swipeLeft=null,!1):(b.setCSS(b.swipeLeft),void 0)):void 0)},b.prototype.swipeStart=function(a){var c,b=this;return 1!==b.touchObject.fingerCount||b.slideCount<=b.options.slidesToShow?(b.touchObject={},!1):(void 0!==a.originalEvent&&void 0!==a.originalEvent.touches&&(c=a.originalEvent.touches[0]),b.touchObject.startX=b.touchObject.curX=void 0!==c?c.pageX:a.clientX,b.touchObject.startY=b.touchObject.curY=void 0!==c?c.pageY:a.clientY,b.dragging=!0,void 0)},b.prototype.unfilterSlides=b.prototype.slickUnfilter=function(){var a=this;null!==a.$slidesCache&&(a.unload(),a.$slideTrack.children(this.options.slide).detach(),a.$slidesCache.appendTo(a.$slideTrack),a.reinit())},b.prototype.unload=function(){var b=this;a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.remove(),b.$nextArrow&&b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.remove(),b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},b.prototype.unslick=function(a){var b=this;b.$slider.trigger("unslick",[b,a]),b.destroy()},b.prototype.updateArrows=function(){var b,a=this;b=Math.floor(a.options.slidesToShow/2),a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&!a.options.infinite&&(a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===a.currentSlide?(a.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-a.options.slidesToShow&&a.options.centerMode===!1?(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-1&&a.options.centerMode===!0&&(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},b.prototype.updateDots=function(){var a=this;null!==a.$dots&&(a.$dots.find("li").removeClass("slick-active").attr("aria-hidden","true"),a.$dots.find("li").eq(Math.floor(a.currentSlide/a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden","false"))},b.prototype.visibility=function(){var a=this;document[a.hidden]?(a.paused=!0,a.autoPlayClear()):a.options.autoplay===!0&&(a.paused=!1,a.autoPlay())},b.prototype.initADA=function(){var b=this;b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),b.$slideTrack.attr("role","listbox"),b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c){a(this).attr({role:"option","aria-describedby":"slick-slide"+b.instanceUid+c})}),null!==b.$dots&&b.$dots.attr("role","tablist").find("li").each(function(c){a(this).attr({role:"presentation","aria-selected":"false","aria-controls":"navigation"+b.instanceUid+c,id:"slick-slide"+b.instanceUid+c})}).first().attr("aria-selected","true").end().find("button").attr("role","button").end().closest("div").attr("role","toolbar"),b.activateADA()},b.prototype.activateADA=function(){var a=this,b=a.$slider.find("*").is(":focus");a.$slideTrack.find(".slick-active").attr({"aria-hidden":"false",tabindex:"0"}).find("a, input, button, select").attr({tabindex:"0"}),b&&a.$slideTrack.find(".slick-active").focus()},b.prototype.focusHandler=function(){var b=this;b.$slider.on("focus.slick blur.slick","*",function(c){c.stopImmediatePropagation();var d=a(this);setTimeout(function(){b.isPlay&&(d.is(":focus")?(b.autoPlayClear(),b.paused=!0):(b.paused=!1,b.autoPlay()))},0)})},a.fn.slick=function(){var g,a=this,c=arguments[0],d=Array.prototype.slice.call(arguments,1),e=a.length,f=0;for(f;e>f;f++)if("object"==typeof c||"undefined"==typeof c?a[f].slick=new b(a[f],c):g=a[f].slick[c].apply(a[f].slick,d),"undefined"!=typeof g)return g;return a}}); \ No newline at end of file From 4d7627b68e931f605eba9328e921455c2b839afe Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 7 Oct 2015 15:08:32 +0200 Subject: [PATCH 490/504] Removed old/unnecessary code --- .../home/desktop/partials/media/SailingFullscreenViewer.java | 5 ----- .../home/desktop/partials/media/SailingGalleryPlayer.java | 4 ---- 2 files changed, 9 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingFullscreenViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingFullscreenViewer.java index 19f05bb88f7..8a70f07244e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingFullscreenViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingFullscreenViewer.java @@ -10,9 +10,4 @@ public class SailingFullscreenViewer extends FullscreenContainer images) { showContent(new SailingGalleryPlayer(selected, images)); } - - @Override - protected void onShow() { - getContentWidget().setFocusToSubSlider(); - } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.java index 6dad5c2209a..6a8b9375f21 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.java @@ -35,10 +35,6 @@ public class SailingGalleryPlayer extends ResizeComposite { subSliderUi.appendChild(createThumbImgElement(i)); } } - - public void setFocusToSubSlider() { - subSliderUi.getFirstChildElement().focus(); - } private ImageElement createThumbImgElement(SailingImageDTO i ) { ImageElement img = Document.get().createImageElement(); From 4760ebe327f5eafd795b34031bb0703f4beedf06 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 7 Oct 2015 15:29:56 +0200 Subject: [PATCH 491/504] Fixed initial marking of the selected image in the fullscreen viewer subslider --- java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js index f158d9e17a7..0777ec4fbbd 100644 --- a/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js +++ b/java/com.sap.sailing.gwt.ui/js/jquery.slick/slick-1.5.8.min.js @@ -14,5 +14,5 @@ Issues: http://github.com/kenwheeler/slick/issues */ -!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(a,b){return'"},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.hidden="hidden",e.paused=!1,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,f,d),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0),e.checkResponsive(!0)}var b=0;return c}(),b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),d[e.animType]=e.options.vertical===!1?"translate3d("+b+"px, 0px, 0px)":"translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.asNavFor=function(b){var c=this,d=c.options.asNavFor;d&&null!==d&&(d=a(d).not(c.$slider)),null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};c[b.transitionType]=b.options.fade===!1?b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:"opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer),a.slideCount>a.options.slidesToShow&&a.paused!==!0&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this;a.options.infinite===!1?1===a.direction?(a.currentSlide+1===a.slideCount-1&&(a.direction=0),a.slideHandler(a.currentSlide+a.options.slidesToScroll)):(0===a.currentSlide-1&&(a.direction=1),a.slideHandler(a.currentSlide-a.options.slidesToScroll)):a.slideHandler(a.currentSlide+a.options.slidesToScroll)},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass("slick-arrow"),b.$nextArrow=a(b.options.nextArrow).addClass("slick-arrow"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.appendTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(d='
      ',c=0;c<=b.getDotCount();c+=1)d+="
    • "+b.options.customPaging.call(this,b,c)+"
    • ";d+="
    ",b.$dots=a(d).appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slidesCache=b.$slides,b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('
    ').appendTo(b.$slider):b.$slides.wrapAll('
    ').parent(),b.$list=b.$slideTrack.wrap('
    ').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;cd.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger("breakpoint",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.target);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=0!==d.slideCount%d.options.slidesToScroll,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(ab.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.$list.off("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.html(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;bb.options.slidesToShow&&(b.slideOffset=-1*b.slideWidth*b.options.slidesToShow,e=-1*d*b.options.slidesToShow),0!==b.slideCount%b.options.slidesToScroll&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=-1*(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth,e=-1*(b.options.slidesToShow-(a-b.slideCount))*d):(b.slideOffset=-1*b.slideCount%b.options.slidesToScroll*b.slideWidth,e=-1*b.slideCount%b.options.slidesToScroll*d))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?-1*a*b.slideWidth+b.slideOffset:-1*a*d+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots()),b&&c.$slider.trigger("init",[c]),c.options.accessibility===!0&&c.initADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&b.options.autoplay===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.setPaused,b,!0)).on("mouseleave.slick",a.proxy(b.setPaused,b,!1))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.$list.on("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.on("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show(),a.options.autoplay===!0&&a.autoPlay()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:"next"}}))},b.prototype.lazyLoad=function(){function g(b){a("img[data-lazy]",b).each(function(){var b=a(this),c=a(this).attr("data-lazy"),d=document.createElement("img");d.onload=function(){b.animate({opacity:0},100,function(){b.attr("src",c).animate({opacity:1},200,function(){b.removeAttr("data-lazy").removeClass("slick-loading")})})},d.src=c})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=e+b.options.slidesToShow,b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.paused=!1,a.autoPlay()},b.prototype.postSlide=function(a){var b=this;b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay===!0&&b.paused===!1&&b.autoPlay(),b.options.accessibility===!0&&b.initADA()},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(){var c,d,b=this;c=a("img[data-lazy]",b.$slider).length,c>0&&(d=a("img[data-lazy]",b.$slider).first(),d.attr("src",d.attr("data-lazy")).removeClass("slick-loading").load(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad(),b.options.adaptiveHeight===!0&&b.setPosition()}).error(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad()}))},b.prototype.refresh=function(b){var c=this,d=c.currentSlide;c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if("array"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||"window";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses(0),b.setPosition(),b.$slider.trigger("reInit",[b]),b.options.autoplay===!0&&b.focusHandler()},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,d.reinit(),void 0)},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=-1*b.slideWidth*d,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(b,c,d){var f,g,e=this;if("responsive"===b&&"array"===a.type(c))for(g in c)if("array"!==a.type(e.options.responsive))e.options.responsive=[c[g]];else{for(f=e.options.responsive.length-1;f>=0;)e.options.responsive[f].breakpoint===c[g].breakpoint&&e.options.responsive.splice(f,1),f--;e.options.responsive.push(c[g])}else e.options[b]=c;d===!0&&(e.unload(),e.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&("number"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),b.$slides.eq(a).addClass("slick-current"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a,d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-ab.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.setPaused=function(a){var b=this;b.options.autoplay===!0&&b.options.pauseOnHover===!0&&(b.paused=a,a?b.autoPlayClear():b.autoPlay())},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),c.asNavFor(e),void 0):(c.slideHandler(e),void 0)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):(i.options.autoplay===!0&&clearInterval(i.autoPlayTimer),e=0>d?0!==i.slideCount%i.options.slidesToScroll?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?0!==i.slideCount%i.options.slidesToScroll?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?(i.fadeSlideOut(f),i.fadeSlide(e,function(){i.postSlide(e) +!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):"undefined"!=typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){"use strict";var b=window.Slick||{};b=function(){function c(c,d){var f,e=this;e.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:a(c),appendDots:a(c),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(a,b){return'"},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},e.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},a.extend(e,e.initials),e.activeBreakpoint=null,e.animType=null,e.animProp=null,e.breakpoints=[],e.breakpointSettings=[],e.cssTransitions=!1,e.hidden="hidden",e.paused=!1,e.positionProp=null,e.respondTo=null,e.rowCount=1,e.shouldClick=!0,e.$slider=a(c),e.$slidesCache=null,e.transformType=null,e.transitionType=null,e.visibilityChange="visibilitychange",e.windowWidth=0,e.windowTimer=null,f=a(c).data("slick")||{},e.options=a.extend({},e.defaults,f,d),e.currentSlide=e.options.initialSlide,e.originalSettings=e.options,"undefined"!=typeof document.mozHidden?(e.hidden="mozHidden",e.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(e.hidden="webkitHidden",e.visibilityChange="webkitvisibilitychange"),e.autoPlay=a.proxy(e.autoPlay,e),e.autoPlayClear=a.proxy(e.autoPlayClear,e),e.changeSlide=a.proxy(e.changeSlide,e),e.clickHandler=a.proxy(e.clickHandler,e),e.selectHandler=a.proxy(e.selectHandler,e),e.setPosition=a.proxy(e.setPosition,e),e.swipeHandler=a.proxy(e.swipeHandler,e),e.dragHandler=a.proxy(e.dragHandler,e),e.keyHandler=a.proxy(e.keyHandler,e),e.autoPlayIterator=a.proxy(e.autoPlayIterator,e),e.instanceUid=b++,e.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,e.registerBreakpoints(),e.init(!0),e.checkResponsive(!0)}var b=0;return c}(),b.prototype.addSlide=b.prototype.slickAdd=function(b,c,d){var e=this;if("boolean"==typeof c)d=c,c=null;else if(0>c||c>=e.slideCount)return!1;e.unload(),"number"==typeof c?0===c&&0===e.$slides.length?a(b).appendTo(e.$slideTrack):d?a(b).insertBefore(e.$slides.eq(c)):a(b).insertAfter(e.$slides.eq(c)):d===!0?a(b).prependTo(e.$slideTrack):a(b).appendTo(e.$slideTrack),e.$slides=e.$slideTrack.children(this.options.slide),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.append(e.$slides),e.$slides.each(function(b,c){a(c).attr("data-slick-index",b)}),e.$slidesCache=e.$slides,e.reinit()},b.prototype.animateHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.animate({height:b},a.options.speed)}},b.prototype.animateSlide=function(b,c){var d={},e=this;e.animateHeight(),e.options.rtl===!0&&e.options.vertical===!1&&(b=-b),e.transformsEnabled===!1?e.options.vertical===!1?e.$slideTrack.animate({left:b},e.options.speed,e.options.easing,c):e.$slideTrack.animate({top:b},e.options.speed,e.options.easing,c):e.cssTransitions===!1?(e.options.rtl===!0&&(e.currentLeft=-e.currentLeft),a({animStart:e.currentLeft}).animate({animStart:b},{duration:e.options.speed,easing:e.options.easing,step:function(a){a=Math.ceil(a),e.options.vertical===!1?(d[e.animType]="translate("+a+"px, 0px)",e.$slideTrack.css(d)):(d[e.animType]="translate(0px,"+a+"px)",e.$slideTrack.css(d))},complete:function(){c&&c.call()}})):(e.applyTransition(),b=Math.ceil(b),d[e.animType]=e.options.vertical===!1?"translate3d("+b+"px, 0px, 0px)":"translate3d(0px,"+b+"px, 0px)",e.$slideTrack.css(d),c&&setTimeout(function(){e.disableTransition(),c.call()},e.options.speed))},b.prototype.asNavFor=function(b){var c=this,d=c.options.asNavFor;d&&null!==d&&(d=a(d).not(c.$slider)),null!==d&&"object"==typeof d&&d.each(function(){var c=a(this).slick("getSlick");c.unslicked||c.slideHandler(b,!0)})},b.prototype.applyTransition=function(a){var b=this,c={};c[b.transitionType]=b.options.fade===!1?b.transformType+" "+b.options.speed+"ms "+b.options.cssEase:"opacity "+b.options.speed+"ms "+b.options.cssEase,b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.autoPlay=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer),a.slideCount>a.options.slidesToShow&&a.paused!==!0&&(a.autoPlayTimer=setInterval(a.autoPlayIterator,a.options.autoplaySpeed))},b.prototype.autoPlayClear=function(){var a=this;a.autoPlayTimer&&clearInterval(a.autoPlayTimer)},b.prototype.autoPlayIterator=function(){var a=this;a.options.infinite===!1?1===a.direction?(a.currentSlide+1===a.slideCount-1&&(a.direction=0),a.slideHandler(a.currentSlide+a.options.slidesToScroll)):(0===a.currentSlide-1&&(a.direction=1),a.slideHandler(a.currentSlide-a.options.slidesToScroll)):a.slideHandler(a.currentSlide+a.options.slidesToScroll)},b.prototype.buildArrows=function(){var b=this;b.options.arrows===!0&&(b.$prevArrow=a(b.options.prevArrow).addClass("slick-arrow"),b.$nextArrow=a(b.options.nextArrow).addClass("slick-arrow"),b.slideCount>b.options.slidesToShow?(b.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.appendTo(b.options.appendArrows),b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.appendTo(b.options.appendArrows),b.options.infinite!==!0&&b.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):b.$prevArrow.add(b.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},b.prototype.buildDots=function(){var c,d,b=this;if(b.options.dots===!0&&b.slideCount>b.options.slidesToShow){for(d='
      ',c=0;c<=b.getDotCount();c+=1)d+="
    • "+b.options.customPaging.call(this,b,c)+"
    • ";d+="
    ",b.$dots=a(d).appendTo(b.options.appendDots),b.$dots.find("li").first().addClass("slick-active").attr("aria-hidden","false")}},b.prototype.buildOut=function(){var b=this;b.$slides=b.$slider.children(b.options.slide+":not(.slick-cloned)").addClass("slick-slide"),b.slideCount=b.$slides.length,b.$slides.each(function(b,c){a(c).attr("data-slick-index",b).data("originalStyling",a(c).attr("style")||"")}),b.$slidesCache=b.$slides,b.$slider.addClass("slick-slider"),b.$slideTrack=0===b.slideCount?a('
    ').appendTo(b.$slider):b.$slides.wrapAll('
    ').parent(),b.$list=b.$slideTrack.wrap('
    ').parent(),b.$slideTrack.css("opacity",0),(b.options.centerMode===!0||b.options.swipeToSlide===!0)&&(b.options.slidesToScroll=1),a("img[data-lazy]",b.$slider).not("[src]").addClass("slick-loading"),b.setupInfinite(),b.buildArrows(),b.buildDots(),b.updateDots(),b.setSlideClasses("number"==typeof b.currentSlide?b.currentSlide:0),b.options.draggable===!0&&b.$list.addClass("draggable")},b.prototype.buildRows=function(){var b,c,d,e,f,g,h,a=this;if(e=document.createDocumentFragment(),g=a.$slider.children(),a.options.rows>1){for(h=a.options.slidesPerRow*a.options.rows,f=Math.ceil(g.length/h),b=0;f>b;b++){var i=document.createElement("div");for(c=0;cd.breakpoints[e]&&(f=d.breakpoints[e]));null!==f?null!==d.activeBreakpoint?(f!==d.activeBreakpoint||c)&&(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):(d.activeBreakpoint=f,"unslick"===d.breakpointSettings[f]?d.unslick(f):(d.options=a.extend({},d.originalSettings,d.breakpointSettings[f]),b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b)),h=f):null!==d.activeBreakpoint&&(d.activeBreakpoint=null,d.options=d.originalSettings,b===!0&&(d.currentSlide=d.options.initialSlide),d.refresh(b),h=f),b||h===!1||d.$slider.trigger("breakpoint",[d,h])}},b.prototype.changeSlide=function(b,c){var f,g,h,d=this,e=a(b.target);switch(e.is("a")&&b.preventDefault(),e.is("li")||(e=e.closest("li")),h=0!==d.slideCount%d.options.slidesToScroll,f=h?0:(d.slideCount-d.currentSlide)%d.options.slidesToScroll,b.data.message){case"previous":g=0===f?d.options.slidesToScroll:d.options.slidesToShow-f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide-g,!1,c);break;case"next":g=0===f?d.options.slidesToScroll:f,d.slideCount>d.options.slidesToShow&&d.slideHandler(d.currentSlide+g,!1,c);break;case"index":var i=0===b.data.index?0:b.data.index||e.index()*d.options.slidesToScroll;d.slideHandler(d.checkNavigable(i),!1,c),e.children().trigger("focus");break;default:return}},b.prototype.checkNavigable=function(a){var c,d,b=this;if(c=b.getNavigableIndexes(),d=0,a>c[c.length-1])a=c[c.length-1];else for(var e in c){if(ab.options.slidesToShow&&(b.$prevArrow&&b.$prevArrow.off("click.slick",b.changeSlide),b.$nextArrow&&b.$nextArrow.off("click.slick",b.changeSlide)),b.$list.off("touchstart.slick mousedown.slick",b.swipeHandler),b.$list.off("touchmove.slick mousemove.slick",b.swipeHandler),b.$list.off("touchend.slick mouseup.slick",b.swipeHandler),b.$list.off("touchcancel.slick mouseleave.slick",b.swipeHandler),b.$list.off("click.slick",b.clickHandler),a(document).off(b.visibilityChange,b.visibility),b.$list.off("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.off("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.off("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().off("click.slick",b.selectHandler),a(window).off("orientationchange.slick.slick-"+b.instanceUid,b.orientationChange),a(window).off("resize.slick.slick-"+b.instanceUid,b.resize),a("[draggable!=true]",b.$slideTrack).off("dragstart",b.preventDefault),a(window).off("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).off("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.cleanUpRows=function(){var b,a=this;a.options.rows>1&&(b=a.$slides.children().children(),b.removeAttr("style"),a.$slider.html(b))},b.prototype.clickHandler=function(a){var b=this;b.shouldClick===!1&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},b.prototype.destroy=function(b){var c=this;c.autoPlayClear(),c.touchObject={},c.cleanUpEvents(),a(".slick-cloned",c.$slider).detach(),c.$dots&&c.$dots.remove(),c.$prevArrow&&c.$prevArrow.length&&(c.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.prevArrow)&&c.$prevArrow.remove()),c.$nextArrow&&c.$nextArrow.length&&(c.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),c.htmlExpr.test(c.options.nextArrow)&&c.$nextArrow.remove()),c.$slides&&(c.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){a(this).attr("style",a(this).data("originalStyling"))}),c.$slideTrack.children(this.options.slide).detach(),c.$slideTrack.detach(),c.$list.detach(),c.$slider.append(c.$slides)),c.cleanUpRows(),c.$slider.removeClass("slick-slider"),c.$slider.removeClass("slick-initialized"),c.unslicked=!0,b||c.$slider.trigger("destroy",[c])},b.prototype.disableTransition=function(a){var b=this,c={};c[b.transitionType]="",b.options.fade===!1?b.$slideTrack.css(c):b.$slides.eq(a).css(c)},b.prototype.fadeSlide=function(a,b){var c=this;c.cssTransitions===!1?(c.$slides.eq(a).css({zIndex:c.options.zIndex}),c.$slides.eq(a).animate({opacity:1},c.options.speed,c.options.easing,b)):(c.applyTransition(a),c.$slides.eq(a).css({opacity:1,zIndex:c.options.zIndex}),b&&setTimeout(function(){c.disableTransition(a),b.call()},c.options.speed))},b.prototype.fadeSlideOut=function(a){var b=this;b.cssTransitions===!1?b.$slides.eq(a).animate({opacity:0,zIndex:b.options.zIndex-2},b.options.speed,b.options.easing):(b.applyTransition(a),b.$slides.eq(a).css({opacity:0,zIndex:b.options.zIndex-2}))},b.prototype.filterSlides=b.prototype.slickFilter=function(a){var b=this;null!==a&&(b.unload(),b.$slideTrack.children(this.options.slide).detach(),b.$slidesCache.filter(a).appendTo(b.$slideTrack),b.reinit())},b.prototype.getCurrent=b.prototype.slickCurrentSlide=function(){var a=this;return a.currentSlide},b.prototype.getDotCount=function(){var a=this,b=0,c=0,d=0;if(a.options.infinite===!0)for(;bb.options.slidesToShow&&(b.slideOffset=-1*b.slideWidth*b.options.slidesToShow,e=-1*d*b.options.slidesToShow),0!==b.slideCount%b.options.slidesToScroll&&a+b.options.slidesToScroll>b.slideCount&&b.slideCount>b.options.slidesToShow&&(a>b.slideCount?(b.slideOffset=-1*(b.options.slidesToShow-(a-b.slideCount))*b.slideWidth,e=-1*(b.options.slidesToShow-(a-b.slideCount))*d):(b.slideOffset=-1*b.slideCount%b.options.slidesToScroll*b.slideWidth,e=-1*b.slideCount%b.options.slidesToScroll*d))):a+b.options.slidesToShow>b.slideCount&&(b.slideOffset=(a+b.options.slidesToShow-b.slideCount)*b.slideWidth,e=(a+b.options.slidesToShow-b.slideCount)*d),b.slideCount<=b.options.slidesToShow&&(b.slideOffset=0,e=0),b.options.centerMode===!0&&b.options.infinite===!0?b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)-b.slideWidth:b.options.centerMode===!0&&(b.slideOffset=0,b.slideOffset+=b.slideWidth*Math.floor(b.options.slidesToShow/2)),c=b.options.vertical===!1?-1*a*b.slideWidth+b.slideOffset:-1*a*d+e,b.options.variableWidth===!0&&(f=b.slideCount<=b.options.slidesToShow||b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow),c=f[0]?-1*f[0].offsetLeft:0,b.options.centerMode===!0&&(f=b.options.infinite===!1?b.$slideTrack.children(".slick-slide").eq(a):b.$slideTrack.children(".slick-slide").eq(a+b.options.slidesToShow+1),c=f[0]?-1*f[0].offsetLeft:0,c+=(b.$list.width()-f.outerWidth())/2)),c},b.prototype.getOption=b.prototype.slickGetOption=function(a){var b=this;return b.options[a]},b.prototype.getNavigableIndexes=function(){var e,a=this,b=0,c=0,d=[];for(a.options.infinite===!1?e=a.slideCount:(b=-1*a.options.slidesToScroll,c=-1*a.options.slidesToScroll,e=2*a.slideCount);e>b;)d.push(b),b=c+a.options.slidesToScroll,c+=a.options.slidesToScroll<=a.options.slidesToShow?a.options.slidesToScroll:a.options.slidesToShow;return d},b.prototype.getSlick=function(){return this},b.prototype.getSlideCount=function(){var c,d,e,b=this;return e=b.options.centerMode===!0?b.slideWidth*Math.floor(b.options.slidesToShow/2):0,b.options.swipeToSlide===!0?(b.$slideTrack.find(".slick-slide").each(function(c,f){return f.offsetLeft-e+a(f).outerWidth()/2>-1*b.swipeLeft?(d=f,!1):void 0}),c=Math.abs(a(d).attr("data-slick-index")-b.currentSlide)||1):b.options.slidesToScroll},b.prototype.goTo=b.prototype.slickGoTo=function(a,b){var c=this;c.changeSlide({data:{message:"index",index:parseInt(a)}},b)},b.prototype.init=function(b){var c=this;a(c.$slider).hasClass("slick-initialized")||(a(c.$slider).addClass("slick-initialized"),c.buildRows(),c.buildOut(),c.setProps(),c.startLoad(),c.loadSlider(),c.initializeEvents(),c.updateArrows(),c.updateDots()),b&&c.$slider.trigger("init",[c]),c.options.accessibility===!0&&c.initADA()},b.prototype.initArrowEvents=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.on("click.slick",{message:"previous"},a.changeSlide),a.$nextArrow.on("click.slick",{message:"next"},a.changeSlide))},b.prototype.initDotEvents=function(){var b=this;b.options.dots===!0&&b.slideCount>b.options.slidesToShow&&a("li",b.$dots).on("click.slick",{message:"index"},b.changeSlide),b.options.dots===!0&&b.options.pauseOnDotsHover===!0&&b.options.autoplay===!0&&a("li",b.$dots).on("mouseenter.slick",a.proxy(b.setPaused,b,!0)).on("mouseleave.slick",a.proxy(b.setPaused,b,!1))},b.prototype.initializeEvents=function(){var b=this;b.initArrowEvents(),b.initDotEvents(),b.$list.on("touchstart.slick mousedown.slick",{action:"start"},b.swipeHandler),b.$list.on("touchmove.slick mousemove.slick",{action:"move"},b.swipeHandler),b.$list.on("touchend.slick mouseup.slick",{action:"end"},b.swipeHandler),b.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},b.swipeHandler),b.$list.on("click.slick",b.clickHandler),a(document).on(b.visibilityChange,a.proxy(b.visibility,b)),b.$list.on("mouseenter.slick",a.proxy(b.setPaused,b,!0)),b.$list.on("mouseleave.slick",a.proxy(b.setPaused,b,!1)),b.options.accessibility===!0&&b.$list.on("keydown.slick",b.keyHandler),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),a(window).on("orientationchange.slick.slick-"+b.instanceUid,a.proxy(b.orientationChange,b)),a(window).on("resize.slick.slick-"+b.instanceUid,a.proxy(b.resize,b)),a("[draggable!=true]",b.$slideTrack).on("dragstart",b.preventDefault),a(window).on("load.slick.slick-"+b.instanceUid,b.setPosition),a(document).on("ready.slick.slick-"+b.instanceUid,b.setPosition)},b.prototype.initUI=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.show(),a.$nextArrow.show()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.show(),a.options.autoplay===!0&&a.autoPlay()},b.prototype.keyHandler=function(a){var b=this;a.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===a.keyCode&&b.options.accessibility===!0?b.changeSlide({data:{message:"previous"}}):39===a.keyCode&&b.options.accessibility===!0&&b.changeSlide({data:{message:"next"}}))},b.prototype.lazyLoad=function(){function g(b){a("img[data-lazy]",b).each(function(){var b=a(this),c=a(this).attr("data-lazy"),d=document.createElement("img");d.onload=function(){b.animate({opacity:0},100,function(){b.attr("src",c).animate({opacity:1},200,function(){b.removeAttr("data-lazy").removeClass("slick-loading")})})},d.src=c})}var c,d,e,f,b=this;b.options.centerMode===!0?b.options.infinite===!0?(e=b.currentSlide+(b.options.slidesToShow/2+1),f=e+b.options.slidesToShow+2):(e=Math.max(0,b.currentSlide-(b.options.slidesToShow/2+1)),f=2+(b.options.slidesToShow/2+1)+b.currentSlide):(e=b.options.infinite?b.options.slidesToShow+b.currentSlide:b.currentSlide,f=e+b.options.slidesToShow,b.options.fade===!0&&(e>0&&e--,f<=b.slideCount&&f++)),c=b.$slider.find(".slick-slide").slice(e,f),g(c),b.slideCount<=b.options.slidesToShow?(d=b.$slider.find(".slick-slide"),g(d)):b.currentSlide>=b.slideCount-b.options.slidesToShow?(d=b.$slider.find(".slick-cloned").slice(0,b.options.slidesToShow),g(d)):0===b.currentSlide&&(d=b.$slider.find(".slick-cloned").slice(-1*b.options.slidesToShow),g(d))},b.prototype.loadSlider=function(){var a=this;a.setPosition(),a.$slideTrack.css({opacity:1}),a.$slider.removeClass("slick-loading"),a.initUI(),"progressive"===a.options.lazyLoad&&a.progressiveLazyLoad()},b.prototype.next=b.prototype.slickNext=function(){var a=this;a.changeSlide({data:{message:"next"}})},b.prototype.orientationChange=function(){var a=this;a.checkResponsive(),a.setPosition()},b.prototype.pause=b.prototype.slickPause=function(){var a=this;a.autoPlayClear(),a.paused=!0},b.prototype.play=b.prototype.slickPlay=function(){var a=this;a.paused=!1,a.autoPlay()},b.prototype.postSlide=function(a){var b=this;b.$slider.trigger("afterChange",[b,a]),b.animating=!1,b.setPosition(),b.swipeLeft=null,b.options.autoplay===!0&&b.paused===!1&&b.autoPlay(),b.options.accessibility===!0&&b.initADA()},b.prototype.prev=b.prototype.slickPrev=function(){var a=this;a.changeSlide({data:{message:"previous"}})},b.prototype.preventDefault=function(a){a.preventDefault()},b.prototype.progressiveLazyLoad=function(){var c,d,b=this;c=a("img[data-lazy]",b.$slider).length,c>0&&(d=a("img[data-lazy]",b.$slider).first(),d.attr("src",d.attr("data-lazy")).removeClass("slick-loading").load(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad(),b.options.adaptiveHeight===!0&&b.setPosition()}).error(function(){d.removeAttr("data-lazy"),b.progressiveLazyLoad()}))},b.prototype.refresh=function(b){var c=this,d=c.currentSlide;c.destroy(!0),a.extend(c,c.initials,{currentSlide:d}),c.init(),b||c.changeSlide({data:{message:"index",index:d}},!1)},b.prototype.registerBreakpoints=function(){var c,d,e,b=this,f=b.options.responsive||null;if("array"===a.type(f)&&f.length){b.respondTo=b.options.respondTo||"window";for(c in f)if(e=b.breakpoints.length-1,d=f[c].breakpoint,f.hasOwnProperty(c)){for(;e>=0;)b.breakpoints[e]&&b.breakpoints[e]===d&&b.breakpoints.splice(e,1),e--;b.breakpoints.push(d),b.breakpointSettings[d]=f[c].settings}b.breakpoints.sort(function(a,c){return b.options.mobileFirst?a-c:c-a})}},b.prototype.reinit=function(){var b=this;b.$slides=b.$slideTrack.children(b.options.slide).addClass("slick-slide"),b.slideCount=b.$slides.length,b.currentSlide>=b.slideCount&&0!==b.currentSlide&&(b.currentSlide=b.currentSlide-b.options.slidesToScroll),b.slideCount<=b.options.slidesToShow&&(b.currentSlide=0),b.registerBreakpoints(),b.setProps(),b.setupInfinite(),b.buildArrows(),b.updateArrows(),b.initArrowEvents(),b.buildDots(),b.updateDots(),b.initDotEvents(),b.checkResponsive(!1,!0),b.options.focusOnSelect===!0&&a(b.$slideTrack).children().on("click.slick",b.selectHandler),b.setSlideClasses(b.currentSlide),b.setPosition(),b.$slider.trigger("reInit",[b]),b.options.autoplay===!0&&b.focusHandler()},b.prototype.resize=function(){var b=this;a(window).width()!==b.windowWidth&&(clearTimeout(b.windowDelay),b.windowDelay=window.setTimeout(function(){b.windowWidth=a(window).width(),b.checkResponsive(),b.unslicked||b.setPosition()},50))},b.prototype.removeSlide=b.prototype.slickRemove=function(a,b,c){var d=this;return"boolean"==typeof a?(b=a,a=b===!0?0:d.slideCount-1):a=b===!0?--a:a,d.slideCount<1||0>a||a>d.slideCount-1?!1:(d.unload(),c===!0?d.$slideTrack.children().remove():d.$slideTrack.children(this.options.slide).eq(a).remove(),d.$slides=d.$slideTrack.children(this.options.slide),d.$slideTrack.children(this.options.slide).detach(),d.$slideTrack.append(d.$slides),d.$slidesCache=d.$slides,d.reinit(),void 0)},b.prototype.setCSS=function(a){var d,e,b=this,c={};b.options.rtl===!0&&(a=-a),d="left"==b.positionProp?Math.ceil(a)+"px":"0px",e="top"==b.positionProp?Math.ceil(a)+"px":"0px",c[b.positionProp]=a,b.transformsEnabled===!1?b.$slideTrack.css(c):(c={},b.cssTransitions===!1?(c[b.animType]="translate("+d+", "+e+")",b.$slideTrack.css(c)):(c[b.animType]="translate3d("+d+", "+e+", 0px)",b.$slideTrack.css(c)))},b.prototype.setDimensions=function(){var a=this;a.options.vertical===!1?a.options.centerMode===!0&&a.$list.css({padding:"0px "+a.options.centerPadding}):(a.$list.height(a.$slides.first().outerHeight(!0)*a.options.slidesToShow),a.options.centerMode===!0&&a.$list.css({padding:a.options.centerPadding+" 0px"})),a.listWidth=a.$list.width(),a.listHeight=a.$list.height(),a.options.vertical===!1&&a.options.variableWidth===!1?(a.slideWidth=Math.ceil(a.listWidth/a.options.slidesToShow),a.$slideTrack.width(Math.ceil(a.slideWidth*a.$slideTrack.children(".slick-slide").length))):a.options.variableWidth===!0?a.$slideTrack.width(5e3*a.slideCount):(a.slideWidth=Math.ceil(a.listWidth),a.$slideTrack.height(Math.ceil(a.$slides.first().outerHeight(!0)*a.$slideTrack.children(".slick-slide").length)));var b=a.$slides.first().outerWidth(!0)-a.$slides.first().width();a.options.variableWidth===!1&&a.$slideTrack.children(".slick-slide").width(a.slideWidth-b)},b.prototype.setFade=function(){var c,b=this;b.$slides.each(function(d,e){c=-1*b.slideWidth*d,b.options.rtl===!0?a(e).css({position:"relative",right:c,top:0,zIndex:b.options.zIndex-2,opacity:0}):a(e).css({position:"relative",left:c,top:0,zIndex:b.options.zIndex-2,opacity:0})}),b.$slides.eq(b.currentSlide).css({zIndex:b.options.zIndex-1,opacity:1})},b.prototype.setHeight=function(){var a=this;if(1===a.options.slidesToShow&&a.options.adaptiveHeight===!0&&a.options.vertical===!1){var b=a.$slides.eq(a.currentSlide).outerHeight(!0);a.$list.css("height",b)}},b.prototype.setOption=b.prototype.slickSetOption=function(b,c,d){var f,g,e=this;if("responsive"===b&&"array"===a.type(c))for(g in c)if("array"!==a.type(e.options.responsive))e.options.responsive=[c[g]];else{for(f=e.options.responsive.length-1;f>=0;)e.options.responsive[f].breakpoint===c[g].breakpoint&&e.options.responsive.splice(f,1),f--;e.options.responsive.push(c[g])}else e.options[b]=c;d===!0&&(e.unload(),e.reinit())},b.prototype.setPosition=function(){var a=this;a.setDimensions(),a.setHeight(),a.options.fade===!1?a.setCSS(a.getLeft(a.currentSlide)):a.setFade(),a.$slider.trigger("setPosition",[a])},b.prototype.setProps=function(){var a=this,b=document.body.style;a.positionProp=a.options.vertical===!0?"top":"left","top"===a.positionProp?a.$slider.addClass("slick-vertical"):a.$slider.removeClass("slick-vertical"),(void 0!==b.WebkitTransition||void 0!==b.MozTransition||void 0!==b.msTransition)&&a.options.useCSS===!0&&(a.cssTransitions=!0),a.options.fade&&("number"==typeof a.options.zIndex?a.options.zIndex<3&&(a.options.zIndex=3):a.options.zIndex=a.defaults.zIndex),void 0!==b.OTransform&&(a.animType="OTransform",a.transformType="-o-transform",a.transitionType="OTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.MozTransform&&(a.animType="MozTransform",a.transformType="-moz-transform",a.transitionType="MozTransition",void 0===b.perspectiveProperty&&void 0===b.MozPerspective&&(a.animType=!1)),void 0!==b.webkitTransform&&(a.animType="webkitTransform",a.transformType="-webkit-transform",a.transitionType="webkitTransition",void 0===b.perspectiveProperty&&void 0===b.webkitPerspective&&(a.animType=!1)),void 0!==b.msTransform&&(a.animType="msTransform",a.transformType="-ms-transform",a.transitionType="msTransition",void 0===b.msTransform&&(a.animType=!1)),void 0!==b.transform&&a.animType!==!1&&(a.animType="transform",a.transformType="transform",a.transitionType="transition"),a.transformsEnabled=null!==a.animType&&a.animType!==!1},b.prototype.setSlideClasses=function(a){var c,d,e,f,b=this;d=b.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),b.$slides.eq(a).addClass("slick-current"),b.options.centerMode===!0?(c=Math.floor(b.options.slidesToShow/2),b.options.infinite===!0&&(a>=c&&a<=b.slideCount-1-c?b.$slides.slice(a-c,a+c+1).addClass("slick-active").attr("aria-hidden","false"):(e=b.options.slidesToShow+a,d.slice(e-c+1,e+c+2).addClass("slick-active").attr("aria-hidden","false")),0===a?d.eq(d.length-1-b.options.slidesToShow).addClass("slick-center"):a===b.slideCount-1&&d.eq(b.options.slidesToShow).addClass("slick-center")),b.$slides.eq(a).addClass("slick-center")):a>=0&&a<=b.slideCount-b.options.slidesToShow?b.$slides.slice(a,a+b.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):d.length<=b.options.slidesToShow?d.addClass("slick-active").attr("aria-hidden","false"):(f=b.slideCount%b.options.slidesToShow,e=b.options.infinite===!0?b.options.slidesToShow+a:a,b.options.slidesToShow==b.options.slidesToScroll&&b.slideCount-ab.options.slidesToShow)){for(e=b.options.centerMode===!0?b.options.slidesToShow+1:b.options.slidesToShow,c=b.slideCount;c>b.slideCount-e;c-=1)d=c-1,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d-b.slideCount).prependTo(b.$slideTrack).addClass("slick-cloned");for(c=0;e>c;c+=1)d=c,a(b.$slides[d]).clone(!0).attr("id","").attr("data-slick-index",d+b.slideCount).appendTo(b.$slideTrack).addClass("slick-cloned");b.$slideTrack.find(".slick-cloned").find("[id]").each(function(){a(this).attr("id","")})}},b.prototype.setPaused=function(a){var b=this;b.options.autoplay===!0&&b.options.pauseOnHover===!0&&(b.paused=a,a?b.autoPlayClear():b.autoPlay())},b.prototype.selectHandler=function(b){var c=this,d=a(b.target).is(".slick-slide")?a(b.target):a(b.target).parents(".slick-slide"),e=parseInt(d.attr("data-slick-index"));return e||(e=0),c.slideCount<=c.options.slidesToShow?(c.setSlideClasses(e),c.asNavFor(e),void 0):(c.slideHandler(e),void 0)},b.prototype.slideHandler=function(a,b,c){var d,e,f,g,h=null,i=this;return b=b||!1,i.animating===!0&&i.options.waitForAnimate===!0||i.options.fade===!0&&i.currentSlide===a||i.slideCount<=i.options.slidesToShow?void 0:(b===!1&&i.asNavFor(a),d=a,h=i.getLeft(d),g=i.getLeft(i.currentSlide),i.currentLeft=null===i.swipeLeft?g:i.swipeLeft,i.options.infinite===!1&&i.options.centerMode===!1&&(0>a||a>i.getDotCount()*i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):i.options.infinite===!1&&i.options.centerMode===!0&&(0>a||a>i.slideCount-i.options.slidesToScroll)?(i.options.fade===!1&&(d=i.currentSlide,c!==!0?i.animateSlide(g,function(){i.postSlide(d)}):i.postSlide(d)),void 0):(i.options.autoplay===!0&&clearInterval(i.autoPlayTimer),e=0>d?0!==i.slideCount%i.options.slidesToScroll?i.slideCount-i.slideCount%i.options.slidesToScroll:i.slideCount+d:d>=i.slideCount?0!==i.slideCount%i.options.slidesToScroll?0:d-i.slideCount:d,i.animating=!0,i.$slider.trigger("beforeChange",[i,i.currentSlide,e]),f=i.currentSlide,i.currentSlide=e,i.setSlideClasses(i.currentSlide),i.updateDots(),i.updateArrows(),i.options.fade===!0?(c!==!0?(i.fadeSlideOut(f),i.fadeSlide(e,function(){i.postSlide(e) })):i.postSlide(e),i.animateHeight(),void 0):(c!==!0?i.animateSlide(h,function(){i.postSlide(e)}):i.postSlide(e),void 0)))},b.prototype.startLoad=function(){var a=this;a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&(a.$prevArrow.hide(),a.$nextArrow.hide()),a.options.dots===!0&&a.slideCount>a.options.slidesToShow&&a.$dots.hide(),a.$slider.addClass("slick-loading")},b.prototype.swipeDirection=function(){var a,b,c,d,e=this;return a=e.touchObject.startX-e.touchObject.curX,b=e.touchObject.startY-e.touchObject.curY,c=Math.atan2(b,a),d=Math.round(180*c/Math.PI),0>d&&(d=360-Math.abs(d)),45>=d&&d>=0?e.options.rtl===!1?"left":"right":360>=d&&d>=315?e.options.rtl===!1?"left":"right":d>=135&&225>=d?e.options.rtl===!1?"right":"left":e.options.verticalSwiping===!0?d>=35&&135>=d?"left":"right":"vertical"},b.prototype.swipeEnd=function(){var c,b=this;if(b.dragging=!1,b.shouldClick=b.touchObject.swipeLength>10?!1:!0,void 0===b.touchObject.curX)return!1;if(b.touchObject.edgeHit===!0&&b.$slider.trigger("edge",[b,b.swipeDirection()]),b.touchObject.swipeLength>=b.touchObject.minSwipe)switch(b.swipeDirection()){case"left":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide+b.getSlideCount()):b.currentSlide+b.getSlideCount(),b.slideHandler(c),b.currentDirection=0,b.touchObject={},b.$slider.trigger("swipe",[b,"left"]);break;case"right":c=b.options.swipeToSlide?b.checkNavigable(b.currentSlide-b.getSlideCount()):b.currentSlide-b.getSlideCount(),b.slideHandler(c),b.currentDirection=1,b.touchObject={},b.$slider.trigger("swipe",[b,"right"])}else b.touchObject.startX!==b.touchObject.curX&&(b.slideHandler(b.currentSlide),b.touchObject={})},b.prototype.swipeHandler=function(a){var b=this;if(!(b.options.swipe===!1||"ontouchend"in document&&b.options.swipe===!1||b.options.draggable===!1&&-1!==a.type.indexOf("mouse")))switch(b.touchObject.fingerCount=a.originalEvent&&void 0!==a.originalEvent.touches?a.originalEvent.touches.length:1,b.touchObject.minSwipe=b.listWidth/b.options.touchThreshold,b.options.verticalSwiping===!0&&(b.touchObject.minSwipe=b.listHeight/b.options.touchThreshold),a.data.action){case"start":b.swipeStart(a);break;case"move":b.swipeMove(a);break;case"end":b.swipeEnd(a)}},b.prototype.swipeMove=function(a){var d,e,f,g,h,b=this;return h=void 0!==a.originalEvent?a.originalEvent.touches:null,!b.dragging||h&&1!==h.length?!1:(d=b.getLeft(b.currentSlide),b.touchObject.curX=void 0!==h?h[0].pageX:a.clientX,b.touchObject.curY=void 0!==h?h[0].pageY:a.clientY,b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curX-b.touchObject.startX,2))),b.options.verticalSwiping===!0&&(b.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(b.touchObject.curY-b.touchObject.startY,2)))),e=b.swipeDirection(),"vertical"!==e?(void 0!==a.originalEvent&&b.touchObject.swipeLength>4&&a.preventDefault(),g=(b.options.rtl===!1?1:-1)*(b.touchObject.curX>b.touchObject.startX?1:-1),b.options.verticalSwiping===!0&&(g=b.touchObject.curY>b.touchObject.startY?1:-1),f=b.touchObject.swipeLength,b.touchObject.edgeHit=!1,b.options.infinite===!1&&(0===b.currentSlide&&"right"===e||b.currentSlide>=b.getDotCount()&&"left"===e)&&(f=b.touchObject.swipeLength*b.options.edgeFriction,b.touchObject.edgeHit=!0),b.swipeLeft=b.options.vertical===!1?d+f*g:d+f*(b.$list.height()/b.listWidth)*g,b.options.verticalSwiping===!0&&(b.swipeLeft=d+f*g),b.options.fade===!0||b.options.touchMove===!1?!1:b.animating===!0?(b.swipeLeft=null,!1):(b.setCSS(b.swipeLeft),void 0)):void 0)},b.prototype.swipeStart=function(a){var c,b=this;return 1!==b.touchObject.fingerCount||b.slideCount<=b.options.slidesToShow?(b.touchObject={},!1):(void 0!==a.originalEvent&&void 0!==a.originalEvent.touches&&(c=a.originalEvent.touches[0]),b.touchObject.startX=b.touchObject.curX=void 0!==c?c.pageX:a.clientX,b.touchObject.startY=b.touchObject.curY=void 0!==c?c.pageY:a.clientY,b.dragging=!0,void 0)},b.prototype.unfilterSlides=b.prototype.slickUnfilter=function(){var a=this;null!==a.$slidesCache&&(a.unload(),a.$slideTrack.children(this.options.slide).detach(),a.$slidesCache.appendTo(a.$slideTrack),a.reinit())},b.prototype.unload=function(){var b=this;a(".slick-cloned",b.$slider).remove(),b.$dots&&b.$dots.remove(),b.$prevArrow&&b.htmlExpr.test(b.options.prevArrow)&&b.$prevArrow.remove(),b.$nextArrow&&b.htmlExpr.test(b.options.nextArrow)&&b.$nextArrow.remove(),b.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")},b.prototype.unslick=function(a){var b=this;b.$slider.trigger("unslick",[b,a]),b.destroy()},b.prototype.updateArrows=function(){var b,a=this;b=Math.floor(a.options.slidesToShow/2),a.options.arrows===!0&&a.slideCount>a.options.slidesToShow&&!a.options.infinite&&(a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===a.currentSlide?(a.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-a.options.slidesToShow&&a.options.centerMode===!1?(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):a.currentSlide>=a.slideCount-1&&a.options.centerMode===!0&&(a.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),a.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},b.prototype.updateDots=function(){var a=this;null!==a.$dots&&(a.$dots.find("li").removeClass("slick-active").attr("aria-hidden","true"),a.$dots.find("li").eq(Math.floor(a.currentSlide/a.options.slidesToScroll)).addClass("slick-active").attr("aria-hidden","false"))},b.prototype.visibility=function(){var a=this;document[a.hidden]?(a.paused=!0,a.autoPlayClear()):a.options.autoplay===!0&&(a.paused=!1,a.autoPlay())},b.prototype.initADA=function(){var b=this;b.$slides.add(b.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),b.$slideTrack.attr("role","listbox"),b.$slides.not(b.$slideTrack.find(".slick-cloned")).each(function(c){a(this).attr({role:"option","aria-describedby":"slick-slide"+b.instanceUid+c})}),null!==b.$dots&&b.$dots.attr("role","tablist").find("li").each(function(c){a(this).attr({role:"presentation","aria-selected":"false","aria-controls":"navigation"+b.instanceUid+c,id:"slick-slide"+b.instanceUid+c})}).first().attr("aria-selected","true").end().find("button").attr("role","button").end().closest("div").attr("role","toolbar"),b.activateADA()},b.prototype.activateADA=function(){var a=this,b=a.$slider.find("*").is(":focus");a.$slideTrack.find(".slick-active").attr({"aria-hidden":"false",tabindex:"0"}).find("a, input, button, select").attr({tabindex:"0"}),b&&a.$slideTrack.find(".slick-active").focus()},b.prototype.focusHandler=function(){var b=this;b.$slider.on("focus.slick blur.slick","*",function(c){c.stopImmediatePropagation();var d=a(this);setTimeout(function(){b.isPlay&&(d.is(":focus")?(b.autoPlayClear(),b.paused=!0):(b.paused=!1,b.autoPlay()))},0)})},a.fn.slick=function(){var g,a=this,c=arguments[0],d=Array.prototype.slice.call(arguments,1),e=a.length,f=0;for(f;e>f;f++)if("object"==typeof c||"undefined"==typeof c?a[f].slick=new b(a[f],c):g=a[f].slick[c].apply(a[f].slick,d),"undefined"!=typeof g)return g;return a}}); \ No newline at end of file From b56b958cf3a726c749f8276fa0b044cbbd31d501 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 7 Oct 2015 15:31:21 +0200 Subject: [PATCH 492/504] Marking .slick-current instead of .slick-active as it is possible to have multiple active elements --- .../home/desktop/partials/media/SailingGalleryPlayer.ui.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml index 44a3547190a..890cdd89d50 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/media/SailingGalleryPlayer.ui.xml @@ -1,7 +1,7 @@ - @external slick-slide, slick-active; + @external slick-slide, slick-current; .mainSlider { height: 100%; } @@ -14,7 +14,7 @@ border: 4px solid transparent; cursor: pointer; } - .subSlider .slick-active { + .subSlider .slick-current { border: 4px solid white; } From ebb98705dd4e637ded31a2b4af98d4dbda1458a9 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 7 Oct 2015 15:38:15 +0200 Subject: [PATCH 493/504] Desktop stage doesn't have dots at all --- .../sap/sailing/gwt/home/desktop/partials/stage/Stage.ui.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/Stage.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/Stage.ui.xml index c9dd3fbfcb6..97ce75b2ff3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/Stage.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/stage/Stage.ui.xml @@ -8,7 +8,7 @@
    - +
    From eb764cf8afcde7bbf3edf5cf00443049f86adeb0 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 7 Oct 2015 17:03:27 +0200 Subject: [PATCH 494/504] Restricted Sailing Loves Photography to stage and gallary images --- .../main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java index 3e5585ce6c9..9f91cc689ae 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java @@ -168,7 +168,9 @@ public final class HomeServiceUtil { final List acceptedImages = new LinkedList<>(); for (ImageDescriptor candidateImageUrl : event.getImages()) { if (candidateImageUrl.hasSize() && candidateImageUrl.getHeightInPx() > MINIMUM_IMAGE_HEIGHT_FOR_SAILING_PHOTOGRAPHY_IN_PIXELS) { - acceptedImages.add(candidateImageUrl); + if (candidateImageUrl.hasTag(MediaTagConstants.STAGE) || candidateImageUrl.hasTag(MediaTagConstants.GALLERY)) { + acceptedImages.add(candidateImageUrl); + } } } return acceptedImages; From 072313edba5a941135259cfaba1e89a8ceb0f6c0 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 7 Oct 2015 17:35:44 +0200 Subject: [PATCH 495/504] Fixed missing comma separator in RegattaOverview header text --- .../client/RegattaRaceStatesComponent.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java index a76860967a7..093d88c5f7a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java @@ -225,7 +225,7 @@ public class RegattaRaceStatesComponent extends SimplePanel implements Component } final RegattaOverviewEntryDTO entryForRepeatedInfos = firstEntry; repeatedInfoLabel.clear(); - isAppending = collectRepeatedInfos(stringMessages.regatta(), lastRegattaName, canRemoveRegatta, + isAppending |= collectRepeatedInfos(stringMessages.regatta(), lastRegattaName, canRemoveRegatta, repeatedInfoLabel, isAppending, new Command() { @Override public void execute() { @@ -235,21 +235,21 @@ public class RegattaRaceStatesComponent extends SimplePanel implements Component // private boolean collectRepeatedInfos(String label, String info, // boolean canRemove, FlowPanel panel, boolean append, // final Command linkAction) { - isAppending = collectRepeatedInfos(stringMessages.courseArea(), lastCourseAreaName, canRemoveCourseArea, + isAppending |= collectRepeatedInfos(stringMessages.courseArea(), lastCourseAreaName, canRemoveCourseArea, repeatedInfoLabel, isAppending, null); - isAppending = collectRepeatedInfos(stringMessages.course(), lastCourseName, canRemoveCourse, repeatedInfoLabel, + isAppending |= collectRepeatedInfos(stringMessages.course(), lastCourseName, canRemoveCourse, repeatedInfoLabel, isAppending, new Command() { @Override public void execute() { raceCourseClicked(entryForRepeatedInfos); } }); - isAppending = collectRepeatedInfos(stringMessages.boatClass(), lastBoatClass, canRemoveBoatClass, + isAppending |= collectRepeatedInfos(stringMessages.boatClass(), lastBoatClass, canRemoveBoatClass, repeatedInfoLabel, isAppending, null); - isAppending = collectRepeatedInfos("", "", canRemoveLastUpdate, repeatedInfoLabel, isAppending, null); - isAppending = collectRepeatedInfos("", "", canRemoveProtestTime, repeatedInfoLabel, isAppending, null); + isAppending |= collectRepeatedInfos("", "", canRemoveLastUpdate, repeatedInfoLabel, isAppending, null); + isAppending |= collectRepeatedInfos("", "", canRemoveProtestTime, repeatedInfoLabel, isAppending, null); LinkedList sortInfos = new LinkedList(); if (table != null) { ColumnSortList columnSortList = table.getColumnSortList(); From deaf03f42e625cfa37d24e11c3f2d643cb281a40 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Wed, 7 Oct 2015 17:48:48 +0200 Subject: [PATCH 496/504] Competition Format - Removed background color in case of default fleet --- .../regattacompetition/RegattaCompetitionFleet.java | 6 +++--- .../regattacompetition/RegattaCompetitionFleet.java | 6 +++--- .../sap/sailing/gwt/ui/shared/race/FleetMetadataDTO.java | 5 +++++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java index 670e4758741..85aca28a745 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionFleet.java @@ -7,7 +7,6 @@ import com.google.gwt.dom.client.Style.Display; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; @@ -30,14 +29,15 @@ public class RegattaCompetitionFleet extends Widget { public RegattaCompetitionFleet(RaceCompetitionFormatFleetDTO fleet) { setElement(uiBinder.createAndBindUi(this)); - getElement().getStyle().setBackgroundColor(getBackgroundColor(fleet.getFleet())); this.competitorCountUi.setInnerText(I18N.competitorsCount(fleet.getCompetitorCount())); this.competitorCountUi.getStyle().setDisplay(fleet.getCompetitorCount() == 0 ? Display.NONE : Display.BLOCK); if (fleet.getFleet() != null) { fleetNameUi.setInnerText(fleet.getFleet().getFleetName()); fleetCornerUi.getStyle().setProperty("borderTopColor", fleet.getFleet().getFleetColor()); - if (LeaderboardNameConstants.DEFAULT_FLEET_NAME.equals(fleet.getFleet().getFleetName())) { + if (fleet.getFleet().isDefaultFleet()) { addStyleName(RegattaCompetitionResources.INSTANCE.css().default_fleet()); + } else { + getElement().getStyle().setBackgroundColor(getBackgroundColor(fleet.getFleet())); } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java index 67805119aba..c230a153e89 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionFleet.java @@ -7,7 +7,6 @@ import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; -import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sailing.gwt.home.mobile.partials.regattacompetition.RegattaCompetitionResources.LocalCss; import com.sap.sailing.gwt.ui.shared.dispatch.event.RaceCompetitionFormatFleetDTO; import com.sap.sailing.gwt.ui.shared.race.FleetMetadataDTO; @@ -30,14 +29,15 @@ public class RegattaCompetitionFleet extends Widget { public RegattaCompetitionFleet(RaceCompetitionFormatFleetDTO fleet, int fleetCount) { setElement(uiBinder.createAndBindUi(this)); - raceContainerUi.getStyle().setBackgroundColor(getBackgroundColor(fleet.getFleet())); raceContainerUi.getStyle().setWidth(100.0 / fleetCount, Unit.PCT); if (fleetCount < 2) raceContainerUi.addClassName(CSS.regattacompetition_phase_fleetfullwidth()); fleetCornerUi.getStyle().setProperty("borderTopColor", fleet.getFleet().getFleetColor()); fleetNameUi.setInnerText(fleet.getFleet().getFleetName()); - if (LeaderboardNameConstants.DEFAULT_FLEET_NAME.equals(fleet.getFleet().getFleetName())) { + if (fleet.getFleet().isDefaultFleet()) { fleetCornerUi.removeFromParent(); fleetNameUi.removeFromParent(); + } else { + raceContainerUi.getStyle().setBackgroundColor(getBackgroundColor(fleet.getFleet())); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/FleetMetadataDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/FleetMetadataDTO.java index 59dd4af0c35..9a57394a1c1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/FleetMetadataDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/race/FleetMetadataDTO.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.ui.shared.race; import com.google.gwt.user.client.rpc.IsSerializable; +import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sse.common.util.NaturalComparator; public class FleetMetadataDTO implements IsSerializable, Comparable { @@ -32,6 +33,10 @@ public class FleetMetadataDTO implements IsSerializable, Comparable Date: Wed, 7 Oct 2015 17:55:13 +0200 Subject: [PATCH 497/504] Using desktop versions for a variety of tablet devices --- .../gwt/home/shared/SwitchingEntryPoint.java | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/SwitchingEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/SwitchingEntryPoint.java index 2cd82245d69..5d162e39111 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/SwitchingEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/SwitchingEntryPoint.java @@ -28,7 +28,14 @@ public class SwitchingEntryPoint implements EntryPoint { private static Logger LOG = Logger.getLogger(SwitchingEntryPoint.class.getName()); private static final String SAPSAILING_MOBILE = "sapsailing_mobile"; private static final RegExp isMobileRegExp = RegExp.compile( - "Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile Safari", "i"); + "Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini|Mobile Safari", "i"); + private static final RegExp tabletBlacklistRegExp = RegExp.compile( + "iPad|" // Apple ;-) + + "Nexus 7|Nexus 10|Nexus 9|" // Google Tablets + + "PlayBook|" // Blackberry + + "KFAPWI|" // Kindle Fire HD + + "GT-P|SM-T|SM-P" // Galaxy Tab (https://en.wikipedia.org/wiki/Samsung_Galaxy ; http://forum.xda-developers.com/wiki/Samsung/Model_naming_scheme) + , "i"); private final PlaceHistoryMapper hisMap = GWT.create(ApplicationHistoryMapper.class); private final ApplicationPlaceUpdater placeUpdater = new ApplicationPlaceUpdater(); @@ -87,7 +94,21 @@ public class SwitchingEntryPoint implements EntryPoint { public static boolean isMobile() { boolean isMobile = isMobileRegExp.test(Navigator.getUserAgent()); LOG.info("Navigator user agent matched mobile regex: " + isMobile); - return isMobile; + if(!isMobile) { + return false; + } + return !isTablet(); + } + + /** + * Uses regular expression and user agent to detect tablet device. + * + * @return + */ + public static boolean isTablet() { + boolean isTablet = tabletBlacklistRegExp.test(Navigator.getUserAgent()); + LOG.info("Navigator user agent matched tablet regex: " + isTablet); + return isTablet; } /** @@ -167,7 +188,11 @@ public class SwitchingEntryPoint implements EntryPoint { } private void configureDesktopHeader() { - metaElement("viewport", "width=device-width,initial-scale=0.5,maximum-scale=2"); + if(isTablet()) { + metaElement("viewport", "width=device-width=900,initial-scale=0.75,maximum-scale=2"); + } else { + metaElement("viewport", "width=device-width,initial-scale=0.5,maximum-scale=2"); + } } private void configureMobileHeader() { From 8affc0eb0dd2c2932b944c21b806f92533409944 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 8 Oct 2015 10:27:54 +0200 Subject: [PATCH 498/504] Initially implemented loading animation for tab interface --- .../client/controls/tabbar/TabPanel.ui.xml | 10 +++++-- .../mediatab/MultiregattaMediaTabView.java | 11 +++----- .../MultiregattaOverviewTabView.java | 3 +-- .../MultiregattaRegattasTabView.java | 3 +-- .../regatta/mediatab/RegattaMediaTabView.java | 11 +++----- .../overviewtab/RegattaOverviewTabView.java | 3 +-- .../regatta/racestab/RegattaRacesTabView.java | 3 +-- .../home/shared/refresh/RefreshManager.java | 27 ++++++++++++++++--- 8 files changed, 41 insertions(+), 30 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/controls/tabbar/TabPanel.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/controls/tabbar/TabPanel.ui.xml index 029329befcb..b32798c6160 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/controls/tabbar/TabPanel.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/common/client/controls/tabbar/TabPanel.ui.xml @@ -1,5 +1,5 @@ + xmlns:g='urn:import:com.google.gwt.user.client.ui' xmlns:c="urn:import:com.sap.sailing.gwt.common.client.controls.tabbar" xmlns:b="urn:import:com.sap.sse.gwt.client.controls.busyindicator"> @@ -35,6 +35,10 @@ float: right; margin-left: 0.5em; } + .busy { + width: 32px; + margin: 2em auto 10em; + } @@ -54,6 +58,8 @@
    + addStyleNames="{style.content}"> + + \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/mediatab/MultiregattaMediaTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/mediatab/MultiregattaMediaTabView.java index b8d4da0fc25..b8bccf2bf03 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/mediatab/MultiregattaMediaTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/mediatab/MultiregattaMediaTabView.java @@ -33,8 +33,9 @@ public class MultiregattaMediaTabView extends Composite implements MultiregattaT } @Override - public void start(MultiregattaMediaPlace myPlace, AcceptsOneWidget contentArea) { + public void start(MultiregattaMediaPlace myPlace, final AcceptsOneWidget contentArea) { final MediaPage mediaPage = new MediaPage(); + initWidget(mediaPage); currentPresenter.ensureMedia(new AsyncCallback() { @Override @@ -45,16 +46,10 @@ public class MultiregattaMediaTabView extends Composite implements MultiregattaT @Override public void onSuccess(MediaDTO media) { + contentArea.setWidget(MultiregattaMediaTabView.this); mediaPage.setMedia(media); } }); - - initWidget(mediaPage); - - // TODO do we need UiBinder here? -// initWidget(ourUiBinder.createAndBindUi(this)); - - contentArea.setWidget(this); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/overviewtab/MultiregattaOverviewTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/overviewtab/MultiregattaOverviewTabView.java index 0974cde3c7e..117972efa93 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/overviewtab/MultiregattaOverviewTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/overviewtab/MultiregattaOverviewTabView.java @@ -71,13 +71,12 @@ public class MultiregattaOverviewTabView extends Composite implements Multiregat initWidget(ourUiBinder.createAndBindUi(this)); raceOfficeSectionUi.addLink(StringMessages.INSTANCE.racesOverview(), currentPresenter.getRegattaOverviewLink()); - RefreshManager refreshManager = new RefreshManager(this, currentPresenter.getDispatch()); + RefreshManager refreshManager = new RefreshManager(this, contentArea, currentPresenter.getDispatch()); stageUi.setupRefresh(refreshManager); refreshManager.add(liveRacesListUi.getRefreshable(), new GetLiveRacesForEventAction(currentPresenter.getCtx().getEventDTO().getId())); refreshManager.add(regattaFilterList, new GetRegattaListViewAction(currentPresenter.getCtx().getEventDTO().getId())); refreshManager.add(statisticsBoxUi, new GetEventStatisticsAction(currentPresenter.getCtx().getEventDTO().getId())); - contentArea.setWidget(this); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/regattastab/MultiregattaRegattasTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/regattastab/MultiregattaRegattasTabView.java index 32651f76aa6..c15d267b1ac 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/regattastab/MultiregattaRegattasTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/multiregatta/regattastab/MultiregattaRegattasTabView.java @@ -65,11 +65,10 @@ public class MultiregattaRegattasTabView extends Composite implements Multiregat initWidget(ourUiBinder.createAndBindUi(this)); raceOfficeSectionUi.addLink(StringMessages.INSTANCE.racesOverview(), currentPresenter.getRegattaOverviewLink()); - RefreshManager refreshManager = new RefreshManager(this, currentPresenter.getDispatch()); + RefreshManager refreshManager = new RefreshManager(this, contentArea, currentPresenter.getDispatch()); refreshManager.add(liveRacesListUi.getRefreshable(), new GetLiveRacesForEventAction(currentPresenter.getCtx().getEventDTO().getId())); refreshManager.add(regattaFilterList, new GetRegattaListViewAction(currentPresenter.getCtx().getEventDTO().getId())); - contentArea.setWidget(this); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/mediatab/RegattaMediaTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/mediatab/RegattaMediaTabView.java index a94af7bfb31..cd54608b26d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/mediatab/RegattaMediaTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/mediatab/RegattaMediaTabView.java @@ -33,8 +33,9 @@ public class RegattaMediaTabView extends Composite implements RegattaTabView() { @Override @@ -45,16 +46,10 @@ public class RegattaMediaTabView extends Composite implements RegattaTabView() { @Override public void setData(RegattaWithProgressDTO data) { @@ -84,7 +84,6 @@ public class RegattaOverviewTabView extends Composite implements RegattaTabView< .getId(), currentPresenter.getCtx().getRegattaId())); refreshManager.add(standingsUi, new GetMiniLeaderbordAction(myPlace.getCtx().getEventDTO().getId(), myPlace.getRegattaId(), 5)); refreshManager.add(statisticsBoxUi, new GetRegattaStatisticsAction(myPlace.getCtx().getEventDTO().getId(), myPlace.getRegattaId())); - contentArea.setWidget(this); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.java index bda4b497383..ee1f79c7b06 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/regatta/racestab/RegattaRacesTabView.java @@ -114,7 +114,7 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView() { @@ -142,7 +142,6 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView>> void addRacesAction( diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/RefreshManager.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/RefreshManager.java index dbcffc1af77..dd1f61caf86 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/RefreshManager.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/shared/refresh/RefreshManager.java @@ -11,6 +11,7 @@ import com.google.gwt.event.logical.shared.AttachEvent; import com.google.gwt.event.logical.shared.AttachEvent.Handler; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.home.shared.dispatch.DispatchSystem; import com.sap.sailing.gwt.home.shared.refresh.ActionProvider.DefaultActionProvider; @@ -34,12 +35,19 @@ public class RefreshManager { private final DispatchSystem actionExecutor; - private Widget container; + private final Widget content; - public RefreshManager(Widget container, DispatchSystem actionExecutor) { + private AcceptsOneWidget container; + + public RefreshManager(Widget content, DispatchSystem actionExecutor) { + this(content, null, actionExecutor); + } + + public RefreshManager(Widget content, AcceptsOneWidget container, DispatchSystem actionExecutor) { + this.content = content; this.container = container; this.actionExecutor = actionExecutor; - container.addAttachHandler(new Handler() { + content.addAttachHandler(new Handler() { @Override public void onAttachOrDetach(AttachEvent event) { if (event.isAttached()) { @@ -49,6 +57,9 @@ public class RefreshManager { } } }); + if(container != null) { + reschedule(); + } } private void update() { @@ -72,6 +83,7 @@ public class RefreshManager { refreshable.timeout = System.currentTimeMillis() + result.getTtlMillis(); try { refreshable.widget.setData(result.getDto()); + initContentIfNecessary(); } catch(Throwable error) { LOG.log(Level.SEVERE, "Error while refreshing content with action " + action.getClass().getName(), error); } @@ -94,7 +106,7 @@ public class RefreshManager { public void execute() { scheduled = false; - if (refreshables.isEmpty() || !container.isAttached()) { + if (refreshables.isEmpty() || (!content.isAttached() && container == null)) { return; } @@ -119,6 +131,13 @@ public class RefreshManager { }); } + private void initContentIfNecessary() { + if(container != null) { + container.setWidget(content); + container = null; + } + } + public void forceReschule() { timer.cancel(); reschedule(); From 48c84583189f5819edcb2723a32f27ced1ede6c1 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 8 Oct 2015 12:14:30 +0200 Subject: [PATCH 499/504] Added additional StringMessages for flight counts --- .../java/com/sap/sailing/gwt/ui/client/StringMessages.java | 1 + .../com/sap/sailing/gwt/ui/client/StringMessages.properties | 4 +++- .../sap/sailing/gwt/ui/client/StringMessages_de.properties | 4 +++- .../sap/sailing/gwt/ui/client/StringMessages_ru.properties | 2 ++ .../sap/sailing/gwt/ui/client/StringMessages_zh.properties | 2 ++ 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 3373b4360f9..85338996f76 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1407,4 +1407,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c String copyCourse(); String copyCompetitors(); String smartphoneTracking(); + String flightsCount(@PluralCount(DefaultRule_1_0n.class) int count); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index f82f4b3f0dd..61efc189195 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1377,4 +1377,6 @@ registerCompetitors=Register Competitors doYouWantToCreateADefaultRegattaLeaderboard=Do you want to create a default Regatta Leaderboard? copyCourse=Copy Course copyCompetitors=Copy Competitors -smartphoneTracking=Smartphone Tracking \ No newline at end of file +smartphoneTracking=Smartphone Tracking +flightsCount={0,number} flights +flightsCount[one]={0,number} flight \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 989b169ad83..6ff6a20aa24 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1366,4 +1366,6 @@ registerCompetitors=Teilnehmer anmelden doYouWantToCreateADefaultRegattaLeaderboard=Möchten Sie eine Standardrangliste für die Regatta anlegen? copyCourse=Kurs kopieren copyCompetitors=Teilnehmer kopieren -smartphoneTracking=Smartphone Tracking \ No newline at end of file +smartphoneTracking=Smartphone Tracking +flightsCount={0,number} Läufe +flightsCount[one]={0,number} Lauf \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties index b1204fd277c..b94c808e07d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties @@ -1307,3 +1307,5 @@ polarResultsPresenter=Polar Results Presenter dataMiningRetrieval=Data Retrieval actionWatch=Watch actionAnalyze=Analyze +flightsCount={0,number} flights +flightsCount[one]={0,number} flight \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties index f8a70f182ee..2ae04b29e5f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_zh.properties @@ -1335,3 +1335,5 @@ eventsHaveTakenPlace[one]= One event has taken place raceOffice=Race Office actionWatch=Watch actionAnalyze=Analyze +flightsCount={0,number} flights +flightsCount[one]={0,number} flight \ No newline at end of file From 87f0a29f1635ff8ddf2e506f1035c8c5262f222f Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 8 Oct 2015 12:16:11 +0200 Subject: [PATCH 500/504] Implemented flight count calculation in RaceCompetitionFormatSeriesDTO --- .../dispatch/event/RaceCompetitionFormatSeriesDTO.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java index 71f4e1e07c1..15745aba8f2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/RaceCompetitionFormatSeriesDTO.java @@ -8,6 +8,7 @@ import com.sap.sailing.gwt.ui.shared.dispatch.DTO; public class RaceCompetitionFormatSeriesDTO implements DTO { private String seriesName; + private int flightCount = 0; private int raceCount = 0; private int competitorCount = 0; private ArrayList fleets = new ArrayList<>(); @@ -21,6 +22,7 @@ public class RaceCompetitionFormatSeriesDTO implements DTO { public void addFleet(RaceCompetitionFormatFleetDTO fleet) { fleets.add(fleet); + flightCount = Math.max(flightCount, fleet.getRaces().size()); raceCount += fleet.getRaces().size(); } @@ -31,6 +33,10 @@ public class RaceCompetitionFormatSeriesDTO implements DTO { public String getSeriesName() { return seriesName; } + + public int getFlightCount() { + return flightCount; + } public int getRaceCount() { return raceCount; From 44b4a530421d8268f5d594ed5b364b9bbca31379 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 8 Oct 2015 12:19:38 +0200 Subject: [PATCH 501/504] Integrated flight count into desktop competition format view --- .../regattacompetition/RegattaCompetitionSeries.java | 5 +++++ .../regattacompetition/RegattaCompetitionSeries.ui.xml | 1 + 2 files changed, 6 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.java index 8d007879056..fc9732c44ee 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.java @@ -25,6 +25,7 @@ public class RegattaCompetitionSeries extends Composite { @UiField DivElement seriesNameUi; @UiField DivElement competitorCountUi; + @UiField DivElement flightCountUi; @UiField DivElement raceCountUi; private final HTMLPanel containerUi; @@ -36,6 +37,10 @@ public class RegattaCompetitionSeries extends Composite { if (series.getCompetitorCount() == 0) { this.competitorCountUi.removeFromParent(); } + this.flightCountUi.setInnerText(I18N.flightsCount(series.getFlightCount())); + if (series.getFlightCount() == series.getRaceCount()) { + this.flightCountUi.removeFromParent(); + } this.raceCountUi.setInnerText(I18N.racesCount(series.getRaceCount())); for (RaceCompetitionFormatFleetDTO fleet : series.getFleets()) { addFleet(presenter, fleet); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.ui.xml b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.ui.xml index 3495f690fea..0c89310671f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.ui.xml +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/regattacompetition/RegattaCompetitionSeries.ui.xml @@ -9,6 +9,7 @@
    +
    From 235a3f60622128acf4f05008cbaf3bf626fd2618 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Thu, 8 Oct 2015 12:19:49 +0200 Subject: [PATCH 502/504] Integrated flight count into mobile competition format view --- .../RegattaCompetitionSeries.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java index 5309fae515b..57962e1d7a0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/partials/regattacompetition/RegattaCompetitionSeries.java @@ -33,16 +33,19 @@ public class RegattaCompetitionSeries extends Composite { initWidget(seriesUi = uiBinder.createAndBindUi(this)); seriesUi.setEdgeToEdgeContent(true); sectionHeaderUi.setSectionTitle(DEFAULT_SERIES_NAME.equals(series.getSeriesName()) ? I18N.races() : series.getSeriesName()); - initSubtitle(series.getCompetitorCount(), series.getRaceCount()); + initSubtitle(series.getCompetitorCount(), series.getFlightCount(), series.getRaceCount()); sectionHeaderUi.initCollapsibility(fleetContainerUi.getElement(), true); } - private void initSubtitle(int competitorCount, int raceCount) { - if (competitorCount > 0 || raceCount > 0) { + private void initSubtitle(int competitorCount, int flightCount, int raceCount) { + boolean showFlights = flightCount > 0 && flightCount != raceCount; + if (competitorCount > 0 || showFlights || raceCount > 0) { String competitors = competitorCount > 0 ? I18N.competitorsCount(competitorCount) : ""; - String separator = competitorCount > 0 && raceCount > 0 ? " | " : ""; + String competitorsSeparator = competitorCount > 0 ? " | " : ""; + String flights = showFlights ? I18N.flightsCount(flightCount) : ""; + String flightsSeparator = showFlights ? " | " : ""; String races = raceCount > 0 ? I18N.racesCount(raceCount) : ""; - sectionHeaderUi.setSubtitle(competitors + separator + races); + sectionHeaderUi.setSubtitle(competitors + competitorsSeparator + flights + flightsSeparator + races); } } From 6e830826238f01a479456644629715f568cbe470 Mon Sep 17 00:00:00 2001 From: fmittag Date: Thu, 8 Oct 2015 18:09:11 +0200 Subject: [PATCH 503/504] made the image edit dialog preview the image, added some size hints --- .../ui/adminconsole/ImageCreateDialog.java | 9 +- .../gwt/ui/adminconsole/ImageDialog.java | 149 +++++++++++++----- .../gwt/ui/adminconsole/ImageEditDialog.java | 28 ++-- .../gwt/ui/shared/media/MediaConstants.java | 18 +++ 4 files changed, 145 insertions(+), 59 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageCreateDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageCreateDialog.java index 386a6642315..b6d343c111a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageCreateDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageCreateDialog.java @@ -14,17 +14,20 @@ public class ImageCreateDialog extends ImageDialog { super(new Date(), new ImageParameterValidator(stringMessages), stringMessages, callback); createdAtLabel = new Label(creationDate.toString()); titleTextBox = createTextBox(null); - titleTextBox.setVisibleLength(50); + titleTextBox.setVisibleLength(40); subtitleTextBox = createTextBox(null); - subtitleTextBox.setVisibleLength(50); + subtitleTextBox.setVisibleLength(40); copyrightTextBox = createTextBox(null); - copyrightTextBox.setVisibleLength(50); + copyrightTextBox.setVisibleLength(40); widthInPxBox = createIntegerBox(null, 10); + widthInPxBox.setEnabled(false); heightInPxBox = createIntegerBox(null, 10); + heightInPxBox.setEnabled(false); List tags = new ArrayList<>(); if(initialTag != null && !initialTag.isEmpty()) { tags.add(initialTag); } tagsListEditor.setValue(tags); + image = null; } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageDialog.java index 308be6cbf77..2e6cf340e76 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageDialog.java @@ -5,20 +5,25 @@ import java.util.Collections; import java.util.Date; import java.util.List; -import com.google.gwt.dom.client.Style.Position; -import com.google.gwt.dom.client.Style.Visibility; +import com.google.gwt.dom.client.Style.BorderStyle; +import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.LoadEvent; import com.google.gwt.event.dom.client.LoadHandler; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.user.client.ui.Grid; +import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.media.MediaConstants; +import com.sap.sse.common.Util; +import com.sap.sse.common.Util.Pair; +import com.sap.sse.common.media.MediaTagConstants; import com.sap.sse.gwt.adminconsole.URLFieldWithFileUpload; import com.sap.sse.gwt.client.IconResources; import com.sap.sse.gwt.client.controls.IntegerBox; @@ -37,9 +42,9 @@ public abstract class ImageDialog extends DataEntryDialog { protected IntegerBox widthInPxBox; protected IntegerBox heightInPxBox; protected StringListInlineEditorComposite tagsListEditor; - - final Image image; - + protected Image image; + protected SimplePanel imageHolder; + protected static class ImageParameterValidator implements Validator { private StringMessages stringMessages; @@ -50,12 +55,39 @@ public abstract class ImageDialog extends DataEntryDialog { @Override public String getErrorMessage(ImageDTO imageToValidate) { String errorMessage = null; + Integer imageWidth = imageToValidate.getWidthInPx(); + Integer imageHeight = imageToValidate.getHeightInPx(); if(imageToValidate.getSourceRef() == null || imageToValidate.getSourceRef().isEmpty()) { errorMessage = stringMessages.pleaseEnterNonEmptyUrl(); + } else if(imageWidth == null || imageHeight == null) { + errorMessage = "The width and height of the image could not retrieved yet."; + } else if(imageToValidate.hasTag(MediaTagConstants.LOGO) && !isValidSize(imageWidth, imageHeight, MediaConstants.MIN_LOGO_IMAGE_WIDTH, + MediaConstants.MAX_LOGO_IMAGE_WIDTH, MediaConstants.MIN_LOGO_IMAGE_HEIGHT, MediaConstants.MAX_LOGO_IMAGE_HEIGHT)) { + errorMessage = getSizeErrorMessage("Logo", MediaConstants.MIN_LOGO_IMAGE_WIDTH, + MediaConstants.MAX_LOGO_IMAGE_WIDTH, MediaConstants.MIN_LOGO_IMAGE_HEIGHT, MediaConstants.MAX_LOGO_IMAGE_HEIGHT); + } else if(imageToValidate.hasTag(MediaTagConstants.TEASER) && !isValidSize(imageWidth, imageHeight, MediaConstants.MIN_EVENTTEASER_IMAGE_WIDTH, + MediaConstants.MAX_EVENTTEASER_IMAGE_WIDTH, MediaConstants.MIN_EVENTTEASER_IMAGE_HEIGHT, MediaConstants.MAX_EVENTTEASER_IMAGE_HEIGHT)) { + errorMessage = getSizeErrorMessage("Event-Teaser", MediaConstants.MIN_EVENTTEASER_IMAGE_WIDTH, + MediaConstants.MAX_EVENTTEASER_IMAGE_WIDTH, MediaConstants.MIN_EVENTTEASER_IMAGE_HEIGHT, MediaConstants.MAX_EVENTTEASER_IMAGE_HEIGHT); + } else if(imageToValidate.hasTag(MediaTagConstants.STAGE) && !isValidSize(imageWidth, imageHeight, MediaConstants.MIN_STAGE_IMAGE_WIDTH, + MediaConstants.MAX_STAGE_IMAGE_WIDTH, MediaConstants.MIN_STAGE_IMAGE_HEIGHT, MediaConstants.MAX_STAGE_IMAGE_HEIGHT)) { + errorMessage = getSizeErrorMessage("Stage", MediaConstants.MIN_STAGE_IMAGE_WIDTH, + MediaConstants.MAX_STAGE_IMAGE_WIDTH, MediaConstants.MIN_STAGE_IMAGE_HEIGHT, MediaConstants.MAX_STAGE_IMAGE_HEIGHT); } return errorMessage; } + + private boolean isValidSize(int width, int height, int minWidth, int maxWidth, int minHeight, int maxHeight) { + return width >= minWidth && width <= maxWidth && height >= minHeight && height <= maxHeight; + } + + private String getSizeErrorMessage(String imageType, int minWidth, int maxWidth, int minHeight, int maxHeight) { + String errorMessage = "The size of the " + imageType + " image does not fit. "; + errorMessage += "The width should be between " + minWidth + " and " + maxWidth + " px "; + errorMessage += " and the height between " + minHeight + " and " + maxHeight + " px."; + return errorMessage; + } } public ImageDialog(Date creationDate, ImageParameterValidator validator, StringMessages stringMessages, DialogCallback callback) { @@ -64,36 +96,25 @@ public abstract class ImageDialog extends DataEntryDialog { this.stringMessages = stringMessages; this.creationDate = creationDate; getDialogBox().getWidget().setWidth("730px"); - - image = new Image(); - image.addLoadHandler(new LoadHandler() { - @Override - public void onLoad(LoadEvent event) { - int width = image.getOffsetWidth(); - int height = image.getOffsetHeight(); - - if(width > 0 && height > 0) { - widthInPxBox.setValue(width); - heightInPxBox.setValue(height); - } - } - }); - image.getElement().getStyle().setPosition(Position.ABSOLUTE); - image.getElement().getStyle().setVisibility(Visibility.HIDDEN); + + imageHolder = new SimplePanel(); imageURLAndUploadComposite = new URLFieldWithFileUpload(stringMessages); imageURLAndUploadComposite.addValueChangeHandler(new ValueChangeHandler() { @Override public void onValueChange(ValueChangeEvent event) { + image = loadImageFromURL(event.getValue()); + imageHolder.setWidget(image); + image.getElement().getStyle().setBorderWidth(1, Unit.PX); + image.getElement().getStyle().setBorderStyle(BorderStyle.SOLID); + image.getElement().getStyle().setBorderColor("#cccccc"); validate(); - image.setUrl(event.getValue()); } }); - tagsListEditor = new StringListInlineEditorComposite(Collections. emptyList(), new StringListInlineEditorComposite.ExpandedUi(stringMessages, IconResources.INSTANCE.removeIcon(), /* suggestValues */ - MediaConstants.imageTagSuggestions, "Enter tags for the image", 50)); + MediaConstants.imageTagSuggestions, "Enter tags for the image", 30)); } @Override @@ -122,27 +143,38 @@ public abstract class ImageDialog extends DataEntryDialog { panel.add(additionalWidget); } - Grid formGrid = new Grid(8, 2); - panel.add(formGrid); + HorizontalPanel hPanel = new HorizontalPanel(); + + Grid grid1 = new Grid(2, 2); + Grid grid2 = new Grid(6, 2); + Grid grid3 = new Grid(1, 2); - formGrid.setWidget(0, 0, new Label("Created at:")); - formGrid.setWidget(0, 1, createdAtLabel); - formGrid.setWidget(1, 0, new Label("Image URL:")); - formGrid.setWidget(1, 1, imageURLAndUploadComposite); - formGrid.setWidget(2, 0, new Label(stringMessages.title() + ":")); - formGrid.setWidget(2, 1, titleTextBox); - formGrid.setWidget(3, 0, new Label("Subtitle:")); - formGrid.setWidget(3, 1, subtitleTextBox); - formGrid.setWidget(4, 0, new Label("Copyright:")); - formGrid.setWidget(4, 1, copyrightTextBox); - formGrid.setWidget(5, 0, new Label("Width in px:")); - formGrid.setWidget(5, 1, widthInPxBox); - formGrid.setWidget(6, 0, new Label("Height in px:")); - formGrid.setWidget(6, 1, heightInPxBox); - formGrid.setWidget(7, 0, new Label("Tags:")); - formGrid.setWidget(7, 1, tagsListEditor); + grid1.setWidget(0, 0, new Label("Created at:")); + grid1.setWidget(0, 1, createdAtLabel); + grid1.setWidget(1, 0, new Label("Image URL:")); + grid1.setWidget(1, 1, imageURLAndUploadComposite); - panel.add(image); + grid2.setWidget(0, 0, new Label(stringMessages.title() + ":")); + grid2.setWidget(0, 1, titleTextBox); + grid2.setWidget(1, 0, new Label("Subtitle:")); + grid2.setWidget(1, 1, subtitleTextBox); + grid2.setWidget(2, 0, new Label("Copyright:")); + grid2.setWidget(2, 1, copyrightTextBox); + grid2.setWidget(3, 0, new Label("Width in px:")); + grid2.setWidget(3, 1, widthInPxBox); + grid2.setWidget(4, 0, new Label("Height in px:")); + grid2.setWidget(4, 1, heightInPxBox); + + grid3.setWidget(0, 0, new Label("Tags:")); + grid3.setWidget(0, 1, tagsListEditor); + + panel.add(grid1); + hPanel.add(grid2); + hPanel.add(imageHolder); + hPanel.setCellWidth(grid1, "50%"); + hPanel.setCellWidth(imageHolder, "50%"); + panel.add(hPanel); + panel.add(grid3); return panel; } @@ -152,4 +184,35 @@ public abstract class ImageDialog extends DataEntryDialog { super.show(); imageURLAndUploadComposite.setFocus(true); } + + protected Image loadImageFromURL(String url) { + final int maxImageHolderWidth = 300; + final int maxImageHolderHeight = 300; + final Image image = new Image(url); + image.addLoadHandler(new LoadHandler() { + @Override + public void onLoad(LoadEvent event) { + int width = image.getOffsetWidth(); + int height = image.getOffsetHeight(); + if(width > 0 && height > 0) { + widthInPxBox.setValue(width); + heightInPxBox.setValue(height); + } + Pair fitToBox = fitSizeToBox(maxImageHolderWidth, maxImageHolderHeight, width, height, true); + image.setWidth(fitToBox.getA() + "px"); + image.setHeight(fitToBox.getB() + "px"); + validate(); + } + }); + return image; + } + + private Util.Pair fitSizeToBox(int boxWidth, int boxHeight, int imageWidth, int imageHeight, boolean neverScaleUp) { + double scale = Math.min((double) boxWidth / (double) imageWidth, (double) boxHeight / (double) imageHeight); + + int h = (int) (!neverScaleUp || scale < 1.0 ? scale * imageHeight : imageHeight); + int w = (int) (!neverScaleUp || scale < 1.0 ? scale * imageWidth : imageWidth); + + return new Util.Pair(w,h); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageEditDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageEditDialog.java index 0ccd2222467..260e2a3a40f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageEditDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageEditDialog.java @@ -8,20 +8,22 @@ import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sse.gwt.client.media.ImageDTO; public class ImageEditDialog extends ImageDialog { - public ImageEditDialog(ImageDTO image, StringMessages stringMessages, DialogCallback callback) { - super(image.getCreatedAtDate(), new ImageParameterValidator(stringMessages), stringMessages, callback); - createdAtLabel = new Label(image.getCreatedAtDate().toString()); - imageURLAndUploadComposite.setURL(image.getSourceRef()); - titleTextBox = createTextBox(image.getTitle()); - titleTextBox.setVisibleLength(50); - subtitleTextBox = createTextBox(image.getSubtitle()); - subtitleTextBox.setVisibleLength(50); - copyrightTextBox = createTextBox(image.getCopyright()); - copyrightTextBox.setVisibleLength(50); - widthInPxBox = createIntegerBox(image.getWidthInPx(), 10); - heightInPxBox = createIntegerBox(image.getHeightInPx(), 10); + public ImageEditDialog(ImageDTO imageDTO, StringMessages stringMessages, DialogCallback callback) { + super(imageDTO.getCreatedAtDate(), new ImageParameterValidator(stringMessages), stringMessages, callback); + createdAtLabel = new Label(imageDTO.getCreatedAtDate().toString()); + imageURLAndUploadComposite.setURL(imageDTO.getSourceRef()); + titleTextBox = createTextBox(imageDTO.getTitle()); + titleTextBox.setVisibleLength(40); + subtitleTextBox = createTextBox(imageDTO.getSubtitle()); + subtitleTextBox.setVisibleLength(40); + copyrightTextBox = createTextBox(imageDTO.getCopyright()); + copyrightTextBox.setVisibleLength(40); + widthInPxBox = createIntegerBox(imageDTO.getWidthInPx(), 10); + heightInPxBox = createIntegerBox(imageDTO.getHeightInPx(), 10); List tags = new ArrayList(); - tags.addAll(image.getTags()); + tags.addAll(imageDTO.getTags()); tagsListEditor.setValue(tags); + image = loadImageFromURL(imageDTO.getSourceRef()); + imageHolder.setWidget(image); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/MediaConstants.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/MediaConstants.java index 821118d5605..59efe71a29e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/MediaConstants.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/media/MediaConstants.java @@ -10,6 +10,24 @@ import com.sap.sse.common.media.MimeType; public final class MediaConstants { + // perfect fit would be 1440 x 580 + public static final int MIN_STAGE_IMAGE_WIDTH = 1440 / 2; + public static final int MAX_STAGE_IMAGE_WIDTH = 1440 * 2; + public static final int MIN_STAGE_IMAGE_HEIGHT = 580 / 2; + public static final int MAX_STAGE_IMAGE_HEIGHT = 580 * 2; + + // perfect fit would be 370 x 240 + public static final int MIN_EVENTTEASER_IMAGE_WIDTH = 370 / 2; + public static final int MAX_EVENTTEASER_IMAGE_WIDTH = 370 * 3; + public static final int MIN_EVENTTEASER_IMAGE_HEIGHT = 240 / 2; + public static final int MAX_EVENTTEASER_IMAGE_HEIGHT = 240 * 3; + + // perfect fit would be 140 x 140 + public static final int MIN_LOGO_IMAGE_WIDTH = 140 / 2; + public static final int MAX_LOGO_IMAGE_WIDTH = 140 * 4; + public static final int MIN_LOGO_IMAGE_HEIGHT = 140 / 2; + public static final int MAX_LOGO_IMAGE_HEIGHT = 140 * 4; + public static final List imageTagSuggestions = Arrays.asList(new String[] { MediaTagConstants.STAGE, MediaTagConstants.TEASER, MediaTagConstants.SPONSOR, MediaTagConstants.LOGO, MediaTagConstants.GALLERY }); public static final List videoTagSuggestions = Arrays.asList(new String[] { MediaTagConstants.LIVESTREAM, MediaTagConstants.HIGHLIGHT, MediaTagConstants.FEATURED, MediaTagConstants.STAGE }); From 45760666e30c9dce615f8ee06276e2c40174fde9 Mon Sep 17 00:00:00 2001 From: fmittag Date: Fri, 9 Oct 2015 15:47:29 +0200 Subject: [PATCH 504/504] image size should never be edited manually --- .../com/sap/sailing/gwt/ui/adminconsole/ImageEditDialog.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageEditDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageEditDialog.java index 260e2a3a40f..735409c1e1c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageEditDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ImageEditDialog.java @@ -19,7 +19,9 @@ public class ImageEditDialog extends ImageDialog { copyrightTextBox = createTextBox(imageDTO.getCopyright()); copyrightTextBox.setVisibleLength(40); widthInPxBox = createIntegerBox(imageDTO.getWidthInPx(), 10); + widthInPxBox.setEnabled(false); heightInPxBox = createIntegerBox(imageDTO.getHeightInPx(), 10); + heightInPxBox.setEnabled(false); List tags = new ArrayList(); tags.addAll(imageDTO.getTags()); tagsListEditor.setValue(tags);