cta_redux 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +37 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE +22 -0
  6. data/README.md +16 -0
  7. data/Rakefile +2 -0
  8. data/cta_redux.gemspec +32 -0
  9. data/data/.gitkeep +0 -0
  10. data/data/cta-gtfs.db.gz +0 -0
  11. data/lib/cta_redux/api/api_response.rb +45 -0
  12. data/lib/cta_redux/api/bus_tracker.rb +178 -0
  13. data/lib/cta_redux/api/customer_alerts.rb +68 -0
  14. data/lib/cta_redux/api/train_tracker.rb +89 -0
  15. data/lib/cta_redux/bus_tracker.rb +183 -0
  16. data/lib/cta_redux/customer_alerts.rb +72 -0
  17. data/lib/cta_redux/faraday_middleware/bus_tracker_parser.rb +46 -0
  18. data/lib/cta_redux/faraday_middleware/customer_alerts_parser.rb +39 -0
  19. data/lib/cta_redux/faraday_middleware/simple_cache.rb +32 -0
  20. data/lib/cta_redux/faraday_middleware/train_tracker_parser.rb +37 -0
  21. data/lib/cta_redux/models/agency.rb +4 -0
  22. data/lib/cta_redux/models/bus.rb +46 -0
  23. data/lib/cta_redux/models/calendar.rb +7 -0
  24. data/lib/cta_redux/models/route.rb +62 -0
  25. data/lib/cta_redux/models/shape.rb +4 -0
  26. data/lib/cta_redux/models/stop.rb +66 -0
  27. data/lib/cta_redux/models/stop_time.rb +6 -0
  28. data/lib/cta_redux/models/train.rb +74 -0
  29. data/lib/cta_redux/models/transfer.rb +6 -0
  30. data/lib/cta_redux/models/trip.rb +64 -0
  31. data/lib/cta_redux/train_tracker.rb +103 -0
  32. data/lib/cta_redux/version.rb +3 -0
  33. data/lib/cta_redux.rb +50 -0
  34. data/script/gtfs_to_sqlite.rb +137 -0
  35. data/spec/bus_tracker_spec.rb +149 -0
  36. data/spec/customer_alerts_spec.rb +48 -0
  37. data/spec/spec_helper.rb +16 -0
  38. data/spec/stubs/alerts_response.xml +362 -0
  39. data/spec/stubs/getdirections_response.xml +16 -0
  40. data/spec/stubs/getpatterns_rt22_response.xml +2768 -0
  41. data/spec/stubs/getpredictions_rt22stpid15895_response.xml +59 -0
  42. data/spec/stubs/getpredictions_vid4361_response.xml +647 -0
  43. data/spec/stubs/getroutes_response.xml +774 -0
  44. data/spec/stubs/getservicebulletins_rt8_response.xml +110 -0
  45. data/spec/stubs/getstops_response.xml +614 -0
  46. data/spec/stubs/gettime_response.xml +2 -0
  47. data/spec/stubs/getvehicles_rt22_response.xml +239 -0
  48. data/spec/stubs/getvehicles_vid4394_response.xml +23 -0
  49. data/spec/stubs/route_status8_response.xml +1 -0
  50. data/spec/stubs/routes_response.xml +1 -0
  51. data/spec/stubs/ttarivals_stpid30141_response.xml +1 -0
  52. data/spec/stubs/ttfollow_run217_response.xml +1 -0
  53. data/spec/stubs/ttpositions_response.xml +1 -0
  54. data/spec/train_tracker_spec.rb +70 -0
  55. metadata +234 -0
