aws-sdk-pinpoint 1.67.0 → 1.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -61,6 +61,8 @@ module Aws::Pinpoint
61
61
  ChannelResponse = Shapes::StructureShape.new(name: 'ChannelResponse')
62
62
  ChannelType = Shapes::StringShape.new(name: 'ChannelType')
63
63
  ChannelsResponse = Shapes::StructureShape.new(name: 'ChannelsResponse')
64
+ ClosedDays = Shapes::StructureShape.new(name: 'ClosedDays')
65
+ ClosedDaysRule = Shapes::StructureShape.new(name: 'ClosedDaysRule')
64
66
  Condition = Shapes::StructureShape.new(name: 'Condition')
65
67
  ConditionalSplitActivity = Shapes::StructureShape.new(name: 'ConditionalSplitActivity')
66
68
  ConflictException = Shapes::StructureShape.new(name: 'ConflictException')
@@ -94,6 +96,7 @@ module Aws::Pinpoint
94
96
  CreateVoiceTemplateResponse = Shapes::StructureShape.new(name: 'CreateVoiceTemplateResponse')
95
97
  CustomDeliveryConfiguration = Shapes::StructureShape.new(name: 'CustomDeliveryConfiguration')
96
98
  CustomMessageActivity = Shapes::StructureShape.new(name: 'CustomMessageActivity')
99
+ DayOfWeek = Shapes::StringShape.new(name: 'DayOfWeek')
97
100
  DefaultButtonConfiguration = Shapes::StructureShape.new(name: 'DefaultButtonConfiguration')
98
101
  DefaultMessage = Shapes::StructureShape.new(name: 'DefaultMessage')
99
102
  DefaultPushNotificationMessage = Shapes::StructureShape.new(name: 'DefaultPushNotificationMessage')
@@ -318,6 +321,7 @@ module Aws::Pinpoint
318
321
  ListOfActivityResponse = Shapes::ListShape.new(name: 'ListOfActivityResponse')
319
322
  ListOfApplicationResponse = Shapes::ListShape.new(name: 'ListOfApplicationResponse')
320
323
  ListOfCampaignResponse = Shapes::ListShape.new(name: 'ListOfCampaignResponse')
324
+ ListOfClosedDaysRules = Shapes::ListShape.new(name: 'ListOfClosedDaysRules')
321
325
  ListOfEndpointBatchItem = Shapes::ListShape.new(name: 'ListOfEndpointBatchItem')
322
326
  ListOfEndpointResponse = Shapes::ListShape.new(name: 'ListOfEndpointResponse')
323
327
  ListOfExportJobResponse = Shapes::ListShape.new(name: 'ListOfExportJobResponse')
@@ -326,6 +330,7 @@ module Aws::Pinpoint
326
330
  ListOfInAppMessageContent = Shapes::ListShape.new(name: 'ListOfInAppMessageContent')
327
331
  ListOfJourneyResponse = Shapes::ListShape.new(name: 'ListOfJourneyResponse')
328
332
  ListOfMultiConditionalBranch = Shapes::ListShape.new(name: 'ListOfMultiConditionalBranch')
333
+ ListOfOpenHoursRules = Shapes::ListShape.new(name: 'ListOfOpenHoursRules')
329
334
  ListOfRandomSplitEntry = Shapes::ListShape.new(name: 'ListOfRandomSplitEntry')
330
335
  ListOfRecommenderConfigurationResponse = Shapes::ListShape.new(name: 'ListOfRecommenderConfigurationResponse')
331
336
  ListOfResultRow = Shapes::ListShape.new(name: 'ListOfResultRow')
@@ -358,6 +363,7 @@ module Aws::Pinpoint
358
363
  MapOfEventItemResponse = Shapes::MapShape.new(name: 'MapOfEventItemResponse')
359
364
  MapOfEventsBatch = Shapes::MapShape.new(name: 'MapOfEventsBatch')
360
365
  MapOfItemResponse = Shapes::MapShape.new(name: 'MapOfItemResponse')
366
+ MapOfListOfOpenHoursRules = Shapes::MapShape.new(name: 'MapOfListOfOpenHoursRules')
361
367
  MapOfListOf__string = Shapes::MapShape.new(name: 'MapOfListOf__string')
