aws-sdk-mediatailor 1.56.0 → 1.58.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a615567d1b1f8c6acc0fbfd00424eaadc759e62b4ec7f5d187482b561220b26e
4
- data.tar.gz: 7a88d19a79922466a4bf4ff9117ee8c1df4a37b2f3322549b4358c7378488a35
3
+ metadata.gz: a0e810a70482c27c24b907780f9167e31692ae71586d28c0a2ddc9da945d3903
4
+ data.tar.gz: 90554cb9cfb0552266deecc936f506ae2052425d5ade7e70d37b2aa8d6b03849
5
5
  SHA512:
6
- metadata.gz: fb92663f9d1d1c4d6e844e15613aa2fe7b296e508720ce136ea730e958d41dd044bf90ff7ff179e4fb0b4662af01c93586f9e5ff69254406a85bd68d45af899b
7
- data.tar.gz: 4640ff5ee64b74c6e69308b629c7b55799b8ca3d7e51255d4ca1fc0fd29c3f48cf62cf322d8150565d104bf5216f8cd05f8067b008b8a1fa01e2aa34c0243a63
6
+ metadata.gz: 80760a9689992a3d6d51f6802cfb7929c1356fb5ab754f6f50fc0b2616297dd0eb7cc2e5611428c244746386492cdfeb93c507d96afc0a77a2f8bedaccc221a7
7
+ data.tar.gz: 5b4e851b68bb626d4589f1636c5022a3ca04ed1481f55ee4288b1711deaf60adb0502de97d5dd2b698c26266f4f7bd62e6b1322218282895ec74d0fd70daf022
data/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.58.0 (2023-01-18)
5
+ ------------------
6
+
7
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
8
+
9
+ * Issue - Replace runtime endpoint resolution approach with generated ruby code.
10
+
11
+ 1.57.0 (2022-10-28)
12
+ ------------------
13
+
14
+ * Feature - This release introduces support for SCTE-35 segmentation descriptor messages which can be sent within time signal messages.
15
+
4
16
  1.56.0 (2022-10-25)
5
17
  ------------------
6
18
 
@@ -295,4 +307,4 @@ Unreleased Changes
295
307
  1.0.0 (2018-06-01)
296
308
  ------------------
297
309
 
298
- * Feature - Initial release of `aws-sdk-mediatailor`.
310
+ * Feature - Initial release of `aws-sdk-mediatailor`.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.56.0
1
+ 1.58.0
@@ -742,7 +742,7 @@ module Aws::MediaTailor
742
742
  # resp = client.create_program({
743
743
  # ad_breaks: [
744
744
  # {
745
- # message_type: "SPLICE_INSERT", # accepts SPLICE_INSERT
745
+ # message_type: "SPLICE_INSERT", # accepts SPLICE_INSERT, TIME_SIGNAL
746
746
  # offset_millis: 1,
747
747
  # slate: {
748
748
  # source_location_name: "__string",
@@ -754,6 +754,20 @@ module Aws::MediaTailor
754
754
  # splice_event_id: 1,
755
755
  # unique_program_id: 1,
756
756
  # },
757
+ # time_signal_message: {
758
+ # segmentation_descriptors: [
759
+ # {
760
+ # segment_num: 1,
761
+ # segmentation_event_id: 1,
762
+ # segmentation_type_id: 1,
763
+ # segmentation_upid: "String",
764
+ # segmentation_upid_type: 1,
765
+ # segments_expected: 1,
766
+ # sub_segment_num: 1,
767
+ # sub_segments_expected: 1,
768
+ # },
769
+ # ],
770
+ # },
757
771
  # },
758
772
  # ],
759
773
  # channel_name: "__string", # required
@@ -775,7 +789,7 @@ module Aws::MediaTailor
775
789
  # @example Response structure
776
790
  #
777
791
  # resp.ad_breaks #=> Array
778
- # resp.ad_breaks[0].message_type #=> String, one of "SPLICE_INSERT"
792
+ # resp.ad_breaks[0].message_type #=> String, one of "SPLICE_INSERT", "TIME_SIGNAL"
779
793
  # resp.ad_breaks[0].offset_millis #=> Integer
780
794
  # resp.ad_breaks[0].slate.source_location_name #=> String
781
795
  # resp.ad_breaks[0].slate.vod_source_name #=> String
