aws-sdk-iotwireless 1.25.0 → 1.27.0

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
  SHA256:
3
- metadata.gz: 445b0deebc8f94f3017b7798d1a9e423aef276a5e9574e4e1f87116255a0940f
4
- data.tar.gz: 6e46180d05501f84b64b31a28edbddb499e32d7e9860cebbf3a6f480ed6852df
3
+ metadata.gz: 3dc8b3a78c0de2b14a63d02e02aab6cab03c30aa4e0d7dda45e0d0c4ead2d0df
4
+ data.tar.gz: 183a43a2faac23cf032b61a7bee943672f6a8ebf43406bc32c708e0dbd8ed4bf
5
5
  SHA512:
6
- metadata.gz: 45161cbc0c72fc1087bae2e1c27abd0a28c564f2642989b19d53917f849402c67247f5cfd27794e54a82f730131c8ffc30cede06338cba27b7c93cff34bc8f2b
7
- data.tar.gz: ff7d7dc9b15b5db407a23518407a63aecefa003ca38f10488fdd67fbb6346b5ab41a0f40d1418b27fc1287904bd436a6a4ed5b7e29fd51b6cbf50d5efbbc3da1
6
+ metadata.gz: 6601cd867991c24cc0f221ef6b2d2b51a470cd666f78d9c63d341b65e2855c31c5df2b9d3315b0a79c5a4b5429ad0846e32a3994b4b6580ccd682e1c92f6fb26
7
+ data.tar.gz: e632ebbf3e1045dc2b86cbe9614532c57addf561cb3160ae580396a401b082de5780b1d470b3fa3da53f92766c6dba8da0c28d97f56f143d1d1005eafe99f914
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.27.0 (2022-10-25)
5
+ ------------------
6
+
7
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
8
+
9
+ 1.26.0 (2022-08-25)
10
+ ------------------
11
+
12
+ * Feature - This release includes a new feature for the customers to enable the LoRa gateways to send out beacons for Class B devices and an option to select one or more gateways for Class C devices when sending the LoRaWAN downlink messages.
13
+
4
14
  1.25.0 (2022-08-08)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.25.0
1
+ 1.27.0
@@ -30,7 +30,7 @@ require 'aws-sdk-core/plugins/http_checksum.rb'
30
30
  require 'aws-sdk-core/plugins/checksum_algorithm.rb'
31
31
  require 'aws-sdk-core/plugins/defaults_mode.rb'
32
32
  require 'aws-sdk-core/plugins/recursion_detection.rb'
33
- require 'aws-sdk-core/plugins/signature_v4.rb'
33
+ require 'aws-sdk-core/plugins/sign.rb'
34
34
  require 'aws-sdk-core/plugins/protocols/rest_json.rb'
35
35
 
36
36
  Aws::Plugins::GlobalConfiguration.add_identifier(:iotwireless)
@@ -79,8 +79,9 @@ module Aws::IoTWireless
79
79
  add_plugin(Aws::Plugins::ChecksumAlgorithm)
80
80
  add_plugin(Aws::Plugins::DefaultsMode)
81
81
  add_plugin(Aws::Plugins::RecursionDetection)
82
- add_plugin(Aws::Plugins::SignatureV4)
82
+ add_plugin(Aws::Plugins::Sign)
83
83
  add_plugin(Aws::Plugins::Protocols::RestJson)
84
+ add_plugin(Aws::IoTWireless::Plugins::Endpoints)
84
85
 
85
86
  # @overload initialize(options)
86
87
  # @param [Hash] options
@@ -287,6 +288,19 @@ module Aws::IoTWireless
287
288
  # ** Please note ** When response stubbing is enabled, no HTTP
288
289
  # requests are made, and retries are disabled.
289
290
  #
291
+ # @option options [Aws::TokenProvider] :token_provider
292
+ # A Bearer Token Provider. This can be an instance of any one of the
293
+ # following classes:
294
+ #
295
+ # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
296
+ # tokens.
297
+ #
298
+ # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an
299
+ # access token generated from `aws login`.
300
+ #
301
+ # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain`
302
+ # will be used to search for tokens configured for your profile in shared configuration files.
303
+ #
290
304
  # @option options [Boolean] :use_dualstack_endpoint