362
368
  MapOfMapOfEndpointMessageResult = Shapes::MapShape.new(name: 'MapOfMapOfEndpointMessageResult')
363
369
  MapOfMessageResult = Shapes::MapShape.new(name: 'MapOfMessageResult')
@@ -380,6 +386,8 @@ module Aws::Pinpoint
380
386
  NotFoundException = Shapes::StructureShape.new(name: 'NotFoundException')
381
387
  NumberValidateRequest = Shapes::StructureShape.new(name: 'NumberValidateRequest')
382
388
  NumberValidateResponse = Shapes::StructureShape.new(name: 'NumberValidateResponse')
389
+ OpenHours = Shapes::StructureShape.new(name: 'OpenHours')
390
+ OpenHoursRule = Shapes::StructureShape.new(name: 'OpenHoursRule')
383
391
  Operator = Shapes::StringShape.new(name: 'Operator')
384
392
  OverrideButtonConfiguration = Shapes::StructureShape.new(name: 'OverrideButtonConfiguration')
385
393
  PayloadTooLargeException = Shapes::StructureShape.new(name: 'PayloadTooLargeException')
@@ -915,6 +923,18 @@ module Aws::Pinpoint
915
923
  ChannelsResponse.add_member(:channels, Shapes::ShapeRef.new(shape: MapOfChannelResponse, required: true, location_name: "Channels"))
916
924
  ChannelsResponse.struct_class = Types::ChannelsResponse
917
925
 
926
+ ClosedDays.add_member(:email, Shapes::ShapeRef.new(shape: ListOfClosedDaysRules, location_name: "EMAIL"))
927
+ ClosedDays.add_member(:sms, Shapes::ShapeRef.new(shape: ListOfClosedDaysRules, location_name: "SMS"))
928
+ ClosedDays.add_member(:push, Shapes::ShapeRef.new(shape: ListOfClosedDaysRules, location_name: "PUSH"))
929
+ ClosedDays.add_member(:voice, Shapes::ShapeRef.new(shape: ListOfClosedDaysRules, location_name: "VOICE"))
930
+ ClosedDays.add_member(:custom, Shapes::ShapeRef.new(shape: ListOfClosedDaysRules, location_name: "CUSTOM"))
931
+ ClosedDays.struct_class = Types::ClosedDays
932
+
933
+ ClosedDaysRule.add_member(:name, Shapes::ShapeRef.new(shape: __string, location_name: "Name"))
934
+ ClosedDaysRule.add_member(:start_date_time, Shapes::ShapeRef.new(shape: __string, location_name: "StartDateTime"))
935
+ ClosedDaysRule.add_member(:end_date_time, Shapes::ShapeRef.new(shape: __string, location_name: "EndDateTime"))
936
+ ClosedDaysRule.struct_class = Types::ClosedDaysRule
937
+
918
938
  Condition.add_member(:conditions, Shapes::ShapeRef.new(shape: ListOfSimpleCondition, location_name: "Conditions"))
919
939
  Condition.add_member(:operator, Shapes::ShapeRef.new(shape: Operator, location_name: "Operator"))
920
940
  Condition.struct_class = Types::Condition
@@ -2220,7 +2240,12 @@ module Aws::Pinpoint
2220
2240
  JourneyResponse.add_member(:start_condition, Shapes::ShapeRef.new(shape: StartCondition, location_name: "StartCondition"))
2221
2241
  JourneyResponse.add_member(:state, Shapes::ShapeRef.new(shape: State, location_name: "State"))
2222
2242
  JourneyResponse.add_member(:tags, Shapes::ShapeRef.new(shape: MapOf__string, location_name: "tags"))
2243
+ JourneyResponse.add_member(:wait_for_quiet_time, Shapes::ShapeRef.new(shape: __boolean, location_name: "WaitForQuietTime"))
2244
+ JourneyResponse.add_member(:refresh_on_segment_update, Shapes::ShapeRef.new(shape: __boolean, location_name: "RefreshOnSegmentUpdate"))
2223
2245
  JourneyResponse.add_member(:journey_channel_settings, Shapes::ShapeRef.new(shape: JourneyChannelSettings, location_name: "JourneyChannelSettings"))