@@ -783,6 +797,15 @@ module Aws::MediaTailor
783
797
  # resp.ad_breaks[0].splice_insert_message.avails_expected #=> Integer
784
798
  # resp.ad_breaks[0].splice_insert_message.splice_event_id #=> Integer
785
799
  # resp.ad_breaks[0].splice_insert_message.unique_program_id #=> Integer
800
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors #=> Array
801
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segment_num #=> Integer
802
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_event_id #=> Integer
803
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_type_id #=> Integer
804
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_upid #=> String
805
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_upid_type #=> Integer
806
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segments_expected #=> Integer
807
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].sub_segment_num #=> Integer
808
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].sub_segments_expected #=> Integer
786
809
  # resp.arn #=> String
787
810
  # resp.channel_name #=> String
788
811
  # resp.creation_time #=> Time
@@ -1342,7 +1365,7 @@ module Aws::MediaTailor
1342
1365
  # @example Response structure
1343
1366
  #
1344
1367
  # resp.ad_breaks #=> Array
1345
- # resp.ad_breaks[0].message_type #=> String, one of "SPLICE_INSERT"
1368
+ # resp.ad_breaks[0].message_type #=> String, one of "SPLICE_INSERT", "TIME_SIGNAL"
1346
1369
  # resp.ad_breaks[0].offset_millis #=> Integer
1347
1370
  # resp.ad_breaks[0].slate.source_location_name #=> String
1348
1371
  # resp.ad_breaks[0].slate.vod_source_name #=> String
@@ -1350,6 +1373,15 @@ module Aws::MediaTailor
1350
1373
  # resp.ad_breaks[0].splice_insert_message.avails_expected #=> Integer
1351
1374
  # resp.ad_breaks[0].splice_insert_message.splice_event_id #=> Integer
1352
1375
  # resp.ad_breaks[0].splice_insert_message.unique_program_id #=> Integer
1376
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors #=> Array
1377
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segment_num #=> Integer
1378
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_event_id #=> Integer
1379
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_type_id #=> Integer
1380
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_upid #=> String
1381
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segmentation_upid_type #=> Integer
1382
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].segments_expected #=> Integer
1383
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].sub_segment_num #=> Integer
1384
+ # resp.ad_breaks[0].time_signal_message.segmentation_descriptors[0].sub_segments_expected #=> Integer
1353
1385
  # resp.arn #=> String
1354
1386
  # resp.channel_name #=> String
1355
1387
  # resp.creation_time #=> Time
@@ -2847,7 +2879,7 @@ module Aws::MediaTailor
2847
2879
  params: params,
2848
2880
  config: config)
2849
2881
  context[:gem_name] = 'aws-sdk-mediatailor'
2850
- context[:gem_version] = '1.56.0'
2882
+ context[:gem_version] = '1.58.0'
2851
2883
  Seahorse::Client::Request.new(handlers, context)
2852
2884
  end
2853
2885
 
@@ -84,6 +84,7 @@ module Aws::MediaTailor
84
84
  HttpConfiguration = Shapes::StructureShape.new(name: 'HttpConfiguration')
85
85
  HttpPackageConfiguration = Shapes::StructureShape.new(name: 'HttpPackageConfiguration')
86
86
  HttpPackageConfigurations = Shapes::ListShape.new(name: 'HttpPackageConfigurations')
87
+ Integer = Shapes::IntegerShape.new(name: 'Integer')
87
88
  ListAlertsRequest = Shapes::StructureShape.new(name: 'ListAlertsRequest')
88
89
  ListAlertsResponse = Shapes::StructureShape.new(name: 'ListAlertsResponse')
89
90
  ListChannelsRequest = Shapes::StructureShape.new(name: 'ListChannelsRequest')
@@ -129,6 +130,8 @@ module Aws::MediaTailor
129
130
  ScheduleEntryType = Shapes::StringShape.new(name: 'ScheduleEntryType')
130
131
  SecretsManagerAccessTokenConfiguration = Shapes::StructureShape.new(name: 'SecretsManagerAccessTokenConfiguration')
131
132
  SegmentDeliveryConfiguration = Shapes::StructureShape.new(name: 'SegmentDeliveryConfiguration')
133
+ SegmentationDescriptor = Shapes::StructureShape.new(name: 'SegmentationDescriptor')
134
+ SegmentationDescriptorList = Shapes::ListShape.new(name: 'SegmentationDescriptorList')
132
135
  SlateSource = Shapes::StructureShape.new(name: 'SlateSource')