@@ -0,0 +1,239 @@
1
+ <?xml version="1.0"?>
2
+ <bustime-response>
3
+
4
+ <vehicle>
5
+ <vid>4394</vid>
6
+ <tmstmp>20150214 11:40</tmstmp>
7
+ <lat>41.873779296875</lat>
8
+ <lon>-87.63054656982422</lon>
9
+ <hdg>178</hdg>
10
+ <pid>3932</pid>
11
+ <rt>22</rt>
12
+ <des>Howard</des>
13
+ <pdist>115</pdist>
14
+
15
+ <dly>false</dly>
16
+ <spd>0</spd>
17
+ <tablockid>22 -506</tablockid>
18
+ <tatripid>204506</tatripid>
19
+ <zone></zone>
20
+ </vehicle>
21
+
22
+ <vehicle>
23
+ <vid>4385</vid>
24
+ <tmstmp>20150214 11:40</tmstmp>
25
+ <lat>41.88655059814453</lat>
26
+ <lon>-87.62959838867188</lon>
27
+ <hdg>10</hdg>
28
+ <pid>3932</pid>
29
+ <rt>22</rt>
30
+ <des>Howard</des>
31
+ <pdist>6164</pdist>
32
+
33
+ <dly>false</dly>
34
+ <spd>0</spd>
35
+ <tablockid>22 -505</tablockid>
36
+ <tatripid>204505</tatripid>
37
+ <zone></zone>
38
+ </vehicle>
39
+
40
+ <vehicle>
41
+ <vid>4398</vid>
42
+ <tmstmp>20150214 11:40</tmstmp>
43
+ <lat>41.900115966796875</lat>
44
+ <lon>-87.63133239746094</lon>
45
+ <hdg>4</hdg>
46
+ <pid>3932</pid>
47
+ <rt>22</rt>
48
+ <des>Howard</des>
49
+ <pdist>11570</pdist>
50
+
51
+ <dly>false</dly>
52
+ <spd>0</spd>
53
+ <tablockid>22 -511</tablockid>
54
+ <tatripid>204504</tatripid>
55
+ <zone></zone>
56
+ </vehicle>
57
+
58
+ <vehicle>
59
+ <vid>4332</vid>
60
+ <tmstmp>20150214 11:41</tmstmp>
61
+ <lat>41.911133986253006</lat>
62
+ <lon>-87.6315689086914</lon>
63
+ <hdg>9</hdg>
64
+ <pid>3932</pid>
65
+ <rt>22</rt>
66
+ <des>Howard</des>
67
+ <pdist>15582</pdist>
68
+
69
+ <dly>false</dly>
70
+ <spd>0</spd>
71
+ <tablockid>22 -504</tablockid>
72
+ <tatripid>204503</tatripid>
73
+ <zone></zone>
74
+ </vehicle>
75
+
76
+ <vehicle>
77
+ <vid>4155</vid>
78
+ <tmstmp>20150214 11:41</tmstmp>
79
+ <lat>41.93629308847281</lat>
80
+ <lon>-87.64751815795898</lon>
81
+ <hdg>330</hdg>
82
+ <pid>3932</pid>
83
+ <rt>22</rt>
84
+ <des>Howard</des>
85
+ <pdist>25775</pdist>
86
+
87
+ <dly>false</dly>
88
+ <spd>7</spd>
89
+ <tablockid>22 -507</tablockid>
90
+ <tatripid>204502</tatripid>
91
+ <zone></zone>
92
+ </vehicle>
93
+
94
+ <vehicle>
95
+ <vid>4360</vid>
96
+ <tmstmp>20150214 11:40</tmstmp>
97
+ <lat>41.954769134521484</lat>
98
+ <lon>-87.662428855896</lon>
99
+ <hdg>334</hdg>
100
+ <pid>3932</pid>
101
+ <rt>22</rt>
102
+ <des>Howard</des>
103
+ <pdist>33863</pdist>
104
+
105
+ <dly>false</dly>
106
+ <spd>32</spd>
107
+ <tablockid>22 -510</tablockid>
108
+ <tatripid>204501</tatripid>
109
+ <zone></zone>
110
+ </vehicle>
111
+
112
+ <vehicle>
113
+ <vid>4345</vid>
114
+ <tmstmp>20150214 11:40</tmstmp>
115
+ <lat>41.97938868204753</lat>
116
+ <lon>-87.66833292643229</lon>
117
+ <hdg>0</hdg>
118
+ <pid>3932</pid>
119
+ <rt>22</rt>
120
+ <des>Howard</des>
121
+ <pdist>43083</pdist>
122
+
123
+ <dly>false</dly>
124
+ <spd>0</spd>
125
+ <tablockid>22 -503</tablockid>
126
+ <tatripid>204500</tatripid>
127
+ <zone></zone>
128
+ </vehicle>
129
+
130
+ <vehicle>
131
+ <vid>4154</vid>
132
+ <tmstmp>20150214 11:40</tmstmp>
133
+ <lat>42.01862335205078</lat>
134
+ <lon>-87.67300415039062</lon>
135
+ <hdg>358</hdg>
136
+ <pid>3936</pid>
137
+ <rt>22</rt>
138
+ <des>Harrison</des>
139
+ <pdist>132</pdist>
140
+
141
+ <dly>false</dly>
142
+ <spd>0</spd>
143
+ <tablockid>22 -502</tablockid>
144
+ <tatripid>204440</tatripid>
145
+ <zone></zone>
146
+ </vehicle>
147
+
148
+ <vehicle>
149
+ <vid>4340</vid>
150
+ <tmstmp>20150214 11:41</tmstmp>
151
+ <lat>41.99688278198242</lat>
152
+ <lon>-87.67039489746094</lon>
153
+ <hdg>172</hdg>
154
+ <pid>3936</pid>
155
+ <rt>22</rt>
156
+ <des>Harrison</des>
157
+ <pdist>9507</pdist>
158
+
159
+ <dly>false</dly>
160
+ <spd>36</spd>
161
+ <tablockid>22 -514</tablockid>
162
+ <tatripid>204439</tatripid>
163
+ <zone></zone>
164
+ </vehicle>
165
+
166
+ <vehicle>
167
+ <vid>4361</vid>
168
+ <tmstmp>20150214 11:40</tmstmp>
169
+ <lat>41.948960379948694</lat>
170
+ <lon>-87.65780591207837</lon>
171
+ <hdg>149</hdg>
172
+ <pid>3936</pid>
173
+ <rt>22</rt>
174
+ <des>Harrison</des>
175
+ <pdist>27431</pdist>
176
+
177
+ <dly>false</dly>
178
+ <spd>12</spd>
179
+ <tablockid>22 -501</tablockid>
180
+ <tatripid>204437</tatripid>
181
+ <zone></zone>
182
+ </vehicle>
183
+
184
+ <vehicle>
185
+ <vid>4336</vid>
186
+ <tmstmp>20150214 11:41</tmstmp>
187
+ <lat>41.93275705973307</lat>
188
+ <lon>-87.64481678715458</lon>
189
+ <hdg>157</hdg>
190
+ <pid>3936</pid>
191
+ <rt>22</rt>
192
+ <des>Harrison</des>
193
+ <pdist>34343</pdist>
194
+
195
+ <dly>false</dly>
196
+ <spd>9</spd>
197
+ <tablockid>22 -513</tablockid>
198
+ <tatripid>204436</tatripid>
199
+ <zone></zone>
200
+ </vehicle>
201
+
202
+ <vehicle>
203
+ <vid>4354</vid>
204
+ <tmstmp>20150214 11:41</tmstmp>
205
+ <lat>41.930145263671875</lat>
206
+ <lon>-87.64364079066685</lon>
207
+ <hdg>163</hdg>
208
+ <pid>3936</pid>
209
+ <rt>22</rt>
210
+ <des>Harrison</des>
211
+ <pdist>35353</pdist>
212
+
213
+ <dly>false</dly>
214
+ <spd>0</spd>
215
+ <tablockid>22 -508</tablockid>
216
+ <tatripid>204435</tatripid>
217
+ <zone></zone>
218
+ </vehicle>
219
+
220
+ <vehicle>
221
+ <vid>4388</vid>
222
+ <tmstmp>20150214 11:41</tmstmp>
223
+ <lat>41.902053113253615</lat>
224
+ <lon>-87.63161238184514</lon>
225
+ <hdg>187</hdg>
226
+ <pid>3936</pid>
227
+ <rt>22</rt>
228
+ <des>Harrison</des>
229
+ <pdist>46324</pdist>
230
+
231
+ <dly>false</dly>
232
+ <spd>0</spd>
233
+ <tablockid>22 -512</tablockid>
234
+ <tatripid>204433</tatripid>
235
+ <zone></zone>
236
+ </vehicle>
237
+
238
+ </bustime-response>
239
+
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0"?>
2
+ <bustime-response>
3
+
4
+ <vehicle>
5
+ <vid>4394</vid>
6
+ <tmstmp>20150214 11:58</tmstmp>
7
+ <lat>41.89195728302002</lat>
8
+ <lon>-87.6297836303711</lon>
9
+ <hdg>359</hdg>
10
+ <pid>3932</pid>
11
+ <rt>22</rt>
12
+ <des>Howard</des>
13
+ <pdist>8288</pdist>
14
+
15
+ <dly>false</dly>
16
+ <spd>10</spd>
17
+ <tablockid>22 -506</tablockid>
18
+ <tatripid>204506</tatripid>
19
+ <zone></zone>
20
+ </vehicle>
21
+
22
+ </bustime-response>
23
+
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="utf-8"?><CTARoutes><TimeStamp>20150214 14:21</TimeStamp><RouteInfo><Route>Halsted</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>8</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=167]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo></CTARoutes>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="utf-8"?><CTARoutes><TimeStamp>20150214 14:15</TimeStamp><ErrorCode>0</ErrorCode><ErrorMessage /><RouteInfo><Route>Red Line</Route><RouteColorCode>c60c30</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>Red</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/systemguide/redline.aspx]]></RouteURL><RouteStatus>Planned Work w/Reroute</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>Blue Line</Route><RouteColorCode>00a1de</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>Blue</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/systemguide/blueline.aspx]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Brown Line</Route><RouteColorCode>62361b</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>Brn</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/systemguide/brownline.aspx]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Green Line</Route><RouteColorCode>009b3a</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>G</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/systemguide/greenline.aspx]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Orange Line</Route><RouteColorCode>f9461c</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>Org</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/systemguide/orangeline.aspx]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Purple Line</Route><RouteColorCode>522398</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>P</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/systemguide/purpleline.aspx]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Purple Line Express</Route><RouteColorCode>522398</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>Pexp</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/systemguide/purpleline.aspx]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Pink Line</Route><RouteColorCode>e27ea6</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>Pink</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/systemguide/pinkline.aspx]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Yellow Line</Route><RouteColorCode>f9e300</RouteColorCode><RouteTextColor>000000</RouteTextColor><ServiceId>Y</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/systemguide/yellowline.aspx]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><ErrorCode>0</ErrorCode><ErrorMessage /><RouteInfo><Route>Bronzeville/Union Station</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>1</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=158]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Hyde Park Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>2</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=159]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>King Drive</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>3</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=160]]></RouteURL><RouteStatus>Special Note</RouteStatus><RouteStatusColor>000000</RouteStatusColor></RouteInfo><RouteInfo><Route>Cottage Grove</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>4</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=162]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>South Shore Night Bus</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>N5</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=164]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Jackson Park Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>6</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=165]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Harrison</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>7</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=166]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Halsted</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>8</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=167]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>South Halsted</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>8A</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=168]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Ashland</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>9</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=169]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Museum of Science &amp; Industry</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>10</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=171]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Lincoln</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>11</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=172]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Roosevelt</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>12</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=173]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Jeffery Jump</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>J14</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=174]]></RouteURL><RouteStatus>Normal Service*</RouteStatus><RouteStatusColor>000000</RouteStatusColor></RouteInfo><RouteInfo><Route>Jeffery Local</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>15</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=175]]></RouteURL><RouteStatus>Normal Service*</RouteStatus><RouteStatusColor>000000</RouteStatusColor></RouteInfo><RouteInfo><Route>16th-18th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>18</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=177]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>United Center Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>19</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=325]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>Madison</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>20</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=178]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>Cermak</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>21</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=180]]></RouteURL><RouteStatus>Special Note</RouteStatus><RouteStatusColor>000000</RouteStatusColor></RouteInfo><RouteInfo><Route>Clark</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>22</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=181]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>Wentworth</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>24</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=182]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>South Shore Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>26</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=183]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Stony Island</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>28</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=184]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>State</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>29</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=186]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>South Chicago</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>30</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=187]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>South Michigan</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>34</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=189]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>31st/35th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>35</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=190]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Broadway</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>36</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=191]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Sedgwick</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>37</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=335]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Pershing</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>39</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=193]]></RouteURL><RouteStatus>Service Change</RouteStatus><RouteStatusColor>000000</RouteStatusColor></RouteInfo><RouteInfo><Route>43rd</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>43</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=194]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Wallace-Racine</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>44</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=195]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>47th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>47</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=196]]></RouteURL><RouteStatus>Planned Reroute</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>South Damen</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>48</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=197]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Western</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>49</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=198]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>North Western</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>49B</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=200]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Damen</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>50</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=202]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>51st</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>51</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=203]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Kedzie/California</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>52</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=204]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>South Kedzie</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>52A</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=205]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Pulaski</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>53</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=206]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>South Pulaski</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>53A</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=207]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Cicero</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>54</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=209]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>North Cicero/Skokie Blvd.</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>54A</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=210]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>South Cicero</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>54B</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=211]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Garfield</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>55</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=213]]></RouteURL><RouteStatus>Normal Service*</RouteStatus><RouteStatusColor>000000</RouteStatusColor></RouteInfo><RouteInfo><Route>55th/Austin</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>55A</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=214]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>55th/Narragansett</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>55N</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=215]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Milwaukee</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>56</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=217]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>Laramie</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>57</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=219]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>59th/61st</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>59</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=220]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Blue Island/26th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>60</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=221]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>Archer</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>62</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=222]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Archer/Harlem</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>62H</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=223]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>63rd</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>63</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=224]]></RouteURL><RouteStatus>Planned Reroute</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>West 63rd</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>63W</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=225]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Grand</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>65</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=227]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Chicago</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>66</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=228]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>67th-69th-71st</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>67</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=229]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Northwest Highway</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>68</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=230]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Division</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>70</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=232]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>71st/South Shore</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>71</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=233]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>North</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>72</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=234]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Armitage</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>73</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=235]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Fullerton</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>74</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=236]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>74th-75th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>75</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=237]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Diversey</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>76</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=238]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Belmont</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>77</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=239]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Montrose</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>78</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=240]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>79th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>79</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=241]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Irving Park</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>80</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=242]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Lawrence</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>81</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=244]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>West Lawrence</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>81W</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=245]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Kimball-Homan</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>82</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=246]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Peterson</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>84</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=247]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Central</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>85</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=248]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>North Central</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>85A</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=249]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Narragansett/Ridgeland</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>86</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=250]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>87th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>87</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=251]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Higgins</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>88</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=252]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Harlem</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>90</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=253]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Austin</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>91</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=255]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Foster</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>92</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=256]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>California/Dodge</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>93</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=257]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>South California</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>94</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=258]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>West 95th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>95W</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=260]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>93rd-95th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>95E</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=259]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Lunt</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>96</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=261]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Skokie</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>97</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=262]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Avon Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>X98</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=263]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Jeffery Manor Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>100</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=264]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>West 103rd</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>103</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=265]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>East 103rd</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>106</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=266]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Halsted/95th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>108</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=267]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>111th/King Drive</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>111</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=268]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Pullman Shuttle</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>111A</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=347]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Vincennes/111th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>112</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=269]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Pullman/115th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>115</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=336]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Michigan/119th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>119</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=270]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Ogilvie/Streeterville Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>120</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=271]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Union/Streeterville Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>121</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=272]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Navy Pier</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>124</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=275]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>Water Tower Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>125</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=276]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Jackson</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>126</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=277]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Soldier Field Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>128</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=326]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Museum Campus</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>130</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=327]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Goose Island Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>132</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=279]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Stockton/LaSalle Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>134</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=280]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Clarendon/LaSalle Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>135</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=281]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Sheridan/LaSalle Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>136</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=282]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Stockton/Michigan Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>143</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=283]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Inner Drive/Michigan Exp.</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>146</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=286]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Outer Drive Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>147</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=287]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>Clarendon/Michigan Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>148</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=288]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Sheridan</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>151</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=289]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>Addison</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>152</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=290]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Devon</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>155</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=291]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>LaSalle</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>156</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=292]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Streeterville/Taylor</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>157</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=293]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>West 65th</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>165</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=294]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>69th-UPS Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>169</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=296]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>U. of Chicago/Midway</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>170</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=297]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>U. of Chicago/Hyde Park</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>171</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=298]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>U. of Chicago/Kenwood</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>172</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=299]]></RouteURL><RouteStatus>Bus Stop Relocation</RouteStatus><RouteStatusColor>06c</RouteStatusColor></RouteInfo><RouteInfo><Route>U. of Chicago Hospitals Express</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>192</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=302]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Central/Ridge</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>201</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=304]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Chicago/Golf</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>205</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=305]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>Evanston Circulator</Route><RouteColorCode>059</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>206</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/riding_cta/busroute.aspx?RouteId=306]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>All Train Routes</Route><RouteColorCode>000000</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>Train</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/travel_information/railstatus.aspx]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>All Routes</Route><RouteColorCode>000000</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>Systemwide</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/travel_information/systemalerts.aspx]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo><RouteInfo><Route>All Bus Routes</Route><RouteColorCode>000000</RouteColorCode><RouteTextColor>ffffff</RouteTextColor><ServiceId>Bus</ServiceId><RouteURL><![CDATA[http://www.transitchicago.com/travel_information/bus_status.aspx]]></RouteURL><RouteStatus>Normal Service</RouteStatus><RouteStatusColor>404040</RouteStatusColor></RouteInfo></CTARoutes>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="utf-8"?><ctatt><tmst>20150214 13:03:20</tmst><errCd>0</errCd><errNm /><eta><staId>40730</staId><stpId>30141</stpId><staNm>Washington/Wells</staNm><stpDe>Service at Inner Loop platform</stpDe><rn>301</rn><rt>Pink</rt><destSt>30114</destSt><destNm>54th/Cermak</destNm><trDr>5</trDr><prdt>20150214 13:02:57</prdt><arrT>20150214 13:05:57</arrT><isApp>0</isApp><isSch>0</isSch><isDly>0</isDly><isFlt>0</isFlt><flags /><lat>41.87691</lat><lon>-87.6282</lon><heading>267</heading></eta><eta><staId>40730</staId><stpId>30141</stpId><staNm>Washington/Wells</staNm><stpDe>Service at Inner Loop platform</stpDe><rn>711</rn><rt>Org</rt><destSt>30182</destSt><destNm>Midway</destNm><trDr>5</trDr><prdt>20150214 13:02:43</prdt><arrT>20150214 13:07:43</arrT><isApp>0</isApp><isSch>0</isSch><isDly>0</isDly><isFlt>0</isFlt><flags /><lat>41.87635</lat><lon>-87.62601</lon><heading>357</heading></eta><eta><staId>40730</staId><stpId>30141</stpId><staNm>Washington/Wells</staNm><stpDe>Service at Inner Loop platform</stpDe><rn>705</rn><rt>Org</rt><destSt>30182</destSt><destNm>Midway</destNm><trDr>5</trDr><prdt>20150214 13:02:55</prdt><arrT>20150214 13:20:55</arrT><isApp>0</isApp><isSch>0</isSch><isDly>0</isDly><isFlt>0</isFlt><flags /><lat>41.82659</lat><lon>-87.68557</lon><heading>52</heading></eta><eta><staId>40730</staId><stpId>30141</stpId><staNm>Washington/Wells</staNm><stpDe>Service at Inner Loop platform</stpDe><rn>309</rn><rt>Pink</rt><destSt>30114</destSt><destNm>54th/Cermak</destNm><trDr>5</trDr><prdt>20150214 13:02:56</prdt><arrT>20150214 13:20:56</arrT><isApp>0</isApp><isSch>0</isSch><isDly>0</isDly><isFlt>0</isFlt><flags /><lat>41.88344</lat><lon>-87.63387</lon><heading>358</heading></eta></ctatt>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="utf-8"?><ctatt><tmst>20150214 13:12:34</tmst><errCd>0</errCd><errNm /><position><lat>41.87349</lat><lon>-87.80696</lon><heading>95</heading></position><eta><staId>40180</staId><stpId>30034</stpId><staNm>Oak Park</staNm><stpDe>Oak Park to O'Hare</stpDe><rn>217</rn><rt>Blue Line</rt><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><prdt>20150214 13:11:40</prdt><arrT>20150214 13:13:40</arrT><isApp>0</isApp><isSch>0</isSch><isDly>0</isDly><isFlt>0</isFlt><flags /></eta><eta><staId>40010</staId><stpId>30001</stpId><staNm>Austin</staNm><stpDe>Austin to O'Hare</stpDe><rn>217</rn><rt>Blue Line</rt><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><prdt>20150214 13:11:40</prdt><arrT>20150214 13:14:40</arrT><isApp>0</isApp><isSch>0</isSch><isDly>0</isDly><isFlt>0</isFlt><flags /></eta><eta><staId>40970</staId><stpId>30187</stpId><staNm>Cicero</staNm><stpDe>Cicero to O'Hare</stpDe><rn>217</rn><rt>Blue Line</rt><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><prdt>20150214 13:11:40</prdt><arrT>20150214 13:19:40</arrT><isApp>0</isApp><isSch>0</isSch><isDly>0</isDly><isFlt>0</isFlt><flags /></eta><eta><staId>40920</staId><stpId>30179</stpId><staNm>Pulaski</staNm><stpDe>Service toward O'Hare</stpDe><rn>217</rn><rt>Blue Line</rt><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><prdt>20150214 13:11:40</prdt><arrT>20150214 13:22:40</arrT><isApp>0</isApp><isSch>0</isSch><isDly>0</isDly><isFlt>0</isFlt><flags /></eta><eta><staId>40250</staId><stpId>30048</stpId><staNm>Kedzie-Homan</staNm><stpDe>Service toward O'Hare</stpDe><rn>217</rn><rt>Blue Line</rt><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><prdt>20150214 13:11:40</prdt><arrT>20150214 13:24:40</arrT><isApp>0</isApp><isSch>0</isSch><isDly>0</isDly><isFlt>0</isFlt><flags /></eta><eta><staId>40220</staId><stpId>30042</stpId><staNm>Western (Forest Park Branch)</staNm><stpDe>Service toward O'Hare</stpDe><rn>217</rn><rt>Blue Line</rt><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><prdt>20150214 13:11:40</prdt><arrT>20150214 13:26:40</arrT><isApp>0</isApp><isSch>0</isSch><isDly>0</isDly><isFlt>0</isFlt><flags /></eta><eta><staId>40810</staId><stpId>30157</stpId><staNm>Illinois Medical District</staNm><stpDe>Service toward O'Hare</stpDe><rn>217</rn><rt>Blue Line</rt><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><prdt>20150214 13:11:40</prdt><arrT>20150214 13:29:40</arrT><isApp>0</isApp><isSch>0</isSch><isDly>0</isDly><isFlt>0</isFlt><flags /></eta></ctatt>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="utf-8"?><ctatt><tmst>20150214 13:55:10</tmst><errCd>0</errCd><errNm /><route name="red"><train><rn>801</rn><destSt>30173</destSt><destNm>Howard</destNm><trDr>1</trDr><nextStaId>41320</nextStaId><nextStpId>30255</nextStpId><nextStaNm>Belmont</nextStaNm><prdt>20150214 13:54:55</prdt><arrT>20150214 13:55:55</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.93975</lat><lon>-87.65338</lon><heading>359</heading></train><train><rn>802</rn><destSt>30173</destSt><destNm>Howard</destNm><trDr>1</trDr><nextStaId>40660</nextStaId><nextStpId>30127</nextStpId><nextStaNm>Armitage</nextStaNm><prdt>20150214 13:53:08</prdt><arrT>20150214 13:55:08</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.91043</lat><lon>-87.64716</lon><heading>299</heading></train><train><rn>803</rn><destSt>30173</destSt><destNm>Howard</destNm><trDr>1</trDr><nextStaId>40800</nextStaId><nextStpId>30155</nextStpId><nextStaNm>Sedgwick</nextStaNm><prdt>20150214 13:54:40</prdt><arrT>20150214 14:00:40</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.89678</lat><lon>-87.63595</lon><heading>307</heading></train><train><rn>804</rn><destSt>30089</destSt><destNm>95th/Dan Ryan</destNm><trDr>5</trDr><nextStaId>40450</nextStaId><nextStpId>30089</nextStpId><nextStaNm>95th/Dan Ryan</nextStaNm><prdt>20150214 13:54:55</prdt><arrT>20150214 13:55:55</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.73371</lat><lon>-87.62469</lon><heading>177</heading></train><train><rn>805</rn><destSt>30173</destSt><destNm>Howard</destNm><trDr>1</trDr><nextStaId>41230</nextStaId><nextStpId>30237</nextStpId><nextStaNm>47th</nextStaNm><prdt>20150214 13:54:51</prdt><arrT>20150214 13:55:51</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.80854</lat><lon>-87.63177</lon><heading>10</heading></train><train><rn>806</rn><destSt>30173</destSt><destNm>Howard</destNm><trDr>1</trDr><nextStaId>40910</nextStaId><nextStpId>30177</nextStpId><nextStaNm>63rd</nextStaNm><prdt>20150214 13:54:55</prdt><arrT>20150214 13:55:55</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.76984</lat><lon>-87.62584</lon><heading>358</heading></train><train><rn>807</rn><destSt>30089</destSt><destNm>95th/Dan Ryan</destNm><trDr>5</trDr><nextStaId>41090</nextStaId><nextStpId>30212</nextStpId><nextStaNm>Monroe</nextStaNm><prdt>20150214 13:54:49</prdt><arrT>20150214 13:55:49</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.88481</lat><lon>-87.62781</lon><heading>178</heading></train><train><rn>808</rn><destSt>30089</destSt><destNm>95th/Dan Ryan</destNm><trDr>5</trDr><nextStaId>40240</nextStaId><nextStpId>30047</nextStpId><nextStaNm>79th</nextStaNm><prdt>20150214 13:54:51</prdt><arrT>20150214 13:55:51</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.75381</lat><lon>-87.62537</lon><heading>174</heading></train><train><rn>809</rn><destSt>30089</destSt><destNm>95th/Dan Ryan</destNm><trDr>5</trDr><nextStaId>40770</nextStaId><nextStpId>30150</nextStpId><nextStaNm>Lawrence</nextStaNm><prdt>20150214 13:54:56</prdt><arrT>20150214 13:55:56</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.9713</lat><lon>-87.65849</lon><heading>178</heading></train><train><rn>819</rn><destSt>30089</destSt><destNm>95th/Dan Ryan</destNm><trDr>5</trDr><nextStaId>41220</nextStaId><nextStpId>30234</nextStpId><nextStaNm>Fullerton</nextStaNm><prdt>20150214 13:54:32</prdt><arrT>20150214 13:57:32</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.93739</lat><lon>-87.65332</lon><heading>177</heading></train><train><rn>901</rn><destSt>30089</destSt><destNm>95th/Dan Ryan</destNm><trDr>5</trDr><nextStaId>41000</nextStaId><nextStpId>30194</nextStpId><nextStaNm>Cermak-Chinatown</nextStaNm><prdt>20150214 13:54:29</prdt><arrT>20150214 13:57:29</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.8674</lat><lon>-87.6274</lon><heading>178</heading></train><train><rn>902</rn><destSt>30089</destSt><destNm>95th/Dan Ryan</destNm><trDr>5</trDr><nextStaId>41320</nextStaId><nextStpId>30256</nextStpId><nextStaNm>Belmont</nextStaNm><prdt>20150214 13:54:12</prdt><arrT>20150214 13:55:12</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.9452</lat><lon>-87.65353</lon><heading>178</heading></train><train><rn>903</rn><destSt>30089</destSt><destNm>95th/Dan Ryan</destNm><trDr>5</trDr><nextStaId>40540</nextStaId><nextStpId>30106</nextStpId><nextStaNm>Wilson</nextStaNm><prdt>20150214 13:54:56</prdt><arrT>20150214 13:55:56</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.96665</lat><lon>-87.65835</lon><heading>168</heading></train><train><rn>904</rn><destSt>30089</destSt><destNm>95th/Dan Ryan</destNm><trDr>5</trDr><nextStaId>41380</nextStaId><nextStpId>30268</nextStpId><nextStaNm>Bryn Mawr</nextStaNm><prdt>20150214 13:54:57</prdt><arrT>20150214 13:55:57</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.99026</lat><lon>-87.65908</lon><heading>177</heading></train><train><rn>906</rn><destSt>30173</destSt><destNm>Howard</destNm><trDr>1</trDr><nextStaId>41220</nextStaId><nextStpId>30233</nextStpId><nextStaNm>Fullerton</nextStaNm><prdt>20150214 13:54:38</prdt><arrT>20150214 13:55:38</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.92416</lat><lon>-87.65284</lon><heading>358</heading></train><train><rn>907</rn><destSt>30173</destSt><destNm>Howard</destNm><trDr>1</trDr><nextStaId>40380</nextStaId><nextStpId>30075</nextStpId><nextStaNm>Clark/Lake</nextStaNm><prdt>20150214 13:54:29</prdt><arrT>20150214 13:55:29</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.88574</lat><lon>-87.62898</lon><heading>269</heading></train><train><rn>909</rn><destSt>30089</destSt><destNm>95th/Dan Ryan</destNm><trDr>5</trDr><nextStaId>41170</nextStaId><nextStpId>30224</nextStpId><nextStaNm>Garfield</nextStaNm><prdt>20150214 13:54:50</prdt><arrT>20150214 13:55:50</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.79655</lat><lon>-87.6312</lon><heading>178</heading></train><train><rn>912</rn><destSt>30173</destSt><destNm>Howard</destNm><trDr>1</trDr><nextStaId>40100</nextStaId><nextStpId>30020</nextStpId><nextStaNm>Morse</nextStaNm><prdt>20150214 13:53:47</prdt><arrT>20150214 13:55:47</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>42.00107</lat><lon>-87.66106</lon><heading>309</heading></train><train><rn>913</rn><destSt>30173</destSt><destNm>Howard</destNm><trDr>1</trDr><nextStaId>41380</nextStaId><nextStpId>30267</nextStpId><nextStaNm>Bryn Mawr</nextStaNm><prdt>20150214 13:54:44</prdt><arrT>20150214 13:55:44</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.98074</lat><lon>-87.65876</lon><heading>358</heading></train><train><rn>914</rn><destSt>30173</destSt><destNm>Howard</destNm><trDr>1</trDr><nextStaId>40640</nextStaId><nextStpId>30123</nextStpId><nextStaNm>Madison/Wabash</nextStaNm><prdt>20150214 13:54:48</prdt><arrT>20150214 13:56:48</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.87452</lat><lon>-87.62655</lon><heading>33</heading></train><train><rn>915</rn><destSt>30173</destSt><destNm>Howard</destNm><trDr>1</trDr><nextStaId>41400</nextStaId><nextStpId>30080</nextStpId><nextStaNm>Roosevelt</nextStaNm><prdt>20150214 13:54:51</prdt><arrT>20150214 13:59:51</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.85321</lat><lon>-87.63097</lon><heading>343</heading></train></route><route name="blue"><train><rn>107</rn><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><nextStaId>40230</nextStaId><nextStpId>30044</nextStpId><nextStaNm>Cumberland</nextStaNm><prdt>20150214 13:54:41</prdt><arrT>20150214 13:56:41</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.98232</lat><lon>-87.8089</lon><heading>269</heading></train><train><rn>109</rn><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><nextStaId>40250</nextStaId><nextStpId>30048</nextStpId><nextStaNm>Kedzie-Homan</nextStaNm><prdt>20150214 13:54:50</prdt><arrT>20150214 13:55:50</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.87404</lat><lon>-87.71383</lon><heading>89</heading></train><train><rn>110</rn><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><nextStaId>40970</nextStaId><nextStpId>30187</nextStpId><nextStaNm>Cicero</nextStaNm><prdt>20150214 13:54:16</prdt><arrT>20150214 13:58:16</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.87079</lat><lon>-87.77521</lon><heading>93</heading></train><train><rn>111</rn><destSt>30077</destSt><destNm>Forest Park</destNm><trDr>5</trDr><nextStaId>40010</nextStaId><nextStpId>30002</nextStpId><nextStaNm>Austin</nextStaNm><prdt>20150214 13:54:54</prdt><arrT>20150214 13:56:54</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.87079</lat><lon>-87.761</lon><heading>245</heading></train><train><rn>112</rn><destSt>30077</destSt><destNm>Forest Park</destNm><trDr>5</trDr><nextStaId>40350</nextStaId><nextStpId>30069</nextStpId><nextStaNm>UIC-Halsted</nextStaNm><prdt>20150214 13:54:04</prdt><arrT>20150214 13:55:04</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.87552</lat><lon>-87.64535</lon><heading>270</heading></train><train><rn>113</rn><destSt>30077</destSt><destNm>Forest Park</destNm><trDr>5</trDr><nextStaId>40380</nextStaId><nextStpId>30374</nextStpId><nextStaNm>Clark/Lake</nextStaNm><prdt>20150214 13:54:58</prdt><arrT>20150214 13:55:58</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.88588</lat><lon>-87.64006</lon><heading>126</heading></train><train><rn>114</rn><destSt>30077</destSt><destNm>Forest Park</destNm><trDr>5</trDr><nextStaId>41280</nextStaId><nextStpId>30248</nextStpId><nextStaNm>Jefferson Park</nextStaNm><prdt>20150214 13:54:56</prdt><arrT>20150214 13:56:56</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.97063</lat><lon>-87.76089</lon><heading>113</heading></train><train><rn>115</rn><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><nextStaId>40380</nextStaId><nextStpId>30375</nextStpId><nextStaNm>Clark/Lake</nextStaNm><prdt>20150214 13:54:58</prdt><arrT>20150214 13:55:58</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.88574</lat><lon>-87.62992</lon><heading>269</heading></train><train><rn>120</rn><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><nextStaId>40590</nextStaId><nextStpId>30115</nextStpId><nextStaNm>Damen</nextStaNm><prdt>20150214 13:54:58</prdt><arrT>20150214 13:55:58</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.90416</lat><lon>-87.66786</lon><heading>300</heading></train><train><rn>121</rn><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><nextStaId>40790</nextStaId><nextStpId>30153</nextStpId><nextStaNm>Monroe</nextStaNm><prdt>20150214 13:54:36</prdt><arrT>20150214 13:55:36</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.87818</lat><lon>-87.6293</lon><heading>358</heading></train><train><rn>122</rn><destSt>0</destSt><destNm>UIC-Halsted</destNm><trDr>5</trDr><nextStaId>40320</nextStaId><nextStpId>30063</nextStpId><nextStaNm>Division</nextStaNm><prdt>20150214 13:54:55</prdt><arrT>20150214 13:55:55</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.90336</lat><lon>-87.6665</lon><heading>123</heading></train><train><rn>123</rn><destSt>0</destSt><destNm>UIC-Halsted</destNm><trDr>5</trDr><nextStaId>41280</nextStaId><nextStpId>30248</nextStpId><nextStaNm>Jefferson Park</nextStaNm><prdt>20150214 13:54:58</prdt><arrT>20150214 13:57:58</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.98245</lat><lon>-87.79183</lon><heading>89</heading></train><train><rn>127</rn><destSt>30077</destSt><destNm>Forest Park</destNm><trDr>5</trDr><nextStaId>40920</nextStaId><nextStpId>30180</nextStpId><nextStaNm>Pulaski</nextStaNm><prdt>20150214 13:54:53</prdt><arrT>20150214 13:56:53</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.87438</lat><lon>-87.70631</lon><heading>261</heading></train><train><rn>208</rn><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><nextStaId>41330</nextStaId><nextStpId>30259</nextStpId><nextStaNm>Montrose</nextStaNm><prdt>20150214 13:54:46</prdt><arrT>20150214 13:56:46</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.95296</lat><lon>-87.72921</lon><heading>299</heading></train><train><rn>209</rn><destSt>0</destSt><destNm>UIC-Halsted</destNm><trDr>5</trDr><nextStaId>40370</nextStaId><nextStpId>30073</nextStpId><nextStaNm>Washington</nextStaNm><prdt>20150214 13:54:50</prdt><arrT>20150214 13:55:50</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.88549</lat><lon>-87.62947</lon><heading>176</heading></train><train><rn>210</rn><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><nextStaId>40430</nextStaId><nextStpId>30084</nextStpId><nextStaNm>Clinton</nextStaNm><prdt>20150214 13:53:15</prdt><arrT>20150214 13:55:15</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.87552</lat><lon>-87.64841</lon><heading>89</heading></train><train><rn>212</rn><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><nextStaId>40550</nextStaId><nextStpId>30107</nextStpId><nextStaNm>Irving Park</nextStaNm><prdt>20150214 13:54:32</prdt><arrT>20150214 13:56:32</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.94735</lat><lon>-87.71909</lon><heading>310</heading></train><train><rn>213</rn><destSt>30077</destSt><destNm>Forest Park</destNm><trDr>5</trDr><nextStaId>40670</nextStaId><nextStpId>30130</nextStpId><nextStaNm>Western (O'Hare branch)</nextStaNm><prdt>20150214 13:54:22</prdt><arrT>20150214 13:56:22</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.91973</lat><lon>-87.69322</lon><heading>121</heading></train><train><rn>214</rn><destSt>0</destSt><destNm>UIC-Halsted</destNm><trDr>5</trDr><nextStaId>41240</nextStaId><nextStpId>30240</nextStpId><nextStaNm>Addison</nextStaNm><prdt>20150214 13:54:54</prdt><arrT>20150214 13:55:54</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.95257</lat><lon>-87.72852</lon><heading>119</heading></train><train><rn>215</rn><destSt>30077</destSt><destNm>Forest Park</destNm><trDr>5</trDr><nextStaId>40820</nextStaId><nextStpId>30160</nextStpId><nextStaNm>Rosemont</nextStaNm><prdt>20150214 13:54:59</prdt><arrT>20150214 13:56:59</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.97816</lat><lon>-87.88568</lon><heading>66</heading></train><train><rn>216</rn><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><nextStaId>40230</nextStaId><nextStpId>30044</nextStpId><nextStaNm>Cumberland</nextStaNm><prdt>20150214 13:54:55</prdt><arrT>20150214 13:55:55</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.98445</lat><lon>-87.82712</lon><heading>272</heading></train><train><rn>217</rn><destSt>30171</destSt><destNm>O'Hare</destNm><trDr>1</trDr><nextStaId>41020</nextStaId><nextStpId>30197</nextStpId><nextStaNm>Logan Square</nextStaNm><prdt>20150214 13:54:44</prdt><arrT>20150214 13:55:44</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.92834</lat><lon>-87.7064</lon><heading>304</heading></train></route><route name="brn"><train><rn>405</rn><destSt>30249</destSt><destNm>Kimball</destNm><trDr>1</trDr><nextStaId>40870</nextStaId><nextStpId>30167</nextStpId><nextStaNm>Francisco</nextStaNm><prdt>20150214 13:54:54</prdt><arrT>20150214 13:55:54</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.96621</lat><lon>-87.6941</lon><heading>269</heading></train><train><rn>406</rn><destSt>30249</destSt><destNm>Kimball</destNm><trDr>1</trDr><nextStaId>40800</nextStaId><nextStpId>30155</nextStpId><nextStaNm>Sedgwick</nextStaNm><prdt>20150214 13:54:41</prdt><arrT>20150214 13:56:41</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.90563</lat><lon>-87.63712</lon><heading>357</heading></train><train><rn>407</rn><destSt>30249</destSt><destNm>Kimball</destNm><trDr>1</trDr><nextStaId>40730</nextStaId><nextStpId>30142</nextStpId><nextStaNm>Washington/Wells</nextStaNm><prdt>20150214 13:54:59</prdt><arrT>20150214 13:56:59</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.8903</lat><lon>-87.63548</lon><heading>167</heading></train><train><rn>408</rn><destSt>30249</destSt><destNm>Kimball</destNm><trDr>1</trDr><nextStaId>41220</nextStaId><nextStpId>30235</nextStpId><nextStaNm>Fullerton</nextStaNm><prdt>20150214 13:53:09</prdt><arrT>20150214 13:54:09</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.92422</lat><lon>-87.65284</lon><heading>358</heading></train><train><rn>409</rn><destSt>30249</destSt><destNm>Kimball</destNm><trDr>1</trDr><nextStaId>40710</nextStaId><nextStpId>30137</nextStpId><nextStaNm>Chicago</nextStaNm><prdt>20150214 13:54:15</prdt><arrT>20150214 13:56:15</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.88897</lat><lon>-87.63397</lon><heading>357</heading></train><train><rn>410</rn><destSt>30249</destSt><destNm>Kimball</destNm><trDr>1</trDr><nextStaId>40680</nextStaId><nextStpId>30131</nextStpId><nextStaNm>Adams/Wabash</nextStaNm><prdt>20150214 13:53:42</prdt><arrT>20150214 13:55:42</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.87694</lat><lon>-87.62738</lon><heading>88</heading></train><train><rn>411</rn><destSt>30249</destSt><destNm>Loop</destNm><trDr>5</trDr><nextStaId>40800</nextStaId><nextStpId>30156</nextStpId><nextStaNm>Sedgwick</nextStaNm><prdt>20150214 13:54:35</prdt><arrT>20150214 13:56:35</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.91033</lat><lon>-87.64669</lon><heading>92</heading></train><train><rn>412</rn><destSt>30249</destSt><destNm>Loop</destNm><trDr>5</trDr><nextStaId>41460</nextStaId><nextStpId>30282</nextStpId><nextStaNm>Irving Park</nextStaNm><prdt>20150214 13:54:42</prdt><arrT>20150214 13:55:42</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.96175</lat><lon>-87.67517</lon><heading>179</heading></train><train><rn>415</rn><destSt>30249</destSt><destNm>Kimball</destNm><trDr>1</trDr><nextStaId>41460</nextStaId><nextStpId>30281</nextStpId><nextStaNm>Irving Park</nextStaNm><prdt>20150214 13:54:36</prdt><arrT>20150214 13:56:36</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.94702</lat><lon>-87.67474</lon><heading>357</heading></train><train><rn>417</rn><destSt>30249</destSt><destNm>Loop</destNm><trDr>5</trDr><nextStaId>41220</nextStaId><nextStpId>30236</nextStpId><nextStaNm>Fullerton</nextStaNm><prdt>20150214 13:54:47</prdt><arrT>20150214 13:56:47</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.93251</lat><lon>-87.65312</lon><heading>176</heading></train><train><rn>418</rn><destSt>30249</destSt><destNm>Loop</destNm><trDr>5</trDr><nextStaId>40870</nextStaId><nextStpId>30168</nextStpId><nextStaNm>Francisco</nextStaNm><prdt>20150214 13:54:35</prdt><arrT>20150214 13:56:35</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.96609</lat><lon>-87.70882</lon><heading>89</heading></train></route><route name="pink"><train><rn>302</rn><destSt>30114</destSt><destNm>54th/Cermak</destNm><trDr>1</trDr><nextStaId>41160</nextStaId><nextStpId>30222</nextStpId><nextStaNm>Clinton</nextStaNm><prdt>20150214 13:54:39</prdt><arrT>20150214 13:57:39</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.88344</lat><lon>-87.63387</lon><heading>358</heading></train><train><rn>303</rn><destSt>30114</destSt><destNm>Loop</destNm><trDr>1</trDr><nextStaId>41030</nextStaId><nextStpId>30199</nextStpId><nextStaNm>Polk</nextStaNm><prdt>20150214 13:54:56</prdt><arrT>20150214 13:55:56</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.86004</lat><lon>-87.66921</lon><heading>358</heading></train><train><rn>304</rn><destSt>30114</destSt><destNm>54th/Cermak</destNm><trDr>5</trDr><nextStaId>40260</nextStaId><nextStpId>30050</nextStpId><nextStaNm>State/Lake</nextStaNm><prdt>20150214 13:54:30</prdt><arrT>20150214 13:55:30</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.88574</lat><lon>-87.63089</lon><heading>89</heading></train><train><rn>305</rn><destSt>30114</destSt><destNm>54th/Cermak</destNm><trDr>5</trDr><nextStaId>40600</nextStaId><nextStpId>30118</nextStpId><nextStaNm>Kostner</nextStaNm><prdt>20150214 13:54:58</prdt><arrT>20150214 13:56:58</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.85386</lat><lon>-87.72431</lon><heading>269</heading></train><train><rn>306</rn><destSt>30114</destSt><destNm>54th/Cermak</destNm><trDr>5</trDr><nextStaId>40210</nextStaId><nextStpId>30041</nextStpId><nextStaNm>Damen</nextStaNm><prdt>20150214 13:54:56</prdt><arrT>20150214 13:55:56</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.85728</lat><lon>-87.66914</lon><heading>178</heading></train><train><rn>307</rn><destSt>30114</destSt><destNm>Loop</destNm><trDr>1</trDr><nextStaId>40600</nextStaId><nextStpId>30117</nextStpId><nextStaNm>Kostner</nextStaNm><prdt>20150214 13:54:34</prdt><arrT>20150214 13:56:34</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.85192</lat><lon>-87.74534</lon><heading>89</heading></train></route><route name="org"><train><rn>706</rn><destSt>30182</destSt><destNm>Loop</destNm><trDr>1</trDr><nextStaId>40120</nextStaId><nextStpId>30022</nextStpId><nextStaNm>35th/Archer</nextStaNm><prdt>20150214 13:54:39</prdt><arrT>20150214 13:57:39</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.80617</lat><lon>-87.67969</lon><heading>19</heading></train><train><rn>707</rn><destSt>30182</destSt><destNm>Midway</destNm><trDr>5</trDr><nextStaId>41400</nextStaId><nextStpId>30081</nextStpId><nextStaNm>Roosevelt</nextStaNm><prdt>20150214 13:54:40</prdt><arrT>20150214 13:55:40</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.86797</lat><lon>-87.62662</lon><heading>177</heading></train><train><rn>708</rn><destSt>30182</destSt><destNm>Midway</destNm><trDr>5</trDr><nextStaId>40120</nextStaId><nextStpId>30023</nextStpId><nextStaNm>35th/Archer</nextStaNm><prdt>20150214 13:54:44</prdt><arrT>20150214 13:56:44</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.83933</lat><lon>-87.66536</lon><heading>243</heading></train><train><rn>709</rn><destSt>30182</destSt><destNm>Midway</destNm><trDr>5</trDr><nextStaId>40380</nextStaId><nextStpId>30074</nextStpId><nextStaNm>Clark/Lake</nextStaNm><prdt>20150214 13:54:50</prdt><arrT>20150214 13:55:50</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.88573</lat><lon>-87.63367</lon><heading>89</heading></train><train><rn>710</rn><destSt>30182</destSt><destNm>Loop</destNm><trDr>1</trDr><nextStaId>40960</nextStaId><nextStpId>30185</nextStpId><nextStaNm>Pulaski</nextStaNm><prdt>20150214 13:54:46</prdt><arrT>20150214 13:55:46</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.79332</lat><lon>-87.73801</lon><heading>28</heading></train><train><rn>712</rn><destSt>30182</destSt><destNm>Midway</destNm><trDr>5</trDr><nextStaId>40310</nextStaId><nextStpId>30061</nextStpId><nextStaNm>Western</nextStaNm><prdt>20150214 13:54:39</prdt><arrT>20150214 13:55:39</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.80757</lat><lon>-87.67955</lon><heading>178</heading></train><train><rn>713</rn><destSt>30182</destSt><destNm>Midway</destNm><trDr>5</trDr><nextStaId>40160</nextStaId><nextStpId>30031</nextStpId><nextStaNm>LaSalle/Van Buren</nextStaNm><prdt>20150214 13:54:42</prdt><arrT>20150214 13:55:42</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.87691</lat><lon>-87.6282</lon><heading>267</heading></train><train><rn>714</rn><destSt>30182</destSt><destNm>Loop</destNm><trDr>1</trDr><nextStaId>41400</nextStaId><nextStpId>30080</nextStpId><nextStaNm>Roosevelt</nextStaNm><prdt>20150214 13:54:53</prdt><arrT>20150214 13:57:53</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.84941</lat><lon>-87.64158</lon><heading>64</heading></train></route><route name="g"><train><rn>004</rn><destSt>30004</destSt><destNm>Harlem/Lake</destNm><trDr>1</trDr><nextStaId>40260</nextStaId><nextStpId>30051</nextStpId><nextStaNm>State/Lake</nextStaNm><prdt>20150214 13:54:43</prdt><arrT>20150214 13:55:43</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.88443</lat><lon>-87.62622</lon><heading>358</heading></train><train><rn>007</rn><destSt>30139</destSt><destNm>Cottage Grove</destNm><trDr>5</trDr><nextStaId>41690</nextStaId><nextStpId>30382</nextStpId><nextStaNm>Cermak-McCormick Place</nextStaNm><prdt>20150214 13:54:54</prdt><arrT>20150214 13:56:54</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.86275</lat><lon>-87.62651</lon><heading>179</heading></train><train><rn>008</rn><destSt>30139</destSt><destNm>Cottage Grove</destNm><trDr>5</trDr><nextStaId>41360</nextStaId><nextStpId>30265</nextStpId><nextStaNm>California</nextStaNm><prdt>20150214 13:54:41</prdt><arrT>20150214 13:55:41</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.88432</lat><lon>-87.70615</lon><heading>93</heading></train><train><rn>009</rn><destSt>30004</destSt><destNm>Harlem/Lake</destNm><trDr>1</trDr><nextStaId>41400</nextStaId><nextStpId>30080</nextStpId><nextStaNm>Roosevelt</nextStaNm><prdt>20150214 13:54:45</prdt><arrT>20150214 13:57:45</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.86744</lat><lon>-87.62659</lon><heading>357</heading></train><train><rn>011</rn><destSt>30004</destSt><destNm>Harlem/Lake</destNm><trDr>1</trDr><nextStaId>40130</nextStaId><nextStpId>30024</nextStpId><nextStaNm>51st</nextStaNm><prdt>20150214 13:54:50</prdt><arrT>20150214 13:55:50</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.8</lat><lon>-87.61846</lon><heading>358</heading></train><train><rn>012</rn><destSt>30004</destSt><destNm>Harlem/Lake</destNm><trDr>1</trDr><nextStaId>40940</nextStaId><nextStpId>30183</nextStpId><nextStaNm>Halsted</nextStaNm><prdt>20150214 13:54:10</prdt><arrT>20150214 13:56:10</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.77908</lat><lon>-87.65681</lon><heading>89</heading></train><train><rn>604</rn><destSt>30057</destSt><destNm>Ashland/63rd</destNm><trDr>5</trDr><nextStaId>40300</nextStaId><nextStpId>30059</nextStpId><nextStaNm>Indiana</nextStaNm><prdt>20150214 13:54:55</prdt><arrT>20150214 13:56:55</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.82633</lat><lon>-87.62575</lon><heading>178</heading></train><train><rn>605</rn><destSt>30057</destSt><destNm>Ashland/63rd</destNm><trDr>5</trDr><nextStaId>40200</nextStaId><nextStpId>30039</nextStpId><nextStaNm>Randolph/Wabash</nextStaNm><prdt>20150214 13:54:46</prdt><arrT>20150214 13:55:46</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.88443</lat><lon>-87.62622</lon><heading>178</heading></train><train><rn>606</rn><destSt>30004</destSt><destNm>Harlem/Lake</destNm><trDr>1</trDr><nextStaId>41360</nextStaId><nextStpId>30266</nextStpId><nextStaNm>California</nextStaNm><prdt>20150214 13:54:47</prdt><arrT>20150214 13:57:47</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.88531</lat><lon>-87.66697</lon><heading>268</heading></train><train><rn>608</rn><destSt>30057</destSt><destNm>Ashland/63rd</destNm><trDr>5</trDr><nextStaId>40280</nextStaId><nextStpId>30054</nextStpId><nextStaNm>Central</nextStaNm><prdt>20150214 13:54:04</prdt><arrT>20150214 13:55:04</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>41.88729</lat><lon>-87.77413</lon><heading>89</heading></train><train><rn>610</rn><destSt>30004</destSt><destNm>Harlem/Lake</destNm><trDr>1</trDr><nextStaId>40480</nextStaId><nextStpId>30009</nextStpId><nextStaNm>Cicero</nextStaNm><prdt>20150214 13:54:03</prdt><arrT>20150214 13:56:03</arrT><isApp>0</isApp><isDly>0</isDly><flags /><lat>41.88541</lat><lon>-87.7254</lon><heading>273</heading></train></route><route name="p"><train><rn>505</rn><destSt>30176</destSt><destNm>Howard</destNm><trDr>5</trDr><nextStaId>40900</nextStaId><nextStpId>30176</nextStpId><nextStaNm>Howard</nextStaNm><prdt>20150214 13:54:26</prdt><arrT>20150214 13:55:26</arrT><isApp>1</isApp><isDly>0</isDly><flags /><lat>42.02761</lat><lon>-87.67833</lon><heading>170</heading></train></route><route name="y" /></ctatt>
@@ -0,0 +1,70 @@
1
+ base_path = File.expand_path(File.dirname(__FILE__))
2
+ data_path = File.expand_path(File.join(base_path, 'stubs'))
3
+
4
+ require File.join(base_path, "..", "lib", "cta_redux")
5
+
6
+ RSpec.describe CTA::TrainTracker do
7
+ stubs = Faraday::Adapter::Test::Stubs.new do |stub|
8
+ stub.get('/api/1.0/ttarrivals.aspx?key=&stpid=30141') { |env| [200, {}, File.read(File.join(data_path, 'ttarivals_stpid30141_response.xml'))] }
9
+ stub.get('/api/1.0/ttfollow.aspx?key=&runnumber=217') { |env| [200, {}, File.read(File.join(data_path, 'ttfollow_run217_response.xml'))] }
10
+ stub.get('/api/1.0/ttpositions.aspx?key=&rt=red,blue,g,y,p,org,brn,pink') { |env| [200, {}, File.read(File.join(data_path, 'ttpositions_response.xml'))] }
11
+ end
12
+
13
+ CTA::TrainTracker.key = ''
14
+ CTA::TrainTracker.connection.instance_variable_get(:@builder).delete(Faraday::Adapter::NetHttp)
15
+ CTA::TrainTracker.connection.adapter :test, stubs
16
+
17
+ describe "arrivals!" do
18
+ it "finds arrivals for washington/wells" do
19
+ response = CTA::TrainTracker.arrivals!(:station => 30141)
20
+
21
+ expect(response).to be_instance_of(CTA::TrainTracker::ArrivalsResponse)
22
+ expect(response.predictions.size).to eq(4)
23
+ expect(response.routes.size).to eq(2)
24
+ expect(response.trains.size).to eq(4)
25
+
26
+ expect(response.predictions.first.run).to eq("301")
27
+ expect(response.predictions.first.destination.stop_name).to eq("54th/Cermak")
28
+ expect(response.predictions.first.minutes).to eq(3)
29
+ expect(response.predictions.first.route.route_id).to eq("Pink")
30
+
31
+ expect(response.routes.last.route_id).to eq("Org")
32
+
33
+ expect(response.trains.last.route.route_type).to eq(1)
34
+ expect(response.trains.last.schd_trip_id).to eq("R705")
35
+ end
36
+ end
37
+
38
+ describe "follow!" do
39
+ it "finds all predictions for blue line run 217" do
40
+ response = CTA::TrainTracker.follow!(:run => 217)
41
+
42
+ expect(response).to be_instance_of(CTA::TrainTracker::FollowResponse)
43
+ expect(response.train).to be_instance_of(CTA::Train)
44
+ expect(response.train.route_id).to eq("Blue")
45
+ expect(response.train.route.route_id).to eq("Blue")
46
+ expect(response.train.predictions).to eq(response.predictions)
47
+ expect(response.predictions.first.direction).to eq("O'Hare-bound")
48
+ expect(response.predictions.first.destination.stop_name).to eq("O'Hare")
49
+ expect(response.predictions.first.approaching).to eq(false)
50
+ expect(response.predictions.first.minutes).to eq(2)
51
+ end
52
+ end
53
+
54
+ describe "locations!" do
55
+ it "finds all trains on the system" do
56
+ response = CTA::TrainTracker.positions!(:routes => [:red, :blue, :green, :yellow, :purple, :orange, :brown, :pink])
57
+
58
+ expect(response).to be_instance_of(CTA::TrainTracker::PositionsResponse)
59
+ expect(response.predictions.size).to eq(80)
60
+ expect(response.routes.size).to eq(8)
61
+ expect(response.trains.size).to eq(80)
62
+
63
+ expect(response.trains.last.route.route_id).to eq("Y")
64
+ expect(response.predictions.first.lon).to eq(-87.65338)
65
+ expect(response.predictions.first.route.route_id).to eq("Red")
66
+ expect(response.predictions.first.destination.stop_id).to eq(30173)
67
+ expect(response.predictions.first.trip.service_id).to eq(104701)
68
+ end
69
+ end
70
+ end