291
305
  # When set to `true`, dualstack enabled endpoints (with `.aws` TLD)
292
306
  # will be used if available.
@@ -300,6 +314,9 @@ module Aws::IoTWireless
300
314
  # When `true`, request parameters are validated before
301
315
  # sending the request.
302
316
  #
317
+ # @option options [Aws::IoTWireless::EndpointProvider] :endpoint_provider
318
+ # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::IoTWireless::EndpointParameters`
319
+ #
303
320
  # @option options [URI::HTTP,String] :http_proxy A proxy to send
304
321
  # requests through. Formatted like 'http://proxy.com:123'.
305
322
  #
@@ -1113,6 +1130,10 @@ module Aws::IoTWireless
1113
1130
  # ],
1114
1131
  # net_id_filters: ["NetId"],
1115
1132
  # sub_bands: [1],
1133
+ # beaconing: {
1134
+ # data_rate: 1,
1135
+ # frequencies: [1],
1136
+ # },
1116
1137
  # },
1117
1138
  # tags: [
1118
1139
  # {
@@ -2371,6 +2392,9 @@ module Aws::IoTWireless
2371
2392
  # resp.lo_ra_wan.net_id_filters[0] #=> String
2372
2393
  # resp.lo_ra_wan.sub_bands #=> Array
2373
2394
  # resp.lo_ra_wan.sub_bands[0] #=> Integer
2395
+ # resp.lo_ra_wan.beaconing.data_rate #=> Integer
2396
+ # resp.lo_ra_wan.beaconing.frequencies #=> Array
2397
+ # resp.lo_ra_wan.beaconing.frequencies[0] #=> Integer
2374
2398
  # resp.arn #=> String
2375
2399
  # resp.thing_name #=> String
2376
2400
  # resp.thing_arn #=> String
@@ -2961,6 +2985,11 @@ module Aws::IoTWireless
2961
2985
  # resp.downlink_queue_messages_list[0].transmit_mode #=> Integer
2962
2986
  # resp.downlink_queue_messages_list[0].received_at #=> String
2963
2987
  # resp.downlink_queue_messages_list[0].lo_ra_wan.f_port #=> Integer
2988
+ # resp.downlink_queue_messages_list[0].lo_ra_wan.participating_gateways.downlink_mode #=> String, one of "SEQUENTIAL", "CONCURRENT", "USING_UPLINK_GATEWAY"
2989
+ # resp.downlink_queue_messages_list[0].lo_ra_wan.participating_gateways.gateway_list #=> Array
2990
+ # resp.downlink_queue_messages_list[0].lo_ra_wan.participating_gateways.gateway_list[0].gateway_id #=> String
2991
+ # resp.downlink_queue_messages_list[0].lo_ra_wan.participating_gateways.gateway_list[0].downlink_frequency #=> Integer
2992
+ # resp.downlink_queue_messages_list[0].lo_ra_wan.participating_gateways.transmission_interval #=> Integer
2964
2993
  #
2965
2994
  # @overload list_queued_messages(params = {})
2966
2995
  # @param [Hash] params ({})
@@ -3204,6 +3233,9 @@ module Aws::IoTWireless
3204
3233
  # resp.wireless_gateway_list[0].lo_ra_wan.net_id_filters[0] #=> String
3205
3234
  # resp.wireless_gateway_list[0].lo_ra_wan.sub_bands #=> Array
3206
3235
  # resp.wireless_gateway_list[0].lo_ra_wan.sub_bands[0] #=> Integer
3236
+ # resp.wireless_gateway_list[0].lo_ra_wan.beaconing.data_rate #=> Integer
3237
+ # resp.wireless_gateway_list[0].lo_ra_wan.beaconing.frequencies #=> Array
3238
+ # resp.wireless_gateway_list[0].lo_ra_wan.beaconing.frequencies[0] #=> Integer
3207
3239
  # resp.wireless_gateway_list[0].last_uplink_received_at #=> String
3208
3240
  #
