diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3a37e76 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +FROM ubuntu:18.04 as protoc + +WORKDIR /usr/src/protoc + +RUN apt-get update \ + && apt-get install -y \ + wget unzip \ + && rm -rf /var/lib/apt/lists/* + +RUN wget -O /usr/src/protoc/protoc.zip "https://github.com/protocolbuffers/protobuf/releases/download/v3.12.3/protoc-3.12.3-linux-x86_64.zip" \ + && unzip protoc.zip + +FROM ubuntu:18.04 + +RUN apt-get update \ + && apt-get install -y \ + python3 python3-pip golang git \ + && pip3 install nose protobuf + +RUN apt-get install -y --no-install-recommends \ + software-properties-common nodejs npm \ + && rm -rf /var/lib/apt/lists/* + +RUN go get -u github.com/golang/protobuf/protoc-gen-go + +WORKDIR /usr/src/app + +COPY ./nodejs/package.json /usr/src/app/nodejs/package.json +RUN npm --prefix /usr/src/app/nodejs/ install + +COPY --from=protoc /usr/src/protoc/bin/protoc /usr/local/bin/protoc +COPY . /usr/src/app + +CMD [ "/bin/sh", "./build.sh"] diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..8ceb527 --- /dev/null +++ b/build.sh @@ -0,0 +1,33 @@ +cd /usr/src/ +git clone https://github.com/google/transit.git +cd /usr/src/app/ + +mkdir build +rm -rfv build/* +mkdir build/python +mkdir build/java +mkdir build/javascript +mkdir build/go + +export PATH=$PATH:/root/go/bin + +protoc gtfs-realtime.proto --proto_path /usr/src/transit/gtfs-realtime/proto --python_out=build/python --java_out=build/java --go_out=build/go/ + +cp -R /usr/src/app/nodejs /usr/src/nodejs +cp /usr/src/transit/gtfs-realtime/proto/gtfs-realtime.proto /usr/src/gtfs-realtime.proto +cd /usr/src/nodejs/ +npm run buildProto +cp /usr/src/nodejs/gtfs-realtime.js /usr/src/app/build/javascript/gtfs-realtime.js + +cp -R /usr/src/app/python /usr/src/python +cp /usr/src/app/build/python/gtfs_realtime_pb2.py /usr/src/python/gtfs_realtime_pb2.py +nosetests /usr/src/python + +cp -R /usr/src/app/python /usr/src/python +cp /usr/src/app/build/python/gtfs_realtime_pb2.py /usr/src/python/gtfs_realtime_pb2.py +nosetests /usr/src/python + +cp -R /usr/src/app/golang /usr/src/golang +cp /usr/src/app/build/go/gtfs-realtime.pb.go /usr/src/golang/gtfs/gtfs-realtime.pb.go +cd /usr/src/golang/gtfs +go test \ No newline at end of file diff --git a/build/go/gtfs-realtime.pb.go b/build/go/gtfs-realtime.pb.go new file mode 100644 index 0000000..b7a7e82 --- /dev/null +++ b/build/go/gtfs-realtime.pb.go @@ -0,0 +1,3102 @@ +// Copyright 2015 The GTFS Specifications Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Protocol definition file for GTFS Realtime. +// +// GTFS Realtime lets transit agencies provide consumers with realtime +// information about disruptions to their service (stations closed, lines not +// operating, important delays etc), location of their vehicles and expected +// arrival times. +// +// This protocol is published at: +// https://github.com/google/transit/tree/master/gtfs-realtime + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0-devel +// protoc v3.12.3 +// source: gtfs-realtime.proto + +package transit_realtime + +import ( + proto "github.com/golang/protobuf/proto" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoiface "google.golang.org/protobuf/runtime/protoiface" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +// Determines whether the current fetch is incremental. Currently, +// DIFFERENTIAL mode is unsupported and behavior is unspecified for feeds +// that use this mode. There are discussions on the GTFS Realtime mailing +// list around fully specifying the behavior of DIFFERENTIAL mode and the +// documentation will be updated when those discussions are finalized. +type FeedHeader_Incrementality int32 + +const ( + FeedHeader_FULL_DATASET FeedHeader_Incrementality = 0 + FeedHeader_DIFFERENTIAL FeedHeader_Incrementality = 1 +) + +// Enum value maps for FeedHeader_Incrementality. +var ( + FeedHeader_Incrementality_name = map[int32]string{ + 0: "FULL_DATASET", + 1: "DIFFERENTIAL", + } + FeedHeader_Incrementality_value = map[string]int32{ + "FULL_DATASET": 0, + "DIFFERENTIAL": 1, + } +) + +func (x FeedHeader_Incrementality) Enum() *FeedHeader_Incrementality { + p := new(FeedHeader_Incrementality) + *p = x + return p +} + +func (x FeedHeader_Incrementality) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FeedHeader_Incrementality) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_realtime_proto_enumTypes[0].Descriptor() +} + +func (FeedHeader_Incrementality) Type() protoreflect.EnumType { + return &file_gtfs_realtime_proto_enumTypes[0] +} + +func (x FeedHeader_Incrementality) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *FeedHeader_Incrementality) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = FeedHeader_Incrementality(num) + return nil +} + +// Deprecated: Use FeedHeader_Incrementality.Descriptor instead. +func (FeedHeader_Incrementality) EnumDescriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{1, 0} +} + +// The relation between this StopTime and the static schedule. +type TripUpdate_StopTimeUpdate_ScheduleRelationship int32 + +const ( + // The vehicle is proceeding in accordance with its static schedule of + // stops, although not necessarily according to the times of the schedule. + // At least one of arrival and departure must be provided. If the schedule + // for this stop contains both arrival and departure times then so must + // this update. Frequency-based trips (GTFS frequencies.txt with exact_times = 0) + // should not have a SCHEDULED value and should use UNSCHEDULED instead. + TripUpdate_StopTimeUpdate_SCHEDULED TripUpdate_StopTimeUpdate_ScheduleRelationship = 0 + // The stop is skipped, i.e., the vehicle will not stop at this stop. + // Arrival and departure are optional. + TripUpdate_StopTimeUpdate_SKIPPED TripUpdate_StopTimeUpdate_ScheduleRelationship = 1 + // No data is given for this stop. The main intention for this value is to + // give the predictions only for part of a trip, i.e., if the last update + // for a trip has a NO_DATA specifier, then StopTimes for the rest of the + // stops in the trip are considered to be unspecified as well. + // Neither arrival nor departure should be supplied. + TripUpdate_StopTimeUpdate_NO_DATA TripUpdate_StopTimeUpdate_ScheduleRelationship = 2 + // The vehicle is operating a trip defined in GTFS frequencies.txt with exact_times = 0. + // This value should not be used for trips that are not defined in GTFS frequencies.txt, + // or trips in GTFS frequencies.txt with exact_times = 1. Trips containing StopTimeUpdates + // with ScheduleRelationship=UNSCHEDULED must also set TripDescriptor.ScheduleRelationship=UNSCHEDULED. + // NOTE: This field is still experimental, and subject to change. It may be + // formally adopted in the future. + TripUpdate_StopTimeUpdate_UNSCHEDULED TripUpdate_StopTimeUpdate_ScheduleRelationship = 3 +) + +// Enum value maps for TripUpdate_StopTimeUpdate_ScheduleRelationship. +var ( + TripUpdate_StopTimeUpdate_ScheduleRelationship_name = map[int32]string{ + 0: "SCHEDULED", + 1: "SKIPPED", + 2: "NO_DATA", + 3: "UNSCHEDULED", + } + TripUpdate_StopTimeUpdate_ScheduleRelationship_value = map[string]int32{ + "SCHEDULED": 0, + "SKIPPED": 1, + "NO_DATA": 2, + "UNSCHEDULED": 3, + } +) + +func (x TripUpdate_StopTimeUpdate_ScheduleRelationship) Enum() *TripUpdate_StopTimeUpdate_ScheduleRelationship { + p := new(TripUpdate_StopTimeUpdate_ScheduleRelationship) + *p = x + return p +} + +func (x TripUpdate_StopTimeUpdate_ScheduleRelationship) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TripUpdate_StopTimeUpdate_ScheduleRelationship) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_realtime_proto_enumTypes[1].Descriptor() +} + +func (TripUpdate_StopTimeUpdate_ScheduleRelationship) Type() protoreflect.EnumType { + return &file_gtfs_realtime_proto_enumTypes[1] +} + +func (x TripUpdate_StopTimeUpdate_ScheduleRelationship) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *TripUpdate_StopTimeUpdate_ScheduleRelationship) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = TripUpdate_StopTimeUpdate_ScheduleRelationship(num) + return nil +} + +// Deprecated: Use TripUpdate_StopTimeUpdate_ScheduleRelationship.Descriptor instead. +func (TripUpdate_StopTimeUpdate_ScheduleRelationship) EnumDescriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{3, 1, 0} +} + +type VehiclePosition_VehicleStopStatus int32 + +const ( + // The vehicle is just about to arrive at the stop (on a stop + // display, the vehicle symbol typically flashes). + VehiclePosition_INCOMING_AT VehiclePosition_VehicleStopStatus = 0 + // The vehicle is standing at the stop. + VehiclePosition_STOPPED_AT VehiclePosition_VehicleStopStatus = 1 + // The vehicle has departed and is in transit to the next stop. + VehiclePosition_IN_TRANSIT_TO VehiclePosition_VehicleStopStatus = 2 +) + +// Enum value maps for VehiclePosition_VehicleStopStatus. +var ( + VehiclePosition_VehicleStopStatus_name = map[int32]string{ + 0: "INCOMING_AT", + 1: "STOPPED_AT", + 2: "IN_TRANSIT_TO", + } + VehiclePosition_VehicleStopStatus_value = map[string]int32{ + "INCOMING_AT": 0, + "STOPPED_AT": 1, + "IN_TRANSIT_TO": 2, + } +) + +func (x VehiclePosition_VehicleStopStatus) Enum() *VehiclePosition_VehicleStopStatus { + p := new(VehiclePosition_VehicleStopStatus) + *p = x + return p +} + +func (x VehiclePosition_VehicleStopStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VehiclePosition_VehicleStopStatus) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_realtime_proto_enumTypes[2].Descriptor() +} + +func (VehiclePosition_VehicleStopStatus) Type() protoreflect.EnumType { + return &file_gtfs_realtime_proto_enumTypes[2] +} + +func (x VehiclePosition_VehicleStopStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *VehiclePosition_VehicleStopStatus) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = VehiclePosition_VehicleStopStatus(num) + return nil +} + +// Deprecated: Use VehiclePosition_VehicleStopStatus.Descriptor instead. +func (VehiclePosition_VehicleStopStatus) EnumDescriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{4, 0} +} + +// Congestion level that is affecting this vehicle. +type VehiclePosition_CongestionLevel int32 + +const ( + VehiclePosition_UNKNOWN_CONGESTION_LEVEL VehiclePosition_CongestionLevel = 0 + VehiclePosition_RUNNING_SMOOTHLY VehiclePosition_CongestionLevel = 1 + VehiclePosition_STOP_AND_GO VehiclePosition_CongestionLevel = 2 + VehiclePosition_CONGESTION VehiclePosition_CongestionLevel = 3 + VehiclePosition_SEVERE_CONGESTION VehiclePosition_CongestionLevel = 4 // People leaving their cars. +) + +// Enum value maps for VehiclePosition_CongestionLevel. +var ( + VehiclePosition_CongestionLevel_name = map[int32]string{ + 0: "UNKNOWN_CONGESTION_LEVEL", + 1: "RUNNING_SMOOTHLY", + 2: "STOP_AND_GO", + 3: "CONGESTION", + 4: "SEVERE_CONGESTION", + } + VehiclePosition_CongestionLevel_value = map[string]int32{ + "UNKNOWN_CONGESTION_LEVEL": 0, + "RUNNING_SMOOTHLY": 1, + "STOP_AND_GO": 2, + "CONGESTION": 3, + "SEVERE_CONGESTION": 4, + } +) + +func (x VehiclePosition_CongestionLevel) Enum() *VehiclePosition_CongestionLevel { + p := new(VehiclePosition_CongestionLevel) + *p = x + return p +} + +func (x VehiclePosition_CongestionLevel) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VehiclePosition_CongestionLevel) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_realtime_proto_enumTypes[3].Descriptor() +} + +func (VehiclePosition_CongestionLevel) Type() protoreflect.EnumType { + return &file_gtfs_realtime_proto_enumTypes[3] +} + +func (x VehiclePosition_CongestionLevel) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *VehiclePosition_CongestionLevel) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = VehiclePosition_CongestionLevel(num) + return nil +} + +// Deprecated: Use VehiclePosition_CongestionLevel.Descriptor instead. +func (VehiclePosition_CongestionLevel) EnumDescriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{4, 1} +} + +// The degree of passenger occupancy of the vehicle. This field is still +// experimental, and subject to change. It may be formally adopted in the +// future. +type VehiclePosition_OccupancyStatus int32 + +const ( + // The vehicle is considered empty by most measures, and has few or no + // passengers onboard, but is still accepting passengers. + VehiclePosition_EMPTY VehiclePosition_OccupancyStatus = 0 + // The vehicle has a relatively large percentage of seats available. + // What percentage of free seats out of the total seats available is to be + // considered large enough to fall into this category is determined at the + // discretion of the producer. + VehiclePosition_MANY_SEATS_AVAILABLE VehiclePosition_OccupancyStatus = 1 + // The vehicle has a relatively small percentage of seats available. + // What percentage of free seats out of the total seats available is to be + // considered small enough to fall into this category is determined at the + // discretion of the feed producer. + VehiclePosition_FEW_SEATS_AVAILABLE VehiclePosition_OccupancyStatus = 2 + // The vehicle can currently accommodate only standing passengers. + VehiclePosition_STANDING_ROOM_ONLY VehiclePosition_OccupancyStatus = 3 + // The vehicle can currently accommodate only standing passengers + // and has limited space for them. + VehiclePosition_CRUSHED_STANDING_ROOM_ONLY VehiclePosition_OccupancyStatus = 4 + // The vehicle is considered full by most measures, but may still be + // allowing passengers to board. + VehiclePosition_FULL VehiclePosition_OccupancyStatus = 5 + // The vehicle is not accepting additional passengers. + VehiclePosition_NOT_ACCEPTING_PASSENGERS VehiclePosition_OccupancyStatus = 6 +) + +// Enum value maps for VehiclePosition_OccupancyStatus. +var ( + VehiclePosition_OccupancyStatus_name = map[int32]string{ + 0: "EMPTY", + 1: "MANY_SEATS_AVAILABLE", + 2: "FEW_SEATS_AVAILABLE", + 3: "STANDING_ROOM_ONLY", + 4: "CRUSHED_STANDING_ROOM_ONLY", + 5: "FULL", + 6: "NOT_ACCEPTING_PASSENGERS", + } + VehiclePosition_OccupancyStatus_value = map[string]int32{ + "EMPTY": 0, + "MANY_SEATS_AVAILABLE": 1, + "FEW_SEATS_AVAILABLE": 2, + "STANDING_ROOM_ONLY": 3, + "CRUSHED_STANDING_ROOM_ONLY": 4, + "FULL": 5, + "NOT_ACCEPTING_PASSENGERS": 6, + } +) + +func (x VehiclePosition_OccupancyStatus) Enum() *VehiclePosition_OccupancyStatus { + p := new(VehiclePosition_OccupancyStatus) + *p = x + return p +} + +func (x VehiclePosition_OccupancyStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VehiclePosition_OccupancyStatus) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_realtime_proto_enumTypes[4].Descriptor() +} + +func (VehiclePosition_OccupancyStatus) Type() protoreflect.EnumType { + return &file_gtfs_realtime_proto_enumTypes[4] +} + +func (x VehiclePosition_OccupancyStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *VehiclePosition_OccupancyStatus) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = VehiclePosition_OccupancyStatus(num) + return nil +} + +// Deprecated: Use VehiclePosition_OccupancyStatus.Descriptor instead. +func (VehiclePosition_OccupancyStatus) EnumDescriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{4, 2} +} + +// Cause of this alert. +type Alert_Cause int32 + +const ( + Alert_UNKNOWN_CAUSE Alert_Cause = 1 + Alert_OTHER_CAUSE Alert_Cause = 2 // Not machine-representable. + Alert_TECHNICAL_PROBLEM Alert_Cause = 3 + Alert_STRIKE Alert_Cause = 4 // Public transit agency employees stopped working. + Alert_DEMONSTRATION Alert_Cause = 5 // People are blocking the streets. + Alert_ACCIDENT Alert_Cause = 6 + Alert_HOLIDAY Alert_Cause = 7 + Alert_WEATHER Alert_Cause = 8 + Alert_MAINTENANCE Alert_Cause = 9 + Alert_CONSTRUCTION Alert_Cause = 10 + Alert_POLICE_ACTIVITY Alert_Cause = 11 + Alert_MEDICAL_EMERGENCY Alert_Cause = 12 +) + +// Enum value maps for Alert_Cause. +var ( + Alert_Cause_name = map[int32]string{ + 1: "UNKNOWN_CAUSE", + 2: "OTHER_CAUSE", + 3: "TECHNICAL_PROBLEM", + 4: "STRIKE", + 5: "DEMONSTRATION", + 6: "ACCIDENT", + 7: "HOLIDAY", + 8: "WEATHER", + 9: "MAINTENANCE", + 10: "CONSTRUCTION", + 11: "POLICE_ACTIVITY", + 12: "MEDICAL_EMERGENCY", + } + Alert_Cause_value = map[string]int32{ + "UNKNOWN_CAUSE": 1, + "OTHER_CAUSE": 2, + "TECHNICAL_PROBLEM": 3, + "STRIKE": 4, + "DEMONSTRATION": 5, + "ACCIDENT": 6, + "HOLIDAY": 7, + "WEATHER": 8, + "MAINTENANCE": 9, + "CONSTRUCTION": 10, + "POLICE_ACTIVITY": 11, + "MEDICAL_EMERGENCY": 12, + } +) + +func (x Alert_Cause) Enum() *Alert_Cause { + p := new(Alert_Cause) + *p = x + return p +} + +func (x Alert_Cause) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Alert_Cause) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_realtime_proto_enumTypes[5].Descriptor() +} + +func (Alert_Cause) Type() protoreflect.EnumType { + return &file_gtfs_realtime_proto_enumTypes[5] +} + +func (x Alert_Cause) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *Alert_Cause) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = Alert_Cause(num) + return nil +} + +// Deprecated: Use Alert_Cause.Descriptor instead. +func (Alert_Cause) EnumDescriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{5, 0} +} + +// What is the effect of this problem on the affected entity. +type Alert_Effect int32 + +const ( + Alert_NO_SERVICE Alert_Effect = 1 + Alert_REDUCED_SERVICE Alert_Effect = 2 + // We don't care about INsignificant delays: they are hard to detect, have + // little impact on the user, and would clutter the results as they are too + // frequent. + Alert_SIGNIFICANT_DELAYS Alert_Effect = 3 + Alert_DETOUR Alert_Effect = 4 + Alert_ADDITIONAL_SERVICE Alert_Effect = 5 + Alert_MODIFIED_SERVICE Alert_Effect = 6 + Alert_OTHER_EFFECT Alert_Effect = 7 + Alert_UNKNOWN_EFFECT Alert_Effect = 8 + Alert_STOP_MOVED Alert_Effect = 9 + Alert_NO_EFFECT Alert_Effect = 10 + Alert_ACCESSIBILITY_ISSUE Alert_Effect = 11 +) + +// Enum value maps for Alert_Effect. +var ( + Alert_Effect_name = map[int32]string{ + 1: "NO_SERVICE", + 2: "REDUCED_SERVICE", + 3: "SIGNIFICANT_DELAYS", + 4: "DETOUR", + 5: "ADDITIONAL_SERVICE", + 6: "MODIFIED_SERVICE", + 7: "OTHER_EFFECT", + 8: "UNKNOWN_EFFECT", + 9: "STOP_MOVED", + 10: "NO_EFFECT", + 11: "ACCESSIBILITY_ISSUE", + } + Alert_Effect_value = map[string]int32{ + "NO_SERVICE": 1, + "REDUCED_SERVICE": 2, + "SIGNIFICANT_DELAYS": 3, + "DETOUR": 4, + "ADDITIONAL_SERVICE": 5, + "MODIFIED_SERVICE": 6, + "OTHER_EFFECT": 7, + "UNKNOWN_EFFECT": 8, + "STOP_MOVED": 9, + "NO_EFFECT": 10, + "ACCESSIBILITY_ISSUE": 11, + } +) + +func (x Alert_Effect) Enum() *Alert_Effect { + p := new(Alert_Effect) + *p = x + return p +} + +func (x Alert_Effect) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Alert_Effect) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_realtime_proto_enumTypes[6].Descriptor() +} + +func (Alert_Effect) Type() protoreflect.EnumType { + return &file_gtfs_realtime_proto_enumTypes[6] +} + +func (x Alert_Effect) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *Alert_Effect) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = Alert_Effect(num) + return nil +} + +// Deprecated: Use Alert_Effect.Descriptor instead. +func (Alert_Effect) EnumDescriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{5, 1} +} + +// Severity of this alert. +type Alert_SeverityLevel int32 + +const ( + Alert_UNKNOWN_SEVERITY Alert_SeverityLevel = 1 + Alert_INFO Alert_SeverityLevel = 2 + Alert_WARNING Alert_SeverityLevel = 3 + Alert_SEVERE Alert_SeverityLevel = 4 +) + +// Enum value maps for Alert_SeverityLevel. +var ( + Alert_SeverityLevel_name = map[int32]string{ + 1: "UNKNOWN_SEVERITY", + 2: "INFO", + 3: "WARNING", + 4: "SEVERE", + } + Alert_SeverityLevel_value = map[string]int32{ + "UNKNOWN_SEVERITY": 1, + "INFO": 2, + "WARNING": 3, + "SEVERE": 4, + } +) + +func (x Alert_SeverityLevel) Enum() *Alert_SeverityLevel { + p := new(Alert_SeverityLevel) + *p = x + return p +} + +func (x Alert_SeverityLevel) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Alert_SeverityLevel) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_realtime_proto_enumTypes[7].Descriptor() +} + +func (Alert_SeverityLevel) Type() protoreflect.EnumType { + return &file_gtfs_realtime_proto_enumTypes[7] +} + +func (x Alert_SeverityLevel) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *Alert_SeverityLevel) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = Alert_SeverityLevel(num) + return nil +} + +// Deprecated: Use Alert_SeverityLevel.Descriptor instead. +func (Alert_SeverityLevel) EnumDescriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{5, 2} +} + +// The relation between this trip and the static schedule. If a trip is done +// in accordance with temporary schedule, not reflected in GTFS, then it +// shouldn't be marked as SCHEDULED, but likely as ADDED. +type TripDescriptor_ScheduleRelationship int32 + +const ( + // Trip that is running in accordance with its GTFS schedule, or is close + // enough to the scheduled trip to be associated with it. + TripDescriptor_SCHEDULED TripDescriptor_ScheduleRelationship = 0 + // An extra trip that was added in addition to a running schedule, for + // example, to replace a broken vehicle or to respond to sudden passenger + // load. + // NOTE: Currently, behavior is unspecified for feeds that use this mode. There are discussions on the GTFS GitHub + // [(1)](https://github.com/google/transit/issues/106) [(2)](https://github.com/google/transit/pull/221) + // [(3)](https://github.com/google/transit/pull/219) around fully specifying or deprecating ADDED trips and the + // documentation will be updated when those discussions are finalized. + TripDescriptor_ADDED TripDescriptor_ScheduleRelationship = 1 + // A trip that is running with no schedule associated to it (GTFS frequencies.txt exact_times=0). + // Trips with ScheduleRelationship=UNSCHEDULED must also set all StopTimeUpdates.ScheduleRelationship=UNSCHEDULED. + TripDescriptor_UNSCHEDULED TripDescriptor_ScheduleRelationship = 2 + // A trip that existed in the schedule but was removed. + TripDescriptor_CANCELED TripDescriptor_ScheduleRelationship = 3 + // Should not be used - for backwards-compatibility only. + // + // Deprecated: Do not use. + TripDescriptor_REPLACEMENT TripDescriptor_ScheduleRelationship = 5 + // An extra trip that was added in addition to a running schedule, for example, to replace a broken vehicle or to + // respond to sudden passenger load. Used with TripUpdate.TripProperties.trip_id, TripUpdate.TripProperties.start_date, + // and TripUpdate.TripProperties.start_time to copy an existing trip from static GTFS but start at a different service + // date and/or time. Duplicating a trip is allowed if the service related to the original trip in (CSV) GTFS + // (in calendar.txt or calendar_dates.txt) is operating within the next 30 days. The trip to be duplicated is + // identified via TripUpdate.TripDescriptor.trip_id. This enumeration does not modify the existing trip referenced by + // TripUpdate.TripDescriptor.trip_id - if a producer wants to cancel the original trip, it must publish a separate + // TripUpdate with the value of CANCELED. Trips defined in GTFS frequencies.txt with exact_times that is empty or + // equal to 0 cannot be duplicated. The VehiclePosition.TripDescriptor.trip_id for the new trip must contain + // the matching value from TripUpdate.TripProperties.trip_id and VehiclePosition.TripDescriptor.ScheduleRelationship + // must also be set to DUPLICATED. + // Existing producers and consumers that were using the ADDED enumeration to represent duplicated trips must follow + // the migration guide (https://github.com/google/transit/tree/master/gtfs-realtime/spec/en/examples/migration-duplicated.md) + // to transition to the DUPLICATED enumeration. + // NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future. + TripDescriptor_DUPLICATED TripDescriptor_ScheduleRelationship = 6 +) + +// Enum value maps for TripDescriptor_ScheduleRelationship. +var ( + TripDescriptor_ScheduleRelationship_name = map[int32]string{ + 0: "SCHEDULED", + 1: "ADDED", + 2: "UNSCHEDULED", + 3: "CANCELED", + 5: "REPLACEMENT", + 6: "DUPLICATED", + } + TripDescriptor_ScheduleRelationship_value = map[string]int32{ + "SCHEDULED": 0, + "ADDED": 1, + "UNSCHEDULED": 2, + "CANCELED": 3, + "REPLACEMENT": 5, + "DUPLICATED": 6, + } +) + +func (x TripDescriptor_ScheduleRelationship) Enum() *TripDescriptor_ScheduleRelationship { + p := new(TripDescriptor_ScheduleRelationship) + *p = x + return p +} + +func (x TripDescriptor_ScheduleRelationship) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TripDescriptor_ScheduleRelationship) Descriptor() protoreflect.EnumDescriptor { + return file_gtfs_realtime_proto_enumTypes[8].Descriptor() +} + +func (TripDescriptor_ScheduleRelationship) Type() protoreflect.EnumType { + return &file_gtfs_realtime_proto_enumTypes[8] +} + +func (x TripDescriptor_ScheduleRelationship) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Do not use. +func (x *TripDescriptor_ScheduleRelationship) UnmarshalJSON(b []byte) error { + num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) + if err != nil { + return err + } + *x = TripDescriptor_ScheduleRelationship(num) + return nil +} + +// Deprecated: Use TripDescriptor_ScheduleRelationship.Descriptor instead. +func (TripDescriptor_ScheduleRelationship) EnumDescriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{8, 0} +} + +// The contents of a feed message. +// A feed is a continuous stream of feed messages. Each message in the stream is +// obtained as a response to an appropriate HTTP GET request. +// A realtime feed is always defined with relation to an existing GTFS feed. +// All the entity ids are resolved with respect to the GTFS feed. +// Note that "required" and "optional" as stated in this file refer to Protocol +// Buffer cardinality, not semantic cardinality. See reference.md at +// https://github.com/google/transit/tree/master/gtfs-realtime for field +// semantic cardinality. +type FeedMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // Metadata about this feed and feed message. + Header *FeedHeader `protobuf:"bytes,1,req,name=header" json:"header,omitempty"` + // Contents of the feed. + Entity []*FeedEntity `protobuf:"bytes,2,rep,name=entity" json:"entity,omitempty"` +} + +func (x *FeedMessage) Reset() { + *x = FeedMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FeedMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FeedMessage) ProtoMessage() {} + +func (x *FeedMessage) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FeedMessage.ProtoReflect.Descriptor instead. +func (*FeedMessage) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{0} +} + +var extRange_FeedMessage = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use FeedMessage.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*FeedMessage) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_FeedMessage +} + +func (x *FeedMessage) GetHeader() *FeedHeader { + if x != nil { + return x.Header + } + return nil +} + +func (x *FeedMessage) GetEntity() []*FeedEntity { + if x != nil { + return x.Entity + } + return nil +} + +// Metadata about a feed, included in feed messages. +type FeedHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // Version of the feed specification. + // The current version is 2.0. Valid versions are "2.0", "1.0". + GtfsRealtimeVersion *string `protobuf:"bytes,1,req,name=gtfs_realtime_version,json=gtfsRealtimeVersion" json:"gtfs_realtime_version,omitempty"` + Incrementality *FeedHeader_Incrementality `protobuf:"varint,2,opt,name=incrementality,enum=transit_realtime.FeedHeader_Incrementality,def=0" json:"incrementality,omitempty"` + // This timestamp identifies the moment when the content of this feed has been + // created (in server time). In POSIX time (i.e., number of seconds since + // January 1st 1970 00:00:00 UTC). + Timestamp *uint64 `protobuf:"varint,3,opt,name=timestamp" json:"timestamp,omitempty"` +} + +// Default values for FeedHeader fields. +const ( + Default_FeedHeader_Incrementality = FeedHeader_FULL_DATASET +) + +func (x *FeedHeader) Reset() { + *x = FeedHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FeedHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FeedHeader) ProtoMessage() {} + +func (x *FeedHeader) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FeedHeader.ProtoReflect.Descriptor instead. +func (*FeedHeader) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{1} +} + +var extRange_FeedHeader = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use FeedHeader.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*FeedHeader) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_FeedHeader +} + +func (x *FeedHeader) GetGtfsRealtimeVersion() string { + if x != nil && x.GtfsRealtimeVersion != nil { + return *x.GtfsRealtimeVersion + } + return "" +} + +func (x *FeedHeader) GetIncrementality() FeedHeader_Incrementality { + if x != nil && x.Incrementality != nil { + return *x.Incrementality + } + return Default_FeedHeader_Incrementality +} + +func (x *FeedHeader) GetTimestamp() uint64 { + if x != nil && x.Timestamp != nil { + return *x.Timestamp + } + return 0 +} + +// A definition (or update) of an entity in the transit feed. +type FeedEntity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // The ids are used only to provide incrementality support. The id should be + // unique within a FeedMessage. Consequent FeedMessages may contain + // FeedEntities with the same id. In case of a DIFFERENTIAL update the new + // FeedEntity with some id will replace the old FeedEntity with the same id + // (or delete it - see is_deleted below). + // The actual GTFS entities (e.g. stations, routes, trips) referenced by the + // feed must be specified by explicit selectors (see EntitySelector below for + // more info). + Id *string `protobuf:"bytes,1,req,name=id" json:"id,omitempty"` + // Whether this entity is to be deleted. Relevant only for incremental + // fetches. + IsDeleted *bool `protobuf:"varint,2,opt,name=is_deleted,json=isDeleted,def=0" json:"is_deleted,omitempty"` + // Data about the entity itself. Exactly one of the following fields must be + // present (unless the entity is being deleted). + TripUpdate *TripUpdate `protobuf:"bytes,3,opt,name=trip_update,json=tripUpdate" json:"trip_update,omitempty"` + Vehicle *VehiclePosition `protobuf:"bytes,4,opt,name=vehicle" json:"vehicle,omitempty"` + Alert *Alert `protobuf:"bytes,5,opt,name=alert" json:"alert,omitempty"` +} + +// Default values for FeedEntity fields. +const ( + Default_FeedEntity_IsDeleted = bool(false) +) + +func (x *FeedEntity) Reset() { + *x = FeedEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FeedEntity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FeedEntity) ProtoMessage() {} + +func (x *FeedEntity) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FeedEntity.ProtoReflect.Descriptor instead. +func (*FeedEntity) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{2} +} + +var extRange_FeedEntity = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use FeedEntity.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*FeedEntity) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_FeedEntity +} + +func (x *FeedEntity) GetId() string { + if x != nil && x.Id != nil { + return *x.Id + } + return "" +} + +func (x *FeedEntity) GetIsDeleted() bool { + if x != nil && x.IsDeleted != nil { + return *x.IsDeleted + } + return Default_FeedEntity_IsDeleted +} + +func (x *FeedEntity) GetTripUpdate() *TripUpdate { + if x != nil { + return x.TripUpdate + } + return nil +} + +func (x *FeedEntity) GetVehicle() *VehiclePosition { + if x != nil { + return x.Vehicle + } + return nil +} + +func (x *FeedEntity) GetAlert() *Alert { + if x != nil { + return x.Alert + } + return nil +} + +// Realtime update of the progress of a vehicle along a trip. +// Depending on the value of ScheduleRelationship, a TripUpdate can specify: +// - A trip that proceeds along the schedule. +// - A trip that proceeds along a route but has no fixed schedule. +// - A trip that have been added or removed with regard to schedule. +// +// The updates can be for future, predicted arrival/departure events, or for +// past events that already occurred. +// Normally, updates should get more precise and more certain (see +// uncertainty below) as the events gets closer to current time. +// Even if that is not possible, the information for past events should be +// precise and certain. In particular, if an update points to time in the past +// but its update's uncertainty is not 0, the client should conclude that the +// update is a (wrong) prediction and that the trip has not completed yet. +// +// Note that the update can describe a trip that is already completed. +// To this end, it is enough to provide an update for the last stop of the trip. +// If the time of that is in the past, the client will conclude from that that +// the whole trip is in the past (it is possible, although inconsequential, to +// also provide updates for preceding stops). +// This option is most relevant for a trip that has completed ahead of schedule, +// but according to the schedule, the trip is still proceeding at the current +// time. Removing the updates for this trip could make the client assume +// that the trip is still proceeding. +// Note that the feed provider is allowed, but not required, to purge past +// updates - this is one case where this would be practically useful. +type TripUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // The Trip that this message applies to. There can be at most one + // TripUpdate entity for each actual trip instance. + // If there is none, that means there is no prediction information available. + // It does *not* mean that the trip is progressing according to schedule. + Trip *TripDescriptor `protobuf:"bytes,1,req,name=trip" json:"trip,omitempty"` + // Additional information on the vehicle that is serving this trip. + Vehicle *VehicleDescriptor `protobuf:"bytes,3,opt,name=vehicle" json:"vehicle,omitempty"` + // Updates to StopTimes for the trip (both future, i.e., predictions, and in + // some cases, past ones, i.e., those that already happened). + // The updates must be sorted by stop_sequence, and apply for all the + // following stops of the trip up to the next specified one. + // + // Example 1: + // For a trip with 20 stops, a StopTimeUpdate with arrival delay and departure + // delay of 0 for stop_sequence of the current stop means that the trip is + // exactly on time. + // + // Example 2: + // For the same trip instance, 3 StopTimeUpdates are provided: + // - delay of 5 min for stop_sequence 3 + // - delay of 1 min for stop_sequence 8 + // - delay of unspecified duration for stop_sequence 10 + // This will be interpreted as: + // - stop_sequences 3,4,5,6,7 have delay of 5 min. + // - stop_sequences 8,9 have delay of 1 min. + // - stop_sequences 10,... have unknown delay. + StopTimeUpdate []*TripUpdate_StopTimeUpdate `protobuf:"bytes,2,rep,name=stop_time_update,json=stopTimeUpdate" json:"stop_time_update,omitempty"` + // Moment at which the vehicle's real-time progress was measured. In POSIX + // time (i.e., the number of seconds since January 1st 1970 00:00:00 UTC). + Timestamp *uint64 `protobuf:"varint,4,opt,name=timestamp" json:"timestamp,omitempty"` + // The current schedule deviation for the trip. Delay should only be + // specified when the prediction is given relative to some existing schedule + // in GTFS. + // + // Delay (in seconds) can be positive (meaning that the vehicle is late) or + // negative (meaning that the vehicle is ahead of schedule). Delay of 0 + // means that the vehicle is exactly on time. + // + // Delay information in StopTimeUpdates take precedent of trip-level delay + // information, such that trip-level delay is only propagated until the next + // stop along the trip with a StopTimeUpdate delay value specified. + // + // Feed providers are strongly encouraged to provide a TripUpdate.timestamp + // value indicating when the delay value was last updated, in order to + // evaluate the freshness of the data. + // + // NOTE: This field is still experimental, and subject to change. It may be + // formally adopted in the future. + Delay *int32 `protobuf:"varint,5,opt,name=delay" json:"delay,omitempty"` + TripProperties *TripUpdate_TripProperties `protobuf:"bytes,6,opt,name=trip_properties,json=tripProperties" json:"trip_properties,omitempty"` +} + +func (x *TripUpdate) Reset() { + *x = TripUpdate{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TripUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TripUpdate) ProtoMessage() {} + +func (x *TripUpdate) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TripUpdate.ProtoReflect.Descriptor instead. +func (*TripUpdate) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{3} +} + +var extRange_TripUpdate = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use TripUpdate.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*TripUpdate) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_TripUpdate +} + +func (x *TripUpdate) GetTrip() *TripDescriptor { + if x != nil { + return x.Trip + } + return nil +} + +func (x *TripUpdate) GetVehicle() *VehicleDescriptor { + if x != nil { + return x.Vehicle + } + return nil +} + +func (x *TripUpdate) GetStopTimeUpdate() []*TripUpdate_StopTimeUpdate { + if x != nil { + return x.StopTimeUpdate + } + return nil +} + +func (x *TripUpdate) GetTimestamp() uint64 { + if x != nil && x.Timestamp != nil { + return *x.Timestamp + } + return 0 +} + +func (x *TripUpdate) GetDelay() int32 { + if x != nil && x.Delay != nil { + return *x.Delay + } + return 0 +} + +func (x *TripUpdate) GetTripProperties() *TripUpdate_TripProperties { + if x != nil { + return x.TripProperties + } + return nil +} + +// Realtime positioning information for a given vehicle. +type VehiclePosition struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // The Trip that this vehicle is serving. + // Can be empty or partial if the vehicle can not be identified with a given + // trip instance. + Trip *TripDescriptor `protobuf:"bytes,1,opt,name=trip" json:"trip,omitempty"` + // Additional information on the vehicle that is serving this trip. + Vehicle *VehicleDescriptor `protobuf:"bytes,8,opt,name=vehicle" json:"vehicle,omitempty"` + // Current position of this vehicle. + Position *Position `protobuf:"bytes,2,opt,name=position" json:"position,omitempty"` + // The stop sequence index of the current stop. The meaning of + // current_stop_sequence (i.e., the stop that it refers to) is determined by + // current_status. + // If current_status is missing IN_TRANSIT_TO is assumed. + CurrentStopSequence *uint32 `protobuf:"varint,3,opt,name=current_stop_sequence,json=currentStopSequence" json:"current_stop_sequence,omitempty"` + // Identifies the current stop. The value must be the same as in stops.txt in + // the corresponding GTFS feed. + StopId *string `protobuf:"bytes,7,opt,name=stop_id,json=stopId" json:"stop_id,omitempty"` + // The exact status of the vehicle with respect to the current stop. + // Ignored if current_stop_sequence is missing. + CurrentStatus *VehiclePosition_VehicleStopStatus `protobuf:"varint,4,opt,name=current_status,json=currentStatus,enum=transit_realtime.VehiclePosition_VehicleStopStatus,def=2" json:"current_status,omitempty"` + // Moment at which the vehicle's position was measured. In POSIX time + // (i.e., number of seconds since January 1st 1970 00:00:00 UTC). + Timestamp *uint64 `protobuf:"varint,5,opt,name=timestamp" json:"timestamp,omitempty"` + CongestionLevel *VehiclePosition_CongestionLevel `protobuf:"varint,6,opt,name=congestion_level,json=congestionLevel,enum=transit_realtime.VehiclePosition_CongestionLevel" json:"congestion_level,omitempty"` + OccupancyStatus *VehiclePosition_OccupancyStatus `protobuf:"varint,9,opt,name=occupancy_status,json=occupancyStatus,enum=transit_realtime.VehiclePosition_OccupancyStatus" json:"occupancy_status,omitempty"` + // A percentage value representing the degree of passenger occupancy of the vehicle. + // The values are represented as an integer without decimals. 0 means 0% and 100 means 100%. + // The value 100 should represent the total maximum occupancy the vehicle was designed for, + // including both seated and standing capacity, and current operating regulations allow. + // It is possible that the value goes over 100 if there are currently more passengers than what the vehicle was designed for. + // The precision of occupancy_percentage should be low enough that you can't track a single person boarding and alighting for privacy reasons. + // This field is still experimental, and subject to change. It may be formally adopted in the future. + OccupancyPercentage *uint32 `protobuf:"varint,10,opt,name=occupancy_percentage,json=occupancyPercentage" json:"occupancy_percentage,omitempty"` +} + +// Default values for VehiclePosition fields. +const ( + Default_VehiclePosition_CurrentStatus = VehiclePosition_IN_TRANSIT_TO +) + +func (x *VehiclePosition) Reset() { + *x = VehiclePosition{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VehiclePosition) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VehiclePosition) ProtoMessage() {} + +func (x *VehiclePosition) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VehiclePosition.ProtoReflect.Descriptor instead. +func (*VehiclePosition) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{4} +} + +var extRange_VehiclePosition = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use VehiclePosition.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*VehiclePosition) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_VehiclePosition +} + +func (x *VehiclePosition) GetTrip() *TripDescriptor { + if x != nil { + return x.Trip + } + return nil +} + +func (x *VehiclePosition) GetVehicle() *VehicleDescriptor { + if x != nil { + return x.Vehicle + } + return nil +} + +func (x *VehiclePosition) GetPosition() *Position { + if x != nil { + return x.Position + } + return nil +} + +func (x *VehiclePosition) GetCurrentStopSequence() uint32 { + if x != nil && x.CurrentStopSequence != nil { + return *x.CurrentStopSequence + } + return 0 +} + +func (x *VehiclePosition) GetStopId() string { + if x != nil && x.StopId != nil { + return *x.StopId + } + return "" +} + +func (x *VehiclePosition) GetCurrentStatus() VehiclePosition_VehicleStopStatus { + if x != nil && x.CurrentStatus != nil { + return *x.CurrentStatus + } + return Default_VehiclePosition_CurrentStatus +} + +func (x *VehiclePosition) GetTimestamp() uint64 { + if x != nil && x.Timestamp != nil { + return *x.Timestamp + } + return 0 +} + +func (x *VehiclePosition) GetCongestionLevel() VehiclePosition_CongestionLevel { + if x != nil && x.CongestionLevel != nil { + return *x.CongestionLevel + } + return VehiclePosition_UNKNOWN_CONGESTION_LEVEL +} + +func (x *VehiclePosition) GetOccupancyStatus() VehiclePosition_OccupancyStatus { + if x != nil && x.OccupancyStatus != nil { + return *x.OccupancyStatus + } + return VehiclePosition_EMPTY +} + +func (x *VehiclePosition) GetOccupancyPercentage() uint32 { + if x != nil && x.OccupancyPercentage != nil { + return *x.OccupancyPercentage + } + return 0 +} + +// An alert, indicating some sort of incident in the public transit network. +type Alert struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // Time when the alert should be shown to the user. If missing, the + // alert will be shown as long as it appears in the feed. + // If multiple ranges are given, the alert will be shown during all of them. + ActivePeriod []*TimeRange `protobuf:"bytes,1,rep,name=active_period,json=activePeriod" json:"active_period,omitempty"` + // Entities whose users we should notify of this alert. + InformedEntity []*EntitySelector `protobuf:"bytes,5,rep,name=informed_entity,json=informedEntity" json:"informed_entity,omitempty"` + Cause *Alert_Cause `protobuf:"varint,6,opt,name=cause,enum=transit_realtime.Alert_Cause,def=1" json:"cause,omitempty"` + Effect *Alert_Effect `protobuf:"varint,7,opt,name=effect,enum=transit_realtime.Alert_Effect,def=8" json:"effect,omitempty"` + // The URL which provides additional information about the alert. + Url *TranslatedString `protobuf:"bytes,8,opt,name=url" json:"url,omitempty"` + // Alert header. Contains a short summary of the alert text as plain-text. + HeaderText *TranslatedString `protobuf:"bytes,10,opt,name=header_text,json=headerText" json:"header_text,omitempty"` + // Full description for the alert as plain-text. The information in the + // description should add to the information of the header. + DescriptionText *TranslatedString `protobuf:"bytes,11,opt,name=description_text,json=descriptionText" json:"description_text,omitempty"` + // Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text. + TtsHeaderText *TranslatedString `protobuf:"bytes,12,opt,name=tts_header_text,json=ttsHeaderText" json:"tts_header_text,omitempty"` + // Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text. + TtsDescriptionText *TranslatedString `protobuf:"bytes,13,opt,name=tts_description_text,json=ttsDescriptionText" json:"tts_description_text,omitempty"` + SeverityLevel *Alert_SeverityLevel `protobuf:"varint,14,opt,name=severity_level,json=severityLevel,enum=transit_realtime.Alert_SeverityLevel,def=1" json:"severity_level,omitempty"` +} + +// Default values for Alert fields. +const ( + Default_Alert_Cause = Alert_UNKNOWN_CAUSE + Default_Alert_Effect = Alert_UNKNOWN_EFFECT + Default_Alert_SeverityLevel = Alert_UNKNOWN_SEVERITY +) + +func (x *Alert) Reset() { + *x = Alert{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Alert) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Alert) ProtoMessage() {} + +func (x *Alert) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Alert.ProtoReflect.Descriptor instead. +func (*Alert) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{5} +} + +var extRange_Alert = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use Alert.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*Alert) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_Alert +} + +func (x *Alert) GetActivePeriod() []*TimeRange { + if x != nil { + return x.ActivePeriod + } + return nil +} + +func (x *Alert) GetInformedEntity() []*EntitySelector { + if x != nil { + return x.InformedEntity + } + return nil +} + +func (x *Alert) GetCause() Alert_Cause { + if x != nil && x.Cause != nil { + return *x.Cause + } + return Default_Alert_Cause +} + +func (x *Alert) GetEffect() Alert_Effect { + if x != nil && x.Effect != nil { + return *x.Effect + } + return Default_Alert_Effect +} + +func (x *Alert) GetUrl() *TranslatedString { + if x != nil { + return x.Url + } + return nil +} + +func (x *Alert) GetHeaderText() *TranslatedString { + if x != nil { + return x.HeaderText + } + return nil +} + +func (x *Alert) GetDescriptionText() *TranslatedString { + if x != nil { + return x.DescriptionText + } + return nil +} + +func (x *Alert) GetTtsHeaderText() *TranslatedString { + if x != nil { + return x.TtsHeaderText + } + return nil +} + +func (x *Alert) GetTtsDescriptionText() *TranslatedString { + if x != nil { + return x.TtsDescriptionText + } + return nil +} + +func (x *Alert) GetSeverityLevel() Alert_SeverityLevel { + if x != nil && x.SeverityLevel != nil { + return *x.SeverityLevel + } + return Default_Alert_SeverityLevel +} + +// A time interval. The interval is considered active at time 't' if 't' is +// greater than or equal to the start time and less than the end time. +type TimeRange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // Start time, in POSIX time (i.e., number of seconds since January 1st 1970 + // 00:00:00 UTC). + // If missing, the interval starts at minus infinity. + Start *uint64 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` + // End time, in POSIX time (i.e., number of seconds since January 1st 1970 + // 00:00:00 UTC). + // If missing, the interval ends at plus infinity. + End *uint64 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` +} + +func (x *TimeRange) Reset() { + *x = TimeRange{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TimeRange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TimeRange) ProtoMessage() {} + +func (x *TimeRange) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TimeRange.ProtoReflect.Descriptor instead. +func (*TimeRange) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{6} +} + +var extRange_TimeRange = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use TimeRange.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*TimeRange) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_TimeRange +} + +func (x *TimeRange) GetStart() uint64 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *TimeRange) GetEnd() uint64 { + if x != nil && x.End != nil { + return *x.End + } + return 0 +} + +// A position. +type Position struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // Degrees North, in the WGS-84 coordinate system. + Latitude *float32 `protobuf:"fixed32,1,req,name=latitude" json:"latitude,omitempty"` + // Degrees East, in the WGS-84 coordinate system. + Longitude *float32 `protobuf:"fixed32,2,req,name=longitude" json:"longitude,omitempty"` + // Bearing, in degrees, clockwise from North, i.e., 0 is North and 90 is East. + // This can be the compass bearing, or the direction towards the next stop + // or intermediate location. + // This should not be direction deduced from the sequence of previous + // positions, which can be computed from previous data. + Bearing *float32 `protobuf:"fixed32,3,opt,name=bearing" json:"bearing,omitempty"` + // Odometer value, in meters. + Odometer *float64 `protobuf:"fixed64,4,opt,name=odometer" json:"odometer,omitempty"` + // Momentary speed measured by the vehicle, in meters per second. + Speed *float32 `protobuf:"fixed32,5,opt,name=speed" json:"speed,omitempty"` +} + +func (x *Position) Reset() { + *x = Position{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Position) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Position) ProtoMessage() {} + +func (x *Position) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Position.ProtoReflect.Descriptor instead. +func (*Position) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{7} +} + +var extRange_Position = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use Position.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*Position) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_Position +} + +func (x *Position) GetLatitude() float32 { + if x != nil && x.Latitude != nil { + return *x.Latitude + } + return 0 +} + +func (x *Position) GetLongitude() float32 { + if x != nil && x.Longitude != nil { + return *x.Longitude + } + return 0 +} + +func (x *Position) GetBearing() float32 { + if x != nil && x.Bearing != nil { + return *x.Bearing + } + return 0 +} + +func (x *Position) GetOdometer() float64 { + if x != nil && x.Odometer != nil { + return *x.Odometer + } + return 0 +} + +func (x *Position) GetSpeed() float32 { + if x != nil && x.Speed != nil { + return *x.Speed + } + return 0 +} + +// A descriptor that identifies an instance of a GTFS trip, or all instances of +// a trip along a route. +// - To specify a single trip instance, the trip_id (and if necessary, +// start_time) is set. If route_id is also set, then it should be same as one +// that the given trip corresponds to. +// - To specify all the trips along a given route, only the route_id should be +// set. Note that if the trip_id is not known, then stop sequence ids in +// TripUpdate are not sufficient, and stop_ids must be provided as well. In +// addition, absolute arrival/departure times must be provided. +type TripDescriptor struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // The trip_id from the GTFS feed that this selector refers to. + // For non frequency-based trips, this field is enough to uniquely identify + // the trip. For frequency-based trip, start_time and start_date might also be + // necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + // static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + // identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. + TripId *string `protobuf:"bytes,1,opt,name=trip_id,json=tripId" json:"trip_id,omitempty"` + // The route_id from the GTFS that this selector refers to. + RouteId *string `protobuf:"bytes,5,opt,name=route_id,json=routeId" json:"route_id,omitempty"` + // The direction_id from the GTFS feed trips.txt file, indicating the + // direction of travel for trips this selector refers to. + DirectionId *uint32 `protobuf:"varint,6,opt,name=direction_id,json=directionId" json:"direction_id,omitempty"` + // The initially scheduled start time of this trip instance. + // When the trip_id corresponds to a non-frequency-based trip, this field + // should either be omitted or be equal to the value in the GTFS feed. When + // the trip_id correponds to a frequency-based trip, the start_time must be + // specified for trip updates and vehicle positions. If the trip corresponds + // to exact_times=1 GTFS record, then start_time must be some multiple + // (including zero) of headway_secs later than frequencies.txt start_time for + // the corresponding time period. If the trip corresponds to exact_times=0, + // then its start_time may be arbitrary, and is initially expected to be the + // first departure of the trip. Once established, the start_time of this + // frequency-based trip should be considered immutable, even if the first + // departure time changes -- that time change may instead be reflected in a + // StopTimeUpdate. + // Format and semantics of the field is same as that of + // GTFS/frequencies.txt/start_time, e.g., 11:15:35 or 25:15:35. + StartTime *string `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` + // The scheduled start date of this trip instance. + // Must be provided to disambiguate trips that are so late as to collide with + // a scheduled trip on a next day. For example, for a train that departs 8:00 + // and 20:00 every day, and is 12 hours late, there would be two distinct + // trips on the same time. + // This field can be provided but is not mandatory for schedules in which such + // collisions are impossible - for example, a service running on hourly + // schedule where a vehicle that is one hour late is not considered to be + // related to schedule anymore. + // In YYYYMMDD format. + StartDate *string `protobuf:"bytes,3,opt,name=start_date,json=startDate" json:"start_date,omitempty"` + ScheduleRelationship *TripDescriptor_ScheduleRelationship `protobuf:"varint,4,opt,name=schedule_relationship,json=scheduleRelationship,enum=transit_realtime.TripDescriptor_ScheduleRelationship" json:"schedule_relationship,omitempty"` +} + +func (x *TripDescriptor) Reset() { + *x = TripDescriptor{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TripDescriptor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TripDescriptor) ProtoMessage() {} + +func (x *TripDescriptor) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TripDescriptor.ProtoReflect.Descriptor instead. +func (*TripDescriptor) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{8} +} + +var extRange_TripDescriptor = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use TripDescriptor.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*TripDescriptor) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_TripDescriptor +} + +func (x *TripDescriptor) GetTripId() string { + if x != nil && x.TripId != nil { + return *x.TripId + } + return "" +} + +func (x *TripDescriptor) GetRouteId() string { + if x != nil && x.RouteId != nil { + return *x.RouteId + } + return "" +} + +func (x *TripDescriptor) GetDirectionId() uint32 { + if x != nil && x.DirectionId != nil { + return *x.DirectionId + } + return 0 +} + +func (x *TripDescriptor) GetStartTime() string { + if x != nil && x.StartTime != nil { + return *x.StartTime + } + return "" +} + +func (x *TripDescriptor) GetStartDate() string { + if x != nil && x.StartDate != nil { + return *x.StartDate + } + return "" +} + +func (x *TripDescriptor) GetScheduleRelationship() TripDescriptor_ScheduleRelationship { + if x != nil && x.ScheduleRelationship != nil { + return *x.ScheduleRelationship + } + return TripDescriptor_SCHEDULED +} + +// Identification information for the vehicle performing the trip. +type VehicleDescriptor struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // Internal system identification of the vehicle. Should be unique per + // vehicle, and can be used for tracking the vehicle as it proceeds through + // the system. + Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + // User visible label, i.e., something that must be shown to the passenger to + // help identify the correct vehicle. + Label *string `protobuf:"bytes,2,opt,name=label" json:"label,omitempty"` + // The license plate of the vehicle. + LicensePlate *string `protobuf:"bytes,3,opt,name=license_plate,json=licensePlate" json:"license_plate,omitempty"` +} + +func (x *VehicleDescriptor) Reset() { + *x = VehicleDescriptor{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VehicleDescriptor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VehicleDescriptor) ProtoMessage() {} + +func (x *VehicleDescriptor) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VehicleDescriptor.ProtoReflect.Descriptor instead. +func (*VehicleDescriptor) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{9} +} + +var extRange_VehicleDescriptor = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use VehicleDescriptor.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*VehicleDescriptor) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_VehicleDescriptor +} + +func (x *VehicleDescriptor) GetId() string { + if x != nil && x.Id != nil { + return *x.Id + } + return "" +} + +func (x *VehicleDescriptor) GetLabel() string { + if x != nil && x.Label != nil { + return *x.Label + } + return "" +} + +func (x *VehicleDescriptor) GetLicensePlate() string { + if x != nil && x.LicensePlate != nil { + return *x.LicensePlate + } + return "" +} + +// A selector for an entity in a GTFS feed. +type EntitySelector struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // The values of the fields should correspond to the appropriate fields in the + // GTFS feed. + // At least one specifier must be given. If several are given, then the + // matching has to apply to all the given specifiers. + AgencyId *string `protobuf:"bytes,1,opt,name=agency_id,json=agencyId" json:"agency_id,omitempty"` + RouteId *string `protobuf:"bytes,2,opt,name=route_id,json=routeId" json:"route_id,omitempty"` + // corresponds to route_type in GTFS. + RouteType *int32 `protobuf:"varint,3,opt,name=route_type,json=routeType" json:"route_type,omitempty"` + Trip *TripDescriptor `protobuf:"bytes,4,opt,name=trip" json:"trip,omitempty"` + StopId *string `protobuf:"bytes,5,opt,name=stop_id,json=stopId" json:"stop_id,omitempty"` + // Corresponds to trip direction_id in GTFS trips.txt. If provided the + // route_id must also be provided. + DirectionId *uint32 `protobuf:"varint,6,opt,name=direction_id,json=directionId" json:"direction_id,omitempty"` +} + +func (x *EntitySelector) Reset() { + *x = EntitySelector{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntitySelector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntitySelector) ProtoMessage() {} + +func (x *EntitySelector) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntitySelector.ProtoReflect.Descriptor instead. +func (*EntitySelector) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{10} +} + +var extRange_EntitySelector = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use EntitySelector.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*EntitySelector) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_EntitySelector +} + +func (x *EntitySelector) GetAgencyId() string { + if x != nil && x.AgencyId != nil { + return *x.AgencyId + } + return "" +} + +func (x *EntitySelector) GetRouteId() string { + if x != nil && x.RouteId != nil { + return *x.RouteId + } + return "" +} + +func (x *EntitySelector) GetRouteType() int32 { + if x != nil && x.RouteType != nil { + return *x.RouteType + } + return 0 +} + +func (x *EntitySelector) GetTrip() *TripDescriptor { + if x != nil { + return x.Trip + } + return nil +} + +func (x *EntitySelector) GetStopId() string { + if x != nil && x.StopId != nil { + return *x.StopId + } + return "" +} + +func (x *EntitySelector) GetDirectionId() uint32 { + if x != nil && x.DirectionId != nil { + return *x.DirectionId + } + return 0 +} + +// An internationalized message containing per-language versions of a snippet of +// text or a URL. +// One of the strings from a message will be picked up. The resolution proceeds +// as follows: +// 1. If the UI language matches the language code of a translation, +// the first matching translation is picked. +// 2. If a default UI language (e.g., English) matches the language code of a +// translation, the first matching translation is picked. +// 3. If some translation has an unspecified language code, that translation is +// picked. +type TranslatedString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // At least one translation must be provided. + Translation []*TranslatedString_Translation `protobuf:"bytes,1,rep,name=translation" json:"translation,omitempty"` +} + +func (x *TranslatedString) Reset() { + *x = TranslatedString{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TranslatedString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TranslatedString) ProtoMessage() {} + +func (x *TranslatedString) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TranslatedString.ProtoReflect.Descriptor instead. +func (*TranslatedString) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{11} +} + +var extRange_TranslatedString = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use TranslatedString.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*TranslatedString) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_TranslatedString +} + +func (x *TranslatedString) GetTranslation() []*TranslatedString_Translation { + if x != nil { + return x.Translation + } + return nil +} + +// Timing information for a single predicted event (either arrival or +// departure). +// Timing consists of delay and/or estimated time, and uncertainty. +// - delay should be used when the prediction is given relative to some +// existing schedule in GTFS. +// - time should be given whether there is a predicted schedule or not. If +// both time and delay are specified, time will take precedence +// (although normally, time, if given for a scheduled trip, should be +// equal to scheduled time in GTFS + delay). +// +// Uncertainty applies equally to both time and delay. +// The uncertainty roughly specifies the expected error in true delay (but +// note, we don't yet define its precise statistical meaning). It's possible +// for the uncertainty to be 0, for example for trains that are driven under +// computer timing control. +type TripUpdate_StopTimeEvent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // Delay (in seconds) can be positive (meaning that the vehicle is late) or + // negative (meaning that the vehicle is ahead of schedule). Delay of 0 + // means that the vehicle is exactly on time. + Delay *int32 `protobuf:"varint,1,opt,name=delay" json:"delay,omitempty"` + // Event as absolute time. + // In Unix time (i.e., number of seconds since January 1st 1970 00:00:00 + // UTC). + Time *int64 `protobuf:"varint,2,opt,name=time" json:"time,omitempty"` + // If uncertainty is omitted, it is interpreted as unknown. + // If the prediction is unknown or too uncertain, the delay (or time) field + // should be empty. In such case, the uncertainty field is ignored. + // To specify a completely certain prediction, set its uncertainty to 0. + Uncertainty *int32 `protobuf:"varint,3,opt,name=uncertainty" json:"uncertainty,omitempty"` +} + +func (x *TripUpdate_StopTimeEvent) Reset() { + *x = TripUpdate_StopTimeEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TripUpdate_StopTimeEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TripUpdate_StopTimeEvent) ProtoMessage() {} + +func (x *TripUpdate_StopTimeEvent) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TripUpdate_StopTimeEvent.ProtoReflect.Descriptor instead. +func (*TripUpdate_StopTimeEvent) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{3, 0} +} + +var extRange_TripUpdate_StopTimeEvent = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use TripUpdate_StopTimeEvent.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*TripUpdate_StopTimeEvent) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_TripUpdate_StopTimeEvent +} + +func (x *TripUpdate_StopTimeEvent) GetDelay() int32 { + if x != nil && x.Delay != nil { + return *x.Delay + } + return 0 +} + +func (x *TripUpdate_StopTimeEvent) GetTime() int64 { + if x != nil && x.Time != nil { + return *x.Time + } + return 0 +} + +func (x *TripUpdate_StopTimeEvent) GetUncertainty() int32 { + if x != nil && x.Uncertainty != nil { + return *x.Uncertainty + } + return 0 +} + +// Realtime update for arrival and/or departure events for a given stop on a +// trip. Updates can be supplied for both past and future events. +// The producer is allowed, although not required, to drop past events. +type TripUpdate_StopTimeUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // Must be the same as in stop_times.txt in the corresponding GTFS feed. + StopSequence *uint32 `protobuf:"varint,1,opt,name=stop_sequence,json=stopSequence" json:"stop_sequence,omitempty"` + // Must be the same as in stops.txt in the corresponding GTFS feed. + StopId *string `protobuf:"bytes,4,opt,name=stop_id,json=stopId" json:"stop_id,omitempty"` + Arrival *TripUpdate_StopTimeEvent `protobuf:"bytes,2,opt,name=arrival" json:"arrival,omitempty"` + Departure *TripUpdate_StopTimeEvent `protobuf:"bytes,3,opt,name=departure" json:"departure,omitempty"` + ScheduleRelationship *TripUpdate_StopTimeUpdate_ScheduleRelationship `protobuf:"varint,5,opt,name=schedule_relationship,json=scheduleRelationship,enum=transit_realtime.TripUpdate_StopTimeUpdate_ScheduleRelationship,def=0" json:"schedule_relationship,omitempty"` +} + +// Default values for TripUpdate_StopTimeUpdate fields. +const ( + Default_TripUpdate_StopTimeUpdate_ScheduleRelationship = TripUpdate_StopTimeUpdate_SCHEDULED +) + +func (x *TripUpdate_StopTimeUpdate) Reset() { + *x = TripUpdate_StopTimeUpdate{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TripUpdate_StopTimeUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TripUpdate_StopTimeUpdate) ProtoMessage() {} + +func (x *TripUpdate_StopTimeUpdate) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TripUpdate_StopTimeUpdate.ProtoReflect.Descriptor instead. +func (*TripUpdate_StopTimeUpdate) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{3, 1} +} + +var extRange_TripUpdate_StopTimeUpdate = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use TripUpdate_StopTimeUpdate.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*TripUpdate_StopTimeUpdate) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_TripUpdate_StopTimeUpdate +} + +func (x *TripUpdate_StopTimeUpdate) GetStopSequence() uint32 { + if x != nil && x.StopSequence != nil { + return *x.StopSequence + } + return 0 +} + +func (x *TripUpdate_StopTimeUpdate) GetStopId() string { + if x != nil && x.StopId != nil { + return *x.StopId + } + return "" +} + +func (x *TripUpdate_StopTimeUpdate) GetArrival() *TripUpdate_StopTimeEvent { + if x != nil { + return x.Arrival + } + return nil +} + +func (x *TripUpdate_StopTimeUpdate) GetDeparture() *TripUpdate_StopTimeEvent { + if x != nil { + return x.Departure + } + return nil +} + +func (x *TripUpdate_StopTimeUpdate) GetScheduleRelationship() TripUpdate_StopTimeUpdate_ScheduleRelationship { + if x != nil && x.ScheduleRelationship != nil { + return *x.ScheduleRelationship + } + return Default_TripUpdate_StopTimeUpdate_ScheduleRelationship +} + +// Defines updated properties of the trip +// NOTE: This message is still experimental, and subject to change. It may be formally adopted in the future. +type TripUpdate_TripProperties struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt + // but will start at a different service date and/or time (defined using the TripProperties.start_date and + // TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different + // than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not + // be populated and will be ignored by consumers. + // NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future. + TripId *string `protobuf:"bytes,1,opt,name=trip_id,json=tripId" json:"trip_id,omitempty"` + // Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if + // schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers. + // NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future. + StartDate *string `protobuf:"bytes,2,opt,name=start_date,json=startDate" json:"start_date,omitempty"` + // Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time + // in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset + // between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a + // departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value + // of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction + // delay values are applied to this calculated schedule time to determine the predicted time. For example, if a + // departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time + // prediction time values do not have any offset applied to them and indicate the predicted time as provided. + // For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time + // is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be + // populated and will be ignored by consumers. + // NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future. + StartTime *string `protobuf:"bytes,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"` +} + +func (x *TripUpdate_TripProperties) Reset() { + *x = TripUpdate_TripProperties{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TripUpdate_TripProperties) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TripUpdate_TripProperties) ProtoMessage() {} + +func (x *TripUpdate_TripProperties) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TripUpdate_TripProperties.ProtoReflect.Descriptor instead. +func (*TripUpdate_TripProperties) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{3, 2} +} + +var extRange_TripUpdate_TripProperties = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use TripUpdate_TripProperties.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*TripUpdate_TripProperties) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_TripUpdate_TripProperties +} + +func (x *TripUpdate_TripProperties) GetTripId() string { + if x != nil && x.TripId != nil { + return *x.TripId + } + return "" +} + +func (x *TripUpdate_TripProperties) GetStartDate() string { + if x != nil && x.StartDate != nil { + return *x.StartDate + } + return "" +} + +func (x *TripUpdate_TripProperties) GetStartTime() string { + if x != nil && x.StartTime != nil { + return *x.StartTime + } + return "" +} + +type TranslatedString_Translation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + extensionFields protoimpl.ExtensionFields + + // A UTF-8 string containing the message. + Text *string `protobuf:"bytes,1,req,name=text" json:"text,omitempty"` + // BCP-47 language code. Can be omitted if the language is unknown or if + // no i18n is done at all for the feed. At most one translation is + // allowed to have an unspecified language tag. + Language *string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"` +} + +func (x *TranslatedString_Translation) Reset() { + *x = TranslatedString_Translation{} + if protoimpl.UnsafeEnabled { + mi := &file_gtfs_realtime_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TranslatedString_Translation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TranslatedString_Translation) ProtoMessage() {} + +func (x *TranslatedString_Translation) ProtoReflect() protoreflect.Message { + mi := &file_gtfs_realtime_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TranslatedString_Translation.ProtoReflect.Descriptor instead. +func (*TranslatedString_Translation) Descriptor() ([]byte, []int) { + return file_gtfs_realtime_proto_rawDescGZIP(), []int{11, 0} +} + +var extRange_TranslatedString_Translation = []protoiface.ExtensionRangeV1{ + {Start: 1000, End: 1999}, + {Start: 9000, End: 9999}, +} + +// Deprecated: Use TranslatedString_Translation.ProtoReflect.Descriptor.ExtensionRanges instead. +func (*TranslatedString_Translation) ExtensionRangeArray() []protoiface.ExtensionRangeV1 { + return extRange_TranslatedString_Translation +} + +func (x *TranslatedString_Translation) GetText() string { + if x != nil && x.Text != nil { + return *x.Text + } + return "" +} + +func (x *TranslatedString_Translation) GetLanguage() string { + if x != nil && x.Language != nil { + return *x.Language + } + return "" +} + +var File_gtfs_realtime_proto protoreflect.FileDescriptor + +var file_gtfs_realtime_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x67, 0x74, 0x66, 0x73, 0x2d, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, + 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x0b, 0x46, 0x65, 0x65, 0x64, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, + 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x46, 0x65, 0x65, 0x64, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, + 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x46, 0x65, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x06, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, 0x08, 0xa8, 0x46, + 0x10, 0x90, 0x4e, 0x22, 0x87, 0x02, 0x0a, 0x0a, 0x46, 0x65, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x67, 0x74, 0x66, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x02, 0x28, + 0x09, 0x52, 0x13, 0x67, 0x74, 0x66, 0x73, 0x52, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x61, 0x0a, 0x0e, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, + 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x46, 0x65, 0x65, 0x64, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x0c, 0x46, 0x55, 0x4c, + 0x4c, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x53, 0x45, 0x54, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x34, 0x0a, 0x0e, 0x49, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x55, 0x4c, + 0x4c, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, + 0x49, 0x46, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x2a, 0x06, 0x08, + 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, 0x08, 0xa8, 0x46, 0x10, 0x90, 0x4e, 0x22, 0xfd, 0x01, + 0x0a, 0x0a, 0x46, 0x65, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x24, 0x0a, 0x0a, + 0x69, 0x73, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, + 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x74, 0x72, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, + 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x12, 0x2d, + 0x0a, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x2a, 0x06, 0x08, + 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, 0x08, 0xa8, 0x46, 0x10, 0x90, 0x4e, 0x22, 0x9e, 0x08, + 0x0a, 0x0a, 0x54, 0x72, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x04, + 0x74, 0x72, 0x69, 0x70, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x72, + 0x69, 0x70, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x74, 0x72, + 0x69, 0x70, 0x12, 0x3d, 0x0a, 0x07, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, + 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, + 0x65, 0x12, 0x55, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, + 0x72, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, + 0x6d, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x70, 0x54, 0x69, + 0x6d, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x54, 0x0a, 0x0f, + 0x74, 0x72, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, + 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x52, 0x0e, 0x74, 0x72, 0x69, 0x70, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x1a, 0x6b, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x2a, + 0x06, 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, 0x08, 0xa8, 0x46, 0x10, 0x90, 0x4e, 0x1a, + 0xc3, 0x03, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x70, 0x53, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, + 0x12, 0x44, 0x0a, 0x07, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, + 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x61, + 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, + 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x72, 0x69, + 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x80, 0x01, 0x0a, 0x15, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x40, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x53, + 0x74, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, + 0x69, 0x70, 0x3a, 0x09, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x52, 0x14, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x68, 0x69, 0x70, 0x22, 0x50, 0x0a, 0x14, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12, 0x0d, 0x0a, 0x09, 0x53, + 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4b, + 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x4f, 0x5f, 0x44, 0x41, + 0x54, 0x41, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, 0x08, + 0xa8, 0x46, 0x10, 0x90, 0x4e, 0x1a, 0x77, 0x0a, 0x0e, 0x54, 0x72, 0x69, 0x70, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x70, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x2a, 0x06, + 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, 0x08, 0xa8, 0x46, 0x10, 0x90, 0x4e, 0x2a, 0x06, + 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, 0x08, 0xa8, 0x46, 0x10, 0x90, 0x4e, 0x22, 0x8d, + 0x08, 0x0a, 0x0f, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x72, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x6f, 0x72, 0x52, 0x04, 0x74, 0x72, 0x69, 0x70, 0x12, 0x3d, 0x0a, 0x07, 0x76, 0x65, 0x68, 0x69, + 0x63, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x65, 0x68, + 0x69, 0x63, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x07, + 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, + 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x53, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x69, 0x0a, 0x0e, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, + 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, + 0x74, 0x6f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a, 0x0d, 0x49, 0x4e, 0x5f, 0x54, 0x52, + 0x41, 0x4e, 0x53, 0x49, 0x54, 0x5f, 0x54, 0x4f, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x5c, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x31, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x5c, 0x0a, 0x10, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x61, 0x6e, 0x63, 0x79, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x4f, 0x63, 0x63, 0x75, 0x70, 0x61, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x0f, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x61, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x31, 0x0a, 0x14, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x61, 0x6e, 0x63, 0x79, 0x5f, 0x70, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x13, 0x6f, 0x63, 0x63, 0x75, 0x70, 0x61, 0x6e, 0x63, 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x61, 0x67, 0x65, 0x22, 0x47, 0x0a, 0x11, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, + 0x74, 0x6f, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x43, + 0x4f, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x54, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, + 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4e, + 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x5f, 0x54, 0x4f, 0x10, 0x02, 0x22, 0x7d, 0x0a, + 0x0f, 0x43, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x47, + 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x00, 0x12, 0x14, + 0x0a, 0x10, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x4d, 0x4f, 0x4f, 0x54, 0x48, + 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x41, 0x4e, 0x44, + 0x5f, 0x47, 0x4f, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4e, 0x47, 0x45, 0x53, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x45, 0x56, 0x45, 0x52, 0x45, 0x5f, + 0x43, 0x4f, 0x4e, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x22, 0xaf, 0x01, 0x0a, + 0x0f, 0x4f, 0x63, 0x63, 0x75, 0x70, 0x61, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x4d, + 0x41, 0x4e, 0x59, 0x5f, 0x53, 0x45, 0x41, 0x54, 0x53, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, + 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x45, 0x57, 0x5f, 0x53, 0x45, 0x41, + 0x54, 0x53, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x16, + 0x0a, 0x12, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x5f, + 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x52, 0x55, 0x53, 0x48, 0x45, + 0x44, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x5f, + 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x05, + 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x49, 0x4e, + 0x47, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x45, 0x4e, 0x47, 0x45, 0x52, 0x53, 0x10, 0x06, 0x2a, 0x06, + 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, 0x08, 0xa8, 0x46, 0x10, 0x90, 0x4e, 0x22, 0x81, + 0x0a, 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x40, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0c, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x49, 0x0a, 0x0f, 0x69, 0x6e, + 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, + 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0e, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, + 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x43, 0x61, + 0x75, 0x73, 0x65, 0x3a, 0x0d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, 0x41, 0x55, + 0x53, 0x45, 0x52, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x06, 0x65, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x2e, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x3a, 0x0e, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, + 0x57, 0x4e, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x52, 0x06, 0x65, 0x66, 0x66, 0x65, 0x63, + 0x74, 0x12, 0x34, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x43, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x65, 0x78, 0x74, 0x12, 0x4d, 0x0a, 0x10, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, + 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, + 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x12, 0x4a, 0x0a, 0x0f, 0x74, + 0x74, 0x73, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, + 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, + 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0d, 0x74, 0x74, 0x73, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x54, 0x65, 0x78, 0x74, 0x12, 0x54, 0x0a, 0x14, 0x74, 0x74, 0x73, 0x5f, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, + 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, + 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x74, 0x74, 0x73, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x12, 0x5e, 0x0a, + 0x0e, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, + 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x53, + 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3a, 0x10, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x52, 0x0d, + 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xd8, 0x01, + 0x0a, 0x05, 0x43, 0x61, 0x75, 0x73, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, + 0x57, 0x4e, 0x5f, 0x43, 0x41, 0x55, 0x53, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x54, + 0x48, 0x45, 0x52, 0x5f, 0x43, 0x41, 0x55, 0x53, 0x45, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x54, + 0x45, 0x43, 0x48, 0x4e, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x52, 0x4f, 0x42, 0x4c, 0x45, 0x4d, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4b, 0x45, 0x10, 0x04, 0x12, 0x11, + 0x0a, 0x0d, 0x44, 0x45, 0x4d, 0x4f, 0x4e, 0x53, 0x54, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x43, 0x43, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x10, 0x06, 0x12, + 0x0b, 0x0a, 0x07, 0x48, 0x4f, 0x4c, 0x49, 0x44, 0x41, 0x59, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, + 0x57, 0x45, 0x41, 0x54, 0x48, 0x45, 0x52, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x41, 0x49, + 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, + 0x4e, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, + 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x10, + 0x0b, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x45, 0x44, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x45, 0x4d, 0x45, + 0x52, 0x47, 0x45, 0x4e, 0x43, 0x59, 0x10, 0x0c, 0x22, 0xdd, 0x01, 0x0a, 0x06, 0x45, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, + 0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x44, 0x55, 0x43, 0x45, 0x44, 0x5f, 0x53, + 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x49, 0x47, 0x4e, + 0x49, 0x46, 0x49, 0x43, 0x41, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x53, 0x10, 0x03, + 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x54, 0x4f, 0x55, 0x52, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, + 0x41, 0x44, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, + 0x43, 0x45, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x54, + 0x48, 0x45, 0x52, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x10, 0x08, + 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x09, + 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x10, 0x0a, 0x12, + 0x17, 0x0a, 0x13, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, + 0x5f, 0x49, 0x53, 0x53, 0x55, 0x45, 0x10, 0x0b, 0x22, 0x48, 0x0a, 0x0d, 0x53, 0x65, 0x76, 0x65, + 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x10, 0x01, 0x12, + 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, + 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x56, 0x45, 0x52, 0x45, + 0x10, 0x04, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, 0x08, 0xa8, 0x46, 0x10, + 0x90, 0x4e, 0x22, 0x43, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, + 0x06, 0x08, 0xa8, 0x46, 0x10, 0x90, 0x4e, 0x22, 0xa0, 0x01, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x02, 0x28, 0x02, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, + 0x02, 0x28, 0x02, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x62, 0x65, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x07, 0x62, 0x65, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x64, 0x6f, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6f, 0x64, 0x6f, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, + 0xd0, 0x0f, 0x2a, 0x06, 0x08, 0xa8, 0x46, 0x10, 0x90, 0x4e, 0x22, 0x97, 0x03, 0x0a, 0x0e, 0x54, + 0x72, 0x69, 0x70, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x17, 0x0a, + 0x07, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x74, 0x72, 0x69, 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x6a, 0x0a, 0x15, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x35, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x72, 0x69, 0x70, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x6f, 0x72, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x22, 0x74, + 0x0a, 0x14, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, + 0x4c, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x01, + 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x10, + 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, + 0x13, 0x0a, 0x0b, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x05, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, + 0x45, 0x44, 0x10, 0x06, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, 0x08, 0xa8, + 0x46, 0x10, 0x90, 0x4e, 0x22, 0x6e, 0x0a, 0x11, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, + 0x23, 0x0a, 0x0d, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x50, + 0x6c, 0x61, 0x74, 0x65, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, 0x08, 0xa8, + 0x46, 0x10, 0x90, 0x4e, 0x22, 0xe9, 0x01, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x63, + 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x67, 0x65, 0x6e, + 0x63, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, + 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, + 0x0a, 0x04, 0x74, 0x72, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x54, 0x72, 0x69, 0x70, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x04, + 0x74, 0x72, 0x69, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x21, 0x0a, + 0x0c, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, 0x08, 0xa8, 0x46, 0x10, 0x90, 0x4e, + 0x22, 0xc3, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x50, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x4d, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, + 0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, + 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, + 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, + 0x08, 0xa8, 0x46, 0x10, 0x90, 0x4e, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xd0, 0x0f, 0x2a, 0x06, + 0x08, 0xa8, 0x46, 0x10, 0x90, 0x4e, 0x42, 0x1d, 0x0a, 0x1b, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x2e, 0x72, 0x65, 0x61, + 0x6c, 0x74, 0x69, 0x6d, 0x65, +} + +var ( + file_gtfs_realtime_proto_rawDescOnce sync.Once + file_gtfs_realtime_proto_rawDescData = file_gtfs_realtime_proto_rawDesc +) + +func file_gtfs_realtime_proto_rawDescGZIP() []byte { + file_gtfs_realtime_proto_rawDescOnce.Do(func() { + file_gtfs_realtime_proto_rawDescData = protoimpl.X.CompressGZIP(file_gtfs_realtime_proto_rawDescData) + }) + return file_gtfs_realtime_proto_rawDescData +} + +var file_gtfs_realtime_proto_enumTypes = make([]protoimpl.EnumInfo, 9) +var file_gtfs_realtime_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_gtfs_realtime_proto_goTypes = []interface{}{ + (FeedHeader_Incrementality)(0), // 0: transit_realtime.FeedHeader.Incrementality + (TripUpdate_StopTimeUpdate_ScheduleRelationship)(0), // 1: transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship + (VehiclePosition_VehicleStopStatus)(0), // 2: transit_realtime.VehiclePosition.VehicleStopStatus + (VehiclePosition_CongestionLevel)(0), // 3: transit_realtime.VehiclePosition.CongestionLevel + (VehiclePosition_OccupancyStatus)(0), // 4: transit_realtime.VehiclePosition.OccupancyStatus + (Alert_Cause)(0), // 5: transit_realtime.Alert.Cause + (Alert_Effect)(0), // 6: transit_realtime.Alert.Effect + (Alert_SeverityLevel)(0), // 7: transit_realtime.Alert.SeverityLevel + (TripDescriptor_ScheduleRelationship)(0), // 8: transit_realtime.TripDescriptor.ScheduleRelationship + (*FeedMessage)(nil), // 9: transit_realtime.FeedMessage + (*FeedHeader)(nil), // 10: transit_realtime.FeedHeader + (*FeedEntity)(nil), // 11: transit_realtime.FeedEntity + (*TripUpdate)(nil), // 12: transit_realtime.TripUpdate + (*VehiclePosition)(nil), // 13: transit_realtime.VehiclePosition + (*Alert)(nil), // 14: transit_realtime.Alert + (*TimeRange)(nil), // 15: transit_realtime.TimeRange + (*Position)(nil), // 16: transit_realtime.Position + (*TripDescriptor)(nil), // 17: transit_realtime.TripDescriptor + (*VehicleDescriptor)(nil), // 18: transit_realtime.VehicleDescriptor + (*EntitySelector)(nil), // 19: transit_realtime.EntitySelector + (*TranslatedString)(nil), // 20: transit_realtime.TranslatedString + (*TripUpdate_StopTimeEvent)(nil), // 21: transit_realtime.TripUpdate.StopTimeEvent + (*TripUpdate_StopTimeUpdate)(nil), // 22: transit_realtime.TripUpdate.StopTimeUpdate + (*TripUpdate_TripProperties)(nil), // 23: transit_realtime.TripUpdate.TripProperties + (*TranslatedString_Translation)(nil), // 24: transit_realtime.TranslatedString.Translation +} +var file_gtfs_realtime_proto_depIdxs = []int32{ + 10, // 0: transit_realtime.FeedMessage.header:type_name -> transit_realtime.FeedHeader + 11, // 1: transit_realtime.FeedMessage.entity:type_name -> transit_realtime.FeedEntity + 0, // 2: transit_realtime.FeedHeader.incrementality:type_name -> transit_realtime.FeedHeader.Incrementality + 12, // 3: transit_realtime.FeedEntity.trip_update:type_name -> transit_realtime.TripUpdate + 13, // 4: transit_realtime.FeedEntity.vehicle:type_name -> transit_realtime.VehiclePosition + 14, // 5: transit_realtime.FeedEntity.alert:type_name -> transit_realtime.Alert + 17, // 6: transit_realtime.TripUpdate.trip:type_name -> transit_realtime.TripDescriptor + 18, // 7: transit_realtime.TripUpdate.vehicle:type_name -> transit_realtime.VehicleDescriptor + 22, // 8: transit_realtime.TripUpdate.stop_time_update:type_name -> transit_realtime.TripUpdate.StopTimeUpdate + 23, // 9: transit_realtime.TripUpdate.trip_properties:type_name -> transit_realtime.TripUpdate.TripProperties + 17, // 10: transit_realtime.VehiclePosition.trip:type_name -> transit_realtime.TripDescriptor + 18, // 11: transit_realtime.VehiclePosition.vehicle:type_name -> transit_realtime.VehicleDescriptor + 16, // 12: transit_realtime.VehiclePosition.position:type_name -> transit_realtime.Position + 2, // 13: transit_realtime.VehiclePosition.current_status:type_name -> transit_realtime.VehiclePosition.VehicleStopStatus + 3, // 14: transit_realtime.VehiclePosition.congestion_level:type_name -> transit_realtime.VehiclePosition.CongestionLevel + 4, // 15: transit_realtime.VehiclePosition.occupancy_status:type_name -> transit_realtime.VehiclePosition.OccupancyStatus + 15, // 16: transit_realtime.Alert.active_period:type_name -> transit_realtime.TimeRange + 19, // 17: transit_realtime.Alert.informed_entity:type_name -> transit_realtime.EntitySelector + 5, // 18: transit_realtime.Alert.cause:type_name -> transit_realtime.Alert.Cause + 6, // 19: transit_realtime.Alert.effect:type_name -> transit_realtime.Alert.Effect + 20, // 20: transit_realtime.Alert.url:type_name -> transit_realtime.TranslatedString + 20, // 21: transit_realtime.Alert.header_text:type_name -> transit_realtime.TranslatedString + 20, // 22: transit_realtime.Alert.description_text:type_name -> transit_realtime.TranslatedString + 20, // 23: transit_realtime.Alert.tts_header_text:type_name -> transit_realtime.TranslatedString + 20, // 24: transit_realtime.Alert.tts_description_text:type_name -> transit_realtime.TranslatedString + 7, // 25: transit_realtime.Alert.severity_level:type_name -> transit_realtime.Alert.SeverityLevel + 8, // 26: transit_realtime.TripDescriptor.schedule_relationship:type_name -> transit_realtime.TripDescriptor.ScheduleRelationship + 17, // 27: transit_realtime.EntitySelector.trip:type_name -> transit_realtime.TripDescriptor + 24, // 28: transit_realtime.TranslatedString.translation:type_name -> transit_realtime.TranslatedString.Translation + 21, // 29: transit_realtime.TripUpdate.StopTimeUpdate.arrival:type_name -> transit_realtime.TripUpdate.StopTimeEvent + 21, // 30: transit_realtime.TripUpdate.StopTimeUpdate.departure:type_name -> transit_realtime.TripUpdate.StopTimeEvent + 1, // 31: transit_realtime.TripUpdate.StopTimeUpdate.schedule_relationship:type_name -> transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship + 32, // [32:32] is the sub-list for method output_type + 32, // [32:32] is the sub-list for method input_type + 32, // [32:32] is the sub-list for extension type_name + 32, // [32:32] is the sub-list for extension extendee + 0, // [0:32] is the sub-list for field type_name +} + +func init() { file_gtfs_realtime_proto_init() } +func file_gtfs_realtime_proto_init() { + if File_gtfs_realtime_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_gtfs_realtime_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FeedMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FeedHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FeedEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TripUpdate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VehiclePosition); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Alert); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TimeRange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Position); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TripDescriptor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VehicleDescriptor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntitySelector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TranslatedString); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TripUpdate_StopTimeEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TripUpdate_StopTimeUpdate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TripUpdate_TripProperties); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + file_gtfs_realtime_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TranslatedString_Translation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + case 3: + return &v.extensionFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_gtfs_realtime_proto_rawDesc, + NumEnums: 9, + NumMessages: 16, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_gtfs_realtime_proto_goTypes, + DependencyIndexes: file_gtfs_realtime_proto_depIdxs, + EnumInfos: file_gtfs_realtime_proto_enumTypes, + MessageInfos: file_gtfs_realtime_proto_msgTypes, + }.Build() + File_gtfs_realtime_proto = out.File + file_gtfs_realtime_proto_rawDesc = nil + file_gtfs_realtime_proto_goTypes = nil + file_gtfs_realtime_proto_depIdxs = nil +} diff --git a/java/src/main/java/com/google/transit/realtime/GtfsRealtime.java b/build/java/com/google/transit/realtime/GtfsRealtime.java similarity index 85% rename from java/src/main/java/com/google/transit/realtime/GtfsRealtime.java rename to build/java/com/google/transit/realtime/GtfsRealtime.java index c6b6b74..d9575bb 100644 --- a/java/src/main/java/com/google/transit/realtime/GtfsRealtime.java +++ b/build/java/com/google/transit/realtime/GtfsRealtime.java @@ -1,19 +1,3 @@ -/** - * Copyright 2015-2019 Google, Inc., MobilityData - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - // Generated by the protocol buffer compiler. DO NOT EDIT! // source: gtfs-realtime.proto @@ -41,6 +25,7 @@ public interface FeedMessageOrBuilder extends * * * required .transit_realtime.FeedHeader header = 1; + * @return Whether the header field is set. */ boolean hasHeader(); /** @@ -49,6 +34,7 @@ public interface FeedMessageOrBuilder extends * * * required .transit_realtime.FeedHeader header = 1; + * @return The header. */ com.google.transit.realtime.GtfsRealtime.FeedHeader getHeader(); /** @@ -119,7 +105,7 @@ com.google.transit.realtime.GtfsRealtime.FeedEntityOrBuilder getEntityOrBuilder( * * Protobuf type {@code transit_realtime.FeedMessage} */ - public static final class FeedMessage extends + public static final class FeedMessage extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage< FeedMessage> implements // @@protoc_insertion_point(message_implements:transit_realtime.FeedMessage) @@ -133,6 +119,13 @@ private FeedMessage() { entity_ = java.util.Collections.emptyList(); } + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new FeedMessage(); + } + @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { @@ -223,7 +216,9 @@ private FeedMessage( * * * required .transit_realtime.FeedHeader header = 1; + * @return Whether the header field is set. */ + @java.lang.Override public boolean hasHeader() { return ((bitField0_ & 0x00000001) != 0); } @@ -233,7 +228,9 @@ public boolean hasHeader() { * * * required .transit_realtime.FeedHeader header = 1; + * @return The header. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.FeedHeader getHeader() { return header_ == null ? com.google.transit.realtime.GtfsRealtime.FeedHeader.getDefaultInstance() : header_; } @@ -244,6 +241,7 @@ public com.google.transit.realtime.GtfsRealtime.FeedHeader getHeader() { * * required .transit_realtime.FeedHeader header = 1; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.FeedHeaderOrBuilder getHeaderOrBuilder() { return header_ == null ? com.google.transit.realtime.GtfsRealtime.FeedHeader.getDefaultInstance() : header_; } @@ -257,6 +255,7 @@ public com.google.transit.realtime.GtfsRealtime.FeedHeaderOrBuilder getHeaderOrB * * repeated .transit_realtime.FeedEntity entity = 2; */ + @java.lang.Override public java.util.List getEntityList() { return entity_; } @@ -267,6 +266,7 @@ public java.util.List getEn * * repeated .transit_realtime.FeedEntity entity = 2; */ + @java.lang.Override public java.util.List getEntityOrBuilderList() { return entity_; @@ -278,6 +278,7 @@ public java.util.List getEn * * repeated .transit_realtime.FeedEntity entity = 2; */ + @java.lang.Override public int getEntityCount() { return entity_.size(); } @@ -288,6 +289,7 @@ public int getEntityCount() { * * repeated .transit_realtime.FeedEntity entity = 2; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.FeedEntity getEntity(int index) { return entity_.get(index); } @@ -298,6 +300,7 @@ public com.google.transit.realtime.GtfsRealtime.FeedEntity getEntity(int index) * * repeated .transit_realtime.FeedEntity entity = 2; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.FeedEntityOrBuilder getEntityOrBuilder( int index) { return entity_.get(index); @@ -345,6 +348,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) output.writeMessage(2, entity_.get(i)); } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -771,6 +775,7 @@ public Builder mergeFrom( * * * required .transit_realtime.FeedHeader header = 1; + * @return Whether the header field is set. */ public boolean hasHeader() { return ((bitField0_ & 0x00000001) != 0); @@ -781,6 +786,7 @@ public boolean hasHeader() { * * * required .transit_realtime.FeedHeader header = 1; + * @return The header. */ public com.google.transit.realtime.GtfsRealtime.FeedHeader getHeader() { if (headerBuilder_ == null) { @@ -1292,6 +1298,7 @@ public interface FeedHeaderOrBuilder extends * * * required string gtfs_realtime_version = 1; + * @return Whether the gtfsRealtimeVersion field is set. */ boolean hasGtfsRealtimeVersion(); /** @@ -1301,6 +1308,7 @@ public interface FeedHeaderOrBuilder extends * * * required string gtfs_realtime_version = 1; + * @return The gtfsRealtimeVersion. */ java.lang.String getGtfsRealtimeVersion(); /** @@ -1310,16 +1318,19 @@ public interface FeedHeaderOrBuilder extends * * * required string gtfs_realtime_version = 1; + * @return The bytes for gtfsRealtimeVersion. */ com.google.protobuf.ByteString getGtfsRealtimeVersionBytes(); /** * optional .transit_realtime.FeedHeader.Incrementality incrementality = 2 [default = FULL_DATASET]; + * @return Whether the incrementality field is set. */ boolean hasIncrementality(); /** * optional .transit_realtime.FeedHeader.Incrementality incrementality = 2 [default = FULL_DATASET]; + * @return The incrementality. */ com.google.transit.realtime.GtfsRealtime.FeedHeader.Incrementality getIncrementality(); @@ -1331,6 +1342,7 @@ public interface FeedHeaderOrBuilder extends * * * optional uint64 timestamp = 3; + * @return Whether the timestamp field is set. */ boolean hasTimestamp(); /** @@ -1341,6 +1353,7 @@ public interface FeedHeaderOrBuilder extends * * * optional uint64 timestamp = 3; + * @return The timestamp. */ long getTimestamp(); } @@ -1351,7 +1364,7 @@ public interface FeedHeaderOrBuilder extends * * Protobuf type {@code transit_realtime.FeedHeader} */ - public static final class FeedHeader extends + public static final class FeedHeader extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage< FeedHeader> implements // @@protoc_insertion_point(message_implements:transit_realtime.FeedHeader) @@ -1366,6 +1379,13 @@ private FeedHeader() { incrementality_ = 0; } + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new FeedHeader(); + } + @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { @@ -1483,6 +1503,8 @@ public final int getNumber() { } /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. * @deprecated Use {@link #forNumber(int)} instead. */ @java.lang.Deprecated @@ -1490,6 +1512,10 @@ public static Incrementality valueOf(int value) { return forNumber(value); } + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ public static Incrementality forNumber(int value) { switch (value) { case 0: return FULL_DATASET; @@ -1553,7 +1579,9 @@ private Incrementality(int value) { * * * required string gtfs_realtime_version = 1; + * @return Whether the gtfsRealtimeVersion field is set. */ + @java.lang.Override public boolean hasGtfsRealtimeVersion() { return ((bitField0_ & 0x00000001) != 0); } @@ -1564,7 +1592,9 @@ public boolean hasGtfsRealtimeVersion() { * * * required string gtfs_realtime_version = 1; + * @return The gtfsRealtimeVersion. */ + @java.lang.Override public java.lang.String getGtfsRealtimeVersion() { java.lang.Object ref = gtfsRealtimeVersion_; if (ref instanceof java.lang.String) { @@ -1586,7 +1616,9 @@ public java.lang.String getGtfsRealtimeVersion() { * * * required string gtfs_realtime_version = 1; + * @return The bytes for gtfsRealtimeVersion. */ + @java.lang.Override public com.google.protobuf.ByteString getGtfsRealtimeVersionBytes() { java.lang.Object ref = gtfsRealtimeVersion_; @@ -1605,14 +1637,16 @@ public java.lang.String getGtfsRealtimeVersion() { private int incrementality_; /** * optional .transit_realtime.FeedHeader.Incrementality incrementality = 2 [default = FULL_DATASET]; + * @return Whether the incrementality field is set. */ - public boolean hasIncrementality() { + @java.lang.Override public boolean hasIncrementality() { return ((bitField0_ & 0x00000002) != 0); } /** * optional .transit_realtime.FeedHeader.Incrementality incrementality = 2 [default = FULL_DATASET]; + * @return The incrementality. */ - public com.google.transit.realtime.GtfsRealtime.FeedHeader.Incrementality getIncrementality() { + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.FeedHeader.Incrementality getIncrementality() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.FeedHeader.Incrementality result = com.google.transit.realtime.GtfsRealtime.FeedHeader.Incrementality.valueOf(incrementality_); return result == null ? com.google.transit.realtime.GtfsRealtime.FeedHeader.Incrementality.FULL_DATASET : result; @@ -1628,7 +1662,9 @@ public com.google.transit.realtime.GtfsRealtime.FeedHeader.Incrementality getInc * * * optional uint64 timestamp = 3; + * @return Whether the timestamp field is set. */ + @java.lang.Override public boolean hasTimestamp() { return ((bitField0_ & 0x00000004) != 0); } @@ -1640,7 +1676,9 @@ public boolean hasTimestamp() { * * * optional uint64 timestamp = 3; + * @return The timestamp. */ + @java.lang.Override public long getTimestamp() { return timestamp_; } @@ -1680,6 +1718,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) output.writeUInt64(3, timestamp_); } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -2073,6 +2112,7 @@ public Builder mergeFrom( * * * required string gtfs_realtime_version = 1; + * @return Whether the gtfsRealtimeVersion field is set. */ public boolean hasGtfsRealtimeVersion() { return ((bitField0_ & 0x00000001) != 0); @@ -2084,6 +2124,7 @@ public boolean hasGtfsRealtimeVersion() { * * * required string gtfs_realtime_version = 1; + * @return The gtfsRealtimeVersion. */ public java.lang.String getGtfsRealtimeVersion() { java.lang.Object ref = gtfsRealtimeVersion_; @@ -2106,6 +2147,7 @@ public java.lang.String getGtfsRealtimeVersion() { * * * required string gtfs_realtime_version = 1; + * @return The bytes for gtfsRealtimeVersion. */ public com.google.protobuf.ByteString getGtfsRealtimeVersionBytes() { @@ -2127,6 +2169,8 @@ public java.lang.String getGtfsRealtimeVersion() { * * * required string gtfs_realtime_version = 1; + * @param value The gtfsRealtimeVersion to set. + * @return This builder for chaining. */ public Builder setGtfsRealtimeVersion( java.lang.String value) { @@ -2145,6 +2189,7 @@ public Builder setGtfsRealtimeVersion( * * * required string gtfs_realtime_version = 1; + * @return This builder for chaining. */ public Builder clearGtfsRealtimeVersion() { bitField0_ = (bitField0_ & ~0x00000001); @@ -2159,6 +2204,8 @@ public Builder clearGtfsRealtimeVersion() { * * * required string gtfs_realtime_version = 1; + * @param value The bytes for gtfsRealtimeVersion to set. + * @return This builder for chaining. */ public Builder setGtfsRealtimeVersionBytes( com.google.protobuf.ByteString value) { @@ -2174,13 +2221,16 @@ public Builder setGtfsRealtimeVersionBytes( private int incrementality_ = 0; /** * optional .transit_realtime.FeedHeader.Incrementality incrementality = 2 [default = FULL_DATASET]; + * @return Whether the incrementality field is set. */ - public boolean hasIncrementality() { + @java.lang.Override public boolean hasIncrementality() { return ((bitField0_ & 0x00000002) != 0); } /** * optional .transit_realtime.FeedHeader.Incrementality incrementality = 2 [default = FULL_DATASET]; + * @return The incrementality. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.FeedHeader.Incrementality getIncrementality() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.FeedHeader.Incrementality result = com.google.transit.realtime.GtfsRealtime.FeedHeader.Incrementality.valueOf(incrementality_); @@ -2188,6 +2238,8 @@ public com.google.transit.realtime.GtfsRealtime.FeedHeader.Incrementality getInc } /** * optional .transit_realtime.FeedHeader.Incrementality incrementality = 2 [default = FULL_DATASET]; + * @param value The incrementality to set. + * @return This builder for chaining. */ public Builder setIncrementality(com.google.transit.realtime.GtfsRealtime.FeedHeader.Incrementality value) { if (value == null) { @@ -2200,6 +2252,7 @@ public Builder setIncrementality(com.google.transit.realtime.GtfsRealtime.FeedHe } /** * optional .transit_realtime.FeedHeader.Incrementality incrementality = 2 [default = FULL_DATASET]; + * @return This builder for chaining. */ public Builder clearIncrementality() { bitField0_ = (bitField0_ & ~0x00000002); @@ -2217,7 +2270,9 @@ public Builder clearIncrementality() { * * * optional uint64 timestamp = 3; + * @return Whether the timestamp field is set. */ + @java.lang.Override public boolean hasTimestamp() { return ((bitField0_ & 0x00000004) != 0); } @@ -2229,7 +2284,9 @@ public boolean hasTimestamp() { * * * optional uint64 timestamp = 3; + * @return The timestamp. */ + @java.lang.Override public long getTimestamp() { return timestamp_; } @@ -2241,6 +2298,8 @@ public long getTimestamp() { * * * optional uint64 timestamp = 3; + * @param value The timestamp to set. + * @return This builder for chaining. */ public Builder setTimestamp(long value) { bitField0_ |= 0x00000004; @@ -2256,6 +2315,7 @@ public Builder setTimestamp(long value) { * * * optional uint64 timestamp = 3; + * @return This builder for chaining. */ public Builder clearTimestamp() { bitField0_ = (bitField0_ & ~0x00000004); @@ -2334,6 +2394,7 @@ public interface FeedEntityOrBuilder extends * * * required string id = 1; + * @return Whether the id field is set. */ boolean hasId(); /** @@ -2349,6 +2410,7 @@ public interface FeedEntityOrBuilder extends * * * required string id = 1; + * @return The id. */ java.lang.String getId(); /** @@ -2364,6 +2426,7 @@ public interface FeedEntityOrBuilder extends * * * required string id = 1; + * @return The bytes for id. */ com.google.protobuf.ByteString getIdBytes(); @@ -2375,6 +2438,7 @@ public interface FeedEntityOrBuilder extends * * * optional bool is_deleted = 2 [default = false]; + * @return Whether the isDeleted field is set. */ boolean hasIsDeleted(); /** @@ -2384,6 +2448,7 @@ public interface FeedEntityOrBuilder extends * * * optional bool is_deleted = 2 [default = false]; + * @return The isDeleted. */ boolean getIsDeleted(); @@ -2394,6 +2459,7 @@ public interface FeedEntityOrBuilder extends * * * optional .transit_realtime.TripUpdate trip_update = 3; + * @return Whether the tripUpdate field is set. */ boolean hasTripUpdate(); /** @@ -2403,6 +2469,7 @@ public interface FeedEntityOrBuilder extends * * * optional .transit_realtime.TripUpdate trip_update = 3; + * @return The tripUpdate. */ com.google.transit.realtime.GtfsRealtime.TripUpdate getTripUpdate(); /** @@ -2417,10 +2484,12 @@ public interface FeedEntityOrBuilder extends /** * optional .transit_realtime.VehiclePosition vehicle = 4; + * @return Whether the vehicle field is set. */ boolean hasVehicle(); /** * optional .transit_realtime.VehiclePosition vehicle = 4; + * @return The vehicle. */ com.google.transit.realtime.GtfsRealtime.VehiclePosition getVehicle(); /** @@ -2430,10 +2499,12 @@ public interface FeedEntityOrBuilder extends /** * optional .transit_realtime.Alert alert = 5; + * @return Whether the alert field is set. */ boolean hasAlert(); /** * optional .transit_realtime.Alert alert = 5; + * @return The alert. */ com.google.transit.realtime.GtfsRealtime.Alert getAlert(); /** @@ -2448,7 +2519,7 @@ public interface FeedEntityOrBuilder extends * * Protobuf type {@code transit_realtime.FeedEntity} */ - public static final class FeedEntity extends + public static final class FeedEntity extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage< FeedEntity> implements // @@protoc_insertion_point(message_implements:transit_realtime.FeedEntity) @@ -2462,6 +2533,13 @@ private FeedEntity() { id_ = ""; } + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new FeedEntity(); + } + @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { @@ -2584,7 +2662,9 @@ private FeedEntity( * * * required string id = 1; + * @return Whether the id field is set. */ + @java.lang.Override public boolean hasId() { return ((bitField0_ & 0x00000001) != 0); } @@ -2601,7 +2681,9 @@ public boolean hasId() { * * * required string id = 1; + * @return The id. */ + @java.lang.Override public java.lang.String getId() { java.lang.Object ref = id_; if (ref instanceof java.lang.String) { @@ -2629,7 +2711,9 @@ public java.lang.String getId() { * * * required string id = 1; + * @return The bytes for id. */ + @java.lang.Override public com.google.protobuf.ByteString getIdBytes() { java.lang.Object ref = id_; @@ -2653,7 +2737,9 @@ public java.lang.String getId() { * * * optional bool is_deleted = 2 [default = false]; + * @return Whether the isDeleted field is set. */ + @java.lang.Override public boolean hasIsDeleted() { return ((bitField0_ & 0x00000002) != 0); } @@ -2664,7 +2750,9 @@ public boolean hasIsDeleted() { * * * optional bool is_deleted = 2 [default = false]; + * @return The isDeleted. */ + @java.lang.Override public boolean getIsDeleted() { return isDeleted_; } @@ -2678,7 +2766,9 @@ public boolean getIsDeleted() { * * * optional .transit_realtime.TripUpdate trip_update = 3; + * @return Whether the tripUpdate field is set. */ + @java.lang.Override public boolean hasTripUpdate() { return ((bitField0_ & 0x00000004) != 0); } @@ -2689,7 +2779,9 @@ public boolean hasTripUpdate() { * * * optional .transit_realtime.TripUpdate trip_update = 3; + * @return The tripUpdate. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripUpdate getTripUpdate() { return tripUpdate_ == null ? com.google.transit.realtime.GtfsRealtime.TripUpdate.getDefaultInstance() : tripUpdate_; } @@ -2701,6 +2793,7 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdate getTripUpdate() { * * optional .transit_realtime.TripUpdate trip_update = 3; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripUpdateOrBuilder getTripUpdateOrBuilder() { return tripUpdate_ == null ? com.google.transit.realtime.GtfsRealtime.TripUpdate.getDefaultInstance() : tripUpdate_; } @@ -2709,19 +2802,24 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdateOrBuilder getTripUpdat private com.google.transit.realtime.GtfsRealtime.VehiclePosition vehicle_; /** * optional .transit_realtime.VehiclePosition vehicle = 4; + * @return Whether the vehicle field is set. */ + @java.lang.Override public boolean hasVehicle() { return ((bitField0_ & 0x00000008) != 0); } /** * optional .transit_realtime.VehiclePosition vehicle = 4; + * @return The vehicle. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.VehiclePosition getVehicle() { return vehicle_ == null ? com.google.transit.realtime.GtfsRealtime.VehiclePosition.getDefaultInstance() : vehicle_; } /** * optional .transit_realtime.VehiclePosition vehicle = 4; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.VehiclePositionOrBuilder getVehicleOrBuilder() { return vehicle_ == null ? com.google.transit.realtime.GtfsRealtime.VehiclePosition.getDefaultInstance() : vehicle_; } @@ -2730,19 +2828,24 @@ public com.google.transit.realtime.GtfsRealtime.VehiclePositionOrBuilder getVehi private com.google.transit.realtime.GtfsRealtime.Alert alert_; /** * optional .transit_realtime.Alert alert = 5; + * @return Whether the alert field is set. */ + @java.lang.Override public boolean hasAlert() { return ((bitField0_ & 0x00000010) != 0); } /** * optional .transit_realtime.Alert alert = 5; + * @return The alert. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.Alert getAlert() { return alert_ == null ? com.google.transit.realtime.GtfsRealtime.Alert.getDefaultInstance() : alert_; } /** * optional .transit_realtime.Alert alert = 5; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.AlertOrBuilder getAlertOrBuilder() { return alert_ == null ? com.google.transit.realtime.GtfsRealtime.Alert.getDefaultInstance() : alert_; } @@ -2806,6 +2909,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) output.writeMessage(5, getAlert()); } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -3292,6 +3396,7 @@ public Builder mergeFrom( * * * required string id = 1; + * @return Whether the id field is set. */ public boolean hasId() { return ((bitField0_ & 0x00000001) != 0); @@ -3309,6 +3414,7 @@ public boolean hasId() { * * * required string id = 1; + * @return The id. */ public java.lang.String getId() { java.lang.Object ref = id_; @@ -3337,6 +3443,7 @@ public java.lang.String getId() { * * * required string id = 1; + * @return The bytes for id. */ public com.google.protobuf.ByteString getIdBytes() { @@ -3364,6 +3471,8 @@ public java.lang.String getId() { * * * required string id = 1; + * @param value The id to set. + * @return This builder for chaining. */ public Builder setId( java.lang.String value) { @@ -3388,6 +3497,7 @@ public Builder setId( * * * required string id = 1; + * @return This builder for chaining. */ public Builder clearId() { bitField0_ = (bitField0_ & ~0x00000001); @@ -3408,6 +3518,8 @@ public Builder clearId() { * * * required string id = 1; + * @param value The bytes for id to set. + * @return This builder for chaining. */ public Builder setIdBytes( com.google.protobuf.ByteString value) { @@ -3428,7 +3540,9 @@ public Builder setIdBytes( * * * optional bool is_deleted = 2 [default = false]; + * @return Whether the isDeleted field is set. */ + @java.lang.Override public boolean hasIsDeleted() { return ((bitField0_ & 0x00000002) != 0); } @@ -3439,7 +3553,9 @@ public boolean hasIsDeleted() { * * * optional bool is_deleted = 2 [default = false]; + * @return The isDeleted. */ + @java.lang.Override public boolean getIsDeleted() { return isDeleted_; } @@ -3450,6 +3566,8 @@ public boolean getIsDeleted() { * * * optional bool is_deleted = 2 [default = false]; + * @param value The isDeleted to set. + * @return This builder for chaining. */ public Builder setIsDeleted(boolean value) { bitField0_ |= 0x00000002; @@ -3464,6 +3582,7 @@ public Builder setIsDeleted(boolean value) { * * * optional bool is_deleted = 2 [default = false]; + * @return This builder for chaining. */ public Builder clearIsDeleted() { bitField0_ = (bitField0_ & ~0x00000002); @@ -3482,6 +3601,7 @@ public Builder clearIsDeleted() { * * * optional .transit_realtime.TripUpdate trip_update = 3; + * @return Whether the tripUpdate field is set. */ public boolean hasTripUpdate() { return ((bitField0_ & 0x00000004) != 0); @@ -3493,6 +3613,7 @@ public boolean hasTripUpdate() { * * * optional .transit_realtime.TripUpdate trip_update = 3; + * @return The tripUpdate. */ public com.google.transit.realtime.GtfsRealtime.TripUpdate getTripUpdate() { if (tripUpdateBuilder_ == null) { @@ -3640,12 +3761,14 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdateOrBuilder getTripUpdat com.google.transit.realtime.GtfsRealtime.VehiclePosition, com.google.transit.realtime.GtfsRealtime.VehiclePosition.Builder, com.google.transit.realtime.GtfsRealtime.VehiclePositionOrBuilder> vehicleBuilder_; /** * optional .transit_realtime.VehiclePosition vehicle = 4; + * @return Whether the vehicle field is set. */ public boolean hasVehicle() { return ((bitField0_ & 0x00000008) != 0); } /** * optional .transit_realtime.VehiclePosition vehicle = 4; + * @return The vehicle. */ public com.google.transit.realtime.GtfsRealtime.VehiclePosition getVehicle() { if (vehicleBuilder_ == null) { @@ -3758,12 +3881,14 @@ public com.google.transit.realtime.GtfsRealtime.VehiclePositionOrBuilder getVehi com.google.transit.realtime.GtfsRealtime.Alert, com.google.transit.realtime.GtfsRealtime.Alert.Builder, com.google.transit.realtime.GtfsRealtime.AlertOrBuilder> alertBuilder_; /** * optional .transit_realtime.Alert alert = 5; + * @return Whether the alert field is set. */ public boolean hasAlert() { return ((bitField0_ & 0x00000010) != 0); } /** * optional .transit_realtime.Alert alert = 5; + * @return The alert. */ public com.google.transit.realtime.GtfsRealtime.Alert getAlert() { if (alertBuilder_ == null) { @@ -3937,6 +4062,7 @@ public interface TripUpdateOrBuilder extends * * * required .transit_realtime.TripDescriptor trip = 1; + * @return Whether the trip field is set. */ boolean hasTrip(); /** @@ -3948,6 +4074,7 @@ public interface TripUpdateOrBuilder extends * * * required .transit_realtime.TripDescriptor trip = 1; + * @return The trip. */ com.google.transit.realtime.GtfsRealtime.TripDescriptor getTrip(); /** @@ -3968,6 +4095,7 @@ public interface TripUpdateOrBuilder extends * * * optional .transit_realtime.VehicleDescriptor vehicle = 3; + * @return Whether the vehicle field is set. */ boolean hasVehicle(); /** @@ -3976,6 +4104,7 @@ public interface TripUpdateOrBuilder extends * * * optional .transit_realtime.VehicleDescriptor vehicle = 3; + * @return The vehicle. */ com.google.transit.realtime.GtfsRealtime.VehicleDescriptor getVehicle(); /** @@ -4118,6 +4247,7 @@ com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdateOrBuilder getS * * * optional uint64 timestamp = 4; + * @return Whether the timestamp field is set. */ boolean hasTimestamp(); /** @@ -4127,6 +4257,7 @@ com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdateOrBuilder getS * * * optional uint64 timestamp = 4; + * @return The timestamp. */ long getTimestamp(); @@ -4149,6 +4280,7 @@ com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdateOrBuilder getS * * * optional int32 delay = 5; + * @return Whether the delay field is set. */ boolean hasDelay(); /** @@ -4170,8 +4302,24 @@ com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdateOrBuilder getS * * * optional int32 delay = 5; + * @return The delay. */ int getDelay(); + + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + * @return Whether the tripProperties field is set. + */ + boolean hasTripProperties(); + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + * @return The tripProperties. + */ + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties getTripProperties(); + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + */ + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripPropertiesOrBuilder getTripPropertiesOrBuilder(); } /** *
@@ -4203,7 +4351,7 @@ com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdateOrBuilder getS
    *
    * Protobuf type {@code transit_realtime.TripUpdate}
    */
-  public  static final class TripUpdate extends
+  public static final class TripUpdate extends
       com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
         TripUpdate> implements
       // @@protoc_insertion_point(message_implements:transit_realtime.TripUpdate)
@@ -4217,6 +4365,13 @@ private TripUpdate() {
       stopTimeUpdate_ = java.util.Collections.emptyList();
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new TripUpdate();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
@@ -4286,6 +4441,19 @@ private TripUpdate(
               delay_ = input.readInt32();
               break;
             }
+            case 50: {
+              com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.Builder subBuilder = null;
+              if (((bitField0_ & 0x00000010) != 0)) {
+                subBuilder = tripProperties_.toBuilder();
+              }
+              tripProperties_ = input.readMessage(com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.PARSER, extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(tripProperties_);
+                tripProperties_ = subBuilder.buildPartial();
+              }
+              bitField0_ |= 0x00000010;
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -4334,6 +4502,7 @@ public interface StopTimeEventOrBuilder extends
        * 
* * optional int32 delay = 1; + * @return Whether the delay field is set. */ boolean hasDelay(); /** @@ -4344,6 +4513,7 @@ public interface StopTimeEventOrBuilder extends * * * optional int32 delay = 1; + * @return The delay. */ int getDelay(); @@ -4355,6 +4525,7 @@ public interface StopTimeEventOrBuilder extends * * * optional int64 time = 2; + * @return Whether the time field is set. */ boolean hasTime(); /** @@ -4365,6 +4536,7 @@ public interface StopTimeEventOrBuilder extends * * * optional int64 time = 2; + * @return The time. */ long getTime(); @@ -4377,6 +4549,7 @@ public interface StopTimeEventOrBuilder extends * * * optional int32 uncertainty = 3; + * @return Whether the uncertainty field is set. */ boolean hasUncertainty(); /** @@ -4388,6 +4561,7 @@ public interface StopTimeEventOrBuilder extends * * * optional int32 uncertainty = 3; + * @return The uncertainty. */ int getUncertainty(); } @@ -4411,7 +4585,7 @@ public interface StopTimeEventOrBuilder extends * * Protobuf type {@code transit_realtime.TripUpdate.StopTimeEvent} */ - public static final class StopTimeEvent extends + public static final class StopTimeEvent extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage< StopTimeEvent> implements // @@protoc_insertion_point(message_implements:transit_realtime.TripUpdate.StopTimeEvent) @@ -4424,6 +4598,13 @@ private StopTimeEvent(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder * * optional int32 delay = 1; + * @return Whether the delay field is set. */ + @java.lang.Override public boolean hasDelay() { return ((bitField0_ & 0x00000001) != 0); } @@ -4518,7 +4701,9 @@ public boolean hasDelay() { * * * optional int32 delay = 1; + * @return The delay. */ + @java.lang.Override public int getDelay() { return delay_; } @@ -4533,7 +4718,9 @@ public int getDelay() { * * * optional int64 time = 2; + * @return Whether the time field is set. */ + @java.lang.Override public boolean hasTime() { return ((bitField0_ & 0x00000002) != 0); } @@ -4545,7 +4732,9 @@ public boolean hasTime() { * * * optional int64 time = 2; + * @return The time. */ + @java.lang.Override public long getTime() { return time_; } @@ -4561,7 +4750,9 @@ public long getTime() { * * * optional int32 uncertainty = 3; + * @return Whether the uncertainty field is set. */ + @java.lang.Override public boolean hasUncertainty() { return ((bitField0_ & 0x00000004) != 0); } @@ -4574,7 +4765,9 @@ public boolean hasUncertainty() { * * * optional int32 uncertainty = 3; + * @return The uncertainty. */ + @java.lang.Override public int getUncertainty() { return uncertainty_; } @@ -4610,6 +4803,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) output.writeInt32(3, uncertainty_); } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -5014,7 +5208,9 @@ public Builder mergeFrom( * * * optional int32 delay = 1; + * @return Whether the delay field is set. */ + @java.lang.Override public boolean hasDelay() { return ((bitField0_ & 0x00000001) != 0); } @@ -5026,7 +5222,9 @@ public boolean hasDelay() { * * * optional int32 delay = 1; + * @return The delay. */ + @java.lang.Override public int getDelay() { return delay_; } @@ -5038,6 +5236,8 @@ public int getDelay() { * * * optional int32 delay = 1; + * @param value The delay to set. + * @return This builder for chaining. */ public Builder setDelay(int value) { bitField0_ |= 0x00000001; @@ -5053,6 +5253,7 @@ public Builder setDelay(int value) { * * * optional int32 delay = 1; + * @return This builder for chaining. */ public Builder clearDelay() { bitField0_ = (bitField0_ & ~0x00000001); @@ -5070,7 +5271,9 @@ public Builder clearDelay() { * * * optional int64 time = 2; + * @return Whether the time field is set. */ + @java.lang.Override public boolean hasTime() { return ((bitField0_ & 0x00000002) != 0); } @@ -5082,7 +5285,9 @@ public boolean hasTime() { * * * optional int64 time = 2; + * @return The time. */ + @java.lang.Override public long getTime() { return time_; } @@ -5094,6 +5299,8 @@ public long getTime() { * * * optional int64 time = 2; + * @param value The time to set. + * @return This builder for chaining. */ public Builder setTime(long value) { bitField0_ |= 0x00000002; @@ -5109,6 +5316,7 @@ public Builder setTime(long value) { * * * optional int64 time = 2; + * @return This builder for chaining. */ public Builder clearTime() { bitField0_ = (bitField0_ & ~0x00000002); @@ -5127,7 +5335,9 @@ public Builder clearTime() { * * * optional int32 uncertainty = 3; + * @return Whether the uncertainty field is set. */ + @java.lang.Override public boolean hasUncertainty() { return ((bitField0_ & 0x00000004) != 0); } @@ -5140,7 +5350,9 @@ public boolean hasUncertainty() { * * * optional int32 uncertainty = 3; + * @return The uncertainty. */ + @java.lang.Override public int getUncertainty() { return uncertainty_; } @@ -5153,6 +5365,8 @@ public int getUncertainty() { * * * optional int32 uncertainty = 3; + * @param value The uncertainty to set. + * @return This builder for chaining. */ public Builder setUncertainty(int value) { bitField0_ |= 0x00000004; @@ -5169,6 +5383,7 @@ public Builder setUncertainty(int value) { * * * optional int32 uncertainty = 3; + * @return This builder for chaining. */ public Builder clearUncertainty() { bitField0_ = (bitField0_ & ~0x00000004); @@ -5240,6 +5455,7 @@ public interface StopTimeUpdateOrBuilder extends * * * optional uint32 stop_sequence = 1; + * @return Whether the stopSequence field is set. */ boolean hasStopSequence(); /** @@ -5248,6 +5464,7 @@ public interface StopTimeUpdateOrBuilder extends * * * optional uint32 stop_sequence = 1; + * @return The stopSequence. */ int getStopSequence(); @@ -5257,6 +5474,7 @@ public interface StopTimeUpdateOrBuilder extends * * * optional string stop_id = 4; + * @return Whether the stopId field is set. */ boolean hasStopId(); /** @@ -5265,6 +5483,7 @@ public interface StopTimeUpdateOrBuilder extends * * * optional string stop_id = 4; + * @return The stopId. */ java.lang.String getStopId(); /** @@ -5273,16 +5492,19 @@ public interface StopTimeUpdateOrBuilder extends * * * optional string stop_id = 4; + * @return The bytes for stopId. */ com.google.protobuf.ByteString getStopIdBytes(); /** * optional .transit_realtime.TripUpdate.StopTimeEvent arrival = 2; + * @return Whether the arrival field is set. */ boolean hasArrival(); /** * optional .transit_realtime.TripUpdate.StopTimeEvent arrival = 2; + * @return The arrival. */ com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent getArrival(); /** @@ -5292,10 +5514,12 @@ public interface StopTimeUpdateOrBuilder extends /** * optional .transit_realtime.TripUpdate.StopTimeEvent departure = 3; + * @return Whether the departure field is set. */ boolean hasDeparture(); /** * optional .transit_realtime.TripUpdate.StopTimeEvent departure = 3; + * @return The departure. */ com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent getDeparture(); /** @@ -5305,10 +5529,12 @@ public interface StopTimeUpdateOrBuilder extends /** * optional .transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship schedule_relationship = 5 [default = SCHEDULED]; + * @return Whether the scheduleRelationship field is set. */ boolean hasScheduleRelationship(); /** * optional .transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship schedule_relationship = 5 [default = SCHEDULED]; + * @return The scheduleRelationship. */ com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship getScheduleRelationship(); } @@ -5321,7 +5547,7 @@ public interface StopTimeUpdateOrBuilder extends * * Protobuf type {@code transit_realtime.TripUpdate.StopTimeUpdate} */ - public static final class StopTimeUpdate extends + public static final class StopTimeUpdate extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage< StopTimeUpdate> implements // @@protoc_insertion_point(message_implements:transit_realtime.TripUpdate.StopTimeUpdate) @@ -5336,6 +5562,13 @@ private StopTimeUpdate() { scheduleRelationship_ = 0; } + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new StopTimeUpdate(); + } + @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { @@ -5456,7 +5689,8 @@ public enum ScheduleRelationship * stops, although not necessarily according to the times of the schedule. * At least one of arrival and departure must be provided. If the schedule * for this stop contains both arrival and departure times then so must - * this update. + * this update. Frequency-based trips (GTFS frequencies.txt with exact_times = 0) + * should not have a SCHEDULED value and should use UNSCHEDULED instead. * * * SCHEDULED = 0; @@ -5483,6 +5717,19 @@ public enum ScheduleRelationship * NO_DATA = 2; */ NO_DATA(2), + /** + *
+         * The vehicle is operating a trip defined in GTFS frequencies.txt with exact_times = 0.
+         * This value should not be used for trips that are not defined in GTFS frequencies.txt,
+         * or trips in GTFS frequencies.txt with exact_times = 1. Trips containing StopTimeUpdates
+         * with ScheduleRelationship=UNSCHEDULED must also set TripDescriptor.ScheduleRelationship=UNSCHEDULED.
+         * NOTE: This field is still experimental, and subject to change. It may be
+         * formally adopted in the future.
+         * 
+ * + * UNSCHEDULED = 3; + */ + UNSCHEDULED(3), ; /** @@ -5491,7 +5738,8 @@ public enum ScheduleRelationship * stops, although not necessarily according to the times of the schedule. * At least one of arrival and departure must be provided. If the schedule * for this stop contains both arrival and departure times then so must - * this update. + * this update. Frequency-based trips (GTFS frequencies.txt with exact_times = 0) + * should not have a SCHEDULED value and should use UNSCHEDULED instead. * * * SCHEDULED = 0; @@ -5518,6 +5766,19 @@ public enum ScheduleRelationship * NO_DATA = 2; */ public static final int NO_DATA_VALUE = 2; + /** + *
+         * The vehicle is operating a trip defined in GTFS frequencies.txt with exact_times = 0.
+         * This value should not be used for trips that are not defined in GTFS frequencies.txt,
+         * or trips in GTFS frequencies.txt with exact_times = 1. Trips containing StopTimeUpdates
+         * with ScheduleRelationship=UNSCHEDULED must also set TripDescriptor.ScheduleRelationship=UNSCHEDULED.
+         * NOTE: This field is still experimental, and subject to change. It may be
+         * formally adopted in the future.
+         * 
+ * + * UNSCHEDULED = 3; + */ + public static final int UNSCHEDULED_VALUE = 3; public final int getNumber() { @@ -5525,6 +5786,8 @@ public final int getNumber() { } /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. * @deprecated Use {@link #forNumber(int)} instead. */ @java.lang.Deprecated @@ -5532,11 +5795,16 @@ public static ScheduleRelationship valueOf(int value) { return forNumber(value); } + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ public static ScheduleRelationship forNumber(int value) { switch (value) { case 0: return SCHEDULED; case 1: return SKIPPED; case 2: return NO_DATA; + case 3: return UNSCHEDULED; default: return null; } } @@ -5595,7 +5863,9 @@ private ScheduleRelationship(int value) { * * * optional uint32 stop_sequence = 1; + * @return Whether the stopSequence field is set. */ + @java.lang.Override public boolean hasStopSequence() { return ((bitField0_ & 0x00000001) != 0); } @@ -5605,7 +5875,9 @@ public boolean hasStopSequence() { * * * optional uint32 stop_sequence = 1; + * @return The stopSequence. */ + @java.lang.Override public int getStopSequence() { return stopSequence_; } @@ -5618,7 +5890,9 @@ public int getStopSequence() { * * * optional string stop_id = 4; + * @return Whether the stopId field is set. */ + @java.lang.Override public boolean hasStopId() { return ((bitField0_ & 0x00000002) != 0); } @@ -5628,7 +5902,9 @@ public boolean hasStopId() { * * * optional string stop_id = 4; + * @return The stopId. */ + @java.lang.Override public java.lang.String getStopId() { java.lang.Object ref = stopId_; if (ref instanceof java.lang.String) { @@ -5649,7 +5925,9 @@ public java.lang.String getStopId() { * * * optional string stop_id = 4; + * @return The bytes for stopId. */ + @java.lang.Override public com.google.protobuf.ByteString getStopIdBytes() { java.lang.Object ref = stopId_; @@ -5668,19 +5946,24 @@ public java.lang.String getStopId() { private com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent arrival_; /** * optional .transit_realtime.TripUpdate.StopTimeEvent arrival = 2; + * @return Whether the arrival field is set. */ + @java.lang.Override public boolean hasArrival() { return ((bitField0_ & 0x00000004) != 0); } /** * optional .transit_realtime.TripUpdate.StopTimeEvent arrival = 2; + * @return The arrival. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent getArrival() { return arrival_ == null ? com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent.getDefaultInstance() : arrival_; } /** * optional .transit_realtime.TripUpdate.StopTimeEvent arrival = 2; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEventOrBuilder getArrivalOrBuilder() { return arrival_ == null ? com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent.getDefaultInstance() : arrival_; } @@ -5689,19 +5972,24 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEventOrBuilde private com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent departure_; /** * optional .transit_realtime.TripUpdate.StopTimeEvent departure = 3; + * @return Whether the departure field is set. */ + @java.lang.Override public boolean hasDeparture() { return ((bitField0_ & 0x00000008) != 0); } /** * optional .transit_realtime.TripUpdate.StopTimeEvent departure = 3; + * @return The departure. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent getDeparture() { return departure_ == null ? com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent.getDefaultInstance() : departure_; } /** * optional .transit_realtime.TripUpdate.StopTimeEvent departure = 3; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEventOrBuilder getDepartureOrBuilder() { return departure_ == null ? com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent.getDefaultInstance() : departure_; } @@ -5710,14 +5998,16 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEventOrBuilde private int scheduleRelationship_; /** * optional .transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship schedule_relationship = 5 [default = SCHEDULED]; + * @return Whether the scheduleRelationship field is set. */ - public boolean hasScheduleRelationship() { + @java.lang.Override public boolean hasScheduleRelationship() { return ((bitField0_ & 0x00000010) != 0); } /** * optional .transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship schedule_relationship = 5 [default = SCHEDULED]; + * @return The scheduleRelationship. */ - public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship getScheduleRelationship() { + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship getScheduleRelationship() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship result = com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.valueOf(scheduleRelationship_); return result == null ? com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.SCHEDULED : result; @@ -5772,6 +6062,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) output.writeEnum(5, scheduleRelationship_); } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -6234,7 +6525,9 @@ public Builder mergeFrom( * * * optional uint32 stop_sequence = 1; + * @return Whether the stopSequence field is set. */ + @java.lang.Override public boolean hasStopSequence() { return ((bitField0_ & 0x00000001) != 0); } @@ -6244,7 +6537,9 @@ public boolean hasStopSequence() { * * * optional uint32 stop_sequence = 1; + * @return The stopSequence. */ + @java.lang.Override public int getStopSequence() { return stopSequence_; } @@ -6254,6 +6549,8 @@ public int getStopSequence() { * * * optional uint32 stop_sequence = 1; + * @param value The stopSequence to set. + * @return This builder for chaining. */ public Builder setStopSequence(int value) { bitField0_ |= 0x00000001; @@ -6267,6 +6564,7 @@ public Builder setStopSequence(int value) { * * * optional uint32 stop_sequence = 1; + * @return This builder for chaining. */ public Builder clearStopSequence() { bitField0_ = (bitField0_ & ~0x00000001); @@ -6282,6 +6580,7 @@ public Builder clearStopSequence() { * * * optional string stop_id = 4; + * @return Whether the stopId field is set. */ public boolean hasStopId() { return ((bitField0_ & 0x00000002) != 0); @@ -6292,6 +6591,7 @@ public boolean hasStopId() { * * * optional string stop_id = 4; + * @return The stopId. */ public java.lang.String getStopId() { java.lang.Object ref = stopId_; @@ -6313,6 +6613,7 @@ public java.lang.String getStopId() { * * * optional string stop_id = 4; + * @return The bytes for stopId. */ public com.google.protobuf.ByteString getStopIdBytes() { @@ -6333,6 +6634,8 @@ public java.lang.String getStopId() { * * * optional string stop_id = 4; + * @param value The stopId to set. + * @return This builder for chaining. */ public Builder setStopId( java.lang.String value) { @@ -6350,6 +6653,7 @@ public Builder setStopId( * * * optional string stop_id = 4; + * @return This builder for chaining. */ public Builder clearStopId() { bitField0_ = (bitField0_ & ~0x00000002); @@ -6363,6 +6667,8 @@ public Builder clearStopId() { * * * optional string stop_id = 4; + * @param value The bytes for stopId to set. + * @return This builder for chaining. */ public Builder setStopIdBytes( com.google.protobuf.ByteString value) { @@ -6380,12 +6686,14 @@ public Builder setStopIdBytes( com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent, com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent.Builder, com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEventOrBuilder> arrivalBuilder_; /** * optional .transit_realtime.TripUpdate.StopTimeEvent arrival = 2; + * @return Whether the arrival field is set. */ public boolean hasArrival() { return ((bitField0_ & 0x00000004) != 0); } /** * optional .transit_realtime.TripUpdate.StopTimeEvent arrival = 2; + * @return The arrival. */ public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent getArrival() { if (arrivalBuilder_ == null) { @@ -6498,12 +6806,14 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEventOrBuilde com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent, com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent.Builder, com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEventOrBuilder> departureBuilder_; /** * optional .transit_realtime.TripUpdate.StopTimeEvent departure = 3; + * @return Whether the departure field is set. */ public boolean hasDeparture() { return ((bitField0_ & 0x00000008) != 0); } /** * optional .transit_realtime.TripUpdate.StopTimeEvent departure = 3; + * @return The departure. */ public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEvent getDeparture() { if (departureBuilder_ == null) { @@ -6614,13 +6924,16 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeEventOrBuilde private int scheduleRelationship_ = 0; /** * optional .transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship schedule_relationship = 5 [default = SCHEDULED]; + * @return Whether the scheduleRelationship field is set. */ - public boolean hasScheduleRelationship() { + @java.lang.Override public boolean hasScheduleRelationship() { return ((bitField0_ & 0x00000010) != 0); } /** * optional .transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship schedule_relationship = 5 [default = SCHEDULED]; + * @return The scheduleRelationship. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship getScheduleRelationship() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship result = com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.valueOf(scheduleRelationship_); @@ -6628,6 +6941,8 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate.Schedu } /** * optional .transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship schedule_relationship = 5 [default = SCHEDULED]; + * @param value The scheduleRelationship to set. + * @return This builder for chaining. */ public Builder setScheduleRelationship(com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate.ScheduleRelationship value) { if (value == null) { @@ -6640,6 +6955,7 @@ public Builder setScheduleRelationship(com.google.transit.realtime.GtfsRealtime. } /** * optional .transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship schedule_relationship = 5 [default = SCHEDULED]; + * @return This builder for chaining. */ public Builder clearScheduleRelationship() { bitField0_ = (bitField0_ & ~0x00000010); @@ -6700,107 +7016,1505 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate getDef } - private int bitField0_; - public static final int TRIP_FIELD_NUMBER = 1; - private com.google.transit.realtime.GtfsRealtime.TripDescriptor trip_; - /** - *
-     * The Trip that this message applies to. There can be at most one
-     * TripUpdate entity for each actual trip instance.
-     * If there is none, that means there is no prediction information available.
-     * It does *not* mean that the trip is progressing according to schedule.
-     * 
- * - * required .transit_realtime.TripDescriptor trip = 1; - */ - public boolean hasTrip() { - return ((bitField0_ & 0x00000001) != 0); - } - /** - *
-     * The Trip that this message applies to. There can be at most one
-     * TripUpdate entity for each actual trip instance.
-     * If there is none, that means there is no prediction information available.
-     * It does *not* mean that the trip is progressing according to schedule.
-     * 
- * - * required .transit_realtime.TripDescriptor trip = 1; - */ - public com.google.transit.realtime.GtfsRealtime.TripDescriptor getTrip() { - return trip_ == null ? com.google.transit.realtime.GtfsRealtime.TripDescriptor.getDefaultInstance() : trip_; - } - /** - *
-     * The Trip that this message applies to. There can be at most one
-     * TripUpdate entity for each actual trip instance.
-     * If there is none, that means there is no prediction information available.
-     * It does *not* mean that the trip is progressing according to schedule.
-     * 
- * - * required .transit_realtime.TripDescriptor trip = 1; - */ - public com.google.transit.realtime.GtfsRealtime.TripDescriptorOrBuilder getTripOrBuilder() { - return trip_ == null ? com.google.transit.realtime.GtfsRealtime.TripDescriptor.getDefaultInstance() : trip_; - } + public interface TripPropertiesOrBuilder extends + // @@protoc_insertion_point(interface_extends:transit_realtime.TripUpdate.TripProperties) + com.google.protobuf.GeneratedMessageV3. + ExtendableMessageOrBuilder { - public static final int VEHICLE_FIELD_NUMBER = 3; - private com.google.transit.realtime.GtfsRealtime.VehicleDescriptor vehicle_; - /** - *
-     * Additional information on the vehicle that is serving this trip.
-     * 
- * - * optional .transit_realtime.VehicleDescriptor vehicle = 3; - */ - public boolean hasVehicle() { - return ((bitField0_ & 0x00000002) != 0); - } - /** - *
-     * Additional information on the vehicle that is serving this trip.
-     * 
- * - * optional .transit_realtime.VehicleDescriptor vehicle = 3; - */ - public com.google.transit.realtime.GtfsRealtime.VehicleDescriptor getVehicle() { - return vehicle_ == null ? com.google.transit.realtime.GtfsRealtime.VehicleDescriptor.getDefaultInstance() : vehicle_; + /** + *
+       * Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt
+       * but will start at a different service date and/or time (defined using the TripProperties.start_date and
+       * TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different
+       * than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not
+       * be populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string trip_id = 1; + * @return Whether the tripId field is set. + */ + boolean hasTripId(); + /** + *
+       * Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt
+       * but will start at a different service date and/or time (defined using the TripProperties.start_date and
+       * TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different
+       * than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not
+       * be populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string trip_id = 1; + * @return The tripId. + */ + java.lang.String getTripId(); + /** + *
+       * Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt
+       * but will start at a different service date and/or time (defined using the TripProperties.start_date and
+       * TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different
+       * than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not
+       * be populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string trip_id = 1; + * @return The bytes for tripId. + */ + com.google.protobuf.ByteString + getTripIdBytes(); + + /** + *
+       * Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if
+       * schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string start_date = 2; + * @return Whether the startDate field is set. + */ + boolean hasStartDate(); + /** + *
+       * Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if
+       * schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string start_date = 2; + * @return The startDate. + */ + java.lang.String getStartDate(); + /** + *
+       * Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if
+       * schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string start_date = 2; + * @return The bytes for startDate. + */ + com.google.protobuf.ByteString + getStartDateBytes(); + + /** + *
+       * Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time
+       * in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset
+       * between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a
+       * departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value
+       * of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction
+       * delay values are applied to this calculated schedule time to determine the predicted time. For example, if a
+       * departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time
+       * prediction time values do not have any offset applied to them and indicate the predicted time as provided.
+       * For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time
+       * is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be
+       * populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string start_time = 3; + * @return Whether the startTime field is set. + */ + boolean hasStartTime(); + /** + *
+       * Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time
+       * in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset
+       * between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a
+       * departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value
+       * of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction
+       * delay values are applied to this calculated schedule time to determine the predicted time. For example, if a
+       * departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time
+       * prediction time values do not have any offset applied to them and indicate the predicted time as provided.
+       * For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time
+       * is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be
+       * populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string start_time = 3; + * @return The startTime. + */ + java.lang.String getStartTime(); + /** + *
+       * Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time
+       * in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset
+       * between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a
+       * departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value
+       * of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction
+       * delay values are applied to this calculated schedule time to determine the predicted time. For example, if a
+       * departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time
+       * prediction time values do not have any offset applied to them and indicate the predicted time as provided.
+       * For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time
+       * is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be
+       * populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string start_time = 3; + * @return The bytes for startTime. + */ + com.google.protobuf.ByteString + getStartTimeBytes(); } /** *
-     * Additional information on the vehicle that is serving this trip.
+     * Defines updated properties of the trip
+     * NOTE: This message is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* - * optional .transit_realtime.VehicleDescriptor vehicle = 3; + * Protobuf type {@code transit_realtime.TripUpdate.TripProperties} */ - public com.google.transit.realtime.GtfsRealtime.VehicleDescriptorOrBuilder getVehicleOrBuilder() { - return vehicle_ == null ? com.google.transit.realtime.GtfsRealtime.VehicleDescriptor.getDefaultInstance() : vehicle_; - } + public static final class TripProperties extends + com.google.protobuf.GeneratedMessageV3.ExtendableMessage< + TripProperties> implements + // @@protoc_insertion_point(message_implements:transit_realtime.TripUpdate.TripProperties) + TripPropertiesOrBuilder { + private static final long serialVersionUID = 0L; + // Use TripProperties.newBuilder() to construct. + private TripProperties(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder builder) { + super(builder); + } + private TripProperties() { + tripId_ = ""; + startDate_ = ""; + startTime_ = ""; + } - public static final int STOP_TIME_UPDATE_FIELD_NUMBER = 2; - private java.util.List stopTimeUpdate_; - /** - *
-     * Updates to StopTimes for the trip (both future, i.e., predictions, and in
-     * some cases, past ones, i.e., those that already happened).
-     * The updates must be sorted by stop_sequence, and apply for all the
-     * following stops of the trip up to the next specified one.
-     * Example 1:
-     * For a trip with 20 stops, a StopTimeUpdate with arrival delay and departure
-     * delay of 0 for stop_sequence of the current stop means that the trip is
-     * exactly on time.
-     * Example 2:
-     * For the same trip instance, 3 StopTimeUpdates are provided:
-     * - delay of 5 min for stop_sequence 3
-     * - delay of 1 min for stop_sequence 8
-     * - delay of unspecified duration for stop_sequence 10
-     * This will be interpreted as:
-     * - stop_sequences 3,4,5,6,7 have delay of 5 min.
-     * - stop_sequences 8,9 have delay of 1 min.
-     * - stop_sequences 10,... have unknown delay.
+      @java.lang.Override
+      @SuppressWarnings({"unused"})
+      protected java.lang.Object newInstance(
+          UnusedPrivateParameter unused) {
+        return new TripProperties();
+      }
+
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet
+      getUnknownFields() {
+        return this.unknownFields;
+      }
+      private TripProperties(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        this();
+        if (extensionRegistry == null) {
+          throw new java.lang.NullPointerException();
+        }
+        int mutable_bitField0_ = 0;
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              case 10: {
+                com.google.protobuf.ByteString bs = input.readBytes();
+                bitField0_ |= 0x00000001;
+                tripId_ = bs;
+                break;
+              }
+              case 18: {
+                com.google.protobuf.ByteString bs = input.readBytes();
+                bitField0_ |= 0x00000002;
+                startDate_ = bs;
+                break;
+              }
+              case 26: {
+                com.google.protobuf.ByteString bs = input.readBytes();
+                bitField0_ |= 0x00000004;
+                startTime_ = bs;
+                break;
+              }
+              default: {
+                if (!parseUnknownField(
+                    input, unknownFields, extensionRegistry, tag)) {
+                  done = true;
+                }
+                break;
+              }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(
+              e).setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return com.google.transit.realtime.GtfsRealtime.internal_static_transit_realtime_TripUpdate_TripProperties_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.google.transit.realtime.GtfsRealtime.internal_static_transit_realtime_TripUpdate_TripProperties_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.class, com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.Builder.class);
+      }
+
+      private int bitField0_;
+      public static final int TRIP_ID_FIELD_NUMBER = 1;
+      private volatile java.lang.Object tripId_;
+      /**
+       * 
+       * Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt
+       * but will start at a different service date and/or time (defined using the TripProperties.start_date and
+       * TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different
+       * than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not
+       * be populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string trip_id = 1; + * @return Whether the tripId field is set. + */ + @java.lang.Override + public boolean hasTripId() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
+       * Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt
+       * but will start at a different service date and/or time (defined using the TripProperties.start_date and
+       * TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different
+       * than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not
+       * be populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string trip_id = 1; + * @return The tripId. + */ + @java.lang.Override + public java.lang.String getTripId() { + java.lang.Object ref = tripId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + tripId_ = s; + } + return s; + } + } + /** + *
+       * Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt
+       * but will start at a different service date and/or time (defined using the TripProperties.start_date and
+       * TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different
+       * than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not
+       * be populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string trip_id = 1; + * @return The bytes for tripId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getTripIdBytes() { + java.lang.Object ref = tripId_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + tripId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int START_DATE_FIELD_NUMBER = 2; + private volatile java.lang.Object startDate_; + /** + *
+       * Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if
+       * schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string start_date = 2; + * @return Whether the startDate field is set. + */ + @java.lang.Override + public boolean hasStartDate() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + *
+       * Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if
+       * schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string start_date = 2; + * @return The startDate. + */ + @java.lang.Override + public java.lang.String getStartDate() { + java.lang.Object ref = startDate_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + startDate_ = s; + } + return s; + } + } + /** + *
+       * Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if
+       * schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string start_date = 2; + * @return The bytes for startDate. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getStartDateBytes() { + java.lang.Object ref = startDate_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + startDate_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int START_TIME_FIELD_NUMBER = 3; + private volatile java.lang.Object startTime_; + /** + *
+       * Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time
+       * in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset
+       * between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a
+       * departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value
+       * of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction
+       * delay values are applied to this calculated schedule time to determine the predicted time. For example, if a
+       * departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time
+       * prediction time values do not have any offset applied to them and indicate the predicted time as provided.
+       * For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time
+       * is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be
+       * populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string start_time = 3; + * @return Whether the startTime field is set. + */ + @java.lang.Override + public boolean hasStartTime() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + *
+       * Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time
+       * in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset
+       * between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a
+       * departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value
+       * of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction
+       * delay values are applied to this calculated schedule time to determine the predicted time. For example, if a
+       * departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time
+       * prediction time values do not have any offset applied to them and indicate the predicted time as provided.
+       * For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time
+       * is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be
+       * populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string start_time = 3; + * @return The startTime. + */ + @java.lang.Override + public java.lang.String getStartTime() { + java.lang.Object ref = startTime_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + startTime_ = s; + } + return s; + } + } + /** + *
+       * Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time
+       * in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset
+       * between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a
+       * departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value
+       * of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction
+       * delay values are applied to this calculated schedule time to determine the predicted time. For example, if a
+       * departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time
+       * prediction time values do not have any offset applied to them and indicate the predicted time as provided.
+       * For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time
+       * is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be
+       * populated and will be ignored by consumers.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional string start_time = 3; + * @return The bytes for startTime. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getStartTimeBytes() { + java.lang.Object ref = startTime_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + startTime_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + if (!extensionsAreInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + com.google.protobuf.GeneratedMessageV3 + .ExtendableMessage.ExtensionWriter + extensionWriter = newExtensionWriter(); + if (((bitField0_ & 0x00000001) != 0)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, tripId_); + } + if (((bitField0_ & 0x00000002) != 0)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, startDate_); + } + if (((bitField0_ & 0x00000004) != 0)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 3, startTime_); + } + extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, tripId_); + } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, startDate_); + } + if (((bitField0_ & 0x00000004) != 0)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, startTime_); + } + size += extensionsSerializedSize(); + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties)) { + return super.equals(obj); + } + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties other = (com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties) obj; + + if (hasTripId() != other.hasTripId()) return false; + if (hasTripId()) { + if (!getTripId() + .equals(other.getTripId())) return false; + } + if (hasStartDate() != other.hasStartDate()) return false; + if (hasStartDate()) { + if (!getStartDate() + .equals(other.getStartDate())) return false; + } + if (hasStartTime() != other.hasStartTime()) return false; + if (hasStartTime()) { + if (!getStartTime() + .equals(other.getStartTime())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + if (!getExtensionFields().equals(other.getExtensionFields())) + return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasTripId()) { + hash = (37 * hash) + TRIP_ID_FIELD_NUMBER; + hash = (53 * hash) + getTripId().hashCode(); + } + if (hasStartDate()) { + hash = (37 * hash) + START_DATE_FIELD_NUMBER; + hash = (53 * hash) + getStartDate().hashCode(); + } + if (hasStartTime()) { + hash = (37 * hash) + START_TIME_FIELD_NUMBER; + hash = (53 * hash) + getStartTime().hashCode(); + } + hash = hashFields(hash, getExtensionFields()); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + *
+       * Defines updated properties of the trip
+       * NOTE: This message is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * Protobuf type {@code transit_realtime.TripUpdate.TripProperties} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.ExtendableBuilder< + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties, Builder> implements + // @@protoc_insertion_point(builder_implements:transit_realtime.TripUpdate.TripProperties) + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripPropertiesOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.google.transit.realtime.GtfsRealtime.internal_static_transit_realtime_TripUpdate_TripProperties_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.transit.realtime.GtfsRealtime.internal_static_transit_realtime_TripUpdate_TripProperties_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.class, com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.Builder.class); + } + + // Construct using com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + tripId_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + startDate_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + startTime_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.google.transit.realtime.GtfsRealtime.internal_static_transit_realtime_TripUpdate_TripProperties_descriptor; + } + + @java.lang.Override + public com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties getDefaultInstanceForType() { + return com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.getDefaultInstance(); + } + + @java.lang.Override + public com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties build() { + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties buildPartial() { + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties result = new com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + to_bitField0_ |= 0x00000001; + } + result.tripId_ = tripId_; + if (((from_bitField0_ & 0x00000002) != 0)) { + to_bitField0_ |= 0x00000002; + } + result.startDate_ = startDate_; + if (((from_bitField0_ & 0x00000004) != 0)) { + to_bitField0_ |= 0x00000004; + } + result.startTime_ = startTime_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder setExtension( + com.google.protobuf.GeneratedMessage.GeneratedExtension< + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties, Type> extension, + Type value) { + return super.setExtension(extension, value); + } + @java.lang.Override + public Builder setExtension( + com.google.protobuf.GeneratedMessage.GeneratedExtension< + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties, java.util.List> extension, + int index, Type value) { + return super.setExtension(extension, index, value); + } + @java.lang.Override + public Builder addExtension( + com.google.protobuf.GeneratedMessage.GeneratedExtension< + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties, java.util.List> extension, + Type value) { + return super.addExtension(extension, value); + } + @java.lang.Override + public Builder clearExtension( + com.google.protobuf.GeneratedMessage.GeneratedExtension< + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties, ?> extension) { + return super.clearExtension(extension); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties) { + return mergeFrom((com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties other) { + if (other == com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.getDefaultInstance()) return this; + if (other.hasTripId()) { + bitField0_ |= 0x00000001; + tripId_ = other.tripId_; + onChanged(); + } + if (other.hasStartDate()) { + bitField0_ |= 0x00000002; + startDate_ = other.startDate_; + onChanged(); + } + if (other.hasStartTime()) { + bitField0_ |= 0x00000004; + startTime_ = other.startTime_; + onChanged(); + } + this.mergeExtensionFields(other); + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + if (!extensionsAreInitialized()) { + return false; + } + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object tripId_ = ""; + /** + *
+         * Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt
+         * but will start at a different service date and/or time (defined using the TripProperties.start_date and
+         * TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different
+         * than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not
+         * be populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string trip_id = 1; + * @return Whether the tripId field is set. + */ + public boolean hasTripId() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
+         * Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt
+         * but will start at a different service date and/or time (defined using the TripProperties.start_date and
+         * TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different
+         * than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not
+         * be populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string trip_id = 1; + * @return The tripId. + */ + public java.lang.String getTripId() { + java.lang.Object ref = tripId_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + tripId_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+         * Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt
+         * but will start at a different service date and/or time (defined using the TripProperties.start_date and
+         * TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different
+         * than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not
+         * be populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string trip_id = 1; + * @return The bytes for tripId. + */ + public com.google.protobuf.ByteString + getTripIdBytes() { + java.lang.Object ref = tripId_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + tripId_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+         * Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt
+         * but will start at a different service date and/or time (defined using the TripProperties.start_date and
+         * TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different
+         * than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not
+         * be populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string trip_id = 1; + * @param value The tripId to set. + * @return This builder for chaining. + */ + public Builder setTripId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + tripId_ = value; + onChanged(); + return this; + } + /** + *
+         * Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt
+         * but will start at a different service date and/or time (defined using the TripProperties.start_date and
+         * TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different
+         * than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not
+         * be populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string trip_id = 1; + * @return This builder for chaining. + */ + public Builder clearTripId() { + bitField0_ = (bitField0_ & ~0x00000001); + tripId_ = getDefaultInstance().getTripId(); + onChanged(); + return this; + } + /** + *
+         * Defines the identifier of a new trip that is a duplicate of an existing trip defined in (CSV) GTFS trips.txt
+         * but will start at a different service date and/or time (defined using the TripProperties.start_date and
+         * TripProperties.start_time fields). See definition of trips.trip_id in (CSV) GTFS. Its value must be different
+         * than the ones used in the (CSV) GTFS. Required if schedule_relationship=DUPLICATED, otherwise this field must not
+         * be populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string trip_id = 1; + * @param value The bytes for tripId to set. + * @return This builder for chaining. + */ + public Builder setTripIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + tripId_ = value; + onChanged(); + return this; + } + + private java.lang.Object startDate_ = ""; + /** + *
+         * Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if
+         * schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string start_date = 2; + * @return Whether the startDate field is set. + */ + public boolean hasStartDate() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + *
+         * Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if
+         * schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string start_date = 2; + * @return The startDate. + */ + public java.lang.String getStartDate() { + java.lang.Object ref = startDate_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + startDate_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+         * Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if
+         * schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string start_date = 2; + * @return The bytes for startDate. + */ + public com.google.protobuf.ByteString + getStartDateBytes() { + java.lang.Object ref = startDate_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + startDate_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+         * Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if
+         * schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string start_date = 2; + * @param value The startDate to set. + * @return This builder for chaining. + */ + public Builder setStartDate( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + startDate_ = value; + onChanged(); + return this; + } + /** + *
+         * Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if
+         * schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string start_date = 2; + * @return This builder for chaining. + */ + public Builder clearStartDate() { + bitField0_ = (bitField0_ & ~0x00000002); + startDate_ = getDefaultInstance().getStartDate(); + onChanged(); + return this; + } + /** + *
+         * Service date on which the DUPLICATED trip will be run, in YYYYMMDD format. Required if
+         * schedule_relationship=DUPLICATED, otherwise this field must not be populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string start_date = 2; + * @param value The bytes for startDate to set. + * @return This builder for chaining. + */ + public Builder setStartDateBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + startDate_ = value; + onChanged(); + return this; + } + + private java.lang.Object startTime_ = ""; + /** + *
+         * Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time
+         * in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset
+         * between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a
+         * departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value
+         * of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction
+         * delay values are applied to this calculated schedule time to determine the predicted time. For example, if a
+         * departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time
+         * prediction time values do not have any offset applied to them and indicate the predicted time as provided.
+         * For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time
+         * is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be
+         * populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string start_time = 3; + * @return Whether the startTime field is set. + */ + public boolean hasStartTime() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + *
+         * Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time
+         * in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset
+         * between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a
+         * departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value
+         * of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction
+         * delay values are applied to this calculated schedule time to determine the predicted time. For example, if a
+         * departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time
+         * prediction time values do not have any offset applied to them and indicate the predicted time as provided.
+         * For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time
+         * is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be
+         * populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string start_time = 3; + * @return The startTime. + */ + public java.lang.String getStartTime() { + java.lang.Object ref = startTime_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + startTime_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + *
+         * Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time
+         * in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset
+         * between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a
+         * departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value
+         * of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction
+         * delay values are applied to this calculated schedule time to determine the predicted time. For example, if a
+         * departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time
+         * prediction time values do not have any offset applied to them and indicate the predicted time as provided.
+         * For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time
+         * is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be
+         * populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string start_time = 3; + * @return The bytes for startTime. + */ + public com.google.protobuf.ByteString + getStartTimeBytes() { + java.lang.Object ref = startTime_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + startTime_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + *
+         * Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time
+         * in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset
+         * between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a
+         * departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value
+         * of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction
+         * delay values are applied to this calculated schedule time to determine the predicted time. For example, if a
+         * departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time
+         * prediction time values do not have any offset applied to them and indicate the predicted time as provided.
+         * For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time
+         * is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be
+         * populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string start_time = 3; + * @param value The startTime to set. + * @return This builder for chaining. + */ + public Builder setStartTime( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + startTime_ = value; + onChanged(); + return this; + } + /** + *
+         * Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time
+         * in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset
+         * between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a
+         * departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value
+         * of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction
+         * delay values are applied to this calculated schedule time to determine the predicted time. For example, if a
+         * departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time
+         * prediction time values do not have any offset applied to them and indicate the predicted time as provided.
+         * For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time
+         * is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be
+         * populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string start_time = 3; + * @return This builder for chaining. + */ + public Builder clearStartTime() { + bitField0_ = (bitField0_ & ~0x00000004); + startTime_ = getDefaultInstance().getStartTime(); + onChanged(); + return this; + } + /** + *
+         * Defines the departure start time of the trip when it’s duplicated. See definition of stop_times.departure_time
+         * in (CSV) GTFS. Scheduled arrival and departure times for the duplicated trip are calculated based on the offset
+         * between the original trip departure_time and this field. For example, if a GTFS trip has stop A with a
+         * departure_time of 10:00:00 and stop B with departure_time of 10:01:00, and this field is populated with the value
+         * of 10:30:00, stop B on the duplicated trip will have a scheduled departure_time of 10:31:00. Real-time prediction
+         * delay values are applied to this calculated schedule time to determine the predicted time. For example, if a
+         * departure delay of 30 is provided for stop B, then the predicted departure time is 10:31:30. Real-time
+         * prediction time values do not have any offset applied to them and indicate the predicted time as provided.
+         * For example, if a departure time representing 10:31:30 is provided for stop B, then the predicted departure time
+         * is 10:31:30. This field is required if schedule_relationship is DUPLICATED, otherwise this field must not be
+         * populated and will be ignored by consumers.
+         * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+         * 
+ * + * optional string start_time = 3; + * @param value The bytes for startTime to set. + * @return This builder for chaining. + */ + public Builder setStartTimeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + startTime_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:transit_realtime.TripUpdate.TripProperties) + } + + // @@protoc_insertion_point(class_scope:transit_realtime.TripUpdate.TripProperties) + private static final com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties(); + } + + public static com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + @java.lang.Deprecated public static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TripProperties parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TripProperties(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private int bitField0_; + public static final int TRIP_FIELD_NUMBER = 1; + private com.google.transit.realtime.GtfsRealtime.TripDescriptor trip_; + /** + *
+     * The Trip that this message applies to. There can be at most one
+     * TripUpdate entity for each actual trip instance.
+     * If there is none, that means there is no prediction information available.
+     * It does *not* mean that the trip is progressing according to schedule.
+     * 
+ * + * required .transit_realtime.TripDescriptor trip = 1; + * @return Whether the trip field is set. + */ + @java.lang.Override + public boolean hasTrip() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
+     * The Trip that this message applies to. There can be at most one
+     * TripUpdate entity for each actual trip instance.
+     * If there is none, that means there is no prediction information available.
+     * It does *not* mean that the trip is progressing according to schedule.
+     * 
+ * + * required .transit_realtime.TripDescriptor trip = 1; + * @return The trip. + */ + @java.lang.Override + public com.google.transit.realtime.GtfsRealtime.TripDescriptor getTrip() { + return trip_ == null ? com.google.transit.realtime.GtfsRealtime.TripDescriptor.getDefaultInstance() : trip_; + } + /** + *
+     * The Trip that this message applies to. There can be at most one
+     * TripUpdate entity for each actual trip instance.
+     * If there is none, that means there is no prediction information available.
+     * It does *not* mean that the trip is progressing according to schedule.
+     * 
+ * + * required .transit_realtime.TripDescriptor trip = 1; + */ + @java.lang.Override + public com.google.transit.realtime.GtfsRealtime.TripDescriptorOrBuilder getTripOrBuilder() { + return trip_ == null ? com.google.transit.realtime.GtfsRealtime.TripDescriptor.getDefaultInstance() : trip_; + } + + public static final int VEHICLE_FIELD_NUMBER = 3; + private com.google.transit.realtime.GtfsRealtime.VehicleDescriptor vehicle_; + /** + *
+     * Additional information on the vehicle that is serving this trip.
+     * 
+ * + * optional .transit_realtime.VehicleDescriptor vehicle = 3; + * @return Whether the vehicle field is set. + */ + @java.lang.Override + public boolean hasVehicle() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + *
+     * Additional information on the vehicle that is serving this trip.
+     * 
+ * + * optional .transit_realtime.VehicleDescriptor vehicle = 3; + * @return The vehicle. + */ + @java.lang.Override + public com.google.transit.realtime.GtfsRealtime.VehicleDescriptor getVehicle() { + return vehicle_ == null ? com.google.transit.realtime.GtfsRealtime.VehicleDescriptor.getDefaultInstance() : vehicle_; + } + /** + *
+     * Additional information on the vehicle that is serving this trip.
+     * 
+ * + * optional .transit_realtime.VehicleDescriptor vehicle = 3; + */ + @java.lang.Override + public com.google.transit.realtime.GtfsRealtime.VehicleDescriptorOrBuilder getVehicleOrBuilder() { + return vehicle_ == null ? com.google.transit.realtime.GtfsRealtime.VehicleDescriptor.getDefaultInstance() : vehicle_; + } + + public static final int STOP_TIME_UPDATE_FIELD_NUMBER = 2; + private java.util.List stopTimeUpdate_; + /** + *
+     * Updates to StopTimes for the trip (both future, i.e., predictions, and in
+     * some cases, past ones, i.e., those that already happened).
+     * The updates must be sorted by stop_sequence, and apply for all the
+     * following stops of the trip up to the next specified one.
+     * Example 1:
+     * For a trip with 20 stops, a StopTimeUpdate with arrival delay and departure
+     * delay of 0 for stop_sequence of the current stop means that the trip is
+     * exactly on time.
+     * Example 2:
+     * For the same trip instance, 3 StopTimeUpdates are provided:
+     * - delay of 5 min for stop_sequence 3
+     * - delay of 1 min for stop_sequence 8
+     * - delay of unspecified duration for stop_sequence 10
+     * This will be interpreted as:
+     * - stop_sequences 3,4,5,6,7 have delay of 5 min.
+     * - stop_sequences 8,9 have delay of 1 min.
+     * - stop_sequences 10,... have unknown delay.
      * 
* * repeated .transit_realtime.TripUpdate.StopTimeUpdate stop_time_update = 2; */ + @java.lang.Override public java.util.List getStopTimeUpdateList() { return stopTimeUpdate_; } @@ -6827,6 +8541,7 @@ public java.util.Listrepeated .transit_realtime.TripUpdate.StopTimeUpdate stop_time_update = 2; */ + @java.lang.Override public java.util.List getStopTimeUpdateOrBuilderList() { return stopTimeUpdate_; @@ -6854,6 +8569,7 @@ public java.util.Listrepeated .transit_realtime.TripUpdate.StopTimeUpdate stop_time_update = 2; */ + @java.lang.Override public int getStopTimeUpdateCount() { return stopTimeUpdate_.size(); } @@ -6880,6 +8596,7 @@ public int getStopTimeUpdateCount() { * * repeated .transit_realtime.TripUpdate.StopTimeUpdate stop_time_update = 2; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate getStopTimeUpdate(int index) { return stopTimeUpdate_.get(index); } @@ -6906,6 +8623,7 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate getSto * * repeated .transit_realtime.TripUpdate.StopTimeUpdate stop_time_update = 2; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdateOrBuilder getStopTimeUpdateOrBuilder( int index) { return stopTimeUpdate_.get(index); @@ -6920,7 +8638,9 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdateOrBuild *
* * optional uint64 timestamp = 4; + * @return Whether the timestamp field is set. */ + @java.lang.Override public boolean hasTimestamp() { return ((bitField0_ & 0x00000004) != 0); } @@ -6931,7 +8651,9 @@ public boolean hasTimestamp() { * * * optional uint64 timestamp = 4; + * @return The timestamp. */ + @java.lang.Override public long getTimestamp() { return timestamp_; } @@ -6957,7 +8679,9 @@ public long getTimestamp() { * * * optional int32 delay = 5; + * @return Whether the delay field is set. */ + @java.lang.Override public boolean hasDelay() { return ((bitField0_ & 0x00000008) != 0); } @@ -6980,9 +8704,37 @@ public boolean hasDelay() { * * * optional int32 delay = 5; + * @return The delay. + */ + @java.lang.Override + public int getDelay() { + return delay_; + } + + public static final int TRIP_PROPERTIES_FIELD_NUMBER = 6; + private com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties tripProperties_; + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + * @return Whether the tripProperties field is set. + */ + @java.lang.Override + public boolean hasTripProperties() { + return ((bitField0_ & 0x00000010) != 0); + } + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + * @return The tripProperties. + */ + @java.lang.Override + public com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties getTripProperties() { + return tripProperties_ == null ? com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.getDefaultInstance() : tripProperties_; + } + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; */ - public int getDelay() { - return delay_; + @java.lang.Override + public com.google.transit.realtime.GtfsRealtime.TripUpdate.TripPropertiesOrBuilder getTripPropertiesOrBuilder() { + return tripProperties_ == null ? com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.getDefaultInstance() : tripProperties_; } private byte memoizedIsInitialized = -1; @@ -7012,6 +8764,12 @@ public final boolean isInitialized() { return false; } } + if (hasTripProperties()) { + if (!getTripProperties().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } if (!extensionsAreInitialized()) { memoizedIsInitialized = 0; return false; @@ -7041,7 +8799,11 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (((bitField0_ & 0x00000008) != 0)) { output.writeInt32(5, delay_); } + if (((bitField0_ & 0x00000010) != 0)) { + output.writeMessage(6, getTripProperties()); + } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -7071,6 +8833,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeInt32Size(5, delay_); } + if (((bitField0_ & 0x00000010) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, getTripProperties()); + } size += extensionsSerializedSize(); size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -7109,6 +8875,11 @@ public boolean equals(final java.lang.Object obj) { if (getDelay() != other.getDelay()) return false; } + if (hasTripProperties() != other.hasTripProperties()) return false; + if (hasTripProperties()) { + if (!getTripProperties() + .equals(other.getTripProperties())) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; if (!getExtensionFields().equals(other.getExtensionFields())) return false; @@ -7143,6 +8914,10 @@ public int hashCode() { hash = (37 * hash) + DELAY_FIELD_NUMBER; hash = (53 * hash) + getDelay(); } + if (hasTripProperties()) { + hash = (37 * hash) + TRIP_PROPERTIES_FIELD_NUMBER; + hash = (53 * hash) + getTripProperties().hashCode(); + } hash = hashFields(hash, getExtensionFields()); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; @@ -7303,6 +9078,7 @@ private void maybeForceBuilderInitialization() { getTripFieldBuilder(); getVehicleFieldBuilder(); getStopTimeUpdateFieldBuilder(); + getTripPropertiesFieldBuilder(); } } @java.lang.Override @@ -7330,6 +9106,12 @@ public Builder clear() { bitField0_ = (bitField0_ & ~0x00000008); delay_ = 0; bitField0_ = (bitField0_ & ~0x00000010); + if (tripPropertiesBuilder_ == null) { + tripProperties_ = null; + } else { + tripPropertiesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000020); return this; } @@ -7391,6 +9173,14 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdate buildPartial() { result.delay_ = delay_; to_bitField0_ |= 0x00000008; } + if (((from_bitField0_ & 0x00000020) != 0)) { + if (tripPropertiesBuilder_ == null) { + result.tripProperties_ = tripProperties_; + } else { + result.tripProperties_ = tripPropertiesBuilder_.build(); + } + to_bitField0_ |= 0x00000010; + } result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -7505,6 +9295,9 @@ public Builder mergeFrom(com.google.transit.realtime.GtfsRealtime.TripUpdate oth if (other.hasDelay()) { setDelay(other.getDelay()); } + if (other.hasTripProperties()) { + mergeTripProperties(other.getTripProperties()); + } this.mergeExtensionFields(other); this.mergeUnknownFields(other.unknownFields); onChanged(); @@ -7529,6 +9322,11 @@ public final boolean isInitialized() { return false; } } + if (hasTripProperties()) { + if (!getTripProperties().isInitialized()) { + return false; + } + } if (!extensionsAreInitialized()) { return false; } @@ -7567,6 +9365,7 @@ public Builder mergeFrom( * * * required .transit_realtime.TripDescriptor trip = 1; + * @return Whether the trip field is set. */ public boolean hasTrip() { return ((bitField0_ & 0x00000001) != 0); @@ -7580,6 +9379,7 @@ public boolean hasTrip() { * * * required .transit_realtime.TripDescriptor trip = 1; + * @return The trip. */ public com.google.transit.realtime.GtfsRealtime.TripDescriptor getTrip() { if (tripBuilder_ == null) { @@ -7745,6 +9545,7 @@ public com.google.transit.realtime.GtfsRealtime.TripDescriptorOrBuilder getTripO * * * optional .transit_realtime.VehicleDescriptor vehicle = 3; + * @return Whether the vehicle field is set. */ public boolean hasVehicle() { return ((bitField0_ & 0x00000002) != 0); @@ -7755,6 +9556,7 @@ public boolean hasVehicle() { * * * optional .transit_realtime.VehicleDescriptor vehicle = 3; + * @return The vehicle. */ public com.google.transit.realtime.GtfsRealtime.VehicleDescriptor getVehicle() { if (vehicleBuilder_ == null) { @@ -8498,7 +10300,9 @@ public com.google.transit.realtime.GtfsRealtime.TripUpdate.StopTimeUpdate.Builde * * * optional uint64 timestamp = 4; + * @return Whether the timestamp field is set. */ + @java.lang.Override public boolean hasTimestamp() { return ((bitField0_ & 0x00000008) != 0); } @@ -8509,7 +10313,9 @@ public boolean hasTimestamp() { * * * optional uint64 timestamp = 4; + * @return The timestamp. */ + @java.lang.Override public long getTimestamp() { return timestamp_; } @@ -8520,6 +10326,8 @@ public long getTimestamp() { * * * optional uint64 timestamp = 4; + * @param value The timestamp to set. + * @return This builder for chaining. */ public Builder setTimestamp(long value) { bitField0_ |= 0x00000008; @@ -8534,6 +10342,7 @@ public Builder setTimestamp(long value) { * * * optional uint64 timestamp = 4; + * @return This builder for chaining. */ public Builder clearTimestamp() { bitField0_ = (bitField0_ & ~0x00000008); @@ -8562,7 +10371,9 @@ public Builder clearTimestamp() { * * * optional int32 delay = 5; + * @return Whether the delay field is set. */ + @java.lang.Override public boolean hasDelay() { return ((bitField0_ & 0x00000010) != 0); } @@ -8585,7 +10396,9 @@ public boolean hasDelay() { * * * optional int32 delay = 5; + * @return The delay. */ + @java.lang.Override public int getDelay() { return delay_; } @@ -8608,6 +10421,8 @@ public int getDelay() { * * * optional int32 delay = 5; + * @param value The delay to set. + * @return This builder for chaining. */ public Builder setDelay(int value) { bitField0_ |= 0x00000010; @@ -8634,6 +10449,7 @@ public Builder setDelay(int value) { * * * optional int32 delay = 5; + * @return This builder for chaining. */ public Builder clearDelay() { bitField0_ = (bitField0_ & ~0x00000010); @@ -8641,6 +10457,126 @@ public Builder clearDelay() { onChanged(); return this; } + + private com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties tripProperties_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties, com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.Builder, com.google.transit.realtime.GtfsRealtime.TripUpdate.TripPropertiesOrBuilder> tripPropertiesBuilder_; + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + * @return Whether the tripProperties field is set. + */ + public boolean hasTripProperties() { + return ((bitField0_ & 0x00000020) != 0); + } + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + * @return The tripProperties. + */ + public com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties getTripProperties() { + if (tripPropertiesBuilder_ == null) { + return tripProperties_ == null ? com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.getDefaultInstance() : tripProperties_; + } else { + return tripPropertiesBuilder_.getMessage(); + } + } + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + */ + public Builder setTripProperties(com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties value) { + if (tripPropertiesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + tripProperties_ = value; + onChanged(); + } else { + tripPropertiesBuilder_.setMessage(value); + } + bitField0_ |= 0x00000020; + return this; + } + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + */ + public Builder setTripProperties( + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.Builder builderForValue) { + if (tripPropertiesBuilder_ == null) { + tripProperties_ = builderForValue.build(); + onChanged(); + } else { + tripPropertiesBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000020; + return this; + } + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + */ + public Builder mergeTripProperties(com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties value) { + if (tripPropertiesBuilder_ == null) { + if (((bitField0_ & 0x00000020) != 0) && + tripProperties_ != null && + tripProperties_ != com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.getDefaultInstance()) { + tripProperties_ = + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.newBuilder(tripProperties_).mergeFrom(value).buildPartial(); + } else { + tripProperties_ = value; + } + onChanged(); + } else { + tripPropertiesBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000020; + return this; + } + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + */ + public Builder clearTripProperties() { + if (tripPropertiesBuilder_ == null) { + tripProperties_ = null; + onChanged(); + } else { + tripPropertiesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000020); + return this; + } + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + */ + public com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.Builder getTripPropertiesBuilder() { + bitField0_ |= 0x00000020; + onChanged(); + return getTripPropertiesFieldBuilder().getBuilder(); + } + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + */ + public com.google.transit.realtime.GtfsRealtime.TripUpdate.TripPropertiesOrBuilder getTripPropertiesOrBuilder() { + if (tripPropertiesBuilder_ != null) { + return tripPropertiesBuilder_.getMessageOrBuilder(); + } else { + return tripProperties_ == null ? + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.getDefaultInstance() : tripProperties_; + } + } + /** + * optional .transit_realtime.TripUpdate.TripProperties trip_properties = 6; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties, com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.Builder, com.google.transit.realtime.GtfsRealtime.TripUpdate.TripPropertiesOrBuilder> + getTripPropertiesFieldBuilder() { + if (tripPropertiesBuilder_ == null) { + tripPropertiesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties, com.google.transit.realtime.GtfsRealtime.TripUpdate.TripProperties.Builder, com.google.transit.realtime.GtfsRealtime.TripUpdate.TripPropertiesOrBuilder>( + getTripProperties(), + getParentForChildren(), + isClean()); + tripProperties_ = null; + } + return tripPropertiesBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -8707,6 +10643,7 @@ public interface VehiclePositionOrBuilder extends * * * optional .transit_realtime.TripDescriptor trip = 1; + * @return Whether the trip field is set. */ boolean hasTrip(); /** @@ -8717,6 +10654,7 @@ public interface VehiclePositionOrBuilder extends * * * optional .transit_realtime.TripDescriptor trip = 1; + * @return The trip. */ com.google.transit.realtime.GtfsRealtime.TripDescriptor getTrip(); /** @@ -8736,6 +10674,7 @@ public interface VehiclePositionOrBuilder extends * * * optional .transit_realtime.VehicleDescriptor vehicle = 8; + * @return Whether the vehicle field is set. */ boolean hasVehicle(); /** @@ -8744,6 +10683,7 @@ public interface VehiclePositionOrBuilder extends * * * optional .transit_realtime.VehicleDescriptor vehicle = 8; + * @return The vehicle. */ com.google.transit.realtime.GtfsRealtime.VehicleDescriptor getVehicle(); /** @@ -8761,6 +10701,7 @@ public interface VehiclePositionOrBuilder extends * * * optional .transit_realtime.Position position = 2; + * @return Whether the position field is set. */ boolean hasPosition(); /** @@ -8769,6 +10710,7 @@ public interface VehiclePositionOrBuilder extends * * * optional .transit_realtime.Position position = 2; + * @return The position. */ com.google.transit.realtime.GtfsRealtime.Position getPosition(); /** @@ -8789,6 +10731,7 @@ public interface VehiclePositionOrBuilder extends * * * optional uint32 current_stop_sequence = 3; + * @return Whether the currentStopSequence field is set. */ boolean hasCurrentStopSequence(); /** @@ -8800,6 +10743,7 @@ public interface VehiclePositionOrBuilder extends * * * optional uint32 current_stop_sequence = 3; + * @return The currentStopSequence. */ int getCurrentStopSequence(); @@ -8810,6 +10754,7 @@ public interface VehiclePositionOrBuilder extends * * * optional string stop_id = 7; + * @return Whether the stopId field is set. */ boolean hasStopId(); /** @@ -8819,6 +10764,7 @@ public interface VehiclePositionOrBuilder extends * * * optional string stop_id = 7; + * @return The stopId. */ java.lang.String getStopId(); /** @@ -8828,6 +10774,7 @@ public interface VehiclePositionOrBuilder extends * * * optional string stop_id = 7; + * @return The bytes for stopId. */ com.google.protobuf.ByteString getStopIdBytes(); @@ -8839,6 +10786,7 @@ public interface VehiclePositionOrBuilder extends * * * optional .transit_realtime.VehiclePosition.VehicleStopStatus current_status = 4 [default = IN_TRANSIT_TO]; + * @return Whether the currentStatus field is set. */ boolean hasCurrentStatus(); /** @@ -8848,6 +10796,7 @@ public interface VehiclePositionOrBuilder extends * * * optional .transit_realtime.VehiclePosition.VehicleStopStatus current_status = 4 [default = IN_TRANSIT_TO]; + * @return The currentStatus. */ com.google.transit.realtime.GtfsRealtime.VehiclePosition.VehicleStopStatus getCurrentStatus(); @@ -8858,6 +10807,7 @@ public interface VehiclePositionOrBuilder extends * * * optional uint64 timestamp = 5; + * @return Whether the timestamp field is set. */ boolean hasTimestamp(); /** @@ -8867,26 +10817,62 @@ public interface VehiclePositionOrBuilder extends * * * optional uint64 timestamp = 5; + * @return The timestamp. */ long getTimestamp(); /** * optional .transit_realtime.VehiclePosition.CongestionLevel congestion_level = 6; + * @return Whether the congestionLevel field is set. */ boolean hasCongestionLevel(); /** * optional .transit_realtime.VehiclePosition.CongestionLevel congestion_level = 6; + * @return The congestionLevel. */ com.google.transit.realtime.GtfsRealtime.VehiclePosition.CongestionLevel getCongestionLevel(); /** * optional .transit_realtime.VehiclePosition.OccupancyStatus occupancy_status = 9; + * @return Whether the occupancyStatus field is set. */ boolean hasOccupancyStatus(); /** * optional .transit_realtime.VehiclePosition.OccupancyStatus occupancy_status = 9; + * @return The occupancyStatus. */ com.google.transit.realtime.GtfsRealtime.VehiclePosition.OccupancyStatus getOccupancyStatus(); + + /** + *
+     * A percentage value representing the degree of passenger occupancy of the vehicle.
+     * The values are represented as an integer without decimals. 0 means 0% and 100 means 100%.
+     * The value 100 should represent the total maximum occupancy the vehicle was designed for,
+     * including both seated and standing capacity, and current operating regulations allow.
+     * It is possible that the value goes over 100 if there are currently more passengers than what the vehicle was designed for.
+     * The precision of occupancy_percentage should be low enough that you can't track a single person boarding and alighting for privacy reasons.
+     * This field is still experimental, and subject to change. It may be formally adopted in the future.
+     * 
+ * + * optional uint32 occupancy_percentage = 10; + * @return Whether the occupancyPercentage field is set. + */ + boolean hasOccupancyPercentage(); + /** + *
+     * A percentage value representing the degree of passenger occupancy of the vehicle.
+     * The values are represented as an integer without decimals. 0 means 0% and 100 means 100%.
+     * The value 100 should represent the total maximum occupancy the vehicle was designed for,
+     * including both seated and standing capacity, and current operating regulations allow.
+     * It is possible that the value goes over 100 if there are currently more passengers than what the vehicle was designed for.
+     * The precision of occupancy_percentage should be low enough that you can't track a single person boarding and alighting for privacy reasons.
+     * This field is still experimental, and subject to change. It may be formally adopted in the future.
+     * 
+ * + * optional uint32 occupancy_percentage = 10; + * @return The occupancyPercentage. + */ + int getOccupancyPercentage(); } /** *
@@ -8895,7 +10881,7 @@ public interface VehiclePositionOrBuilder extends
    *
    * Protobuf type {@code transit_realtime.VehiclePosition}
    */
-  public  static final class VehiclePosition extends
+  public static final class VehiclePosition extends
       com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
         VehiclePosition> implements
       // @@protoc_insertion_point(message_implements:transit_realtime.VehiclePosition)
@@ -8912,6 +10898,13 @@ private VehiclePosition() {
       occupancyStatus_ = 0;
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new VehiclePosition();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
@@ -9027,6 +11020,11 @@ private VehiclePosition(
               }
               break;
             }
+            case 80: {
+              bitField0_ |= 0x00000200;
+              occupancyPercentage_ = input.readUInt32();
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -9123,6 +11121,8 @@ public final int getNumber() {
       }
 
       /**
+       * @param value The numeric wire value of the corresponding enum entry.
+       * @return The enum associated with the given numeric wire value.
        * @deprecated Use {@link #forNumber(int)} instead.
        */
       @java.lang.Deprecated
@@ -9130,6 +11130,10 @@ public static VehicleStopStatus valueOf(int value) {
         return forNumber(value);
       }
 
+      /**
+       * @param value The numeric wire value of the corresponding enum entry.
+       * @return The enum associated with the given numeric wire value.
+       */
       public static VehicleStopStatus forNumber(int value) {
         switch (value) {
           case 0: return INCOMING_AT;
@@ -9250,6 +11254,8 @@ public final int getNumber() {
       }
 
       /**
+       * @param value The numeric wire value of the corresponding enum entry.
+       * @return The enum associated with the given numeric wire value.
        * @deprecated Use {@link #forNumber(int)} instead.
        */
       @java.lang.Deprecated
@@ -9257,6 +11263,10 @@ public static CongestionLevel valueOf(int value) {
         return forNumber(value);
       }
 
+      /**
+       * @param value The numeric wire value of the corresponding enum entry.
+       * @return The enum associated with the given numeric wire value.
+       */
       public static CongestionLevel forNumber(int value) {
         switch (value) {
           case 0: return UNKNOWN_CONGESTION_LEVEL;
@@ -9463,6 +11473,8 @@ public final int getNumber() {
       }
 
       /**
+       * @param value The numeric wire value of the corresponding enum entry.
+       * @return The enum associated with the given numeric wire value.
        * @deprecated Use {@link #forNumber(int)} instead.
        */
       @java.lang.Deprecated
@@ -9470,6 +11482,10 @@ public static OccupancyStatus valueOf(int value) {
         return forNumber(value);
       }
 
+      /**
+       * @param value The numeric wire value of the corresponding enum entry.
+       * @return The enum associated with the given numeric wire value.
+       */
       public static OccupancyStatus forNumber(int value) {
         switch (value) {
           case 0: return EMPTY;
@@ -9539,7 +11555,9 @@ private OccupancyStatus(int value) {
      * 
* * optional .transit_realtime.TripDescriptor trip = 1; + * @return Whether the trip field is set. */ + @java.lang.Override public boolean hasTrip() { return ((bitField0_ & 0x00000001) != 0); } @@ -9551,7 +11569,9 @@ public boolean hasTrip() { * * * optional .transit_realtime.TripDescriptor trip = 1; + * @return The trip. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripDescriptor getTrip() { return trip_ == null ? com.google.transit.realtime.GtfsRealtime.TripDescriptor.getDefaultInstance() : trip_; } @@ -9564,6 +11584,7 @@ public com.google.transit.realtime.GtfsRealtime.TripDescriptor getTrip() { * * optional .transit_realtime.TripDescriptor trip = 1; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripDescriptorOrBuilder getTripOrBuilder() { return trip_ == null ? com.google.transit.realtime.GtfsRealtime.TripDescriptor.getDefaultInstance() : trip_; } @@ -9576,7 +11597,9 @@ public com.google.transit.realtime.GtfsRealtime.TripDescriptorOrBuilder getTripO * * * optional .transit_realtime.VehicleDescriptor vehicle = 8; + * @return Whether the vehicle field is set. */ + @java.lang.Override public boolean hasVehicle() { return ((bitField0_ & 0x00000002) != 0); } @@ -9586,7 +11609,9 @@ public boolean hasVehicle() { * * * optional .transit_realtime.VehicleDescriptor vehicle = 8; + * @return The vehicle. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.VehicleDescriptor getVehicle() { return vehicle_ == null ? com.google.transit.realtime.GtfsRealtime.VehicleDescriptor.getDefaultInstance() : vehicle_; } @@ -9597,6 +11622,7 @@ public com.google.transit.realtime.GtfsRealtime.VehicleDescriptor getVehicle() { * * optional .transit_realtime.VehicleDescriptor vehicle = 8; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.VehicleDescriptorOrBuilder getVehicleOrBuilder() { return vehicle_ == null ? com.google.transit.realtime.GtfsRealtime.VehicleDescriptor.getDefaultInstance() : vehicle_; } @@ -9609,7 +11635,9 @@ public com.google.transit.realtime.GtfsRealtime.VehicleDescriptorOrBuilder getVe * * * optional .transit_realtime.Position position = 2; + * @return Whether the position field is set. */ + @java.lang.Override public boolean hasPosition() { return ((bitField0_ & 0x00000004) != 0); } @@ -9619,7 +11647,9 @@ public boolean hasPosition() { * * * optional .transit_realtime.Position position = 2; + * @return The position. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.Position getPosition() { return position_ == null ? com.google.transit.realtime.GtfsRealtime.Position.getDefaultInstance() : position_; } @@ -9630,6 +11660,7 @@ public com.google.transit.realtime.GtfsRealtime.Position getPosition() { * * optional .transit_realtime.Position position = 2; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.PositionOrBuilder getPositionOrBuilder() { return position_ == null ? com.google.transit.realtime.GtfsRealtime.Position.getDefaultInstance() : position_; } @@ -9645,7 +11676,9 @@ public com.google.transit.realtime.GtfsRealtime.PositionOrBuilder getPositionOrB * * * optional uint32 current_stop_sequence = 3; + * @return Whether the currentStopSequence field is set. */ + @java.lang.Override public boolean hasCurrentStopSequence() { return ((bitField0_ & 0x00000008) != 0); } @@ -9658,7 +11691,9 @@ public boolean hasCurrentStopSequence() { * * * optional uint32 current_stop_sequence = 3; + * @return The currentStopSequence. */ + @java.lang.Override public int getCurrentStopSequence() { return currentStopSequence_; } @@ -9672,7 +11707,9 @@ public int getCurrentStopSequence() { * * * optional string stop_id = 7; + * @return Whether the stopId field is set. */ + @java.lang.Override public boolean hasStopId() { return ((bitField0_ & 0x00000010) != 0); } @@ -9683,7 +11720,9 @@ public boolean hasStopId() { * * * optional string stop_id = 7; + * @return The stopId. */ + @java.lang.Override public java.lang.String getStopId() { java.lang.Object ref = stopId_; if (ref instanceof java.lang.String) { @@ -9705,7 +11744,9 @@ public java.lang.String getStopId() { * * * optional string stop_id = 7; + * @return The bytes for stopId. */ + @java.lang.Override public com.google.protobuf.ByteString getStopIdBytes() { java.lang.Object ref = stopId_; @@ -9729,8 +11770,9 @@ public java.lang.String getStopId() { * * * optional .transit_realtime.VehiclePosition.VehicleStopStatus current_status = 4 [default = IN_TRANSIT_TO]; + * @return Whether the currentStatus field is set. */ - public boolean hasCurrentStatus() { + @java.lang.Override public boolean hasCurrentStatus() { return ((bitField0_ & 0x00000020) != 0); } /** @@ -9740,8 +11782,9 @@ public boolean hasCurrentStatus() { * * * optional .transit_realtime.VehiclePosition.VehicleStopStatus current_status = 4 [default = IN_TRANSIT_TO]; + * @return The currentStatus. */ - public com.google.transit.realtime.GtfsRealtime.VehiclePosition.VehicleStopStatus getCurrentStatus() { + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.VehiclePosition.VehicleStopStatus getCurrentStatus() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.VehiclePosition.VehicleStopStatus result = com.google.transit.realtime.GtfsRealtime.VehiclePosition.VehicleStopStatus.valueOf(currentStatus_); return result == null ? com.google.transit.realtime.GtfsRealtime.VehiclePosition.VehicleStopStatus.IN_TRANSIT_TO : result; @@ -9756,7 +11799,9 @@ public com.google.transit.realtime.GtfsRealtime.VehiclePosition.VehicleStopStatu * * * optional uint64 timestamp = 5; + * @return Whether the timestamp field is set. */ + @java.lang.Override public boolean hasTimestamp() { return ((bitField0_ & 0x00000040) != 0); } @@ -9767,7 +11812,9 @@ public boolean hasTimestamp() { * * * optional uint64 timestamp = 5; + * @return The timestamp. */ + @java.lang.Override public long getTimestamp() { return timestamp_; } @@ -9776,14 +11823,16 @@ public long getTimestamp() { private int congestionLevel_; /** * optional .transit_realtime.VehiclePosition.CongestionLevel congestion_level = 6; + * @return Whether the congestionLevel field is set. */ - public boolean hasCongestionLevel() { + @java.lang.Override public boolean hasCongestionLevel() { return ((bitField0_ & 0x00000080) != 0); } /** * optional .transit_realtime.VehiclePosition.CongestionLevel congestion_level = 6; + * @return The congestionLevel. */ - public com.google.transit.realtime.GtfsRealtime.VehiclePosition.CongestionLevel getCongestionLevel() { + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.VehiclePosition.CongestionLevel getCongestionLevel() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.VehiclePosition.CongestionLevel result = com.google.transit.realtime.GtfsRealtime.VehiclePosition.CongestionLevel.valueOf(congestionLevel_); return result == null ? com.google.transit.realtime.GtfsRealtime.VehiclePosition.CongestionLevel.UNKNOWN_CONGESTION_LEVEL : result; @@ -9793,19 +11842,60 @@ public com.google.transit.realtime.GtfsRealtime.VehiclePosition.CongestionLevel private int occupancyStatus_; /** * optional .transit_realtime.VehiclePosition.OccupancyStatus occupancy_status = 9; + * @return Whether the occupancyStatus field is set. */ - public boolean hasOccupancyStatus() { + @java.lang.Override public boolean hasOccupancyStatus() { return ((bitField0_ & 0x00000100) != 0); } /** * optional .transit_realtime.VehiclePosition.OccupancyStatus occupancy_status = 9; + * @return The occupancyStatus. */ - public com.google.transit.realtime.GtfsRealtime.VehiclePosition.OccupancyStatus getOccupancyStatus() { + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.VehiclePosition.OccupancyStatus getOccupancyStatus() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.VehiclePosition.OccupancyStatus result = com.google.transit.realtime.GtfsRealtime.VehiclePosition.OccupancyStatus.valueOf(occupancyStatus_); return result == null ? com.google.transit.realtime.GtfsRealtime.VehiclePosition.OccupancyStatus.EMPTY : result; } + public static final int OCCUPANCY_PERCENTAGE_FIELD_NUMBER = 10; + private int occupancyPercentage_; + /** + *
+     * A percentage value representing the degree of passenger occupancy of the vehicle.
+     * The values are represented as an integer without decimals. 0 means 0% and 100 means 100%.
+     * The value 100 should represent the total maximum occupancy the vehicle was designed for,
+     * including both seated and standing capacity, and current operating regulations allow.
+     * It is possible that the value goes over 100 if there are currently more passengers than what the vehicle was designed for.
+     * The precision of occupancy_percentage should be low enough that you can't track a single person boarding and alighting for privacy reasons.
+     * This field is still experimental, and subject to change. It may be formally adopted in the future.
+     * 
+ * + * optional uint32 occupancy_percentage = 10; + * @return Whether the occupancyPercentage field is set. + */ + @java.lang.Override + public boolean hasOccupancyPercentage() { + return ((bitField0_ & 0x00000200) != 0); + } + /** + *
+     * A percentage value representing the degree of passenger occupancy of the vehicle.
+     * The values are represented as an integer without decimals. 0 means 0% and 100 means 100%.
+     * The value 100 should represent the total maximum occupancy the vehicle was designed for,
+     * including both seated and standing capacity, and current operating regulations allow.
+     * It is possible that the value goes over 100 if there are currently more passengers than what the vehicle was designed for.
+     * The precision of occupancy_percentage should be low enough that you can't track a single person boarding and alighting for privacy reasons.
+     * This field is still experimental, and subject to change. It may be formally adopted in the future.
+     * 
+ * + * optional uint32 occupancy_percentage = 10; + * @return The occupancyPercentage. + */ + @java.lang.Override + public int getOccupancyPercentage() { + return occupancyPercentage_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -9872,7 +11962,11 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (((bitField0_ & 0x00000100) != 0)) { output.writeEnum(9, occupancyStatus_); } + if (((bitField0_ & 0x00000200) != 0)) { + output.writeUInt32(10, occupancyPercentage_); + } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -9917,6 +12011,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeEnumSize(9, occupancyStatus_); } + if (((bitField0_ & 0x00000200) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(10, occupancyPercentage_); + } size += extensionsSerializedSize(); size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -9975,6 +12073,11 @@ public boolean equals(final java.lang.Object obj) { if (hasOccupancyStatus()) { if (occupancyStatus_ != other.occupancyStatus_) return false; } + if (hasOccupancyPercentage() != other.hasOccupancyPercentage()) return false; + if (hasOccupancyPercentage()) { + if (getOccupancyPercentage() + != other.getOccupancyPercentage()) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; if (!getExtensionFields().equals(other.getExtensionFields())) return false; @@ -10025,6 +12128,10 @@ public int hashCode() { hash = (37 * hash) + OCCUPANCY_STATUS_FIELD_NUMBER; hash = (53 * hash) + occupancyStatus_; } + if (hasOccupancyPercentage()) { + hash = (37 * hash) + OCCUPANCY_PERCENTAGE_FIELD_NUMBER; + hash = (53 * hash) + getOccupancyPercentage(); + } hash = hashFields(hash, getExtensionFields()); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; @@ -10197,6 +12304,8 @@ public Builder clear() { bitField0_ = (bitField0_ & ~0x00000080); occupancyStatus_ = 0; bitField0_ = (bitField0_ & ~0x00000100); + occupancyPercentage_ = 0; + bitField0_ = (bitField0_ & ~0x00000200); return this; } @@ -10273,6 +12382,10 @@ public com.google.transit.realtime.GtfsRealtime.VehiclePosition buildPartial() { to_bitField0_ |= 0x00000100; } result.occupancyStatus_ = occupancyStatus_; + if (((from_bitField0_ & 0x00000200) != 0)) { + result.occupancyPercentage_ = occupancyPercentage_; + to_bitField0_ |= 0x00000200; + } result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -10378,6 +12491,9 @@ public Builder mergeFrom(com.google.transit.realtime.GtfsRealtime.VehiclePositio if (other.hasOccupancyStatus()) { setOccupancyStatus(other.getOccupancyStatus()); } + if (other.hasOccupancyPercentage()) { + setOccupancyPercentage(other.getOccupancyPercentage()); + } this.mergeExtensionFields(other); this.mergeUnknownFields(other.unknownFields); onChanged(); @@ -10438,6 +12554,7 @@ public Builder mergeFrom( * * * optional .transit_realtime.TripDescriptor trip = 1; + * @return Whether the trip field is set. */ public boolean hasTrip() { return ((bitField0_ & 0x00000001) != 0); @@ -10450,6 +12567,7 @@ public boolean hasTrip() { * * * optional .transit_realtime.TripDescriptor trip = 1; + * @return The trip. */ public com.google.transit.realtime.GtfsRealtime.TripDescriptor getTrip() { if (tripBuilder_ == null) { @@ -10608,6 +12726,7 @@ public com.google.transit.realtime.GtfsRealtime.TripDescriptorOrBuilder getTripO * * * optional .transit_realtime.VehicleDescriptor vehicle = 8; + * @return Whether the vehicle field is set. */ public boolean hasVehicle() { return ((bitField0_ & 0x00000002) != 0); @@ -10618,6 +12737,7 @@ public boolean hasVehicle() { * * * optional .transit_realtime.VehicleDescriptor vehicle = 8; + * @return The vehicle. */ public com.google.transit.realtime.GtfsRealtime.VehicleDescriptor getVehicle() { if (vehicleBuilder_ == null) { @@ -10762,6 +12882,7 @@ public com.google.transit.realtime.GtfsRealtime.VehicleDescriptorOrBuilder getVe * * * optional .transit_realtime.Position position = 2; + * @return Whether the position field is set. */ public boolean hasPosition() { return ((bitField0_ & 0x00000004) != 0); @@ -10772,6 +12893,7 @@ public boolean hasPosition() { * * * optional .transit_realtime.Position position = 2; + * @return The position. */ public com.google.transit.realtime.GtfsRealtime.Position getPosition() { if (positionBuilder_ == null) { @@ -10917,7 +13039,9 @@ public com.google.transit.realtime.GtfsRealtime.PositionOrBuilder getPositionOrB * * * optional uint32 current_stop_sequence = 3; + * @return Whether the currentStopSequence field is set. */ + @java.lang.Override public boolean hasCurrentStopSequence() { return ((bitField0_ & 0x00000008) != 0); } @@ -10930,7 +13054,9 @@ public boolean hasCurrentStopSequence() { * * * optional uint32 current_stop_sequence = 3; + * @return The currentStopSequence. */ + @java.lang.Override public int getCurrentStopSequence() { return currentStopSequence_; } @@ -10943,6 +13069,8 @@ public int getCurrentStopSequence() { * * * optional uint32 current_stop_sequence = 3; + * @param value The currentStopSequence to set. + * @return This builder for chaining. */ public Builder setCurrentStopSequence(int value) { bitField0_ |= 0x00000008; @@ -10959,6 +13087,7 @@ public Builder setCurrentStopSequence(int value) { * * * optional uint32 current_stop_sequence = 3; + * @return This builder for chaining. */ public Builder clearCurrentStopSequence() { bitField0_ = (bitField0_ & ~0x00000008); @@ -10975,6 +13104,7 @@ public Builder clearCurrentStopSequence() { * * * optional string stop_id = 7; + * @return Whether the stopId field is set. */ public boolean hasStopId() { return ((bitField0_ & 0x00000010) != 0); @@ -10986,6 +13116,7 @@ public boolean hasStopId() { * * * optional string stop_id = 7; + * @return The stopId. */ public java.lang.String getStopId() { java.lang.Object ref = stopId_; @@ -11008,6 +13139,7 @@ public java.lang.String getStopId() { * * * optional string stop_id = 7; + * @return The bytes for stopId. */ public com.google.protobuf.ByteString getStopIdBytes() { @@ -11029,6 +13161,8 @@ public java.lang.String getStopId() { * * * optional string stop_id = 7; + * @param value The stopId to set. + * @return This builder for chaining. */ public Builder setStopId( java.lang.String value) { @@ -11047,6 +13181,7 @@ public Builder setStopId( * * * optional string stop_id = 7; + * @return This builder for chaining. */ public Builder clearStopId() { bitField0_ = (bitField0_ & ~0x00000010); @@ -11061,6 +13196,8 @@ public Builder clearStopId() { * * * optional string stop_id = 7; + * @param value The bytes for stopId to set. + * @return This builder for chaining. */ public Builder setStopIdBytes( com.google.protobuf.ByteString value) { @@ -11081,8 +13218,9 @@ public Builder setStopIdBytes( * * * optional .transit_realtime.VehiclePosition.VehicleStopStatus current_status = 4 [default = IN_TRANSIT_TO]; + * @return Whether the currentStatus field is set. */ - public boolean hasCurrentStatus() { + @java.lang.Override public boolean hasCurrentStatus() { return ((bitField0_ & 0x00000020) != 0); } /** @@ -11092,7 +13230,9 @@ public boolean hasCurrentStatus() { * * * optional .transit_realtime.VehiclePosition.VehicleStopStatus current_status = 4 [default = IN_TRANSIT_TO]; + * @return The currentStatus. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.VehiclePosition.VehicleStopStatus getCurrentStatus() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.VehiclePosition.VehicleStopStatus result = com.google.transit.realtime.GtfsRealtime.VehiclePosition.VehicleStopStatus.valueOf(currentStatus_); @@ -11105,6 +13245,8 @@ public com.google.transit.realtime.GtfsRealtime.VehiclePosition.VehicleStopStatu * * * optional .transit_realtime.VehiclePosition.VehicleStopStatus current_status = 4 [default = IN_TRANSIT_TO]; + * @param value The currentStatus to set. + * @return This builder for chaining. */ public Builder setCurrentStatus(com.google.transit.realtime.GtfsRealtime.VehiclePosition.VehicleStopStatus value) { if (value == null) { @@ -11122,6 +13264,7 @@ public Builder setCurrentStatus(com.google.transit.realtime.GtfsRealtime.Vehicle * * * optional .transit_realtime.VehiclePosition.VehicleStopStatus current_status = 4 [default = IN_TRANSIT_TO]; + * @return This builder for chaining. */ public Builder clearCurrentStatus() { bitField0_ = (bitField0_ & ~0x00000020); @@ -11138,7 +13281,9 @@ public Builder clearCurrentStatus() { * * * optional uint64 timestamp = 5; + * @return Whether the timestamp field is set. */ + @java.lang.Override public boolean hasTimestamp() { return ((bitField0_ & 0x00000040) != 0); } @@ -11149,7 +13294,9 @@ public boolean hasTimestamp() { * * * optional uint64 timestamp = 5; + * @return The timestamp. */ + @java.lang.Override public long getTimestamp() { return timestamp_; } @@ -11160,6 +13307,8 @@ public long getTimestamp() { * * * optional uint64 timestamp = 5; + * @param value The timestamp to set. + * @return This builder for chaining. */ public Builder setTimestamp(long value) { bitField0_ |= 0x00000040; @@ -11174,6 +13323,7 @@ public Builder setTimestamp(long value) { * * * optional uint64 timestamp = 5; + * @return This builder for chaining. */ public Builder clearTimestamp() { bitField0_ = (bitField0_ & ~0x00000040); @@ -11185,13 +13335,16 @@ public Builder clearTimestamp() { private int congestionLevel_ = 0; /** * optional .transit_realtime.VehiclePosition.CongestionLevel congestion_level = 6; + * @return Whether the congestionLevel field is set. */ - public boolean hasCongestionLevel() { + @java.lang.Override public boolean hasCongestionLevel() { return ((bitField0_ & 0x00000080) != 0); } /** * optional .transit_realtime.VehiclePosition.CongestionLevel congestion_level = 6; + * @return The congestionLevel. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.VehiclePosition.CongestionLevel getCongestionLevel() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.VehiclePosition.CongestionLevel result = com.google.transit.realtime.GtfsRealtime.VehiclePosition.CongestionLevel.valueOf(congestionLevel_); @@ -11199,6 +13352,8 @@ public com.google.transit.realtime.GtfsRealtime.VehiclePosition.CongestionLevel } /** * optional .transit_realtime.VehiclePosition.CongestionLevel congestion_level = 6; + * @param value The congestionLevel to set. + * @return This builder for chaining. */ public Builder setCongestionLevel(com.google.transit.realtime.GtfsRealtime.VehiclePosition.CongestionLevel value) { if (value == null) { @@ -11211,6 +13366,7 @@ public Builder setCongestionLevel(com.google.transit.realtime.GtfsRealtime.Vehic } /** * optional .transit_realtime.VehiclePosition.CongestionLevel congestion_level = 6; + * @return This builder for chaining. */ public Builder clearCongestionLevel() { bitField0_ = (bitField0_ & ~0x00000080); @@ -11222,13 +13378,16 @@ public Builder clearCongestionLevel() { private int occupancyStatus_ = 0; /** * optional .transit_realtime.VehiclePosition.OccupancyStatus occupancy_status = 9; + * @return Whether the occupancyStatus field is set. */ - public boolean hasOccupancyStatus() { + @java.lang.Override public boolean hasOccupancyStatus() { return ((bitField0_ & 0x00000100) != 0); } /** * optional .transit_realtime.VehiclePosition.OccupancyStatus occupancy_status = 9; + * @return The occupancyStatus. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.VehiclePosition.OccupancyStatus getOccupancyStatus() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.VehiclePosition.OccupancyStatus result = com.google.transit.realtime.GtfsRealtime.VehiclePosition.OccupancyStatus.valueOf(occupancyStatus_); @@ -11236,6 +13395,8 @@ public com.google.transit.realtime.GtfsRealtime.VehiclePosition.OccupancyStatus } /** * optional .transit_realtime.VehiclePosition.OccupancyStatus occupancy_status = 9; + * @param value The occupancyStatus to set. + * @return This builder for chaining. */ public Builder setOccupancyStatus(com.google.transit.realtime.GtfsRealtime.VehiclePosition.OccupancyStatus value) { if (value == null) { @@ -11248,6 +13409,7 @@ public Builder setOccupancyStatus(com.google.transit.realtime.GtfsRealtime.Vehic } /** * optional .transit_realtime.VehiclePosition.OccupancyStatus occupancy_status = 9; + * @return This builder for chaining. */ public Builder clearOccupancyStatus() { bitField0_ = (bitField0_ & ~0x00000100); @@ -11255,6 +13417,85 @@ public Builder clearOccupancyStatus() { onChanged(); return this; } + + private int occupancyPercentage_ ; + /** + *
+       * A percentage value representing the degree of passenger occupancy of the vehicle.
+       * The values are represented as an integer without decimals. 0 means 0% and 100 means 100%.
+       * The value 100 should represent the total maximum occupancy the vehicle was designed for,
+       * including both seated and standing capacity, and current operating regulations allow.
+       * It is possible that the value goes over 100 if there are currently more passengers than what the vehicle was designed for.
+       * The precision of occupancy_percentage should be low enough that you can't track a single person boarding and alighting for privacy reasons.
+       * This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional uint32 occupancy_percentage = 10; + * @return Whether the occupancyPercentage field is set. + */ + @java.lang.Override + public boolean hasOccupancyPercentage() { + return ((bitField0_ & 0x00000200) != 0); + } + /** + *
+       * A percentage value representing the degree of passenger occupancy of the vehicle.
+       * The values are represented as an integer without decimals. 0 means 0% and 100 means 100%.
+       * The value 100 should represent the total maximum occupancy the vehicle was designed for,
+       * including both seated and standing capacity, and current operating regulations allow.
+       * It is possible that the value goes over 100 if there are currently more passengers than what the vehicle was designed for.
+       * The precision of occupancy_percentage should be low enough that you can't track a single person boarding and alighting for privacy reasons.
+       * This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional uint32 occupancy_percentage = 10; + * @return The occupancyPercentage. + */ + @java.lang.Override + public int getOccupancyPercentage() { + return occupancyPercentage_; + } + /** + *
+       * A percentage value representing the degree of passenger occupancy of the vehicle.
+       * The values are represented as an integer without decimals. 0 means 0% and 100 means 100%.
+       * The value 100 should represent the total maximum occupancy the vehicle was designed for,
+       * including both seated and standing capacity, and current operating regulations allow.
+       * It is possible that the value goes over 100 if there are currently more passengers than what the vehicle was designed for.
+       * The precision of occupancy_percentage should be low enough that you can't track a single person boarding and alighting for privacy reasons.
+       * This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional uint32 occupancy_percentage = 10; + * @param value The occupancyPercentage to set. + * @return This builder for chaining. + */ + public Builder setOccupancyPercentage(int value) { + bitField0_ |= 0x00000200; + occupancyPercentage_ = value; + onChanged(); + return this; + } + /** + *
+       * A percentage value representing the degree of passenger occupancy of the vehicle.
+       * The values are represented as an integer without decimals. 0 means 0% and 100 means 100%.
+       * The value 100 should represent the total maximum occupancy the vehicle was designed for,
+       * including both seated and standing capacity, and current operating regulations allow.
+       * It is possible that the value goes over 100 if there are currently more passengers than what the vehicle was designed for.
+       * The precision of occupancy_percentage should be low enough that you can't track a single person boarding and alighting for privacy reasons.
+       * This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * optional uint32 occupancy_percentage = 10; + * @return This builder for chaining. + */ + public Builder clearOccupancyPercentage() { + bitField0_ = (bitField0_ & ~0x00000200); + occupancyPercentage_ = 0; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -11413,19 +13654,23 @@ com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInformedEnti /** * optional .transit_realtime.Alert.Cause cause = 6 [default = UNKNOWN_CAUSE]; + * @return Whether the cause field is set. */ boolean hasCause(); /** * optional .transit_realtime.Alert.Cause cause = 6 [default = UNKNOWN_CAUSE]; + * @return The cause. */ com.google.transit.realtime.GtfsRealtime.Alert.Cause getCause(); /** * optional .transit_realtime.Alert.Effect effect = 7 [default = UNKNOWN_EFFECT]; + * @return Whether the effect field is set. */ boolean hasEffect(); /** * optional .transit_realtime.Alert.Effect effect = 7 [default = UNKNOWN_EFFECT]; + * @return The effect. */ com.google.transit.realtime.GtfsRealtime.Alert.Effect getEffect(); @@ -11435,6 +13680,7 @@ com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInformedEnti * * * optional .transit_realtime.TranslatedString url = 8; + * @return Whether the url field is set. */ boolean hasUrl(); /** @@ -11443,6 +13689,7 @@ com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInformedEnti * * * optional .transit_realtime.TranslatedString url = 8; + * @return The url. */ com.google.transit.realtime.GtfsRealtime.TranslatedString getUrl(); /** @@ -11460,6 +13707,7 @@ com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInformedEnti * * * optional .transit_realtime.TranslatedString header_text = 10; + * @return Whether the headerText field is set. */ boolean hasHeaderText(); /** @@ -11468,6 +13716,7 @@ com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInformedEnti * * * optional .transit_realtime.TranslatedString header_text = 10; + * @return The headerText. */ com.google.transit.realtime.GtfsRealtime.TranslatedString getHeaderText(); /** @@ -11486,6 +13735,7 @@ com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInformedEnti * * * optional .transit_realtime.TranslatedString description_text = 11; + * @return Whether the descriptionText field is set. */ boolean hasDescriptionText(); /** @@ -11495,6 +13745,7 @@ com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInformedEnti * * * optional .transit_realtime.TranslatedString description_text = 11; + * @return The descriptionText. */ com.google.transit.realtime.GtfsRealtime.TranslatedString getDescriptionText(); /** @@ -11510,25 +13761,24 @@ com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInformedEnti /** *
      * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; + * @return Whether the ttsHeaderText field is set. */ boolean hasTtsHeaderText(); /** *
      * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; + * @return The ttsHeaderText. */ com.google.transit.realtime.GtfsRealtime.TranslatedString getTtsHeaderText(); /** *
      * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; @@ -11538,25 +13788,24 @@ com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInformedEnti /** *
      * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; + * @return Whether the ttsDescriptionText field is set. */ boolean hasTtsDescriptionText(); /** *
      * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; + * @return The ttsDescriptionText. */ com.google.transit.realtime.GtfsRealtime.TranslatedString getTtsDescriptionText(); /** *
      * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; @@ -11565,10 +13814,12 @@ com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInformedEnti /** * optional .transit_realtime.Alert.SeverityLevel severity_level = 14 [default = UNKNOWN_SEVERITY]; + * @return Whether the severityLevel field is set. */ boolean hasSeverityLevel(); /** * optional .transit_realtime.Alert.SeverityLevel severity_level = 14 [default = UNKNOWN_SEVERITY]; + * @return The severityLevel. */ com.google.transit.realtime.GtfsRealtime.Alert.SeverityLevel getSeverityLevel(); } @@ -11579,7 +13830,7 @@ com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInformedEnti * * Protobuf type {@code transit_realtime.Alert} */ - public static final class Alert extends + public static final class Alert extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage< Alert> implements // @@protoc_insertion_point(message_implements:transit_realtime.Alert) @@ -11597,6 +13848,13 @@ private Alert() { severityLevel_ = 1; } + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Alert(); + } + @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { @@ -11916,6 +14174,8 @@ public final int getNumber() { } /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. * @deprecated Use {@link #forNumber(int)} instead. */ @java.lang.Deprecated @@ -11923,6 +14183,10 @@ public static Cause valueOf(int value) { return forNumber(value); } + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ public static Cause forNumber(int value) { switch (value) { case 1: return UNKNOWN_CAUSE; @@ -12041,6 +14305,10 @@ public enum Effect * NO_EFFECT = 10; */ NO_EFFECT(10), + /** + * ACCESSIBILITY_ISSUE = 11; + */ + ACCESSIBILITY_ISSUE(11), ; /** @@ -12089,6 +14357,10 @@ public enum Effect * NO_EFFECT = 10; */ public static final int NO_EFFECT_VALUE = 10; + /** + * ACCESSIBILITY_ISSUE = 11; + */ + public static final int ACCESSIBILITY_ISSUE_VALUE = 11; public final int getNumber() { @@ -12096,6 +14368,8 @@ public final int getNumber() { } /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. * @deprecated Use {@link #forNumber(int)} instead. */ @java.lang.Deprecated @@ -12103,6 +14377,10 @@ public static Effect valueOf(int value) { return forNumber(value); } + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ public static Effect forNumber(int value) { switch (value) { case 1: return NO_SERVICE; @@ -12115,6 +14393,7 @@ public static Effect forNumber(int value) { case 8: return UNKNOWN_EFFECT; case 9: return STOP_MOVED; case 10: return NO_EFFECT; + case 11: return ACCESSIBILITY_ISSUE; default: return null; } } @@ -12167,7 +14446,6 @@ private Effect(int value) { /** *
      * Severity of this alert.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * Protobuf enum {@code transit_realtime.Alert.SeverityLevel} @@ -12215,6 +14493,8 @@ public final int getNumber() { } /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. * @deprecated Use {@link #forNumber(int)} instead. */ @java.lang.Deprecated @@ -12222,6 +14502,10 @@ public static SeverityLevel valueOf(int value) { return forNumber(value); } + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ public static SeverityLevel forNumber(int value) { switch (value) { case 1: return UNKNOWN_SEVERITY; @@ -12289,6 +14573,7 @@ private SeverityLevel(int value) { * * repeated .transit_realtime.TimeRange active_period = 1; */ + @java.lang.Override public java.util.List getActivePeriodList() { return activePeriod_; } @@ -12301,6 +14586,7 @@ public java.util.List getAct * * repeated .transit_realtime.TimeRange active_period = 1; */ + @java.lang.Override public java.util.List getActivePeriodOrBuilderList() { return activePeriod_; @@ -12314,6 +14600,7 @@ public java.util.List getAct * * repeated .transit_realtime.TimeRange active_period = 1; */ + @java.lang.Override public int getActivePeriodCount() { return activePeriod_.size(); } @@ -12326,6 +14613,7 @@ public int getActivePeriodCount() { * * repeated .transit_realtime.TimeRange active_period = 1; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TimeRange getActivePeriod(int index) { return activePeriod_.get(index); } @@ -12338,6 +14626,7 @@ public com.google.transit.realtime.GtfsRealtime.TimeRange getActivePeriod(int in * * repeated .transit_realtime.TimeRange active_period = 1; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TimeRangeOrBuilder getActivePeriodOrBuilder( int index) { return activePeriod_.get(index); @@ -12352,6 +14641,7 @@ public com.google.transit.realtime.GtfsRealtime.TimeRangeOrBuilder getActivePeri * * repeated .transit_realtime.EntitySelector informed_entity = 5; */ + @java.lang.Override public java.util.List getInformedEntityList() { return informedEntity_; } @@ -12362,6 +14652,7 @@ public java.util.List g * * repeated .transit_realtime.EntitySelector informed_entity = 5; */ + @java.lang.Override public java.util.List getInformedEntityOrBuilderList() { return informedEntity_; @@ -12373,6 +14664,7 @@ public java.util.List g * * repeated .transit_realtime.EntitySelector informed_entity = 5; */ + @java.lang.Override public int getInformedEntityCount() { return informedEntity_.size(); } @@ -12383,6 +14675,7 @@ public int getInformedEntityCount() { * * repeated .transit_realtime.EntitySelector informed_entity = 5; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.EntitySelector getInformedEntity(int index) { return informedEntity_.get(index); } @@ -12393,6 +14686,7 @@ public com.google.transit.realtime.GtfsRealtime.EntitySelector getInformedEntity * * repeated .transit_realtime.EntitySelector informed_entity = 5; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInformedEntityOrBuilder( int index) { return informedEntity_.get(index); @@ -12402,14 +14696,16 @@ public com.google.transit.realtime.GtfsRealtime.EntitySelectorOrBuilder getInfor private int cause_; /** * optional .transit_realtime.Alert.Cause cause = 6 [default = UNKNOWN_CAUSE]; + * @return Whether the cause field is set. */ - public boolean hasCause() { + @java.lang.Override public boolean hasCause() { return ((bitField0_ & 0x00000001) != 0); } /** * optional .transit_realtime.Alert.Cause cause = 6 [default = UNKNOWN_CAUSE]; + * @return The cause. */ - public com.google.transit.realtime.GtfsRealtime.Alert.Cause getCause() { + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.Alert.Cause getCause() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.Alert.Cause result = com.google.transit.realtime.GtfsRealtime.Alert.Cause.valueOf(cause_); return result == null ? com.google.transit.realtime.GtfsRealtime.Alert.Cause.UNKNOWN_CAUSE : result; @@ -12419,14 +14715,16 @@ public com.google.transit.realtime.GtfsRealtime.Alert.Cause getCause() { private int effect_; /** * optional .transit_realtime.Alert.Effect effect = 7 [default = UNKNOWN_EFFECT]; + * @return Whether the effect field is set. */ - public boolean hasEffect() { + @java.lang.Override public boolean hasEffect() { return ((bitField0_ & 0x00000002) != 0); } /** * optional .transit_realtime.Alert.Effect effect = 7 [default = UNKNOWN_EFFECT]; + * @return The effect. */ - public com.google.transit.realtime.GtfsRealtime.Alert.Effect getEffect() { + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.Alert.Effect getEffect() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.Alert.Effect result = com.google.transit.realtime.GtfsRealtime.Alert.Effect.valueOf(effect_); return result == null ? com.google.transit.realtime.GtfsRealtime.Alert.Effect.UNKNOWN_EFFECT : result; @@ -12440,7 +14738,9 @@ public com.google.transit.realtime.GtfsRealtime.Alert.Effect getEffect() { * * * optional .transit_realtime.TranslatedString url = 8; + * @return Whether the url field is set. */ + @java.lang.Override public boolean hasUrl() { return ((bitField0_ & 0x00000004) != 0); } @@ -12450,7 +14750,9 @@ public boolean hasUrl() { * * * optional .transit_realtime.TranslatedString url = 8; + * @return The url. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TranslatedString getUrl() { return url_ == null ? com.google.transit.realtime.GtfsRealtime.TranslatedString.getDefaultInstance() : url_; } @@ -12461,6 +14763,7 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedString getUrl() { * * optional .transit_realtime.TranslatedString url = 8; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getUrlOrBuilder() { return url_ == null ? com.google.transit.realtime.GtfsRealtime.TranslatedString.getDefaultInstance() : url_; } @@ -12473,7 +14776,9 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getUrl * * * optional .transit_realtime.TranslatedString header_text = 10; + * @return Whether the headerText field is set. */ + @java.lang.Override public boolean hasHeaderText() { return ((bitField0_ & 0x00000008) != 0); } @@ -12483,7 +14788,9 @@ public boolean hasHeaderText() { * * * optional .transit_realtime.TranslatedString header_text = 10; + * @return The headerText. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TranslatedString getHeaderText() { return headerText_ == null ? com.google.transit.realtime.GtfsRealtime.TranslatedString.getDefaultInstance() : headerText_; } @@ -12494,6 +14801,7 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedString getHeaderText() * * optional .transit_realtime.TranslatedString header_text = 10; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getHeaderTextOrBuilder() { return headerText_ == null ? com.google.transit.realtime.GtfsRealtime.TranslatedString.getDefaultInstance() : headerText_; } @@ -12507,7 +14815,9 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getHea * * * optional .transit_realtime.TranslatedString description_text = 11; + * @return Whether the descriptionText field is set. */ + @java.lang.Override public boolean hasDescriptionText() { return ((bitField0_ & 0x00000010) != 0); } @@ -12518,7 +14828,9 @@ public boolean hasDescriptionText() { * * * optional .transit_realtime.TranslatedString description_text = 11; + * @return The descriptionText. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TranslatedString getDescriptionText() { return descriptionText_ == null ? com.google.transit.realtime.GtfsRealtime.TranslatedString.getDefaultInstance() : descriptionText_; } @@ -12530,6 +14842,7 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedString getDescriptionT * * optional .transit_realtime.TranslatedString description_text = 11; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getDescriptionTextOrBuilder() { return descriptionText_ == null ? com.google.transit.realtime.GtfsRealtime.TranslatedString.getDefaultInstance() : descriptionText_; } @@ -12539,33 +14852,35 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getDes /** *
      * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; + * @return Whether the ttsHeaderText field is set. */ + @java.lang.Override public boolean hasTtsHeaderText() { return ((bitField0_ & 0x00000020) != 0); } /** *
      * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; + * @return The ttsHeaderText. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TranslatedString getTtsHeaderText() { return ttsHeaderText_ == null ? com.google.transit.realtime.GtfsRealtime.TranslatedString.getDefaultInstance() : ttsHeaderText_; } /** *
      * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getTtsHeaderTextOrBuilder() { return ttsHeaderText_ == null ? com.google.transit.realtime.GtfsRealtime.TranslatedString.getDefaultInstance() : ttsHeaderText_; } @@ -12575,33 +14890,35 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getTts /** *
      * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; + * @return Whether the ttsDescriptionText field is set. */ + @java.lang.Override public boolean hasTtsDescriptionText() { return ((bitField0_ & 0x00000040) != 0); } /** *
      * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; + * @return The ttsDescriptionText. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TranslatedString getTtsDescriptionText() { return ttsDescriptionText_ == null ? com.google.transit.realtime.GtfsRealtime.TranslatedString.getDefaultInstance() : ttsDescriptionText_; } /** *
      * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-     * This field is still experimental, and subject to change. It may be formally adopted in the future.
      * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getTtsDescriptionTextOrBuilder() { return ttsDescriptionText_ == null ? com.google.transit.realtime.GtfsRealtime.TranslatedString.getDefaultInstance() : ttsDescriptionText_; } @@ -12610,14 +14927,16 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getTts private int severityLevel_; /** * optional .transit_realtime.Alert.SeverityLevel severity_level = 14 [default = UNKNOWN_SEVERITY]; + * @return Whether the severityLevel field is set. */ - public boolean hasSeverityLevel() { + @java.lang.Override public boolean hasSeverityLevel() { return ((bitField0_ & 0x00000080) != 0); } /** * optional .transit_realtime.Alert.SeverityLevel severity_level = 14 [default = UNKNOWN_SEVERITY]; + * @return The severityLevel. */ - public com.google.transit.realtime.GtfsRealtime.Alert.SeverityLevel getSeverityLevel() { + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.Alert.SeverityLevel getSeverityLevel() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.Alert.SeverityLevel result = com.google.transit.realtime.GtfsRealtime.Alert.SeverityLevel.valueOf(severityLevel_); return result == null ? com.google.transit.realtime.GtfsRealtime.Alert.SeverityLevel.UNKNOWN_SEVERITY : result; @@ -12717,6 +15036,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) output.writeEnum(14, severityLevel_); } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -14052,13 +16372,16 @@ public com.google.transit.realtime.GtfsRealtime.EntitySelector.Builder addInform private int cause_ = 1; /** * optional .transit_realtime.Alert.Cause cause = 6 [default = UNKNOWN_CAUSE]; + * @return Whether the cause field is set. */ - public boolean hasCause() { + @java.lang.Override public boolean hasCause() { return ((bitField0_ & 0x00000004) != 0); } /** * optional .transit_realtime.Alert.Cause cause = 6 [default = UNKNOWN_CAUSE]; + * @return The cause. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.Alert.Cause getCause() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.Alert.Cause result = com.google.transit.realtime.GtfsRealtime.Alert.Cause.valueOf(cause_); @@ -14066,6 +16389,8 @@ public com.google.transit.realtime.GtfsRealtime.Alert.Cause getCause() { } /** * optional .transit_realtime.Alert.Cause cause = 6 [default = UNKNOWN_CAUSE]; + * @param value The cause to set. + * @return This builder for chaining. */ public Builder setCause(com.google.transit.realtime.GtfsRealtime.Alert.Cause value) { if (value == null) { @@ -14078,6 +16403,7 @@ public Builder setCause(com.google.transit.realtime.GtfsRealtime.Alert.Cause val } /** * optional .transit_realtime.Alert.Cause cause = 6 [default = UNKNOWN_CAUSE]; + * @return This builder for chaining. */ public Builder clearCause() { bitField0_ = (bitField0_ & ~0x00000004); @@ -14089,13 +16415,16 @@ public Builder clearCause() { private int effect_ = 8; /** * optional .transit_realtime.Alert.Effect effect = 7 [default = UNKNOWN_EFFECT]; + * @return Whether the effect field is set. */ - public boolean hasEffect() { + @java.lang.Override public boolean hasEffect() { return ((bitField0_ & 0x00000008) != 0); } /** * optional .transit_realtime.Alert.Effect effect = 7 [default = UNKNOWN_EFFECT]; + * @return The effect. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.Alert.Effect getEffect() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.Alert.Effect result = com.google.transit.realtime.GtfsRealtime.Alert.Effect.valueOf(effect_); @@ -14103,6 +16432,8 @@ public com.google.transit.realtime.GtfsRealtime.Alert.Effect getEffect() { } /** * optional .transit_realtime.Alert.Effect effect = 7 [default = UNKNOWN_EFFECT]; + * @param value The effect to set. + * @return This builder for chaining. */ public Builder setEffect(com.google.transit.realtime.GtfsRealtime.Alert.Effect value) { if (value == null) { @@ -14115,6 +16446,7 @@ public Builder setEffect(com.google.transit.realtime.GtfsRealtime.Alert.Effect v } /** * optional .transit_realtime.Alert.Effect effect = 7 [default = UNKNOWN_EFFECT]; + * @return This builder for chaining. */ public Builder clearEffect() { bitField0_ = (bitField0_ & ~0x00000008); @@ -14132,6 +16464,7 @@ public Builder clearEffect() { * * * optional .transit_realtime.TranslatedString url = 8; + * @return Whether the url field is set. */ public boolean hasUrl() { return ((bitField0_ & 0x00000010) != 0); @@ -14142,6 +16475,7 @@ public boolean hasUrl() { * * * optional .transit_realtime.TranslatedString url = 8; + * @return The url. */ public com.google.transit.realtime.GtfsRealtime.TranslatedString getUrl() { if (urlBuilder_ == null) { @@ -14286,6 +16620,7 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getUrl * * * optional .transit_realtime.TranslatedString header_text = 10; + * @return Whether the headerText field is set. */ public boolean hasHeaderText() { return ((bitField0_ & 0x00000020) != 0); @@ -14296,6 +16631,7 @@ public boolean hasHeaderText() { * * * optional .transit_realtime.TranslatedString header_text = 10; + * @return The headerText. */ public com.google.transit.realtime.GtfsRealtime.TranslatedString getHeaderText() { if (headerTextBuilder_ == null) { @@ -14441,6 +16777,7 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getHea * * * optional .transit_realtime.TranslatedString description_text = 11; + * @return Whether the descriptionText field is set. */ public boolean hasDescriptionText() { return ((bitField0_ & 0x00000040) != 0); @@ -14452,6 +16789,7 @@ public boolean hasDescriptionText() { * * * optional .transit_realtime.TranslatedString description_text = 11; + * @return The descriptionText. */ public com.google.transit.realtime.GtfsRealtime.TranslatedString getDescriptionText() { if (descriptionTextBuilder_ == null) { @@ -14600,10 +16938,10 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getDes /** *
        * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; + * @return Whether the ttsHeaderText field is set. */ public boolean hasTtsHeaderText() { return ((bitField0_ & 0x00000080) != 0); @@ -14611,10 +16949,10 @@ public boolean hasTtsHeaderText() { /** *
        * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; + * @return The ttsHeaderText. */ public com.google.transit.realtime.GtfsRealtime.TranslatedString getTtsHeaderText() { if (ttsHeaderTextBuilder_ == null) { @@ -14626,7 +16964,6 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedString getTtsHeaderTex /** *
        * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; @@ -14647,7 +16984,6 @@ public Builder setTtsHeaderText(com.google.transit.realtime.GtfsRealtime.Transla /** *
        * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; @@ -14666,7 +17002,6 @@ public Builder setTtsHeaderText( /** *
        * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; @@ -14691,7 +17026,6 @@ public Builder mergeTtsHeaderText(com.google.transit.realtime.GtfsRealtime.Trans /** *
        * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; @@ -14709,7 +17043,6 @@ public Builder clearTtsHeaderText() { /** *
        * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; @@ -14722,7 +17055,6 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedString.Builder getTtsH /** *
        * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; @@ -14738,7 +17070,6 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getTts /** *
        * Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_header_text = 12; @@ -14763,10 +17094,10 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getTts /** *
        * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; + * @return Whether the ttsDescriptionText field is set. */ public boolean hasTtsDescriptionText() { return ((bitField0_ & 0x00000100) != 0); @@ -14774,10 +17105,10 @@ public boolean hasTtsDescriptionText() { /** *
        * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; + * @return The ttsDescriptionText. */ public com.google.transit.realtime.GtfsRealtime.TranslatedString getTtsDescriptionText() { if (ttsDescriptionTextBuilder_ == null) { @@ -14789,7 +17120,6 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedString getTtsDescripti /** *
        * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; @@ -14810,7 +17140,6 @@ public Builder setTtsDescriptionText(com.google.transit.realtime.GtfsRealtime.Tr /** *
        * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; @@ -14829,7 +17158,6 @@ public Builder setTtsDescriptionText( /** *
        * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; @@ -14854,7 +17182,6 @@ public Builder mergeTtsDescriptionText(com.google.transit.realtime.GtfsRealtime. /** *
        * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; @@ -14872,7 +17199,6 @@ public Builder clearTtsDescriptionText() { /** *
        * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; @@ -14885,7 +17211,6 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedString.Builder getTtsD /** *
        * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; @@ -14901,7 +17226,6 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getTts /** *
        * Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text.
-       * This field is still experimental, and subject to change. It may be formally adopted in the future.
        * 
* * optional .transit_realtime.TranslatedString tts_description_text = 13; @@ -14923,13 +17247,16 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedStringOrBuilder getTts private int severityLevel_ = 1; /** * optional .transit_realtime.Alert.SeverityLevel severity_level = 14 [default = UNKNOWN_SEVERITY]; + * @return Whether the severityLevel field is set. */ - public boolean hasSeverityLevel() { + @java.lang.Override public boolean hasSeverityLevel() { return ((bitField0_ & 0x00000200) != 0); } /** * optional .transit_realtime.Alert.SeverityLevel severity_level = 14 [default = UNKNOWN_SEVERITY]; + * @return The severityLevel. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.Alert.SeverityLevel getSeverityLevel() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.Alert.SeverityLevel result = com.google.transit.realtime.GtfsRealtime.Alert.SeverityLevel.valueOf(severityLevel_); @@ -14937,6 +17264,8 @@ public com.google.transit.realtime.GtfsRealtime.Alert.SeverityLevel getSeverityL } /** * optional .transit_realtime.Alert.SeverityLevel severity_level = 14 [default = UNKNOWN_SEVERITY]; + * @param value The severityLevel to set. + * @return This builder for chaining. */ public Builder setSeverityLevel(com.google.transit.realtime.GtfsRealtime.Alert.SeverityLevel value) { if (value == null) { @@ -14949,6 +17278,7 @@ public Builder setSeverityLevel(com.google.transit.realtime.GtfsRealtime.Alert.S } /** * optional .transit_realtime.Alert.SeverityLevel severity_level = 14 [default = UNKNOWN_SEVERITY]; + * @return This builder for chaining. */ public Builder clearSeverityLevel() { bitField0_ = (bitField0_ & ~0x00000200); @@ -15022,6 +17352,7 @@ public interface TimeRangeOrBuilder extends * * * optional uint64 start = 1; + * @return Whether the start field is set. */ boolean hasStart(); /** @@ -15032,6 +17363,7 @@ public interface TimeRangeOrBuilder extends * * * optional uint64 start = 1; + * @return The start. */ long getStart(); @@ -15043,6 +17375,7 @@ public interface TimeRangeOrBuilder extends * * * optional uint64 end = 2; + * @return Whether the end field is set. */ boolean hasEnd(); /** @@ -15053,6 +17386,7 @@ public interface TimeRangeOrBuilder extends * * * optional uint64 end = 2; + * @return The end. */ long getEnd(); } @@ -15064,7 +17398,7 @@ public interface TimeRangeOrBuilder extends * * Protobuf type {@code transit_realtime.TimeRange} */ - public static final class TimeRange extends + public static final class TimeRange extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage< TimeRange> implements // @@protoc_insertion_point(message_implements:transit_realtime.TimeRange) @@ -15077,6 +17411,13 @@ private TimeRange(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder * * optional uint64 start = 1; + * @return Whether the start field is set. */ + @java.lang.Override public boolean hasStart() { return ((bitField0_ & 0x00000001) != 0); } @@ -15166,7 +17509,9 @@ public boolean hasStart() { * * * optional uint64 start = 1; + * @return The start. */ + @java.lang.Override public long getStart() { return start_; } @@ -15181,7 +17526,9 @@ public long getStart() { * * * optional uint64 end = 2; + * @return Whether the end field is set. */ + @java.lang.Override public boolean hasEnd() { return ((bitField0_ & 0x00000002) != 0); } @@ -15193,7 +17540,9 @@ public boolean hasEnd() { * * * optional uint64 end = 2; + * @return The end. */ + @java.lang.Override public long getEnd() { return end_; } @@ -15226,6 +17575,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) output.writeUInt64(2, end_); } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -15597,7 +17947,9 @@ public Builder mergeFrom( * * * optional uint64 start = 1; + * @return Whether the start field is set. */ + @java.lang.Override public boolean hasStart() { return ((bitField0_ & 0x00000001) != 0); } @@ -15609,7 +17961,9 @@ public boolean hasStart() { * * * optional uint64 start = 1; + * @return The start. */ + @java.lang.Override public long getStart() { return start_; } @@ -15621,6 +17975,8 @@ public long getStart() { * * * optional uint64 start = 1; + * @param value The start to set. + * @return This builder for chaining. */ public Builder setStart(long value) { bitField0_ |= 0x00000001; @@ -15636,6 +17992,7 @@ public Builder setStart(long value) { * * * optional uint64 start = 1; + * @return This builder for chaining. */ public Builder clearStart() { bitField0_ = (bitField0_ & ~0x00000001); @@ -15653,7 +18010,9 @@ public Builder clearStart() { * * * optional uint64 end = 2; + * @return Whether the end field is set. */ + @java.lang.Override public boolean hasEnd() { return ((bitField0_ & 0x00000002) != 0); } @@ -15665,7 +18024,9 @@ public boolean hasEnd() { * * * optional uint64 end = 2; + * @return The end. */ + @java.lang.Override public long getEnd() { return end_; } @@ -15677,6 +18038,8 @@ public long getEnd() { * * * optional uint64 end = 2; + * @param value The end to set. + * @return This builder for chaining. */ public Builder setEnd(long value) { bitField0_ |= 0x00000002; @@ -15692,6 +18055,7 @@ public Builder setEnd(long value) { * * * optional uint64 end = 2; + * @return This builder for chaining. */ public Builder clearEnd() { bitField0_ = (bitField0_ & ~0x00000002); @@ -15763,6 +18127,7 @@ public interface PositionOrBuilder extends * * * required float latitude = 1; + * @return Whether the latitude field is set. */ boolean hasLatitude(); /** @@ -15771,6 +18136,7 @@ public interface PositionOrBuilder extends * * * required float latitude = 1; + * @return The latitude. */ float getLatitude(); @@ -15780,6 +18146,7 @@ public interface PositionOrBuilder extends * * * required float longitude = 2; + * @return Whether the longitude field is set. */ boolean hasLongitude(); /** @@ -15788,6 +18155,7 @@ public interface PositionOrBuilder extends * * * required float longitude = 2; + * @return The longitude. */ float getLongitude(); @@ -15801,6 +18169,7 @@ public interface PositionOrBuilder extends * * * optional float bearing = 3; + * @return Whether the bearing field is set. */ boolean hasBearing(); /** @@ -15813,6 +18182,7 @@ public interface PositionOrBuilder extends * * * optional float bearing = 3; + * @return The bearing. */ float getBearing(); @@ -15822,6 +18192,7 @@ public interface PositionOrBuilder extends * * * optional double odometer = 4; + * @return Whether the odometer field is set. */ boolean hasOdometer(); /** @@ -15830,6 +18201,7 @@ public interface PositionOrBuilder extends * * * optional double odometer = 4; + * @return The odometer. */ double getOdometer(); @@ -15839,6 +18211,7 @@ public interface PositionOrBuilder extends * * * optional float speed = 5; + * @return Whether the speed field is set. */ boolean hasSpeed(); /** @@ -15847,6 +18220,7 @@ public interface PositionOrBuilder extends * * * optional float speed = 5; + * @return The speed. */ float getSpeed(); } @@ -15857,7 +18231,7 @@ public interface PositionOrBuilder extends * * Protobuf type {@code transit_realtime.Position} */ - public static final class Position extends + public static final class Position extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage< Position> implements // @@protoc_insertion_point(message_implements:transit_realtime.Position) @@ -15870,6 +18244,13 @@ private Position(com.google.protobuf.GeneratedMessageV3.ExtendableBuilder * * required float latitude = 1; + * @return Whether the latitude field is set. */ + @java.lang.Override public boolean hasLatitude() { return ((bitField0_ & 0x00000001) != 0); } @@ -15970,7 +18353,9 @@ public boolean hasLatitude() { * * * required float latitude = 1; + * @return The latitude. */ + @java.lang.Override public float getLatitude() { return latitude_; } @@ -15983,7 +18368,9 @@ public float getLatitude() { * * * required float longitude = 2; + * @return Whether the longitude field is set. */ + @java.lang.Override public boolean hasLongitude() { return ((bitField0_ & 0x00000002) != 0); } @@ -15993,7 +18380,9 @@ public boolean hasLongitude() { * * * required float longitude = 2; + * @return The longitude. */ + @java.lang.Override public float getLongitude() { return longitude_; } @@ -16010,7 +18399,9 @@ public float getLongitude() { * * * optional float bearing = 3; + * @return Whether the bearing field is set. */ + @java.lang.Override public boolean hasBearing() { return ((bitField0_ & 0x00000004) != 0); } @@ -16024,7 +18415,9 @@ public boolean hasBearing() { * * * optional float bearing = 3; + * @return The bearing. */ + @java.lang.Override public float getBearing() { return bearing_; } @@ -16037,7 +18430,9 @@ public float getBearing() { * * * optional double odometer = 4; + * @return Whether the odometer field is set. */ + @java.lang.Override public boolean hasOdometer() { return ((bitField0_ & 0x00000008) != 0); } @@ -16047,7 +18442,9 @@ public boolean hasOdometer() { * * * optional double odometer = 4; + * @return The odometer. */ + @java.lang.Override public double getOdometer() { return odometer_; } @@ -16060,7 +18457,9 @@ public double getOdometer() { * * * optional float speed = 5; + * @return Whether the speed field is set. */ + @java.lang.Override public boolean hasSpeed() { return ((bitField0_ & 0x00000010) != 0); } @@ -16070,7 +18469,9 @@ public boolean hasSpeed() { * * * optional float speed = 5; + * @return The speed. */ + @java.lang.Override public float getSpeed() { return speed_; } @@ -16120,6 +18521,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) output.writeFloat(5, speed_); } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -16568,7 +18970,9 @@ public Builder mergeFrom( * * * required float latitude = 1; + * @return Whether the latitude field is set. */ + @java.lang.Override public boolean hasLatitude() { return ((bitField0_ & 0x00000001) != 0); } @@ -16578,7 +18982,9 @@ public boolean hasLatitude() { * * * required float latitude = 1; + * @return The latitude. */ + @java.lang.Override public float getLatitude() { return latitude_; } @@ -16588,6 +18994,8 @@ public float getLatitude() { * * * required float latitude = 1; + * @param value The latitude to set. + * @return This builder for chaining. */ public Builder setLatitude(float value) { bitField0_ |= 0x00000001; @@ -16601,6 +19009,7 @@ public Builder setLatitude(float value) { * * * required float latitude = 1; + * @return This builder for chaining. */ public Builder clearLatitude() { bitField0_ = (bitField0_ & ~0x00000001); @@ -16616,7 +19025,9 @@ public Builder clearLatitude() { * * * required float longitude = 2; + * @return Whether the longitude field is set. */ + @java.lang.Override public boolean hasLongitude() { return ((bitField0_ & 0x00000002) != 0); } @@ -16626,7 +19037,9 @@ public boolean hasLongitude() { * * * required float longitude = 2; + * @return The longitude. */ + @java.lang.Override public float getLongitude() { return longitude_; } @@ -16636,6 +19049,8 @@ public float getLongitude() { * * * required float longitude = 2; + * @param value The longitude to set. + * @return This builder for chaining. */ public Builder setLongitude(float value) { bitField0_ |= 0x00000002; @@ -16649,6 +19064,7 @@ public Builder setLongitude(float value) { * * * required float longitude = 2; + * @return This builder for chaining. */ public Builder clearLongitude() { bitField0_ = (bitField0_ & ~0x00000002); @@ -16668,7 +19084,9 @@ public Builder clearLongitude() { * * * optional float bearing = 3; + * @return Whether the bearing field is set. */ + @java.lang.Override public boolean hasBearing() { return ((bitField0_ & 0x00000004) != 0); } @@ -16682,7 +19100,9 @@ public boolean hasBearing() { * * * optional float bearing = 3; + * @return The bearing. */ + @java.lang.Override public float getBearing() { return bearing_; } @@ -16696,6 +19116,8 @@ public float getBearing() { * * * optional float bearing = 3; + * @param value The bearing to set. + * @return This builder for chaining. */ public Builder setBearing(float value) { bitField0_ |= 0x00000004; @@ -16713,6 +19135,7 @@ public Builder setBearing(float value) { * * * optional float bearing = 3; + * @return This builder for chaining. */ public Builder clearBearing() { bitField0_ = (bitField0_ & ~0x00000004); @@ -16728,7 +19151,9 @@ public Builder clearBearing() { * * * optional double odometer = 4; + * @return Whether the odometer field is set. */ + @java.lang.Override public boolean hasOdometer() { return ((bitField0_ & 0x00000008) != 0); } @@ -16738,7 +19163,9 @@ public boolean hasOdometer() { * * * optional double odometer = 4; + * @return The odometer. */ + @java.lang.Override public double getOdometer() { return odometer_; } @@ -16748,6 +19175,8 @@ public double getOdometer() { * * * optional double odometer = 4; + * @param value The odometer to set. + * @return This builder for chaining. */ public Builder setOdometer(double value) { bitField0_ |= 0x00000008; @@ -16761,6 +19190,7 @@ public Builder setOdometer(double value) { * * * optional double odometer = 4; + * @return This builder for chaining. */ public Builder clearOdometer() { bitField0_ = (bitField0_ & ~0x00000008); @@ -16776,7 +19206,9 @@ public Builder clearOdometer() { * * * optional float speed = 5; + * @return Whether the speed field is set. */ + @java.lang.Override public boolean hasSpeed() { return ((bitField0_ & 0x00000010) != 0); } @@ -16786,7 +19218,9 @@ public boolean hasSpeed() { * * * optional float speed = 5; + * @return The speed. */ + @java.lang.Override public float getSpeed() { return speed_; } @@ -16796,6 +19230,8 @@ public float getSpeed() { * * * optional float speed = 5; + * @param value The speed to set. + * @return This builder for chaining. */ public Builder setSpeed(float value) { bitField0_ |= 0x00000010; @@ -16809,6 +19245,7 @@ public Builder setSpeed(float value) { * * * optional float speed = 5; + * @return This builder for chaining. */ public Builder clearSpeed() { bitField0_ = (bitField0_ & ~0x00000010); @@ -16879,10 +19316,13 @@ public interface TripDescriptorOrBuilder extends * The trip_id from the GTFS feed that this selector refers to. * For non frequency-based trips, this field is enough to uniquely identify * the trip. For frequency-based trip, start_time and start_date might also be - * necessary. + * necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + * static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + * identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. * * * optional string trip_id = 1; + * @return Whether the tripId field is set. */ boolean hasTripId(); /** @@ -16890,10 +19330,13 @@ public interface TripDescriptorOrBuilder extends * The trip_id from the GTFS feed that this selector refers to. * For non frequency-based trips, this field is enough to uniquely identify * the trip. For frequency-based trip, start_time and start_date might also be - * necessary. + * necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + * static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + * identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. * * * optional string trip_id = 1; + * @return The tripId. */ java.lang.String getTripId(); /** @@ -16901,10 +19344,13 @@ public interface TripDescriptorOrBuilder extends * The trip_id from the GTFS feed that this selector refers to. * For non frequency-based trips, this field is enough to uniquely identify * the trip. For frequency-based trip, start_time and start_date might also be - * necessary. + * necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + * static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + * identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. * * * optional string trip_id = 1; + * @return The bytes for tripId. */ com.google.protobuf.ByteString getTripIdBytes(); @@ -16915,6 +19361,7 @@ public interface TripDescriptorOrBuilder extends * * * optional string route_id = 5; + * @return Whether the routeId field is set. */ boolean hasRouteId(); /** @@ -16923,6 +19370,7 @@ public interface TripDescriptorOrBuilder extends * * * optional string route_id = 5; + * @return The routeId. */ java.lang.String getRouteId(); /** @@ -16931,6 +19379,7 @@ public interface TripDescriptorOrBuilder extends * * * optional string route_id = 5; + * @return The bytes for routeId. */ com.google.protobuf.ByteString getRouteIdBytes(); @@ -16938,23 +19387,21 @@ public interface TripDescriptorOrBuilder extends /** *
      * The direction_id from the GTFS feed trips.txt file, indicating the
-     * direction of travel for trips this selector refers to. This field is
-     * still experimental, and subject to change. It may be formally adopted in
-     * the future.
+     * direction of travel for trips this selector refers to.
      * 
* * optional uint32 direction_id = 6; + * @return Whether the directionId field is set. */ boolean hasDirectionId(); /** *
      * The direction_id from the GTFS feed trips.txt file, indicating the
-     * direction of travel for trips this selector refers to. This field is
-     * still experimental, and subject to change. It may be formally adopted in
-     * the future.
+     * direction of travel for trips this selector refers to.
      * 
* * optional uint32 direction_id = 6; + * @return The directionId. */ int getDirectionId(); @@ -16978,6 +19425,7 @@ public interface TripDescriptorOrBuilder extends * * * optional string start_time = 2; + * @return Whether the startTime field is set. */ boolean hasStartTime(); /** @@ -17000,6 +19448,7 @@ public interface TripDescriptorOrBuilder extends * * * optional string start_time = 2; + * @return The startTime. */ java.lang.String getStartTime(); /** @@ -17022,6 +19471,7 @@ public interface TripDescriptorOrBuilder extends * * * optional string start_time = 2; + * @return The bytes for startTime. */ com.google.protobuf.ByteString getStartTimeBytes(); @@ -17041,6 +19491,7 @@ public interface TripDescriptorOrBuilder extends * * * optional string start_date = 3; + * @return Whether the startDate field is set. */ boolean hasStartDate(); /** @@ -17058,6 +19509,7 @@ public interface TripDescriptorOrBuilder extends * * * optional string start_date = 3; + * @return The startDate. */ java.lang.String getStartDate(); /** @@ -17075,16 +19527,19 @@ public interface TripDescriptorOrBuilder extends * * * optional string start_date = 3; + * @return The bytes for startDate. */ com.google.protobuf.ByteString getStartDateBytes(); /** * optional .transit_realtime.TripDescriptor.ScheduleRelationship schedule_relationship = 4; + * @return Whether the scheduleRelationship field is set. */ boolean hasScheduleRelationship(); /** * optional .transit_realtime.TripDescriptor.ScheduleRelationship schedule_relationship = 4; + * @return The scheduleRelationship. */ com.google.transit.realtime.GtfsRealtime.TripDescriptor.ScheduleRelationship getScheduleRelationship(); } @@ -17103,7 +19558,7 @@ public interface TripDescriptorOrBuilder extends * * Protobuf type {@code transit_realtime.TripDescriptor} */ - public static final class TripDescriptor extends + public static final class TripDescriptor extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage< TripDescriptor> implements // @@protoc_insertion_point(message_implements:transit_realtime.TripDescriptor) @@ -17121,6 +19576,13 @@ private TripDescriptor() { scheduleRelationship_ = 0; } + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new TripDescriptor(); + } + @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { @@ -17243,6 +19705,10 @@ public enum ScheduleRelationship * An extra trip that was added in addition to a running schedule, for * example, to replace a broken vehicle or to respond to sudden passenger * load. + * NOTE: Currently, behavior is unspecified for feeds that use this mode. There are discussions on the GTFS GitHub + * [(1)](https://github.com/google/transit/issues/106) [(2)](https://github.com/google/transit/pull/221) + * [(3)](https://github.com/google/transit/pull/219) around fully specifying or deprecating ADDED trips and the + * documentation will be updated when those discussions are finalized. * * * ADDED = 1; @@ -17250,8 +19716,8 @@ public enum ScheduleRelationship ADDED(1), /** *
-       * A trip that is running with no schedule associated to it, for example, if
-       * there is no schedule at all.
+       * A trip that is running with no schedule associated to it (GTFS frequencies.txt exact_times=0).
+       * Trips with ScheduleRelationship=UNSCHEDULED must also set all StopTimeUpdates.ScheduleRelationship=UNSCHEDULED.
        * 
* * UNSCHEDULED = 2; @@ -17274,6 +19740,28 @@ public enum ScheduleRelationship */ @java.lang.Deprecated REPLACEMENT(5), + /** + *
+       * An extra trip that was added in addition to a running schedule, for example, to replace a broken vehicle or to
+       * respond to sudden passenger load. Used with TripUpdate.TripProperties.trip_id, TripUpdate.TripProperties.start_date,
+       * and TripUpdate.TripProperties.start_time to copy an existing trip from static GTFS but start at a different service
+       * date and/or time. Duplicating a trip is allowed if the service related to the original trip in (CSV) GTFS
+       * (in calendar.txt or calendar_dates.txt) is operating within the next 30 days. The trip to be duplicated is
+       * identified via TripUpdate.TripDescriptor.trip_id. This enumeration does not modify the existing trip referenced by
+       * TripUpdate.TripDescriptor.trip_id - if a producer wants to cancel the original trip, it must publish a separate
+       * TripUpdate with the value of CANCELED. Trips defined in GTFS frequencies.txt with exact_times that is empty or
+       * equal to 0 cannot be duplicated. The VehiclePosition.TripDescriptor.trip_id for the new trip must contain
+       * the matching value from TripUpdate.TripProperties.trip_id and VehiclePosition.TripDescriptor.ScheduleRelationship
+       * must also be set to DUPLICATED.
+       * Existing producers and consumers that were using the ADDED enumeration to represent duplicated trips must follow
+       * the migration guide (https://github.com/google/transit/tree/master/gtfs-realtime/spec/en/examples/migration-duplicated.md)
+       * to transition to the DUPLICATED enumeration.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * DUPLICATED = 6; + */ + DUPLICATED(6), ; /** @@ -17290,6 +19778,10 @@ public enum ScheduleRelationship * An extra trip that was added in addition to a running schedule, for * example, to replace a broken vehicle or to respond to sudden passenger * load. + * NOTE: Currently, behavior is unspecified for feeds that use this mode. There are discussions on the GTFS GitHub + * [(1)](https://github.com/google/transit/issues/106) [(2)](https://github.com/google/transit/pull/221) + * [(3)](https://github.com/google/transit/pull/219) around fully specifying or deprecating ADDED trips and the + * documentation will be updated when those discussions are finalized. * * * ADDED = 1; @@ -17297,8 +19789,8 @@ public enum ScheduleRelationship public static final int ADDED_VALUE = 1; /** *
-       * A trip that is running with no schedule associated to it, for example, if
-       * there is no schedule at all.
+       * A trip that is running with no schedule associated to it (GTFS frequencies.txt exact_times=0).
+       * Trips with ScheduleRelationship=UNSCHEDULED must also set all StopTimeUpdates.ScheduleRelationship=UNSCHEDULED.
        * 
* * UNSCHEDULED = 2; @@ -17319,7 +19811,29 @@ public enum ScheduleRelationship * * REPLACEMENT = 5 [deprecated = true]; */ - public static final int REPLACEMENT_VALUE = 5; + @java.lang.Deprecated public static final int REPLACEMENT_VALUE = 5; + /** + *
+       * An extra trip that was added in addition to a running schedule, for example, to replace a broken vehicle or to
+       * respond to sudden passenger load. Used with TripUpdate.TripProperties.trip_id, TripUpdate.TripProperties.start_date,
+       * and TripUpdate.TripProperties.start_time to copy an existing trip from static GTFS but start at a different service
+       * date and/or time. Duplicating a trip is allowed if the service related to the original trip in (CSV) GTFS
+       * (in calendar.txt or calendar_dates.txt) is operating within the next 30 days. The trip to be duplicated is
+       * identified via TripUpdate.TripDescriptor.trip_id. This enumeration does not modify the existing trip referenced by
+       * TripUpdate.TripDescriptor.trip_id - if a producer wants to cancel the original trip, it must publish a separate
+       * TripUpdate with the value of CANCELED. Trips defined in GTFS frequencies.txt with exact_times that is empty or
+       * equal to 0 cannot be duplicated. The VehiclePosition.TripDescriptor.trip_id for the new trip must contain
+       * the matching value from TripUpdate.TripProperties.trip_id and VehiclePosition.TripDescriptor.ScheduleRelationship
+       * must also be set to DUPLICATED.
+       * Existing producers and consumers that were using the ADDED enumeration to represent duplicated trips must follow
+       * the migration guide (https://github.com/google/transit/tree/master/gtfs-realtime/spec/en/examples/migration-duplicated.md)
+       * to transition to the DUPLICATED enumeration.
+       * NOTE: This field is still experimental, and subject to change. It may be formally adopted in the future.
+       * 
+ * + * DUPLICATED = 6; + */ + public static final int DUPLICATED_VALUE = 6; public final int getNumber() { @@ -17327,6 +19841,8 @@ public final int getNumber() { } /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. * @deprecated Use {@link #forNumber(int)} instead. */ @java.lang.Deprecated @@ -17334,6 +19850,10 @@ public static ScheduleRelationship valueOf(int value) { return forNumber(value); } + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ public static ScheduleRelationship forNumber(int value) { switch (value) { case 0: return SCHEDULED; @@ -17341,6 +19861,7 @@ public static ScheduleRelationship forNumber(int value) { case 2: return UNSCHEDULED; case 3: return CANCELED; case 5: return REPLACEMENT; + case 6: return DUPLICATED; default: return null; } } @@ -17398,11 +19919,15 @@ private ScheduleRelationship(int value) { * The trip_id from the GTFS feed that this selector refers to. * For non frequency-based trips, this field is enough to uniquely identify * the trip. For frequency-based trip, start_time and start_date might also be - * necessary. + * necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + * static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + * identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. * * * optional string trip_id = 1; + * @return Whether the tripId field is set. */ + @java.lang.Override public boolean hasTripId() { return ((bitField0_ & 0x00000001) != 0); } @@ -17411,11 +19936,15 @@ public boolean hasTripId() { * The trip_id from the GTFS feed that this selector refers to. * For non frequency-based trips, this field is enough to uniquely identify * the trip. For frequency-based trip, start_time and start_date might also be - * necessary. + * necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + * static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + * identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. * * * optional string trip_id = 1; + * @return The tripId. */ + @java.lang.Override public java.lang.String getTripId() { java.lang.Object ref = tripId_; if (ref instanceof java.lang.String) { @@ -17435,11 +19964,15 @@ public java.lang.String getTripId() { * The trip_id from the GTFS feed that this selector refers to. * For non frequency-based trips, this field is enough to uniquely identify * the trip. For frequency-based trip, start_time and start_date might also be - * necessary. + * necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + * static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + * identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. * * * optional string trip_id = 1; + * @return The bytes for tripId. */ + @java.lang.Override public com.google.protobuf.ByteString getTripIdBytes() { java.lang.Object ref = tripId_; @@ -17462,7 +19995,9 @@ public java.lang.String getTripId() { * * * optional string route_id = 5; + * @return Whether the routeId field is set. */ + @java.lang.Override public boolean hasRouteId() { return ((bitField0_ & 0x00000002) != 0); } @@ -17472,7 +20007,9 @@ public boolean hasRouteId() { * * * optional string route_id = 5; + * @return The routeId. */ + @java.lang.Override public java.lang.String getRouteId() { java.lang.Object ref = routeId_; if (ref instanceof java.lang.String) { @@ -17493,7 +20030,9 @@ public java.lang.String getRouteId() { * * * optional string route_id = 5; + * @return The bytes for routeId. */ + @java.lang.Override public com.google.protobuf.ByteString getRouteIdBytes() { java.lang.Object ref = routeId_; @@ -17513,26 +20052,26 @@ public java.lang.String getRouteId() { /** *
      * The direction_id from the GTFS feed trips.txt file, indicating the
-     * direction of travel for trips this selector refers to. This field is
-     * still experimental, and subject to change. It may be formally adopted in
-     * the future.
+     * direction of travel for trips this selector refers to.
      * 
* * optional uint32 direction_id = 6; + * @return Whether the directionId field is set. */ + @java.lang.Override public boolean hasDirectionId() { return ((bitField0_ & 0x00000004) != 0); } /** *
      * The direction_id from the GTFS feed trips.txt file, indicating the
-     * direction of travel for trips this selector refers to. This field is
-     * still experimental, and subject to change. It may be formally adopted in
-     * the future.
+     * direction of travel for trips this selector refers to.
      * 
* * optional uint32 direction_id = 6; + * @return The directionId. */ + @java.lang.Override public int getDirectionId() { return directionId_; } @@ -17559,7 +20098,9 @@ public int getDirectionId() { * * * optional string start_time = 2; + * @return Whether the startTime field is set. */ + @java.lang.Override public boolean hasStartTime() { return ((bitField0_ & 0x00000008) != 0); } @@ -17583,7 +20124,9 @@ public boolean hasStartTime() { * * * optional string start_time = 2; + * @return The startTime. */ + @java.lang.Override public java.lang.String getStartTime() { java.lang.Object ref = startTime_; if (ref instanceof java.lang.String) { @@ -17618,7 +20161,9 @@ public java.lang.String getStartTime() { * * * optional string start_time = 2; + * @return The bytes for startTime. */ + @java.lang.Override public com.google.protobuf.ByteString getStartTimeBytes() { java.lang.Object ref = startTime_; @@ -17650,7 +20195,9 @@ public java.lang.String getStartTime() { * * * optional string start_date = 3; + * @return Whether the startDate field is set. */ + @java.lang.Override public boolean hasStartDate() { return ((bitField0_ & 0x00000010) != 0); } @@ -17669,7 +20216,9 @@ public boolean hasStartDate() { * * * optional string start_date = 3; + * @return The startDate. */ + @java.lang.Override public java.lang.String getStartDate() { java.lang.Object ref = startDate_; if (ref instanceof java.lang.String) { @@ -17699,7 +20248,9 @@ public java.lang.String getStartDate() { * * * optional string start_date = 3; + * @return The bytes for startDate. */ + @java.lang.Override public com.google.protobuf.ByteString getStartDateBytes() { java.lang.Object ref = startDate_; @@ -17718,14 +20269,16 @@ public java.lang.String getStartDate() { private int scheduleRelationship_; /** * optional .transit_realtime.TripDescriptor.ScheduleRelationship schedule_relationship = 4; + * @return Whether the scheduleRelationship field is set. */ - public boolean hasScheduleRelationship() { + @java.lang.Override public boolean hasScheduleRelationship() { return ((bitField0_ & 0x00000020) != 0); } /** * optional .transit_realtime.TripDescriptor.ScheduleRelationship schedule_relationship = 4; + * @return The scheduleRelationship. */ - public com.google.transit.realtime.GtfsRealtime.TripDescriptor.ScheduleRelationship getScheduleRelationship() { + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripDescriptor.ScheduleRelationship getScheduleRelationship() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.TripDescriptor.ScheduleRelationship result = com.google.transit.realtime.GtfsRealtime.TripDescriptor.ScheduleRelationship.valueOf(scheduleRelationship_); return result == null ? com.google.transit.realtime.GtfsRealtime.TripDescriptor.ScheduleRelationship.SCHEDULED : result; @@ -17771,6 +20324,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) output.writeUInt32(6, directionId_); } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -18235,10 +20789,13 @@ public Builder mergeFrom( * The trip_id from the GTFS feed that this selector refers to. * For non frequency-based trips, this field is enough to uniquely identify * the trip. For frequency-based trip, start_time and start_date might also be - * necessary. + * necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + * static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + * identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. * * * optional string trip_id = 1; + * @return Whether the tripId field is set. */ public boolean hasTripId() { return ((bitField0_ & 0x00000001) != 0); @@ -18248,10 +20805,13 @@ public boolean hasTripId() { * The trip_id from the GTFS feed that this selector refers to. * For non frequency-based trips, this field is enough to uniquely identify * the trip. For frequency-based trip, start_time and start_date might also be - * necessary. + * necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + * static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + * identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. * * * optional string trip_id = 1; + * @return The tripId. */ public java.lang.String getTripId() { java.lang.Object ref = tripId_; @@ -18272,10 +20832,13 @@ public java.lang.String getTripId() { * The trip_id from the GTFS feed that this selector refers to. * For non frequency-based trips, this field is enough to uniquely identify * the trip. For frequency-based trip, start_time and start_date might also be - * necessary. + * necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + * static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + * identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. * * * optional string trip_id = 1; + * @return The bytes for tripId. */ public com.google.protobuf.ByteString getTripIdBytes() { @@ -18295,10 +20858,14 @@ public java.lang.String getTripId() { * The trip_id from the GTFS feed that this selector refers to. * For non frequency-based trips, this field is enough to uniquely identify * the trip. For frequency-based trip, start_time and start_date might also be - * necessary. + * necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + * static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + * identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. * * * optional string trip_id = 1; + * @param value The tripId to set. + * @return This builder for chaining. */ public Builder setTripId( java.lang.String value) { @@ -18315,10 +20882,13 @@ public Builder setTripId( * The trip_id from the GTFS feed that this selector refers to. * For non frequency-based trips, this field is enough to uniquely identify * the trip. For frequency-based trip, start_time and start_date might also be - * necessary. + * necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + * static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + * identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. * * * optional string trip_id = 1; + * @return This builder for chaining. */ public Builder clearTripId() { bitField0_ = (bitField0_ & ~0x00000001); @@ -18331,10 +20901,14 @@ public Builder clearTripId() { * The trip_id from the GTFS feed that this selector refers to. * For non frequency-based trips, this field is enough to uniquely identify * the trip. For frequency-based trip, start_time and start_date might also be - * necessary. + * necessary. When schedule_relationship is DUPLICATED within a TripUpdate, the trip_id identifies the trip from + * static GTFS to be duplicated. When schedule_relationship is DUPLICATED within a VehiclePosition, the trip_id + * identifies the new duplicate trip and must contain the value for the corresponding TripUpdate.TripProperties.trip_id. * * * optional string trip_id = 1; + * @param value The bytes for tripId to set. + * @return This builder for chaining. */ public Builder setTripIdBytes( com.google.protobuf.ByteString value) { @@ -18354,6 +20928,7 @@ public Builder setTripIdBytes( * * * optional string route_id = 5; + * @return Whether the routeId field is set. */ public boolean hasRouteId() { return ((bitField0_ & 0x00000002) != 0); @@ -18364,6 +20939,7 @@ public boolean hasRouteId() { * * * optional string route_id = 5; + * @return The routeId. */ public java.lang.String getRouteId() { java.lang.Object ref = routeId_; @@ -18385,6 +20961,7 @@ public java.lang.String getRouteId() { * * * optional string route_id = 5; + * @return The bytes for routeId. */ public com.google.protobuf.ByteString getRouteIdBytes() { @@ -18405,6 +20982,8 @@ public java.lang.String getRouteId() { * * * optional string route_id = 5; + * @param value The routeId to set. + * @return This builder for chaining. */ public Builder setRouteId( java.lang.String value) { @@ -18422,6 +21001,7 @@ public Builder setRouteId( * * * optional string route_id = 5; + * @return This builder for chaining. */ public Builder clearRouteId() { bitField0_ = (bitField0_ & ~0x00000002); @@ -18435,6 +21015,8 @@ public Builder clearRouteId() { * * * optional string route_id = 5; + * @param value The bytes for routeId to set. + * @return This builder for chaining. */ public Builder setRouteIdBytes( com.google.protobuf.ByteString value) { @@ -18451,38 +21033,38 @@ public Builder setRouteIdBytes( /** *
        * The direction_id from the GTFS feed trips.txt file, indicating the
-       * direction of travel for trips this selector refers to. This field is
-       * still experimental, and subject to change. It may be formally adopted in
-       * the future.
+       * direction of travel for trips this selector refers to.
        * 
* * optional uint32 direction_id = 6; + * @return Whether the directionId field is set. */ + @java.lang.Override public boolean hasDirectionId() { return ((bitField0_ & 0x00000004) != 0); } /** *
        * The direction_id from the GTFS feed trips.txt file, indicating the
-       * direction of travel for trips this selector refers to. This field is
-       * still experimental, and subject to change. It may be formally adopted in
-       * the future.
+       * direction of travel for trips this selector refers to.
        * 
* * optional uint32 direction_id = 6; + * @return The directionId. */ + @java.lang.Override public int getDirectionId() { return directionId_; } /** *
        * The direction_id from the GTFS feed trips.txt file, indicating the
-       * direction of travel for trips this selector refers to. This field is
-       * still experimental, and subject to change. It may be formally adopted in
-       * the future.
+       * direction of travel for trips this selector refers to.
        * 
* * optional uint32 direction_id = 6; + * @param value The directionId to set. + * @return This builder for chaining. */ public Builder setDirectionId(int value) { bitField0_ |= 0x00000004; @@ -18493,12 +21075,11 @@ public Builder setDirectionId(int value) { /** *
        * The direction_id from the GTFS feed trips.txt file, indicating the
-       * direction of travel for trips this selector refers to. This field is
-       * still experimental, and subject to change. It may be formally adopted in
-       * the future.
+       * direction of travel for trips this selector refers to.
        * 
* * optional uint32 direction_id = 6; + * @return This builder for chaining. */ public Builder clearDirectionId() { bitField0_ = (bitField0_ & ~0x00000004); @@ -18528,6 +21109,7 @@ public Builder clearDirectionId() { * * * optional string start_time = 2; + * @return Whether the startTime field is set. */ public boolean hasStartTime() { return ((bitField0_ & 0x00000008) != 0); @@ -18552,6 +21134,7 @@ public boolean hasStartTime() { * * * optional string start_time = 2; + * @return The startTime. */ public java.lang.String getStartTime() { java.lang.Object ref = startTime_; @@ -18587,6 +21170,7 @@ public java.lang.String getStartTime() { * * * optional string start_time = 2; + * @return The bytes for startTime. */ public com.google.protobuf.ByteString getStartTimeBytes() { @@ -18621,6 +21205,8 @@ public java.lang.String getStartTime() { * * * optional string start_time = 2; + * @param value The startTime to set. + * @return This builder for chaining. */ public Builder setStartTime( java.lang.String value) { @@ -18652,6 +21238,7 @@ public Builder setStartTime( * * * optional string start_time = 2; + * @return This builder for chaining. */ public Builder clearStartTime() { bitField0_ = (bitField0_ & ~0x00000008); @@ -18679,6 +21266,8 @@ public Builder clearStartTime() { * * * optional string start_time = 2; + * @param value The bytes for startTime to set. + * @return This builder for chaining. */ public Builder setStartTimeBytes( com.google.protobuf.ByteString value) { @@ -18707,6 +21296,7 @@ public Builder setStartTimeBytes( * * * optional string start_date = 3; + * @return Whether the startDate field is set. */ public boolean hasStartDate() { return ((bitField0_ & 0x00000010) != 0); @@ -18726,6 +21316,7 @@ public boolean hasStartDate() { * * * optional string start_date = 3; + * @return The startDate. */ public java.lang.String getStartDate() { java.lang.Object ref = startDate_; @@ -18756,6 +21347,7 @@ public java.lang.String getStartDate() { * * * optional string start_date = 3; + * @return The bytes for startDate. */ public com.google.protobuf.ByteString getStartDateBytes() { @@ -18785,6 +21377,8 @@ public java.lang.String getStartDate() { * * * optional string start_date = 3; + * @param value The startDate to set. + * @return This builder for chaining. */ public Builder setStartDate( java.lang.String value) { @@ -18811,6 +21405,7 @@ public Builder setStartDate( * * * optional string start_date = 3; + * @return This builder for chaining. */ public Builder clearStartDate() { bitField0_ = (bitField0_ & ~0x00000010); @@ -18833,6 +21428,8 @@ public Builder clearStartDate() { * * * optional string start_date = 3; + * @param value The bytes for startDate to set. + * @return This builder for chaining. */ public Builder setStartDateBytes( com.google.protobuf.ByteString value) { @@ -18848,13 +21445,16 @@ public Builder setStartDateBytes( private int scheduleRelationship_ = 0; /** * optional .transit_realtime.TripDescriptor.ScheduleRelationship schedule_relationship = 4; + * @return Whether the scheduleRelationship field is set. */ - public boolean hasScheduleRelationship() { + @java.lang.Override public boolean hasScheduleRelationship() { return ((bitField0_ & 0x00000020) != 0); } /** * optional .transit_realtime.TripDescriptor.ScheduleRelationship schedule_relationship = 4; + * @return The scheduleRelationship. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripDescriptor.ScheduleRelationship getScheduleRelationship() { @SuppressWarnings("deprecation") com.google.transit.realtime.GtfsRealtime.TripDescriptor.ScheduleRelationship result = com.google.transit.realtime.GtfsRealtime.TripDescriptor.ScheduleRelationship.valueOf(scheduleRelationship_); @@ -18862,6 +21462,8 @@ public com.google.transit.realtime.GtfsRealtime.TripDescriptor.ScheduleRelations } /** * optional .transit_realtime.TripDescriptor.ScheduleRelationship schedule_relationship = 4; + * @param value The scheduleRelationship to set. + * @return This builder for chaining. */ public Builder setScheduleRelationship(com.google.transit.realtime.GtfsRealtime.TripDescriptor.ScheduleRelationship value) { if (value == null) { @@ -18874,6 +21476,7 @@ public Builder setScheduleRelationship(com.google.transit.realtime.GtfsRealtime. } /** * optional .transit_realtime.TripDescriptor.ScheduleRelationship schedule_relationship = 4; + * @return This builder for chaining. */ public Builder clearScheduleRelationship() { bitField0_ = (bitField0_ & ~0x00000020); @@ -18947,6 +21550,7 @@ public interface VehicleDescriptorOrBuilder extends * * * optional string id = 1; + * @return Whether the id field is set. */ boolean hasId(); /** @@ -18957,6 +21561,7 @@ public interface VehicleDescriptorOrBuilder extends * * * optional string id = 1; + * @return The id. */ java.lang.String getId(); /** @@ -18967,6 +21572,7 @@ public interface VehicleDescriptorOrBuilder extends * * * optional string id = 1; + * @return The bytes for id. */ com.google.protobuf.ByteString getIdBytes(); @@ -18978,6 +21584,7 @@ public interface VehicleDescriptorOrBuilder extends * * * optional string label = 2; + * @return Whether the label field is set. */ boolean hasLabel(); /** @@ -18987,6 +21594,7 @@ public interface VehicleDescriptorOrBuilder extends * * * optional string label = 2; + * @return The label. */ java.lang.String getLabel(); /** @@ -18996,6 +21604,7 @@ public interface VehicleDescriptorOrBuilder extends * * * optional string label = 2; + * @return The bytes for label. */ com.google.protobuf.ByteString getLabelBytes(); @@ -19006,6 +21615,7 @@ public interface VehicleDescriptorOrBuilder extends * * * optional string license_plate = 3; + * @return Whether the licensePlate field is set. */ boolean hasLicensePlate(); /** @@ -19014,6 +21624,7 @@ public interface VehicleDescriptorOrBuilder extends * * * optional string license_plate = 3; + * @return The licensePlate. */ java.lang.String getLicensePlate(); /** @@ -19022,6 +21633,7 @@ public interface VehicleDescriptorOrBuilder extends * * * optional string license_plate = 3; + * @return The bytes for licensePlate. */ com.google.protobuf.ByteString getLicensePlateBytes(); @@ -19033,7 +21645,7 @@ public interface VehicleDescriptorOrBuilder extends * * Protobuf type {@code transit_realtime.VehicleDescriptor} */ - public static final class VehicleDescriptor extends + public static final class VehicleDescriptor extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage< VehicleDescriptor> implements // @@protoc_insertion_point(message_implements:transit_realtime.VehicleDescriptor) @@ -19049,6 +21661,13 @@ private VehicleDescriptor() { licensePlate_ = ""; } + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new VehicleDescriptor(); + } + @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { @@ -19134,7 +21753,9 @@ private VehicleDescriptor( * * * optional string id = 1; + * @return Whether the id field is set. */ + @java.lang.Override public boolean hasId() { return ((bitField0_ & 0x00000001) != 0); } @@ -19146,7 +21767,9 @@ public boolean hasId() { * * * optional string id = 1; + * @return The id. */ + @java.lang.Override public java.lang.String getId() { java.lang.Object ref = id_; if (ref instanceof java.lang.String) { @@ -19169,7 +21792,9 @@ public java.lang.String getId() { * * * optional string id = 1; + * @return The bytes for id. */ + @java.lang.Override public com.google.protobuf.ByteString getIdBytes() { java.lang.Object ref = id_; @@ -19193,7 +21818,9 @@ public java.lang.String getId() { * * * optional string label = 2; + * @return Whether the label field is set. */ + @java.lang.Override public boolean hasLabel() { return ((bitField0_ & 0x00000002) != 0); } @@ -19204,7 +21831,9 @@ public boolean hasLabel() { * * * optional string label = 2; + * @return The label. */ + @java.lang.Override public java.lang.String getLabel() { java.lang.Object ref = label_; if (ref instanceof java.lang.String) { @@ -19226,7 +21855,9 @@ public java.lang.String getLabel() { * * * optional string label = 2; + * @return The bytes for label. */ + @java.lang.Override public com.google.protobuf.ByteString getLabelBytes() { java.lang.Object ref = label_; @@ -19249,7 +21880,9 @@ public java.lang.String getLabel() { * * * optional string license_plate = 3; + * @return Whether the licensePlate field is set. */ + @java.lang.Override public boolean hasLicensePlate() { return ((bitField0_ & 0x00000004) != 0); } @@ -19259,7 +21892,9 @@ public boolean hasLicensePlate() { * * * optional string license_plate = 3; + * @return The licensePlate. */ + @java.lang.Override public java.lang.String getLicensePlate() { java.lang.Object ref = licensePlate_; if (ref instanceof java.lang.String) { @@ -19280,7 +21915,9 @@ public java.lang.String getLicensePlate() { * * * optional string license_plate = 3; + * @return The bytes for licensePlate. */ + @java.lang.Override public com.google.protobuf.ByteString getLicensePlateBytes() { java.lang.Object ref = licensePlate_; @@ -19326,6 +21963,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) com.google.protobuf.GeneratedMessageV3.writeString(output, 3, licensePlate_); } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -19719,6 +22357,7 @@ public Builder mergeFrom( * * * optional string id = 1; + * @return Whether the id field is set. */ public boolean hasId() { return ((bitField0_ & 0x00000001) != 0); @@ -19731,6 +22370,7 @@ public boolean hasId() { * * * optional string id = 1; + * @return The id. */ public java.lang.String getId() { java.lang.Object ref = id_; @@ -19754,6 +22394,7 @@ public java.lang.String getId() { * * * optional string id = 1; + * @return The bytes for id. */ public com.google.protobuf.ByteString getIdBytes() { @@ -19776,6 +22417,8 @@ public java.lang.String getId() { * * * optional string id = 1; + * @param value The id to set. + * @return This builder for chaining. */ public Builder setId( java.lang.String value) { @@ -19795,6 +22438,7 @@ public Builder setId( * * * optional string id = 1; + * @return This builder for chaining. */ public Builder clearId() { bitField0_ = (bitField0_ & ~0x00000001); @@ -19810,6 +22454,8 @@ public Builder clearId() { * * * optional string id = 1; + * @param value The bytes for id to set. + * @return This builder for chaining. */ public Builder setIdBytes( com.google.protobuf.ByteString value) { @@ -19830,6 +22476,7 @@ public Builder setIdBytes( * * * optional string label = 2; + * @return Whether the label field is set. */ public boolean hasLabel() { return ((bitField0_ & 0x00000002) != 0); @@ -19841,6 +22488,7 @@ public boolean hasLabel() { * * * optional string label = 2; + * @return The label. */ public java.lang.String getLabel() { java.lang.Object ref = label_; @@ -19863,6 +22511,7 @@ public java.lang.String getLabel() { * * * optional string label = 2; + * @return The bytes for label. */ public com.google.protobuf.ByteString getLabelBytes() { @@ -19884,6 +22533,8 @@ public java.lang.String getLabel() { * * * optional string label = 2; + * @param value The label to set. + * @return This builder for chaining. */ public Builder setLabel( java.lang.String value) { @@ -19902,6 +22553,7 @@ public Builder setLabel( * * * optional string label = 2; + * @return This builder for chaining. */ public Builder clearLabel() { bitField0_ = (bitField0_ & ~0x00000002); @@ -19916,6 +22568,8 @@ public Builder clearLabel() { * * * optional string label = 2; + * @param value The bytes for label to set. + * @return This builder for chaining. */ public Builder setLabelBytes( com.google.protobuf.ByteString value) { @@ -19935,6 +22589,7 @@ public Builder setLabelBytes( * * * optional string license_plate = 3; + * @return Whether the licensePlate field is set. */ public boolean hasLicensePlate() { return ((bitField0_ & 0x00000004) != 0); @@ -19945,6 +22600,7 @@ public boolean hasLicensePlate() { * * * optional string license_plate = 3; + * @return The licensePlate. */ public java.lang.String getLicensePlate() { java.lang.Object ref = licensePlate_; @@ -19966,6 +22622,7 @@ public java.lang.String getLicensePlate() { * * * optional string license_plate = 3; + * @return The bytes for licensePlate. */ public com.google.protobuf.ByteString getLicensePlateBytes() { @@ -19986,6 +22643,8 @@ public java.lang.String getLicensePlate() { * * * optional string license_plate = 3; + * @param value The licensePlate to set. + * @return This builder for chaining. */ public Builder setLicensePlate( java.lang.String value) { @@ -20003,6 +22662,7 @@ public Builder setLicensePlate( * * * optional string license_plate = 3; + * @return This builder for chaining. */ public Builder clearLicensePlate() { bitField0_ = (bitField0_ & ~0x00000004); @@ -20016,6 +22676,8 @@ public Builder clearLicensePlate() { * * * optional string license_plate = 3; + * @param value The bytes for licensePlate to set. + * @return This builder for chaining. */ public Builder setLicensePlateBytes( com.google.protobuf.ByteString value) { @@ -20094,6 +22756,7 @@ public interface EntitySelectorOrBuilder extends * * * optional string agency_id = 1; + * @return Whether the agencyId field is set. */ boolean hasAgencyId(); /** @@ -20105,6 +22768,7 @@ public interface EntitySelectorOrBuilder extends * * * optional string agency_id = 1; + * @return The agencyId. */ java.lang.String getAgencyId(); /** @@ -20116,20 +22780,24 @@ public interface EntitySelectorOrBuilder extends * * * optional string agency_id = 1; + * @return The bytes for agencyId. */ com.google.protobuf.ByteString getAgencyIdBytes(); /** * optional string route_id = 2; + * @return Whether the routeId field is set. */ boolean hasRouteId(); /** * optional string route_id = 2; + * @return The routeId. */ java.lang.String getRouteId(); /** * optional string route_id = 2; + * @return The bytes for routeId. */ com.google.protobuf.ByteString getRouteIdBytes(); @@ -20140,6 +22808,7 @@ public interface EntitySelectorOrBuilder extends * * * optional int32 route_type = 3; + * @return Whether the routeType field is set. */ boolean hasRouteType(); /** @@ -20148,15 +22817,18 @@ public interface EntitySelectorOrBuilder extends * * * optional int32 route_type = 3; + * @return The routeType. */ int getRouteType(); /** * optional .transit_realtime.TripDescriptor trip = 4; + * @return Whether the trip field is set. */ boolean hasTrip(); /** * optional .transit_realtime.TripDescriptor trip = 4; + * @return The trip. */ com.google.transit.realtime.GtfsRealtime.TripDescriptor getTrip(); /** @@ -20166,17 +22838,41 @@ public interface EntitySelectorOrBuilder extends /** * optional string stop_id = 5; + * @return Whether the stopId field is set. */ boolean hasStopId(); /** * optional string stop_id = 5; + * @return The stopId. */ java.lang.String getStopId(); /** * optional string stop_id = 5; + * @return The bytes for stopId. */ com.google.protobuf.ByteString getStopIdBytes(); + + /** + *
+     * Corresponds to trip direction_id in GTFS trips.txt. If provided the
+     * route_id must also be provided.
+     * 
+ * + * optional uint32 direction_id = 6; + * @return Whether the directionId field is set. + */ + boolean hasDirectionId(); + /** + *
+     * Corresponds to trip direction_id in GTFS trips.txt. If provided the
+     * route_id must also be provided.
+     * 
+ * + * optional uint32 direction_id = 6; + * @return The directionId. + */ + int getDirectionId(); } /** *
@@ -20185,7 +22881,7 @@ public interface EntitySelectorOrBuilder extends
    *
    * Protobuf type {@code transit_realtime.EntitySelector}
    */
-  public  static final class EntitySelector extends
+  public static final class EntitySelector extends
       com.google.protobuf.GeneratedMessageV3.ExtendableMessage<
         EntitySelector> implements
       // @@protoc_insertion_point(message_implements:transit_realtime.EntitySelector)
@@ -20201,6 +22897,13 @@ private EntitySelector() {
       stopId_ = "";
     }
 
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new EntitySelector();
+    }
+
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
@@ -20261,6 +22964,11 @@ private EntitySelector(
               stopId_ = bs;
               break;
             }
+            case 48: {
+              bitField0_ |= 0x00000020;
+              directionId_ = input.readUInt32();
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -20305,7 +23013,9 @@ private EntitySelector(
      * 
* * optional string agency_id = 1; + * @return Whether the agencyId field is set. */ + @java.lang.Override public boolean hasAgencyId() { return ((bitField0_ & 0x00000001) != 0); } @@ -20318,7 +23028,9 @@ public boolean hasAgencyId() { * * * optional string agency_id = 1; + * @return The agencyId. */ + @java.lang.Override public java.lang.String getAgencyId() { java.lang.Object ref = agencyId_; if (ref instanceof java.lang.String) { @@ -20342,7 +23054,9 @@ public java.lang.String getAgencyId() { * * * optional string agency_id = 1; + * @return The bytes for agencyId. */ + @java.lang.Override public com.google.protobuf.ByteString getAgencyIdBytes() { java.lang.Object ref = agencyId_; @@ -20361,13 +23075,17 @@ public java.lang.String getAgencyId() { private volatile java.lang.Object routeId_; /** * optional string route_id = 2; + * @return Whether the routeId field is set. */ + @java.lang.Override public boolean hasRouteId() { return ((bitField0_ & 0x00000002) != 0); } /** * optional string route_id = 2; + * @return The routeId. */ + @java.lang.Override public java.lang.String getRouteId() { java.lang.Object ref = routeId_; if (ref instanceof java.lang.String) { @@ -20384,7 +23102,9 @@ public java.lang.String getRouteId() { } /** * optional string route_id = 2; + * @return The bytes for routeId. */ + @java.lang.Override public com.google.protobuf.ByteString getRouteIdBytes() { java.lang.Object ref = routeId_; @@ -20407,7 +23127,9 @@ public java.lang.String getRouteId() { * * * optional int32 route_type = 3; + * @return Whether the routeType field is set. */ + @java.lang.Override public boolean hasRouteType() { return ((bitField0_ & 0x00000004) != 0); } @@ -20417,7 +23139,9 @@ public boolean hasRouteType() { * * * optional int32 route_type = 3; + * @return The routeType. */ + @java.lang.Override public int getRouteType() { return routeType_; } @@ -20426,19 +23150,24 @@ public int getRouteType() { private com.google.transit.realtime.GtfsRealtime.TripDescriptor trip_; /** * optional .transit_realtime.TripDescriptor trip = 4; + * @return Whether the trip field is set. */ + @java.lang.Override public boolean hasTrip() { return ((bitField0_ & 0x00000008) != 0); } /** * optional .transit_realtime.TripDescriptor trip = 4; + * @return The trip. */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripDescriptor getTrip() { return trip_ == null ? com.google.transit.realtime.GtfsRealtime.TripDescriptor.getDefaultInstance() : trip_; } /** * optional .transit_realtime.TripDescriptor trip = 4; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TripDescriptorOrBuilder getTripOrBuilder() { return trip_ == null ? com.google.transit.realtime.GtfsRealtime.TripDescriptor.getDefaultInstance() : trip_; } @@ -20447,13 +23176,17 @@ public com.google.transit.realtime.GtfsRealtime.TripDescriptorOrBuilder getTripO private volatile java.lang.Object stopId_; /** * optional string stop_id = 5; + * @return Whether the stopId field is set. */ + @java.lang.Override public boolean hasStopId() { return ((bitField0_ & 0x00000010) != 0); } /** * optional string stop_id = 5; + * @return The stopId. */ + @java.lang.Override public java.lang.String getStopId() { java.lang.Object ref = stopId_; if (ref instanceof java.lang.String) { @@ -20470,7 +23203,9 @@ public java.lang.String getStopId() { } /** * optional string stop_id = 5; + * @return The bytes for stopId. */ + @java.lang.Override public com.google.protobuf.ByteString getStopIdBytes() { java.lang.Object ref = stopId_; @@ -20485,6 +23220,35 @@ public java.lang.String getStopId() { } } + public static final int DIRECTION_ID_FIELD_NUMBER = 6; + private int directionId_; + /** + *
+     * Corresponds to trip direction_id in GTFS trips.txt. If provided the
+     * route_id must also be provided.
+     * 
+ * + * optional uint32 direction_id = 6; + * @return Whether the directionId field is set. + */ + @java.lang.Override + public boolean hasDirectionId() { + return ((bitField0_ & 0x00000020) != 0); + } + /** + *
+     * Corresponds to trip direction_id in GTFS trips.txt. If provided the
+     * route_id must also be provided.
+     * 
+ * + * optional uint32 direction_id = 6; + * @return The directionId. + */ + @java.lang.Override + public int getDirectionId() { + return directionId_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -20527,7 +23291,11 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (((bitField0_ & 0x00000010) != 0)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 5, stopId_); } + if (((bitField0_ & 0x00000020) != 0)) { + output.writeUInt32(6, directionId_); + } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -20554,6 +23322,10 @@ public int getSerializedSize() { if (((bitField0_ & 0x00000010) != 0)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, stopId_); } + if (((bitField0_ & 0x00000020) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(6, directionId_); + } size += extensionsSerializedSize(); size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -20595,6 +23367,11 @@ public boolean equals(final java.lang.Object obj) { if (!getStopId() .equals(other.getStopId())) return false; } + if (hasDirectionId() != other.hasDirectionId()) return false; + if (hasDirectionId()) { + if (getDirectionId() + != other.getDirectionId()) return false; + } if (!unknownFields.equals(other.unknownFields)) return false; if (!getExtensionFields().equals(other.getExtensionFields())) return false; @@ -20628,6 +23405,10 @@ public int hashCode() { hash = (37 * hash) + STOP_ID_FIELD_NUMBER; hash = (53 * hash) + getStopId().hashCode(); } + if (hasDirectionId()) { + hash = (37 * hash) + DIRECTION_ID_FIELD_NUMBER; + hash = (53 * hash) + getDirectionId(); + } hash = hashFields(hash, getExtensionFields()); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; @@ -20782,6 +23563,8 @@ public Builder clear() { bitField0_ = (bitField0_ & ~0x00000008); stopId_ = ""; bitField0_ = (bitField0_ & ~0x00000010); + directionId_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); return this; } @@ -20834,6 +23617,10 @@ public com.google.transit.realtime.GtfsRealtime.EntitySelector buildPartial() { to_bitField0_ |= 0x00000010; } result.stopId_ = stopId_; + if (((from_bitField0_ & 0x00000020) != 0)) { + result.directionId_ = directionId_; + to_bitField0_ |= 0x00000020; + } result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -20931,6 +23718,9 @@ public Builder mergeFrom(com.google.transit.realtime.GtfsRealtime.EntitySelector stopId_ = other.stopId_; onChanged(); } + if (other.hasDirectionId()) { + setDirectionId(other.getDirectionId()); + } this.mergeExtensionFields(other); this.mergeUnknownFields(other.unknownFields); onChanged(); @@ -20980,6 +23770,7 @@ public Builder mergeFrom( * * * optional string agency_id = 1; + * @return Whether the agencyId field is set. */ public boolean hasAgencyId() { return ((bitField0_ & 0x00000001) != 0); @@ -20993,6 +23784,7 @@ public boolean hasAgencyId() { * * * optional string agency_id = 1; + * @return The agencyId. */ public java.lang.String getAgencyId() { java.lang.Object ref = agencyId_; @@ -21017,6 +23809,7 @@ public java.lang.String getAgencyId() { * * * optional string agency_id = 1; + * @return The bytes for agencyId. */ public com.google.protobuf.ByteString getAgencyIdBytes() { @@ -21040,6 +23833,8 @@ public java.lang.String getAgencyId() { * * * optional string agency_id = 1; + * @param value The agencyId to set. + * @return This builder for chaining. */ public Builder setAgencyId( java.lang.String value) { @@ -21060,6 +23855,7 @@ public Builder setAgencyId( * * * optional string agency_id = 1; + * @return This builder for chaining. */ public Builder clearAgencyId() { bitField0_ = (bitField0_ & ~0x00000001); @@ -21076,6 +23872,8 @@ public Builder clearAgencyId() { * * * optional string agency_id = 1; + * @param value The bytes for agencyId to set. + * @return This builder for chaining. */ public Builder setAgencyIdBytes( com.google.protobuf.ByteString value) { @@ -21091,12 +23889,14 @@ public Builder setAgencyIdBytes( private java.lang.Object routeId_ = ""; /** * optional string route_id = 2; + * @return Whether the routeId field is set. */ public boolean hasRouteId() { return ((bitField0_ & 0x00000002) != 0); } /** * optional string route_id = 2; + * @return The routeId. */ public java.lang.String getRouteId() { java.lang.Object ref = routeId_; @@ -21114,6 +23914,7 @@ public java.lang.String getRouteId() { } /** * optional string route_id = 2; + * @return The bytes for routeId. */ public com.google.protobuf.ByteString getRouteIdBytes() { @@ -21130,6 +23931,8 @@ public java.lang.String getRouteId() { } /** * optional string route_id = 2; + * @param value The routeId to set. + * @return This builder for chaining. */ public Builder setRouteId( java.lang.String value) { @@ -21143,6 +23946,7 @@ public Builder setRouteId( } /** * optional string route_id = 2; + * @return This builder for chaining. */ public Builder clearRouteId() { bitField0_ = (bitField0_ & ~0x00000002); @@ -21152,6 +23956,8 @@ public Builder clearRouteId() { } /** * optional string route_id = 2; + * @param value The bytes for routeId to set. + * @return This builder for chaining. */ public Builder setRouteIdBytes( com.google.protobuf.ByteString value) { @@ -21171,7 +23977,9 @@ public Builder setRouteIdBytes( * * * optional int32 route_type = 3; + * @return Whether the routeType field is set. */ + @java.lang.Override public boolean hasRouteType() { return ((bitField0_ & 0x00000004) != 0); } @@ -21181,7 +23989,9 @@ public boolean hasRouteType() { * * * optional int32 route_type = 3; + * @return The routeType. */ + @java.lang.Override public int getRouteType() { return routeType_; } @@ -21191,6 +24001,8 @@ public int getRouteType() { * * * optional int32 route_type = 3; + * @param value The routeType to set. + * @return This builder for chaining. */ public Builder setRouteType(int value) { bitField0_ |= 0x00000004; @@ -21204,6 +24016,7 @@ public Builder setRouteType(int value) { * * * optional int32 route_type = 3; + * @return This builder for chaining. */ public Builder clearRouteType() { bitField0_ = (bitField0_ & ~0x00000004); @@ -21217,12 +24030,14 @@ public Builder clearRouteType() { com.google.transit.realtime.GtfsRealtime.TripDescriptor, com.google.transit.realtime.GtfsRealtime.TripDescriptor.Builder, com.google.transit.realtime.GtfsRealtime.TripDescriptorOrBuilder> tripBuilder_; /** * optional .transit_realtime.TripDescriptor trip = 4; + * @return Whether the trip field is set. */ public boolean hasTrip() { return ((bitField0_ & 0x00000008) != 0); } /** * optional .transit_realtime.TripDescriptor trip = 4; + * @return The trip. */ public com.google.transit.realtime.GtfsRealtime.TripDescriptor getTrip() { if (tripBuilder_ == null) { @@ -21333,12 +24148,14 @@ public com.google.transit.realtime.GtfsRealtime.TripDescriptorOrBuilder getTripO private java.lang.Object stopId_ = ""; /** * optional string stop_id = 5; + * @return Whether the stopId field is set. */ public boolean hasStopId() { return ((bitField0_ & 0x00000010) != 0); } /** * optional string stop_id = 5; + * @return The stopId. */ public java.lang.String getStopId() { java.lang.Object ref = stopId_; @@ -21356,6 +24173,7 @@ public java.lang.String getStopId() { } /** * optional string stop_id = 5; + * @return The bytes for stopId. */ public com.google.protobuf.ByteString getStopIdBytes() { @@ -21372,6 +24190,8 @@ public java.lang.String getStopId() { } /** * optional string stop_id = 5; + * @param value The stopId to set. + * @return This builder for chaining. */ public Builder setStopId( java.lang.String value) { @@ -21385,6 +24205,7 @@ public Builder setStopId( } /** * optional string stop_id = 5; + * @return This builder for chaining. */ public Builder clearStopId() { bitField0_ = (bitField0_ & ~0x00000010); @@ -21394,6 +24215,8 @@ public Builder clearStopId() { } /** * optional string stop_id = 5; + * @param value The bytes for stopId to set. + * @return This builder for chaining. */ public Builder setStopIdBytes( com.google.protobuf.ByteString value) { @@ -21405,6 +24228,65 @@ public Builder setStopIdBytes( onChanged(); return this; } + + private int directionId_ ; + /** + *
+       * Corresponds to trip direction_id in GTFS trips.txt. If provided the
+       * route_id must also be provided.
+       * 
+ * + * optional uint32 direction_id = 6; + * @return Whether the directionId field is set. + */ + @java.lang.Override + public boolean hasDirectionId() { + return ((bitField0_ & 0x00000020) != 0); + } + /** + *
+       * Corresponds to trip direction_id in GTFS trips.txt. If provided the
+       * route_id must also be provided.
+       * 
+ * + * optional uint32 direction_id = 6; + * @return The directionId. + */ + @java.lang.Override + public int getDirectionId() { + return directionId_; + } + /** + *
+       * Corresponds to trip direction_id in GTFS trips.txt. If provided the
+       * route_id must also be provided.
+       * 
+ * + * optional uint32 direction_id = 6; + * @param value The directionId to set. + * @return This builder for chaining. + */ + public Builder setDirectionId(int value) { + bitField0_ |= 0x00000020; + directionId_ = value; + onChanged(); + return this; + } + /** + *
+       * Corresponds to trip direction_id in GTFS trips.txt. If provided the
+       * route_id must also be provided.
+       * 
+ * + * optional uint32 direction_id = 6; + * @return This builder for chaining. + */ + public Builder clearDirectionId() { + bitField0_ = (bitField0_ & ~0x00000020); + directionId_ = 0; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -21523,7 +24405,7 @@ com.google.transit.realtime.GtfsRealtime.TranslatedString.TranslationOrBuilder g * * Protobuf type {@code transit_realtime.TranslatedString} */ - public static final class TranslatedString extends + public static final class TranslatedString extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage< TranslatedString> implements // @@protoc_insertion_point(message_implements:transit_realtime.TranslatedString) @@ -21537,6 +24419,13 @@ private TranslatedString() { translation_ = java.util.Collections.emptyList(); } + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new TranslatedString(); + } + @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { @@ -21616,6 +24505,7 @@ public interface TranslationOrBuilder extends * * * required string text = 1; + * @return Whether the text field is set. */ boolean hasText(); /** @@ -21624,6 +24514,7 @@ public interface TranslationOrBuilder extends * * * required string text = 1; + * @return The text. */ java.lang.String getText(); /** @@ -21632,6 +24523,7 @@ public interface TranslationOrBuilder extends * * * required string text = 1; + * @return The bytes for text. */ com.google.protobuf.ByteString getTextBytes(); @@ -21644,6 +24536,7 @@ public interface TranslationOrBuilder extends * * * optional string language = 2; + * @return Whether the language field is set. */ boolean hasLanguage(); /** @@ -21654,6 +24547,7 @@ public interface TranslationOrBuilder extends * * * optional string language = 2; + * @return The language. */ java.lang.String getLanguage(); /** @@ -21664,6 +24558,7 @@ public interface TranslationOrBuilder extends * * * optional string language = 2; + * @return The bytes for language. */ com.google.protobuf.ByteString getLanguageBytes(); @@ -21671,7 +24566,7 @@ public interface TranslationOrBuilder extends /** * Protobuf type {@code transit_realtime.TranslatedString.Translation} */ - public static final class Translation extends + public static final class Translation extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage< Translation> implements // @@protoc_insertion_point(message_implements:transit_realtime.TranslatedString.Translation) @@ -21686,6 +24581,13 @@ private Translation() { language_ = ""; } + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new Translation(); + } + @java.lang.Override public final com.google.protobuf.UnknownFieldSet getUnknownFields() { @@ -21763,7 +24665,9 @@ private Translation( * * * required string text = 1; + * @return Whether the text field is set. */ + @java.lang.Override public boolean hasText() { return ((bitField0_ & 0x00000001) != 0); } @@ -21773,7 +24677,9 @@ public boolean hasText() { * * * required string text = 1; + * @return The text. */ + @java.lang.Override public java.lang.String getText() { java.lang.Object ref = text_; if (ref instanceof java.lang.String) { @@ -21794,7 +24700,9 @@ public java.lang.String getText() { * * * required string text = 1; + * @return The bytes for text. */ + @java.lang.Override public com.google.protobuf.ByteString getTextBytes() { java.lang.Object ref = text_; @@ -21819,7 +24727,9 @@ public java.lang.String getText() { * * * optional string language = 2; + * @return Whether the language field is set. */ + @java.lang.Override public boolean hasLanguage() { return ((bitField0_ & 0x00000002) != 0); } @@ -21831,7 +24741,9 @@ public boolean hasLanguage() { * * * optional string language = 2; + * @return The language. */ + @java.lang.Override public java.lang.String getLanguage() { java.lang.Object ref = language_; if (ref instanceof java.lang.String) { @@ -21854,7 +24766,9 @@ public java.lang.String getLanguage() { * * * optional string language = 2; + * @return The bytes for language. */ + @java.lang.Override public com.google.protobuf.ByteString getLanguageBytes() { java.lang.Object ref = language_; @@ -21901,6 +24815,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) com.google.protobuf.GeneratedMessageV3.writeString(output, 2, language_); } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -22268,6 +25183,7 @@ public Builder mergeFrom( * * * required string text = 1; + * @return Whether the text field is set. */ public boolean hasText() { return ((bitField0_ & 0x00000001) != 0); @@ -22278,6 +25194,7 @@ public boolean hasText() { * * * required string text = 1; + * @return The text. */ public java.lang.String getText() { java.lang.Object ref = text_; @@ -22299,6 +25216,7 @@ public java.lang.String getText() { * * * required string text = 1; + * @return The bytes for text. */ public com.google.protobuf.ByteString getTextBytes() { @@ -22319,6 +25237,8 @@ public java.lang.String getText() { * * * required string text = 1; + * @param value The text to set. + * @return This builder for chaining. */ public Builder setText( java.lang.String value) { @@ -22336,6 +25256,7 @@ public Builder setText( * * * required string text = 1; + * @return This builder for chaining. */ public Builder clearText() { bitField0_ = (bitField0_ & ~0x00000001); @@ -22349,6 +25270,8 @@ public Builder clearText() { * * * required string text = 1; + * @param value The bytes for text to set. + * @return This builder for chaining. */ public Builder setTextBytes( com.google.protobuf.ByteString value) { @@ -22370,6 +25293,7 @@ public Builder setTextBytes( * * * optional string language = 2; + * @return Whether the language field is set. */ public boolean hasLanguage() { return ((bitField0_ & 0x00000002) != 0); @@ -22382,6 +25306,7 @@ public boolean hasLanguage() { * * * optional string language = 2; + * @return The language. */ public java.lang.String getLanguage() { java.lang.Object ref = language_; @@ -22405,6 +25330,7 @@ public java.lang.String getLanguage() { * * * optional string language = 2; + * @return The bytes for language. */ public com.google.protobuf.ByteString getLanguageBytes() { @@ -22427,6 +25353,8 @@ public java.lang.String getLanguage() { * * * optional string language = 2; + * @param value The language to set. + * @return This builder for chaining. */ public Builder setLanguage( java.lang.String value) { @@ -22446,6 +25374,7 @@ public Builder setLanguage( * * * optional string language = 2; + * @return This builder for chaining. */ public Builder clearLanguage() { bitField0_ = (bitField0_ & ~0x00000002); @@ -22461,6 +25390,8 @@ public Builder clearLanguage() { * * * optional string language = 2; + * @param value The bytes for language to set. + * @return This builder for chaining. */ public Builder setLanguageBytes( com.google.protobuf.ByteString value) { @@ -22534,6 +25465,7 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedString.Translation get * * repeated .transit_realtime.TranslatedString.Translation translation = 1; */ + @java.lang.Override public java.util.List getTranslationList() { return translation_; } @@ -22544,6 +25476,7 @@ public java.util.Listrepeated .transit_realtime.TranslatedString.Translation translation = 1; */ + @java.lang.Override public java.util.List getTranslationOrBuilderList() { return translation_; @@ -22555,6 +25488,7 @@ public java.util.Listrepeated .transit_realtime.TranslatedString.Translation translation = 1; */ + @java.lang.Override public int getTranslationCount() { return translation_.size(); } @@ -22565,6 +25499,7 @@ public int getTranslationCount() { * * repeated .transit_realtime.TranslatedString.Translation translation = 1; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TranslatedString.Translation getTranslation(int index) { return translation_.get(index); } @@ -22575,6 +25510,7 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedString.Translation get * * repeated .transit_realtime.TranslatedString.Translation translation = 1; */ + @java.lang.Override public com.google.transit.realtime.GtfsRealtime.TranslatedString.TranslationOrBuilder getTranslationOrBuilder( int index) { return translation_.get(index); @@ -22611,6 +25547,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) output.writeMessage(1, translation_.get(i)); } extensionWriter.writeUntil(2000, output); + extensionWriter.writeUntil(10000, output); unknownFields.writeTo(output); } @@ -23384,6 +26321,11 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedString getDefaultInsta private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_transit_realtime_TripUpdate_StopTimeUpdate_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_transit_realtime_TripUpdate_TripProperties_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_transit_realtime_TripUpdate_TripProperties_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_transit_realtime_VehiclePosition_descriptor; private static final @@ -23439,121 +26381,123 @@ public com.google.transit.realtime.GtfsRealtime.TranslatedString getDefaultInsta static { java.lang.String[] descriptorData = { "\n\023gtfs-realtime.proto\022\020transit_realtime\"" + - "q\n\013FeedMessage\022,\n\006header\030\001 \002(\0132\034.transit" + + "y\n\013FeedMessage\022,\n\006header\030\001 \002(\0132\034.transit" + "_realtime.FeedHeader\022,\n\006entity\030\002 \003(\0132\034.t" + - "ransit_realtime.FeedEntity*\006\010\350\007\020\320\017\"\317\001\n\nF" + - "eedHeader\022\035\n\025gtfs_realtime_version\030\001 \002(\t" + - "\022Q\n\016incrementality\030\002 \001(\0162+.transit_realt" + - "ime.FeedHeader.Incrementality:\014FULL_DATA" + - "SET\022\021\n\ttimestamp\030\003 \001(\004\"4\n\016Incrementality" + - "\022\020\n\014FULL_DATASET\020\000\022\020\n\014DIFFERENTIAL\020\001*\006\010\350" + - "\007\020\320\017\"\312\001\n\nFeedEntity\022\n\n\002id\030\001 \002(\t\022\031\n\nis_de" + - "leted\030\002 \001(\010:\005false\0221\n\013trip_update\030\003 \001(\0132" + - "\034.transit_realtime.TripUpdate\0222\n\007vehicle" + - "\030\004 \001(\0132!.transit_realtime.VehiclePositio" + - "n\022&\n\005alert\030\005 \001(\0132\027.transit_realtime.Aler" + - "t*\006\010\350\007\020\320\017\"\232\005\n\nTripUpdate\022.\n\004trip\030\001 \002(\0132 " + - ".transit_realtime.TripDescriptor\0224\n\007vehi" + - "cle\030\003 \001(\0132#.transit_realtime.VehicleDesc" + - "riptor\022E\n\020stop_time_update\030\002 \003(\0132+.trans" + - "it_realtime.TripUpdate.StopTimeUpdate\022\021\n" + - "\ttimestamp\030\004 \001(\004\022\r\n\005delay\030\005 \001(\005\032I\n\rStopT" + - "imeEvent\022\r\n\005delay\030\001 \001(\005\022\014\n\004time\030\002 \001(\003\022\023\n" + - "\013uncertainty\030\003 \001(\005*\006\010\350\007\020\320\017\032\351\002\n\016StopTimeU" + - "pdate\022\025\n\rstop_sequence\030\001 \001(\r\022\017\n\007stop_id\030" + - "\004 \001(\t\022;\n\007arrival\030\002 \001(\0132*.transit_realtim" + - "e.TripUpdate.StopTimeEvent\022=\n\tdeparture\030" + - "\003 \001(\0132*.transit_realtime.TripUpdate.Stop" + - "TimeEvent\022j\n\025schedule_relationship\030\005 \001(\016" + - "2@.transit_realtime.TripUpdate.StopTimeU" + - "pdate.ScheduleRelationship:\tSCHEDULED\"?\n" + - "\024ScheduleRelationship\022\r\n\tSCHEDULED\020\000\022\013\n\007" + - "SKIPPED\020\001\022\013\n\007NO_DATA\020\002*\006\010\350\007\020\320\017*\006\010\350\007\020\320\017\"\340" + - "\006\n\017VehiclePosition\022.\n\004trip\030\001 \001(\0132 .trans" + - "it_realtime.TripDescriptor\0224\n\007vehicle\030\010 " + - "\001(\0132#.transit_realtime.VehicleDescriptor" + - "\022,\n\010position\030\002 \001(\0132\032.transit_realtime.Po" + - "sition\022\035\n\025current_stop_sequence\030\003 \001(\r\022\017\n" + - "\007stop_id\030\007 \001(\t\022Z\n\016current_status\030\004 \001(\01623" + - ".transit_realtime.VehiclePosition.Vehicl" + - "eStopStatus:\rIN_TRANSIT_TO\022\021\n\ttimestamp\030" + - "\005 \001(\004\022K\n\020congestion_level\030\006 \001(\01621.transi" + - "t_realtime.VehiclePosition.CongestionLev" + - "el\022K\n\020occupancy_status\030\t \001(\01621.transit_r" + - "ealtime.VehiclePosition.OccupancyStatus\"" + - "G\n\021VehicleStopStatus\022\017\n\013INCOMING_AT\020\000\022\016\n" + - "\nSTOPPED_AT\020\001\022\021\n\rIN_TRANSIT_TO\020\002\"}\n\017Cong" + - "estionLevel\022\034\n\030UNKNOWN_CONGESTION_LEVEL\020" + - "\000\022\024\n\020RUNNING_SMOOTHLY\020\001\022\017\n\013STOP_AND_GO\020\002" + - "\022\016\n\nCONGESTION\020\003\022\025\n\021SEVERE_CONGESTION\020\004\"" + - "\257\001\n\017OccupancyStatus\022\t\n\005EMPTY\020\000\022\030\n\024MANY_S" + - "EATS_AVAILABLE\020\001\022\027\n\023FEW_SEATS_AVAILABLE\020" + - "\002\022\026\n\022STANDING_ROOM_ONLY\020\003\022\036\n\032CRUSHED_STA" + - "NDING_ROOM_ONLY\020\004\022\010\n\004FULL\020\005\022\034\n\030NOT_ACCEP" + - "TING_PASSENGERS\020\006*\006\010\350\007\020\320\017\"\337\010\n\005Alert\0222\n\ra" + - "ctive_period\030\001 \003(\0132\033.transit_realtime.Ti" + - "meRange\0229\n\017informed_entity\030\005 \003(\0132 .trans" + - "it_realtime.EntitySelector\022;\n\005cause\030\006 \001(" + - "\0162\035.transit_realtime.Alert.Cause:\rUNKNOW" + - "N_CAUSE\022>\n\006effect\030\007 \001(\0162\036.transit_realti" + - "me.Alert.Effect:\016UNKNOWN_EFFECT\022/\n\003url\030\010" + - " \001(\0132\".transit_realtime.TranslatedString" + - "\0227\n\013header_text\030\n \001(\0132\".transit_realtime" + - ".TranslatedString\022<\n\020description_text\030\013 " + - "\001(\0132\".transit_realtime.TranslatedString\022" + - ";\n\017tts_header_text\030\014 \001(\0132\".transit_realt" + - "ime.TranslatedString\022@\n\024tts_description_" + - "text\030\r \001(\0132\".transit_realtime.Translated" + - "String\022O\n\016severity_level\030\016 \001(\0162%.transit" + - "_realtime.Alert.SeverityLevel:\020UNKNOWN_S" + - "EVERITY\"\330\001\n\005Cause\022\021\n\rUNKNOWN_CAUSE\020\001\022\017\n\013" + - "OTHER_CAUSE\020\002\022\025\n\021TECHNICAL_PROBLEM\020\003\022\n\n\006" + - "STRIKE\020\004\022\021\n\rDEMONSTRATION\020\005\022\014\n\010ACCIDENT\020" + - "\006\022\013\n\007HOLIDAY\020\007\022\013\n\007WEATHER\020\010\022\017\n\013MAINTENAN" + - "CE\020\t\022\020\n\014CONSTRUCTION\020\n\022\023\n\017POLICE_ACTIVIT" + - "Y\020\013\022\025\n\021MEDICAL_EMERGENCY\020\014\"\304\001\n\006Effect\022\016\n" + - "\nNO_SERVICE\020\001\022\023\n\017REDUCED_SERVICE\020\002\022\026\n\022SI" + - "GNIFICANT_DELAYS\020\003\022\n\n\006DETOUR\020\004\022\026\n\022ADDITI" + - "ONAL_SERVICE\020\005\022\024\n\020MODIFIED_SERVICE\020\006\022\020\n\014" + - "OTHER_EFFECT\020\007\022\022\n\016UNKNOWN_EFFECT\020\010\022\016\n\nST" + - "OP_MOVED\020\t\022\r\n\tNO_EFFECT\020\n\"H\n\rSeverityLev" + - "el\022\024\n\020UNKNOWN_SEVERITY\020\001\022\010\n\004INFO\020\002\022\013\n\007WA" + - "RNING\020\003\022\n\n\006SEVERE\020\004*\006\010\350\007\020\320\017\"/\n\tTimeRange" + - "\022\r\n\005start\030\001 \001(\004\022\013\n\003end\030\002 \001(\004*\006\010\350\007\020\320\017\"i\n\010" + - "Position\022\020\n\010latitude\030\001 \002(\002\022\021\n\tlongitude\030" + - "\002 \002(\002\022\017\n\007bearing\030\003 \001(\002\022\020\n\010odometer\030\004 \001(\001" + - "\022\r\n\005speed\030\005 \001(\002*\006\010\350\007\020\320\017\"\265\002\n\016TripDescript" + - "or\022\017\n\007trip_id\030\001 \001(\t\022\020\n\010route_id\030\005 \001(\t\022\024\n" + - "\014direction_id\030\006 \001(\r\022\022\n\nstart_time\030\002 \001(\t\022" + - "\022\n\nstart_date\030\003 \001(\t\022T\n\025schedule_relation" + - "ship\030\004 \001(\01625.transit_realtime.TripDescri" + - "ptor.ScheduleRelationship\"d\n\024ScheduleRel" + - "ationship\022\r\n\tSCHEDULED\020\000\022\t\n\005ADDED\020\001\022\017\n\013U" + - "NSCHEDULED\020\002\022\014\n\010CANCELED\020\003\022\023\n\013REPLACEMEN" + - "T\020\005\032\002\010\001*\006\010\350\007\020\320\017\"M\n\021VehicleDescriptor\022\n\n\002" + - "id\030\001 \001(\t\022\r\n\005label\030\002 \001(\t\022\025\n\rlicense_plate" + - "\030\003 \001(\t*\006\010\350\007\020\320\017\"\222\001\n\016EntitySelector\022\021\n\tage" + - "ncy_id\030\001 \001(\t\022\020\n\010route_id\030\002 \001(\t\022\022\n\nroute_" + - "type\030\003 \001(\005\022.\n\004trip\030\004 \001(\0132 .transit_realt" + - "ime.TripDescriptor\022\017\n\007stop_id\030\005 \001(\t*\006\010\350\007" + - "\020\320\017\"\226\001\n\020TranslatedString\022C\n\013translation\030" + - "\001 \003(\0132..transit_realtime.TranslatedStrin" + - "g.Translation\0325\n\013Translation\022\014\n\004text\030\001 \002" + - "(\t\022\020\n\010language\030\002 \001(\t*\006\010\350\007\020\320\017*\006\010\350\007\020\320\017B\035\n\033" + - "com.google.transit.realtime" + "ransit_realtime.FeedEntity*\006\010\350\007\020\320\017*\006\010\250F\020" + + "\220N\"\327\001\n\nFeedHeader\022\035\n\025gtfs_realtime_versi" + + "on\030\001 \002(\t\022Q\n\016incrementality\030\002 \001(\0162+.trans" + + "it_realtime.FeedHeader.Incrementality:\014F" + + "ULL_DATASET\022\021\n\ttimestamp\030\003 \001(\004\"4\n\016Increm" + + "entality\022\020\n\014FULL_DATASET\020\000\022\020\n\014DIFFERENTI" + + "AL\020\001*\006\010\350\007\020\320\017*\006\010\250F\020\220N\"\322\001\n\nFeedEntity\022\n\n\002i" + + "d\030\001 \002(\t\022\031\n\nis_deleted\030\002 \001(\010:\005false\0221\n\013tr" + + "ip_update\030\003 \001(\0132\034.transit_realtime.TripU" + + "pdate\0222\n\007vehicle\030\004 \001(\0132!.transit_realtim" + + "e.VehiclePosition\022&\n\005alert\030\005 \001(\0132\027.trans" + + "it_realtime.Alert*\006\010\350\007\020\320\017*\006\010\250F\020\220N\"\344\006\n\nTr" + + "ipUpdate\022.\n\004trip\030\001 \002(\0132 .transit_realtim" + + "e.TripDescriptor\0224\n\007vehicle\030\003 \001(\0132#.tran" + + "sit_realtime.VehicleDescriptor\022E\n\020stop_t" + + "ime_update\030\002 \003(\0132+.transit_realtime.Trip" + + "Update.StopTimeUpdate\022\021\n\ttimestamp\030\004 \001(\004" + + "\022\r\n\005delay\030\005 \001(\005\022D\n\017trip_properties\030\006 \001(\013" + + "2+.transit_realtime.TripUpdate.TripPrope" + + "rties\032Q\n\rStopTimeEvent\022\r\n\005delay\030\001 \001(\005\022\014\n" + + "\004time\030\002 \001(\003\022\023\n\013uncertainty\030\003 \001(\005*\006\010\350\007\020\320\017" + + "*\006\010\250F\020\220N\032\202\003\n\016StopTimeUpdate\022\025\n\rstop_sequ" + + "ence\030\001 \001(\r\022\017\n\007stop_id\030\004 \001(\t\022;\n\007arrival\030\002" + + " \001(\0132*.transit_realtime.TripUpdate.StopT" + + "imeEvent\022=\n\tdeparture\030\003 \001(\0132*.transit_re" + + "altime.TripUpdate.StopTimeEvent\022j\n\025sched" + + "ule_relationship\030\005 \001(\0162@.transit_realtim" + + "e.TripUpdate.StopTimeUpdate.ScheduleRela" + + "tionship:\tSCHEDULED\"P\n\024ScheduleRelations" + + "hip\022\r\n\tSCHEDULED\020\000\022\013\n\007SKIPPED\020\001\022\013\n\007NO_DA" + + "TA\020\002\022\017\n\013UNSCHEDULED\020\003*\006\010\350\007\020\320\017*\006\010\250F\020\220N\032Y\n" + + "\016TripProperties\022\017\n\007trip_id\030\001 \001(\t\022\022\n\nstar" + + "t_date\030\002 \001(\t\022\022\n\nstart_time\030\003 \001(\t*\006\010\350\007\020\320\017" + + "*\006\010\250F\020\220N*\006\010\350\007\020\320\017*\006\010\250F\020\220N\"\206\007\n\017VehiclePosi" + + "tion\022.\n\004trip\030\001 \001(\0132 .transit_realtime.Tr" + + "ipDescriptor\0224\n\007vehicle\030\010 \001(\0132#.transit_" + + "realtime.VehicleDescriptor\022,\n\010position\030\002" + + " \001(\0132\032.transit_realtime.Position\022\035\n\025curr" + + "ent_stop_sequence\030\003 \001(\r\022\017\n\007stop_id\030\007 \001(\t" + + "\022Z\n\016current_status\030\004 \001(\01623.transit_realt" + + "ime.VehiclePosition.VehicleStopStatus:\rI" + + "N_TRANSIT_TO\022\021\n\ttimestamp\030\005 \001(\004\022K\n\020conge" + + "stion_level\030\006 \001(\01621.transit_realtime.Veh" + + "iclePosition.CongestionLevel\022K\n\020occupanc" + + "y_status\030\t \001(\01621.transit_realtime.Vehicl" + + "ePosition.OccupancyStatus\022\034\n\024occupancy_p" + + "ercentage\030\n \001(\r\"G\n\021VehicleStopStatus\022\017\n\013" + + "INCOMING_AT\020\000\022\016\n\nSTOPPED_AT\020\001\022\021\n\rIN_TRAN" + + "SIT_TO\020\002\"}\n\017CongestionLevel\022\034\n\030UNKNOWN_C" + + "ONGESTION_LEVEL\020\000\022\024\n\020RUNNING_SMOOTHLY\020\001\022" + + "\017\n\013STOP_AND_GO\020\002\022\016\n\nCONGESTION\020\003\022\025\n\021SEVE" + + "RE_CONGESTION\020\004\"\257\001\n\017OccupancyStatus\022\t\n\005E" + + "MPTY\020\000\022\030\n\024MANY_SEATS_AVAILABLE\020\001\022\027\n\023FEW_" + + "SEATS_AVAILABLE\020\002\022\026\n\022STANDING_ROOM_ONLY\020" + + "\003\022\036\n\032CRUSHED_STANDING_ROOM_ONLY\020\004\022\010\n\004FUL" + + "L\020\005\022\034\n\030NOT_ACCEPTING_PASSENGERS\020\006*\006\010\350\007\020\320" + + "\017*\006\010\250F\020\220N\"\200\t\n\005Alert\0222\n\ractive_period\030\001 \003" + + "(\0132\033.transit_realtime.TimeRange\0229\n\017infor" + + "med_entity\030\005 \003(\0132 .transit_realtime.Enti" + + "tySelector\022;\n\005cause\030\006 \001(\0162\035.transit_real" + + "time.Alert.Cause:\rUNKNOWN_CAUSE\022>\n\006effec" + + "t\030\007 \001(\0162\036.transit_realtime.Alert.Effect:" + + "\016UNKNOWN_EFFECT\022/\n\003url\030\010 \001(\0132\".transit_r" + + "ealtime.TranslatedString\0227\n\013header_text\030" + + "\n \001(\0132\".transit_realtime.TranslatedStrin" + + "g\022<\n\020description_text\030\013 \001(\0132\".transit_re" + + "altime.TranslatedString\022;\n\017tts_header_te" + + "xt\030\014 \001(\0132\".transit_realtime.TranslatedSt" + + "ring\022@\n\024tts_description_text\030\r \001(\0132\".tra" + + "nsit_realtime.TranslatedString\022O\n\016severi" + + "ty_level\030\016 \001(\0162%.transit_realtime.Alert." + + "SeverityLevel:\020UNKNOWN_SEVERITY\"\330\001\n\005Caus" + + "e\022\021\n\rUNKNOWN_CAUSE\020\001\022\017\n\013OTHER_CAUSE\020\002\022\025\n" + + "\021TECHNICAL_PROBLEM\020\003\022\n\n\006STRIKE\020\004\022\021\n\rDEMO" + + "NSTRATION\020\005\022\014\n\010ACCIDENT\020\006\022\013\n\007HOLIDAY\020\007\022\013" + + "\n\007WEATHER\020\010\022\017\n\013MAINTENANCE\020\t\022\020\n\014CONSTRUC" + + "TION\020\n\022\023\n\017POLICE_ACTIVITY\020\013\022\025\n\021MEDICAL_E" + + "MERGENCY\020\014\"\335\001\n\006Effect\022\016\n\nNO_SERVICE\020\001\022\023\n" + + "\017REDUCED_SERVICE\020\002\022\026\n\022SIGNIFICANT_DELAYS" + + "\020\003\022\n\n\006DETOUR\020\004\022\026\n\022ADDITIONAL_SERVICE\020\005\022\024" + + "\n\020MODIFIED_SERVICE\020\006\022\020\n\014OTHER_EFFECT\020\007\022\022" + + "\n\016UNKNOWN_EFFECT\020\010\022\016\n\nSTOP_MOVED\020\t\022\r\n\tNO" + + "_EFFECT\020\n\022\027\n\023ACCESSIBILITY_ISSUE\020\013\"H\n\rSe" + + "verityLevel\022\024\n\020UNKNOWN_SEVERITY\020\001\022\010\n\004INF" + + "O\020\002\022\013\n\007WARNING\020\003\022\n\n\006SEVERE\020\004*\006\010\350\007\020\320\017*\006\010\250" + + "F\020\220N\"7\n\tTimeRange\022\r\n\005start\030\001 \001(\004\022\013\n\003end\030" + + "\002 \001(\004*\006\010\350\007\020\320\017*\006\010\250F\020\220N\"q\n\010Position\022\020\n\010lat" + + "itude\030\001 \002(\002\022\021\n\tlongitude\030\002 \002(\002\022\017\n\007bearin" + + "g\030\003 \001(\002\022\020\n\010odometer\030\004 \001(\001\022\r\n\005speed\030\005 \001(\002" + + "*\006\010\350\007\020\320\017*\006\010\250F\020\220N\"\315\002\n\016TripDescriptor\022\017\n\007t" + + "rip_id\030\001 \001(\t\022\020\n\010route_id\030\005 \001(\t\022\024\n\014direct" + + "ion_id\030\006 \001(\r\022\022\n\nstart_time\030\002 \001(\t\022\022\n\nstar" + + "t_date\030\003 \001(\t\022T\n\025schedule_relationship\030\004 " + + "\001(\01625.transit_realtime.TripDescriptor.Sc" + + "heduleRelationship\"t\n\024ScheduleRelationsh" + + "ip\022\r\n\tSCHEDULED\020\000\022\t\n\005ADDED\020\001\022\017\n\013UNSCHEDU" + + "LED\020\002\022\014\n\010CANCELED\020\003\022\023\n\013REPLACEMENT\020\005\032\002\010\001" + + "\022\016\n\nDUPLICATED\020\006*\006\010\350\007\020\320\017*\006\010\250F\020\220N\"U\n\021Vehi" + + "cleDescriptor\022\n\n\002id\030\001 \001(\t\022\r\n\005label\030\002 \001(\t" + + "\022\025\n\rlicense_plate\030\003 \001(\t*\006\010\350\007\020\320\017*\006\010\250F\020\220N\"" + + "\260\001\n\016EntitySelector\022\021\n\tagency_id\030\001 \001(\t\022\020\n" + + "\010route_id\030\002 \001(\t\022\022\n\nroute_type\030\003 \001(\005\022.\n\004t" + + "rip\030\004 \001(\0132 .transit_realtime.TripDescrip" + + "tor\022\017\n\007stop_id\030\005 \001(\t\022\024\n\014direction_id\030\006 \001" + + "(\r*\006\010\350\007\020\320\017*\006\010\250F\020\220N\"\246\001\n\020TranslatedString\022" + + "C\n\013translation\030\001 \003(\0132..transit_realtime." + + "TranslatedString.Translation\032=\n\013Translat" + + "ion\022\014\n\004text\030\001 \002(\t\022\020\n\010language\030\002 \001(\t*\006\010\350\007" + + "\020\320\017*\006\010\250F\020\220N*\006\010\350\007\020\320\017*\006\010\250F\020\220NB\035\n\033com.googl" + + "e.transit.realtime" }; - com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = - new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { - public com.google.protobuf.ExtensionRegistry assignDescriptors( - com.google.protobuf.Descriptors.FileDescriptor root) { - descriptor = root; - return null; - } - }; - com.google.protobuf.Descriptors.FileDescriptor + descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - }, assigner); + }); internal_static_transit_realtime_FeedMessage_descriptor = getDescriptor().getMessageTypes().get(0); internal_static_transit_realtime_FeedMessage_fieldAccessorTable = new @@ -23577,7 +26521,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_transit_realtime_TripUpdate_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_transit_realtime_TripUpdate_descriptor, - new java.lang.String[] { "Trip", "Vehicle", "StopTimeUpdate", "Timestamp", "Delay", }); + new java.lang.String[] { "Trip", "Vehicle", "StopTimeUpdate", "Timestamp", "Delay", "TripProperties", }); internal_static_transit_realtime_TripUpdate_StopTimeEvent_descriptor = internal_static_transit_realtime_TripUpdate_descriptor.getNestedTypes().get(0); internal_static_transit_realtime_TripUpdate_StopTimeEvent_fieldAccessorTable = new @@ -23590,12 +26534,18 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_transit_realtime_TripUpdate_StopTimeUpdate_descriptor, new java.lang.String[] { "StopSequence", "StopId", "Arrival", "Departure", "ScheduleRelationship", }); + internal_static_transit_realtime_TripUpdate_TripProperties_descriptor = + internal_static_transit_realtime_TripUpdate_descriptor.getNestedTypes().get(2); + internal_static_transit_realtime_TripUpdate_TripProperties_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_transit_realtime_TripUpdate_TripProperties_descriptor, + new java.lang.String[] { "TripId", "StartDate", "StartTime", }); internal_static_transit_realtime_VehiclePosition_descriptor = getDescriptor().getMessageTypes().get(4); internal_static_transit_realtime_VehiclePosition_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_transit_realtime_VehiclePosition_descriptor, - new java.lang.String[] { "Trip", "Vehicle", "Position", "CurrentStopSequence", "StopId", "CurrentStatus", "Timestamp", "CongestionLevel", "OccupancyStatus", }); + new java.lang.String[] { "Trip", "Vehicle", "Position", "CurrentStopSequence", "StopId", "CurrentStatus", "Timestamp", "CongestionLevel", "OccupancyStatus", "OccupancyPercentage", }); internal_static_transit_realtime_Alert_descriptor = getDescriptor().getMessageTypes().get(5); internal_static_transit_realtime_Alert_fieldAccessorTable = new @@ -23631,7 +26581,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( internal_static_transit_realtime_EntitySelector_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_transit_realtime_EntitySelector_descriptor, - new java.lang.String[] { "AgencyId", "RouteId", "RouteType", "Trip", "StopId", }); + new java.lang.String[] { "AgencyId", "RouteId", "RouteType", "Trip", "StopId", "DirectionId", }); internal_static_transit_realtime_TranslatedString_descriptor = getDescriptor().getMessageTypes().get(11); internal_static_transit_realtime_TranslatedString_fieldAccessorTable = new diff --git a/nodejs/gtfs-realtime.js b/build/javascript/gtfs-realtime.js similarity index 93% rename from nodejs/gtfs-realtime.js rename to build/javascript/gtfs-realtime.js index a05ad6b..b42039f 100644 --- a/nodejs/gtfs-realtime.js +++ b/build/javascript/gtfs-realtime.js @@ -1,17 +1,3 @@ -// Copyright 2019 Google, MobilityData -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - /*eslint-disable block-scoped-var, no-redeclare, no-control-regex, no-prototype-builtins*/ "use strict"; @@ -844,6 +830,7 @@ $root.transit_realtime = (function() { * @property {Array.|null} [stopTimeUpdate] TripUpdate stopTimeUpdate * @property {number|Long|null} [timestamp] TripUpdate timestamp * @property {number|null} [delay] TripUpdate delay + * @property {transit_realtime.TripUpdate.ITripProperties|null} [tripProperties] TripUpdate tripProperties */ /** @@ -902,6 +889,14 @@ $root.transit_realtime = (function() { */ TripUpdate.prototype.delay = 0; + /** + * TripUpdate tripProperties. + * @member {transit_realtime.TripUpdate.ITripProperties|null|undefined} tripProperties + * @memberof transit_realtime.TripUpdate + * @instance + */ + TripUpdate.prototype.tripProperties = null; + /** * Creates a new TripUpdate instance using the specified properties. * @function create @@ -936,6 +931,8 @@ $root.transit_realtime = (function() { writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.timestamp); if (message.delay != null && message.hasOwnProperty("delay")) writer.uint32(/* id 5, wireType 0 =*/40).int32(message.delay); + if (message.tripProperties != null && message.hasOwnProperty("tripProperties")) + $root.transit_realtime.TripUpdate.TripProperties.encode(message.tripProperties, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; @@ -987,6 +984,9 @@ $root.transit_realtime = (function() { case 5: message.delay = reader.int32(); break; + case 6: + message.tripProperties = $root.transit_realtime.TripUpdate.TripProperties.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -1049,6 +1049,11 @@ $root.transit_realtime = (function() { if (message.delay != null && message.hasOwnProperty("delay")) if (!$util.isInteger(message.delay)) return "delay: integer expected"; + if (message.tripProperties != null && message.hasOwnProperty("tripProperties")) { + var error = $root.transit_realtime.TripUpdate.TripProperties.verify(message.tripProperties); + if (error) + return "tripProperties." + error; + } return null; }; @@ -1095,6 +1100,11 @@ $root.transit_realtime = (function() { message.timestamp = new $util.LongBits(object.timestamp.low >>> 0, object.timestamp.high >>> 0).toNumber(true); if (object.delay != null) message.delay = object.delay | 0; + if (object.tripProperties != null) { + if (typeof object.tripProperties !== "object") + throw TypeError(".transit_realtime.TripUpdate.tripProperties: object expected"); + message.tripProperties = $root.transit_realtime.TripUpdate.TripProperties.fromObject(object.tripProperties); + } return message; }; @@ -1122,6 +1132,7 @@ $root.transit_realtime = (function() { } else object.timestamp = options.longs === String ? "0" : 0; object.delay = 0; + object.tripProperties = null; } if (message.trip != null && message.hasOwnProperty("trip")) object.trip = $root.transit_realtime.TripDescriptor.toObject(message.trip, options); @@ -1139,6 +1150,8 @@ $root.transit_realtime = (function() { object.timestamp = options.longs === String ? $util.Long.prototype.toString.call(message.timestamp) : options.longs === Number ? new $util.LongBits(message.timestamp.low >>> 0, message.timestamp.high >>> 0).toNumber(true) : message.timestamp; if (message.delay != null && message.hasOwnProperty("delay")) object.delay = message.delay; + if (message.tripProperties != null && message.hasOwnProperty("tripProperties")) + object.tripProperties = $root.transit_realtime.TripUpdate.TripProperties.toObject(message.tripProperties, options); return object; }; @@ -1608,6 +1621,7 @@ $root.transit_realtime = (function() { case 0: case 1: case 2: + case 3: break; } return null; @@ -1652,6 +1666,10 @@ $root.transit_realtime = (function() { case 2: message.scheduleRelationship = 2; break; + case "UNSCHEDULED": + case 3: + message.scheduleRelationship = 3; + break; } return message; }; @@ -1707,18 +1725,252 @@ $root.transit_realtime = (function() { * @property {number} SCHEDULED=0 SCHEDULED value * @property {number} SKIPPED=1 SKIPPED value * @property {number} NO_DATA=2 NO_DATA value + * @property {number} UNSCHEDULED=3 UNSCHEDULED value */ StopTimeUpdate.ScheduleRelationship = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[0] = "SCHEDULED"] = 0; values[valuesById[1] = "SKIPPED"] = 1; values[valuesById[2] = "NO_DATA"] = 2; + values[valuesById[3] = "UNSCHEDULED"] = 3; return values; })(); return StopTimeUpdate; })(); + TripUpdate.TripProperties = (function() { + + /** + * Properties of a TripProperties. + * @memberof transit_realtime.TripUpdate + * @interface ITripProperties + * @property {string|null} [tripId] TripProperties tripId + * @property {string|null} [startDate] TripProperties startDate + * @property {string|null} [startTime] TripProperties startTime + */ + + /** + * Constructs a new TripProperties. + * @memberof transit_realtime.TripUpdate + * @classdesc Represents a TripProperties. + * @implements ITripProperties + * @constructor + * @param {transit_realtime.TripUpdate.ITripProperties=} [properties] Properties to set + */ + function TripProperties(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * TripProperties tripId. + * @member {string} tripId + * @memberof transit_realtime.TripUpdate.TripProperties + * @instance + */ + TripProperties.prototype.tripId = ""; + + /** + * TripProperties startDate. + * @member {string} startDate + * @memberof transit_realtime.TripUpdate.TripProperties + * @instance + */ + TripProperties.prototype.startDate = ""; + + /** + * TripProperties startTime. + * @member {string} startTime + * @memberof transit_realtime.TripUpdate.TripProperties + * @instance + */ + TripProperties.prototype.startTime = ""; + + /** + * Creates a new TripProperties instance using the specified properties. + * @function create + * @memberof transit_realtime.TripUpdate.TripProperties + * @static + * @param {transit_realtime.TripUpdate.ITripProperties=} [properties] Properties to set + * @returns {transit_realtime.TripUpdate.TripProperties} TripProperties instance + */ + TripProperties.create = function create(properties) { + return new TripProperties(properties); + }; + + /** + * Encodes the specified TripProperties message. Does not implicitly {@link transit_realtime.TripUpdate.TripProperties.verify|verify} messages. + * @function encode + * @memberof transit_realtime.TripUpdate.TripProperties + * @static + * @param {transit_realtime.TripUpdate.ITripProperties} message TripProperties message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TripProperties.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.tripId != null && message.hasOwnProperty("tripId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.tripId); + if (message.startDate != null && message.hasOwnProperty("startDate")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.startDate); + if (message.startTime != null && message.hasOwnProperty("startTime")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.startTime); + return writer; + }; + + /** + * Encodes the specified TripProperties message, length delimited. Does not implicitly {@link transit_realtime.TripUpdate.TripProperties.verify|verify} messages. + * @function encodeDelimited + * @memberof transit_realtime.TripUpdate.TripProperties + * @static + * @param {transit_realtime.TripUpdate.ITripProperties} message TripProperties message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TripProperties.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a TripProperties message from the specified reader or buffer. + * @function decode + * @memberof transit_realtime.TripUpdate.TripProperties + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {transit_realtime.TripUpdate.TripProperties} TripProperties + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TripProperties.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.transit_realtime.TripUpdate.TripProperties(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.tripId = reader.string(); + break; + case 2: + message.startDate = reader.string(); + break; + case 3: + message.startTime = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a TripProperties message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof transit_realtime.TripUpdate.TripProperties + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {transit_realtime.TripUpdate.TripProperties} TripProperties + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + TripProperties.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a TripProperties message. + * @function verify + * @memberof transit_realtime.TripUpdate.TripProperties + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + TripProperties.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.tripId != null && message.hasOwnProperty("tripId")) + if (!$util.isString(message.tripId)) + return "tripId: string expected"; + if (message.startDate != null && message.hasOwnProperty("startDate")) + if (!$util.isString(message.startDate)) + return "startDate: string expected"; + if (message.startTime != null && message.hasOwnProperty("startTime")) + if (!$util.isString(message.startTime)) + return "startTime: string expected"; + return null; + }; + + /** + * Creates a TripProperties message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof transit_realtime.TripUpdate.TripProperties + * @static + * @param {Object.} object Plain object + * @returns {transit_realtime.TripUpdate.TripProperties} TripProperties + */ + TripProperties.fromObject = function fromObject(object) { + if (object instanceof $root.transit_realtime.TripUpdate.TripProperties) + return object; + var message = new $root.transit_realtime.TripUpdate.TripProperties(); + if (object.tripId != null) + message.tripId = String(object.tripId); + if (object.startDate != null) + message.startDate = String(object.startDate); + if (object.startTime != null) + message.startTime = String(object.startTime); + return message; + }; + + /** + * Creates a plain object from a TripProperties message. Also converts values to other types if specified. + * @function toObject + * @memberof transit_realtime.TripUpdate.TripProperties + * @static + * @param {transit_realtime.TripUpdate.TripProperties} message TripProperties + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + TripProperties.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.tripId = ""; + object.startDate = ""; + object.startTime = ""; + } + if (message.tripId != null && message.hasOwnProperty("tripId")) + object.tripId = message.tripId; + if (message.startDate != null && message.hasOwnProperty("startDate")) + object.startDate = message.startDate; + if (message.startTime != null && message.hasOwnProperty("startTime")) + object.startTime = message.startTime; + return object; + }; + + /** + * Converts this TripProperties to JSON. + * @function toJSON + * @memberof transit_realtime.TripUpdate.TripProperties + * @instance + * @returns {Object.} JSON object + */ + TripProperties.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return TripProperties; + })(); + return TripUpdate; })(); @@ -1737,6 +1989,7 @@ $root.transit_realtime = (function() { * @property {number|Long|null} [timestamp] VehiclePosition timestamp * @property {transit_realtime.VehiclePosition.CongestionLevel|null} [congestionLevel] VehiclePosition congestionLevel * @property {transit_realtime.VehiclePosition.OccupancyStatus|null} [occupancyStatus] VehiclePosition occupancyStatus + * @property {number|null} [occupancyPercentage] VehiclePosition occupancyPercentage */ /** @@ -1826,6 +2079,14 @@ $root.transit_realtime = (function() { */ VehiclePosition.prototype.occupancyStatus = 0; + /** + * VehiclePosition occupancyPercentage. + * @member {number} occupancyPercentage + * @memberof transit_realtime.VehiclePosition + * @instance + */ + VehiclePosition.prototype.occupancyPercentage = 0; + /** * Creates a new VehiclePosition instance using the specified properties. * @function create @@ -1868,6 +2129,8 @@ $root.transit_realtime = (function() { $root.transit_realtime.VehicleDescriptor.encode(message.vehicle, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); if (message.occupancyStatus != null && message.hasOwnProperty("occupancyStatus")) writer.uint32(/* id 9, wireType 0 =*/72).int32(message.occupancyStatus); + if (message.occupancyPercentage != null && message.hasOwnProperty("occupancyPercentage")) + writer.uint32(/* id 10, wireType 0 =*/80).uint32(message.occupancyPercentage); return writer; }; @@ -1929,6 +2192,9 @@ $root.transit_realtime = (function() { case 9: message.occupancyStatus = reader.int32(); break; + case 10: + message.occupancyPercentage = reader.uint32(); + break; default: reader.skipType(tag & 7); break; @@ -2021,6 +2287,9 @@ $root.transit_realtime = (function() { case 6: break; } + if (message.occupancyPercentage != null && message.hasOwnProperty("occupancyPercentage")) + if (!$util.isInteger(message.occupancyPercentage)) + return "occupancyPercentage: integer expected"; return null; }; @@ -2130,6 +2399,8 @@ $root.transit_realtime = (function() { message.occupancyStatus = 6; break; } + if (object.occupancyPercentage != null) + message.occupancyPercentage = object.occupancyPercentage >>> 0; return message; }; @@ -2160,6 +2431,7 @@ $root.transit_realtime = (function() { object.stopId = ""; object.vehicle = null; object.occupancyStatus = options.enums === String ? "EMPTY" : 0; + object.occupancyPercentage = 0; } if (message.trip != null && message.hasOwnProperty("trip")) object.trip = $root.transit_realtime.TripDescriptor.toObject(message.trip, options); @@ -2182,6 +2454,8 @@ $root.transit_realtime = (function() { object.vehicle = $root.transit_realtime.VehicleDescriptor.toObject(message.vehicle, options); if (message.occupancyStatus != null && message.hasOwnProperty("occupancyStatus")) object.occupancyStatus = options.enums === String ? $root.transit_realtime.VehiclePosition.OccupancyStatus[message.occupancyStatus] : message.occupancyStatus; + if (message.occupancyPercentage != null && message.hasOwnProperty("occupancyPercentage")) + object.occupancyPercentage = message.occupancyPercentage; return object; }; @@ -2573,6 +2847,7 @@ $root.transit_realtime = (function() { case 8: case 9: case 10: + case 11: break; } if (message.url != null && message.hasOwnProperty("url")) { @@ -2736,6 +3011,10 @@ $root.transit_realtime = (function() { case 10: message.effect = 10; break; + case "ACCESSIBILITY_ISSUE": + case 11: + message.effect = 11; + break; } if (object.url != null) { if (typeof object.url !== "object") @@ -2898,6 +3177,7 @@ $root.transit_realtime = (function() { * @property {number} UNKNOWN_EFFECT=8 UNKNOWN_EFFECT value * @property {number} STOP_MOVED=9 STOP_MOVED value * @property {number} NO_EFFECT=10 NO_EFFECT value + * @property {number} ACCESSIBILITY_ISSUE=11 ACCESSIBILITY_ISSUE value */ Alert.Effect = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -2911,6 +3191,7 @@ $root.transit_realtime = (function() { values[valuesById[8] = "UNKNOWN_EFFECT"] = 8; values[valuesById[9] = "STOP_MOVED"] = 9; values[valuesById[10] = "NO_EFFECT"] = 10; + values[valuesById[11] = "ACCESSIBILITY_ISSUE"] = 11; return values; })(); @@ -3673,6 +3954,7 @@ $root.transit_realtime = (function() { case 2: case 3: case 5: + case 6: break; } return null; @@ -3721,6 +4003,10 @@ $root.transit_realtime = (function() { case 5: message.scheduleRelationship = 5; break; + case "DUPLICATED": + case 6: + message.scheduleRelationship = 6; + break; } return message; }; @@ -3781,6 +4067,7 @@ $root.transit_realtime = (function() { * @property {number} UNSCHEDULED=2 UNSCHEDULED value * @property {number} CANCELED=3 CANCELED value * @property {number} REPLACEMENT=5 REPLACEMENT value + * @property {number} DUPLICATED=6 DUPLICATED value */ TripDescriptor.ScheduleRelationship = (function() { var valuesById = {}, values = Object.create(valuesById); @@ -3789,6 +4076,7 @@ $root.transit_realtime = (function() { values[valuesById[2] = "UNSCHEDULED"] = 2; values[valuesById[3] = "CANCELED"] = 3; values[valuesById[5] = "REPLACEMENT"] = 5; + values[valuesById[6] = "DUPLICATED"] = 6; return values; })(); @@ -4038,6 +4326,7 @@ $root.transit_realtime = (function() { * @property {number|null} [routeType] EntitySelector routeType * @property {transit_realtime.ITripDescriptor|null} [trip] EntitySelector trip * @property {string|null} [stopId] EntitySelector stopId + * @property {number|null} [directionId] EntitySelector directionId */ /** @@ -4095,6 +4384,14 @@ $root.transit_realtime = (function() { */ EntitySelector.prototype.stopId = ""; + /** + * EntitySelector directionId. + * @member {number} directionId + * @memberof transit_realtime.EntitySelector + * @instance + */ + EntitySelector.prototype.directionId = 0; + /** * Creates a new EntitySelector instance using the specified properties. * @function create @@ -4129,6 +4426,8 @@ $root.transit_realtime = (function() { $root.transit_realtime.TripDescriptor.encode(message.trip, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); if (message.stopId != null && message.hasOwnProperty("stopId")) writer.uint32(/* id 5, wireType 2 =*/42).string(message.stopId); + if (message.directionId != null && message.hasOwnProperty("directionId")) + writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.directionId); return writer; }; @@ -4178,6 +4477,9 @@ $root.transit_realtime = (function() { case 5: message.stopId = reader.string(); break; + case 6: + message.directionId = reader.uint32(); + break; default: reader.skipType(tag & 7); break; @@ -4230,6 +4532,9 @@ $root.transit_realtime = (function() { if (message.stopId != null && message.hasOwnProperty("stopId")) if (!$util.isString(message.stopId)) return "stopId: string expected"; + if (message.directionId != null && message.hasOwnProperty("directionId")) + if (!$util.isInteger(message.directionId)) + return "directionId: integer expected"; return null; }; @@ -4258,6 +4563,8 @@ $root.transit_realtime = (function() { } if (object.stopId != null) message.stopId = String(object.stopId); + if (object.directionId != null) + message.directionId = object.directionId >>> 0; return message; }; @@ -4280,6 +4587,7 @@ $root.transit_realtime = (function() { object.routeType = 0; object.trip = null; object.stopId = ""; + object.directionId = 0; } if (message.agencyId != null && message.hasOwnProperty("agencyId")) object.agencyId = message.agencyId; @@ -4291,6 +4599,8 @@ $root.transit_realtime = (function() { object.trip = $root.transit_realtime.TripDescriptor.toObject(message.trip, options); if (message.stopId != null && message.hasOwnProperty("stopId")) object.stopId = message.stopId; + if (message.directionId != null && message.hasOwnProperty("directionId")) + object.directionId = message.directionId; return object; }; diff --git a/python/google/transit/gtfs_realtime_pb2.py b/build/python/gtfs_realtime_pb2.py similarity index 59% rename from python/google/transit/gtfs_realtime_pb2.py rename to build/python/gtfs_realtime_pb2.py index 2e4527a..5e1acd0 100644 --- a/python/google/transit/gtfs_realtime_pb2.py +++ b/build/python/gtfs_realtime_pb2.py @@ -1,24 +1,7 @@ -#! /usr/bin/python -# -# Copyright 2016-2019 Google Inc., MobilityData -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - +# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: gtfs-realtime.proto -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection @@ -34,8 +17,9 @@ name='gtfs-realtime.proto', package='transit_realtime', syntax='proto2', - serialized_options=_b('\n\033com.google.transit.realtime'), - serialized_pb=_b('\n\x13gtfs-realtime.proto\x12\x10transit_realtime\"q\n\x0b\x46\x65\x65\x64Message\x12,\n\x06header\x18\x01 \x02(\x0b\x32\x1c.transit_realtime.FeedHeader\x12,\n\x06\x65ntity\x18\x02 \x03(\x0b\x32\x1c.transit_realtime.FeedEntity*\x06\x08\xe8\x07\x10\xd0\x0f\"\xcf\x01\n\nFeedHeader\x12\x1d\n\x15gtfs_realtime_version\x18\x01 \x02(\t\x12Q\n\x0eincrementality\x18\x02 \x01(\x0e\x32+.transit_realtime.FeedHeader.Incrementality:\x0c\x46ULL_DATASET\x12\x11\n\ttimestamp\x18\x03 \x01(\x04\"4\n\x0eIncrementality\x12\x10\n\x0c\x46ULL_DATASET\x10\x00\x12\x10\n\x0c\x44IFFERENTIAL\x10\x01*\x06\x08\xe8\x07\x10\xd0\x0f\"\xca\x01\n\nFeedEntity\x12\n\n\x02id\x18\x01 \x02(\t\x12\x19\n\nis_deleted\x18\x02 \x01(\x08:\x05\x66\x61lse\x12\x31\n\x0btrip_update\x18\x03 \x01(\x0b\x32\x1c.transit_realtime.TripUpdate\x12\x32\n\x07vehicle\x18\x04 \x01(\x0b\x32!.transit_realtime.VehiclePosition\x12&\n\x05\x61lert\x18\x05 \x01(\x0b\x32\x17.transit_realtime.Alert*\x06\x08\xe8\x07\x10\xd0\x0f\"\x9a\x05\n\nTripUpdate\x12.\n\x04trip\x18\x01 \x02(\x0b\x32 .transit_realtime.TripDescriptor\x12\x34\n\x07vehicle\x18\x03 \x01(\x0b\x32#.transit_realtime.VehicleDescriptor\x12\x45\n\x10stop_time_update\x18\x02 \x03(\x0b\x32+.transit_realtime.TripUpdate.StopTimeUpdate\x12\x11\n\ttimestamp\x18\x04 \x01(\x04\x12\r\n\x05\x64\x65lay\x18\x05 \x01(\x05\x1aI\n\rStopTimeEvent\x12\r\n\x05\x64\x65lay\x18\x01 \x01(\x05\x12\x0c\n\x04time\x18\x02 \x01(\x03\x12\x13\n\x0buncertainty\x18\x03 \x01(\x05*\x06\x08\xe8\x07\x10\xd0\x0f\x1a\xe9\x02\n\x0eStopTimeUpdate\x12\x15\n\rstop_sequence\x18\x01 \x01(\r\x12\x0f\n\x07stop_id\x18\x04 \x01(\t\x12;\n\x07\x61rrival\x18\x02 \x01(\x0b\x32*.transit_realtime.TripUpdate.StopTimeEvent\x12=\n\tdeparture\x18\x03 \x01(\x0b\x32*.transit_realtime.TripUpdate.StopTimeEvent\x12j\n\x15schedule_relationship\x18\x05 \x01(\x0e\x32@.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship:\tSCHEDULED\"?\n\x14ScheduleRelationship\x12\r\n\tSCHEDULED\x10\x00\x12\x0b\n\x07SKIPPED\x10\x01\x12\x0b\n\x07NO_DATA\x10\x02*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xe8\x07\x10\xd0\x0f\"\xe0\x06\n\x0fVehiclePosition\x12.\n\x04trip\x18\x01 \x01(\x0b\x32 .transit_realtime.TripDescriptor\x12\x34\n\x07vehicle\x18\x08 \x01(\x0b\x32#.transit_realtime.VehicleDescriptor\x12,\n\x08position\x18\x02 \x01(\x0b\x32\x1a.transit_realtime.Position\x12\x1d\n\x15\x63urrent_stop_sequence\x18\x03 \x01(\r\x12\x0f\n\x07stop_id\x18\x07 \x01(\t\x12Z\n\x0e\x63urrent_status\x18\x04 \x01(\x0e\x32\x33.transit_realtime.VehiclePosition.VehicleStopStatus:\rIN_TRANSIT_TO\x12\x11\n\ttimestamp\x18\x05 \x01(\x04\x12K\n\x10\x63ongestion_level\x18\x06 \x01(\x0e\x32\x31.transit_realtime.VehiclePosition.CongestionLevel\x12K\n\x10occupancy_status\x18\t \x01(\x0e\x32\x31.transit_realtime.VehiclePosition.OccupancyStatus\"G\n\x11VehicleStopStatus\x12\x0f\n\x0bINCOMING_AT\x10\x00\x12\x0e\n\nSTOPPED_AT\x10\x01\x12\x11\n\rIN_TRANSIT_TO\x10\x02\"}\n\x0f\x43ongestionLevel\x12\x1c\n\x18UNKNOWN_CONGESTION_LEVEL\x10\x00\x12\x14\n\x10RUNNING_SMOOTHLY\x10\x01\x12\x0f\n\x0bSTOP_AND_GO\x10\x02\x12\x0e\n\nCONGESTION\x10\x03\x12\x15\n\x11SEVERE_CONGESTION\x10\x04\"\xaf\x01\n\x0fOccupancyStatus\x12\t\n\x05\x45MPTY\x10\x00\x12\x18\n\x14MANY_SEATS_AVAILABLE\x10\x01\x12\x17\n\x13\x46\x45W_SEATS_AVAILABLE\x10\x02\x12\x16\n\x12STANDING_ROOM_ONLY\x10\x03\x12\x1e\n\x1a\x43RUSHED_STANDING_ROOM_ONLY\x10\x04\x12\x08\n\x04\x46ULL\x10\x05\x12\x1c\n\x18NOT_ACCEPTING_PASSENGERS\x10\x06*\x06\x08\xe8\x07\x10\xd0\x0f\"\xdf\x08\n\x05\x41lert\x12\x32\n\ractive_period\x18\x01 \x03(\x0b\x32\x1b.transit_realtime.TimeRange\x12\x39\n\x0finformed_entity\x18\x05 \x03(\x0b\x32 .transit_realtime.EntitySelector\x12;\n\x05\x63\x61use\x18\x06 \x01(\x0e\x32\x1d.transit_realtime.Alert.Cause:\rUNKNOWN_CAUSE\x12>\n\x06\x65\x66\x66\x65\x63t\x18\x07 \x01(\x0e\x32\x1e.transit_realtime.Alert.Effect:\x0eUNKNOWN_EFFECT\x12/\n\x03url\x18\x08 \x01(\x0b\x32\".transit_realtime.TranslatedString\x12\x37\n\x0bheader_text\x18\n \x01(\x0b\x32\".transit_realtime.TranslatedString\x12<\n\x10\x64\x65scription_text\x18\x0b \x01(\x0b\x32\".transit_realtime.TranslatedString\x12;\n\x0ftts_header_text\x18\x0c \x01(\x0b\x32\".transit_realtime.TranslatedString\x12@\n\x14tts_description_text\x18\r \x01(\x0b\x32\".transit_realtime.TranslatedString\x12O\n\x0eseverity_level\x18\x0e \x01(\x0e\x32%.transit_realtime.Alert.SeverityLevel:\x10UNKNOWN_SEVERITY\"\xd8\x01\n\x05\x43\x61use\x12\x11\n\rUNKNOWN_CAUSE\x10\x01\x12\x0f\n\x0bOTHER_CAUSE\x10\x02\x12\x15\n\x11TECHNICAL_PROBLEM\x10\x03\x12\n\n\x06STRIKE\x10\x04\x12\x11\n\rDEMONSTRATION\x10\x05\x12\x0c\n\x08\x41\x43\x43IDENT\x10\x06\x12\x0b\n\x07HOLIDAY\x10\x07\x12\x0b\n\x07WEATHER\x10\x08\x12\x0f\n\x0bMAINTENANCE\x10\t\x12\x10\n\x0c\x43ONSTRUCTION\x10\n\x12\x13\n\x0fPOLICE_ACTIVITY\x10\x0b\x12\x15\n\x11MEDICAL_EMERGENCY\x10\x0c\"\xc4\x01\n\x06\x45\x66\x66\x65\x63t\x12\x0e\n\nNO_SERVICE\x10\x01\x12\x13\n\x0fREDUCED_SERVICE\x10\x02\x12\x16\n\x12SIGNIFICANT_DELAYS\x10\x03\x12\n\n\x06\x44\x45TOUR\x10\x04\x12\x16\n\x12\x41\x44\x44ITIONAL_SERVICE\x10\x05\x12\x14\n\x10MODIFIED_SERVICE\x10\x06\x12\x10\n\x0cOTHER_EFFECT\x10\x07\x12\x12\n\x0eUNKNOWN_EFFECT\x10\x08\x12\x0e\n\nSTOP_MOVED\x10\t\x12\r\n\tNO_EFFECT\x10\n\"H\n\rSeverityLevel\x12\x14\n\x10UNKNOWN_SEVERITY\x10\x01\x12\x08\n\x04INFO\x10\x02\x12\x0b\n\x07WARNING\x10\x03\x12\n\n\x06SEVERE\x10\x04*\x06\x08\xe8\x07\x10\xd0\x0f\"/\n\tTimeRange\x12\r\n\x05start\x18\x01 \x01(\x04\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x04*\x06\x08\xe8\x07\x10\xd0\x0f\"i\n\x08Position\x12\x10\n\x08latitude\x18\x01 \x02(\x02\x12\x11\n\tlongitude\x18\x02 \x02(\x02\x12\x0f\n\x07\x62\x65\x61ring\x18\x03 \x01(\x02\x12\x10\n\x08odometer\x18\x04 \x01(\x01\x12\r\n\x05speed\x18\x05 \x01(\x02*\x06\x08\xe8\x07\x10\xd0\x0f\"\xb5\x02\n\x0eTripDescriptor\x12\x0f\n\x07trip_id\x18\x01 \x01(\t\x12\x10\n\x08route_id\x18\x05 \x01(\t\x12\x14\n\x0c\x64irection_id\x18\x06 \x01(\r\x12\x12\n\nstart_time\x18\x02 \x01(\t\x12\x12\n\nstart_date\x18\x03 \x01(\t\x12T\n\x15schedule_relationship\x18\x04 \x01(\x0e\x32\x35.transit_realtime.TripDescriptor.ScheduleRelationship\"d\n\x14ScheduleRelationship\x12\r\n\tSCHEDULED\x10\x00\x12\t\n\x05\x41\x44\x44\x45\x44\x10\x01\x12\x0f\n\x0bUNSCHEDULED\x10\x02\x12\x0c\n\x08\x43\x41NCELED\x10\x03\x12\x13\n\x0bREPLACEMENT\x10\x05\x1a\x02\x08\x01*\x06\x08\xe8\x07\x10\xd0\x0f\"M\n\x11VehicleDescriptor\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12\x15\n\rlicense_plate\x18\x03 \x01(\t*\x06\x08\xe8\x07\x10\xd0\x0f\"\x92\x01\n\x0e\x45ntitySelector\x12\x11\n\tagency_id\x18\x01 \x01(\t\x12\x10\n\x08route_id\x18\x02 \x01(\t\x12\x12\n\nroute_type\x18\x03 \x01(\x05\x12.\n\x04trip\x18\x04 \x01(\x0b\x32 .transit_realtime.TripDescriptor\x12\x0f\n\x07stop_id\x18\x05 \x01(\t*\x06\x08\xe8\x07\x10\xd0\x0f\"\x96\x01\n\x10TranslatedString\x12\x43\n\x0btranslation\x18\x01 \x03(\x0b\x32..transit_realtime.TranslatedString.Translation\x1a\x35\n\x0bTranslation\x12\x0c\n\x04text\x18\x01 \x02(\t\x12\x10\n\x08language\x18\x02 \x01(\t*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xe8\x07\x10\xd0\x0f\x42\x1d\n\x1b\x63om.google.transit.realtime') + serialized_options=b'\n\033com.google.transit.realtime', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\x13gtfs-realtime.proto\x12\x10transit_realtime\"y\n\x0b\x46\x65\x65\x64Message\x12,\n\x06header\x18\x01 \x02(\x0b\x32\x1c.transit_realtime.FeedHeader\x12,\n\x06\x65ntity\x18\x02 \x03(\x0b\x32\x1c.transit_realtime.FeedEntity*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xd7\x01\n\nFeedHeader\x12\x1d\n\x15gtfs_realtime_version\x18\x01 \x02(\t\x12Q\n\x0eincrementality\x18\x02 \x01(\x0e\x32+.transit_realtime.FeedHeader.Incrementality:\x0c\x46ULL_DATASET\x12\x11\n\ttimestamp\x18\x03 \x01(\x04\"4\n\x0eIncrementality\x12\x10\n\x0c\x46ULL_DATASET\x10\x00\x12\x10\n\x0c\x44IFFERENTIAL\x10\x01*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xd2\x01\n\nFeedEntity\x12\n\n\x02id\x18\x01 \x02(\t\x12\x19\n\nis_deleted\x18\x02 \x01(\x08:\x05\x66\x61lse\x12\x31\n\x0btrip_update\x18\x03 \x01(\x0b\x32\x1c.transit_realtime.TripUpdate\x12\x32\n\x07vehicle\x18\x04 \x01(\x0b\x32!.transit_realtime.VehiclePosition\x12&\n\x05\x61lert\x18\x05 \x01(\x0b\x32\x17.transit_realtime.Alert*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xe4\x06\n\nTripUpdate\x12.\n\x04trip\x18\x01 \x02(\x0b\x32 .transit_realtime.TripDescriptor\x12\x34\n\x07vehicle\x18\x03 \x01(\x0b\x32#.transit_realtime.VehicleDescriptor\x12\x45\n\x10stop_time_update\x18\x02 \x03(\x0b\x32+.transit_realtime.TripUpdate.StopTimeUpdate\x12\x11\n\ttimestamp\x18\x04 \x01(\x04\x12\r\n\x05\x64\x65lay\x18\x05 \x01(\x05\x12\x44\n\x0ftrip_properties\x18\x06 \x01(\x0b\x32+.transit_realtime.TripUpdate.TripProperties\x1aQ\n\rStopTimeEvent\x12\r\n\x05\x64\x65lay\x18\x01 \x01(\x05\x12\x0c\n\x04time\x18\x02 \x01(\x03\x12\x13\n\x0buncertainty\x18\x03 \x01(\x05*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\x1a\x82\x03\n\x0eStopTimeUpdate\x12\x15\n\rstop_sequence\x18\x01 \x01(\r\x12\x0f\n\x07stop_id\x18\x04 \x01(\t\x12;\n\x07\x61rrival\x18\x02 \x01(\x0b\x32*.transit_realtime.TripUpdate.StopTimeEvent\x12=\n\tdeparture\x18\x03 \x01(\x0b\x32*.transit_realtime.TripUpdate.StopTimeEvent\x12j\n\x15schedule_relationship\x18\x05 \x01(\x0e\x32@.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship:\tSCHEDULED\"P\n\x14ScheduleRelationship\x12\r\n\tSCHEDULED\x10\x00\x12\x0b\n\x07SKIPPED\x10\x01\x12\x0b\n\x07NO_DATA\x10\x02\x12\x0f\n\x0bUNSCHEDULED\x10\x03*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\x1aY\n\x0eTripProperties\x12\x0f\n\x07trip_id\x18\x01 \x01(\t\x12\x12\n\nstart_date\x18\x02 \x01(\t\x12\x12\n\nstart_time\x18\x03 \x01(\t*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\x86\x07\n\x0fVehiclePosition\x12.\n\x04trip\x18\x01 \x01(\x0b\x32 .transit_realtime.TripDescriptor\x12\x34\n\x07vehicle\x18\x08 \x01(\x0b\x32#.transit_realtime.VehicleDescriptor\x12,\n\x08position\x18\x02 \x01(\x0b\x32\x1a.transit_realtime.Position\x12\x1d\n\x15\x63urrent_stop_sequence\x18\x03 \x01(\r\x12\x0f\n\x07stop_id\x18\x07 \x01(\t\x12Z\n\x0e\x63urrent_status\x18\x04 \x01(\x0e\x32\x33.transit_realtime.VehiclePosition.VehicleStopStatus:\rIN_TRANSIT_TO\x12\x11\n\ttimestamp\x18\x05 \x01(\x04\x12K\n\x10\x63ongestion_level\x18\x06 \x01(\x0e\x32\x31.transit_realtime.VehiclePosition.CongestionLevel\x12K\n\x10occupancy_status\x18\t \x01(\x0e\x32\x31.transit_realtime.VehiclePosition.OccupancyStatus\x12\x1c\n\x14occupancy_percentage\x18\n \x01(\r\"G\n\x11VehicleStopStatus\x12\x0f\n\x0bINCOMING_AT\x10\x00\x12\x0e\n\nSTOPPED_AT\x10\x01\x12\x11\n\rIN_TRANSIT_TO\x10\x02\"}\n\x0f\x43ongestionLevel\x12\x1c\n\x18UNKNOWN_CONGESTION_LEVEL\x10\x00\x12\x14\n\x10RUNNING_SMOOTHLY\x10\x01\x12\x0f\n\x0bSTOP_AND_GO\x10\x02\x12\x0e\n\nCONGESTION\x10\x03\x12\x15\n\x11SEVERE_CONGESTION\x10\x04\"\xaf\x01\n\x0fOccupancyStatus\x12\t\n\x05\x45MPTY\x10\x00\x12\x18\n\x14MANY_SEATS_AVAILABLE\x10\x01\x12\x17\n\x13\x46\x45W_SEATS_AVAILABLE\x10\x02\x12\x16\n\x12STANDING_ROOM_ONLY\x10\x03\x12\x1e\n\x1a\x43RUSHED_STANDING_ROOM_ONLY\x10\x04\x12\x08\n\x04\x46ULL\x10\x05\x12\x1c\n\x18NOT_ACCEPTING_PASSENGERS\x10\x06*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\x80\t\n\x05\x41lert\x12\x32\n\ractive_period\x18\x01 \x03(\x0b\x32\x1b.transit_realtime.TimeRange\x12\x39\n\x0finformed_entity\x18\x05 \x03(\x0b\x32 .transit_realtime.EntitySelector\x12;\n\x05\x63\x61use\x18\x06 \x01(\x0e\x32\x1d.transit_realtime.Alert.Cause:\rUNKNOWN_CAUSE\x12>\n\x06\x65\x66\x66\x65\x63t\x18\x07 \x01(\x0e\x32\x1e.transit_realtime.Alert.Effect:\x0eUNKNOWN_EFFECT\x12/\n\x03url\x18\x08 \x01(\x0b\x32\".transit_realtime.TranslatedString\x12\x37\n\x0bheader_text\x18\n \x01(\x0b\x32\".transit_realtime.TranslatedString\x12<\n\x10\x64\x65scription_text\x18\x0b \x01(\x0b\x32\".transit_realtime.TranslatedString\x12;\n\x0ftts_header_text\x18\x0c \x01(\x0b\x32\".transit_realtime.TranslatedString\x12@\n\x14tts_description_text\x18\r \x01(\x0b\x32\".transit_realtime.TranslatedString\x12O\n\x0eseverity_level\x18\x0e \x01(\x0e\x32%.transit_realtime.Alert.SeverityLevel:\x10UNKNOWN_SEVERITY\"\xd8\x01\n\x05\x43\x61use\x12\x11\n\rUNKNOWN_CAUSE\x10\x01\x12\x0f\n\x0bOTHER_CAUSE\x10\x02\x12\x15\n\x11TECHNICAL_PROBLEM\x10\x03\x12\n\n\x06STRIKE\x10\x04\x12\x11\n\rDEMONSTRATION\x10\x05\x12\x0c\n\x08\x41\x43\x43IDENT\x10\x06\x12\x0b\n\x07HOLIDAY\x10\x07\x12\x0b\n\x07WEATHER\x10\x08\x12\x0f\n\x0bMAINTENANCE\x10\t\x12\x10\n\x0c\x43ONSTRUCTION\x10\n\x12\x13\n\x0fPOLICE_ACTIVITY\x10\x0b\x12\x15\n\x11MEDICAL_EMERGENCY\x10\x0c\"\xdd\x01\n\x06\x45\x66\x66\x65\x63t\x12\x0e\n\nNO_SERVICE\x10\x01\x12\x13\n\x0fREDUCED_SERVICE\x10\x02\x12\x16\n\x12SIGNIFICANT_DELAYS\x10\x03\x12\n\n\x06\x44\x45TOUR\x10\x04\x12\x16\n\x12\x41\x44\x44ITIONAL_SERVICE\x10\x05\x12\x14\n\x10MODIFIED_SERVICE\x10\x06\x12\x10\n\x0cOTHER_EFFECT\x10\x07\x12\x12\n\x0eUNKNOWN_EFFECT\x10\x08\x12\x0e\n\nSTOP_MOVED\x10\t\x12\r\n\tNO_EFFECT\x10\n\x12\x17\n\x13\x41\x43\x43\x45SSIBILITY_ISSUE\x10\x0b\"H\n\rSeverityLevel\x12\x14\n\x10UNKNOWN_SEVERITY\x10\x01\x12\x08\n\x04INFO\x10\x02\x12\x0b\n\x07WARNING\x10\x03\x12\n\n\x06SEVERE\x10\x04*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"7\n\tTimeRange\x12\r\n\x05start\x18\x01 \x01(\x04\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x04*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"q\n\x08Position\x12\x10\n\x08latitude\x18\x01 \x02(\x02\x12\x11\n\tlongitude\x18\x02 \x02(\x02\x12\x0f\n\x07\x62\x65\x61ring\x18\x03 \x01(\x02\x12\x10\n\x08odometer\x18\x04 \x01(\x01\x12\r\n\x05speed\x18\x05 \x01(\x02*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xcd\x02\n\x0eTripDescriptor\x12\x0f\n\x07trip_id\x18\x01 \x01(\t\x12\x10\n\x08route_id\x18\x05 \x01(\t\x12\x14\n\x0c\x64irection_id\x18\x06 \x01(\r\x12\x12\n\nstart_time\x18\x02 \x01(\t\x12\x12\n\nstart_date\x18\x03 \x01(\t\x12T\n\x15schedule_relationship\x18\x04 \x01(\x0e\x32\x35.transit_realtime.TripDescriptor.ScheduleRelationship\"t\n\x14ScheduleRelationship\x12\r\n\tSCHEDULED\x10\x00\x12\t\n\x05\x41\x44\x44\x45\x44\x10\x01\x12\x0f\n\x0bUNSCHEDULED\x10\x02\x12\x0c\n\x08\x43\x41NCELED\x10\x03\x12\x13\n\x0bREPLACEMENT\x10\x05\x1a\x02\x08\x01\x12\x0e\n\nDUPLICATED\x10\x06*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"U\n\x11VehicleDescriptor\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05label\x18\x02 \x01(\t\x12\x15\n\rlicense_plate\x18\x03 \x01(\t*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xb0\x01\n\x0e\x45ntitySelector\x12\x11\n\tagency_id\x18\x01 \x01(\t\x12\x10\n\x08route_id\x18\x02 \x01(\t\x12\x12\n\nroute_type\x18\x03 \x01(\x05\x12.\n\x04trip\x18\x04 \x01(\x0b\x32 .transit_realtime.TripDescriptor\x12\x0f\n\x07stop_id\x18\x05 \x01(\t\x12\x14\n\x0c\x64irection_id\x18\x06 \x01(\r*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N\"\xa6\x01\n\x10TranslatedString\x12\x43\n\x0btranslation\x18\x01 \x03(\x0b\x32..transit_realtime.TranslatedString.Translation\x1a=\n\x0bTranslation\x12\x0c\n\x04text\x18\x01 \x02(\t\x12\x10\n\x08language\x18\x02 \x01(\t*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90N*\x06\x08\xe8\x07\x10\xd0\x0f*\x06\x08\xa8\x46\x10\x90NB\x1d\n\x1b\x63om.google.transit.realtime' ) @@ -45,20 +29,23 @@ full_name='transit_realtime.FeedHeader.Incrementality', filename=None, file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, values=[ _descriptor.EnumValueDescriptor( name='FULL_DATASET', index=0, number=0, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='DIFFERENTIAL', index=1, number=1, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), ], containing_type=None, serialized_options=None, - serialized_start=304, - serialized_end=356, + serialized_start=312, + serialized_end=364, ) _sym_db.RegisterEnumDescriptor(_FEEDHEADER_INCREMENTALITY) @@ -67,24 +54,33 @@ full_name='transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship', filename=None, file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, values=[ _descriptor.EnumValueDescriptor( name='SCHEDULED', index=0, number=0, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='SKIPPED', index=1, number=1, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='NO_DATA', index=2, number=2, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='UNSCHEDULED', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), ], containing_type=None, serialized_options=None, - serialized_start=1159, - serialized_end=1222, + serialized_start=1261, + serialized_end=1341, ) _sym_db.RegisterEnumDescriptor(_TRIPUPDATE_STOPTIMEUPDATE_SCHEDULERELATIONSHIP) @@ -93,24 +89,28 @@ full_name='transit_realtime.VehiclePosition.VehicleStopStatus', filename=None, file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, values=[ _descriptor.EnumValueDescriptor( name='INCOMING_AT', index=0, number=0, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='STOPPED_AT', index=1, number=1, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='IN_TRANSIT_TO', index=2, number=2, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), ], containing_type=None, serialized_options=None, - serialized_start=1721, - serialized_end=1792, + serialized_start=1977, + serialized_end=2048, ) _sym_db.RegisterEnumDescriptor(_VEHICLEPOSITION_VEHICLESTOPSTATUS) @@ -119,32 +119,38 @@ full_name='transit_realtime.VehiclePosition.CongestionLevel', filename=None, file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_CONGESTION_LEVEL', index=0, number=0, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='RUNNING_SMOOTHLY', index=1, number=1, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='STOP_AND_GO', index=2, number=2, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='CONGESTION', index=3, number=3, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='SEVERE_CONGESTION', index=4, number=4, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), ], containing_type=None, serialized_options=None, - serialized_start=1794, - serialized_end=1919, + serialized_start=2050, + serialized_end=2175, ) _sym_db.RegisterEnumDescriptor(_VEHICLEPOSITION_CONGESTIONLEVEL) @@ -153,40 +159,48 @@ full_name='transit_realtime.VehiclePosition.OccupancyStatus', filename=None, file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, values=[ _descriptor.EnumValueDescriptor( name='EMPTY', index=0, number=0, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='MANY_SEATS_AVAILABLE', index=1, number=1, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='FEW_SEATS_AVAILABLE', index=2, number=2, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='STANDING_ROOM_ONLY', index=3, number=3, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='CRUSHED_STANDING_ROOM_ONLY', index=4, number=4, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='FULL', index=5, number=5, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='NOT_ACCEPTING_PASSENGERS', index=6, number=6, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), ], containing_type=None, serialized_options=None, - serialized_start=1922, - serialized_end=2097, + serialized_start=2178, + serialized_end=2353, ) _sym_db.RegisterEnumDescriptor(_VEHICLEPOSITION_OCCUPANCYSTATUS) @@ -195,60 +209,73 @@ full_name='transit_realtime.Alert.Cause', filename=None, file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_CAUSE', index=0, number=1, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='OTHER_CAUSE', index=1, number=2, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='TECHNICAL_PROBLEM', index=2, number=3, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='STRIKE', index=3, number=4, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='DEMONSTRATION', index=4, number=5, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='ACCIDENT', index=5, number=6, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='HOLIDAY', index=6, number=7, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='WEATHER', index=7, number=8, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='MAINTENANCE', index=8, number=9, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='CONSTRUCTION', index=9, number=10, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='POLICE_ACTIVITY', index=10, number=11, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='MEDICAL_EMERGENCY', index=11, number=12, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), ], containing_type=None, serialized_options=None, - serialized_start=2730, - serialized_end=2946, + serialized_start=2994, + serialized_end=3210, ) _sym_db.RegisterEnumDescriptor(_ALERT_CAUSE) @@ -257,52 +284,68 @@ full_name='transit_realtime.Alert.Effect', filename=None, file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, values=[ _descriptor.EnumValueDescriptor( name='NO_SERVICE', index=0, number=1, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='REDUCED_SERVICE', index=1, number=2, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='SIGNIFICANT_DELAYS', index=2, number=3, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='DETOUR', index=3, number=4, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='ADDITIONAL_SERVICE', index=4, number=5, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='MODIFIED_SERVICE', index=5, number=6, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='OTHER_EFFECT', index=6, number=7, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='UNKNOWN_EFFECT', index=7, number=8, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='STOP_MOVED', index=8, number=9, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='NO_EFFECT', index=9, number=10, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ACCESSIBILITY_ISSUE', index=10, number=11, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), ], containing_type=None, serialized_options=None, - serialized_start=2949, - serialized_end=3145, + serialized_start=3213, + serialized_end=3434, ) _sym_db.RegisterEnumDescriptor(_ALERT_EFFECT) @@ -311,28 +354,33 @@ full_name='transit_realtime.Alert.SeverityLevel', filename=None, file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, values=[ _descriptor.EnumValueDescriptor( name='UNKNOWN_SEVERITY', index=0, number=1, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='INFO', index=1, number=2, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='WARNING', index=2, number=3, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='SEVERE', index=3, number=4, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), ], containing_type=None, serialized_options=None, - serialized_start=3147, - serialized_end=3219, + serialized_start=3436, + serialized_end=3508, ) _sym_db.RegisterEnumDescriptor(_ALERT_SEVERITYLEVEL) @@ -341,32 +389,43 @@ full_name='transit_realtime.TripDescriptor.ScheduleRelationship', filename=None, file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, values=[ _descriptor.EnumValueDescriptor( name='SCHEDULED', index=0, number=0, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='ADDED', index=1, number=1, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='UNSCHEDULED', index=2, number=2, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='CANCELED', index=3, number=3, serialized_options=None, - type=None), + type=None, + create_key=_descriptor._internal_create_key), _descriptor.EnumValueDescriptor( name='REPLACEMENT', index=4, number=5, - serialized_options=_b('\010\001'), - type=None), + serialized_options=b'\010\001', + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='DUPLICATED', index=5, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), ], containing_type=None, serialized_options=None, - serialized_start=3587, - serialized_end=3687, + serialized_start=3900, + serialized_end=4016, ) _sym_db.RegisterEnumDescriptor(_TRIPDESCRIPTOR_SCHEDULERELATIONSHIP) @@ -377,6 +436,7 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='header', full_name='transit_realtime.FeedMessage.header', index=0, @@ -384,14 +444,14 @@ has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='entity', full_name='transit_realtime.FeedMessage.entity', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -401,11 +461,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], serialized_start=41, - serialized_end=154, + serialized_end=162, ) @@ -415,28 +475,29 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='gtfs_realtime_version', full_name='transit_realtime.FeedHeader.gtfs_realtime_version', index=0, number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='incrementality', full_name='transit_realtime.FeedHeader.incrementality', index=1, number=2, type=14, cpp_type=8, label=1, has_default_value=True, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='timestamp', full_name='transit_realtime.FeedHeader.timestamp', index=2, number=3, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -447,11 +508,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=157, - serialized_end=364, + serialized_start=165, + serialized_end=380, ) @@ -461,42 +522,43 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='id', full_name='transit_realtime.FeedEntity.id', index=0, number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='is_deleted', full_name='transit_realtime.FeedEntity.is_deleted', index=1, number=2, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='trip_update', full_name='transit_realtime.FeedEntity.trip_update', index=2, number=3, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='vehicle', full_name='transit_realtime.FeedEntity.vehicle', index=3, number=4, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='alert', full_name='transit_realtime.FeedEntity.alert', index=4, number=5, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -506,11 +568,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=367, - serialized_end=569, + serialized_start=383, + serialized_end=593, ) @@ -520,6 +582,7 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='delay', full_name='transit_realtime.TripUpdate.StopTimeEvent.delay', index=0, @@ -527,21 +590,21 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='time', full_name='transit_realtime.TripUpdate.StopTimeEvent.time', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='uncertainty', full_name='transit_realtime.TripUpdate.StopTimeEvent.uncertainty', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -551,11 +614,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=793, - serialized_end=866, + serialized_start=887, + serialized_end=968, ) _TRIPUPDATE_STOPTIMEUPDATE = _descriptor.Descriptor( @@ -564,6 +627,7 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='stop_sequence', full_name='transit_realtime.TripUpdate.StopTimeUpdate.stop_sequence', index=0, @@ -571,35 +635,35 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='stop_id', full_name='transit_realtime.TripUpdate.StopTimeUpdate.stop_id', index=1, number=4, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='arrival', full_name='transit_realtime.TripUpdate.StopTimeUpdate.arrival', index=2, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='departure', full_name='transit_realtime.TripUpdate.StopTimeUpdate.departure', index=3, number=3, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='schedule_relationship', full_name='transit_realtime.TripUpdate.StopTimeUpdate.schedule_relationship', index=4, number=5, type=14, cpp_type=8, label=1, has_default_value=True, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -610,11 +674,56 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=869, - serialized_end=1230, + serialized_start=971, + serialized_end=1357, +) + +_TRIPUPDATE_TRIPPROPERTIES = _descriptor.Descriptor( + name='TripProperties', + full_name='transit_realtime.TripUpdate.TripProperties', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='trip_id', full_name='transit_realtime.TripUpdate.TripProperties.trip_id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='start_date', full_name='transit_realtime.TripUpdate.TripProperties.start_date', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='start_time', full_name='transit_realtime.TripUpdate.TripProperties.start_time', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=True, + syntax='proto2', + extension_ranges=[(1000, 2000), (9000, 10000), ], + oneofs=[ + ], + serialized_start=1359, + serialized_end=1448, ) _TRIPUPDATE = _descriptor.Descriptor( @@ -623,6 +732,7 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='trip', full_name='transit_realtime.TripUpdate.trip', index=0, @@ -630,49 +740,56 @@ has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='vehicle', full_name='transit_realtime.TripUpdate.vehicle', index=1, number=3, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='stop_time_update', full_name='transit_realtime.TripUpdate.stop_time_update', index=2, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='timestamp', full_name='transit_realtime.TripUpdate.timestamp', index=3, number=4, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='delay', full_name='transit_realtime.TripUpdate.delay', index=4, number=5, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='trip_properties', full_name='transit_realtime.TripUpdate.trip_properties', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], - nested_types=[_TRIPUPDATE_STOPTIMEEVENT, _TRIPUPDATE_STOPTIMEUPDATE, ], + nested_types=[_TRIPUPDATE_STOPTIMEEVENT, _TRIPUPDATE_STOPTIMEUPDATE, _TRIPUPDATE_TRIPPROPERTIES, ], enum_types=[ ], serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=572, - serialized_end=1238, + serialized_start=596, + serialized_end=1464, ) @@ -682,6 +799,7 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='trip', full_name='transit_realtime.VehiclePosition.trip', index=0, @@ -689,63 +807,70 @@ has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='vehicle', full_name='transit_realtime.VehiclePosition.vehicle', index=1, number=8, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='position', full_name='transit_realtime.VehiclePosition.position', index=2, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='current_stop_sequence', full_name='transit_realtime.VehiclePosition.current_stop_sequence', index=3, number=3, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='stop_id', full_name='transit_realtime.VehiclePosition.stop_id', index=4, number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='current_status', full_name='transit_realtime.VehiclePosition.current_status', index=5, number=4, type=14, cpp_type=8, label=1, has_default_value=True, default_value=2, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='timestamp', full_name='transit_realtime.VehiclePosition.timestamp', index=6, number=5, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='congestion_level', full_name='transit_realtime.VehiclePosition.congestion_level', index=7, number=6, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='occupancy_status', full_name='transit_realtime.VehiclePosition.occupancy_status', index=8, number=9, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='occupancy_percentage', full_name='transit_realtime.VehiclePosition.occupancy_percentage', index=9, + number=10, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -758,11 +883,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=1241, - serialized_end=2105, + serialized_start=1467, + serialized_end=2369, ) @@ -772,6 +897,7 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='active_period', full_name='transit_realtime.Alert.active_period', index=0, @@ -779,70 +905,70 @@ has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='informed_entity', full_name='transit_realtime.Alert.informed_entity', index=1, number=5, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='cause', full_name='transit_realtime.Alert.cause', index=2, number=6, type=14, cpp_type=8, label=1, has_default_value=True, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='effect', full_name='transit_realtime.Alert.effect', index=3, number=7, type=14, cpp_type=8, label=1, has_default_value=True, default_value=8, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='url', full_name='transit_realtime.Alert.url', index=4, number=8, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='header_text', full_name='transit_realtime.Alert.header_text', index=5, number=10, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='description_text', full_name='transit_realtime.Alert.description_text', index=6, number=11, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='tts_header_text', full_name='transit_realtime.Alert.tts_header_text', index=7, number=12, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='tts_description_text', full_name='transit_realtime.Alert.tts_description_text', index=8, number=13, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='severity_level', full_name='transit_realtime.Alert.severity_level', index=9, number=14, type=14, cpp_type=8, label=1, has_default_value=True, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -855,11 +981,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=2108, - serialized_end=3227, + serialized_start=2372, + serialized_end=3524, ) @@ -869,6 +995,7 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='start', full_name='transit_realtime.TimeRange.start', index=0, @@ -876,14 +1003,14 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='end', full_name='transit_realtime.TimeRange.end', index=1, number=2, type=4, cpp_type=4, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -893,11 +1020,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=3229, - serialized_end=3276, + serialized_start=3526, + serialized_end=3581, ) @@ -907,6 +1034,7 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='latitude', full_name='transit_realtime.Position.latitude', index=0, @@ -914,35 +1042,35 @@ has_default_value=False, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='longitude', full_name='transit_realtime.Position.longitude', index=1, number=2, type=2, cpp_type=6, label=2, has_default_value=False, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='bearing', full_name='transit_realtime.Position.bearing', index=2, number=3, type=2, cpp_type=6, label=1, has_default_value=False, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='odometer', full_name='transit_realtime.Position.odometer', index=3, number=4, type=1, cpp_type=5, label=1, has_default_value=False, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='speed', full_name='transit_realtime.Position.speed', index=4, number=5, type=2, cpp_type=6, label=1, has_default_value=False, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -952,11 +1080,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=3278, - serialized_end=3383, + serialized_start=3583, + serialized_end=3696, ) @@ -966,49 +1094,50 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='trip_id', full_name='transit_realtime.TripDescriptor.trip_id', index=0, number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='route_id', full_name='transit_realtime.TripDescriptor.route_id', index=1, number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='direction_id', full_name='transit_realtime.TripDescriptor.direction_id', index=2, number=6, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='start_time', full_name='transit_realtime.TripDescriptor.start_time', index=3, number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='start_date', full_name='transit_realtime.TripDescriptor.start_date', index=4, number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='schedule_relationship', full_name='transit_realtime.TripDescriptor.schedule_relationship', index=5, number=4, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -1019,11 +1148,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=3386, - serialized_end=3695, + serialized_start=3699, + serialized_end=4032, ) @@ -1033,28 +1162,29 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='id', full_name='transit_realtime.VehicleDescriptor.id', index=0, number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='label', full_name='transit_realtime.VehicleDescriptor.label', index=1, number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='license_plate', full_name='transit_realtime.VehicleDescriptor.license_plate', index=2, number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -1064,11 +1194,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=3697, - serialized_end=3774, + serialized_start=4034, + serialized_end=4119, ) @@ -1078,42 +1208,50 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='agency_id', full_name='transit_realtime.EntitySelector.agency_id', index=0, number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='route_id', full_name='transit_realtime.EntitySelector.route_id', index=1, number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='route_type', full_name='transit_realtime.EntitySelector.route_type', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='trip', full_name='transit_realtime.EntitySelector.trip', index=3, number=4, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='stop_id', full_name='transit_realtime.EntitySelector.stop_id', index=4, number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='direction_id', full_name='transit_realtime.EntitySelector.direction_id', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -1123,11 +1261,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=3777, - serialized_end=3923, + serialized_start=4122, + serialized_end=4298, ) @@ -1137,21 +1275,22 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='text', full_name='transit_realtime.TranslatedString.Translation.text', index=0, number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='language', full_name='transit_realtime.TranslatedString.Translation.language', index=1, number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=_b("").decode('utf-8'), + has_default_value=False, default_value=b"".decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -1161,11 +1300,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=4015, - serialized_end=4068, + serialized_start=4390, + serialized_end=4451, ) _TRANSLATEDSTRING = _descriptor.Descriptor( @@ -1174,6 +1313,7 @@ filename=None, file=DESCRIPTOR, containing_type=None, + create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( name='translation', full_name='transit_realtime.TranslatedString.translation', index=0, @@ -1181,7 +1321,7 @@ has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -1191,11 +1331,11 @@ serialized_options=None, is_extendable=True, syntax='proto2', - extension_ranges=[(1000, 2000), ], + extension_ranges=[(1000, 2000), (9000, 10000), ], oneofs=[ ], - serialized_start=3926, - serialized_end=4076, + serialized_start=4301, + serialized_end=4467, ) _FEEDMESSAGE.fields_by_name['header'].message_type = _FEEDHEADER @@ -1211,9 +1351,11 @@ _TRIPUPDATE_STOPTIMEUPDATE.fields_by_name['schedule_relationship'].enum_type = _TRIPUPDATE_STOPTIMEUPDATE_SCHEDULERELATIONSHIP _TRIPUPDATE_STOPTIMEUPDATE.containing_type = _TRIPUPDATE _TRIPUPDATE_STOPTIMEUPDATE_SCHEDULERELATIONSHIP.containing_type = _TRIPUPDATE_STOPTIMEUPDATE +_TRIPUPDATE_TRIPPROPERTIES.containing_type = _TRIPUPDATE _TRIPUPDATE.fields_by_name['trip'].message_type = _TRIPDESCRIPTOR _TRIPUPDATE.fields_by_name['vehicle'].message_type = _VEHICLEDESCRIPTOR _TRIPUPDATE.fields_by_name['stop_time_update'].message_type = _TRIPUPDATE_STOPTIMEUPDATE +_TRIPUPDATE.fields_by_name['trip_properties'].message_type = _TRIPUPDATE_TRIPPROPERTIES _VEHICLEPOSITION.fields_by_name['trip'].message_type = _TRIPDESCRIPTOR _VEHICLEPOSITION.fields_by_name['vehicle'].message_type = _VEHICLEDESCRIPTOR _VEHICLEPOSITION.fields_by_name['position'].message_type = _POSITION @@ -1255,111 +1397,119 @@ DESCRIPTOR.message_types_by_name['TranslatedString'] = _TRANSLATEDSTRING _sym_db.RegisterFileDescriptor(DESCRIPTOR) -FeedMessage = _reflection.GeneratedProtocolMessageType('FeedMessage', (_message.Message,), dict( - DESCRIPTOR = _FEEDMESSAGE, - __module__ = 'gtfs_realtime_pb2' +FeedMessage = _reflection.GeneratedProtocolMessageType('FeedMessage', (_message.Message,), { + 'DESCRIPTOR' : _FEEDMESSAGE, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.FeedMessage) - )) + }) _sym_db.RegisterMessage(FeedMessage) -FeedHeader = _reflection.GeneratedProtocolMessageType('FeedHeader', (_message.Message,), dict( - DESCRIPTOR = _FEEDHEADER, - __module__ = 'gtfs_realtime_pb2' +FeedHeader = _reflection.GeneratedProtocolMessageType('FeedHeader', (_message.Message,), { + 'DESCRIPTOR' : _FEEDHEADER, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.FeedHeader) - )) + }) _sym_db.RegisterMessage(FeedHeader) -FeedEntity = _reflection.GeneratedProtocolMessageType('FeedEntity', (_message.Message,), dict( - DESCRIPTOR = _FEEDENTITY, - __module__ = 'gtfs_realtime_pb2' +FeedEntity = _reflection.GeneratedProtocolMessageType('FeedEntity', (_message.Message,), { + 'DESCRIPTOR' : _FEEDENTITY, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.FeedEntity) - )) + }) _sym_db.RegisterMessage(FeedEntity) -TripUpdate = _reflection.GeneratedProtocolMessageType('TripUpdate', (_message.Message,), dict( +TripUpdate = _reflection.GeneratedProtocolMessageType('TripUpdate', (_message.Message,), { - StopTimeEvent = _reflection.GeneratedProtocolMessageType('StopTimeEvent', (_message.Message,), dict( - DESCRIPTOR = _TRIPUPDATE_STOPTIMEEVENT, - __module__ = 'gtfs_realtime_pb2' + 'StopTimeEvent' : _reflection.GeneratedProtocolMessageType('StopTimeEvent', (_message.Message,), { + 'DESCRIPTOR' : _TRIPUPDATE_STOPTIMEEVENT, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.TripUpdate.StopTimeEvent) - )) + }) , - StopTimeUpdate = _reflection.GeneratedProtocolMessageType('StopTimeUpdate', (_message.Message,), dict( - DESCRIPTOR = _TRIPUPDATE_STOPTIMEUPDATE, - __module__ = 'gtfs_realtime_pb2' + 'StopTimeUpdate' : _reflection.GeneratedProtocolMessageType('StopTimeUpdate', (_message.Message,), { + 'DESCRIPTOR' : _TRIPUPDATE_STOPTIMEUPDATE, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.TripUpdate.StopTimeUpdate) - )) + }) + , + + 'TripProperties' : _reflection.GeneratedProtocolMessageType('TripProperties', (_message.Message,), { + 'DESCRIPTOR' : _TRIPUPDATE_TRIPPROPERTIES, + '__module__' : 'gtfs_realtime_pb2' + # @@protoc_insertion_point(class_scope:transit_realtime.TripUpdate.TripProperties) + }) , - DESCRIPTOR = _TRIPUPDATE, - __module__ = 'gtfs_realtime_pb2' + 'DESCRIPTOR' : _TRIPUPDATE, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.TripUpdate) - )) + }) _sym_db.RegisterMessage(TripUpdate) _sym_db.RegisterMessage(TripUpdate.StopTimeEvent) _sym_db.RegisterMessage(TripUpdate.StopTimeUpdate) +_sym_db.RegisterMessage(TripUpdate.TripProperties) -VehiclePosition = _reflection.GeneratedProtocolMessageType('VehiclePosition', (_message.Message,), dict( - DESCRIPTOR = _VEHICLEPOSITION, - __module__ = 'gtfs_realtime_pb2' +VehiclePosition = _reflection.GeneratedProtocolMessageType('VehiclePosition', (_message.Message,), { + 'DESCRIPTOR' : _VEHICLEPOSITION, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.VehiclePosition) - )) + }) _sym_db.RegisterMessage(VehiclePosition) -Alert = _reflection.GeneratedProtocolMessageType('Alert', (_message.Message,), dict( - DESCRIPTOR = _ALERT, - __module__ = 'gtfs_realtime_pb2' +Alert = _reflection.GeneratedProtocolMessageType('Alert', (_message.Message,), { + 'DESCRIPTOR' : _ALERT, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.Alert) - )) + }) _sym_db.RegisterMessage(Alert) -TimeRange = _reflection.GeneratedProtocolMessageType('TimeRange', (_message.Message,), dict( - DESCRIPTOR = _TIMERANGE, - __module__ = 'gtfs_realtime_pb2' +TimeRange = _reflection.GeneratedProtocolMessageType('TimeRange', (_message.Message,), { + 'DESCRIPTOR' : _TIMERANGE, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.TimeRange) - )) + }) _sym_db.RegisterMessage(TimeRange) -Position = _reflection.GeneratedProtocolMessageType('Position', (_message.Message,), dict( - DESCRIPTOR = _POSITION, - __module__ = 'gtfs_realtime_pb2' +Position = _reflection.GeneratedProtocolMessageType('Position', (_message.Message,), { + 'DESCRIPTOR' : _POSITION, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.Position) - )) + }) _sym_db.RegisterMessage(Position) -TripDescriptor = _reflection.GeneratedProtocolMessageType('TripDescriptor', (_message.Message,), dict( - DESCRIPTOR = _TRIPDESCRIPTOR, - __module__ = 'gtfs_realtime_pb2' +TripDescriptor = _reflection.GeneratedProtocolMessageType('TripDescriptor', (_message.Message,), { + 'DESCRIPTOR' : _TRIPDESCRIPTOR, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.TripDescriptor) - )) + }) _sym_db.RegisterMessage(TripDescriptor) -VehicleDescriptor = _reflection.GeneratedProtocolMessageType('VehicleDescriptor', (_message.Message,), dict( - DESCRIPTOR = _VEHICLEDESCRIPTOR, - __module__ = 'gtfs_realtime_pb2' +VehicleDescriptor = _reflection.GeneratedProtocolMessageType('VehicleDescriptor', (_message.Message,), { + 'DESCRIPTOR' : _VEHICLEDESCRIPTOR, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.VehicleDescriptor) - )) + }) _sym_db.RegisterMessage(VehicleDescriptor) -EntitySelector = _reflection.GeneratedProtocolMessageType('EntitySelector', (_message.Message,), dict( - DESCRIPTOR = _ENTITYSELECTOR, - __module__ = 'gtfs_realtime_pb2' +EntitySelector = _reflection.GeneratedProtocolMessageType('EntitySelector', (_message.Message,), { + 'DESCRIPTOR' : _ENTITYSELECTOR, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.EntitySelector) - )) + }) _sym_db.RegisterMessage(EntitySelector) -TranslatedString = _reflection.GeneratedProtocolMessageType('TranslatedString', (_message.Message,), dict( +TranslatedString = _reflection.GeneratedProtocolMessageType('TranslatedString', (_message.Message,), { - Translation = _reflection.GeneratedProtocolMessageType('Translation', (_message.Message,), dict( - DESCRIPTOR = _TRANSLATEDSTRING_TRANSLATION, - __module__ = 'gtfs_realtime_pb2' + 'Translation' : _reflection.GeneratedProtocolMessageType('Translation', (_message.Message,), { + 'DESCRIPTOR' : _TRANSLATEDSTRING_TRANSLATION, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.TranslatedString.Translation) - )) + }) , - DESCRIPTOR = _TRANSLATEDSTRING, - __module__ = 'gtfs_realtime_pb2' + 'DESCRIPTOR' : _TRANSLATEDSTRING, + '__module__' : 'gtfs_realtime_pb2' # @@protoc_insertion_point(class_scope:transit_realtime.TranslatedString) - )) + }) _sym_db.RegisterMessage(TranslatedString) _sym_db.RegisterMessage(TranslatedString.Translation) diff --git a/golang/gtfs/gtfs-realtime.pb.go b/golang/gtfs/gtfs-realtime.pb.go deleted file mode 100644 index c18e0e4..0000000 --- a/golang/gtfs/gtfs-realtime.pb.go +++ /dev/null @@ -1,2105 +0,0 @@ -/* -encoding: utf-8 - -Copyright 2015-2019 Google Inc., MobilityData - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: gtfs-realtime.proto - -package gtfs - -import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package - -// Determines whether the current fetch is incremental. Currently, -// DIFFERENTIAL mode is unsupported and behavior is unspecified for feeds -// that use this mode. There are discussions on the GTFS Realtime mailing -// list around fully specifying the behavior of DIFFERENTIAL mode and the -// documentation will be updated when those discussions are finalized. -type FeedHeader_Incrementality int32 - -const ( - FeedHeader_FULL_DATASET FeedHeader_Incrementality = 0 - FeedHeader_DIFFERENTIAL FeedHeader_Incrementality = 1 -) - -var FeedHeader_Incrementality_name = map[int32]string{ - 0: "FULL_DATASET", - 1: "DIFFERENTIAL", -} - -var FeedHeader_Incrementality_value = map[string]int32{ - "FULL_DATASET": 0, - "DIFFERENTIAL": 1, -} - -func (x FeedHeader_Incrementality) Enum() *FeedHeader_Incrementality { - p := new(FeedHeader_Incrementality) - *p = x - return p -} - -func (x FeedHeader_Incrementality) String() string { - return proto.EnumName(FeedHeader_Incrementality_name, int32(x)) -} - -func (x *FeedHeader_Incrementality) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FeedHeader_Incrementality_value, data, "FeedHeader_Incrementality") - if err != nil { - return err - } - *x = FeedHeader_Incrementality(value) - return nil -} - -func (FeedHeader_Incrementality) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{1, 0} -} - -// The relation between this StopTime and the static schedule. -type TripUpdate_StopTimeUpdate_ScheduleRelationship int32 - -const ( - // The vehicle is proceeding in accordance with its static schedule of - // stops, although not necessarily according to the times of the schedule. - // At least one of arrival and departure must be provided. If the schedule - // for this stop contains both arrival and departure times then so must - // this update. - TripUpdate_StopTimeUpdate_SCHEDULED TripUpdate_StopTimeUpdate_ScheduleRelationship = 0 - // The stop is skipped, i.e., the vehicle will not stop at this stop. - // Arrival and departure are optional. - TripUpdate_StopTimeUpdate_SKIPPED TripUpdate_StopTimeUpdate_ScheduleRelationship = 1 - // No data is given for this stop. The main intention for this value is to - // give the predictions only for part of a trip, i.e., if the last update - // for a trip has a NO_DATA specifier, then StopTimes for the rest of the - // stops in the trip are considered to be unspecified as well. - // Neither arrival nor departure should be supplied. - TripUpdate_StopTimeUpdate_NO_DATA TripUpdate_StopTimeUpdate_ScheduleRelationship = 2 -) - -var TripUpdate_StopTimeUpdate_ScheduleRelationship_name = map[int32]string{ - 0: "SCHEDULED", - 1: "SKIPPED", - 2: "NO_DATA", -} - -var TripUpdate_StopTimeUpdate_ScheduleRelationship_value = map[string]int32{ - "SCHEDULED": 0, - "SKIPPED": 1, - "NO_DATA": 2, -} - -func (x TripUpdate_StopTimeUpdate_ScheduleRelationship) Enum() *TripUpdate_StopTimeUpdate_ScheduleRelationship { - p := new(TripUpdate_StopTimeUpdate_ScheduleRelationship) - *p = x - return p -} - -func (x TripUpdate_StopTimeUpdate_ScheduleRelationship) String() string { - return proto.EnumName(TripUpdate_StopTimeUpdate_ScheduleRelationship_name, int32(x)) -} - -func (x *TripUpdate_StopTimeUpdate_ScheduleRelationship) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(TripUpdate_StopTimeUpdate_ScheduleRelationship_value, data, "TripUpdate_StopTimeUpdate_ScheduleRelationship") - if err != nil { - return err - } - *x = TripUpdate_StopTimeUpdate_ScheduleRelationship(value) - return nil -} - -func (TripUpdate_StopTimeUpdate_ScheduleRelationship) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{3, 1, 0} -} - -type VehiclePosition_VehicleStopStatus int32 - -const ( - // The vehicle is just about to arrive at the stop (on a stop - // display, the vehicle symbol typically flashes). - VehiclePosition_INCOMING_AT VehiclePosition_VehicleStopStatus = 0 - // The vehicle is standing at the stop. - VehiclePosition_STOPPED_AT VehiclePosition_VehicleStopStatus = 1 - // The vehicle has departed and is in transit to the next stop. - VehiclePosition_IN_TRANSIT_TO VehiclePosition_VehicleStopStatus = 2 -) - -var VehiclePosition_VehicleStopStatus_name = map[int32]string{ - 0: "INCOMING_AT", - 1: "STOPPED_AT", - 2: "IN_TRANSIT_TO", -} - -var VehiclePosition_VehicleStopStatus_value = map[string]int32{ - "INCOMING_AT": 0, - "STOPPED_AT": 1, - "IN_TRANSIT_TO": 2, -} - -func (x VehiclePosition_VehicleStopStatus) Enum() *VehiclePosition_VehicleStopStatus { - p := new(VehiclePosition_VehicleStopStatus) - *p = x - return p -} - -func (x VehiclePosition_VehicleStopStatus) String() string { - return proto.EnumName(VehiclePosition_VehicleStopStatus_name, int32(x)) -} - -func (x *VehiclePosition_VehicleStopStatus) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(VehiclePosition_VehicleStopStatus_value, data, "VehiclePosition_VehicleStopStatus") - if err != nil { - return err - } - *x = VehiclePosition_VehicleStopStatus(value) - return nil -} - -func (VehiclePosition_VehicleStopStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{4, 0} -} - -// Congestion level that is affecting this vehicle. -type VehiclePosition_CongestionLevel int32 - -const ( - VehiclePosition_UNKNOWN_CONGESTION_LEVEL VehiclePosition_CongestionLevel = 0 - VehiclePosition_RUNNING_SMOOTHLY VehiclePosition_CongestionLevel = 1 - VehiclePosition_STOP_AND_GO VehiclePosition_CongestionLevel = 2 - VehiclePosition_CONGESTION VehiclePosition_CongestionLevel = 3 - VehiclePosition_SEVERE_CONGESTION VehiclePosition_CongestionLevel = 4 -) - -var VehiclePosition_CongestionLevel_name = map[int32]string{ - 0: "UNKNOWN_CONGESTION_LEVEL", - 1: "RUNNING_SMOOTHLY", - 2: "STOP_AND_GO", - 3: "CONGESTION", - 4: "SEVERE_CONGESTION", -} - -var VehiclePosition_CongestionLevel_value = map[string]int32{ - "UNKNOWN_CONGESTION_LEVEL": 0, - "RUNNING_SMOOTHLY": 1, - "STOP_AND_GO": 2, - "CONGESTION": 3, - "SEVERE_CONGESTION": 4, -} - -func (x VehiclePosition_CongestionLevel) Enum() *VehiclePosition_CongestionLevel { - p := new(VehiclePosition_CongestionLevel) - *p = x - return p -} - -func (x VehiclePosition_CongestionLevel) String() string { - return proto.EnumName(VehiclePosition_CongestionLevel_name, int32(x)) -} - -func (x *VehiclePosition_CongestionLevel) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(VehiclePosition_CongestionLevel_value, data, "VehiclePosition_CongestionLevel") - if err != nil { - return err - } - *x = VehiclePosition_CongestionLevel(value) - return nil -} - -func (VehiclePosition_CongestionLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{4, 1} -} - -// The degree of passenger occupancy of the vehicle. This field is still -// experimental, and subject to change. It may be formally adopted in the -// future. -type VehiclePosition_OccupancyStatus int32 - -const ( - // The vehicle is considered empty by most measures, and has few or no - // passengers onboard, but is still accepting passengers. - VehiclePosition_EMPTY VehiclePosition_OccupancyStatus = 0 - // The vehicle has a relatively large percentage of seats available. - // What percentage of free seats out of the total seats available is to be - // considered large enough to fall into this category is determined at the - // discretion of the producer. - VehiclePosition_MANY_SEATS_AVAILABLE VehiclePosition_OccupancyStatus = 1 - // The vehicle has a relatively small percentage of seats available. - // What percentage of free seats out of the total seats available is to be - // considered small enough to fall into this category is determined at the - // discretion of the feed producer. - VehiclePosition_FEW_SEATS_AVAILABLE VehiclePosition_OccupancyStatus = 2 - // The vehicle can currently accommodate only standing passengers. - VehiclePosition_STANDING_ROOM_ONLY VehiclePosition_OccupancyStatus = 3 - // The vehicle can currently accommodate only standing passengers - // and has limited space for them. - VehiclePosition_CRUSHED_STANDING_ROOM_ONLY VehiclePosition_OccupancyStatus = 4 - // The vehicle is considered full by most measures, but may still be - // allowing passengers to board. - VehiclePosition_FULL VehiclePosition_OccupancyStatus = 5 - // The vehicle is not accepting additional passengers. - VehiclePosition_NOT_ACCEPTING_PASSENGERS VehiclePosition_OccupancyStatus = 6 -) - -var VehiclePosition_OccupancyStatus_name = map[int32]string{ - 0: "EMPTY", - 1: "MANY_SEATS_AVAILABLE", - 2: "FEW_SEATS_AVAILABLE", - 3: "STANDING_ROOM_ONLY", - 4: "CRUSHED_STANDING_ROOM_ONLY", - 5: "FULL", - 6: "NOT_ACCEPTING_PASSENGERS", -} - -var VehiclePosition_OccupancyStatus_value = map[string]int32{ - "EMPTY": 0, - "MANY_SEATS_AVAILABLE": 1, - "FEW_SEATS_AVAILABLE": 2, - "STANDING_ROOM_ONLY": 3, - "CRUSHED_STANDING_ROOM_ONLY": 4, - "FULL": 5, - "NOT_ACCEPTING_PASSENGERS": 6, -} - -func (x VehiclePosition_OccupancyStatus) Enum() *VehiclePosition_OccupancyStatus { - p := new(VehiclePosition_OccupancyStatus) - *p = x - return p -} - -func (x VehiclePosition_OccupancyStatus) String() string { - return proto.EnumName(VehiclePosition_OccupancyStatus_name, int32(x)) -} - -func (x *VehiclePosition_OccupancyStatus) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(VehiclePosition_OccupancyStatus_value, data, "VehiclePosition_OccupancyStatus") - if err != nil { - return err - } - *x = VehiclePosition_OccupancyStatus(value) - return nil -} - -func (VehiclePosition_OccupancyStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{4, 2} -} - -// Cause of this alert. -type Alert_Cause int32 - -const ( - Alert_UNKNOWN_CAUSE Alert_Cause = 1 - Alert_OTHER_CAUSE Alert_Cause = 2 - Alert_TECHNICAL_PROBLEM Alert_Cause = 3 - Alert_STRIKE Alert_Cause = 4 - Alert_DEMONSTRATION Alert_Cause = 5 - Alert_ACCIDENT Alert_Cause = 6 - Alert_HOLIDAY Alert_Cause = 7 - Alert_WEATHER Alert_Cause = 8 - Alert_MAINTENANCE Alert_Cause = 9 - Alert_CONSTRUCTION Alert_Cause = 10 - Alert_POLICE_ACTIVITY Alert_Cause = 11 - Alert_MEDICAL_EMERGENCY Alert_Cause = 12 -) - -var Alert_Cause_name = map[int32]string{ - 1: "UNKNOWN_CAUSE", - 2: "OTHER_CAUSE", - 3: "TECHNICAL_PROBLEM", - 4: "STRIKE", - 5: "DEMONSTRATION", - 6: "ACCIDENT", - 7: "HOLIDAY", - 8: "WEATHER", - 9: "MAINTENANCE", - 10: "CONSTRUCTION", - 11: "POLICE_ACTIVITY", - 12: "MEDICAL_EMERGENCY", -} - -var Alert_Cause_value = map[string]int32{ - "UNKNOWN_CAUSE": 1, - "OTHER_CAUSE": 2, - "TECHNICAL_PROBLEM": 3, - "STRIKE": 4, - "DEMONSTRATION": 5, - "ACCIDENT": 6, - "HOLIDAY": 7, - "WEATHER": 8, - "MAINTENANCE": 9, - "CONSTRUCTION": 10, - "POLICE_ACTIVITY": 11, - "MEDICAL_EMERGENCY": 12, -} - -func (x Alert_Cause) Enum() *Alert_Cause { - p := new(Alert_Cause) - *p = x - return p -} - -func (x Alert_Cause) String() string { - return proto.EnumName(Alert_Cause_name, int32(x)) -} - -func (x *Alert_Cause) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Alert_Cause_value, data, "Alert_Cause") - if err != nil { - return err - } - *x = Alert_Cause(value) - return nil -} - -func (Alert_Cause) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{5, 0} -} - -// What is the effect of this problem on the affected entity. -type Alert_Effect int32 - -const ( - Alert_NO_SERVICE Alert_Effect = 1 - Alert_REDUCED_SERVICE Alert_Effect = 2 - // We don't care about INsignificant delays: they are hard to detect, have - // little impact on the user, and would clutter the results as they are too - // frequent. - Alert_SIGNIFICANT_DELAYS Alert_Effect = 3 - Alert_DETOUR Alert_Effect = 4 - Alert_ADDITIONAL_SERVICE Alert_Effect = 5 - Alert_MODIFIED_SERVICE Alert_Effect = 6 - Alert_OTHER_EFFECT Alert_Effect = 7 - Alert_UNKNOWN_EFFECT Alert_Effect = 8 - Alert_STOP_MOVED Alert_Effect = 9 - Alert_NO_EFFECT Alert_Effect = 10 -) - -var Alert_Effect_name = map[int32]string{ - 1: "NO_SERVICE", - 2: "REDUCED_SERVICE", - 3: "SIGNIFICANT_DELAYS", - 4: "DETOUR", - 5: "ADDITIONAL_SERVICE", - 6: "MODIFIED_SERVICE", - 7: "OTHER_EFFECT", - 8: "UNKNOWN_EFFECT", - 9: "STOP_MOVED", - 10: "NO_EFFECT", -} - -var Alert_Effect_value = map[string]int32{ - "NO_SERVICE": 1, - "REDUCED_SERVICE": 2, - "SIGNIFICANT_DELAYS": 3, - "DETOUR": 4, - "ADDITIONAL_SERVICE": 5, - "MODIFIED_SERVICE": 6, - "OTHER_EFFECT": 7, - "UNKNOWN_EFFECT": 8, - "STOP_MOVED": 9, - "NO_EFFECT": 10, -} - -func (x Alert_Effect) Enum() *Alert_Effect { - p := new(Alert_Effect) - *p = x - return p -} - -func (x Alert_Effect) String() string { - return proto.EnumName(Alert_Effect_name, int32(x)) -} - -func (x *Alert_Effect) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Alert_Effect_value, data, "Alert_Effect") - if err != nil { - return err - } - *x = Alert_Effect(value) - return nil -} - -func (Alert_Effect) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{5, 1} -} - -// Severity of this alert. -// This field is still experimental, and subject to change. It may be formally adopted in the future. -type Alert_SeverityLevel int32 - -const ( - Alert_UNKNOWN_SEVERITY Alert_SeverityLevel = 1 - Alert_INFO Alert_SeverityLevel = 2 - Alert_WARNING Alert_SeverityLevel = 3 - Alert_SEVERE Alert_SeverityLevel = 4 -) - -var Alert_SeverityLevel_name = map[int32]string{ - 1: "UNKNOWN_SEVERITY", - 2: "INFO", - 3: "WARNING", - 4: "SEVERE", -} - -var Alert_SeverityLevel_value = map[string]int32{ - "UNKNOWN_SEVERITY": 1, - "INFO": 2, - "WARNING": 3, - "SEVERE": 4, -} - -func (x Alert_SeverityLevel) Enum() *Alert_SeverityLevel { - p := new(Alert_SeverityLevel) - *p = x - return p -} - -func (x Alert_SeverityLevel) String() string { - return proto.EnumName(Alert_SeverityLevel_name, int32(x)) -} - -func (x *Alert_SeverityLevel) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Alert_SeverityLevel_value, data, "Alert_SeverityLevel") - if err != nil { - return err - } - *x = Alert_SeverityLevel(value) - return nil -} - -func (Alert_SeverityLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{5, 2} -} - -// The relation between this trip and the static schedule. If a trip is done -// in accordance with temporary schedule, not reflected in GTFS, then it -// shouldn't be marked as SCHEDULED, but likely as ADDED. -type TripDescriptor_ScheduleRelationship int32 - -const ( - // Trip that is running in accordance with its GTFS schedule, or is close - // enough to the scheduled trip to be associated with it. - TripDescriptor_SCHEDULED TripDescriptor_ScheduleRelationship = 0 - // An extra trip that was added in addition to a running schedule, for - // example, to replace a broken vehicle or to respond to sudden passenger - // load. - TripDescriptor_ADDED TripDescriptor_ScheduleRelationship = 1 - // A trip that is running with no schedule associated to it, for example, if - // there is no schedule at all. - TripDescriptor_UNSCHEDULED TripDescriptor_ScheduleRelationship = 2 - // A trip that existed in the schedule but was removed. - TripDescriptor_CANCELED TripDescriptor_ScheduleRelationship = 3 - // Should not be used - for backwards-compatibility only. - TripDescriptor_REPLACEMENT TripDescriptor_ScheduleRelationship = 5 // Deprecated: Do not use. -) - -var TripDescriptor_ScheduleRelationship_name = map[int32]string{ - 0: "SCHEDULED", - 1: "ADDED", - 2: "UNSCHEDULED", - 3: "CANCELED", - 5: "REPLACEMENT", -} - -var TripDescriptor_ScheduleRelationship_value = map[string]int32{ - "SCHEDULED": 0, - "ADDED": 1, - "UNSCHEDULED": 2, - "CANCELED": 3, - "REPLACEMENT": 5, -} - -func (x TripDescriptor_ScheduleRelationship) Enum() *TripDescriptor_ScheduleRelationship { - p := new(TripDescriptor_ScheduleRelationship) - *p = x - return p -} - -func (x TripDescriptor_ScheduleRelationship) String() string { - return proto.EnumName(TripDescriptor_ScheduleRelationship_name, int32(x)) -} - -func (x *TripDescriptor_ScheduleRelationship) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(TripDescriptor_ScheduleRelationship_value, data, "TripDescriptor_ScheduleRelationship") - if err != nil { - return err - } - *x = TripDescriptor_ScheduleRelationship(value) - return nil -} - -func (TripDescriptor_ScheduleRelationship) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{8, 0} -} - -// The contents of a feed message. -// A feed is a continuous stream of feed messages. Each message in the stream is -// obtained as a response to an appropriate HTTP GET request. -// A realtime feed is always defined with relation to an existing GTFS feed. -// All the entity ids are resolved with respect to the GTFS feed. -// Note that "required" and "optional" as stated in this file refer to Protocol -// Buffer cardinality, not semantic cardinality. See reference.md at -// https://github.com/google/transit/tree/master/gtfs-realtime for field -// semantic cardinality. -type FeedMessage struct { - // Metadata about this feed and feed message. - Header *FeedHeader `protobuf:"bytes,1,req,name=header" json:"header,omitempty"` - // Contents of the feed. - Entity []*FeedEntity `protobuf:"bytes,2,rep,name=entity" json:"entity,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *FeedMessage) Reset() { *m = FeedMessage{} } -func (m *FeedMessage) String() string { return proto.CompactTextString(m) } -func (*FeedMessage) ProtoMessage() {} -func (*FeedMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{0} -} - -var extRange_FeedMessage = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*FeedMessage) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_FeedMessage -} - -func (m *FeedMessage) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FeedMessage.Unmarshal(m, b) -} -func (m *FeedMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FeedMessage.Marshal(b, m, deterministic) -} -func (m *FeedMessage) XXX_Merge(src proto.Message) { - xxx_messageInfo_FeedMessage.Merge(m, src) -} -func (m *FeedMessage) XXX_Size() int { - return xxx_messageInfo_FeedMessage.Size(m) -} -func (m *FeedMessage) XXX_DiscardUnknown() { - xxx_messageInfo_FeedMessage.DiscardUnknown(m) -} - -var xxx_messageInfo_FeedMessage proto.InternalMessageInfo - -func (m *FeedMessage) GetHeader() *FeedHeader { - if m != nil { - return m.Header - } - return nil -} - -func (m *FeedMessage) GetEntity() []*FeedEntity { - if m != nil { - return m.Entity - } - return nil -} - -// Metadata about a feed, included in feed messages. -type FeedHeader struct { - // Version of the feed specification. - // The current version is 2.0. Valid versions are "2.0", "1.0". - GtfsRealtimeVersion *string `protobuf:"bytes,1,req,name=gtfs_realtime_version,json=gtfsRealtimeVersion" json:"gtfs_realtime_version,omitempty"` - Incrementality *FeedHeader_Incrementality `protobuf:"varint,2,opt,name=incrementality,enum=transit_realtime.FeedHeader_Incrementality,def=0" json:"incrementality,omitempty"` - // This timestamp identifies the moment when the content of this feed has been - // created (in server time). In POSIX time (i.e., number of seconds since - // January 1st 1970 00:00:00 UTC). - Timestamp *uint64 `protobuf:"varint,3,opt,name=timestamp" json:"timestamp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *FeedHeader) Reset() { *m = FeedHeader{} } -func (m *FeedHeader) String() string { return proto.CompactTextString(m) } -func (*FeedHeader) ProtoMessage() {} -func (*FeedHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{1} -} - -var extRange_FeedHeader = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*FeedHeader) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_FeedHeader -} - -func (m *FeedHeader) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FeedHeader.Unmarshal(m, b) -} -func (m *FeedHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FeedHeader.Marshal(b, m, deterministic) -} -func (m *FeedHeader) XXX_Merge(src proto.Message) { - xxx_messageInfo_FeedHeader.Merge(m, src) -} -func (m *FeedHeader) XXX_Size() int { - return xxx_messageInfo_FeedHeader.Size(m) -} -func (m *FeedHeader) XXX_DiscardUnknown() { - xxx_messageInfo_FeedHeader.DiscardUnknown(m) -} - -var xxx_messageInfo_FeedHeader proto.InternalMessageInfo - -const Default_FeedHeader_Incrementality FeedHeader_Incrementality = FeedHeader_FULL_DATASET - -func (m *FeedHeader) GetGtfsRealtimeVersion() string { - if m != nil && m.GtfsRealtimeVersion != nil { - return *m.GtfsRealtimeVersion - } - return "" -} - -func (m *FeedHeader) GetIncrementality() FeedHeader_Incrementality { - if m != nil && m.Incrementality != nil { - return *m.Incrementality - } - return Default_FeedHeader_Incrementality -} - -func (m *FeedHeader) GetTimestamp() uint64 { - if m != nil && m.Timestamp != nil { - return *m.Timestamp - } - return 0 -} - -// A definition (or update) of an entity in the transit feed. -type FeedEntity struct { - // The ids are used only to provide incrementality support. The id should be - // unique within a FeedMessage. Consequent FeedMessages may contain - // FeedEntities with the same id. In case of a DIFFERENTIAL update the new - // FeedEntity with some id will replace the old FeedEntity with the same id - // (or delete it - see is_deleted below). - // The actual GTFS entities (e.g. stations, routes, trips) referenced by the - // feed must be specified by explicit selectors (see EntitySelector below for - // more info). - Id *string `protobuf:"bytes,1,req,name=id" json:"id,omitempty"` - // Whether this entity is to be deleted. Relevant only for incremental - // fetches. - IsDeleted *bool `protobuf:"varint,2,opt,name=is_deleted,json=isDeleted,def=0" json:"is_deleted,omitempty"` - // Data about the entity itself. Exactly one of the following fields must be - // present (unless the entity is being deleted). - TripUpdate *TripUpdate `protobuf:"bytes,3,opt,name=trip_update,json=tripUpdate" json:"trip_update,omitempty"` - Vehicle *VehiclePosition `protobuf:"bytes,4,opt,name=vehicle" json:"vehicle,omitempty"` - Alert *Alert `protobuf:"bytes,5,opt,name=alert" json:"alert,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *FeedEntity) Reset() { *m = FeedEntity{} } -func (m *FeedEntity) String() string { return proto.CompactTextString(m) } -func (*FeedEntity) ProtoMessage() {} -func (*FeedEntity) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{2} -} - -var extRange_FeedEntity = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*FeedEntity) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_FeedEntity -} - -func (m *FeedEntity) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FeedEntity.Unmarshal(m, b) -} -func (m *FeedEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FeedEntity.Marshal(b, m, deterministic) -} -func (m *FeedEntity) XXX_Merge(src proto.Message) { - xxx_messageInfo_FeedEntity.Merge(m, src) -} -func (m *FeedEntity) XXX_Size() int { - return xxx_messageInfo_FeedEntity.Size(m) -} -func (m *FeedEntity) XXX_DiscardUnknown() { - xxx_messageInfo_FeedEntity.DiscardUnknown(m) -} - -var xxx_messageInfo_FeedEntity proto.InternalMessageInfo - -const Default_FeedEntity_IsDeleted bool = false - -func (m *FeedEntity) GetId() string { - if m != nil && m.Id != nil { - return *m.Id - } - return "" -} - -func (m *FeedEntity) GetIsDeleted() bool { - if m != nil && m.IsDeleted != nil { - return *m.IsDeleted - } - return Default_FeedEntity_IsDeleted -} - -func (m *FeedEntity) GetTripUpdate() *TripUpdate { - if m != nil { - return m.TripUpdate - } - return nil -} - -func (m *FeedEntity) GetVehicle() *VehiclePosition { - if m != nil { - return m.Vehicle - } - return nil -} - -func (m *FeedEntity) GetAlert() *Alert { - if m != nil { - return m.Alert - } - return nil -} - -// Realtime update of the progress of a vehicle along a trip. -// Depending on the value of ScheduleRelationship, a TripUpdate can specify: -// - A trip that proceeds along the schedule. -// - A trip that proceeds along a route but has no fixed schedule. -// - A trip that have been added or removed with regard to schedule. -// -// The updates can be for future, predicted arrival/departure events, or for -// past events that already occurred. -// Normally, updates should get more precise and more certain (see -// uncertainty below) as the events gets closer to current time. -// Even if that is not possible, the information for past events should be -// precise and certain. In particular, if an update points to time in the past -// but its update's uncertainty is not 0, the client should conclude that the -// update is a (wrong) prediction and that the trip has not completed yet. -// -// Note that the update can describe a trip that is already completed. -// To this end, it is enough to provide an update for the last stop of the trip. -// If the time of that is in the past, the client will conclude from that that -// the whole trip is in the past (it is possible, although inconsequential, to -// also provide updates for preceding stops). -// This option is most relevant for a trip that has completed ahead of schedule, -// but according to the schedule, the trip is still proceeding at the current -// time. Removing the updates for this trip could make the client assume -// that the trip is still proceeding. -// Note that the feed provider is allowed, but not required, to purge past -// updates - this is one case where this would be practically useful. -type TripUpdate struct { - // The Trip that this message applies to. There can be at most one - // TripUpdate entity for each actual trip instance. - // If there is none, that means there is no prediction information available. - // It does *not* mean that the trip is progressing according to schedule. - Trip *TripDescriptor `protobuf:"bytes,1,req,name=trip" json:"trip,omitempty"` - // Additional information on the vehicle that is serving this trip. - Vehicle *VehicleDescriptor `protobuf:"bytes,3,opt,name=vehicle" json:"vehicle,omitempty"` - // Updates to StopTimes for the trip (both future, i.e., predictions, and in - // some cases, past ones, i.e., those that already happened). - // The updates must be sorted by stop_sequence, and apply for all the - // following stops of the trip up to the next specified one. - // - // Example 1: - // For a trip with 20 stops, a StopTimeUpdate with arrival delay and departure - // delay of 0 for stop_sequence of the current stop means that the trip is - // exactly on time. - // - // Example 2: - // For the same trip instance, 3 StopTimeUpdates are provided: - // - delay of 5 min for stop_sequence 3 - // - delay of 1 min for stop_sequence 8 - // - delay of unspecified duration for stop_sequence 10 - // This will be interpreted as: - // - stop_sequences 3,4,5,6,7 have delay of 5 min. - // - stop_sequences 8,9 have delay of 1 min. - // - stop_sequences 10,... have unknown delay. - StopTimeUpdate []*TripUpdate_StopTimeUpdate `protobuf:"bytes,2,rep,name=stop_time_update,json=stopTimeUpdate" json:"stop_time_update,omitempty"` - // Moment at which the vehicle's real-time progress was measured. In POSIX - // time (i.e., the number of seconds since January 1st 1970 00:00:00 UTC). - Timestamp *uint64 `protobuf:"varint,4,opt,name=timestamp" json:"timestamp,omitempty"` - // The current schedule deviation for the trip. Delay should only be - // specified when the prediction is given relative to some existing schedule - // in GTFS. - // - // Delay (in seconds) can be positive (meaning that the vehicle is late) or - // negative (meaning that the vehicle is ahead of schedule). Delay of 0 - // means that the vehicle is exactly on time. - // - // Delay information in StopTimeUpdates take precedent of trip-level delay - // information, such that trip-level delay is only propagated until the next - // stop along the trip with a StopTimeUpdate delay value specified. - // - // Feed providers are strongly encouraged to provide a TripUpdate.timestamp - // value indicating when the delay value was last updated, in order to - // evaluate the freshness of the data. - // - // NOTE: This field is still experimental, and subject to change. It may be - // formally adopted in the future. - Delay *int32 `protobuf:"varint,5,opt,name=delay" json:"delay,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *TripUpdate) Reset() { *m = TripUpdate{} } -func (m *TripUpdate) String() string { return proto.CompactTextString(m) } -func (*TripUpdate) ProtoMessage() {} -func (*TripUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{3} -} - -var extRange_TripUpdate = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*TripUpdate) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_TripUpdate -} - -func (m *TripUpdate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TripUpdate.Unmarshal(m, b) -} -func (m *TripUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TripUpdate.Marshal(b, m, deterministic) -} -func (m *TripUpdate) XXX_Merge(src proto.Message) { - xxx_messageInfo_TripUpdate.Merge(m, src) -} -func (m *TripUpdate) XXX_Size() int { - return xxx_messageInfo_TripUpdate.Size(m) -} -func (m *TripUpdate) XXX_DiscardUnknown() { - xxx_messageInfo_TripUpdate.DiscardUnknown(m) -} - -var xxx_messageInfo_TripUpdate proto.InternalMessageInfo - -func (m *TripUpdate) GetTrip() *TripDescriptor { - if m != nil { - return m.Trip - } - return nil -} - -func (m *TripUpdate) GetVehicle() *VehicleDescriptor { - if m != nil { - return m.Vehicle - } - return nil -} - -func (m *TripUpdate) GetStopTimeUpdate() []*TripUpdate_StopTimeUpdate { - if m != nil { - return m.StopTimeUpdate - } - return nil -} - -func (m *TripUpdate) GetTimestamp() uint64 { - if m != nil && m.Timestamp != nil { - return *m.Timestamp - } - return 0 -} - -func (m *TripUpdate) GetDelay() int32 { - if m != nil && m.Delay != nil { - return *m.Delay - } - return 0 -} - -// Timing information for a single predicted event (either arrival or -// departure). -// Timing consists of delay and/or estimated time, and uncertainty. -// - delay should be used when the prediction is given relative to some -// existing schedule in GTFS. -// - time should be given whether there is a predicted schedule or not. If -// both time and delay are specified, time will take precedence -// (although normally, time, if given for a scheduled trip, should be -// equal to scheduled time in GTFS + delay). -// -// Uncertainty applies equally to both time and delay. -// The uncertainty roughly specifies the expected error in true delay (but -// note, we don't yet define its precise statistical meaning). It's possible -// for the uncertainty to be 0, for example for trains that are driven under -// computer timing control. -type TripUpdate_StopTimeEvent struct { - // Delay (in seconds) can be positive (meaning that the vehicle is late) or - // negative (meaning that the vehicle is ahead of schedule). Delay of 0 - // means that the vehicle is exactly on time. - Delay *int32 `protobuf:"varint,1,opt,name=delay" json:"delay,omitempty"` - // Event as absolute time. - // In Unix time (i.e., number of seconds since January 1st 1970 00:00:00 - // UTC). - Time *int64 `protobuf:"varint,2,opt,name=time" json:"time,omitempty"` - // If uncertainty is omitted, it is interpreted as unknown. - // If the prediction is unknown or too uncertain, the delay (or time) field - // should be empty. In such case, the uncertainty field is ignored. - // To specify a completely certain prediction, set its uncertainty to 0. - Uncertainty *int32 `protobuf:"varint,3,opt,name=uncertainty" json:"uncertainty,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *TripUpdate_StopTimeEvent) Reset() { *m = TripUpdate_StopTimeEvent{} } -func (m *TripUpdate_StopTimeEvent) String() string { return proto.CompactTextString(m) } -func (*TripUpdate_StopTimeEvent) ProtoMessage() {} -func (*TripUpdate_StopTimeEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{3, 0} -} - -var extRange_TripUpdate_StopTimeEvent = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*TripUpdate_StopTimeEvent) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_TripUpdate_StopTimeEvent -} - -func (m *TripUpdate_StopTimeEvent) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TripUpdate_StopTimeEvent.Unmarshal(m, b) -} -func (m *TripUpdate_StopTimeEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TripUpdate_StopTimeEvent.Marshal(b, m, deterministic) -} -func (m *TripUpdate_StopTimeEvent) XXX_Merge(src proto.Message) { - xxx_messageInfo_TripUpdate_StopTimeEvent.Merge(m, src) -} -func (m *TripUpdate_StopTimeEvent) XXX_Size() int { - return xxx_messageInfo_TripUpdate_StopTimeEvent.Size(m) -} -func (m *TripUpdate_StopTimeEvent) XXX_DiscardUnknown() { - xxx_messageInfo_TripUpdate_StopTimeEvent.DiscardUnknown(m) -} - -var xxx_messageInfo_TripUpdate_StopTimeEvent proto.InternalMessageInfo - -func (m *TripUpdate_StopTimeEvent) GetDelay() int32 { - if m != nil && m.Delay != nil { - return *m.Delay - } - return 0 -} - -func (m *TripUpdate_StopTimeEvent) GetTime() int64 { - if m != nil && m.Time != nil { - return *m.Time - } - return 0 -} - -func (m *TripUpdate_StopTimeEvent) GetUncertainty() int32 { - if m != nil && m.Uncertainty != nil { - return *m.Uncertainty - } - return 0 -} - -// Realtime update for arrival and/or departure events for a given stop on a -// trip. Updates can be supplied for both past and future events. -// The producer is allowed, although not required, to drop past events. -type TripUpdate_StopTimeUpdate struct { - // Must be the same as in stop_times.txt in the corresponding GTFS feed. - StopSequence *uint32 `protobuf:"varint,1,opt,name=stop_sequence,json=stopSequence" json:"stop_sequence,omitempty"` - // Must be the same as in stops.txt in the corresponding GTFS feed. - StopId *string `protobuf:"bytes,4,opt,name=stop_id,json=stopId" json:"stop_id,omitempty"` - Arrival *TripUpdate_StopTimeEvent `protobuf:"bytes,2,opt,name=arrival" json:"arrival,omitempty"` - Departure *TripUpdate_StopTimeEvent `protobuf:"bytes,3,opt,name=departure" json:"departure,omitempty"` - ScheduleRelationship *TripUpdate_StopTimeUpdate_ScheduleRelationship `protobuf:"varint,5,opt,name=schedule_relationship,json=scheduleRelationship,enum=transit_realtime.TripUpdate_StopTimeUpdate_ScheduleRelationship,def=0" json:"schedule_relationship,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *TripUpdate_StopTimeUpdate) Reset() { *m = TripUpdate_StopTimeUpdate{} } -func (m *TripUpdate_StopTimeUpdate) String() string { return proto.CompactTextString(m) } -func (*TripUpdate_StopTimeUpdate) ProtoMessage() {} -func (*TripUpdate_StopTimeUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{3, 1} -} - -var extRange_TripUpdate_StopTimeUpdate = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*TripUpdate_StopTimeUpdate) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_TripUpdate_StopTimeUpdate -} - -func (m *TripUpdate_StopTimeUpdate) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TripUpdate_StopTimeUpdate.Unmarshal(m, b) -} -func (m *TripUpdate_StopTimeUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TripUpdate_StopTimeUpdate.Marshal(b, m, deterministic) -} -func (m *TripUpdate_StopTimeUpdate) XXX_Merge(src proto.Message) { - xxx_messageInfo_TripUpdate_StopTimeUpdate.Merge(m, src) -} -func (m *TripUpdate_StopTimeUpdate) XXX_Size() int { - return xxx_messageInfo_TripUpdate_StopTimeUpdate.Size(m) -} -func (m *TripUpdate_StopTimeUpdate) XXX_DiscardUnknown() { - xxx_messageInfo_TripUpdate_StopTimeUpdate.DiscardUnknown(m) -} - -var xxx_messageInfo_TripUpdate_StopTimeUpdate proto.InternalMessageInfo - -const Default_TripUpdate_StopTimeUpdate_ScheduleRelationship TripUpdate_StopTimeUpdate_ScheduleRelationship = TripUpdate_StopTimeUpdate_SCHEDULED - -func (m *TripUpdate_StopTimeUpdate) GetStopSequence() uint32 { - if m != nil && m.StopSequence != nil { - return *m.StopSequence - } - return 0 -} - -func (m *TripUpdate_StopTimeUpdate) GetStopId() string { - if m != nil && m.StopId != nil { - return *m.StopId - } - return "" -} - -func (m *TripUpdate_StopTimeUpdate) GetArrival() *TripUpdate_StopTimeEvent { - if m != nil { - return m.Arrival - } - return nil -} - -func (m *TripUpdate_StopTimeUpdate) GetDeparture() *TripUpdate_StopTimeEvent { - if m != nil { - return m.Departure - } - return nil -} - -func (m *TripUpdate_StopTimeUpdate) GetScheduleRelationship() TripUpdate_StopTimeUpdate_ScheduleRelationship { - if m != nil && m.ScheduleRelationship != nil { - return *m.ScheduleRelationship - } - return Default_TripUpdate_StopTimeUpdate_ScheduleRelationship -} - -// Realtime positioning information for a given vehicle. -type VehiclePosition struct { - // The Trip that this vehicle is serving. - // Can be empty or partial if the vehicle can not be identified with a given - // trip instance. - Trip *TripDescriptor `protobuf:"bytes,1,opt,name=trip" json:"trip,omitempty"` - // Additional information on the vehicle that is serving this trip. - Vehicle *VehicleDescriptor `protobuf:"bytes,8,opt,name=vehicle" json:"vehicle,omitempty"` - // Current position of this vehicle. - Position *Position `protobuf:"bytes,2,opt,name=position" json:"position,omitempty"` - // The stop sequence index of the current stop. The meaning of - // current_stop_sequence (i.e., the stop that it refers to) is determined by - // current_status. - // If current_status is missing IN_TRANSIT_TO is assumed. - CurrentStopSequence *uint32 `protobuf:"varint,3,opt,name=current_stop_sequence,json=currentStopSequence" json:"current_stop_sequence,omitempty"` - // Identifies the current stop. The value must be the same as in stops.txt in - // the corresponding GTFS feed. - StopId *string `protobuf:"bytes,7,opt,name=stop_id,json=stopId" json:"stop_id,omitempty"` - // The exact status of the vehicle with respect to the current stop. - // Ignored if current_stop_sequence is missing. - CurrentStatus *VehiclePosition_VehicleStopStatus `protobuf:"varint,4,opt,name=current_status,json=currentStatus,enum=transit_realtime.VehiclePosition_VehicleStopStatus,def=2" json:"current_status,omitempty"` - // Moment at which the vehicle's position was measured. In POSIX time - // (i.e., number of seconds since January 1st 1970 00:00:00 UTC). - Timestamp *uint64 `protobuf:"varint,5,opt,name=timestamp" json:"timestamp,omitempty"` - CongestionLevel *VehiclePosition_CongestionLevel `protobuf:"varint,6,opt,name=congestion_level,json=congestionLevel,enum=transit_realtime.VehiclePosition_CongestionLevel" json:"congestion_level,omitempty"` - OccupancyStatus *VehiclePosition_OccupancyStatus `protobuf:"varint,9,opt,name=occupancy_status,json=occupancyStatus,enum=transit_realtime.VehiclePosition_OccupancyStatus" json:"occupancy_status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *VehiclePosition) Reset() { *m = VehiclePosition{} } -func (m *VehiclePosition) String() string { return proto.CompactTextString(m) } -func (*VehiclePosition) ProtoMessage() {} -func (*VehiclePosition) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{4} -} - -var extRange_VehiclePosition = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*VehiclePosition) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_VehiclePosition -} - -func (m *VehiclePosition) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_VehiclePosition.Unmarshal(m, b) -} -func (m *VehiclePosition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_VehiclePosition.Marshal(b, m, deterministic) -} -func (m *VehiclePosition) XXX_Merge(src proto.Message) { - xxx_messageInfo_VehiclePosition.Merge(m, src) -} -func (m *VehiclePosition) XXX_Size() int { - return xxx_messageInfo_VehiclePosition.Size(m) -} -func (m *VehiclePosition) XXX_DiscardUnknown() { - xxx_messageInfo_VehiclePosition.DiscardUnknown(m) -} - -var xxx_messageInfo_VehiclePosition proto.InternalMessageInfo - -const Default_VehiclePosition_CurrentStatus VehiclePosition_VehicleStopStatus = VehiclePosition_IN_TRANSIT_TO - -func (m *VehiclePosition) GetTrip() *TripDescriptor { - if m != nil { - return m.Trip - } - return nil -} - -func (m *VehiclePosition) GetVehicle() *VehicleDescriptor { - if m != nil { - return m.Vehicle - } - return nil -} - -func (m *VehiclePosition) GetPosition() *Position { - if m != nil { - return m.Position - } - return nil -} - -func (m *VehiclePosition) GetCurrentStopSequence() uint32 { - if m != nil && m.CurrentStopSequence != nil { - return *m.CurrentStopSequence - } - return 0 -} - -func (m *VehiclePosition) GetStopId() string { - if m != nil && m.StopId != nil { - return *m.StopId - } - return "" -} - -func (m *VehiclePosition) GetCurrentStatus() VehiclePosition_VehicleStopStatus { - if m != nil && m.CurrentStatus != nil { - return *m.CurrentStatus - } - return Default_VehiclePosition_CurrentStatus -} - -func (m *VehiclePosition) GetTimestamp() uint64 { - if m != nil && m.Timestamp != nil { - return *m.Timestamp - } - return 0 -} - -func (m *VehiclePosition) GetCongestionLevel() VehiclePosition_CongestionLevel { - if m != nil && m.CongestionLevel != nil { - return *m.CongestionLevel - } - return VehiclePosition_UNKNOWN_CONGESTION_LEVEL -} - -func (m *VehiclePosition) GetOccupancyStatus() VehiclePosition_OccupancyStatus { - if m != nil && m.OccupancyStatus != nil { - return *m.OccupancyStatus - } - return VehiclePosition_EMPTY -} - -// An alert, indicating some sort of incident in the public transit network. -type Alert struct { - // Time when the alert should be shown to the user. If missing, the - // alert will be shown as long as it appears in the feed. - // If multiple ranges are given, the alert will be shown during all of them. - ActivePeriod []*TimeRange `protobuf:"bytes,1,rep,name=active_period,json=activePeriod" json:"active_period,omitempty"` - // Entities whose users we should notify of this alert. - InformedEntity []*EntitySelector `protobuf:"bytes,5,rep,name=informed_entity,json=informedEntity" json:"informed_entity,omitempty"` - Cause *Alert_Cause `protobuf:"varint,6,opt,name=cause,enum=transit_realtime.Alert_Cause,def=1" json:"cause,omitempty"` - Effect *Alert_Effect `protobuf:"varint,7,opt,name=effect,enum=transit_realtime.Alert_Effect,def=8" json:"effect,omitempty"` - // The URL which provides additional information about the alert. - Url *TranslatedString `protobuf:"bytes,8,opt,name=url" json:"url,omitempty"` - // Alert header. Contains a short summary of the alert text as plain-text. - HeaderText *TranslatedString `protobuf:"bytes,10,opt,name=header_text,json=headerText" json:"header_text,omitempty"` - // Full description for the alert as plain-text. The information in the - // description should add to the information of the header. - DescriptionText *TranslatedString `protobuf:"bytes,11,opt,name=description_text,json=descriptionText" json:"description_text,omitempty"` - // Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text. - // This field is still experimental, and subject to change. It may be formally adopted in the future. - TtsHeaderText *TranslatedString `protobuf:"bytes,12,opt,name=tts_header_text,json=ttsHeaderText" json:"tts_header_text,omitempty"` - // Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text. - // This field is still experimental, and subject to change. It may be formally adopted in the future. - TtsDescriptionText *TranslatedString `protobuf:"bytes,13,opt,name=tts_description_text,json=ttsDescriptionText" json:"tts_description_text,omitempty"` - SeverityLevel *Alert_SeverityLevel `protobuf:"varint,14,opt,name=severity_level,json=severityLevel,enum=transit_realtime.Alert_SeverityLevel,def=1" json:"severity_level,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Alert) Reset() { *m = Alert{} } -func (m *Alert) String() string { return proto.CompactTextString(m) } -func (*Alert) ProtoMessage() {} -func (*Alert) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{5} -} - -var extRange_Alert = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*Alert) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_Alert -} - -func (m *Alert) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Alert.Unmarshal(m, b) -} -func (m *Alert) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Alert.Marshal(b, m, deterministic) -} -func (m *Alert) XXX_Merge(src proto.Message) { - xxx_messageInfo_Alert.Merge(m, src) -} -func (m *Alert) XXX_Size() int { - return xxx_messageInfo_Alert.Size(m) -} -func (m *Alert) XXX_DiscardUnknown() { - xxx_messageInfo_Alert.DiscardUnknown(m) -} - -var xxx_messageInfo_Alert proto.InternalMessageInfo - -const Default_Alert_Cause Alert_Cause = Alert_UNKNOWN_CAUSE -const Default_Alert_Effect Alert_Effect = Alert_UNKNOWN_EFFECT -const Default_Alert_SeverityLevel Alert_SeverityLevel = Alert_UNKNOWN_SEVERITY - -func (m *Alert) GetActivePeriod() []*TimeRange { - if m != nil { - return m.ActivePeriod - } - return nil -} - -func (m *Alert) GetInformedEntity() []*EntitySelector { - if m != nil { - return m.InformedEntity - } - return nil -} - -func (m *Alert) GetCause() Alert_Cause { - if m != nil && m.Cause != nil { - return *m.Cause - } - return Default_Alert_Cause -} - -func (m *Alert) GetEffect() Alert_Effect { - if m != nil && m.Effect != nil { - return *m.Effect - } - return Default_Alert_Effect -} - -func (m *Alert) GetUrl() *TranslatedString { - if m != nil { - return m.Url - } - return nil -} - -func (m *Alert) GetHeaderText() *TranslatedString { - if m != nil { - return m.HeaderText - } - return nil -} - -func (m *Alert) GetDescriptionText() *TranslatedString { - if m != nil { - return m.DescriptionText - } - return nil -} - -func (m *Alert) GetTtsHeaderText() *TranslatedString { - if m != nil { - return m.TtsHeaderText - } - return nil -} - -func (m *Alert) GetTtsDescriptionText() *TranslatedString { - if m != nil { - return m.TtsDescriptionText - } - return nil -} - -func (m *Alert) GetSeverityLevel() Alert_SeverityLevel { - if m != nil && m.SeverityLevel != nil { - return *m.SeverityLevel - } - return Default_Alert_SeverityLevel -} - -// A time interval. The interval is considered active at time 't' if 't' is -// greater than or equal to the start time and less than the end time. -type TimeRange struct { - // Start time, in POSIX time (i.e., number of seconds since January 1st 1970 - // 00:00:00 UTC). - // If missing, the interval starts at minus infinity. - Start *uint64 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` - // End time, in POSIX time (i.e., number of seconds since January 1st 1970 - // 00:00:00 UTC). - // If missing, the interval ends at plus infinity. - End *uint64 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *TimeRange) Reset() { *m = TimeRange{} } -func (m *TimeRange) String() string { return proto.CompactTextString(m) } -func (*TimeRange) ProtoMessage() {} -func (*TimeRange) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{6} -} - -var extRange_TimeRange = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*TimeRange) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_TimeRange -} - -func (m *TimeRange) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TimeRange.Unmarshal(m, b) -} -func (m *TimeRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TimeRange.Marshal(b, m, deterministic) -} -func (m *TimeRange) XXX_Merge(src proto.Message) { - xxx_messageInfo_TimeRange.Merge(m, src) -} -func (m *TimeRange) XXX_Size() int { - return xxx_messageInfo_TimeRange.Size(m) -} -func (m *TimeRange) XXX_DiscardUnknown() { - xxx_messageInfo_TimeRange.DiscardUnknown(m) -} - -var xxx_messageInfo_TimeRange proto.InternalMessageInfo - -func (m *TimeRange) GetStart() uint64 { - if m != nil && m.Start != nil { - return *m.Start - } - return 0 -} - -func (m *TimeRange) GetEnd() uint64 { - if m != nil && m.End != nil { - return *m.End - } - return 0 -} - -// A position. -type Position struct { - // Degrees North, in the WGS-84 coordinate system. - Latitude *float32 `protobuf:"fixed32,1,req,name=latitude" json:"latitude,omitempty"` - // Degrees East, in the WGS-84 coordinate system. - Longitude *float32 `protobuf:"fixed32,2,req,name=longitude" json:"longitude,omitempty"` - // Bearing, in degrees, clockwise from North, i.e., 0 is North and 90 is East. - // This can be the compass bearing, or the direction towards the next stop - // or intermediate location. - // This should not be direction deduced from the sequence of previous - // positions, which can be computed from previous data. - Bearing *float32 `protobuf:"fixed32,3,opt,name=bearing" json:"bearing,omitempty"` - // Odometer value, in meters. - Odometer *float64 `protobuf:"fixed64,4,opt,name=odometer" json:"odometer,omitempty"` - // Momentary speed measured by the vehicle, in meters per second. - Speed *float32 `protobuf:"fixed32,5,opt,name=speed" json:"speed,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Position) Reset() { *m = Position{} } -func (m *Position) String() string { return proto.CompactTextString(m) } -func (*Position) ProtoMessage() {} -func (*Position) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{7} -} - -var extRange_Position = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*Position) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_Position -} - -func (m *Position) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Position.Unmarshal(m, b) -} -func (m *Position) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Position.Marshal(b, m, deterministic) -} -func (m *Position) XXX_Merge(src proto.Message) { - xxx_messageInfo_Position.Merge(m, src) -} -func (m *Position) XXX_Size() int { - return xxx_messageInfo_Position.Size(m) -} -func (m *Position) XXX_DiscardUnknown() { - xxx_messageInfo_Position.DiscardUnknown(m) -} - -var xxx_messageInfo_Position proto.InternalMessageInfo - -func (m *Position) GetLatitude() float32 { - if m != nil && m.Latitude != nil { - return *m.Latitude - } - return 0 -} - -func (m *Position) GetLongitude() float32 { - if m != nil && m.Longitude != nil { - return *m.Longitude - } - return 0 -} - -func (m *Position) GetBearing() float32 { - if m != nil && m.Bearing != nil { - return *m.Bearing - } - return 0 -} - -func (m *Position) GetOdometer() float64 { - if m != nil && m.Odometer != nil { - return *m.Odometer - } - return 0 -} - -func (m *Position) GetSpeed() float32 { - if m != nil && m.Speed != nil { - return *m.Speed - } - return 0 -} - -// A descriptor that identifies an instance of a GTFS trip, or all instances of -// a trip along a route. -// - To specify a single trip instance, the trip_id (and if necessary, -// start_time) is set. If route_id is also set, then it should be same as one -// that the given trip corresponds to. -// - To specify all the trips along a given route, only the route_id should be -// set. Note that if the trip_id is not known, then stop sequence ids in -// TripUpdate are not sufficient, and stop_ids must be provided as well. In -// addition, absolute arrival/departure times must be provided. -type TripDescriptor struct { - // The trip_id from the GTFS feed that this selector refers to. - // For non frequency-based trips, this field is enough to uniquely identify - // the trip. For frequency-based trip, start_time and start_date might also be - // necessary. - TripId *string `protobuf:"bytes,1,opt,name=trip_id,json=tripId" json:"trip_id,omitempty"` - // The route_id from the GTFS that this selector refers to. - RouteId *string `protobuf:"bytes,5,opt,name=route_id,json=routeId" json:"route_id,omitempty"` - // The direction_id from the GTFS feed trips.txt file, indicating the - // direction of travel for trips this selector refers to. This field is - // still experimental, and subject to change. It may be formally adopted in - // the future. - DirectionId *uint32 `protobuf:"varint,6,opt,name=direction_id,json=directionId" json:"direction_id,omitempty"` - // The initially scheduled start time of this trip instance. - // When the trip_id corresponds to a non-frequency-based trip, this field - // should either be omitted or be equal to the value in the GTFS feed. When - // the trip_id correponds to a frequency-based trip, the start_time must be - // specified for trip updates and vehicle positions. If the trip corresponds - // to exact_times=1 GTFS record, then start_time must be some multiple - // (including zero) of headway_secs later than frequencies.txt start_time for - // the corresponding time period. If the trip corresponds to exact_times=0, - // then its start_time may be arbitrary, and is initially expected to be the - // first departure of the trip. Once established, the start_time of this - // frequency-based trip should be considered immutable, even if the first - // departure time changes -- that time change may instead be reflected in a - // StopTimeUpdate. - // Format and semantics of the field is same as that of - // GTFS/frequencies.txt/start_time, e.g., 11:15:35 or 25:15:35. - StartTime *string `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"` - // The scheduled start date of this trip instance. - // Must be provided to disambiguate trips that are so late as to collide with - // a scheduled trip on a next day. For example, for a train that departs 8:00 - // and 20:00 every day, and is 12 hours late, there would be two distinct - // trips on the same time. - // This field can be provided but is not mandatory for schedules in which such - // collisions are impossible - for example, a service running on hourly - // schedule where a vehicle that is one hour late is not considered to be - // related to schedule anymore. - // In YYYYMMDD format. - StartDate *string `protobuf:"bytes,3,opt,name=start_date,json=startDate" json:"start_date,omitempty"` - ScheduleRelationship *TripDescriptor_ScheduleRelationship `protobuf:"varint,4,opt,name=schedule_relationship,json=scheduleRelationship,enum=transit_realtime.TripDescriptor_ScheduleRelationship" json:"schedule_relationship,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *TripDescriptor) Reset() { *m = TripDescriptor{} } -func (m *TripDescriptor) String() string { return proto.CompactTextString(m) } -func (*TripDescriptor) ProtoMessage() {} -func (*TripDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{8} -} - -var extRange_TripDescriptor = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*TripDescriptor) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_TripDescriptor -} - -func (m *TripDescriptor) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TripDescriptor.Unmarshal(m, b) -} -func (m *TripDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TripDescriptor.Marshal(b, m, deterministic) -} -func (m *TripDescriptor) XXX_Merge(src proto.Message) { - xxx_messageInfo_TripDescriptor.Merge(m, src) -} -func (m *TripDescriptor) XXX_Size() int { - return xxx_messageInfo_TripDescriptor.Size(m) -} -func (m *TripDescriptor) XXX_DiscardUnknown() { - xxx_messageInfo_TripDescriptor.DiscardUnknown(m) -} - -var xxx_messageInfo_TripDescriptor proto.InternalMessageInfo - -func (m *TripDescriptor) GetTripId() string { - if m != nil && m.TripId != nil { - return *m.TripId - } - return "" -} - -func (m *TripDescriptor) GetRouteId() string { - if m != nil && m.RouteId != nil { - return *m.RouteId - } - return "" -} - -func (m *TripDescriptor) GetDirectionId() uint32 { - if m != nil && m.DirectionId != nil { - return *m.DirectionId - } - return 0 -} - -func (m *TripDescriptor) GetStartTime() string { - if m != nil && m.StartTime != nil { - return *m.StartTime - } - return "" -} - -func (m *TripDescriptor) GetStartDate() string { - if m != nil && m.StartDate != nil { - return *m.StartDate - } - return "" -} - -func (m *TripDescriptor) GetScheduleRelationship() TripDescriptor_ScheduleRelationship { - if m != nil && m.ScheduleRelationship != nil { - return *m.ScheduleRelationship - } - return TripDescriptor_SCHEDULED -} - -// Identification information for the vehicle performing the trip. -type VehicleDescriptor struct { - // Internal system identification of the vehicle. Should be unique per - // vehicle, and can be used for tracking the vehicle as it proceeds through - // the system. - Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - // User visible label, i.e., something that must be shown to the passenger to - // help identify the correct vehicle. - Label *string `protobuf:"bytes,2,opt,name=label" json:"label,omitempty"` - // The license plate of the vehicle. - LicensePlate *string `protobuf:"bytes,3,opt,name=license_plate,json=licensePlate" json:"license_plate,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *VehicleDescriptor) Reset() { *m = VehicleDescriptor{} } -func (m *VehicleDescriptor) String() string { return proto.CompactTextString(m) } -func (*VehicleDescriptor) ProtoMessage() {} -func (*VehicleDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{9} -} - -var extRange_VehicleDescriptor = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*VehicleDescriptor) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_VehicleDescriptor -} - -func (m *VehicleDescriptor) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_VehicleDescriptor.Unmarshal(m, b) -} -func (m *VehicleDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_VehicleDescriptor.Marshal(b, m, deterministic) -} -func (m *VehicleDescriptor) XXX_Merge(src proto.Message) { - xxx_messageInfo_VehicleDescriptor.Merge(m, src) -} -func (m *VehicleDescriptor) XXX_Size() int { - return xxx_messageInfo_VehicleDescriptor.Size(m) -} -func (m *VehicleDescriptor) XXX_DiscardUnknown() { - xxx_messageInfo_VehicleDescriptor.DiscardUnknown(m) -} - -var xxx_messageInfo_VehicleDescriptor proto.InternalMessageInfo - -func (m *VehicleDescriptor) GetId() string { - if m != nil && m.Id != nil { - return *m.Id - } - return "" -} - -func (m *VehicleDescriptor) GetLabel() string { - if m != nil && m.Label != nil { - return *m.Label - } - return "" -} - -func (m *VehicleDescriptor) GetLicensePlate() string { - if m != nil && m.LicensePlate != nil { - return *m.LicensePlate - } - return "" -} - -// A selector for an entity in a GTFS feed. -type EntitySelector struct { - // The values of the fields should correspond to the appropriate fields in the - // GTFS feed. - // At least one specifier must be given. If several are given, then the - // matching has to apply to all the given specifiers. - AgencyId *string `protobuf:"bytes,1,opt,name=agency_id,json=agencyId" json:"agency_id,omitempty"` - RouteId *string `protobuf:"bytes,2,opt,name=route_id,json=routeId" json:"route_id,omitempty"` - // corresponds to route_type in GTFS. - RouteType *int32 `protobuf:"varint,3,opt,name=route_type,json=routeType" json:"route_type,omitempty"` - Trip *TripDescriptor `protobuf:"bytes,4,opt,name=trip" json:"trip,omitempty"` - StopId *string `protobuf:"bytes,5,opt,name=stop_id,json=stopId" json:"stop_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *EntitySelector) Reset() { *m = EntitySelector{} } -func (m *EntitySelector) String() string { return proto.CompactTextString(m) } -func (*EntitySelector) ProtoMessage() {} -func (*EntitySelector) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{10} -} - -var extRange_EntitySelector = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*EntitySelector) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_EntitySelector -} - -func (m *EntitySelector) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_EntitySelector.Unmarshal(m, b) -} -func (m *EntitySelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_EntitySelector.Marshal(b, m, deterministic) -} -func (m *EntitySelector) XXX_Merge(src proto.Message) { - xxx_messageInfo_EntitySelector.Merge(m, src) -} -func (m *EntitySelector) XXX_Size() int { - return xxx_messageInfo_EntitySelector.Size(m) -} -func (m *EntitySelector) XXX_DiscardUnknown() { - xxx_messageInfo_EntitySelector.DiscardUnknown(m) -} - -var xxx_messageInfo_EntitySelector proto.InternalMessageInfo - -func (m *EntitySelector) GetAgencyId() string { - if m != nil && m.AgencyId != nil { - return *m.AgencyId - } - return "" -} - -func (m *EntitySelector) GetRouteId() string { - if m != nil && m.RouteId != nil { - return *m.RouteId - } - return "" -} - -func (m *EntitySelector) GetRouteType() int32 { - if m != nil && m.RouteType != nil { - return *m.RouteType - } - return 0 -} - -func (m *EntitySelector) GetTrip() *TripDescriptor { - if m != nil { - return m.Trip - } - return nil -} - -func (m *EntitySelector) GetStopId() string { - if m != nil && m.StopId != nil { - return *m.StopId - } - return "" -} - -// An internationalized message containing per-language versions of a snippet of -// text or a URL. -// One of the strings from a message will be picked up. The resolution proceeds -// as follows: -// 1. If the UI language matches the language code of a translation, -// the first matching translation is picked. -// 2. If a default UI language (e.g., English) matches the language code of a -// translation, the first matching translation is picked. -// 3. If some translation has an unspecified language code, that translation is -// picked. -type TranslatedString struct { - // At least one translation must be provided. - Translation []*TranslatedString_Translation `protobuf:"bytes,1,rep,name=translation" json:"translation,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *TranslatedString) Reset() { *m = TranslatedString{} } -func (m *TranslatedString) String() string { return proto.CompactTextString(m) } -func (*TranslatedString) ProtoMessage() {} -func (*TranslatedString) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{11} -} - -var extRange_TranslatedString = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*TranslatedString) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_TranslatedString -} - -func (m *TranslatedString) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TranslatedString.Unmarshal(m, b) -} -func (m *TranslatedString) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TranslatedString.Marshal(b, m, deterministic) -} -func (m *TranslatedString) XXX_Merge(src proto.Message) { - xxx_messageInfo_TranslatedString.Merge(m, src) -} -func (m *TranslatedString) XXX_Size() int { - return xxx_messageInfo_TranslatedString.Size(m) -} -func (m *TranslatedString) XXX_DiscardUnknown() { - xxx_messageInfo_TranslatedString.DiscardUnknown(m) -} - -var xxx_messageInfo_TranslatedString proto.InternalMessageInfo - -func (m *TranslatedString) GetTranslation() []*TranslatedString_Translation { - if m != nil { - return m.Translation - } - return nil -} - -type TranslatedString_Translation struct { - // A UTF-8 string containing the message. - Text *string `protobuf:"bytes,1,req,name=text" json:"text,omitempty"` - // BCP-47 language code. Can be omitted if the language is unknown or if - // no i18n is done at all for the feed. At most one translation is - // allowed to have an unspecified language tag. - Language *string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - proto.XXX_InternalExtensions `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *TranslatedString_Translation) Reset() { *m = TranslatedString_Translation{} } -func (m *TranslatedString_Translation) String() string { return proto.CompactTextString(m) } -func (*TranslatedString_Translation) ProtoMessage() {} -func (*TranslatedString_Translation) Descriptor() ([]byte, []int) { - return fileDescriptor_14fb45b58d5bb208, []int{11, 0} -} - -var extRange_TranslatedString_Translation = []proto.ExtensionRange{ - {Start: 1000, End: 1999}, -} - -func (*TranslatedString_Translation) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_TranslatedString_Translation -} - -func (m *TranslatedString_Translation) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TranslatedString_Translation.Unmarshal(m, b) -} -func (m *TranslatedString_Translation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TranslatedString_Translation.Marshal(b, m, deterministic) -} -func (m *TranslatedString_Translation) XXX_Merge(src proto.Message) { - xxx_messageInfo_TranslatedString_Translation.Merge(m, src) -} -func (m *TranslatedString_Translation) XXX_Size() int { - return xxx_messageInfo_TranslatedString_Translation.Size(m) -} -func (m *TranslatedString_Translation) XXX_DiscardUnknown() { - xxx_messageInfo_TranslatedString_Translation.DiscardUnknown(m) -} - -var xxx_messageInfo_TranslatedString_Translation proto.InternalMessageInfo - -func (m *TranslatedString_Translation) GetText() string { - if m != nil && m.Text != nil { - return *m.Text - } - return "" -} - -func (m *TranslatedString_Translation) GetLanguage() string { - if m != nil && m.Language != nil { - return *m.Language - } - return "" -} - -func init() { - proto.RegisterEnum("transit_realtime.FeedHeader_Incrementality", FeedHeader_Incrementality_name, FeedHeader_Incrementality_value) - proto.RegisterEnum("transit_realtime.TripUpdate_StopTimeUpdate_ScheduleRelationship", TripUpdate_StopTimeUpdate_ScheduleRelationship_name, TripUpdate_StopTimeUpdate_ScheduleRelationship_value) - proto.RegisterEnum("transit_realtime.VehiclePosition_VehicleStopStatus", VehiclePosition_VehicleStopStatus_name, VehiclePosition_VehicleStopStatus_value) - proto.RegisterEnum("transit_realtime.VehiclePosition_CongestionLevel", VehiclePosition_CongestionLevel_name, VehiclePosition_CongestionLevel_value) - proto.RegisterEnum("transit_realtime.VehiclePosition_OccupancyStatus", VehiclePosition_OccupancyStatus_name, VehiclePosition_OccupancyStatus_value) - proto.RegisterEnum("transit_realtime.Alert_Cause", Alert_Cause_name, Alert_Cause_value) - proto.RegisterEnum("transit_realtime.Alert_Effect", Alert_Effect_name, Alert_Effect_value) - proto.RegisterEnum("transit_realtime.Alert_SeverityLevel", Alert_SeverityLevel_name, Alert_SeverityLevel_value) - proto.RegisterEnum("transit_realtime.TripDescriptor_ScheduleRelationship", TripDescriptor_ScheduleRelationship_name, TripDescriptor_ScheduleRelationship_value) - proto.RegisterType((*FeedMessage)(nil), "transit_realtime.FeedMessage") - proto.RegisterType((*FeedHeader)(nil), "transit_realtime.FeedHeader") - proto.RegisterType((*FeedEntity)(nil), "transit_realtime.FeedEntity") - proto.RegisterType((*TripUpdate)(nil), "transit_realtime.TripUpdate") - proto.RegisterType((*TripUpdate_StopTimeEvent)(nil), "transit_realtime.TripUpdate.StopTimeEvent") - proto.RegisterType((*TripUpdate_StopTimeUpdate)(nil), "transit_realtime.TripUpdate.StopTimeUpdate") - proto.RegisterType((*VehiclePosition)(nil), "transit_realtime.VehiclePosition") - proto.RegisterType((*Alert)(nil), "transit_realtime.Alert") - proto.RegisterType((*TimeRange)(nil), "transit_realtime.TimeRange") - proto.RegisterType((*Position)(nil), "transit_realtime.Position") - proto.RegisterType((*TripDescriptor)(nil), "transit_realtime.TripDescriptor") - proto.RegisterType((*VehicleDescriptor)(nil), "transit_realtime.VehicleDescriptor") - proto.RegisterType((*EntitySelector)(nil), "transit_realtime.EntitySelector") - proto.RegisterType((*TranslatedString)(nil), "transit_realtime.TranslatedString") - proto.RegisterType((*TranslatedString_Translation)(nil), "transit_realtime.TranslatedString.Translation") -} - -func init() { proto.RegisterFile("gtfs-realtime.proto", fileDescriptor_14fb45b58d5bb208) } - -var fileDescriptor_14fb45b58d5bb208 = []byte{ - // 1990 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x58, 0xcd, 0x6e, 0xe3, 0xc8, - 0x11, 0x1e, 0xea, 0x5f, 0x25, 0x4b, 0xea, 0x6d, 0x7b, 0x32, 0x8e, 0x67, 0x66, 0x31, 0xab, 0x4d, - 0x80, 0xc1, 0x2e, 0xd6, 0x40, 0x9c, 0x49, 0x0e, 0x5e, 0x2c, 0xb2, 0x1c, 0xb2, 0x65, 0x31, 0x23, - 0x91, 0x42, 0x93, 0xf2, 0xc0, 0x40, 0x10, 0x82, 0x2b, 0xb6, 0x35, 0x0c, 0x68, 0x52, 0x21, 0x5b, - 0xc6, 0xfa, 0x10, 0x20, 0x79, 0x8b, 0x3c, 0x41, 0x0e, 0xb9, 0xe4, 0x90, 0x7b, 0x4e, 0x79, 0x80, - 0x20, 0xa7, 0x1c, 0x73, 0xcc, 0x0b, 0xe4, 0x9c, 0xa0, 0x9b, 0x3f, 0xfa, 0xb1, 0xbd, 0xe3, 0xd9, - 0x1b, 0xeb, 0xe7, 0xab, 0xae, 0xae, 0xae, 0xaa, 0xae, 0x26, 0xec, 0x2f, 0xf8, 0x65, 0xfa, 0x45, - 0xc2, 0xbc, 0x90, 0x07, 0x57, 0xec, 0x78, 0x99, 0xc4, 0x3c, 0xc6, 0x88, 0x27, 0x5e, 0x94, 0x06, - 0xdc, 0x2d, 0xf8, 0x83, 0x3f, 0x28, 0xd0, 0x19, 0x32, 0xe6, 0x4f, 0x58, 0x9a, 0x7a, 0x0b, 0x86, - 0x5f, 0x41, 0xe3, 0x1d, 0xf3, 0x7c, 0x96, 0x1c, 0x2a, 0x2f, 0x2a, 0x2f, 0x3b, 0x27, 0xcf, 0x8e, - 0x77, 0x21, 0xc7, 0x42, 0x7d, 0x24, 0x75, 0x68, 0xae, 0x2b, 0x50, 0x2c, 0xe2, 0x01, 0xbf, 0x39, - 0xac, 0xbc, 0xa8, 0xde, 0x8f, 0x22, 0x52, 0x87, 0xe6, 0xba, 0x9f, 0x35, 0x5a, 0xff, 0x69, 0xa2, - 0x7f, 0xf4, 0x07, 0xff, 0x53, 0x00, 0xd6, 0x46, 0xf1, 0x09, 0x3c, 0x16, 0xbe, 0x97, 0x50, 0xf7, - 0x9a, 0x25, 0x69, 0x10, 0x47, 0xd2, 0xa3, 0x36, 0x95, 0x1b, 0xa3, 0xb9, 0xec, 0x3c, 0x13, 0x61, - 0x0f, 0x7a, 0x41, 0x34, 0x4f, 0xd8, 0x15, 0x8b, 0xb8, 0x17, 0x66, 0x8e, 0x28, 0x2f, 0x7b, 0x27, - 0x9f, 0x7f, 0x97, 0xfb, 0xc7, 0xc6, 0x16, 0xe4, 0x74, 0x6f, 0x38, 0x1b, 0x8f, 0x5d, 0x5d, 0x75, - 0x54, 0x9b, 0x38, 0x74, 0xc7, 0x20, 0x7e, 0x06, 0x6d, 0x81, 0x4f, 0xb9, 0x77, 0xb5, 0x3c, 0xac, - 0xbe, 0x50, 0x5e, 0xd6, 0xe8, 0x9a, 0x31, 0x78, 0x05, 0xbd, 0x6d, 0x6b, 0x18, 0xc1, 0x96, 0x3d, - 0xf4, 0x48, 0x70, 0x74, 0x63, 0x38, 0x24, 0x94, 0x98, 0x8e, 0xa1, 0x8e, 0x91, 0x52, 0x46, 0xe0, - 0xbf, 0x79, 0x04, 0xb2, 0x00, 0xe1, 0x1e, 0x54, 0x02, 0x3f, 0xdf, 0x6e, 0x25, 0xf0, 0xf1, 0x8f, - 0x00, 0x82, 0xd4, 0xf5, 0x59, 0xc8, 0x38, 0xf3, 0xe5, 0xce, 0x5a, 0xa7, 0xf5, 0x4b, 0x2f, 0x4c, - 0x19, 0x6d, 0x07, 0xa9, 0x9e, 0xf1, 0xf1, 0x57, 0xd0, 0xe1, 0x49, 0xb0, 0x74, 0x57, 0x4b, 0xdf, - 0xe3, 0x4c, 0xba, 0x78, 0xe7, 0x49, 0x38, 0x49, 0xb0, 0x9c, 0x49, 0x1d, 0x0a, 0xbc, 0xfc, 0xc6, - 0x5f, 0x42, 0xf3, 0x9a, 0xbd, 0x0b, 0xe6, 0x21, 0x3b, 0xac, 0x49, 0xe8, 0x27, 0xb7, 0xa1, 0xe7, - 0x99, 0xc2, 0x34, 0x4e, 0x03, 0x1e, 0xc4, 0x11, 0x2d, 0x10, 0xf8, 0x0b, 0xa8, 0x7b, 0x21, 0x4b, - 0xf8, 0x61, 0x5d, 0x42, 0x9f, 0xdc, 0x86, 0xaa, 0x42, 0x4c, 0x33, 0xad, 0x72, 0xdf, 0x7f, 0x6a, - 0x00, 0xac, 0xdd, 0xc1, 0xaf, 0xa0, 0x26, 0x1c, 0xca, 0x53, 0xef, 0xc5, 0xdd, 0xae, 0xeb, 0x2c, - 0x9d, 0x27, 0xc1, 0x92, 0xc7, 0x09, 0x95, 0xda, 0xf8, 0xab, 0xb5, 0xe3, 0xd9, 0x9e, 0x3f, 0xbd, - 0xd7, 0xf1, 0x0d, 0x6c, 0xe9, 0xfa, 0x0c, 0x50, 0xca, 0xe3, 0xa5, 0x2b, 0x53, 0x2d, 0x8f, 0x5d, - 0x96, 0xc5, 0x9f, 0x7f, 0x57, 0xec, 0x8e, 0x6d, 0x1e, 0x2f, 0x9d, 0xe0, 0x8a, 0xe5, 0xa1, 0xec, - 0xa5, 0x5b, 0xf4, 0x76, 0xba, 0xd4, 0x76, 0xd2, 0x05, 0x1f, 0x40, 0xdd, 0x67, 0xa1, 0x77, 0x23, - 0xe3, 0x55, 0xa7, 0x19, 0x71, 0x34, 0x87, 0x6e, 0x61, 0x95, 0x5c, 0xb3, 0x88, 0xaf, 0xd5, 0x94, - 0x0d, 0x35, 0x8c, 0xa1, 0x26, 0x2c, 0xc9, 0x44, 0xa8, 0x52, 0xf9, 0x8d, 0x5f, 0x40, 0x67, 0x15, - 0xcd, 0x59, 0xc2, 0xbd, 0x20, 0xe2, 0x37, 0x32, 0x10, 0x75, 0xba, 0xc9, 0x2a, 0x62, 0x7e, 0xf4, - 0xe7, 0x2a, 0xf4, 0xb6, 0x7d, 0xc7, 0x9f, 0x42, 0x57, 0x86, 0x20, 0x65, 0xbf, 0x5d, 0xb1, 0x68, - 0xce, 0xe4, 0x72, 0x5d, 0xba, 0x27, 0x98, 0x76, 0xce, 0xc3, 0x4f, 0xa0, 0x29, 0x95, 0x02, 0x5f, - 0x6e, 0xa7, 0x4d, 0x1b, 0x82, 0x34, 0x7c, 0xac, 0x43, 0xd3, 0x4b, 0x92, 0xe0, 0xda, 0x0b, 0xa5, - 0x47, 0x9d, 0x93, 0xcf, 0x1e, 0x14, 0x37, 0xb9, 0x43, 0x5a, 0x40, 0xf1, 0x08, 0xda, 0x3e, 0x5b, - 0x7a, 0x09, 0x5f, 0x25, 0xc5, 0x39, 0x7e, 0x88, 0x9d, 0x35, 0x18, 0xff, 0x5e, 0x81, 0xc7, 0xe9, - 0xfc, 0x1d, 0xf3, 0x57, 0x21, 0x73, 0x13, 0x16, 0x7a, 0x22, 0x55, 0xd3, 0x77, 0xc1, 0x52, 0x06, - 0xbb, 0x77, 0xf2, 0xf5, 0x07, 0x1c, 0xeb, 0xb1, 0x9d, 0x1b, 0xa2, 0x1b, 0x76, 0x4e, 0xdb, 0xb6, - 0x36, 0x22, 0xfa, 0x6c, 0x4c, 0x74, 0x7a, 0x90, 0xde, 0xa1, 0x30, 0xf8, 0x05, 0x1c, 0xdc, 0x05, - 0xc4, 0x5d, 0x58, 0x43, 0xd1, 0x23, 0xdc, 0x81, 0xa6, 0xfd, 0xc6, 0x98, 0x4e, 0x89, 0x8e, 0x14, - 0x41, 0x98, 0x96, 0xec, 0x16, 0xa8, 0x52, 0x1c, 0x56, 0x59, 0x28, 0xff, 0x6c, 0x42, 0x7f, 0xa7, - 0xf8, 0x36, 0xaa, 0x45, 0xf9, 0x7e, 0xd5, 0xd2, 0xfa, 0x1e, 0xd5, 0xf2, 0x73, 0x68, 0x2d, 0x73, - 0x07, 0xf2, 0xd3, 0x3e, 0xba, 0x8d, 0x2f, 0xfb, 0x43, 0xa9, 0x2b, 0x9a, 0xfa, 0x7c, 0x95, 0x24, - 0x2c, 0xe2, 0xee, 0x76, 0xaa, 0x55, 0x65, 0xaa, 0xed, 0xe7, 0x42, 0xfb, 0x9e, 0x8c, 0x6b, 0x6e, - 0x65, 0x5c, 0x00, 0xbd, 0xb5, 0x31, 0x8f, 0xaf, 0x52, 0x99, 0x91, 0xbd, 0x93, 0x9f, 0xbe, 0xb7, - 0x63, 0x15, 0xb4, 0x5c, 0x47, 0x42, 0x4f, 0xbb, 0x86, 0xe9, 0x3a, 0x54, 0x35, 0x6d, 0xc3, 0x71, - 0x1d, 0x8b, 0x76, 0x4b, 0x4f, 0x84, 0x74, 0xbb, 0x8c, 0xeb, 0xbb, 0x65, 0xfc, 0x2b, 0x40, 0xf3, - 0x38, 0x5a, 0xb0, 0x54, 0xd8, 0x76, 0x43, 0x76, 0xcd, 0xc2, 0xc3, 0x86, 0x74, 0xe5, 0x27, 0xef, - 0x77, 0x45, 0x2b, 0x91, 0x63, 0x01, 0xa4, 0xfd, 0xf9, 0x36, 0x43, 0x58, 0x8f, 0xe7, 0xf3, 0xd5, - 0xd2, 0x8b, 0xe6, 0x37, 0xc5, 0x46, 0xdb, 0x0f, 0xb5, 0x6e, 0x15, 0xc8, 0x6c, 0x23, 0xb4, 0x1f, - 0x6f, 0x33, 0x06, 0x67, 0xf0, 0xd1, 0xad, 0x60, 0xe0, 0x3e, 0x74, 0x0c, 0x53, 0xb3, 0x26, 0x86, - 0x79, 0xe6, 0xaa, 0xe2, 0xce, 0xea, 0x01, 0xd8, 0x8e, 0x25, 0x52, 0x54, 0xd0, 0x0a, 0xfe, 0x08, - 0xb6, 0xe3, 0x85, 0x2a, 0x83, 0xdf, 0x41, 0x7f, 0x67, 0x2b, 0xf8, 0x19, 0x1c, 0xce, 0xcc, 0x37, - 0xa6, 0xf5, 0xd6, 0x74, 0x35, 0xcb, 0x3c, 0x23, 0xb6, 0x63, 0x58, 0xa6, 0x3b, 0x26, 0xe7, 0x64, - 0x8c, 0x1e, 0xe1, 0x03, 0x40, 0x74, 0x66, 0x9a, 0x62, 0x0d, 0x7b, 0x62, 0x59, 0xce, 0x68, 0x7c, - 0x81, 0x14, 0xb1, 0xb4, 0x58, 0xc9, 0x55, 0x4d, 0xdd, 0x3d, 0xb3, 0x50, 0x45, 0x2c, 0xbd, 0x06, - 0xa3, 0x2a, 0x7e, 0x0c, 0x1f, 0xd9, 0xe4, 0x9c, 0x50, 0xb2, 0x61, 0x13, 0xd5, 0x06, 0x7f, 0x51, - 0xa0, 0xbf, 0xb3, 0x59, 0xdc, 0x86, 0x3a, 0x99, 0x4c, 0x9d, 0x0b, 0xf4, 0x08, 0x1f, 0xc2, 0xc1, - 0x44, 0x35, 0x2f, 0x5c, 0x9b, 0xa8, 0x8e, 0xed, 0xaa, 0xe7, 0xaa, 0x31, 0x56, 0x5f, 0x8f, 0x09, - 0x52, 0xf0, 0x13, 0xd8, 0x1f, 0x92, 0xb7, 0xb7, 0x04, 0x15, 0xfc, 0x03, 0xc0, 0xb6, 0xa3, 0x9a, - 0xba, 0x70, 0x90, 0x5a, 0xd6, 0xc4, 0xb5, 0xcc, 0xf1, 0x05, 0xaa, 0xe2, 0x8f, 0xe1, 0x48, 0xa3, - 0x33, 0x7b, 0x44, 0x74, 0xf7, 0x0e, 0x79, 0x0d, 0xb7, 0xa0, 0x26, 0x6e, 0x7c, 0x54, 0x17, 0xfb, - 0x37, 0x2d, 0xc7, 0x55, 0x35, 0x8d, 0x4c, 0x1d, 0xa1, 0x36, 0x55, 0x6d, 0x9b, 0x98, 0x67, 0x84, - 0xda, 0xa8, 0x51, 0x16, 0xf5, 0xbf, 0xdb, 0x50, 0x97, 0xd7, 0x22, 0xfe, 0x1a, 0xba, 0xde, 0x9c, - 0x07, 0xd7, 0xcc, 0x5d, 0xb2, 0x24, 0x88, 0xc5, 0xdd, 0x2f, 0x2e, 0xa0, 0xa7, 0x77, 0xd4, 0x74, - 0x70, 0xc5, 0xa8, 0x17, 0x2d, 0x18, 0xdd, 0xcb, 0x10, 0x53, 0x09, 0xc0, 0x06, 0xf4, 0x83, 0xe8, - 0x32, 0x4e, 0xae, 0x98, 0xef, 0xe6, 0xa3, 0x58, 0x5d, 0xda, 0xb8, 0xa3, 0x2f, 0x64, 0x53, 0x86, - 0xcd, 0x42, 0x36, 0x17, 0xb5, 0xdd, 0x2b, 0x80, 0xf9, 0xf4, 0xf1, 0x1a, 0xea, 0x73, 0x6f, 0x95, - 0xb2, 0x3c, 0x93, 0x9f, 0xdf, 0x73, 0x97, 0x1f, 0x6b, 0x42, 0xe9, 0xb4, 0x5b, 0x1e, 0xb4, 0x3a, - 0xb3, 0x09, 0xcd, 0xa0, 0x78, 0x08, 0x0d, 0x76, 0x79, 0xc9, 0xe6, 0x5c, 0x56, 0x6e, 0xef, 0xe4, - 0xe3, 0xfb, 0x8c, 0x10, 0xa9, 0x75, 0xda, 0x2b, 0xac, 0x90, 0xe1, 0x90, 0x68, 0x0e, 0xcd, 0xd1, - 0xf8, 0x15, 0x54, 0x57, 0x49, 0x98, 0x77, 0xaa, 0xc1, 0x5d, 0x2d, 0xce, 0x8b, 0xd2, 0xd0, 0xe3, - 0xcc, 0xb7, 0x79, 0x12, 0x44, 0x0b, 0x2a, 0xd4, 0xb1, 0x06, 0x9d, 0x6c, 0x30, 0x75, 0x39, 0xfb, - 0x96, 0x1f, 0xc2, 0x83, 0xd1, 0x90, 0xc1, 0x1c, 0xf6, 0x2d, 0xc7, 0x13, 0x40, 0x7e, 0xde, 0x00, - 0x45, 0x71, 0x4b, 0x4b, 0x9d, 0x07, 0x5b, 0xea, 0x6f, 0x60, 0xa5, 0xb9, 0x5f, 0x42, 0x9f, 0xf3, - 0xd4, 0xdd, 0xf4, 0x6b, 0xef, 0xc1, 0xd6, 0xba, 0x9c, 0xa7, 0xa3, 0xb5, 0x6b, 0x0e, 0x1c, 0x08, - 0x5b, 0xb7, 0xdc, 0xeb, 0x3e, 0xd8, 0x20, 0xe6, 0x3c, 0xd5, 0x77, 0x3c, 0xfc, 0x35, 0xf4, 0x52, - 0x76, 0xcd, 0x92, 0x80, 0xdf, 0xe4, 0xad, 0xac, 0x27, 0xcf, 0xee, 0xc7, 0xf7, 0x9d, 0x9d, 0x9d, - 0x6b, 0xcb, 0x9a, 0x3f, 0x45, 0xc5, 0x11, 0xca, 0x22, 0x35, 0x9c, 0x0b, 0xda, 0x4d, 0x37, 0x15, - 0x06, 0xff, 0x52, 0xa0, 0x2e, 0x73, 0x46, 0x34, 0x91, 0xad, 0xac, 0xc9, 0xaa, 0xdf, 0x72, 0x46, - 0x84, 0xe6, 0x8c, 0x8a, 0xa8, 0x76, 0x87, 0x68, 0x23, 0xd3, 0xd0, 0xd4, 0xb1, 0x3b, 0xa5, 0xd6, - 0xeb, 0x31, 0x99, 0xa0, 0x2a, 0x06, 0x68, 0xd8, 0x0e, 0x35, 0xde, 0x10, 0x54, 0x13, 0x66, 0x74, - 0x32, 0xb1, 0x4c, 0xdb, 0xa1, 0xaa, 0x6c, 0x06, 0x75, 0xbc, 0x07, 0x2d, 0x55, 0xd3, 0x0c, 0x9d, - 0x98, 0x0e, 0x6a, 0x88, 0x2b, 0x75, 0x64, 0x8d, 0x0d, 0x5d, 0xbd, 0x40, 0x4d, 0x41, 0xbc, 0x25, - 0xaa, 0x58, 0x03, 0xb5, 0xc4, 0x72, 0x13, 0xd5, 0x30, 0x1d, 0x62, 0xaa, 0xa6, 0x46, 0x50, 0x5b, - 0xcc, 0xe6, 0x9a, 0xb4, 0x34, 0xd3, 0xa4, 0x29, 0xc0, 0xfb, 0xd0, 0x9f, 0x5a, 0x63, 0x43, 0x23, - 0xae, 0xaa, 0x39, 0xc6, 0xb9, 0xe1, 0x5c, 0xa0, 0x8e, 0xf0, 0x6a, 0x42, 0x74, 0xe9, 0x13, 0x99, - 0x10, 0x7a, 0x46, 0x4c, 0xed, 0x02, 0xed, 0x0d, 0xfe, 0xae, 0x40, 0x23, 0xcb, 0x64, 0xd1, 0xb5, - 0x4c, 0xcb, 0xb5, 0x09, 0x3d, 0x37, 0x34, 0xb1, 0xb1, 0x7d, 0xe8, 0x53, 0xa2, 0xcf, 0x34, 0xd1, - 0x34, 0x72, 0x66, 0xd6, 0x61, 0x8c, 0x33, 0xd3, 0x18, 0x1a, 0x9a, 0x6a, 0x3a, 0xae, 0x4e, 0xc6, - 0xea, 0x85, 0x9d, 0xed, 0x4e, 0x27, 0x8e, 0x35, 0xa3, 0xa8, 0x26, 0x74, 0x54, 0x5d, 0x37, 0x84, - 0x37, 0xea, 0xb8, 0xc4, 0xd6, 0x45, 0xf7, 0x9c, 0x58, 0xba, 0x31, 0x34, 0x36, 0x2c, 0x36, 0x84, - 0xff, 0x59, 0xfc, 0xb2, 0x02, 0x42, 0x4d, 0x8c, 0x61, 0xa7, 0xa8, 0x50, 0xab, 0xe8, 0xe6, 0xee, - 0xc4, 0x3a, 0x27, 0x3a, 0x6a, 0x8b, 0x79, 0xc4, 0xb4, 0x0a, 0x31, 0x0c, 0x46, 0xd0, 0xdd, 0x3a, - 0x53, 0xb1, 0xd6, 0xee, 0xa9, 0x22, 0x45, 0xf4, 0x39, 0xc3, 0x1c, 0x8a, 0x16, 0x2d, 0x62, 0xaa, - 0x52, 0xd1, 0xc9, 0xf3, 0xa3, 0x91, 0xfd, 0x19, 0xd5, 0xca, 0x16, 0xf7, 0x25, 0xb4, 0xcb, 0x8e, - 0x25, 0xa6, 0xd9, 0x94, 0x7b, 0x09, 0x97, 0x13, 0x4b, 0x8d, 0x66, 0x04, 0x46, 0x50, 0x65, 0x51, - 0xf6, 0xaa, 0xa9, 0x51, 0xf1, 0x59, 0x82, 0xff, 0xa8, 0x40, 0xab, 0x9c, 0x76, 0x8e, 0xa0, 0x25, - 0x06, 0x29, 0xbe, 0xf2, 0x99, 0x7c, 0x1f, 0x54, 0x68, 0x49, 0x8b, 0x4b, 0x3a, 0x8c, 0xa3, 0x45, - 0x26, 0xac, 0x48, 0xe1, 0x9a, 0x81, 0x0f, 0xa1, 0xf9, 0x0d, 0xf3, 0x44, 0xda, 0xcb, 0x61, 0xa3, - 0x42, 0x0b, 0x52, 0xd8, 0x8c, 0xfd, 0xf8, 0x8a, 0x71, 0x96, 0xc8, 0x09, 0x42, 0xa1, 0x25, 0x2d, - 0x9d, 0x5d, 0x32, 0xe6, 0xcb, 0x4b, 0xbf, 0x42, 0x33, 0x62, 0xfd, 0x64, 0xad, 0x40, 0x6f, 0x7b, - 0xbc, 0x12, 0xd3, 0x8a, 0x7c, 0x7e, 0xc9, 0x97, 0x9b, 0x9c, 0x56, 0x04, 0x69, 0xf8, 0xf8, 0x87, - 0xd0, 0x4a, 0xe2, 0x15, 0x67, 0x42, 0x52, 0x97, 0x92, 0xa6, 0xa4, 0x0d, 0x1f, 0x7f, 0x02, 0x7b, - 0x7e, 0x90, 0xb0, 0xb9, 0x2c, 0xe1, 0xc0, 0x97, 0x1d, 0xb7, 0x4b, 0x3b, 0x25, 0xcf, 0xf0, 0xf1, - 0x73, 0x00, 0x19, 0x27, 0xb7, 0x1c, 0xf9, 0xdb, 0xb4, 0x2d, 0x39, 0x22, 0xb0, 0x6b, 0x71, 0xf9, - 0xe6, 0x2b, 0xc4, 0xba, 0x98, 0xec, 0x7f, 0x73, 0xdf, 0x28, 0x9c, 0x0d, 0x4c, 0x3f, 0x7b, 0xdf, - 0xd0, 0x78, 0xe7, 0xfc, 0x7b, 0xcf, 0xd0, 0xeb, 0x3f, 0x6c, 0xe8, 0x15, 0x97, 0x9e, 0xae, 0xcb, - 0x91, 0xb7, 0x0f, 0x9d, 0x99, 0xb9, 0x96, 0x55, 0x44, 0xf9, 0x6a, 0xa2, 0x20, 0x05, 0x55, 0xc5, - 0xfb, 0xd0, 0xa1, 0x64, 0x3a, 0x56, 0x35, 0x32, 0x11, 0xf5, 0x5c, 0x3f, 0xaa, 0xb4, 0xd6, 0x4f, - 0xe6, 0xcb, 0x72, 0x7c, 0xd9, 0x38, 0x83, 0xe2, 0xe1, 0xac, 0xe4, 0x0f, 0xe7, 0x03, 0xa8, 0x87, - 0xde, 0x37, 0x2c, 0xcc, 0xe3, 0x96, 0x11, 0xe2, 0xb9, 0x13, 0x06, 0x73, 0x16, 0xa5, 0xcc, 0x5d, - 0x86, 0xeb, 0xb0, 0xed, 0xe5, 0xcc, 0xa9, 0xe0, 0x95, 0xeb, 0xfc, 0x4d, 0x81, 0xde, 0xf6, 0x85, - 0x89, 0x9f, 0x42, 0xdb, 0x5b, 0x30, 0x31, 0x94, 0x95, 0x8b, 0xb5, 0x32, 0xc6, 0xce, 0x69, 0x57, - 0xb6, 0x4f, 0xfb, 0x39, 0x40, 0x26, 0xe2, 0x37, 0x4b, 0x96, 0x3f, 0xd1, 0xda, 0x92, 0xe3, 0xdc, - 0x2c, 0xd7, 0xaf, 0xdf, 0xda, 0x07, 0xcd, 0xf3, 0x1b, 0x43, 0x72, 0x7d, 0x73, 0x48, 0x2e, 0x37, - 0xf0, 0x57, 0x05, 0xd0, 0x6e, 0xff, 0xc7, 0x53, 0xe8, 0xf0, 0x9c, 0x97, 0xfd, 0x59, 0x11, 0xa3, - 0xc2, 0xf1, 0xfb, 0x2f, 0x8e, 0x92, 0x21, 0xa6, 0xfb, 0x4d, 0x13, 0x47, 0x04, 0x3a, 0x1b, 0x32, - 0xf9, 0x46, 0x15, 0x57, 0x52, 0xf6, 0x13, 0x43, 0x7e, 0x67, 0x25, 0x1c, 0x2d, 0x56, 0xde, 0xa2, - 0x48, 0xe4, 0x92, 0xde, 0x7d, 0xf0, 0xbc, 0x7e, 0x0e, 0x4f, 0xe7, 0xf1, 0xd5, 0xf1, 0x22, 0x8e, - 0x17, 0x21, 0x2b, 0xfc, 0x3a, 0x2e, 0xfc, 0xfa, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x30, 0x01, - 0xda, 0xb4, 0xde, 0x12, 0x00, 0x00, -} diff --git a/golang/gtfs/gtfs_test.go b/golang/gtfs/gtfs_test.go index 079ac04..1bb36d9 100644 --- a/golang/gtfs/gtfs_test.go +++ b/golang/gtfs/gtfs_test.go @@ -1,4 +1,4 @@ -package gtfs +package transit_realtime import ( proto "github.com/golang/protobuf/proto" diff --git a/gtfs-realtime.proto b/gtfs-realtime.proto deleted file mode 100644 index 145a9b0..0000000 --- a/gtfs-realtime.proto +++ /dev/null @@ -1,660 +0,0 @@ -// Copyright 2015 The GTFS Specifications Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Protocol definition file for GTFS Realtime. -// -// GTFS Realtime lets transit agencies provide consumers with realtime -// information about disruptions to their service (stations closed, lines not -// operating, important delays etc), location of their vehicles and expected -// arrival times. -// -// This protocol is published at: -// https://github.com/google/transit/tree/master/gtfs-realtime - -syntax = "proto2"; -option java_package = "com.google.transit.realtime"; -package transit_realtime; - -// The contents of a feed message. -// A feed is a continuous stream of feed messages. Each message in the stream is -// obtained as a response to an appropriate HTTP GET request. -// A realtime feed is always defined with relation to an existing GTFS feed. -// All the entity ids are resolved with respect to the GTFS feed. -// Note that "required" and "optional" as stated in this file refer to Protocol -// Buffer cardinality, not semantic cardinality. See reference.md at -// https://github.com/google/transit/tree/master/gtfs-realtime for field -// semantic cardinality. -message FeedMessage { - // Metadata about this feed and feed message. - required FeedHeader header = 1; - - // Contents of the feed. - repeated FeedEntity entity = 2; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime specification in order to add and evaluate new features and - // modifications to the spec. - extensions 1000 to 1999; -} - -// Metadata about a feed, included in feed messages. -message FeedHeader { - // Version of the feed specification. - // The current version is 2.0. Valid versions are "2.0", "1.0". - required string gtfs_realtime_version = 1; - - // Determines whether the current fetch is incremental. Currently, - // DIFFERENTIAL mode is unsupported and behavior is unspecified for feeds - // that use this mode. There are discussions on the GTFS Realtime mailing - // list around fully specifying the behavior of DIFFERENTIAL mode and the - // documentation will be updated when those discussions are finalized. - enum Incrementality { - FULL_DATASET = 0; - DIFFERENTIAL = 1; - } - optional Incrementality incrementality = 2 [default = FULL_DATASET]; - - // This timestamp identifies the moment when the content of this feed has been - // created (in server time). In POSIX time (i.e., number of seconds since - // January 1st 1970 00:00:00 UTC). - optional uint64 timestamp = 3; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime specification in order to add and evaluate new features and - // modifications to the spec. - extensions 1000 to 1999; -} - -// A definition (or update) of an entity in the transit feed. -message FeedEntity { - // The ids are used only to provide incrementality support. The id should be - // unique within a FeedMessage. Consequent FeedMessages may contain - // FeedEntities with the same id. In case of a DIFFERENTIAL update the new - // FeedEntity with some id will replace the old FeedEntity with the same id - // (or delete it - see is_deleted below). - // The actual GTFS entities (e.g. stations, routes, trips) referenced by the - // feed must be specified by explicit selectors (see EntitySelector below for - // more info). - required string id = 1; - - // Whether this entity is to be deleted. Relevant only for incremental - // fetches. - optional bool is_deleted = 2 [default = false]; - - // Data about the entity itself. Exactly one of the following fields must be - // present (unless the entity is being deleted). - optional TripUpdate trip_update = 3; - optional VehiclePosition vehicle = 4; - optional Alert alert = 5; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features and - // modifications to the spec. - extensions 1000 to 1999; -} - -// -// Entities used in the feed. -// - -// Realtime update of the progress of a vehicle along a trip. -// Depending on the value of ScheduleRelationship, a TripUpdate can specify: -// - A trip that proceeds along the schedule. -// - A trip that proceeds along a route but has no fixed schedule. -// - A trip that have been added or removed with regard to schedule. -// -// The updates can be for future, predicted arrival/departure events, or for -// past events that already occurred. -// Normally, updates should get more precise and more certain (see -// uncertainty below) as the events gets closer to current time. -// Even if that is not possible, the information for past events should be -// precise and certain. In particular, if an update points to time in the past -// but its update's uncertainty is not 0, the client should conclude that the -// update is a (wrong) prediction and that the trip has not completed yet. -// -// Note that the update can describe a trip that is already completed. -// To this end, it is enough to provide an update for the last stop of the trip. -// If the time of that is in the past, the client will conclude from that that -// the whole trip is in the past (it is possible, although inconsequential, to -// also provide updates for preceding stops). -// This option is most relevant for a trip that has completed ahead of schedule, -// but according to the schedule, the trip is still proceeding at the current -// time. Removing the updates for this trip could make the client assume -// that the trip is still proceeding. -// Note that the feed provider is allowed, but not required, to purge past -// updates - this is one case where this would be practically useful. -message TripUpdate { - // The Trip that this message applies to. There can be at most one - // TripUpdate entity for each actual trip instance. - // If there is none, that means there is no prediction information available. - // It does *not* mean that the trip is progressing according to schedule. - required TripDescriptor trip = 1; - - // Additional information on the vehicle that is serving this trip. - optional VehicleDescriptor vehicle = 3; - - // Timing information for a single predicted event (either arrival or - // departure). - // Timing consists of delay and/or estimated time, and uncertainty. - // - delay should be used when the prediction is given relative to some - // existing schedule in GTFS. - // - time should be given whether there is a predicted schedule or not. If - // both time and delay are specified, time will take precedence - // (although normally, time, if given for a scheduled trip, should be - // equal to scheduled time in GTFS + delay). - // - // Uncertainty applies equally to both time and delay. - // The uncertainty roughly specifies the expected error in true delay (but - // note, we don't yet define its precise statistical meaning). It's possible - // for the uncertainty to be 0, for example for trains that are driven under - // computer timing control. - message StopTimeEvent { - // Delay (in seconds) can be positive (meaning that the vehicle is late) or - // negative (meaning that the vehicle is ahead of schedule). Delay of 0 - // means that the vehicle is exactly on time. - optional int32 delay = 1; - - // Event as absolute time. - // In Unix time (i.e., number of seconds since January 1st 1970 00:00:00 - // UTC). - optional int64 time = 2; - - // If uncertainty is omitted, it is interpreted as unknown. - // If the prediction is unknown or too uncertain, the delay (or time) field - // should be empty. In such case, the uncertainty field is ignored. - // To specify a completely certain prediction, set its uncertainty to 0. - optional int32 uncertainty = 3; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features - // and modifications to the spec. - extensions 1000 to 1999; - } - - // Realtime update for arrival and/or departure events for a given stop on a - // trip. Updates can be supplied for both past and future events. - // The producer is allowed, although not required, to drop past events. - message StopTimeUpdate { - // The update is linked to a specific stop either through stop_sequence or - // stop_id, so one of the fields below must necessarily be set. - // See the documentation in TripDescriptor for more information. - - // Must be the same as in stop_times.txt in the corresponding GTFS feed. - optional uint32 stop_sequence = 1; - // Must be the same as in stops.txt in the corresponding GTFS feed. - optional string stop_id = 4; - - optional StopTimeEvent arrival = 2; - optional StopTimeEvent departure = 3; - - // The relation between this StopTime and the static schedule. - enum ScheduleRelationship { - // The vehicle is proceeding in accordance with its static schedule of - // stops, although not necessarily according to the times of the schedule. - // At least one of arrival and departure must be provided. If the schedule - // for this stop contains both arrival and departure times then so must - // this update. - SCHEDULED = 0; - - // The stop is skipped, i.e., the vehicle will not stop at this stop. - // Arrival and departure are optional. - SKIPPED = 1; - - // No data is given for this stop. The main intention for this value is to - // give the predictions only for part of a trip, i.e., if the last update - // for a trip has a NO_DATA specifier, then StopTimes for the rest of the - // stops in the trip are considered to be unspecified as well. - // Neither arrival nor departure should be supplied. - NO_DATA = 2; - } - optional ScheduleRelationship schedule_relationship = 5 - [default = SCHEDULED]; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features - // and modifications to the spec. - extensions 1000 to 1999; - } - - // Updates to StopTimes for the trip (both future, i.e., predictions, and in - // some cases, past ones, i.e., those that already happened). - // The updates must be sorted by stop_sequence, and apply for all the - // following stops of the trip up to the next specified one. - // - // Example 1: - // For a trip with 20 stops, a StopTimeUpdate with arrival delay and departure - // delay of 0 for stop_sequence of the current stop means that the trip is - // exactly on time. - // - // Example 2: - // For the same trip instance, 3 StopTimeUpdates are provided: - // - delay of 5 min for stop_sequence 3 - // - delay of 1 min for stop_sequence 8 - // - delay of unspecified duration for stop_sequence 10 - // This will be interpreted as: - // - stop_sequences 3,4,5,6,7 have delay of 5 min. - // - stop_sequences 8,9 have delay of 1 min. - // - stop_sequences 10,... have unknown delay. - repeated StopTimeUpdate stop_time_update = 2; - - // Moment at which the vehicle's real-time progress was measured. In POSIX - // time (i.e., the number of seconds since January 1st 1970 00:00:00 UTC). - optional uint64 timestamp = 4; - - // The current schedule deviation for the trip. Delay should only be - // specified when the prediction is given relative to some existing schedule - // in GTFS. - // - // Delay (in seconds) can be positive (meaning that the vehicle is late) or - // negative (meaning that the vehicle is ahead of schedule). Delay of 0 - // means that the vehicle is exactly on time. - // - // Delay information in StopTimeUpdates take precedent of trip-level delay - // information, such that trip-level delay is only propagated until the next - // stop along the trip with a StopTimeUpdate delay value specified. - // - // Feed providers are strongly encouraged to provide a TripUpdate.timestamp - // value indicating when the delay value was last updated, in order to - // evaluate the freshness of the data. - // - // NOTE: This field is still experimental, and subject to change. It may be - // formally adopted in the future. - optional int32 delay = 5; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features and - // modifications to the spec. - extensions 1000 to 1999; -} - -// Realtime positioning information for a given vehicle. -message VehiclePosition { - // The Trip that this vehicle is serving. - // Can be empty or partial if the vehicle can not be identified with a given - // trip instance. - optional TripDescriptor trip = 1; - - // Additional information on the vehicle that is serving this trip. - optional VehicleDescriptor vehicle = 8; - - // Current position of this vehicle. - optional Position position = 2; - - // The stop sequence index of the current stop. The meaning of - // current_stop_sequence (i.e., the stop that it refers to) is determined by - // current_status. - // If current_status is missing IN_TRANSIT_TO is assumed. - optional uint32 current_stop_sequence = 3; - // Identifies the current stop. The value must be the same as in stops.txt in - // the corresponding GTFS feed. - optional string stop_id = 7; - - enum VehicleStopStatus { - // The vehicle is just about to arrive at the stop (on a stop - // display, the vehicle symbol typically flashes). - INCOMING_AT = 0; - - // The vehicle is standing at the stop. - STOPPED_AT = 1; - - // The vehicle has departed and is in transit to the next stop. - IN_TRANSIT_TO = 2; - } - // The exact status of the vehicle with respect to the current stop. - // Ignored if current_stop_sequence is missing. - optional VehicleStopStatus current_status = 4 [default = IN_TRANSIT_TO]; - - // Moment at which the vehicle's position was measured. In POSIX time - // (i.e., number of seconds since January 1st 1970 00:00:00 UTC). - optional uint64 timestamp = 5; - - // Congestion level that is affecting this vehicle. - enum CongestionLevel { - UNKNOWN_CONGESTION_LEVEL = 0; - RUNNING_SMOOTHLY = 1; - STOP_AND_GO = 2; - CONGESTION = 3; - SEVERE_CONGESTION = 4; // People leaving their cars. - } - optional CongestionLevel congestion_level = 6; - - // The degree of passenger occupancy of the vehicle. This field is still - // experimental, and subject to change. It may be formally adopted in the - // future. - enum OccupancyStatus { - // The vehicle is considered empty by most measures, and has few or no - // passengers onboard, but is still accepting passengers. - EMPTY = 0; - - // The vehicle has a relatively large percentage of seats available. - // What percentage of free seats out of the total seats available is to be - // considered large enough to fall into this category is determined at the - // discretion of the producer. - MANY_SEATS_AVAILABLE = 1; - - // The vehicle has a relatively small percentage of seats available. - // What percentage of free seats out of the total seats available is to be - // considered small enough to fall into this category is determined at the - // discretion of the feed producer. - FEW_SEATS_AVAILABLE = 2; - - // The vehicle can currently accommodate only standing passengers. - STANDING_ROOM_ONLY = 3; - - // The vehicle can currently accommodate only standing passengers - // and has limited space for them. - CRUSHED_STANDING_ROOM_ONLY = 4; - - // The vehicle is considered full by most measures, but may still be - // allowing passengers to board. - FULL = 5; - - // The vehicle is not accepting additional passengers. - NOT_ACCEPTING_PASSENGERS = 6; - - } - optional OccupancyStatus occupancy_status = 9; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features and - // modifications to the spec. - extensions 1000 to 1999; -} - -// An alert, indicating some sort of incident in the public transit network. -message Alert { - // Time when the alert should be shown to the user. If missing, the - // alert will be shown as long as it appears in the feed. - // If multiple ranges are given, the alert will be shown during all of them. - repeated TimeRange active_period = 1; - - // Entities whose users we should notify of this alert. - repeated EntitySelector informed_entity = 5; - - // Cause of this alert. - enum Cause { - UNKNOWN_CAUSE = 1; - OTHER_CAUSE = 2; // Not machine-representable. - TECHNICAL_PROBLEM = 3; - STRIKE = 4; // Public transit agency employees stopped working. - DEMONSTRATION = 5; // People are blocking the streets. - ACCIDENT = 6; - HOLIDAY = 7; - WEATHER = 8; - MAINTENANCE = 9; - CONSTRUCTION = 10; - POLICE_ACTIVITY = 11; - MEDICAL_EMERGENCY = 12; - } - optional Cause cause = 6 [default = UNKNOWN_CAUSE]; - - // What is the effect of this problem on the affected entity. - enum Effect { - NO_SERVICE = 1; - REDUCED_SERVICE = 2; - - // We don't care about INsignificant delays: they are hard to detect, have - // little impact on the user, and would clutter the results as they are too - // frequent. - SIGNIFICANT_DELAYS = 3; - - DETOUR = 4; - ADDITIONAL_SERVICE = 5; - MODIFIED_SERVICE = 6; - OTHER_EFFECT = 7; - UNKNOWN_EFFECT = 8; - STOP_MOVED = 9; - NO_EFFECT = 10; - } - optional Effect effect = 7 [default = UNKNOWN_EFFECT]; - - // The URL which provides additional information about the alert. - optional TranslatedString url = 8; - - // Alert header. Contains a short summary of the alert text as plain-text. - optional TranslatedString header_text = 10; - - // Full description for the alert as plain-text. The information in the - // description should add to the information of the header. - optional TranslatedString description_text = 11; - - // Text for alert header to be used in text-to-speech implementations. This field is the text-to-speech version of header_text. - // This field is still experimental, and subject to change. It may be formally adopted in the future. - optional TranslatedString tts_header_text = 12; - - // Text for full description for the alert to be used in text-to-speech implementations. This field is the text-to-speech version of description_text. - // This field is still experimental, and subject to change. It may be formally adopted in the future. - optional TranslatedString tts_description_text = 13; - - // Severity of this alert. - // This field is still experimental, and subject to change. It may be formally adopted in the future. - enum SeverityLevel { - UNKNOWN_SEVERITY = 1; - INFO = 2; - WARNING = 3; - SEVERE = 4; - } - - optional SeverityLevel severity_level = 14 [default = UNKNOWN_SEVERITY]; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features - // and modifications to the spec. - extensions 1000 to 1999; -} - -// -// Low level data structures used above. -// - -// A time interval. The interval is considered active at time 't' if 't' is -// greater than or equal to the start time and less than the end time. -message TimeRange { - // Start time, in POSIX time (i.e., number of seconds since January 1st 1970 - // 00:00:00 UTC). - // If missing, the interval starts at minus infinity. - optional uint64 start = 1; - - // End time, in POSIX time (i.e., number of seconds since January 1st 1970 - // 00:00:00 UTC). - // If missing, the interval ends at plus infinity. - optional uint64 end = 2; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features and - // modifications to the spec. - extensions 1000 to 1999; -} - -// A position. -message Position { - // Degrees North, in the WGS-84 coordinate system. - required float latitude = 1; - - // Degrees East, in the WGS-84 coordinate system. - required float longitude = 2; - - // Bearing, in degrees, clockwise from North, i.e., 0 is North and 90 is East. - // This can be the compass bearing, or the direction towards the next stop - // or intermediate location. - // This should not be direction deduced from the sequence of previous - // positions, which can be computed from previous data. - optional float bearing = 3; - - // Odometer value, in meters. - optional double odometer = 4; - // Momentary speed measured by the vehicle, in meters per second. - optional float speed = 5; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features and - // modifications to the spec. - extensions 1000 to 1999; -} - -// A descriptor that identifies an instance of a GTFS trip, or all instances of -// a trip along a route. -// - To specify a single trip instance, the trip_id (and if necessary, -// start_time) is set. If route_id is also set, then it should be same as one -// that the given trip corresponds to. -// - To specify all the trips along a given route, only the route_id should be -// set. Note that if the trip_id is not known, then stop sequence ids in -// TripUpdate are not sufficient, and stop_ids must be provided as well. In -// addition, absolute arrival/departure times must be provided. -message TripDescriptor { - // The trip_id from the GTFS feed that this selector refers to. - // For non frequency-based trips, this field is enough to uniquely identify - // the trip. For frequency-based trip, start_time and start_date might also be - // necessary. - optional string trip_id = 1; - - // The route_id from the GTFS that this selector refers to. - optional string route_id = 5; - - // The direction_id from the GTFS feed trips.txt file, indicating the - // direction of travel for trips this selector refers to. This field is - // still experimental, and subject to change. It may be formally adopted in - // the future. - optional uint32 direction_id = 6; - - // The initially scheduled start time of this trip instance. - // When the trip_id corresponds to a non-frequency-based trip, this field - // should either be omitted or be equal to the value in the GTFS feed. When - // the trip_id correponds to a frequency-based trip, the start_time must be - // specified for trip updates and vehicle positions. If the trip corresponds - // to exact_times=1 GTFS record, then start_time must be some multiple - // (including zero) of headway_secs later than frequencies.txt start_time for - // the corresponding time period. If the trip corresponds to exact_times=0, - // then its start_time may be arbitrary, and is initially expected to be the - // first departure of the trip. Once established, the start_time of this - // frequency-based trip should be considered immutable, even if the first - // departure time changes -- that time change may instead be reflected in a - // StopTimeUpdate. - // Format and semantics of the field is same as that of - // GTFS/frequencies.txt/start_time, e.g., 11:15:35 or 25:15:35. - optional string start_time = 2; - // The scheduled start date of this trip instance. - // Must be provided to disambiguate trips that are so late as to collide with - // a scheduled trip on a next day. For example, for a train that departs 8:00 - // and 20:00 every day, and is 12 hours late, there would be two distinct - // trips on the same time. - // This field can be provided but is not mandatory for schedules in which such - // collisions are impossible - for example, a service running on hourly - // schedule where a vehicle that is one hour late is not considered to be - // related to schedule anymore. - // In YYYYMMDD format. - optional string start_date = 3; - - // The relation between this trip and the static schedule. If a trip is done - // in accordance with temporary schedule, not reflected in GTFS, then it - // shouldn't be marked as SCHEDULED, but likely as ADDED. - enum ScheduleRelationship { - // Trip that is running in accordance with its GTFS schedule, or is close - // enough to the scheduled trip to be associated with it. - SCHEDULED = 0; - - // An extra trip that was added in addition to a running schedule, for - // example, to replace a broken vehicle or to respond to sudden passenger - // load. - ADDED = 1; - - // A trip that is running with no schedule associated to it, for example, if - // there is no schedule at all. - UNSCHEDULED = 2; - - // A trip that existed in the schedule but was removed. - CANCELED = 3; - - // Should not be used - for backwards-compatibility only. - REPLACEMENT = 5 [deprecated=true]; - } - optional ScheduleRelationship schedule_relationship = 4; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features and - // modifications to the spec. - extensions 1000 to 1999; -} - -// Identification information for the vehicle performing the trip. -message VehicleDescriptor { - // Internal system identification of the vehicle. Should be unique per - // vehicle, and can be used for tracking the vehicle as it proceeds through - // the system. - optional string id = 1; - - // User visible label, i.e., something that must be shown to the passenger to - // help identify the correct vehicle. - optional string label = 2; - - // The license plate of the vehicle. - optional string license_plate = 3; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features and - // modifications to the spec. - extensions 1000 to 1999; -} - -// A selector for an entity in a GTFS feed. -message EntitySelector { - // The values of the fields should correspond to the appropriate fields in the - // GTFS feed. - // At least one specifier must be given. If several are given, then the - // matching has to apply to all the given specifiers. - optional string agency_id = 1; - optional string route_id = 2; - // corresponds to route_type in GTFS. - optional int32 route_type = 3; - optional TripDescriptor trip = 4; - optional string stop_id = 5; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features and - // modifications to the spec. - extensions 1000 to 1999; -} - -// An internationalized message containing per-language versions of a snippet of -// text or a URL. -// One of the strings from a message will be picked up. The resolution proceeds -// as follows: -// 1. If the UI language matches the language code of a translation, -// the first matching translation is picked. -// 2. If a default UI language (e.g., English) matches the language code of a -// translation, the first matching translation is picked. -// 3. If some translation has an unspecified language code, that translation is -// picked. -message TranslatedString { - message Translation { - // A UTF-8 string containing the message. - required string text = 1; - // BCP-47 language code. Can be omitted if the language is unknown or if - // no i18n is done at all for the feed. At most one translation is - // allowed to have an unspecified language tag. - optional string language = 2; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features and - // modifications to the spec. - extensions 1000 to 1999; - } - // At least one translation must be provided. - repeated Translation translation = 1; - - // The extensions namespace allows 3rd-party developers to extend the - // GTFS Realtime Specification in order to add and evaluate new features and - // modifications to the spec. - extensions 1000 to 1999; -} diff --git a/python/google/__init__.py b/python/google/__init__.py deleted file mode 100644 index de40ea7..0000000 --- a/python/google/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__import__('pkg_resources').declare_namespace(__name__) diff --git a/python/google/transit/__init__.py b/python/google/transit/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/python/tests/test_gtfs_realtime_pb2.py b/python/tests/test_gtfs_realtime_pb2.py index ea670a0..5650876 100644 --- a/python/tests/test_gtfs_realtime_pb2.py +++ b/python/tests/test_gtfs_realtime_pb2.py @@ -16,7 +16,7 @@ import os.path -from google.transit import gtfs_realtime_pb2 +import gtfs_realtime_pb2 import unittest class GtfsRealtimeTest(unittest.TestCase): @@ -24,7 +24,7 @@ class GtfsRealtimeTest(unittest.TestCase): def testParseFromString(self): feed = gtfs_realtime_pb2.FeedMessage() data_dir = os.path.dirname(os.path.abspath(__file__)) - with open(os.path.join(data_dir, 'vehicle_position.pb'), 'r') as f: + with open(os.path.join(data_dir, 'vehicle_position.pb'), 'rb') as f: feed.ParseFromString(f.read()) self.assertEquals(1, len(feed.entity)) entity = feed.entity[0]