2246
+ JourneyResponse.add_member(:sending_schedule, Shapes::ShapeRef.new(shape: __boolean, location_name: "SendingSchedule"))
2247
+ JourneyResponse.add_member(:open_hours, Shapes::ShapeRef.new(shape: OpenHours, location_name: "OpenHours"))
2248
+ JourneyResponse.add_member(:closed_days, Shapes::ShapeRef.new(shape: ClosedDays, location_name: "ClosedDays"))
2224
2249
  JourneyResponse.struct_class = Types::JourneyResponse
2225
2250
 
2226
2251
  JourneySMSMessage.add_member(:message_type, Shapes::ShapeRef.new(shape: MessageType, location_name: "MessageType"))
@@ -2258,6 +2283,8 @@ module Aws::Pinpoint
2258
2283
 
2259
2284
  ListOfCampaignResponse.member = Shapes::ShapeRef.new(shape: CampaignResponse)
2260
2285
 
2286
+ ListOfClosedDaysRules.member = Shapes::ShapeRef.new(shape: ClosedDaysRule)
2287
+
2261
2288
  ListOfEndpointBatchItem.member = Shapes::ShapeRef.new(shape: EndpointBatchItem)
2262
2289
 
2263
2290
  ListOfEndpointResponse.member = Shapes::ShapeRef.new(shape: EndpointResponse)
@@ -2274,6 +2301,8 @@ module Aws::Pinpoint
2274
2301
 
2275
2302
  ListOfMultiConditionalBranch.member = Shapes::ShapeRef.new(shape: MultiConditionalBranch)
2276
2303
 
2304
+ ListOfOpenHoursRules.member = Shapes::ShapeRef.new(shape: OpenHoursRule)
2305
+
2277
2306
  ListOfRandomSplitEntry.member = Shapes::ShapeRef.new(shape: RandomSplitEntry)
2278
2307
 
2279
2308
  ListOfRecommenderConfigurationResponse.member = Shapes::ShapeRef.new(shape: RecommenderConfigurationResponse)
@@ -2368,6 +2397,9 @@ module Aws::Pinpoint
2368
2397
  MapOfItemResponse.key = Shapes::ShapeRef.new(shape: __string)
2369
2398
  MapOfItemResponse.value = Shapes::ShapeRef.new(shape: ItemResponse)
2370
2399
 
2400
+ MapOfListOfOpenHoursRules.key = Shapes::ShapeRef.new(shape: DayOfWeek)
2401
+ MapOfListOfOpenHoursRules.value = Shapes::ShapeRef.new(shape: ListOfOpenHoursRules)
2402
+
2371
2403
  MapOfListOf__string.key = Shapes::ShapeRef.new(shape: __string)
2372
2404
  MapOfListOf__string.value = Shapes::ShapeRef.new(shape: ListOf__string)
2373
2405
 
@@ -2480,6 +2512,17 @@ module Aws::Pinpoint
2480
2512
  NumberValidateResponse.add_member(:zip_code, Shapes::ShapeRef.new(shape: __string, location_name: "ZipCode"))
2481
2513
  NumberValidateResponse.struct_class = Types::NumberValidateResponse
2482
2514
 
2515
+ OpenHours.add_member(:email, Shapes::ShapeRef.new(shape: MapOfListOfOpenHoursRules, location_name: "EMAIL"))
2516
+ OpenHours.add_member(:sms, Shapes::ShapeRef.new(shape: MapOfListOfOpenHoursRules, location_name: "SMS"))
2517
+ OpenHours.add_member(:push, Shapes::ShapeRef.new(shape: MapOfListOfOpenHoursRules, location_name: "PUSH"))
2518
+ OpenHours.add_member(:voice, Shapes::ShapeRef.new(shape: MapOfListOfOpenHoursRules, location_name: "VOICE"))
2519
+ OpenHours.add_member(:custom, Shapes::ShapeRef.new(shape: MapOfListOfOpenHoursRules, location_name: "CUSTOM"))
2520
+ OpenHours.struct_class = Types::OpenHours
2521
+
2522
+ OpenHoursRule.add_member(:start_time, Shapes::ShapeRef.new(shape: __string, location_name: "StartTime"))
2523
+ OpenHoursRule.add_member(:end_time, Shapes::ShapeRef.new(shape: __string, location_name: "EndTime"))
2524
+ OpenHoursRule.struct_class = Types::OpenHoursRule
2525
+
2483
2526
  OverrideButtonConfiguration.add_member(:button_action, Shapes::ShapeRef.new(shape: ButtonAction, required: true, location_name: "ButtonAction"))