3209
3241
  # @overload list_wireless_gateways(params = {})
@@ -3396,6 +3428,16 @@ module Aws::IoTWireless
3396
3428
  # wireless_metadata: {
3397
3429
  # lo_ra_wan: {
3398
3430
  # f_port: 1,
3431
+ # participating_gateways: {
3432
+ # downlink_mode: "SEQUENTIAL", # required, accepts SEQUENTIAL, CONCURRENT, USING_UPLINK_GATEWAY
3433
+ # gateway_list: [ # required
3434
+ # {
3435
+ # gateway_id: "WirelessGatewayId", # required
3436
+ # downlink_frequency: 1, # required
3437
+ # },
3438
+ # ],
3439
+ # transmission_interval: 1, # required
3440
+ # },
3399
3441
  # },
3400
3442
  # sidewalk: {
3401
3443
  # seq: 1,
@@ -4146,7 +4188,7 @@ module Aws::IoTWireless
4146
4188
  params: params,
4147
4189
  config: config)
4148
4190
  context[:gem_name] = 'aws-sdk-iotwireless'
4149
- context[:gem_version] = '1.25.0'
4191
+ context[:gem_version] = '1.27.0'
4150
4192
  Seahorse::Client::Request.new(handlers, context)
4151
4193
  end
4152
4194
 
@@ -42,6 +42,10 @@ module Aws::IoTWireless
42
42
  AssociateWirelessGatewayWithThingResponse = Shapes::StructureShape.new(name: 'AssociateWirelessGatewayWithThingResponse')
43
43
  AutoCreateTasks = Shapes::BooleanShape.new(name: 'AutoCreateTasks')
44
44
  BatteryLevel = Shapes::StringShape.new(name: 'BatteryLevel')
45
+ Beaconing = Shapes::StructureShape.new(name: 'Beaconing')
46
+ BeaconingDataRate = Shapes::IntegerShape.new(name: 'BeaconingDataRate')
47
+ BeaconingFrequencies = Shapes::ListShape.new(name: 'BeaconingFrequencies')
48
+ BeaconingFrequency = Shapes::IntegerShape.new(name: 'BeaconingFrequency')
45
49
  CancelMulticastGroupSessionRequest = Shapes::StructureShape.new(name: 'CancelMulticastGroupSessionRequest')
46
50
  CancelMulticastGroupSessionResponse = Shapes::StructureShape.new(name: 'CancelMulticastGroupSessionResponse')
47
51
  CertificateList = Shapes::StructureShape.new(name: 'CertificateList')
@@ -137,6 +141,8 @@ module Aws::IoTWireless
137
141
  DlRate = Shapes::IntegerShape.new(name: 'DlRate')
138
142
  DlRatePolicy = Shapes::StringShape.new(name: 'DlRatePolicy')
139
143
  Double = Shapes::FloatShape.new(name: 'Double')
144
+ DownlinkFrequency = Shapes::IntegerShape.new(name: 'DownlinkFrequency')
145
+ DownlinkMode = Shapes::StringShape.new(name: 'DownlinkMode')
140
146
  DownlinkQueueMessage = Shapes::StructureShape.new(name: 'DownlinkQueueMessage')
141
147
  DownlinkQueueMessagesList = Shapes::ListShape.new(name: 'DownlinkQueueMessagesList')
142
148
  DrMax = Shapes::IntegerShape.new(name: 'DrMax')
@@ -169,6 +175,8 @@ module Aws::IoTWireless
169
175
  FuotaTaskName = Shapes::StringShape.new(name: 'FuotaTaskName')
170
176
  FuotaTaskStatus = Shapes::StringShape.new(name: 'FuotaTaskStatus')
171
177
  GatewayEui = Shapes::StringShape.new(name: 'GatewayEui')
178
+ GatewayList = Shapes::ListShape.new(name: 'GatewayList')
179
+ GatewayListItem = Shapes::StructureShape.new(name: 'GatewayListItem')
172
180
  GenAppKey = Shapes::StringShape.new(name: 'GenAppKey')
173
181
  GetDestinationRequest = Shapes::StructureShape.new(name: 'GetDestinationRequest')