133
136
  SourceLocation = Shapes::StructureShape.new(name: 'SourceLocation')
134
137
  SpliceInsertMessage = Shapes::StructureShape.new(name: 'SpliceInsertMessage')
@@ -136,8 +139,10 @@ module Aws::MediaTailor
136
139
  StartChannelResponse = Shapes::StructureShape.new(name: 'StartChannelResponse')
137
140
  StopChannelRequest = Shapes::StructureShape.new(name: 'StopChannelRequest')
138
141
  StopChannelResponse = Shapes::StructureShape.new(name: 'StopChannelResponse')
142
+ String = Shapes::StringShape.new(name: 'String')
139
143
  TagResourceRequest = Shapes::StructureShape.new(name: 'TagResourceRequest')
140
144
  Tier = Shapes::StringShape.new(name: 'Tier')
145
+ TimeSignalMessage = Shapes::StructureShape.new(name: 'TimeSignalMessage')
141
146
  Transition = Shapes::StructureShape.new(name: 'Transition')
142
147
  Type = Shapes::StringShape.new(name: 'Type')
143
148
  UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest')
@@ -180,6 +185,7 @@ module Aws::MediaTailor
180
185
  AdBreak.add_member(:offset_millis, Shapes::ShapeRef.new(shape: __long, location_name: "OffsetMillis"))
181
186
  AdBreak.add_member(:slate, Shapes::ShapeRef.new(shape: SlateSource, location_name: "Slate"))
182
187
  AdBreak.add_member(:splice_insert_message, Shapes::ShapeRef.new(shape: SpliceInsertMessage, location_name: "SpliceInsertMessage"))
188
+ AdBreak.add_member(:time_signal_message, Shapes::ShapeRef.new(shape: TimeSignalMessage, location_name: "TimeSignalMessage"))
183
189
  AdBreak.struct_class = Types::AdBreak
184
190
 
185
191
  AdMarkerPassthrough.add_member(:enabled, Shapes::ShapeRef.new(shape: __boolean, location_name: "Enabled"))
@@ -756,6 +762,18 @@ module Aws::MediaTailor
756
762
  SegmentDeliveryConfiguration.add_member(:name, Shapes::ShapeRef.new(shape: __string, location_name: "Name"))
757
763
  SegmentDeliveryConfiguration.struct_class = Types::SegmentDeliveryConfiguration
758
764
 
765
+ SegmentationDescriptor.add_member(:segment_num, Shapes::ShapeRef.new(shape: Integer, location_name: "SegmentNum"))
766
+ SegmentationDescriptor.add_member(:segmentation_event_id, Shapes::ShapeRef.new(shape: Integer, location_name: "SegmentationEventId"))
767
+ SegmentationDescriptor.add_member(:segmentation_type_id, Shapes::ShapeRef.new(shape: Integer, location_name: "SegmentationTypeId"))
768
+ SegmentationDescriptor.add_member(:segmentation_upid, Shapes::ShapeRef.new(shape: String, location_name: "SegmentationUpid"))
769
+ SegmentationDescriptor.add_member(:segmentation_upid_type, Shapes::ShapeRef.new(shape: Integer, location_name: "SegmentationUpidType"))
770
+ SegmentationDescriptor.add_member(:segments_expected, Shapes::ShapeRef.new(shape: Integer, location_name: "SegmentsExpected"))
771
+ SegmentationDescriptor.add_member(:sub_segment_num, Shapes::ShapeRef.new(shape: Integer, location_name: "SubSegmentNum"))
772
+ SegmentationDescriptor.add_member(:sub_segments_expected, Shapes::ShapeRef.new(shape: Integer, location_name: "SubSegmentsExpected"))
773
+ SegmentationDescriptor.struct_class = Types::SegmentationDescriptor
774
+
775
+ SegmentationDescriptorList.member = Shapes::ShapeRef.new(shape: SegmentationDescriptor)
776
+
759
777
  SlateSource.add_member(:source_location_name, Shapes::ShapeRef.new(shape: __string, location_name: "SourceLocationName"))
760
778
  SlateSource.add_member(:vod_source_name, Shapes::ShapeRef.new(shape: __string, location_name: "VodSourceName"))
