LOCATIONS = STOPS
diff --git a/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/TestStopConsolidationModel.java b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/TestStopConsolidationModel.java
index 193eddf9690..f763b520f5b 100644
--- a/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/TestStopConsolidationModel.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/stopconsolidation/TestStopConsolidationModel.java
@@ -46,8 +46,8 @@ class TestStopConsolidationModel {
.build();
static TimetableRepository buildTimetableRepository() {
- var stopModelBuilder = testModel.stopModelBuilder();
- List.of(STOP_A, STOP_B, STOP_C, STOP_D).forEach(stopModelBuilder::withRegularStop);
- return new TimetableRepository(stopModelBuilder.build(), new Deduplicator());
+ var siteRepositoryBuilder = testModel.siteRepositoryBuilder();
+ List.of(STOP_A, STOP_B, STOP_C, STOP_D).forEach(siteRepositoryBuilder::withRegularStop);
+ return new TimetableRepository(siteRepositoryBuilder.build(), new Deduplicator());
}
}
diff --git a/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapperTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapperTest.java
index 7d14d11785c..a33a8b55286 100644
--- a/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapperTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopPropertyMapperTest.java
@@ -9,12 +9,12 @@
import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.site.AreaStop;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
class AreaStopPropertyMapperTest {
private static final TimetableRepositoryForTest MODEL = new TimetableRepositoryForTest(
- StopModel.of()
+ SiteRepository.of()
);
private static final AreaStop STOP = MODEL.areaStop("123").build();
private static final Route ROUTE_WITH_COLOR = TimetableRepositoryForTest
diff --git a/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilderTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilderTest.java
index 7cfab197cf1..cf5683b49b5 100644
--- a/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilderTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/areastops/AreaStopsLayerBuilderTest.java
@@ -15,8 +15,8 @@
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.site.AreaStop;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
import org.opentripplanner.transit.service.TimetableRepository;
class AreaStopsLayerBuilderTest {
@@ -46,16 +46,16 @@ class AreaStopsLayerBuilderTest {
.layers()
.getFirst();
- private final StopModelBuilder stopModelBuilder = StopModel.of();
+ private final SiteRepositoryBuilder siteRepositoryBuilder = SiteRepository.of();
- private final AreaStop AREA_STOP = stopModelBuilder
+ private final AreaStop AREA_STOP = siteRepositoryBuilder
.areaStop(ID)
.withName(NAME)
.withGeometry(Polygons.BERLIN)
.build();
private final TimetableRepository timetableRepository = new TimetableRepository(
- stopModelBuilder.withAreaStop(AREA_STOP).build(),
+ siteRepositoryBuilder.withAreaStop(AREA_STOP).build(),
new Deduplicator()
);
diff --git a/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapperTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapperTest.java
index 2f37afc76be..f3b1c9e2126 100644
--- a/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapperTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stations/DigitransitStationPropertyMapperTest.java
@@ -12,7 +12,7 @@
import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.site.Station;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
public class DigitransitStationPropertyMapperTest {
@@ -20,7 +20,7 @@ public class DigitransitStationPropertyMapperTest {
@Test
void map() {
var deduplicator = new Deduplicator();
- var timetableRepository = new TimetableRepository(new StopModel(), deduplicator);
+ var timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
timetableRepository.index();
var transitService = new TestTransitService(timetableRepository);
diff --git a/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/RealtimeStopsLayerTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/RealtimeStopsLayerTest.java
index 867903c410a..6723034f2a7 100644
--- a/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/RealtimeStopsLayerTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/RealtimeStopsLayerTest.java
@@ -27,7 +27,7 @@
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
public class RealtimeStopsLayerTest {
@@ -40,7 +40,7 @@ public void setUp() {
var name = I18NString.of("name");
var desc = I18NString.of("desc");
stop =
- StopModel
+ SiteRepository
.of()
.regularStop(new FeedScopedId("F", "name"))
.withName(name)
@@ -49,7 +49,7 @@ public void setUp() {
.withTimeZone(ZoneIds.HELSINKI)
.build();
stop2 =
- StopModel
+ SiteRepository
.of()
.regularStop(new FeedScopedId("F", "name"))
.withName(name)
@@ -62,7 +62,7 @@ public void setUp() {
@Test
void realtimeStopLayer() {
var deduplicator = new Deduplicator();
- var timetableRepository = new TimetableRepository(new StopModel(), deduplicator);
+ var timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
timetableRepository.initTimeZone(ZoneIds.HELSINKI);
timetableRepository.index();
var transitService = new DefaultTransitService(timetableRepository) {
diff --git a/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerTest.java b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerTest.java
index 046c5839db0..d5d12576a1a 100644
--- a/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerTest.java
+++ b/application/src/ext-test/java/org/opentripplanner/ext/vectortiles/layers/stops/StopsLayerTest.java
@@ -16,7 +16,7 @@
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.Station;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
public class StopsLayerTest {
@@ -47,7 +47,7 @@ public class StopsLayerTest {
.withCoordinate(WgsCoordinate.GREENWICH)
.withName(I18NString.of("A Station"))
.build();
- private static final RegularStop STOP = StopModel
+ private static final RegularStop STOP = SiteRepository
.of()
.regularStop(new FeedScopedId("F", "name"))
.withName(NAME_TRANSLATIONS)
@@ -59,7 +59,7 @@ public class StopsLayerTest {
@Test
public void digitransitStopPropertyMapperTest() {
var deduplicator = new Deduplicator();
- var timetableRepository = new TimetableRepository(new StopModel(), deduplicator);
+ var timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
timetableRepository.index();
var transitService = new TestTransitService(timetableRepository);
@@ -81,7 +81,7 @@ public void digitransitStopPropertyMapperTest() {
@Test
public void digitransitStopPropertyMapperTranslationTest() {
var deduplicator = new Deduplicator();
- var timetableRepository = new TimetableRepository(new StopModel(), deduplicator);
+ var timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
timetableRepository.index();
var transitService = new DefaultTransitService(timetableRepository);
diff --git a/application/src/ext/java/org/opentripplanner/ext/datastore/gs/package-info.java b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/package-info.java
deleted file mode 100644
index 82ebac6c832..00000000000
--- a/application/src/ext/java/org/opentripplanner/ext/datastore/gs/package-info.java
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Add support for Google Cloud Storage, getting all input files and storing the graph.obj in the
- * cloud.
- *
- * This implementation will use the existing {@link org.opentripplanner.standalone.config.OtpConfigLoader}
- * to load config from the local disk.
- */
-package org.opentripplanner.ext.datastore.gs;
diff --git a/application/src/ext/java/org/opentripplanner/ext/datastore/gs/package-info.md b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/package-info.md
new file mode 100644
index 00000000000..22ae44bb3e3
--- /dev/null
+++ b/application/src/ext/java/org/opentripplanner/ext/datastore/gs/package-info.md
@@ -0,0 +1,6 @@
+# Google cloud storage integration
+
+Add support for Google Cloud Storage, getting all input files and storing the graph.obj in the
+cloud.
+
+This implementation will use the existing OtpConfigLoader to load config from the local disk.
diff --git a/application/src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedTransitLeg.java b/application/src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedTransitLeg.java
index ce838480186..d3608ccf8d9 100644
--- a/application/src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedTransitLeg.java
+++ b/application/src/ext/java/org/opentripplanner/ext/fares/impl/CombinedInterlinedTransitLeg.java
@@ -5,6 +5,7 @@
import java.time.ZonedDateTime;
import java.util.List;
import java.util.Set;
+import javax.annotation.Nullable;
import org.locationtech.jts.geom.LineString;
import org.opentripplanner.framework.collection.ListUtils;
import org.opentripplanner.model.fare.FareProductUse;
@@ -94,6 +95,7 @@ public List getIntermediateStops() {
}
@Override
+ @Nullable
public LineString getLegGeometry() {
return null;
}
diff --git a/application/src/ext/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapper.java b/application/src/ext/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapper.java
index be237236700..796971a43b5 100644
--- a/application/src/ext/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapper.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/AreaStopsToVerticesMapper.java
@@ -17,7 +17,7 @@
import org.slf4j.LoggerFactory;
/**
- * Iterates over all area stops in the stop model and adds them to vertices that are suitable for
+ * Iterates over all area stops in the stop and adds them to vertices that are suitable for
* boarding flex trips.
*/
public class AreaStopsToVerticesMapper implements GraphBuilderModule {
@@ -36,21 +36,21 @@ public AreaStopsToVerticesMapper(Graph graph, TimetableRepository timetableRepos
@Override
@SuppressWarnings("Convert2MethodRef")
public void buildGraph() {
- if (!timetableRepository.getStopModel().hasAreaStops()) {
+ if (!timetableRepository.getSiteRepository().hasAreaStops()) {
return;
}
- StreetIndex streetIndex = graph.getStreetIndexSafe(timetableRepository.getStopModel());
+ StreetIndex streetIndex = graph.getStreetIndexSafe(timetableRepository.getSiteRepository());
ProgressTracker progress = ProgressTracker.track(
"Add flex locations to street vertices",
1,
- timetableRepository.getStopModel().listAreaStops().size()
+ timetableRepository.getSiteRepository().listAreaStops().size()
);
LOG.info(progress.startMessage());
var results = timetableRepository
- .getStopModel()
+ .getSiteRepository()
.listAreaStops()
.parallelStream()
.flatMap(areaStop -> {
diff --git a/application/src/ext/java/org/opentripplanner/ext/flex/FlexibleTransitLeg.java b/application/src/ext/java/org/opentripplanner/ext/flex/FlexibleTransitLeg.java
index 24f996ca5fe..cf6c229c46f 100644
--- a/application/src/ext/java/org/opentripplanner/ext/flex/FlexibleTransitLeg.java
+++ b/application/src/ext/java/org/opentripplanner/ext/flex/FlexibleTransitLeg.java
@@ -6,6 +6,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import javax.annotation.Nullable;
import org.locationtech.jts.geom.LineString;
import org.opentripplanner.ext.flex.edgetype.FlexTripEdge;
import org.opentripplanner.framework.i18n.I18NString;
@@ -65,6 +66,7 @@ public Agency getAgency() {
}
@Override
+ @Nullable
public Operator getOperator() {
return getTrip().getOperator();
}
diff --git a/application/src/ext/java/org/opentripplanner/ext/parkAndRideApi/ParkAndRideResource.java b/application/src/ext/java/org/opentripplanner/ext/parkAndRideApi/ParkAndRideResource.java
index 4a577433bfe..6529fc4234d 100644
--- a/application/src/ext/java/org/opentripplanner/ext/parkAndRideApi/ParkAndRideResource.java
+++ b/application/src/ext/java/org/opentripplanner/ext/parkAndRideApi/ParkAndRideResource.java
@@ -40,7 +40,7 @@ public ParkAndRideResource(
// TODO OTP2 - Why are we using the DirectGraphFinder here, not just
// - serverContext.graphFinder(). This needs at least a comment!
- // - This can be replaced with a search done with the StopModel
+ // - This can be replaced with a search done with the SiteRepository
// - if we have a radius search there.
this.graphFinder = new DirectGraphFinder(serverContext.transitService()::findRegularStops);
}
diff --git a/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiLeg.java b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiLeg.java
index 7bbd83f7c2d..075038d441e 100644
--- a/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiLeg.java
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/model/ApiLeg.java
@@ -98,7 +98,7 @@ public class ApiLeg {
/**
* For transit legs, the type of the route. Non transit -1 When 0-7: 0 Tram, 1 Subway, 2 Train, 3
- * Bus, 4 Ferry, 5 Cable Car, 6 Gondola, 7 Funicular When equal or highter than 100, it is coded
+ * Bus, 4 Ferry, 5 Cable Tram, 6 Gondola, 7 Funicular When equal or highter than 100, it is coded
* using the Hierarchical Vehicle Type (HVT) codes from the European TPEG standard Also see
* http://groups.google.com/group/gtfs-changes/msg/ed917a69cf8c5bef
*/
diff --git a/application/src/ext/java/org/opentripplanner/ext/restapi/resources/package-info.java b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/package-info.java
deleted file mode 100644
index 7b66666ee5d..00000000000
--- a/application/src/ext/java/org/opentripplanner/ext/restapi/resources/package-info.java
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * This package contains the JAX-RS-annotated REST resource classes for the OpenTripPlanner public
- * API, i.e. the Jersey REST endpoints.
- */
-package org.opentripplanner.ext.restapi.resources;
diff --git a/application/src/ext/java/org/opentripplanner/ext/restapi/resources/package-info.md b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/package-info.md
new file mode 100644
index 00000000000..a4bb7eb6f4f
--- /dev/null
+++ b/application/src/ext/java/org/opentripplanner/ext/restapi/resources/package-info.md
@@ -0,0 +1,4 @@
+# JAX-RS-annotated REST resource classes
+
+This package contains the JAX-RS-annotated REST resource classes for the OpenTripPlanner public
+API, i.e. the Jersey REST endpoints.
diff --git a/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationService.java b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationService.java
index d4f148d9ec6..8e6f31fb6fe 100644
--- a/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationService.java
+++ b/application/src/ext/java/org/opentripplanner/ext/stopconsolidation/internal/DefaultStopConsolidationService.java
@@ -37,7 +37,7 @@ public List replacements() {
.groups()
.stream()
.flatMap(group -> {
- var primaryStop = timetableRepository.getStopModel().getRegularStop(group.primary());
+ var primaryStop = timetableRepository.getSiteRepository().getRegularStop(group.primary());
if (primaryStop == null) {
LOG.error(
"Could not find primary stop with id {}. Ignoring stop group {}.",
@@ -98,7 +98,7 @@ private Optional findAgencySpecificStop(StopLocation stop, Agency
.flatMap(g -> g.secondaries().stream())
.filter(secondary -> secondary.getFeedId().equals(agency.getId().getFeedId()))
.findAny()
- .map(id -> timetableRepository.getStopModel().getRegularStop(id));
+ .map(id -> timetableRepository.getSiteRepository().getRegularStop(id));
}
@Override
@@ -110,6 +110,6 @@ public Optional primaryStop(FeedScopedId id) {
.map(ConsolidatedStopGroup::primary)
.findAny()
.orElse(id);
- return Optional.ofNullable(timetableRepository.getStopModel().getRegularStop(primaryId));
+ return Optional.ofNullable(timetableRepository.getSiteRepository().getRegularStop(primaryId));
}
}
diff --git a/application/src/ext/java/org/opentripplanner/ext/transferanalyzer/DirectTransferAnalyzer.java b/application/src/ext/java/org/opentripplanner/ext/transferanalyzer/DirectTransferAnalyzer.java
index 701ff702a32..61cd9a0789b 100644
--- a/application/src/ext/java/org/opentripplanner/ext/transferanalyzer/DirectTransferAnalyzer.java
+++ b/application/src/ext/java/org/opentripplanner/ext/transferanalyzer/DirectTransferAnalyzer.java
@@ -68,7 +68,7 @@ public void buildGraph() {
List directTransfersNotFound = new ArrayList<>();
DirectGraphFinder nearbyStopFinderEuclidian = new DirectGraphFinder(
- timetableRepository.getStopModel()::findRegularStops
+ timetableRepository.getSiteRepository()::findRegularStops
);
StreetGraphFinder nearbyStopFinderStreets = new StreetGraphFinder(graph);
diff --git a/application/src/main/java/org/opentripplanner/api/parameter/package-info.java b/application/src/main/java/org/opentripplanner/api/parameter/package-info.java
deleted file mode 100644
index ed9df0c1f61..00000000000
--- a/application/src/main/java/org/opentripplanner/api/parameter/package-info.java
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * This package contains classes which interpret incoming HTTP query parameters. Query parameters
- * arrive as Strings, and Jersey will automatically call constructors with a single String
- * argument.
- */
-package org.opentripplanner.api.parameter;
diff --git a/application/src/main/java/org/opentripplanner/api/parameter/package-info.md b/application/src/main/java/org/opentripplanner/api/parameter/package-info.md
new file mode 100644
index 00000000000..75c928773f9
--- /dev/null
+++ b/application/src/main/java/org/opentripplanner/api/parameter/package-info.md
@@ -0,0 +1,5 @@
+# HTTP query parameters
+
+This package contains classes which interpret incoming HTTP query parameters. Query parameters
+arrive as Strings, and Jersey will automatically call constructors with a single String
+argument.
diff --git a/application/src/main/java/org/opentripplanner/apis/gtfs/generated/GraphQLTypes.java b/application/src/main/java/org/opentripplanner/apis/gtfs/generated/GraphQLTypes.java
index 3cd98b15652..e4ecd2be02a 100644
--- a/application/src/main/java/org/opentripplanner/apis/gtfs/generated/GraphQLTypes.java
+++ b/application/src/main/java/org/opentripplanner/apis/gtfs/generated/GraphQLTypes.java
@@ -972,24 +972,34 @@ public static class GraphQLInputModeWeightInput {
private Double AIRPLANE;
private Double BUS;
private Double CABLE_CAR;
+ private Double CARPOOL;
+ private Double COACH;
private Double FERRY;
private Double FUNICULAR;
private Double GONDOLA;
+ private Double MONORAIL;
private Double RAIL;
private Double SUBWAY;
+ private Double TAXI;
private Double TRAM;
+ private Double TROLLEYBUS;
public GraphQLInputModeWeightInput(Map args) {
if (args != null) {
this.AIRPLANE = (Double) args.get("AIRPLANE");
this.BUS = (Double) args.get("BUS");
this.CABLE_CAR = (Double) args.get("CABLE_CAR");
+ this.CARPOOL = (Double) args.get("CARPOOL");
+ this.COACH = (Double) args.get("COACH");
this.FERRY = (Double) args.get("FERRY");
this.FUNICULAR = (Double) args.get("FUNICULAR");
this.GONDOLA = (Double) args.get("GONDOLA");
+ this.MONORAIL = (Double) args.get("MONORAIL");
this.RAIL = (Double) args.get("RAIL");
this.SUBWAY = (Double) args.get("SUBWAY");
+ this.TAXI = (Double) args.get("TAXI");
this.TRAM = (Double) args.get("TRAM");
+ this.TROLLEYBUS = (Double) args.get("TROLLEYBUS");
}
}
@@ -1005,6 +1015,14 @@ public Double getGraphQLCable_Car() {
return this.CABLE_CAR;
}
+ public Double getGraphQLCarpool() {
+ return this.CARPOOL;
+ }
+
+ public Double getGraphQLCoach() {
+ return this.COACH;
+ }
+
public Double getGraphQLFerry() {
return this.FERRY;
}
@@ -1017,6 +1035,10 @@ public Double getGraphQLGondola() {
return this.GONDOLA;
}
+ public Double getGraphQLMonorail() {
+ return this.MONORAIL;
+ }
+
public Double getGraphQLRail() {
return this.RAIL;
}
@@ -1025,10 +1047,18 @@ public Double getGraphQLSubway() {
return this.SUBWAY;
}
+ public Double getGraphQLTaxi() {
+ return this.TAXI;
+ }
+
public Double getGraphQLTram() {
return this.TRAM;
}
+ public Double getGraphQLTrolleybus() {
+ return this.TROLLEYBUS;
+ }
+
public void setGraphQLAirplane(Double AIRPLANE) {
this.AIRPLANE = AIRPLANE;
}
@@ -1041,6 +1071,14 @@ public void setGraphQLCable_Car(Double CABLE_CAR) {
this.CABLE_CAR = CABLE_CAR;
}
+ public void setGraphQLCarpool(Double CARPOOL) {
+ this.CARPOOL = CARPOOL;
+ }
+
+ public void setGraphQLCoach(Double COACH) {
+ this.COACH = COACH;
+ }
+
public void setGraphQLFerry(Double FERRY) {
this.FERRY = FERRY;
}
@@ -1053,6 +1091,10 @@ public void setGraphQLGondola(Double GONDOLA) {
this.GONDOLA = GONDOLA;
}
+ public void setGraphQLMonorail(Double MONORAIL) {
+ this.MONORAIL = MONORAIL;
+ }
+
public void setGraphQLRail(Double RAIL) {
this.RAIL = RAIL;
}
@@ -1061,9 +1103,17 @@ public void setGraphQLSubway(Double SUBWAY) {
this.SUBWAY = SUBWAY;
}
+ public void setGraphQLTaxi(Double TAXI) {
+ this.TAXI = TAXI;
+ }
+
public void setGraphQLTram(Double TRAM) {
this.TRAM = TRAM;
}
+
+ public void setGraphQLTrolleybus(Double TROLLEYBUS) {
+ this.TROLLEYBUS = TROLLEYBUS;
+ }
}
public static class GraphQLInputPreferredInput {
diff --git a/application/src/main/java/org/opentripplanner/apis/transmodel/model/EnumTypes.java b/application/src/main/java/org/opentripplanner/apis/transmodel/model/EnumTypes.java
index b325eac3653..2f8e69cc593 100644
--- a/application/src/main/java/org/opentripplanner/apis/transmodel/model/EnumTypes.java
+++ b/application/src/main/java/org/opentripplanner/apis/transmodel/model/EnumTypes.java
@@ -184,7 +184,7 @@ public class EnumTypes {
.value("air", TransitMode.AIRPLANE)
.value("bicycle", TraverseMode.BICYCLE)
.value("bus", TransitMode.BUS)
- .value("cableway", TransitMode.CABLE_CAR)
+ .value("cableway", TransitMode.GONDOLA)
.value("water", TransitMode.FERRY)
.value("funicular", TransitMode.FUNICULAR)
.value("lift", TransitMode.GONDOLA)
@@ -455,7 +455,7 @@ public class EnumTypes {
.name("TransportMode")
.value("air", TransitMode.AIRPLANE)
.value("bus", TransitMode.BUS)
- .value("cableway", TransitMode.CABLE_CAR)
+ .value("cableway", TransitMode.GONDOLA)
.value("water", TransitMode.FERRY)
.value("funicular", TransitMode.FUNICULAR)
.value("lift", TransitMode.GONDOLA)
diff --git a/application/src/main/java/org/opentripplanner/apis/transmodel/model/timetable/TripMetadataType.java b/application/src/main/java/org/opentripplanner/apis/transmodel/model/timetable/TripMetadataType.java
index fabae563047..4301b0721c2 100644
--- a/application/src/main/java/org/opentripplanner/apis/transmodel/model/timetable/TripMetadataType.java
+++ b/application/src/main/java/org/opentripplanner/apis/transmodel/model/timetable/TripMetadataType.java
@@ -26,7 +26,7 @@ public static GraphQLObjectType create(GraphQLScalarType dateTimeScalar) {
"override the value if it is too small or too large. When paging OTP adjusts " +
"it to the appropriate size, depending on the number of itineraries found in " +
"the current search window. The scaling of the search window ensures faster " +
- "paging and limits resource usage. The unit is seconds."
+ "paging and limits resource usage. The unit is minutes."
)
.type(new GraphQLNonNull(Scalars.GraphQLInt))
.dataFetcher(e -> ((TripSearchMetadata) e.getSource()).searchWindowUsed.toMinutes())
diff --git a/application/src/main/java/org/opentripplanner/framework/application/OTPRequestTimeoutException.java b/application/src/main/java/org/opentripplanner/framework/application/OTPRequestTimeoutException.java
index a8b0789d7c0..9d71314f153 100644
--- a/application/src/main/java/org/opentripplanner/framework/application/OTPRequestTimeoutException.java
+++ b/application/src/main/java/org/opentripplanner/framework/application/OTPRequestTimeoutException.java
@@ -18,10 +18,9 @@ public String getMessage() {
/**
* The Grizzly web server is configured with a transaction timeout and will set the interrupt
- * flag on the current thread. OTP does not have many blocking operations which check the
- * interrupted flag, so instead we need to do the check manually. The check has a small
- * performance overhead so try to place the check in the beginning of significantly big block of
- * calculations.
+ * flag on the current thread. OTP has few blocking operations which check the interrupted flag,
+ * so instead we need to do the check manually. The check has a small performance overhead, so
+ * try to place the check at the beginning of a significant calculations.
*/
public static void checkForTimeout() {
// We call yield() to allow monitoring thread to interrupt current thread. If this work or not
diff --git a/application/src/main/java/org/opentripplanner/framework/io/OtpHttpClient.java b/application/src/main/java/org/opentripplanner/framework/io/OtpHttpClient.java
index ebfeb3ff496..ccb88c3c74b 100644
--- a/application/src/main/java/org/opentripplanner/framework/io/OtpHttpClient.java
+++ b/application/src/main/java/org/opentripplanner/framework/io/OtpHttpClient.java
@@ -378,6 +378,7 @@ private static RequestConfig requestConfig(Duration timeout) {
.custom()
.setResponseTimeout(Timeout.of(timeout))
.setConnectionRequestTimeout(Timeout.of(timeout))
+ .setProtocolUpgradeEnabled(false)
.build();
}
diff --git a/application/src/main/java/org/opentripplanner/framework/io/OtpHttpClientFactory.java b/application/src/main/java/org/opentripplanner/framework/io/OtpHttpClientFactory.java
index a6436168541..8f7256f642f 100644
--- a/application/src/main/java/org/opentripplanner/framework/io/OtpHttpClientFactory.java
+++ b/application/src/main/java/org/opentripplanner/framework/io/OtpHttpClientFactory.java
@@ -132,6 +132,7 @@ private static RequestConfig requestConfig(Duration timeout) {
.custom()
.setResponseTimeout(Timeout.of(timeout))
.setConnectionRequestTimeout(Timeout.of(timeout))
+ .setProtocolUpgradeEnabled(false)
.build();
}
}
diff --git a/application/src/main/java/org/opentripplanner/graph_builder/GraphBuilder.java b/application/src/main/java/org/opentripplanner/graph_builder/GraphBuilder.java
index bd629da9468..f88cc6ea937 100644
--- a/application/src/main/java/org/opentripplanner/graph_builder/GraphBuilder.java
+++ b/application/src/main/java/org/opentripplanner/graph_builder/GraphBuilder.java
@@ -244,7 +244,7 @@ private static void logGraphBuilderCompleteStatus(
long endTime = System.currentTimeMillis();
String time = DurationUtils.durationToStr(Duration.ofMillis(endTime - startTime));
var f = new OtpNumberFormat();
- var nStops = f.formatNumber(timetableRepository.getStopModel().stopIndexSize());
+ var nStops = f.formatNumber(timetableRepository.getSiteRepository().stopIndexSize());
var nPatterns = f.formatNumber(timetableRepository.getAllTripPatterns().size());
var nTransfers = f.formatNumber(timetableRepository.getTransferService().listAll().size());
var nVertices = f.formatNumber(graph.countVertices());
diff --git a/application/src/main/java/org/opentripplanner/graph_builder/issues/package-info.java b/application/src/main/java/org/opentripplanner/graph_builder/issues/package-info.java
deleted file mode 100644
index db899fdd206..00000000000
--- a/application/src/main/java/org/opentripplanner/graph_builder/issues/package-info.java
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Graph builder data import issues represent errors or exceptional conditions encountered during
- * the graph building process. They contain descriptive messages and potentially references to the
- * objects in the graph that they annotate which facilitate visualization and cataloging/mapping of
- * problems.
- */
-package org.opentripplanner.graph_builder.issues;
diff --git a/application/src/main/java/org/opentripplanner/graph_builder/issues/package-info.md b/application/src/main/java/org/opentripplanner/graph_builder/issues/package-info.md
new file mode 100644
index 00000000000..424605d5240
--- /dev/null
+++ b/application/src/main/java/org/opentripplanner/graph_builder/issues/package-info.md
@@ -0,0 +1,6 @@
+# Graph building issues
+
+Graph builder data import issues represent errors or exceptional conditions encountered during
+the graph building process. They contain descriptive messages and potentially references to the
+objects in the graph that they annotate which facilitate visualization and cataloging/mapping of
+problems.
diff --git a/application/src/main/java/org/opentripplanner/graph_builder/module/AddTransitEntitiesToGraph.java b/application/src/main/java/org/opentripplanner/graph_builder/module/AddTransitEntitiesToGraph.java
index 7aa5d65bef1..1d335d7ff4f 100644
--- a/application/src/main/java/org/opentripplanner/graph_builder/module/AddTransitEntitiesToGraph.java
+++ b/application/src/main/java/org/opentripplanner/graph_builder/module/AddTransitEntitiesToGraph.java
@@ -83,7 +83,7 @@ public static void addToGraph(
}
private void applyToGraph(TimetableRepository timetableRepository) {
- timetableRepository.mergeStopModels(otpTransitService.stopModel());
+ timetableRepository.mergeSiteRepositories(otpTransitService.siteRepository());
addStopsToGraphAndGenerateStopVertexes(timetableRepository);
addEntrancesToGraph();
@@ -122,7 +122,7 @@ private void addStopsToGraphAndGenerateStopVertexes(TimetableRepository timetabl
// Add a vertex representing the stop.
// It is now possible for these vertices to not be connected to any edges.
- for (RegularStop stop : otpTransitService.stopModel().listRegularStops()) {
+ for (RegularStop stop : otpTransitService.siteRepository().listRegularStops()) {
Set modes = stopModeMap.get(stop);
TransitStopVertex stopVertex = vertexFactory.transitStop(
TransitStopVertex.of().withStop(stop).withModes(modes)
@@ -145,7 +145,7 @@ private void addEntrancesToGraph() {
}
private void addStationCentroidsToGraph() {
- for (Station station : otpTransitService.stopModel().listStations()) {
+ for (Station station : otpTransitService.siteRepository().listStations()) {
if (station.shouldRouteToCentroid()) {
vertexFactory.stationCentroid(station);
}
diff --git a/application/src/main/java/org/opentripplanner/graph_builder/module/OsmBoardingLocationsModule.java b/application/src/main/java/org/opentripplanner/graph_builder/module/OsmBoardingLocationsModule.java
index ba847b96eb9..c4acabefd6c 100644
--- a/application/src/main/java/org/opentripplanner/graph_builder/module/OsmBoardingLocationsModule.java
+++ b/application/src/main/java/org/opentripplanner/graph_builder/module/OsmBoardingLocationsModule.java
@@ -71,7 +71,7 @@ public OsmBoardingLocationsModule(Graph graph, TimetableRepository timetableRepo
public void buildGraph() {
LOG.info("Improving boarding locations by checking OSM entities...");
- StreetIndex streetIndex = graph.getStreetIndexSafe(timetableRepository.getStopModel());
+ StreetIndex streetIndex = graph.getStreetIndexSafe(timetableRepository.getSiteRepository());
this.linker = streetIndex.getVertexLinker();
int successes = 0;
diff --git a/application/src/main/java/org/opentripplanner/graph_builder/module/RouteToCentroidStationIdsValidator.java b/application/src/main/java/org/opentripplanner/graph_builder/module/RouteToCentroidStationIdsValidator.java
index 2b4a38da58a..f7d8664e590 100644
--- a/application/src/main/java/org/opentripplanner/graph_builder/module/RouteToCentroidStationIdsValidator.java
+++ b/application/src/main/java/org/opentripplanner/graph_builder/module/RouteToCentroidStationIdsValidator.java
@@ -26,7 +26,7 @@ public RouteToCentroidStationIdsValidator(
private void validate() {
var stationIds = timetableRepository
- .getStopModel()
+ .getSiteRepository()
.listStations()
.stream()
.map(AbstractTransitEntity::getId)
diff --git a/application/src/main/java/org/opentripplanner/graph_builder/module/StreetLinkerModule.java b/application/src/main/java/org/opentripplanner/graph_builder/module/StreetLinkerModule.java
index 59b6a8b48a0..32495617db9 100644
--- a/application/src/main/java/org/opentripplanner/graph_builder/module/StreetLinkerModule.java
+++ b/application/src/main/java/org/opentripplanner/graph_builder/module/StreetLinkerModule.java
@@ -67,7 +67,7 @@ public StreetLinkerModule(
@Override
public void buildGraph() {
timetableRepository.index();
- graph.index(timetableRepository.getStopModel());
+ graph.index(timetableRepository.getSiteRepository());
graph.getLinker().setAddExtraEdgesToAreas(this.addExtraEdgesToAreas);
if (graph.hasStreets) {
diff --git a/application/src/main/java/org/opentripplanner/graph_builder/module/geometry/CalculateWorldEnvelopeModule.java b/application/src/main/java/org/opentripplanner/graph_builder/module/geometry/CalculateWorldEnvelopeModule.java
index 151470e0c11..e114eb612e3 100644
--- a/application/src/main/java/org/opentripplanner/graph_builder/module/geometry/CalculateWorldEnvelopeModule.java
+++ b/application/src/main/java/org/opentripplanner/graph_builder/module/geometry/CalculateWorldEnvelopeModule.java
@@ -45,7 +45,7 @@ public CalculateWorldEnvelopeModule(
@Override
public void buildGraph() {
var vertices = graph.getVertices();
- var stops = timetableRepository.getStopModel().listStopLocations();
+ var stops = timetableRepository.getSiteRepository().listStopLocations();
WorldEnvelope envelope = build(vertices, stops);
worldEnvelopeRepository.saveEnvelope(envelope);
}
diff --git a/application/src/main/java/org/opentripplanner/graph_builder/module/islandpruning/PruneIslands.java b/application/src/main/java/org/opentripplanner/graph_builder/module/islandpruning/PruneIslands.java
index 6bb2bc83719..8bb3b3fbcd5 100644
--- a/application/src/main/java/org/opentripplanner/graph_builder/module/islandpruning/PruneIslands.java
+++ b/application/src/main/java/org/opentripplanner/graph_builder/module/islandpruning/PruneIslands.java
@@ -81,8 +81,8 @@ public void buildGraph() {
adaptivePruningDistance
);
- this.vertexLinker = graph.getLinkerSafe(timetableRepository.getStopModel());
- this.streetIndex = graph.getStreetIndexSafe(timetableRepository.getStopModel());
+ this.vertexLinker = graph.getLinkerSafe(timetableRepository.getSiteRepository());
+ this.streetIndex = graph.getStreetIndexSafe(timetableRepository.getSiteRepository());
pruneIslands(TraverseMode.BICYCLE);
pruneIslands(TraverseMode.WALK);
diff --git a/application/src/main/java/org/opentripplanner/gtfs/graphbuilder/GtfsModule.java b/application/src/main/java/org/opentripplanner/gtfs/graphbuilder/GtfsModule.java
index 59acabee819..39f88f13281 100644
--- a/application/src/main/java/org/opentripplanner/gtfs/graphbuilder/GtfsModule.java
+++ b/application/src/main/java/org/opentripplanner/gtfs/graphbuilder/GtfsModule.java
@@ -132,7 +132,7 @@ public void buildGraph() {
feedIdsEncountered.put(feedId, gtfsBundle);
GTFSToOtpTransitServiceMapper mapper = new GTFSToOtpTransitServiceMapper(
- new OtpTransitServiceBuilder(timetableRepository.getStopModel(), issueStore),
+ new OtpTransitServiceBuilder(timetableRepository.getSiteRepository(), issueStore),
feedId,
issueStore,
gtfsBundle.discardMinTransferTimes(),
diff --git a/application/src/main/java/org/opentripplanner/gtfs/mapping/GTFSToOtpTransitServiceMapper.java b/application/src/main/java/org/opentripplanner/gtfs/mapping/GTFSToOtpTransitServiceMapper.java
index b7aea1c2e2f..8e3718be4c6 100644
--- a/application/src/main/java/org/opentripplanner/gtfs/mapping/GTFSToOtpTransitServiceMapper.java
+++ b/application/src/main/java/org/opentripplanner/gtfs/mapping/GTFSToOtpTransitServiceMapper.java
@@ -105,12 +105,13 @@ public GTFSToOtpTransitServiceMapper(
feedInfoMapper = new FeedInfoMapper(feedId);
agencyMapper = new AgencyMapper(feedId);
stationMapper = new StationMapper(translationHelper, stationTransferPreference);
- stopMapper = new StopMapper(translationHelper, stationLookup, builder.stopModel());
+ stopMapper = new StopMapper(translationHelper, stationLookup, builder.siteRepository());
entranceMapper = new EntranceMapper(translationHelper, stationLookup);
pathwayNodeMapper = new PathwayNodeMapper(translationHelper, stationLookup);
boardingAreaMapper = new BoardingAreaMapper(translationHelper, stopLookup);
- locationMapper = new LocationMapper(builder.stopModel(), issueStore);
- locationGroupMapper = new LocationGroupMapper(stopMapper, locationMapper, builder.stopModel());
+ locationMapper = new LocationMapper(builder.siteRepository(), issueStore);
+ locationGroupMapper =
+ new LocationGroupMapper(stopMapper, locationMapper, builder.siteRepository());
pathwayMapper =
new PathwayMapper(stopMapper, entranceMapper, pathwayNodeMapper, boardingAreaMapper);
routeMapper = new RouteMapper(agencyMapper, issueStore, translationHelper);
@@ -142,7 +143,7 @@ public FareRulesData getFareRulesService() {
}
public void mapStopTripAndRouteDataIntoBuilder() {
- var stopModel = builder.stopModel();
+ var siteRepository = builder.siteRepository();
translationHelper.importTranslations(data.getAllTranslations(), data.getAllFeedInfos());
builder.getAgenciesById().addAll(agencyMapper.map(data.getAllAgencies()));
@@ -159,8 +160,8 @@ public void mapStopTripAndRouteDataIntoBuilder() {
if (OTPFeature.FlexRouting.isOn()) {
// Stop areas and Stop groups are only used in FLEX routes
- builder.stopModel().withAreaStops(locationMapper.map(data.getAllLocations()));
- builder.stopModel().withGroupStops(locationGroupMapper.map(data.getAllLocationGroups()));
+ builder.siteRepository().withAreaStops(locationMapper.map(data.getAllLocations()));
+ builder.siteRepository().withGroupStops(locationGroupMapper.map(data.getAllLocationGroups()));
}
builder.getPathways().addAll(pathwayMapper.map(data.getAllPathways()));
@@ -184,14 +185,14 @@ private void mapGtfsStopsToOtpTypes(Collection s
// Map station first, so we can link to them
for (org.onebusaway.gtfs.model.Stop it : stops) {
if (it.getLocationType() == LOCATION_TYPE_STATION) {
- builder.stopModel().withStation(stationMapper.map(it));
+ builder.siteRepository().withStation(stationMapper.map(it));
}
}
// Map Stop, Entrance and PathwayNode, link to station
for (org.onebusaway.gtfs.model.Stop it : stops) {
if (it.getLocationType() == LOCATION_TYPE_STOP) {
- builder.stopModel().withRegularStop(stopMapper.map(it));
+ builder.siteRepository().withRegularStop(stopMapper.map(it));
} else if (it.getLocationType() == LOCATION_TYPE_ENTRANCE_EXIT) {
builder.getEntrances().add(entranceMapper.map(it));
} else if (it.getLocationType() == LOCATION_TYPE_NODE) {
diff --git a/application/src/main/java/org/opentripplanner/gtfs/mapping/LocationGroupMapper.java b/application/src/main/java/org/opentripplanner/gtfs/mapping/LocationGroupMapper.java
index 591a59c492e..b4ba6d3cc27 100644
--- a/application/src/main/java/org/opentripplanner/gtfs/mapping/LocationGroupMapper.java
+++ b/application/src/main/java/org/opentripplanner/gtfs/mapping/LocationGroupMapper.java
@@ -13,24 +13,24 @@
import org.opentripplanner.framework.i18n.NonLocalizedString;
import org.opentripplanner.transit.model.site.GroupStop;
import org.opentripplanner.transit.model.site.GroupStopBuilder;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
public class LocationGroupMapper {
private final StopMapper stopMapper;
private final LocationMapper locationMapper;
- private final StopModelBuilder stopModelBuilder;
+ private final SiteRepositoryBuilder siteRepositoryBuilder;
private final Map mappedLocationGroups = new HashMap<>();
public LocationGroupMapper(
StopMapper stopMapper,
LocationMapper locationMapper,
- StopModelBuilder stopModelBuilder
+ SiteRepositoryBuilder siteRepositoryBuilder
) {
this.stopMapper = stopMapper;
this.locationMapper = locationMapper;
- this.stopModelBuilder = stopModelBuilder;
+ this.siteRepositoryBuilder = siteRepositoryBuilder;
}
Collection map(Collection allLocationGroups) {
@@ -43,7 +43,7 @@ GroupStop map(LocationGroup original) {
}
private GroupStop doMap(LocationGroup element) {
- GroupStopBuilder groupStopBuilder = stopModelBuilder
+ GroupStopBuilder groupStopBuilder = siteRepositoryBuilder
.groupStop(mapAgencyAndId(element.getId()))
.withName(new NonLocalizedString(element.getName()));
diff --git a/application/src/main/java/org/opentripplanner/gtfs/mapping/LocationMapper.java b/application/src/main/java/org/opentripplanner/gtfs/mapping/LocationMapper.java
index 79a28ac0f61..5a845b8bfe8 100644
--- a/application/src/main/java/org/opentripplanner/gtfs/mapping/LocationMapper.java
+++ b/application/src/main/java/org/opentripplanner/gtfs/mapping/LocationMapper.java
@@ -15,17 +15,20 @@
import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore;
import org.opentripplanner.graph_builder.issue.api.Issue;
import org.opentripplanner.transit.model.site.AreaStop;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
/** Responsible for mapping GTFS Location into the OTP model. */
public class LocationMapper {
private final Map mappedLocations = new HashMap<>();
- private final StopModelBuilder stopModelBuilder;
+ private final SiteRepositoryBuilder siteRepositoryBuilder;
private final DataImportIssueStore issueStore;
- public LocationMapper(StopModelBuilder stopModelBuilder, DataImportIssueStore issueStore) {
- this.stopModelBuilder = stopModelBuilder;
+ public LocationMapper(
+ SiteRepositoryBuilder siteRepositoryBuilder,
+ DataImportIssueStore issueStore
+ ) {
+ this.siteRepositoryBuilder = siteRepositoryBuilder;
this.issueStore = issueStore;
}
@@ -57,7 +60,7 @@ private AreaStop doMap(Location gtfsLocation) {
)
);
}
- return stopModelBuilder
+ return siteRepositoryBuilder
.areaStop(id)
.withName(name)
.withUrl(NonLocalizedString.ofNullable(gtfsLocation.getUrl()))
diff --git a/application/src/main/java/org/opentripplanner/gtfs/mapping/StopMapper.java b/application/src/main/java/org/opentripplanner/gtfs/mapping/StopMapper.java
index 2f7aef34312..4cbe252d68f 100644
--- a/application/src/main/java/org/opentripplanner/gtfs/mapping/StopMapper.java
+++ b/application/src/main/java/org/opentripplanner/gtfs/mapping/StopMapper.java
@@ -12,24 +12,24 @@
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.RegularStopBuilder;
import org.opentripplanner.transit.model.site.Station;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
/** Responsible for mapping GTFS Stop into the OTP model. */
class StopMapper {
private final Map mappedStops = new HashMap<>();
- private final StopModelBuilder stopModelBuilder;
+ private final SiteRepositoryBuilder siteRepositoryBuilder;
private final TranslationHelper translationHelper;
private final Function stationLookUp;
StopMapper(
TranslationHelper translationHelper,
Function stationLookUp,
- StopModelBuilder stopModelBuilder
+ SiteRepositoryBuilder siteRepositoryBuilder
) {
this.translationHelper = translationHelper;
this.stationLookUp = stationLookUp;
- this.stopModelBuilder = stopModelBuilder;
+ this.siteRepositoryBuilder = siteRepositoryBuilder;
}
Collection map(Collection allStops) {
@@ -44,7 +44,7 @@ RegularStop map(org.onebusaway.gtfs.model.Stop original) {
private RegularStop doMap(org.onebusaway.gtfs.model.Stop gtfsStop) {
assertLocationTypeIsStop(gtfsStop);
StopMappingWrapper base = new StopMappingWrapper(gtfsStop);
- RegularStopBuilder builder = stopModelBuilder
+ RegularStopBuilder builder = siteRepositoryBuilder
.regularStop(base.getId())
.withCode(base.getCode())
.withCoordinate(base.getCoordinate())
diff --git a/application/src/main/java/org/opentripplanner/gtfs/mapping/TransitModeMapper.java b/application/src/main/java/org/opentripplanner/gtfs/mapping/TransitModeMapper.java
index a96c42a5c12..1b5044e3530 100644
--- a/application/src/main/java/org/opentripplanner/gtfs/mapping/TransitModeMapper.java
+++ b/application/src/main/java/org/opentripplanner/gtfs/mapping/TransitModeMapper.java
@@ -17,7 +17,8 @@ public static TransitMode mapMode(int routeType) {
}
/* TPEG Extension https://groups.google.com/d/msg/gtfs-changes/keT5rTPS7Y0/71uMz2l6ke0J */
- if (routeType >= 100 && routeType < 200) { // Railway Service
+ if (routeType >= 100 && routeType < 200) {
+ // Railway Service
return TransitMode.RAIL;
} else if (routeType >= 200 && routeType < 300) { //Coach Service
return OTPFeature.GtfsCoach.isOn() ? TransitMode.COACH : TransitMode.BUS;
@@ -29,24 +30,32 @@ public static TransitMode mapMode(int routeType) {
return TransitMode.MONORAIL;
}
return TransitMode.RAIL;
- } else if (routeType >= 500 && routeType < 700) { //Metro Service and Underground Service
+ } else if (routeType >= 500 && routeType < 700) {
+ // Metro Service and Underground Service
return TransitMode.SUBWAY;
- } else if (routeType >= 700 && routeType < 900) { //Bus Service and Trolleybus service
- if (routeType == 800) {
- return TransitMode.TROLLEYBUS;
- }
+ } else if (routeType >= 700 && routeType < 800) {
+ // Bus Service
return TransitMode.BUS;
- } else if (routeType >= 900 && routeType < 1000) { //Tram service
+ } else if (routeType >= 800 && routeType < 900) {
+ // Trolleybus Service
+ return TransitMode.TROLLEYBUS;
+ } else if (routeType >= 900 && routeType < 1000) {
+ // Tram service
return TransitMode.TRAM;
- } else if (routeType >= 1000 && routeType < 1100) { //Water Transport Service
+ } else if (routeType >= 1000 && routeType < 1100) {
+ // Water Transport Service
return TransitMode.FERRY;
- } else if (routeType >= 1100 && routeType < 1200) { //Air Service
+ } else if (routeType >= 1100 && routeType < 1200) {
+ // Air Service
return TransitMode.AIRPLANE;
- } else if (routeType >= 1200 && routeType < 1300) { //Ferry Service
+ } else if (routeType >= 1200 && routeType < 1300) {
+ // Ferry Service
return TransitMode.FERRY;
- } else if (routeType >= 1300 && routeType < 1400) { //Telecabin Service
+ } else if (routeType >= 1300 && routeType < 1400) {
+ // Telecabin Service
return TransitMode.GONDOLA;
- } else if (routeType >= 1400 && routeType < 1500) { //Funicular Service
+ } else if (routeType >= 1400 && routeType < 1500) {
+ // Funicular Service
return TransitMode.FUNICULAR;
} else if (routeType >= 1551 && routeType < 1561) {
// Carpooling, not defined anywhere, so we've chosen this number space
@@ -54,11 +63,13 @@ public static TransitMode mapMode(int routeType) {
// standardise
return TransitMode.CARPOOL;
} else if (routeType >= 1500 && routeType < 1599) {
- //Taxi Service
+ // Taxi Service
return TransitMode.TAXI;
- } else if (routeType >= 1600 && routeType < 1700) { //Self drive
+ } else if (routeType >= 1600 && routeType < 1700) {
+ // Self drive
return TransitMode.BUS;
- } else if (routeType >= 1700 && routeType < 1800) { //Miscellaneous Service
+ } else if (routeType >= 1700 && routeType < 1800) {
+ // Miscellaneous Service
return null;
}
/* Original GTFS route types. Should these be checked before TPEG types? */
diff --git a/application/src/main/java/org/opentripplanner/model/OtpTransitService.java b/application/src/main/java/org/opentripplanner/model/OtpTransitService.java
index 91351af383d..748c44fa788 100644
--- a/application/src/main/java/org/opentripplanner/model/OtpTransitService.java
+++ b/application/src/main/java/org/opentripplanner/model/OtpTransitService.java
@@ -16,7 +16,7 @@
import org.opentripplanner.transit.model.site.Pathway;
import org.opentripplanner.transit.model.site.PathwayNode;
import org.opentripplanner.transit.model.timetable.Trip;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
/**
* Methods for accessing imported entities.
@@ -35,7 +35,7 @@ public interface OtpTransitService {
Collection getAllFeedInfos();
- StopModel stopModel();
+ SiteRepository siteRepository();
/**
* This is equivalent to a Transmodel Notice Assignments. The map key may reference entity ids of
diff --git a/application/src/main/java/org/opentripplanner/model/TimetableSnapshot.java b/application/src/main/java/org/opentripplanner/model/TimetableSnapshot.java
index f9d877a9640..fa8bb2e55e0 100644
--- a/application/src/main/java/org/opentripplanner/model/TimetableSnapshot.java
+++ b/application/src/main/java/org/opentripplanner/model/TimetableSnapshot.java
@@ -406,8 +406,13 @@ public void clear(String feedId) {
boolean newTripPatternsForModifiedTripsWereCleared = clearNewTripPatternsForModifiedTrips(
feedId
);
+ boolean addedTripPatternsWereCleared = clearEntriesForRealtimeAddedTrips(feedId);
// If this snapshot was modified, it will be dirty after the clear actions.
- if (timetablesWereCleared || newTripPatternsForModifiedTripsWereCleared) {
+ if (
+ timetablesWereCleared ||
+ newTripPatternsForModifiedTripsWereCleared ||
+ addedTripPatternsWereCleared
+ ) {
dirty = true;
}
}
@@ -552,7 +557,7 @@ private boolean clearTimetables(String feedId) {
}
/**
- * Clear all realtime added trip patterns matching the provided feed id.
+ * Clear new trip patterns for modified trips matching the provided feed id.
*
* @param feedId feed id to clear out
* @return true if the newTripPatternForModifiedTrip changed as a result of the call
@@ -563,6 +568,28 @@ private boolean clearNewTripPatternsForModifiedTrips(String feedId) {
.removeIf(tripIdAndServiceDate -> feedId.equals(tripIdAndServiceDate.tripId().getFeedId()));
}
+ /**
+ * Clear all realtime added routes, trip patterns and trips matching the provided feed id.
+ *
+ * */
+ private boolean clearEntriesForRealtimeAddedTrips(String feedId) {
+ // it is sufficient to test for the removal of added trips, since other indexed entities are
+ // added only if a new trip is added.
+ boolean removedEntry = realTimeAddedTrips
+ .keySet()
+ .removeIf(id -> feedId.equals(id.getFeedId()));
+ realTimeAddedPatternForTrip.keySet().removeIf(trip -> feedId.equals(trip.getId().getFeedId()));
+ realTimeAddedTripOnServiceDateForTripAndDay
+ .keySet()
+ .removeIf(tripOnServiceDate -> feedId.equals(tripOnServiceDate.tripId().getFeedId()));
+ realTimeAddedTripOnServiceDateById.keySet().removeIf(id -> feedId.equals(id.getFeedId()));
+ realTimeAddedPatternsForRoute
+ .keySet()
+ .removeIf(route -> feedId.equals(route.getId().getFeedId()));
+ realtimeAddedRoutes.keySet().removeIf(id -> feedId.equals(id.getFeedId()));
+ return removedEntry;
+ }
+
/**
* Add the patterns to the stop index, only if they come from a modified pattern
*/
diff --git a/application/src/main/java/org/opentripplanner/model/impl/OtpTransitServiceBuilder.java b/application/src/main/java/org/opentripplanner/model/impl/OtpTransitServiceBuilder.java
index d62d0331a34..3dd4a3db992 100644
--- a/application/src/main/java/org/opentripplanner/model/impl/OtpTransitServiceBuilder.java
+++ b/application/src/main/java/org/opentripplanner/model/impl/OtpTransitServiceBuilder.java
@@ -54,8 +54,8 @@
import org.opentripplanner.transit.model.timetable.Trip;
import org.opentripplanner.transit.model.timetable.TripOnServiceDate;
import org.opentripplanner.transit.model.timetable.TripTimes;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -78,7 +78,7 @@ public class OtpTransitServiceBuilder {
private final List frequencies = new ArrayList<>();
- private final StopModelBuilder stopModelBuilder;
+ private final SiteRepositoryBuilder siteRepositoryBuilder;
private final Multimap noticeAssignments = ArrayListMultimap.create();
@@ -124,8 +124,8 @@ public class OtpTransitServiceBuilder {
private final DataImportIssueStore issueStore;
- public OtpTransitServiceBuilder(StopModel stopModel, DataImportIssueStore issueStore) {
- this.stopModelBuilder = stopModel.withContext();
+ public OtpTransitServiceBuilder(SiteRepository siteRepository, DataImportIssueStore issueStore) {
+ this.siteRepositoryBuilder = siteRepository.withContext();
this.issueStore = issueStore;
}
@@ -151,16 +151,16 @@ public List getFrequencies() {
return frequencies;
}
- public StopModelBuilder stopModel() {
- return stopModelBuilder;
+ public SiteRepositoryBuilder siteRepository() {
+ return siteRepositoryBuilder;
}
public ImmutableEntityById getGroupsOfStationsById() {
- return stopModelBuilder.groupOfStationById();
+ return siteRepositoryBuilder.groupOfStationById();
}
public ImmutableEntityById getMultiModalStationsById() {
- return stopModelBuilder.multiModalStationById();
+ return siteRepositoryBuilder.multiModalStationById();
}
/**
@@ -188,11 +188,11 @@ public Multimap getShapePoints() {
}
public ImmutableEntityById getStations() {
- return stopModelBuilder.stationById();
+ return siteRepositoryBuilder.stationById();
}
public ImmutableEntityById getStops() {
- return stopModelBuilder.regularStopsById();
+ return siteRepositoryBuilder.regularStopsById();
}
public EntityById getEntrances() {
@@ -208,11 +208,11 @@ public EntityById getBoardingAreas() {
}
public ImmutableEntityById getAreaStops() {
- return stopModelBuilder.areaStopById();
+ return siteRepositoryBuilder.areaStopById();
}
public ImmutableEntityById getGroupStops() {
- return stopModelBuilder.groupStopById();
+ return siteRepositoryBuilder.groupStopById();
}
public TripStopTimes getStopTimesSortedByTrip() {
diff --git a/application/src/main/java/org/opentripplanner/model/impl/OtpTransitServiceImpl.java b/application/src/main/java/org/opentripplanner/model/impl/OtpTransitServiceImpl.java
index 9ca549f1631..2f735f36435 100644
--- a/application/src/main/java/org/opentripplanner/model/impl/OtpTransitServiceImpl.java
+++ b/application/src/main/java/org/opentripplanner/model/impl/OtpTransitServiceImpl.java
@@ -26,7 +26,7 @@
import org.opentripplanner.transit.model.site.Pathway;
import org.opentripplanner.transit.model.site.PathwayNode;
import org.opentripplanner.transit.model.timetable.Trip;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
/**
* A in-memory implementation of {@link OtpTransitService}. It's super fast for most methods, but
@@ -45,7 +45,7 @@ class OtpTransitServiceImpl implements OtpTransitService {
private final Collection feedInfos;
- private final StopModel stopModel;
+ private final SiteRepository siteRepository;
private final ImmutableListMultimap noticeAssignments;
@@ -77,7 +77,7 @@ class OtpTransitServiceImpl implements OtpTransitService {
OtpTransitServiceImpl(OtpTransitServiceBuilder builder) {
this.agencies = immutableList(builder.getAgenciesById().values());
this.feedInfos = immutableList(builder.getFeedInfos());
- this.stopModel = builder.stopModel().build();
+ this.siteRepository = builder.siteRepository().build();
this.noticeAssignments = ImmutableListMultimap.copyOf(builder.getNoticeAssignments());
this.operators = immutableList(builder.getOperatorsById().values());
this.pathways = immutableList(builder.getPathways());
@@ -109,8 +109,8 @@ public Collection getAllFeedInfos() {
}
@Override
- public StopModel stopModel() {
- return stopModel;
+ public SiteRepository siteRepository() {
+ return siteRepository;
}
/**
diff --git a/application/src/main/java/org/opentripplanner/model/plan/Itinerary.java b/application/src/main/java/org/opentripplanner/model/plan/Itinerary.java
index c3d8513c2f1..18055690b6e 100644
--- a/application/src/main/java/org/opentripplanner/model/plan/Itinerary.java
+++ b/application/src/main/java/org/opentripplanner/model/plan/Itinerary.java
@@ -232,7 +232,7 @@ public void removeDeletionFlags(Set removeTags) {
}
public boolean isFlaggedForDeletion() {
- return !getSystemNotices().isEmpty();
+ return !systemNotices.isEmpty();
}
/**
diff --git a/application/src/main/java/org/opentripplanner/model/plan/Leg.java b/application/src/main/java/org/opentripplanner/model/plan/Leg.java
index d9e3a4589d8..174fdf70452 100644
--- a/application/src/main/java/org/opentripplanner/model/plan/Leg.java
+++ b/application/src/main/java/org/opentripplanner/model/plan/Leg.java
@@ -161,6 +161,7 @@ default boolean overlapInTime(Leg other) {
/**
* For transit legs, the route agency. For non-transit legs {@code null}.
*/
+ @Nullable
default Agency getAgency() {
return null;
}
@@ -171,6 +172,7 @@ default Agency getAgency() {
*
* @see Trip#getOperator()
*/
+ @Nullable
default Operator getOperator() {
return null;
}
@@ -178,6 +180,7 @@ default Operator getOperator() {
/**
* For transit legs, the route. For non-transit legs, null.
*/
+ @Nullable
default Route getRoute() {
return null;
}
@@ -198,6 +201,7 @@ default TripOnServiceDate getTripOnServiceDate() {
return null;
}
+ @Nullable
default Accessibility getTripWheelchairAccessibility() {
return null;
}
@@ -245,6 +249,7 @@ default boolean getRealTime() {
return false;
}
+ @Nullable
default RealTimeState getRealTimeState() {
return null;
}
@@ -261,6 +266,7 @@ default boolean isFlexibleTrip() {
/**
* Is this a frequency-based trip with non-strict departure times?
*/
+ @Nullable
default Boolean getNonExactFrequency() {
return null;
}
@@ -270,6 +276,7 @@ default Boolean getNonExactFrequency() {
* non-strict frequency trips, but could become important for real-time trips, strict frequency
* trips, and scheduled trips with empirical headways.
*/
+ @Nullable
default Integer getHeadway() {
return null;
}
@@ -289,10 +296,11 @@ default int getAgencyTimeZoneOffset() {
/**
* For transit legs, the type of the route. Non transit -1 When 0-7: 0 Tram, 1 Subway, 2 Train, 3
- * Bus, 4 Ferry, 5 Cable Car, 6 Gondola, 7 Funicular When equal or highter than 100, it is coded
+ * Bus, 4 Ferry, 5 Cable Tram, 6 Gondola, 7 Funicular When equal or highter than 100, it is coded
* using the Hierarchical Vehicle Type (HVT) codes from the European TPEG standard Also see
* http://groups.google.com/group/gtfs-changes/msg/ed917a69cf8c5bef
*/
+ @Nullable
default Integer getRouteType() {
return null;
}
@@ -300,6 +308,7 @@ default Integer getRouteType() {
/**
* For transit legs, the headsign of the bus or train being used. For non-transit legs, null.
*/
+ @Nullable
default I18NString getHeadsign() {
return null;
}
@@ -312,6 +321,7 @@ default I18NString getHeadsign() {
* for a given trip may happen at service date March 25th and service time 25:00, which in local
* time would be Mach 26th 01:00.
*/
+ @Nullable
default LocalDate getServiceDate() {
return null;
}
@@ -319,6 +329,7 @@ default LocalDate getServiceDate() {
/**
* For transit leg, the route's branding URL (if one exists). For non-transit legs, null.
*/
+ @Nullable
default String getRouteBrandingUrl() {
return null;
}
@@ -337,6 +348,7 @@ default String getRouteBrandingUrl() {
* For transit legs, intermediate stops between the Place where the leg originates and the Place
* where the leg ends. For non-transit legs, {@code null}.
*/
+ @Nullable
default List getIntermediateStops() {
return null;
}
@@ -344,6 +356,7 @@ default List getIntermediateStops() {
/**
* The leg's geometry.
*/
+ @Nullable
LineString getLegGeometry();
/**
@@ -352,6 +365,7 @@ default List getIntermediateStops() {
* The elevation profile as a comma-separated list of x,y values. x is the distance from the start
* of the leg, y is the elevation at this distance.
*/
+ @Nullable
default ElevationProfile getElevationProfile() {
return null;
}
@@ -364,49 +378,59 @@ default List getWalkSteps() {
}
default Set getStreetNotes() {
- return null;
+ return Set.of();
}
default Set getTransitAlerts() {
return Set.of();
}
+ @Nullable
default PickDrop getBoardRule() {
return null;
}
+ @Nullable
default PickDrop getAlightRule() {
return null;
}
+ @Nullable
default BookingInfo getDropOffBookingInfo() {
return null;
}
+ @Nullable
default BookingInfo getPickupBookingInfo() {
return null;
}
+ @Nullable
default ConstrainedTransfer getTransferFromPrevLeg() {
return null;
}
+ @Nullable
default ConstrainedTransfer getTransferToNextLeg() {
return null;
}
+ @Nullable
default Integer getBoardStopPosInPattern() {
return null;
}
+ @Nullable
default Integer getAlightStopPosInPattern() {
return null;
}
+ @Nullable
default Integer getBoardingGtfsStopSequence() {
return null;
}
+ @Nullable
default Integer getAlightGtfsStopSequence() {
return null;
}
@@ -414,6 +438,7 @@ default Integer getAlightGtfsStopSequence() {
/**
* Is this leg walking with a bike?
*/
+ @Nullable
default Boolean getWalkingBike() {
return null;
}
@@ -435,10 +460,12 @@ default Float accessibilityScore() {
return null;
}
+ @Nullable
default Boolean getRentedVehicle() {
return null;
}
+ @Nullable
default String getVehicleRentalNetwork() {
return null;
}
@@ -453,6 +480,7 @@ default String getVehicleRentalNetwork() {
*/
int getGeneralizedCost();
+ @Nullable
default LegReference getLegReference() {
return null;
}
diff --git a/application/src/main/java/org/opentripplanner/model/plan/ScheduledTransitLeg.java b/application/src/main/java/org/opentripplanner/model/plan/ScheduledTransitLeg.java
index 7af091531e0..9949d83cdfe 100644
--- a/application/src/main/java/org/opentripplanner/model/plan/ScheduledTransitLeg.java
+++ b/application/src/main/java/org/opentripplanner/model/plan/ScheduledTransitLeg.java
@@ -96,10 +96,7 @@ protected ScheduledTransitLeg(ScheduledTransitLegBuilder> builder) {
setDistanceMeters(getDistanceFromCoordinates(transitLegCoordinates));
this.directDistanceMeters =
getDistanceFromCoordinates(
- List.of(
- transitLegCoordinates.get(0),
- transitLegCoordinates.get(transitLegCoordinates.size() - 1)
- )
+ List.of(transitLegCoordinates.getFirst(), transitLegCoordinates.getLast())
);
}
@@ -139,22 +136,23 @@ public Boolean isInterlinedWithPreviousLeg() {
@Override
public Agency getAgency() {
- return getTrip().getRoute().getAgency();
+ return trip().getRoute().getAgency();
}
@Override
+ @Nullable
public Operator getOperator() {
- return getTrip().getOperator();
+ return trip().getOperator();
}
@Override
public Route getRoute() {
- return getTrip().getRoute();
+ return trip().getRoute();
}
@Override
public Trip getTrip() {
- return tripTimes.getTrip();
+ return trip();
}
@Override
@@ -182,7 +180,7 @@ public LegTime end() {
@Override
public TransitMode getMode() {
- return getTrip().getMode();
+ return trip().getMode();
}
@Override
@@ -247,7 +245,7 @@ public double getDirectDistanceMeters() {
@Override
public Integer getRouteType() {
- return getTrip().getRoute().getGtfsType();
+ return trip().getRoute().getGtfsType();
}
@Override
@@ -300,6 +298,7 @@ public Set getTransitAlerts() {
}
@Override
+ @Nullable
public PickDrop getBoardRule() {
if (transferFromPrevLeg != null && transferFromPrevLeg.getTransferConstraint().isStaySeated()) {
return null;
@@ -308,6 +307,7 @@ public PickDrop getBoardRule() {
}
@Override
+ @Nullable
public PickDrop getAlightRule() {
if (transferToNextLeg != null && transferToNextLeg.getTransferConstraint().isStaySeated()) {
return null;
@@ -434,6 +434,13 @@ public String toString() {
.toString();
}
+ /**
+ * Non-null getter for trip
+ */
+ private Trip trip() {
+ return tripTimes.getTrip();
+ }
+
private List extractTransitLegCoordinates(
TripPattern tripPattern,
int boardStopIndexInPattern,
diff --git a/application/src/main/java/org/opentripplanner/model/plan/UnknownTransitPathLeg.java b/application/src/main/java/org/opentripplanner/model/plan/UnknownTransitPathLeg.java
index df43bbcb411..76179a8ee7c 100644
--- a/application/src/main/java/org/opentripplanner/model/plan/UnknownTransitPathLeg.java
+++ b/application/src/main/java/org/opentripplanner/model/plan/UnknownTransitPathLeg.java
@@ -4,6 +4,7 @@
import java.time.ZonedDateTime;
import java.util.List;
+import javax.annotation.Nullable;
import org.locationtech.jts.geom.LineString;
import org.opentripplanner.framework.time.DurationUtils;
import org.opentripplanner.framework.tostring.ToStringBuilder;
@@ -84,6 +85,7 @@ public double getDistanceMeters() {
}
@Override
+ @Nullable
public LineString getLegGeometry() {
return null;
}
diff --git a/application/src/main/java/org/opentripplanner/netex/configure/NetexConfigure.java b/application/src/main/java/org/opentripplanner/netex/configure/NetexConfigure.java
index 5d824f833db..9ca6dc27b04 100644
--- a/application/src/main/java/org/opentripplanner/netex/configure/NetexConfigure.java
+++ b/application/src/main/java/org/opentripplanner/netex/configure/NetexConfigure.java
@@ -43,7 +43,7 @@ public NetexModule createNetexModule(
for (ConfiguredDataSource it : netexSources) {
var transitServiceBuilder = new OtpTransitServiceBuilder(
- timetableRepository.getStopModel(),
+ timetableRepository.getSiteRepository(),
issueStore
);
netexBundles.add(netexBundle(transitServiceBuilder, it));
diff --git a/application/src/main/java/org/opentripplanner/netex/loader/parser/package-info.java b/application/src/main/java/org/opentripplanner/netex/loader/parser/package-info.java
deleted file mode 100644
index a0b9cd00721..00000000000
--- a/application/src/main/java/org/opentripplanner/netex/loader/parser/package-info.java
+++ /dev/null
@@ -1,2 +0,0 @@
-package org.opentripplanner.netex.loader.parser;
-// TODO OTP2 - This package need Unit tests
diff --git a/application/src/main/java/org/opentripplanner/netex/mapping/FlexStopsMapper.java b/application/src/main/java/org/opentripplanner/netex/mapping/FlexStopsMapper.java
index 7e06db882f1..1bbe76c0e7c 100644
--- a/application/src/main/java/org/opentripplanner/netex/mapping/FlexStopsMapper.java
+++ b/application/src/main/java/org/opentripplanner/netex/mapping/FlexStopsMapper.java
@@ -15,7 +15,7 @@
import org.opentripplanner.transit.model.site.AreaStop;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.StopLocation;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
import org.rutebanken.netex.model.FlexibleArea;
import org.rutebanken.netex.model.FlexibleStopPlace;
import org.rutebanken.netex.model.KeyListStructure;
@@ -34,14 +34,14 @@ class FlexStopsMapper {
"UnrestrictedPublicTransportAreas";
private final FeedScopedIdFactory idFactory;
private final HashGridSpatialIndex stopsSpatialIndex;
- private final StopModelBuilder stopModelBuilder;
+ private final SiteRepositoryBuilder siteRepositoryBuilder;
private final DataImportIssueStore issueStore;
private final TransportModeMapper transportModeMapper = new TransportModeMapper();
FlexStopsMapper(
FeedScopedIdFactory idFactory,
Collection stops,
- StopModelBuilder stopModelBuilder,
+ SiteRepositoryBuilder siteRepositoryBuilder,
DataImportIssueStore issueStore
) {
this.idFactory = idFactory;
@@ -50,7 +50,7 @@ class FlexStopsMapper {
Envelope env = new Envelope(stop.getCoordinate().asJtsCoordinate());
this.stopsSpatialIndex.insert(env, stop);
}
- this.stopModelBuilder = stopModelBuilder;
+ this.siteRepositoryBuilder = siteRepositoryBuilder;
this.issueStore = issueStore;
}
@@ -100,7 +100,7 @@ StopLocation map(FlexibleStopPlace flexibleStopPlace) {
} else {
// We create a new GroupStop, even if the stop place consists of a single area, in order to
// get the ids for the area and stop place correct
- var builder = stopModelBuilder
+ var builder = siteRepositoryBuilder
.groupStop(idFactory.createId(flexibleStopPlace.getId()))
.withName(new NonLocalizedString(flexibleStopPlace.getName().getValue()))
.withEncompassingAreaGeometries(areaGeometries);
@@ -118,7 +118,7 @@ AreaStop mapFlexArea(FlexibleArea area, Geometry geometry, String backupName) {
}
var areaName = area.getName();
- return stopModelBuilder
+ return siteRepositoryBuilder
.areaStop(idFactory.createId(area.getId()))
.withName(new NonLocalizedString(areaName != null ? areaName.getValue() : backupName))
.withGeometry(geometry)
diff --git a/application/src/main/java/org/opentripplanner/netex/mapping/NetexMapper.java b/application/src/main/java/org/opentripplanner/netex/mapping/NetexMapper.java
index 909d7b1c69f..c8d4f80af63 100644
--- a/application/src/main/java/org/opentripplanner/netex/mapping/NetexMapper.java
+++ b/application/src/main/java/org/opentripplanner/netex/mapping/NetexMapper.java
@@ -309,7 +309,7 @@ private void mapStopPlaceAndQuays(TariffZoneMapper tariffZoneMapper) {
idFactory,
currentNetexIndex.getQuayById(),
tariffZoneMapper,
- transitBuilder.stopModel(),
+ transitBuilder.siteRepository(),
zoneId,
issueStore,
noTransfersOnIsolatedStops,
@@ -321,8 +321,8 @@ private void mapStopPlaceAndQuays(TariffZoneMapper tariffZoneMapper) {
.lookup(stopPlaceId);
stopMapper.mapParentAndChildStops(stopPlaceAllVersions);
}
- transitBuilder.stopModel().withRegularStops(stopMapper.resultStops);
- transitBuilder.stopModel().withStations(stopMapper.resultStations);
+ transitBuilder.siteRepository().withRegularStops(stopMapper.resultStops);
+ transitBuilder.siteRepository().withStations(stopMapper.resultStations);
currentMapperIndexes.addStationByMultiModalStationRfs(
stopMapper.resultStationByMultiModalStationRfs
);
@@ -339,7 +339,7 @@ private void mapMultiModalStopPlaces() {
.get(multiModalStopPlace.getId());
var multiModalStation = mapper.map(multiModalStopPlace, stations);
if (multiModalStation != null) {
- transitBuilder.stopModel().withMultiModalStation(multiModalStation);
+ transitBuilder.siteRepository().withMultiModalStation(multiModalStation);
}
}
}
@@ -354,7 +354,9 @@ private void mapGroupsOfStopPlaces() {
for (GroupOfStopPlaces groupOfStopPlaces : currentNetexIndex
.getGroupOfStopPlacesById()
.localValues()) {
- transitBuilder.stopModel().withGroupOfStation(groupOfStationsMapper.map(groupOfStopPlaces));
+ transitBuilder
+ .siteRepository()
+ .withGroupOfStation(groupOfStationsMapper.map(groupOfStopPlaces));
}
}
@@ -371,19 +373,19 @@ private void mapFlexibleStopPlaces() {
FlexStopsMapper flexStopsMapper = new FlexStopsMapper(
idFactory,
transitBuilder.getStops().values(),
- transitBuilder.stopModel(),
+ transitBuilder.siteRepository(),
issueStore
);
for (FlexibleStopPlace flexibleStopPlace : flexibleStopPlaces) {
StopLocation stopLocation = flexStopsMapper.map(flexibleStopPlace);
if (stopLocation instanceof AreaStop areaStop) {
- transitBuilder.stopModel().withAreaStop(areaStop);
+ transitBuilder.siteRepository().withAreaStop(areaStop);
} else if (stopLocation instanceof GroupStop groupStop) {
- transitBuilder.stopModel().withGroupStop(groupStop);
+ transitBuilder.siteRepository().withGroupStop(groupStop);
for (var child : groupStop.getChildLocations()) {
if (child instanceof AreaStop areaStop) {
- transitBuilder.stopModel().withAreaStop(areaStop);
+ transitBuilder.siteRepository().withAreaStop(areaStop);
}
}
}
@@ -444,9 +446,9 @@ private void mapTripPatterns(Map serviceIds) {
issueStore,
idFactory,
transitBuilder.getOperatorsById(),
- transitBuilder.stopModel().regularStopsById(),
- transitBuilder.stopModel().areaStopById(),
- transitBuilder.stopModel().groupStopById(),
+ transitBuilder.siteRepository().regularStopsById(),
+ transitBuilder.siteRepository().areaStopById(),
+ transitBuilder.siteRepository().groupStopById(),
transitBuilder.getRoutes(),
currentNetexIndex.getRouteById(),
currentNetexIndex.getJourneyPatternsById(),
diff --git a/application/src/main/java/org/opentripplanner/netex/mapping/QuayMapper.java b/application/src/main/java/org/opentripplanner/netex/mapping/QuayMapper.java
index a304ca32f72..db67941e323 100644
--- a/application/src/main/java/org/opentripplanner/netex/mapping/QuayMapper.java
+++ b/application/src/main/java/org/opentripplanner/netex/mapping/QuayMapper.java
@@ -11,7 +11,7 @@
import org.opentripplanner.transit.model.site.FareZone;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.Station;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
import org.rutebanken.netex.model.MultilingualString;
import org.rutebanken.netex.model.Quay;
@@ -21,16 +21,16 @@ class QuayMapper {
private final FeedScopedIdFactory idFactory;
- private final StopModelBuilder stopModelBuilder;
+ private final SiteRepositoryBuilder siteRepositoryBuilder;
QuayMapper(
FeedScopedIdFactory idFactory,
DataImportIssueStore issueStore,
- StopModelBuilder stopModelBuilder
+ SiteRepositoryBuilder siteRepositoryBuilder
) {
this.idFactory = idFactory;
this.issueStore = issueStore;
- this.stopModelBuilder = stopModelBuilder;
+ this.siteRepositoryBuilder = siteRepositoryBuilder;
}
/**
@@ -45,7 +45,7 @@ RegularStop mapQuayToStop(
Accessibility wheelchair
) {
var id = idFactory.createId(quay.getId());
- return stopModelBuilder.computeRegularStopIfAbsent(
+ return siteRepositoryBuilder.computeRegularStopIfAbsent(
id,
it -> map(it, quay, parentStation, fareZones, transitMode, wheelchair)
);
@@ -70,7 +70,7 @@ private RegularStop map(
return null;
}
- var builder = stopModelBuilder
+ var builder = siteRepositoryBuilder
.regularStop(id)
.withParentStation(parentStation)
.withName(parentStation.getName())
diff --git a/application/src/main/java/org/opentripplanner/netex/mapping/ServiceLinkMapper.java b/application/src/main/java/org/opentripplanner/netex/mapping/ServiceLinkMapper.java
index 2b2152be4e0..090f475e22e 100644
--- a/application/src/main/java/org/opentripplanner/netex/mapping/ServiceLinkMapper.java
+++ b/application/src/main/java/org/opentripplanner/netex/mapping/ServiceLinkMapper.java
@@ -3,6 +3,7 @@
import jakarta.xml.bind.JAXBElement;
import java.util.Arrays;
import java.util.List;
+import javax.annotation.Nullable;
import net.opengis.gml._3.LineStringType;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.CoordinateSequence;
@@ -116,6 +117,7 @@ private LineString[] generateGeometriesFromServiceLinks(
return geometries;
}
+ @Nullable
private LineString mapServiceLink(
ServiceLink serviceLink,
StopPattern stopPattern,
diff --git a/application/src/main/java/org/opentripplanner/netex/mapping/StationMapper.java b/application/src/main/java/org/opentripplanner/netex/mapping/StationMapper.java
index 8840f7e4bdf..27773a9f66c 100644
--- a/application/src/main/java/org/opentripplanner/netex/mapping/StationMapper.java
+++ b/application/src/main/java/org/opentripplanner/netex/mapping/StationMapper.java
@@ -17,7 +17,7 @@
import org.opentripplanner.netex.support.JAXBUtils;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.site.Station;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
import org.rutebanken.netex.model.LimitedUseTypeEnumeration;
import org.rutebanken.netex.model.LocaleStructure;
import org.rutebanken.netex.model.MultilingualString;
@@ -38,7 +38,7 @@ class StationMapper {
private final Set routeToCentroidStopPlaceIds;
- private final StopModelBuilder stopModelBuilder;
+ private final SiteRepositoryBuilder siteRepositoryBuilder;
StationMapper(
DataImportIssueStore issueStore,
@@ -46,19 +46,22 @@ class StationMapper {
ZoneId defaultTimeZone,
boolean noTransfersOnIsolatedStops,
Set routeToCentroidStopPlaceIds,
- StopModelBuilder stopModelBuilder
+ SiteRepositoryBuilder siteRepositoryBuilder
) {
this.issueStore = issueStore;
this.idFactory = idFactory;
this.defaultTimeZone = defaultTimeZone;
this.noTransfersOnIsolatedStops = noTransfersOnIsolatedStops;
this.routeToCentroidStopPlaceIds = routeToCentroidStopPlaceIds;
- this.stopModelBuilder = stopModelBuilder;
+ this.siteRepositoryBuilder = siteRepositoryBuilder;
}
Station map(StopPlace stopPlace) {
var id = idFactory.createId(stopPlace.getId());
- return stopModelBuilder.computeStationIfAbsent(id, it -> mapStopPlaceToStation(it, stopPlace));
+ return siteRepositoryBuilder.computeStationIfAbsent(
+ id,
+ it -> mapStopPlaceToStation(it, stopPlace)
+ );
}
Station mapStopPlaceToStation(FeedScopedId id, StopPlace stopPlace) {
diff --git a/application/src/main/java/org/opentripplanner/netex/mapping/StopAndStationMapper.java b/application/src/main/java/org/opentripplanner/netex/mapping/StopAndStationMapper.java
index c5618a03a1a..0a5ab4ba16c 100644
--- a/application/src/main/java/org/opentripplanner/netex/mapping/StopAndStationMapper.java
+++ b/application/src/main/java/org/opentripplanner/netex/mapping/StopAndStationMapper.java
@@ -26,7 +26,7 @@
import org.opentripplanner.transit.model.site.FareZone;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.Station;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
import org.rutebanken.netex.model.Quay;
import org.rutebanken.netex.model.Quays_RelStructure;
import org.rutebanken.netex.model.StopPlace;
@@ -68,7 +68,7 @@ class StopAndStationMapper {
FeedScopedIdFactory idFactory,
ReadOnlyHierarchicalVersionMapById quayIndex,
TariffZoneMapper tariffZoneMapper,
- StopModelBuilder stopModelBuilder,
+ SiteRepositoryBuilder siteRepositoryBuilder,
ZoneId defaultTimeZone,
DataImportIssueStore issueStore,
boolean noTransfersOnIsolatedStops,
@@ -81,9 +81,9 @@ class StopAndStationMapper {
defaultTimeZone,
noTransfersOnIsolatedStops,
routeToCentroidStopPlaceIds,
- stopModelBuilder
+ siteRepositoryBuilder
);
- this.quayMapper = new QuayMapper(idFactory, issueStore, stopModelBuilder);
+ this.quayMapper = new QuayMapper(idFactory, issueStore, siteRepositoryBuilder);
this.tariffZoneMapper = tariffZoneMapper;
this.quayIndex = quayIndex;
this.issueStore = issueStore;
diff --git a/application/src/main/java/org/opentripplanner/netex/mapping/StopPlaceTypeMapper.java b/application/src/main/java/org/opentripplanner/netex/mapping/StopPlaceTypeMapper.java
index 22fbb1fca1c..b98ce0fd39f 100644
--- a/application/src/main/java/org/opentripplanner/netex/mapping/StopPlaceTypeMapper.java
+++ b/application/src/main/java/org/opentripplanner/netex/mapping/StopPlaceTypeMapper.java
@@ -29,7 +29,7 @@ private TransitMode mapVehicleMode(StopPlace stopPlace) {
case AIR -> TransitMode.AIRPLANE;
case BUS -> TransitMode.BUS;
case TROLLEY_BUS -> TransitMode.TROLLEYBUS;
- case CABLEWAY -> TransitMode.CABLE_CAR;
+ case CABLEWAY -> TransitMode.GONDOLA;
case COACH -> TransitMode.COACH;
case FUNICULAR -> TransitMode.FUNICULAR;
case METRO -> TransitMode.SUBWAY;
diff --git a/application/src/main/java/org/opentripplanner/netex/mapping/TransportModeMapper.java b/application/src/main/java/org/opentripplanner/netex/mapping/TransportModeMapper.java
index 82a5f99c9c7..5db45f93c8d 100644
--- a/application/src/main/java/org/opentripplanner/netex/mapping/TransportModeMapper.java
+++ b/application/src/main/java/org/opentripplanner/netex/mapping/TransportModeMapper.java
@@ -32,7 +32,7 @@ public TransitMode mapAllVehicleModesOfTransport(AllVehicleModesOfTransportEnume
return switch (mode) {
case AIR -> TransitMode.AIRPLANE;
case BUS -> TransitMode.BUS;
- case CABLEWAY -> TransitMode.CABLE_CAR;
+ case CABLEWAY -> TransitMode.GONDOLA;
case COACH -> TransitMode.COACH;
case FUNICULAR -> TransitMode.FUNICULAR;
case METRO -> TransitMode.SUBWAY;
diff --git a/application/src/main/java/org/opentripplanner/raptor/api/request/RaptorEnvironment.java b/application/src/main/java/org/opentripplanner/raptor/api/request/RaptorEnvironment.java
new file mode 100644
index 00000000000..30e3abb5b27
--- /dev/null
+++ b/application/src/main/java/org/opentripplanner/raptor/api/request/RaptorEnvironment.java
@@ -0,0 +1,41 @@
+package org.opentripplanner.raptor.api.request;
+
+import java.util.concurrent.ExecutorService;
+import javax.annotation.Nullable;
+
+/**
+ * The raptor environment provides a few hooks and integration points to the caller. The default
+ * implementation will work just fine, override to adjust Raptor to the calling application.
+ */
+public interface RaptorEnvironment {
+ Runnable NOOP = () -> {};
+
+ /**
+ * Use the timeout-hook to register a callback from Raptor. The hook is called periodically to
+ * check if a time-out is reached. The hook should then exit with an exception handled by the
+ * caller. Raptor does not have blocking method calls so just calling {@link Thread#interrupt()}
+ * will not terminate the Raptor search.
+ */
+ default Runnable timeoutHook() {
+ return NOOP;
+ }
+
+ /**
+ * Raptor has support for running a few things in parallel. If Raptor catches an
+ * {@link InterruptedException}, Raptor will convert the checked exception to an unchecked
+ * exception. The default is {@link RuntimeException}. Override this method to map
+ * {@link InterruptedException} to your prefered runtime exception.
+ */
+ default RuntimeException mapInterruptedException(InterruptedException e) {
+ return new RuntimeException(e);
+ }
+
+ /**
+ * Inject a thread pool into Raptor to run part of the raptor search in parallel. If no
+ * thread pool is provided, then Raptor runs everything in the caller thread.
+ */
+ @Nullable
+ default ExecutorService threadPool() {
+ return null;
+ }
+}
diff --git a/application/src/main/java/org/opentripplanner/raptor/api/request/RaptorTuningParameters.java b/application/src/main/java/org/opentripplanner/raptor/api/request/RaptorTuningParameters.java
index d80c50ed7f5..a85fc3069f6 100644
--- a/application/src/main/java/org/opentripplanner/raptor/api/request/RaptorTuningParameters.java
+++ b/application/src/main/java/org/opentripplanner/raptor/api/request/RaptorTuningParameters.java
@@ -20,11 +20,6 @@ default int iterationDepartureStepInSeconds() {
return 60;
}
- /** see {@link org.opentripplanner.standalone.config.routerconfig.TransitRoutingConfig} **/
- default int searchThreadPoolSize() {
- return 0;
- }
-
/**
* Coefficients used to calculate raptor-search-window parameters dynamically from heuristics.
*/
diff --git a/application/src/main/java/org/opentripplanner/raptor/api/view/ArrivalView.java b/application/src/main/java/org/opentripplanner/raptor/api/view/ArrivalView.java
index 862f7f17fb6..2dffbbe5733 100644
--- a/application/src/main/java/org/opentripplanner/raptor/api/view/ArrivalView.java
+++ b/application/src/main/java/org/opentripplanner/raptor/api/view/ArrivalView.java
@@ -10,7 +10,6 @@
import org.opentripplanner.raptor.api.model.RaptorValueFormatter;
import org.opentripplanner.raptor.api.model.TransitArrival;
import org.opentripplanner.raptor.spi.RaptorCostCalculator;
-import org.opentripplanner.routing.algorithm.raptoradapter.transit.cost.DefaultCostCalculator;
/**
* The purpose of the stop-arrival-view is to provide a common interface for stop-arrivals for
@@ -157,7 +156,7 @@ default String asString() {
String arrival =
"[" +
TimeUtils.timeToStrCompact(arrivalTime()) +
- cost(c1(), DefaultCostCalculator.ZERO_COST, RaptorValueFormatter::formatC1) +
+ cost(c1(), RaptorCostCalculator.ZERO_COST, RaptorValueFormatter::formatC1) +
cost(c2(), RaptorConstants.NOT_SET, RaptorValueFormatter::formatC2) +
"]";
return switch (arrivedBy()) {
diff --git a/application/src/main/java/org/opentripplanner/raptor/configure/RaptorConfig.java b/application/src/main/java/org/opentripplanner/raptor/configure/RaptorConfig.java
index cc488448304..380f9fe3ba5 100644
--- a/application/src/main/java/org/opentripplanner/raptor/configure/RaptorConfig.java
+++ b/application/src/main/java/org/opentripplanner/raptor/configure/RaptorConfig.java
@@ -1,10 +1,8 @@
package org.opentripplanner.raptor.configure;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import javax.annotation.Nullable;
-import org.opentripplanner.framework.concurrent.OtpRequestThreadFactory;
import org.opentripplanner.raptor.api.model.RaptorTripSchedule;
+import org.opentripplanner.raptor.api.request.RaptorEnvironment;
import org.opentripplanner.raptor.api.request.RaptorRequest;
import org.opentripplanner.raptor.api.request.RaptorTuningParameters;
import org.opentripplanner.raptor.rangeraptor.DefaultRangeRaptorWorker;
@@ -27,26 +25,26 @@
/**
* This class is responsible for creating a new search and holding application scoped Raptor state.
*
- * This class should have APPLICATION scope. It manage a threadPool, and hold a reference to the
- * application tuning parameters.
+ * This class should have APPLICATION scope. It keeps a reference to the environment and the
+ * tuning parameters. The environment has a thread-pool, which should be APPLICATION scope.
*
* @param The TripSchedule type defined by the user of the raptor API.
*/
public class RaptorConfig {
- private final ExecutorService threadPool;
+ private final RaptorEnvironment environment;
private final RaptorTuningParameters tuningParameters;
/** The service is not final, because it depends on the request. */
private PassThroughPointsService passThroughPointsService = null;
- public RaptorConfig(RaptorTuningParameters tuningParameters) {
+ public RaptorConfig(RaptorTuningParameters tuningParameters, RaptorEnvironment environment) {
this.tuningParameters = tuningParameters;
- this.threadPool = createNewThreadPool(tuningParameters.searchThreadPoolSize());
+ this.environment = environment;
}
public static RaptorConfig defaultConfigForTest() {
- return new RaptorConfig<>(new RaptorTuningParameters() {});
+ return new RaptorConfig<>(new RaptorTuningParameters() {}, new RaptorEnvironment() {});
}
public SearchContext context(RaptorTransitDataProvider transit, RaptorRequest request) {
@@ -114,19 +112,23 @@ public Heuristics createHeuristic(
}
public boolean isMultiThreaded() {
- return threadPool != null;
+ return threadPool() != null;
}
public ExecutorService threadPool() {
- return threadPool;
+ return environment.threadPool();
}
public void shutdown() {
- if (threadPool != null) {
- threadPool.shutdown();
+ if (threadPool() != null) {
+ threadPool().shutdown();
}
}
+ public RuntimeException mapInterruptedException(InterruptedException e) {
+ return environment.mapInterruptedException(e);
+ }
+
public RaptorSearchWindowCalculator searchWindowCalculator() {
return new RaptorSearchWindowCalculator(tuningParameters.dynamicSearchWindowCoefficients());
}
@@ -164,14 +166,8 @@ private RangeRaptor createRangeRaptor(SearchContext ctx, RangeRaptorWorker
ctx.roundTracker(),
ctx.calculator(),
ctx.createLifeCyclePublisher(),
- ctx.performanceTimers()
+ ctx.performanceTimers(),
+ environment.timeoutHook()
);
}
-
- @Nullable
- private ExecutorService createNewThreadPool(int size) {
- return size > 0
- ? Executors.newFixedThreadPool(size, OtpRequestThreadFactory.of("raptor-%d"))
- : null;
- }
}
diff --git a/application/src/main/java/org/opentripplanner/raptor/rangeraptor/RangeRaptor.java b/application/src/main/java/org/opentripplanner/raptor/rangeraptor/RangeRaptor.java
index 02c39f9e52c..02fb2a627e9 100644
--- a/application/src/main/java/org/opentripplanner/raptor/rangeraptor/RangeRaptor.java
+++ b/application/src/main/java/org/opentripplanner/raptor/rangeraptor/RangeRaptor.java
@@ -2,7 +2,6 @@
import static java.util.Objects.requireNonNull;
-import org.opentripplanner.framework.application.OTPRequestTimeoutException;
import org.opentripplanner.raptor.api.debug.RaptorTimers;
import org.opentripplanner.raptor.api.model.RaptorConstants;
import org.opentripplanner.raptor.api.model.RaptorTripSchedule;
@@ -66,6 +65,8 @@ public final class RangeRaptor implements RaptorRo
private final LifeCycleEventPublisher lifeCycle;
+ private final Runnable timeoutHook;
+
private final int minNumberOfRounds;
public RangeRaptor(
@@ -75,7 +76,8 @@ public RangeRaptor(
RoundTracker roundTracker,
RaptorTransitCalculator calculator,
LifeCycleEventPublisher lifeCyclePublisher,
- RaptorTimers timers
+ RaptorTimers timers,
+ Runnable timeoutHook
) {
this.worker = requireNonNull(worker);
this.transitData = requireNonNull(transitData);
@@ -85,6 +87,7 @@ public RangeRaptor(
this.minNumberOfRounds = accessPaths.calculateMaxNumberOfRides();
this.roundTracker = requireNonNull(roundTracker);
this.lifeCycle = requireNonNull(lifeCyclePublisher);
+ this.timeoutHook = requireNonNull(timeoutHook);
}
public RaptorRouterResult route() {
@@ -165,7 +168,7 @@ private int round() {
* Run the raptor search for this particular iteration departure time
*/
private void setupIteration(int iterationDepartureTime) {
- OTPRequestTimeoutException.checkForTimeout();
+ timeoutHook.run();
roundTracker.setupIteration();
lifeCycle.prepareForNextRound(round());
lifeCycle.setupIteration(iterationDepartureTime);
diff --git a/application/src/main/java/org/opentripplanner/raptor/rangeraptor/support/TimeBasedBoardingSupport.java b/application/src/main/java/org/opentripplanner/raptor/rangeraptor/support/TimeBasedBoardingSupport.java
index 9ecd2bbf100..2b5c4694409 100644
--- a/application/src/main/java/org/opentripplanner/raptor/rangeraptor/support/TimeBasedBoardingSupport.java
+++ b/application/src/main/java/org/opentripplanner/raptor/rangeraptor/support/TimeBasedBoardingSupport.java
@@ -13,7 +13,6 @@
import org.opentripplanner.raptor.spi.RaptorConstrainedBoardingSearch;
import org.opentripplanner.raptor.spi.RaptorTimeTable;
import org.opentripplanner.raptor.spi.RaptorTripScheduleSearch;
-import org.opentripplanner.routing.algorithm.raptoradapter.transit.request.TripScheduleBoardSearch;
/**
* This class contains code which is shared by all time-dependent {@link RoutingStrategy}s.
@@ -119,9 +118,6 @@ private int earliestBoardTime(int prevArrivalTime, int boardSlack) {
return calculator.plusDuration(prevArrivalTime, boardSlack);
}
- /**
- * Create a trip search using {@link TripScheduleBoardSearch}.
- */
private RaptorTripScheduleSearch createTripSearch(RaptorTimeTable timeTable) {
if (!inFirstIteration && isFirstRound(round) && !hasTimeDependentAccess) {
// For the first round of every iteration(except the first) we restrict the first
diff --git a/application/src/main/java/org/opentripplanner/raptor/service/RangeRaptorDynamicSearch.java b/application/src/main/java/org/opentripplanner/raptor/service/RangeRaptorDynamicSearch.java
index 5353804f414..c2a174d646a 100644
--- a/application/src/main/java/org/opentripplanner/raptor/service/RangeRaptorDynamicSearch.java
+++ b/application/src/main/java/org/opentripplanner/raptor/service/RangeRaptorDynamicSearch.java
@@ -11,7 +11,6 @@
import java.util.concurrent.Future;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
-import org.opentripplanner.framework.application.OTPRequestTimeoutException;
import org.opentripplanner.raptor.RaptorService;
import org.opentripplanner.raptor.api.model.RaptorTripSchedule;
import org.opentripplanner.raptor.api.request.RaptorRequest;
@@ -182,10 +181,10 @@ private void runHeuristicsInParallel() {
Thread.currentThread().interrupt();
// propagate interruption to the running task.
asyncResult.cancel(true);
- throw new OTPRequestTimeoutException();
+ throw config.mapInterruptedException(e);
} catch (ExecutionException e) {
- if (e.getCause() instanceof DestinationNotReachedException) {
- throw new DestinationNotReachedException();
+ if (e.getCause() instanceof DestinationNotReachedException dnr) {
+ throw dnr;
}
LOG.error(e.getMessage() + ". Request: " + originalRequest, e);
throw new IllegalStateException(
diff --git a/application/src/main/java/org/opentripplanner/raptor/service/ViaRangeRaptorDynamicSearch.java b/application/src/main/java/org/opentripplanner/raptor/service/ViaRangeRaptorDynamicSearch.java
index 4476e40464f..cfd12f65b3a 100644
--- a/application/src/main/java/org/opentripplanner/raptor/service/ViaRangeRaptorDynamicSearch.java
+++ b/application/src/main/java/org/opentripplanner/raptor/service/ViaRangeRaptorDynamicSearch.java
@@ -11,7 +11,6 @@
import java.util.concurrent.Future;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
-import org.opentripplanner.framework.application.OTPRequestTimeoutException;
import org.opentripplanner.raptor.RaptorService;
import org.opentripplanner.raptor.api.model.RaptorTripSchedule;
import org.opentripplanner.raptor.api.request.RaptorRequest;
@@ -182,7 +181,7 @@ private void runHeuristicsInParallel() {
Thread.currentThread().interrupt();
// propagate interruption to the running task.
asyncResult.cancel(true);
- throw new OTPRequestTimeoutException();
+ throw config.mapInterruptedException(e);
} catch (ExecutionException e) {
if (e.getCause() instanceof DestinationNotReachedException) {
throw new DestinationNotReachedException();
diff --git a/application/src/main/java/org/opentripplanner/raptor/spi/BoardAndAlightTime.java b/application/src/main/java/org/opentripplanner/raptor/spi/BoardAndAlightTime.java
index 94744f4bd61..9c0f8264511 100644
--- a/application/src/main/java/org/opentripplanner/raptor/spi/BoardAndAlightTime.java
+++ b/application/src/main/java/org/opentripplanner/raptor/spi/BoardAndAlightTime.java
@@ -1,7 +1,8 @@
package org.opentripplanner.raptor.spi;
import java.util.Objects;
-import org.opentripplanner.framework.tostring.ValueObjectToStringBuilder;
+import org.opentripplanner.framework.time.DurationUtils;
+import org.opentripplanner.framework.time.TimeUtils;
import org.opentripplanner.raptor.api.model.RaptorTripSchedule;
/**
@@ -68,19 +69,18 @@ public boolean equals(Object o) {
@Override
public String toString() {
- return ValueObjectToStringBuilder
- .of()
- .addText("[")
- .addObj(trip.pattern().stopIndex(boardStopPos))
- .addText(" ~ ")
- .addServiceTime(boardTime())
- .addText(" ")
- .addServiceTime(alightTime())
- .addText("(")
- .addDurationSec(alightTime() - boardTime())
- .addText(") ~ ")
- .addObj(trip.pattern().stopIndex(alightStopPos))
- .addText("]")
- .toString();
+ return (
+ "[" +
+ trip.pattern().stopIndex(boardStopPos) +
+ " ~ " +
+ TimeUtils.timeToStrCompact(boardTime()) +
+ " " +
+ TimeUtils.timeToStrCompact(alightTime()) +
+ "(" +
+ DurationUtils.durationToStr(alightTime() - boardTime()) +
+ ") ~ " +
+ trip.pattern().stopIndex(alightStopPos) +
+ "]"
+ );
}
}
diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/router/TransitRouter.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/router/TransitRouter.java
index e72d8ee1427..8040c16d800 100644
--- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/router/TransitRouter.java
+++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/router/TransitRouter.java
@@ -288,11 +288,10 @@ private Collection extends RoutingAccessEgress> fetchAccessEgresses(AccessEgre
}
/**
- * Given a list of {@code results} shift the access ones which contain driving
- * so that they only start at the time when the ride hailing vehicle can actually be there
- * to pick up passengers.
+ * Given a list of {@code results} shift the access ones that contain driving so that they only
+ * start at the time when the ride hailing vehicle can actually be there to pick up passengers.
*
- * If there are accesses/egresses with only walking then they remain unchanged.
+ * If there are accesses/egresses with only walking, then they remain unchanged.
*
* This method is a good candidate to be moved to the access/egress filter chain when that has
* been added.
diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/TransitLayer.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/TransitLayer.java
index 9e07c57ede7..c7d6a7809ed 100644
--- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/TransitLayer.java
+++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/TransitLayer.java
@@ -14,7 +14,7 @@
import org.opentripplanner.routing.algorithm.raptoradapter.transit.request.RaptorRequestTransferCache;
import org.opentripplanner.routing.api.request.RouteRequest;
import org.opentripplanner.transit.model.site.StopLocation;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
/**
* This is a replica of public transportation data already present in TimetableRepository, but rearranged
@@ -48,7 +48,7 @@ public class TransitLayer {
*/
private final TransferService transferService;
- private final StopModel stopModel;
+ private final SiteRepository siteRepository;
private final RaptorRequestTransferCache transferCache;
@@ -69,7 +69,7 @@ public TransitLayer(TransitLayer transitLayer) {
transitLayer.tripPatternsRunningOnDate,
transitLayer.transfersByStopIndex,
transitLayer.transferService,
- transitLayer.stopModel,
+ transitLayer.siteRepository,
transitLayer.transferCache,
transitLayer.constrainedTransfers,
transitLayer.transferIndexGenerator,
@@ -81,7 +81,7 @@ public TransitLayer(
Map> tripPatternsRunningOnDate,
List> transfersByStopIndex,
TransferService transferService,
- StopModel stopModel,
+ SiteRepository siteRepository,
RaptorRequestTransferCache transferCache,
ConstrainedTransfersForPatterns constrainedTransfers,
TransferIndexGenerator transferIndexGenerator,
@@ -90,7 +90,7 @@ public TransitLayer(
this.tripPatternsRunningOnDate = new HashMap<>(tripPatternsRunningOnDate);
this.transfersByStopIndex = transfersByStopIndex;
this.transferService = transferService;
- this.stopModel = stopModel;
+ this.siteRepository = siteRepository;
this.transferCache = transferCache;
this.constrainedTransfers = constrainedTransfers;
this.transferIndexGenerator = transferIndexGenerator;
@@ -99,7 +99,7 @@ public TransitLayer(
@Nullable
public StopLocation getStopByIndex(int stop) {
- return stop == -1 ? null : this.stopModel.stopByIndex(stop);
+ return stop == -1 ? null : this.siteRepository.stopByIndex(stop);
}
/**
@@ -112,7 +112,7 @@ public Collection getTripPatternsForRunningDate(LocalDate da
}
public int getStopCount() {
- return stopModel.stopIndexSize();
+ return siteRepository.stopIndexSize();
}
/**
diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TransfersMapper.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TransfersMapper.java
index c7e9ea05320..5f4e40708ef 100644
--- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TransfersMapper.java
+++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TransfersMapper.java
@@ -5,7 +5,7 @@
import org.opentripplanner.model.PathTransfer;
import org.opentripplanner.routing.algorithm.raptoradapter.transit.Transfer;
import org.opentripplanner.transit.model.site.RegularStop;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TransitService;
class TransfersMapper {
@@ -14,11 +14,14 @@ class TransfersMapper {
* Copy pre-calculated transfers from the original graph
* @return a list where each element is a list of transfers for the corresponding stop index
*/
- static List> mapTransfers(StopModel stopModel, TransitService transitService) {
+ static List> mapTransfers(
+ SiteRepository siteRepository,
+ TransitService transitService
+ ) {
List> transferByStopIndex = new ArrayList<>();
- for (int i = 0; i < stopModel.stopIndexSize(); ++i) {
- var stop = stopModel.stopByIndex(i);
+ for (int i = 0; i < siteRepository.stopIndexSize(); ++i) {
+ var stop = siteRepository.stopByIndex(i);
if (stop == null) {
continue;
diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TransitLayerMapper.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TransitLayerMapper.java
index a9da73200cc..b0d2b009a0f 100644
--- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TransitLayerMapper.java
+++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TransitLayerMapper.java
@@ -24,7 +24,7 @@
import org.opentripplanner.transit.model.network.TripPattern;
import org.opentripplanner.transit.model.site.StopTransferPriority;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
import org.opentripplanner.transit.service.TransitService;
import org.slf4j.Logger;
@@ -46,11 +46,11 @@ public class TransitLayerMapper {
private static final Logger LOG = LoggerFactory.getLogger(TransitLayerMapper.class);
private final TransitService transitService;
- private final StopModel stopModel;
+ private final SiteRepository siteRepository;
private TransitLayerMapper(TimetableRepository timetableRepository) {
this.transitService = new DefaultTransitService(timetableRepository);
- this.stopModel = timetableRepository.getStopModel();
+ this.siteRepository = timetableRepository.getSiteRepository();
}
public static TransitLayer map(
@@ -71,7 +71,7 @@ private TransitLayer map(TransitTuningParameters tuningParameters) {
tripPatternsByStopByDate = mapTripPatterns(allTripPatterns);
- transferByStopIndex = mapTransfers(stopModel, transitService);
+ transferByStopIndex = mapTransfers(siteRepository, transitService);
TransferIndexGenerator transferIndexGenerator = null;
if (OTPFeature.TransferConstraints.isOn()) {
@@ -88,11 +88,11 @@ private TransitLayer map(TransitTuningParameters tuningParameters) {
tripPatternsByStopByDate,
transferByStopIndex,
transitService.getTransferService(),
- stopModel,
+ siteRepository,
transferCache,
constrainedTransfers,
transferIndexGenerator,
- createStopBoardAlightTransferCosts(stopModel, tuningParameters)
+ createStopBoardAlightTransferCosts(siteRepository, tuningParameters)
);
}
@@ -169,7 +169,7 @@ private HashMap> keyByRunningPeriodDates(
*/
@Nullable
static int[] createStopBoardAlightTransferCosts(
- StopModel stops,
+ SiteRepository stops,
TransitTuningParameters tuningParams
) {
if (!tuningParams.enableStopTransferPriority()) {
diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TripScheduleBoardSearch.java b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TripScheduleBoardSearch.java
index db08dd2dada..4ec306f84b3 100644
--- a/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TripScheduleBoardSearch.java
+++ b/application/src/main/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/request/TripScheduleBoardSearch.java
@@ -15,7 +15,7 @@
* trips are ordered after the FIRST stop boarding times. We also assume that trips do not pass each
* other; Hence trips IN SERVICE on a given day will be in order for all other stops too.
*
- * The search use a binary search if the number of trip schedules is above a given threshold. A
+ * The search uses a binary search if the number of trip schedules is above a given threshold. A
* linear search is slow when the number of schedules is very large, let say more than 300 trip
* schedules.
*
diff --git a/application/src/main/java/org/opentripplanner/routing/algorithm/transferoptimization/package-info.java b/application/src/main/java/org/opentripplanner/routing/algorithm/transferoptimization/package-info.java
deleted file mode 100644
index 22163201b6e..00000000000
--- a/application/src/main/java/org/opentripplanner/routing/algorithm/transferoptimization/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * Package documentation
- */
-package org.opentripplanner.routing.algorithm.transferoptimization;
diff --git a/application/src/main/java/org/opentripplanner/routing/graph/Graph.java b/application/src/main/java/org/opentripplanner/routing/graph/Graph.java
index bb1944d0c4b..04266476ae5 100644
--- a/application/src/main/java/org/opentripplanner/routing/graph/Graph.java
+++ b/application/src/main/java/org/opentripplanner/routing/graph/Graph.java
@@ -30,7 +30,7 @@
import org.opentripplanner.street.model.vertex.VertexLabel;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.framework.FeedScopedId;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -284,9 +284,9 @@ public int countEdges() {
* - graph. This allows a module to index the streetIndex BEFORE another module add
* - something that should go into the index; Hence, inconsistent data.
*/
- public void index(StopModel stopModel) {
+ public void index(SiteRepository siteRepository) {
LOG.info("Index street model...");
- streetIndex = new StreetIndex(this, stopModel);
+ streetIndex = new StreetIndex(this, siteRepository);
LOG.info("Index street model complete.");
}
@@ -297,7 +297,7 @@ public OpeningHoursCalendarService getOpeningHoursCalendarService() {
/**
* Get streetIndex, safe to use while routing, but do not use during graph build.
- * @see #getStreetIndexSafe(StopModel)
+ * @see #getStreetIndexSafe(SiteRepository)
*/
public StreetIndex getStreetIndex() {
return this.streetIndex;
@@ -307,14 +307,14 @@ public StreetIndex getStreetIndex() {
* Get streetIndex during graph build, both OSM street data and transit data must be loaded
* before calling this.
*/
- public StreetIndex getStreetIndexSafe(StopModel stopModel) {
- indexIfNotIndexed(stopModel);
+ public StreetIndex getStreetIndexSafe(SiteRepository siteRepository) {
+ indexIfNotIndexed(siteRepository);
return this.streetIndex;
}
/**
* Get VertexLinker, safe to use while routing, but do not use during graph build.
- * @see #getLinkerSafe(StopModel)
+ * @see #getLinkerSafe(SiteRepository)
*/
public VertexLinker getLinker() {
return streetIndex.getVertexLinker();
@@ -324,8 +324,8 @@ public VertexLinker getLinker() {
* Get VertexLinker during graph build, both OSM street data and transit data must be loaded
* before calling this.
*/
- public VertexLinker getLinkerSafe(StopModel stopModel) {
- indexIfNotIndexed(stopModel);
+ public VertexLinker getLinkerSafe(SiteRepository siteRepository) {
+ indexIfNotIndexed(siteRepository);
return streetIndex.getVertexLinker();
}
@@ -374,9 +374,9 @@ public void setFareService(FareService fareService) {
this.fareService = fareService;
}
- private void indexIfNotIndexed(StopModel stopModel) {
+ private void indexIfNotIndexed(SiteRepository siteRepository) {
if (streetIndex == null) {
- index(stopModel);
+ index(siteRepository);
}
}
}
diff --git a/application/src/main/java/org/opentripplanner/routing/graph/SerializedGraphObject.java b/application/src/main/java/org/opentripplanner/routing/graph/SerializedGraphObject.java
index 327428cfccb..e7e0c3248e8 100644
--- a/application/src/main/java/org/opentripplanner/routing/graph/SerializedGraphObject.java
+++ b/application/src/main/java/org/opentripplanner/routing/graph/SerializedGraphObject.java
@@ -184,7 +184,7 @@ private static SerializedGraphObject load(InputStream inputStream, String source
);
LOG.debug("Graph read.");
serObj.reconstructEdgeLists();
- serObj.timetableRepository.getStopModel().reindexAfterDeserialization();
+ serObj.timetableRepository.getSiteRepository().reindexAfterDeserialization();
serObj.timetableRepository.index();
logSerializationCompleteStatus(serObj.graph, serObj.timetableRepository);
return serObj;
@@ -261,7 +261,7 @@ private static void logSerializationCompleteStatus(
TimetableRepository timetableRepository
) {
var f = new OtpNumberFormat();
- var nStops = f.formatNumber(timetableRepository.getStopModel().stopIndexSize());
+ var nStops = f.formatNumber(timetableRepository.getSiteRepository().stopIndexSize());
var nTransfers = f.formatNumber(timetableRepository.getTransferService().listAll().size());
var nPatterns = f.formatNumber(timetableRepository.getAllTripPatterns().size());
var nVertices = f.formatNumber(graph.countVertices());
diff --git a/application/src/main/java/org/opentripplanner/routing/graph/index/StreetIndex.java b/application/src/main/java/org/opentripplanner/routing/graph/index/StreetIndex.java
index 362c87bff7d..90294d554cc 100644
--- a/application/src/main/java/org/opentripplanner/routing/graph/index/StreetIndex.java
+++ b/application/src/main/java/org/opentripplanner/routing/graph/index/StreetIndex.java
@@ -41,7 +41,7 @@
import org.opentripplanner.street.search.TraverseModeSet;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.site.RegularStop;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -57,7 +57,7 @@ public class StreetIndex {
private static final Logger LOG = LoggerFactory.getLogger(StreetIndex.class);
- private final StopModel stopModel;
+ private final SiteRepository siteRepository;
private final VertexLinker vertexLinker;
@@ -74,11 +74,11 @@ public class StreetIndex {
/**
* Should only be called by the graph.
*/
- public StreetIndex(Graph graph, StopModel stopModel) {
- this.stopModel = stopModel;
+ public StreetIndex(Graph graph, SiteRepository siteRepository) {
+ this.siteRepository = siteRepository;
this.edgeSpatialIndex = new EdgeSpatialIndex();
this.verticesTree = new HashGridSpatialIndex<>();
- this.vertexLinker = new VertexLinker(graph, stopModel, edgeSpatialIndex);
+ this.vertexLinker = new VertexLinker(graph, siteRepository, edgeSpatialIndex);
this.transitStopVertices = toImmutableMap(graph.getVerticesOfType(TransitStopVertex.class));
this.stationCentroidVertices = createStationCentroidVertexMap(graph);
postSetup(graph.getVertices());
@@ -195,7 +195,7 @@ public Set getStreetVerticesForLocation(
if (nonTransitMode.isInCar()) {
// Fetch coordinate from stop, if not given in request
if (location.stopId != null && location.getCoordinate() == null) {
- var coordinate = stopModel.getCoordinateById(location.stopId);
+ var coordinate = siteRepository.getCoordinateById(location.stopId);
if (coordinate != null) {
location =
new GenericLocation(
@@ -262,7 +262,7 @@ public Vertex createVertexForCoordinateForTest(
* @return The associated TransitStopVertex or all underlying TransitStopVertices
*/
public Set getStopOrChildStopsVertices(FeedScopedId id) {
- return stopModel
+ return siteRepository
.findStopOrChildStops(id)
.stream()
.filter(RegularStop.class::isInstance)
diff --git a/application/src/main/java/org/opentripplanner/routing/impl/TransitAlertServiceImpl.java b/application/src/main/java/org/opentripplanner/routing/impl/TransitAlertServiceImpl.java
index 2662eb7d3e5..04b58d050ee 100644
--- a/application/src/main/java/org/opentripplanner/routing/impl/TransitAlertServiceImpl.java
+++ b/application/src/main/java/org/opentripplanner/routing/impl/TransitAlertServiceImpl.java
@@ -86,7 +86,7 @@ public Collection getStopAlerts(
if (result.isEmpty()) {
// Search for alerts on parent-stop
if (timetableRepository != null) {
- var quay = timetableRepository.getStopModel().getRegularStop(stopId);
+ var quay = timetableRepository.getSiteRepository().getRegularStop(stopId);
if (quay != null) {
// TODO - SIRI: Add alerts from parent- and multimodal-stops
/*
diff --git a/application/src/main/java/org/opentripplanner/routing/linking/FlexLocationAdder.java b/application/src/main/java/org/opentripplanner/routing/linking/FlexLocationAdder.java
index 047e44f229a..e9d29f596c7 100644
--- a/application/src/main/java/org/opentripplanner/routing/linking/FlexLocationAdder.java
+++ b/application/src/main/java/org/opentripplanner/routing/linking/FlexLocationAdder.java
@@ -8,15 +8,19 @@
import org.opentripplanner.street.model.edge.StreetEdge;
import org.opentripplanner.street.model.vertex.IntersectionVertex;
import org.opentripplanner.transit.model.site.AreaStop;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
class FlexLocationAdder {
- static void addFlexLocations(StreetEdge edge, IntersectionVertex v0, StopModel stopModel) {
+ static void addFlexLocations(
+ StreetEdge edge,
+ IntersectionVertex v0,
+ SiteRepository siteRepository
+ ) {
if (edge.getPermission().allows(StreetTraversalPermission.PEDESTRIAN_AND_CAR)) {
Point p = GeometryUtils.getGeometryFactory().createPoint(v0.getCoordinate());
Envelope env = p.getEnvelopeInternal();
- for (AreaStop areaStop : stopModel.findAreaStops(env)) {
+ for (AreaStop areaStop : siteRepository.findAreaStops(env)) {
if (!areaStop.getGeometry().disjoint(p)) {
v0.addAreaStops(Set.of(areaStop));
}
diff --git a/application/src/main/java/org/opentripplanner/routing/linking/VertexLinker.java b/application/src/main/java/org/opentripplanner/routing/linking/VertexLinker.java
index 9616fbab792..48f5ff997c8 100644
--- a/application/src/main/java/org/opentripplanner/routing/linking/VertexLinker.java
+++ b/application/src/main/java/org/opentripplanner/routing/linking/VertexLinker.java
@@ -34,7 +34,7 @@
import org.opentripplanner.street.model.vertex.VertexFactory;
import org.opentripplanner.street.search.TraverseMode;
import org.opentripplanner.street.search.TraverseModeSet;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
/**
* This class links transit stops to streets by splitting the streets (unless the stop is extremely
@@ -71,7 +71,7 @@ public class VertexLinker {
private final Graph graph;
- private final StopModel stopModel;
+ private final SiteRepository siteRepository;
private final VertexFactory vertexFactory;
// TODO Temporary code until we refactor WalkableAreaBuilder (#3152)
@@ -81,11 +81,15 @@ public class VertexLinker {
* Construct a new VertexLinker. NOTE: Only one VertexLinker should be active on a graph at any
* given time.
*/
- public VertexLinker(Graph graph, StopModel stopModel, EdgeSpatialIndex edgeSpatialIndex) {
+ public VertexLinker(
+ Graph graph,
+ SiteRepository siteRepository,
+ EdgeSpatialIndex edgeSpatialIndex
+ ) {
this.edgeSpatialIndex = edgeSpatialIndex;
this.graph = graph;
this.vertexFactory = new VertexFactory(graph);
- this.stopModel = stopModel;
+ this.siteRepository = siteRepository;
}
public void linkVertexPermanently(
@@ -397,7 +401,7 @@ else if (
}
// TODO Consider moving this code
if (OTPFeature.FlexRouting.isOn()) {
- FlexLocationAdder.addFlexLocations(edge, start, stopModel);
+ FlexLocationAdder.addFlexLocations(edge, start, siteRepository);
}
return start;
diff --git a/application/src/main/java/org/opentripplanner/standalone/OTPMain.java b/application/src/main/java/org/opentripplanner/standalone/OTPMain.java
index 915b7091ba6..a8096d806ba 100644
--- a/application/src/main/java/org/opentripplanner/standalone/OTPMain.java
+++ b/application/src/main/java/org/opentripplanner/standalone/OTPMain.java
@@ -188,7 +188,7 @@ private static void detectUnusedConfigParams(CommandLineParameters cli, ConfigMo
private static void startOtpWebServer(CommandLineParameters params, ConstructApplication app) {
// Index graph for travel search
app.timetableRepository().index();
- app.graph().index(app.timetableRepository().getStopModel());
+ app.graph().index(app.timetableRepository().getSiteRepository());
// publishing the config version info make it available to the APIs
setOtpConfigVersionsOnServerInfo(app);
diff --git a/application/src/main/java/org/opentripplanner/standalone/config/configure/ConfigModule.java b/application/src/main/java/org/opentripplanner/standalone/config/configure/ConfigModule.java
index b7d7084f7ba..4f75f3984d5 100644
--- a/application/src/main/java/org/opentripplanner/standalone/config/configure/ConfigModule.java
+++ b/application/src/main/java/org/opentripplanner/standalone/config/configure/ConfigModule.java
@@ -3,12 +3,14 @@
import dagger.Module;
import dagger.Provides;
import jakarta.inject.Singleton;
+import org.opentripplanner.raptor.api.request.RaptorEnvironment;
import org.opentripplanner.raptor.configure.RaptorConfig;
import org.opentripplanner.routing.algorithm.raptoradapter.transit.TripSchedule;
import org.opentripplanner.standalone.config.BuildConfig;
import org.opentripplanner.standalone.config.ConfigModel;
import org.opentripplanner.standalone.config.OtpConfig;
import org.opentripplanner.standalone.config.RouterConfig;
+import org.opentripplanner.standalone.config.routerconfig.RaptorEnvironmentFactory;
/**
* Map {@link ConfigModel} into more specific types like {@link BuildConfig} to simplify
@@ -34,7 +36,17 @@ static RouterConfig provideRouterConfig(ConfigModel model) {
@Provides
@Singleton
- static RaptorConfig providesRaptorConfig(ConfigModel config) {
- return new RaptorConfig<>(config.routerConfig().transitTuningConfig());
+ static RaptorConfig providesRaptorConfig(
+ RouterConfig routerConfig,
+ RaptorEnvironment environment
+ ) {
+ return new RaptorConfig<>(routerConfig.transitTuningConfig(), environment);
+ }
+
+ @Provides
+ @Singleton
+ static RaptorEnvironment providesRaptorEnvironment(RouterConfig routerConfig) {
+ int searchThreadPoolSize = routerConfig.transitTuningConfig().searchThreadPoolSize();
+ return RaptorEnvironmentFactory.create(searchThreadPoolSize);
}
}
diff --git a/application/src/main/java/org/opentripplanner/standalone/config/routerconfig/RaptorEnvironmentFactory.java b/application/src/main/java/org/opentripplanner/standalone/config/routerconfig/RaptorEnvironmentFactory.java
new file mode 100644
index 00000000000..e2cd5d6dee7
--- /dev/null
+++ b/application/src/main/java/org/opentripplanner/standalone/config/routerconfig/RaptorEnvironmentFactory.java
@@ -0,0 +1,41 @@
+package org.opentripplanner.standalone.config.routerconfig;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import javax.annotation.Nullable;
+import org.opentripplanner.framework.application.OTPRequestTimeoutException;
+import org.opentripplanner.framework.concurrent.OtpRequestThreadFactory;
+import org.opentripplanner.raptor.api.request.RaptorEnvironment;
+
+/**
+ * Create {@link RaptorEnvironment} from config and adapt it to the OTP application.
+ */
+public class RaptorEnvironmentFactory {
+
+ public static RaptorEnvironment create(final int threadPoolSize) {
+ return new RaptorEnvironment() {
+ @Override
+ public Runnable timeoutHook() {
+ return OTPRequestTimeoutException::checkForTimeout;
+ }
+
+ /**
+ * OTP web server will interrupt all request threads in case of a timeout. In OTP
+ * such events should be mapped to {@link OTPRequestTimeoutException}, witch will
+ * later be mapped to the right API response.
+ */
+ @Override
+ public RuntimeException mapInterruptedException(InterruptedException e) {
+ return new OTPRequestTimeoutException();
+ }
+
+ @Nullable
+ @Override
+ public ExecutorService threadPool() {
+ return threadPoolSize > 0
+ ? Executors.newFixedThreadPool(threadPoolSize, OtpRequestThreadFactory.of("raptor-%d"))
+ : null;
+ }
+ };
+ }
+}
diff --git a/application/src/main/java/org/opentripplanner/standalone/config/routerconfig/TransitRoutingConfig.java b/application/src/main/java/org/opentripplanner/standalone/config/routerconfig/TransitRoutingConfig.java
index 34465cff27a..74dbfd4bab9 100644
--- a/application/src/main/java/org/opentripplanner/standalone/config/routerconfig/TransitRoutingConfig.java
+++ b/application/src/main/java/org/opentripplanner/standalone/config/routerconfig/TransitRoutingConfig.java
@@ -112,7 +112,7 @@ public TransitRoutingConfig(
no extra threads are started and the search is done in one thread.
"""
)
- .asInt(dft.searchThreadPoolSize());
+ .asInt(0);
// Dynamic Search Window
this.stopBoardAlightDuringTransferCost =
c
@@ -244,7 +244,6 @@ public int iterationDepartureStepInSeconds() {
return iterationDepartureStepInSeconds;
}
- @Override
public int searchThreadPoolSize() {
return searchThreadPoolSize;
}
diff --git a/application/src/main/java/org/opentripplanner/street/model/edge/StreetEdge.java b/application/src/main/java/org/opentripplanner/street/model/edge/StreetEdge.java
index 92244fe2af2..505d2a95a3a 100644
--- a/application/src/main/java/org/opentripplanner/street/model/edge/StreetEdge.java
+++ b/application/src/main/java/org/opentripplanner/street/model/edge/StreetEdge.java
@@ -381,6 +381,21 @@ else if (s0.currentMode() == TraverseMode.BICYCLE) {
State state = editor != null ? editor.makeState() : null;
+ // Add an explicit bike-walking state for no-thru-traffic edges, so that dismounting and walking
+ // is an option to avoid the restriction
+ if (
+ s0.getBackMode() == TraverseMode.BICYCLE &&
+ canTraverse(TraverseMode.BICYCLE) &&
+ isBicycleNoThruTraffic() &&
+ !s0.hasEnteredNoThruTrafficArea()
+ ) {
+ var bikeWalk = doTraverse(s0, TraverseMode.WALK, true);
+ if (bikeWalk != null) {
+ State forkState = bikeWalk.makeState();
+ return State.ofNullable(forkState, state);
+ }
+ }
+
// we are transitioning into a no-drop-off zone therefore we add a second state for dropping
// off the vehicle and walking
if (state != null && !fromv.rentalDropOffBanned(s0) && tov.rentalDropOffBanned(s0)) {
diff --git a/application/src/main/java/org/opentripplanner/transit/model/basic/TransitMode.java b/application/src/main/java/org/opentripplanner/transit/model/basic/TransitMode.java
index e25cb435887..507b033f645 100644
--- a/application/src/main/java/org/opentripplanner/transit/model/basic/TransitMode.java
+++ b/application/src/main/java/org/opentripplanner/transit/model/basic/TransitMode.java
@@ -69,7 +69,7 @@ public String enumValueDescription() {
case TRAM -> "Tram, streetcar or light rail. Used for any light rail or street level system within a metropolitan area.";
case FERRY -> "Used for short- and long-distance boat service.";
case AIRPLANE -> "Taking an airplane";
- case CABLE_CAR -> "Used for street-level cable cars where the cable runs beneath the car.";
+ case CABLE_CAR -> "Used for street-level rail cars where the cable runs beneath the vehicle.";
case GONDOLA -> "Gondola or suspended cable car. Typically used for aerial cable cars where the car is suspended from the cable.";
case FUNICULAR -> "Used for any rail system that moves on steep inclines with a cable traction system.";
case TROLLEYBUS -> "Used for trolleybus systems which draw power from overhead wires using poles on the roof of the vehicle.";
diff --git a/application/src/main/java/org/opentripplanner/transit/model/network/Route.java b/application/src/main/java/org/opentripplanner/transit/model/network/Route.java
index 206e65f7af9..bd868fba10d 100644
--- a/application/src/main/java/org/opentripplanner/transit/model/network/Route.java
+++ b/application/src/main/java/org/opentripplanner/transit/model/network/Route.java
@@ -156,6 +156,9 @@ public Integer getGtfsSortOrder() {
return gtfsSortOrder;
}
+ /**
+ * Returns the NeTEx submode for the route. Will return UNKNOWN by default.
+ */
public SubMode getNetexSubmode() {
return netexSubmode;
}
diff --git a/application/src/main/java/org/opentripplanner/transit/model/package.md b/application/src/main/java/org/opentripplanner/transit/model/package.md
index 9c10c88828c..26ed7facde3 100644
--- a/application/src/main/java/org/opentripplanner/transit/model/package.md
+++ b/application/src/main/java/org/opentripplanner/transit/model/package.md
@@ -23,10 +23,9 @@ All transit entities must have an ID. Transit entities ar "root" level are consi
roots_.
-#### @Nonnull and @Nullable entity fields
+#### Non-null and nullable entity fields
-All fields getters(except primitive types) should be annotated with `@Nullable` or `@Nonnull`. None
-null field should be enforced in the Entity constructor by using `Objects.requireNonNull`,
+Non-nullability of fields should be enforced in the Entity constructor by using `Objects.requireNonNull`,
`Objects.requireNonNullElse` or `ObjectUtils.ifNotNull`. We should enforce this for all fields
required in both GTFS and in the Nordic NeTEx Profile. For enumeration types using a special value
like `UNKNOWN` is preferred over making the field optional.
diff --git a/application/src/main/java/org/opentripplanner/transit/model/timetable/Trip.java b/application/src/main/java/org/opentripplanner/transit/model/timetable/Trip.java
index 53ec7207adc..6e829e15866 100644
--- a/application/src/main/java/org/opentripplanner/transit/model/timetable/Trip.java
+++ b/application/src/main/java/org/opentripplanner/transit/model/timetable/Trip.java
@@ -34,23 +34,35 @@
*/
public final class Trip extends AbstractTransitEntity implements LogInfo {
- private final Operator operator;
private final Route route;
- private final FeedScopedId serviceId;
- private final String shortName;
private final TransitMode mode;
- private final SubMode netexSubmode;
- private final I18NString headsign;
- private final FeedScopedId shapeId;
-
private final Direction direction;
private final BikeAccess bikesAllowed;
private final Accessibility wheelchairBoarding;
+ private final SubMode netexSubmode;
+ private final TripAlteration netexAlteration;
+
+ @Nullable
+ private final Operator operator;
+
+ @Nullable
+ private final FeedScopedId serviceId;
+
+ @Nullable
+ private final String shortName;
+
+ @Nullable
+ private final I18NString headsign;
+
+ @Nullable
+ private final FeedScopedId shapeId;
+
+ @Nullable
private final String gtfsBlockId;
+ @Nullable
private final String netexInternalPlanningCode;
- private final TripAlteration netexAlteration;
Trip(TripBuilder builder) {
super(builder.getId());
diff --git a/application/src/main/java/org/opentripplanner/transit/service/DefaultTransitService.java b/application/src/main/java/org/opentripplanner/transit/service/DefaultTransitService.java
index 62d8a727615..2ce99e7809b 100644
--- a/application/src/main/java/org/opentripplanner/transit/service/DefaultTransitService.java
+++ b/application/src/main/java/org/opentripplanner/transit/service/DefaultTransitService.java
@@ -146,18 +146,18 @@ public Collection getNotices() {
@Override
public Station getStationById(FeedScopedId id) {
- return this.timetableRepository.getStopModel().getStationById(id);
+ return this.timetableRepository.getSiteRepository().getStationById(id);
}
@Override
public MultiModalStation getMultiModalStation(FeedScopedId id) {
- return this.timetableRepository.getStopModel().getMultiModalStation(id);
+ return this.timetableRepository.getSiteRepository().getMultiModalStation(id);
}
@Override
public Collection getStations() {
OTPRequestTimeoutException.checkForTimeout();
- return this.timetableRepository.getStopModel().listStations();
+ return this.timetableRepository.getSiteRepository().listStations();
}
@Override
@@ -174,7 +174,7 @@ public TIntSet getServiceCodesRunningForDate(LocalDate serviceDate) {
@Override
public AreaStop getAreaStop(FeedScopedId id) {
- return this.timetableRepository.getStopModel().getAreaStop(id);
+ return this.timetableRepository.getSiteRepository().getAreaStop(id);
}
@Override
@@ -184,7 +184,7 @@ public Agency getAgencyForId(FeedScopedId id) {
@Override
public RegularStop getRegularStop(FeedScopedId id) {
- return this.timetableRepository.getStopModel().getRegularStop(id);
+ return this.timetableRepository.getSiteRepository().getRegularStop(id);
}
@Override
@@ -240,40 +240,40 @@ public Operator getOperatorForId(FeedScopedId id) {
@Override
public Collection listStopLocations() {
OTPRequestTimeoutException.checkForTimeout();
- return timetableRepository.getStopModel().listStopLocations();
+ return timetableRepository.getSiteRepository().listStopLocations();
}
@Override
public Collection listRegularStops() {
OTPRequestTimeoutException.checkForTimeout();
- return timetableRepository.getStopModel().listRegularStops();
+ return timetableRepository.getSiteRepository().listRegularStops();
}
@Override
public Collection listGroupStops() {
OTPRequestTimeoutException.checkForTimeout();
- return timetableRepository.getStopModel().listGroupStops();
+ return timetableRepository.getSiteRepository().listGroupStops();
}
@Override
public StopLocation getStopLocation(FeedScopedId id) {
- return timetableRepository.getStopModel().getStopLocation(id);
+ return timetableRepository.getSiteRepository().getStopLocation(id);
}
@Override
public Collection getStopOrChildStops(FeedScopedId id) {
- return timetableRepository.getStopModel().findStopOrChildStops(id);
+ return timetableRepository.getSiteRepository().findStopOrChildStops(id);
}
@Override
public Collection listStopLocationGroups() {
OTPRequestTimeoutException.checkForTimeout();
- return timetableRepository.getStopModel().listStopLocationGroups();
+ return timetableRepository.getSiteRepository().listStopLocationGroups();
}
@Override
public StopLocationsGroup getStopLocationsGroup(FeedScopedId id) {
- return timetableRepository.getStopModel().getStopLocationsGroup(id);
+ return timetableRepository.getSiteRepository().getStopLocationsGroup(id);
}
@Override
@@ -359,7 +359,7 @@ public Collection getPatternsForRoute(Route route) {
@Override
public MultiModalStation getMultiModalStationForStation(Station station) {
- return this.timetableRepository.getStopModel().getMultiModalStationForStation(station);
+ return this.timetableRepository.getSiteRepository().getMultiModalStationForStation(station);
}
/**
@@ -683,13 +683,13 @@ public ZonedDateTime getTransitServiceStarts() {
@Override
public Collection findRegularStops(Envelope envelope) {
OTPRequestTimeoutException.checkForTimeout();
- return timetableRepository.getStopModel().findRegularStops(envelope);
+ return timetableRepository.getSiteRepository().findRegularStops(envelope);
}
@Override
public Collection findAreaStops(Envelope envelope) {
OTPRequestTimeoutException.checkForTimeout();
- return timetableRepository.getStopModel().findAreaStops(envelope);
+ return timetableRepository.getSiteRepository().findAreaStops(envelope);
}
@Override
diff --git a/application/src/main/java/org/opentripplanner/transit/service/StopModel.java b/application/src/main/java/org/opentripplanner/transit/service/SiteRepository.java
similarity index 88%
rename from application/src/main/java/org/opentripplanner/transit/service/StopModel.java
rename to application/src/main/java/org/opentripplanner/transit/service/SiteRepository.java
index 4f55ca25b5b..6c9d591933a 100644
--- a/application/src/main/java/org/opentripplanner/transit/service/StopModel.java
+++ b/application/src/main/java/org/opentripplanner/transit/service/SiteRepository.java
@@ -26,9 +26,9 @@
/**
* Repository for Stop entities.
*/
-public class StopModel implements Serializable {
+public class SiteRepository implements Serializable {
- private static final Logger LOG = LoggerFactory.getLogger(StopModel.class);
+ private static final Logger LOG = LoggerFactory.getLogger(SiteRepository.class);
private final AtomicInteger stopIndexCounter;
private final Map regularStopById;
@@ -37,10 +37,10 @@ public class StopModel implements Serializable {
private final Map groupOfStationsById;
private final Map areaStopById;
private final Map groupStopById;
- private transient StopModelIndex index;
+ private transient SiteRepositoryIndex index;
@Inject
- public StopModel() {
+ public SiteRepository() {
this.stopIndexCounter = new AtomicInteger(0);
this.regularStopById = Map.of();
this.stationById = Map.of();
@@ -51,7 +51,7 @@ public StopModel() {
this.index = createIndex();
}
- StopModel(StopModelBuilder builder) {
+ SiteRepository(SiteRepositoryBuilder builder) {
this.stopIndexCounter = builder.stopIndexCounter();
this.regularStopById = builder.regularStopsById().asImmutableMap();
this.stationById = builder.stationById().asImmutableMap();
@@ -67,7 +67,7 @@ public StopModel() {
* method, if not this method will fail! If a duplicate key exist, then child value is kept -
* this feature is normally not allowed, but not enforced here.
*/
- private StopModel(StopModel main, StopModel child) {
+ private SiteRepository(SiteRepository main, SiteRepository child) {
this.stopIndexCounter = assertSameStopIndexCounterIsUsedToCreateBothModels(main, child);
this.areaStopById = MapUtils.combine(main.areaStopById, child.areaStopById);
this.regularStopById = MapUtils.combine(main.regularStopById, child.regularStopById);
@@ -83,28 +83,28 @@ private StopModel(StopModel main, StopModel child) {
/**
* Create a new builder based on an empty model. This is useful in unit-tests, but should
* NOT be used in the main code. It is not possible to merge the result with another
- * {@link StopModel}, because they do not share the same context(stopIndexCounter).
+ * {@link SiteRepository}, because they do not share the same context(stopIndexCounter).
*
* In the application code the correct way is to retrieve a model instance and then use the
* {@link #withContext()} method to create a builder.
*/
- public static StopModelBuilder of() {
- return new StopModelBuilder(new AtomicInteger(0));
+ public static SiteRepositoryBuilder of() {
+ return new SiteRepositoryBuilder(new AtomicInteger(0));
}
/**
* Create a new builder attached to the existing model. The entities of the existing model are
* NOT copied into the builder, but the builder has access to the model - allowing it to check
* for duplicates and injecting information from the model(indexing). The changes in the
- * StopModelBuilder can then be merged into the original model - this is for now left to the
+ * SiteRepositoryBuilder can then be merged into the original model - this is for now left to the
* caller.
*
* USE THIS TO CREATE A SAFE BUILDER IN PRODUCTION CODE. You MAY use this method in unit-tests,
* the alternative is the {@link #of()} method. This method should be used if the test have a
- * StopModel and the {@link #of()} method should be used if a stop-model in not needed.
+ * SiteRepository and the {@link #of()} method should be used if a stop-model in not needed.
*/
- public StopModelBuilder withContext() {
- return new StopModelBuilder(this.stopIndexCounter);
+ public SiteRepositoryBuilder withContext() {
+ return new SiteRepositoryBuilder(this.stopIndexCounter);
}
/**
@@ -282,24 +282,24 @@ public Collection findStopOrChildStops(FeedScopedId id) {
}
/**
- * Call this method after deserializing this class. This will reindex the StopModel.
+ * Call this method after deserializing this class. This will reindex the SiteRepository.
*/
public void reindexAfterDeserialization() {
reindex();
}
- public StopModel merge(StopModel child) {
- return new StopModel(this, child);
+ public SiteRepository merge(SiteRepository child) {
+ return new SiteRepository(this, child);
}
private void reindex() {
- LOG.info("Index stop model...");
+ LOG.info("Index site repository...");
index = createIndex();
- LOG.info("Index stop model complete.");
+ LOG.info("Index site repository complete.");
}
- private StopModelIndex createIndex() {
- return new StopModelIndex(
+ private SiteRepositoryIndex createIndex() {
+ return new SiteRepositoryIndex(
regularStopById.values(),
areaStopById.values(),
groupStopById.values(),
@@ -328,13 +328,13 @@ private static V getById(FeedScopedId id, Map...
*/
@SuppressWarnings("NumberEquality")
private static AtomicInteger assertSameStopIndexCounterIsUsedToCreateBothModels(
- StopModel main,
- StopModel child
+ SiteRepository main,
+ SiteRepository child
) {
if (main.stopIndexCounter != child.stopIndexCounter) {
throw new IllegalArgumentException(
- "Two Stop models can only be merged if they are created with the same stopIndexCounter. " +
- "This is archived by using the 'StopModel.withContext()' method. We do this to avoid " +
+ "Two Stop repositories can only be merged if they are created with the same stopIndexCounter. " +
+ "This is archived by using the 'SiteRepository.withContext()' method. We do this to avoid " +
"duplicates/gaps in the stopIndex."
);
}
diff --git a/application/src/main/java/org/opentripplanner/transit/service/StopModelBuilder.java b/application/src/main/java/org/opentripplanner/transit/service/SiteRepositoryBuilder.java
similarity index 78%
rename from application/src/main/java/org/opentripplanner/transit/service/StopModelBuilder.java
rename to application/src/main/java/org/opentripplanner/transit/service/SiteRepositoryBuilder.java
index 52ac778c559..a5c89c2a741 100644
--- a/application/src/main/java/org/opentripplanner/transit/service/StopModelBuilder.java
+++ b/application/src/main/java/org/opentripplanner/transit/service/SiteRepositoryBuilder.java
@@ -17,7 +17,7 @@
import org.opentripplanner.transit.model.site.RegularStopBuilder;
import org.opentripplanner.transit.model.site.Station;
-public class StopModelBuilder {
+public class SiteRepositoryBuilder {
private final AtomicInteger stopIndexCounter;
@@ -28,7 +28,7 @@ public class StopModelBuilder {
private final EntityById multiModalStationById = new DefaultEntityById<>();
private final EntityById groupOfStationById = new DefaultEntityById<>();
- StopModelBuilder(AtomicInteger stopIndexCounter) {
+ SiteRepositoryBuilder(AtomicInteger stopIndexCounter) {
this.stopIndexCounter = stopIndexCounter;
}
@@ -47,12 +47,12 @@ public RegularStop computeRegularStopIfAbsent(
return regularStopById.computeIfAbsent(id, factory);
}
- public StopModelBuilder withRegularStop(RegularStop stop) {
+ public SiteRepositoryBuilder withRegularStop(RegularStop stop) {
regularStopById.add(stop);
return this;
}
- public StopModelBuilder withRegularStops(Collection stops) {
+ public SiteRepositoryBuilder withRegularStops(Collection stops) {
regularStopById.addAll(stops);
return this;
}
@@ -61,7 +61,7 @@ public ImmutableEntityById stationById() {
return stationById;
}
- public StopModelBuilder withStation(Station station) {
+ public SiteRepositoryBuilder withStation(Station station) {
stationById.add(station);
return this;
}
@@ -70,7 +70,7 @@ public Station computeStationIfAbsent(FeedScopedId id, Function stations) {
+ public SiteRepositoryBuilder withStations(Collection stations) {
stationById.addAll(stations);
return this;
}
@@ -79,7 +79,7 @@ public ImmutableEntityById multiModalStationById() {
return multiModalStationById;
}
- public StopModelBuilder withMultiModalStation(MultiModalStation station) {
+ public SiteRepositoryBuilder withMultiModalStation(MultiModalStation station) {
multiModalStationById.add(station);
return this;
}
@@ -88,7 +88,7 @@ public ImmutableEntityById groupOfStationById() {
return groupOfStationById;
}
- public StopModelBuilder withGroupOfStation(GroupOfStations station) {
+ public SiteRepositoryBuilder withGroupOfStation(GroupOfStations station) {
groupOfStationById.add(station);
return this;
}
@@ -101,12 +101,12 @@ public ImmutableEntityById areaStopById() {
return areaStopById;
}
- public StopModelBuilder withAreaStop(AreaStop stop) {
+ public SiteRepositoryBuilder withAreaStop(AreaStop stop) {
areaStopById.add(stop);
return this;
}
- public StopModelBuilder withAreaStops(Collection stops) {
+ public SiteRepositoryBuilder withAreaStops(Collection stops) {
areaStopById.addAll(stops);
return this;
}
@@ -119,21 +119,21 @@ public ImmutableEntityById groupStopById() {
return groupStopById;
}
- public StopModelBuilder withGroupStop(GroupStop group) {
+ public SiteRepositoryBuilder withGroupStop(GroupStop group) {
groupStopById.add(group);
return this;
}
- public StopModelBuilder withGroupStops(Collection groups) {
+ public SiteRepositoryBuilder withGroupStops(Collection groups) {
groupStopById.addAll(groups);
return this;
}
/**
- * Add the content of another stop model. There are no collision check, entities in the given
+ * Add the content of another site repository. There are no collision check, entities in the given
* {@code other} model, will replace existing entities.
*/
- public StopModelBuilder addAll(StopModel other) {
+ public SiteRepositoryBuilder addAll(SiteRepository other) {
regularStopById.addAll(other.listRegularStops());
stationById.addAll(other.listStations());
multiModalStationById.addAll(other.listMultiModalStations());
@@ -143,8 +143,8 @@ public StopModelBuilder addAll(StopModel other) {
return this;
}
- public StopModel build() {
- return new StopModel(this);
+ public SiteRepository build() {
+ return new SiteRepository(this);
}
AtomicInteger stopIndexCounter() {
diff --git a/application/src/main/java/org/opentripplanner/transit/service/StopModelIndex.java b/application/src/main/java/org/opentripplanner/transit/service/StopModelIndex.java
index c12c6f715f7..48048101b3d 100644
--- a/application/src/main/java/org/opentripplanner/transit/service/StopModelIndex.java
+++ b/application/src/main/java/org/opentripplanner/transit/service/StopModelIndex.java
@@ -24,9 +24,9 @@
* For performance reasons these indexes are not part of the serialized state of the graph.
* They are rebuilt at runtime after graph deserialization.
*/
-class StopModelIndex {
+class SiteRepositoryIndex {
- private static final Logger LOG = LoggerFactory.getLogger(StopModelIndex.class);
+ private static final Logger LOG = LoggerFactory.getLogger(SiteRepositoryIndex.class);
private final HashGridSpatialIndex regularStopSpatialIndex = new HashGridSpatialIndex<>();
private final Map multiModalStationForStations = new HashMap<>();
@@ -36,7 +36,7 @@ class StopModelIndex {
/**
* @param stops All stops including regular transit and flex
*/
- StopModelIndex(
+ SiteRepositoryIndex(
Collection stops,
Collection flexStops,
Collection groupStops,
diff --git a/application/src/main/java/org/opentripplanner/transit/service/TimetableRepository.java b/application/src/main/java/org/opentripplanner/transit/service/TimetableRepository.java
index dc092cc26c2..6dec0c09eb6 100644
--- a/application/src/main/java/org/opentripplanner/transit/service/TimetableRepository.java
+++ b/application/src/main/java/org/opentripplanner/transit/service/TimetableRepository.java
@@ -96,7 +96,7 @@ public class TimetableRepository implements Serializable {
private final Multimap transfersByStop = HashMultimap.create();
- private StopModel stopModel;
+ private SiteRepository siteRepository;
private ZonedDateTime transitServiceStarts = LocalDate.MAX.atStartOfDay(ZoneId.systemDefault());
private ZonedDateTime transitServiceEnds = LocalDate.MIN.atStartOfDay(ZoneId.systemDefault());
@@ -145,14 +145,14 @@ public class TimetableRepository implements Serializable {
private transient TransitAlertService transitAlertService;
@Inject
- public TimetableRepository(StopModel stopModel, Deduplicator deduplicator) {
- this.stopModel = Objects.requireNonNull(stopModel);
+ public TimetableRepository(SiteRepository siteRepository, Deduplicator deduplicator) {
+ this.siteRepository = Objects.requireNonNull(siteRepository);
this.deduplicator = deduplicator;
}
/** No-argument constructor, required for deserialization. */
public TimetableRepository() {
- this(new StopModel(), new Deduplicator());
+ this(new SiteRepository(), new Deduplicator());
}
/**
@@ -163,7 +163,7 @@ public TimetableRepository() {
public void index() {
if (index == null) {
LOG.info("Index transit model...");
- // the transit model indexing updates the stop model index (flex stops added to the stop index)
+ // the transit model indexing updates the site repository index (flex stops added to the stop index)
this.index = new TimetableRepositoryIndex(this);
LOG.info("Index transit model complete.");
}
@@ -430,8 +430,8 @@ public Collection getTransfersByStop(StopLocation stop) {
return transfersByStop.get(stop);
}
- public StopModel getStopModel() {
- return stopModel;
+ public SiteRepository getSiteRepository() {
+ return siteRepository;
}
public void addTripPattern(FeedScopedId id, TripPattern tripPattern) {
@@ -499,11 +499,11 @@ public void setTransitLayerUpdater(TransitLayerUpdater transitLayerUpdater) {
}
/**
- * Updating the stop model is only allowed during graph build
+ * Updating the site repository is only allowed during graph build
*/
- public void mergeStopModels(StopModel childStopModel) {
+ public void mergeSiteRepositories(SiteRepository childSiteRepository) {
invalidateIndex();
- this.stopModel = this.stopModel.merge(childStopModel);
+ this.siteRepository = this.siteRepository.merge(childSiteRepository);
}
public void addFlexTrip(FeedScopedId id, FlexTrip, ?> flexTrip) {
diff --git a/application/src/main/java/org/opentripplanner/updater/siri/AddedTripBuilder.java b/application/src/main/java/org/opentripplanner/updater/siri/AddedTripBuilder.java
index c3bb31ed068..3be1bcbc4a2 100644
--- a/application/src/main/java/org/opentripplanner/updater/siri/AddedTripBuilder.java
+++ b/application/src/main/java/org/opentripplanner/updater/siri/AddedTripBuilder.java
@@ -199,7 +199,7 @@ Result build() {
stopSequence == (calls.size() - 1)
);
- // Drop this update if the call refers to an unknown stop (not present in the stop model).
+ // Drop this update if the call refers to an unknown stop (not present in the site repository).
if (stopTime == null) {
return UpdateError.result(tripId, NO_VALID_STOPS);
}
@@ -335,7 +335,7 @@ private Trip createTrip(Route route, FeedScopedId calServiceId) {
}
/**
- * Map the call to a StopTime or return null if the stop cannot be found in the stop model.
+ * Map the call to a StopTime or return null if the stop cannot be found in the site repository.
*/
private StopTime createStopTime(
Trip trip,
diff --git a/application/src/main/java/org/opentripplanner/visualizer/package-info.java b/application/src/main/java/org/opentripplanner/visualizer/package-info.java
deleted file mode 100644
index e189c27956f..00000000000
--- a/application/src/main/java/org/opentripplanner/visualizer/package-info.java
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * This package contains classes used for visualizing OpenTripPlanner graphs. This graph visualizer
- * is intended for debugging purposes and may therefore have arcane developer-oriented features and
- * grow new UI components as needed.
- */
-package org.opentripplanner.visualizer;
diff --git a/application/src/main/java/org/opentripplanner/visualizer/package-info.md b/application/src/main/java/org/opentripplanner/visualizer/package-info.md
new file mode 100644
index 00000000000..f1b60dde32f
--- /dev/null
+++ b/application/src/main/java/org/opentripplanner/visualizer/package-info.md
@@ -0,0 +1,5 @@
+# Graph visualizer
+
+This package contains classes used for visualizing OpenTripPlanner graphs. This graph visualizer
+is intended for debugging purposes and may therefore have arcane developer-oriented features and
+grow new UI components as needed.
diff --git a/application/src/main/resources/org/opentripplanner/apis/gtfs/schema.graphqls b/application/src/main/resources/org/opentripplanner/apis/gtfs/schema.graphqls
index 839fd3c6d61..00eb1eac565 100644
--- a/application/src/main/resources/org/opentripplanner/apis/gtfs/schema.graphqls
+++ b/application/src/main/resources/org/opentripplanner/apis/gtfs/schema.graphqls
@@ -3838,18 +3838,28 @@ input InputModeWeight {
BUS: Float
"The weight of CABLE_CAR traverse mode. Values over 1 add cost to cable car travel and values under 1 decrease cost"
CABLE_CAR: Float
+ "The weight of CARPOOL traverse mode. Values over 1 add cost to carpool travel and values under 1 decrease cost"
+ CARPOOL: Float
+ "The weight of COACH traverse mode. Values over 1 add cost to coach travel and values under 1 decrease cost"
+ COACH: Float
"The weight of FERRY traverse mode. Values over 1 add cost to ferry travel and values under 1 decrease cost"
FERRY: Float
"The weight of FUNICULAR traverse mode. Values over 1 add cost to funicular travel and values under 1 decrease cost"
FUNICULAR: Float
"The weight of GONDOLA traverse mode. Values over 1 add cost to gondola travel and values under 1 decrease cost"
GONDOLA: Float
+ "The weight of MONORAIL traverse mode. Values over 1 add cost to monorail travel and values under 1 decrease cost"
+ MONORAIL: Float
"The weight of RAIL traverse mode. Values over 1 add cost to rail travel and values under 1 decrease cost"
RAIL: Float
"The weight of SUBWAY traverse mode. Values over 1 add cost to subway travel and values under 1 decrease cost"
SUBWAY: Float
+ "The weight of TAXI traverse mode. Values over 1 add cost to taxi travel and values under 1 decrease cost"
+ TAXI: Float
"The weight of TRAM traverse mode. Values over 1 add cost to tram travel and values under 1 decrease cost"
TRAM: Float
+ "The weight of TROLLEYBUS traverse mode. Values over 1 add cost to trolleybus travel and values under 1 decrease cost"
+ TROLLEYBUS: Float
}
input InputPreferred {
diff --git a/application/src/main/resources/org/opentripplanner/apis/transmodel/schema.graphql b/application/src/main/resources/org/opentripplanner/apis/transmodel/schema.graphql
index 2f3aef2d9a2..1ef883b4038 100644
--- a/application/src/main/resources/org/opentripplanner/apis/transmodel/schema.graphql
+++ b/application/src/main/resources/org/opentripplanner/apis/transmodel/schema.graphql
@@ -1382,7 +1382,7 @@ type TripSearchData {
nextDateTime: DateTime @deprecated(reason : "Use pageCursor instead")
"This is the suggested search time for the \"previous page\" or time-window. Insert it together with the 'searchWindowUsed' in the request to get a new set of trips preceding in the time-window BEFORE the current search."
prevDateTime: DateTime @deprecated(reason : "Use pageCursor instead")
- "This is the time window used by the raptor search. The input searchWindow is an optional parameter and is dynamically assigned if not set. OTP might override the value if it is too small or too large. When paging OTP adjusts it to the appropriate size, depending on the number of itineraries found in the current search window. The scaling of the search window ensures faster paging and limits resource usage. The unit is seconds."
+ "This is the time window used by the raptor search. The input searchWindow is an optional parameter and is dynamically assigned if not set. OTP might override the value if it is too small or too large. When paging OTP adjusts it to the appropriate size, depending on the number of itineraries found in the current search window. The scaling of the search window ensures faster paging and limits resource usage. The unit is minutes."
searchWindowUsed: Int!
}
diff --git a/application/src/test/java/org/opentripplanner/ConstantsForTests.java b/application/src/test/java/org/opentripplanner/ConstantsForTests.java
index 241cc245da1..aeacc11eca4 100644
--- a/application/src/test/java/org/opentripplanner/ConstantsForTests.java
+++ b/application/src/test/java/org/opentripplanner/ConstantsForTests.java
@@ -43,7 +43,7 @@
import org.opentripplanner.test.support.ResourceLoader;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.framework.FeedScopedId;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
public class ConstantsForTests {
@@ -100,7 +100,10 @@ public static NetexBundle createMinimalNetexNordicBundle() {
var dataSource = new ZipFileDataSource(netexZipFile, FileType.NETEX);
var configuredDataSource = new ConfiguredDataSource<>(dataSource, buildConfig.netexDefaults);
- var transitService = new OtpTransitServiceBuilder(new StopModel(), DataImportIssueStore.NOOP);
+ var transitService = new OtpTransitServiceBuilder(
+ new SiteRepository(),
+ DataImportIssueStore.NOOP
+ );
return new NetexConfigure(buildConfig).netexBundle(transitService, configuredDataSource);
}
@@ -112,7 +115,10 @@ public static NetexBundle createMinimalNetexEpipBundle() {
var dataSource = new DirectoryDataSource(netexZipFile, FileType.NETEX);
var configuredDataSource = new ConfiguredDataSource<>(dataSource, buildConfig.netexDefaults);
- var transitService = new OtpTransitServiceBuilder(new StopModel(), DataImportIssueStore.NOOP);
+ var transitService = new OtpTransitServiceBuilder(
+ new SiteRepository(),
+ DataImportIssueStore.NOOP
+ );
return new NetexConfigure(buildConfig).netexBundle(transitService, configuredDataSource);
}
@@ -124,7 +130,7 @@ public static TestOtpModel buildNewPortlandGraph(boolean withElevation) {
try {
var deduplicator = new Deduplicator();
var graph = new Graph(deduplicator);
- var timetableRepository = new TimetableRepository(new StopModel(), deduplicator);
+ var timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
// Add street data from OSM
{
OsmProvider osmProvider = new OsmProvider(PORTLAND_CENTRAL_OSM, false);
@@ -162,7 +168,7 @@ public static TestOtpModel buildNewPortlandGraph(boolean withElevation) {
addPortlandVehicleRentals(graph);
timetableRepository.index();
- graph.index(timetableRepository.getStopModel());
+ graph.index(timetableRepository.getSiteRepository());
return new TestOtpModel(graph, timetableRepository);
} catch (Exception e) {
@@ -173,9 +179,9 @@ public static TestOtpModel buildNewPortlandGraph(boolean withElevation) {
public static TestOtpModel buildOsmGraph(File osmFile) {
try {
var deduplicator = new Deduplicator();
- var stopModel = new StopModel();
+ var siteRepository = new SiteRepository();
var graph = new Graph(deduplicator);
- var timetableRepository = new TimetableRepository(stopModel, deduplicator);
+ var timetableRepository = new TimetableRepository(siteRepository, deduplicator);
// Add street data from OSM
OsmProvider osmProvider = new OsmProvider(osmFile, true);
OsmModule osmModule = OsmModule.of(osmProvider, graph).build();
@@ -209,9 +215,9 @@ public static TestOtpModel buildGtfsGraph(File gtfsPath) {
public static TestOtpModel buildGtfsGraph(File gtfsFile, FareServiceFactory fareServiceFactory) {
var deduplicator = new Deduplicator();
- var stopModel = new StopModel();
+ var siteRepository = new SiteRepository();
var graph = new Graph(deduplicator);
- var timetableRepository = new TimetableRepository(stopModel, deduplicator);
+ var timetableRepository = new TimetableRepository(siteRepository, deduplicator);
addGtfsToGraph(graph, timetableRepository, gtfsFile, fareServiceFactory, null);
return new TestOtpModel(graph, timetableRepository);
}
@@ -219,9 +225,9 @@ public static TestOtpModel buildGtfsGraph(File gtfsFile, FareServiceFactory fare
public static TestOtpModel buildNewMinimalNetexGraph() {
try {
var deduplicator = new Deduplicator();
- var stopModel = new StopModel();
+ var siteRepository = new SiteRepository();
var graph = new Graph(deduplicator);
- var timetableRepository = new TimetableRepository(stopModel, deduplicator);
+ var timetableRepository = new TimetableRepository(siteRepository, deduplicator);
// Add street data from OSM
{
OsmProvider osmProvider = new OsmProvider(OSLO_EAST_OSM, false);
@@ -292,7 +298,7 @@ public static void addGtfsToGraph(
module.buildGraph();
timetableRepository.index();
- graph.index(timetableRepository.getStopModel());
+ graph.index(timetableRepository.getSiteRepository());
}
private static void addPortlandVehicleRentals(Graph graph) {
diff --git a/application/src/test/java/org/opentripplanner/GtfsTest.java b/application/src/test/java/org/opentripplanner/GtfsTest.java
index 0e862c38901..5d548e4012c 100644
--- a/application/src/test/java/org/opentripplanner/GtfsTest.java
+++ b/application/src/test/java/org/opentripplanner/GtfsTest.java
@@ -1,5 +1,6 @@
package org.opentripplanner;
+import static com.google.common.truth.Truth.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
@@ -39,7 +40,7 @@
import org.opentripplanner.transit.model.basic.TransitMode;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.framework.FeedScopedId;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
import org.opentripplanner.updater.TimetableSnapshotSourceParameters;
import org.opentripplanner.updater.alert.AlertsUpdateHandler;
@@ -178,7 +179,7 @@ public void validateLeg(
assertEquals(1, leg.getStreetNotes().size());
assertEquals(alert, leg.getStreetNotes().iterator().next().note.toString());
} else {
- assertNull(leg.getStreetNotes());
+ assertThat(leg.getStreetNotes()).isEmpty();
}
}
@@ -194,7 +195,7 @@ protected void setUp() throws Exception {
alertsUpdateHandler = new AlertsUpdateHandler(false);
var deduplicator = new Deduplicator();
graph = new Graph(deduplicator);
- timetableRepository = new TimetableRepository(new StopModel(), deduplicator);
+ timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
GtfsModule gtfsGraphBuilderImpl = new GtfsModule(
gtfsBundleList,
@@ -205,7 +206,7 @@ protected void setUp() throws Exception {
gtfsGraphBuilderImpl.buildGraph();
timetableRepository.index();
- graph.index(timetableRepository.getStopModel());
+ graph.index(timetableRepository.getSiteRepository());
serverContext = TestServerContext.createServerContext(graph, timetableRepository);
timetableSnapshotSource =
new TimetableSnapshotSource(
diff --git a/application/src/test/java/org/opentripplanner/TestOtpModel.java b/application/src/test/java/org/opentripplanner/TestOtpModel.java
index 36caf1dec43..62b5fce3416 100644
--- a/application/src/test/java/org/opentripplanner/TestOtpModel.java
+++ b/application/src/test/java/org/opentripplanner/TestOtpModel.java
@@ -6,7 +6,7 @@
public record TestOtpModel(Graph graph, TimetableRepository timetableRepository) {
public TestOtpModel index() {
timetableRepository.index();
- graph.index(timetableRepository.getStopModel());
+ graph.index(timetableRepository.getSiteRepository());
return this;
}
}
diff --git a/application/src/test/java/org/opentripplanner/TestServerContext.java b/application/src/test/java/org/opentripplanner/TestServerContext.java
index 04a222c4434..fd9d75def75 100644
--- a/application/src/test/java/org/opentripplanner/TestServerContext.java
+++ b/application/src/test/java/org/opentripplanner/TestServerContext.java
@@ -19,6 +19,7 @@
import org.opentripplanner.service.worldenvelope.model.WorldEnvelope;
import org.opentripplanner.standalone.api.OtpServerRequestContext;
import org.opentripplanner.standalone.config.RouterConfig;
+import org.opentripplanner.standalone.config.routerconfig.RaptorEnvironmentFactory;
import org.opentripplanner.standalone.server.DefaultServerRequestContext;
import org.opentripplanner.street.model.StreetLimitationParameters;
import org.opentripplanner.street.service.DefaultStreetLimitationParametersService;
@@ -42,7 +43,10 @@ public static OtpServerRequestContext createServerContext(
DefaultServerRequestContext context = DefaultServerRequestContext.create(
routerConfig.transitTuningConfig(),
routerConfig.routingRequestDefaults(),
- new RaptorConfig<>(routerConfig.transitTuningConfig()),
+ new RaptorConfig<>(
+ routerConfig.transitTuningConfig(),
+ RaptorEnvironmentFactory.create(routerConfig.transitTuningConfig().searchThreadPoolSize())
+ ),
graph,
new DefaultTransitService(timetableRepository),
Metrics.globalRegistry,
diff --git a/application/src/test/java/org/opentripplanner/apis/gtfs/GraphQLIntegrationTest.java b/application/src/test/java/org/opentripplanner/apis/gtfs/GraphQLIntegrationTest.java
index 663ce2d5f3f..406217e6604 100644
--- a/application/src/test/java/org/opentripplanner/apis/gtfs/GraphQLIntegrationTest.java
+++ b/application/src/test/java/org/opentripplanner/apis/gtfs/GraphQLIntegrationTest.java
@@ -157,9 +157,9 @@ static void setup() {
List.of()
);
- var stopModel = TEST_MODEL.stopModelBuilder();
- STOP_LOCATIONS.forEach(stopModel::withRegularStop);
- var model = stopModel.build();
+ var siteRepository = TEST_MODEL.siteRepositoryBuilder();
+ STOP_LOCATIONS.forEach(siteRepository::withRegularStop);
+ var model = siteRepository.build();
var timetableRepository = new TimetableRepository(model, DEDUPLICATOR);
var trip = TimetableRepositoryForTest
diff --git a/application/src/test/java/org/opentripplanner/apis/transmodel/mapping/TripRequestMapperTest.java b/application/src/test/java/org/opentripplanner/apis/transmodel/mapping/TripRequestMapperTest.java
index b8eeb2d13d9..593fb622adc 100644
--- a/application/src/test/java/org/opentripplanner/apis/transmodel/mapping/TripRequestMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/apis/transmodel/mapping/TripRequestMapperTest.java
@@ -89,14 +89,14 @@ public class TripRequestMapperTest implements PlanTestConstants {
.bus(route2, 2, time("11:20"), time("11:40"), Place.forStop(stop3))
.build();
var patterns = itineraryPatterns(itinerary);
- var stopModel = TEST_MODEL
- .stopModelBuilder()
+ var siteRepository = TEST_MODEL
+ .siteRepositoryBuilder()
.withRegularStop(stop1)
.withRegularStop(stop2)
.withRegularStop(stop3)
.build();
- var timetableRepository = new TimetableRepository(stopModel, new Deduplicator());
+ var timetableRepository = new TimetableRepository(siteRepository, new Deduplicator());
timetableRepository.initTimeZone(ZoneIds.STOCKHOLM);
var calendarServiceData = new CalendarServiceData();
LocalDate serviceDate = itinerary.startTime().toLocalDate();
diff --git a/application/src/test/java/org/opentripplanner/graph_builder/module/GtfsModuleTest.java b/application/src/test/java/org/opentripplanner/graph_builder/module/GtfsModuleTest.java
index 650282d6e7d..75f7077eb7d 100644
--- a/application/src/test/java/org/opentripplanner/graph_builder/module/GtfsModuleTest.java
+++ b/application/src/test/java/org/opentripplanner/graph_builder/module/GtfsModuleTest.java
@@ -18,7 +18,7 @@
import org.opentripplanner.routing.graph.Graph;
import org.opentripplanner.test.support.ResourceLoader;
import org.opentripplanner.transit.model.framework.Deduplicator;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
class GtfsModuleTest {
@@ -70,9 +70,9 @@ void duplicateFeedId() {
private static TestModels buildTestModel() {
var deduplicator = new Deduplicator();
- var stopModel = new StopModel();
+ var siteRepository = new SiteRepository();
var graph = new Graph(deduplicator);
- var timetableRepository = new TimetableRepository(stopModel, deduplicator);
+ var timetableRepository = new TimetableRepository(siteRepository, deduplicator);
return new TestModels(graph, timetableRepository);
}
diff --git a/application/src/test/java/org/opentripplanner/graph_builder/module/OsmBoardingLocationsModuleTest.java b/application/src/test/java/org/opentripplanner/graph_builder/module/OsmBoardingLocationsModuleTest.java
index f411bf6757c..a2e7ebef402 100644
--- a/application/src/test/java/org/opentripplanner/graph_builder/module/OsmBoardingLocationsModuleTest.java
+++ b/application/src/test/java/org/opentripplanner/graph_builder/module/OsmBoardingLocationsModuleTest.java
@@ -28,7 +28,7 @@
import org.opentripplanner.transit.model.basic.TransitMode;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.site.RegularStop;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
/**
@@ -69,7 +69,7 @@ static Stream testCases() {
void addAndLinkBoardingLocations(boolean areaVisibility, Set linkedVertices) {
var deduplicator = new Deduplicator();
var graph = new Graph(deduplicator);
- var timetableRepository = new TimetableRepository(new StopModel(), deduplicator);
+ var timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
var factory = new VertexFactory(graph);
var provider = new OsmProvider(file, false);
@@ -98,7 +98,7 @@ void addAndLinkBoardingLocations(boolean areaVisibility, Set linkedVerti
);
timetableRepository.index();
- graph.index(timetableRepository.getStopModel());
+ graph.index(timetableRepository.getSiteRepository());
assertEquals(0, busVertex.getIncoming().size());
assertEquals(0, busVertex.getOutgoing().size());
diff --git a/application/src/test/java/org/opentripplanner/graph_builder/module/StreetLinkerModuleTest.java b/application/src/test/java/org/opentripplanner/graph_builder/module/StreetLinkerModuleTest.java
index f9957a09b95..d04d1a33058 100644
--- a/application/src/test/java/org/opentripplanner/graph_builder/module/StreetLinkerModuleTest.java
+++ b/application/src/test/java/org/opentripplanner/graph_builder/module/StreetLinkerModuleTest.java
@@ -24,7 +24,7 @@
import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.site.RegularStop;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
class StreetLinkerModuleTest {
@@ -115,7 +115,7 @@ public TestModel() {
var walkableEdge = StreetModelForTest.streetEdge(from, to, PEDESTRIAN);
var drivableEdge = StreetModelForTest.streetEdge(from, to, CAR);
- var builder = StopModel.of();
+ var builder = SiteRepository.of();
stop =
builder
.regularStop(id("platform-1"))
diff --git a/application/src/test/java/org/opentripplanner/graph_builder/module/islandpruning/IslandPruningUtils.java b/application/src/test/java/org/opentripplanner/graph_builder/module/islandpruning/IslandPruningUtils.java
index bb15be82d9e..c59adad6fd5 100644
--- a/application/src/test/java/org/opentripplanner/graph_builder/module/islandpruning/IslandPruningUtils.java
+++ b/application/src/test/java/org/opentripplanner/graph_builder/module/islandpruning/IslandPruningUtils.java
@@ -6,7 +6,7 @@
import org.opentripplanner.osm.OsmProvider;
import org.opentripplanner.routing.graph.Graph;
import org.opentripplanner.transit.model.framework.Deduplicator;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
class IslandPruningUtils {
@@ -21,7 +21,7 @@ static Graph buildOsmGraph(
try {
var deduplicator = new Deduplicator();
var graph = new Graph(deduplicator);
- var timetableRepository = new TimetableRepository(new StopModel(), deduplicator);
+ var timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
// Add street data from OSM
OsmProvider osmProvider = new OsmProvider(osmFile, true);
OsmModule osmModule = OsmModule.of(osmProvider, graph).withEdgeNamer(new TestNamer()).build();
@@ -29,7 +29,7 @@ static Graph buildOsmGraph(
osmModule.buildGraph();
timetableRepository.index();
- graph.index(timetableRepository.getStopModel());
+ graph.index(timetableRepository.getSiteRepository());
// Prune floating islands and set noThru where necessary
PruneIslands pruneIslands = new PruneIslands(
diff --git a/application/src/test/java/org/opentripplanner/graph_builder/module/linking/LinkingTest.java b/application/src/test/java/org/opentripplanner/graph_builder/module/linking/LinkingTest.java
index adef7774936..6bda39e5058 100644
--- a/application/src/test/java/org/opentripplanner/graph_builder/module/linking/LinkingTest.java
+++ b/application/src/test/java/org/opentripplanner/graph_builder/module/linking/LinkingTest.java
@@ -32,7 +32,7 @@
import org.opentripplanner.street.model.vertex.Vertex;
import org.opentripplanner.test.support.ResourceLoader;
import org.opentripplanner.transit.model.framework.Deduplicator;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
public class LinkingTest {
@@ -150,9 +150,9 @@ public void testStopsLinkedIdentically() {
/** Build a graph in Columbus, OH with no transit */
public static TestOtpModel buildGraphNoTransit() {
var deduplicator = new Deduplicator();
- var stopModel = new StopModel();
+ var siteRepository = new SiteRepository();
var gg = new Graph(deduplicator);
- var timetableRepository = new TimetableRepository(stopModel, deduplicator);
+ var timetableRepository = new TimetableRepository(siteRepository, deduplicator);
File file = ResourceLoader.of(LinkingTest.class).file("columbus.osm.pbf");
OsmProvider provider = new OsmProvider(file, false);
diff --git a/application/src/test/java/org/opentripplanner/graph_builder/module/linking/TestGraph.java b/application/src/test/java/org/opentripplanner/graph_builder/module/linking/TestGraph.java
index 4c8b6a176d3..a21b7aff55a 100644
--- a/application/src/test/java/org/opentripplanner/graph_builder/module/linking/TestGraph.java
+++ b/application/src/test/java/org/opentripplanner/graph_builder/module/linking/TestGraph.java
@@ -62,7 +62,7 @@ public static void addExtraStops(Graph graph) {
/** link the stops in the graph */
public static void link(Graph graph, TimetableRepository timetableRepository) {
timetableRepository.index();
- graph.index(timetableRepository.getStopModel());
+ graph.index(timetableRepository.getSiteRepository());
VertexLinker linker = graph.getLinker();
diff --git a/application/src/test/java/org/opentripplanner/graph_builder/module/osm/UnconnectedAreasTest.java b/application/src/test/java/org/opentripplanner/graph_builder/module/osm/UnconnectedAreasTest.java
index 75c56dd2fb3..492d04a0007 100644
--- a/application/src/test/java/org/opentripplanner/graph_builder/module/osm/UnconnectedAreasTest.java
+++ b/application/src/test/java/org/opentripplanner/graph_builder/module/osm/UnconnectedAreasTest.java
@@ -19,7 +19,7 @@
import org.opentripplanner.street.model.vertex.VertexLabel;
import org.opentripplanner.test.support.ResourceLoader;
import org.opentripplanner.transit.model.framework.Deduplicator;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
public class UnconnectedAreasTest {
@@ -157,9 +157,9 @@ private Graph buildOsmGraph(String osmFileName) {
private Graph buildOsmGraph(String osmFileName, DataImportIssueStore issueStore) {
var deduplicator = new Deduplicator();
- var stopModel = new StopModel();
+ var siteRepository = new SiteRepository();
var graph = new Graph(deduplicator);
- var timetableRepository = new TimetableRepository(stopModel, deduplicator);
+ var timetableRepository = new TimetableRepository(siteRepository, deduplicator);
OsmProvider provider = new OsmProvider(RESOURCE_LOADER.file(osmFileName), false);
OsmModule loader = OsmModule
.of(provider, graph)
diff --git a/application/src/test/java/org/opentripplanner/gtfs/GenerateTripPatternsOperationTest.java b/application/src/test/java/org/opentripplanner/gtfs/GenerateTripPatternsOperationTest.java
index 8b91e3c3d08..d0968adf7e9 100644
--- a/application/src/test/java/org/opentripplanner/gtfs/GenerateTripPatternsOperationTest.java
+++ b/application/src/test/java/org/opentripplanner/gtfs/GenerateTripPatternsOperationTest.java
@@ -26,11 +26,11 @@
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.timetable.Direction;
import org.opentripplanner.transit.model.timetable.Trip;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
class GenerateTripPatternsOperationTest {
- private static StopModel stopModel;
+ private static SiteRepository siteRepository;
private static RegularStop stopA;
private static RegularStop stopB;
private static RegularStop stopC;
@@ -54,9 +54,9 @@ static void setupClass() {
stopA = timetableRepositoryForTest.stop("stopA").build();
stopB = timetableRepositoryForTest.stop("stopB").build();
stopC = timetableRepositoryForTest.stop("stopC").build();
- stopModel =
+ siteRepository =
timetableRepositoryForTest
- .stopModelBuilder()
+ .siteRepositoryBuilder()
.withRegularStop(stopA)
.withRegularStop(stopB)
.withRegularStop(stopC)
@@ -126,7 +126,7 @@ static void setupClass() {
void setup() {
deduplicator = new Deduplicator();
issueStore = new DefaultDataImportIssueStore();
- transitServiceBuilder = new OtpTransitServiceBuilder(stopModel, issueStore);
+ transitServiceBuilder = new OtpTransitServiceBuilder(siteRepository, issueStore);
double maxStopToShapeSnapDistance = 100;
geometryProcessor =
new GeometryProcessor(transitServiceBuilder, maxStopToShapeSnapDistance, issueStore);
diff --git a/application/src/test/java/org/opentripplanner/gtfs/GtfsContextBuilder.java b/application/src/test/java/org/opentripplanner/gtfs/GtfsContextBuilder.java
index d74903495b3..80f66caf98e 100644
--- a/application/src/test/java/org/opentripplanner/gtfs/GtfsContextBuilder.java
+++ b/application/src/test/java/org/opentripplanner/gtfs/GtfsContextBuilder.java
@@ -17,7 +17,7 @@
import org.opentripplanner.routing.graph.Graph;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.site.StopTransferPriority;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
/**
* This class helps building GtfsContext and post process the GtfsDao by repairing
@@ -44,7 +44,10 @@ public static GtfsContextBuilder contextBuilder(File file) throws IOException {
public static GtfsContextBuilder contextBuilder(@Nullable String defaultFeedId, File path)
throws IOException {
- var transitBuilder = new OtpTransitServiceBuilder(new StopModel(), DataImportIssueStore.NOOP);
+ var transitBuilder = new OtpTransitServiceBuilder(
+ new SiteRepository(),
+ DataImportIssueStore.NOOP
+ );
GtfsImport gtfsImport = gtfsImport(defaultFeedId, path);
GtfsFeedId feedId = gtfsImport.getFeedId();
var mapper = new GTFSToOtpTransitServiceMapper(
diff --git a/application/src/test/java/org/opentripplanner/gtfs/mapping/LocationGroupMapperTest.java b/application/src/test/java/org/opentripplanner/gtfs/mapping/LocationGroupMapperTest.java
index 67b18ead0c5..99d7c4f3fce 100644
--- a/application/src/test/java/org/opentripplanner/gtfs/mapping/LocationGroupMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/gtfs/mapping/LocationGroupMapperTest.java
@@ -11,7 +11,7 @@
import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.site.StopLocation;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
class LocationGroupMapperTest {
@@ -19,7 +19,7 @@ class LocationGroupMapperTest {
@Test
void map() {
- var builder = StopModel.of();
+ var builder = SiteRepository.of();
var mapper = new LocationGroupMapper(
new StopMapper(new TranslationHelper(), id -> null, builder),
new LocationMapper(builder, DataImportIssueStore.NOOP),
diff --git a/application/src/test/java/org/opentripplanner/gtfs/mapping/LocationMapperTest.java b/application/src/test/java/org/opentripplanner/gtfs/mapping/LocationMapperTest.java
index ab8bd66a810..fb910765f1b 100644
--- a/application/src/test/java/org/opentripplanner/gtfs/mapping/LocationMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/gtfs/mapping/LocationMapperTest.java
@@ -16,7 +16,7 @@
import org.opentripplanner.graph_builder.issue.api.DataImportIssueStore;
import org.opentripplanner.graph_builder.issue.api.Issue;
import org.opentripplanner.graph_builder.issue.service.DefaultDataImportIssueStore;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
class LocationMapperTest {
@@ -29,7 +29,7 @@ static Stream testCases() {
void testMapping(String name, boolean isBogusName) {
var gtfsLocation = getLocation(name, Polygons.OSLO);
- var mapper = new LocationMapper(StopModel.of(), DataImportIssueStore.NOOP);
+ var mapper = new LocationMapper(SiteRepository.of(), DataImportIssueStore.NOOP);
var flexLocation = mapper.map(gtfsLocation);
assertEquals(isBogusName, flexLocation.hasFallbackName());
@@ -43,7 +43,7 @@ void invalidPolygon() {
var gtfsLocation = getLocation("invalid", selfIntersecting);
var issueStore = new DefaultDataImportIssueStore();
- var mapper = new LocationMapper(StopModel.of(), issueStore);
+ var mapper = new LocationMapper(SiteRepository.of(), issueStore);
mapper.map(gtfsLocation);
diff --git a/application/src/test/java/org/opentripplanner/gtfs/mapping/PathwayMapperTest.java b/application/src/test/java/org/opentripplanner/gtfs/mapping/PathwayMapperTest.java
index 1e321216305..ba913965c2d 100644
--- a/application/src/test/java/org/opentripplanner/gtfs/mapping/PathwayMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/gtfs/mapping/PathwayMapperTest.java
@@ -13,7 +13,7 @@
import org.onebusaway.gtfs.model.Pathway;
import org.onebusaway.gtfs.model.Stop;
import org.opentripplanner.transit.model.site.PathwayMode;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
public class PathwayMapperTest {
@@ -30,7 +30,7 @@ public class PathwayMapperTest {
private static final Stop TO_STOP = new Stop();
private final PathwayMapper subject = new PathwayMapper(
- new StopMapper(TRANSLATION_HELPER, stationId -> null, new StopModel().withContext()),
+ new StopMapper(TRANSLATION_HELPER, stationId -> null, new SiteRepository().withContext()),
new EntranceMapper(TRANSLATION_HELPER, stationId -> null),
new PathwayNodeMapper(TRANSLATION_HELPER, stationId -> null),
new BoardingAreaMapper(TRANSLATION_HELPER, stationId -> null)
diff --git a/application/src/test/java/org/opentripplanner/gtfs/mapping/StopAndStationMapperTest.java b/application/src/test/java/org/opentripplanner/gtfs/mapping/StopAndStationMapperTest.java
index d15ad9d75cf..51d4ec2605f 100644
--- a/application/src/test/java/org/opentripplanner/gtfs/mapping/StopAndStationMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/gtfs/mapping/StopAndStationMapperTest.java
@@ -14,7 +14,7 @@
import org.onebusaway.gtfs.model.Stop;
import org.opentripplanner.transit.model.basic.Accessibility;
import org.opentripplanner.transit.model.site.RegularStop;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
public class StopAndStationMapperTest {
@@ -51,7 +51,7 @@ public class StopAndStationMapperTest {
private final StopMapper subject = new StopMapper(
new TranslationHelper(),
stationId -> null,
- new StopModel().withContext()
+ new SiteRepository().withContext()
);
static {
diff --git a/application/src/test/java/org/opentripplanner/gtfs/mapping/StopTimeMapperTest.java b/application/src/test/java/org/opentripplanner/gtfs/mapping/StopTimeMapperTest.java
index d17c22c4abe..2bbed14334e 100644
--- a/application/src/test/java/org/opentripplanner/gtfs/mapping/StopTimeMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/gtfs/mapping/StopTimeMapperTest.java
@@ -27,8 +27,8 @@
import org.opentripplanner.model.PickDrop;
import org.opentripplanner.transit.model.site.AreaStop;
import org.opentripplanner.transit.model.site.GroupStop;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
public class StopTimeMapperTest {
@@ -68,22 +68,22 @@ public class StopTimeMapperTest {
.map(c -> new LngLatAlt(c.x, c.y))
.toList();
- private final StopModelBuilder stopModelBuilder = StopModel.of();
+ private final SiteRepositoryBuilder siteRepositoryBuilder = SiteRepository.of();
private final StopMapper stopMapper = new StopMapper(
new TranslationHelper(),
stationId -> null,
- stopModelBuilder
+ siteRepositoryBuilder
);
private final BookingRuleMapper bookingRuleMapper = new BookingRuleMapper();
private final LocationMapper locationMapper = new LocationMapper(
- stopModelBuilder,
+ siteRepositoryBuilder,
DataImportIssueStore.NOOP
);
private final LocationGroupMapper locationGroupMapper = new LocationGroupMapper(
stopMapper,
locationMapper,
- stopModelBuilder
+ siteRepositoryBuilder
);
private final TranslationHelper translationHelper = new TranslationHelper();
private final StopTimeMapper subject = new StopTimeMapper(
diff --git a/application/src/test/java/org/opentripplanner/gtfs/mapping/TransferMapperTest.java b/application/src/test/java/org/opentripplanner/gtfs/mapping/TransferMapperTest.java
index 3c5a1eff42a..0273c3055b9 100644
--- a/application/src/test/java/org/opentripplanner/gtfs/mapping/TransferMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/gtfs/mapping/TransferMapperTest.java
@@ -19,8 +19,8 @@
import org.opentripplanner.model.transfer.ConstrainedTransfer;
import org.opentripplanner.model.transfer.TransferPriority;
import org.opentripplanner.transit.model.site.StopTransferPriority;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
public class TransferMapperTest {
@@ -37,24 +37,24 @@ public class TransferMapperTest {
private static StationMapper STATION_MAPPER;
- private static final StopModelBuilder STOP_MODEL_BUILDER = StopModel.of();
+ private static final SiteRepositoryBuilder SITE_REPOSITORY_BUILDER = SiteRepository.of();
private static final StopMapper STOP_MAPPER = new StopMapper(
TRANSLATION_HELPER,
stationId -> null,
- STOP_MODEL_BUILDER
+ SITE_REPOSITORY_BUILDER
);
private static final BookingRuleMapper BOOKING_RULE_MAPPER = new BookingRuleMapper();
private static final LocationMapper LOCATION_MAPPER = new LocationMapper(
- STOP_MODEL_BUILDER,
+ SITE_REPOSITORY_BUILDER,
ISSUE_STORE
);
private static final LocationGroupMapper LOCATION_GROUP_MAPPER = new LocationGroupMapper(
STOP_MAPPER,
LOCATION_MAPPER,
- STOP_MODEL_BUILDER
+ SITE_REPOSITORY_BUILDER
);
private static StopTimeMapper STOP_TIME_MAPPER;
diff --git a/application/src/test/java/org/opentripplanner/gtfs/mapping/TransitModeMapperTest.java b/application/src/test/java/org/opentripplanner/gtfs/mapping/TransitModeMapperTest.java
index f99dd8cd773..ac1da483c86 100644
--- a/application/src/test/java/org/opentripplanner/gtfs/mapping/TransitModeMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/gtfs/mapping/TransitModeMapperTest.java
@@ -1,10 +1,20 @@
package org.opentripplanner.gtfs.mapping;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.opentripplanner.transit.model.basic.TransitMode.AIRPLANE;
import static org.opentripplanner.transit.model.basic.TransitMode.BUS;
+import static org.opentripplanner.transit.model.basic.TransitMode.CABLE_CAR;
import static org.opentripplanner.transit.model.basic.TransitMode.CARPOOL;
import static org.opentripplanner.transit.model.basic.TransitMode.COACH;
+import static org.opentripplanner.transit.model.basic.TransitMode.FERRY;
+import static org.opentripplanner.transit.model.basic.TransitMode.FUNICULAR;
+import static org.opentripplanner.transit.model.basic.TransitMode.GONDOLA;
+import static org.opentripplanner.transit.model.basic.TransitMode.MONORAIL;
+import static org.opentripplanner.transit.model.basic.TransitMode.RAIL;
+import static org.opentripplanner.transit.model.basic.TransitMode.SUBWAY;
import static org.opentripplanner.transit.model.basic.TransitMode.TAXI;
+import static org.opentripplanner.transit.model.basic.TransitMode.TRAM;
+import static org.opentripplanner.transit.model.basic.TransitMode.TROLLEYBUS;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
@@ -18,6 +28,49 @@ class TransitModeMapperTest {
static Stream testCases() {
return Stream.of(
+ // base GTFS route types
+ // https://gtfs.org/documentation/schedule/reference/#routestxt
+ Arguments.of(0, TRAM),
+ Arguments.of(1, SUBWAY),
+ Arguments.of(2, RAIL),
+ Arguments.of(3, BUS),
+ Arguments.of(4, FERRY),
+ Arguments.of(5, CABLE_CAR),
+ Arguments.of(6, GONDOLA),
+ Arguments.of(7, FUNICULAR),
+ Arguments.of(11, TROLLEYBUS),
+ Arguments.of(12, MONORAIL),
+ // extended route types
+ // https://developers.google.com/transit/gtfs/reference/extended-route-types
+ // https://groups.google.com/g/gtfs-changes/c/keT5rTPS7Y0/m/71uMz2l6ke0J?pli=1
+ Arguments.of(100, RAIL),
+ Arguments.of(199, RAIL),
+ Arguments.of(400, RAIL),
+ Arguments.of(401, SUBWAY),
+ Arguments.of(402, SUBWAY),
+ Arguments.of(403, RAIL),
+ Arguments.of(404, RAIL),
+ Arguments.of(405, MONORAIL),
+ Arguments.of(500, SUBWAY),
+ Arguments.of(599, SUBWAY),
+ Arguments.of(600, SUBWAY),
+ Arguments.of(699, SUBWAY),
+ Arguments.of(700, BUS),
+ Arguments.of(799, BUS),
+ Arguments.of(800, TROLLEYBUS),
+ Arguments.of(899, TROLLEYBUS),
+ Arguments.of(900, TRAM),
+ Arguments.of(999, TRAM),
+ Arguments.of(1000, FERRY),
+ Arguments.of(1099, FERRY),
+ Arguments.of(1100, AIRPLANE),
+ Arguments.of(1199, AIRPLANE),
+ Arguments.of(1200, FERRY),
+ Arguments.of(1299, FERRY),
+ Arguments.of(1300, GONDOLA),
+ Arguments.of(1399, GONDOLA),
+ Arguments.of(1400, FUNICULAR),
+ Arguments.of(1499, FUNICULAR),
Arguments.of(1500, TAXI),
Arguments.of(1510, TAXI),
Arguments.of(1551, CARPOOL),
diff --git a/application/src/test/java/org/opentripplanner/inspector/vector/stop/AreaStopLayerBuilderTest.java b/application/src/test/java/org/opentripplanner/inspector/vector/stop/AreaStopLayerBuilderTest.java
index a1c01ca2e99..23a9ce972d0 100644
--- a/application/src/test/java/org/opentripplanner/inspector/vector/stop/AreaStopLayerBuilderTest.java
+++ b/application/src/test/java/org/opentripplanner/inspector/vector/stop/AreaStopLayerBuilderTest.java
@@ -9,17 +9,17 @@
import org.opentripplanner.inspector.vector.KeyValue;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.site.AreaStop;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
class AreaStopLayerBuilderTest {
private static final FeedScopedId ID = new FeedScopedId("FEED", "ID");
private static final I18NString NAME = I18NString.of("Test stop");
- private final StopModelBuilder stopModelBuilder = StopModel.of();
+ private final SiteRepositoryBuilder siteRepositoryBuilder = SiteRepository.of();
- private final AreaStop areaStop = stopModelBuilder
+ private final AreaStop areaStop = siteRepositoryBuilder
.areaStop(ID)
.withName(NAME)
.withGeometry(Polygons.BERLIN)
diff --git a/application/src/test/java/org/opentripplanner/mmri/MMRI Testdocument.pdf b/application/src/test/java/org/opentripplanner/mmri/MMRI_Testdocument.pdf
similarity index 100%
rename from application/src/test/java/org/opentripplanner/mmri/MMRI Testdocument.pdf
rename to application/src/test/java/org/opentripplanner/mmri/MMRI_Testdocument.pdf
diff --git a/application/src/test/java/org/opentripplanner/mmri/package-info.java b/application/src/test/java/org/opentripplanner/mmri/package-info.java
deleted file mode 100644
index 563a92abdc5..00000000000
--- a/application/src/test/java/org/opentripplanner/mmri/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * What is this package doing here?
- *
- * In 2013, significant improvements were made to OTP as part of a precommercial procurement project
- * in The Netherlands called MMRI ("MultiModale ReisInformatie" => "multimodal travel information").
- * This project is itself part of a larger project called "Better Benutten" => "better utilization".
- * Most effort concentrated on the implementation of GTFS-RT updates and related improvements to the
- * architecture of OTP. Additionally, a testing module was developed to verify that all the planners
- * that were involved in the project (not just OTP) met a minimum set of requirements. OTP was first
- * to pass all tests, ahead of two different solutions. Unfortunately, having two sets of tests does
- * not make it simpler to continuously verify that OTP still functions correctly, which is why these
- * MMRI tests have now been added to OTP's own test suite. These versions are intended to be a close
- * approximation of reality, but several minor shortcuts have been taken, like applying trip updates
- * directly to the graph instead of going through the thread-safe graph writer framework. Given that
- * thread-safety is a technical issue and not a functional one, this is considered to be
- * acceptable.
- *
- * The test cases are described here. and in
- * here
- */
-package org.opentripplanner.mmri;
diff --git a/application/src/test/java/org/opentripplanner/mmri/package-info.md b/application/src/test/java/org/opentripplanner/mmri/package-info.md
new file mode 100644
index 00000000000..5d4f541f1cb
--- /dev/null
+++ b/application/src/test/java/org/opentripplanner/mmri/package-info.md
@@ -0,0 +1,19 @@
+# MMRI ("MultiModale ReisInformatie" => "multimodal travel information")
+
+What is this package doing here?
+
+In 2013, significant improvements were made to OTP as part of a precommercial procurement project
+in The Netherlands called MMRI ("MultiModale ReisInformatie" => "multimodal travel information").
+This project is itself part of a larger project called "Better Benutten" => "better utilization".
+Most effort concentrated on the implementation of GTFS-RT updates and related improvements to the
+architecture of OTP. Additionally, a testing module was developed to verify that all the planners
+that were involved in the project (not just OTP) met a minimum set of requirements. OTP was first
+to pass all tests, ahead of two different solutions. Unfortunately, having two sets of tests does
+not make it simpler to continuously verify that OTP still functions correctly, which is why these
+MMRI tests have now been added to OTP's own test suite. These versions are intended to be a close
+approximation of reality, but several minor shortcuts have been taken, like applying trip updates
+directly to the graph instead of going through the thread-safe graph writer framework. Given that
+thread-safety is a technical issue and not a functional one, this is considered to be
+acceptable.
+
+The test cases are described [here](https://github.com/plannerstack/testset) and [here](./MMRI_Testdocument.pdf)
diff --git a/application/src/test/java/org/opentripplanner/model/TimetableSnapshotTest.java b/application/src/test/java/org/opentripplanner/model/TimetableSnapshotTest.java
index 0f1d42e9620..4f3e12c1368 100644
--- a/application/src/test/java/org/opentripplanner/model/TimetableSnapshotTest.java
+++ b/application/src/test/java/org/opentripplanner/model/TimetableSnapshotTest.java
@@ -33,6 +33,7 @@
import org.opentripplanner.transit.model.framework.Result;
import org.opentripplanner.transit.model.network.TripPattern;
import org.opentripplanner.transit.model.timetable.Trip;
+import org.opentripplanner.transit.model.timetable.TripIdAndServiceDate;
import org.opentripplanner.transit.model.timetable.TripOnServiceDate;
import org.opentripplanner.transit.model.timetable.TripTimes;
import org.opentripplanner.transit.model.timetable.TripTimesFactory;
@@ -358,6 +359,59 @@ void testCannotRevertReadOnlyTimetableSnapshot() {
);
}
+ @Test
+ void testClear() {
+ TimetableSnapshot snapshot = new TimetableSnapshot();
+ TripPattern pattern = patternIndex.get(new FeedScopedId(feedId, "1.1"));
+ Trip trip = pattern.scheduledTripsAsStream().findFirst().orElseThrow();
+
+ TripIdAndServiceDate tripIdAndServiceDate = new TripIdAndServiceDate(
+ trip.getId(),
+ SERVICE_DATE
+ );
+ TripTimes updatedTriptimes = TripTimesFactory.tripTimes(
+ trip,
+ List.of(new StopTime()),
+ new Deduplicator()
+ );
+ RealTimeTripUpdate realTimeTripUpdate = new RealTimeTripUpdate(
+ pattern,
+ updatedTriptimes,
+ SERVICE_DATE,
+ TripOnServiceDate.of(trip.getId()).withTrip(trip).withServiceDate(SERVICE_DATE).build(),
+ true,
+ true
+ );
+
+ snapshot.update(realTimeTripUpdate);
+
+ assertNotNull(snapshot.getRealTimeAddedTrip(trip.getId()));
+ assertNotNull(snapshot.getRealTimeAddedPatternForTrip(trip));
+ assertFalse(snapshot.getRealTimeAddedPatternForRoute(pattern.getRoute()).isEmpty());
+ assertNotNull(snapshot.getRealTimeAddedTripOnServiceDateById(trip.getId()));
+ assertNotNull(snapshot.getRealTimeAddedTripOnServiceDateForTripAndDay(tripIdAndServiceDate));
+ assertNotNull(snapshot.getRealtimeAddedRoute(pattern.getRoute().getId()));
+
+ snapshot.clear(trip.getId().getFeedId());
+
+ assertNull(snapshot.getRealTimeAddedTrip(trip.getId()));
+ assertNull(snapshot.getRealTimeAddedPatternForTrip(trip));
+ assertNull(snapshot.getRealTimeAddedTripOnServiceDateById(trip.getId()));
+ assertNull(snapshot.getRealTimeAddedTripOnServiceDateForTripAndDay(tripIdAndServiceDate));
+ assertNull(snapshot.getRealtimeAddedRoute(pattern.getRoute().getId()));
+ assertTrue(snapshot.getRealTimeAddedPatternForRoute(pattern.getRoute()).isEmpty());
+
+ snapshot.update(realTimeTripUpdate);
+ snapshot.clear("another feed id");
+
+ assertNotNull(snapshot.getRealTimeAddedTrip(trip.getId()));
+ assertNotNull(snapshot.getRealTimeAddedPatternForTrip(trip));
+ assertFalse(snapshot.getRealTimeAddedPatternForRoute(pattern.getRoute()).isEmpty());
+ assertNotNull(snapshot.getRealTimeAddedTripOnServiceDateById(trip.getId()));
+ assertNotNull(snapshot.getRealTimeAddedTripOnServiceDateForTripAndDay(tripIdAndServiceDate));
+ assertNotNull(snapshot.getRealtimeAddedRoute(pattern.getRoute().getId()));
+ }
+
private static TimetableSnapshot createCommittedSnapshot() {
TimetableSnapshot timetableSnapshot = new TimetableSnapshot();
return timetableSnapshot.commit(null, true);
diff --git a/application/src/test/java/org/opentripplanner/model/impl/OtpTransitServiceBuilderLimitPeriodTest.java b/application/src/test/java/org/opentripplanner/model/impl/OtpTransitServiceBuilderLimitPeriodTest.java
index b37a0f55703..ae44e7239f5 100644
--- a/application/src/test/java/org/opentripplanner/model/impl/OtpTransitServiceBuilderLimitPeriodTest.java
+++ b/application/src/test/java/org/opentripplanner/model/impl/OtpTransitServiceBuilderLimitPeriodTest.java
@@ -28,7 +28,7 @@
import org.opentripplanner.transit.model.timetable.Direction;
import org.opentripplanner.transit.model.timetable.Trip;
import org.opentripplanner.transit.model.timetable.TripTimesFactory;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
/**
* This test will create a Transit service builder and then limit the service period. The services
@@ -70,7 +70,7 @@ public class OtpTransitServiceBuilderLimitPeriodTest {
@BeforeEach
public void setUp() {
- subject = new OtpTransitServiceBuilder(new StopModel(), DataImportIssueStore.NOOP);
+ subject = new OtpTransitServiceBuilder(new SiteRepository(), DataImportIssueStore.NOOP);
// Add a service calendar that overlap with the period limit
subject.getCalendars().add(createServiceCalendar(SERVICE_C_IN, D1, D3));
@@ -85,8 +85,8 @@ public void setUp() {
subject.getCalendarDates().add(new ServiceCalendarDate(SERVICE_D_OUT, D1, 1));
// Add 2 stops
- subject.stopModel().withRegularStop(STOP_1);
- subject.stopModel().withRegularStop(STOP_2);
+ subject.siteRepository().withRegularStop(STOP_1);
+ subject.siteRepository().withRegularStop(STOP_2);
// Add Route
subject.getRoutes().add(route);
diff --git a/application/src/test/java/org/opentripplanner/model/impl/OtpTransitServiceImplTest.java b/application/src/test/java/org/opentripplanner/model/impl/OtpTransitServiceImplTest.java
index 48bff78273f..728208438a8 100644
--- a/application/src/test/java/org/opentripplanner/model/impl/OtpTransitServiceImplTest.java
+++ b/application/src/test/java/org/opentripplanner/model/impl/OtpTransitServiceImplTest.java
@@ -94,7 +94,7 @@ public void testGetAllTransfers() {
@Test
public void testGetAllStations() {
- Collection stations = subject.stopModel().listStations();
+ Collection stations = subject.siteRepository().listStations();
assertEquals(1, stations.size());
assertEquals("Station{F:station station}", first(stations).toString());
@@ -102,7 +102,7 @@ public void testGetAllStations() {
@Test
public void testGetAllStops() {
- Collection stops = subject.stopModel().listRegularStops();
+ Collection stops = subject.siteRepository().listRegularStops();
assertEquals(25, stops.size());
assertEquals("RegularStop{F:A A}", first(stops).toString());
@@ -132,14 +132,14 @@ public void testGetAllTrips() {
@Test
public void testGetStopForId() {
- RegularStop stop = subject.stopModel().getRegularStop(TimetableRepositoryForTest.id("P"));
+ RegularStop stop = subject.siteRepository().getRegularStop(TimetableRepositoryForTest.id("P"));
assertEquals("RegularStop{F:P P}", stop.toString());
}
@Test
public void testGetStopsForStation() {
List stops = new ArrayList<>(
- subject.stopModel().getStationById(STATION_ID).getChildStops()
+ subject.siteRepository().getStationById(STATION_ID).getChildStops()
);
assertEquals("[RegularStop{F:A A}]", stops.toString());
}
diff --git a/application/src/test/java/org/opentripplanner/model/plan/PlaceTest.java b/application/src/test/java/org/opentripplanner/model/plan/PlaceTest.java
index 3062d71facd..4d7375b7c89 100644
--- a/application/src/test/java/org/opentripplanner/model/plan/PlaceTest.java
+++ b/application/src/test/java/org/opentripplanner/model/plan/PlaceTest.java
@@ -19,7 +19,7 @@
import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.site.RegularStop;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
public class PlaceTest {
@@ -79,7 +79,7 @@ static Stream flexStopCases() {
@ParameterizedTest(name = "Flex stop name of {0} should lead to a place name of {1}")
@MethodSource("flexStopCases")
public void flexStop(I18NString stopName, String expectedPlaceName) {
- var stop = StopModel
+ var stop = SiteRepository
.of()
.areaStop(new FeedScopedId("1", "stop_id"))
.withGeometry(GEOMETRY)
diff --git a/application/src/test/java/org/opentripplanner/model/plan/legreference/ScheduledTransitLegReferenceTest.java b/application/src/test/java/org/opentripplanner/model/plan/legreference/ScheduledTransitLegReferenceTest.java
index d663e7bed2f..556cfc1ca90 100644
--- a/application/src/test/java/org/opentripplanner/model/plan/legreference/ScheduledTransitLegReferenceTest.java
+++ b/application/src/test/java/org/opentripplanner/model/plan/legreference/ScheduledTransitLegReferenceTest.java
@@ -24,7 +24,7 @@
import org.opentripplanner.transit.model.timetable.TripOnServiceDate;
import org.opentripplanner.transit.model.timetable.TripTimesFactory;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
import org.opentripplanner.transit.service.TransitService;
@@ -72,15 +72,15 @@ static void buildTransitService() {
stopIdAtPosition2 = tripPattern.getStop(2).getId();
// build transit model
- StopModel stopModel = TEST_MODEL
- .stopModelBuilder()
+ SiteRepository siteRepository = TEST_MODEL
+ .siteRepositoryBuilder()
.withRegularStop(stop1)
.withRegularStop(stop2)
.withRegularStop(stop3)
.withRegularStop(stop4)
.build();
TimetableRepository timetableRepository = new TimetableRepository(
- stopModel,
+ siteRepository,
new Deduplicator()
);
timetableRepository.addTripPattern(tripPattern.getId(), tripPattern);
diff --git a/application/src/test/java/org/opentripplanner/netex/NetexEpipBundleSmokeTest.java b/application/src/test/java/org/opentripplanner/netex/NetexEpipBundleSmokeTest.java
index 72e750c055f..f5d3f4d21a3 100644
--- a/application/src/test/java/org/opentripplanner/netex/NetexEpipBundleSmokeTest.java
+++ b/application/src/test/java/org/opentripplanner/netex/NetexEpipBundleSmokeTest.java
@@ -62,8 +62,8 @@ void smokeTestOfNetexEpipLoadData() {
assertAgencies(otpModel.getAllAgencies());
assertOperators(otpModel.getAllOperators());
- assertStops(otpModel.stopModel().listRegularStops());
- assertStations(otpModel.stopModel().listStations());
+ assertStops(otpModel.siteRepository().listRegularStops());
+ assertStations(otpModel.siteRepository().listStations());
assertTripPatterns(otpModel.getTripPatterns());
assertTrips(otpModel.getAllTrips());
assertServiceIds(otpModel.getAllTrips(), otpModel.getAllServiceIds());
diff --git a/application/src/test/java/org/opentripplanner/netex/NetexNordicBundleSmokeTest.java b/application/src/test/java/org/opentripplanner/netex/NetexNordicBundleSmokeTest.java
index 6b5e9b60098..c91195c1ab5 100644
--- a/application/src/test/java/org/opentripplanner/netex/NetexNordicBundleSmokeTest.java
+++ b/application/src/test/java/org/opentripplanner/netex/NetexNordicBundleSmokeTest.java
@@ -67,10 +67,10 @@ public void smokeTestOfNetexNordicLoadData() {
OtpTransitService otpModel = transitBuilder.build();
assertAgencies(otpModel.getAllAgencies());
- assertMultiModalStations(otpModel.stopModel().listMultiModalStations());
+ assertMultiModalStations(otpModel.siteRepository().listMultiModalStations());
assertOperators(otpModel.getAllOperators());
- assertStops(otpModel.stopModel().listRegularStops());
- assertStations(otpModel.stopModel().listStations());
+ assertStops(otpModel.siteRepository().listRegularStops());
+ assertStations(otpModel.siteRepository().listStations());
assertTripPatterns(otpModel.getTripPatterns());
assertTrips(otpModel.getAllTrips());
assertServiceIds(otpModel.getAllTrips(), otpModel.getAllServiceIds());
diff --git a/application/src/test/java/org/opentripplanner/netex/mapping/FlexStopsMapperTest.java b/application/src/test/java/org/opentripplanner/netex/mapping/FlexStopsMapperTest.java
index 4721ef03bf3..272db6b62f0 100644
--- a/application/src/test/java/org/opentripplanner/netex/mapping/FlexStopsMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/netex/mapping/FlexStopsMapperTest.java
@@ -23,7 +23,7 @@
import org.opentripplanner.transit.model.site.GroupStop;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.StopLocation;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
import org.rutebanken.netex.model.AllVehicleModesOfTransportEnumeration;
import org.rutebanken.netex.model.FlexibleArea;
import org.rutebanken.netex.model.FlexibleStopPlace;
@@ -127,14 +127,14 @@ class FlexStopsMapperTest {
);
private final TimetableRepositoryForTest testModel = TimetableRepositoryForTest.of();
- private final StopModelBuilder stopModelBuilder = testModel.stopModelBuilder();
+ private final SiteRepositoryBuilder siteRepositoryBuilder = testModel.siteRepositoryBuilder();
@Test
void testMapAreaStop() {
FlexStopsMapper flexStopsMapper = new FlexStopsMapper(
ID_FACTORY,
List.of(),
- stopModelBuilder,
+ siteRepositoryBuilder,
DataImportIssueStore.NOOP
);
@@ -195,7 +195,7 @@ void testMapFlexibleStopPlaceMissingStops() {
FlexStopsMapper subject = new FlexStopsMapper(
ID_FACTORY,
List.of(),
- stopModelBuilder,
+ siteRepositoryBuilder,
DataImportIssueStore.NOOP
);
@@ -216,7 +216,7 @@ void testMapFlexibleStopPlaceWithInvalidGeometryOnUnrestrictedPublicTransportAre
FlexStopsMapper subject = new FlexStopsMapper(
ID_FACTORY,
List.of(stop1, stop2),
- stopModelBuilder,
+ siteRepositoryBuilder,
DataImportIssueStore.NOOP
);
@@ -248,7 +248,7 @@ private void assertGroupStopMapping(FlexibleStopPlace flexibleStopPlace) {
FlexStopsMapper subject = new FlexStopsMapper(
ID_FACTORY,
List.of(stop1, stop2, stop3),
- stopModelBuilder,
+ siteRepositoryBuilder,
DataImportIssueStore.NOOP
);
@@ -292,7 +292,7 @@ private AreaStop createAreaStop(Collection polygonCoordinates) {
FlexStopsMapper flexStopsMapper = new FlexStopsMapper(
ID_FACTORY,
List.of(),
- stopModelBuilder,
+ siteRepositoryBuilder,
DataImportIssueStore.NOOP
);
FlexibleStopPlace flexibleStopPlace = getFlexibleStopPlace(polygonCoordinates);
diff --git a/application/src/test/java/org/opentripplanner/netex/mapping/RouteMapperTest.java b/application/src/test/java/org/opentripplanner/netex/mapping/RouteMapperTest.java
index 955a3fec34a..b2187af4216 100644
--- a/application/src/test/java/org/opentripplanner/netex/mapping/RouteMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/netex/mapping/RouteMapperTest.java
@@ -22,7 +22,7 @@
import org.opentripplanner.transit.model.network.Route;
import org.opentripplanner.transit.model.organization.Agency;
import org.opentripplanner.transit.model.organization.Branding;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.rutebanken.netex.model.AllVehicleModesOfTransportEnumeration;
import org.rutebanken.netex.model.Authority;
import org.rutebanken.netex.model.BrandingRefStructure;
@@ -76,7 +76,7 @@ void mapRouteWithDefaultAgency() {
void mapRouteWithAgencySpecified() {
NetexEntityIndex netexIndex = new NetexEntityIndex();
OtpTransitServiceBuilder transitBuilder = new OtpTransitServiceBuilder(
- new StopModel(),
+ new SiteRepository(),
DataImportIssueStore.NOOP
);
@@ -191,7 +191,7 @@ void mapRouteWithoutBranding() {
void mapRouteWithBranding() {
NetexEntityIndex netexIndex = new NetexEntityIndex();
OtpTransitServiceBuilder transitBuilder = new OtpTransitServiceBuilder(
- new StopModel(),
+ new SiteRepository(),
DataImportIssueStore.NOOP
);
@@ -225,7 +225,7 @@ void mapRouteWithBranding() {
void mapRouteWithGroupOfRoutes() {
NetexEntityIndex netexIndex = new NetexEntityIndex();
OtpTransitServiceBuilder transitBuilder = new OtpTransitServiceBuilder(
- new StopModel(),
+ new SiteRepository(),
DataImportIssueStore.NOOP
);
diff --git a/application/src/test/java/org/opentripplanner/netex/mapping/ServiceLinkMapperTest.java b/application/src/test/java/org/opentripplanner/netex/mapping/ServiceLinkMapperTest.java
index aa19a436112..52c1564f025 100644
--- a/application/src/test/java/org/opentripplanner/netex/mapping/ServiceLinkMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/netex/mapping/ServiceLinkMapperTest.java
@@ -25,7 +25,7 @@
import org.opentripplanner.transit.model.network.StopPattern;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.Station;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.rutebanken.netex.model.JourneyPattern;
import org.rutebanken.netex.model.LinkSequenceProjection;
import org.rutebanken.netex.model.LinkSequenceProjection_VersionStructure;
@@ -107,7 +107,11 @@ void setUpTestData() {
EntityById stopsById = new DefaultEntityById<>();
issueStore = new DefaultDataImportIssueStore();
- QuayMapper quayMapper = new QuayMapper(ID_FACTORY, issueStore, new StopModel().withContext());
+ QuayMapper quayMapper = new QuayMapper(
+ ID_FACTORY,
+ issueStore,
+ new SiteRepository().withContext()
+ );
stopPatternBuilder = StopPattern.create(3);
Station parentStation = Station
diff --git a/application/src/test/java/org/opentripplanner/netex/mapping/StationMapperTest.java b/application/src/test/java/org/opentripplanner/netex/mapping/StationMapperTest.java
index 8b09fe41b2a..6f0524d92d7 100644
--- a/application/src/test/java/org/opentripplanner/netex/mapping/StationMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/netex/mapping/StationMapperTest.java
@@ -12,7 +12,7 @@
import org.opentripplanner.netex.NetexTestDataSupport;
import org.opentripplanner.netex.mapping.support.FeedScopedIdFactory;
import org.opentripplanner.transit.model.site.Station;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.rutebanken.netex.model.Quay;
import org.rutebanken.netex.model.StopPlace;
@@ -29,7 +29,7 @@ void setUp() {
ZoneId.of("UTC"),
false,
Set.of(),
- StopModel.of()
+ SiteRepository.of()
);
}
diff --git a/application/src/test/java/org/opentripplanner/netex/mapping/StopAndStationMapperTest.java b/application/src/test/java/org/opentripplanner/netex/mapping/StopAndStationMapperTest.java
index f61bef86a19..2d710224661 100644
--- a/application/src/test/java/org/opentripplanner/netex/mapping/StopAndStationMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/netex/mapping/StopAndStationMapperTest.java
@@ -23,8 +23,8 @@
import org.opentripplanner.transit.model.basic.Accessibility;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.Station;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
import org.rutebanken.netex.model.AccessibilityAssessment;
import org.rutebanken.netex.model.AccessibilityLimitation;
import org.rutebanken.netex.model.AccessibilityLimitations_RelStructure;
@@ -78,7 +78,7 @@ void testWheelChairBoarding() {
var stopPlaceById = new HierarchicalVersionMapById();
stopPlaceById.add(stopPlace);
- StopAndStationMapper stopAndStationMapper = createStopAndStationMapper(StopModel.of());
+ StopAndStationMapper stopAndStationMapper = createStopAndStationMapper(SiteRepository.of());
stopAndStationMapper.mapParentAndChildStops(List.of(stopPlace));
@@ -159,7 +159,7 @@ void mapStopPlaceAndQuays() {
MappingSupport.ID_FACTORY,
quaysById,
null,
- StopModel.of(),
+ SiteRepository.of(),
DEFAULT_TIME_ZONE,
DataImportIssueStore.NOOP,
false,
@@ -230,7 +230,7 @@ void testMapIsolatedStopPlace(boolean isolated) {
MappingSupport.ID_FACTORY,
new HierarchicalVersionMapById<>(),
null,
- StopModel.of(),
+ SiteRepository.of(),
DEFAULT_TIME_ZONE,
DataImportIssueStore.NOOP,
isolated,
@@ -264,20 +264,20 @@ void testDuplicateStopIndices() {
stopPlace.setQuays(new Quays_RelStructure().withQuayRefOrQuay(objectFactory.createQuay(quay1)));
- StopModelBuilder stopModelBuilder = StopModel.of();
+ SiteRepositoryBuilder siteRepositoryBuilder = SiteRepository.of();
- StopAndStationMapper stopAndStationMapper = createStopAndStationMapper(stopModelBuilder);
+ StopAndStationMapper stopAndStationMapper = createStopAndStationMapper(siteRepositoryBuilder);
stopAndStationMapper.mapParentAndChildStops(List.of(stopPlace));
- stopModelBuilder.withRegularStops(stopAndStationMapper.resultStops);
+ siteRepositoryBuilder.withRegularStops(stopAndStationMapper.resultStops);
- StopAndStationMapper stopAndStationMapper2 = createStopAndStationMapper(stopModelBuilder);
+ StopAndStationMapper stopAndStationMapper2 = createStopAndStationMapper(siteRepositoryBuilder);
stopAndStationMapper2.mapParentAndChildStops(List.of(stopPlace));
- stopModelBuilder.withRegularStops(stopAndStationMapper2.resultStops);
+ siteRepositoryBuilder.withRegularStops(stopAndStationMapper2.resultStops);
- assertEquals(1, stopModelBuilder.regularStopsById().size());
+ assertEquals(1, siteRepositoryBuilder.regularStopsById().size());
assertEquals(
0,
- stopModelBuilder
+ siteRepositoryBuilder
.regularStopsById()
.get(MappingSupport.ID_FACTORY.createId("ST:Quay:1"))
.getIndex()
@@ -291,7 +291,7 @@ void testRouteToCentroid() {
MappingSupport.ID_FACTORY,
new HierarchicalVersionMapById<>(),
null,
- StopModel.of(),
+ SiteRepository.of(),
DEFAULT_TIME_ZONE,
DataImportIssueStore.NOOP,
false,
@@ -312,13 +312,13 @@ void testRouteToCentroid() {
}
private static StopAndStationMapper createStopAndStationMapper(
- StopModelBuilder stopModelBuilder
+ SiteRepositoryBuilder siteRepositoryBuilder
) {
return new StopAndStationMapper(
MappingSupport.ID_FACTORY,
new HierarchicalVersionMapById<>(),
null,
- stopModelBuilder,
+ siteRepositoryBuilder,
DEFAULT_TIME_ZONE,
DataImportIssueStore.NOOP,
false,
diff --git a/application/src/test/java/org/opentripplanner/netex/mapping/StopPlaceTypeMapperTest.java b/application/src/test/java/org/opentripplanner/netex/mapping/StopPlaceTypeMapperTest.java
index cb9dabc911d..50e0f45929a 100644
--- a/application/src/test/java/org/opentripplanner/netex/mapping/StopPlaceTypeMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/netex/mapping/StopPlaceTypeMapperTest.java
@@ -30,6 +30,15 @@ void mapWithTransportModeOnly() {
assertNull(transitMode.subMode());
}
+ @Test
+ void mapCableway() {
+ var transitMode = stopPlaceTypeMapper.map(
+ new StopPlace().withTransportMode(AllVehicleModesOfTransportEnumeration.CABLEWAY)
+ );
+ assertEquals(TransitMode.GONDOLA, transitMode.mainMode());
+ assertNull(transitMode.subMode());
+ }
+
@Test
void mapWithSubMode() {
var transitMode = stopPlaceTypeMapper.map(
diff --git a/application/src/test/java/org/opentripplanner/netex/mapping/TransportModeMapperTest.java b/application/src/test/java/org/opentripplanner/netex/mapping/TransportModeMapperTest.java
index 5df2cc3dc05..11c41548a60 100644
--- a/application/src/test/java/org/opentripplanner/netex/mapping/TransportModeMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/netex/mapping/TransportModeMapperTest.java
@@ -67,6 +67,13 @@ void mapWithTransportModeOnly() throws UnsupportedModeException {
assertNull(transitMode.subMode());
}
+ @Test
+ void mapCableway() throws UnsupportedModeException {
+ var transitMode = transportModeMapper.map(AllVehicleModesOfTransportEnumeration.CABLEWAY, null);
+ assertEquals(TransitMode.GONDOLA, transitMode.mainMode());
+ assertNull(transitMode.subMode());
+ }
+
@Test
void mapWithSubMode() throws UnsupportedModeException {
var transitMode = transportModeMapper.map(
diff --git a/application/src/test/java/org/opentripplanner/netex/mapping/TripMapperTest.java b/application/src/test/java/org/opentripplanner/netex/mapping/TripMapperTest.java
index a4684fdba8f..6c4973329d3 100644
--- a/application/src/test/java/org/opentripplanner/netex/mapping/TripMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/netex/mapping/TripMapperTest.java
@@ -16,7 +16,7 @@
import org.opentripplanner.transit.model.basic.Accessibility;
import org.opentripplanner.transit.model.framework.FeedScopedId;
import org.opentripplanner.transit.model.timetable.Trip;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.rutebanken.netex.model.AccessibilityAssessment;
import org.rutebanken.netex.model.AccessibilityLimitation;
import org.rutebanken.netex.model.AccessibilityLimitations_RelStructure;
@@ -49,7 +49,7 @@ public void mapTripWithWheelchairAccess() {
var limitations = new AccessibilityLimitations_RelStructure();
var access = new AccessibilityAssessment();
- var transitBuilder = new OtpTransitServiceBuilder(new StopModel(), issueStore);
+ var transitBuilder = new OtpTransitServiceBuilder(new SiteRepository(), issueStore);
transitBuilder.getRoutes().add(TimetableRepositoryForTest.route(ROUTE_ID).build());
TripMapper tripMapper = new TripMapper(
@@ -79,7 +79,7 @@ public void mapTripWithWheelchairAccess() {
@Test
public void mapTrip() {
OtpTransitServiceBuilder transitBuilder = new OtpTransitServiceBuilder(
- new StopModel(),
+ new SiteRepository(),
issueStore
);
transitBuilder.getRoutes().add(TimetableRepositoryForTest.route(ROUTE_ID).build());
@@ -106,7 +106,7 @@ public void mapTrip() {
@Test
public void mapTripWithRouteRefViaJourneyPattern() {
OtpTransitServiceBuilder transitBuilder = new OtpTransitServiceBuilder(
- new StopModel(),
+ new SiteRepository(),
issueStore
);
transitBuilder.getRoutes().add(TimetableRepositoryForTest.route(ROUTE_ID).build());
diff --git a/application/src/test/java/org/opentripplanner/routing/TestHalfEdges.java b/application/src/test/java/org/opentripplanner/routing/TestHalfEdges.java
index 2411444db49..dc473276c7b 100644
--- a/application/src/test/java/org/opentripplanner/routing/TestHalfEdges.java
+++ b/application/src/test/java/org/opentripplanner/routing/TestHalfEdges.java
@@ -68,7 +68,7 @@ public class TestHalfEdges {
public void setUp() {
var deduplicator = new Deduplicator();
graph = new Graph(deduplicator);
- var stopModelBuilder = testModel.stopModelBuilder();
+ var siteRepositoryBuilder = testModel.siteRepositoryBuilder();
var factory = new VertexFactory(graph);
// a 0.1 degree x 0.1 degree square
tl = factory.intersection("tl", -74.01, 40.01);
@@ -161,8 +161,8 @@ public void setUp() {
var s1 = testModel.stop("fleem station", 40.0099999, -74.005).build();
var s2 = testModel.stop("morx station", 40.0099999, -74.002).build();
- stopModelBuilder.withRegularStop(s1).withRegularStop(s2);
- timetableRepository = new TimetableRepository(stopModelBuilder.build(), deduplicator);
+ siteRepositoryBuilder.withRegularStop(s1).withRegularStop(s2);
+ timetableRepository = new TimetableRepository(siteRepositoryBuilder.build(), deduplicator);
station1 = factory.transitStop(TransitStopVertex.of().withStop(s1));
station2 = factory.transitStop(TransitStopVertex.of().withStop(s2));
@@ -173,7 +173,7 @@ public void setUp() {
graph.hasStreets = true;
timetableRepository.index();
- graph.index(timetableRepository.getStopModel());
+ graph.index(timetableRepository.getSiteRepository());
}
@Test
@@ -596,7 +596,7 @@ public void testStreetSplittingAlerts() {
public void testStreetLocationFinder() {
StreetIndex finder = graph.getStreetIndex();
GraphFinder graphFinder = new DirectGraphFinder(
- timetableRepository.getStopModel()::findRegularStops
+ timetableRepository.getSiteRepository()::findRegularStops
);
Set tempEdges = new HashSet<>();
// test that the local stop finder finds stops
diff --git a/application/src/test/java/org/opentripplanner/routing/algorithm/GraphRoutingTest.java b/application/src/test/java/org/opentripplanner/routing/algorithm/GraphRoutingTest.java
index 8108274c318..b9f9d7acb56 100644
--- a/application/src/test/java/org/opentripplanner/routing/algorithm/GraphRoutingTest.java
+++ b/application/src/test/java/org/opentripplanner/routing/algorithm/GraphRoutingTest.java
@@ -61,7 +61,7 @@
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.Station;
import org.opentripplanner.transit.model.site.StationBuilder;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
public abstract class GraphRoutingTest {
@@ -85,7 +85,7 @@ public abstract static class Builder {
protected Builder() {
var deduplicator = new Deduplicator();
graph = new Graph(deduplicator);
- timetableRepository = new TimetableRepository(new StopModel(), deduplicator);
+ timetableRepository = new TimetableRepository(new SiteRepository(), deduplicator);
vertexFactory = new VertexFactory(graph);
vehicleParkingHelper = new VehicleParkingHelper(graph);
}
@@ -242,8 +242,8 @@ RegularStop stopEntity(
double longitude,
@Nullable Station parentStation
) {
- var stopModelBuilder = timetableRepository.getStopModel().withContext();
- var testModel = new TimetableRepositoryForTest(stopModelBuilder);
+ var siteRepositoryBuilder = timetableRepository.getSiteRepository().withContext();
+ var testModel = new TimetableRepositoryForTest(siteRepositoryBuilder);
var stopBuilder = testModel.stop(id).withCoordinate(latitude, longitude);
if (parentStation != null) {
@@ -251,19 +251,21 @@ RegularStop stopEntity(
}
var stop = stopBuilder.build();
- timetableRepository.mergeStopModels(stopModelBuilder.withRegularStop(stop).build());
+ timetableRepository.mergeSiteRepositories(
+ siteRepositoryBuilder.withRegularStop(stop).build()
+ );
return stop;
}
public Station stationEntity(String id, Consumer stationBuilder) {
- var stopModelBuilder = timetableRepository.getStopModel().withContext();
- var testModel = new TimetableRepositoryForTest(stopModelBuilder);
+ var siteRepositoryBuilder = timetableRepository.getSiteRepository().withContext();
+ var testModel = new TimetableRepositoryForTest(siteRepositoryBuilder);
var builder = testModel.station(id);
stationBuilder.accept(builder);
var station = builder.build();
- timetableRepository.mergeStopModels(stopModelBuilder.withStation(station).build());
+ timetableRepository.mergeSiteRepositories(siteRepositoryBuilder.withStation(station).build());
return station;
}
diff --git a/application/src/test/java/org/opentripplanner/routing/algorithm/filterchain/ItineraryListFilterChainTest.java b/application/src/test/java/org/opentripplanner/routing/algorithm/filterchain/ItineraryListFilterChainTest.java
index 1cd19823f17..4ccb7ac9793 100644
--- a/application/src/test/java/org/opentripplanner/routing/algorithm/filterchain/ItineraryListFilterChainTest.java
+++ b/application/src/test/java/org/opentripplanner/routing/algorithm/filterchain/ItineraryListFilterChainTest.java
@@ -305,12 +305,12 @@ void testPostProcessorWithMaxItinerariesFilterSetToOneArriveBy() {
@Nested
class FlexSearchWindow {
- private static final Itinerary FLEX = newItinerary(A, T11_00)
+ private final Itinerary flex = newItinerary(A, T11_00)
.flex(T11_00, T11_30, B)
.withIsSearchWindowAware(false)
.build();
- private static final Instant EARLIEST_DEPARTURE = FLEX.startTime().plusMinutes(10).toInstant();
- private static final Duration SEARCH_WINDOW = Duration.ofHours(7);
+ private final Instant earliestDeparture = flex.startTime().plusMinutes(10).toInstant();
+ private final Duration searchWindow = Duration.ofHours(7);
/**
* When the filtering of direct flex by the transit search window is deactivated, the direct
@@ -320,18 +320,18 @@ class FlexSearchWindow {
void keepDirectFlexWhenFilteringByEarliestDepartureIsDisabled() {
ItineraryListFilterChain chain = createBuilder(true, false, 10)
.withFilterDirectFlexBySearchWindow(false)
- .withSearchWindow(EARLIEST_DEPARTURE, SEARCH_WINDOW)
+ .withSearchWindow(earliestDeparture, searchWindow)
.build();
- assertEquals(toStr(List.of(FLEX)), toStr(chain.filter(List.of(FLEX))));
+ assertEquals(toStr(List.of(flex)), toStr(chain.filter(List.of(flex))));
}
@Test
void removeDirectFlexWhenFilteringByEarliestDepartureIsEnabled() {
ItineraryListFilterChain chain = createBuilder(true, false, 10)
.withFilterDirectFlexBySearchWindow(true)
- .withSearchWindow(EARLIEST_DEPARTURE, SEARCH_WINDOW)
+ .withSearchWindow(earliestDeparture, searchWindow)
.build();
- assertEquals(toStr(List.of()), toStr(chain.filter(List.of(FLEX))));
+ assertEquals(toStr(List.of()), toStr(chain.filter(List.of(flex))));
}
}
diff --git a/application/src/test/java/org/opentripplanner/routing/algorithm/mapping/RaptorPathToItineraryMapperTest.java b/application/src/test/java/org/opentripplanner/routing/algorithm/mapping/RaptorPathToItineraryMapperTest.java
index d1940119655..4887b1e6f03 100644
--- a/application/src/test/java/org/opentripplanner/routing/algorithm/mapping/RaptorPathToItineraryMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/routing/algorithm/mapping/RaptorPathToItineraryMapperTest.java
@@ -262,11 +262,11 @@ void isSearchWindowAware() {
}
private TripPattern getOriginalPattern(TestTripPattern pattern) {
- var stopModelBuilder = TEST_MODEL.stopModelBuilder();
+ var siteRepositoryBuilder = TEST_MODEL.siteRepositoryBuilder();
ArrayList stopTimes = new ArrayList<>();
for (int i = 0; i < pattern.numberOfStopsInPattern(); i++) {
- var stop = stopModelBuilder
+ var stop = siteRepositoryBuilder
.regularStop(new FeedScopedId("TestFeed", i + ""))
.withCoordinate(0.0, 0.0)
.build();
@@ -311,7 +311,7 @@ private static TransitLayer getTransitLayer() {
null,
null,
TEST_MODEL
- .stopModelBuilder()
+ .siteRepositoryBuilder()
.withRegularStop(S1)
.withRegularStop(S2)
.withRegularStop(S3)
diff --git a/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TransitLayerMapperTest.java b/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TransitLayerMapperTest.java
index 1301eea3844..b7e441e4bf2 100644
--- a/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TransitLayerMapperTest.java
+++ b/application/src/test/java/org/opentripplanner/routing/algorithm/raptoradapter/transit/mappers/TransitLayerMapperTest.java
@@ -11,7 +11,7 @@
import org.opentripplanner.transit.model.site.Station;
import org.opentripplanner.transit.model.site.StopLocation;
import org.opentripplanner.transit.model.site.StopTransferPriority;
-import org.opentripplanner.transit.service.StopModelMock;
+import org.opentripplanner.transit.service.SiteRepositoryMock;
class TransitLayerMapperTest {
@@ -44,7 +44,7 @@ class TransitLayerMapperTest {
@Test
public void createStopBoardAlightTransferCosts() {
int[] result = TransitLayerMapper.createStopBoardAlightTransferCosts(
- new StopModelMock(STOPS),
+ new SiteRepositoryMock(STOPS),
TransitTuningParameters.FOR_TEST
);
diff --git a/application/src/test/java/org/opentripplanner/routing/core/TemporaryVerticesContainerTest.java b/application/src/test/java/org/opentripplanner/routing/core/TemporaryVerticesContainerTest.java
index 1af45763b60..03359143f54 100644
--- a/application/src/test/java/org/opentripplanner/routing/core/TemporaryVerticesContainerTest.java
+++ b/application/src/test/java/org/opentripplanner/routing/core/TemporaryVerticesContainerTest.java
@@ -16,7 +16,6 @@
import org.opentripplanner.framework.geometry.GeometryUtils;
import org.opentripplanner.framework.geometry.SphericalDistanceLibrary;
import org.opentripplanner.model.GenericLocation;
-import org.opentripplanner.routing.api.request.RouteRequest;
import org.opentripplanner.routing.api.request.StreetMode;
import org.opentripplanner.routing.graph.Graph;
import org.opentripplanner.street.model.StreetTraversalPermission;
@@ -29,7 +28,7 @@
import org.opentripplanner.street.model.vertex.Vertex;
import org.opentripplanner.street.search.TemporaryVerticesContainer;
import org.opentripplanner.transit.model.framework.Deduplicator;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
public class TemporaryVerticesContainerTest {
@@ -55,7 +54,7 @@ public void setup() {
createStreetEdge(a, b, "a -> b");
createStreetEdge(b, a, "b -> a");
createStreetEdge(a, c, "a -> c");
- g.index(new StopModel());
+ g.index(new SiteRepository());
}
@Test
diff --git a/application/src/test/java/org/opentripplanner/routing/graph/GraphSerializationTest.java b/application/src/test/java/org/opentripplanner/routing/graph/GraphSerializationTest.java
index 03bd2d2b5cc..47568fa1252 100644
--- a/application/src/test/java/org/opentripplanner/routing/graph/GraphSerializationTest.java
+++ b/application/src/test/java/org/opentripplanner/routing/graph/GraphSerializationTest.java
@@ -207,10 +207,10 @@ private void testRoundTrip(
// might be indexed by other tests.
originalTimetableRepository.index();
- originalGraph.index(originalTimetableRepository.getStopModel());
+ originalGraph.index(originalTimetableRepository.getSiteRepository());
copiedTimetableRepository1.index();
- copiedGraph1.index(copiedTimetableRepository1.getStopModel());
+ copiedGraph1.index(copiedTimetableRepository1.getSiteRepository());
assertNoDifferences(originalGraph, copiedGraph1);
@@ -218,7 +218,7 @@ private void testRoundTrip(
Graph copiedGraph2 = deserializedGraph2.graph;
TimetableRepository copiedTimetableRepository2 = deserializedGraph2.timetableRepository;
copiedTimetableRepository2.index();
- copiedGraph2.index(copiedTimetableRepository2.getStopModel());
+ copiedGraph2.index(copiedTimetableRepository2.getSiteRepository());
assertNoDifferences(copiedGraph1, copiedGraph2);
}
}
diff --git a/application/src/test/java/org/opentripplanner/routing/graphfinder/DirectGraphFinderTest.java b/application/src/test/java/org/opentripplanner/routing/graphfinder/DirectGraphFinderTest.java
index c407fa08098..215bd317335 100644
--- a/application/src/test/java/org/opentripplanner/routing/graphfinder/DirectGraphFinderTest.java
+++ b/application/src/test/java/org/opentripplanner/routing/graphfinder/DirectGraphFinderTest.java
@@ -9,11 +9,11 @@
import org.opentripplanner.TestOtpModel;
import org.opentripplanner.routing.algorithm.GraphRoutingTest;
import org.opentripplanner.street.model.vertex.TransitStopVertex;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
class DirectGraphFinderTest extends GraphRoutingTest {
- private StopModel stopModel;
+ private SiteRepository siteRepository;
private TransitStopVertex S1, S2, S3;
@@ -29,7 +29,7 @@ public void build() {
}
}
);
- stopModel = model.timetableRepository().getStopModel();
+ siteRepository = model.timetableRepository().getSiteRepository();
}
@Test
@@ -37,7 +37,7 @@ void findClosestStops() {
var ns1 = new NearbyStop(S1.getStop(), 0, null, null);
var ns2 = new NearbyStop(S2.getStop(), 1112, null, null);
- var subject = new DirectGraphFinder(stopModel::findRegularStops);
+ var subject = new DirectGraphFinder(siteRepository::findRegularStops);
var coordinate = new Coordinate(19.000, 47.500);
assertEquals(List.of(ns1), subject.findClosestStops(coordinate, 100));
diff --git a/application/src/test/java/org/opentripplanner/routing/linking/LinkStopToPlatformTest.java b/application/src/test/java/org/opentripplanner/routing/linking/LinkStopToPlatformTest.java
index f0ddc08087e..e37ced70721 100644
--- a/application/src/test/java/org/opentripplanner/routing/linking/LinkStopToPlatformTest.java
+++ b/application/src/test/java/org/opentripplanner/routing/linking/LinkStopToPlatformTest.java
@@ -32,7 +32,7 @@
import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
import org.opentripplanner.transit.model.framework.Deduplicator;
import org.opentripplanner.transit.model.site.RegularStop;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,9 +45,9 @@ public class LinkStopToPlatformTest {
private Graph prepareTest(Coordinate[] platform, int[] visible, Coordinate[] stops) {
var deduplicator = new Deduplicator();
- var stopModel = new StopModel();
+ var siteRepository = new SiteRepository();
Graph graph = new Graph(deduplicator);
- var timetableRepository = new TimetableRepository(stopModel, deduplicator);
+ var timetableRepository = new TimetableRepository(siteRepository, deduplicator);
ArrayList vertices = new ArrayList<>();
Coordinate[] closedGeom = new Coordinate[platform.length + 1];
@@ -107,7 +107,7 @@ private Graph prepareTest(Coordinate[] platform, int[] visible, Coordinate[] sto
}
timetableRepository.index();
- graph.index(timetableRepository.getStopModel());
+ graph.index(timetableRepository.getSiteRepository());
for (RegularStop s : transitStops) {
var v = TransitStopVertex.of().withStop(s).build();
diff --git a/application/src/test/java/org/opentripplanner/routing/vehicle_parking/VehicleParkingTestGraphData.java b/application/src/test/java/org/opentripplanner/routing/vehicle_parking/VehicleParkingTestGraphData.java
index 7dee554efdd..03c4981f181 100644
--- a/application/src/test/java/org/opentripplanner/routing/vehicle_parking/VehicleParkingTestGraphData.java
+++ b/application/src/test/java/org/opentripplanner/routing/vehicle_parking/VehicleParkingTestGraphData.java
@@ -6,7 +6,7 @@
import org.opentripplanner.street.model.vertex.IntersectionVertex;
import org.opentripplanner.street.model.vertex.VertexFactory;
import org.opentripplanner.transit.model.framework.Deduplicator;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
public class VehicleParkingTestGraphData {
@@ -19,9 +19,9 @@ public class VehicleParkingTestGraphData {
public void initGraph() {
var deduplicator = new Deduplicator();
- var stopModel = new StopModel();
+ var siteRepository = new SiteRepository();
graph = new Graph(deduplicator);
- timetableRepository = new TimetableRepository(stopModel, deduplicator);
+ timetableRepository = new TimetableRepository(siteRepository, deduplicator);
graph.hasStreets = true;
var factory = new VertexFactory(graph);
diff --git a/application/src/test/java/org/opentripplanner/street/integration/BarrierRoutingTest.java b/application/src/test/java/org/opentripplanner/street/integration/BarrierRoutingTest.java
index 60daef889b0..8092ab62bc3 100644
--- a/application/src/test/java/org/opentripplanner/street/integration/BarrierRoutingTest.java
+++ b/application/src/test/java/org/opentripplanner/street/integration/BarrierRoutingTest.java
@@ -45,7 +45,7 @@ public static void createGraph() {
ResourceLoader.of(BarrierRoutingTest.class).file("herrenberg-barrier-gates.osm.pbf")
);
graph = model.graph();
- graph.index(model.timetableRepository().getStopModel());
+ graph.index(model.timetableRepository().getSiteRepository());
}
/**
diff --git a/application/src/test/java/org/opentripplanner/street/integration/BicycleRoutingTest.java b/application/src/test/java/org/opentripplanner/street/integration/BicycleRoutingTest.java
index d5d6f7452db..60dc43aa3f9 100644
--- a/application/src/test/java/org/opentripplanner/street/integration/BicycleRoutingTest.java
+++ b/application/src/test/java/org/opentripplanner/street/integration/BicycleRoutingTest.java
@@ -35,7 +35,7 @@ public class BicycleRoutingTest {
herrenbergGraph = model.graph();
model.timetableRepository().index();
- herrenbergGraph.index(model.timetableRepository().getStopModel());
+ herrenbergGraph.index(model.timetableRepository().getSiteRepository());
}
/**
diff --git a/application/src/test/java/org/opentripplanner/street/integration/BikeWalkingTest.java b/application/src/test/java/org/opentripplanner/street/integration/BikeWalkingTest.java
index 41ec677b3bb..1d4ec2f3f79 100644
--- a/application/src/test/java/org/opentripplanner/street/integration/BikeWalkingTest.java
+++ b/application/src/test/java/org/opentripplanner/street/integration/BikeWalkingTest.java
@@ -295,6 +295,75 @@ public void testElevatorBiking() {
);
}
+ @Test
+ public void testBicycleBicycleNoThruTrafficStart() {
+ CD.setBicycleNoThruTraffic(true);
+
+ assertPath(
+ C,
+ F,
+ StreetMode.BIKE,
+ List.of(
+ "null - 0 / 0.0 - null",
+ "BICYCLE - 5 / 10.0 - CD street",
+ "BICYCLE - 5 / 10.0 - DE street",
+ "BICYCLE - 5 / 10.0 - EF street"
+ ),
+ List.of(
+ "null - 0 / 0.0 - null",
+ "BICYCLE - 5 / 10.0 - CD street",
+ "BICYCLE - 5 / 10.0 - DE street",
+ "BICYCLE - 5 / 10.0 - EF street"
+ )
+ );
+ }
+
+ @Test
+ public void testBicycleBicycleNoThruTrafficMiddle() {
+ DE.setBicycleNoThruTraffic(true);
+
+ assertPath(
+ C,
+ F,
+ StreetMode.BIKE,
+ List.of(
+ "null - 0 / 0.0 - null",
+ "BICYCLE - 5 / 10.0 - CD street",
+ "🚲WALK - 120 / 1100.0 - DE street",
+ "BICYCLE - 105 / 1010.0 - EF street"
+ ),
+ List.of(
+ "null - 0 / 0.0 - null",
+ "BICYCLE - 105 / 1010.0 - CD street",
+ "🚲WALK - 120 / 1100.0 - DE street",
+ "BICYCLE - 5 / 10.0 - EF street"
+ )
+ );
+ }
+
+ @Test
+ public void testBicycleBicycleNoThruTrafficEnd() {
+ EF.setBicycleNoThruTraffic(true);
+
+ assertPath(
+ C,
+ F,
+ StreetMode.BIKE,
+ List.of(
+ "null - 0 / 0.0 - null",
+ "BICYCLE - 5 / 10.0 - CD street",
+ "BICYCLE - 5 / 10.0 - DE street",
+ "BICYCLE - 5 / 10.0 - EF street"
+ ),
+ List.of(
+ "null - 0 / 0.0 - null",
+ "BICYCLE - 5 / 10.0 - CD street",
+ "BICYCLE - 5 / 10.0 - DE street",
+ "BICYCLE - 5 / 10.0 - EF street"
+ )
+ );
+ }
+
@BeforeEach
protected void setUp() throws Exception {
// Generate a very simple graph
diff --git a/application/src/test/java/org/opentripplanner/street/integration/WalkRoutingTest.java b/application/src/test/java/org/opentripplanner/street/integration/WalkRoutingTest.java
index 50ab7d5ea55..6f3f47ba6e6 100644
--- a/application/src/test/java/org/opentripplanner/street/integration/WalkRoutingTest.java
+++ b/application/src/test/java/org/opentripplanner/street/integration/WalkRoutingTest.java
@@ -30,7 +30,7 @@ class WalkRoutingTest {
roundabout = model.graph();
model.timetableRepository().index();
- roundabout.index(model.timetableRepository().getStopModel());
+ roundabout.index(model.timetableRepository().getSiteRepository());
}
/**
diff --git a/application/src/test/java/org/opentripplanner/transit/model/_data/PatternTestModel.java b/application/src/test/java/org/opentripplanner/transit/model/_data/PatternTestModel.java
index 5b3883005de..e046ea42247 100644
--- a/application/src/test/java/org/opentripplanner/transit/model/_data/PatternTestModel.java
+++ b/application/src/test/java/org/opentripplanner/transit/model/_data/PatternTestModel.java
@@ -9,7 +9,7 @@
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.timetable.ScheduledTripTimes;
import org.opentripplanner.transit.model.timetable.Trip;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
public class PatternTestModel {
@@ -22,7 +22,7 @@ public class PatternTestModel {
.withServiceId(SERVICE_ID)
.build();
private static final TimetableRepositoryForTest MODEL = new TimetableRepositoryForTest(
- StopModel.of()
+ SiteRepository.of()
);
private static final RegularStop STOP_1 = MODEL.stop("1").build();
private static final StopPattern STOP_PATTERN = TimetableRepositoryForTest.stopPattern(
diff --git a/application/src/test/java/org/opentripplanner/transit/model/_data/TimetableRepositoryForTest.java b/application/src/test/java/org/opentripplanner/transit/model/_data/TimetableRepositoryForTest.java
index 1da4b5b06e0..7d7652b52e6 100644
--- a/application/src/test/java/org/opentripplanner/transit/model/_data/TimetableRepositoryForTest.java
+++ b/application/src/test/java/org/opentripplanner/transit/model/_data/TimetableRepositoryForTest.java
@@ -38,17 +38,17 @@
import org.opentripplanner.transit.model.site.StopTransferPriority;
import org.opentripplanner.transit.model.timetable.Trip;
import org.opentripplanner.transit.model.timetable.TripBuilder;
-import org.opentripplanner.transit.service.StopModel;
-import org.opentripplanner.transit.service.StopModelBuilder;
+import org.opentripplanner.transit.service.SiteRepository;
+import org.opentripplanner.transit.service.SiteRepositoryBuilder;
/**
* Test utility class to help construct valid transit model objects.
*
* TODO: This need cleanup - it has static factory methods. This is not safe, since
* all objects created will be created in the same context. All stops are created
- * withing the context of a StopModel, mixing more than one model in a test is sharing
+ * withing the context of a SiteRepository, mixing more than one model in a test is sharing
* state between tests. For now, it is just the stop index - but we want to
- * use this to encapsulate the StopModel completely.
+ * use this to encapsulate the SiteRepository completely.
*/
public class TimetableRepositoryForTest {
@@ -89,14 +89,14 @@ public class TimetableRepositoryForTest {
.withUrl("https:/www.otherfeedagency.com")
.build();
- private final StopModelBuilder stopModelBuilder;
+ private final SiteRepositoryBuilder siteRepositoryBuilder;
- public TimetableRepositoryForTest(StopModelBuilder stopModelBuilder) {
- this.stopModelBuilder = stopModelBuilder;
+ public TimetableRepositoryForTest(SiteRepositoryBuilder siteRepositoryBuilder) {
+ this.siteRepositoryBuilder = siteRepositoryBuilder;
}
public static TimetableRepositoryForTest of() {
- return new TimetableRepositoryForTest(StopModel.of());
+ return new TimetableRepositoryForTest(SiteRepository.of());
}
public static FeedScopedId id(String id) {
@@ -137,15 +137,15 @@ public static TripBuilder trip(String feedId, String tripId) {
return Trip.of(FeedScopedId.ofNullable(feedId, tripId)).withRoute(route("R" + tripId).build());
}
- public StopModelBuilder stopModelBuilder() {
- return stopModelBuilder;
+ public SiteRepositoryBuilder siteRepositoryBuilder() {
+ return siteRepositoryBuilder;
}
/**
* Create a stop with all required fields set.
*/
public RegularStopBuilder stop(String idAndName) {
- return stopModelBuilder
+ return siteRepositoryBuilder
.regularStop(id(idAndName))
.withName(new NonLocalizedString(idAndName))
.withCode(idAndName)
@@ -167,7 +167,7 @@ public StationBuilder station(String idAndName) {
}
public GroupStop groupStop(String idAndName, RegularStop... stops) {
- var builder = stopModelBuilder
+ var builder = siteRepositoryBuilder
.groupStop(id(idAndName))
.withName(new NonLocalizedString(idAndName));
@@ -177,7 +177,7 @@ public GroupStop groupStop(String idAndName, RegularStop... stops) {
}
public AreaStopBuilder areaStop(String idAndName) {
- return stopModelBuilder
+ return siteRepositoryBuilder
.areaStop(id(idAndName))
.withName(new NonLocalizedString(idAndName))
.withGeometry(ANY_POLYGON);
diff --git a/application/src/test/java/org/opentripplanner/transit/model/site/AreaStopTest.java b/application/src/test/java/org/opentripplanner/transit/model/site/AreaStopTest.java
index 542dcaadc36..cf68a51ae5a 100644
--- a/application/src/test/java/org/opentripplanner/transit/model/site/AreaStopTest.java
+++ b/application/src/test/java/org/opentripplanner/transit/model/site/AreaStopTest.java
@@ -14,7 +14,7 @@
import org.opentripplanner.framework.i18n.I18NString;
import org.opentripplanner.framework.i18n.NonLocalizedString;
import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
class AreaStopTest {
@@ -33,7 +33,7 @@ class AreaStopTest {
private static final AreaStop subject = areaStopBuilder().withGeometry(GEOMETRY).build();
private static AreaStopBuilder areaStopBuilder() {
- return StopModel
+ return SiteRepository
.of()
.areaStop(TimetableRepositoryForTest.id(ID))
.withName(NAME)
diff --git a/application/src/test/java/org/opentripplanner/transit/model/site/GroupStopTest.java b/application/src/test/java/org/opentripplanner/transit/model/site/GroupStopTest.java
index 654ec304792..06c7a7dff1c 100644
--- a/application/src/test/java/org/opentripplanner/transit/model/site/GroupStopTest.java
+++ b/application/src/test/java/org/opentripplanner/transit/model/site/GroupStopTest.java
@@ -15,7 +15,7 @@
import org.opentripplanner.framework.i18n.I18NString;
import org.opentripplanner.framework.i18n.NonLocalizedString;
import org.opentripplanner.transit.model._data.TimetableRepositoryForTest;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
class GroupStopTest {
@@ -27,7 +27,7 @@ class GroupStopTest {
private static final StopLocation STOP_LOCATION = TEST_MODEL
.stop("1:stop", Coordinates.BERLIN.getX(), Coordinates.BERLIN.getY())
.build();
- private static final GroupStop subject = StopModel
+ private static final GroupStop subject = SiteRepository
.of()
.groupStop(TimetableRepositoryForTest.id(ID))
.withName(NAME)
@@ -43,7 +43,7 @@ void testGroupStopGeometry() {
.stop("2:stop", Coordinates.HAMBURG.getX(), Coordinates.HAMBURG.getY())
.build();
- GroupStop groupStop = StopModel
+ GroupStop groupStop = SiteRepository
.of()
.groupStop(TimetableRepositoryForTest.id(ID))
.withName(NAME)
@@ -64,7 +64,7 @@ void testGroupStopEncompassingAreaGeometry() {
.stop("1:stop", Coordinates.BERLIN.getX(), Coordinates.BERLIN.getY())
.build();
- GroupStop groupStop = StopModel
+ GroupStop groupStop = SiteRepository
.of()
.groupStop(TimetableRepositoryForTest.id(ID))
.withName(NAME)
diff --git a/application/src/test/java/org/opentripplanner/transit/model/site/RegularStopTest.java b/application/src/test/java/org/opentripplanner/transit/model/site/RegularStopTest.java
index 028a8b0b218..c2c50b24c9e 100644
--- a/application/src/test/java/org/opentripplanner/transit/model/site/RegularStopTest.java
+++ b/application/src/test/java/org/opentripplanner/transit/model/site/RegularStopTest.java
@@ -15,7 +15,7 @@
import org.opentripplanner.transit.model.basic.Accessibility;
import org.opentripplanner.transit.model.basic.SubMode;
import org.opentripplanner.transit.model.basic.TransitMode;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
class RegularStopTest {
@@ -35,7 +35,7 @@ class RegularStopTest {
public static final ZoneId TIME_ZONE = ZoneId.of(TimetableRepositoryForTest.TIME_ZONE_ID);
private static final String PLATFORM_CODE = "platformCode";
- private static final RegularStop subject = StopModel
+ private static final RegularStop subject = SiteRepository
.of()
.regularStop(TimetableRepositoryForTest.id(ID))
.withName(NAME)
diff --git a/application/src/test/java/org/opentripplanner/transit/service/DefaultTransitServiceTest.java b/application/src/test/java/org/opentripplanner/transit/service/DefaultTransitServiceTest.java
index ec95c91a3f7..1c0d2a03a0f 100644
--- a/application/src/test/java/org/opentripplanner/transit/service/DefaultTransitServiceTest.java
+++ b/application/src/test/java/org/opentripplanner/transit/service/DefaultTransitServiceTest.java
@@ -52,14 +52,14 @@ class DefaultTransitServiceTest {
@BeforeAll
static void setup() {
- var stopModel = TEST_MODEL
- .stopModelBuilder()
+ var siteRepository = TEST_MODEL
+ .siteRepositoryBuilder()
.withRegularStop(STOP_A)
.withRegularStop(STOP_B)
.withStation(STATION)
.build();
- var timetableRepository = new TimetableRepository(stopModel, new Deduplicator());
+ var timetableRepository = new TimetableRepository(siteRepository, new Deduplicator());
timetableRepository.addTripPattern(RAIL_PATTERN.getId(), RAIL_PATTERN);
timetableRepository.index();
diff --git a/application/src/test/java/org/opentripplanner/transit/service/StopModelMock.java b/application/src/test/java/org/opentripplanner/transit/service/SiteRepositoryMock.java
similarity index 76%
rename from application/src/test/java/org/opentripplanner/transit/service/StopModelMock.java
rename to application/src/test/java/org/opentripplanner/transit/service/SiteRepositoryMock.java
index 8677f7b9dec..34884664b6d 100644
--- a/application/src/test/java/org/opentripplanner/transit/service/StopModelMock.java
+++ b/application/src/test/java/org/opentripplanner/transit/service/SiteRepositoryMock.java
@@ -3,11 +3,11 @@
import java.util.List;
import org.opentripplanner.transit.model.site.StopLocation;
-public class StopModelMock extends StopModel {
+public class SiteRepositoryMock extends SiteRepository {
private final List stops;
- public StopModelMock(List stops) {
+ public SiteRepositoryMock(List stops) {
this.stops = stops;
}
diff --git a/application/src/test/java/org/opentripplanner/transit/service/StopModelTest.java b/application/src/test/java/org/opentripplanner/transit/service/SiteRepositoryTest.java
similarity index 86%
rename from application/src/test/java/org/opentripplanner/transit/service/StopModelTest.java
rename to application/src/test/java/org/opentripplanner/transit/service/SiteRepositoryTest.java
index aa98a85b0a7..8e7b4e6f78f 100644
--- a/application/src/test/java/org/opentripplanner/transit/service/StopModelTest.java
+++ b/application/src/test/java/org/opentripplanner/transit/service/SiteRepositoryTest.java
@@ -20,7 +20,7 @@
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.Station;
-class StopModelTest {
+class SiteRepositoryTest {
private static final WgsCoordinate COOR_A = new WgsCoordinate(60.0, 11.0);
private static final WgsCoordinate COOR_B = new WgsCoordinate(62.0, 12.0);
@@ -36,20 +36,20 @@ class StopModelTest {
.build();
private static final String EXP_STATIONS = List.of(STATION).toString();
- private final StopModelBuilder stopModelBuilder = StopModel.of();
- private final RegularStop stop = stopModelBuilder
+ private final SiteRepositoryBuilder siteRepositoryBuilder = SiteRepository.of();
+ private final RegularStop stop = siteRepositoryBuilder
.regularStop(ID)
.withCoordinate(COOR_A)
.withName(NAME)
.withParentStation(STATION)
.build();
private final String expStops = List.of(stop).toString();
- private final AreaStop STOP_AREA = stopModelBuilder
+ private final AreaStop STOP_AREA = siteRepositoryBuilder
.areaStop(ID)
.withName(NAME)
.withGeometry(GEOMETRY)
.build();
- private final GroupStop stopGroup = stopModelBuilder.groupStop(ID).addLocation(stop).build();
+ private final GroupStop stopGroup = siteRepositoryBuilder.groupStop(ID).addLocation(stop).build();
private final MultiModalStation mmStation = MultiModalStation
.of(ID)
.withName(NAME)
@@ -67,7 +67,7 @@ class StopModelTest {
@Test
void testStop() {
- var m = stopModelBuilder.withRegularStop(stop).build();
+ var m = siteRepositoryBuilder.withRegularStop(stop).build();
assertEquals(stop, m.getRegularStop(ID));
assertEquals(stop, m.getStopLocation(ID));
assertEquals(expStops, m.listRegularStops().toString());
@@ -79,7 +79,7 @@ void testStop() {
@Test
void testAreaStop() {
- var m = stopModelBuilder.withAreaStop(STOP_AREA).build();
+ var m = siteRepositoryBuilder.withAreaStop(STOP_AREA).build();
assertEquals(STOP_AREA, m.getAreaStop(ID));
assertEquals(STOP_AREA, m.getStopLocation(ID));
assertEquals("[AreaStop{F:A Name}]", m.listAreaStops().toString());
@@ -91,7 +91,7 @@ void testAreaStop() {
@Test
void testStopGroup() {
- var m = stopModelBuilder.withGroupStop(stopGroup).build();
+ var m = siteRepositoryBuilder.withGroupStop(stopGroup).build();
assertEquals("[GroupStop{F:A}]", m.listGroupStops().toString());
assertEquals("[GroupStop{F:A}]", m.listStopLocations().toString());
assertEquals(stopGroup, m.stopByIndex(stopGroup.getIndex()));
@@ -101,7 +101,7 @@ void testStopGroup() {
@Test
void testStations() {
- var m = stopModelBuilder.withStation(STATION).build();
+ var m = siteRepositoryBuilder.withStation(STATION).build();
assertEquals(STATION, m.getStationById(ID));
assertEquals(EXP_STATIONS, m.listStations().toString());
assertEquals(STATION, m.getStopLocationsGroup(ID));
@@ -113,7 +113,7 @@ void testStations() {
@Test
void testMultiModalStation() {
- var m = stopModelBuilder.withMultiModalStation(mmStation).build();
+ var m = siteRepositoryBuilder.withMultiModalStation(mmStation).build();
assertEquals(mmStation, m.getMultiModalStation(ID));
assertEquals(mmStation, m.getMultiModalStationForStation(STATION));
assertEquals(expMmStations, m.listMultiModalStations().toString());
@@ -126,7 +126,7 @@ void testMultiModalStation() {
@Test
void testGroupOfStations() {
- var m = stopModelBuilder.withGroupOfStation(groupOfStations).build();
+ var m = siteRepositoryBuilder.withGroupOfStation(groupOfStations).build();
assertEquals(expGroupOfStation, m.listGroupOfStations().toString());
assertEquals(groupOfStations, m.getStopLocationsGroup(ID));
assertEquals(expStops, m.findStopOrChildStops(ID).toString());
@@ -137,7 +137,7 @@ void testGroupOfStations() {
@Test
void testNullStopLocationId() {
- var m = StopModel.of().build();
+ var m = SiteRepository.of().build();
assertNull(m.getStopLocation(null));
}
}
diff --git a/application/src/test/java/org/opentripplanner/transit/service/TimetableRepositoryTest.java b/application/src/test/java/org/opentripplanner/transit/service/TimetableRepositoryTest.java
index 04740f655e3..94af8e20a95 100644
--- a/application/src/test/java/org/opentripplanner/transit/service/TimetableRepositoryTest.java
+++ b/application/src/test/java/org/opentripplanner/transit/service/TimetableRepositoryTest.java
@@ -28,9 +28,9 @@ class TimetableRepositoryTest {
void validateTimeZones() {
// First GTFS bundle should be added successfully
var deduplicator = new Deduplicator();
- var stopModel = new StopModel();
+ var siteRepository = new SiteRepository();
var graph = new Graph(deduplicator);
- var timetableRepository = new TimetableRepository(stopModel, deduplicator);
+ var timetableRepository = new TimetableRepository(siteRepository, deduplicator);
ConstantsForTests.addGtfsToGraph(
graph,
timetableRepository,
@@ -70,9 +70,9 @@ void validateTimeZones() {
@Test
void validateTimeZonesWithExplicitTimeZone() {
var deduplicator = new Deduplicator();
- var stopModel = new StopModel();
+ var siteRepository = new SiteRepository();
var graph = new Graph(deduplicator);
- var timetableRepository = new TimetableRepository(stopModel, deduplicator);
+ var timetableRepository = new TimetableRepository(siteRepository, deduplicator);
// Whit explicit time zone
timetableRepository.initTimeZone(ZoneIds.CHICAGO);
diff --git a/application/src/test/java/org/opentripplanner/transit/speed_test/SpeedTest.java b/application/src/test/java/org/opentripplanner/transit/speed_test/SpeedTest.java
index 38fb11712b8..b43adc178d5 100644
--- a/application/src/test/java/org/opentripplanner/transit/speed_test/SpeedTest.java
+++ b/application/src/test/java/org/opentripplanner/transit/speed_test/SpeedTest.java
@@ -29,6 +29,7 @@
import org.opentripplanner.standalone.config.BuildConfig;
import org.opentripplanner.standalone.config.ConfigModel;
import org.opentripplanner.standalone.config.OtpConfigLoader;
+import org.opentripplanner.standalone.config.routerconfig.RaptorEnvironmentFactory;
import org.opentripplanner.standalone.config.routerconfig.VectorTileConfig;
import org.opentripplanner.standalone.server.DefaultServerRequestContext;
import org.opentripplanner.transit.service.DefaultTransitService;
@@ -108,7 +109,10 @@ public SpeedTest(
DefaultServerRequestContext.create(
config.transitRoutingParams,
config.request,
- new RaptorConfig<>(config.transitRoutingParams),
+ new RaptorConfig<>(
+ config.transitRoutingParams,
+ RaptorEnvironmentFactory.create(config.transitRoutingParams.searchThreadPoolSize())
+ ),
graph,
new DefaultTransitService(timetableRepository),
timer.getRegistry(),
@@ -274,7 +278,7 @@ private static LoadModel loadGraph(File baseDir, URI path) {
TimetableRepository timetableRepository = serializedGraphObject.timetableRepository;
timetableRepository.index();
- graph.index(timetableRepository.getStopModel());
+ graph.index(timetableRepository.getSiteRepository());
return new LoadModel(graph, timetableRepository, serializedGraphObject.buildConfig);
}
diff --git a/application/src/test/java/org/opentripplanner/updater/siri/AddedTripBuilderTest.java b/application/src/test/java/org/opentripplanner/updater/siri/AddedTripBuilderTest.java
index d5d8c9e8a74..0c01e847148 100644
--- a/application/src/test/java/org/opentripplanner/updater/siri/AddedTripBuilderTest.java
+++ b/application/src/test/java/org/opentripplanner/updater/siri/AddedTripBuilderTest.java
@@ -33,7 +33,7 @@
import org.opentripplanner.transit.model.timetable.Trip;
import org.opentripplanner.transit.model.timetable.TripOnServiceDate;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
import org.opentripplanner.transit.service.TransitEditorService;
import org.opentripplanner.updater.siri.mapper.SiriTransportModeMapper;
@@ -68,8 +68,8 @@ class AddedTripBuilderTest {
private static final RegularStop STOP_B = MODEL_TEST.stop("B").build();
private static final RegularStop STOP_C = MODEL_TEST.stop("C").build();
private static final RegularStop STOP_D = MODEL_TEST.stop("D").build();
- private final StopModel STOP_MODEL = MODEL_TEST
- .stopModelBuilder()
+ private final SiteRepository SITE_REPOSITORY = MODEL_TEST
+ .siteRepositoryBuilder()
.withRegularStop(STOP_A)
.withRegularStop(STOP_B)
.withRegularStop(STOP_C)
@@ -78,7 +78,7 @@ class AddedTripBuilderTest {
private final Deduplicator DEDUPLICATOR = new Deduplicator();
private final TimetableRepository TRANSIT_MODEL = new TimetableRepository(
- STOP_MODEL,
+ SITE_REPOSITORY,
DEDUPLICATOR
);
private TransitEditorService transitService;
diff --git a/application/src/test/java/org/opentripplanner/updater/siri/ModifiedTripBuilderTest.java b/application/src/test/java/org/opentripplanner/updater/siri/ModifiedTripBuilderTest.java
index 17fee84cc56..ad3ed749fb9 100644
--- a/application/src/test/java/org/opentripplanner/updater/siri/ModifiedTripBuilderTest.java
+++ b/application/src/test/java/org/opentripplanner/updater/siri/ModifiedTripBuilderTest.java
@@ -31,7 +31,7 @@
import org.opentripplanner.transit.model.timetable.TripTimes;
import org.opentripplanner.transit.model.timetable.TripTimesFactory;
import org.opentripplanner.transit.service.DefaultTransitService;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import org.opentripplanner.transit.service.TimetableRepository;
import org.opentripplanner.updater.spi.UpdateError;
import uk.org.siri.siri20.DepartureBoardingActivityEnumeration;
@@ -119,8 +119,8 @@ class ModifiedTripBuilderTest {
);
private static final LocalDate SERVICE_DATE = LocalDate.of(2023, 2, 17);
- private final StopModel stopModel = TEST_MODEL
- .stopModelBuilder()
+ private final SiteRepository siteRepository = TEST_MODEL
+ .siteRepositoryBuilder()
.withRegularStop(STOP_A_1)
.withRegularStop(STOP_A_2)
.withRegularStop(STOP_B_1)
@@ -128,7 +128,7 @@ class ModifiedTripBuilderTest {
.withRegularStop(STOP_D)
.build();
private final TimetableRepository timetableRepository = new TimetableRepository(
- stopModel,
+ siteRepository,
DEDUPLICATOR
);
private EntityResolver entityResolver;
diff --git a/application/src/test/java/org/opentripplanner/updater/siri/TimetableHelperTest.java b/application/src/test/java/org/opentripplanner/updater/siri/TimetableHelperTest.java
index c89ef594fdc..daa8b2382bb 100644
--- a/application/src/test/java/org/opentripplanner/updater/siri/TimetableHelperTest.java
+++ b/application/src/test/java/org/opentripplanner/updater/siri/TimetableHelperTest.java
@@ -22,7 +22,7 @@
import org.opentripplanner.transit.model.timetable.RealTimeTripTimes;
import org.opentripplanner.transit.model.timetable.Trip;
import org.opentripplanner.transit.model.timetable.TripTimesFactory;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
import uk.org.siri.siri20.OccupancyEnumeration;
public class TimetableHelperTest {
@@ -57,7 +57,7 @@ public void setUp() {
.build();
var stopTime = new StopTime();
- RegularStop stop = StopModel
+ RegularStop stop = SiteRepository
.of()
.regularStop(SCOPED_STOP_ID)
.withCoordinate(0.0, 0.0)
diff --git a/application/src/test/java/org/opentripplanner/updater/trip/RealtimeTestConstants.java b/application/src/test/java/org/opentripplanner/updater/trip/RealtimeTestConstants.java
index 489dfef8956..87a9da83911 100644
--- a/application/src/test/java/org/opentripplanner/updater/trip/RealtimeTestConstants.java
+++ b/application/src/test/java/org/opentripplanner/updater/trip/RealtimeTestConstants.java
@@ -10,7 +10,7 @@
import org.opentripplanner.transit.model.organization.Operator;
import org.opentripplanner.transit.model.site.RegularStop;
import org.opentripplanner.transit.model.site.Station;
-import org.opentripplanner.transit.service.StopModel;
+import org.opentripplanner.transit.service.SiteRepository;
public interface RealtimeTestConstants {
LocalDate SERVICE_DATE = LocalDate.of(2024, 5, 8);
@@ -35,8 +35,8 @@ public interface RealtimeTestConstants {
RegularStop STOP_B2 = TEST_MODEL.stop("B2").withParentStation(STATION_B).build();
RegularStop STOP_C1 = TEST_MODEL.stop(STOP_C1_ID).withParentStation(STATION_C).build();
RegularStop STOP_D1 = TEST_MODEL.stop("D1").withParentStation(STATION_D).build();
- StopModel STOP_MODEL = TEST_MODEL
- .stopModelBuilder()
+ SiteRepository SITE_REPOSITORY = TEST_MODEL
+ .siteRepositoryBuilder()
.withRegularStop(STOP_A1)
.withRegularStop(STOP_B1)
.withRegularStop(STOP_B2)
diff --git a/application/src/test/java/org/opentripplanner/updater/trip/RealtimeTestEnvironmentBuilder.java b/application/src/test/java/org/opentripplanner/updater/trip/RealtimeTestEnvironmentBuilder.java
index 99be7a86a43..eb31a555e1d 100644
--- a/application/src/test/java/org/opentripplanner/updater/trip/RealtimeTestEnvironmentBuilder.java
+++ b/application/src/test/java/org/opentripplanner/updater/trip/RealtimeTestEnvironmentBuilder.java
@@ -23,7 +23,7 @@ public class RealtimeTestEnvironmentBuilder implements RealtimeTestConstants {
private RealtimeTestEnvironment.SourceType sourceType;
private final TimetableRepository timetableRepository = new TimetableRepository(
- STOP_MODEL,
+ SITE_REPOSITORY,
new Deduplicator()
);
diff --git a/application/src/test/java/org/opentripplanner/updater/trip/moduletests/addition/AddedTest.java b/application/src/test/java/org/opentripplanner/updater/trip/moduletests/addition/AddedTest.java
index 77b54c0e962..3a3d7d5e130 100644
--- a/application/src/test/java/org/opentripplanner/updater/trip/moduletests/addition/AddedTest.java
+++ b/application/src/test/java/org/opentripplanner/updater/trip/moduletests/addition/AddedTest.java
@@ -132,7 +132,7 @@ private TripPattern assertAddedTrip(String tripId, RealtimeTestEnvironment env)
assertNotNull(trip);
assertNotNull(transitService.getPatternForTrip(trip));
- var stopA = env.timetableRepository.getStopModel().getRegularStop(STOP_A1.getId());
+ var stopA = env.timetableRepository.getSiteRepository().getRegularStop(STOP_A1.getId());
// Get the trip pattern of the added trip which goes through stopA
var patternsAtA = env.getTimetableSnapshot().getPatternsForStop(stopA);
diff --git a/application/src/test/java/org/opentripplanner/updater/vehicle_parking/VehicleParkingUpdaterTest.java b/application/src/test/java/org/opentripplanner/updater/vehicle_parking/VehicleParkingUpdaterTest.java
index f83680f8aff..44a37943d8b 100644
--- a/application/src/test/java/org/opentripplanner/updater/vehicle_parking/VehicleParkingUpdaterTest.java
+++ b/application/src/test/java/org/opentripplanner/updater/vehicle_parking/VehicleParkingUpdaterTest.java
@@ -49,7 +49,7 @@ public void setup() {
when(dataSource.update()).thenReturn(true);
timetableRepository.index();
- graph.index(timetableRepository.getStopModel());
+ graph.index(timetableRepository.getSiteRepository());
var parameters = new VehicleParkingUpdaterParameters() {
@Override
diff --git a/client/README.md b/client/README.md
index 54971062971..a646cd1170c 100644
--- a/client/README.md
+++ b/client/README.md
@@ -22,7 +22,7 @@ generated during build and are not checked into the repository.
Use latest LTS version of Node/npm (currently v18). Recommend using a version manager such as `nvm`.
The dev and production builds require graphql schema to be present at
-`../src/main/resources/org/opentripplanner/apis/transmodel/schema.graphql`.
+`../application/src/main/resources/org/opentripplanner/apis/transmodel/schema.graphql`.
## Getting started (development)
diff --git a/client/package-lock.json b/client/package-lock.json
index 4245121a10e..c66bb81c6fd 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -13,36 +13,36 @@
"bootstrap": "5.3.3",
"graphql": "16.9.0",
"graphql-request": "7.1.0",
- "maplibre-gl": "4.7.0",
+ "maplibre-gl": "4.7.1",
"react": "18.3.1",
- "react-bootstrap": "2.10.4",
+ "react-bootstrap": "2.10.5",
"react-dom": "18.3.1",
"react-map-gl": "7.1.7"
},
"devDependencies": {
- "@graphql-codegen/cli": "5.0.2",
+ "@graphql-codegen/cli": "5.0.3",
"@graphql-codegen/client-preset": "4.3.3",
"@graphql-codegen/introspection": "4.0.3",
"@parcel/watcher": "2.4.1",
"@testing-library/react": "16.0.1",
- "@types/react": "18.3.7",
- "@types/react-dom": "18.3.0",
+ "@types/react": "18.3.11",
+ "@types/react-dom": "18.3.1",
"@typescript-eslint/eslint-plugin": "7.18.0",
"@typescript-eslint/parser": "7.18.0",
- "@vitejs/plugin-react": "4.3.1",
- "@vitest/coverage-v8": "2.1.1",
+ "@vitejs/plugin-react": "4.3.2",
+ "@vitest/coverage-v8": "2.1.3",
"eslint": "8.57.1",
"eslint-config-prettier": "9.1.0",
- "eslint-plugin-import": "2.30.0",
+ "eslint-plugin-import": "2.31.0",
"eslint-plugin-jsx-a11y": "6.10.0",
- "eslint-plugin-react": "7.36.1",
+ "eslint-plugin-react": "7.37.1",
"eslint-plugin-react-hooks": "5.0.0",
"eslint-plugin-react-refresh": "0.4.12",
- "jsdom": "25.0.0",
+ "jsdom": "25.0.1",
"prettier": "3.3.3",
- "typescript": "5.6.2",
- "vite": "5.4.6",
- "vitest": "2.1.1"
+ "typescript": "5.6.3",
+ "vite": "5.4.9",
+ "vitest": "2.1.3"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
@@ -215,13 +215,13 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz",
- "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz",
+ "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/highlight": "^7.24.6",
+ "@babel/highlight": "^7.25.7",
"picocolors": "^1.0.0"
},
"engines": {
@@ -229,9 +229,9 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz",
- "integrity": "sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==",
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz",
+ "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -239,22 +239,22 @@
}
},
"node_modules/@babel/core": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz",
- "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==",
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz",
+ "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.24.6",
- "@babel/generator": "^7.24.6",
- "@babel/helper-compilation-targets": "^7.24.6",
- "@babel/helper-module-transforms": "^7.24.6",
- "@babel/helpers": "^7.24.6",
- "@babel/parser": "^7.24.6",
- "@babel/template": "^7.24.6",
- "@babel/traverse": "^7.24.6",
- "@babel/types": "^7.24.6",
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/helper-compilation-targets": "^7.25.7",
+ "@babel/helper-module-transforms": "^7.25.7",
+ "@babel/helpers": "^7.25.7",
+ "@babel/parser": "^7.25.8",
+ "@babel/template": "^7.25.7",
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.8",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -270,16 +270,16 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz",
- "integrity": "sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz",
+ "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.24.6",
+ "@babel/types": "^7.25.7",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^2.5.1"
+ "jsesc": "^3.0.2"
},
"engines": {
"node": ">=6.9.0"
@@ -298,15 +298,15 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz",
- "integrity": "sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz",
+ "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.24.6",
- "@babel/helper-validator-option": "^7.24.6",
- "browserslist": "^4.22.2",
+ "@babel/compat-data": "^7.25.7",
+ "@babel/helper-validator-option": "^7.25.7",
+ "browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
},
@@ -361,19 +361,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz",
- "integrity": "sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.24.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/helper-member-expression-to-functions": {
"version": "7.23.0",
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
@@ -387,30 +374,30 @@
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz",
- "integrity": "sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz",
+ "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.24.6"
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz",
- "integrity": "sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz",
+ "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-environment-visitor": "^7.24.6",
- "@babel/helper-module-imports": "^7.24.6",
- "@babel/helper-simple-access": "^7.24.6",
- "@babel/helper-split-export-declaration": "^7.24.6",
- "@babel/helper-validator-identifier": "^7.24.6"
+ "@babel/helper-module-imports": "^7.25.7",
+ "@babel/helper-simple-access": "^7.25.7",
+ "@babel/helper-validator-identifier": "^7.25.7",
+ "@babel/traverse": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -432,9 +419,9 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz",
- "integrity": "sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz",
+ "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -459,13 +446,14 @@
}
},
"node_modules/@babel/helper-simple-access": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz",
- "integrity": "sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz",
+ "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.24.6"
+ "@babel/traverse": "^7.25.7",
+ "@babel/types": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -497,9 +485,9 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz",
- "integrity": "sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz",
+ "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -507,9 +495,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz",
- "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz",
+ "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -517,9 +505,9 @@
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz",
- "integrity": "sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz",
+ "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -527,27 +515,27 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.6.tgz",
- "integrity": "sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz",
+ "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.24.6",
- "@babel/types": "^7.24.6"
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz",
- "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz",
+ "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.24.6",
+ "@babel/helper-validator-identifier": "^7.25.7",
"chalk": "^2.4.2",
"js-tokens": "^4.0.0",
"picocolors": "^1.0.0"
@@ -635,11 +623,14 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz",
- "integrity": "sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==",
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz",
+ "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.8"
+ },
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -1028,13 +1019,13 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.6.tgz",
- "integrity": "sha512-FfZfHXtQ5jYPQsCRyLpOv2GeLIIJhs8aydpNh39vRDjhD411XcfWDni5i7OjP/Rs8GAtTn7sWFFELJSHqkIxYg==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.7.tgz",
+ "integrity": "sha512-JD9MUnLbPL0WdVK8AWC7F7tTG2OS6u/AKKnsK+NdRhUiVdnzyR1S3kKQCaRLOiaULvUiqK6Z4JQE635VgtCFeg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.6"
+ "@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1044,12 +1035,13 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz",
- "integrity": "sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.7.tgz",
+ "integrity": "sha512-S/JXG/KrbIY06iyJPKfxr0qRxnhNOdkNXYBl/rmwgDd72cQLH9tEGkDm/yJPGvcSIUoikzfjMios9i+xT/uv9w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
+ "@babel/helper-plugin-utils": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1117,35 +1109,32 @@
}
},
"node_modules/@babel/template": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz",
- "integrity": "sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz",
+ "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.24.6",
- "@babel/parser": "^7.24.6",
- "@babel/types": "^7.24.6"
+ "@babel/code-frame": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/types": "^7.25.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz",
- "integrity": "sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz",
+ "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.24.6",
- "@babel/generator": "^7.24.6",
- "@babel/helper-environment-visitor": "^7.24.6",
- "@babel/helper-function-name": "^7.24.6",
- "@babel/helper-hoist-variables": "^7.24.6",
- "@babel/helper-split-export-declaration": "^7.24.6",
- "@babel/parser": "^7.24.6",
- "@babel/types": "^7.24.6",
+ "@babel/code-frame": "^7.25.7",
+ "@babel/generator": "^7.25.7",
+ "@babel/parser": "^7.25.7",
+ "@babel/template": "^7.25.7",
+ "@babel/types": "^7.25.7",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -1154,14 +1143,14 @@
}
},
"node_modules/@babel/types": {
- "version": "7.24.6",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz",
- "integrity": "sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==",
+ "version": "7.25.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz",
+ "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.24.6",
- "@babel/helper-validator-identifier": "^7.24.6",
+ "@babel/helper-string-parser": "^7.25.7",
+ "@babel/helper-validator-identifier": "^7.25.7",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -1805,15 +1794,16 @@
}
},
"node_modules/@graphql-codegen/cli": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-5.0.2.tgz",
- "integrity": "sha512-MBIaFqDiLKuO4ojN6xxG9/xL9wmfD3ZjZ7RsPjwQnSHBCUXnEkdKvX+JVpx87Pq29Ycn8wTJUguXnTZ7Di0Mlw==",
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-5.0.3.tgz",
+ "integrity": "sha512-ULpF6Sbu2d7vNEOgBtE9avQp2oMgcPY/QBYcCqk0Xru5fz+ISjcovQX29V7CS7y5wWBRzNLoXwJQGeEyWbl05g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/generator": "^7.18.13",
"@babel/template": "^7.18.10",
"@babel/types": "^7.18.13",
- "@graphql-codegen/client-preset": "^4.2.2",
+ "@graphql-codegen/client-preset": "^4.4.0",
"@graphql-codegen/core": "^4.0.2",
"@graphql-codegen/plugin-helpers": "^5.0.3",
"@graphql-tools/apollo-engine-loader": "^8.0.0",
@@ -1826,12 +1816,12 @@
"@graphql-tools/prisma-loader": "^8.0.0",
"@graphql-tools/url-loader": "^8.0.0",
"@graphql-tools/utils": "^10.0.0",
- "@whatwg-node/fetch": "^0.8.0",
+ "@whatwg-node/fetch": "^0.9.20",
"chalk": "^4.1.0",
"cosmiconfig": "^8.1.3",
"debounce": "^1.2.0",
"detect-indent": "^6.0.0",
- "graphql-config": "^5.0.2",
+ "graphql-config": "^5.1.1",
"inquirer": "^8.0.0",
"is-glob": "^4.0.1",
"jiti": "^1.17.1",
@@ -1852,6 +1842,9 @@
"graphql-codegen": "cjs/bin.js",
"graphql-codegen-esm": "esm/bin.js"
},
+ "engines": {
+ "node": ">=16"
+ },
"peerDependencies": {
"@parcel/watcher": "^2.1.0",
"graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
@@ -1862,6 +1855,79 @@
}
}
},
+ "node_modules/@graphql-codegen/cli/node_modules/@graphql-codegen/client-preset": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@graphql-codegen/client-preset/-/client-preset-4.4.0.tgz",
+ "integrity": "sha512-Q0NHFK7KXLhEaRC/k82ge0dHDfeHJEvvDeV0vV3+oSurHNa/lpxQtbK2BqknZe+JDfZ1YOOvYT93XsAkYD+SQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/template": "^7.20.7",
+ "@graphql-codegen/add": "^5.0.3",
+ "@graphql-codegen/gql-tag-operations": "4.0.10",
+ "@graphql-codegen/plugin-helpers": "^5.0.4",
+ "@graphql-codegen/typed-document-node": "^5.0.10",
+ "@graphql-codegen/typescript": "^4.1.0",
+ "@graphql-codegen/typescript-operations": "^4.3.0",
+ "@graphql-codegen/visitor-plugin-common": "^5.4.0",
+ "@graphql-tools/documents": "^1.0.0",
+ "@graphql-tools/utils": "^10.0.0",
+ "@graphql-typed-document-node/core": "3.2.0",
+ "tslib": "~2.6.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "node_modules/@graphql-codegen/cli/node_modules/@graphql-codegen/gql-tag-operations": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-4.0.10.tgz",
+ "integrity": "sha512-WsBEVL3XQdBboFJJL5WxrUjkuo3B7Sa51R9NbT7PKBe0HCNstoouGZIvQJRUubttFCqTTyoFtNsoRSKB+rsRug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-codegen/plugin-helpers": "^5.0.4",
+ "@graphql-codegen/visitor-plugin-common": "5.4.0",
+ "@graphql-tools/utils": "^10.0.0",
+ "auto-bind": "~4.0.0",
+ "tslib": "~2.6.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "node_modules/@graphql-codegen/cli/node_modules/@graphql-codegen/visitor-plugin-common": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-5.4.0.tgz",
+ "integrity": "sha512-tL7hOrO+4MiNfDiHewhRQCiH9GTAh0M9Y/BZxYGGEdnrfGgqK5pCxtjq7EY/L19VGIyU7hhzYTQ0r1HzEbB4Jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-codegen/plugin-helpers": "^5.0.4",
+ "@graphql-tools/optimize": "^2.0.0",
+ "@graphql-tools/relay-operation-optimizer": "^7.0.0",
+ "@graphql-tools/utils": "^10.0.0",
+ "auto-bind": "~4.0.0",
+ "change-case-all": "1.0.15",
+ "dependency-graph": "^0.11.0",
+ "graphql-tag": "^2.11.0",
+ "parse-filepath": "^1.0.2",
+ "tslib": "~2.6.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
"node_modules/@graphql-codegen/client-preset": {
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/@graphql-codegen/client-preset/-/client-preset-4.3.3.tgz",
@@ -1966,52 +2032,136 @@
}
},
"node_modules/@graphql-codegen/typed-document-node": {
- "version": "5.0.9",
- "resolved": "https://registry.npmjs.org/@graphql-codegen/typed-document-node/-/typed-document-node-5.0.9.tgz",
- "integrity": "sha512-Wx6fyA4vpfIbfNTMiWUECGnjqzKkJdEbZHxVMIegiCBPzBYPAJV4mZZcildLAfm2FtZcgW4YKtFoTbnbXqPB3w==",
+ "version": "5.0.10",
+ "resolved": "https://registry.npmjs.org/@graphql-codegen/typed-document-node/-/typed-document-node-5.0.10.tgz",
+ "integrity": "sha512-YPDUNs6x0muoVWlbY2yEs0lGxFHMTszlGDh6klT/5rqiTDTZg3zz8Wd1ZTihkcH8+V6T0AT9qDWwcx9fcS2tvQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@graphql-codegen/plugin-helpers": "^5.0.4",
- "@graphql-codegen/visitor-plugin-common": "5.3.1",
+ "@graphql-codegen/visitor-plugin-common": "5.4.0",
+ "auto-bind": "~4.0.0",
+ "change-case-all": "1.0.15",
+ "tslib": "~2.6.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "node_modules/@graphql-codegen/typed-document-node/node_modules/@graphql-codegen/visitor-plugin-common": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-5.4.0.tgz",
+ "integrity": "sha512-tL7hOrO+4MiNfDiHewhRQCiH9GTAh0M9Y/BZxYGGEdnrfGgqK5pCxtjq7EY/L19VGIyU7hhzYTQ0r1HzEbB4Jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-codegen/plugin-helpers": "^5.0.4",
+ "@graphql-tools/optimize": "^2.0.0",
+ "@graphql-tools/relay-operation-optimizer": "^7.0.0",
+ "@graphql-tools/utils": "^10.0.0",
"auto-bind": "~4.0.0",
"change-case-all": "1.0.15",
+ "dependency-graph": "^0.11.0",
+ "graphql-tag": "^2.11.0",
+ "parse-filepath": "^1.0.2",
"tslib": "~2.6.0"
},
+ "engines": {
+ "node": ">=16"
+ },
"peerDependencies": {
"graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
}
},
"node_modules/@graphql-codegen/typescript": {
- "version": "4.0.9",
- "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-4.0.9.tgz",
- "integrity": "sha512-0O35DMR4d/ctuHL1Zo6mRUUzp0BoszKfeWsa6sCm/g70+S98+hEfTwZNDkQHylLxapiyjssF9uw/F+sXqejqLw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-4.1.0.tgz",
+ "integrity": "sha512-/fS53Nh6U6c58GTOxqfyKTLQfQv36P8II/vPw/fg0cdcWbALhRPls69P8vXUWjrElmLKzCrdusBWPp/r+AKUBQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@graphql-codegen/plugin-helpers": "^5.0.4",
"@graphql-codegen/schema-ast": "^4.0.2",
- "@graphql-codegen/visitor-plugin-common": "5.3.1",
+ "@graphql-codegen/visitor-plugin-common": "5.4.0",
"auto-bind": "~4.0.0",
"tslib": "~2.6.0"
},
+ "engines": {
+ "node": ">=16"
+ },
"peerDependencies": {
"graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
}
},
"node_modules/@graphql-codegen/typescript-operations": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-4.2.3.tgz",
- "integrity": "sha512-6z7avSSOr03l5SyKbeDs7MzRyGwnQFSCqQm8Om5wIuoIgXVu2gXRmcJAY/I7SLdAy9xbF4Sho7XNqieFM2CAFQ==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-4.3.0.tgz",
+ "integrity": "sha512-ZORwMy8OgsiYd9EZUhTMd4/g5LvTFpx6Fh6dNN0cxFkqSc6KhjX0vhzWsyK8N9+ILaHSutT8UTrLMdJi35HzDQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@graphql-codegen/plugin-helpers": "^5.0.4",
- "@graphql-codegen/typescript": "^4.0.9",
- "@graphql-codegen/visitor-plugin-common": "5.3.1",
+ "@graphql-codegen/typescript": "^4.1.0",
+ "@graphql-codegen/visitor-plugin-common": "5.4.0",
+ "auto-bind": "~4.0.0",
+ "tslib": "~2.6.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "node_modules/@graphql-codegen/typescript-operations/node_modules/@graphql-codegen/visitor-plugin-common": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-5.4.0.tgz",
+ "integrity": "sha512-tL7hOrO+4MiNfDiHewhRQCiH9GTAh0M9Y/BZxYGGEdnrfGgqK5pCxtjq7EY/L19VGIyU7hhzYTQ0r1HzEbB4Jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-codegen/plugin-helpers": "^5.0.4",
+ "@graphql-tools/optimize": "^2.0.0",
+ "@graphql-tools/relay-operation-optimizer": "^7.0.0",
+ "@graphql-tools/utils": "^10.0.0",
"auto-bind": "~4.0.0",
+ "change-case-all": "1.0.15",
+ "dependency-graph": "^0.11.0",
+ "graphql-tag": "^2.11.0",
+ "parse-filepath": "^1.0.2",
"tslib": "~2.6.0"
},
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ }
+ },
+ "node_modules/@graphql-codegen/typescript/node_modules/@graphql-codegen/visitor-plugin-common": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-5.4.0.tgz",
+ "integrity": "sha512-tL7hOrO+4MiNfDiHewhRQCiH9GTAh0M9Y/BZxYGGEdnrfGgqK5pCxtjq7EY/L19VGIyU7hhzYTQ0r1HzEbB4Jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@graphql-codegen/plugin-helpers": "^5.0.4",
+ "@graphql-tools/optimize": "^2.0.0",
+ "@graphql-tools/relay-operation-optimizer": "^7.0.0",
+ "@graphql-tools/utils": "^10.0.0",
+ "auto-bind": "~4.0.0",
+ "change-case-all": "1.0.15",
+ "dependency-graph": "^0.11.0",
+ "graphql-tag": "^2.11.0",
+ "parse-filepath": "^1.0.2",
+ "tslib": "~2.6.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
"peerDependencies": {
"graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
}
@@ -2056,50 +2206,6 @@
"graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
- "node_modules/@graphql-tools/apollo-engine-loader/node_modules/@whatwg-node/events": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz",
- "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==",
- "dev": true,
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/apollo-engine-loader/node_modules/@whatwg-node/fetch": {
- "version": "0.9.17",
- "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.17.tgz",
- "integrity": "sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==",
- "dev": true,
- "dependencies": {
- "@whatwg-node/node-fetch": "^0.5.7",
- "urlpattern-polyfill": "^10.0.0"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/apollo-engine-loader/node_modules/@whatwg-node/node-fetch": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.10.tgz",
- "integrity": "sha512-KIAHepie/T1PRkUfze4t+bPlyvpxlWiXTPtcGlbIZ0vWkBJMdRmCg4ZrJ2y4XaO1eTPo1HlWYUuj1WvoIpumqg==",
- "dev": true,
- "dependencies": {
- "@kamilkisiela/fast-url-parser": "^1.1.4",
- "@whatwg-node/events": "^0.1.0",
- "busboy": "^1.6.0",
- "fast-querystring": "^1.1.1",
- "tslib": "^2.3.1"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/apollo-engine-loader/node_modules/urlpattern-polyfill": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
- "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
- "dev": true
- },
"node_modules/@graphql-tools/batch-execute": {
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-9.0.4.tgz",
@@ -2233,50 +2339,6 @@
"graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
- "node_modules/@graphql-tools/executor-http/node_modules/@whatwg-node/events": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz",
- "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==",
- "dev": true,
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/executor-http/node_modules/@whatwg-node/fetch": {
- "version": "0.9.17",
- "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.17.tgz",
- "integrity": "sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==",
- "dev": true,
- "dependencies": {
- "@whatwg-node/node-fetch": "^0.5.7",
- "urlpattern-polyfill": "^10.0.0"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/executor-http/node_modules/@whatwg-node/node-fetch": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.10.tgz",
- "integrity": "sha512-KIAHepie/T1PRkUfze4t+bPlyvpxlWiXTPtcGlbIZ0vWkBJMdRmCg4ZrJ2y4XaO1eTPo1HlWYUuj1WvoIpumqg==",
- "dev": true,
- "dependencies": {
- "@kamilkisiela/fast-url-parser": "^1.1.4",
- "@whatwg-node/events": "^0.1.0",
- "busboy": "^1.6.0",
- "fast-querystring": "^1.1.1",
- "tslib": "^2.3.1"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/executor-http/node_modules/urlpattern-polyfill": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
- "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
- "dev": true
- },
"node_modules/@graphql-tools/executor-legacy-ws": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.0.6.tgz",
@@ -2337,50 +2399,6 @@
"graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
- "node_modules/@graphql-tools/github-loader/node_modules/@whatwg-node/events": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz",
- "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==",
- "dev": true,
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/github-loader/node_modules/@whatwg-node/fetch": {
- "version": "0.9.17",
- "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.17.tgz",
- "integrity": "sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==",
- "dev": true,
- "dependencies": {
- "@whatwg-node/node-fetch": "^0.5.7",
- "urlpattern-polyfill": "^10.0.0"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/github-loader/node_modules/@whatwg-node/node-fetch": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.10.tgz",
- "integrity": "sha512-KIAHepie/T1PRkUfze4t+bPlyvpxlWiXTPtcGlbIZ0vWkBJMdRmCg4ZrJ2y4XaO1eTPo1HlWYUuj1WvoIpumqg==",
- "dev": true,
- "dependencies": {
- "@kamilkisiela/fast-url-parser": "^1.1.4",
- "@whatwg-node/events": "^0.1.0",
- "busboy": "^1.6.0",
- "fast-querystring": "^1.1.1",
- "tslib": "^2.3.1"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/github-loader/node_modules/urlpattern-polyfill": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
- "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
- "dev": true
- },
"node_modules/@graphql-tools/graphql-file-loader": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-8.0.1.tgz",
@@ -2519,60 +2537,22 @@
"chalk": "^4.1.0",
"debug": "^4.3.1",
"dotenv": "^16.0.0",
- "graphql-request": "^6.0.0",
- "http-proxy-agent": "^7.0.0",
- "https-proxy-agent": "^7.0.0",
- "jose": "^5.0.0",
- "js-yaml": "^4.0.0",
- "json-stable-stringify": "^1.0.1",
- "lodash": "^4.17.20",
- "scuid": "^1.1.0",
- "tslib": "^2.4.0",
- "yaml-ast-parser": "^0.0.43"
- },
- "engines": {
- "node": ">=16.0.0"
- },
- "peerDependencies": {
- "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
- }
- },
- "node_modules/@graphql-tools/prisma-loader/node_modules/@whatwg-node/events": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz",
- "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==",
- "dev": true,
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/prisma-loader/node_modules/@whatwg-node/fetch": {
- "version": "0.9.17",
- "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.17.tgz",
- "integrity": "sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==",
- "dev": true,
- "dependencies": {
- "@whatwg-node/node-fetch": "^0.5.7",
- "urlpattern-polyfill": "^10.0.0"
+ "graphql-request": "^6.0.0",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.0",
+ "jose": "^5.0.0",
+ "js-yaml": "^4.0.0",
+ "json-stable-stringify": "^1.0.1",
+ "lodash": "^4.17.20",
+ "scuid": "^1.1.0",
+ "tslib": "^2.4.0",
+ "yaml-ast-parser": "^0.0.43"
},
"engines": {
"node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/prisma-loader/node_modules/@whatwg-node/node-fetch": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.10.tgz",
- "integrity": "sha512-KIAHepie/T1PRkUfze4t+bPlyvpxlWiXTPtcGlbIZ0vWkBJMdRmCg4ZrJ2y4XaO1eTPo1HlWYUuj1WvoIpumqg==",
- "dev": true,
- "dependencies": {
- "@kamilkisiela/fast-url-parser": "^1.1.4",
- "@whatwg-node/events": "^0.1.0",
- "busboy": "^1.6.0",
- "fast-querystring": "^1.1.1",
- "tslib": "^2.3.1"
},
- "engines": {
- "node": ">=16.0.0"
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
"node_modules/@graphql-tools/prisma-loader/node_modules/graphql-request": {
@@ -2589,12 +2569,6 @@
"graphql": "14 - 16"
}
},
- "node_modules/@graphql-tools/prisma-loader/node_modules/urlpattern-polyfill": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
- "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
- "dev": true
- },
"node_modules/@graphql-tools/relay-operation-optimizer": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-7.0.1.tgz",
@@ -2657,50 +2631,6 @@
"graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
- "node_modules/@graphql-tools/url-loader/node_modules/@whatwg-node/events": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz",
- "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==",
- "dev": true,
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/url-loader/node_modules/@whatwg-node/fetch": {
- "version": "0.9.17",
- "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.17.tgz",
- "integrity": "sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==",
- "dev": true,
- "dependencies": {
- "@whatwg-node/node-fetch": "^0.5.7",
- "urlpattern-polyfill": "^10.0.0"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/url-loader/node_modules/@whatwg-node/node-fetch": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.10.tgz",
- "integrity": "sha512-KIAHepie/T1PRkUfze4t+bPlyvpxlWiXTPtcGlbIZ0vWkBJMdRmCg4ZrJ2y4XaO1eTPo1HlWYUuj1WvoIpumqg==",
- "dev": true,
- "dependencies": {
- "@kamilkisiela/fast-url-parser": "^1.1.4",
- "@whatwg-node/events": "^0.1.0",
- "busboy": "^1.6.0",
- "fast-querystring": "^1.1.1",
- "tslib": "^2.3.1"
- },
- "engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@graphql-tools/url-loader/node_modules/urlpattern-polyfill": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
- "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
- "dev": true
- },
"node_modules/@graphql-tools/utils": {
"version": "10.1.2",
"resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.1.2.tgz",
@@ -2975,7 +2905,8 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/@kamilkisiela/fast-url-parser/-/fast-url-parser-1.1.4.tgz",
"integrity": "sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@mapbox/geojson-rewind": {
"version": "0.5.2",
@@ -3436,45 +3367,6 @@
"url": "https://opencollective.com/parcel"
}
},
- "node_modules/@peculiar/asn1-schema": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz",
- "integrity": "sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==",
- "dev": true,
- "dependencies": {
- "asn1js": "^3.0.5",
- "pvtsutils": "^1.3.5",
- "tslib": "^2.6.2"
- }
- },
- "node_modules/@peculiar/json-schema": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz",
- "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==",
- "dev": true,
- "dependencies": {
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/@peculiar/webcrypto": {
- "version": "1.4.5",
- "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.4.5.tgz",
- "integrity": "sha512-oDk93QCDGdxFRM8382Zdminzs44dg3M2+E5Np+JWkpqLDyJC9DviMh8F8mEJkYuUcUOGA5jHO5AJJ10MFWdbZw==",
- "dev": true,
- "dependencies": {
- "@peculiar/asn1-schema": "^2.3.8",
- "@peculiar/json-schema": "^1.1.12",
- "pvtsutils": "^1.3.5",
- "tslib": "^2.6.2",
- "webcrypto-core": "^1.7.8"
- },
- "engines": {
- "node": ">=10.12.0"
- }
- },
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@@ -3970,9 +3862,9 @@
"integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q=="
},
"node_modules/@types/react": {
- "version": "18.3.7",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.7.tgz",
- "integrity": "sha512-KUnDCJF5+AiZd8owLIeVHqmW9yM4sqmDVf2JRJiBMFkGvkoZ4/WyV2lL4zVsoinmRS/W3FeEdZLEWFRofnT2FQ==",
+ "version": "18.3.11",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz",
+ "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==",
"license": "MIT",
"dependencies": {
"@types/prop-types": "*",
@@ -3980,10 +3872,11 @@
}
},
"node_modules/@types/react-dom": {
- "version": "18.3.0",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz",
- "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==",
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/react": "*"
}
@@ -4231,15 +4124,15 @@
"dev": true
},
"node_modules/@vitejs/plugin-react": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz",
- "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.2.tgz",
+ "integrity": "sha512-hieu+o05v4glEBucTcKMK3dlES0OeJlD9YVOAPraVMOInBCwzumaIFiUjr4bHK7NPgnAHgiskUoceKercrN8vg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/core": "^7.24.5",
- "@babel/plugin-transform-react-jsx-self": "^7.24.5",
- "@babel/plugin-transform-react-jsx-source": "^7.24.1",
+ "@babel/core": "^7.25.2",
+ "@babel/plugin-transform-react-jsx-self": "^7.24.7",
+ "@babel/plugin-transform-react-jsx-source": "^7.24.7",
"@types/babel__core": "^7.20.5",
"react-refresh": "^0.14.2"
},
@@ -4251,9 +4144,9 @@
}
},
"node_modules/@vitest/coverage-v8": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.1.tgz",
- "integrity": "sha512-md/A7A3c42oTT8JUHSqjP5uKTWJejzUW4jalpvs+rZ27gsURsMU8DEb+8Jf8C6Kj2gwfSHJqobDNBuoqlm0cFw==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.3.tgz",
+ "integrity": "sha512-2OJ3c7UPoFSmBZwqD2VEkUw6A/tzPF0LmW0ZZhhB8PFxuc+9IBG/FaSM+RLEenc7ljzFvGN+G0nGQoZnh7sy2A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4274,8 +4167,8 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "@vitest/browser": "2.1.1",
- "vitest": "2.1.1"
+ "@vitest/browser": "2.1.3",
+ "vitest": "2.1.3"
},
"peerDependenciesMeta": {
"@vitest/browser": {
@@ -4284,14 +4177,14 @@
}
},
"node_modules/@vitest/expect": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.1.tgz",
- "integrity": "sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.3.tgz",
+ "integrity": "sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "2.1.1",
- "@vitest/utils": "2.1.1",
+ "@vitest/spy": "2.1.3",
+ "@vitest/utils": "2.1.3",
"chai": "^5.1.1",
"tinyrainbow": "^1.2.0"
},
@@ -4300,13 +4193,13 @@
}
},
"node_modules/@vitest/mocker": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.1.tgz",
- "integrity": "sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.3.tgz",
+ "integrity": "sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "^2.1.0-beta.1",
+ "@vitest/spy": "2.1.3",
"estree-walker": "^3.0.3",
"magic-string": "^0.30.11"
},
@@ -4314,7 +4207,7 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "@vitest/spy": "2.1.1",
+ "@vitest/spy": "2.1.3",
"msw": "^2.3.5",
"vite": "^5.0.0"
},
@@ -4328,9 +4221,9 @@
}
},
"node_modules/@vitest/pretty-format": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.1.tgz",
- "integrity": "sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.3.tgz",
+ "integrity": "sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4341,13 +4234,13 @@
}
},
"node_modules/@vitest/runner": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.1.tgz",
- "integrity": "sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.3.tgz",
+ "integrity": "sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "2.1.1",
+ "@vitest/utils": "2.1.3",
"pathe": "^1.1.2"
},
"funding": {
@@ -4355,13 +4248,13 @@
}
},
"node_modules/@vitest/snapshot": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.1.tgz",
- "integrity": "sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.3.tgz",
+ "integrity": "sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "2.1.1",
+ "@vitest/pretty-format": "2.1.3",
"magic-string": "^0.30.11",
"pathe": "^1.1.2"
},
@@ -4370,9 +4263,9 @@
}
},
"node_modules/@vitest/spy": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.1.tgz",
- "integrity": "sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.3.tgz",
+ "integrity": "sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4383,13 +4276,13 @@
}
},
"node_modules/@vitest/utils": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.1.tgz",
- "integrity": "sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.3.tgz",
+ "integrity": "sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "2.1.1",
+ "@vitest/pretty-format": "2.1.3",
"loupe": "^3.1.1",
"tinyrainbow": "^1.2.0"
},
@@ -4397,38 +4290,43 @@
"url": "https://opencollective.com/vitest"
}
},
- "node_modules/@whatwg-node/events": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.0.3.tgz",
- "integrity": "sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==",
- "dev": true
- },
"node_modules/@whatwg-node/fetch": {
- "version": "0.8.8",
- "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.8.8.tgz",
- "integrity": "sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==",
+ "version": "0.9.21",
+ "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.21.tgz",
+ "integrity": "sha512-Wt0jPb+04JjobK0pAAN7mEHxVHcGA9HoP3OyCsZtyAecNQeADXCZ1MihFwVwjsgaRYuGVmNlsCmLxlG6mor8Gw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@peculiar/webcrypto": "^1.4.0",
- "@whatwg-node/node-fetch": "^0.3.6",
- "busboy": "^1.6.0",
- "urlpattern-polyfill": "^8.0.0",
- "web-streams-polyfill": "^3.2.1"
+ "@whatwg-node/node-fetch": "^0.5.23",
+ "urlpattern-polyfill": "^10.0.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
"node_modules/@whatwg-node/node-fetch": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.3.6.tgz",
- "integrity": "sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==",
+ "version": "0.5.26",
+ "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.26.tgz",
+ "integrity": "sha512-4jXDeZ4IH4bylZ6wu14VEx0aDXXhrN4TC279v9rPmn08g4EYekcYf8wdcOOnS9STjDkb6x77/6xBUTqxGgjr8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@whatwg-node/events": "^0.0.3",
+ "@kamilkisiela/fast-url-parser": "^1.1.4",
"busboy": "^1.6.0",
"fast-querystring": "^1.1.1",
- "fast-url-parser": "^1.1.3",
- "tslib": "^2.3.1"
+ "tslib": "^2.6.3"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
+ "node_modules/@whatwg-node/node-fetch/node_modules/tslib": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz",
+ "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==",
+ "dev": true,
+ "license": "0BSD"
+ },
"node_modules/acorn": {
"version": "8.11.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
@@ -4732,20 +4630,6 @@
"integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
"dev": true
},
- "node_modules/asn1js": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz",
- "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==",
- "dev": true,
- "dependencies": {
- "pvtsutils": "^1.3.2",
- "pvutils": "^1.1.3",
- "tslib": "^2.4.0"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
"node_modules/assertion-error": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
@@ -4954,9 +4838,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.23.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
- "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
+ "version": "4.24.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz",
+ "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==",
"dev": true,
"funding": [
{
@@ -4972,11 +4856,12 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001587",
- "electron-to-chromium": "^1.4.668",
- "node-releases": "^2.0.14",
- "update-browserslist-db": "^1.0.13"
+ "caniuse-lite": "^1.0.30001663",
+ "electron-to-chromium": "^1.5.28",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.0"
},
"bin": {
"browserslist": "cli.js"
@@ -5104,9 +4989,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001600",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz",
- "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==",
+ "version": "1.0.30001669",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz",
+ "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==",
"dev": true,
"funding": [
{
@@ -5121,7 +5006,8 @@
"type": "github",
"url": "https://github.com/sponsors/ai"
}
- ]
+ ],
+ "license": "CC-BY-4.0"
},
"node_modules/capital-case": {
"version": "1.0.4",
@@ -5454,12 +5340,13 @@
}
},
"node_modules/cssstyle": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz",
- "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz",
+ "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "rrweb-cssom": "^0.6.0"
+ "rrweb-cssom": "^0.7.1"
},
"engines": {
"node": ">=18"
@@ -5833,10 +5720,11 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.4.717",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.717.tgz",
- "integrity": "sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==",
- "dev": true
+ "version": "1.5.40",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.40.tgz",
+ "integrity": "sha512-LYm78o6if4zTasnYclgQzxEcgMoIcybWOhkATWepN95uwVVWV0/IW10v+2sIeHE+bIYWipLneTftVyQm45UY7g==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/emoji-regex": {
"version": "9.2.2",
@@ -6086,10 +5974,11 @@
}
},
"node_modules/escalade": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -6195,9 +6084,9 @@
}
},
"node_modules/eslint-module-utils": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.9.0.tgz",
- "integrity": "sha512-McVbYmwA3NEKwRQY5g4aWMdcZE5xZxV8i8l7CqJSrameuGSQJtSWaL/LxTEzSKKaCcOhlpDR8XEfYXWPrdo/ZQ==",
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz",
+ "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6222,9 +6111,9 @@
}
},
"node_modules/eslint-plugin-import": {
- "version": "2.30.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz",
- "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==",
+ "version": "2.31.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz",
+ "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6236,7 +6125,7 @@
"debug": "^3.2.7",
"doctrine": "^2.1.0",
"eslint-import-resolver-node": "^0.3.9",
- "eslint-module-utils": "^2.9.0",
+ "eslint-module-utils": "^2.12.0",
"hasown": "^2.0.2",
"is-core-module": "^2.15.1",
"is-glob": "^4.0.3",
@@ -6245,13 +6134,14 @@
"object.groupby": "^1.0.3",
"object.values": "^1.2.0",
"semver": "^6.3.1",
+ "string.prototype.trimend": "^1.0.8",
"tsconfig-paths": "^3.15.0"
},
"engines": {
"node": ">=4"
},
"peerDependencies": {
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9"
}
},
"node_modules/eslint-plugin-import/node_modules/brace-expansion": {
@@ -6367,9 +6257,9 @@
}
},
"node_modules/eslint-plugin-react": {
- "version": "7.36.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz",
- "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==",
+ "version": "7.37.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz",
+ "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6668,7 +6558,8 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz",
"integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
@@ -6721,19 +6612,11 @@
"resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz",
"integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-decode-uri-component": "^1.0.1"
}
},
- "node_modules/fast-url-parser": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
- "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==",
- "dev": true,
- "dependencies": {
- "punycode": "^1.3.2"
- }
- },
"node_modules/fastq": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
@@ -7224,10 +7107,11 @@
}
},
"node_modules/graphql-config": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-5.0.3.tgz",
- "integrity": "sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==",
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-5.1.3.tgz",
+ "integrity": "sha512-RBhejsPjrNSuwtckRlilWzLVt2j8itl74W9Gke1KejDTz7oaA5kVd6wRn9zK9TS5mcmIYGxf7zN7a1ORMdxp1Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@graphql-tools/graphql-file-loader": "^8.0.0",
"@graphql-tools/json-file-loader": "^8.0.0",
@@ -7236,8 +7120,8 @@
"@graphql-tools/url-loader": "^8.0.0",
"@graphql-tools/utils": "^10.0.0",
"cosmiconfig": "^8.1.0",
- "jiti": "^1.18.2",
- "minimatch": "^4.2.3",
+ "jiti": "^2.0.0",
+ "minimatch": "^9.0.5",
"string-env-interpolation": "^1.0.1",
"tslib": "^2.4.0"
},
@@ -7254,26 +7138,14 @@
}
}
},
- "node_modules/graphql-config/node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/graphql-config/node_modules/minimatch": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.3.tgz",
- "integrity": "sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==",
+ "node_modules/graphql-config/node_modules/jiti": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.3.3.tgz",
+ "integrity": "sha512-EX4oNDwcXSivPrw2qKH2LB5PoFxEvgtv2JgwW0bU858HoLQ+kutSvjLMUqBd0PeJYEinLWhoI9Ol0eYMqj/wNQ==",
"dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": ">=10"
+ "license": "MIT",
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
}
},
"node_modules/graphql-request": {
@@ -8289,13 +8161,13 @@
"integrity": "sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g=="
},
"node_modules/jsdom": {
- "version": "25.0.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.0.tgz",
- "integrity": "sha512-OhoFVT59T7aEq75TVw9xxEfkXgacpqAhQaYgP9y/fDqWQCMB/b1H66RfmPm/MaeaAIU9nDwMOVTlPN51+ao6CQ==",
+ "version": "25.0.1",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz",
+ "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "cssstyle": "^4.0.1",
+ "cssstyle": "^4.1.0",
"data-urls": "^5.0.0",
"decimal.js": "^10.4.3",
"form-data": "^4.0.0",
@@ -8308,7 +8180,7 @@
"rrweb-cssom": "^0.7.1",
"saxes": "^6.0.0",
"symbol-tree": "^3.2.4",
- "tough-cookie": "^4.1.4",
+ "tough-cookie": "^5.0.0",
"w3c-xmlserializer": "^5.0.0",
"webidl-conversions": "^7.0.0",
"whatwg-encoding": "^3.1.1",
@@ -8329,23 +8201,17 @@
}
}
},
- "node_modules/jsdom/node_modules/rrweb-cssom": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz",
- "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
+ "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
"dev": true,
+ "license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
"node_modules/json-buffer": {
@@ -8787,9 +8653,9 @@
}
},
"node_modules/maplibre-gl": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.7.0.tgz",
- "integrity": "sha512-hkt7je7NxiMQE8EpCxLWP8t6tkK6SkrMe0hIBjYd4Ar/Q7BOCILxthGmGnU993Mwmkvs2mGiXnVUSOK12DeCzg==",
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.7.1.tgz",
+ "integrity": "sha512-lgL7XpIwsgICiL82ITplfS7IGwrB1OJIw/pCvprDp2dhmSSEBgmPzYRvwYYYvJGJD7fxUv1Tvpih4nZ6VrLuaA==",
"license": "BSD-3-Clause",
"dependencies": {
"@mapbox/geojson-rewind": "^0.5.2",
@@ -9046,10 +8912,11 @@
"dev": true
},
"node_modules/node-releases": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
- "dev": true
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
+ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/normalize-path": {
"version": "2.1.1",
@@ -9697,42 +9564,6 @@
"resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
"integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
},
- "node_modules/psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
- "dev": true
- },
- "node_modules/punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
- "dev": true
- },
- "node_modules/pvtsutils": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz",
- "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==",
- "dev": true,
- "dependencies": {
- "tslib": "^2.6.1"
- }
- },
- "node_modules/pvutils": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz",
- "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/querystringify": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
- },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -9770,9 +9601,9 @@
}
},
"node_modules/react-bootstrap": {
- "version": "2.10.4",
- "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.4.tgz",
- "integrity": "sha512-W3398nBM2CBfmGP2evneEO3ZZwEMPtHs72q++eNw60uDGDAdiGn0f9yNys91eo7/y8CTF5Ke1C0QO8JFVPU40Q==",
+ "version": "2.10.5",
+ "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.5.tgz",
+ "integrity": "sha512-XueAOEn64RRkZ0s6yzUTdpFtdUXs5L5491QU//8ZcODKJNDLt/r01tNyriZccjgRImH1REynUc9pqjiRMpDLWQ==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.24.7",
@@ -10014,12 +9845,6 @@
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
- "node_modules/requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
- },
"node_modules/resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -10135,10 +9960,11 @@
}
},
"node_modules/rrweb-cssom": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz",
- "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==",
- "dev": true
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz",
+ "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/run-async": {
"version": "2.4.1",
@@ -10967,6 +10793,26 @@
"tslib": "^2.0.3"
}
},
+ "node_modules/tldts": {
+ "version": "6.1.52",
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.52.tgz",
+ "integrity": "sha512-fgrDJXDjbAverY6XnIt0lNfv8A0cf7maTEaZxNykLGsLG7XP+5xhjBTrt/ieAsFjAlZ+G5nmXomLcZDkxXnDzw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tldts-core": "^6.1.52"
+ },
+ "bin": {
+ "tldts": "bin/cli.js"
+ }
+ },
+ "node_modules/tldts-core": {
+ "version": "6.1.52",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.52.tgz",
+ "integrity": "sha512-j4OxQI5rc1Ve/4m/9o2WhWSC4jGc4uVbCINdOEJRAraCi0YqTqgMcxUx7DbmuP0G3PCixoof/RZB0Q5Kh9tagw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -11001,28 +10847,16 @@
}
},
"node_modules/tough-cookie": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
- "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz",
+ "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.2.0",
- "url-parse": "^1.5.3"
+ "tldts": "^6.1.32"
},
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/tough-cookie/node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
- "engines": {
- "node": ">=6"
+ "node": ">=16"
}
},
"node_modules/tr46": {
@@ -11197,9 +11031,9 @@
}
},
"node_modules/typescript": {
- "version": "5.6.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
- "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
+ "version": "5.6.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
+ "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -11304,15 +11138,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/universalify": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
- "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
- "dev": true,
- "engines": {
- "node": ">= 4.0.0"
- }
- },
"node_modules/unixify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz",
@@ -11326,9 +11151,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
+ "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
"dev": true,
"funding": [
{
@@ -11344,9 +11169,10 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.0"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -11391,21 +11217,12 @@
"node": ">=6"
}
},
- "node_modules/url-parse": {
- "version": "1.5.10",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
- "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
- "dev": true,
- "dependencies": {
- "querystringify": "^2.1.1",
- "requires-port": "^1.0.0"
- }
- },
"node_modules/urlpattern-polyfill": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz",
- "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==",
- "dev": true
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
+ "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/util-deprecate": {
"version": "1.0.2",
@@ -11423,9 +11240,9 @@
}
},
"node_modules/vite": {
- "version": "5.4.6",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz",
- "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==",
+ "version": "5.4.9",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.9.tgz",
+ "integrity": "sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11483,9 +11300,9 @@
}
},
"node_modules/vite-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.1.tgz",
- "integrity": "sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.3.tgz",
+ "integrity": "sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11505,19 +11322,19 @@
}
},
"node_modules/vitest": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.1.tgz",
- "integrity": "sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.3.tgz",
+ "integrity": "sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/expect": "2.1.1",
- "@vitest/mocker": "2.1.1",
- "@vitest/pretty-format": "^2.1.1",
- "@vitest/runner": "2.1.1",
- "@vitest/snapshot": "2.1.1",
- "@vitest/spy": "2.1.1",
- "@vitest/utils": "2.1.1",
+ "@vitest/expect": "2.1.3",
+ "@vitest/mocker": "2.1.3",
+ "@vitest/pretty-format": "^2.1.3",
+ "@vitest/runner": "2.1.3",
+ "@vitest/snapshot": "2.1.3",
+ "@vitest/spy": "2.1.3",
+ "@vitest/utils": "2.1.3",
"chai": "^5.1.1",
"debug": "^4.3.6",
"magic-string": "^0.30.11",
@@ -11528,7 +11345,7 @@
"tinypool": "^1.0.0",
"tinyrainbow": "^1.2.0",
"vite": "^5.0.0",
- "vite-node": "2.1.1",
+ "vite-node": "2.1.3",
"why-is-node-running": "^2.3.0"
},
"bin": {
@@ -11543,8 +11360,8 @@
"peerDependencies": {
"@edge-runtime/vm": "*",
"@types/node": "^18.0.0 || >=20.0.0",
- "@vitest/browser": "2.1.1",
- "@vitest/ui": "2.1.1",
+ "@vitest/browser": "2.1.3",
+ "@vitest/ui": "2.1.3",
"happy-dom": "*",
"jsdom": "*"
},
@@ -11608,28 +11425,6 @@
"defaults": "^1.0.3"
}
},
- "node_modules/web-streams-polyfill": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
- "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/webcrypto-core": {
- "version": "1.7.8",
- "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.8.tgz",
- "integrity": "sha512-eBR98r9nQXTqXt/yDRtInszPMjTaSAMJAFDg2AHsgrnczawT1asx9YNBX6k5p+MekbPF4+s/UJJrr88zsTqkSg==",
- "dev": true,
- "dependencies": {
- "@peculiar/asn1-schema": "^2.3.8",
- "@peculiar/json-schema": "^1.1.12",
- "asn1js": "^3.0.1",
- "pvtsutils": "^1.3.5",
- "tslib": "^2.6.2"
- }
- },
"node_modules/webidl-conversions": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
diff --git a/client/package.json b/client/package.json
index ff555a85f9b..8f133b3d4b0 100644
--- a/client/package.json
+++ b/client/package.json
@@ -22,35 +22,35 @@
"bootstrap": "5.3.3",
"graphql": "16.9.0",
"graphql-request": "7.1.0",
- "maplibre-gl": "4.7.0",
+ "maplibre-gl": "4.7.1",
"react": "18.3.1",
- "react-bootstrap": "2.10.4",
+ "react-bootstrap": "2.10.5",
"react-dom": "18.3.1",
"react-map-gl": "7.1.7"
},
"devDependencies": {
- "@graphql-codegen/cli": "5.0.2",
+ "@graphql-codegen/cli": "5.0.3",
"@graphql-codegen/client-preset": "4.3.3",
"@graphql-codegen/introspection": "4.0.3",
"@parcel/watcher": "2.4.1",
"@testing-library/react": "16.0.1",
- "@types/react": "18.3.7",
- "@types/react-dom": "18.3.0",
+ "@types/react": "18.3.11",
+ "@types/react-dom": "18.3.1",
"@typescript-eslint/eslint-plugin": "7.18.0",
"@typescript-eslint/parser": "7.18.0",
- "@vitejs/plugin-react": "4.3.1",
- "@vitest/coverage-v8": "2.1.1",
+ "@vitejs/plugin-react": "4.3.2",
+ "@vitest/coverage-v8": "2.1.3",
"eslint": "8.57.1",
"eslint-config-prettier": "9.1.0",
- "eslint-plugin-import": "2.30.0",
+ "eslint-plugin-import": "2.31.0",
"eslint-plugin-jsx-a11y": "6.10.0",
- "eslint-plugin-react": "7.36.1",
+ "eslint-plugin-react": "7.37.1",
"eslint-plugin-react-hooks": "5.0.0",
"eslint-plugin-react-refresh": "0.4.12",
- "jsdom": "25.0.0",
+ "jsdom": "25.0.1",
"prettier": "3.3.3",
- "typescript": "5.6.2",
- "vite": "5.4.6",
- "vitest": "2.1.1"
+ "typescript": "5.6.3",
+ "vite": "5.4.9",
+ "vitest": "2.1.3"
}
}
diff --git a/doc/dev/decisionrecords/Codestyle.md b/doc/dev/decisionrecords/Codestyle.md
index 146063bbeef..46e2062f41c 100644
--- a/doc/dev/decisionrecords/Codestyle.md
+++ b/doc/dev/decisionrecords/Codestyle.md
@@ -157,6 +157,19 @@ context. Please avoid including trivial Javadoc or the empty Javadoc stubs added
- Is it immutable or should anything be treated as immutable
- Is it a utility class of static methods that should not be instantiated
+### Annotations
+
+- On methods:
+ - Method should be marked as `@Nullable` if they can return null values
+ - Method parameters should be marked as `@Nullable` if they can take null values.
+- On fields:
+ - Fields should be marked as `@Nullable` if they are nullable.
+
+Use of `@Nonnull` annotation is not allowed. It should be assumed methods/parameters/fields
+are non-null if they are not marked as `@Nullable`. However, there are places where the
+`@Nullable` annotation is missing even if it should have been used. Those can be updated
+to use the `@Nullable` annotation.
+
## JavaScript
As of #206, we
diff --git a/doc/templates/BuildConfiguration.md b/doc/templates/BuildConfiguration.md
index 77b03dae500..3d1cd5a1db3 100644
--- a/doc/templates/BuildConfiguration.md
+++ b/doc/templates/BuildConfiguration.md
@@ -163,7 +163,7 @@ OTP allows you to adjust the elevation values reported in API responses in two w
is to store ellipsoid (GPS) elevation values internally, but apply a single geoid difference value
in the OTP client where appropriate to display elevations above sea level. This ellipsoid to geoid
difference is returned in each trip plan response in the
-[ElevationMetadata](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/src/main/java/org/opentripplanner/api/resource/ElevationMetadata.java)
+[ElevationMetadata](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/application/src/ext/java/org/opentripplanner/ext/restapi/model/ElevationMetadata.java)
field. Using a single value can be sufficient for smaller OTP deployments, but might result in
incorrect values at the edges of larger OTP deployments. If your OTP instance uses this, it is
recommended to set a default request value in the `router-config.json` file as follows:
diff --git a/doc/templates/GraphQL-Tutorial.md b/doc/templates/GraphQL-Tutorial.md
index 2a78be65cc2..b3a59b7d19e 100644
--- a/doc/templates/GraphQL-Tutorial.md
+++ b/doc/templates/GraphQL-Tutorial.md
@@ -51,4 +51,4 @@ Most people want to get routing results out of OTP, so lets see the query for th
Again, please use the autocomplete and documentation viewers to figure out what each input parameter
and property means.
-More examples for a variety of queries can also be found [in the test code](https://github.com/opentripplanner/OpenTripPlanner/tree/dev-2.x/src/test/resources/org/opentripplanner/apis/gtfs/queries).
\ No newline at end of file
+More examples for a variety of queries can also be found [in the test code](https://github.com/opentripplanner/OpenTripPlanner/tree/dev-2.x/application/src/test/resources/org/opentripplanner/apis/gtfs/queries).
\ No newline at end of file
diff --git a/doc/templates/RouterConfiguration.md b/doc/templates/RouterConfiguration.md
index 87e4c1693cc..42a78cc41ca 100644
--- a/doc/templates/RouterConfiguration.md
+++ b/doc/templates/RouterConfiguration.md
@@ -14,7 +14,7 @@ These options can be applied by the OTP server without rebuilding the graph.
Certain settings can be provided on the command line, when starting OpenTripPlanner. See
the `CommandLineParameters` class
-for [a full list of arguments](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/src/main/java/org/opentripplanner/standalone/config/CommandLineParameters.java)
+for [a full list of arguments](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/application/src/main/java/org/opentripplanner/standalone/config/CommandLineParameters.java)
.
## Routing defaults
diff --git a/doc/user/BuildConfiguration.md b/doc/user/BuildConfiguration.md
index f5281db0f4e..99e98066e73 100644
--- a/doc/user/BuildConfiguration.md
+++ b/doc/user/BuildConfiguration.md
@@ -264,7 +264,7 @@ OTP allows you to adjust the elevation values reported in API responses in two w
is to store ellipsoid (GPS) elevation values internally, but apply a single geoid difference value
in the OTP client where appropriate to display elevations above sea level. This ellipsoid to geoid
difference is returned in each trip plan response in the
-[ElevationMetadata](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/src/main/java/org/opentripplanner/api/resource/ElevationMetadata.java)
+[ElevationMetadata](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/application/src/ext/java/org/opentripplanner/ext/restapi/model/ElevationMetadata.java)
field. Using a single value can be sufficient for smaller OTP deployments, but might result in
incorrect values at the edges of larger OTP deployments. If your OTP instance uses this, it is
recommended to set a default request value in the `router-config.json` file as follows:
diff --git a/doc/user/Changelog.md b/doc/user/Changelog.md
index aa5a970afe4..37646716f66 100644
--- a/doc/user/Changelog.md
+++ b/doc/user/Changelog.md
@@ -17,6 +17,13 @@ based on merged pull requests. Search GitHub issues and pull requests for smalle
- Fix GTFS-Flex duration offset and factor parsing when only one of them is set [#6138](https://github.com/opentripplanner/OpenTripPlanner/pull/6138)
- Fix arrive by filtering for on-street/flex itineraries [#6050](https://github.com/opentripplanner/OpenTripPlanner/pull/6050)
- Rename TransitModel to TransitRepository [#6148](https://github.com/opentripplanner/OpenTripPlanner/pull/6148)
+- Clear added patterns in TimetableSnapshot [#6141](https://github.com/opentripplanner/OpenTripPlanner/pull/6141)
+- Rename StopModel to SiteRepository [#6165](https://github.com/opentripplanner/OpenTripPlanner/pull/6165)
+- Allow bike walking through bicycle no thru traffic areas [#6179](https://github.com/opentripplanner/OpenTripPlanner/pull/6179)
+- update the description of mode to cable tram. [#6173](https://github.com/opentripplanner/OpenTripPlanner/pull/6173)
+- Change GraphQL tooltip for searchWindowUsed to say minutes, instead of seconds [#6185](https://github.com/opentripplanner/OpenTripPlanner/pull/6185)
+- Interpret GTFS extended route types 801-899 also as trolleybus service [#6170](https://github.com/opentripplanner/OpenTripPlanner/pull/6170)
+- Disable protocol upgrades for the HTTP client by default. [#6194](https://github.com/opentripplanner/OpenTripPlanner/pull/6194)
[](AUTOMATIC_CHANGELOG_PLACEHOLDER_DO_NOT_REMOVE)
## 2.6.0 (2024-09-18)
diff --git a/doc/user/Frontends.md b/doc/user/Frontends.md
index 8bb32273149..ac793a4fc85 100644
--- a/doc/user/Frontends.md
+++ b/doc/user/Frontends.md
@@ -19,7 +19,7 @@ On the other hand, **production frontends** are intended to be a component of la
The main OpenTripPlanner repository currently contains two debug web frontends:
- new one currently under development at [`/client`](https://github.com/opentripplanner/OpenTripPlanner/tree/dev-2.x/client).
-- the classic one in [`/src/client/classic-debug/`](https://github.com/opentripplanner/OpenTripPlanner/tree/dev-2.x/src/client/classic-debug)
+- the classic one in [`/application/src/client/classic-debug/`](https://github.com/opentripplanner/OpenTripPlanner/tree/dev-2.x/application/src/client/classic-debug)
The **new debug client** is a React/TypeScript Single Page App (SPA) that can be served locally or accessed over a content delivery network (CDN).
Unlike the original debug client, it connects to the OTP Java backend via the GraphQL API using the Transmodel vocabulary. By default, it is available at the root URL (`http://localhost:8080/` in local operation).
@@ -29,7 +29,7 @@ It connects to the OTP Java backend via a REST API using the GTFS vocabulary. Hi
It is still available, but has been moved to `http://localhost:8080/classic-debug/` .
There is a third piece of software that might qualify as an OTP client: a Java Swing application making use of the Processing visualization library,
-located in the [GraphVisualizer class](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/src/main/java/org/opentripplanner/visualizer/GraphVisualizer.java).
+located in the [GraphVisualizer class](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/application/src/main/java/org/opentripplanner/visualizer/GraphVisualizer.java).
While it would not be accurate to call this a "native" desktop application (as it's cross-platform Java) it is not a web app. This very developer-centric
UI is also over a decade old and has been very sparsely maintained, but continues to exist because it can visualize the progress of searches through the
street network, providing some insight into the internals of the routing algorithms that are not otherwise visible.
diff --git a/doc/user/Getting-OTP.md b/doc/user/Getting-OTP.md
index cfb0102c2a3..92f1e7298fc 100644
--- a/doc/user/Getting-OTP.md
+++ b/doc/user/Getting-OTP.md
@@ -64,13 +64,13 @@ OTP. If all goes well you should see a success message like the following:
[INFO] ------------------------------------------------------------------------
```
-This build process should produce a JAR file called `otp-x.y.z-shaded.jar` in the `target/`
-directory which contains all the compiled OTP classes and their dependencies (the external libraries
-they use). The shell script called 'otp' in the root of the cloned repository will start the main
-class of that JAR file under a Java virtual machine, so after the Maven build completes you should
-be able to run `./otp --help` and see an OTP help message including command line options. Due to the
-way Maven works, this script is not executable by default, so you will need to do `chmod u+x ./otp`
-before you run it to mark it as executable.
+This build process should produce a JAR file called `otp-x.y.z-shaded.jar` in the
+`application/target/` directory which contains all the compiled OTP classes and their dependencies
+(the external libraries they use). The shell script called 'otp' in the root of the cloned repository
+will start the main class of that JAR file under a Java virtual machine, so after the Maven build
+completes you should be able to run `./otp --help` and see an OTP help message including command line
+options. Due to the way Maven works, this script is not executable by default, so you will need to do
+`chmod u+x ./otp` before you run it to mark it as executable.
The words "clean package" are the build steps you want to run. You're telling maven to clean up any
extraneous junk in the directory, then perform all the build steps, including compilation, up to and
diff --git a/doc/user/Localization.md b/doc/user/Localization.md
deleted file mode 100644
index 75d21e96ce4..00000000000
--- a/doc/user/Localization.md
+++ /dev/null
@@ -1,229 +0,0 @@
-# Localization
-
-NOTE: This documentation pertains to the client included in the main OTP repository. THIS BUILT-IN
-OTP CLIENT IS PROVIDED FOR TEST AND DEBUGGING PURPOSES. IT IS NOT MEANT FOR PRODUCTION USE.
-
-This page contains instructions for both developers and translators on how to make the OTP interface
-usable by people who speak different languages. Developers will need to take certain steps to mark
-translatable strings within the source code. Translators will need to edit specific files within the
-project to create or revise the translation for their language.
-
-In OTP we use gettext for localization, for the following reasons:
-
-- [Plural suport](http://pology.nedohodnik.net/doc/user/en_US/ch-poformat.html#sec-poplurals)
-- [Context support](http://pology.nedohodnik.net/doc/user/en_US/ch-poformat.html#sec-poautocmnt)
-- Automatic extraction of translatable strings from source code
-- [Translator comments](http://pology.nedohodnik.net/doc/user/en_US/ch-poformat.html#sec-poautocmnt)
- support
-- Source references (we can see where each translated string is used in the source code)
-
-In the Javascript UI the [i18next](http://i18next.com) library is used.
-
-Three types of files are used in the OTP localization process:
-
-- The `.pot` file is the message template. It is a starting point for creating new `.po` files.
-- `.po` files are created and edited by translators based on the `.pot` file.
-- `.json` files are generated from the `.po` files for each language.
-- `.js` files are localization configuration files which specify units and time/date formats.
-
-Only the `.po` and `.js` files are directly edited. The `.pot` file is created from an automated
-analysis of annotated source code. The `.json` files are also automatically generated as an easy way
-for the Javascript UI to consume the contents of the `.po` files.
-
-All translation files are in the directory `/src/client/i18n`.
-
-## For Software Developers: Adding New Strings
-
-When you add a string to Javascript source that will be seen by the end user, wherever that string
-is referenced you should surround it with a call to a special function. The name of the function
-depends on what kind of string it is:
-
-- basic string: `_tr('string', parameters)`
-- basic string with context: `ngettext('context', 'string')`
-- string with plural: `ngettext('singular', 'plural', quantity)`
-- string with plural and context: `npgettext('context', 'singular', 'plural', quantity)`
-
-For more detail,
-see [Sprintf parameters](http://www.diveintojavascript.com/projects/javascript-sprintf).
-
-A "context" is any string (preferably short and without whitespace) that is used to disambiguate the
-translation of the main string. It is used when developers get input from translators that some
-string should be translated in different ways in different parts of the program. Each of those
-distinct places will be assigned a different context string.
-
-When you add strings to the source code, if you think that translators might not understand how the
-string is used or what parameters it requires, add translator comments like this:
-
-```javascript
-//TRANSLATORS: Start: location at [time date] (Used in print itinerary
-//when do you start your trip)
-html += '' + _tr('Start: %s at %s', this.getStartLocationStr(), this.getStartTimeStr()) + '
';
-```
-
-Translator comments must always start with `TRANSLATORS:` and must be in the line immediately before
-translated string. Otherwise they won't be extracted together with the string.
-
-### Examples:
-
-#### Basic translated string
-
-```javascript
-//TRANSLATORS: Board Public transit route name (agency name
-//Stop ID ) start time
-html += '' + _tr('Board') + ': ' + leg.from.name + ' (' + leg.from.stopId.agencyId + ' Stop ID #' +
-
-//With named sprintf parameters (our preferred option)
-
-//TRANSLATORS: Start: location at [time date] (Used in print itinerary
-//when do you start your trip)
-html += '' + _tr('Start: %(location)s at %(time_date)s', {
- 'location': this.getStartLocationStr(),
- 'time_date': this.getStartTimeStr()
-}) + '
';
-
-//With positional sprintf parameters (to be avoided because word order changes between languages)
-html += '' + _tr('End: %1$s at %2$s', this.getEndLocationStr(), this.getEndTimeStr()) + '
';
-```
-
-#### Normal string with context
-
-```javascript
- if (leg.headsign) html += pgettext("bus_direction", " to ") + leg.headsign;
-
-//same string could be different translation
-//TRANSLATORS: [distance] to [name of destination]
-html += " " + otp.util.Itin.distanceString(leg.distance) + pgettext("direction", " to ") + leg.to.name;
-
-```
-
-#### Plural strings
-
-```javascript
-//TRANSLATORS: widget title
-this.setTitle(ngettext("%d Itinerary Returned", "%d Itineraries Returned", this.itineraries.length));
-```
-
-If you add new strings to the source code, it is good practice to also update the translation
-template and the translations but it is not mandatory (these can be updated later). It is also
-recommended to include "i18n string change" in the commit message.
-
-Updating translations
----------------------
-Translations are updated with the help of [Babel](http://babel.pocoo.org/)
-and [i18next-conv](https://github.com/jamuhl/i18next-gettext-converter) (xgettext doesn't yet have
-great Javascript support).
-
-Babel is used to extract strings from the Javascript source code into the shared `.POT` translation
-template, and also for updating the existing `.PO` language translations when new strings are
-introduced in the template. i18next-conv is used to convert the `.PO` translation files for the
-individual languages to `.json` files which are used by the Javascript translation library.
-
-### Installing Babel
-
-You can install it from your operating system's package repository (if available) or you can
-use [virtualenv](http://simononsoftware.com/virtualenv-tutorial/).
-
-1. Install virtualenv (This depends on your operating system)
-2. Create virtualenv with name .venv in directory where src and other files resides (Root
- OpenTripPlanner directory). `virtualenv2 .venv`(python 2) or `python3 -m venv .venv` (python 3)
-3. Use virtualenv `source .venv/bin/activate`
-4. Install babel `pip install babel`
-
-If you didn't install babel from virtualenv in root OpenTripPlanner directory you have to add path
-to babel in Makefile. change `PYBABEL` variable to path to pybabel.
-
-### Installing i18next-conv
-
-i18next-conv requires [nodejs](http://nodejs.org/).
-
-Once you have NodeJS installed, use `npm install i18next-conv` to install i18next-conv in the same
-directory where you created virtualenv.
-
-### Updating the `.pot` Template
-
-In the root of the OTP repo, run `make`. The commands in the `Makefile` will extract the
-translatable strings from the Javascript files and update the translation template `messages.pot`,
-as well as the `.po` translation files for all the different languages.
-
-Once this is done, you can translate the new strings in the `.po` files. After saving the
-updated `.po` file, run
-`make update_js` to transform to PO files into `.json`, which is used at runtime by the Javascript
-translation library. After you rebuild OTP, all new strings should be visible in the UI.
-
-## For Translators: Creating New Translations
-
-The following can get a bit technical. If you want to do a translation but don't want to / know how
-to install all this software, post to the [Gitter chat room](https://gitter.im/opentripplanner/OpenTripPlanner)
-stating what language you want to translate, and someone will make you a corresponding `.po` file.
-
-### Creating a New Translation File
-
-New `.po` files are created from the `.pot` template with the help of `msginit`, which is run like
-this:
-`msginit init -l -i messages.pot -o .po`, where `` is a culture code. New `.po`files
-can also be created with the help of `Poedit`. All translation files should be placed in the
-directory `/src/client/i18n`.
-
-Please use the ISO language code as the culture code (e.g. `fr.po` for French). We will append
-country codes in the following limited circumstances:
-
-- British versus US English (`en_GB.po` and `en_US.po`)
-- Brazilian Portuguese `pt_BR.po`, as opposed to `pt.po` for European Portuguese
-- Chinese: `zh_TW.po` for traditional characters as used in e.g. Taiwan and Hong Kong,
- and `zh_CN.po` for simplified characters as used in mainland China, Singapore, etc.
-
-These conventions are based on
-the [Launchpad Translation](https://help.launchpad.net/Translations/YourProject/ImportingTranslations)
-page.
-
-In Linux you can see the culture codes for all the locales you have installed with the
-command `locale -a`. A list of culture codes is also
-availible [here](http://download1.parallels.com/SiteBuilder/Windows/docs/3.2/en_US/sitebulder-3.2-win-sdk-localization-pack-creation-guide/30801.htm)
-.
-
-### Performing the Translation
-
-#### Configuration
-
-Copy the locale configuration script `English.js` from `/src/client/js/otp/locale`
-to `YourLanguage.js` and customize it to your language. Change the name, units, locale_short and
-datepicker_locale_short values. Translate infoWidgets and localize the time/date formats.
-
-Then take the following steps:
-
-- Add the culture code to the `LANGS` variable in the Makefile`
-- Add the new `YourLanguage.js` to the locales variable in `/src/client/js/otp/config.js`
-- Add a new datepicker translation to `/src/client/js/lib/jquery-ui/i18n`
-- Load the new datepicker translation and `YourLanguage.js` in `/src/client/index.html`
-
-#### Translating Strings
-
-For translating the strings themselves, you can use any program that supports gettext files. You can
-in theory use any text editor, but programs or plugins purpose-built for translating are
-recommended. Most of them support checking parameter correctness, translation memory, web
-translating services etc. to make the task easier.
-
-Here are some such programs (all free and open source):
-
-- [Poedit](http://poedit.net/) For Linux, Windows, and Mac. Use a version newer then 1.5. This is
- the recommended choice for getting started with localization. It supports translation memory and
- file context.
-- [Web Poedit](https://localise.biz/free/poedit) Usable from within a web browser, you don't have to
- install or register
-- [Gted](http://www.gted.org/) A plugin for the Eclipse IDE.
-- [Lokalize](http://userbase.kde.org/Lokalize) Runs under KDE on Linux, has some Windows support.
- Supports translation memory and file context.
-- [Virtaal](http://virtaal.translatehouse.org/index.html) For Linux, Windows, and beta for Mac.
- Supports Google and Microsoft web translation and other translation memory services.
-
-All these programs support setting a string to "fuzzy", marking that it needs review etc. in case
-you translate something but aren't sure of it's correctness. Sometimes those flags are set
-automatically if the original string was changed and translators must check if the translation is
-still correct.
-
-#### Caveats
-
-Be careful when translating that the translated strings have the same format as the original. If
-spaces appear at the start or end of the strings, they must also appear in the translation. The
-order of unnamed (positional) parameters may change depending on the target language. You can also
-leave parameter out of the translation if it is irrelevant in the target language.
diff --git a/doc/user/RouterConfiguration.md b/doc/user/RouterConfiguration.md
index 711eca3fb87..766ad0de4ef 100644
--- a/doc/user/RouterConfiguration.md
+++ b/doc/user/RouterConfiguration.md
@@ -14,7 +14,7 @@ These options can be applied by the OTP server without rebuilding the graph.
Certain settings can be provided on the command line, when starting OpenTripPlanner. See
the `CommandLineParameters` class
-for [a full list of arguments](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/src/main/java/org/opentripplanner/standalone/config/CommandLineParameters.java)
+for [a full list of arguments](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/application/src/main/java/org/opentripplanner/standalone/config/CommandLineParameters.java)
.
## Routing defaults
diff --git a/doc/user/RoutingModes.md b/doc/user/RoutingModes.md
index 0895e019716..c9b61712498 100644
--- a/doc/user/RoutingModes.md
+++ b/doc/user/RoutingModes.md
@@ -104,7 +104,7 @@ Used for short- and long-distance bus routes.
CABLE_CAR
-Used for street-level cable cars where the cable runs beneath the car.
+Used for street-level rail cars where the cable runs beneath the vehicle.
CARPOOL
diff --git a/doc/user/Troubleshooting-Routing.md b/doc/user/Troubleshooting-Routing.md
index 4e237baa9fc..cd7eaa04c88 100644
--- a/doc/user/Troubleshooting-Routing.md
+++ b/doc/user/Troubleshooting-Routing.md
@@ -148,7 +148,7 @@ props.setProperties("surface=mud", StreetTraversalPermission.ALL, 1.5, 1.5, true
```
The Javadoc
-of [`OSMSpecifier.java`](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/src/main/java/org/opentripplanner/graph_builder/module/osm/OSMSpecifier.java)
+of [`OSMSpecifier.java`](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/application/src/main/java/org/opentripplanner/osm/wayproperty/specifier/OsmSpecifier.java)
contains the precise documentation about the syntax of the matchers.
There are a lot of rules for which tags results in a specific safety score so it's not easy to get
diff --git a/doc/user/apis/GraphQL-Tutorial.md b/doc/user/apis/GraphQL-Tutorial.md
index 5c4b59e864e..41695de304a 100644
--- a/doc/user/apis/GraphQL-Tutorial.md
+++ b/doc/user/apis/GraphQL-Tutorial.md
@@ -138,4 +138,4 @@ Most people want to get routing results out of OTP, so lets see the query for th
Again, please use the autocomplete and documentation viewers to figure out what each input parameter
and property means.
-More examples for a variety of queries can also be found [in the test code](https://github.com/opentripplanner/OpenTripPlanner/tree/dev-2.x/src/test/resources/org/opentripplanner/apis/gtfs/queries).
\ No newline at end of file
+More examples for a variety of queries can also be found [in the test code](https://github.com/opentripplanner/OpenTripPlanner/tree/dev-2.x/application/src/test/resources/org/opentripplanner/apis/gtfs/queries).
\ No newline at end of file
diff --git a/doc/user/sandbox/GoogleCloudStorage.md b/doc/user/sandbox/GoogleCloudStorage.md
index 2fdc688a247..4876857b727 100644
--- a/doc/user/sandbox/GoogleCloudStorage.md
+++ b/doc/user/sandbox/GoogleCloudStorage.md
@@ -14,7 +14,7 @@
To enable this turn on the feature `GoogleCloudStorage`. OTP can load or store artifacts from one or
more Google Cloud Storge locations. Each artifact must be configured in the _build-config.json_:
-See [`BuildConfig`](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/src/main/java/org/opentripplanner/standalone/config/BuildConfig.java)
+See [`BuildConfig`](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/application/src/main/java/org/opentripplanner/standalone/config/BuildConfig.java)
on how to configure artifacts.
Example (build-config.json):
diff --git a/doc/user/sandbox/transferanalyzer.md b/doc/user/sandbox/transferanalyzer.md
index edc1a2579ea..d1dfabe10b2 100644
--- a/doc/user/sandbox/transferanalyzer.md
+++ b/doc/user/sandbox/transferanalyzer.md
@@ -17,5 +17,5 @@ generates lists of both unusually long and unroutable transfers. These lists can
to improve the quality of OSM data for transfer purposes.
See javadoc in
-[DirectTransferAnalyzer](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/src/ext/java/org/opentripplanner/ext/transferanalyzer/DirectTransferAnalyzer.java)
+[DirectTransferAnalyzer](https://github.com/opentripplanner/OpenTripPlanner/blob/dev-2.x/application/src/ext/java/org/opentripplanner/ext/transferanalyzer/DirectTransferAnalyzer.java)
class
\ No newline at end of file
diff --git a/gtfs-realtime-protobuf/pom.xml b/gtfs-realtime-protobuf/pom.xml
new file mode 100644
index 00000000000..e4465a4d366
--- /dev/null
+++ b/gtfs-realtime-protobuf/pom.xml
@@ -0,0 +1,54 @@
+
+
+ 4.0.0
+
+ org.opentripplanner
+ otp-root
+ 2.7.0-SNAPSHOT
+
+ gtfs-realtime-protobuf
+ OpenTripPlanner - GTFS Realtime (protobuf)
+
+
+
+ com.google.protobuf
+ protobuf-java
+
+
+
+
+
+
+ kr.motd.maven
+ os-maven-plugin
+ 1.7.1
+
+
+
+
+
+ org.xolstice.maven.plugins
+ protobuf-maven-plugin
+ 0.6.1
+
+
+
+ compile
+ test-compile
+
+
+
+
+ com.google.protobuf:protoc:3.22.0:exe:${os.detected.classifier}
+
+
+
+
+
\ No newline at end of file
diff --git a/application/src/main/proto/gtfs-realtime.proto b/gtfs-realtime-protobuf/src/main/proto/gtfs-realtime.proto
similarity index 100%
rename from application/src/main/proto/gtfs-realtime.proto
rename to gtfs-realtime-protobuf/src/main/proto/gtfs-realtime.proto
diff --git a/application/src/main/proto/mfdz-realtime-extensions.proto b/gtfs-realtime-protobuf/src/main/proto/mfdz-realtime-extensions.proto
similarity index 100%
rename from application/src/main/proto/mfdz-realtime-extensions.proto
rename to gtfs-realtime-protobuf/src/main/proto/mfdz-realtime-extensions.proto
diff --git a/mkdocs.yml b/mkdocs.yml
index 1364be7be1f..dd060c3ffd1 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -95,7 +95,6 @@ nav:
- "Logging": "Logging.md"
- Development:
- "Developers' Guide": 'Developers-Guide.md'
- - Localization: 'Localization.md'
- Bibliography: 'Bibliography.md'
- Sandbox Development: 'SandboxExtension.md'
- Release Checklist: 'ReleaseChecklist.md'
diff --git a/pom.xml b/pom.xml
index 0b4dd2ea10c..e590501e6c4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,7 +58,7 @@
- 165
+ 167
32.0
2.52
@@ -95,19 +95,10 @@
application
+ gtfs-realtime-protobuf
-
-
-
- kr.motd.maven
- os-maven-plugin
- 1.7.1
-
-
org.apache.maven.plugins
@@ -308,7 +299,7 @@
com.google.cloud.tools
jib-maven-plugin
- 3.4.3
+ 3.4.4
org.opentripplanner.standalone.OTPMain
@@ -357,27 +348,6 @@
-
-
-
- org.xolstice.maven.plugins
- protobuf-maven-plugin
- 0.6.1
-
-
-
- compile
- test-compile
-
-
-
-
- com.google.protobuf:protoc:3.22.0:exe:${os.detected.classifier}
-
-
@@ -564,7 +534,7 @@
org.apache.maven.plugins
maven-gpg-plugin
- 3.2.6
+ 3.2.7
sign-artifacts
diff --git a/test/performance/washington-state/build-config.json b/test/performance/washington-state/build-config.json
index 76cd2da6247..a8d0d5a43bb 100644
--- a/test/performance/washington-state/build-config.json
+++ b/test/performance/washington-state/build-config.json
@@ -1,127 +1,67 @@
{
- "transitServiceStart": "2022-01-01",
- "transitServiceEnd": "2022-12-31",
+ "transitServiceStart": "2024-09-01",
+ "transitServiceEnd": "2024-12-31",
"transitModelTimeZone": "America/Los_Angeles",
"transitFeeds": [
{
"type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Community_Transit-20221020T085912Z.gtfs.zip",
+ "source": "https://otp-performance.leonard.io/data/washington-state-new/catholiccommunity-wa-us-king--flex-v2.zip",
+ "feedId": "ccsww-kc"
+ },
+ {
+ "type": "gtfs",
+ "source": "https://otp-performance.leonard.io/data/washington-state-new/community-transit.gtfs.zip",
"feedId": "commtrans"
},
{
"type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Everett_Transit-20221022T085914Z.gtfs.zip",
- "feedId": "everett"
+ "source": "https://otp-performance.leonard.io/data/washington-state-new/communitytransit-wa-us--flex-v2.zip",
+ "feedId": "commtrans-flex"
},
{
"type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Homage_Senior_Services-20221013T085917Z.gtfs.zip",
+ "source": "https://otp-performance.leonard.io/data/washington-state-new/homage-wa-us-darrington--flex-v2.zip",
"feedId": "homage"
},
{
"type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Island_Transit-20221013T085915Z.gtfs.zip",
- "feedId": "island-transit"
+ "source": "https://otp-performance.leonard.io/data/washington-state-new/hopelink-wa-us--flex-v2.zip",
+ "feedId": "hopelink"
},
{
"type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/King_County_Metro-20221022T085912Z.gtfs.zip",
+ "source": "https://otp-performance.leonard.io/data/washington-state-new/kcm.gtfs.zip",
"feedId": "kcm"
},
{
"type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Kitsap_Transit-20221021T090015Z.gtfs.zip",
+ "source": "https://otp-performance.leonard.io/data/washington-state-new/kitsap.gtfs.zip",
"feedId": "kitsap"
},
{
"type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Muckleshoot_Indian_Tribe-20221012T214902Z.gtfs.zip",
- "feedId": "muckleshoot"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Pierce_County_Ferries-20221012T215215Z.gtfs.zip",
- "feedId": "pierce-ferries"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Pierce_County_Human_Services-20221021T085916Z.gtfs.zip",
- "feedId": "pierce-human-services"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Pierce_County_Human_Services_Flex-20221012T215555Z.gtfs.zip",
- "feedId": "pierce-flex"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Pierce_Transit-20221022T085914Z.gtfs.zip",
- "feedId": "pierce-transit"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Puget_Sound_Educational_Service_District-20221012T215720Z.gtfs.zip",
- "feedId": "pudget-sound-educational"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Seattle_Childrens_Hospital-20221019T085918Z.gtfs.zip",
- "feedId": "childrens-hospital"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Seattle_Monorail-20221019T085918Z.gtfs.zip",
+ "source": "https://otp-performance.leonard.io/data/washington-state-new/monorail.gtfs.zip",
"feedId": "monorail"
},
{
"type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Skagit_Transit-20221012T212605Z.gtfs.zip",
- "feedId": "skagit"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Snoqualmie_Valley_Transportation-20221012T221032Z.gtfs.zip",
- "feedId": "snoqualmie"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Snoqualmie_Valley_Transportation_Flex-20221012T221125Z.gtfs.zip",
- "feedId": "snoqualmie-flex"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Solid_Ground-20221012T221409Z.gtfs.zip",
- "feedId": "solid-ground"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Sound_Generations-20221012T221622Z.gtfs.zip",
- "feedId": "sound-generations"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Sound_Transit-20221022T085914Z.gtfs.zip",
- "feedId": "sound-transit"
- },
- {
- "type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/WA_State_Ferry-20221024T085913Z.gtfs.zip",
- "feedId": "state-ferry"
+ "source": "https://otp-performance.leonard.io/data/washington-state-new/pierce-transit.gtfs.zip",
+ "feedId": "pierce"
},
{
"type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/WSDOT_Public_Transportation-20221012T213935Z.gtfs.zip",
- "feedId": "wsdot"
+ "source": "https://otp-performance.leonard.io/data/washington-state-new/soundgenerations-wa-us-hyde--flex-v2.zip",
+ "feedId": "hyde"
},
{
"type": "gtfs",
- "source": "https://otp-performance.leonard.io/data/washington-state/Whatcom_Transportation_Authority-20221012T213144Z.gtfs.zip",
- "feedId": "whatcom"
+ "source": "https://otp-performance.leonard.io/data/washington-state-new/soundgenerations-wa-us-volunteer--flex-v2.zip",
+ "feedId": "volunteer"
}
],
"osm": [
{
- "source": "https://otp-performance.leonard.io/data/washington-state/nw-washington-state-2022-12-01.osm.pbf"
+ "source": "https://otp-performance.leonard.io/data/washington-state-new/north-east-washington-2024-17-10.osm.pbf"
}
]
}
\ No newline at end of file
diff --git a/test/performance/washington-state/generate_test_cases.py b/test/performance/washington-state/generate_test_cases.py
index 49c09db6e65..c3ac9d2c672 100755
--- a/test/performance/washington-state/generate_test_cases.py
+++ b/test/performance/washington-state/generate_test_cases.py
@@ -17,14 +17,6 @@
"coordinates": "47.3978844,-122.30898",
"name": "Des Moines"
},
- {
- "coordinates": "47.340218616,-122.2246170043",
- "name": "North Auburn"
- },
- {
- "coordinates": "47.31322426310727,-122.336540222167",
- "name": "Federal Way"
- },
{
"coordinates": "47.571024,-122.3877811",
"name": "West Seattle"
@@ -47,19 +39,19 @@
},
]
-failing_cases = [16, 64, 70, 82, 88, 120, 128, 130, 132, 134, 136, 138, 146, 152, 154, 158, 164, 172]
+failing_cases = []
rows = []
modes = [
{
- "mode": "TRANSIT|WALK",
- "category": "transit",
+ "mode": "FLEX_DIRECT|WALK",
+ "category": "flex-direct",
"window": ""
},
{
"mode": "FLEX_ACCESS|FLEX_EGRESS|TRANSIT",
- "category": "flex",
+ "category": "flex-and-transit",
"window": "6h"
}
]
diff --git a/test/performance/washington-state/speed-test-config.json b/test/performance/washington-state/speed-test-config.json
index 1b48a48e370..ad40304cc66 100644
--- a/test/performance/washington-state/speed-test-config.json
+++ b/test/performance/washington-state/speed-test-config.json
@@ -1,6 +1,6 @@
{
// Run all test-cases on the given date
- "testDate": "2022-11-01",
+ "testDate": "2024-10-17",
"feedId": "1",
// Default: "graph.obj"
"graph": "graph.obj",
diff --git a/test/performance/washington-state/travelSearch-expected-results.csv b/test/performance/washington-state/travelSearch-expected-results.csv
index c84d7613624..07291b54946 100644
--- a/test/performance/washington-state/travelSearch-expected-results.csv
+++ b/test/performance/washington-state/travelSearch-expected-results.csv
@@ -1,452 +1,267 @@
tcId,nTransfers,duration,cost,walkDistance,startTime,endTime,agencies,modes,routes,stops,details
-1,1,01:29:01,8356,2443,10:26:48,11:55:49,Metro Transit,BUS,160|165,kcm:57375|kcm:57430|kcm:57429|kcm:47570,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:45:16 10:49:28 ~ 104th Ave SE & SE 240th St(57430) ~ Walk 1m27s ~ SE 240th St & 104th Ave SE(57429) ~ BUS 165 10:59 11:44 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-1,0,01:32:34,8788,3546,10:23:15,11:55:49,Metro Transit,BUS,165,kcm:57448|kcm:47570,Walk 33m35s ~ SE 240th St & 116th Ave SE(57448) ~ BUS 165 10:56:50 11:44 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-1,1,01:31:01,8476,2443,10:57:48,12:28:49,Metro Transit,BUS,160|165,kcm:57375|kcm:57430|kcm:57429|kcm:47570,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 11:16:16 11:20:28 ~ 104th Ave SE & SE 240th St(57430) ~ Walk 1m27s ~ SE 240th St & 104th Ave SE(57429) ~ BUS 165 11:29 12:17 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-2,2,00:47:37,4659,0,10:01:27,10:49:04,Metro Transit|Sound Generations,BUS,Hyde Shuttle|165|Hyde Shuttle,sound-generations:area_558|kcm:61180|kcm:47570|sound-generations:area_551,sound-generations:area_558(area_558) ~ BUS null 10:01:27 10:25:37Walk 0s ~ Pacific Hwy S & S 240th St(61180) ~ BUS 165 10:27:37 10:44 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:46 10:49:04
-2,2,00:52:47,5067,137,10:02:55,10:55:42,Metro Transit|Sound Generations,BUS,Hyde Shuttle|A Line|Hyde Shuttle,sound-generations:area_558|kcm:60800|kcm:60810|sound-generations:area_551,sound-generations:area_558(area_558) ~ BUS null 10:02:55 10:25:12Walk 1m48s ~ Pacific Hwy S & Kent Des Moines Rd(60800) ~ BUS A Line 10:29 10:30:38 ~ Pacific Hwy S & S 224th St(60810) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:32:38 10:55:42
-2,1,00:54:22,5143,917,10:01:27,10:55:49,Metro Transit|Sound Generations,BUS,Hyde Shuttle|165,sound-generations:area_558|kcm:61180|kcm:47570,sound-generations:area_558(area_558) ~ BUS null 10:01:27 10:25:37Walk 0s ~ Pacific Hwy S & S 240th St(61180) ~ BUS 165 10:27:37 10:44 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-3,0,02:46:50,19487,12867,10:00:00,12:46:50,,,,,Walk 2h46m50s
-3,1,01:20:03,8318,3143,10:26:48,11:46:51,Metro Transit,BUS,160|165,kcm:57375|kcm:57430|kcm:57429|kcm:50480,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:45:16 10:49:28 ~ 104th Ave SE & SE 240th St(57430) ~ Walk 1m27s ~ SE 240th St & 104th Ave SE(57429) ~ BUS 165 10:59 11:25:38 ~ Pacific Hwy S & Kent Des Moines Rd(50480) ~ Walk 21m13s
-3,0,01:23:36,8749,4246,10:23:15,11:46:51,Metro Transit,BUS,165,kcm:57448|kcm:50480,Walk 33m35s ~ SE 240th St & 116th Ave SE(57448) ~ BUS 165 10:56:50 11:25:38 ~ Pacific Hwy S & Kent Des Moines Rd(50480) ~ Walk 21m13s
-4,2,00:35:06,3908,0,10:01:27,10:36:33,Metro Transit|Sound Generations,BUS,Hyde Shuttle|165|Hyde Shuttle,sound-generations:area_558|kcm:61180|kcm:47270|sound-generations:area_551,sound-generations:area_558(area_558) ~ BUS null 10:01:27 10:25:37Walk 0s ~ Pacific Hwy S & S 240th St(61180) ~ BUS 165 10:27:37 10:30:13 ~ S 240th St & 21st Ave S(47270) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:32:13 10:36:33
-4,2,00:36:03,4063,137,10:02:55,10:38:58,Metro Transit|Sound Generations,BUS,Hyde Shuttle|A Line|Hyde Shuttle,sound-generations:area_558|kcm:60800|kcm:60810|sound-generations:area_551,sound-generations:area_558(area_558) ~ BUS null 10:02:55 10:25:12Walk 1m48s ~ Pacific Hwy S & Kent Des Moines Rd(60800) ~ BUS A Line 10:29 10:30:38 ~ Pacific Hwy S & S 224th St(60810) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:32:38 10:38:58
-4,2,00:34:10,3998,202,10:10:18,10:44:28,Metro Transit|Sound Generations,BUS,Hyde Shuttle|156|Hyde Shuttle,sound-generations:area_558|kcm:48980|kcm:48990|sound-generations:area_551,sound-generations:area_558(area_558) ~ BUS null 10:10:18 10:33:40Walk 2m40s ~ 24th Ave S & S 230th St(48980) ~ BUS 156 10:38:20 10:39:02 ~ 24th Ave S & S 226th St(48990) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:41:02 10:44:28
-5,0,00:48:36,4732,1635,10:12:48,11:01:24,Metro Transit,BUS,160,kcm:57375|kcm:58255,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:31:16 10:58:37 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-5,0,00:49:19,4775,1635,10:26:48,11:16:07,Metro Transit,BUS,160,kcm:57375|kcm:58255,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:45:16 11:13:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-6,1,00:31:41,3260,212,10:00:01,10:31:42,Metro Transit|Sound Generations,BUS,Hyde Shuttle|160,sound-generations:area_558|kcm:58148|kcm:58255,sound-generations:area_558(area_558) ~ BUS null 10:00:01 10:18Walk 0s ~ Central Ave S & E Meeker St(58148) ~ BUS 160 10:20 10:28:55 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-6,1,00:31:41,3260,212,10:15:01,10:46:42,Metro Transit|Sound Generations,BUS,Hyde Shuttle|160,sound-generations:area_558|kcm:58148|kcm:58255,sound-generations:area_558(area_558) ~ BUS null 10:15:01 10:33Walk 0s ~ Central Ave S & E Meeker St(58148) ~ BUS 160 10:35 10:43:55 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-6,1,00:32:14,3293,212,10:29:10,11:01:24,Metro Transit|Sound Generations,BUS,Hyde Shuttle|160,sound-generations:area_558|kcm:58180|kcm:58255,sound-generations:area_558(area_558) ~ BUS null 10:29:10 10:49:40Walk 0s ~ Central Ave S & S 259th St(58180) ~ BUS 160 10:51:40 10:58:37 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-7,2,01:58:18,11174,3077,10:12:48,12:11:06,Metro Transit,BUS,160|183|903,kcm:57375|kcm:62213|kcm:57459|kcm:80431|kcm:80439|kcm:60605,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:31:16 10:46:43 ~ E Smith St & State Ave N(62213) ~ Walk 2m50s ~ Kent Sounder Station - Bay 9(57459) ~ BUS 183 11:00 11:37 ~ Federal Way TC - Bay 1(80431) ~ Walk 33s ~ Federal Way TC - Bay 9(80439) ~ BUS 903 11:45 11:52:43 ~ 1st Way S & S 333rd St(60605) ~ Walk 18m23s
-7,1,02:02:04,11857,4532,10:12:48,12:14:52,Metro Transit,BUS,160|183,kcm:57375|kcm:62213|kcm:57459|kcm:80431,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:31:16 10:46:43 ~ E Smith St & State Ave N(62213) ~ Walk 2m50s ~ Kent Sounder Station - Bay 9(57459) ~ BUS 183 11:00 11:37 ~ Federal Way TC - Bay 1(80431) ~ Walk 37m52s
-7,1,01:49:15,9066,1761,10:26:48,12:16:03,Metro Transit,BUS,160|181,kcm:57375|kcm:57784|kcm:57775|kcm:83784,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:45:16 11:26 ~ 2nd St SW & A St SW(57784) ~ Walk 1m12s ~ Auburn Transit Center - Bay 3(57775) ~ BUS 181 11:44 12:12:47 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-8,2,00:48:03,4857,230,10:05:03,10:53:06,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|A Line|Road to Independence,sound-generations:area_558|kcm:61220|kcm:61280|pudget-sound-educational:area_622,sound-generations:area_558(area_558) ~ BUS null 10:05:03 10:30:17Walk 0s ~ Pacific Hwy S & S 260th St(61220) ~ BUS A Line 10:32:17 10:39:16 ~ Pacific Hwy S & S Dash Point Rd(61280) ~ Walk 8s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:41:24 10:50:20Walk 2m46s
-8,2,00:48:07,4855,220,10:05:03,10:53:10,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|A Line|Road to Independence,sound-generations:area_558|kcm:61220|kcm:61300|pudget-sound-educational:area_622,sound-generations:area_558(area_558) ~ BUS null 10:05:03 10:30:17Walk 0s ~ Pacific Hwy S & S 260th St(61220) ~ BUS A Line 10:32:17 10:41:16 ~ Pacific Hwy S & S 308th St(61300) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:43:16 10:50:24Walk 2m46s
-8,2,00:48:03,4857,230,10:15:03,11:03:06,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|A Line|Road to Independence,sound-generations:area_558|kcm:61220|kcm:61280|pudget-sound-educational:area_622,sound-generations:area_558(area_558) ~ BUS null 10:15:03 10:40:17Walk 0s ~ Pacific Hwy S & S 260th St(61220) ~ BUS A Line 10:42:17 10:49:16 ~ Pacific Hwy S & S Dash Point Rd(61280) ~ Walk 8s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:51:24 11:00:20Walk 2m46s
-9,2,01:58:54,10301,1850,10:03:06,12:02:00,Metro Transit,BUS,160|101|50,kcm:57185|kcm:46440|kcm:79520|kcm:99252|kcm:31871,Walk 18m31s ~ 108th Ave SE & SE 220th Pl(57185) ~ BUS 160 10:21:37 10:49:04 ~ S 3rd St & Rainier Ave S(46440) ~ Walk 2m29s ~ SW Sunset Blvd & Rainier Ave S(79520) ~ BUS 101 10:59 11:16 ~ SODO Busway & S Spokane St(99252) ~ BUS 50 11:32:28 11:58:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-9,3,01:59:27,11425,2468,10:12:48,12:12:15,Metro Transit|Sound Transit,BUS|RAIL,160|S Line|C Line|128,kcm:57375|kcm:57451|sound-transit:S_KE_NB|sound-transit:S_KS|kcm:1562|kcm:20041|kcm:32011|kcm:31871,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:31:16 10:48 ~ Kent Sounder Station - Bay 1(57451) ~ Walk 2m9s ~ Kent Station (Northbound)(S_KE_NB) ~ RAIL S Line 10:55 11:22 ~ King Street Station(S_KS) ~ Walk 9m13s ~ Alaskan Way S & S Jackson St(1562) ~ BUS C Line 11:38:40 11:58 ~ SW Alaska St & California Ave SW - Bay 3(20041) ~ Walk 42s ~ SW Alaska St & 44th Ave SW - Bay 4(32011) ~ BUS 128 12:05 12:08:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-9,2,02:01:05,11597,3386,10:12:48,12:13:53,Metro Transit|Sound Transit,BUS|RAIL,160|S Line|C Line,kcm:57375|kcm:57451|sound-transit:S_KE_NB|sound-transit:S_KS|kcm:1562|kcm:20041,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:31:16 10:48 ~ Kent Sounder Station - Bay 1(57451) ~ Walk 2m9s ~ Kent Station (Northbound)(S_KE_NB) ~ RAIL S Line 10:55 11:22 ~ King Street Station(S_KS) ~ Walk 9m13s ~ Alaskan Way S & S Jackson St(1562) ~ BUS C Line 11:38:40 11:58 ~ SW Alaska St & California Ave SW - Bay 3(20041) ~ Walk 15m53s
-10,3,01:16:01,7089,176,10:02:33,11:18:34,Metro Transit|Sound Generations,BUS,Hyde Shuttle|160|101|Hyde Shuttle,sound-generations:area_558|kcm:57200|kcm:46440|kcm:79520|kcm:99252|sound-generations:area_560,sound-generations:area_558(area_558) ~ BUS null 10:02:33 10:06:59Walk 0s ~ 108th Ave SE & SE 212th St(57200) ~ BUS 160 10:08:59 10:35:04 ~ S 3rd St & Rainier Ave S(46440) ~ Walk 2m29s ~ SW Sunset Blvd & Rainier Ave S(79520) ~ BUS 101 10:44 11:01 ~ SODO Busway & S Spokane St(99252) ~ Walk 0s ~ sound-generations:area_560(area_560) ~ BUS null 11:03 11:18:34
-10,2,01:09:25,5967,0,10:10:09,11:19:34,Metro Transit|Sound Generations,BUS,Hyde Shuttle|150|Hyde Shuttle,sound-generations:area_558|kcm:58087|kcm:99252|sound-generations:area_560,sound-generations:area_558(area_558) ~ BUS null 10:10:09 10:30:57Walk 0s ~ West Valley Hwy S & S 190th St(58087) ~ BUS 150 10:32:57 11:02 ~ SODO Busway & S Spokane St(99252) ~ Walk 0s ~ sound-generations:area_560(area_560) ~ BUS null 11:04 11:19:34
-10,3,01:16:55,7143,176,10:16:39,11:33:34,Metro Transit|Sound Generations,BUS,Hyde Shuttle|160|101|Hyde Shuttle,sound-generations:area_558|kcm:57200|kcm:46440|kcm:79520|kcm:99252|sound-generations:area_560,sound-generations:area_558(area_558) ~ BUS null 10:16:39 10:21:05Walk 0s ~ 108th Ave SE & SE 212th St(57200) ~ BUS 160 10:23:05 10:49:04 ~ S 3rd St & Rainier Ave S(46440) ~ Walk 2m29s ~ SW Sunset Blvd & Rainier Ave S(79520) ~ BUS 101 10:59 11:16 ~ SODO Busway & S Spokane St(99252) ~ Walk 0s ~ sound-generations:area_560(area_560) ~ BUS null 11:18 11:33:34
-11,1,01:52:12,10210,3103,10:12:48,12:05:00,Metro Transit|Sound Transit,BUS,160|578,kcm:57375|kcm:57784|pierce-transit:18728|pierce-transit:10401,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:31:16 11:11 ~ 2nd St SW & A St SW(57784) ~ Walk 1m29s ~ Auburn Station - Bay 4(18728) ~ BUS 578 11:17 11:44 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-11,1,01:56:12,10450,3103,10:41:48,12:38:00,Metro Transit|Sound Transit,BUS,160|578,kcm:57375|kcm:57784|pierce-transit:18728|pierce-transit:10401,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 11:00:16 11:42 ~ 2nd St SW & A St SW(57784) ~ Walk 1m29s ~ Auburn Station - Bay 4(18728) ~ BUS 578 11:49 12:17 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-12,2,00:53:59,5041,0,10:00:01,10:54:00,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|160|Road to Independence,sound-generations:area_558|kcm:58148|kcm:58230|pudget-sound-educational:area_622,sound-generations:area_558(area_558) ~ BUS null 10:00:01 10:18Walk 0s ~ Central Ave S & E Meeker St(58148) ~ BUS 160 10:20 10:26:26 ~ Auburn Way N & 85th Ave S(58230) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:28:26 10:54
-12,2,00:49:15,4775,25,10:11:57,11:01:12,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|160|Road to Independence,sound-generations:area_558|kcm:57375|kcm:57407|pudget-sound-educational:area_622,sound-generations:area_558(area_558) ~ BUS null 10:11:57 10:15:16Walk 0s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:17:16 10:23:01 ~ 104th Ave SE & SE 248th St(57407) ~ Walk 21s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:25:22 11:01:12
-12,2,00:49:30,4772,0,10:11:57,11:01:27,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|160|Road to Independence,sound-generations:area_558|kcm:57375|kcm:57405|pudget-sound-educational:area_622,sound-generations:area_558(area_558) ~ BUS null 10:11:57 10:15:16Walk 0s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:17:16 10:22:14 ~ 104th Ave SE & SE 244th St(57405) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:24:14 11:01:27
-13,3,03:10:03,15594,2462,11:02:37,14:12:40,Metro Transit|Sound Transit,BUS,160|101|554|208,kcm:57185|kcm:46440|kcm:79520|kcm:620|kcm:1480|kcm:64590|kcm:64593|kcm:64399,Walk 18m31s ~ 108th Ave SE & SE 220th Pl(57185) ~ BUS 160 11:21:08 11:49:04 ~ S 3rd St & Rainier Ave S(46440) ~ Walk 2m29s ~ SW Sunset Blvd & Rainier Ave S(79520) ~ BUS 101 11:59 12:24 ~ 4th Ave S & S Jackson St(620) ~ Walk 5m26s ~ S Jackson St & Maynard Ave S(1480) ~ BUS 554 12:46:10 13:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 13:30 14:06:59 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-14,4,03:47:39,17037,509,10:10:09,13:57:48,Metro Transit|Sound Generations|Sound Transit,BUS,Hyde Shuttle|150|545|224|629,sound-generations:area_558|kcm:58087|kcm:620|kcm:72488|kcm:68803|kcm:64397,sound-generations:area_558(area_558) ~ BUS null 10:10:09 10:30:57Walk 0s ~ West Valley Hwy S & S 190th St(58087) ~ BUS 150 10:32:57 11:11 ~ 4th Ave S & S Jackson St(620) ~ BUS 545 11:21 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-14,3,02:47:31,13055,858,11:25:09,14:12:40,Metro Transit|Sound Generations|Sound Transit,BUS,Hyde Shuttle|150|554|208,sound-generations:area_558|kcm:58087|kcm:620|kcm:1480|kcm:64590|kcm:64593|kcm:64399,sound-generations:area_558(area_558) ~ BUS null 11:25:09 11:45:57Walk 0s ~ West Valley Hwy S & S 190th St(58087) ~ BUS 150 11:47:57 12:27 ~ 4th Ave S & S Jackson St(620) ~ Walk 5m26s ~ S Jackson St & Maynard Ave S(1480) ~ BUS 554 12:46:10 13:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 13:30 14:06:59 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-15,2,01:55:50,10661,2593,10:12:48,12:08:38,Metro Transit|Sound Transit,BUS|RAIL,160|S Line|3,kcm:57375|kcm:57451|sound-transit:S_KE_NB|sound-transit:S_KS|kcm:1540|kcm:41350,Walk 18m28s ~ 108th Ave SE & SE 220th Pl(57375) ~ BUS 160 10:31:16 10:48 ~ Kent Sounder Station - Bay 1(57451) ~ Walk 2m9s ~ Kent Station (Northbound)(S_KE_NB) ~ RAIL S Line 10:55 11:22 ~ King Street Station(S_KS) ~ Walk 11m5s ~ James St & 5th Ave(1540) ~ BUS 3 11:36 12:05:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-15,2,02:08:32,11023,2052,10:15:06,12:23:38,Metro Transit,BUS,160|101|3,kcm:57185|kcm:46440|kcm:79520|kcm:691|kcm:575|kcm:41350,Walk 18m31s ~ 108th Ave SE & SE 220th Pl(57185) ~ BUS 160 10:33:37 11:01:04 ~ S 3rd St & Rainier Ave S(46440) ~ Walk 2m29s ~ SW Sunset Blvd & Rainier Ave S(79520) ~ BUS 101 11:14 11:45 ~ 4th Ave & Union St(691) ~ Walk 3m5s ~ 3rd Ave & Pike St(575) ~ BUS 3 11:58 12:20:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-15,2,02:04:30,11977,3653,10:32:37,12:37:07,Metro Transit,BUS,160|101|E Line,kcm:57185|kcm:46440|kcm:79520|kcm:691|kcm:575|kcm:6320,Walk 18m31s ~ 108th Ave SE & SE 220th Pl(57185) ~ BUS 160 10:51:08 11:19:04 ~ S 3rd St & Rainier Ave S(46440) ~ Walk 2m29s ~ SW Sunset Blvd & Rainier Ave S(79520) ~ BUS 101 11:29 11:59 ~ 4th Ave & Union St(691) ~ Walk 3m5s ~ 3rd Ave & Pike St(575) ~ BUS E Line 12:05 12:12:02 ~ Aurora Ave N & Lynn St(6320) ~ Walk 25m5s
-17,2,01:28:33,8382,1712,10:03:06,11:31:39,Metro Transit|Sound Transit,BUS|TRAM,160|101|1-Line,kcm:57185|kcm:46440|kcm:79520|kcm:99254|sound-transit:99111|sound-transit:99121,Walk 18m31s ~ 108th Ave SE & SE 220th Pl(57185) ~ BUS 160 10:21:37 10:49:04 ~ S 3rd St & Rainier Ave S(46440) ~ Walk 2m29s ~ SW Sunset Blvd & Rainier Ave S(79520) ~ BUS 101 10:59 11:18:40 ~ SODO Busway & S Lander St(99254) ~ Walk 49s ~ SODO Station(99111) ~ TRAM 1-Line 11:28 11:31 ~ Beacon Hill Station(99121) ~ Walk 39s
-17,2,01:26:33,8262,1712,10:15:06,11:41:39,Metro Transit|Sound Transit,BUS|TRAM,160|101|1-Line,kcm:57185|kcm:46440|kcm:79520|kcm:99254|sound-transit:99111|sound-transit:99121,Walk 18m31s ~ 108th Ave SE & SE 220th Pl(57185) ~ BUS 160 10:33:37 11:01:04 ~ S 3rd St & Rainier Ave S(46440) ~ Walk 2m29s ~ SW Sunset Blvd & Rainier Ave S(79520) ~ BUS 101 11:14 11:33:40 ~ SODO Busway & S Lander St(99254) ~ Walk 49s ~ SODO Station(99111) ~ TRAM 1-Line 11:38 11:41 ~ Beacon Hill Station(99121) ~ Walk 39s
-17,1,01:40:47,9688,3338,10:03:06,11:43:53,Metro Transit,BUS,160|101,kcm:57185|kcm:46440|kcm:79520|kcm:99264,Walk 18m31s ~ 108th Ave SE & SE 220th Pl(57185) ~ BUS 160 10:21:37 10:49:04 ~ S 3rd St & Rainier Ave S(46440) ~ Walk 2m29s ~ SW Sunset Blvd & Rainier Ave S(79520) ~ BUS 101 10:59 11:20:45 ~ SODO Busway & S Holgate St(99264) ~ Walk 23m8s
-18,2,01:01:30,5571,108,10:10:09,11:11:39,Metro Transit|Sound Generations|Sound Transit,BUS|TRAM,Hyde Shuttle|150|1-Line,sound-generations:area_558|kcm:58087|kcm:99254|sound-transit:99111|sound-transit:99121,sound-generations:area_558(area_558) ~ BUS null 10:10:09 10:30:57Walk 0s ~ West Valley Hwy S & S 190th St(58087) ~ BUS 150 10:32:57 11:04:40 ~ SODO Busway & S Lander St(99254) ~ Walk 49s ~ SODO Station(99111) ~ TRAM 1-Line 11:08 11:11 ~ Beacon Hill Station(99121) ~ Walk 39s
-18,2,01:13:34,6592,523,10:12:55,11:26:29,Metro Transit|Sound Generations|Sound Transit,BUS|TRAM,Hyde Shuttle|A Line|1-Line,sound-generations:area_558|kcm:60800|kcm:60850|sound-transit:99914|sound-transit:99240,sound-generations:area_558(area_558) ~ BUS null 10:12:55 10:35:12Walk 1m48s ~ Pacific Hwy S & Kent Des Moines Rd(60800) ~ BUS A Line 10:39 10:45:46 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:56 11:25 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-18,1,01:19:44,7238,1734,10:10:09,11:29:53,Metro Transit|Sound Generations,BUS,Hyde Shuttle|150,sound-generations:area_558|kcm:58087|kcm:99264,sound-generations:area_558(area_558) ~ BUS null 10:10:09 10:30:57Walk 0s ~ West Valley Hwy S & S 190th St(58087) ~ BUS 150 10:32:57 11:06:45 ~ SODO Busway & S Holgate St(99264) ~ Walk 23m8s
-19,2,01:45:45,10022,2530,10:04:53,11:50:38,Metro Transit,BUS,165|F Line|160,kcm:47580|kcm:53720|kcm:53975|kcm:59860|kcm:59902|kcm:57375,Walk 12m10s ~ 1st Ave S & S 176th St(47580) ~ BUS 165 10:17:03 10:24:32 ~ 4th Ave SW & SW 156th St(53720) ~ Walk 9s ~ 4th Ave SW & SW 156th St(53975) ~ BUS F Line 10:26:42 11:02 ~ Rainier Ave S & S 7th St(59860) ~ Walk 2m14s ~ S 7th St & Rainier Ave S(59902) ~ BUS 160 11:09:47 11:32:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
-19,1,01:29:18,8290,2335,10:25:15,11:54:33,Metro Transit,BUS,165|160,kcm:48620|kcm:57127|kcm:57130|kcm:57185,Walk 10m11s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:35:26 11:21 ~ SE 240th St & 104th Ave SE(57127) ~ Walk 1m45s ~ 104th Ave SE & SE 240th St(57130) ~ BUS 160 11:31:23 11:36:08 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
-19,0,01:31:19,8631,3439,10:25:15,11:56:34,Metro Transit,BUS,165,kcm:48620|kcm:57141,Walk 10m11s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:35:26 11:22:44 ~ SE 240th St & 116th Ave SE(57141) ~ Walk 33m50s
-20,2,00:43:59,4441,0,10:02:15,10:46:14,Metro Transit|Sound Generations,BUS,Hyde Shuttle|165|Hyde Shuttle,sound-generations:area_551|kcm:48620|kcm:48950|sound-generations:area_558,sound-generations:area_551(area_551) ~ BUS null 10:02:15 10:04:26Walk 0s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:06:26 10:21:30 ~ Pacific Hwy S & S 240th St(48950) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:23:30 10:46:14
-20,2,00:49:19,4890,179,10:05:35,10:54:54,Metro Transit|Sound Generations,BUS,Hyde Shuttle|156|Hyde Shuttle,sound-generations:area_551|kcm:50310|kcm:50461|sound-generations:area_558,sound-generations:area_551(area_551) ~ BUS null 10:05:35 10:14:48Walk 0s ~ 8th Ave S & S 198th St(50310) ~ BUS 156 10:16:48 10:27:31 ~ Kent Des Moines Rd & 24th Ave S(50461) ~ Walk 2m20s ~ sound-generations:area_558(area_558) ~ BUS null 10:31:51 10:54:54
-20,2,00:55:24,5177,71,10:11:43,11:07:07,Metro Transit|Sound Generations,BUS,Hyde Shuttle|161|Hyde Shuttle,sound-generations:area_551|kcm:50145|kcm:84352|sound-generations:area_558,sound-generations:area_551(area_551) ~ BUS null 10:11:43 10:21:51Walk 1m3s ~ S 156th Way & Des Moines Memorial Dr S(50145) ~ BUS 161 10:24:54 10:52:36 ~ 84th Ave S & S 212th St(84352) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:54:36 11:07:07
-21,0,01:36:56,11279,7450,10:00:00,11:36:56,,,,,Walk 1h36m56s
-21,0,00:39:19,4773,2458,10:25:15,11:04:34,Metro Transit,BUS,165,kcm:48620|kcm:48810,Walk 10m11s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:35:26 10:43 ~ Marine View Dr S & S 223rd St(48810) ~ Walk 21m34s
-22,2,00:19:11,2953,0,10:02:15,10:21:26,Metro Transit|Sound Generations,BUS,Hyde Shuttle|165|Hyde Shuttle,sound-generations:area_551|kcm:48620|kcm:48800|sound-generations:area_551,sound-generations:area_551(area_551) ~ BUS null 10:02:15 10:04:26Walk 0s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:06:26 10:13:32 ~ Marine View Dr S & S 220th St(48800) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:15:32 10:21:26
-22,2,00:25:34,3336,0,10:05:35,10:31:09,Metro Transit|Sound Generations,BUS,Hyde Shuttle|156|Hyde Shuttle,sound-generations:area_551|kcm:50310|kcm:50450|sound-generations:area_551,sound-generations:area_551(area_551) ~ BUS null 10:05:35 10:14:48Walk 0s ~ 8th Ave S & S 198th St(50310) ~ BUS 156 10:16:48 10:26:31 ~ 24th Ave S & S 226th St(50450) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:28:31 10:31:09
-22,1,00:29:41,3480,672,10:05:35,10:35:16,Metro Transit|Sound Generations,BUS,Hyde Shuttle|156,sound-generations:area_551|kcm:50310|kcm:50450,sound-generations:area_551(area_551) ~ BUS null 10:05:35 10:14:48Walk 0s ~ 8th Ave S & S 198th St(50310) ~ BUS 156 10:16:48 10:26:31 ~ 24th Ave S & S 226th St(50450) ~ Walk 8m45s
-23,1,01:21:52,6870,1024,10:25:15,11:47:07,Metro Transit,BUS,165|160,kcm:48620|kcm:57452|kcm:57451|kcm:58255,Walk 10m11s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:35:26 11:15 ~ Kent Sounder Station - Bay 2(57452) ~ Walk 29s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 11:33 11:44:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-23,1,01:07:52,6030,1024,10:55:15,12:03:07,Metro Transit,BUS,165|160,kcm:48620|kcm:57452|kcm:57451|kcm:58255,Walk 10m11s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 11:05:26 11:45 ~ Kent Sounder Station - Bay 2(57452) ~ Walk 29s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 11:49 12:00:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-24,2,00:54:51,5093,0,10:02:15,10:57:06,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|165|Road to Independence,sound-generations:area_551|kcm:48620|kcm:50717|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:02:15 10:04:26Walk 0s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:06:26 10:37:05 ~ 64th Ave S & W James St(50717) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:39:05 10:57:06
-24,2,01:01:25,5530,62,10:04:40,11:06:05,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|A Line|Road to Independence,sound-generations:area_551|kcm:61230|kcm:61280|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:04:40 10:31:03Walk 50s ~ Pacific Hwy S & S 268th St(61230) ~ BUS A Line 10:33:53 10:39:16 ~ Pacific Hwy S & S Dash Point Rd(61280) ~ Walk 8s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:41:24 11:06:05
-24,2,01:00:33,5555,168,10:05:32,11:06:05,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|A Line|Road to Independence,sound-generations:area_551|kcm:61240|kcm:61280|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:05:32 10:30:27Walk 2m12s ~ Pacific Hwy S & S 272nd St(61240) ~ BUS A Line 10:34:39 10:39:16 ~ Pacific Hwy S & S Dash Point Rd(61280) ~ Walk 8s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:41:24 11:06:05
-25,2,01:16:39,7336,1267,10:25:15,11:41:54,Metro Transit,BUS,165|A Line|187,kcm:48620|kcm:48950|kcm:61180|kcm:80431|kcm:80433|kcm:83784,Walk 10m11s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:35:26 10:50:30 ~ Pacific Hwy S & S 240th St(48950) ~ Walk 2m5s ~ Pacific Hwy S & S 240th St(61180) ~ BUS A Line 10:58:04 11:20 ~ Federal Way TC - Bay 1(80431) ~ Walk 1m4s ~ Federal Way TC - Bay 3(80433) ~ BUS 187 11:32 11:38:38 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-25,1,01:20:02,8403,3270,10:25:15,11:45:17,Metro Transit,BUS,165|A Line,kcm:48620|kcm:48950|kcm:61180|kcm:61313,Walk 10m11s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:35:26 10:50:30 ~ Pacific Hwy S & S 240th St(48950) ~ Walk 2m5s ~ Pacific Hwy S & S 240th St(61180) ~ BUS A Line 10:58:04 11:14:51 ~ S 316th St & Pacific Hwy S(61313) ~ Walk 30m26s
-25,2,01:20:48,7585,1267,10:55:15,12:16:03,Metro Transit,BUS,165|A Line|181,kcm:48620|kcm:48950|kcm:61180|kcm:80431|kcm:80433|kcm:83784,Walk 10m11s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 11:05:26 11:20:30 ~ Pacific Hwy S & S 240th St(48950) ~ Walk 2m5s ~ Pacific Hwy S & S 240th St(61180) ~ BUS A Line 11:29:08 11:52 ~ Federal Way TC - Bay 1(80431) ~ Walk 1m4s ~ Federal Way TC - Bay 3(80433) ~ BUS 181 12:05 12:12:47 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-26,2,00:48:26,4916,282,10:04:40,10:53:06,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|A Line|Road to Independence,sound-generations:area_551|kcm:61230|kcm:61280|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:04:40 10:31:03Walk 50s ~ Pacific Hwy S & S 268th St(61230) ~ BUS A Line 10:33:53 10:39:16 ~ Pacific Hwy S & S Dash Point Rd(61280) ~ Walk 8s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:41:24 10:50:20Walk 2m46s
-26,2,00:47:34,4942,388,10:05:32,10:53:06,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|A Line|Road to Independence,sound-generations:area_551|kcm:61240|kcm:61280|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:05:32 10:30:27Walk 2m12s ~ Pacific Hwy S & S 272nd St(61240) ~ BUS A Line 10:34:39 10:39:16 ~ Pacific Hwy S & S Dash Point Rd(61280) ~ Walk 8s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:41:24 10:50:20Walk 2m46s
-26,2,00:48:30,4913,272,10:04:40,10:53:10,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|A Line|Road to Independence,sound-generations:area_551|kcm:61230|kcm:61300|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:04:40 10:31:03Walk 50s ~ Pacific Hwy S & S 268th St(61230) ~ BUS A Line 10:33:53 10:41:16 ~ Pacific Hwy S & S 308th St(61300) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:43:16 10:50:24Walk 2m46s
-27,2,01:26:22,7887,1227,10:04:53,11:31:15,Metro Transit,BUS,165|131|128,kcm:47580|kcm:52301|kcm:52304|kcm:53870|kcm:31871,Walk 12m10s ~ 1st Ave S & S 176th St(47580) ~ BUS 165 10:17:03 10:27 ~ Burien Transit Center - Bay 1(52301) ~ Walk 37s ~ Burien Transit Center - Bay 4(52304) ~ BUS 131 10:30 10:39:43 ~ 4th Ave SW & SW 112th St(53870) ~ BUS 128 10:50:26 11:27:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-27,1,01:39:26,9604,3370,10:04:53,11:44:19,Metro Transit,BUS,165|120,kcm:47580|kcm:52301|kcm:52303|kcm:21620,Walk 12m10s ~ 1st Ave S & S 176th St(47580) ~ BUS 165 10:17:03 10:27 ~ Burien Transit Center - Bay 1(52301) ~ Walk 1m6s ~ Burien Transit Center - Bay 3(52303) ~ BUS 120 10:36 11:12 ~ Delridge Way SW & SW Andover St(21620) ~ Walk 32m19s
-27,2,01:45:32,10721,3516,10:05:43,11:51:15,Metro Transit,BUS,F Line|120|128,kcm:47646|kcm:52304|kcm:52303|kcm:21450|kcm:21440|kcm:31871,Walk 39m22s ~ SW 156th St & 2nd Ave SW(47646) ~ BUS F Line 10:45:05 10:48 ~ Burien Transit Center - Bay 4(52304) ~ Walk 37s ~ Burien Transit Center - Bay 3(52303) ~ BUS 120 10:56 11:24 ~ Delridge Way SW & SW Myrtle St(21450) ~ Walk 2m9s ~ SW Orchard St & Delridge Way SW(21440) ~ BUS 128 11:31 11:47:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-28,2,00:49:08,4750,0,10:00:22,10:49:30,Metro Transit|Sound Generations,BUS,Hyde Shuttle|60|Hyde Shuttle,sound-generations:area_551|kcm:21170|kcm:22184|sound-generations:area_560,sound-generations:area_551(area_551) ~ BUS null 10:00:22 10:18:46Walk 0s ~ SW Roxbury St & 5th Pl SW(21170) ~ BUS 60 10:20:46 10:26:05 ~ Delridge Way SW & SW Henderson St(22184) ~ Walk 0s ~ sound-generations:area_560(area_560) ~ BUS null 10:28:05 10:49:30
-28,2,00:51:23,4927,57,10:04:58,10:56:21,Metro Transit|Sound Generations,BUS,Hyde Shuttle|21|Hyde Shuttle,sound-generations:area_551|kcm:22261|kcm:22750|sound-generations:area_560,sound-generations:area_551(area_551) ~ BUS null 10:04:58 10:32:01Walk 48s ~ SW Roxbury St & 30th Ave SW(22261) ~ BUS 21 10:34:49 10:44:32 ~ 35th Ave SW & SW Findlay St(22750) ~ Walk 0s ~ sound-generations:area_560(area_560) ~ BUS null 10:46:32 10:56:21
-28,2,00:51:26,4894,9,10:08:36,11:00:02,Metro Transit|Sound Generations,BUS,Hyde Shuttle|120|Hyde Shuttle,sound-generations:area_551|kcm:39431|kcm:31731|sound-generations:area_560,sound-generations:area_551(area_551) ~ BUS null 10:08:36 10:30Walk 0s ~ 15th Ave SW & SW Roxbury St - Bay 2(39431) ~ BUS 120 10:32 10:37 ~ 26th Ave SW & SW Barton St - Bay 2(31731) ~ Walk 7s ~ sound-generations:area_560(area_560) ~ BUS null 10:39:07 11:00:02
-29,2,02:12:45,11617,2538,10:25:15,12:38:00,Metro Transit|Sound Transit,BUS,165|A Line|578,kcm:48620|kcm:48950|kcm:61180|kcm:80431|pierce-transit:4136|pierce-transit:10401,Walk 10m11s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:35:26 10:50:30 ~ Pacific Hwy S & S 240th St(48950) ~ Walk 2m5s ~ Pacific Hwy S & S 240th St(61180) ~ BUS A Line 10:58:04 11:20 ~ Federal Way TC - Bay 1(80431) ~ Walk 27s ~ Federal Way TC - Bay 2(4136) ~ BUS 578 11:32 12:17 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-29,2,02:03:54,10186,1290,10:55:15,12:59:09,Metro Transit|Pierce Transit|Sound Transit,BUS,165|574|402,kcm:48620|kcm:53508|pierce-transit:3818|pierce-transit:29410|pierce-transit:1332,Walk 10m11s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 11:05:26 11:24:33 ~ Kent Des Moines Rd & I-5 Ramp(53508) ~ Walk 41s ~ I-5 & Kent - Des Moines Fwy Station(3818) ~ BUS 574 11:49 12:00 ~ Federal Way TC - Bay 5(29410) ~ BUS 402 12:11 12:53 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m9s
-30,2,01:04:14,5656,0,10:02:15,11:06:29,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|165|Road to Independence,sound-generations:area_551|kcm:48620|kcm:50717|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:02:15 10:04:26Walk 0s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:06:26 10:37:05 ~ 64th Ave S & W James St(50717) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:39:05 11:06:29
-30,2,01:10:26,6064,52,10:04:40,11:15:06,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|A Line|Road to Independence,sound-generations:area_551|kcm:61230|kcm:61310|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:04:40 10:31:03Walk 50s ~ Pacific Hwy S & S 268th St(61230) ~ BUS A Line 10:33:53 10:42 ~ Pacific Hwy S & S 312th St(61310) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:44 11:15:06
-30,2,01:09:34,6090,158,10:05:32,11:15:06,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|A Line|Road to Independence,sound-generations:area_551|kcm:61240|kcm:61310|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:05:32 10:30:27Walk 2m12s ~ Pacific Hwy S & S 272nd St(61240) ~ BUS A Line 10:34:39 10:42 ~ Pacific Hwy S & S 312th St(61310) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:44 11:15:06
-31,4,03:52:55,18169,1615,10:04:53,13:57:48,Metro Transit|Sound Transit,BUS,165|131|545|224|629,kcm:47580|kcm:52301|kcm:52304|kcm:619|kcm:620|kcm:72488|kcm:68803|kcm:64397,Walk 12m10s ~ 1st Ave S & S 176th St(47580) ~ BUS 165 10:17:03 10:27 ~ Burien Transit Center - Bay 1(52301) ~ Walk 37s ~ Burien Transit Center - Bay 4(52304) ~ BUS 131 10:30 11:16 ~ 4th Ave S & S Jackson St(619) ~ Walk 1m46s ~ 4th Ave S & S Jackson St(620) ~ BUS 545 11:21 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-31,3,03:09:47,15081,1777,11:02:53,14:12:40,Metro Transit|Sound Transit,BUS,165|131|554|208,kcm:47580|kcm:52301|kcm:52304|kcm:619|kcm:375|kcm:64590|kcm:64593|kcm:64399,Walk 12m10s ~ 1st Ave S & S 176th St(47580) ~ BUS 165 11:15:03 11:25 ~ Burien Transit Center - Bay 1(52301) ~ Walk 37s ~ Burien Transit Center - Bay 4(52304) ~ BUS 131 11:28 12:16 ~ 4th Ave S & S Jackson St(619) ~ Walk 4m21s ~ 2nd Ave Ext S & Yesler Way(375) ~ BUS 554 12:24 12:52 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 13:30 14:06:59 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-31,3,03:09:13,17227,4645,11:03:27,14:12:40,Metro Transit|Sound Transit,BUS|TRAM,F Line|1-Line|554|208,kcm:50130|kcm:60922|sound-transit:99905|sound-transit:99260|kcm:1480|kcm:64590|kcm:64593|kcm:64399,Walk 39m32s ~ S 156th St & 1st Ave S(50130) ~ BUS F Line 11:42:59 11:52 ~ Tukwila International Blvd Station - Bay 2(60922) ~ Walk 3m51s ~ Tukwila Int'l Blvd Station(99905) ~ TRAM 1-Line 12:03 12:30 ~ Stadium Station(99260) ~ Walk 12m41s ~ S Jackson St & Maynard Ave S(1480) ~ BUS 554 12:46:10 13:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 13:30 14:06:59 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-32,5,03:33:58,16543,145,10:22:13,13:56:11,Metro Transit|Snoqualmie Valley Transportation|Sound Generations|Sound Transit,BUS,Hyde Shuttle|131|545|224|629|Dial-A-Ride,sound-generations:area_551|kcm:49588|kcm:619|kcm:620|kcm:72488|kcm:68803|kcm:64366|snoqualmie-flex:area_486,sound-generations:area_551(area_551) ~ BUS null 10:22:13 10:41:46Walk 14s ~ 8th Ave SW & SW 99th St(49588) ~ BUS 131 10:44 11:16 ~ 4th Ave S & S Jackson St(619) ~ Walk 1m46s ~ 4th Ave S & S Jackson St(620) ~ BUS 545 11:21 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:25:48 ~ Sr 203 & NE 40th St(64366) ~ Walk 8s ~ snoqualmie-flex:area_485(area_485) ~ BUS null 13:27:56 13:56:11
-32,4,03:35:35,16411,646,10:22:13,13:57:48,Metro Transit|Sound Generations|Sound Transit,BUS,Hyde Shuttle|131|545|224|629,sound-generations:area_551|kcm:49588|kcm:619|kcm:620|kcm:72488|kcm:68803|kcm:64397,sound-generations:area_551(area_551) ~ BUS null 10:22:13 10:41:46Walk 14s ~ 8th Ave SW & SW 99th St(49588) ~ BUS 131 10:44 11:16 ~ 4th Ave S & S Jackson St(619) ~ Walk 1m46s ~ 4th Ave S & S Jackson St(620) ~ BUS 545 11:21 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-33,2,01:48:45,9225,1215,10:04:53,11:53:38,Metro Transit,BUS,165|131|3,kcm:47580|kcm:52301|kcm:52304|kcm:605|kcm:41350,Walk 12m10s ~ 1st Ave S & S 176th St(47580) ~ BUS 165 10:17:03 10:27 ~ Burien Transit Center - Bay 1(52301) ~ Walk 37s ~ Burien Transit Center - Bay 4(52304) ~ BUS 131 10:30 11:27 ~ 3rd Ave & Bell St(605) ~ BUS 3 11:33:07 11:50:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-33,2,01:50:45,9345,1215,10:32:53,12:23:38,Metro Transit,BUS,165|131|3,kcm:47580|kcm:52301|kcm:52304|kcm:605|kcm:41350,Walk 12m10s ~ 1st Ave S & S 176th St(47580) ~ BUS 165 10:45:03 10:55 ~ Burien Transit Center - Bay 1(52301) ~ Walk 37s ~ Burien Transit Center - Bay 4(52304) ~ BUS 131 10:59 11:57 ~ 3rd Ave & Bell St(605) ~ BUS 3 12:03:07 12:20:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-33,3,02:09:19,12795,3471,10:33:27,12:42:46,Metro Transit|Sound Transit,BUS|TRAM,F Line|1-Line|5|2,kcm:50130|kcm:60922|sound-transit:99905|sound-transit:532|kcm:531|kcm:605|kcm:2820,Walk 39m32s ~ S 156th St & 1st Ave S(50130) ~ BUS F Line 11:12:59 11:22 ~ Tukwila International Blvd Station - Bay 2(60922) ~ Walk 3m51s ~ Tukwila Int'l Blvd Station(99905) ~ TRAM 1-Line 11:33 12:04 ~ Pioneer Square Station(532) ~ Walk 1m29s ~ 3rd Ave & James St(531) ~ BUS 5 12:09:47 12:18:02 ~ 3rd Ave & Bell St(605) ~ BUS 2 12:21:14 12:40:45 ~ 6th Ave W & W Mcgraw St(2820) ~ Walk 2m1s
-34,3,01:20:55,7741,659,10:00:09,11:21:04,Metro Transit|Sound Generations,BUS,Hyde Shuttle|125|125|E Line|Hyde Shuttle,sound-generations:area_551|kcm:21292|kcm:21350|kcm:21620|kcm:575|kcm:6237|sound-generations:area_555,sound-generations:area_551(area_551) ~ BUS null 10:00:09 10:21:48Walk 40s ~ 16th Ave SW & SW Roxbury St - Bay 5(21292) ~ Walk 7m45s ~ 16th Ave SW & SW Henderson St(21350) ~ BUS 125 10:32:13 10:45 ~ Delridge Way SW & SW Andover St(21620) ~ BUS 125 10:45 10:59 ~ 3rd Ave & Pike St(575) ~ BUS E Line 11:05 11:08:18 ~ 7th Ave N & Harrison St(6237) ~ Walk 15s ~ sound-generations:area_555(area_555) ~ BUS null 11:10:33 11:21:04
-34,2,01:15:04,6313,12,10:12:29,11:27:33,Metro Transit|Sound Generations,BUS,Hyde Shuttle|132|28|Hyde Shuttle,sound-generations:area_551|kcm:49700|kcm:30635|kcm:6237|sound-generations:area_555,sound-generations:area_551(area_551) ~ BUS null 10:12:29 10:29:39Walk 0s ~ Des Moines Memorial Dr S & S 96th St(49700) ~ BUS 132 10:31:39 11:00 ~ 4th Ave S & S Royal Brougham Way(30635) ~ BUS 28 11:00 11:14:47 ~ 7th Ave N & Harrison St(6237) ~ Walk 15s ~ sound-generations:area_555(area_555) ~ BUS null 11:17:02 11:27:33
-34,1,01:31:23,8054,1835,10:12:29,11:43:52,Metro Transit|Sound Generations,BUS,Hyde Shuttle|132|28,sound-generations:area_551|kcm:49700|kcm:30635|kcm:6320,sound-generations:area_551(area_551) ~ BUS null 10:12:29 10:29:39Walk 0s ~ Des Moines Memorial Dr S & S 96th St(49700) ~ BUS 132 10:31:39 11:00 ~ 4th Ave S & S Royal Brougham Way(30635) ~ BUS 28 11:00 11:18:47 ~ Aurora Ave N & Lynn St(6320) ~ Walk 25m5s
-35,2,01:01:36,6463,1206,10:04:53,11:06:29,Metro Transit|Sound Transit,BUS|TRAM,165|F Line|1-Line,kcm:47580|kcm:53720|kcm:53975|kcm:60922|sound-transit:99905|sound-transit:99240,Walk 12m10s ~ 1st Ave S & S 176th St(47580) ~ BUS 165 10:17:03 10:24:32 ~ 4th Ave SW & SW 156th St(53720) ~ Walk 9s ~ 4th Ave SW & SW 156th St(53975) ~ BUS F Line 10:26:42 10:37 ~ Tukwila International Blvd Station - Bay 2(60922) ~ Walk 3m51s ~ Tukwila Int'l Blvd Station(99905) ~ TRAM 1-Line 10:43 11:05 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-35,1,01:23:02,8715,3334,10:03:27,11:26:29,Metro Transit|Sound Transit,BUS|TRAM,F Line|1-Line,kcm:50130|kcm:60922|sound-transit:99905|sound-transit:99240,Walk 39m32s ~ S 156th St & 1st Ave S(50130) ~ BUS F Line 10:42:59 10:52 ~ Tukwila International Blvd Station - Bay 2(60922) ~ Walk 3m51s ~ Tukwila Int'l Blvd Station(99905) ~ TRAM 1-Line 11:03 11:25 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-35,1,01:30:01,8636,2785,10:04:53,11:34:54,Metro Transit,BUS,165|131,kcm:47580|kcm:52301|kcm:52304|kcm:30600,Walk 12m10s ~ 1st Ave S & S 176th St(47580) ~ BUS 165 10:17:03 10:27 ~ Burien Transit Center - Bay 1(52301) ~ Walk 37s ~ Burien Transit Center - Bay 4(52304) ~ BUS 131 10:30 11:11:03 ~ 4th Ave S & S Holgate St(30600) ~ Walk 23m51s
-36,2,00:55:04,5413,321,10:01:25,10:56:29,Metro Transit|Sound Generations|Sound Transit,BUS|TRAM,Hyde Shuttle|F Line|1-Line,sound-generations:area_551|kcm:50145|kcm:60922|sound-transit:99905|sound-transit:99240,sound-generations:area_551(area_551) ~ BUS null 10:01:25 10:11:33Walk 1m3s ~ S 156th Way & Des Moines Memorial Dr S(50145) ~ BUS F Line 10:14:36 10:22 ~ Tukwila International Blvd Station - Bay 2(60922) ~ Walk 3m51s ~ Tukwila Int'l Blvd Station(99905) ~ TRAM 1-Line 10:33 10:55 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-36,1,00:52:13,4553,308,10:10:01,11:02:14,Metro Transit|Sound Generations,BUS,Hyde Shuttle|60,sound-generations:area_551|kcm:21110|kcm:41880,sound-generations:area_551(area_551) ~ BUS null 10:10:01 10:28:47Walk 0s ~ SW Roxbury St & 8th Ave SW(21110) ~ BUS 60 10:30:47 10:58 ~ 15th Ave S & S Stevens St(41880) ~ Walk 4m14s
-36,2,00:49:45,5060,380,10:12:29,11:02:14,Metro Transit|Sound Generations,BUS,Hyde Shuttle|132|60,sound-generations:area_551|kcm:49700|kcm:31680|kcm:32140|kcm:41880,sound-generations:area_551(area_551) ~ BUS null 10:12:29 10:29:39Walk 0s ~ Des Moines Memorial Dr S & S 96th St(49700) ~ BUS 132 10:31:39 10:34:53 ~ S Cloverdale St & 12th Ave S(31680) ~ Walk 55s ~ S Cloverdale St & 12th Ave S(32140) ~ BUS 60 10:39:31 10:58 ~ 15th Ave S & S Stevens St(41880) ~ Walk 4m14s
-37,0,02:46:43,19483,12868,10:00:00,12:46:43,,,,,Walk 2h46m43s
-37,1,01:23:27,8626,3284,10:01:06,11:24:33,Metro Transit,BUS,165|160,kcm:48960|kcm:57127|kcm:57130|kcm:57185,Walk 22m47s ~ Pacific Hwy S & Kent Des Moines Rd(48960) ~ BUS 165 10:23:53 10:51 ~ SE 240th St & 104th Ave SE(57127) ~ Walk 1m45s ~ 104th Ave SE & SE 240th St(57130) ~ BUS 160 11:01:23 11:06:08 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
-37,0,01:25:28,8967,4388,10:01:06,11:26:34,Metro Transit,BUS,165,kcm:48960|kcm:57141,Walk 22m47s ~ Pacific Hwy S & Kent Des Moines Rd(48960) ~ BUS 165 10:23:53 10:52:44 ~ SE 240th St & 116th Ave SE(57141) ~ Walk 33m50s
-38,2,00:47:28,4948,406,10:00:24,10:47:52,Metro Transit|Sound Generations,BUS,Hyde Shuttle|183|Hyde Shuttle,sound-generations:area_551|kcm:47971|kcm:47974|kcm:53056|sound-generations:area_558,sound-generations:area_551(area_551) ~ BUS null 10:00:24 10:13:08Walk 1m19s ~ S 272nd St & Pacific Hwy S(47971) ~ Walk 3m56s ~ S 272nd St & S Star Lake Rd(47974) ~ BUS 183 10:20:23 10:23:56 ~ Military Rd S & S 264th St(53056) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:25:56 10:47:52
-38,2,00:39:29,4228,77,10:09:09,10:48:38,Metro Transit|Sound Generations,BUS,Hyde Shuttle|A Line|Hyde Shuttle,sound-generations:area_551|kcm:61190|kcm:61201|sound-generations:area_558,sound-generations:area_551(area_551) ~ BUS null 10:09:09 10:16:21Walk 1m2s ~ Pacific Hwy S & S 246th St(61190) ~ BUS A Line 10:19:23 10:20:41 ~ Pacific Hwy S & S 252nd St(61201) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:22:41 10:48:38
-38,2,00:38:01,4244,225,10:11:51,10:49:52,Metro Transit|Sound Generations,BUS,Hyde Shuttle|165|Hyde Shuttle,sound-generations:area_551|kcm:48930|kcm:47263|sound-generations:area_558,sound-generations:area_551(area_551) ~ BUS null 10:11:51 10:16:49Walk 0s ~ S 240th St & 21st Ave S(48930) ~ BUS 165 10:18:49 10:20 ~ Highline College(47263) ~ Walk 3m4s ~ sound-generations:area_558(area_558) ~ BUS null 10:25:04 10:49:52
-39,0,01:36:57,11280,7450,10:00:00,11:36:57,,,,,Walk 1h36m57s
-39,0,00:40:49,4933,2548,10:15:00,10:55:49,Metro Transit,BUS,165,kcm:47390|kcm:47570,Walk 21m ~ Marine View Dr S & S 223rd St(47390) ~ BUS 165 10:36 10:44 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-39,0,00:48:56,5603,2817,10:29:27,11:18:23,Metro Transit,BUS,156,kcm:48990|kcm:49190,Walk 9m35s ~ 24th Ave S & S 226th St(48990) ~ BUS 156 10:39:02 10:51:04 ~ 8th Ave S & Des Moines Memorial Dr S(49190) ~ Walk 27m19s
-40,2,00:20:26,3028,0,10:00:38,10:21:04,Metro Transit|Sound Generations,BUS,Hyde Shuttle|165|Hyde Shuttle,sound-generations:area_551|kcm:47390|kcm:47570|sound-generations:area_551,sound-generations:area_551(area_551) ~ BUS null 10:00:38 10:06Walk 0s ~ Marine View Dr S & S 223rd St(47390) ~ BUS 165 10:08 10:16 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:18 10:21:04
-40,1,00:27:11,3512,917,10:00:38,10:27:49,Metro Transit|Sound Generations,BUS,Hyde Shuttle|165,sound-generations:area_551|kcm:47390|kcm:47570,sound-generations:area_551(area_551) ~ BUS null 10:00:38 10:06Walk 0s ~ Marine View Dr S & S 223rd St(47390) ~ BUS 165 10:08 10:16 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-40,2,00:24:33,3275,0,10:05:02,10:29:35,Metro Transit|Sound Generations,BUS,Hyde Shuttle|156|Hyde Shuttle,sound-generations:area_551|kcm:47406|kcm:49150|sound-generations:area_551,sound-generations:area_551(area_551) ~ BUS null 10:05:02 10:11:06Walk 0s ~ S 216th St & 11th Ave S(47406) ~ BUS 156 10:13:06 10:18:53 ~ 8th Ave S & S 194th St(49150) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:20:53 10:29:35
-41,1,01:00:18,6263,1973,10:01:06,11:01:24,Metro Transit,BUS,165|160,kcm:48960|kcm:57452|kcm:57451|kcm:58255,Walk 22m47s ~ Pacific Hwy S & Kent Des Moines Rd(48960) ~ BUS 165 10:23:53 10:45 ~ Kent Sounder Station - Bay 2(57452) ~ Walk 29s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 10:48 10:58:37 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-41,2,01:21:47,8189,2019,10:09:20,11:31:07,Metro Transit,BUS,A Line|183|160,kcm:61170|kcm:61240|kcm:47974|kcm:57452|kcm:57451|kcm:58255,Walk 15m57s ~ Pacific Hwy S & S 224th St(61170) ~ BUS A Line 10:25:17 10:34:39 ~ Pacific Hwy S & S 272nd St(61240) ~ Walk 7m32s ~ S 272nd St & S Star Lake Rd(47974) ~ BUS 183 10:48:23 11:08 ~ Kent Sounder Station - Bay 2(57452) ~ Walk 29s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 11:17 11:28:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-41,1,01:17:01,7266,1973,10:30:06,11:47:07,Metro Transit,BUS,165|160,kcm:48960|kcm:57452|kcm:57451|kcm:58255,Walk 22m47s ~ Pacific Hwy S & Kent Des Moines Rd(48960) ~ BUS 165 10:52:53 11:15 ~ Kent Sounder Station - Bay 2(57452) ~ Walk 29s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 11:33 11:44:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-42,2,00:42:19,4639,406,10:00:24,10:42:43,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|183|Road to Independence,sound-generations:area_551|kcm:47971|kcm:47974|kcm:53050|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:00:24 10:13:08Walk 1m19s ~ S 272nd St & Pacific Hwy S(47971) ~ Walk 3m56s ~ S 272nd St & S Star Lake Rd(47974) ~ BUS 183 10:20:23 10:22:23 ~ Military Rd S & S 272nd St(53050) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:24:23 10:42:43
-42,2,00:36:28,4114,171,10:08:49,10:45:17,Puget Sound Educational Service District|Sound Generations|Sound Transit,BUS,Hyde Shuttle|574|Road to Independence,sound-generations:area_551|pierce-transit:3818|pierce-transit:25846|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:08:49 10:14:45Walk 2m15s ~ I-5 & Kent - Des Moines Fwy Station(3818) ~ BUS 574 10:19 10:22 ~ Star Lake Fwy Station(25846) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:24 10:45:17
-42,1,00:40:22,4625,1357,10:06:20,10:46:42,Metro Transit|Sound Generations,BUS,Hyde Shuttle|160,sound-generations:area_558|kcm:58150|kcm:58255,Walk 14m53s ~ sound-generations:area_558(area_558) ~ BUS null 10:21:13 10:34:05Walk 0s ~ Central Ave S & E Russell St(58150) ~ BUS 160 10:36:05 10:43:55 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-43,1,00:54:31,5614,1550,10:19:20,11:13:51,Metro Transit,BUS,A Line|181,kcm:61170|kcm:80431|kcm:80433|kcm:83784,Walk 15m57s ~ Pacific Hwy S & S 224th St(61170) ~ BUS A Line 10:35:17 10:59 ~ Federal Way TC - Bay 1(80431) ~ Walk 1m4s ~ Federal Way TC - Bay 3(80433) ~ BUS 181 11:04 11:10:35 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-43,1,00:49:26,5758,2172,10:24:25,11:13:51,Metro Transit|Sound Transit,BUS,574|181,pierce-transit:3818|pierce-transit:29410|kcm:80433|kcm:83784,Walk 24m35s ~ I-5 & Kent - Des Moines Fwy Station(3818) ~ BUS 574 10:49 11:00 ~ Federal Way TC - Bay 5(29410) ~ Walk 33s ~ Federal Way TC - Bay 3(80433) ~ BUS 181 11:04 11:10:35 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-43,0,01:05:35,7142,3553,10:09:20,11:14:55,Metro Transit,BUS,A Line,kcm:61170|kcm:61313,Walk 15m57s ~ Pacific Hwy S & S 224th St(61170) ~ BUS A Line 10:25:17 10:44:29 ~ S 316th St & Pacific Hwy S(61313) ~ Walk 30m26s
-44,2,00:40:00,4665,626,10:00:24,10:40:24,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|183|Road to Independence,sound-generations:area_551|kcm:47971|kcm:47974|kcm:50734|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:00:24 10:13:08Walk 1m19s ~ S 272nd St & Pacific Hwy S(47971) ~ Walk 3m56s ~ S 272nd St & S Star Lake Rd(47974) ~ BUS 183 10:20:23 10:21 ~ S 272nd St & 26th Ave S(50734) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:23 10:37:38Walk 2m46s
-44,2,00:33:26,4098,391,10:08:49,10:42:15,Puget Sound Educational Service District|Sound Generations|Sound Transit,BUS,Hyde Shuttle|574|Road to Independence,sound-generations:area_551|pierce-transit:3818|pierce-transit:25846|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:08:49 10:14:45Walk 2m15s ~ I-5 & Kent - Des Moines Fwy Station(3818) ~ BUS 574 10:19 10:22 ~ Star Lake Fwy Station(25846) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:24 10:39:29Walk 2m46s
-44,2,00:33:57,4069,307,10:09:09,10:43:06,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|A Line|Road to Independence,sound-generations:area_551|kcm:61190|kcm:61280|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:09:09 10:16:21Walk 1m2s ~ Pacific Hwy S & S 246th St(61190) ~ BUS A Line 10:19:23 10:29:16 ~ Pacific Hwy S & S Dash Point Rd(61280) ~ Walk 8s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:31:24 10:40:20Walk 2m46s
-45,2,01:42:38,9397,1963,10:06:22,11:49:00,Metro Transit|Sound Transit,BUS|TRAM,635|1-Line|50,kcm:47417|kcm:47200|sound-transit:99914|sound-transit:99256|kcm:99261|kcm:31871,Walk 18m33s ~ S 216th St & 20th Ave S(47417) ~ BUS 635 10:24:55 10:31 ~ S 200th St & 28th Ave S(47200) ~ Walk 2m30s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:36 11:08 ~ SODO Station(99256) ~ Walk 2m7s ~ S Lander St & SODO Busway(99261) ~ BUS 50 11:22 11:45:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-45,1,01:48:10,8969,1694,10:03:05,11:51:15,Metro Transit,BUS,A Line|128,kcm:60810|kcm:60921|kcm:60923|kcm:31871,Walk 17m33s ~ Pacific Hwy S & S 224th St(60810) ~ BUS A Line 10:20:38 10:40 ~ Tukwila International Blvd Station - Bay 1(60921) ~ Walk 2m28s ~ Tukwila International Blvd Station - Bay 3(60923) ~ BUS 128 10:51 11:47:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-45,2,01:38:55,9193,2004,10:23:05,12:02:00,Metro Transit|Sound Transit,BUS|TRAM,A Line|1-Line|50,kcm:60810|kcm:60850|sound-transit:99914|sound-transit:99256|kcm:99261|kcm:31871,Walk 17m33s ~ Pacific Hwy S & S 224th St(60810) ~ BUS A Line 10:40:38 10:45:46 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:56 11:28 ~ SODO Station(99256) ~ Walk 2m7s ~ S Lander St & SODO Busway(99261) ~ BUS 50 11:35 11:58:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-46,2,00:59:51,5399,9,10:00:11,11:00:02,Metro Transit|Sound Generations,BUS,Hyde Shuttle|120|Hyde Shuttle,sound-generations:area_551|kcm:39431|kcm:31731|sound-generations:area_560,sound-generations:area_551(area_551) ~ BUS null 10:00:11 10:30Walk 0s ~ 15th Ave SW & SW Roxbury St - Bay 2(39431) ~ BUS 120 10:32 10:37 ~ 26th Ave SW & SW Barton St - Bay 2(31731) ~ Walk 7s ~ sound-generations:area_560(area_560) ~ BUS null 10:39:07 11:00:02
-46,2,00:51:21,4883,0,10:09:41,11:01:02,Metro Transit|Sound Generations,BUS,Hyde Shuttle|132|Hyde Shuttle,sound-generations:area_551|kcm:49700|kcm:49720|sound-generations:area_560,sound-generations:area_551(area_551) ~ BUS null 10:09:41 10:29:39Walk 0s ~ Des Moines Memorial Dr S & S 96th St(49700) ~ BUS 132 10:31:39 10:33:52 ~ 14th Ave S & S Trenton St(49720) ~ Walk 0s ~ sound-generations:area_560(area_560) ~ BUS null 10:35:52 11:01:02
-46,2,00:59:51,5399,9,10:10:11,11:10:02,Metro Transit|Sound Generations,BUS,Hyde Shuttle|120|Hyde Shuttle,sound-generations:area_551|kcm:39431|kcm:31731|sound-generations:area_560,sound-generations:area_551(area_551) ~ BUS null 10:10:11 10:40Walk 0s ~ 15th Ave SW & SW Roxbury St - Bay 2(39431) ~ BUS 120 10:42 10:47 ~ 26th Ave SW & SW Barton St - Bay 2(31731) ~ Walk 7s ~ sound-generations:area_560(area_560) ~ BUS null 10:49:07 11:10:02
-47,1,01:36:49,8326,1794,10:19:20,11:56:09,Metro Transit|Pierce Transit,BUS,A Line|402,kcm:61170|kcm:80431|pierce-transit:29410|pierce-transit:1332,Walk 15m57s ~ Pacific Hwy S & S 224th St(61170) ~ BUS A Line 10:35:17 10:59 ~ Federal Way TC - Bay 1(80431) ~ Walk 1m37s ~ Federal Way TC - Bay 5(29410) ~ BUS 402 11:10 11:50 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m9s
-47,1,01:31:44,8410,2334,10:24:25,11:56:09,Pierce Transit|Sound Transit,BUS,574|402,pierce-transit:3818|pierce-transit:29410|pierce-transit:1332,Walk 24m35s ~ I-5 & Kent - Des Moines Fwy Station(3818) ~ BUS 574 10:49 11:00 ~ Federal Way TC - Bay 5(29410) ~ BUS 402 11:10 11:50 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m9s
-47,1,01:58:40,10378,2821,10:39:20,12:38:00,Metro Transit|Sound Transit,BUS,A Line|578,kcm:61170|kcm:80431|pierce-transit:4136|pierce-transit:10401,Walk 15m57s ~ Pacific Hwy S & S 224th St(61170) ~ BUS A Line 10:55:17 11:20 ~ Federal Way TC - Bay 1(80431) ~ Walk 27s ~ Federal Way TC - Bay 2(4136) ~ BUS 578 11:32 12:17 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-48,2,00:50:58,5158,406,10:00:24,10:51:22,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|183|Road to Independence,sound-generations:area_551|kcm:47971|kcm:47974|kcm:50734|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:00:24 10:13:08Walk 1m19s ~ S 272nd St & Pacific Hwy S(47971) ~ Walk 3m56s ~ S 272nd St & S Star Lake Rd(47974) ~ BUS 183 10:20:23 10:21 ~ S 272nd St & 26th Ave S(50734) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:23 10:51:22
-48,2,00:44:24,4590,171,10:08:49,10:53:13,Puget Sound Educational Service District|Sound Generations|Sound Transit,BUS,Hyde Shuttle|574|Road to Independence,sound-generations:area_551|pierce-transit:3818|pierce-transit:25846|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:08:49 10:14:45Walk 2m15s ~ I-5 & Kent - Des Moines Fwy Station(3818) ~ BUS 574 10:19 10:22 ~ Star Lake Fwy Station(25846) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:24 10:53:13
-48,2,00:51:25,5200,428,10:09:09,11:00:34,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|A Line|Road to Independence,sound-generations:area_551|kcm:61190|kcm:61230|pudget-sound-educational:area_622,sound-generations:area_551(area_551) ~ BUS null 10:09:09 10:16:21Walk 1m2s ~ Pacific Hwy S & S 246th St(61190) ~ BUS A Line 10:19:23 10:23:53 ~ Pacific Hwy S & S 268th St(61230) ~ Walk 4m44s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:30:37 11:00:34
-49,4,03:51:26,18600,2321,10:06:22,13:57:48,Metro Transit|Sound Transit,BUS|TRAM,635|1-Line|545|224|629,kcm:47417|kcm:47200|sound-transit:99914|sound-transit:99260|kcm:21765|kcm:72488|kcm:68803|kcm:64397,Walk 18m33s ~ S 216th St & 20th Ave S(47417) ~ BUS 635 10:24:55 10:31 ~ S 200th St & 28th Ave S(47200) ~ Walk 2m30s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:36 11:10 ~ Stadium Station(99260) ~ Walk 3m13s ~ 6th Ave S & S Royal Brougham Way(21765) ~ BUS 545 11:17 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-49,3,02:49:27,14769,3036,11:23:13,14:12:40,Metro Transit|Sound Transit,BUS|TRAM,A Line|1-Line|554|208,kcm:60810|kcm:60850|sound-transit:99914|sound-transit:99260|kcm:1480|kcm:64590|kcm:64593|kcm:64399,Walk 17m33s ~ Pacific Hwy S & S 224th St(60810) ~ BUS A Line 11:40:46 11:46:20 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 11:56 12:30 ~ Stadium Station(99260) ~ Walk 12m41s ~ S Jackson St & Maynard Ave S(1480) ~ BUS 554 12:46:10 13:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 13:30 14:06:59 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-50,5,03:42:23,17048,145,10:13:48,13:56:11,Metro Transit|Snoqualmie Valley Transportation|Sound Generations|Sound Transit,BUS,Hyde Shuttle|131|545|224|629|Dial-A-Ride,sound-generations:area_551|kcm:49588|kcm:619|kcm:620|kcm:72488|kcm:68803|kcm:64366|snoqualmie-flex:area_486,sound-generations:area_551(area_551) ~ BUS null 10:13:48 10:41:46Walk 14s ~ 8th Ave SW & SW 99th St(49588) ~ BUS 131 10:44 11:16 ~ 4th Ave S & S Jackson St(619) ~ Walk 1m46s ~ 4th Ave S & S Jackson St(620) ~ BUS 545 11:21 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:25:48 ~ Sr 203 & NE 40th St(64366) ~ Walk 8s ~ snoqualmie-flex:area_485(area_485) ~ BUS null 13:27:56 13:56:11
-50,4,03:44:00,16916,646,10:13:48,13:57:48,Metro Transit|Sound Generations|Sound Transit,BUS,Hyde Shuttle|131|545|224|629,sound-generations:area_551|kcm:49588|kcm:619|kcm:620|kcm:72488|kcm:68803|kcm:64397,sound-generations:area_551(area_551) ~ BUS null 10:13:48 10:41:46Walk 14s ~ 8th Ave SW & SW 99th St(49588) ~ BUS 131 10:44 11:16 ~ 4th Ave S & S Jackson St(619) ~ Walk 1m46s ~ 4th Ave S & S Jackson St(620) ~ BUS 545 11:21 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-50,5,03:40:06,17479,910,10:17:42,13:57:48,Metro Transit|Sound Generations|Sound Transit,BUS|TRAM,Hyde Shuttle|635|1-Line|545|224|629,sound-generations:area_551|kcm:47206|kcm:47200|sound-transit:99914|sound-transit:99260|kcm:21765|kcm:72488|kcm:68803|kcm:64397,sound-generations:area_551(area_551) ~ BUS null 10:17:42 10:23:48Walk 12s ~ 24th Ave S & S 216th St(47206) ~ BUS 635 10:26 10:31 ~ S 200th St & 28th Ave S(47200) ~ Walk 2m30s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:36 11:10 ~ Stadium Station(99260) ~ Walk 3m13s ~ 6th Ave S & S Royal Brougham Way(21765) ~ BUS 545 11:17 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-51,3,01:47:16,10250,1913,10:06:22,11:53:38,Metro Transit|Sound Transit,BUS|TRAM,635|1-Line|131|3,kcm:47417|kcm:47200|sound-transit:99914|sound-transit:532|kcm:531|kcm:605|kcm:41350,Walk 18m33s ~ S 216th St & 20th Ave S(47417) ~ BUS 635 10:24:55 10:31 ~ S 200th St & 28th Ave S(47200) ~ Walk 2m30s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:36 11:14 ~ Pioneer Square Station(532) ~ Walk 1m29s ~ 3rd Ave & James St(531) ~ BUS 131 11:17:57 11:27 ~ 3rd Ave & Bell St(605) ~ BUS 3 11:33:07 11:50:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-51,2,01:54:47,11093,3289,10:06:22,12:01:09,Metro Transit|Sound Transit,BUS|TRAM,635|1-Line|62,kcm:47417|kcm:47200|sound-transit:99914|sound-transit:532|kcm:531|kcm:18590,Walk 18m33s ~ S 216th St & 20th Ave S(47417) ~ BUS 635 10:24:55 10:31 ~ S 200th St & 28th Ave S(47200) ~ Walk 2m30s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:36 11:14 ~ Pioneer Square Station(532) ~ Walk 1m29s ~ 3rd Ave & James St(531) ~ BUS 62 11:19:55 11:39:36 ~ Dexter Ave N & 4th Ave N(18590) ~ Walk 21m33s
-51,3,01:55:33,10767,1954,10:13:05,12:08:38,Metro Transit|Sound Transit,BUS|TRAM,A Line|1-Line|40|3,kcm:60810|kcm:60850|sound-transit:99914|sound-transit:532|kcm:531|kcm:600|kcm:41350,Walk 17m33s ~ Pacific Hwy S & S 224th St(60810) ~ BUS A Line 10:30:38 10:35:46 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:46 11:24 ~ Pioneer Square Station(532) ~ Walk 1m29s ~ 3rd Ave & James St(531) ~ BUS 40 11:31:37 11:38:03 ~ 3rd Ave & Virginia St(600) ~ BUS 3 11:45:57 12:05:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-52,2,01:17:52,6481,12,10:09:41,11:27:33,Metro Transit|Sound Generations,BUS,Hyde Shuttle|132|28|Hyde Shuttle,sound-generations:area_551|kcm:49700|kcm:30635|kcm:6237|sound-generations:area_555,sound-generations:area_551(area_551) ~ BUS null 10:09:41 10:29:39Walk 0s ~ Des Moines Memorial Dr S & S 96th St(49700) ~ BUS 132 10:31:39 11:00 ~ 4th Ave S & S Royal Brougham Way(30635) ~ BUS 28 11:00 11:14:47 ~ 7th Ave N & Harrison St(6237) ~ Walk 15s ~ sound-generations:area_555(area_555) ~ BUS null 11:17:02 11:27:33
-52,1,01:34:11,8222,1835,10:09:41,11:43:52,Metro Transit|Sound Generations,BUS,Hyde Shuttle|132|28,sound-generations:area_551|kcm:49700|kcm:30635|kcm:6320,sound-generations:area_551(area_551) ~ BUS null 10:09:41 10:29:39Walk 0s ~ Des Moines Memorial Dr S & S 96th St(49700) ~ BUS 132 10:31:39 11:00 ~ 4th Ave S & S Royal Brougham Way(30635) ~ BUS 28 11:00 11:18:47 ~ Aurora Ave N & Lynn St(6320) ~ Walk 25m5s
-52,3,01:30:16,7833,24,10:13:48,11:44:04,Metro Transit|Sound Generations,BUS,Hyde Shuttle|131|E Line|Hyde Shuttle,sound-generations:area_551|kcm:49588|kcm:600|kcm:6237|sound-generations:area_555,sound-generations:area_551(area_551) ~ BUS null 10:13:48 10:41:46Walk 14s ~ 8th Ave SW & SW 99th St(49588) ~ BUS 131 10:44 11:25:09 ~ 3rd Ave & Virginia St(600) ~ BUS E Line 11:28:57 11:31:18 ~ 7th Ave N & Harrison St(6237) ~ Walk 15s ~ sound-generations:area_555(area_555) ~ BUS null 11:33:33 11:44:04
-53,1,01:00:07,6049,1684,10:06:22,11:06:29,Metro Transit|Sound Transit,BUS|TRAM,635|1-Line,kcm:47417|kcm:47200|sound-transit:99914|sound-transit:99240,Walk 18m33s ~ S 216th St & 20th Ave S(47417) ~ BUS 635 10:24:55 10:31 ~ S 200th St & 28th Ave S(47200) ~ Walk 2m30s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:36 11:05 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-53,1,01:03:24,6265,1725,10:13:05,11:16:29,Metro Transit|Sound Transit,BUS|TRAM,A Line|1-Line,kcm:60810|kcm:60850|sound-transit:99914|sound-transit:99240,Walk 17m33s ~ Pacific Hwy S & S 224th St(60810) ~ BUS A Line 10:30:38 10:35:46 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:46 11:15 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-53,1,01:03:24,6265,1725,10:23:05,11:26:29,Metro Transit|Sound Transit,BUS|TRAM,A Line|1-Line,kcm:60810|kcm:60850|sound-transit:99914|sound-transit:99240,Walk 17m33s ~ Pacific Hwy S & S 224th St(60810) ~ BUS A Line 10:40:38 10:45:46 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:56 11:25 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-54,2,00:53:16,5275,386,10:03:13,10:56:29,Metro Transit|Sound Generations|Sound Transit,BUS|TRAM,Hyde Shuttle|A Line|1-Line,sound-generations:area_551|kcm:60810|kcm:60850|sound-transit:99914|sound-transit:99240,sound-generations:area_551(area_551) ~ BUS null 10:03:13 10:08:38Walk 0s ~ Pacific Hwy S & S 224th St(60810) ~ BUS A Line 10:10:38 10:15:46 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:26 10:55 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-54,1,00:55:19,5420,1239,10:01:10,10:56:29,Sound Generations|Sound Transit,BUS|TRAM,Hyde Shuttle|1-Line,sound-generations:area_551|kcm:47202|sound-transit:99914|sound-transit:99240,sound-generations:area_551(area_551) ~ BUS null 10:01:10 10:08:47Walk 28s ~ 24th Ave S & S 208th St(47202) ~ Walk 14m45s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:26 10:55 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-54,1,01:00:38,5058,308,10:01:36,11:02:14,Metro Transit|Sound Generations,BUS,Hyde Shuttle|60,sound-generations:area_551|kcm:21110|kcm:41880,sound-generations:area_551(area_551) ~ BUS null 10:01:36 10:28:47Walk 0s ~ SW Roxbury St & 8th Ave SW(21110) ~ BUS 60 10:30:47 10:58 ~ 15th Ave S & S Stevens St(41880) ~ Walk 4m14s
-55,0,00:45:18,4538,1641,10:06:44,10:52:02,Metro Transit,BUS,160,kcm:57915|kcm:57185,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:09:32 10:33:37 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
-55,0,00:47:32,4672,1641,10:22:01,11:09:33,Metro Transit,BUS,160,kcm:57915|kcm:57185,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:24:49 10:51:08 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
-55,0,00:47:32,4672,1641,10:37:01,11:24:33,Metro Transit,BUS,160,kcm:57915|kcm:57185,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:39:49 11:06:08 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
-56,1,00:31:12,3231,213,10:06:44,10:37:56,Metro Transit|Sound Generations,BUS,160|Hyde Shuttle,kcm:57915|kcm:57990|sound-generations:area_558,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:09:32 10:17:01 ~ Central Ave S & S 259th St(57990) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:19:01 10:37:56
-56,2,00:38:01,4103,28,10:07:12,10:45:13,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|161|Hyde Shuttle,pudget-sound-educational:area_622|kcm:57452|kcm:80640|sound-generations:area_558,pudget-sound-educational:area_622(area_622) ~ BUS null 10:07:12 10:24:36Walk 24s ~ Kent Sounder Station - Bay 2(57452) ~ BUS 161 10:27 10:30:28 ~ Central Ave N & S 228th St(80640) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:32:28 10:45:13
-56,0,00:45:18,4538,1641,10:06:44,10:52:02,Metro Transit,BUS,160,kcm:57915|kcm:57185,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:09:32 10:33:37 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
-57,1,01:19:05,6879,1267,10:06:44,11:25:49,Metro Transit,BUS,160|165,kcm:57915|kcm:57453|kcm:57459|kcm:47570,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:09:32 10:21 ~ Kent Sounder Station - Bay 3(57453) ~ Walk 2m2s ~ Kent Sounder Station - Bay 9(57459) ~ BUS 165 10:37 11:14 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-57,1,01:18:48,6862,1267,10:37:01,11:55:49,Metro Transit,BUS,160|165,kcm:57915|kcm:57453|kcm:57459|kcm:47570,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:39:49 10:52 ~ Kent Sounder Station - Bay 3(57453) ~ Walk 2m2s ~ Kent Sounder Station - Bay 9(57459) ~ BUS 165 11:07 11:44 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-57,1,01:21:48,7042,1267,11:07:01,12:28:49,Metro Transit,BUS,160|165,kcm:57915|kcm:57453|kcm:57459|kcm:47570,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 11:09:49 11:22 ~ Kent Sounder Station - Bay 3(57453) ~ Walk 2m2s ~ Kent Sounder Station - Bay 9(57459) ~ BUS 165 11:37 12:17 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-58,2,00:58:29,5511,275,10:06:25,11:04:54,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60750|kcm:60752|sound-generations:area_551,pudget-sound-educational:area_622(area_622) ~ BUS null 10:06:25 10:28:19Walk 1m9s ~ Pacific Hwy S & S 272nd St(60750) ~ BUS A Line 10:31:28 10:32:02 ~ Pacific Hwy S & S 268th St(60752) ~ Walk 2m40s ~ sound-generations:area_551(area_551) ~ BUS null 10:36:42 11:04:54
-58,2,00:58:42,5459,187,10:06:25,11:05:07,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60750|kcm:48949|sound-generations:area_551,pudget-sound-educational:area_622(area_622) ~ BUS null 10:06:25 10:28:19Walk 1m9s ~ Pacific Hwy S & S 272nd St(60750) ~ BUS A Line 10:31:28 10:37:16 ~ Pacific Hwy S & S 240th St(48949) ~ Walk 1m26s ~ sound-generations:area_551(area_551) ~ BUS null 10:40:42 11:05:07
-58,2,00:59:17,5423,88,10:06:25,11:05:42,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60750|kcm:60810|sound-generations:area_551,pudget-sound-educational:area_622(area_622) ~ BUS null 10:06:25 10:28:19Walk 1m9s ~ Pacific Hwy S & S 272nd St(60750) ~ BUS A Line 10:31:28 10:40:38 ~ Pacific Hwy S & S 224th St(60810) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:42:38 11:05:42
-59,1,01:10:07,6841,1967,10:06:44,11:16:51,Metro Transit,BUS,160|165,kcm:57915|kcm:57453|kcm:57459|kcm:50480,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:09:32 10:21 ~ Kent Sounder Station - Bay 3(57453) ~ Walk 2m2s ~ Kent Sounder Station - Bay 9(57459) ~ BUS 165 10:37 10:55:38 ~ Pacific Hwy S & Kent Des Moines Rd(50480) ~ Walk 21m13s
-59,2,01:17:02,7684,1717,10:11:08,11:28:10,Metro Transit|Sound Transit,BUS,160|578|A Line,kcm:58255|kcm:57784|pierce-transit:8770|pierce-transit:7910|kcm:80438|kcm:60810,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:13:55 10:25 ~ 2nd St SW & A St SW(57784) ~ Walk 1m10s ~ Auburn Station - Bay 3(8770) ~ BUS 578 10:34 10:46 ~ Federal Way TC - Bay 7(7910) ~ Walk 1m15s ~ Federal Way TC - Bay 8(80438) ~ BUS A Line 10:50 11:10:38 ~ Pacific Hwy S & S 224th St(60810) ~ Walk 17m32s
-59,1,01:09:50,6824,1967,10:37:01,11:46:51,Metro Transit,BUS,160|165,kcm:57915|kcm:57453|kcm:57459|kcm:50480,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:39:49 10:52 ~ Kent Sounder Station - Bay 3(57453) ~ Walk 2m2s ~ Kent Sounder Station - Bay 9(57459) ~ BUS 165 11:07 11:25:38 ~ Pacific Hwy S & Kent Des Moines Rd(50480) ~ Walk 21m13s
-60,2,00:40:44,4310,88,10:06:25,10:47:09,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60750|kcm:60800|sound-generations:area_551,pudget-sound-educational:area_622(area_622) ~ BUS null 10:06:25 10:28:19Walk 1m9s ~ Pacific Hwy S & S 272nd St(60750) ~ BUS A Line 10:31:28 10:39 ~ Pacific Hwy S & Kent Des Moines Rd(60800) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:41 10:47:09
-60,1,00:41:47,4711,1358,10:06:44,10:48:31,Metro Transit|Sound Generations,BUS,160|Hyde Shuttle,kcm:57915|kcm:57990|sound-generations:area_558,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:09:32 10:17:01 ~ Central Ave S & S 259th St(57990) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:19:01 10:33:39Walk 14m52s
-60,2,00:40:44,4310,88,10:16:25,10:57:09,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60750|kcm:60800|sound-generations:area_551,pudget-sound-educational:area_622(area_622) ~ BUS null 10:16:25 10:38:19Walk 1m9s ~ Pacific Hwy S & S 272nd St(60750) ~ BUS A Line 10:41:28 10:49 ~ Pacific Hwy S & Kent Des Moines Rd(60800) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:51 10:57:09
-61,1,00:47:43,4473,550,10:26:08,11:13:51,Metro Transit,BUS,160|181,kcm:58255|kcm:57784|kcm:57775|kcm:83784,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:28:55 10:40 ~ 2nd St SW & A St SW(57784) ~ Walk 1m12s ~ Auburn Transit Center - Bay 3(57775) ~ BUS 181 10:44 11:10:35 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-61,2,01:00:46,5967,710,10:41:08,11:41:54,Metro Transit|Sound Transit,BUS,160|578|187,kcm:58255|kcm:57784|pierce-transit:8770|pierce-transit:7910|kcm:80433|kcm:83784,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:43:55 10:55 ~ 2nd St SW & A St SW(57784) ~ Walk 1m10s ~ Auburn Station - Bay 3(8770) ~ BUS 578 11:04 11:16 ~ Federal Way TC - Bay 7(7910) ~ Walk 2m22s ~ Federal Way TC - Bay 3(80433) ~ BUS 187 11:32 11:38:38 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-61,1,01:03:19,5409,550,10:41:08,11:44:27,Metro Transit,BUS,160|181,kcm:58255|kcm:57784|kcm:57775|kcm:83784,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:43:55 10:55 ~ 2nd St SW & A St SW(57784) ~ Walk 1m12s ~ Auburn Transit Center - Bay 3(57775) ~ BUS 181 11:14 11:41:11 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-62,1,00:31:50,3302,254,10:10:04,10:41:54,Metro Transit|Puget Sound Educational Service District,BUS,Road to Independence|187,pudget-sound-educational:area_622|kcm:60640|kcm:83784,pudget-sound-educational:area_622(area_622) ~ BUS null 10:10:04 10:32:51Walk 0s ~ S 320th St & 20th Ave S(60640) ~ BUS 187 10:34:51 10:38:38 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-62,1,00:32:23,3335,254,10:11:28,10:43:51,Metro Transit|Puget Sound Educational Service District,BUS,Road to Independence|181,pudget-sound-educational:area_622|kcm:60638|kcm:83784,pudget-sound-educational:area_622(area_622) ~ BUS null 10:11:28 10:33:23Walk 0s ~ S 320th St & 23rd Ave S(60638) ~ BUS 181 10:35:23 10:40:35 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-62,1,00:38:16,3820,433,10:22:01,11:00:17,Metro Transit|Puget Sound Educational Service District,BUS,160|Road to Independence,kcm:57915|kcm:57950|pudget-sound-educational:area_622,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:24:49 10:28:17 ~ Auburn Way N & S 277th St(57950) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:30:17 10:57:31Walk 2m46s
-63,2,01:55:16,9112,546,10:06:44,12:02:00,Metro Transit,BUS,160|150|50,kcm:57915|kcm:57453|kcm:57458|kcm:99252|kcm:31871,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:09:32 10:21 ~ Kent Sounder Station - Bay 3(57453) ~ Walk 1m24s ~ Kent Sounder Station - Bay 8(57458) ~ BUS 150 10:32 11:17 ~ SODO Busway & S Spokane St(99252) ~ BUS 50 11:32:28 11:58:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-63,3,01:46:07,9735,1278,10:26:08,12:12:15,Metro Transit|Sound Transit,BUS|RAIL,160|S Line|C Line|128,kcm:58255|kcm:57784|sound-transit:S_AU_NB|sound-transit:S_KS|kcm:1562|kcm:20041|kcm:32011|kcm:31871,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:28:55 10:40 ~ 2nd St SW & A St SW(57784) ~ Walk 2m5s ~ Auburn Station (Northbound)(S_AU_NB) ~ RAIL S Line 10:48 11:22 ~ King Street Station(S_KS) ~ Walk 9m13s ~ Alaskan Way S & S Jackson St(1562) ~ BUS C Line 11:38:40 11:58 ~ SW Alaska St & California Ave SW - Bay 3(20041) ~ Walk 42s ~ SW Alaska St & 44th Ave SW - Bay 4(32011) ~ BUS 128 12:05 12:08:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-63,2,01:47:45,9907,2196,10:26:08,12:13:53,Metro Transit|Sound Transit,BUS|RAIL,160|S Line|C Line,kcm:58255|kcm:57784|sound-transit:S_AU_NB|sound-transit:S_KS|kcm:1562|kcm:20041,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:28:55 10:40 ~ 2nd St SW & A St SW(57784) ~ Walk 2m5s ~ Auburn Station (Northbound)(S_AU_NB) ~ RAIL S Line 10:48 11:22 ~ King Street Station(S_KS) ~ Walk 9m13s ~ Alaskan Way S & S Jackson St(1562) ~ BUS C Line 11:38:40 11:58 ~ SW Alaska St & California Ave SW - Bay 3(20041) ~ Walk 15m53s
-65,2,01:03:01,6196,835,10:26:08,11:29:09,Metro Transit|Pierce Transit|Sound Transit,BUS,160|578|425,kcm:58255|kcm:57784|pierce-transit:18728|pierce-transit:10401|pierce-transit:26645|pierce-transit:1332,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:28:55 10:40 ~ 2nd St SW & A St SW(57784) ~ Walk 1m29s ~ Auburn Station - Bay 4(18728) ~ BUS 578 10:47 11:14 ~ Puyallup Station - Bay 3(10401) ~ Walk 48s ~ Puyallup Station - Bay 2(26645) ~ BUS 425 11:19 11:23 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m9s
-65,1,01:08:52,6710,1892,10:26:08,11:35:00,Metro Transit|Sound Transit,BUS,160|578,kcm:58255|kcm:57784|pierce-transit:18728|pierce-transit:10401,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:28:55 10:40 ~ 2nd St SW & A St SW(57784) ~ Walk 1m29s ~ Auburn Station - Bay 4(18728) ~ BUS 578 10:47 11:14 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-65,1,01:09:10,6728,1892,10:55:50,12:05:00,Metro Transit|Sound Transit,BUS,160|578,kcm:58255|kcm:57784|pierce-transit:18728|pierce-transit:10401,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:58:37 11:11 ~ 2nd St SW & A St SW(57784) ~ Walk 1m29s ~ Auburn Station - Bay 4(18728) ~ BUS 578 11:17 11:44 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-66,1,00:32:54,3333,213,10:06:44,10:39:38,Metro Transit|Puget Sound Educational Service District,BUS,160|Road to Independence,kcm:57915|kcm:57950|pudget-sound-educational:area_622,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:09:32 10:12:47 ~ Auburn Way N & S 277th St(57950) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:14:47 10:39:38
-66,1,00:33:36,3375,212,10:11:08,10:44:44,Metro Transit|Puget Sound Educational Service District,BUS,160|Road to Independence,kcm:58255|kcm:57901|pudget-sound-educational:area_622,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:13:55 10:18 ~ Auburn Way N & 15th St NE(57901) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:20 10:44:44
-66,2,00:36:13,3975,0,10:14:52,10:51:05,Pierce Transit|Puget Sound Educational Service District,BUS,Road to Independence|402|Road to Independence,pudget-sound-educational:area_622|pierce-transit:13268|pierce-transit:1010|pudget-sound-educational:area_622,pudget-sound-educational:area_622(area_622) ~ BUS null 10:14:52 10:38Walk 0s ~ Meridian N & Spencer(13268) ~ BUS 402 10:40 10:41 ~ Meridian N & Valley Ave E(1010) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:43 10:51:05
-67,4,03:46:40,17251,880,10:11:08,13:57:48,Metro Transit|Sound Transit,BUS,160|578|545|224|629,kcm:58255|kcm:57784|pierce-transit:8770|pierce-transit:13217|kcm:700|kcm:72488|kcm:68803|kcm:64397,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:13:55 10:25 ~ 2nd St SW & A St SW(57784) ~ Walk 1m10s ~ Auburn Station - Bay 3(8770) ~ BUS 578 10:34 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 1m11s ~ 4th Ave & Pike St(700) ~ BUS 545 11:26 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-67,3,03:02:07,14126,1098,11:10:33,14:12:40,Metro Transit|Sound Transit,BUS,160|578|554|208,kcm:58255|kcm:57784|pierce-transit:8770|pierce-transit:13217|kcm:280|kcm:64590|kcm:64593|kcm:64399,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 11:13:20 11:26 ~ 2nd St SW & A St SW(57784) ~ Walk 1m10s ~ Auburn Station - Bay 3(8770) ~ BUS 578 11:36 12:21 ~ 4th Ave & Pike St(13217) ~ Walk 4m17s ~ 2nd Ave & Stewart St(280) ~ BUS 554 12:37:53 13:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 13:30 14:06:59 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-68,4,03:37:46,16578,700,10:20:02,13:57:48,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS,Road to Independence|578|545|224|629,pudget-sound-educational:area_622|pierce-transit:7910|pierce-transit:13217|kcm:700|kcm:72488|kcm:68803|kcm:64397,pudget-sound-educational:area_622(area_622) ~ BUS null 10:20:02 10:42:20Walk 1m40s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 10:46 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 1m11s ~ 4th Ave & Pike St(700) ~ BUS 545 11:26 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-68,3,02:50:38,13298,918,11:22:02,14:12:40,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS,Road to Independence|578|554|208,pudget-sound-educational:area_622|pierce-transit:7910|pierce-transit:13217|kcm:280|kcm:64590|kcm:64593|kcm:64399,pudget-sound-educational:area_622(area_622) ~ BUS null 11:22:02 11:44:20Walk 1m40s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 11:48 12:21 ~ 4th Ave & Pike St(13217) ~ Walk 4m17s ~ 2nd Ave & Stewart St(280) ~ BUS 554 12:37:53 13:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 13:30 14:06:59 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-69,2,01:42:30,8465,704,10:11:08,11:53:38,Metro Transit|Sound Transit,BUS,160|578|3,kcm:58255|kcm:57784|pierce-transit:8770|pierce-transit:13217|kcm:575|kcm:41350,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:13:55 10:25 ~ 2nd St SW & A St SW(57784) ~ Walk 1m10s ~ Auburn Station - Bay 3(8770) ~ BUS 578 10:34 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 2m32s ~ 3rd Ave & Pike St(575) ~ BUS 3 11:28 11:50:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-69,2,01:42:30,8972,1403,10:26:08,12:08:38,Metro Transit|Sound Transit,BUS|RAIL,160|S Line|3,kcm:58255|kcm:57784|sound-transit:S_AU_NB|sound-transit:S_KS|kcm:1540|kcm:41350,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:28:55 10:40 ~ 2nd St SW & A St SW(57784) ~ Walk 2m5s ~ Auburn Station (Northbound)(S_AU_NB) ~ RAIL S Line 10:48 11:22 ~ King Street Station(S_KS) ~ Walk 11m5s ~ James St & 5th Ave(1540) ~ BUS 3 11:36 12:05:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-69,2,01:42:30,8465,704,10:41:08,12:23:38,Metro Transit|Sound Transit,BUS,160|578|3,kcm:58255|kcm:57784|pierce-transit:8770|pierce-transit:13217|kcm:575|kcm:41350,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:43:55 10:55 ~ 2nd St SW & A St SW(57784) ~ Walk 1m10s ~ Auburn Station - Bay 3(8770) ~ BUS 578 11:04 11:49 ~ 4th Ave & Pike St(13217) ~ Walk 2m32s ~ 3rd Ave & Pike St(575) ~ BUS 3 11:58 12:20:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-71,2,01:24:55,7192,408,10:06:44,11:31:39,Metro Transit|Sound Transit,BUS|TRAM,160|150|1-Line,kcm:57915|kcm:57453|kcm:57458|kcm:99254|sound-transit:99111|sound-transit:99121,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:09:32 10:21 ~ Kent Sounder Station - Bay 3(57453) ~ Walk 1m24s ~ Kent Sounder Station - Bay 8(57458) ~ BUS 150 10:32 11:19:40 ~ SODO Busway & S Lander St(99254) ~ Walk 49s ~ SODO Station(99111) ~ TRAM 1-Line 11:28 11:31 ~ Beacon Hill Station(99121) ~ Walk 39s
-71,2,01:19:38,6875,408,10:22:01,11:41:39,Metro Transit|Sound Transit,BUS|TRAM,160|150|1-Line,kcm:57915|kcm:57453|kcm:57458|kcm:99254|sound-transit:99111|sound-transit:99121,Walk 2m48s ~ Auburn Way N & 37th St NE(57915) ~ BUS 160 10:24:49 10:37 ~ Kent Sounder Station - Bay 3(57453) ~ Walk 1m24s ~ Kent Sounder Station - Bay 8(57458) ~ BUS 150 10:47 11:34:40 ~ SODO Busway & S Lander St(99254) ~ Walk 49s ~ SODO Station(99111) ~ TRAM 1-Line 11:38 11:41 ~ Beacon Hill Station(99121) ~ Walk 39s
-71,2,01:15:31,7239,1237,10:26:08,11:41:39,Metro Transit|Sound Transit,BUS|RAIL|TRAM,160|S Line|1-Line,kcm:58255|kcm:57784|sound-transit:S_AU_NB|sound-transit:S_KS|sound-transit:99101|sound-transit:99121,Walk 2m47s ~ Auburn Way N & 37th St NE(58255) ~ BUS 160 10:28:55 10:40 ~ 2nd St SW & A St SW(57784) ~ Walk 2m5s ~ Auburn Station (Northbound)(S_AU_NB) ~ RAIL S Line 10:48 11:22 ~ King Street Station(S_KS) ~ Walk 11m18s ~ Stadium Station(99101) ~ TRAM 1-Line 11:36 11:41 ~ Beacon Hill Station(99121) ~ Walk 39s
-72,2,01:09:06,6049,138,10:02:33,11:11:39,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS|TRAM,Road to Independence|150|1-Line,pudget-sound-educational:area_622|kcm:59773|kcm:99254|sound-transit:99111|sound-transit:99121,pudget-sound-educational:area_622(area_622) ~ BUS null 10:02:33 10:17:31Walk 27s ~ W James St & Lincoln Ave N(59773) ~ BUS 150 10:19:58 11:04:40 ~ SODO Busway & S Lander St(99254) ~ Walk 49s ~ SODO Station(99111) ~ TRAM 1-Line 11:08 11:11 ~ Beacon Hill Station(99121) ~ Walk 39s
-72,2,01:20:04,6947,474,10:06:25,11:26:29,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS|TRAM,Road to Independence|A Line|1-Line,pudget-sound-educational:area_622|kcm:60750|kcm:60850|sound-transit:99914|sound-transit:99240,pudget-sound-educational:area_622(area_622) ~ BUS null 10:06:25 10:28:19Walk 1m9s ~ Pacific Hwy S & S 272nd St(60750) ~ BUS A Line 10:31:28 10:45:46 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:56 11:25 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-72,1,01:27:20,7716,1764,10:02:33,11:29:53,Metro Transit|Puget Sound Educational Service District,BUS,Road to Independence|150,pudget-sound-educational:area_622|kcm:59773|kcm:99264,pudget-sound-educational:area_622(area_622) ~ BUS null 10:02:33 10:17:31Walk 27s ~ W James St & Lincoln Ave N(59773) ~ BUS 150 10:19:58 11:06:45 ~ SODO Busway & S Holgate St(99264) ~ Walk 23m8s
-73,1,01:30:16,7950,1790,10:24:17,11:54:33,Metro Transit,BUS,181|160,kcm:83706|kcm:57774|kcm:57185,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 181 10:28:55 10:55 ~ Auburn Transit Center - Bay 2(57774) ~ BUS 160 10:58 11:36:08 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
-73,2,01:52:11,11453,3963,10:32:22,12:24:33,Metro Transit,BUS,A Line|165|160,kcm:60660|kcm:48949|kcm:48950|kcm:57127|kcm:57130|kcm:57185,Walk 30m30s ~ Pacific Hwy S & S 316th St(60660) ~ BUS A Line 11:02:52 11:17:16 ~ Pacific Hwy S & S 240th St(48949) ~ Walk 56s ~ Pacific Hwy S & S 240th St(48950) ~ BUS 165 11:20:30 11:51 ~ SE 240th St & 104th Ave SE(57127) ~ Walk 1m45s ~ 104th Ave SE & SE 240th St(57130) ~ BUS 160 12:01:23 12:06:08 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
-73,1,01:54:12,11794,5067,10:32:22,12:26:34,Metro Transit,BUS,A Line|165,kcm:60660|kcm:48949|kcm:48950|kcm:57141,Walk 30m30s ~ Pacific Hwy S & S 316th St(60660) ~ BUS A Line 11:02:52 11:17:16 ~ Pacific Hwy S & S 240th St(48949) ~ Walk 56s ~ Pacific Hwy S & S 240th St(48950) ~ BUS 165 11:20:30 11:52:44 ~ SE 240th St & 116th Ave SE(57141) ~ Walk 33m50s
-74,2,00:46:15,4743,220,10:02:16,10:48:31,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|183|Hyde Shuttle,pudget-sound-educational:area_622|kcm:53050|kcm:50709|sound-generations:area_558,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:05:02 10:20:23Walk 0s ~ Military Rd S & S 272nd St(53050) ~ BUS 183 10:22:23 10:28:58 ~ Reith Rd & Lake Fenwick Rd S(50709) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:30:58 10:48:31
-74,2,00:50:20,4988,220,10:05:04,10:55:24,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|183|Hyde Shuttle,pudget-sound-educational:area_622|kcm:58785|kcm:50779|sound-generations:area_558,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:07:50 10:27:43Walk 0s ~ W Meeker St & Frager Rd(58785) ~ BUS 183 10:29:43 10:33:54 ~ W James St & 64th Ave S(50779) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:35:54 10:55:24
-74,2,00:45:23,4691,220,10:13:59,10:59:22,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|183|Hyde Shuttle,pudget-sound-educational:area_622|kcm:58781|kcm:50781|sound-generations:area_558,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:16:45 10:36:48Walk 0s ~ W Meeker St & Frager Rd(58781) ~ BUS 183 10:38:48 10:39:48 ~ Reith Rd & Lake Fenwick Rd S(50781) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:41:48 10:59:22
-75,1,01:23:27,8713,3408,10:02:22,11:25:49,Metro Transit,BUS,A Line|165,kcm:60660|kcm:48949|kcm:61180|kcm:47570,Walk 30m30s ~ Pacific Hwy S & S 316th St(60660) ~ BUS A Line 10:32:52 10:47:16 ~ Pacific Hwy S & S 240th St(48949) ~ Walk 2m7s ~ Pacific Hwy S & S 240th St(61180) ~ BUS 165 10:57:37 11:14 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-75,2,01:24:06,8942,2885,10:24:17,11:48:23,Metro Transit,BUS,181|A Line|156,kcm:83706|kcm:80438|kcm:60830|kcm:47403|kcm:49190,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 181 10:28:55 10:36 ~ Federal Way TC - Bay 8(80438) ~ BUS A Line 10:40 11:02:22 ~ International Blvd & S 216th St(60830) ~ Walk 6m18s ~ S 216th St & 24th Ave S(47403) ~ BUS 156 11:11 11:21:04 ~ 8th Ave S & Des Moines Memorial Dr S(49190) ~ Walk 27m19s
-75,1,01:36:01,10501,4862,10:12:22,11:48:23,Metro Transit,BUS,A Line|156,kcm:60660|kcm:60830|kcm:47403|kcm:49190,Walk 30m30s ~ Pacific Hwy S & S 316th St(60660) ~ BUS A Line 10:42:52 11:02:22 ~ International Blvd & S 216th St(60830) ~ Walk 6m18s ~ S 216th St & 24th Ave S(47403) ~ BUS 156 11:11 11:21:04 ~ 8th Ave S & Des Moines Memorial Dr S(49190) ~ Walk 27m19s
-76,2,00:50:32,5125,395,10:02:33,10:53:05,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60670|kcm:60750|sound-generations:area_551,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:05:19 10:12Walk 0s ~ Pacific Hwy S & S 312th St(60670) ~ BUS A Line 10:14 10:21:28 ~ Pacific Hwy S & S 272nd St(60750) ~ Walk 2m23s ~ sound-generations:area_551(area_551) ~ BUS null 10:25:51 10:53:05
-76,2,00:50:32,5125,395,10:12:33,11:03:05,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60670|kcm:60750|sound-generations:area_551,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:15:19 10:22Walk 0s ~ Pacific Hwy S & S 312th St(60670) ~ BUS A Line 10:24 10:31:28 ~ Pacific Hwy S & S 272nd St(60750) ~ Walk 2m23s ~ sound-generations:area_551(area_551) ~ BUS null 10:35:51 11:03:05
-76,2,00:50:32,5125,395,10:22:33,11:13:05,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60670|kcm:60750|sound-generations:area_551,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:25:19 10:32Walk 0s ~ Pacific Hwy S & S 312th St(60670) ~ BUS A Line 10:34 10:41:28 ~ Pacific Hwy S & S 272nd St(60750) ~ Walk 2m23s ~ sound-generations:area_551(area_551) ~ BUS null 10:45:51 11:13:05
-77,0,01:05:48,7247,3678,10:02:22,11:08:10,Metro Transit,BUS,A Line,kcm:60660|kcm:60810,Walk 30m30s ~ Pacific Hwy S & S 316th St(60660) ~ BUS A Line 10:32:52 10:50:38 ~ Pacific Hwy S & S 224th St(60810) ~ Walk 17m32s
-77,1,00:53:53,5688,1701,10:24:17,11:18:10,Metro Transit,BUS,181|A Line,kcm:83706|kcm:80438|kcm:60810,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 181 10:28:55 10:36 ~ Federal Way TC - Bay 8(80438) ~ BUS A Line 10:40 11:00:38 ~ Pacific Hwy S & S 224th St(60810) ~ Walk 17m32s
-77,0,01:05:48,7247,3678,10:12:22,11:18:10,Metro Transit,BUS,A Line,kcm:60660|kcm:60810,Walk 30m30s ~ Pacific Hwy S & S 316th St(60660) ~ BUS A Line 10:42:52 11:00:38 ~ Pacific Hwy S & S 224th St(60810) ~ Walk 17m32s
-78,2,00:34:36,4044,220,10:02:33,10:37:09,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60670|kcm:60800|sound-generations:area_551,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:05:19 10:12Walk 0s ~ Pacific Hwy S & S 312th St(60670) ~ BUS A Line 10:14 10:29 ~ Pacific Hwy S & Kent Des Moines Rd(60800) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:31 10:37:09
-78,2,00:34:36,4044,220,10:12:33,10:47:09,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60670|kcm:60800|sound-generations:area_551,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:15:19 10:22Walk 0s ~ Pacific Hwy S & S 312th St(60670) ~ BUS A Line 10:24 10:39 ~ Pacific Hwy S & Kent Des Moines Rd(60800) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:41 10:47:09
-78,1,00:45:37,5087,1559,10:02:33,10:48:10,Metro Transit|Puget Sound Educational Service District,BUS,Road to Independence|A Line,pudget-sound-educational:area_622|kcm:60670|kcm:60810,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:05:19 10:12Walk 0s ~ Pacific Hwy S & S 312th St(60670) ~ BUS A Line 10:14 10:30:38 ~ Pacific Hwy S & S 224th St(60810) ~ Walk 17m32s
-79,1,00:48:20,4530,575,10:24:17,11:12:37,Metro Transit,BUS,181|160,kcm:83706|kcm:57774|kcm:57915,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 181 10:28:55 10:55 ~ Auburn Transit Center - Bay 2(57774) ~ BUS 160 10:58 11:09:49 ~ Auburn Way N & 37th St NE(57915) ~ Walk 2m48s
-79,1,01:03:20,5430,575,10:54:17,11:57:37,Metro Transit,BUS,181|160,kcm:83706|kcm:57774|kcm:57915,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 181 10:58:55 11:27 ~ Auburn Transit Center - Bay 2(57774) ~ BUS 160 11:43 11:54:49 ~ Auburn Way N & 37th St NE(57915) ~ Walk 2m48s
-79,2,01:12:20,6650,679,10:59:17,12:11:37,Metro Transit|Sound Transit,BUS,187|578|160,kcm:83706|kcm:80433|pierce-transit:4136|pierce-transit:18728|kcm:57774|kcm:57915,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 187 11:03:55 11:10 ~ Federal Way TC - Bay 3(80433) ~ Walk 37s ~ Federal Way TC - Bay 2(4136) ~ BUS 578 11:32 11:49 ~ Auburn Station - Bay 4(18728) ~ Walk 44s ~ Auburn Transit Center - Bay 2(57774) ~ BUS 160 11:57 12:08:49 ~ Auburn Way N & 37th St NE(57915) ~ Walk 2m48s
-80,2,00:35:50,4118,220,10:03:45,10:39:35,Pierce Transit|Puget Sound Educational Service District,BUS,Road to Independence|402|Road to Independence,pudget-sound-educational:area_622|pierce-transit:1797|pierce-transit:1004|pudget-sound-educational:area_622,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:06:31 10:15Walk 0s ~ Pacific Hwy & S 336th St(1797) ~ BUS 402 10:17 10:20 ~ Enchanted Pkwy & S 352nd(1004) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:22 10:39:35
-80,1,00:34:47,3479,254,10:07:19,10:42:06,Metro Transit|Puget Sound Educational Service District,BUS,181|Road to Independence,kcm:83784|kcm:83711|pudget-sound-educational:area_622,Walk 3m16s ~ SW 320th St & 1st Ave S(83784) ~ BUS 181 10:10:35 10:11:10 ~ SW 320th St & 3rd Pl SW(83711) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:13:10 10:42:06
-80,2,00:43:58,4670,308,10:12:33,10:56:31,Metro Transit|Puget Sound Educational Service District,BUS,Road to Independence|A Line|Road to Independence,pudget-sound-educational:area_622|kcm:60670|kcm:60750|pudget-sound-educational:area_622,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:15:19 10:22Walk 0s ~ Pacific Hwy S & S 312th St(60670) ~ BUS A Line 10:24 10:31:28 ~ Pacific Hwy S & S 272nd St(60750) ~ Walk 1m9s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:34:37 10:56:31
-81,3,01:47:58,9555,922,10:24:17,12:12:15,Metro Transit|Sound Transit,BUS,181|578|C Line|128,kcm:83706|kcm:80438|pierce-transit:7910|pierce-transit:13217|kcm:431|kcm:20041|kcm:32011|kcm:31871,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 181 10:28:55 10:36 ~ Federal Way TC - Bay 8(80438) ~ Walk 1m15s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 10:46 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 2m36s ~ 3rd Ave & Pike St(431) ~ BUS C Line 11:33 11:58 ~ SW Alaska St & California Ave SW - Bay 3(20041) ~ Walk 42s ~ SW Alaska St & 44th Ave SW - Bay 4(32011) ~ BUS 128 12:05 12:08:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-81,1,02:04:39,11789,4236,10:09:14,12:13:53,Metro Transit|Sound Transit,BUS,578|C Line,pierce-transit:7910|pierce-transit:13217|kcm:431|kcm:20041,Walk 36m46s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 10:46 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 2m36s ~ 3rd Ave & Pike St(431) ~ BUS C Line 11:33 11:58 ~ SW Alaska St & California Ave SW - Bay 3(20041) ~ Walk 15m53s
-81,1,02:19:53,11605,2694,10:12:22,12:32:15,Metro Transit,BUS,A Line|128,kcm:60660|kcm:60921|kcm:60923|kcm:31871,Walk 30m30s ~ Pacific Hwy S & S 316th St(60660) ~ BUS A Line 10:42:52 11:20 ~ Tukwila International Blvd Station - Bay 1(60921) ~ Walk 2m28s ~ Tukwila International Blvd Station - Bay 3(60923) ~ BUS 128 11:32 12:28:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-83,2,01:28:48,8640,2051,10:00:21,11:29:09,Metro Transit|Pierce Transit|Sound Transit,BUS,903|578|425,kcm:60646|kcm:80439|pierce-transit:4136|pierce-transit:10401|pierce-transit:26645|pierce-transit:1332,Walk 19m4s ~ S 333rd St & 1st Way S(60646) ~ BUS 903 10:19:25 10:28 ~ Federal Way TC - Bay 9(80439) ~ Walk 1m ~ Federal Way TC - Bay 2(4136) ~ BUS 578 10:31 11:14 ~ Puyallup Station - Bay 3(10401) ~ Walk 48s ~ Puyallup Station - Bay 2(26645) ~ BUS 425 11:19 11:23 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m9s
-83,1,01:34:39,9153,3108,10:00:21,11:35:00,Metro Transit|Sound Transit,BUS,903|578,kcm:60646|kcm:80439|pierce-transit:4136|pierce-transit:10401,Walk 19m4s ~ S 333rd St & 1st Way S(60646) ~ BUS 903 10:19:25 10:28 ~ Federal Way TC - Bay 9(80439) ~ Walk 1m ~ Federal Way TC - Bay 2(4136) ~ BUS 578 10:31 11:14 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-83,1,01:01:52,5891,1322,10:54:17,11:56:09,Metro Transit|Pierce Transit,BUS,181|402,kcm:83706|kcm:61330|pierce-transit:1792|pierce-transit:1332,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 181 10:58:55 11:02:47 ~ S 320th St & Pacific Hwy S(61330) ~ Walk 6m31s ~ Pacific Hwy & S 324th St(1792) ~ BUS 402 11:14 11:50 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m9s
-84,2,00:41:39,4467,220,10:03:45,10:45:24,Pierce Transit|Puget Sound Educational Service District,BUS,Road to Independence|402|Road to Independence,pudget-sound-educational:area_622|pierce-transit:1797|pierce-transit:1004|pudget-sound-educational:area_622,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:06:31 10:15Walk 0s ~ Pacific Hwy & S 336th St(1797) ~ BUS 402 10:17 10:20 ~ Enchanted Pkwy & S 352nd(1004) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:22 10:45:24
-84,1,00:40:36,3828,254,10:07:19,10:47:55,Metro Transit|Puget Sound Educational Service District,BUS,181|Road to Independence,kcm:83784|kcm:83711|pudget-sound-educational:area_622,Walk 3m16s ~ SW 320th St & 1st Ave S(83784) ~ BUS 181 10:10:35 10:11:10 ~ SW 320th St & 3rd Pl SW(83711) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:13:10 10:47:55
-84,2,00:46:27,4755,220,10:13:33,11:00:00,Pierce Transit|Puget Sound Educational Service District,BUS,Road to Independence|409|Road to Independence,pudget-sound-educational:area_622|pierce-transit:326261448|pierce-transit:1133|pudget-sound-educational:area_622,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:16:19 10:46Walk 0s ~ 29th St NE & 5th Ave NE(326261448) ~ BUS 409 10:48 10:49 ~ Main Ave E & 15th St SE(1133) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:51 11:00
-85,4,03:33:31,16578,1034,10:24:17,13:57:48,Metro Transit|Sound Transit,BUS,181|578|545|224|629,kcm:83706|kcm:80438|pierce-transit:7910|pierce-transit:13217|kcm:700|kcm:72488|kcm:68803|kcm:64397,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 181 10:28:55 10:36 ~ Federal Way TC - Bay 8(80438) ~ Walk 1m15s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 10:46 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 1m11s ~ 4th Ave & Pike St(700) ~ BUS 545 11:26 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-85,3,03:48:34,18639,3430,10:09:14,13:57:48,Metro Transit|Sound Transit,BUS,578|545|224|629,pierce-transit:7910|pierce-transit:13217|kcm:700|kcm:72488|kcm:68803|kcm:64397,Walk 36m46s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 10:46 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 1m11s ~ 4th Ave & Pike St(700) ~ BUS 545 11:26 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-85,3,02:48:23,13417,1252,11:24:17,14:12:40,Metro Transit|Sound Transit,BUS,181|578|554|208,kcm:83706|kcm:80438|pierce-transit:7910|pierce-transit:13217|kcm:280|kcm:64590|kcm:64593|kcm:64399,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 181 11:28:55 11:36 ~ Federal Way TC - Bay 8(80438) ~ Walk 1m15s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 11:48 12:21 ~ 4th Ave & Pike St(13217) ~ Walk 4m17s ~ 2nd Ave & Stewart St(280) ~ BUS 554 12:37:53 13:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 13:30 14:06:59 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-86,4,03:26:19,16078,942,10:31:29,13:57:48,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS,Road to Independence|578|545|224|629,pudget-sound-educational:area_622|kcm:80437|pierce-transit:7910|pierce-transit:13217|kcm:700|kcm:72488|kcm:68803|kcm:64397,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:34:15 10:42:05Walk 1m42s ~ Federal Way TC - Bay 7(80437) ~ Walk 13s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 10:46 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 1m11s ~ 4th Ave & Pike St(700) ~ BUS 545 11:26 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-86,3,03:48:34,18639,3430,10:09:14,13:57:48,Metro Transit|Sound Transit,BUS,578|545|224|629,pierce-transit:7910|pierce-transit:13217|kcm:700|kcm:72488|kcm:68803|kcm:64397,Walk 36m46s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 10:46 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 1m11s ~ 4th Ave & Pike St(700) ~ BUS 545 11:26 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-86,3,02:39:11,12798,1160,11:33:29,14:12:40,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS,Road to Independence|578|554|208,pudget-sound-educational:area_622|kcm:80437|pierce-transit:7910|pierce-transit:13217|kcm:280|kcm:64590|kcm:64593|kcm:64399,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:36:15 11:44:05Walk 1m42s ~ Federal Way TC - Bay 7(80437) ~ Walk 13s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 11:48 12:21 ~ 4th Ave & Pike St(13217) ~ Walk 4m17s ~ 2nd Ave & Stewart St(280) ~ BUS 554 12:37:53 13:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 13:30 14:06:59 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-87,2,01:29:21,7792,858,10:24:17,11:53:38,Metro Transit|Sound Transit,BUS,181|578|3,kcm:83706|kcm:80438|pierce-transit:7910|pierce-transit:13217|kcm:575|kcm:41350,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 181 10:28:55 10:36 ~ Federal Way TC - Bay 8(80438) ~ Walk 1m15s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 10:46 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 2m32s ~ 3rd Ave & Pike St(575) ~ BUS 3 11:28 11:50:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-87,1,01:44:24,9854,3254,10:09:14,11:53:38,Metro Transit|Sound Transit,BUS,578|3,pierce-transit:7910|pierce-transit:13217|kcm:575|kcm:41350,Walk 36m46s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 10:46 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 2m32s ~ 3rd Ave & Pike St(575) ~ BUS 3 11:28 11:50:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-87,2,01:24:21,7542,936,10:59:17,12:23:38,Metro Transit|Sound Transit,BUS,187|578|3,kcm:83706|kcm:80433|pierce-transit:7910|pierce-transit:13217|kcm:575|kcm:41350,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 187 11:03:55 11:10 ~ Federal Way TC - Bay 3(80433) ~ Walk 2m22s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 11:16 11:49 ~ 4th Ave & Pike St(13217) ~ Walk 2m32s ~ 3rd Ave & Pike St(575) ~ BUS 3 11:58 12:20:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-89,1,01:34:07,8841,2725,10:02:22,11:36:29,Metro Transit|Sound Transit,BUS|TRAM,A Line|1-Line,kcm:60660|kcm:60850|sound-transit:99914|sound-transit:99240,Walk 30m30s ~ Pacific Hwy S & S 316th St(60660) ~ BUS A Line 10:32:52 10:55:46 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 11:06 11:35 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-89,2,01:22:12,7282,748,10:24:17,11:46:29,Metro Transit|Sound Transit,BUS|TRAM,181|A Line|1-Line,kcm:83706|kcm:80438|kcm:60850|sound-transit:99914|sound-transit:99240,Walk 4m38s ~ S 320th St & 1st Ave S(83706) ~ BUS 181 10:28:55 10:36 ~ Federal Way TC - Bay 8(80438) ~ BUS A Line 10:40 11:05:46 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 11:16 11:45 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-89,1,01:34:07,8841,2725,10:12:22,11:46:29,Metro Transit|Sound Transit,BUS|TRAM,A Line|1-Line,kcm:60660|kcm:60850|sound-transit:99914|sound-transit:99240,Walk 30m30s ~ Pacific Hwy S & S 316th St(60660) ~ BUS A Line 10:42:52 11:05:46 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 11:16 11:45 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-90,2,01:13:56,6681,606,10:02:33,11:16:29,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS|TRAM,Road to Independence|A Line|1-Line,pudget-sound-educational:area_622|kcm:60670|kcm:60850|sound-transit:99914|sound-transit:99240,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:05:19 10:12Walk 0s ~ Pacific Hwy S & S 312th St(60670) ~ BUS A Line 10:14 10:35:46 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:46 11:15 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-90,3,01:18:10,7644,760,10:03:29,11:21:39,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS|TRAM,Road to Independence|578|101|1-Line,pudget-sound-educational:area_622|kcm:80437|pierce-transit:7910|pierce-transit:13217|kcm:1230|kcm:99271|sound-transit:99101|sound-transit:99121,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:06:15 10:14:05Walk 1m42s ~ Federal Way TC - Bay 7(80437) ~ Walk 13s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 10:18 10:53 ~ 4th Ave & Pike St(13217) ~ Walk 3m11s ~ Union St & 4th Ave(1230) ~ BUS 101 11:02:47 11:11:44 ~ SODO Busway & S Royal Brougham Way(99271) ~ Walk 1m50s ~ Stadium Station(99101) ~ TRAM 1-Line 11:16 11:21 ~ Beacon Hill Station(99121) ~ Walk 39s
-90,2,01:13:56,6681,606,10:12:33,11:26:29,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS|TRAM,Road to Independence|A Line|1-Line,pudget-sound-educational:area_622|kcm:60670|kcm:60850|sound-transit:99914|sound-transit:99240,Walk 2m46s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:15:19 10:22Walk 0s ~ Pacific Hwy S & S 312th St(60670) ~ BUS A Line 10:24 10:45:46 ~ International Blvd & S 200th St(60850) ~ Walk 4m23s ~ Angle Lake Station(99914) ~ TRAM 1-Line 10:56 11:25 ~ Beacon Hill Station(99240) ~ Walk 1m29s
-91,2,01:59:45,10446,1981,10:05:53,12:05:38,Metro Transit,BUS,50|101|160,kcm:31970|kcm:99253|kcm:79610|kcm:59891|kcm:57375,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:09:01 10:33:54 ~ SODO Busway & S Spokane St(99253) ~ BUS 101 10:48 11:03 ~ SW Sunset Blvd & Hardie Ave SW(79610) ~ Walk 4m34s ~ Rainier Ave S & S 3rd Pl(59891) ~ BUS 160 11:22:49 11:47:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
-91,2,01:58:45,10512,2158,10:21:53,12:20:38,Metro Transit,BUS,50|101|160,kcm:31970|kcm:99254|kcm:99263|kcm:79610|kcm:59891|kcm:57375,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:25:01 10:48 ~ SODO Busway & S Lander St(99254) ~ Walk 2m30s ~ SODO Busway & S Lander St(99263) ~ BUS 101 11:00:45 11:18 ~ SW Sunset Blvd & Hardie Ave SW(79610) ~ Walk 4m34s ~ Rainier Ave S & S 3rd Pl(59891) ~ BUS 160 11:37:22 12:02:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
-91,2,01:58:45,10386,1981,10:35:53,12:34:38,Metro Transit,BUS,50|101|160,kcm:31970|kcm:99253|kcm:79610|kcm:59891|kcm:57375,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:39:01 11:03:54 ~ SODO Busway & S Spokane St(99253) ~ BUS 101 11:18 11:33 ~ SW Sunset Blvd & Hardie Ave SW(79610) ~ Walk 4m34s ~ Rainier Ave S & S 3rd Pl(59891) ~ BUS 160 11:51:22 12:16:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
-92,2,01:10:03,6139,188,10:07:53,11:17:56,Metro Transit|Sound Generations,BUS,Hyde Shuttle|150|Hyde Shuttle,sound-generations:area_560|kcm:45870|kcm:99253|kcm:58134|sound-generations:area_558,sound-generations:area_560(area_560) ~ BUS null 10:07:53 10:21:25Walk 0s ~ 4th Ave S & S Spokane St(45870) ~ Walk 2m35s ~ SODO Busway & S Spokane St(99253) ~ BUS 150 10:26 10:54:35 ~ West Valley Hwy & Todd Blvd(58134) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:56:35 11:17:56
-92,2,01:10:03,6139,188,10:22:53,11:32:56,Metro Transit|Sound Generations,BUS,Hyde Shuttle|150|Hyde Shuttle,sound-generations:area_560|kcm:45870|kcm:99253|kcm:58134|sound-generations:area_558,sound-generations:area_560(area_560) ~ BUS null 10:22:53 10:36:25Walk 0s ~ 4th Ave S & S Spokane St(45870) ~ Walk 2m35s ~ SODO Busway & S Spokane St(99253) ~ BUS 150 10:41 11:09:35 ~ West Valley Hwy & Todd Blvd(58134) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 11:11:35 11:32:56
-92,2,01:10:03,6139,188,10:37:53,11:47:56,Metro Transit|Sound Generations,BUS,Hyde Shuttle|150|Hyde Shuttle,sound-generations:area_560|kcm:45870|kcm:99253|kcm:58134|sound-generations:area_558,sound-generations:area_560(area_560) ~ BUS null 10:37:53 10:51:25Walk 0s ~ 4th Ave S & S Spokane St(45870) ~ Walk 2m35s ~ SODO Busway & S Spokane St(99253) ~ BUS 150 10:56 11:24:35 ~ West Valley Hwy & Todd Blvd(58134) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 11:26:35 11:47:56
-93,2,01:22:43,7563,1087,10:21:53,11:44:36,Metro Transit,BUS,50|120|165,kcm:31970|kcm:21600|kcm:22010|kcm:52305|kcm:48620,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:25:01 10:36:44 ~ Delridge Way SW & SW Genesee St(21600) ~ Walk 1m12s ~ Delridge Way SW & SW Genesee St(22010) ~ BUS 120 10:48:18 11:24 ~ Burien Transit Center - Bay 5(52305) ~ BUS 165 11:27 11:34:26 ~ 1st Ave S & SW 178th St(48620) ~ Walk 10m10s
-93,1,01:29:02,8787,3111,10:15:34,11:44:36,Metro Transit,BUS,120|165,kcm:21990|kcm:52305|kcm:48620,Walk 31m58s ~ Delridge Way SW & SW Andover St(21990) ~ BUS 120 10:47:32 11:24 ~ Burien Transit Center - Bay 5(52305) ~ BUS 165 11:27 11:34:26 ~ 1st Ave S & SW 178th St(48620) ~ Walk 10m10s
-93,2,01:29:28,8011,1147,10:41:08,12:10:36,Metro Transit,BUS,128|120|165,kcm:31970|kcm:22160|kcm:22152|kcm:52305|kcm:48620,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 128 10:44:16 11:00 ~ SW Orchard St & Delridge Way SW(22160) ~ Walk 2m3s ~ Delridge Way SW & SW Myrtle St(22152) ~ BUS 120 11:14 11:44 ~ Burien Transit Center - Bay 5(52305) ~ BUS 165 11:53 12:00:26 ~ 1st Ave S & SW 178th St(48620) ~ Walk 10m10s
-94,2,00:48:54,4736,0,10:09:43,10:58:37,Metro Transit|Sound Generations,BUS,Hyde Shuttle|128|Hyde Shuttle,sound-generations:area_560|kcm:22252|kcm:21104|sound-generations:area_551,sound-generations:area_560(area_560) ~ BUS null 10:09:43 10:31:59Walk 0s ~ Delridge Way SW & SW Henderson St(22252) ~ BUS 128 10:33:59 10:37:47 ~ 8th Ave SW & SW 99th St(21104) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:39:47 10:58:37
-94,1,00:59:53,4960,226,10:01:08,11:01:01,Metro Transit|Sound Generations,BUS,128|Hyde Shuttle,kcm:31970|kcm:49585|sound-generations:area_551,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 128 10:04:16 10:38:40 ~ 8th Ave SW & SW 102nd St(49585) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:40:40 11:01:01
-94,2,00:53:05,4987,0,10:13:02,11:06:07,Metro Transit|Sound Generations,BUS,Hyde Shuttle|132|Hyde Shuttle,sound-generations:area_560|kcm:49739|kcm:49750|sound-generations:area_551,sound-generations:area_560(area_560) ~ BUS null 10:13:02 10:39:03Walk 0s ~ 14th Ave S & S Trenton St(49739) ~ BUS 132 10:41:03 10:43:23 ~ Des Moines Memorial Dr S & S 96th St(49750) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:45:23 11:06:07
-95,1,01:41:05,8419,1524,10:01:08,11:42:13,Metro Transit,BUS,128|A Line,kcm:31970|kcm:60922|kcm:60921|kcm:61170,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 128 10:04:16 11:03 ~ Tukwila International Blvd Station - Bay 2(60922) ~ Walk 2m9s ~ Tukwila International Blvd Station - Bay 1(60921) ~ BUS A Line 11:10 11:26:17 ~ Pacific Hwy S & S 224th St(61170) ~ Walk 15m56s
-95,2,01:36:20,8840,1729,10:05:53,11:42:13,Metro Transit|Sound Transit,BUS|TRAM,50|1-Line|A Line,kcm:31970|kcm:99263|sound-transit:99111|sound-transit:99913|kcm:61120|kcm:61170,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:09:01 10:32 ~ SODO Busway & S Lander St(99263) ~ Walk 2m1s ~ SODO Station(99111) ~ TRAM 1-Line 10:38 11:10 ~ Angle Lake Station(99913) ~ Walk 2m18s ~ International Blvd & S 200th St(61120) ~ BUS A Line 11:21:12 11:26:17 ~ Pacific Hwy S & S 224th St(61170) ~ Walk 15m56s
-95,2,01:39:55,9149,1842,10:21:53,12:01:48,Metro Transit|Sound Transit,BUS|TRAM,50|1-Line|635,kcm:31970|kcm:99254|sound-transit:99111|sound-transit:99913|kcm:47200|kcm:47404,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:25:01 10:48 ~ SODO Busway & S Lander St(99254) ~ Walk 49s ~ SODO Station(99111) ~ TRAM 1-Line 10:58 11:30 ~ Angle Lake Station(99913) ~ Walk 1m37s ~ S 200th St & 28th Ave S(47200) ~ BUS 635 11:39 11:42:55 ~ S 216th St & 20th Ave S(47404) ~ Walk 18m53s
-96,2,00:50:56,4858,0,10:13:02,11:03:58,Metro Transit|Sound Generations,BUS,Hyde Shuttle|132|Hyde Shuttle,sound-generations:area_560|kcm:49739|kcm:49750|sound-generations:area_551,sound-generations:area_560(area_560) ~ BUS null 10:13:02 10:39:03Walk 0s ~ 14th Ave S & S Trenton St(49739) ~ BUS 132 10:41:03 10:43:23 ~ Des Moines Memorial Dr S & S 96th St(49750) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:45:23 11:03:58
-96,1,01:06:18,5345,226,10:01:08,11:07:26,Metro Transit|Sound Generations,BUS,128|Hyde Shuttle,kcm:31970|kcm:49585|sound-generations:area_551,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 128 10:04:16 10:38:40 ~ 8th Ave SW & SW 102nd St(49585) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:40:40 11:07:26
-96,2,00:58:36,5318,0,10:17:09,11:15:45,Metro Transit|Sound Generations,BUS,Hyde Shuttle|120|Hyde Shuttle,sound-generations:area_560|kcm:21280|kcm:52050|sound-generations:area_551,sound-generations:area_560(area_560) ~ BUS null 10:17:09 10:41:12Walk 0s ~ SW Roxbury St & 20th Ave SW(21280) ~ BUS 120 10:43:12 10:45:53 ~ 15th Ave SW & SW 100th St(52050) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:47:53 11:15:45
-97,2,01:41:14,8227,482,10:05:53,11:47:07,Metro Transit,BUS,50|150|160,kcm:31970|kcm:99253|kcm:57455|kcm:57451|kcm:58255,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:09:01 10:33:54 ~ SODO Busway & S Spokane St(99253) ~ BUS 150 10:41 11:26 ~ Kent Sounder Station - Bay 5(57455) ~ Walk 44s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 11:33 11:44:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-97,2,01:41:14,8353,659,10:21:53,12:03:07,Metro Transit,BUS,50|150|160,kcm:31970|kcm:99254|kcm:99263|kcm:57455|kcm:57451|kcm:58255,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:25:01 10:48 ~ SODO Busway & S Lander St(99254) ~ Walk 2m30s ~ SODO Busway & S Lander St(99263) ~ BUS 150 10:54 11:41 ~ Kent Sounder Station - Bay 5(57455) ~ Walk 44s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 11:49 12:00:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-97,2,01:42:14,8287,482,10:35:53,12:18:07,Metro Transit,BUS,50|150|160,kcm:31970|kcm:99253|kcm:57455|kcm:57451|kcm:58255,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:39:01 11:03:54 ~ SODO Busway & S Spokane St(99253) ~ BUS 150 11:11 11:57 ~ Kent Sounder Station - Bay 5(57455) ~ Walk 44s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 12:04 12:15:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-98,2,01:17:49,6605,188,10:07:53,11:25:42,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|150|Road to Independence,sound-generations:area_560|kcm:45870|kcm:99253|kcm:80580|pudget-sound-educational:area_622,sound-generations:area_560(area_560) ~ BUS null 10:07:53 10:21:25Walk 0s ~ 4th Ave S & S Spokane St(45870) ~ Walk 2m35s ~ SODO Busway & S Spokane St(99253) ~ BUS 150 10:26 11:08:20 ~ W James St & Lincoln Ave N(80580) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:10:20 11:25:42
-98,2,01:17:49,6605,188,10:22:53,11:40:42,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|150|Road to Independence,sound-generations:area_560|kcm:45870|kcm:99253|kcm:80580|pudget-sound-educational:area_622,sound-generations:area_560(area_560) ~ BUS null 10:22:53 10:36:25Walk 0s ~ 4th Ave S & S Spokane St(45870) ~ Walk 2m35s ~ SODO Busway & S Spokane St(99253) ~ BUS 150 10:41 11:23:20 ~ W James St & Lincoln Ave N(80580) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:25:20 11:40:42
-98,2,01:17:49,6605,188,10:37:53,11:55:42,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|150|Road to Independence,sound-generations:area_560|kcm:45870|kcm:99253|kcm:80580|pudget-sound-educational:area_622,sound-generations:area_560(area_560) ~ BUS null 10:37:53 10:51:25Walk 0s ~ 4th Ave S & S Spokane St(45870) ~ Walk 2m35s ~ SODO Busway & S Spokane St(99253) ~ BUS 150 10:56 11:38:20 ~ W James St & Lincoln Ave N(80580) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:40:20 11:55:42
-99,1,01:59:21,11465,4233,10:10:04,12:09:25,Metro Transit|Sound Transit,BUS,C Line|578,kcm:19862|kcm:539|pierce-transit:20510|pierce-transit:4136,Walk 15m56s ~ SW Alaska St & California Ave SW - Bay 1(19862) ~ BUS C Line 10:26 10:51:13 ~ 3rd Ave & Marion St(539) ~ Walk 2m7s ~ 2nd Ave & Marion St(20510) ~ BUS 578 11:00 11:32 ~ Federal Way TC - Bay 2(4136) ~ Walk 37m25s
-99,3,01:54:55,10025,980,10:21:08,12:16:03,Metro Transit|Sound Transit,BUS,128|560|574|181,kcm:31970|kcm:22253|pierce-transit:27940|pierce-transit:13215|pierce-transit:29410|kcm:80433|kcm:83784,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 128 10:24:16 10:54:33 ~ Delridge Way SW & SW Barton St(22253) ~ Walk 6m ~ SW Roxbury St & 20th Ave SW(27940) ~ BUS 560 11:03 11:26 ~ SeaTac Airport Terminal - Bay 2(13215) ~ BUS 574 11:40 12:00 ~ Federal Way TC - Bay 5(29410) ~ Walk 33s ~ Federal Way TC - Bay 3(80433) ~ BUS 181 12:05 12:12:47 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-99,2,02:05:59,10581,1658,10:10:04,12:16:03,Metro Transit|Sound Transit,BUS,C Line|578|181,kcm:19862|kcm:539|pierce-transit:20510|pierce-transit:4136|kcm:80433|kcm:83784,Walk 15m56s ~ SW Alaska St & California Ave SW - Bay 1(19862) ~ BUS C Line 10:26 10:51:13 ~ 3rd Ave & Marion St(539) ~ Walk 2m7s ~ 2nd Ave & Marion St(20510) ~ BUS 578 11:00 11:32 ~ Federal Way TC - Bay 2(4136) ~ Walk 37s ~ Federal Way TC - Bay 3(80433) ~ BUS 181 12:05 12:12:47 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-100,3,01:12:19,7132,535,10:01:32,11:13:51,Metro Transit|Sound Generations|Sound Transit,BUS,Hyde Shuttle|24|578|181,sound-generations:area_560|kcm:30635|kcm:619|pierce-transit:30709|pierce-transit:4136|kcm:80433|kcm:83784,sound-generations:area_560(area_560) ~ BUS null 10:01:32 10:22:28Walk 1m32s ~ 4th Ave S & S Royal Brougham Way(30635) ~ BUS 24 10:26 10:28 ~ 4th Ave S & S Jackson St(619) ~ Walk 1m54s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 578 10:33 11:01 ~ Federal Way TC - Bay 2(4136) ~ Walk 37s ~ Federal Way TC - Bay 3(80433) ~ BUS 181 11:04 11:10:35 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-100,2,01:30:29,7594,494,10:07:53,11:38:22,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|150|Road to Independence,sound-generations:area_560|kcm:45870|kcm:99253|kcm:50779|pudget-sound-educational:area_622,sound-generations:area_560(area_560) ~ BUS null 10:07:53 10:21:25Walk 0s ~ 4th Ave S & S Spokane St(45870) ~ Walk 2m35s ~ SODO Busway & S Spokane St(99253) ~ BUS 150 10:26 11:06:18 ~ W James St & 64th Ave S(50779) ~ Walk 1m10s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:09:28 11:35:36Walk 2m46s
-100,3,01:32:36,8124,220,10:09:39,11:42:15,Puget Sound Educational Service District|Sound Generations|Sound Transit,BUS,Hyde Shuttle|560|574|Road to Independence,sound-generations:area_560|pierce-transit:15709|pierce-transit:13215|pierce-transit:25846|pudget-sound-educational:area_622,sound-generations:area_560(area_560) ~ BUS null 10:09:39 10:31Walk 0s ~ Westwood Village - Bay 4(15709) ~ BUS 560 10:33 10:58 ~ SeaTac Airport Terminal - Bay 2(13215) ~ BUS 574 11:10 11:22 ~ Star Lake Fwy Station(25846) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:24 11:39:29Walk 2m46s
-101,2,01:59:23,9816,1162,10:05:53,12:05:16,Metro Transit|Pierce Transit|Sound Transit,BUS,50|594|400,kcm:31970|kcm:99253|pierce-transit:597|pierce-transit:20163|pierce-transit:12938|pierce-transit:8058,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:09:01 10:33:54 ~ SODO Busway & S Spokane St(99253) ~ Walk 2s ~ Bus Wy & S Spokane St(597) ~ BUS 594 10:36 11:16 ~ Tacoma Dome Station - Zone E(20163) ~ Walk 1m10s ~ Tacoma Dome Station - Zone C(12938) ~ BUS 400 11:30 11:54 ~ 5th St SW & 9th Ave SW - Red Lot(8058) ~ Walk 11m16s
-101,1,02:27:56,12211,2929,10:10:04,12:38:00,Metro Transit|Sound Transit,BUS,C Line|578,kcm:19862|kcm:539|pierce-transit:20510|pierce-transit:10401,Walk 15m56s ~ SW Alaska St & California Ave SW - Bay 1(19862) ~ BUS C Line 10:26 10:51:13 ~ 3rd Ave & Marion St(539) ~ Walk 2m7s ~ 2nd Ave & Marion St(20510) ~ BUS 578 11:00 12:17 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-101,3,02:08:16,10752,899,10:50:53,12:59:09,Metro Transit|Pierce Transit|Sound Transit,BUS,50|150|578|402,kcm:31970|kcm:99254|kcm:620|pierce-transit:30709|pierce-transit:4136|pierce-transit:29410|pierce-transit:1332,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:54:01 11:17 ~ SODO Busway & S Lander St(99254) ~ BUS 150 11:19:40 11:26 ~ 4th Ave S & S Jackson St(620) ~ Walk 1m54s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 578 11:33 12:03 ~ Federal Way TC - Bay 2(4136) ~ Walk 1m10s ~ Federal Way TC - Bay 5(29410) ~ BUS 402 12:11 12:53 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m9s
-102,3,01:30:43,8085,354,10:01:32,11:32:15,Metro Transit|Puget Sound Educational Service District|Sound Generations|Sound Transit,BUS,Hyde Shuttle|24|578|Road to Independence,sound-generations:area_560|kcm:30635|kcm:619|pierce-transit:30709|pierce-transit:4136|pudget-sound-educational:area_622,sound-generations:area_560(area_560) ~ BUS null 10:01:32 10:22:28Walk 1m32s ~ 4th Ave S & S Royal Brougham Way(30635) ~ BUS 24 10:26 10:28 ~ 4th Ave S & S Jackson St(619) ~ Walk 1m54s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 578 10:33 11:01 ~ Federal Way TC - Bay 2(4136) ~ Walk 1m59s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:04:59 11:32:15
-102,2,01:28:52,7268,188,10:07:53,11:36:45,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|150|Road to Independence,sound-generations:area_560|kcm:45870|kcm:99253|kcm:80580|pudget-sound-educational:area_622,sound-generations:area_560(area_560) ~ BUS null 10:07:53 10:21:25Walk 0s ~ 4th Ave S & S Spokane St(45870) ~ Walk 2m35s ~ SODO Busway & S Spokane St(99253) ~ BUS 150 10:26 11:08:20 ~ W James St & Lincoln Ave N(80580) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:10:20 11:36:45
-102,2,01:28:52,7268,188,10:22:53,11:51:45,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Hyde Shuttle|150|Road to Independence,sound-generations:area_560|kcm:45870|kcm:99253|kcm:80580|pudget-sound-educational:area_622,sound-generations:area_560(area_560) ~ BUS null 10:22:53 10:36:25Walk 0s ~ 4th Ave S & S Spokane St(45870) ~ Walk 2m35s ~ SODO Busway & S Spokane St(99253) ~ BUS 150 10:41 11:23:20 ~ W James St & Lincoln Ave N(80580) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:25:20 11:51:45
-103,4,03:21:55,15791,930,10:35:53,13:57:48,Metro Transit|Sound Transit,BUS,50|C Line|545|224|629,kcm:31970|kcm:33220|kcm:539|kcm:660|kcm:72488|kcm:68803|kcm:64397,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:39:01 10:44:45 ~ SW Alaska St & Fauntleroy Way SW(33220) ~ BUS C Line 10:47:29 11:11:13 ~ 3rd Ave & Marion St(539) ~ Walk 2m56s ~ 4th Ave & Madison St(660) ~ BUS 545 11:23:53 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-103,3,03:27:44,16270,1918,10:30:04,13:57:48,Metro Transit|Sound Transit,BUS,C Line|545|224|629,kcm:19862|kcm:539|kcm:660|kcm:72488|kcm:68803|kcm:64397,Walk 15m56s ~ SW Alaska St & California Ave SW - Bay 1(19862) ~ BUS C Line 10:46 11:11:13 ~ 3rd Ave & Marion St(539) ~ Walk 2m56s ~ 4th Ave & Madison St(660) ~ BUS 545 11:23:53 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-104,2,01:59:03,9899,1326,10:11:27,12:10:30,Metro Transit|Sound Generations|Sound Transit,BUS,Hyde Shuttle|554|208,sound-generations:area_560|kcm:21850|kcm:1480|kcm:64590|kcm:64593|kcm:64399,sound-generations:area_560(area_560) ~ BUS null 10:11:27 10:33:04Walk 0s ~ Airport Way S & S Royal Brougham Way(21850) ~ Walk 11m6s ~ S Jackson St & Maynard Ave S(1480) ~ BUS 554 10:46:10 11:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 11:31 12:04:49 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-104,3,03:05:58,13952,530,10:51:50,13:57:48,Metro Transit|Sound Generations|Sound Transit,BUS,Hyde Shuttle|545|224|629,sound-generations:area_560|kcm:21765|kcm:72488|kcm:68803|kcm:64397,sound-generations:area_560(area_560) ~ BUS null 10:51:50 11:14:44Walk 16s ~ 6th Ave S & S Royal Brougham Way(21765) ~ BUS 545 11:17 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-105,2,01:16:14,7909,2061,10:05:53,11:22:07,Metro Transit,BUS,50|C Line|E Line,kcm:31970|kcm:33220|kcm:558|kcm:6320,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:09:01 10:14:45 ~ SW Alaska St & Fauntleroy Way SW(33220) ~ BUS C Line 10:17:29 10:42 ~ 3rd Ave & Seneca St(558) ~ BUS E Line 10:48:24 10:57:02 ~ Aurora Ave N & Lynn St(6320) ~ Walk 25m5s
-105,1,01:22:03,8388,3049,10:00:04,11:22:07,Metro Transit,BUS,C Line|E Line,kcm:19862|kcm:558|kcm:6320,Walk 15m56s ~ SW Alaska St & California Ave SW - Bay 1(19862) ~ BUS C Line 10:16 10:42 ~ 3rd Ave & Seneca St(558) ~ BUS E Line 10:48:24 10:57:02 ~ Aurora Ave N & Lynn St(6320) ~ Walk 25m5s
-105,1,01:13:34,6683,1448,10:10:04,11:23:38,Metro Transit,BUS,C Line|3,kcm:19862|kcm:558|kcm:41350,Walk 15m56s ~ SW Alaska St & California Ave SW - Bay 1(19862) ~ BUS C Line 10:26 10:52 ~ 3rd Ave & Seneca St(558) ~ BUS 3 10:55:51 11:20:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-106,0,02:47:34,19399,12750,10:00:00,12:47:34,,,,,Walk 2h47m34s
-107,1,00:35:46,3643,411,10:05:53,10:41:39,Metro Transit|Sound Transit,BUS|TRAM,50|1-Line,kcm:31970|kcm:99263|sound-transit:99111|sound-transit:99121,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:09:01 10:32 ~ SODO Busway & S Lander St(99263) ~ Walk 2m1s ~ SODO Station(99111) ~ TRAM 1-Line 10:38 10:41 ~ Beacon Hill Station(99121) ~ Walk 39s
-107,0,00:44:49,4202,1263,10:05:53,10:50:42,Metro Transit,BUS,50,kcm:31970|kcm:30770,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:09:01 10:36:46 ~ S Columbian Way & S Spokane St(30770) ~ Walk 13m56s
-107,1,00:39:46,3832,334,10:21:53,11:01:39,Metro Transit|Sound Transit,BUS|TRAM,50|1-Line,kcm:31970|kcm:99254|sound-transit:99111|sound-transit:99121,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:25:01 10:48 ~ SODO Busway & S Lander St(99254) ~ Walk 49s ~ SODO Station(99111) ~ TRAM 1-Line 10:58 11:01 ~ Beacon Hill Station(99121) ~ Walk 39s
-108,1,00:24:25,2725,82,10:07:14,10:31:39,Sound Generations|Sound Transit,BUS|TRAM,Hyde Shuttle|1-Line,sound-generations:area_560|sound-transit:99111|sound-transit:99121,sound-generations:area_560(area_560) ~ BUS null 10:07:14 10:25:30Walk 30s ~ SODO Station(99111) ~ TRAM 1-Line 10:28 10:31 ~ Beacon Hill Station(99121) ~ Walk 39s
-108,1,00:24:25,2725,82,10:17:14,10:41:39,Sound Generations|Sound Transit,BUS|TRAM,Hyde Shuttle|1-Line,sound-generations:area_560|sound-transit:99111|sound-transit:99121,sound-generations:area_560(area_560) ~ BUS null 10:17:14 10:35:30Walk 30s ~ SODO Station(99111) ~ TRAM 1-Line 10:38 10:41 ~ Beacon Hill Station(99121) ~ Walk 39s
-108,0,00:44:49,4202,1263,10:05:53,10:50:42,Metro Transit,BUS,50,kcm:31970|kcm:30770,Walk 3m8s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:09:01 10:36:46 ~ S Columbian Way & S Spokane St(30770) ~ Walk 13m56s
-109,1,01:26:19,8565,2975,10:13:14,11:39:33,Metro Transit|Sound Transit,BUS|RAIL,S Line|160,sound-transit:S_PU_NB|sound-transit:S_KE_NB|kcm:57453|kcm:57185,Walk 19m46s ~ Puyallup Station (Northbound)(S_PU_NB) ~ RAIL S Line 10:33 10:55 ~ Kent Station (Northbound)(S_KE_NB) ~ Walk 1m34s ~ Kent Sounder Station - Bay 3(57453) ~ BUS 160 11:07 11:21:08 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
-109,2,01:54:40,10460,2399,10:14:53,12:09:33,Metro Transit|Pierce Transit|Sound Transit,BUS,400|578|160,pierce-transit:6085|pierce-transit:11956|pierce-transit:10401|pierce-transit:8770|kcm:57774|kcm:57185,Walk 11m7s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:26 10:29 ~ Puyallup Station - Bay 1(11956) ~ Walk 1m20s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 10:33 11:04 ~ Auburn Station - Bay 3(8770) ~ Walk 25s ~ Auburn Transit Center - Bay 2(57774) ~ BUS 160 11:13 11:51:08 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
-109,1,01:55:37,10364,3032,10:43:56,12:39:33,Metro Transit|Sound Transit,BUS,578|160,pierce-transit:10401|pierce-transit:8770|kcm:57774|kcm:57185,Walk 21m4s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 11:05 11:36 ~ Auburn Station - Bay 3(8770) ~ Walk 25s ~ Auburn Transit Center - Bay 2(57774) ~ BUS 160 11:43 12:21:08 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
-110,2,00:48:12,4694,0,10:08:12,10:56:24,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|160|Hyde Shuttle,pudget-sound-educational:area_622|kcm:57422|kcm:57180|sound-generations:area_558,pudget-sound-educational:area_622(area_622) ~ BUS null 10:08:12 10:43:44Walk 0s ~ 104th Ave SE & SE 240th St(57422) ~ BUS 160 10:45:44 10:50:18 ~ 108th Ave SE & SE 224th St(57180) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:52:18 10:56:24
-110,2,00:48:02,4684,0,10:11:20,10:59:22,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|183|Hyde Shuttle,pudget-sound-educational:area_622|kcm:58781|kcm:50781|sound-generations:area_558,pudget-sound-educational:area_622(area_622) ~ BUS null 10:11:20 10:36:48Walk 0s ~ W Meeker St & Frager Rd(58781) ~ BUS 183 10:38:48 10:39:48 ~ Reith Rd & Lake Fenwick Rd S(50781) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:41:48 10:59:22
-110,2,00:45:07,4509,0,10:16:08,11:01:15,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|165|Hyde Shuttle,pudget-sound-educational:area_622|kcm:57090|kcm:57141|sound-generations:area_558,pudget-sound-educational:area_622(area_622) ~ BUS null 10:16:08 10:44:49Walk 0s ~ E James St & Jason Ave N(57090) ~ BUS 165 10:46:49 10:52:44 ~ SE 240th St & 116th Ave SE(57141) ~ Walk 0s ~ sound-generations:area_558(area_558) ~ BUS null 10:54:44 11:01:15
-111,1,01:42:35,9173,2485,10:13:14,11:55:49,Metro Transit|Sound Transit,BUS|RAIL,S Line|165,sound-transit:S_PU_NB|sound-transit:S_KE_NB|kcm:57459|kcm:47570,Walk 19m46s ~ Puyallup Station (Northbound)(S_PU_NB) ~ RAIL S Line 10:33 10:55 ~ Kent Station (Northbound)(S_KE_NB) ~ Walk 1m32s ~ Kent Sounder Station - Bay 9(57459) ~ BUS 165 11:07 11:44 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-111,2,02:13:56,11235,1898,10:14:53,12:28:49,Metro Transit|Pierce Transit|Sound Transit,BUS,400|574|165,pierce-transit:6085|pierce-transit:20163|pierce-transit:3046|pierce-transit:14363|kcm:21945|kcm:47570,Walk 11m7s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:26 10:49 ~ Tacoma Dome Station - Zone E(20163) ~ Walk 20s ~ Tacoma Dome Station - Zone A(3046) ~ BUS 574 10:58 11:26 ~ I-5 & Kent - Des Moines Fwy Station(14363) ~ Walk 1m56s ~ Kent Des Moines Park And Ride(21945) ~ BUS 165 11:52 12:17 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-111,2,02:11:53,11657,2660,10:43:56,12:55:49,Metro Transit|Sound Transit,BUS,578|574|165,pierce-transit:10401|pierce-transit:7910|pierce-transit:12344|pierce-transit:14363|kcm:21945|kcm:47570,Walk 21m4s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 11:05 11:48 ~ Federal Way TC - Bay 7(7910) ~ Walk 31s ~ Federal Way TC - Bay 8(12344) ~ BUS 574 12:00 12:11 ~ I-5 & Kent - Des Moines Fwy Station(14363) ~ Walk 1m56s ~ Kent Des Moines Park And Ride(21945) ~ BUS 165 12:22 12:44 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m49s
-112,2,01:09:25,6167,275,10:05:29,11:14:54,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60750|kcm:60752|sound-generations:area_551,pudget-sound-educational:area_622(area_622) ~ BUS null 10:05:29 10:38:19Walk 1m9s ~ Pacific Hwy S & S 272nd St(60750) ~ BUS A Line 10:41:28 10:42:02 ~ Pacific Hwy S & S 268th St(60752) ~ Walk 2m40s ~ sound-generations:area_551(area_551) ~ BUS null 10:46:42 11:14:54
-112,2,01:09:38,6115,187,10:05:29,11:15:07,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60750|kcm:48949|sound-generations:area_551,pudget-sound-educational:area_622(area_622) ~ BUS null 10:05:29 10:38:19Walk 1m9s ~ Pacific Hwy S & S 272nd St(60750) ~ BUS A Line 10:41:28 10:47:16 ~ Pacific Hwy S & S 240th St(48949) ~ Walk 1m26s ~ sound-generations:area_551(area_551) ~ BUS null 10:50:42 11:15:07
-112,2,01:10:13,6079,88,10:05:29,11:15:42,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60750|kcm:60810|sound-generations:area_551,pudget-sound-educational:area_622(area_622) ~ BUS null 10:05:29 10:38:19Walk 1m9s ~ Pacific Hwy S & S 272nd St(60750) ~ BUS A Line 10:41:28 10:50:38 ~ Pacific Hwy S & S 224th St(60810) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:52:38 11:15:42
-113,1,01:33:37,9135,3185,10:13:14,11:46:51,Metro Transit|Sound Transit,BUS|RAIL,S Line|165,sound-transit:S_PU_NB|sound-transit:S_KE_NB|kcm:57459|kcm:50480,Walk 19m46s ~ Puyallup Station (Northbound)(S_PU_NB) ~ RAIL S Line 10:33 10:55 ~ Kent Station (Northbound)(S_KE_NB) ~ Walk 1m32s ~ Kent Sounder Station - Bay 9(57459) ~ BUS 165 11:07 11:25:38 ~ Pacific Hwy S & Kent Des Moines Rd(50480) ~ Walk 21m13s
-113,1,01:35:13,8695,2428,10:13:05,11:48:18,Metro Transit|Pierce Transit,BUS,402|A Line,pierce-transit:1294|pierce-transit:2255|kcm:80438|kcm:60810,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:19 10:59 ~ 23rd Ave S & S 322nd St(2255) ~ Walk 8m40s ~ Federal Way TC - Bay 8(80438) ~ BUS A Line 11:10 11:30:46 ~ Pacific Hwy S & S 224th St(60810) ~ Walk 17m32s
-113,2,01:43:25,9648,2235,10:14:53,11:58:18,Metro Transit|Pierce Transit|Sound Transit,BUS,400|574|A Line,pierce-transit:6085|pierce-transit:20163|pierce-transit:3046|pierce-transit:12344|kcm:80438|kcm:60810,Walk 11m7s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:26 10:49 ~ Tacoma Dome Station - Zone E(20163) ~ Walk 20s ~ Tacoma Dome Station - Zone A(3046) ~ BUS 574 10:58 11:15 ~ Federal Way TC - Bay 8(12344) ~ Walk 44s ~ Federal Way TC - Bay 8(80438) ~ BUS A Line 11:20 11:40:46 ~ Pacific Hwy S & S 224th St(60810) ~ Walk 17m32s
-114,2,00:51:40,4966,88,10:05:29,10:57:09,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60750|kcm:60800|sound-generations:area_551,pudget-sound-educational:area_622(area_622) ~ BUS null 10:05:29 10:38:19Walk 1m9s ~ Pacific Hwy S & S 272nd St(60750) ~ BUS A Line 10:41:28 10:49 ~ Pacific Hwy S & Kent Des Moines Rd(60800) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:51 10:57:09
-114,2,00:49:02,4744,0,10:13:32,11:02:34,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|165|Hyde Shuttle,pudget-sound-educational:area_622|kcm:50755|kcm:53506|sound-generations:area_551,pudget-sound-educational:area_622(area_622) ~ BUS null 10:13:32 10:38:22Walk 0s ~ W Meeker St & Washington Ave N(50755) ~ BUS 165 10:40:22 10:54:27 ~ Kent Des Moines Rd & I-5 Ramp(53506) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:56:27 11:02:34
-114,2,00:51:40,4966,88,10:15:29,11:07:09,Metro Transit|Puget Sound Educational Service District|Sound Generations,BUS,Road to Independence|A Line|Hyde Shuttle,pudget-sound-educational:area_622|kcm:60750|kcm:60800|sound-generations:area_551,pudget-sound-educational:area_622(area_622) ~ BUS null 10:15:29 10:48:19Walk 1m9s ~ Pacific Hwy S & S 272nd St(60750) ~ BUS A Line 10:51:28 10:59 ~ Pacific Hwy S & Kent Des Moines Rd(60800) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 11:01 11:07:09
-115,1,00:59:23,6042,1759,10:13:14,11:12:37,Metro Transit|Sound Transit,BUS|RAIL,S Line|160,sound-transit:S_PU_NB|sound-transit:S_AU_NB|kcm:57774|kcm:57915,Walk 19m46s ~ Puyallup Station (Northbound)(S_PU_NB) ~ RAIL S Line 10:33 10:48 ~ Auburn Station (Northbound)(S_AU_NB) ~ Walk 1m19s ~ Auburn Transit Center - Bay 2(57774) ~ BUS 160 10:58 11:09:49 ~ Auburn Way N & 37th St NE(57915) ~ Walk 2m48s
-115,2,01:12:44,7039,1184,10:14:53,11:27:37,Metro Transit|Pierce Transit|Sound Transit,BUS,400|578|160,pierce-transit:6085|pierce-transit:11956|pierce-transit:10401|pierce-transit:8770|kcm:57774|kcm:57915,Walk 11m7s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:26 10:29 ~ Puyallup Station - Bay 1(11956) ~ Walk 1m20s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 10:33 11:04 ~ Auburn Station - Bay 3(8770) ~ Walk 25s ~ Auburn Transit Center - Bay 2(57774) ~ BUS 160 11:13 11:24:49 ~ Auburn Way N & 37th St NE(57915) ~ Walk 2m48s
-115,1,01:13:41,6943,1817,10:43:56,11:57:37,Metro Transit|Sound Transit,BUS,578|160,pierce-transit:10401|pierce-transit:8770|kcm:57774|kcm:57915,Walk 21m4s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 11:05 11:36 ~ Auburn Station - Bay 3(8770) ~ Walk 25s ~ Auburn Transit Center - Bay 2(57774) ~ BUS 160 11:43 11:54:49 ~ Auburn Way N & 37th St NE(57915) ~ Walk 2m48s
-116,1,00:38:51,3856,440,10:13:05,10:51:56,Pierce Transit|Puget Sound Educational Service District,BUS,402|Road to Independence,pierce-transit:1294|pierce-transit:1341|pudget-sound-educational:area_622,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:19 10:28 ~ Meridian N & Valley Ave E(1341) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:30 10:51:56
-116,2,00:36:00,3970,13,10:15:56,10:51:56,Pierce Transit|Puget Sound Educational Service District,BUS,Road to Independence|402|Road to Independence,pudget-sound-educational:area_622|pierce-transit:27124|pierce-transit:1341|pudget-sound-educational:area_622,pudget-sound-educational:area_622(area_622) ~ BUS null 10:15:56 10:18:45Walk 15s ~ 3rd St SE & 4th Ave SE(27124) ~ BUS 402 10:21 10:28 ~ Meridian N & Valley Ave E(1341) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:30 10:51:56
-116,2,00:42:07,4332,4,10:20:12,11:02:19,Pierce Transit|Puget Sound Educational Service District,BUS,Road to Independence|400|Road to Independence,pudget-sound-educational:area_622|pierce-transit:6085|pierce-transit:2626|pudget-sound-educational:area_622,pudget-sound-educational:area_622(area_622) ~ BUS null 10:20:12 10:23:57Walk 3s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:26 10:31 ~ Stewart Ave W & 15th St NW(2626) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:33 11:02:19
-117,1,01:00:46,5578,991,10:13:05,11:13:51,Metro Transit|Pierce Transit,BUS,402|181,pierce-transit:1294|pierce-transit:2255|kcm:60638|kcm:83784,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:19 10:59 ~ 23rd Ave S & S 322nd St(2255) ~ Walk 3m56s ~ S 320th St & 23rd Ave S(60638) ~ BUS 181 11:05:23 11:10:35 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-117,0,01:15:13,7182,2826,10:13:05,11:28:18,Pierce Transit,BUS,402,pierce-transit:1294|pierce-transit:2267,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:19 10:57 ~ 324th St S & 17th Ave S(2267) ~ Walk 31m18s
-117,2,01:27:01,7922,1228,10:14:53,11:41:54,Metro Transit|Pierce Transit|Sound Transit,BUS,400|574|187,pierce-transit:6085|pierce-transit:20163|pierce-transit:3046|pierce-transit:12344|kcm:80433|kcm:83784,Walk 11m7s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:26 10:49 ~ Tacoma Dome Station - Zone E(20163) ~ Walk 20s ~ Tacoma Dome Station - Zone A(3046) ~ BUS 574 10:58 11:15 ~ Federal Way TC - Bay 8(12344) ~ Walk 1m51s ~ Federal Way TC - Bay 3(80433) ~ BUS 187 11:32 11:38:38 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-118,1,00:38:55,3727,254,10:02:59,10:41:54,Metro Transit|Puget Sound Educational Service District,BUS,Road to Independence|187,pudget-sound-educational:area_622|kcm:60640|kcm:83784,pudget-sound-educational:area_622(area_622) ~ BUS null 10:02:59 10:32:51Walk 0s ~ S 320th St & 20th Ave S(60640) ~ BUS 187 10:34:51 10:38:38 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-118,1,00:39:02,3734,254,10:04:49,10:43:51,Metro Transit|Puget Sound Educational Service District,BUS,Road to Independence|181,pudget-sound-educational:area_622|kcm:83663|kcm:83784,pudget-sound-educational:area_622(area_622) ~ BUS null 10:04:49 10:28:20Walk 0s ~ S 320th St & Military Rd S(83663) ~ BUS 181 10:30:20 10:40:35 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-118,1,00:51:42,4792,660,10:13:05,11:04:47,Pierce Transit|Puget Sound Educational Service District,BUS,402|Road to Independence,pierce-transit:1294|pierce-transit:1341|pudget-sound-educational:area_622,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:19 10:28 ~ Meridian N & Valley Ave E(1341) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 10:30 11:02:01Walk 2m46s
-119,2,01:59:01,10704,2381,10:13:14,12:12:15,Metro Transit|Sound Transit,BUS|RAIL,S Line|C Line|128,sound-transit:S_PU_NB|sound-transit:S_KS|kcm:1562|kcm:20041|kcm:32011|kcm:31871,Walk 19m46s ~ Puyallup Station (Northbound)(S_PU_NB) ~ RAIL S Line 10:33 11:22 ~ King Street Station(S_KS) ~ Walk 9m13s ~ Alaskan Way S & S Jackson St(1562) ~ BUS C Line 11:38:40 11:58 ~ SW Alaska St & California Ave SW - Bay 3(20041) ~ Walk 42s ~ SW Alaska St & 44th Ave SW - Bay 4(32011) ~ BUS 128 12:05 12:08:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-119,1,02:00:39,10876,3299,10:13:14,12:13:53,Metro Transit|Sound Transit,BUS|RAIL,S Line|C Line,sound-transit:S_PU_NB|sound-transit:S_KS|kcm:1562|kcm:20041,Walk 19m46s ~ Puyallup Station (Northbound)(S_PU_NB) ~ RAIL S Line 10:33 11:22 ~ King Street Station(S_KS) ~ Walk 9m13s ~ Alaskan Way S & S Jackson St(1562) ~ BUS C Line 11:38:40 11:58 ~ SW Alaska St & California Ave SW - Bay 3(20041) ~ Walk 15m53s
-119,2,02:04:07,10154,1239,10:14:53,12:19:00,Metro Transit|Pierce Transit|Sound Transit,BUS,400|594|50,pierce-transit:6085|pierce-transit:20163|pierce-transit:27454|pierce-transit:593|kcm:99261|kcm:31871,Walk 11m7s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:26 10:49 ~ Tacoma Dome Station - Zone E(20163) ~ Walk 47s ~ Tacoma Dome Station - Zone B(27454) ~ BUS 594 11:07 11:47 ~ Bus Wy & Lander St(593) ~ Walk 1m31s ~ S Lander St & SODO Busway(99261) ~ BUS 50 11:52 12:15:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-121,2,03:28:44,16046,2378,10:43:56,14:12:40,Metro Transit|Sound Transit,BUS,578|554|208,pierce-transit:10401|pierce-transit:13217|kcm:280|kcm:64590|kcm:64593|kcm:64399,Walk 21m4s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 11:05 12:21 ~ 4th Ave & Pike St(13217) ~ Walk 4m17s ~ 2nd Ave & Stewart St(280) ~ BUS 554 12:37:53 13:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 13:30 14:06:59 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-121,4,04:18:43,19355,1128,11:18:05,15:36:48,Metro Transit|Pierce Transit|Sound Transit,BUS,402|578|545|224|629,pierce-transit:1294|pierce-transit:11956|pierce-transit:10401|pierce-transit:13217|kcm:700|kcm:72488|kcm:68803|kcm:64397,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 11:24 11:29 ~ Puyallup Station - Bay 1(11956) ~ Walk 1m20s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 11:35 12:52 ~ 4th Ave & Pike St(13217) ~ Walk 1m11s ~ 4th Ave & Pike St(700) ~ BUS 545 12:56 13:31:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 13:54:31 14:28 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 14:43 15:30 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-121,3,04:22:52,19746,2160,11:13:56,15:36:48,Metro Transit|Sound Transit,BUS,578|545|224|629,pierce-transit:10401|pierce-transit:13217|kcm:700|kcm:72488|kcm:68803|kcm:64397,Walk 21m4s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 11:35 12:52 ~ 4th Ave & Pike St(13217) ~ Walk 1m11s ~ 4th Ave & Pike St(700) ~ BUS 545 12:56 13:31:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 13:54:31 14:28 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 14:43 15:30 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-122,5,03:43:14,17135,199,10:12:57,13:56:11,Metro Transit|Puget Sound Educational Service District|Snoqualmie Valley Transportation|Sound Transit,BUS,Road to Independence|578|545|224|629|Dial-A-Ride,pudget-sound-educational:area_622|pierce-transit:7910|pierce-transit:13217|kcm:700|kcm:72488|kcm:68803|kcm:64366|snoqualmie-flex:area_486,pudget-sound-educational:area_622(area_622) ~ BUS null 10:12:57 10:42:20Walk 1m40s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 10:46 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 1m11s ~ 4th Ave & Pike St(700) ~ BUS 545 11:26 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:25:48 ~ Sr 203 & NE 40th St(64366) ~ Walk 8s ~ snoqualmie-flex:area_485(area_485) ~ BUS null 13:27:56 13:56:11
-122,4,03:44:51,17003,700,10:12:57,13:57:48,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS,Road to Independence|578|545|224|629,pudget-sound-educational:area_622|pierce-transit:7910|pierce-transit:13217|kcm:700|kcm:72488|kcm:68803|kcm:64397,pudget-sound-educational:area_622(area_622) ~ BUS null 10:12:57 10:42:20Walk 1m40s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 10:46 11:19 ~ 4th Ave & Pike St(13217) ~ Walk 1m11s ~ 4th Ave & Pike St(700) ~ BUS 545 11:26 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-122,3,02:57:43,13723,918,11:14:57,14:12:40,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS,Road to Independence|578|554|208,pudget-sound-educational:area_622|pierce-transit:7910|pierce-transit:13217|kcm:280|kcm:64590|kcm:64593|kcm:64399,pudget-sound-educational:area_622(area_622) ~ BUS null 11:14:57 11:44:20Walk 1m40s ~ Federal Way TC - Bay 7(7910) ~ BUS 578 11:48 12:21 ~ 4th Ave & Pike St(13217) ~ Walk 4m17s ~ 2nd Ave & Stewart St(280) ~ BUS 554 12:37:53 13:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 13:30 14:06:59 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-123,1,01:55:24,9941,2506,10:13:14,12:08:38,Metro Transit|Sound Transit,BUS|RAIL,S Line|3,sound-transit:S_PU_NB|sound-transit:S_KS|kcm:1540|kcm:41350,Walk 19m46s ~ Puyallup Station (Northbound)(S_PU_NB) ~ RAIL S Line 10:33 11:22 ~ King Street Station(S_KS) ~ Walk 11m5s ~ James St & 5th Ave(1540) ~ BUS 3 11:36 12:05:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-123,2,02:08:45,10516,1351,10:14:53,12:23:38,Metro Transit|Pierce Transit|Sound Transit,BUS,400|578|3,pierce-transit:6085|pierce-transit:11956|pierce-transit:10401|pierce-transit:13217|kcm:575|kcm:41350,Walk 11m7s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:26 10:29 ~ Puyallup Station - Bay 1(11956) ~ Walk 1m20s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 10:33 11:49 ~ 4th Ave & Pike St(13217) ~ Walk 2m32s ~ 3rd Ave & Pike St(575) ~ BUS 3 11:58 12:20:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-123,1,02:07:42,10300,1984,10:43:56,12:51:38,Metro Transit|Sound Transit,BUS,578|3,pierce-transit:10401|pierce-transit:13217|kcm:575|kcm:41350,Walk 21m4s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 11:05 12:21 ~ 4th Ave & Pike St(13217) ~ Walk 2m32s ~ 3rd Ave & Pike St(575) ~ BUS 3 12:26 12:48:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-124,1,01:55:24,9941,2506,10:13:14,12:08:38,Metro Transit|Sound Transit,BUS|RAIL,S Line|3,sound-transit:S_PU_NB|sound-transit:S_KS|kcm:1540|kcm:41350,Walk 19m46s ~ Puyallup Station (Northbound)(S_PU_NB) ~ RAIL S Line 10:33 11:22 ~ King Street Station(S_KS) ~ Walk 11m5s ~ James St & 5th Ave(1540) ~ BUS 3 11:36 12:05:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-124,1,02:08:55,10177,1715,10:43:56,12:52:51,Sound Generations|Sound Transit,BUS,578|Hyde Shuttle,pierce-transit:10401|pierce-transit:24330|sound-generations:area_555,Walk 21m4s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 11:05 12:30 ~ Howell St & Yale Ave(24330) ~ Walk 2m3s ~ sound-generations:area_555(area_555) ~ BUS null 12:34:03 12:52:51
-124,1,02:09:55,10237,1715,11:13:56,13:23:51,Sound Generations|Sound Transit,BUS,578|Hyde Shuttle,pierce-transit:10401|pierce-transit:24330|sound-generations:area_555,Walk 21m4s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 11:35 13:01 ~ Howell St & Yale Ave(24330) ~ Walk 2m3s ~ sound-generations:area_555(area_555) ~ BUS null 13:05:03 13:23:51
-125,1,01:28:25,8208,2340,10:13:14,11:41:39,Sound Transit,RAIL|TRAM,S Line|1-Line,sound-transit:S_PU_NB|sound-transit:S_KS|sound-transit:99101|sound-transit:99121,Walk 19m46s ~ Puyallup Station (Northbound)(S_PU_NB) ~ RAIL S Line 10:33 11:22 ~ King Street Station(S_KS) ~ Walk 11m18s ~ Stadium Station(99101) ~ TRAM 1-Line 11:36 11:41 ~ Beacon Hill Station(99121) ~ Walk 39s
-125,0,01:47:21,10186,4338,10:13:14,12:00:35,Sound Transit,RAIL,S Line,sound-transit:S_PU_NB|sound-transit:S_KS,Walk 19m46s ~ Puyallup Station (Northbound)(S_PU_NB) ~ RAIL S Line 10:33 11:22 ~ King Street Station(S_KS) ~ Walk 38m35s
-125,2,01:46:46,8936,989,10:14:53,12:01:39,Pierce Transit|Sound Transit,BUS|TRAM,400|594|1-Line,pierce-transit:6085|pierce-transit:20163|pierce-transit:27454|pierce-transit:593|sound-transit:99111|sound-transit:99121,Walk 11m7s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:26 10:49 ~ Tacoma Dome Station - Zone E(20163) ~ Walk 47s ~ Tacoma Dome Station - Zone B(27454) ~ BUS 594 11:07 11:47 ~ Bus Wy & Lander St(593) ~ Walk 46s ~ SODO Station(99111) ~ TRAM 1-Line 11:58 12:01 ~ Beacon Hill Station(99121) ~ Walk 39s
-126,2,01:24:12,6955,138,10:07:27,11:31:39,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS|TRAM,Road to Independence|150|1-Line,pudget-sound-educational:area_622|kcm:59773|kcm:99254|sound-transit:99111|sound-transit:99121,pudget-sound-educational:area_622(area_622) ~ BUS null 10:07:27 10:32:31Walk 27s ~ W James St & Lincoln Ave N(59773) ~ BUS 150 10:34:58 11:19:40 ~ SODO Busway & S Lander St(99254) ~ Walk 49s ~ SODO Station(99111) ~ TRAM 1-Line 11:28 11:31 ~ Beacon Hill Station(99121) ~ Walk 39s
-126,2,01:19:12,6655,138,10:22:27,11:41:39,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS|TRAM,Road to Independence|150|1-Line,pudget-sound-educational:area_622|kcm:59773|kcm:99254|sound-transit:99111|sound-transit:99121,pudget-sound-educational:area_622(area_622) ~ BUS null 10:22:27 10:47:31Walk 27s ~ W James St & Lincoln Ave N(59773) ~ BUS 150 10:49:58 11:34:40 ~ SODO Busway & S Lander St(99254) ~ Walk 49s ~ SODO Station(99111) ~ TRAM 1-Line 11:38 11:41 ~ Beacon Hill Station(99121) ~ Walk 39s
-126,2,01:16:47,7129,987,10:24:52,11:41:39,Puget Sound Educational Service District|Sound Transit,BUS|RAIL|TRAM,Road to Independence|S Line|1-Line,pudget-sound-educational:area_622|sound-transit:S_KE_NB|sound-transit:S_KS|sound-transit:99101|sound-transit:99121,pudget-sound-educational:area_622(area_622) ~ BUS null 10:24:52 10:51:23Walk 1m37s ~ Kent Station (Northbound)(S_KE_NB) ~ RAIL S Line 10:55 11:22 ~ King Street Station(S_KS) ~ Walk 11m18s ~ Stadium Station(99101) ~ TRAM 1-Line 11:36 11:41 ~ Beacon Hill Station(99121) ~ Walk 39s
-127,3,02:50:16,14302,2282,10:31:35,13:21:51,Metro Transit|Sound Transit,BUS,208|554|240|160,kcm:82425|kcm:64448|kcm:64502|kcm:67019|kcm:67015|kcm:46478|kcm:46465|kcm:57375,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 11:38 ~ I-90 Expressway Ramp & 142nd Pl SE - Bay 3(67019) ~ Walk 3m25s ~ Eastgate Park & Ride Acs & 140th Ave SE - Bay 2(67015) ~ BUS 240 11:48 12:30 ~ Renton Transit Center - Bay 3(46478) ~ Walk 1m42s ~ Renton Transit Center - Bay 8(46465) ~ BUS 160 12:34 13:03:29 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
-129,5,02:39:01,14368,1606,10:31:35,13:10:36,Metro Transit|Sound Transit,BUS|TRAM,208|554|7|1-Line|F Line|165,kcm:82425|kcm:64448|kcm:64502|kcm:8494|kcm:8590|kcm:8681|sound-transit:55949|sound-transit:99900|kcm:60923|kcm:53720|kcm:53975|kcm:48620,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 11:52 ~ Rainier Ave S & S Charles St(8494) ~ Walk 1m31s ~ Rainier Ave S & S Charles St(8590) ~ BUS 7 12:01:06 12:08 ~ Rainier Ave S & S Forest St - Bay 4(8681) ~ Walk 2m40s ~ Mount Baker Station(55949) ~ TRAM 1-Line 12:13 12:33 ~ Tukwila Int'l Blvd Station(99900) ~ Walk 1m11s ~ Tukwila International Blvd Station - Bay 3(60923) ~ BUS F Line 12:37 12:48:59 ~ 4th Ave SW & SW 156th St(53720) ~ Walk 9s ~ 4th Ave SW & SW 156th St(53975) ~ BUS 165 12:54:44 13:00:26 ~ 1st Ave S & SW 178th St(48620) ~ Walk 10m10s
-129,4,02:55:51,16445,3874,10:31:35,13:27:26,Metro Transit|Sound Transit,BUS|TRAM,208|554|7|1-Line|F Line,kcm:82425|kcm:64448|kcm:64502|kcm:8494|kcm:8590|kcm:8681|sound-transit:55949|sound-transit:99900|kcm:60923|kcm:47646,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 11:52 ~ Rainier Ave S & S Charles St(8494) ~ Walk 1m31s ~ Rainier Ave S & S Charles St(8590) ~ BUS 7 12:01:06 12:08 ~ Rainier Ave S & S Forest St - Bay 4(8681) ~ Walk 2m40s ~ Mount Baker Station(55949) ~ TRAM 1-Line 12:13 12:33 ~ Tukwila Int'l Blvd Station(99900) ~ Walk 1m11s ~ Tukwila International Blvd Station - Bay 3(60923) ~ BUS F Line 12:37 12:48:05 ~ SW 156th St & 2nd Ave SW(47646) ~ Walk 39m21s
-129,3,03:09:05,15638,2601,10:31:35,13:40:40,Metro Transit|Sound Transit,BUS,208|554|150|156,kcm:82425|kcm:64448|kcm:64502|kcm:620|kcm:390|kcm:59312|kcm:50250,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:00 ~ 4th Ave S & S Jackson St(620) ~ Walk 1m52s ~ 2nd Ave Ext S & S Jackson St(390) ~ BUS 150 12:17 12:47 ~ Andover Park W & Baker Blvd - Bay 1(59312) ~ BUS 156 12:55 13:15:01 ~ 8th Ave S & Des Moines Memorial Dr S(50250) ~ Walk 25m39s
-131,4,02:41:30,14267,2098,10:31:35,13:13:05,Metro Transit|Sound Transit,BUS|TRAM,208|554|7|1-Line|A Line,kcm:82425|kcm:64448|kcm:64502|kcm:8494|kcm:8590|kcm:8681|sound-transit:55949|sound-transit:99913|kcm:61120|kcm:61170,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 11:52 ~ Rainier Ave S & S Charles St(8494) ~ Walk 1m31s ~ Rainier Ave S & S Charles St(8590) ~ BUS 7 12:01:06 12:08 ~ Rainier Ave S & S Forest St - Bay 4(8681) ~ Walk 2m40s ~ Mount Baker Station(55949) ~ TRAM 1-Line 12:13 12:40 ~ Angle Lake Station(99913) ~ Walk 2m18s ~ International Blvd & S 200th St(61120) ~ BUS A Line 12:51:37 12:57:09 ~ Pacific Hwy S & S 224th St(61170) ~ Walk 15m56s
-131,3,02:51:30,14724,2807,10:31:35,13:23:05,Metro Transit|Sound Transit,BUS|TRAM,208|554|1-Line|A Line,kcm:82425|kcm:64448|kcm:64502|kcm:620|sound-transit:99101|sound-transit:99913|kcm:61120|kcm:61170,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:00 ~ 4th Ave S & S Jackson St(620) ~ Walk 12m33s ~ Stadium Station(99101) ~ TRAM 1-Line 12:16 12:50 ~ Angle Lake Station(99913) ~ Walk 2m18s ~ International Blvd & S 200th St(61120) ~ BUS A Line 13:01:37 13:07:09 ~ Pacific Hwy S & S 224th St(61170) ~ Walk 15m56s
-131,3,03:06:26,14542,1314,10:31:35,13:38:01,Metro Transit|Sound Transit,BUS,208|554|150|156,kcm:82425|kcm:64448|kcm:64502|kcm:620|kcm:390|kcm:59312|kcm:50450,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:00 ~ 4th Ave S & S Jackson St(620) ~ Walk 1m52s ~ 2nd Ave Ext S & S Jackson St(390) ~ BUS 150 12:17 12:47 ~ Andover Park W & Baker Blvd - Bay 1(59312) ~ BUS 156 12:55 13:29:16 ~ 24th Ave S & S 226th St(50450) ~ Walk 8m45s
-133,3,03:03:32,14057,898,10:31:35,13:35:07,Metro Transit|Sound Transit,BUS,208|554|150|160,kcm:82425|kcm:64448|kcm:64502|kcm:620|kcm:390|kcm:57455|kcm:57451|kcm:58255,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:00 ~ 4th Ave S & S Jackson St(620) ~ Walk 1m52s ~ 2nd Ave Ext S & S Jackson St(390) ~ BUS 150 12:17 13:13 ~ Kent Sounder Station - Bay 5(57455) ~ Walk 44s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 13:21 13:32:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-135,3,02:45:04,12993,948,10:31:35,13:16:39,Metro Transit|Sound Transit,BUS,208|554|577|181,kcm:82425|kcm:64448|kcm:64502|kcm:620|pierce-transit:30709|pierce-transit:4136|kcm:80433|kcm:83784,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:00 ~ 4th Ave S & S Jackson St(620) ~ Walk 1m54s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 577 12:17 12:47 ~ Federal Way TC - Bay 2(4136) ~ Walk 37s ~ Federal Way TC - Bay 3(80433) ~ BUS 181 13:05 13:13:23 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-135,2,02:52:50,14741,3523,10:31:35,13:24:25,Metro Transit|Sound Transit,BUS,208|554|577,kcm:82425|kcm:64448|kcm:64502|kcm:620|pierce-transit:30709|pierce-transit:4136,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:00 ~ 4th Ave S & S Jackson St(620) ~ Walk 1m54s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 577 12:17 12:47 ~ Federal Way TC - Bay 2(4136) ~ Walk 37m25s
-137,3,02:17:25,11313,944,10:31:35,12:49:00,Metro Transit|Sound Transit,BUS,208|554|125|50,kcm:82425|kcm:64448|kcm:64502|kcm:648|kcm:481|kcm:21990|kcm:31871,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:02:35 ~ 4th Ave & Cherry St(648) ~ Walk 2m48s ~ 3rd Ave & Columbia St(481) ~ BUS 125 12:08 12:18 ~ Delridge Way SW & SW Andover St(21990) ~ BUS 50 12:30 12:45:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-137,2,02:18:23,12259,3027,10:31:35,12:49:58,Metro Transit|Sound Transit,BUS,208|554|125,kcm:82425|kcm:64448|kcm:64502|kcm:648|kcm:481|kcm:21990,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:02:35 ~ 4th Ave & Cherry St(648) ~ Walk 2m48s ~ 3rd Ave & Columbia St(481) ~ BUS 125 12:08 12:18 ~ Delridge Way SW & SW Andover St(21990) ~ Walk 31m58s
-137,2,02:22:18,11723,1917,10:31:35,12:53:53,Metro Transit|Sound Transit,BUS,208|554|C Line,kcm:82425|kcm:64448|kcm:64502|kcm:648|kcm:481|kcm:20041,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:02:35 ~ 4th Ave & Cherry St(648) ~ Walk 2m48s ~ 3rd Ave & Columbia St(481) ~ BUS C Line 12:17 12:38 ~ SW Alaska St & California Ave SW - Bay 3(20041) ~ Walk 15m53s
-139,3,03:30:34,15898,1193,10:31:35,14:02:09,Metro Transit|Pierce Transit|Sound Transit,BUS,208|554|577|402,kcm:82425|kcm:64448|kcm:64502|kcm:620|pierce-transit:30709|pierce-transit:4136|pierce-transit:29410|pierce-transit:1332,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:00 ~ 4th Ave S & S Jackson St(620) ~ Walk 1m54s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 577 12:17 12:47 ~ Federal Way TC - Bay 2(4136) ~ Walk 1m10s ~ Federal Way TC - Bay 5(29410) ~ BUS 402 13:10 13:56 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m9s
-139,2,03:40:25,16627,2219,10:31:35,14:12:00,Metro Transit|Sound Transit,BUS,208|554|578,kcm:82425|kcm:64448|kcm:64502|kcm:620|pierce-transit:30709|pierce-transit:10401,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:00 ~ 4th Ave S & S Jackson St(620) ~ Walk 1m54s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 578 12:32 13:51 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-140,3,02:46:40,12938,767,10:31:35,13:18:15,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS,208|554|577|Road to Independence,kcm:82425|kcm:64448|kcm:64502|kcm:620|pierce-transit:30709|pierce-transit:4136|pudget-sound-educational:area_622,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:00 ~ 4th Ave S & S Jackson St(620) ~ Walk 1m54s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 577 12:17 12:47 ~ Federal Way TC - Bay 2(4136) ~ Walk 1m59s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 12:50:59 13:18:15
-140,2,03:40:25,16627,2219,10:31:35,14:12:00,Metro Transit|Sound Transit,BUS,208|554|578,kcm:82425|kcm:64448|kcm:64502|kcm:620|pierce-transit:30709|pierce-transit:10401,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:00 ~ 4th Ave S & S Jackson St(620) ~ Walk 1m54s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 578 12:32 13:51 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-141,2,02:06:03,10031,924,10:31:35,12:37:38,Metro Transit|Sound Transit,BUS,208|554|3,kcm:82425|kcm:64448|kcm:64502|kcm:730|kcm:600|kcm:41350,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:07:55 ~ 4th Ave & Lenora St(730) ~ Walk 2m24s ~ 3rd Ave & Virginia St(600) ~ BUS 3 12:14:57 12:34:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-142,2,01:59:04,9574,889,10:31:35,12:30:39,Metro Transit|Sound Generations|Sound Transit,BUS,208|554|Hyde Shuttle,kcm:82425|kcm:64448|kcm:64502|kcm:18440|sound-generations:area_555,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 12:09 ~ Blanchard St & 6th Ave(18440) ~ Walk 5m12s ~ sound-generations:area_555(area_555) ~ BUS null 12:16:12 12:30:39
-143,2,01:45:17,9177,1478,10:31:35,12:16:52,Metro Transit|Sound Transit,BUS,208|554|36,kcm:82425|kcm:64448|kcm:64502|kcm:8494|kcm:3710|kcm:3820,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 11:52 ~ Rainier Ave S & S Charles St(8494) ~ Walk 9m51s ~ 12th Ave S & S Weller St(3710) ~ BUS 36 12:04:36 12:13:36 ~ Beacon Ave S & S Stevens St(3820) ~ Walk 3m16s
-143,1,01:49:13,9676,2668,10:31:35,12:20:48,Metro Transit|Sound Transit,BUS,208|554,kcm:82425|kcm:64448|kcm:64502|kcm:8494,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 11:52 ~ Rainier Ave S & S Charles St(8494) ~ Walk 28m48s
-144,3,01:40:12,8854,621,10:31:35,12:11:47,Metro Transit|Sound Generations|Sound Transit,BUS,208|554|7|Hyde Shuttle,kcm:82425|kcm:64448|kcm:64502|kcm:8494|kcm:8590|kcm:8620|sound-generations:area_564,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 11:52 ~ Rainier Ave S & S Charles St(8494) ~ Walk 1m31s ~ Rainier Ave S & S Charles St(8590) ~ BUS 7 12:01:06 12:03:38 ~ Rainier Ave S & S State St(8620) ~ Walk 0s ~ sound-generations:area_564(area_564) ~ BUS null 12:05:38 12:11:47
-144,1,01:49:13,9676,2668,10:31:35,12:20:48,Metro Transit|Sound Transit,BUS,208|554,kcm:82425|kcm:64448|kcm:64502|kcm:8494,Walk 4m ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 11:00 ~ SE Bush St & Rainier Blvd S(64448) ~ Walk 3m19s ~ E Sunset Way & 1st Ave NE(64502) ~ BUS 554 11:22 11:52 ~ Rainier Ave S & S Charles St(8494) ~ Walk 28m48s
-145,2,01:59:24,10455,2028,10:06:14,12:05:38,Metro Transit,BUS,2|101|160,kcm:2570|kcm:450|kcm:1230|kcm:79610|kcm:59891|kcm:57375,Walk 1m51s ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:29 ~ 3rd Ave & Union St(450) ~ Walk 2m1s ~ Union St & 4th Ave(1230) ~ BUS 101 10:33:47 11:03 ~ SW Sunset Blvd & Hardie Ave SW(79610) ~ Walk 4m34s ~ Rainier Ave S & S 3rd Pl(59891) ~ BUS 160 11:22:49 11:47:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
-145,2,02:03:09,10735,2100,10:17:29,12:20:38,Metro Transit,BUS,3|101|160,kcm:41300|kcm:480|kcm:340|kcm:79610|kcm:59891|kcm:57375,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 3 10:20:41 10:43:20 ~ 3rd Ave & Marion St(480) ~ Walk 1m32s ~ 2nd Ave & Marion St(340) ~ BUS 101 10:51 11:18 ~ SW Sunset Blvd & Hardie Ave SW(79610) ~ Walk 4m34s ~ Rainier Ave S & S 3rd Pl(59891) ~ BUS 160 11:37:22 12:02:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
-145,2,02:02:09,10675,2100,10:32:29,12:34:38,Metro Transit,BUS,3|101|160,kcm:41300|kcm:480|kcm:340|kcm:79610|kcm:59891|kcm:57375,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 3 10:35:41 10:58:20 ~ 3rd Ave & Marion St(480) ~ Walk 1m32s ~ 2nd Ave & Marion St(340) ~ BUS 101 11:06 11:33 ~ SW Sunset Blvd & Hardie Ave SW(79610) ~ Walk 4m34s ~ Rainier Ave S & S 3rd Pl(59891) ~ BUS 160 11:51:22 12:16:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
-147,2,01:38:22,8383,921,10:06:14,11:44:36,Metro Transit,BUS,2|120|165,kcm:2570|kcm:420|kcm:52305|kcm:48620,Walk 1m51s ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:25:27 ~ 3rd Ave & Virginia St(420) ~ BUS 120 10:30 11:24 ~ Burien Transit Center - Bay 5(52305) ~ BUS 165 11:27 11:34:26 ~ 1st Ave S & SW 178th St(48620) ~ Walk 10m10s
-147,2,01:52:34,9310,1022,10:18:02,12:10:36,Metro Transit,BUS,13|2|120|165,kcm:41300|kcm:2220|kcm:420|kcm:52305|kcm:48620,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 13 10:21:14 10:36 ~ 3rd Ave & Cedar St(2220) ~ BUS 2 10:36 10:40:27 ~ 3rd Ave & Virginia St(420) ~ BUS 120 10:50 11:44 ~ Burien Transit Center - Bay 5(52305) ~ BUS 165 11:53 12:00:26 ~ 1st Ave S & SW 178th St(48620) ~ Walk 10m10s
-147,2,01:51:33,9601,1493,10:19:03,12:10:36,Metro Transit,BUS,1|14|120|165,kcm:2060|kcm:2220|kcm:420|kcm:52305|kcm:48620,Walk 9m8s ~ 10th Ave W & W Crockett St(2060) ~ BUS 1 10:28:11 10:40 ~ 3rd Ave & Cedar St(2220) ~ BUS 14 10:40 10:43:53 ~ 3rd Ave & Virginia St(420) ~ BUS 120 10:50 11:44 ~ Burien Transit Center - Bay 5(52305) ~ BUS 165 11:53 12:00:26 ~ 1st Ave S & SW 178th St(48620) ~ Walk 10m10s
-148,4,01:17:46,7791,172,10:00:09,11:17:55,Metro Transit|Sound Generations,BUS,Hyde Shuttle|24|124|120|128|Hyde Shuttle,sound-generations:area_555|kcm:19410|kcm:2220|kcm:420|kcm:22174|kcm:22252|kcm:21080|sound-generations:area_551,sound-generations:area_555(area_555) ~ BUS null 10:00:09 10:08:26Walk 18s ~ Elliott Ave W & W Harrison St(19410) ~ BUS 24 10:10:44 10:14 ~ 3rd Ave & Cedar St(2220) ~ BUS 124 10:14 10:17:38 ~ 3rd Ave & Virginia St(420) ~ BUS 120 10:20 10:48:02 ~ Delridge Way SW & SW Henderson St(22174) ~ Walk 2m ~ Delridge Way SW & SW Henderson St(22252) ~ BUS 128 10:53:59 10:56 ~ SW Roxbury St & 15th Ave SW - Bay 3(21080) ~ Walk 9s ~ sound-generations:area_551(area_551) ~ BUS null 10:58:09 11:17:55
-148,3,01:17:48,7083,21,10:00:09,11:17:57,Metro Transit|Sound Generations,BUS,Hyde Shuttle|24|124|120|Hyde Shuttle,sound-generations:area_555|kcm:19410|kcm:2220|kcm:420|kcm:52030|sound-generations:area_551,sound-generations:area_555(area_555) ~ BUS null 10:00:09 10:08:26Walk 18s ~ Elliott Ave W & W Harrison St(19410) ~ BUS 24 10:10:44 10:14 ~ 3rd Ave & Cedar St(2220) ~ BUS 124 10:14 10:17:38 ~ 3rd Ave & Virginia St(420) ~ BUS 120 10:20 10:55 ~ 15th Ave SW & SW Roxbury St - Bay 1(52030) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:57 11:17:57
-148,3,01:20:29,7433,278,10:06:14,11:26:43,Metro Transit|Sound Generations,BUS,2|120|60|Hyde Shuttle,kcm:2570|kcm:420|kcm:22174|kcm:22252|kcm:21120|sound-generations:area_551,Walk 1m51s ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:25:27 ~ 3rd Ave & Virginia St(420) ~ BUS 120 10:30 10:58:02 ~ Delridge Way SW & SW Henderson St(22174) ~ Walk 2m ~ Delridge Way SW & SW Henderson St(22252) ~ BUS 60 11:02:51 11:07:37 ~ SW Roxbury St & 5th Ave SW(21120) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 11:09:37 11:26:43
-149,3,01:55:34,10686,1845,10:06:14,12:01:48,Metro Transit|Sound Transit,BUS|TRAM,2|124|1-Line|635,kcm:2570|kcm:2220|kcm:21833|sound-transit:99101|sound-transit:99913|kcm:47200|kcm:47404,Walk 1m51s ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:21 ~ 3rd Ave & Cedar St(2220) ~ BUS 124 10:28 10:45 ~ 6th Ave S & S Royal Brougham Way(21833) ~ Walk 2m12s ~ Stadium Station(99101) ~ TRAM 1-Line 10:56 11:30 ~ Angle Lake Station(99913) ~ Walk 1m37s ~ S 200th St & 28th Ave S(47200) ~ BUS 635 11:39 11:42:55 ~ S 216th St & 20th Ave S(47404) ~ Walk 18m53s
-149,2,01:59:19,11327,3252,10:02:29,12:01:48,Metro Transit|Sound Transit,BUS|TRAM,3|1-Line|635,kcm:41300|kcm:1560|sound-transit:99101|sound-transit:99913|kcm:47200|kcm:47404,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 3 10:05:41 10:31 ~ James St & 3rd Ave(1560) ~ Walk 19m38s ~ Stadium Station(99101) ~ TRAM 1-Line 10:56 11:30 ~ Angle Lake Station(99913) ~ Walk 1m37s ~ S 200th St & 28th Ave S(47200) ~ BUS 635 11:39 11:42:55 ~ S 216th St & 20th Ave S(47404) ~ Walk 18m53s
-149,2,01:55:59,9850,1437,10:06:14,12:02:13,Metro Transit,BUS,2|124|A Line,kcm:2570|kcm:2220|kcm:60922|kcm:60921|kcm:61170,Walk 1m51s ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:21 ~ 3rd Ave & Cedar St(2220) ~ BUS 124 10:28 11:20 ~ Tukwila International Blvd Station - Bay 2(60922) ~ Walk 2m9s ~ Tukwila International Blvd Station - Bay 1(60921) ~ BUS A Line 11:30 11:46:17 ~ Pacific Hwy S & S 224th St(61170) ~ Walk 15m56s
-150,4,01:24:11,8176,172,10:00:09,11:24:20,Metro Transit|Sound Generations,BUS,Hyde Shuttle|24|124|120|128|Hyde Shuttle,sound-generations:area_555|kcm:19410|kcm:2220|kcm:420|kcm:22174|kcm:22252|kcm:21080|sound-generations:area_551,sound-generations:area_555(area_555) ~ BUS null 10:00:09 10:08:26Walk 18s ~ Elliott Ave W & W Harrison St(19410) ~ BUS 24 10:10:44 10:14 ~ 3rd Ave & Cedar St(2220) ~ BUS 124 10:14 10:17:38 ~ 3rd Ave & Virginia St(420) ~ BUS 120 10:20 10:48:02 ~ Delridge Way SW & SW Henderson St(22174) ~ Walk 2m ~ Delridge Way SW & SW Henderson St(22252) ~ BUS 128 10:53:59 10:56 ~ SW Roxbury St & 15th Ave SW - Bay 3(21080) ~ Walk 9s ~ sound-generations:area_551(area_551) ~ BUS null 10:58:09 11:24:20
-150,3,01:24:13,7468,21,10:00:09,11:24:22,Metro Transit|Sound Generations,BUS,Hyde Shuttle|24|124|120|Hyde Shuttle,sound-generations:area_555|kcm:19410|kcm:2220|kcm:420|kcm:52030|sound-generations:area_551,sound-generations:area_555(area_555) ~ BUS null 10:00:09 10:08:26Walk 18s ~ Elliott Ave W & W Harrison St(19410) ~ BUS 24 10:10:44 10:14 ~ 3rd Ave & Cedar St(2220) ~ BUS 124 10:14 10:17:38 ~ 3rd Ave & Virginia St(420) ~ BUS 120 10:20 10:55 ~ 15th Ave SW & SW Roxbury St - Bay 1(52030) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:57 11:24:22
-150,3,01:26:54,7818,278,10:06:14,11:33:08,Metro Transit|Sound Generations,BUS,2|120|60|Hyde Shuttle,kcm:2570|kcm:420|kcm:22174|kcm:22252|kcm:21120|sound-generations:area_551,Walk 1m51s ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:25:27 ~ 3rd Ave & Virginia St(420) ~ BUS 120 10:30 10:58:02 ~ Delridge Way SW & SW Henderson St(22174) ~ Walk 2m ~ Delridge Way SW & SW Henderson St(22252) ~ BUS 60 11:02:51 11:07:37 ~ SW Roxbury St & 5th Ave SW(21120) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 11:09:37 11:33:08
-151,2,01:56:53,9196,529,10:06:14,12:03:07,Metro Transit,BUS,2|150|160,kcm:2570|kcm:450|kcm:1230|kcm:57455|kcm:57451|kcm:58255,Walk 1m51s ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:29 ~ 3rd Ave & Union St(450) ~ Walk 2m1s ~ Union St & 4th Ave(1230) ~ BUS 150 10:41:47 11:41 ~ Kent Sounder Station - Bay 5(57455) ~ Walk 44s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 11:49 12:00:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-151,2,01:54:08,9098,611,10:17:29,12:11:37,Metro Transit|Sound Transit,BUS,3|578|160,kcm:41300|kcm:480|pierce-transit:20510|pierce-transit:18728|kcm:57774|kcm:57915,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 3 10:20:41 10:43:20 ~ 3rd Ave & Marion St(480) ~ Walk 1m27s ~ 2nd Ave & Marion St(20510) ~ BUS 578 11:00 11:49 ~ Auburn Station - Bay 4(18728) ~ Walk 44s ~ Auburn Transit Center - Bay 2(57774) ~ BUS 160 11:57 12:08:49 ~ Auburn Way N & 37th St NE(57915) ~ Walk 2m48s
-151,2,01:53:35,9119,695,10:18:02,12:11:37,Metro Transit|Sound Transit,BUS,13|2|578|160,kcm:41300|kcm:2220|kcm:420|pierce-transit:2011772586|pierce-transit:18728|kcm:57774|kcm:57915,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 13 10:21:14 10:36 ~ 3rd Ave & Cedar St(2220) ~ BUS 2 10:36 10:40:27 ~ 3rd Ave & Virginia St(420) ~ Walk 2m52s ~ Stewart St & 3rd Ave(2011772586) ~ BUS 578 10:55 11:49 ~ Auburn Station - Bay 4(18728) ~ Walk 44s ~ Auburn Transit Center - Bay 2(57774) ~ BUS 160 11:57 12:08:49 ~ Auburn Way N & 37th St NE(57915) ~ Walk 2m48s
-153,1,01:51:56,10276,3219,10:17:29,12:09:25,Metro Transit|Sound Transit,BUS,3|578,kcm:41300|kcm:480|pierce-transit:20510|pierce-transit:4136,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 3 10:20:41 10:43:20 ~ 3rd Ave & Marion St(480) ~ Walk 1m27s ~ 2nd Ave & Marion St(20510) ~ BUS 578 11:00 11:32 ~ Federal Way TC - Bay 2(4136) ~ Walk 37m25s
-153,1,01:51:23,10297,3303,10:18:02,12:09:25,Metro Transit|Sound Transit,BUS,13|2|578,kcm:41300|kcm:2220|kcm:420|pierce-transit:2011772586|pierce-transit:4136,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 13 10:21:14 10:36 ~ 3rd Ave & Cedar St(2220) ~ BUS 2 10:36 10:40:27 ~ 3rd Ave & Virginia St(420) ~ Walk 2m52s ~ Stewart St & 3rd Ave(2011772586) ~ BUS 578 10:55 11:32 ~ Federal Way TC - Bay 2(4136) ~ Walk 37m25s
-153,1,01:50:22,10535,3690,10:19:03,12:09:25,Metro Transit|Sound Transit,BUS,1|14|578,kcm:2060|kcm:2220|kcm:480|pierce-transit:20510|pierce-transit:4136,Walk 9m8s ~ 10th Ave W & W Crockett St(2060) ~ BUS 1 10:28:11 10:40 ~ 3rd Ave & Cedar St(2220) ~ BUS 14 10:40 10:49:59 ~ 3rd Ave & Marion St(480) ~ Walk 1m27s ~ 2nd Ave & Marion St(20510) ~ BUS 578 11:00 11:32 ~ Federal Way TC - Bay 2(4136) ~ Walk 37m25s
-155,2,01:05:01,6025,440,10:06:14,11:11:15,Metro Transit,BUS,2|C Line|128,kcm:2570|kcm:420|kcm:20041|kcm:32011|kcm:31871,Walk 1m51s ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:25:27 ~ 3rd Ave & Virginia St(420) ~ BUS C Line 10:30 10:57 ~ SW Alaska St & California Ave SW - Bay 3(20041) ~ Walk 42s ~ SW Alaska St & 44th Ave SW - Bay 4(32011) ~ BUS 128 11:04 11:07:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-155,1,01:06:39,6198,1358,10:06:14,11:12:53,Metro Transit,BUS,2|C Line,kcm:2570|kcm:420|kcm:20041,Walk 1m51s ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:25:27 ~ 3rd Ave & Virginia St(420) ~ BUS C Line 10:30 10:57 ~ SW Alaska St & California Ave SW - Bay 3(20041) ~ Walk 15m53s
-155,2,01:01:31,5848,486,10:17:29,11:19:00,Metro Transit,BUS,3|120|50,kcm:41300|kcm:420|kcm:21990|kcm:31871,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 3 10:20:41 10:36:53 ~ 3rd Ave & Virginia St(420) ~ BUS 120 10:40 10:57:32 ~ Delridge Way SW & SW Andover St(21990) ~ BUS 50 11:00 11:15:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-156,0,02:47:40,19401,12748,10:00:00,12:47:40,,,,,Walk 2h47m40s
-157,1,02:20:31,11022,1915,10:17:29,12:38:00,Metro Transit|Sound Transit,BUS,3|578,kcm:41300|kcm:480|pierce-transit:20510|pierce-transit:10401,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 3 10:20:41 10:43:20 ~ 3rd Ave & Marion St(480) ~ Walk 1m27s ~ 2nd Ave & Marion St(20510) ~ BUS 578 11:00 12:17 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-157,2,02:11:40,10353,889,10:47:29,12:59:09,Metro Transit|Pierce Transit|Sound Transit,BUS,3|578|402,kcm:41300|kcm:480|pierce-transit:20510|pierce-transit:4136|pierce-transit:29410|pierce-transit:1332,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 3 10:50:41 11:13:20 ~ 3rd Ave & Marion St(480) ~ Walk 1m27s ~ 2nd Ave & Marion St(20510) ~ BUS 578 11:30 12:03 ~ Federal Way TC - Bay 2(4136) ~ Walk 1m10s ~ Federal Way TC - Bay 5(29410) ~ BUS 402 12:11 12:53 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m9s
-157,1,02:23:31,11202,1915,10:47:29,13:11:00,Metro Transit|Sound Transit,BUS,3|578,kcm:41300|kcm:480|pierce-transit:20510|pierce-transit:10401,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 3 10:50:41 11:13:20 ~ 3rd Ave & Marion St(480) ~ Walk 1m27s ~ 2nd Ave & Marion St(20510) ~ BUS 578 11:30 12:50 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-159,2,02:04:16,9816,775,10:06:14,12:10:30,Metro Transit|Sound Transit,BUS,2|554|208,kcm:2570|kcm:430|kcm:280|kcm:64590|kcm:64593|kcm:64399,Walk 1m51s ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:26:59 ~ 3rd Ave & Pine St(430) ~ Walk 2m6s ~ 2nd Ave & Stewart St(280) ~ BUS 554 10:37:53 11:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 11:31 12:04:49 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-159,3,03:09:46,14447,909,10:48:02,13:57:48,Metro Transit|Sound Transit,BUS,13|2|545|224|629,kcm:41300|kcm:2220|kcm:430|kcm:700|kcm:72488|kcm:68803|kcm:64397,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 13 10:51:14 11:06 ~ 3rd Ave & Cedar St(2220) ~ BUS 2 11:06 11:11:59 ~ 3rd Ave & Pine St(430) ~ Walk 2m30s ~ 4th Ave & Pike St(700) ~ BUS 545 11:26 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-160,2,02:00:19,9806,1115,10:10:11,12:10:30,Metro Transit|Sound Generations|Sound Transit,BUS,Hyde Shuttle|554|208,sound-generations:area_555|kcm:26665|kcm:1920|kcm:64590|kcm:64593|kcm:64399,sound-generations:area_555(area_555) ~ BUS null 10:10:11 10:24:49Walk 1m17s ~ Westlake Ave & 9th Ave(26665) ~ Walk 7m54s ~ Lenora St & 4th Ave(1920) ~ BUS 554 10:36 11:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 11:31 12:04:49 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-160,3,02:56:25,13718,1015,11:01:23,13:57:48,Metro Transit|Sound Generations|Sound Transit,BUS,Hyde Shuttle|545|224|629,sound-generations:area_555|kcm:10240|kcm:1051|kcm:72488|kcm:68803|kcm:64397,sound-generations:area_555(area_555) ~ BUS null 11:01:23 11:17:56Walk 2m1s ~ Boren Ave & Virginia St(10240) ~ Walk 5m11s ~ Olive Way & Boren Ave(1051) ~ BUS 545 11:27:08 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-161,1,00:52:05,4645,450,10:02:29,10:54:34,Metro Transit,BUS,3|36,kcm:41300|kcm:450|kcm:3820,Walk 3m12s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 3 10:05:41 10:25 ~ 3rd Ave & Union St(450) ~ BUS 36 10:30:15 10:51:18 ~ Beacon Ave S & S Stevens St(3820) ~ Walk 3m16s
-161,2,00:51:53,5367,622,10:06:14,10:58:07,Metro Transit,BUS,2|27|60,kcm:2570|kcm:450|kcm:433|kcm:27500|kcm:3800,Walk 1m51s ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:29 ~ 3rd Ave & Union St(450) ~ Walk 1m32s ~ 3rd Ave & Pike St(433) ~ BUS 27 10:33 10:40:48 ~ E Yesler Way & Broadway(27500) ~ BUS 60 10:44:43 10:53 ~ Beacon Ave S & S Bayview St(3800) ~ Walk 5m7s
-161,1,00:58:38,4962,349,10:06:14,11:04:52,Metro Transit,BUS,2|36,kcm:2570|kcm:450|kcm:3820,Walk 1m51s ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:29 ~ 3rd Ave & Union St(450) ~ BUS 36 10:40:15 11:01:36 ~ Beacon Ave S & S Stevens St(3820) ~ Walk 3m16s
-162,2,00:41:30,4446,219,10:00:09,10:41:39,Metro Transit|Sound Generations|Sound Transit,BUS|TRAM,Hyde Shuttle|24|124|1-Line,sound-generations:area_555|kcm:19410|kcm:2220|kcm:21833|sound-transit:99101|sound-transit:99121,sound-generations:area_555(area_555) ~ BUS null 10:00:09 10:08:26Walk 18s ~ Elliott Ave W & W Harrison St(19410) ~ BUS 24 10:10:44 10:14 ~ 3rd Ave & Cedar St(2220) ~ BUS 124 10:14 10:31 ~ 6th Ave S & S Royal Brougham Way(21833) ~ Walk 2m12s ~ Stadium Station(99101) ~ TRAM 1-Line 10:36 10:41 ~ Beacon Hill Station(99121) ~ Walk 39s
-162,2,00:46:01,4639,101,10:05:38,10:51:39,Sound Generations|Sound Transit,BUS|TRAM,Hyde Shuttle|545|1-Line,sound-generations:area_555|kcm:905|kcm:760|sound-transit:1108|sound-transit:99121,sound-generations:area_555(area_555) ~ BUS null 10:05:38 10:23:57Walk 25s ~ Stewart St & Yale Ave N(905) ~ BUS 545 10:26:22 10:28 ~ 5th Ave & Pine St(760) ~ Walk 20s ~ Westlake Station(1108) ~ TRAM 1-Line 10:39 10:51 ~ Beacon Hill Station(99121) ~ Walk 39s
-162,1,00:49:12,4851,906,10:02:27,10:51:39,Sound Generations|Sound Transit,BUS|TRAM,Hyde Shuttle|1-Line,sound-generations:area_555|kcm:2275|sound-transit:99610|sound-transit:99121,sound-generations:area_555(area_555) ~ BUS null 10:02:27 10:21:05Walk 4m12s ~ E Denny Way & Bellevue Ave E(2275) ~ Walk 8m43s ~ Capitol Hill Station(99610) ~ TRAM 1-Line 10:36 10:51 ~ Beacon Hill Station(99121) ~ Walk 39s
-163,2,01:31:07,8781,2053,10:03:31,11:34:38,Metro Transit|Sound Transit,BUS|TRAM,1-Line|101|160,sound-transit:99240|sound-transit:99256|kcm:99263|kcm:79610|kcm:59891|kcm:57375,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:05 10:08 ~ SODO Station(99256) ~ Walk 2m30s ~ SODO Busway & S Lander St(99263) ~ BUS 101 10:16 10:33 ~ SW Sunset Blvd & Hardie Ave SW(79610) ~ Walk 4m34s ~ Rainier Ave S & S 3rd Pl(59891) ~ BUS 160 10:51:49 11:16:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
-163,2,01:37:07,9141,2053,10:13:31,11:50:38,Metro Transit|Sound Transit,BUS|TRAM,1-Line|101|160,sound-transit:99240|sound-transit:99256|kcm:99263|kcm:79610|kcm:59891|kcm:57375,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:15 10:18 ~ SODO Station(99256) ~ Walk 2m30s ~ SODO Busway & S Lander St(99263) ~ BUS 101 10:31 10:48 ~ SW Sunset Blvd & Hardie Ave SW(79610) ~ Walk 4m34s ~ Rainier Ave S & S 3rd Pl(59891) ~ BUS 160 11:07:49 11:32:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
-163,1,01:44:26,10023,3496,10:06:12,11:50:38,Metro Transit,BUS,101|160,kcm:99266|kcm:79610|kcm:59891|kcm:57375,Walk 23m3s ~ SODO Busway & S Holgate St(99266) ~ BUS 101 10:29:15 10:48 ~ SW Sunset Blvd & Hardie Ave SW(79610) ~ Walk 4m34s ~ Rainier Ave S & S 3rd Pl(59891) ~ BUS 160 11:07:49 11:32:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
-165,1,01:19:05,8303,3196,10:20:21,11:39:26,Metro Transit|Sound Transit,BUS|TRAM,1-Line|F Line,sound-transit:99121|sound-transit:99900|kcm:60923|kcm:47646,Walk 39s ~ Beacon Hill Station(99121) ~ TRAM 1-Line 10:21 10:43 ~ Tukwila Int'l Blvd Station(99900) ~ Walk 1m11s ~ Tukwila International Blvd Station - Bay 3(60923) ~ BUS F Line 10:49 11:00:05 ~ SW 156th St & 2nd Ave SW(47646) ~ Walk 39m21s
-165,1,01:09:19,7067,2317,10:30:21,11:39:40,Metro Transit|Sound Transit,BUS|TRAM,1-Line|156,sound-transit:99121|sound-transit:99904|kcm:60903|kcm:50250,Walk 39s ~ Beacon Hill Station(99121) ~ TRAM 1-Line 10:31 10:56 ~ SeaTac/Airport Station(99904) ~ Walk 6m47s ~ S 176th St & 30th Ave S - Bay 3(60903) ~ BUS 156 11:07 11:14:01 ~ 8th Ave S & Des Moines Memorial Dr S(50250) ~ Walk 25m39s
-165,2,01:14:15,6946,928,10:30:21,11:44:36,Metro Transit|Sound Transit,BUS|TRAM,1-Line|F Line|165,sound-transit:99121|sound-transit:99900|kcm:60923|kcm:53720|kcm:53975|kcm:48620,Walk 39s ~ Beacon Hill Station(99121) ~ TRAM 1-Line 10:31 10:53 ~ Tukwila Int'l Blvd Station(99900) ~ Walk 1m11s ~ Tukwila International Blvd Station - Bay 3(60923) ~ BUS F Line 11:04 11:15:59 ~ 4th Ave SW & SW 156th St(53720) ~ Walk 9s ~ 4th Ave SW & SW 156th St(53975) ~ BUS 165 11:28:44 11:34:26 ~ 1st Ave S & SW 178th St(48620) ~ Walk 10m10s
-166,1,00:51:14,4544,380,10:00:51,10:52:05,Metro Transit|Sound Generations,BUS,60|Hyde Shuttle,kcm:42048|kcm:21170|sound-generations:area_551,Walk 5m12s ~ 15th Ave S & S Stevens St(42048) ~ BUS 60 10:06:03 10:32:46 ~ SW Roxbury St & 5th Pl SW(21170) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:34:46 10:52:05
-166,2,00:50:36,4852,21,10:01:29,10:52:05,Metro Transit|Sound Generations,BUS,Hyde Shuttle|60|Hyde Shuttle,sound-generations:area_564|kcm:42048|kcm:21170|sound-generations:area_551,sound-generations:area_564(area_564) ~ BUS null 10:01:29 10:03:45Walk 18s ~ 15th Ave S & S Stevens St(42048) ~ BUS 60 10:06:03 10:32:46 ~ SW Roxbury St & 5th Pl SW(21170) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:34:46 10:52:05
-166,1,00:51:14,4544,380,10:13:51,11:05:05,Metro Transit|Sound Generations,BUS,60|Hyde Shuttle,kcm:42048|kcm:21170|sound-generations:area_551,Walk 5m12s ~ 15th Ave S & S Stevens St(42048) ~ BUS 60 10:19:03 10:45:46 ~ SW Roxbury St & 5th Pl SW(21170) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:47:46 11:05:05
-167,1,01:00:52,5893,1420,10:10:21,11:11:13,Metro Transit|Sound Transit,BUS|TRAM,1-Line|A Line,sound-transit:99121|sound-transit:99913|kcm:61120|kcm:61170,Walk 39s ~ Beacon Hill Station(99121) ~ TRAM 1-Line 10:11 10:40 ~ Angle Lake Station(99913) ~ Walk 2m18s ~ International Blvd & S 200th St(61120) ~ BUS A Line 10:50:12 10:55:17 ~ Pacific Hwy S & S 224th St(61170) ~ Walk 15m56s
-167,1,01:01:52,5953,1420,10:20:21,11:22:13,Metro Transit|Sound Transit,BUS|TRAM,1-Line|A Line,sound-transit:99121|sound-transit:99913|kcm:61120|kcm:61170,Walk 39s ~ Beacon Hill Station(99121) ~ TRAM 1-Line 10:21 10:50 ~ Angle Lake Station(99913) ~ Walk 2m18s ~ International Blvd & S 200th St(61120) ~ BUS A Line 11:01:12 11:06:17 ~ Pacific Hwy S & S 224th St(61170) ~ Walk 15m56s
-167,1,01:01:27,6074,1610,10:30:21,11:31:48,Metro Transit|Sound Transit,BUS|TRAM,1-Line|635,sound-transit:99121|sound-transit:99913|kcm:47200|kcm:47404,Walk 39s ~ Beacon Hill Station(99121) ~ TRAM 1-Line 10:31 11:00 ~ Angle Lake Station(99913) ~ Walk 1m37s ~ S 200th St & 28th Ave S(47200) ~ BUS 635 11:09 11:12:55 ~ S 216th St & 20th Ave S(47404) ~ Walk 18m53s
-168,1,00:57:39,4929,380,10:00:51,10:58:30,Metro Transit|Sound Generations,BUS,60|Hyde Shuttle,kcm:42048|kcm:21170|sound-generations:area_551,Walk 5m12s ~ 15th Ave S & S Stevens St(42048) ~ BUS 60 10:06:03 10:32:46 ~ SW Roxbury St & 5th Pl SW(21170) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:34:46 10:58:30
-168,2,00:57:01,5237,21,10:01:29,10:58:30,Metro Transit|Sound Generations,BUS,Hyde Shuttle|60|Hyde Shuttle,sound-generations:area_564|kcm:42048|kcm:21170|sound-generations:area_551,sound-generations:area_564(area_564) ~ BUS null 10:01:29 10:03:45Walk 18s ~ 15th Ave S & S Stevens St(42048) ~ BUS 60 10:06:03 10:32:46 ~ SW Roxbury St & 5th Pl SW(21170) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:34:46 10:58:30
-168,2,00:51:14,5025,206,10:10:21,11:01:35,Metro Transit|Sound Generations|Sound Transit,BUS|TRAM,1-Line|A Line|Hyde Shuttle,sound-transit:99121|sound-transit:99913|kcm:61120|kcm:61150|sound-generations:area_551,Walk 39s ~ Beacon Hill Station(99121) ~ TRAM 1-Line 10:11 10:40 ~ Angle Lake Station(99913) ~ Walk 2m18s ~ International Blvd & S 200th St(61120) ~ BUS A Line 10:50:12 10:53:30 ~ Pacific Hwy S & S 216th St(61150) ~ Walk 0s ~ sound-generations:area_551(area_551) ~ BUS null 10:55:30 11:01:35
-169,2,01:17:36,6862,554,10:13:31,11:31:07,Metro Transit|Sound Transit,BUS|TRAM,1-Line|150|160,sound-transit:99240|sound-transit:99256|kcm:99263|kcm:57455|kcm:57451|kcm:58255,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:15 10:18 ~ SODO Station(99256) ~ Walk 2m30s ~ SODO Busway & S Lander St(99263) ~ BUS 150 10:24 11:11 ~ Kent Sounder Station - Bay 5(57455) ~ Walk 44s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 11:17 11:28:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-169,2,01:23:36,7222,554,10:23:31,11:47:07,Metro Transit|Sound Transit,BUS|TRAM,1-Line|150|160,sound-transit:99240|sound-transit:99256|kcm:99263|kcm:57455|kcm:57451|kcm:58255,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:25 10:28 ~ SODO Station(99256) ~ Walk 2m30s ~ SODO Busway & S Lander St(99263) ~ BUS 150 10:39 11:26 ~ Kent Sounder Station - Bay 5(57455) ~ Walk 44s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 11:33 11:44:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-169,1,01:32:55,8225,1997,10:14:12,11:47:07,Metro Transit,BUS,150|160,kcm:99266|kcm:57455|kcm:57451|kcm:58255,Walk 23m3s ~ SODO Busway & S Holgate St(99266) ~ BUS 150 10:37:15 11:26 ~ Kent Sounder Station - Bay 5(57455) ~ Walk 44s ~ Kent Sounder Station - Bay 1(57451) ~ BUS 160 11:33 11:44:20 ~ Auburn Way N & 37th St NE(58255) ~ Walk 2m47s
-170,2,01:12:11,6351,298,10:13:31,11:25:42,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS|TRAM,1-Line|150|Road to Independence,sound-transit:99240|sound-transit:99256|kcm:99263|kcm:80580|pudget-sound-educational:area_622,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:15 10:18 ~ SODO Station(99256) ~ Walk 2m30s ~ SODO Busway & S Lander St(99263) ~ BUS 150 10:24 11:08:20 ~ W James St & Lincoln Ave N(80580) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:10:20 11:25:42
-170,2,01:17:11,6651,298,10:23:31,11:40:42,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS|TRAM,1-Line|150|Road to Independence,sound-transit:99240|sound-transit:99256|kcm:99263|kcm:80580|pudget-sound-educational:area_622,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:25 10:28 ~ SODO Station(99256) ~ Walk 2m30s ~ SODO Busway & S Lander St(99263) ~ BUS 150 10:39 11:23:20 ~ W James St & Lincoln Ave N(80580) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:25:20 11:40:42
-170,1,01:26:30,7653,1741,10:14:12,11:40:42,Metro Transit|Puget Sound Educational Service District,BUS,150|Road to Independence,kcm:99266|kcm:80580|pudget-sound-educational:area_622,Walk 23m3s ~ SODO Busway & S Holgate St(99266) ~ BUS 150 10:37:15 11:23:20 ~ W James St & Lincoln Ave N(80580) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:25:20 11:40:42
-171,2,01:08:51,6341,576,10:05:00,11:13:51,Metro Transit|Sound Transit,BUS,36|578|181,kcm:3460|kcm:1530|pierce-transit:30709|pierce-transit:4136|kcm:80433|kcm:83784,Walk 2m25s ~ Beacon Ave S & S Stevens St(3460) ~ BUS 36 10:07:25 10:22 ~ S Jackson St & 5th Ave S(1530) ~ Walk 1m52s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 578 10:33 11:01 ~ Federal Way TC - Bay 2(4136) ~ Walk 37s ~ Federal Way TC - Bay 3(80433) ~ BUS 181 11:04 11:10:35 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-171,3,01:00:20,6596,799,10:13:31,11:13:51,Metro Transit|Sound Transit,BUS|TRAM,1-Line|24|578|181,sound-transit:99240|sound-transit:99260|kcm:30635|kcm:619|pierce-transit:30709|pierce-transit:4136|kcm:80433|kcm:83784,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:15 10:20 ~ Stadium Station(99260) ~ Walk 3m46s ~ 4th Ave S & S Royal Brougham Way(30635) ~ BUS 24 10:26 10:28 ~ 4th Ave S & S Jackson St(619) ~ Walk 1m54s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 578 10:33 11:01 ~ Federal Way TC - Bay 2(4136) ~ Walk 37s ~ Federal Way TC - Bay 3(80433) ~ BUS 181 11:04 11:10:35 ~ SW 320th St & 1st Ave S(83784) ~ Walk 3m16s
-171,1,01:33:25,9097,3151,10:05:00,11:38:25,Metro Transit|Sound Transit,BUS,36|578,kcm:3460|kcm:1530|pierce-transit:30709|pierce-transit:4136,Walk 2m25s ~ Beacon Ave S & S Stevens St(3460) ~ BUS 36 10:07:25 10:22 ~ S Jackson St & 5th Ave S(1530) ~ Walk 1m52s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 578 10:33 11:01 ~ Federal Way TC - Bay 2(4136) ~ Walk 37m25s
-173,1,00:44:29,4230,503,10:03:31,10:48:00,Metro Transit|Sound Transit,BUS|TRAM,1-Line|50,sound-transit:99240|sound-transit:99256|kcm:99261|kcm:31871,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:05 10:08 ~ SODO Station(99256) ~ Walk 2m7s ~ S Lander St & SODO Busway(99261) ~ BUS 50 10:21 10:44:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-173,1,00:37:29,3810,503,10:23:31,11:01:00,Metro Transit|Sound Transit,BUS|TRAM,1-Line|50,sound-transit:99240|sound-transit:99256|kcm:99261|kcm:31871,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:25 10:28 ~ SODO Station(99256) ~ Walk 2m7s ~ S Lander St & SODO Busway(99261) ~ BUS 50 10:33 10:57:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-173,0,00:46:48,4302,1227,10:14:12,11:01:00,Metro Transit,BUS,50,kcm:30530|kcm:31871,Walk 12m56s ~ S Columbian Way & S Spokane St(30530) ~ BUS 50 10:27:08 10:57:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m25s
-174,1,00:24:22,2815,209,10:03:31,10:27:53,Sound Generations|Sound Transit,BUS|TRAM,1-Line|Hyde Shuttle,sound-transit:99240|sound-transit:99256|sound-generations:area_560,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:05 10:08 ~ SODO Station(99256) ~ Walk 1m20s ~ sound-generations:area_560(area_560) ~ BUS null 10:11:20 10:27:53
-174,1,00:24:22,2815,209,10:13:31,10:37:53,Sound Generations|Sound Transit,BUS|TRAM,1-Line|Hyde Shuttle,sound-transit:99240|sound-transit:99256|sound-generations:area_560,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:15 10:18 ~ SODO Station(99256) ~ Walk 1m20s ~ sound-generations:area_560(area_560) ~ BUS null 10:21:20 10:37:53
-174,1,00:24:22,2815,209,10:23:31,10:47:53,Sound Generations|Sound Transit,BUS|TRAM,1-Line|Hyde Shuttle,sound-transit:99240|sound-transit:99256|sound-generations:area_560,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:25 10:28 ~ SODO Station(99256) ~ Walk 1m20s ~ sound-generations:area_560(area_560) ~ BUS null 10:31:20 10:47:53
-175,2,01:51:09,9053,821,10:05:00,11:56:09,Metro Transit|Pierce Transit|Sound Transit,BUS,36|578|402,kcm:3460|kcm:1530|pierce-transit:30709|pierce-transit:4136|pierce-transit:29410|pierce-transit:1332,Walk 2m25s ~ Beacon Ave S & S Stevens St(3460) ~ BUS 36 10:07:25 10:22 ~ S Jackson St & 5th Ave S(1530) ~ Walk 1m52s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 578 10:33 11:01 ~ Federal Way TC - Bay 2(4136) ~ Walk 1m10s ~ Federal Way TC - Bay 5(29410) ~ BUS 402 11:10 11:50 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m9s
-175,1,02:00:00,9723,1847,10:05:00,12:05:00,Metro Transit|Sound Transit,BUS,36|578,kcm:3460|kcm:1530|pierce-transit:30709|pierce-transit:10401,Walk 2m25s ~ Beacon Ave S & S Stevens St(3460) ~ BUS 36 10:07:25 10:22 ~ S Jackson St & 5th Ave S(1530) ~ Walk 1m52s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 578 10:33 11:44 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m
-175,2,01:51:45,9310,1110,10:13:31,12:05:16,Pierce Transit|Sound Transit,BUS|TRAM,1-Line|594|400,sound-transit:99240|sound-transit:99260|pierce-transit:595|pierce-transit:20163|pierce-transit:12938|pierce-transit:8058,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:15 10:20 ~ Stadium Station(99260) ~ Walk 1m4s ~ Bus Wy & Royal Brougham St(595) ~ BUS 594 10:30 11:16 ~ Tacoma Dome Station - Zone E(20163) ~ Walk 1m10s ~ Tacoma Dome Station - Zone C(12938) ~ BUS 400 11:30 11:54 ~ 5th St SW & 9th Ave SW - Red Lot(8058) ~ Walk 11m16s
-176,2,01:27:15,7294,395,10:05:00,11:32:15,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS,36|578|Road to Independence,kcm:3460|kcm:1530|pierce-transit:30709|pierce-transit:4136|pudget-sound-educational:area_622,Walk 2m25s ~ Beacon Ave S & S Stevens St(3460) ~ BUS 36 10:07:25 10:22 ~ S Jackson St & 5th Ave S(1530) ~ Walk 1m52s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 578 10:33 11:01 ~ Federal Way TC - Bay 2(4136) ~ Walk 1m59s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:04:59 11:32:15
-176,3,01:18:44,7549,618,10:13:31,11:32:15,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS|TRAM,1-Line|24|578|Road to Independence,sound-transit:99240|sound-transit:99260|kcm:30635|kcm:619|pierce-transit:30709|pierce-transit:4136|pudget-sound-educational:area_622,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:15 10:20 ~ Stadium Station(99260) ~ Walk 3m46s ~ 4th Ave S & S Royal Brougham Way(30635) ~ BUS 24 10:26 10:28 ~ 4th Ave S & S Jackson St(619) ~ Walk 1m54s ~ 2nd Ave Ext & Jackson St S(30709) ~ BUS 578 10:33 11:01 ~ Federal Way TC - Bay 2(4136) ~ Walk 1m59s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:04:59 11:32:15
-176,2,01:23:14,7014,298,10:13:31,11:36:45,Metro Transit|Puget Sound Educational Service District|Sound Transit,BUS|TRAM,1-Line|150|Road to Independence,sound-transit:99240|sound-transit:99256|kcm:99263|kcm:80580|pudget-sound-educational:area_622,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:15 10:18 ~ SODO Station(99256) ~ Walk 2m30s ~ SODO Busway & S Lander St(99263) ~ BUS 150 10:24 11:08:20 ~ W James St & Lincoln Ave N(80580) ~ Walk 0s ~ pudget-sound-educational:area_622(area_622) ~ BUS null 11:10:20 11:36:45
-177,2,01:45:30,8652,741,10:25:00,12:10:30,Metro Transit|Sound Transit,BUS,36|554|208,kcm:3460|kcm:1510|kcm:1480|kcm:64590|kcm:64593|kcm:64399,Walk 2m25s ~ Beacon Ave S & S Stevens St(3460) ~ BUS 36 10:27:25 10:40:54 ~ S Jackson St & Maynard Ave S(1510) ~ Walk 1m28s ~ S Jackson St & Maynard Ave S(1480) ~ BUS 554 10:46:10 11:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 11:31 12:04:49 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-177,1,01:47:04,9477,2553,10:23:26,12:10:30,Metro Transit|Sound Transit,BUS,554|208,kcm:8590|kcm:64590|kcm:64593|kcm:64399,Walk 27m34s ~ Rainier Ave S & S Charles St(8590) ~ BUS 554 10:51 11:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 11:31 12:04:49 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-177,3,02:54:17,13493,861,11:03:31,13:57:48,Metro Transit|Sound Transit,BUS|TRAM,1-Line|545|224|629,sound-transit:99240|sound-transit:99260|kcm:21765|kcm:72488|kcm:68803|kcm:64397,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 11:05 11:10 ~ Stadium Station(99260) ~ Walk 3m13s ~ 6th Ave S & S Royal Brougham Way(21765) ~ BUS 545 11:17 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-178,2,01:36:36,8393,1099,10:33:54,12:10:30,Metro Transit|Sound Generations|Sound Transit,BUS,Hyde Shuttle|554|208,sound-generations:area_564|kcm:8485|kcm:8590|kcm:64590|kcm:64593|kcm:64399,sound-generations:area_564(area_564) ~ BUS null 10:33:54 10:40:49Walk 31s ~ Rainier Ave S & I-90(8485) ~ Walk 7m40s ~ Rainier Ave S & S Charles St(8590) ~ BUS 554 10:51 11:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 11:31 12:04:49 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-178,1,01:47:04,9477,2553,10:23:26,12:10:30,Metro Transit|Sound Transit,BUS,554|208,kcm:8590|kcm:64590|kcm:64593|kcm:64399,Walk 27m34s ~ Rainier Ave S & S Charles St(8590) ~ BUS 554 10:51 11:12 ~ Issaquah Transit Center - Bay 6(64590) ~ Walk 1m1s ~ Issaquah Transit Center - Bay 4(64593) ~ BUS 208 11:31 12:04:49 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m41s
-178,3,02:54:17,13493,861,11:03:31,13:57:48,Metro Transit|Sound Transit,BUS|TRAM,1-Line|545|224|629,sound-transit:99240|sound-transit:99260|kcm:21765|kcm:72488|kcm:68803|kcm:64397,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 11:05 11:10 ~ Stadium Station(99260) ~ Walk 3m13s ~ 6th Ave S & S Royal Brougham Way(21765) ~ BUS 545 11:17 12:01:45 ~ Redmond Way & 166th Ave NE(72488) ~ BUS 224 12:15:31 12:49 ~ Brown Ave NE & NE Richardson St(68803) ~ BUS 629 13:04 13:51 ~ Railroad Avenue Southeast Ave SE & SE Northern St(64397) ~ Walk 6m48s
-179,2,00:50:07,5144,453,10:03:31,10:53:38,Metro Transit|Sound Transit,BUS|TRAM,1-Line|131|3,sound-transit:99240|sound-transit:532|kcm:531|kcm:605|kcm:41350,Walk 1m29s ~ Beacon Hill Station(99240) ~ TRAM 1-Line 10:05 10:14 ~ Pioneer Square Station(532) ~ Walk 1m29s ~ 3rd Ave & James St(531) ~ BUS 131 10:17:57 10:27 ~ 3rd Ave & Bell St(605) ~ BUS 3 10:33:07 10:50:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-179,1,00:53:47,4700,388,10:05:00,10:58:47,Metro Transit,BUS,36|13,kcm:3460|kcm:575|kcm:41350,Walk 2m25s ~ Beacon Ave S & S Stevens St(3460) ~ BUS 36 10:07:25 10:31 ~ 3rd Ave & Pike St(575) ~ BUS 13 10:34 10:55:44 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-179,1,00:53:38,4691,388,10:15:00,11:08:38,Metro Transit,BUS,36|3,kcm:3460|kcm:538|kcm:41350,Walk 2m25s ~ Beacon Ave S & S Stevens St(3460) ~ BUS 36 10:17:25 10:36:22 ~ 3rd Ave & Columbia St(538) ~ BUS 3 10:38:24 11:05:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m3s
-180,0,01:55:43,13349,8814,10:00:00,11:55:43,,,,,Walk 1h55m43s
+1,0,23m22s,2002,0,10:00:00,10:23:22,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:23:22
+1,0,23m22s,2002,0,10:00:00,10:23:22,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:23:22
+1,0,23m22s,2002,0,10:00:00,10:23:22,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:23:22
+2,1,36m2s,3945,788,10:40:34,11:16:36,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|165,volunteer:area_873|kcm:48550|kcm:48620,volunteer:area_873(area_873) ~ BUS null 10:40:34 10:59:42 ~ Walk 5s ~ 1st Ave S & SW 156th St(48550) ~ BUS 165 11:01:47 11:06:26 ~ 1st Ave S & SW 178th St(48620) ~ Walk 10m10s
+2,1,1h4m17s,5712,884,10:21:11,11:25:28,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|165,volunteer:area_873|kcm:57448|kcm:47570,volunteer:area_873(area_873) ~ BUS null 10:21:11 10:24:50 ~ Walk 0s ~ SE 240th St & 116th Ave SE(57448) ~ BUS 165 10:26:50 11:14 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m28s
+2,1,1h4m17s,5712,884,10:51:11,11:55:28,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|165,volunteer:area_873|kcm:57448|kcm:47570,volunteer:area_873(area_873) ~ BUS null 10:51:11 10:54:50 ~ Walk 0s ~ SE 240th St & 116th Ave SE(57448) ~ BUS 165 10:56:50 11:44 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m28s
+3,0,18m45s,1725,0,10:00:00,10:18:45,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:18:45
+3,0,18m45s,1725,0,10:00:00,10:18:45,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:18:45
+3,0,18m45s,1725,0,10:00:00,10:18:45,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:18:45
+4,1,28m57s,3475,729,10:19:40,10:48:37,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|156,volunteer:area_873|kcm:48980|kcm:48990,volunteer:area_873(area_873) ~ BUS null 10:19:40 10:36:20 ~ Walk 0s ~ 24th Ave S & S 230th St(48980) ~ BUS 156 10:38:20 10:39:02 ~ 24th Ave S & S 226th St(48990) ~ Walk 9m35s
+4,1,28m57s,3475,729,10:49:40,11:18:37,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|156,volunteer:area_873|kcm:48980|kcm:48990,volunteer:area_873(area_873) ~ BUS null 10:49:40 11:06:20 ~ Walk 0s ~ 24th Ave S & S 230th St(48980) ~ BUS 156 11:08:20 11:09:02 ~ 24th Ave S & S 226th St(48990) ~ Walk 9m35s
+4,0,1h24m18s,8796,4255,10:23:15,11:47:33,Metro Transit,BUS,165,kcm:57448|kcm:50480,Walk 33m35s ~ SE 240th St & 116th Ave SE(57448) ~ BUS 165 10:56:50 11:25:40 ~ Pacific Hwy S & Kent Des Moines Rd(50480) ~ Walk 21m53s
+5,0,31m32s,2556,89,10:00:00,10:31:32,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:30:19 ~ Walk 1m13s
+5,0,31m32s,2556,89,10:00:00,10:31:32,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:30:19 ~ Walk 1m13s
+5,0,31m32s,2556,89,10:00:00,10:31:32,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:30:19 ~ Walk 1m13s
+6,1,45m11s,4547,878,10:01:00,10:46:11,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|50,volunteer:area_873|kcm:31890|kcm:31900,volunteer:area_873(area_873) ~ BUS null 10:01 10:31:33 ~ Walk 24s ~ California Ave SW & SW Hanford St(31890) ~ BUS 50 10:33:57 10:34:37 ~ California Ave SW & SW Stevens St(31900) ~ Walk 11m34s
+6,1,36m29s,3577,264,10:33:47,11:10:16,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|128,volunteer:area_873|kcm:31850|kcm:31871,volunteer:area_873(area_873) ~ BUS null 10:33:47 11:03:15 ~ Walk 25s ~ California Ave SW & SW Andover St(31850) ~ BUS 128 11:05:40 11:06:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m26s
+7,0,28m30s,2310,0,10:00:00,10:28:30,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_1083,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:28:30
+7,0,28m30s,2310,0,07:00:00,07:28:30,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_1083,ccsww-kc:area_897(area_897) ~ BUS null 7:00 7:28:30
+8,1,36m2s,3709,474,10:10:01,10:46:03,Pierce Transit|Volunteer Services: King County,BUS,Volunteer Services: King County|402,ccsww-kc:area_1083|pierce:1334|pierce:1294,ccsww-kc:area_897(area_897) ~ BUS null 10:10:01 10:36:52 ~ Walk 32s ~ Meridian S & 10th Ave SE(1334) ~ BUS 402 10:39:24 10:40:12 ~ Meridian S & 9th Ave SE(1294) ~ Walk 5m51s
+8,1,41m,3997,457,11:04:55,11:45:55,Pierce Transit|Volunteer Services: King County,BUS,Volunteer Services: King County|402,ccsww-kc:area_1083|pierce:1338|pierce:1332,ccsww-kc:area_897(area_897) ~ BUS null 11:04:55 11:30:20 ~ Walk 0s ~ Meridian N & River Rd(1338) ~ BUS 402 11:32:20 11:39:31 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m24s
+9,0,38m30s,2910,0,10:00:00,10:38:30,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:38:30
+9,0,38m30s,2910,0,10:00:00,10:38:30,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:38:30
+9,0,38m30s,2910,0,10:00:00,10:38:30,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:38:30
+10,1,46m38s,4213,294,10:23:47,11:10:25,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|SVT,volunteer:area_873|kcm:85395|kcm:82425,volunteer:area_873(area_873) ~ BUS null 10:23:47 11:00:09 ~ Walk 0s ~ 384th Ave SE & SE 92nd St(85395) ~ BUS SVT 11:02:09 11:06:26 ~ Railroad Ave S & SE King St(82425) ~ Walk 3m59s
+10,1,52m29s,4665,434,11:18:00,12:10:29,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|208,volunteer:area_873|kcm:64425|kcm:64399,volunteer:area_873(area_873) ~ BUS null 11:18 11:50:44 ~ Walk 8s ~ Snoqualmie Pkwy & SE Jacobia St(64425) ~ BUS 208 11:52:52 12:04:49 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m40s
+11,0,35m9s,2711,3,10:00:00,10:35:09,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:35:06 ~ Walk 3s
+11,0,35m9s,2711,3,10:00:00,10:35:09,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:35:06 ~ Walk 3s
+11,0,35m9s,2711,3,10:00:00,10:35:09,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:35:06 ~ Walk 3s
+12,1,44m58s,4070,248,10:02:08,10:47:06,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|4,volunteer:area_873|kcm:4280|kcm:41350,volunteer:area_873(area_873) ~ BUS null 10:02:08 10:33:22 ~ Walk 6s ~ Taylor Ave N & Lee St(4280) ~ BUS 4 10:35:28 10:43:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m31s
+13,0,25m36s,2136,0,10:00:00,10:25:36,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:25:36
+13,0,25m36s,2136,0,10:00:00,10:25:36,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:25:36
+13,0,25m36s,2136,0,10:00:00,10:25:36,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:25:36
+14,1,33m26s,3274,95,10:16:57,10:50:23,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|36,volunteer:area_873|kcm:30390|kcm:3470,volunteer:area_873(area_873) ~ BUS null 10:16:57 10:38:44 ~ Walk 0s ~ Beacon Ave S & S Spencer St(30390) ~ BUS 36 10:40:44 10:49 ~ Beacon Ave S & S Lander St(3470) ~ Walk 1m23s
+14,1,33m26s,3274,95,10:46:57,11:20:23,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|36,volunteer:area_873|kcm:30390|kcm:3470,volunteer:area_873(area_873) ~ BUS null 10:46:57 11:08:44 ~ Walk 0s ~ Beacon Ave S & S Spencer St(30390) ~ BUS 36 11:10:44 11:19 ~ Beacon Ave S & S Lander St(3470) ~ Walk 1m23s
+15,0,22m55s,1975,0,10:00:00,10:22:55,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:22:55
+15,0,22m55s,1975,0,10:00:00,10:22:55,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:22:55
+15,0,22m55s,1975,0,10:00:00,10:22:55,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:22:55
+16,2,29m24s,3566,0,10:00:14,10:29:38,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|160|Volunteer Transportation,volunteer:area_873|kcm:57190|kcm:57200|volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00:14 10:21:10 ~ Walk 0s ~ 108th Ave SE & SE 217th St(57190) ~ BUS 160 10:23:10 10:23:59 ~ 108th Ave SE & SE 212th St(57200) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:25:59 10:29:38
+16,1,46m28s,5295,1754,10:00:14,10:46:42,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|160,volunteer:area_873|kcm:57190|kcm:57200,volunteer:area_873(area_873) ~ BUS null 10:00:14 10:21:10 ~ Walk 0s ~ 108th Ave SE & SE 217th St(57190) ~ BUS 160 10:23:10 10:23:59 ~ 108th Ave SE & SE 212th St(57200) ~ Walk 22m43s
+16,2,55m8s,5110,0,10:03:43,10:58:51,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|165|Volunteer Transportation,volunteer:area_873|kcm:48620|kcm:57141|volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:03:43 10:05:26 ~ Walk 0s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:07:26 10:53:10 ~ SE 240th St & 116th Ave SE(57141) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:55:10 10:58:51
+17,0,13m2s,1382,0,10:00:00,10:13:02,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:13:02
+17,0,13m2s,1382,0,10:00:00,10:13:02,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:13:02
+17,0,13m2s,1382,0,10:00:00,10:13:02,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:13:02
+18,2,17m32s,2854,0,10:11:03,10:28:35,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|165|Volunteer Transportation,volunteer:area_873|kcm:47540|kcm:47550|volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:11:03 10:13:54 ~ Walk 0s ~ 1st Ave S & S 186th St(47540) ~ BUS 165 10:15:54 10:16:20 ~ 1st Ave S & SW 185th St(47550) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:18:20 10:28:35
+18,1,31m21s,3972,1214,10:00:44,10:32:05,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|A Line,volunteer:area_873|kcm:61150|kcm:61170,volunteer:area_873(area_873) ~ BUS null 10:00:44 10:12:12 ~ Walk 0s ~ Pacific Hwy S & S 216th St(61150) ~ BUS A Line 10:14:12 10:16:08 ~ Pacific Hwy S & S 224th St(61170) ~ Walk 15m57s
+18,1,33m5s,4412,1670,10:03:43,10:36:48,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|165,volunteer:area_873|kcm:48620|kcm:48810,volunteer:area_873(area_873) ~ BUS null 10:03:43 10:05:26 ~ Walk 0s ~ 1st Ave S & SW 178th St(48620) ~ BUS 165 10:07:26 10:15 ~ Marine View Dr S & S 223rd St(48810) ~ Walk 21m48s
+19,0,27m49s,2333,89,10:00:00,10:27:49,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:26:36 ~ Walk 1m13s
+19,0,27m49s,2333,89,10:00:00,10:27:49,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:26:36 ~ Walk 1m13s
+19,0,27m49s,2333,89,10:00:00,10:27:49,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:26:36 ~ Walk 1m13s
+20,1,44m39s,4065,262,10:11:22,10:56:01,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|50,volunteer:area_873|kcm:15395|kcm:31871,volunteer:area_873(area_873) ~ BUS null 10:11:22 10:30:16 ~ Walk 22s ~ 1st Ave S & S Hanford St(15395) ~ BUS 50 10:32:38 10:52:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m26s
+20,1,42m36s,3948,267,10:27:40,11:10:16,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|128,volunteer:area_873|kcm:36190|kcm:31871,volunteer:area_873(area_873) ~ BUS null 10:27:40 10:45:49 ~ Walk 20s ~ 16th Ave SW & SW Webster St(36190) ~ BUS 128 10:48:09 11:06:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m26s
+21,0,38m44s,2924,0,10:00:00,10:38:44,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_1083,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:38:44
+21,0,38m44s,2924,0,07:00:00,07:38:44,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_1083,ccsww-kc:area_897(area_897) ~ BUS null 7:00 7:38:44
+22,1,48m27s,4502,538,10:00:23,10:48:50,Pierce Transit|Volunteer Services: King County,BUS,Volunteer Services: King County|402,ccsww-kc:area_1083|pierce:1294|pierce:21821,ccsww-kc:area_897(area_897) ~ BUS null 10:00:23 10:37:53 ~ Walk 19s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:40:12 10:41:23 ~ 3rd St SE & 7th Ave SE(21821) ~ Walk 7m27s
+22,1,1h19m39s,7173,1647,10:16:06,11:35:45,Sound Generations: Volunteer Transportation|Sound Transit,BUS,Volunteer Transportation|578,volunteer:area_873|pierce:18728|pierce:10401,volunteer:area_873(area_873) ~ BUS null 10:16:06 10:44:03 ~ Walk 57s ~ Auburn Station - Bay 4(18728) ~ BUS 578 10:47 11:14 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m45s
+22,1,1h1m,5197,457,10:44:55,11:45:55,Pierce Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|402,volunteer:area_873|pierce:30893|pierce:1332,volunteer:area_873(area_873) ~ BUS null 10:44:55 11:06:51 ~ Walk 0s ~ 16th Ave S & S 344th St(30893) ~ BUS 402 11:08:51 11:39:31 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m24s
+23,0,44m39s,3279,0,10:00:00,10:44:39,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:44:39
+23,0,44m39s,3279,0,10:00:00,10:44:39,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:44:39
+23,0,44m39s,3279,0,10:00:00,10:44:39,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:44:39
+24,1,52m47s,4582,294,10:17:38,11:10:25,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|SVT,volunteer:area_873|kcm:85395|kcm:82425,volunteer:area_873(area_873) ~ BUS null 10:17:38 11:00:09 ~ Walk 0s ~ 384th Ave SE & SE 92nd St(85395) ~ BUS SVT 11:02:09 11:06:26 ~ Railroad Ave S & SE King St(82425) ~ Walk 3m59s
+24,1,1h2m34s,5265,426,11:07:55,12:10:29,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|208,volunteer:area_873|kcm:64416|kcm:64399,volunteer:area_873(area_873) ~ BUS null 11:07:55 11:40:52 ~ Walk 0s ~ I-90 & 270th Ave SE(64416) ~ BUS 208 11:42:52 12:04:49 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m40s
+25,0,27m16s,2238,3,10:00:00,10:27:16,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:27:13 ~ Walk 3s
+25,0,27m16s,2238,3,10:00:00,10:27:16,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:27:13 ~ Walk 3s
+25,0,27m16s,2238,3,10:00:00,10:27:16,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:27:13 ~ Walk 3s
+26,1,36m42s,3797,553,10:05:18,10:42:00,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|4,volunteer:area_873|kcm:3910|kcm:3920,volunteer:area_873(area_873) ~ BUS null 10:05:18 10:31:49 ~ Walk 17s ~ W Mcgraw St & 2nd Ave W(3910) ~ BUS 4 10:34:06 10:34:39 ~ Queen Anne Ave N & W Mcgraw St(3920) ~ Walk 7m21s
+26,1,33m12s,3374,264,10:13:54,10:47:06,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|4,volunteer:area_873|kcm:41340|kcm:41350,volunteer:area_873(area_873) ~ BUS null 10:13:54 10:40:21 ~ Walk 22s ~ W Mcgraw St & Queen Anne Ave N(41340) ~ BUS 4 10:42:43 10:43:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m31s
+27,0,21m53s,1913,0,10:00:00,10:21:53,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:21:53
+27,0,21m53s,1913,0,10:00:00,10:21:53,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:21:53
+27,0,21m53s,1913,0,10:00:00,10:21:53,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:21:53
+28,1,32m21s,3209,95,10:15:02,10:47:23,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|60,volunteer:area_873|kcm:40871|kcm:3470,volunteer:area_873(area_873) ~ BUS null 10:15:02 10:29:34 ~ Walk 0s ~ Corson Ave S & S Willow St(40871) ~ BUS 60 10:31:34 10:46 ~ Beacon Ave S & S Lander St(3470) ~ Walk 1m23s
+28,1,32m21s,3209,95,10:39:02,11:11:23,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|60,volunteer:area_873|kcm:40871|kcm:3470,volunteer:area_873(area_873) ~ BUS null 10:39:02 10:53:34 ~ Walk 0s ~ Corson Ave S & S Willow St(40871) ~ BUS 60 10:55:34 11:10 ~ Beacon Ave S & S Lander St(3470) ~ Walk 1m23s
+29,0,18m59s,1739,0,10:00:00,10:18:59,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:18:59
+29,0,18m59s,1739,0,10:00:00,10:18:59,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:18:59
+29,0,18m59s,1739,0,10:00:00,10:18:59,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:18:59
+30,2,25m36s,3338,0,10:01:26,10:27:02,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|160|Volunteer Transportation,volunteer:area_873|kcm:57180|kcm:57185|volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:01:26 10:19:36 ~ Walk 0s ~ 108th Ave SE & SE 224th St(57180) ~ BUS 160 10:21:36 10:22:22 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:24:22 10:27:02
+30,1,39m21s,4624,1428,10:01:26,10:40:47,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|160,volunteer:area_873|kcm:57180|kcm:57185,volunteer:area_873(area_873) ~ BUS null 10:01:26 10:19:36 ~ Walk 0s ~ 108th Ave SE & SE 224th St(57180) ~ BUS 160 10:21:36 10:22:22 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
+30,1,28m31s,3405,667,10:20:33,10:49:04,Metro Transit|Sound Generations: Volunteer Transportation,BUS,156|Volunteer Transportation,kcm:50450|kcm:50461|volunteer:area_873,Walk 8m43s ~ 24th Ave S & S 226th St(50450) ~ BUS 156 10:29:16 10:30:10 ~ Kent Des Moines Rd & 24th Ave S(50461) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:32:10 10:49:04
+31,0,12m40s,1360,0,10:00:00,10:12:40,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:12:40
+31,0,12m40s,1360,0,10:00:00,10:12:40,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:12:40
+31,0,12m40s,1360,0,10:00:00,10:12:40,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:12:40
+32,1,25m33s,3398,898,10:02:55,10:28:28,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|165,volunteer:area_873|kcm:47390|kcm:47570,volunteer:area_873(area_873) ~ BUS null 10:02:55 10:05:49 ~ Walk 11s ~ Marine View Dr S & S 223rd St(47390) ~ BUS 165 10:08 10:17 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m28s
+32,2,17m37s,2859,0,10:34:45,10:52:22,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|165|Volunteer Transportation,volunteer:area_873|kcm:48770|kcm:48780|volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:34:45 10:40:05 ~ Walk 0s ~ S 216th Pl & S 216th St(48770) ~ BUS 165 10:42:05 10:42:28 ~ S 216th Pl & 4th Pl S(48780) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:44:28 10:52:22
+32,1,24m33s,3338,898,10:30:55,10:55:28,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|165,volunteer:area_873|kcm:47390|kcm:47570,volunteer:area_873(area_873) ~ BUS null 10:30:55 10:33:49 ~ Walk 11s ~ Marine View Dr S & S 223rd St(47390) ~ BUS 165 10:36 10:44 ~ 1st Ave S & SW Normandy Rd(47570) ~ Walk 11m28s
+33,0,28m46s,2390,89,10:00:00,10:28:46,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:27:33 ~ Walk 1m13s
+33,0,28m46s,2390,89,10:00:00,10:28:46,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:27:33 ~ Walk 1m13s
+33,0,28m46s,2390,89,10:00:00,10:28:46,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:27:33 ~ Walk 1m13s
+34,1,33m56s,3424,264,10:02:05,10:36:01,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|50,volunteer:area_873|kcm:31850|kcm:31871,volunteer:area_873(area_873) ~ BUS null 10:02:05 10:28:47 ~ Walk 25s ~ California Ave SW & SW Andover St(31850) ~ BUS 50 10:31:12 10:32:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m26s
+34,1,38m20s,4059,756,10:20:33,10:58:53,Metro Transit|Sound Generations: Volunteer Transportation,BUS,156|Volunteer Transportation,kcm:50450|kcm:50461|volunteer:area_873,Walk 8m43s ~ 24th Ave S & S 226th St(50450) ~ BUS 156 10:29:16 10:30:10 ~ Kent Des Moines Rd & 24th Ave S(50461) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:32:10 10:57:40 ~ Walk 1m13s
+35,0,28m32s,2312,0,10:00:00,10:28:32,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_1083,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:28:32
+35,0,28m32s,2312,0,07:00:00,07:28:32,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_1083,ccsww-kc:area_897(area_897) ~ BUS null 7:00 7:28:32
+36,1,36m4s,3711,474,10:09:59,10:46:03,Pierce Transit|Volunteer Services: King County,BUS,Volunteer Services: King County|402,ccsww-kc:area_1083|pierce:1334|pierce:1294,ccsww-kc:area_897(area_897) ~ BUS null 10:09:59 10:36:52 ~ Walk 32s ~ Meridian S & 10th Ave SE(1334) ~ BUS 402 10:39:24 10:40:12 ~ Meridian S & 9th Ave SE(1294) ~ Walk 5m51s
+36,1,52m14s,4671,457,10:53:41,11:45:55,Pierce Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|402,volunteer:area_873|pierce:30893|pierce:1332,volunteer:area_873(area_873) ~ BUS null 10:53:41 11:06:51 ~ Walk 0s ~ 16th Ave S & S 344th St(30893) ~ BUS 402 11:08:51 11:39:31 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m24s
+36,2,1h15m30s,7027,970,10:47:44,12:03:14,Pierce Transit|Sound Generations: Volunteer Transportation|Sound Transit,BUS,Volunteer Transportation|574|400,volunteer:area_873|pierce:3818|pierce:377411996|pierce:12938|pierce:8058,volunteer:area_873(area_873) ~ BUS null 10:47:44 10:52 ~ Walk 0s ~ I-5 & Kent - Des Moines Fwy Station(3818) ~ BUS 574 10:54 11:21 ~ Tacoma Dome Station - Zone H(377411996) ~ Walk 1m49s ~ Tacoma Dome Station - Zone C(12938) ~ BUS 400 11:28 11:51:06 ~ 5th St SW & 9th Ave SW - Red Lot(8058) ~ Walk 12m8s
+37,0,44m44s,3284,0,10:00:00,10:44:44,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:44:44
+37,0,44m44s,3284,0,10:00:00,10:44:44,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:44:44
+37,0,44m44s,3284,0,10:00:00,10:44:44,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:44:44
+38,1,52m52s,4587,294,10:17:33,11:10:25,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|SVT,volunteer:area_873|kcm:85395|kcm:82425,volunteer:area_873(area_873) ~ BUS null 10:17:33 11:00:09 ~ Walk 0s ~ 384th Ave SE & SE 92nd St(85395) ~ BUS SVT 11:02:09 11:06:26 ~ Railroad Ave S & SE King St(82425) ~ Walk 3m59s
+38,1,1h2m39s,5270,426,11:07:50,12:10:29,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|208,volunteer:area_873|kcm:64416|kcm:64399,volunteer:area_873(area_873) ~ BUS null 11:07:50 11:40:52 ~ Walk 0s ~ I-90 & 270th Ave SE(64416) ~ BUS 208 11:42:52 12:04:49 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m40s
+39,0,32m23s,2545,3,10:00:00,10:32:23,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:32:20 ~ Walk 3s
+39,0,32m23s,2545,3,10:00:00,10:32:23,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:32:20 ~ Walk 3s
+39,0,32m23s,2545,3,10:00:00,10:32:23,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:32:20 ~ Walk 3s
+40,1,42m12s,3904,248,10:04:54,10:47:06,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|4,volunteer:area_873|kcm:4280|kcm:41350,volunteer:area_873(area_873) ~ BUS null 10:04:54 10:33:22 ~ Walk 6s ~ Taylor Ave N & Lee St(4280) ~ BUS 4 10:35:28 10:43:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m31s
+40,1,42m12s,3904,248,10:49:54,11:32:06,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|4,volunteer:area_873|kcm:4280|kcm:41350,volunteer:area_873(area_873) ~ BUS null 10:49:54 11:18:22 ~ Walk 6s ~ Taylor Ave N & Lee St(4280) ~ BUS 4 11:20:28 11:28:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m31s
+41,0,22m50s,1970,0,10:00:00,10:22:50,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:22:50
+41,0,22m50s,1970,0,10:00:00,10:22:50,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:22:50
+41,0,22m50s,1970,0,10:00:00,10:22:50,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:22:50
+42,1,30m40s,3108,95,10:19:43,10:50:23,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|36,volunteer:area_873|kcm:30390|kcm:3470,volunteer:area_873(area_873) ~ BUS null 10:19:43 10:38:44 ~ Walk 0s ~ Beacon Ave S & S Spencer St(30390) ~ BUS 36 10:40:44 10:49 ~ Beacon Ave S & S Lander St(3470) ~ Walk 1m23s
+42,1,30m40s,3108,95,10:49:43,11:20:23,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|36,volunteer:area_873|kcm:30390|kcm:3470,volunteer:area_873(area_873) ~ BUS null 10:49:43 11:08:44 ~ Walk 0s ~ Beacon Ave S & S Spencer St(30390) ~ BUS 36 11:10:44 11:19 ~ Beacon Ave S & S Lander St(3470) ~ Walk 1m23s
+43,0,32m7s,2591,89,10:00:00,10:32:07,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:01:13 10:32:07
+43,0,32m7s,2591,89,10:00:00,10:32:07,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,Walk 1m13s ~ hopelink:area_1085(area_1085) ~ BUS null 10:01:13 10:32:07
+43,0,32m7s,2591,89,10:00:00,10:32:07,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,Walk 1m13s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:01:13 10:32:07
+44,2,42m20s,4407,89,10:05:35,10:47:55,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|160|Volunteer Transportation,volunteer:area_873|kcm:59370|kcm:57340|volunteer:area_873,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:06:48 10:31:38 ~ Walk 0s ~ S Carr Rd & Talbot Rd S(59370) ~ BUS 160 10:33:38 10:42:04 ~ 108th Ave SE & SE 204th St(57340) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:44:04 10:47:55
+44,1,52m29s,5477,1517,10:00:18,10:52:47,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|160,volunteer:area_873|kcm:57180|kcm:57185,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:01:31 10:31:36 ~ Walk 0s ~ 108th Ave SE & SE 224th St(57180) ~ BUS 160 10:33:36 10:34:22 ~ 108th Ave SE & SE 220th Pl(57185) ~ Walk 18m25s
+44,1,39m25s,3727,219,10:45:16,11:24:41,Metro Transit|Sound Generations: Volunteer Transportation,BUS,50|Volunteer Transportation,kcm:31970|kcm:22820|volunteer:area_873,Walk 2m45s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:48:01 10:55:34 ~ 35th Ave SW & SW Avalon Way(22820) ~ Walk 11s ~ volunteer:area_873(area_873) ~ BUS null 10:57:45 11:24:41
+45,0,27m6s,2290,89,10:00:00,10:27:06,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:01:13 10:27:06
+45,0,27m6s,2290,89,10:00:00,10:27:06,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,Walk 1m13s ~ hopelink:area_1085(area_1085) ~ BUS null 10:01:13 10:27:06
+45,0,27m6s,2290,89,10:00:00,10:27:06,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,Walk 1m13s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:01:13 10:27:06
+46,1,39m8s,4197,879,10:07:28,10:46:36,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|165,volunteer:area_873|kcm:48570|kcm:48620,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:08:41 10:30:21 ~ Walk 7s ~ 1st Ave S & SW 160th St(48570) ~ BUS 165 10:32:28 10:36:26 ~ 1st Ave S & SW 178th St(48620) ~ Walk 10m10s
+46,1,38m21s,3657,214,10:21:31,10:59:52,Metro Transit|Sound Generations: Volunteer Transportation,BUS,128|Volunteer Transportation,kcm:31970|kcm:22170|volunteer:area_873,Walk 2m45s ~ California Ave SW & SW Spokane St(31970) ~ BUS 128 10:24:16 10:40:20 ~ Dumar Way SW & SW Orchard St(22170) ~ Walk 13s ~ volunteer:area_873(area_873) ~ BUS null 10:42:33 10:59:52
+46,1,38m21s,3657,214,11:01:31,11:39:52,Metro Transit|Sound Generations: Volunteer Transportation,BUS,128|Volunteer Transportation,kcm:31970|kcm:22170|volunteer:area_873,Walk 2m45s ~ California Ave SW & SW Spokane St(31970) ~ BUS 128 11:04:16 11:20:20 ~ Dumar Way SW & SW Orchard St(22170) ~ Walk 13s ~ volunteer:area_873(area_873) ~ BUS null 11:22:33 11:39:52
+47,0,29m17s,2421,89,10:00:00,10:29:17,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:01:13 10:29:17
+47,0,29m17s,2421,89,10:00:00,10:29:17,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,Walk 1m13s ~ hopelink:area_1085(area_1085) ~ BUS null 10:01:13 10:29:17
+47,0,29m17s,2421,89,10:00:00,10:29:17,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,Walk 1m13s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:01:13 10:29:17
+48,1,36m35s,3557,219,10:45:16,11:21:51,Metro Transit|Sound Generations: Volunteer Transportation,BUS,50|Volunteer Transportation,kcm:31970|kcm:22820|volunteer:area_873,Walk 2m45s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:48:01 10:55:34 ~ 35th Ave SW & SW Avalon Way(22820) ~ Walk 11s ~ volunteer:area_873(area_873) ~ BUS null 10:57:45 11:21:51
+50,1,1h30m1s,7860,1736,10:05:44,11:35:45,Sound Generations: Volunteer Transportation|Sound Transit,BUS,Volunteer Transportation|578,volunteer:area_873|pierce:18728|pierce:10401,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:06:57 10:44:03 ~ Walk 57s ~ Auburn Station - Bay 4(18728) ~ BUS 578 10:47 11:14 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m45s
+50,1,55m14s,4676,219,10:45:16,11:40:30,Metro Transit|Volunteer Services: King County,BUS,50|Volunteer Services: King County,kcm:31970|kcm:22820|ccsww-kc:area_1083,Walk 2m45s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:48:01 10:55:34 ~ 35th Ave SW & SW Avalon Way(22820) ~ Walk 11s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:57:45 11:40:30
+50,1,1h12m25s,5946,546,10:33:30,11:45:55,Pierce Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|402,volunteer:area_873|pierce:30893|pierce:1332,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:34:43 11:06:51 ~ Walk 0s ~ 16th Ave S & S 344th St(30893) ~ BUS 402 11:08:51 11:39:31 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m24s
+51,0,42m42s,3226,89,10:00:00,10:42:42,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:01:13 10:42:42
+51,0,42m42s,3226,89,10:00:00,10:42:42,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,Walk 1m13s ~ hopelink:area_1085(area_1085) ~ BUS null 10:01:13 10:42:42
+51,0,42m42s,3226,89,10:00:00,10:42:42,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,Walk 1m13s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:01:13 10:42:42
+52,1,49m50s,4352,219,10:45:16,11:35:06,Metro Transit|Sound Generations: Volunteer Transportation,BUS,50|Volunteer Transportation,kcm:31970|kcm:22820|volunteer:area_873,Walk 2m45s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:48:01 10:55:34 ~ 35th Ave SW & SW Avalon Way(22820) ~ Walk 11s ~ volunteer:area_873(area_873) ~ BUS null 10:57:45 11:35:06
+53,0,19m58s,1865,92,10:00:00,10:19:58,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:01:13 10:19:55 ~ Walk 3s
+53,0,19m58s,1865,92,10:00:00,10:19:58,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,Walk 1m13s ~ hopelink:area_1085(area_1085) ~ BUS null 10:01:13 10:19:55 ~ Walk 3s
+53,0,19m58s,1865,92,10:00:00,10:19:58,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,Walk 1m13s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:01:13 10:19:55 ~ Walk 3s
+54,1,27m16s,3001,222,10:25:16,10:52:32,Metro Transit|Sound Generations: Volunteer Transportation,BUS,50|Volunteer Transportation,kcm:31970|kcm:22820|volunteer:area_873,Walk 2m45s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:28:01 10:35:34 ~ 35th Ave SW & SW Avalon Way(22820) ~ Walk 11s ~ volunteer:area_873(area_873) ~ BUS null 10:37:45 10:52:29 ~ Walk 3s
+54,1,27m16s,3001,222,10:45:16,11:12:32,Metro Transit|Sound Generations: Volunteer Transportation,BUS,50|Volunteer Transportation,kcm:31970|kcm:22820|volunteer:area_873,Walk 2m45s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:48:01 10:55:34 ~ 35th Ave SW & SW Avalon Way(22820) ~ Walk 11s ~ volunteer:area_873(area_873) ~ BUS null 10:57:45 11:12:29 ~ Walk 3s
+54,1,27m44s,3171,423,10:48:20,11:16:04,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|2,volunteer:area_873|kcm:2820|kcm:2830,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:49:33 11:08:39 ~ Walk 6s ~ 6th Ave W & W Mcgraw St(2820) ~ BUS 2 11:10:45 11:11:37 ~ 6th Ave W & W Smith St(2830) ~ Walk 4m27s
+55,0,13m48s,1492,89,10:00:00,10:13:48,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:01:13 10:13:48
+55,0,13m48s,1492,89,10:00:00,10:13:48,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,Walk 1m13s ~ hopelink:area_1085(area_1085) ~ BUS null 10:01:13 10:13:48
+55,0,13m48s,1492,89,10:00:00,10:13:48,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,Walk 1m13s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:01:13 10:13:48
+56,1,18m,2424,202,10:05:23,10:23:23,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|60,volunteer:area_873|kcm:41850|kcm:3470,Walk 1m13s ~ volunteer:area_873(area_873) ~ BUS null 10:06:36 10:17:08 ~ Walk 19s ~ 15th Ave S & S Spokane St(41850) ~ BUS 60 10:19:27 10:22 ~ Beacon Ave S & S Lander St(3470) ~ Walk 1m23s
+56,1,21m6s,2628,219,10:25:16,10:46:22,Metro Transit|Sound Generations: Volunteer Transportation,BUS,50|Volunteer Transportation,kcm:31970|kcm:22820|volunteer:area_873,Walk 2m45s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:28:01 10:35:34 ~ 35th Ave SW & SW Avalon Way(22820) ~ Walk 11s ~ volunteer:area_873(area_873) ~ BUS null 10:37:45 10:46:22
+56,1,42m7s,4037,438,10:05:16,10:47:23,Metro Transit,BUS,50|60,kcm:31970|kcm:30770|kcm:41850|kcm:3470,Walk 2m45s ~ California Ave SW & SW Spokane St(31970) ~ BUS 50 10:08:01 10:33:46 ~ S Columbian Way & S Spokane St(30770) ~ Walk 3m11s ~ 15th Ave S & S Spokane St(41850) ~ BUS 60 10:43:27 10:46 ~ Beacon Ave S & S Lander St(3470) ~ Walk 1m23s
+58,2,1h9m7s,6673,984,10:14:12,11:23:19,Pierce Transit|Sound Generations: Volunteer Transportation|Sound Transit,BUS,400|578|Volunteer Transportation,pierce:6085|pierce:11956|pierce:10401|pierce:8770|volunteer:area_873,Walk 11m22s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:25:34 10:29 ~ Puyallup Station - Bay 1(11956) ~ Walk 1m20s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 10:33 11:04 ~ Auburn Station - Bay 3(8770) ~ Walk 38s ~ volunteer:area_873(area_873) ~ BUS null 11:06:38 11:23:19
+58,1,1h12m8s,6703,1622,10:11:11,11:23:19,Sound Generations: Volunteer Transportation|Sound Transit,BUS,578|Volunteer Transportation,pierce:10401|pierce:8770|volunteer:area_873,Walk 21m49s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 10:33 11:04 ~ Auburn Station - Bay 3(8770) ~ Walk 38s ~ volunteer:area_873(area_873) ~ BUS null 11:06:38 11:23:19
+58,1,59m3s,5068,440,10:34:17,11:33:20,Pierce Transit|Sound Generations: Volunteer Transportation,BUS,402|Volunteer Transportation,pierce:1294|pierce:1003|volunteer:area_873,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:40:12 11:12:13 ~ Enchanted Pkwy & S 352nd St(1003) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 11:14:13 11:33:20
+60,1,1h2m48s,5293,440,10:34:17,11:37:05,Pierce Transit|Sound Generations: Volunteer Transportation,BUS,402|Volunteer Transportation,pierce:1294|pierce:1003|volunteer:area_873,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:40:12 11:12:13 ~ Enchanted Pkwy & S 352nd St(1003) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 11:14:13 11:37:05
+60,2,1h35m43s,8169,850,10:14:12,11:49:55,Pierce Transit|Sound Generations: Volunteer Transportation|Sound Transit,BUS,400|574|Volunteer Transportation,pierce:6085|pierce:20163|pierce:3046|pierce:16997|volunteer:area_873,Walk 11m22s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:25:34 10:49 ~ Tacoma Dome Station - Zone E(20163) ~ Walk 20s ~ Tacoma Dome Station - Zone A(3046) ~ BUS 574 10:59 11:39:08 ~ 188th St S & 42nd Av S(16997) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 11:41:08 11:49:55
+60,1,1h22m38s,7333,1622,10:43:11,12:05:49,Sound Generations: Volunteer Transportation|Sound Transit,BUS,578|Volunteer Transportation,pierce:10401|pierce:8770|volunteer:area_873,Walk 21m49s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 11:05 11:36 ~ Auburn Station - Bay 3(8770) ~ Walk 38s ~ volunteer:area_873(area_873) ~ BUS null 11:38:38 12:05:49
+62,1,1h13m33s,6788,1622,10:11:11,11:24:44,Sound Generations: Volunteer Transportation|Sound Transit,BUS,578|Volunteer Transportation,pierce:10401|pierce:8770|volunteer:area_873,Walk 21m49s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 10:33 11:04 ~ Auburn Station - Bay 3(8770) ~ Walk 38s ~ volunteer:area_873(area_873) ~ BUS null 11:06:38 11:24:44
+62,1,57m6s,4951,440,10:34:17,11:31:23,Pierce Transit|Sound Generations: Volunteer Transportation,BUS,402|Volunteer Transportation,pierce:1294|pierce:1003|volunteer:area_873,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:40:12 11:12:13 ~ Enchanted Pkwy & S 352nd St(1003) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 11:14:13 11:31:23
+62,2,1h21m50s,7357,880,10:14:12,11:36:02,Pierce Transit|Sound Generations: Volunteer Transportation|Sound Transit,BUS,400|574|Volunteer Transportation,pierce:6085|pierce:20163|pierce:3046|pierce:14363|volunteer:area_873,Walk 11m22s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:25:34 10:49 ~ Tacoma Dome Station - Zone E(20163) ~ Walk 20s ~ Tacoma Dome Station - Zone A(3046) ~ BUS 574 10:59 11:28 ~ I-5 & Kent - Des Moines Fwy Station(14363) ~ Walk 25s ~ volunteer:area_873(area_873) ~ BUS null 11:30:25 11:36:02
+64,1,1h13m16s,5985,529,10:34:17,11:47:33,Pierce Transit|Sound Generations: Volunteer Transportation,BUS,402|Volunteer Transportation,pierce:1294|pierce:1003|volunteer:area_873,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:40:12 11:12:13 ~ Enchanted Pkwy & S 352nd St(1003) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 11:14:13 11:46:20 ~ Walk 1m13s
+64,1,1h53m25s,9252,1726,10:11:11,12:04:36,Sound Generations: Volunteer Transportation|Sound Transit,BUS,578|Volunteer Transportation,pierce:10401|pierce:24707|volunteer:area_873,Walk 21m49s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 10:33 11:47 ~ 4th Ave & University(24707) ~ Walk 49s ~ volunteer:area_873(area_873) ~ BUS null 11:49:49 12:03:23 ~ Walk 1m13s
+64,2,2h1m49s,9933,1126,10:14:12,12:16:01,Metro Transit|Pierce Transit|Sound Transit,BUS,400|594|50,pierce:6085|pierce:20163|pierce:27454|pierce:596|kcm:99252|kcm:31871,Walk 11m22s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:25:34 10:49 ~ Tacoma Dome Station - Zone E(20163) ~ Walk 47s ~ Tacoma Dome Station - Zone B(27454) ~ BUS 594 11:07 11:44 ~ Bus Wy & S Spokane St(596) ~ Walk 1s ~ SODO Busway & S Spokane St(99252) ~ BUS 50 11:48:43 12:12:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m26s
+66,2,1h28m6s,7812,984,10:14:12,11:42:18,Pierce Transit|Sound Generations: Volunteer Transportation|Sound Transit,BUS,400|578|Volunteer Transportation,pierce:6085|pierce:11956|pierce:10401|pierce:8770|volunteer:area_873,Walk 11m22s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:25:34 10:29 ~ Puyallup Station - Bay 1(11956) ~ Walk 1m20s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 10:33 11:04 ~ Auburn Station - Bay 3(8770) ~ Walk 38s ~ volunteer:area_873(area_873) ~ BUS null 11:06:38 11:42:18
+66,1,1h31m7s,7842,1622,10:11:11,11:42:18,Sound Generations: Volunteer Transportation|Sound Transit,BUS,578|Volunteer Transportation,pierce:10401|pierce:8770|volunteer:area_873,Walk 21m49s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 10:33 11:04 ~ Auburn Station - Bay 3(8770) ~ Walk 38s ~ volunteer:area_873(area_873) ~ BUS null 11:06:38 11:42:18
+66,1,1h18m,6205,440,10:34:17,11:52:17,Pierce Transit|Sound Generations: Volunteer Transportation,BUS,402|Volunteer Transportation,pierce:1294|pierce:1003|volunteer:area_873,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:40:12 11:12:13 ~ Enchanted Pkwy & S 352nd St(1003) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 11:14:13 11:52:17
+68,1,1h16m48s,6136,443,10:34:17,11:51:05,Pierce Transit|Sound Generations: Volunteer Transportation,BUS,402|Volunteer Transportation,pierce:1294|pierce:1003|volunteer:area_873,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:40:12 11:12:13 ~ Enchanted Pkwy & S 352nd St(1003) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 11:14:13 11:51:02 ~ Walk 3s
+68,2,2h13m46s,10807,1358,10:14:12,12:27:58,Metro Transit|Pierce Transit|Sound Transit,BUS,400|578|13,pierce:6085|pierce:11956|pierce:10401|pierce:13217|kcm:575|kcm:41350,Walk 11m22s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:25:34 10:29 ~ Puyallup Station - Bay 1(11956) ~ Walk 1m20s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 10:33 11:49 ~ 4th Ave & Pine St(13217) ~ Walk 3m9s ~ 3rd Ave & Pike St(575) ~ BUS 13 12:02 12:24:27 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m31s
+68,1,2h16m47s,10837,1996,10:11:11,12:27:58,Metro Transit|Sound Transit,BUS,578|13,pierce:10401|pierce:13217|kcm:575|kcm:41350,Walk 21m49s ~ Puyallup Station - Bay 3(10401) ~ BUS 578 10:33 11:49 ~ 4th Ave & Pine St(13217) ~ Walk 3m9s ~ 3rd Ave & Pike St(575) ~ BUS 13 12:02 12:24:27 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m31s
+70,1,1h7m18s,5563,440,10:34:17,11:41:35,Pierce Transit|Sound Generations: Volunteer Transportation,BUS,402|Volunteer Transportation,pierce:1294|pierce:1003|volunteer:area_873,Walk 5m55s ~ Meridian S & 9th Ave SE(1294) ~ BUS 402 10:40:12 11:12:13 ~ Enchanted Pkwy & S 352nd St(1003) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 11:14:13 11:41:35
+70,1,1h58m48s,10232,2626,10:14:12,12:13:00,Pierce Transit|Sound Transit,BUS,400|594,pierce:6085|pierce:20163|pierce:27454|pierce:590,Walk 11m22s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:25:34 10:49 ~ Tacoma Dome Station - Zone E(20163) ~ Walk 47s ~ Tacoma Dome Station - Zone B(27454) ~ BUS 594 11:07 11:48:46 ~ Bus Wy & Holgate St(590) ~ Walk 24m14s
+70,2,1h59m54s,9794,1104,10:14:12,12:14:06,Metro Transit|Pierce Transit|Sound Transit,BUS,400|594|36,pierce:6085|pierce:20163|pierce:27454|pierce:267|kcm:1471|kcm:3810,Walk 11m22s ~ Fairview Dr & 9th Ave SW Red Lot(6085) ~ BUS 400 10:25:34 10:49 ~ Tacoma Dome Station - Zone E(20163) ~ Walk 47s ~ Tacoma Dome Station - Zone B(27454) ~ BUS 594 11:07 11:53 ~ 4th Ave S & Jackson St(267) ~ Walk 1m55s ~ S Jackson St & 5th Ave S(1471) ~ BUS 36 12:00 12:12 ~ Beacon Ave S & S Lander St(3810) ~ Walk 2m6s
+71,0,38m41s,2921,0,10:00:00,10:38:41,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:38:41
+71,0,38m41s,2921,0,10:00:00,10:38:41,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:38:41
+71,0,38m41s,2921,0,10:00:00,10:38:41,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:38:41
+72,2,47m6s,4628,0,10:02:51,10:49:57,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|160|Volunteer Transportation,volunteer:area_873|kcm:57350|kcm:57375|volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:02:51 10:41 ~ Walk 0s ~ 108th Ave SE & SE 208th St(57350) ~ BUS 160 10:43 10:45:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:47:16 10:49:57
+72,2,45m9s,4511,0,10:17:26,11:02:35,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|165|Volunteer Transportation,volunteer:area_873|kcm:62173|kcm:57448|volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:17:26 10:49 ~ Walk 0s ~ 132nd Ave SE & SE 256th St(62173) ~ BUS 165 10:51 10:56:50 ~ SE 240th St & 116th Ave SE(57448) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:58:50 11:02:35
+72,1,1h47s,5906,1423,10:02:51,11:03:38,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|160,volunteer:area_873|kcm:57350|kcm:57375,volunteer:area_873(area_873) ~ BUS null 10:02:51 10:41 ~ Walk 0s ~ 108th Ave SE & SE 208th St(57350) ~ BUS 160 10:43 10:45:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
+73,0,44m55s,3295,0,10:00:00,10:44:55,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:44:55
+73,0,44m55s,3295,0,10:00:00,10:44:55,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:44:55
+73,0,44m55s,3295,0,10:00:00,10:44:55,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:44:55
+74,2,50m16s,4818,0,10:02:13,10:52:29,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|165|Volunteer Transportation,volunteer:area_873|kcm:47590|kcm:47600|volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:02:13 10:44:39 ~ Walk 0s ~ 1st Ave S & S 170th St(47590) ~ BUS 165 10:46:39 10:47:22 ~ 1st Ave S & S 168th St(47600) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:49:22 10:52:29
+74,1,59m6s,4961,294,10:31:36,11:30:42,Metro Transit|Sound Generations: Volunteer Transportation,BUS,208|Volunteer Transportation,kcm:82425|kcm:64470|volunteer:area_873,Walk 3m59s ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 10:55:11 ~ I-90 & 270th Ave SE(64470) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:57:11 11:30:42
+76,1,55m36s,5030,667,10:12:37,11:08:13,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|156,volunteer:area_873|kcm:50445|kcm:50450,volunteer:area_873(area_873) ~ BUS null 10:12:37 10:56:34 ~ Walk 0s ~ 24th Ave S & S 223rd St(50445) ~ BUS 156 10:58:34 10:59:31 ~ 24th Ave S & S 226th St(50450) ~ Walk 8m42s
+76,1,59m30s,4985,294,10:31:36,11:31:06,Metro Transit|Sound Generations: Volunteer Transportation,BUS,208|Volunteer Transportation,kcm:82425|kcm:64470|volunteer:area_873,Walk 3m59s ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 10:55:11 ~ I-90 & 270th Ave SE(64470) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:57:11 11:31:06
+77,0,41m36s,3160,89,10:00:00,10:41:36,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:40:23 ~ Walk 1m13s
+77,0,41m36s,3160,89,10:00:00,10:41:36,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:40:23 ~ Walk 1m13s
+77,0,41m36s,3160,89,10:00:00,10:41:36,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:40:23 ~ Walk 1m13s
+78,1,46m33s,4181,264,10:03:43,10:50:16,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|128,volunteer:area_873|kcm:31850|kcm:31871,volunteer:area_873(area_873) ~ BUS null 10:03:43 10:43:15 ~ Walk 25s ~ California Ave SW & SW Andover St(31850) ~ BUS 128 10:45:40 10:46:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m26s
+78,1,55m47s,4827,383,10:31:36,11:27:23,Metro Transit|Sound Generations: Volunteer Transportation,BUS,208|Volunteer Transportation,kcm:82425|kcm:64470|volunteer:area_873,Walk 3m59s ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 10:55:11 ~ I-90 & 270th Ave SE(64470) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:57:11 11:26:10 ~ Walk 1m13s
+80,1,58m58s,4953,294,10:31:36,11:30:34,Metro Transit|Volunteer Services: King County,BUS,208|Volunteer Services: King County,kcm:82425|kcm:64415|ccsww-kc:area_1083,Walk 3m59s ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 10:44:31 ~ Snoqualmie Pkwy & Swenson Dr SE(64415) ~ Walk 0s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:46:31 11:30:34
+80,1,1h27m34s,7648,1647,10:08:11,11:35:45,Sound Generations: Volunteer Transportation|Sound Transit,BUS,Volunteer Transportation|578,volunteer:area_873|pierce:18728|pierce:10401,volunteer:area_873(area_873) ~ BUS null 10:08:11 10:44:03 ~ Walk 57s ~ Auburn Station - Bay 4(18728) ~ BUS 578 10:47 11:14 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m45s
+80,1,1h17m45s,6202,457,10:28:10,11:45:55,Pierce Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|402,volunteer:area_873|pierce:30893|pierce:1332,volunteer:area_873(area_873) ~ BUS null 10:28:10 11:06:51 ~ Walk 0s ~ 16th Ave S & S 344th St(30893) ~ BUS 402 11:08:51 11:39:31 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m24s
+81,0,41m43s,3105,3,10:00:00,10:41:43,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:41:40 ~ Walk 3s
+81,0,41m43s,3105,3,10:00:00,10:41:43,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:41:40 ~ Walk 3s
+81,0,41m43s,3105,3,10:00:00,10:41:43,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:41:40 ~ Walk 3s
+82,1,47m39s,4241,264,10:14:27,11:02:06,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|4,volunteer:area_873|kcm:41340|kcm:41350,volunteer:area_873(area_873) ~ BUS null 10:14:27 10:55:21 ~ Walk 22s ~ W Mcgraw St & Queen Anne Ave N(41340) ~ BUS 4 10:57:43 10:58:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m31s
+82,1,55m52s,4770,297,10:31:36,11:27:28,Metro Transit|Sound Generations: Volunteer Transportation,BUS,208|Volunteer Transportation,kcm:82425|kcm:64470|volunteer:area_873,Walk 3m59s ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 10:55:11 ~ I-90 & 270th Ave SE(64470) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:57:11 11:27:25 ~ Walk 3s
+83,0,33m51s,2631,0,10:00:00,10:33:51,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:33:51
+83,0,33m51s,2631,0,10:00:00,10:33:51,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:33:51
+83,0,33m51s,2631,0,10:00:00,10:33:51,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:33:51
+84,1,39m45s,3665,113,10:19:38,10:59:23,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|60,volunteer:area_873|kcm:41850|kcm:3470,volunteer:area_873(area_873) ~ BUS null 10:19:38 10:53:08 ~ Walk 19s ~ 15th Ave S & S Spokane St(41850) ~ BUS 60 10:55:27 10:58 ~ Beacon Ave S & S Lander St(3470) ~ Walk 1m23s
+84,1,48m,4295,294,10:31:36,11:19:36,Metro Transit|Sound Generations: Volunteer Transportation,BUS,208|Volunteer Transportation,kcm:82425|kcm:64470|volunteer:area_873,Walk 3m59s ~ Railroad Ave S & SE King St(82425) ~ BUS 208 10:35:35 10:55:11 ~ I-90 & 270th Ave SE(64470) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:57:11 11:19:36
+85,0,34m42s,2684,3,10:00:00,10:34:42,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:00:03 10:34:42
+85,0,34m42s,2684,3,10:00:00,10:34:42,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,Walk 3s ~ hopelink:area_1085(area_1085) ~ BUS null 10:00:03 10:34:42
+85,0,34m42s,2684,3,10:00:00,10:34:42,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,Walk 3s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:00:03 10:34:42
+86,2,40m43s,4248,3,10:09:14,10:49:57,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|160|Volunteer Transportation,volunteer:area_873|kcm:57350|kcm:57375|volunteer:area_873,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:09:17 10:41 ~ Walk 0s ~ 108th Ave SE & SE 208th St(57350) ~ BUS 160 10:43 10:45:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:47:16 10:49:57
+86,1,54m24s,5526,1426,10:09:14,11:03:38,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|160,volunteer:area_873|kcm:57350|kcm:57375,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:09:17 10:41 ~ Walk 0s ~ 108th Ave SE & SE 208th St(57350) ~ BUS 160 10:43 10:45:16 ~ 108th Ave SE & SE 220th Pl(57375) ~ Walk 18m22s
+86,1,43m45s,3991,239,10:30:22,11:14:07,Metro Transit|Sound Generations: Volunteer Transportation,BUS,4|Volunteer Transportation,kcm:41300|kcm:4020|volunteer:area_873,Walk 3m19s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 4 10:33:41 10:41:02 ~ Taylor Ave N & Prospect St(4020) ~ Walk 6s ~ volunteer:area_873(area_873) ~ BUS null 10:43:08 11:14:07
+87,0,26m,2162,3,10:00:00,10:26:00,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:00:03 10:26
+87,0,26m,2162,3,10:00:00,10:26:00,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,Walk 3s ~ hopelink:area_1085(area_1085) ~ BUS null 10:00:03 10:26
+87,0,26m,2162,3,10:00:00,10:26:00,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,Walk 3s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:00:03 10:26
+88,1,35m3s,3469,239,10:15:22,10:50:25,Metro Transit|Sound Generations: Volunteer Transportation,BUS,4|Volunteer Transportation,kcm:41300|kcm:4020|volunteer:area_873,Walk 3m19s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 4 10:18:41 10:26:02 ~ Taylor Ave N & Prospect St(4020) ~ Walk 6s ~ volunteer:area_873(area_873) ~ BUS null 10:28:08 10:50:25
+88,1,35m3s,3469,239,10:45:22,11:20:25,Metro Transit|Sound Generations: Volunteer Transportation,BUS,4|Volunteer Transportation,kcm:41300|kcm:4020|volunteer:area_873,Walk 3m19s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 4 10:48:41 10:56:02 ~ Taylor Ave N & Prospect St(4020) ~ Walk 6s ~ volunteer:area_873(area_873) ~ BUS null 10:58:08 11:20:25
+89,0,31m52s,2514,3,10:00:00,10:31:52,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:00:03 10:31:52
+89,0,31m52s,2514,3,10:00:00,10:31:52,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,Walk 3s ~ hopelink:area_1085(area_1085) ~ BUS null 10:00:03 10:31:52
+89,0,31m52s,2514,3,10:00:00,10:31:52,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,Walk 3s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:00:03 10:31:52
+90,1,40m55s,3821,239,10:00:22,10:41:17,Metro Transit|Sound Generations: Volunteer Transportation,BUS,4|Volunteer Transportation,kcm:41300|kcm:4020|volunteer:area_873,Walk 3m19s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 4 10:03:41 10:11:02 ~ Taylor Ave N & Prospect St(4020) ~ Walk 6s ~ volunteer:area_873(area_873) ~ BUS null 10:13:08 10:41:17
+91,0,18m7s,1754,92,10:00:00,10:18:07,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:00:03 10:16:54 ~ Walk 1m13s
+91,0,18m7s,1754,92,10:00:00,10:18:07,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,Walk 3s ~ hopelink:area_1085(area_1085) ~ BUS null 10:00:03 10:16:54 ~ Walk 1m13s
+91,0,18m7s,1754,92,10:00:00,10:18:07,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,Walk 3s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:00:03 10:16:54 ~ Walk 1m13s
+92,1,23m9s,2755,228,10:23:52,10:47:01,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|128,volunteer:area_873|kcm:31950|kcm:31970,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:23:55 10:40:44 ~ Walk 23s ~ California Ave SW & SW Hanford St(31950) ~ BUS 128 10:43:07 10:44:16 ~ California Ave SW & SW Spokane St(31970) ~ Walk 2m45s
+92,1,23m4s,2775,267,10:27:12,10:50:16,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|128,volunteer:area_873|kcm:31850|kcm:31871,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:27:15 10:43:15 ~ Walk 25s ~ California Ave SW & SW Andover St(31850) ~ BUS 128 10:45:40 10:46:50 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m26s
+94,1,1h10m9s,5518,160,10:06:05,11:16:14,Metro Transit|Volunteer Services: King County,BUS,2|Volunteer Services: King County,kcm:2570|kcm:102|ccsww-kc:area_1083,Walk 2m ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:32 ~ Spring St & 4th Ave(102) ~ Walk 31s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:34:31 11:16:14
+94,1,1h32m36s,7953,1650,10:03:09,11:35:45,Sound Generations: Volunteer Transportation|Sound Transit,BUS,Volunteer Transportation|578,volunteer:area_873|pierce:18728|pierce:10401,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:03:12 10:44:03 ~ Walk 57s ~ Auburn Station - Bay 4(18728) ~ BUS 578 10:47 11:14 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m45s
+94,1,1h15m,6040,460,10:30:55,11:45:55,Pierce Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|402,volunteer:area_873|pierce:30893|pierce:1332,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:30:58 11:06:51 ~ Walk 0s ~ 16th Ave S & S 344th St(30893) ~ BUS 402 11:08:51 11:39:31 ~ Meridian S & 9th Ave SW(1332) ~ Walk 6m24s
+95,0,41m47s,3109,3,10:00:00,10:41:47,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:00:03 10:41:47
+95,0,41m47s,3109,3,10:00:00,10:41:47,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,Walk 3s ~ hopelink:area_1085(area_1085) ~ BUS null 10:00:03 10:41:47
+95,0,41m47s,3109,3,10:00:00,10:41:47,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,Walk 3s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:00:03 10:41:47
+96,1,59m42s,5096,429,11:10:47,12:10:29,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|208,volunteer:area_873|kcm:64416|kcm:64399,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 11:10:50 11:40:52 ~ Walk 0s ~ I-90 & 270th Ave SE(64416) ~ BUS 208 11:42:52 12:04:49 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m40s
+96,1,50m40s,4406,239,11:29:22,12:20:02,Metro Transit|Sound Generations: Volunteer Transportation,BUS,4|Volunteer Transportation,kcm:41300|kcm:4020|volunteer:area_873,Walk 3m19s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 4 11:32:41 11:40:02 ~ Taylor Ave N & Prospect St(4020) ~ Walk 6s ~ volunteer:area_873(area_873) ~ BUS null 11:42:08 12:20:02
+97,0,15m48s,1550,3,10:00:00,10:15:48,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:00:03 10:15:48
+97,0,15m48s,1550,3,10:00:00,10:15:48,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,Walk 3s ~ hopelink:area_1085(area_1085) ~ BUS null 10:00:03 10:15:48
+97,0,15m48s,1550,3,10:00:00,10:15:48,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,Walk 3s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:00:03 10:15:48
+98,1,19m44s,2465,118,10:23:22,10:43:06,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|36,volunteer:area_873|kcm:3800|kcm:3810,Walk 3s ~ volunteer:area_873(area_873) ~ BUS null 10:23:25 10:38 ~ Walk 0s ~ Beacon Ave S & S Bayview St(3800) ~ BUS 36 10:40 10:41 ~ Beacon Ave S & S Lander St(3810) ~ Walk 2m6s
+98,1,47m1s,4184,242,10:06:05,10:53:06,Metro Transit,BUS,2|36,kcm:2570|kcm:430|kcm:3810,Walk 2m ~ W Mcgraw St & 6th Ave W(2570) ~ BUS 2 10:08:05 10:26:54 ~ 3rd Ave & Pine St(430) ~ BUS 36 10:30 10:51 ~ Beacon Ave S & S Lander St(3810) ~ Walk 2m6s
+98,1,47m44s,4302,348,10:15:22,11:03:06,Metro Transit,BUS,4|36,kcm:41300|kcm:450|kcm:3810,Walk 3m19s ~ 3rd Ave W & W Mcgraw St(41300) ~ BUS 4 10:18:41 10:38 ~ 3rd Ave & Union St(450) ~ BUS 36 10:41:55 11:01 ~ Beacon Ave S & S Lander St(3810) ~ Walk 2m6s
+99,0,25m40s,2140,0,10:00:00,10:25:40,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:25:40
+99,0,25m40s,2140,0,10:00:00,10:25:40,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:25:40
+99,0,25m40s,2140,0,10:00:00,10:25:40,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:25:40
+100,2,31m3s,3665,0,10:00:21,10:31:24,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|160|Volunteer Transportation,volunteer:area_873|kcm:57210|kcm:57220|volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00:21 10:23 ~ Walk 0s ~ 108th Ave SE & SE 208th St(57210) ~ BUS 160 10:25 10:25:35 ~ 108th Ave SE & SE 204th St(57220) ~ Walk 0s ~ volunteer:area_873(area_873) ~ BUS null 10:27:35 10:31:24
+100,1,30m4s,3096,138,10:43:54,11:13:58,Metro Transit|Sound Generations: Volunteer Transportation,BUS,107|Volunteer Transportation,kcm:3810|kcm:42070|volunteer:area_873,Walk 2m6s ~ Beacon Ave S & S Lander St(3810) ~ BUS 107 10:46 10:48:10 ~ 15th Ave S & S Spokane St(42070) ~ Walk 28s ~ volunteer:area_873(area_873) ~ BUS null 10:50:38 11:13:58
+101,0,20m45s,1845,0,10:00:00,10:20:45,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:20:45
+101,0,20m45s,1845,0,10:00:00,10:20:45,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:20:45
+101,0,20m45s,1845,0,10:00:00,10:20:45,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:20:45
+102,1,28m53s,3026,136,10:13:54,10:42:47,Metro Transit|Sound Generations: Volunteer Transportation,BUS,107|Volunteer Transportation,kcm:3810|kcm:41740|volunteer:area_873,Walk 2m6s ~ Beacon Ave S & S Lander St(3810) ~ BUS 107 10:16 10:25 ~ 13th Ave S & S Bailey St(41740) ~ Walk 17s ~ volunteer:area_873(area_873) ~ BUS null 10:27:17 10:42:47
+103,0,22m50s,1970,0,10:00:00,10:22:50,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:22:50
+103,0,22m50s,1970,0,10:00:00,10:22:50,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:22:50
+103,0,22m50s,1970,0,10:00:00,10:22:50,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:22:50
+104,1,27m14s,2926,138,10:28:54,10:56:08,Metro Transit|Sound Generations: Volunteer Transportation,BUS,107|Volunteer Transportation,kcm:3810|kcm:42070|volunteer:area_873,Walk 2m6s ~ Beacon Ave S & S Lander St(3810) ~ BUS 107 10:31 10:33:10 ~ 15th Ave S & S Spokane St(42070) ~ Walk 28s ~ volunteer:area_873(area_873) ~ BUS null 10:35:38 10:56:08
+105,0,12m56s,1440,89,10:00:00,10:12:56,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:11:43 ~ Walk 1m13s
+105,0,12m56s,1440,89,10:00:00,10:12:56,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:11:43 ~ Walk 1m13s
+105,0,12m56s,1440,89,10:00:00,10:12:56,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:11:43 ~ Walk 1m13s
+106,1,18m17s,2454,227,10:04:54,10:23:11,Metro Transit|Sound Generations: Volunteer Transportation,BUS,60|Volunteer Transportation,kcm:3810|kcm:42070|volunteer:area_873,Walk 2m6s ~ Beacon Ave S & S Lander St(3810) ~ BUS 60 10:07 10:10:05 ~ 15th Ave S & S Spokane St(42070) ~ Walk 28s ~ volunteer:area_873(area_873) ~ BUS null 10:12:33 10:21:58 ~ Walk 1m13s
+106,1,17m22s,2399,227,10:28:54,10:46:16,Metro Transit|Sound Generations: Volunteer Transportation,BUS,107|Volunteer Transportation,kcm:3810|kcm:42070|volunteer:area_873,Walk 2m6s ~ Beacon Ave S & S Lander St(3810) ~ BUS 107 10:31 10:33:10 ~ 15th Ave S & S Spokane St(42070) ~ Walk 28s ~ volunteer:area_873(area_873) ~ BUS null 10:35:38 10:45:03 ~ Walk 1m13s
+106,1,42m7s,4071,492,10:13:54,10:56:01,Metro Transit,BUS,107|50,kcm:3810|kcm:42070|kcm:30530|kcm:31871,Walk 2m6s ~ Beacon Ave S & S Lander St(3810) ~ BUS 107 10:16 10:18:10 ~ 15th Ave S & S Spokane St(42070) ~ Walk 2m19s ~ S Columbian Way & S Spokane St(30530) ~ BUS 50 10:25:43 10:52:35 ~ California Ave SW & SW Spokane St(31871) ~ Walk 3m26s
+107,0,41m29s,3089,0,10:00:00,10:41:29,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_1083,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:41:29
+107,0,41m29s,3089,0,07:00:00,07:41:29,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_1083,ccsww-kc:area_897(area_897) ~ BUS null 7:00 7:41:29
+108,1,57m14s,5274,878,10:06:00,11:03:14,Pierce Transit|Volunteer Services: King County,BUS,Volunteer Services: King County|400,ccsww-kc:area_1083|pierce:12970|pierce:8058,ccsww-kc:area_897(area_897) ~ BUS null 10:06 10:47:31 ~ Walk 17s ~ 5th St SW & Pioneer Ave W(12970) ~ BUS 400 10:49:48 10:51:06 ~ 5th St SW & 9th Ave SW - Red Lot(8058) ~ Walk 12m8s
+108,1,51m4s,4664,558,10:29:05,11:20:09,Metro Transit|Volunteer Services: King County,BUS,107|Volunteer Services: King County,kcm:41870|kcm:41880|ccsww-kc:area_1083,Walk 7m34s ~ 15th Ave S & S Hanford St(41870) ~ BUS 107 10:36:39 10:37:12 ~ 15th Ave S & S Stevens St(41880) ~ Walk 27s ~ ccsww-kc:area_897(area_897) ~ BUS null 10:39:39 11:20:09
+108,1,1h23m34s,7408,1647,10:12:11,11:35:45,Sound Generations: Volunteer Transportation|Sound Transit,BUS,Volunteer Transportation|578,volunteer:area_873|pierce:18728|pierce:10401,volunteer:area_873(area_873) ~ BUS null 10:12:11 10:44:03 ~ Walk 57s ~ Auburn Station - Bay 4(18728) ~ BUS 578 10:47 11:14 ~ Puyallup Station - Bay 3(10401) ~ Walk 21m45s
+109,0,33m12s,2592,0,10:00:00,10:33:12,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:33:12
+109,0,33m12s,2592,0,10:00:00,10:33:12,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:33:12
+109,0,33m12s,2592,0,10:00:00,10:33:12,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:33:12
+110,1,39m12s,3767,294,10:00:22,10:39:34,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|208,volunteer:area_873|kcm:85386|kcm:82425,volunteer:area_873(area_873) ~ BUS null 10:00:22 10:31:55 ~ Walk 0s ~ Railroad Ave SE & Meadowbrook Way SE(85386) ~ BUS 208 10:33:55 10:35:35 ~ Railroad Ave S & SE King St(82425) ~ Walk 3m59s
+110,1,38m33s,3621,172,10:35:43,11:14:16,Metro Transit|Sound Generations: Volunteer Transportation,BUS,36|Volunteer Transportation,kcm:3460|kcm:3470|volunteer:area_873,Walk 2m42s ~ Beacon Ave S & S Stevens St(3460) ~ BUS 36 10:38:25 10:39 ~ Beacon Ave S & S Lander St(3470) ~ Walk 18s ~ volunteer:area_873(area_873) ~ BUS null 10:41:18 11:14:16
+110,1,51m7s,4578,426,11:19:22,12:10:29,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|208,volunteer:area_873|kcm:64416|kcm:64399,volunteer:area_873(area_873) ~ BUS null 11:19:22 11:40:52 ~ Walk 0s ~ I-90 & 270th Ave SE(64416) ~ BUS 208 11:42:52 12:04:49 ~ Railroad Ave SE & SE River St(64399) ~ Walk 5m40s
+111,0,16m18s,1580,3,10:00:00,10:16:18,Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation,volunteer:area_873,volunteer:area_873(area_873) ~ BUS null 10:00 10:16:15 ~ Walk 3s
+111,0,16m18s,1580,3,10:00:00,10:16:18,Hopelink Transportation,BUS,Medicaid Transportation,hopelink:area_1085,hopelink:area_1085(area_1085) ~ BUS null 10:00 10:16:15 ~ Walk 3s
+111,0,16m18s,1580,3,10:00:00,10:16:18,Volunteer Services: King County,BUS,Volunteer Services: King County,ccsww-kc:area_897,ccsww-kc:area_897(area_897) ~ BUS null 10:00 10:16:15 ~ Walk 3s
+112,1,22m10s,2703,253,10:02:23,10:24:33,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|13,volunteer:area_873|kcm:41290|kcm:41300,volunteer:area_873(area_873) ~ BUS null 10:02:23 10:18:37 ~ Walk 22s ~ 3rd Ave W & W Smith St(41290) ~ BUS 13 10:20:59 10:21:14 ~ 3rd Ave W & W Mcgraw St(41300) ~ Walk 3m19s
+112,1,26m38s,2970,248,10:20:28,10:47:06,Metro Transit|Sound Generations: Volunteer Transportation,BUS,Volunteer Transportation|4,volunteer:area_873|kcm:4280|kcm:41350,volunteer:area_873(area_873) ~ BUS null 10:20:28 10:33:22 ~ Walk 6s ~ Taylor Ave N & Lee St(4280) ~ BUS 4 10:35:28 10:43:35 ~ W Mcgraw St & 3rd Ave W(41350) ~ Walk 3m31s
+112,1,21m10s,2565,141,10:28:54,10:50:04,Metro Transit|Sound Generations: Volunteer Transportation,BUS,107|Volunteer Transportation,kcm:3810|kcm:42070|volunteer:area_873,Walk 2m6s ~ Beacon Ave S & S Lander St(3810) ~ BUS 107 10:31 10:33:10 ~ 15th Ave S & S Spokane St(42070) ~ Walk 28s ~ volunteer:area_873(area_873) ~ BUS null 10:35:38 10:50:01 ~ Walk 3s
diff --git a/test/performance/washington-state/travelSearch.csv b/test/performance/washington-state/travelSearch.csv
index 66fa3dac2d5..28daf760405 100644
--- a/test/performance/washington-state/travelSearch.csv
+++ b/test/performance/washington-state/travelSearch.csv
@@ -1,163 +1,113 @@
testCaseId,description,departure,fromLat,fromLon,toLat,toLon,origin,destination,modes,category
-1,Hilshire Terrace to Normandy Park (transit),10:00,47.40648236,-122.18101501,47.44306609375831,-122.34237670,Hilshire Terrace,Normandy Park,TRANSIT|WALK,transit
-2,Hilshire Terrace to Normandy Park (flex),10:00,47.40648236,-122.18101501,47.44306609375831,-122.34237670,Hilshire Terrace,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-3,Hilshire Terrace to Des Moines (transit),10:00,47.40648236,-122.18101501,47.3978844,-122.30898,Hilshire Terrace,Des Moines,TRANSIT|WALK,transit
-4,Hilshire Terrace to Des Moines (flex),10:00,47.40648236,-122.18101501,47.3978844,-122.30898,Hilshire Terrace,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-5,Hilshire Terrace to North Auburn (transit),10:00,47.40648236,-122.18101501,47.340218616,-122.2246170043,Hilshire Terrace,North Auburn,TRANSIT|WALK,transit
-6,Hilshire Terrace to North Auburn (flex),10:00,47.40648236,-122.18101501,47.340218616,-122.2246170043,Hilshire Terrace,North Auburn,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-7,Hilshire Terrace to Federal Way (transit),10:00,47.40648236,-122.18101501,47.31322426310727,-122.336540222167,Hilshire Terrace,Federal Way,TRANSIT|WALK,transit
-8,Hilshire Terrace to Federal Way (flex),10:00,47.40648236,-122.18101501,47.31322426310727,-122.336540222167,Hilshire Terrace,Federal Way,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-9,Hilshire Terrace to West Seattle (transit),10:00,47.40648236,-122.18101501,47.571024,-122.3877811,Hilshire Terrace,West Seattle,TRANSIT|WALK,transit
-10,Hilshire Terrace to West Seattle (flex),10:00,47.40648236,-122.18101501,47.571024,-122.3877811,Hilshire Terrace,West Seattle,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-11,Hilshire Terrace to Puyallup (transit),10:00,47.40648236,-122.18101501,47.18399599096,-122.28950500488,Hilshire Terrace,Puyallup,TRANSIT|WALK,transit
-12,Hilshire Terrace to Puyallup (flex),10:00,47.40648236,-122.18101501,47.18399599096,-122.28950500488,Hilshire Terrace,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-13,Hilshire Terrace to Snoqualmie (transit),10:00,47.40648236,-122.18101501,47.52827129,-121.827821731,Hilshire Terrace,Snoqualmie,TRANSIT|WALK,transit
-14,Hilshire Terrace to Snoqualmie (flex),10:00,47.40648236,-122.18101501,47.52827129,-121.827821731,Hilshire Terrace,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-15,Hilshire Terrace to Queen Anne (transit),10:00,47.40648236,-122.18101501,47.6394849792,-122.3636627197,Hilshire Terrace,Queen Anne,TRANSIT|WALK,transit
-17,Hilshire Terrace to Beacon Hill (transit),10:00,47.40648236,-122.18101501,47.578668036563016,-122.31139183,Hilshire Terrace,Beacon Hill,TRANSIT|WALK,transit
-18,Hilshire Terrace to Beacon Hill (flex),10:00,47.40648236,-122.18101501,47.578668036563016,-122.31139183,Hilshire Terrace,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-19,Normandy Park to Hilshire Terrace (transit),10:00,47.44306609375831,-122.34237670,47.40648236,-122.18101501,Normandy Park,Hilshire Terrace,TRANSIT|WALK,transit
-20,Normandy Park to Hilshire Terrace (flex),10:00,47.44306609375831,-122.34237670,47.40648236,-122.18101501,Normandy Park,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-21,Normandy Park to Des Moines (transit),10:00,47.44306609375831,-122.34237670,47.3978844,-122.30898,Normandy Park,Des Moines,TRANSIT|WALK,transit
-22,Normandy Park to Des Moines (flex),10:00,47.44306609375831,-122.34237670,47.3978844,-122.30898,Normandy Park,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-23,Normandy Park to North Auburn (transit),10:00,47.44306609375831,-122.34237670,47.340218616,-122.2246170043,Normandy Park,North Auburn,TRANSIT|WALK,transit
-24,Normandy Park to North Auburn (flex),10:00,47.44306609375831,-122.34237670,47.340218616,-122.2246170043,Normandy Park,North Auburn,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-25,Normandy Park to Federal Way (transit),10:00,47.44306609375831,-122.34237670,47.31322426310727,-122.336540222167,Normandy Park,Federal Way,TRANSIT|WALK,transit
-26,Normandy Park to Federal Way (flex),10:00,47.44306609375831,-122.34237670,47.31322426310727,-122.336540222167,Normandy Park,Federal Way,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-27,Normandy Park to West Seattle (transit),10:00,47.44306609375831,-122.34237670,47.571024,-122.3877811,Normandy Park,West Seattle,TRANSIT|WALK,transit
-28,Normandy Park to West Seattle (flex),10:00,47.44306609375831,-122.34237670,47.571024,-122.3877811,Normandy Park,West Seattle,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-29,Normandy Park to Puyallup (transit),10:00,47.44306609375831,-122.34237670,47.18399599096,-122.28950500488,Normandy Park,Puyallup,TRANSIT|WALK,transit
-30,Normandy Park to Puyallup (flex),10:00,47.44306609375831,-122.34237670,47.18399599096,-122.28950500488,Normandy Park,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-31,Normandy Park to Snoqualmie (transit),10:00,47.44306609375831,-122.34237670,47.52827129,-121.827821731,Normandy Park,Snoqualmie,TRANSIT|WALK,transit
-32,Normandy Park to Snoqualmie (flex),10:00,47.44306609375831,-122.34237670,47.52827129,-121.827821731,Normandy Park,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-33,Normandy Park to Queen Anne (transit),10:00,47.44306609375831,-122.34237670,47.6394849792,-122.3636627197,Normandy Park,Queen Anne,TRANSIT|WALK,transit
-34,Normandy Park to Queen Anne (flex),10:00,47.44306609375831,-122.34237670,47.6394849792,-122.3636627197,Normandy Park,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-35,Normandy Park to Beacon Hill (transit),10:00,47.44306609375831,-122.34237670,47.578668036563016,-122.31139183,Normandy Park,Beacon Hill,TRANSIT|WALK,transit
-36,Normandy Park to Beacon Hill (flex),10:00,47.44306609375831,-122.34237670,47.578668036563016,-122.31139183,Normandy Park,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-37,Des Moines to Hilshire Terrace (transit),10:00,47.3978844,-122.30898,47.40648236,-122.18101501,Des Moines,Hilshire Terrace,TRANSIT|WALK,transit
-38,Des Moines to Hilshire Terrace (flex),10:00,47.3978844,-122.30898,47.40648236,-122.18101501,Des Moines,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-39,Des Moines to Normandy Park (transit),10:00,47.3978844,-122.30898,47.44306609375831,-122.34237670,Des Moines,Normandy Park,TRANSIT|WALK,transit
-40,Des Moines to Normandy Park (flex),10:00,47.3978844,-122.30898,47.44306609375831,-122.34237670,Des Moines,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-41,Des Moines to North Auburn (transit),10:00,47.3978844,-122.30898,47.340218616,-122.2246170043,Des Moines,North Auburn,TRANSIT|WALK,transit
-42,Des Moines to North Auburn (flex),10:00,47.3978844,-122.30898,47.340218616,-122.2246170043,Des Moines,North Auburn,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-43,Des Moines to Federal Way (transit),10:00,47.3978844,-122.30898,47.31322426310727,-122.336540222167,Des Moines,Federal Way,TRANSIT|WALK,transit
-44,Des Moines to Federal Way (flex),10:00,47.3978844,-122.30898,47.31322426310727,-122.336540222167,Des Moines,Federal Way,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-45,Des Moines to West Seattle (transit),10:00,47.3978844,-122.30898,47.571024,-122.3877811,Des Moines,West Seattle,TRANSIT|WALK,transit
-46,Des Moines to West Seattle (flex),10:00,47.3978844,-122.30898,47.571024,-122.3877811,Des Moines,West Seattle,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-47,Des Moines to Puyallup (transit),10:00,47.3978844,-122.30898,47.18399599096,-122.28950500488,Des Moines,Puyallup,TRANSIT|WALK,transit
-48,Des Moines to Puyallup (flex),10:00,47.3978844,-122.30898,47.18399599096,-122.28950500488,Des Moines,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-49,Des Moines to Snoqualmie (transit),10:00,47.3978844,-122.30898,47.52827129,-121.827821731,Des Moines,Snoqualmie,TRANSIT|WALK,transit
-50,Des Moines to Snoqualmie (flex),10:00,47.3978844,-122.30898,47.52827129,-121.827821731,Des Moines,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-51,Des Moines to Queen Anne (transit),10:00,47.3978844,-122.30898,47.6394849792,-122.3636627197,Des Moines,Queen Anne,TRANSIT|WALK,transit
-52,Des Moines to Queen Anne (flex),10:00,47.3978844,-122.30898,47.6394849792,-122.3636627197,Des Moines,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-53,Des Moines to Beacon Hill (transit),10:00,47.3978844,-122.30898,47.578668036563016,-122.31139183,Des Moines,Beacon Hill,TRANSIT|WALK,transit
-54,Des Moines to Beacon Hill (flex),10:00,47.3978844,-122.30898,47.578668036563016,-122.31139183,Des Moines,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-55,North Auburn to Hilshire Terrace (transit),10:00,47.340218616,-122.2246170043,47.40648236,-122.18101501,North Auburn,Hilshire Terrace,TRANSIT|WALK,transit
-56,North Auburn to Hilshire Terrace (flex),10:00,47.340218616,-122.2246170043,47.40648236,-122.18101501,North Auburn,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-57,North Auburn to Normandy Park (transit),10:00,47.340218616,-122.2246170043,47.44306609375831,-122.34237670,North Auburn,Normandy Park,TRANSIT|WALK,transit
-58,North Auburn to Normandy Park (flex),10:00,47.340218616,-122.2246170043,47.44306609375831,-122.34237670,North Auburn,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-59,North Auburn to Des Moines (transit),10:00,47.340218616,-122.2246170043,47.3978844,-122.30898,North Auburn,Des Moines,TRANSIT|WALK,transit
-60,North Auburn to Des Moines (flex),10:00,47.340218616,-122.2246170043,47.3978844,-122.30898,North Auburn,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-61,North Auburn to Federal Way (transit),10:00,47.340218616,-122.2246170043,47.31322426310727,-122.336540222167,North Auburn,Federal Way,TRANSIT|WALK,transit
-62,North Auburn to Federal Way (flex),10:00,47.340218616,-122.2246170043,47.31322426310727,-122.336540222167,North Auburn,Federal Way,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-63,North Auburn to West Seattle (transit),10:00,47.340218616,-122.2246170043,47.571024,-122.3877811,North Auburn,West Seattle,TRANSIT|WALK,transit
-65,North Auburn to Puyallup (transit),10:00,47.340218616,-122.2246170043,47.18399599096,-122.28950500488,North Auburn,Puyallup,TRANSIT|WALK,transit
-66,North Auburn to Puyallup (flex),10:00,47.340218616,-122.2246170043,47.18399599096,-122.28950500488,North Auburn,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-67,North Auburn to Snoqualmie (transit),10:00,47.340218616,-122.2246170043,47.52827129,-121.827821731,North Auburn,Snoqualmie,TRANSIT|WALK,transit
-68,North Auburn to Snoqualmie (flex),10:00,47.340218616,-122.2246170043,47.52827129,-121.827821731,North Auburn,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-69,North Auburn to Queen Anne (transit),10:00,47.340218616,-122.2246170043,47.6394849792,-122.3636627197,North Auburn,Queen Anne,TRANSIT|WALK,transit
-71,North Auburn to Beacon Hill (transit),10:00,47.340218616,-122.2246170043,47.578668036563016,-122.31139183,North Auburn,Beacon Hill,TRANSIT|WALK,transit
-72,North Auburn to Beacon Hill (flex),10:00,47.340218616,-122.2246170043,47.578668036563016,-122.31139183,North Auburn,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-73,Federal Way to Hilshire Terrace (transit),10:00,47.31322426310727,-122.336540222167,47.40648236,-122.18101501,Federal Way,Hilshire Terrace,TRANSIT|WALK,transit
-74,Federal Way to Hilshire Terrace (flex),10:00,47.31322426310727,-122.336540222167,47.40648236,-122.18101501,Federal Way,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-75,Federal Way to Normandy Park (transit),10:00,47.31322426310727,-122.336540222167,47.44306609375831,-122.34237670,Federal Way,Normandy Park,TRANSIT|WALK,transit
-76,Federal Way to Normandy Park (flex),10:00,47.31322426310727,-122.336540222167,47.44306609375831,-122.34237670,Federal Way,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-77,Federal Way to Des Moines (transit),10:00,47.31322426310727,-122.336540222167,47.3978844,-122.30898,Federal Way,Des Moines,TRANSIT|WALK,transit
-78,Federal Way to Des Moines (flex),10:00,47.31322426310727,-122.336540222167,47.3978844,-122.30898,Federal Way,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-79,Federal Way to North Auburn (transit),10:00,47.31322426310727,-122.336540222167,47.340218616,-122.2246170043,Federal Way,North Auburn,TRANSIT|WALK,transit
-80,Federal Way to North Auburn (flex),10:00,47.31322426310727,-122.336540222167,47.340218616,-122.2246170043,Federal Way,North Auburn,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-81,Federal Way to West Seattle (transit),10:00,47.31322426310727,-122.336540222167,47.571024,-122.3877811,Federal Way,West Seattle,TRANSIT|WALK,transit
-83,Federal Way to Puyallup (transit),10:00,47.31322426310727,-122.336540222167,47.18399599096,-122.28950500488,Federal Way,Puyallup,TRANSIT|WALK,transit
-84,Federal Way to Puyallup (flex),10:00,47.31322426310727,-122.336540222167,47.18399599096,-122.28950500488,Federal Way,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-85,Federal Way to Snoqualmie (transit),10:00,47.31322426310727,-122.336540222167,47.52827129,-121.827821731,Federal Way,Snoqualmie,TRANSIT|WALK,transit
-86,Federal Way to Snoqualmie (flex),10:00,47.31322426310727,-122.336540222167,47.52827129,-121.827821731,Federal Way,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-87,Federal Way to Queen Anne (transit),10:00,47.31322426310727,-122.336540222167,47.6394849792,-122.3636627197,Federal Way,Queen Anne,TRANSIT|WALK,transit
-89,Federal Way to Beacon Hill (transit),10:00,47.31322426310727,-122.336540222167,47.578668036563016,-122.31139183,Federal Way,Beacon Hill,TRANSIT|WALK,transit
-90,Federal Way to Beacon Hill (flex),10:00,47.31322426310727,-122.336540222167,47.578668036563016,-122.31139183,Federal Way,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-91,West Seattle to Hilshire Terrace (transit),10:00,47.571024,-122.3877811,47.40648236,-122.18101501,West Seattle,Hilshire Terrace,TRANSIT|WALK,transit
-92,West Seattle to Hilshire Terrace (flex),10:00,47.571024,-122.3877811,47.40648236,-122.18101501,West Seattle,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-93,West Seattle to Normandy Park (transit),10:00,47.571024,-122.3877811,47.44306609375831,-122.34237670,West Seattle,Normandy Park,TRANSIT|WALK,transit
-94,West Seattle to Normandy Park (flex),10:00,47.571024,-122.3877811,47.44306609375831,-122.34237670,West Seattle,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-95,West Seattle to Des Moines (transit),10:00,47.571024,-122.3877811,47.3978844,-122.30898,West Seattle,Des Moines,TRANSIT|WALK,transit
-96,West Seattle to Des Moines (flex),10:00,47.571024,-122.3877811,47.3978844,-122.30898,West Seattle,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-97,West Seattle to North Auburn (transit),10:00,47.571024,-122.3877811,47.340218616,-122.2246170043,West Seattle,North Auburn,TRANSIT|WALK,transit
-98,West Seattle to North Auburn (flex),10:00,47.571024,-122.3877811,47.340218616,-122.2246170043,West Seattle,North Auburn,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-99,West Seattle to Federal Way (transit),10:00,47.571024,-122.3877811,47.31322426310727,-122.336540222167,West Seattle,Federal Way,TRANSIT|WALK,transit
-100,West Seattle to Federal Way (flex),10:00,47.571024,-122.3877811,47.31322426310727,-122.336540222167,West Seattle,Federal Way,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-101,West Seattle to Puyallup (transit),10:00,47.571024,-122.3877811,47.18399599096,-122.28950500488,West Seattle,Puyallup,TRANSIT|WALK,transit
-102,West Seattle to Puyallup (flex),10:00,47.571024,-122.3877811,47.18399599096,-122.28950500488,West Seattle,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-103,West Seattle to Snoqualmie (transit),10:00,47.571024,-122.3877811,47.52827129,-121.827821731,West Seattle,Snoqualmie,TRANSIT|WALK,transit
-104,West Seattle to Snoqualmie (flex),10:00,47.571024,-122.3877811,47.52827129,-121.827821731,West Seattle,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-105,West Seattle to Queen Anne (transit),10:00,47.571024,-122.3877811,47.6394849792,-122.3636627197,West Seattle,Queen Anne,TRANSIT|WALK,transit
-106,West Seattle to Queen Anne (flex),10:00,47.571024,-122.3877811,47.6394849792,-122.3636627197,West Seattle,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-107,West Seattle to Beacon Hill (transit),10:00,47.571024,-122.3877811,47.578668036563016,-122.31139183,West Seattle,Beacon Hill,TRANSIT|WALK,transit
-108,West Seattle to Beacon Hill (flex),10:00,47.571024,-122.3877811,47.578668036563016,-122.31139183,West Seattle,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-109,Puyallup to Hilshire Terrace (transit),10:00,47.18399599096,-122.28950500488,47.40648236,-122.18101501,Puyallup,Hilshire Terrace,TRANSIT|WALK,transit
-110,Puyallup to Hilshire Terrace (flex),10:00,47.18399599096,-122.28950500488,47.40648236,-122.18101501,Puyallup,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-111,Puyallup to Normandy Park (transit),10:00,47.18399599096,-122.28950500488,47.44306609375831,-122.34237670,Puyallup,Normandy Park,TRANSIT|WALK,transit
-112,Puyallup to Normandy Park (flex),10:00,47.18399599096,-122.28950500488,47.44306609375831,-122.34237670,Puyallup,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-113,Puyallup to Des Moines (transit),10:00,47.18399599096,-122.28950500488,47.3978844,-122.30898,Puyallup,Des Moines,TRANSIT|WALK,transit
-114,Puyallup to Des Moines (flex),10:00,47.18399599096,-122.28950500488,47.3978844,-122.30898,Puyallup,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-115,Puyallup to North Auburn (transit),10:00,47.18399599096,-122.28950500488,47.340218616,-122.2246170043,Puyallup,North Auburn,TRANSIT|WALK,transit
-116,Puyallup to North Auburn (flex),10:00,47.18399599096,-122.28950500488,47.340218616,-122.2246170043,Puyallup,North Auburn,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-117,Puyallup to Federal Way (transit),10:00,47.18399599096,-122.28950500488,47.31322426310727,-122.336540222167,Puyallup,Federal Way,TRANSIT|WALK,transit
-118,Puyallup to Federal Way (flex),10:00,47.18399599096,-122.28950500488,47.31322426310727,-122.336540222167,Puyallup,Federal Way,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-119,Puyallup to West Seattle (transit),10:00,47.18399599096,-122.28950500488,47.571024,-122.3877811,Puyallup,West Seattle,TRANSIT|WALK,transit
-121,Puyallup to Snoqualmie (transit),10:00,47.18399599096,-122.28950500488,47.52827129,-121.827821731,Puyallup,Snoqualmie,TRANSIT|WALK,transit
-122,Puyallup to Snoqualmie (flex),10:00,47.18399599096,-122.28950500488,47.52827129,-121.827821731,Puyallup,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-123,Puyallup to Queen Anne (transit),10:00,47.18399599096,-122.28950500488,47.6394849792,-122.3636627197,Puyallup,Queen Anne,TRANSIT|WALK,transit
-124,Puyallup to Queen Anne (flex),10:00,47.18399599096,-122.28950500488,47.6394849792,-122.3636627197,Puyallup,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-125,Puyallup to Beacon Hill (transit),10:00,47.18399599096,-122.28950500488,47.578668036563016,-122.31139183,Puyallup,Beacon Hill,TRANSIT|WALK,transit
-126,Puyallup to Beacon Hill (flex),10:00,47.18399599096,-122.28950500488,47.578668036563016,-122.31139183,Puyallup,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-127,Snoqualmie to Hilshire Terrace (transit),10:00,47.52827129,-121.827821731,47.40648236,-122.18101501,Snoqualmie,Hilshire Terrace,TRANSIT|WALK,transit
-129,Snoqualmie to Normandy Park (transit),10:00,47.52827129,-121.827821731,47.44306609375831,-122.34237670,Snoqualmie,Normandy Park,TRANSIT|WALK,transit
-131,Snoqualmie to Des Moines (transit),10:00,47.52827129,-121.827821731,47.3978844,-122.30898,Snoqualmie,Des Moines,TRANSIT|WALK,transit
-133,Snoqualmie to North Auburn (transit),10:00,47.52827129,-121.827821731,47.340218616,-122.2246170043,Snoqualmie,North Auburn,TRANSIT|WALK,transit
-135,Snoqualmie to Federal Way (transit),10:00,47.52827129,-121.827821731,47.31322426310727,-122.336540222167,Snoqualmie,Federal Way,TRANSIT|WALK,transit
-137,Snoqualmie to West Seattle (transit),10:00,47.52827129,-121.827821731,47.571024,-122.3877811,Snoqualmie,West Seattle,TRANSIT|WALK,transit
-139,Snoqualmie to Puyallup (transit),10:00,47.52827129,-121.827821731,47.18399599096,-122.28950500488,Snoqualmie,Puyallup,TRANSIT|WALK,transit
-140,Snoqualmie to Puyallup (flex),10:00,47.52827129,-121.827821731,47.18399599096,-122.28950500488,Snoqualmie,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-141,Snoqualmie to Queen Anne (transit),10:00,47.52827129,-121.827821731,47.6394849792,-122.3636627197,Snoqualmie,Queen Anne,TRANSIT|WALK,transit
-142,Snoqualmie to Queen Anne (flex),10:00,47.52827129,-121.827821731,47.6394849792,-122.3636627197,Snoqualmie,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-143,Snoqualmie to Beacon Hill (transit),10:00,47.52827129,-121.827821731,47.578668036563016,-122.31139183,Snoqualmie,Beacon Hill,TRANSIT|WALK,transit
-144,Snoqualmie to Beacon Hill (flex),10:00,47.52827129,-121.827821731,47.578668036563016,-122.31139183,Snoqualmie,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-145,Queen Anne to Hilshire Terrace (transit),10:00,47.6394849792,-122.3636627197,47.40648236,-122.18101501,Queen Anne,Hilshire Terrace,TRANSIT|WALK,transit
-147,Queen Anne to Normandy Park (transit),10:00,47.6394849792,-122.3636627197,47.44306609375831,-122.34237670,Queen Anne,Normandy Park,TRANSIT|WALK,transit
-148,Queen Anne to Normandy Park (flex),10:00,47.6394849792,-122.3636627197,47.44306609375831,-122.34237670,Queen Anne,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-149,Queen Anne to Des Moines (transit),10:00,47.6394849792,-122.3636627197,47.3978844,-122.30898,Queen Anne,Des Moines,TRANSIT|WALK,transit
-150,Queen Anne to Des Moines (flex),10:00,47.6394849792,-122.3636627197,47.3978844,-122.30898,Queen Anne,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-151,Queen Anne to North Auburn (transit),10:00,47.6394849792,-122.3636627197,47.340218616,-122.2246170043,Queen Anne,North Auburn,TRANSIT|WALK,transit
-153,Queen Anne to Federal Way (transit),10:00,47.6394849792,-122.3636627197,47.31322426310727,-122.336540222167,Queen Anne,Federal Way,TRANSIT|WALK,transit
-155,Queen Anne to West Seattle (transit),10:00,47.6394849792,-122.3636627197,47.571024,-122.3877811,Queen Anne,West Seattle,TRANSIT|WALK,transit
-156,Queen Anne to West Seattle (flex),10:00,47.6394849792,-122.3636627197,47.571024,-122.3877811,Queen Anne,West Seattle,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-157,Queen Anne to Puyallup (transit),10:00,47.6394849792,-122.3636627197,47.18399599096,-122.28950500488,Queen Anne,Puyallup,TRANSIT|WALK,transit
-159,Queen Anne to Snoqualmie (transit),10:00,47.6394849792,-122.3636627197,47.52827129,-121.827821731,Queen Anne,Snoqualmie,TRANSIT|WALK,transit
-160,Queen Anne to Snoqualmie (flex),10:00,47.6394849792,-122.3636627197,47.52827129,-121.827821731,Queen Anne,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-161,Queen Anne to Beacon Hill (transit),10:00,47.6394849792,-122.3636627197,47.578668036563016,-122.31139183,Queen Anne,Beacon Hill,TRANSIT|WALK,transit
-162,Queen Anne to Beacon Hill (flex),10:00,47.6394849792,-122.3636627197,47.578668036563016,-122.31139183,Queen Anne,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-163,Beacon Hill to Hilshire Terrace (transit),10:00,47.578668036563016,-122.31139183,47.40648236,-122.18101501,Beacon Hill,Hilshire Terrace,TRANSIT|WALK,transit
-165,Beacon Hill to Normandy Park (transit),10:00,47.578668036563016,-122.31139183,47.44306609375831,-122.34237670,Beacon Hill,Normandy Park,TRANSIT|WALK,transit
-166,Beacon Hill to Normandy Park (flex),10:00,47.578668036563016,-122.31139183,47.44306609375831,-122.34237670,Beacon Hill,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-167,Beacon Hill to Des Moines (transit),10:00,47.578668036563016,-122.31139183,47.3978844,-122.30898,Beacon Hill,Des Moines,TRANSIT|WALK,transit
-168,Beacon Hill to Des Moines (flex),10:00,47.578668036563016,-122.31139183,47.3978844,-122.30898,Beacon Hill,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-169,Beacon Hill to North Auburn (transit),10:00,47.578668036563016,-122.31139183,47.340218616,-122.2246170043,Beacon Hill,North Auburn,TRANSIT|WALK,transit
-170,Beacon Hill to North Auburn (flex),10:00,47.578668036563016,-122.31139183,47.340218616,-122.2246170043,Beacon Hill,North Auburn,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-171,Beacon Hill to Federal Way (transit),10:00,47.578668036563016,-122.31139183,47.31322426310727,-122.336540222167,Beacon Hill,Federal Way,TRANSIT|WALK,transit
-173,Beacon Hill to West Seattle (transit),10:00,47.578668036563016,-122.31139183,47.571024,-122.3877811,Beacon Hill,West Seattle,TRANSIT|WALK,transit
-174,Beacon Hill to West Seattle (flex),10:00,47.578668036563016,-122.31139183,47.571024,-122.3877811,Beacon Hill,West Seattle,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-175,Beacon Hill to Puyallup (transit),10:00,47.578668036563016,-122.31139183,47.18399599096,-122.28950500488,Beacon Hill,Puyallup,TRANSIT|WALK,transit
-176,Beacon Hill to Puyallup (flex),10:00,47.578668036563016,-122.31139183,47.18399599096,-122.28950500488,Beacon Hill,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-177,Beacon Hill to Snoqualmie (transit),10:00,47.578668036563016,-122.31139183,47.52827129,-121.827821731,Beacon Hill,Snoqualmie,TRANSIT|WALK,transit
-178,Beacon Hill to Snoqualmie (flex),10:00,47.578668036563016,-122.31139183,47.52827129,-121.827821731,Beacon Hill,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
-179,Beacon Hill to Queen Anne (transit),10:00,47.578668036563016,-122.31139183,47.6394849792,-122.3636627197,Beacon Hill,Queen Anne,TRANSIT|WALK,transit
-180,Beacon Hill to Queen Anne (flex),10:00,47.578668036563016,-122.31139183,47.6394849792,-122.3636627197,Beacon Hill,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex
+1,Hilshire Terrace to Normandy Park (flex-direct),10:00,47.40648236,-122.18101501,47.44306609375831,-122.34237670,Hilshire Terrace,Normandy Park,FLEX_DIRECT|WALK,flex-direct
+2,Hilshire Terrace to Normandy Park (flex-and-transit),10:00,47.40648236,-122.18101501,47.44306609375831,-122.34237670,Hilshire Terrace,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+3,Hilshire Terrace to Des Moines (flex-direct),10:00,47.40648236,-122.18101501,47.3978844,-122.30898,Hilshire Terrace,Des Moines,FLEX_DIRECT|WALK,flex-direct
+4,Hilshire Terrace to Des Moines (flex-and-transit),10:00,47.40648236,-122.18101501,47.3978844,-122.30898,Hilshire Terrace,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+5,Hilshire Terrace to West Seattle (flex-direct),10:00,47.40648236,-122.18101501,47.571024,-122.3877811,Hilshire Terrace,West Seattle,FLEX_DIRECT|WALK,flex-direct
+6,Hilshire Terrace to West Seattle (flex-and-transit),10:00,47.40648236,-122.18101501,47.571024,-122.3877811,Hilshire Terrace,West Seattle,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+7,Hilshire Terrace to Puyallup (flex-direct),10:00,47.40648236,-122.18101501,47.18399599096,-122.28950500488,Hilshire Terrace,Puyallup,FLEX_DIRECT|WALK,flex-direct
+8,Hilshire Terrace to Puyallup (flex-and-transit),10:00,47.40648236,-122.18101501,47.18399599096,-122.28950500488,Hilshire Terrace,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+9,Hilshire Terrace to Snoqualmie (flex-direct),10:00,47.40648236,-122.18101501,47.52827129,-121.827821731,Hilshire Terrace,Snoqualmie,FLEX_DIRECT|WALK,flex-direct
+10,Hilshire Terrace to Snoqualmie (flex-and-transit),10:00,47.40648236,-122.18101501,47.52827129,-121.827821731,Hilshire Terrace,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+11,Hilshire Terrace to Queen Anne (flex-direct),10:00,47.40648236,-122.18101501,47.6394849792,-122.3636627197,Hilshire Terrace,Queen Anne,FLEX_DIRECT|WALK,flex-direct
+12,Hilshire Terrace to Queen Anne (flex-and-transit),10:00,47.40648236,-122.18101501,47.6394849792,-122.3636627197,Hilshire Terrace,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+13,Hilshire Terrace to Beacon Hill (flex-direct),10:00,47.40648236,-122.18101501,47.578668036563016,-122.31139183,Hilshire Terrace,Beacon Hill,FLEX_DIRECT|WALK,flex-direct
+14,Hilshire Terrace to Beacon Hill (flex-and-transit),10:00,47.40648236,-122.18101501,47.578668036563016,-122.31139183,Hilshire Terrace,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+15,Normandy Park to Hilshire Terrace (flex-direct),10:00,47.44306609375831,-122.34237670,47.40648236,-122.18101501,Normandy Park,Hilshire Terrace,FLEX_DIRECT|WALK,flex-direct
+16,Normandy Park to Hilshire Terrace (flex-and-transit),10:00,47.44306609375831,-122.34237670,47.40648236,-122.18101501,Normandy Park,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+17,Normandy Park to Des Moines (flex-direct),10:00,47.44306609375831,-122.34237670,47.3978844,-122.30898,Normandy Park,Des Moines,FLEX_DIRECT|WALK,flex-direct
+18,Normandy Park to Des Moines (flex-and-transit),10:00,47.44306609375831,-122.34237670,47.3978844,-122.30898,Normandy Park,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+19,Normandy Park to West Seattle (flex-direct),10:00,47.44306609375831,-122.34237670,47.571024,-122.3877811,Normandy Park,West Seattle,FLEX_DIRECT|WALK,flex-direct
+20,Normandy Park to West Seattle (flex-and-transit),10:00,47.44306609375831,-122.34237670,47.571024,-122.3877811,Normandy Park,West Seattle,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+21,Normandy Park to Puyallup (flex-direct),10:00,47.44306609375831,-122.34237670,47.18399599096,-122.28950500488,Normandy Park,Puyallup,FLEX_DIRECT|WALK,flex-direct
+22,Normandy Park to Puyallup (flex-and-transit),10:00,47.44306609375831,-122.34237670,47.18399599096,-122.28950500488,Normandy Park,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+23,Normandy Park to Snoqualmie (flex-direct),10:00,47.44306609375831,-122.34237670,47.52827129,-121.827821731,Normandy Park,Snoqualmie,FLEX_DIRECT|WALK,flex-direct
+24,Normandy Park to Snoqualmie (flex-and-transit),10:00,47.44306609375831,-122.34237670,47.52827129,-121.827821731,Normandy Park,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+25,Normandy Park to Queen Anne (flex-direct),10:00,47.44306609375831,-122.34237670,47.6394849792,-122.3636627197,Normandy Park,Queen Anne,FLEX_DIRECT|WALK,flex-direct
+26,Normandy Park to Queen Anne (flex-and-transit),10:00,47.44306609375831,-122.34237670,47.6394849792,-122.3636627197,Normandy Park,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+27,Normandy Park to Beacon Hill (flex-direct),10:00,47.44306609375831,-122.34237670,47.578668036563016,-122.31139183,Normandy Park,Beacon Hill,FLEX_DIRECT|WALK,flex-direct
+28,Normandy Park to Beacon Hill (flex-and-transit),10:00,47.44306609375831,-122.34237670,47.578668036563016,-122.31139183,Normandy Park,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+29,Des Moines to Hilshire Terrace (flex-direct),10:00,47.3978844,-122.30898,47.40648236,-122.18101501,Des Moines,Hilshire Terrace,FLEX_DIRECT|WALK,flex-direct
+30,Des Moines to Hilshire Terrace (flex-and-transit),10:00,47.3978844,-122.30898,47.40648236,-122.18101501,Des Moines,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+31,Des Moines to Normandy Park (flex-direct),10:00,47.3978844,-122.30898,47.44306609375831,-122.34237670,Des Moines,Normandy Park,FLEX_DIRECT|WALK,flex-direct
+32,Des Moines to Normandy Park (flex-and-transit),10:00,47.3978844,-122.30898,47.44306609375831,-122.34237670,Des Moines,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+33,Des Moines to West Seattle (flex-direct),10:00,47.3978844,-122.30898,47.571024,-122.3877811,Des Moines,West Seattle,FLEX_DIRECT|WALK,flex-direct
+34,Des Moines to West Seattle (flex-and-transit),10:00,47.3978844,-122.30898,47.571024,-122.3877811,Des Moines,West Seattle,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+35,Des Moines to Puyallup (flex-direct),10:00,47.3978844,-122.30898,47.18399599096,-122.28950500488,Des Moines,Puyallup,FLEX_DIRECT|WALK,flex-direct
+36,Des Moines to Puyallup (flex-and-transit),10:00,47.3978844,-122.30898,47.18399599096,-122.28950500488,Des Moines,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+37,Des Moines to Snoqualmie (flex-direct),10:00,47.3978844,-122.30898,47.52827129,-121.827821731,Des Moines,Snoqualmie,FLEX_DIRECT|WALK,flex-direct
+38,Des Moines to Snoqualmie (flex-and-transit),10:00,47.3978844,-122.30898,47.52827129,-121.827821731,Des Moines,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+39,Des Moines to Queen Anne (flex-direct),10:00,47.3978844,-122.30898,47.6394849792,-122.3636627197,Des Moines,Queen Anne,FLEX_DIRECT|WALK,flex-direct
+40,Des Moines to Queen Anne (flex-and-transit),10:00,47.3978844,-122.30898,47.6394849792,-122.3636627197,Des Moines,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+41,Des Moines to Beacon Hill (flex-direct),10:00,47.3978844,-122.30898,47.578668036563016,-122.31139183,Des Moines,Beacon Hill,FLEX_DIRECT|WALK,flex-direct
+42,Des Moines to Beacon Hill (flex-and-transit),10:00,47.3978844,-122.30898,47.578668036563016,-122.31139183,Des Moines,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+43,West Seattle to Hilshire Terrace (flex-direct),10:00,47.571024,-122.3877811,47.40648236,-122.18101501,West Seattle,Hilshire Terrace,FLEX_DIRECT|WALK,flex-direct
+44,West Seattle to Hilshire Terrace (flex-and-transit),10:00,47.571024,-122.3877811,47.40648236,-122.18101501,West Seattle,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+45,West Seattle to Normandy Park (flex-direct),10:00,47.571024,-122.3877811,47.44306609375831,-122.34237670,West Seattle,Normandy Park,FLEX_DIRECT|WALK,flex-direct
+46,West Seattle to Normandy Park (flex-and-transit),10:00,47.571024,-122.3877811,47.44306609375831,-122.34237670,West Seattle,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+47,West Seattle to Des Moines (flex-direct),10:00,47.571024,-122.3877811,47.3978844,-122.30898,West Seattle,Des Moines,FLEX_DIRECT|WALK,flex-direct
+48,West Seattle to Des Moines (flex-and-transit),10:00,47.571024,-122.3877811,47.3978844,-122.30898,West Seattle,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+49,West Seattle to Puyallup (flex-direct),10:00,47.571024,-122.3877811,47.18399599096,-122.28950500488,West Seattle,Puyallup,FLEX_DIRECT|WALK,flex-direct
+50,West Seattle to Puyallup (flex-and-transit),10:00,47.571024,-122.3877811,47.18399599096,-122.28950500488,West Seattle,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+51,West Seattle to Snoqualmie (flex-direct),10:00,47.571024,-122.3877811,47.52827129,-121.827821731,West Seattle,Snoqualmie,FLEX_DIRECT|WALK,flex-direct
+52,West Seattle to Snoqualmie (flex-and-transit),10:00,47.571024,-122.3877811,47.52827129,-121.827821731,West Seattle,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+53,West Seattle to Queen Anne (flex-direct),10:00,47.571024,-122.3877811,47.6394849792,-122.3636627197,West Seattle,Queen Anne,FLEX_DIRECT|WALK,flex-direct
+54,West Seattle to Queen Anne (flex-and-transit),10:00,47.571024,-122.3877811,47.6394849792,-122.3636627197,West Seattle,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+55,West Seattle to Beacon Hill (flex-direct),10:00,47.571024,-122.3877811,47.578668036563016,-122.31139183,West Seattle,Beacon Hill,FLEX_DIRECT|WALK,flex-direct
+56,West Seattle to Beacon Hill (flex-and-transit),10:00,47.571024,-122.3877811,47.578668036563016,-122.31139183,West Seattle,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+57,Puyallup to Hilshire Terrace (flex-direct),10:00,47.18399599096,-122.28950500488,47.40648236,-122.18101501,Puyallup,Hilshire Terrace,FLEX_DIRECT|WALK,flex-direct
+58,Puyallup to Hilshire Terrace (flex-and-transit),10:00,47.18399599096,-122.28950500488,47.40648236,-122.18101501,Puyallup,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+59,Puyallup to Normandy Park (flex-direct),10:00,47.18399599096,-122.28950500488,47.44306609375831,-122.34237670,Puyallup,Normandy Park,FLEX_DIRECT|WALK,flex-direct
+60,Puyallup to Normandy Park (flex-and-transit),10:00,47.18399599096,-122.28950500488,47.44306609375831,-122.34237670,Puyallup,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+61,Puyallup to Des Moines (flex-direct),10:00,47.18399599096,-122.28950500488,47.3978844,-122.30898,Puyallup,Des Moines,FLEX_DIRECT|WALK,flex-direct
+62,Puyallup to Des Moines (flex-and-transit),10:00,47.18399599096,-122.28950500488,47.3978844,-122.30898,Puyallup,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+63,Puyallup to West Seattle (flex-direct),10:00,47.18399599096,-122.28950500488,47.571024,-122.3877811,Puyallup,West Seattle,FLEX_DIRECT|WALK,flex-direct
+64,Puyallup to West Seattle (flex-and-transit),10:00,47.18399599096,-122.28950500488,47.571024,-122.3877811,Puyallup,West Seattle,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+65,Puyallup to Snoqualmie (flex-direct),10:00,47.18399599096,-122.28950500488,47.52827129,-121.827821731,Puyallup,Snoqualmie,FLEX_DIRECT|WALK,flex-direct
+66,Puyallup to Snoqualmie (flex-and-transit),10:00,47.18399599096,-122.28950500488,47.52827129,-121.827821731,Puyallup,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+67,Puyallup to Queen Anne (flex-direct),10:00,47.18399599096,-122.28950500488,47.6394849792,-122.3636627197,Puyallup,Queen Anne,FLEX_DIRECT|WALK,flex-direct
+68,Puyallup to Queen Anne (flex-and-transit),10:00,47.18399599096,-122.28950500488,47.6394849792,-122.3636627197,Puyallup,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+69,Puyallup to Beacon Hill (flex-direct),10:00,47.18399599096,-122.28950500488,47.578668036563016,-122.31139183,Puyallup,Beacon Hill,FLEX_DIRECT|WALK,flex-direct
+70,Puyallup to Beacon Hill (flex-and-transit),10:00,47.18399599096,-122.28950500488,47.578668036563016,-122.31139183,Puyallup,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+71,Snoqualmie to Hilshire Terrace (flex-direct),10:00,47.52827129,-121.827821731,47.40648236,-122.18101501,Snoqualmie,Hilshire Terrace,FLEX_DIRECT|WALK,flex-direct
+72,Snoqualmie to Hilshire Terrace (flex-and-transit),10:00,47.52827129,-121.827821731,47.40648236,-122.18101501,Snoqualmie,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+73,Snoqualmie to Normandy Park (flex-direct),10:00,47.52827129,-121.827821731,47.44306609375831,-122.34237670,Snoqualmie,Normandy Park,FLEX_DIRECT|WALK,flex-direct
+74,Snoqualmie to Normandy Park (flex-and-transit),10:00,47.52827129,-121.827821731,47.44306609375831,-122.34237670,Snoqualmie,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+75,Snoqualmie to Des Moines (flex-direct),10:00,47.52827129,-121.827821731,47.3978844,-122.30898,Snoqualmie,Des Moines,FLEX_DIRECT|WALK,flex-direct
+76,Snoqualmie to Des Moines (flex-and-transit),10:00,47.52827129,-121.827821731,47.3978844,-122.30898,Snoqualmie,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+77,Snoqualmie to West Seattle (flex-direct),10:00,47.52827129,-121.827821731,47.571024,-122.3877811,Snoqualmie,West Seattle,FLEX_DIRECT|WALK,flex-direct
+78,Snoqualmie to West Seattle (flex-and-transit),10:00,47.52827129,-121.827821731,47.571024,-122.3877811,Snoqualmie,West Seattle,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+79,Snoqualmie to Puyallup (flex-direct),10:00,47.52827129,-121.827821731,47.18399599096,-122.28950500488,Snoqualmie,Puyallup,FLEX_DIRECT|WALK,flex-direct
+80,Snoqualmie to Puyallup (flex-and-transit),10:00,47.52827129,-121.827821731,47.18399599096,-122.28950500488,Snoqualmie,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+81,Snoqualmie to Queen Anne (flex-direct),10:00,47.52827129,-121.827821731,47.6394849792,-122.3636627197,Snoqualmie,Queen Anne,FLEX_DIRECT|WALK,flex-direct
+82,Snoqualmie to Queen Anne (flex-and-transit),10:00,47.52827129,-121.827821731,47.6394849792,-122.3636627197,Snoqualmie,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+83,Snoqualmie to Beacon Hill (flex-direct),10:00,47.52827129,-121.827821731,47.578668036563016,-122.31139183,Snoqualmie,Beacon Hill,FLEX_DIRECT|WALK,flex-direct
+84,Snoqualmie to Beacon Hill (flex-and-transit),10:00,47.52827129,-121.827821731,47.578668036563016,-122.31139183,Snoqualmie,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+85,Queen Anne to Hilshire Terrace (flex-direct),10:00,47.6394849792,-122.3636627197,47.40648236,-122.18101501,Queen Anne,Hilshire Terrace,FLEX_DIRECT|WALK,flex-direct
+86,Queen Anne to Hilshire Terrace (flex-and-transit),10:00,47.6394849792,-122.3636627197,47.40648236,-122.18101501,Queen Anne,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+87,Queen Anne to Normandy Park (flex-direct),10:00,47.6394849792,-122.3636627197,47.44306609375831,-122.34237670,Queen Anne,Normandy Park,FLEX_DIRECT|WALK,flex-direct
+88,Queen Anne to Normandy Park (flex-and-transit),10:00,47.6394849792,-122.3636627197,47.44306609375831,-122.34237670,Queen Anne,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+89,Queen Anne to Des Moines (flex-direct),10:00,47.6394849792,-122.3636627197,47.3978844,-122.30898,Queen Anne,Des Moines,FLEX_DIRECT|WALK,flex-direct
+90,Queen Anne to Des Moines (flex-and-transit),10:00,47.6394849792,-122.3636627197,47.3978844,-122.30898,Queen Anne,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+91,Queen Anne to West Seattle (flex-direct),10:00,47.6394849792,-122.3636627197,47.571024,-122.3877811,Queen Anne,West Seattle,FLEX_DIRECT|WALK,flex-direct
+92,Queen Anne to West Seattle (flex-and-transit),10:00,47.6394849792,-122.3636627197,47.571024,-122.3877811,Queen Anne,West Seattle,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+93,Queen Anne to Puyallup (flex-direct),10:00,47.6394849792,-122.3636627197,47.18399599096,-122.28950500488,Queen Anne,Puyallup,FLEX_DIRECT|WALK,flex-direct
+94,Queen Anne to Puyallup (flex-and-transit),10:00,47.6394849792,-122.3636627197,47.18399599096,-122.28950500488,Queen Anne,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+95,Queen Anne to Snoqualmie (flex-direct),10:00,47.6394849792,-122.3636627197,47.52827129,-121.827821731,Queen Anne,Snoqualmie,FLEX_DIRECT|WALK,flex-direct
+96,Queen Anne to Snoqualmie (flex-and-transit),10:00,47.6394849792,-122.3636627197,47.52827129,-121.827821731,Queen Anne,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+97,Queen Anne to Beacon Hill (flex-direct),10:00,47.6394849792,-122.3636627197,47.578668036563016,-122.31139183,Queen Anne,Beacon Hill,FLEX_DIRECT|WALK,flex-direct
+98,Queen Anne to Beacon Hill (flex-and-transit),10:00,47.6394849792,-122.3636627197,47.578668036563016,-122.31139183,Queen Anne,Beacon Hill,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+99,Beacon Hill to Hilshire Terrace (flex-direct),10:00,47.578668036563016,-122.31139183,47.40648236,-122.18101501,Beacon Hill,Hilshire Terrace,FLEX_DIRECT|WALK,flex-direct
+100,Beacon Hill to Hilshire Terrace (flex-and-transit),10:00,47.578668036563016,-122.31139183,47.40648236,-122.18101501,Beacon Hill,Hilshire Terrace,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+101,Beacon Hill to Normandy Park (flex-direct),10:00,47.578668036563016,-122.31139183,47.44306609375831,-122.34237670,Beacon Hill,Normandy Park,FLEX_DIRECT|WALK,flex-direct
+102,Beacon Hill to Normandy Park (flex-and-transit),10:00,47.578668036563016,-122.31139183,47.44306609375831,-122.34237670,Beacon Hill,Normandy Park,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+103,Beacon Hill to Des Moines (flex-direct),10:00,47.578668036563016,-122.31139183,47.3978844,-122.30898,Beacon Hill,Des Moines,FLEX_DIRECT|WALK,flex-direct
+104,Beacon Hill to Des Moines (flex-and-transit),10:00,47.578668036563016,-122.31139183,47.3978844,-122.30898,Beacon Hill,Des Moines,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+105,Beacon Hill to West Seattle (flex-direct),10:00,47.578668036563016,-122.31139183,47.571024,-122.3877811,Beacon Hill,West Seattle,FLEX_DIRECT|WALK,flex-direct
+106,Beacon Hill to West Seattle (flex-and-transit),10:00,47.578668036563016,-122.31139183,47.571024,-122.3877811,Beacon Hill,West Seattle,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+107,Beacon Hill to Puyallup (flex-direct),10:00,47.578668036563016,-122.31139183,47.18399599096,-122.28950500488,Beacon Hill,Puyallup,FLEX_DIRECT|WALK,flex-direct
+108,Beacon Hill to Puyallup (flex-and-transit),10:00,47.578668036563016,-122.31139183,47.18399599096,-122.28950500488,Beacon Hill,Puyallup,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+109,Beacon Hill to Snoqualmie (flex-direct),10:00,47.578668036563016,-122.31139183,47.52827129,-121.827821731,Beacon Hill,Snoqualmie,FLEX_DIRECT|WALK,flex-direct
+110,Beacon Hill to Snoqualmie (flex-and-transit),10:00,47.578668036563016,-122.31139183,47.52827129,-121.827821731,Beacon Hill,Snoqualmie,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit
+111,Beacon Hill to Queen Anne (flex-direct),10:00,47.578668036563016,-122.31139183,47.6394849792,-122.3636627197,Beacon Hill,Queen Anne,FLEX_DIRECT|WALK,flex-direct
+112,Beacon Hill to Queen Anne (flex-and-transit),10:00,47.578668036563016,-122.31139183,47.6394849792,-122.3636627197,Beacon Hill,Queen Anne,FLEX_ACCESS|FLEX_EGRESS|TRANSIT,flex-and-transit