174
182
  GetDestinationResponse = Shapes::StructureShape.new(name: 'GetDestinationResponse')
@@ -325,6 +333,7 @@ module Aws::IoTWireless
325
333
  OtaaV1_0_x = Shapes::StructureShape.new(name: 'OtaaV1_0_x')
326
334
  OtaaV1_1 = Shapes::StructureShape.new(name: 'OtaaV1_1')
327
335
  PackageVersion = Shapes::StringShape.new(name: 'PackageVersion')
336
+ ParticipatingGateways = Shapes::StructureShape.new(name: 'ParticipatingGateways')
328
337
  PartnerAccountArn = Shapes::StringShape.new(name: 'PartnerAccountArn')
329
338
  PartnerAccountId = Shapes::StringShape.new(name: 'PartnerAccountId')
330
339
  PartnerType = Shapes::StringShape.new(name: 'PartnerType')
@@ -436,6 +445,7 @@ module Aws::IoTWireless
436
445
  ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException')
437
446
  TooManyTagsException = Shapes::StructureShape.new(name: 'TooManyTagsException')
438
447
  TraceContent = Shapes::StructureShape.new(name: 'TraceContent')
448
+ TransmissionInterval = Shapes::IntegerShape.new(name: 'TransmissionInterval')
439
449
  TransmitMode = Shapes::IntegerShape.new(name: 'TransmitMode')
440
450
  UlBucketSize = Shapes::IntegerShape.new(name: 'UlBucketSize')
441
451
  UlRate = Shapes::IntegerShape.new(name: 'UlRate')
@@ -572,6 +582,12 @@ module Aws::IoTWireless
572
582
 
573
583
  AssociateWirelessGatewayWithThingResponse.struct_class = Types::AssociateWirelessGatewayWithThingResponse
574
584
 
585
+ Beaconing.add_member(:data_rate, Shapes::ShapeRef.new(shape: BeaconingDataRate, location_name: "DataRate"))
586
+ Beaconing.add_member(:frequencies, Shapes::ShapeRef.new(shape: BeaconingFrequencies, location_name: "Frequencies"))
587
+ Beaconing.struct_class = Types::Beaconing
588
+
589
+ BeaconingFrequencies.member = Shapes::ShapeRef.new(shape: BeaconingFrequency)
590
+
575
591
  CancelMulticastGroupSessionRequest.add_member(:id, Shapes::ShapeRef.new(shape: MulticastGroupId, required: true, location: "uri", location_name: "Id"))
576
592
  CancelMulticastGroupSessionRequest.struct_class = Types::CancelMulticastGroupSessionRequest
577
593
 
@@ -866,6 +882,12 @@ module Aws::IoTWireless
866
882
 
867
883
  FuotaTaskList.member = Shapes::ShapeRef.new(shape: FuotaTask)
868
884
 
885
+ GatewayList.member = Shapes::ShapeRef.new(shape: GatewayListItem)
886
+
887
+ GatewayListItem.add_member(:gateway_id, Shapes::ShapeRef.new(shape: WirelessGatewayId, required: true, location_name: "GatewayId"))
888
+ GatewayListItem.add_member(:downlink_frequency, Shapes::ShapeRef.new(shape: DownlinkFrequency, required: true, location_name: "DownlinkFrequency"))
889
+ GatewayListItem.struct_class = Types::GatewayListItem
890
+
869
891
  GetDestinationRequest.add_member(:name, Shapes::ShapeRef.new(shape: DestinationName, required: true, location: "uri", location_name: "Name"))
870
892
  GetDestinationRequest.struct_class = Types::GetDestinationRequest
871
893
 
@@ -1288,6 +1310,7 @@ module Aws::IoTWireless
1288
1310
  LoRaWANGateway.add_member(:join_eui_filters, Shapes::ShapeRef.new(shape: JoinEuiFilters, location_name: "JoinEuiFilters"))
1289
1311
  LoRaWANGateway.add_member(:net_id_filters, Shapes::ShapeRef.new(shape: NetIdFilters, location_name: "NetIdFilters"))