761
779
  SlateSource.struct_class = Types::SlateSource
@@ -791,6 +809,9 @@ module Aws::MediaTailor
791
809
  TagResourceRequest.add_member(:tags, Shapes::ShapeRef.new(shape: __mapOf__string, required: true, location_name: "tags"))
792
810
  TagResourceRequest.struct_class = Types::TagResourceRequest
793
811
 
812
+ TimeSignalMessage.add_member(:segmentation_descriptors, Shapes::ShapeRef.new(shape: SegmentationDescriptorList, location_name: "SegmentationDescriptors"))
813
+ TimeSignalMessage.struct_class = Types::TimeSignalMessage
814
+
794
815
  Transition.add_member(:duration_millis, Shapes::ShapeRef.new(shape: __long, location_name: "DurationMillis"))
795
816
  Transition.add_member(:relative_position, Shapes::ShapeRef.new(shape: RelativePosition, required: true, location_name: "RelativePosition"))
796
817
  Transition.add_member(:relative_program, Shapes::ShapeRef.new(shape: __string, location_name: "RelativeProgram"))
@@ -9,104 +9,43 @@
9
9
 
10
10
  module Aws::MediaTailor
11
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
- )
12
+ def resolve_endpoint(parameters)
13
+ region = parameters.region
14
+ use_dual_stack = parameters.use_dual_stack
15
+ use_fips = parameters.use_fips
16
+ endpoint = parameters.endpoint
17
+ if (partition_result = Aws::Endpoints::Matchers.aws_partition(region))
18
+ if Aws::Endpoints::Matchers.set?(endpoint) && (url = Aws::Endpoints::Matchers.parse_url(endpoint))
19
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
20
+ raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported"
21
+ end
22
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
23
+ raise ArgumentError, "Invalid Configuration: Dualstack and custom endpoint are not supported"
24
+ end
25
+ return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {})
26
+ end
27
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
28
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) && Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
29
+ return Aws::Endpoints::Endpoint.new(url: "https://api.mediatailor-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
30
+ end
31
+ raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both"
32
+ end
33
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
34
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"))
35
+ return Aws::Endpoints::Endpoint.new(url: "https://api.mediatailor-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
36
+ end
37
+ raise ArgumentError, "FIPS is enabled but this partition does not support FIPS"
38
+ end
39
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
40
+ if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
41
+ return Aws::Endpoints::Endpoint.new(url: "https://api.mediatailor.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
42
+ end
43
+ raise ArgumentError, "DualStack is enabled but this partition does not support DualStack"
44
+ end
45
+ return Aws::Endpoints::Endpoint.new(url: "https://api.mediatailor.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
21
46
  end
22
- @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
23
- end
47
+ raise ArgumentError, 'No endpoint could be resolved'
24
48
 
25
- def resolve_endpoint(parameters)
26
- @provider.resolve_endpoint(parameters)
27
49
  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
- dCI6eyJ1cmwiOiJodHRwczovL2FwaS5tZWRpYXRhaWxvci1maXBzLntSZWdp
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
- cGkubWVkaWF0YWlsb3ItZmlwcy57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0
90
- I2Ruc1N1ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0
91
- eXBlIjoiZW5kcG9pbnQifV19XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3Ii
92
- OiJGSVBTIGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90
93
- IHN1cHBvcnQgRklQUyIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25z
94
- IjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VE
95
- dWFsU3RhY2sifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
96
- b25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1
97
- ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJl
98
- c3VsdCJ9LCJzdXBwb3J0c0R1YWxTdGFjayJdfV19XSwidHlwZSI6InRyZWUi
99
- LCJydWxlcyI6W3siY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6
100
- Imh0dHBzOi8vYXBpLm1lZGlhdGFpbG9yLntSZWdpb259LntQYXJ0aXRpb25S
101
- ZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJo
102
- ZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25z
103
- IjpbXSwiZXJyb3IiOiJEdWFsU3RhY2sgaXMgZW5hYmxlZCBidXQgdGhpcyBw
104
- YXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoi
105
- ZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6
106
- Imh0dHBzOi8vYXBpLm1lZGlhdGFpbG9yLntSZWdpb259LntQYXJ0aXRpb25S
107
- ZXN1bHQjZG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7
108
- fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1dfQ==
109
-
110
- JSON
111
50
  end
112
51
  end