spacex 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58a0fbf1d077cbf0176536bb63223efff8c67f33
4
- data.tar.gz: 90864481997988c4cfc40ebc9932bb5dca6ff0d7
3
+ metadata.gz: 34d0f69775d8b88dc1ae18095c0f0bdb56b26d79
4
+ data.tar.gz: 572954573b7371c0bc4d7b90f686d23be4a9da9f
5
5
  SHA512:
6
- metadata.gz: f3bc930432c4d80021beed2eeb8d9ec0d00f80af446753ee7ce63dcd9b2ab2eb66250ff1eda6ecaa3734c1af036fa4172f1db7b4f25026bf3e3191617926a6d2
7
- data.tar.gz: 5a6b7134c8a491ba4f7d6f87e454f9ac92f488fc035f42bc51114e078fbaf70b0b612e4a6c1fc1d688b8ab49a7d41996391eb3ab33c6b0f854c62ab45a2a1e90
6
+ metadata.gz: 1474c8fb7d0fa7a9bc182b5031cf42ab5b81e9da553e2a9a71c114043cef62fcb6d3b0d5bd369dc68902a9c748a7f84b5328f04f0cda44a5f6aafcc7a0562d15
7
+ data.tar.gz: c46d6c09a8848cd5d19168ff70af8a1048945d730debf141e8e1da7cabd21861fbd0aefaaa43d1f34e12bb91cc7d9956858ab3b0e777a4dc7c3c495eff5e3221
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2018-10-13 07:55:19 -0400 using RuboCop version 0.51.0.
3
+ # on 2018-11-01 20:09:44 -0400 using RuboCop version 0.51.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -12,12 +12,12 @@ Lint/ParenthesesAsGroupedExpression:
12
12
  - 'spec/spacex/dragon_capsules_spec.rb'
13
13
  - 'spec/spacex/ships_spec.rb'
14
14
 
15
- # Offense count: 24
15
+ # Offense count: 36
16
16
  # Configuration parameters: CountComments, ExcludedMethods.
17
17
  Metrics/BlockLength:
18
- Max: 265
18
+ Max: 625
19
19
 
20
- # Offense count: 117
20
+ # Offense count: 136
21
21
  # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
22
22
  # URISchemes: http, https
23
23
  Metrics/LineLength:
data/CHANGELOG.md CHANGED
@@ -1,7 +1,18 @@
1
- ### 1.0.1 (next)
1
+ ### 1.0.2 (next)
2
2
 
3
3
  * Your contribution here.
4
4
 