1290
1312
  LoRaWANGateway.add_member(:sub_bands, Shapes::ShapeRef.new(shape: SubBands, location_name: "SubBands"))
1313
+ LoRaWANGateway.add_member(:beaconing, Shapes::ShapeRef.new(shape: Beaconing, location_name: "Beaconing"))
1291
1314
  LoRaWANGateway.struct_class = Types::LoRaWANGateway
1292
1315
 
1293
1316
  LoRaWANGatewayCurrentVersion.add_member(:current_version, Shapes::ShapeRef.new(shape: LoRaWANGatewayVersion, location_name: "CurrentVersion"))
@@ -1355,6 +1378,7 @@ module Aws::IoTWireless
1355
1378
  LoRaWANMulticastSession.struct_class = Types::LoRaWANMulticastSession
1356
1379
 
1357
1380
  LoRaWANSendDataToDevice.add_member(:f_port, Shapes::ShapeRef.new(shape: FPort, location_name: "FPort"))
1381
+ LoRaWANSendDataToDevice.add_member(:participating_gateways, Shapes::ShapeRef.new(shape: ParticipatingGateways, location_name: "ParticipatingGateways"))
1358
1382
  LoRaWANSendDataToDevice.struct_class = Types::LoRaWANSendDataToDevice
1359
1383
 
1360
1384
  LoRaWANServiceProfile.add_member(:add_gw_metadata, Shapes::ShapeRef.new(shape: AddGwMetadata, location_name: "AddGwMetadata"))
@@ -1422,6 +1446,11 @@ module Aws::IoTWireless
1422
1446
  OtaaV1_1.add_member(:join_eui, Shapes::ShapeRef.new(shape: JoinEui, location_name: "JoinEui"))
1423
1447
  OtaaV1_1.struct_class = Types::OtaaV1_1
1424
1448
 
1449
+ ParticipatingGateways.add_member(:downlink_mode, Shapes::ShapeRef.new(shape: DownlinkMode, required: true, location_name: "DownlinkMode"))
1450
+ ParticipatingGateways.add_member(:gateway_list, Shapes::ShapeRef.new(shape: GatewayList, required: true, location_name: "GatewayList"))
1451
+ ParticipatingGateways.add_member(:transmission_interval, Shapes::ShapeRef.new(shape: TransmissionInterval, required: true, location_name: "TransmissionInterval"))
1452
+ ParticipatingGateways.struct_class = Types::ParticipatingGateways
1453
+
1425
1454
  PositionConfigurationItem.add_member(:resource_identifier, Shapes::ShapeRef.new(shape: PositionResourceIdentifier, location_name: "ResourceIdentifier"))
1426
1455
  PositionConfigurationItem.add_member(:resource_type, Shapes::ShapeRef.new(shape: PositionResourceType, location_name: "ResourceType"))