2484
2527
  OverrideButtonConfiguration.add_member(:link, Shapes::ShapeRef.new(shape: __string, location_name: "Link"))
2485
2528
  OverrideButtonConfiguration.struct_class = Types::OverrideButtonConfiguration
@@ -3325,6 +3368,9 @@ module Aws::Pinpoint
3325
3368
  WriteJourneyRequest.add_member(:wait_for_quiet_time, Shapes::ShapeRef.new(shape: __boolean, location_name: "WaitForQuietTime"))
3326
3369
  WriteJourneyRequest.add_member(:refresh_on_segment_update, Shapes::ShapeRef.new(shape: __boolean, location_name: "RefreshOnSegmentUpdate"))
3327
3370
  WriteJourneyRequest.add_member(:journey_channel_settings, Shapes::ShapeRef.new(shape: JourneyChannelSettings, location_name: "JourneyChannelSettings"))
3371
+ WriteJourneyRequest.add_member(:sending_schedule, Shapes::ShapeRef.new(shape: __boolean, location_name: "SendingSchedule"))
3372
+ WriteJourneyRequest.add_member(:open_hours, Shapes::ShapeRef.new(shape: OpenHours, location_name: "OpenHours"))
3373
+ WriteJourneyRequest.add_member(:closed_days, Shapes::ShapeRef.new(shape: ClosedDays, location_name: "ClosedDays"))
3328
3374
  WriteJourneyRequest.struct_class = Types::WriteJourneyRequest
3329
3375
 
3330
3376
  WriteSegmentRequest.add_member(:dimensions, Shapes::ShapeRef.new(shape: SegmentDimensions, location_name: "Dimensions"))
@@ -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::Pinpoint
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,111 @@
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::Pinpoint
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
+ dCI6eyJ1cmwiOiJodHRwczovL3BpbnBvaW50LWZpcHMue1JlZ2lvbn0ue1Bh
77
+ cnRpdGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9IiwicHJvcGVydGll
78
+ cyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfSx7ImNv
79
+ bmRpdGlvbnMiOltdLCJlcnJvciI6IkZJUFMgYW5kIER1YWxTdGFjayBhcmUg
80
+ ZW5hYmxlZCwgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQg
81
+ b25lIG9yIGJvdGgiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6
82
+ W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQ
83
+ UyJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlv
84
+ bnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4i
85
+ OiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0s
86
+ InN1cHBvcnRzRklQUyJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3si
87
+ Y29uZGl0aW9ucyI6W10sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRp
88
+ dGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3BpbnBvaW50
89
+ LWZpcHMue1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkbnNTdWZmaXh9Iiwi
90
+ cHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50
91
+ In1dfV19LHsiY29uZGl0aW9ucyI6W10sImVycm9yIjoiRklQUyBpcyBlbmFi
92
+ bGVkIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IEZJUFMi
93
+ LCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJib29s
94
+ ZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRHVhbFN0YWNrIn0sdHJ1
95
+ ZV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3si
96
+ Zm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJmbiI6ImdldEF0
97
+ dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQifSwic3VwcG9y
98
+ dHNEdWFsU3RhY2siXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNv
99
+ bmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3BpbnBv
100
+ aW50LntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3Vm
101
+ Zml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJl
102
+ bmRwb2ludCJ9XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJEdWFsU3Rh
103
+ Y2sgaXMgZW5hYmxlZCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3Vw
104
+ cG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9u
105
+ cyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vcGlucG9pbnQue1Jl
106
+ Z2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkbnNTdWZmaXh9IiwicHJvcGVydGll
107
+ cyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfV19
108
+
109
+ JSON
110
+ end
111
+ end