5
+
6
+ ### 1.0.1
7
+
8
+ * [#45](https://github.com/rodolfobandeira/spacex/pull/45): Implement History endpoint [@invacuo](http://github.com/invacuo).
9
+ * [#48](https://github.com/rodolfobandeira/spacex/pull/48): Add ability to query specific Launch via `.info('flight_number')` - [@mtking2](http://github.com/mtking2).
10
+ * [#51](https://github.com/rodolfobandeira/spacex/pull/51): Added payloads endpoint [@maiafernando](http://github.com/maiafernando).
11
+ * [#52](https://github.com/rodolfobandeira/spacex/pull/52): Add ability to query Past Launches - [@mtking2](http://github.com/mtking2).
12
+ * [#54](https://github.com/rodolfobandeira/spacex/pull/54): Refactor ENDPOINT_URI - [@ludamillion](http://github.com/ludamillion).
13
+ * [#56](https://github.com/rodolfobandeira/spacex/pull/56): Add ability to query upcoming launches - [@mtking2](http://github.com/mtking2).
14
+
15
+
5
16
  ### 1.0.0 (2018/10/15)
6
17
 
7
18
  * [#41](https://github.com/rodolfobandeira/spacex/pull/41): General Refactor cleaning endpoint classes [@invacuo](http://github.com/invacuo).
@@ -16,6 +27,7 @@
16
27
  * [#25](https://github.com/rodolfobandeira/spacex/pull/25): Add code coverage tools - [@harman28](https://github.com/harman28).
17
28
  * [#27](https://github.com/rodolfobandeira/spacex/pull/27): Add ability to query next launch - [@Andrey-Raspopov](https://github.com/Andrey-Raspopov)
18
29
 
30
+
19
31
  ### 0.0.7 (2018/10/07)
20
32
 
21
33
  * Refactor responses getting multiple objects like Ships, Capsules to wrap a specific object. This helps translating specific properties like `id` and `class` to `ship_id`, `ship_class` - [@rodolfobandeira](https://github.com/rodolfobandeira).
@@ -25,14 +37,17 @@
25
37
  * [#9](https://github.com/rodolfobandeira/spacex/pull/9): Added Dragon Capsules information - [@JackieCalapristi](https://github.com/JackieCalapristi).
26
38
  * [#16](https://github.com/rodolfobandeira/spacex/pull/16): Added missions information - [@maiafernando](https://github.com/maiafernando).
27
39
 
40
+
28
41
  ### 0.0.6 (2018/08/22)
29
42
 
30
43
  * Added Roadster information - [@rodolfobandeira](https://github.com/rodolfobandeira).
31
44
 
45
+
32
46
  ### 0.0.5 (2018/08/21)
33
47
 
34
48
  * Added Company information and General Refactors - [@rodolfobandeira](https://github.com/rodolfobandeira).
35
49
 
50
+
36
51
  ### 0.0.4 (2018/08/21)
37
52
 
38
53
  * Initial public release - [@rodolfobandeira](https://github.com/rodolfobandeira).
data/README.md CHANGED
@@ -15,21 +15,32 @@ A Ruby library that consumes the [SpaceX API](https://github.com/r-spacex/SpaceX
15
15
  - [Capsules](#capsules)
16
16
  - `SPACEX::Capsules.info`
17
17
  - `SPACEX::Capsules.info('capsule_serial')`
18
- - [Company Info](#company-info) - `SPACEX::CompanyInfo.info`
18
+ - [Company Info](#company-info)
19
+ - `SPACEX::CompanyInfo.info`
19
20
  - [Cores](#cores)
20
21
  - `SPACEX::Cores.info`
21
22
  - `SPACEX::Cores.info('core_serial')`
22
23
  - [Dragon Capsules](#dragon-capsules)
23
24
  - `SPACEX::DragonCapsules.info`
24
25
  - `SPACEX::DragonCapsules.info('dragon_id')`
26
+ - [History](#history)
27
+ - `SPACEX::History.info`
28
+ - `SPACEX::History.info(4)`
25
29
  - [Launches](#launches)
30
+ - `SPACEX::Launches.all`
26
31
  - `SPACEX::Launches.info`
32
+ - `SPACEX::Launches.info('flight_number')`
27
33
  - `SPACEX::Launches.latest`
28
34
  - `SPACEX::Launches.next`
35
+ - `SPACEX::Launches.past`
29
36
  - [Missions](#missions)
30
37
  - `SPACEX::Missions.info`
31
38
  - `SPACEX::Missions.info('mission_id')`
32
- - [Roadster](#roadster) - `SPACEX::Roadster.info`
39
+ - [Payloads](#payloads)
40
+ - `SPACEX::Payloads.info`
41
+ - `SPACEX::Payloads.info('payload_id')`
42
+ - [Roadster](#roadster)
43
+ - `SPACEX::Roadster.info`
33
44
  - [Rockets](#rockets)
34
45
  - `SPACEX::Rockets.info`
35
46
  - `SPACEX::Rockets.info('falcon1')`
@@ -126,8 +137,8 @@ cores_info.first.water_landing # false
126
137
 
127
138
  ### Dragon Capsules
128
139
 
129
- - Get all dragon capsules: `SPACEX::DragonCapsules.info`
130
- - Get a specific dragon capsule (e.g., `dragon1`) by including the id in the call: `SPACEX::DragonCapsules.info('dragon_id')`
140
+ - Get information for all dragon capsules: `SPACEX::DragonCapsules.info`
141
+ - Get information about a specific dragon capsule: `SPACEX::DragonCapsules.info('dragon_id')`
131
142
 
132
143
  This code snippet shows the `dragon1` dragon capsule information:
133
144
 
@@ -177,14 +188,68 @@ dragon_capsules.first.wikipedia # "https://en.wikipedia.org/wiki/SpaceX_Dragon"
177
188
  dragon_capsules.first.description # "Dragon is a reusable spacecraft developed by SpaceX, an American private space transportation company based in Hawthorne, California. Dragon is launched into space by the SpaceX Falcon 9 two-stage-to-orbit launch vehicle. The Dragon spacecraft was originally designed for human travel, but so far has only been used to deliver cargo to the International Space Station (ISS)."
178
189
  ```
179
190
 
191
+ ### History
192
+
193
+ - Get information for all historical events: `SPACEX::History.info`
194
+ - Get information about a specific historical event: `SPACEX::History.info('4')`
195
+
196
+ ```ruby
197
+ require 'spacex'
198
+ historical_events = SPACEX::History.info
199
+
200
+ first_event = historical_events.first
201
+ first_event.id # 1
202
+ first_event.title # Falcon 1 Makes History
203
+ first_event.event_date_utc # 2008-09-28T23:15:00Z
204
+ first_event.event_date_unix # 1222643700
205
+ first_event.flight_number # 4
206
+ first_event.details # Falcon 1 becomes the first privately developed liquid fuel rocket to reach Earth orbit.
207
+ first_event.links['reddit'] # nil
208
+ first_event.links['article'] # http://www.spacex.com/news/2013/02/11/flight-4-launch-update-0
209
+ first_event.links['wikipedia'] # https://en.wikipedia.org/wiki/Falcon_1
210
+ ```
211
+
180
212
  ### Launches
181
213
 
182
- - Get information on all launches: `SPACEX::Launches.info`
214
+ - Get information for all launches: `SPACEX::Launches.all` or `SPACEX::Launches.info`
215
+ - Get information about a specific launch: `SPACEX::Launches.info('flight_number')`
216
+ - Get information on past launches: `SPACEX::Launches.past`
183
217
  - Get information on the next launch: `SPACEX::Launches.next`
184
218
  - Get the latest launch information: `SPACEX::Launches.latest`
219
+ - Get information on upcoming launches: `SPACEX::Launches.upcoming`
220
+
221
+ This code snippet shows how to get information for a specific launch by flight number and list the fields:
222
+
223
+ ```ruby
224
+ require 'spacex'
225
+ launch_68 = SPACEX::Launches.info(68)
226
+
227
+ launch_68.flight_number # 68
228
+ launch_68.mission_name # 'Telstar 18V'
229
+ launch_68.rocket.rocket_name # 'Falcon 9'
230
+ launch_68.rocket.first_stage.cores.first.land_success # true
231
+ ```
232
+
233
+ This code snippet shows how to get information on past launches:
234
+ ```ruby
235
+ past_launches = SPACEX::Launches.past
236
+
237
+ past_launches.first.flight_number # 1
238
+ past_launches.first.mission_name # 'FalconSat'
239
+ past_launches.first.rocket.rocket_name # 'Falcon 1'
240
+ past_launches.first.launch_success # false
241
+
242
+ past_launches.last.flight_number # 69
243
+ past_launches.last.mission_name # 'SAOCOM 1A'
244
+ past_launches.last.rocket.rocket_name # 'Falcon 9'
245
+ past_launches.last.rocket.first_stage.cores.first.land_success # true
246
+ past_launches.last.launch_success # true
247
+ ```
248
+
249
+
185
250
 
186
251
  The following code snippet shows the latest launch information and the data fields available on the Launch object:
187
-
252
+
188
253
  ```ruby
189
254
  require 'spacex'
190
255
  latest_launch = SPACEX::Launches.latest
@@ -255,10 +320,23 @@ latest_launch.upcoming # false
255
320
  latest_launch.static_fire_date_utc # '2018-08-02T15:53:00.000Z'
256
321
  ```
257
322
 
323
+ This code snippet shows how to get information on upcoming launches:
324
+ ```ruby
325
+ upcoming_launches = SPACEX::Launches.upcoming
326
+
327
+ upcoming_launches.first.flight_number # 70
328
+ upcoming_launches.first.mission_name # 'Es’hail 2'
329
+ upcoming_launches.first.launch_date_utc # '2018-11-14T20:46:00.000Z'
330
+
331
+ upcoming_launches.last.flight_number # 91
332
+ upcoming_launches.last.mission_name # 'GPS IIIA-3'
333
+ upcoming_launches.last.launch_date_utc # '2019-10-01T00:00:00.000Z'
334
+ ```
335
+
258
336
  ### Missions
259
337
 
260
- - Get all mission information: `SPACEX::Missions.info`
261
- - Get information about a specific mission (e.g., `F3364BF`): `SPACEX::Missions.info('mission_id')`
338
+ - Get information for all mission: `SPACEX::Missions.info`
339
+ - Get information about a specific mission: `SPACEX::Missions.info('mission_id')`
262
340
 
263
341
  This code shows how to get the first mission information and lists the fields:
264
342
 
@@ -275,6 +353,28 @@ missions.first.twitter # "https://twitter.com/IridiumBoss?lang=en"
275
353
  missions.first.description # "In 2017, Iridium began launching Iridium NEXT, a second-generation worldwide network of telecommunications satellites, consisting of 66 active satellites, with another nine in-orbit spares and six on-ground spares. These satellites will incorporate features such as data transmission that were not emphasized in the original design. The constellation will provide L-band data speeds of up to 128 kbit/s to mobile terminals, up to 1.5 Mbit/s to Iridium Pilot marine terminals, and high-speed Ka-band service of up to 8 Mbit/s to fixed/transportable terminals. The next-generation terminals and service are expected to be commercially available by the end of 2018. However, Iridium's proposed use of its next-generation satellites has raised concerns the service will harmfully interfere with GPS devices. The satellites will incorporate a secondary payload for Aireon, a space-qualified ADS-B data receiver. This is for use by air traffic control and, via FlightAware, for use by airlines. A tertiary payload on 58 satellites is a marine AIS ship-tracker receiver, for Canadian company exactEarth Ltd. Iridium can also be used to provide a data link to other satellites in space, enabling command and control of other space assets regardless of the position of ground stations and gateways."
276
354
  ```
277
355
 
356
+ ### Payloads
357
+
358
+ - Get information for all payloads: `SPACEX::Payloads.info`
359
+ - Get information about a specific payload: `SPACEX::Payloads.info('payload_id')`
360
+
361
+ The following code shows how to get information about a specific payload and lists the payload data fields:
362
+
363
+ ```ruby
364
+ payload = SPACEX::Payloads.info('FalconSAT-2')
365
+
366
+ payload.payload_id # 'FalconSAT-2'
367
+ payload.reused # false
368
+ payload.customers # ['DARPA']
369
+ payload.nationality # 'United States'
370
+ payload.manufacturer # 'SSTL'
371
+ payload.payload_type # 'Satellite'
372
+ payload.payload_mass_kg # 20
373
+ payload.payload_mass_lbs # 43
374
+ payload.orbit # 'LEO'
375
+ payload.orbit_params # {"reference_system"=>"geocentric", "regime"=>"low-earth", "longitude"=>nil, "semi_major_axis_km"=>nil, "eccentricity"=>nil, "periapsis_km"=>400, "apoapsis_km"=>500, "inclination_deg"=>39, "period_min"=>nil, "lifespan_years"=>nil, "epoch"=>nil, "mean_motion"=>nil, "raan"=>nil, "arg_of_pericenter"=>nil, "mean_anomaly"=>nil}
376
+ ```
377
+
278
378
  ### Roadster
279
379
 
280
380
  - Get roadster orbital data: `SPACEX::Roadster.info`
@@ -312,7 +412,7 @@ roadster.details # "Elon Musk's Tesla Roadster is an electric sports car that se
312
412
  ### Rockets
313
413
 
314
414
  - Get information for all rockets: `SPACEX::Rockets.info`
315
- - Get information about a specific rocket (e.g., `falcon1`: `SPACEX::Rockets.info('falcon1')`
415
+ - Get information about a specific rocket: `SPACEX::Rockets.info('rocket_id')`
316
416
 
317
417
  This example shows a single rocket and its data fields:
318
418
 
@@ -347,8 +447,8 @@ first_rocket.flickr_images # ["https://www.spacex.com/sites/spacex/files/styles/
347
447
 
348
448
  ### Ships
349
449
 
350
- - Get all ship information: `SPACEX::Ships.info`
351
- - Get information about a specific ship (e.g., `AMERICANCHAMPION`): `SPACEX::Ships.info('ship_id')`
450
+ - Get information for all ships: `SPACEX::Ships.info`
451
+ - Get information about a specific ship: `SPACEX::Ships.info('ship_id')`
352
452
 
353
453
  The following code shows how to get information about a specific ship and lists the ship data fields:
354
454
 
data/lib/spacex.rb CHANGED
@@ -4,13 +4,16 @@ require 'faraday_middleware/response_middleware'
4
4
  require 'hashie'
5
5
 
6
6
  require_relative 'spacex/base_request'
7
- require_relative 'spacex/version'
8
- require_relative 'spacex/launches'
7
+ require_relative 'spacex/capsules'
9
8
  require_relative 'spacex/company_info'
10
- require_relative 'spacex/roadster'
9
+ require_relative 'spacex/cores'
11
10
  require_relative 'spacex/dragon_capsules'
12
- require_relative 'spacex/ships'
11
+ require_relative 'spacex/endpoint'
12
+ require_relative 'spacex/history'
13
+ require_relative 'spacex/launches'
13
14
  require_relative 'spacex/missions'
15
+ require_relative 'spacex/payloads'
16
+ require_relative 'spacex/roadster'
14
17
  require_relative 'spacex/rockets'
15
- require_relative 'spacex/capsules'
16
- require_relative 'spacex/cores'
18
+ require_relative 'spacex/ships'
19
+ require_relative 'spacex/version'
@@ -42,7 +42,7 @@ module SPACEX
42
42
 
43
43
  def conn(path)
44
44
  Faraday.new(
45
- url: "#{SPACEX::ROOT_URI}/#{path}",
45
+ url: "#{SPACEX::ENDPOINT_URI}/#{path}",
46
46
  request: {
47
47
  params_encoder: Faraday::FlatParamsEncoder
48
48
  }
@@ -1,3 +1,3 @@
1
1
  module SPACEX
2
- ENDPOINT = 'https://api.spacexdata.com/v3/'.freeze
2
+ ENDPOINT_URI = 'https://api.spacexdata.com/v3'.freeze
3
3
  end
@@ -0,0 +1,7 @@
1
+ module SPACEX
2
+ module History
3
+ def self.info(id = nil)
4
+ SPACEX::BaseRequest.info("history/#{id}")
5
+ end
6
+ end
7
+ end
@@ -1,5 +1,9 @@
1
1
  module SPACEX
2
2
  module Launches
3
+ def self.info(flight_number = nil)
4
+ SPACEX::BaseRequest.info("launches/#{flight_number}")
5
+ end
6
+
3
7
  def self.latest
4
8
  SPACEX::BaseRequest.info('launches/latest')
5
9
  end
@@ -8,12 +12,16 @@ module SPACEX
8
12
  SPACEX::BaseRequest.info('launches/next')
9
13
  end
10
14
 
11
- def self.all
12
- SPACEX::BaseRequest.info('launches')
15
+ def self.past
16
+ SPACEX::BaseRequest.info('launches/past')
13
17
  end
14
18
 
15
- def self.info
16
- all
19
+ def self.upcoming
20
+ SPACEX::BaseRequest.info('launches/upcoming')
21
+ end
22
+
23
+ def self.all
24
+ info
17
25
  end
18
26
  end
19
27
  end
@@ -0,0 +1,7 @@
1
+ module SPACEX
2
+ module Payloads
3
+ def self.info(id = nil)
4
+ SPACEX::BaseRequest.info("payloads/#{id}")
5
+ end
6
+ end
7
+ end
@@ -1,6 +1,5 @@
1
1
  module SPACEX
2
- VERSION = '1.0.0'.freeze
3
- ROOT_URI = 'https://api.spacexdata.com/v3'.freeze
2
+ VERSION = '1.0.1'.freeze
4
3
 
5
4
  def self.help
6
5
  puts 'https://github.com/rodolfobandeira/spacex'
@@ -0,0 +1,62 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.spacexdata.com/v3/history/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.15.3
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Tue, 16 Oct 2018 02:39:03 GMT
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Transfer-Encoding:
26
+ - chunked
27
+ Connection:
28
+ - keep-alive
29
+ Set-Cookie:
30
+ - __cfduid=d9de20e41d3db5772f4d955e6b09a65b81539657543; expires=Wed, 16-Oct-19
31
+ 02:39:03 GMT; path=/; domain=.spacexdata.com; HttpOnly; Secure
32
+ Vary:
33
+ - Accept-Encoding, Origin
34
+ X-Dns-Prefetch-Control:
35
+ - 'off'
36
+ X-Frame-Options:
37
+ - SAMEORIGIN
38
+ Strict-Transport-Security:
39
+ - max-age=15552000; includeSubDomains
40
+ X-Download-Options:
41
+ - noopen
42
+ X-Content-Type-Options:
43
+ - nosniff
44
+ X-Xss-Protection:
45
+ - 1; mode=block
46
+ Access-Control-Allow-Origin:
47
+ - "*"
48
+ X-Response-Time:
49
+ - 40ms
50
+ Expect-Ct:
51
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
52
+ Server:
53
+ - cloudflare
54
+ Cf-Ray:
55
+ - 46a7271e795d2438-IAD
56
+ body:
57
+ encoding: ASCII-8BIT
58
+ string: !binary |-
59
+ W3siaWQiOjEsInRpdGxlIjoiRmFsY29uIDEgTWFrZXMgSGlzdG9yeSIsImV2ZW50X2RhdGVfdXRjIjoiMjAwOC0wOS0yOFQyMzoxNTowMFoiLCJldmVudF9kYXRlX3VuaXgiOjEyMjI2NDM3MDAsImZsaWdodF9udW1iZXIiOjQsImRldGFpbHMiOiJGYWxjb24gMSBiZWNvbWVzIHRoZSBmaXJzdCBwcml2YXRlbHkgZGV2ZWxvcGVkIGxpcXVpZCBmdWVsIHJvY2tldCB0byByZWFjaCBFYXJ0aCBvcmJpdC4iLCJsaW5rcyI6eyJyZWRkaXQiOm51bGwsImFydGljbGUiOiJodHRwOi8vd3d3LnNwYWNleC5jb20vbmV3cy8yMDEzLzAyLzExL2ZsaWdodC00LWxhdW5jaC11cGRhdGUtMCIsIndpa2lwZWRpYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZhbGNvbl8xIn19LHsiaWQiOjIsInRpdGxlIjoiU3BhY2VYIFdpbnMgJDEuNkIgQ1JTIENvbnRyYWN0IiwiZXZlbnRfZGF0ZV91dGMiOiIyMDA4LTEyLTIzVDAxOjAwOjAwWiIsImV2ZW50X2RhdGVfdW5peCI6MTIyOTk5NDAwMCwiZmxpZ2h0X251bWJlciI6bnVsbCwiZGV0YWlscyI6Ik5BU0EgYXdhcmRzIFNwYWNlWCAkMS42QiBDb21tZXJjaWFsIFJlc3VwcGx5IFNlcnZpY2VzIChDUlMpIGNvbnRyYWN0LiIsImxpbmtzIjp7InJlZGRpdCI6bnVsbCwiYXJ0aWNsZSI6Imh0dHBzOi8vd3d3Lm5hc2FzcGFjZWZsaWdodC5jb20vMjAwOC8xMi9zcGFjZXgtYW5kLW9yYml0YWwtd2luLWh1Z2UtY3JzLWNvbnRyYWN0LWZyb20tbmFzYS8iLCJ3aWtpcGVkaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21tZXJjaWFsX1Jlc3VwcGx5X1NlcnZpY2VzIn19LHsiaWQiOjMsInRpdGxlIjoiRmFsY29uIDEgRmxpZ2h0IDUgTWFrZXMgSGlzdG9yeSIsImV2ZW50X2RhdGVfdXRjIjoiMjAwOS0wNy0xM1QwMzozNTowMFoiLCJldmVudF9kYXRlX3VuaXgiOjEyNDc0NTYxMDAsImZsaWdodF9udW1iZXIiOjUsImRldGFpbHMiOiJGYWxjb24gMSBGbGlnaHQgNSBtYWtlcyBoaXN0b3J5LCBiZWNvbWluZyB0aGUgZmlyc3QgcHJpdmF0ZWx5IGRldmVsb3BlZCBsaXF1aWQgZnVlbCByb2NrZXQgdG8gZGVsaXZlciBhIGNvbW1lcmNpYWwgc2F0ZWxsaXRlIHRvIEVhcnRoIG9yYml0LiIsImxpbmtzIjp7InJlZGRpdCI6bnVsbCwiYXJ0aWNsZSI6Imh0dHA6Ly93d3cuc3BhY2V4LmNvbS9uZXdzLzIwMTMvMDIvMTIvZmFsY29uLTEtZmxpZ2h0LTUiLCJ3aWtpcGVkaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWxjb25fMSJ9fSx7ImlkIjo0LCJ0aXRsZSI6IkZhbGNvbiA5IEZpcnN0IEZsaWdodCIsImV2ZW50X2RhdGVfdXRjIjoiMjAxMC0wNi0wNFQxODo0NTowMFoiLCJldmVudF9kYXRlX3VuaXgiOjEyNzU2NzcxMDAsImZsaWdodF9udW1iZXIiOjYsImRldGFpbHMiOiJNZXQgMTAwJSBvZiBtaXNzaW9uIG9iamVjdGl2ZXMgb24gdGhlIGZpcnN0IGZsaWdodCEiLCJsaW5rcyI6eyJyZWRkaXQiOm51bGwsImFydGljbGUiOiJodHRwOi8vd3d3LmJiYy5jb20vbmV3cy8xMDIwOTcwNCIsIndpa2lwZWRpYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RyYWdvbl9TcGFjZWNyYWZ0X1F1YWxpZmljYXRpb25fVW5pdCJ9fSx7ImlkIjo1LCJ0aXRsZSI6IkRyYWdvbiBSZXR1cm5zIEZyb20gRWFydGggT3JiaXQiLCJldmVudF9kYXRlX3V0YyI6IjIwMTAtMTItMDhUMTU6NDM6MDBaIiwiZXZlbnRfZGF0ZV91bml4IjoxMjkxODIyOTgwLCJmbGlnaHRfbnVtYmVyIjo3LCJkZXRhaWxzIjoiT24gRGVjZW1iZXIgOCwgMjAxMCwgRHJhZ29uIGJlY2FtZSB0aGUgZmlyc3QgcHJpdmF0ZWx5IGRldmVsb3BlZCBzcGFjZWNyYWZ0IGluIGhpc3RvcnkgdG8gcmUtZW50ZXIgZnJvbSBsb3ctRWFydGggb3JiaXQuIiwibGlua3MiOnsicmVkZGl0IjpudWxsLCJhcnRpY2xlIjoiaHR0cDovL3d3dy5jbm4uY29tLzIwMTAvVVMvMTIvMDgvc3BhY2UuZmxpZ2h0L2luZGV4Lmh0bWwiLCJ3aWtpcGVkaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGFjZVhfQ09UU19EZW1vX0ZsaWdodF8xIn19LHsiaWQiOjYsInRpdGxlIjoiRmlyc3QgRHJhZ29uIFZpc2l0IHRvIFNwYWNlIFN0YXRpb24iLCJldmVudF9kYXRlX3V0YyI6IjIwMTItMTAtMDhUMDA6MzU6MDBaIiwiZXZlbnRfZGF0ZV91bml4IjoxMzQ5NjU2NTAwLCJmbGlnaHRfbnVtYmVyIjo5LCJkZXRhaWxzIjoiRHJhZ29uIGJlY29tZXMgdGhlIGZpcnN0IHByaXZhdGUgc3BhY2VjcmFmdCBpbiBoaXN0b3J5IHRvIHZpc2l0IHRoZSBzcGFjZSBzdGF0aW9uLiIsImxpbmtzIjp7InJlZGRpdCI6bnVsbCwiYXJ0aWNsZSI6Imh0dHA6Ly90aGVzcGFjZXJldmlldy5jb20vYXJ0aWNsZS8yMTY4LzEiLCJ3aWtpcGVkaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TcGFjZVhfQ1JTLTEifX0seyJpZCI6NywidGl0bGUiOiJHcmFzc2hvcHBlciBDb21wbGV0ZXMgSGFsZi1NaWxlIEZsaWdodCIsImV2ZW50X2RhdGVfdXRjIjoiMjAxMy0xMC0wN1QwMTowMDowMFoiLCJldmVudF9kYXRlX3VuaXgiOjEzODExMDc2MDAsImZsaWdodF9udW1iZXIiOm51bGwsImRldGFpbHMiOiJUaGUgR3Jhc3Nob3BwZXIgcHJvZ3JhbSBmaW5pc2hlZCB3aXRoIGEgNzQ0bSBmbGlnaHQsIGhvdmVyLCBhbmQgbGFuZGluZy4iLCJsaW5rcyI6eyJyZWRkaXQiOm51bGwsImFydGljbGUiOiJodHRwOi8vc3BhY2VuZXdzLmNvbS8zNzc0MHNwYWNleC1yZXRpcmVzLWdyYXNzaG9wcGVyLW5ldy10ZXN0LXJpZy10by1mbHktaW4tZGVjZW1iZXIvIiwid2lraXBlZGlhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR3Jhc3Nob3BwZXJfKHJvY2tldCkifX0seyJpZCI6OCwidGl0bGUiOiJGaXJzdCBGbGlnaHQgb2YgRmFsY29uIDkgdG8gR1RPIiwiZXZlbnRfZGF0ZV91dGMiOiIyMDEzLTEyLTAzVDIyOjQxOjAwWiIsImV2ZW50X2RhdGVfdW5peCI6MTM4NjExMDQ2MCwiZmxpZ2h0X251bWJlciI6MTIsImRldGFpbHMiOiJGYWxjb24gOSByZWFjaGVzIEdlb3N5bmNocm9ub3VzIFRyYW5zZmVyIE9yYml0IiwibGlua3MiOnsicmVkZGl0IjpudWxsLCJhcnRpY2xlIjoiaHR0cDovL3d3dy5uZXdzcGFjZWpvdXJuYWwuY29tLzIwMTMvMDMvMjcvYWZ0ZXItZHJhZ29uLXNwYWNleHMtZm9jdXMtcmV0dXJucy10by1mYWxjb24vIiwid2lraXBlZGlhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU0VTLTgifX0seyJpZCI6OSwidGl0bGUiOiJGaXJzdCBTdGFnZSBMYW5kaW5nIiwiZXZlbnRfZGF0ZV91dGMiOiIyMDE0LTA0LTE4VDE5OjI1OjAwWiIsImV2ZW50X2RhdGVfdW5peCI6MTM5Nzg0OTEwMCwiZmxpZ2h0X251bWJlciI6MTQsImRldGFpbHMiOiJGYWxjb24gOSBmaXJzdCBzdGFnZSBzdWNjZXNzZnVsbHkgbGFuZHMgaW4gQXRsYW50aWMgT2NlYW4uIiwibGlua3MiOnsicmVkZGl0IjpudWxsLCJhcnRpY2xlIjoiaHR0cHM6Ly93d3cuc3BhY2UuY29tLzI1NTYyLXNwYWNleC1mYWxjb24tOS1yZXVzYWJsZS1yb2NrZXQtdGVzdC5odG1sIiwid2lraXBlZGlhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BhY2VYX0NSUy0zIn19LHsiaWQiOjEwLCJ0aXRsZSI6IkZhbGNvbiA5IFJldXNhYmxlIFRlc3QgVmVoaWNsZSBGbGllcyAxMDAwTSIsImV2ZW50X2RhdGVfdXRjIjoiMjAxNC0wNS0wMlQwMTowMDowMFoiLCJldmVudF9kYXRlX3VuaXgiOjEzOTg5OTI0MDAsImZsaWdodF9udW1iZXIiOm51bGwsImRldGFpbHMiOiJWZWhpY2xlIGNvbXBsZXRlcyBoaWdoZXN0IGxlYXAgdG8gZGF0ZSwgbGFuZHMgc2FmZWx5LiIsImxpbmtzIjp7InJlZGRpdCI6bnVsbCwiYXJ0aWNsZSI6Imh0dHA6Ly93d3cucGFyYWJvbGljYXJjLmNvbS8yMDE0LzA1LzAyL2ZhbGNvbi05LXJldXNhYmxlLXZlaGljbGUtZmxpZXMtMTAwMC1tZXRlcnMvIiwid2lraXBlZGlhIjpudWxsfX0seyJpZCI6MTEsInRpdGxlIjoiU3BhY2VYIEF3YXJkZWQgQ29tbWVyY2lhbCBDcmV3IENvbnRyYWN0IiwiZXZlbnRfZGF0ZV91dGMiOiIyMDE0LTA5LTE2VDAxOjAwOjAwWiIsImV2ZW50X2RhdGVfdW5peCI6MTQxMDgyOTIwMCwiZmxpZ2h0X251bWJlciI6bnVsbCwiZGV0YWlscyI6Ik5BU0EgYXdhcmRzICQyLjYgYmlsbGlvbiBTcGFjZVggY29udHJhY3QgdG8gZmx5IEFtZXJpY2FuIGFzdHJvbmF1dHMuIiwibGlua3MiOnsicmVkZGl0IjpudWxsLCJhcnRpY2xlIjoiaHR0cHM6Ly93d3cud2FzaGluZ3RvbnBvc3QuY29tL25ld3MvdGhlLXN3aXRjaC93cC8yMDE0LzA5LzE2L25hc2EtYXdhcmRzLXNwYWNlLWNvbnRyYWN0LXRvLWJvZWluZy1hbmQtc3BhY2V4Lz91dG1fdGVybT0uZDYzODgzOTBkMDcxIiwid2lraXBlZGlhIjpudWxsfX0seyJpZCI6MTIsInRpdGxlIjoiRHJvbmUgU2hpcCBMYW5kaW5ncyIsImV2ZW50X2RhdGVfdXRjIjoiMjAxNS0wMS0xMFQwOTo0NzowMFoiLCJldmVudF9kYXRlX3VuaXgiOjE0MjA4ODMyMjAsImZsaWdodF9udW1iZXIiOjE5LCJkZXRhaWxzIjoiU3BhY2VYIGJlZ2lucyBzZXJpZXMgb2YgZmlyc3Qgc3RhZ2UgbGFuZGluZyBhdHRlbXB0cyBvbiBhbiBhdXRvbm9tb3VzIHNwYWNlcG9ydCBkcm9uZSBzaGlwLiIsImxpbmtzIjp7InJlZGRpdCI6Imh0dHA6Ly93d3cucmVkZGl0LmNvbS9yL3NwYWNleC9jb21tZW50cy8ycnJkaGEiLCJhcnRpY2xlIjoiaHR0cHM6Ly9zcGFjZWZsaWdodG5vdy5jb20vMjAxNS8wMS8xMC9kcmFnb24tc3VjY2Vzc2Z1bGx5LWxhdW5jaGVkLXJvY2tldC1yZWNvdmVyeS1kZW1vLWNyYXNoLWxhbmRzLyIsIndpa2lwZWRpYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwYWNlWF9DUlMtNSJ9fSx7ImlkIjoxMywidGl0bGUiOiJQYWQgQWJvcnQgVGVzdCIsImV2ZW50X2RhdGVfdXRjIjoiMjAxNS0wNS0wNlQxMzowMDowMFoiLCJldmVudF9kYXRlX3VuaXgiOjE0MzA5MTcyMDAsImZsaWdodF9udW1iZXIiOm51bGwsImRldGFpbHMiOiJDcmV3IERyYWdvbiB0ZXN0cyBsYXVuY2ggYWJvcnQgc3lzdGVtLCB3aGljaCBjYW4gcHJvdmlkZSBhc3Ryb25hdXRzIHdpdGggZXNjYXBlIGNhcGFiaWxpdHkgYWxsIHRoZSB3YXkgdG8gb3JiaXQuIiwibGlua3MiOnsicmVkZGl0IjoiaHR0cHM6Ly93d3cucmVkZGl0LmNvbS9yL3NwYWNleC9jb21tZW50cy8zNTI3enYvb2ZmaWNpYWxfdmlkZW9fcGFkX2Fib3J0X3Rlc3RfMjAxNS8iLCJhcnRpY2xlIjoiaHR0cHM6Ly9zcGFjZWZsaWdodG5vdy5jb20vMjAxNS8wNC8yMS9kcmFnb24tcGFkLWFib3J0LXRlc3Qtc2V0LWZvci1lYXJseS1tYXkvIiwid2lraXBlZGlhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGFkX2Fib3J0X3Rlc3QifX0seyJpZCI6MTQsInRpdGxlIjoiRmlyc3QgTGFuZCBMYW5kaW5nIiwiZXZlbnRfZGF0ZV91dGMiOiIyMDE1LTEyLTIyVDAxOjI5OjAwWiIsImV2ZW50X2RhdGVfdW5peCI6MTQ1MDc0Nzc0MCwiZmxpZ2h0X251bWJlciI6MjUsImRldGFpbHMiOiJPbiBEZWNlbWJlciAyMSwgMjAxNSwgdGhlIEZhbGNvbiA5IHJvY2tldCBkZWxpdmVyZWQgMTEgY29tbXVuaWNhdGlvbnMgc2F0ZWxsaXRlcyB0byBvcmJpdCwgYW5kIHRoZSBmaXJzdCBzdGFnZSByZXR1cm5lZCBhbmQgbGFuZGVkIGF0IExhbmRpbmcgWm9uZSAxIC3igJMgdGhlIGZpcnN0LWV2ZXIgb3JiaXRhbCBjbGFzcyByb2NrZXQgbGFuZGluZy4iLCJsaW5rcyI6eyJyZWRkaXQiOiJodHRwczovL3d3dy5yZWRkaXQuY29tL3Ivc3BhY2V4L2NvbW1lbnRzLzN4Z3hoNS9yc3BhY2V4X29yYmNvbW1fb2cyX2xhdW5jaF8yX29mZmljaWFsX2xhdW5jaC8iLCJhcnRpY2xlIjoiaHR0cHM6Ly9zcGFjZWZsaWdodG5vdy5jb20vMjAxNS8xMi8yMi9yb3VuZC10cmlwLXJvY2tldC1mbGlnaHQtZ2l2ZXMtc3BhY2V4LWEtdHJpZmVjdGEtb2Ytc3VjY2Vzc2VzLyIsIndpa2lwZWRpYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZhbGNvbl85X2ZsaWdodF8yMCJ9fSx7ImlkIjoxNSwidGl0bGUiOiJEcm9uZXNoaXAgTGFuZGluZyIsImV2ZW50X2RhdGVfdXRjIjoiMjAxNi0wNC0wOFQyMDo0MzowMFoiLCJldmVudF9kYXRlX3VuaXgiOjE0NjAxNDgxODAsImZsaWdodF9udW1iZXIiOjI4LCJkZXRhaWxzIjoiT24gQXByaWwgOCwgMjAxNiwgdGhlIEZhbGNvbiA5IHJvY2tldCBsYXVuY2hlZCB0aGUgRHJhZ29uIHNwYWNlY3JhZnQgdG8gdGhlIEludGVybmF0aW9uYWwgU3BhY2UgU3RhdGlvbiwgYW5kIHRoZSBmaXJzdCBzdGFnZSByZXR1cm5lZCBhbmQgbGFuZGVkIG9uIHRoZSBPZiBDb3Vyc2UgSSBTdGlsbCBMb3ZlIFlvdSBkcm9uZXNoaXAuIiwibGlua3MiOnsicmVkZGl0IjoiaHR0cHM6Ly93d3cucmVkZGl0LmNvbS9yL3NwYWNleC9jb21tZW50cy80ZHRvbHkvcnNwYWNleF9zcGFjZXhfY3JzOF9vZmZpY2lhbF9sYXVuY2hfZGlzY3Vzc2lvbi8iLCJhcnRpY2xlIjoiaHR0cHM6Ly9zcGFjZWZsaWdodG5vdy5jb20vMjAxNi8wNC8wOC9zcGFjZXgtbGFuZHMtcm9ja2V0LW9uLWZsb2F0aW5nLXBsYXRmb3JtLWFmdGVyLXN0YXRpb24tcmVzdXBwbHktbGF1bmNoLyIsIndpa2lwZWRpYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwYWNlWF9DUlMtOCJ9fSx7ImlkIjoxNiwidGl0bGUiOiJGaXJzdCBSZWZsaWdodCIsImV2ZW50X2RhdGVfdXRjIjoiMjAxNy0wMy0zMFQyMjoyNzowMFoiLCJldmVudF9kYXRlX3VuaXgiOjE0OTA5MTI4MjAsImZsaWdodF9udW1iZXIiOjM4LCJkZXRhaWxzIjoiT24gTWFyY2ggMzAsIDIwMTcsIFNwYWNlWCBhY2hpZXZlZCB0aGUgd29ybGQncyBmaXJzdCByZWZsaWdodCBvZiBhbiBvcmJpdGFsIGNsYXNzIHJvY2tldC4gRm9sbG93aW5nIGRlbGl2ZXJ5IG9mIHRoZSBwYXlsb2FkLCB0aGUgRmFsY29uIDkgZmlyc3Qgc3RhZ2UgcmV0dXJuZWQgdG8gRWFydGggZm9yIHRoZSBzZWNvbmQgdGltZS4iLCJsaW5rcyI6eyJyZWRkaXQiOiJodHRwczovL3d3dy5yZWRkaXQuY29tL3Ivc3BhY2V4L2NvbW1lbnRzLzYyYXFpNy9yc3BhY2V4X3NlczEwX29mZmljaWFsX2xhdW5jaF9kaXNjdXNzaW9uX3VwZGF0ZXMvIiwiYXJ0aWNsZSI6Imh0dHBzOi8vc3BhY2VmbGlnaHRub3cuY29tLzIwMTcvMDMvMzEvc3BhY2V4LWZsaWVzLXJvY2tldC1mb3Itc2Vjb25kLXRpbWUtaW4taGlzdG9yaWMtdGVzdC1vZi1jb3N0LWN1dHRpbmctdGVjaG5vbG9neS8iLCJ3aWtpcGVkaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TRVMtMTAifX0seyJpZCI6MTcsInRpdGxlIjoiRmlyc3QgRHJhZ29uIFJlZmxpZ2h0IiwiZXZlbnRfZGF0ZV91dGMiOiIyMDE3LTA2LTAzVDIxOjA3OjAwWiIsImV2ZW50X2RhdGVfdW5peCI6MTQ5NjUyNDAyMCwiZmxpZ2h0X251bWJlciI6NDEsImRldGFpbHMiOiJUaGlzIERyYWdvbiByZXN1cHBseSBtaXNzaW9uIHJlcHJlc2VudGVkIHRoZSBmaXJzdCByZWZsaWdodCBvZiBhIGNvbW1lcmNpYWwgc3BhY2VjcmFmdCB0byBhbmQgZnJvbSB0aGUgSW50ZXJuYXRpb25hbCBTcGFjZSBTdGF0aW9uLiIsImxpbmtzIjp7InJlZGRpdCI6Imh0dHBzOi8vd3d3LnJlZGRpdC5jb20vci9zcGFjZXgvY29tbWVudHMvNmVrdGt0L3dlbGNvbWVfdG9fdGhlX3JzcGFjZXhfY3JzMTFfb2ZmaWNpYWxfbGF1bmNoLyIsImFydGljbGUiOiJodHRwczovL3NwYWNlZmxpZ2h0bm93LmNvbS8yMDE3LzA2LzAzL3JldXNlZC1kcmFnb24tY2FyZ28tY2Fwc3VsZS1sYXVuY2hlZC1vbi1qb3VybmV5LXRvLXNwYWNlLXN0YXRpb24vIiwid2lraXBlZGlhIjoiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3BhY2VYX0NSUy0xMSJ9fSx7ImlkIjoxOCwidGl0bGUiOiJGYWxjb24gSGVhdnkgVGVzdCBGbGlnaHQiLCJldmVudF9kYXRlX3V0YyI6IjIwMTgtMDItMDZUMjA6NDU6MDBaIiwiZXZlbnRfZGF0ZV91bml4IjoxNTE3OTQ5OTAwLCJmbGlnaHRfbnVtYmVyIjo1NSwiZGV0YWlscyI6Ik1haWRlbiBmbGlnaHQgb2YgRmFsY29uIEhlYXZ5LCB1c2luZyB0d28gcmVjb3ZlcmVkIEZhbGNvbiA5IGNvcmVzIGFzIHNpZGUgYm9vc3RlcnMgKGZyb20gdGhlIFRoYWljb20gOCBhbmQgQ1JTLTkgbWlzc2lvbnMpLCBhcyB3ZWxsIGFzIGEgbW9kaWZpZWQgQmxvY2sgMyBib29zdGVyIHJlaW5mb3JjZWQgdG8gZW5kdXJlIHRoZSBhZGRpdGlvbmFsIGxvYWQgZnJvbSB0aGUgdHdvIHNpZGUgYm9vc3RlcnMuIFRoZSBzdGF0aWMgZmlyZSB0ZXN0LCBoZWxkIG9uIEphbnVhcnkgMjQsIHdhcyB0aGUgZmlyc3QgdGltZSAyNyBlbmdpbmVzIHdlcmUgdGVzdGVkIHRvZ2V0aGVyLiBUaGUgbGF1bmNoIHdhcyBhIHN1Y2Nlc3MsIGFuZCB0aGUgc2lkZSBib29zdGVycyBsYW5kZWQgc2ltdWx0YW5lb3VzbHkgYXQgYWRqYWNlbnQgZ3JvdW5kIHBhZHMuIERyb25lIHNoaXAgbGFuZGluZyBvZiB0aGUgY2VudHJhbCBjb3JlIGZhaWxlZCBkdWUgdG8gVEVB4oCTVEVCIGNoZW1pY2FsIGlnbml0ZXIgcnVubmluZyBvdXQsIHByZXZlbnRpbmcgdHdvIG9mIGl0cyBlbmdpbmVzIGZyb20gcmVzdGFydGluZzsgdGhlIGxhbmRpbmcgZmFpbHVyZSBjYXVzZWQgZGFtYWdlIHRvIHRoZSBuZWFyYnkgZHJvbmUgc2hpcC4gRmluYWwgYnVybiB0byBoZWxpb2NlbnRyaWMgTWFyc+KAk0VhcnRoIG9yYml0IHdhcyBwZXJmb3JtZWQgYWZ0ZXIgdGhlIHNlY29uZCBzdGFnZSBhbmQgcGF5bG9hZCBjcnVpc2VkIGZvciA2IGhvdXJzIHRocm91Z2ggdGhlIFZhbiBBbGxlbiBiZWx0cy4gTGF0ZXIsIEVsb24gTXVzayB0d2VldGVkIHRoYXQgdGhlIHRoaXJkIGJ1cm4gd2FzIHN1Y2Nlc3NmdWwsIGFuZCBKUEwncyBIT1JJWk9OUyBzeXN0ZW0gc2hvd2VkIHRoZSBzZWNvbmQgc3RhZ2UgYW5kIHBheWxvYWQgaW4gYW4gb3JiaXQgd2l0aCBhbiBhcGhlbGlvbiBvZiAxLjY3IEFVLiBUaGUgbGl2ZSB3ZWJjYXN0IHByb3ZlZCBpbW1lbnNlbHkgcG9wdWxhciwgYXMgaXQgYmVjYW1lIHRoZSBzZWNvbmQgbW9zdCB3YXRjaGVkIGxpdmVzdHJlYW0gZXZlciBvbiBZb3VUdWJlLCByZWFjaGluZyBvdmVyIDIuMyBtaWxsaW9uIGNvbmN1cnJlbnQgdmlld3MuIiwibGlua3MiOnsicmVkZGl0IjoiaHR0cHM6Ly93d3cucmVkZGl0LmNvbS9yL3NwYWNleC9jb21tZW50cy83dmc2M3gvcnNwYWNleF9mYWxjb25faGVhdnlfdGVzdF9mbGlnaHRfb2ZmaWNpYWxfbGF1bmNoLyIsImFydGljbGUiOiJodHRwczovL3NwYWNlZmxpZ2h0bm93LmNvbS8yMDE4LzAyLzA3L3NwYWNleC1kZWJ1dHMtd29ybGRzLW1vc3QtcG93ZXJmdWwtcm9ja2V0LXNlbmRzLXRlc2xhLXRvd2FyZC10aGUtYXN0ZXJvaWQtYmVsdC8iLCJ3aWtpcGVkaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GYWxjb25fSGVhdnlfdGVzdF9mbGlnaHQifX0seyJpZCI6MTksInRpdGxlIjoiRmlyc3QgQmxvY2sgNSBMYXVuY2giLCJldmVudF9kYXRlX3V0YyI6IjIwMTgtMDUtMTFUMjA6MTQ6MDBaIiwiZXZlbnRfZGF0ZV91bml4IjoxNTI2MDY5NjQwLCJmbGlnaHRfbnVtYmVyIjo2MSwiZGV0YWlscyI6IlRoZSBCYW5nYWJhbmRodSBTYXRlbGxpdGUtMSBtaXNzaW9uIHNlcnZlZCBhcyB0aGUgZmlyc3QgZmxpZ2h0IG9mIEZhbGNvbiA5IEJsb2NrIDUsIHRoZSBmaW5hbCBzdWJzdGFudGlhbCB1cGdyYWRlIHRvIFNwYWNlWOKAmXMgRmFsY29uIDkgbGF1bmNoIHZlaGljbGUuIEZhbGNvbiA5IEJsb2NrIDUgaXMgZGVzaWduZWQgdG8gYmUgY2FwYWJsZSBvZiAxMCBvciBtb3JlIGZsaWdodHMgd2l0aCB2ZXJ5IGxpbWl0ZWQgcmVmdXJiaXNobWVudCBhcyBTcGFjZVggY29udGludWVzIHRvIHN0cml2ZSBmb3IgcmFwaWQgcmV1c2FiaWxpdHkgYW5kIGV4dHJlbWVseSBoaWdoIHJlbGlhYmlsaXR5LiIsImxpbmtzIjp7InJlZGRpdCI6Imh0dHBzOi8vd3d3LnJlZGRpdC5jb20vci9zcGFjZXgvY29tbWVudHMvOGlvcTN1L3JzcGFjZXhfYmFuZ2FiYW5kaHUxX29mZmljaWFsX2xhdW5jaF9kaXNjdXNzaW9uLyIsImFydGljbGUiOiJodHRwczovL3NwYWNlZmxpZ2h0bm93LmNvbS8yMDE4LzA1LzExL3NwYWNleC1kZWJ1dHMtYW4taW1wcm92ZWQtaHVtYW4tcmF0ZWQtbW9kZWwtb2YtdGhlLWZhbGNvbi05LXJvY2tldC8iLCJ3aWtpcGVkaWEiOiJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYW5nYWJhbmRodS0xIn19LHsiaWQiOjIwLCJ0aXRsZSI6IkZpcnN0IEJsb2NrIDUgUmVmbGlnaHQiLCJldmVudF9kYXRlX3V0YyI6IjIwMTgtMDgtMDdUMDU6MTg6MDAuMDAwWiIsImV2ZW50X2RhdGVfdW5peCI6MTUzMzYxOTA4MCwiZmxpZ2h0X251bWJlciI6NjcsImRldGFpbHMiOiJJbmRvbmVzaWFuIGNvbXNhdCBpbnRlbmRlZCB0byByZXBsYWNlIHRoZSBhZ2luZyBUZWxrb20gMSBhdCAxMDjCsCBFLiBGaXJzdCByZWZsaWdodCBvZiBhIEJsb2NrIDUtdmVyc2lvbiBib29zdGVyLiIsImxpbmtzIjp7InJlZGRpdCI6Imh0dHBzOi8vd3d3LnJlZGRpdC5jb20vci9zcGFjZXgvY29tbWVudHMvOTUzOW5yL3JzcGFjZXhfbWVyYWhfcHV0aWhfdGVsa29tNF9vZmZpY2lhbF9sYXVuY2gvIiwiYXJ0aWNsZSI6Imh0dHBzOi8vc3BhY2VmbGlnaHRub3cuY29tLzIwMTgvMDgvMDcvaW5kb25lc2lhbi1jb21tdW5pY2F0aW9ucy1zYXRlbGxpdGUtZGVwbG95ZWQtaW4tb3JiaXQtYnktc3BhY2V4LyIsIndpa2lwZWRpYSI6Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RlbGtvbV9JbmRvbmVzaWEifX1d
60
+ http_version:
61
+ recorded_at: Tue, 16 Oct 2018 02:39:03 GMT
62
+ recorded_with: VCR 4.0.0
@@ -0,0 +1,62 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.spacexdata.com/v3/history/4
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.15.3
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - "*/*"
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Tue, 16 Oct 2018 02:43:50 GMT
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Transfer-Encoding:
26
+ - chunked
27
+ Connection:
28
+ - keep-alive
29
+ Set-Cookie:
30
+ - __cfduid=d54727cd9ad91c46626c14f99de479f611539657830; expires=Wed, 16-Oct-19
31
+ 02:43:50 GMT; path=/; domain=.spacexdata.com; HttpOnly; Secure
32
+ Vary:
33
+ - Accept-Encoding, Origin
34
+ X-Dns-Prefetch-Control:
35
+ - 'off'
36
+ X-Frame-Options:
37
+ - SAMEORIGIN
38
+ Strict-Transport-Security:
39
+ - max-age=15552000; includeSubDomains
40
+ X-Download-Options:
41
+ - noopen
42
+ X-Content-Type-Options:
43
+ - nosniff
44
+ X-Xss-Protection:
45
+ - 1; mode=block
46
+ Access-Control-Allow-Origin:
47
+ - "*"
48
+ X-Response-Time:
49
+ - 37ms
50
+ Expect-Ct:
51
+ - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
52
+ Server:
53
+ - cloudflare
54
+ Cf-Ray:
55
+ - 46a72e1da893241a-IAD
56
+ body:
57
+ encoding: ASCII-8BIT
58
+ string: '{"id":4,"title":"Falcon 9 First Flight","event_date_utc":"2010-06-04T18:45:00Z","event_date_unix":1275677100,"flight_number":6,"details":"Met
59
+ 100% of mission objectives on the first flight!","links":{"reddit":null,"article":"http://www.bbc.com/news/10209704","wikipedia":"https://en.wikipedia.org/wiki/Dragon_Spacecraft_Qualification_Unit"}}'
60
+ http_version:
61
+ recorded_at: Tue, 16 Oct 2018 02:43:50 GMT
62
+ recorded_with: VCR 4.0.0