1427
1456
  PositionConfigurationItem.add_member(:solvers, Shapes::ShapeRef.new(shape: PositionSolverDetails, location_name: "Solvers"))
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::IoTWireless
11
+ # Endpoint parameters used to influence endpoints per request.
12
+ #
13
+ # @!attribute region
14
+ # The AWS region used to dispatch the request.
15
+ #
16
+ # @return [String]
17
+ #
18
+ # @!attribute use_dual_stack
19
+ # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
20
+ #
21
+ # @return [Boolean]
22
+ #
23
+ # @!attribute use_fips
24
+ # When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
25
+ #
26
+ # @return [Boolean]
27
+ #
28
+ # @!attribute endpoint
29
+ # Override the endpoint used to send this request
30
+ #
31
+ # @return [String]
32
+ #
33
+ EndpointParameters = Struct.new(
34
+ :region,
35
+ :use_dual_stack,
36
+ :use_fips,
37
+ :endpoint,
38
+ ) do
39
+ include Aws::Structure
40
+
41
+ # @api private
42
+ class << self
43
+ PARAM_MAP = {
44
+ 'Region' => :region,
45
+ 'UseDualStack' => :use_dual_stack,
46
+ 'UseFIPS' => :use_fips,
47
+ 'Endpoint' => :endpoint,
48
+ }.freeze
49
+ end
50
+
51
+ def initialize(options = {})
52
+ self[:region] = options[:region]
53
+ self[:use_dual_stack] = options[:use_dual_stack]
54
+ self[:use_dual_stack] = false if self[:use_dual_stack].nil?
55
+ if self[:use_dual_stack].nil?
56
+ raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
57
+ end
58
+ self[:use_fips] = options[:use_fips]
59
+ self[:use_fips] = false if self[:use_fips].nil?
60
+ if self[:use_fips].nil?
61
+ raise ArgumentError, "Missing required EndpointParameter: :use_fips"
62
+ end
63
+ self[:endpoint] = options[:endpoint]
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::IoTWireless
11
+ class EndpointProvider
12
+ def initialize(rule_set = nil)
13
+ @@rule_set ||= begin
14
+ endpoint_rules = Aws::Json.load(Base64.decode64(RULES))
15
+ Aws::Endpoints::RuleSet.new(
16
+ version: endpoint_rules['version'],
17
+ service_id: endpoint_rules['serviceId'],
18
+ parameters: endpoint_rules['parameters'],
19
+ rules: endpoint_rules['rules']
20
+ )
21
+ end
22
+ @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
23
+ end
24
+
25
+ def resolve_endpoint(parameters)
26
+ @provider.resolve_endpoint(parameters)
27
+ end
28
+
29
+ # @api private
30
+ RULES = <<-JSON
31
+ eyJ2ZXJzaW9uIjoiMS4wIiwicGFyYW1ldGVycyI6eyJSZWdpb24iOnsiYnVp
32
+ bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1bWVu
33
+ dGF0aW9uIjoiVGhlIEFXUyByZWdpb24gdXNlZCB0byBkaXNwYXRjaCB0aGUg
34
+ cmVxdWVzdC4iLCJ0eXBlIjoiU3RyaW5nIn0sIlVzZUR1YWxTdGFjayI6eyJi
35
+ dWlsdEluIjoiQVdTOjpVc2VEdWFsU3RhY2siLCJyZXF1aXJlZCI6dHJ1ZSwi
36
+ ZGVmYXVsdCI6ZmFsc2UsImRvY3VtZW50YXRpb24iOiJXaGVuIHRydWUsIHVz
37
+ ZSB0aGUgZHVhbC1zdGFjayBlbmRwb2ludC4gSWYgdGhlIGNvbmZpZ3VyZWQg
38
+ ZW5kcG9pbnQgZG9lcyBub3Qgc3VwcG9ydCBkdWFsLXN0YWNrLCBkaXNwYXRj
39
+ aGluZyB0aGUgcmVxdWVzdCBNQVkgcmV0dXJuIGFuIGVycm9yLiIsInR5cGUi
40
+ OiJCb29sZWFuIn0sIlVzZUZJUFMiOnsiYnVpbHRJbiI6IkFXUzo6VXNlRklQ
41
+ UyIsInJlcXVpcmVkIjp0cnVlLCJkZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRh
42
+ dGlvbiI6IldoZW4gdHJ1ZSwgc2VuZCB0aGlzIHJlcXVlc3QgdG8gdGhlIEZJ
43
+ UFMtY29tcGxpYW50IHJlZ2lvbmFsIGVuZHBvaW50LiBJZiB0aGUgY29uZmln
44
+ dXJlZCBlbmRwb2ludCBkb2VzIG5vdCBoYXZlIGEgRklQUyBjb21wbGlhbnQg
45
+ ZW5kcG9pbnQsIGRpc3BhdGNoaW5nIHRoZSByZXF1ZXN0IHdpbGwgcmV0dXJu
46
+ IGFuIGVycm9yLiIsInR5cGUiOiJCb29sZWFuIn0sIkVuZHBvaW50Ijp7ImJ1
47
+ aWx0SW4iOiJTREs6OkVuZHBvaW50IiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1
48
+ bWVudGF0aW9uIjoiT3ZlcnJpZGUgdGhlIGVuZHBvaW50IHVzZWQgdG8gc2Vu
49
+ ZCB0aGlzIHJlcXVlc3QiLCJ0eXBlIjoiU3RyaW5nIn19LCJydWxlcyI6W3si
50
+ Y29uZGl0aW9ucyI6W3siZm4iOiJhd3MucGFydGl0aW9uIiwiYXJndiI6W3si
51
+ cmVmIjoiUmVnaW9uIn1dLCJhc3NpZ24iOiJQYXJ0aXRpb25SZXN1bHQifV0s
52
+ InR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
53
+ aXNTZXQiLCJhcmd2IjpbeyJyZWYiOiJFbmRwb2ludCJ9XX0seyJmbiI6InBh
54
+ cnNlVVJMIiwiYXJndiI6W3sicmVmIjoiRW5kcG9pbnQifV0sImFzc2lnbiI6
55
+ InVybCJ9XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6
56
+ W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQ
57
+ UyJ9LHRydWVdfV0sImVycm9yIjoiSW52YWxpZCBDb25maWd1cmF0aW9uOiBG
58
+ SVBTIGFuZCBjdXN0b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0
59
+ eXBlIjoiZXJyb3IifSx7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIs
60
+ InJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMi
61
+ LCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJlcnJv
62
+ ciI6IkludmFsaWQgQ29uZmlndXJhdGlvbjogRHVhbHN0YWNrIGFuZCBjdXN0
63
+ b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0eXBlIjoiZXJyb3Ii
64
+ fSx7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOnsicmVmIjoi
65
+ RW5kcG9pbnQifSwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlw
66
+ ZSI6ImVuZHBvaW50In1dfV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJib29s
67
+ ZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQUyJ9LHRydWVdfSx7
68
+ ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxT
69
+ dGFjayJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRp
70
+ dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsi
71
+ Zm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0
72
+ In0sInN1cHBvcnRzRklQUyJdfV19LHsiZm4iOiJib29sZWFuRXF1YWxzIiwi
73
+ YXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQ
74
+ YXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNEdWFsU3RhY2siXX1dfV0sInR5
75
+ cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2lu
76
+ dCI6eyJ1cmwiOiJodHRwczovL2FwaS5pb3R3aXJlbGVzcy1maXBzLntSZWdp
77
+ b259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInBy
78
+ b3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9
79
+ XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJGSVBTIGFuZCBEdWFsU3Rh
80
+ Y2sgYXJlIGVuYWJsZWQsIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBz
81
+ dXBwb3J0IG9uZSBvciBib3RoIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRp
82
+ dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6
83
+ IlVzZUZJUFMifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
84
+ b25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1
85
+ ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJl
86
+ c3VsdCJ9LCJzdXBwb3J0c0ZJUFMiXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVs
87
+ ZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpb
88
+ eyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9h
89
+ cGkuaW90d2lyZWxlc3MtZmlwcy57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0
90
+ I2Ruc1N1ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0
91
+ eXBlIjoiZW5kcG9pbnQifV19XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3Ii
92
+ OiJGSVBTIGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90
93
+ IHN1cHBvcnQgRklQUyIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25z
94
+ IjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VE
95
+ dWFsU3RhY2sifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
96
+ b25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1
97
+ ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJl
98
+ c3VsdCJ9LCJzdXBwb3J0c0R1YWxTdGFjayJdfV19XSwidHlwZSI6InRyZWUi
99
+ LCJydWxlcyI6W3siY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6
100
+ Imh0dHBzOi8vYXBpLmlvdHdpcmVsZXNzLntSZWdpb259LntQYXJ0aXRpb25S
101
+ ZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJo
102
+ ZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25z
103
+ IjpbXSwiZXJyb3IiOiJEdWFsU3RhY2sgaXMgZW5hYmxlZCBidXQgdGhpcyBw
104
+ YXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoi
105
+ ZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6
106
+ Imh0dHBzOi8vYXBpLmlvdHdpcmVsZXNzLntSZWdpb259LntQYXJ0aXRpb25S
107
+ ZXN1bHQjZG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7
108
+ fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1dfQ==
109
+
110
+ JSON
111
+ end
112
+ end