aws-sdk-groundstation 1.29.0 → 1.31.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -1
- data/VERSION +1 -1
- data/lib/aws-sdk-groundstation/client.rb +136 -2
- data/lib/aws-sdk-groundstation/client_api.rb +5 -0
- data/lib/aws-sdk-groundstation/endpoint_parameters.rb +3 -0
- data/lib/aws-sdk-groundstation/endpoint_provider.rb +35 -96
- data/lib/aws-sdk-groundstation/types.rb +27 -716
- data/lib/aws-sdk-groundstation/waiters.rb +121 -0
- data/lib/aws-sdk-groundstation.rb +2 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f81601bf76df148196ec209a859d1ecb84fd10bc3acd806cabf79b401fe3e5d
|
4
|
+
data.tar.gz: c0b6183670ea5b39f5072350fa76e1cb31e781bc0e068be14987cc3dc6b6d8a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db2b0d6362d6b7df9c64ebf4281b3eb373c22111b873b7043ddfb5322c0e00a8a3b2ce6e7c9144e78f9140994e1a4787ec3f02883693da1f88cf5d1ada9c47df
|
7
|
+
data.tar.gz: 1c7569ad6d5e1def50be9bce16b426616d8b40aecc418a66b4369054db8e248111f8ffcd924098d41f21b1952476a96b321b8bf7785126f483faa5f0bc4a0c96
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
Unreleased Changes
|
2
2
|
------------------
|
3
3
|
|
4
|
+
1.31.0 (2023-01-19)
|
5
|
+
------------------
|
6
|
+
|
7
|
+
* Feature - Add configurable prepass and postpass times for DataflowEndpointGroup. Add Waiter to allow customers to wait for a contact that was reserved through ReserveContact
|
8
|
+
|
9
|
+
1.30.0 (2023-01-18)
|
10
|
+
------------------
|
11
|
+
|
12
|
+
* Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
|
13
|
+
|
14
|
+
* Issue - Replace runtime endpoint resolution approach with generated ruby code.
|
15
|
+
|
4
16
|
1.29.0 (2022-11-09)
|
5
17
|
------------------
|
6
18
|
|
@@ -155,4 +167,4 @@ Unreleased Changes
|
|
155
167
|
1.0.0 (2019-05-28)
|
156
168
|
------------------
|
157
169
|
|
158
|
-
* Feature - Initial release of `aws-sdk-groundstation`.
|
170
|
+
* Feature - Initial release of `aws-sdk-groundstation`.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.31.0
|
@@ -513,6 +513,16 @@ module Aws::GroundStation
|
|
513
513
|
# When a contact uses multiple `DataflowEndpointConfig` objects, each
|
514
514
|
# `Config` must match a `DataflowEndpoint` in the same group.
|
515
515
|
#
|
516
|
+
# @option params [Integer] :contact_post_pass_duration_seconds
|
517
|
+
# Amount of time, in seconds, after a contact ends for the contact to
|
518
|
+
# remain in a `POSTPASS` state. A CloudWatch event is emitted when the
|
519
|
+
# contact enters and exits the `POSTPASS` state.
|
520
|
+
#
|
521
|
+
# @option params [Integer] :contact_pre_pass_duration_seconds
|
522
|
+
# Amount of time, in seconds, prior to contact start for the contact to
|
523
|
+
# remain in a `PREPASS` state. A CloudWatch event is emitted when the
|
524
|
+
# contact enters and exits the `PREPASS` state.
|
525
|
+
#
|
516
526
|
# @option params [required, Array<Types::EndpointDetails>] :endpoint_details
|
517
527
|
# Endpoint details of each endpoint in the dataflow endpoint group.
|
518
528
|
#
|
@@ -526,6 +536,8 @@ module Aws::GroundStation
|
|
526
536
|
# @example Request syntax with placeholder values
|
527
537
|
#
|
528
538
|
# resp = client.create_dataflow_endpoint_group({
|
539
|
+
# contact_post_pass_duration_seconds: 1,
|
540
|
+
# contact_pre_pass_duration_seconds: 1,
|
529
541
|
# endpoint_details: [ # required
|
530
542
|
# {
|
531
543
|
# endpoint: {
|
@@ -921,6 +933,11 @@ module Aws::GroundStation
|
|
921
933
|
# resp.tags #=> Hash
|
922
934
|
# resp.tags["String"] #=> String
|
923
935
|
#
|
936
|
+
#
|
937
|
+
# The following waiters are defined for this operation (see {Client#wait_until} for detailed usage):
|
938
|
+
#
|
939
|
+
# * contact_scheduled
|
940
|
+
#
|
924
941
|
# @see http://docs.aws.amazon.com/goto/WebAPI/groundstation-2019-05-23/DescribeContact AWS API Documentation
|
925
942
|
#
|
926
943
|
# @overload describe_contact(params = {})
|
@@ -1061,6 +1078,8 @@ module Aws::GroundStation
|
|
1061
1078
|
#
|
1062
1079
|
# @return [Types::GetDataflowEndpointGroupResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
|
1063
1080
|
#
|
1081
|
+
# * {Types::GetDataflowEndpointGroupResponse#contact_post_pass_duration_seconds #contact_post_pass_duration_seconds} => Integer
|
1082
|
+
# * {Types::GetDataflowEndpointGroupResponse#contact_pre_pass_duration_seconds #contact_pre_pass_duration_seconds} => Integer
|
1064
1083
|
# * {Types::GetDataflowEndpointGroupResponse#dataflow_endpoint_group_arn #dataflow_endpoint_group_arn} => String
|
1065
1084
|
# * {Types::GetDataflowEndpointGroupResponse#dataflow_endpoint_group_id #dataflow_endpoint_group_id} => String
|
1066
1085
|
# * {Types::GetDataflowEndpointGroupResponse#endpoints_details #endpoints_details} => Array<Types::EndpointDetails>
|
@@ -1074,6 +1093,8 @@ module Aws::GroundStation
|
|
1074
1093
|
#
|
1075
1094
|
# @example Response structure
|
1076
1095
|
#
|
1096
|
+
# resp.contact_post_pass_duration_seconds #=> Integer
|
1097
|
+
# resp.contact_pre_pass_duration_seconds #=> Integer
|
1077
1098
|
# resp.dataflow_endpoint_group_arn #=> String
|
1078
1099
|
# resp.dataflow_endpoint_group_id #=> String
|
1079
1100
|
# resp.endpoints_details #=> Array
|
@@ -1950,14 +1971,127 @@ module Aws::GroundStation
|
|
1950
1971
|
params: params,
|
1951
1972
|
config: config)
|
1952
1973
|
context[:gem_name] = 'aws-sdk-groundstation'
|
1953
|
-
context[:gem_version] = '1.
|
1974
|
+
context[:gem_version] = '1.31.0'
|
1954
1975
|
Seahorse::Client::Request.new(handlers, context)
|
1955
1976
|
end
|
1956
1977
|
|
1978
|
+
# Polls an API operation until a resource enters a desired state.
|
1979
|
+
#
|
1980
|
+
# ## Basic Usage
|
1981
|
+
#
|
1982
|
+
# A waiter will call an API operation until:
|
1983
|
+
#
|
1984
|
+
# * It is successful
|
1985
|
+
# * It enters a terminal state
|
1986
|
+
# * It makes the maximum number of attempts
|
1987
|
+
#
|
1988
|
+
# In between attempts, the waiter will sleep.
|
1989
|
+
#
|
1990
|
+
# # polls in a loop, sleeping between attempts
|
1991
|
+
# client.wait_until(waiter_name, params)
|
1992
|
+
#
|
1993
|
+
# ## Configuration
|
1994
|
+
#
|
1995
|
+
# You can configure the maximum number of polling attempts, and the
|
1996
|
+
# delay (in seconds) between each polling attempt. You can pass
|
1997
|
+
# configuration as the final arguments hash.
|
1998
|
+
#
|
1999
|
+
# # poll for ~25 seconds
|
2000
|
+
# client.wait_until(waiter_name, params, {
|
2001
|
+
# max_attempts: 5,
|
2002
|
+
# delay: 5,
|
2003
|
+
# })
|
2004
|
+
#
|
2005
|
+
# ## Callbacks
|
2006
|
+
#
|
2007
|
+
# You can be notified before each polling attempt and before each
|
2008
|
+
# delay. If you throw `:success` or `:failure` from these callbacks,
|
2009
|
+
# it will terminate the waiter.
|
2010
|
+
#
|
2011
|
+
# started_at = Time.now
|
2012
|
+
# client.wait_until(waiter_name, params, {
|
2013
|
+
#
|
2014
|
+
# # disable max attempts
|
2015
|
+
# max_attempts: nil,
|
2016
|
+
#
|
2017
|
+
# # poll for 1 hour, instead of a number of attempts
|
2018
|
+
# before_wait: -> (attempts, response) do
|
2019
|
+
# throw :failure if Time.now - started_at > 3600
|
2020
|
+
# end
|
2021
|
+
# })
|
2022
|
+
#
|
2023
|
+
# ## Handling Errors
|
2024
|
+
#
|
2025
|
+
# When a waiter is unsuccessful, it will raise an error.
|
2026
|
+
# All of the failure errors extend from
|
2027
|
+
# {Aws::Waiters::Errors::WaiterFailed}.
|
2028
|
+
#
|
2029
|
+
# begin
|
2030
|
+
# client.wait_until(...)
|
2031
|
+
# rescue Aws::Waiters::Errors::WaiterFailed
|
2032
|
+
# # resource did not enter the desired state in time
|
2033
|
+
# end
|
2034
|
+
#
|
2035
|
+
# ## Valid Waiters
|
2036
|
+
#
|
2037
|
+
# The following table lists the valid waiter names, the operations they call,
|
2038
|
+
# and the default `:delay` and `:max_attempts` values.
|
2039
|
+
#
|
2040
|
+
# | waiter_name | params | :delay | :max_attempts |
|
2041
|
+
# | ----------------- | ------------------------- | -------- | ------------- |
|
2042
|
+
# | contact_scheduled | {Client#describe_contact} | 5 | 180 |
|
2043
|
+
#
|
2044
|
+
# @raise [Errors::FailureStateError] Raised when the waiter terminates
|
2045
|
+
# because the waiter has entered a state that it will not transition
|
2046
|
+
# out of, preventing success.
|
2047
|
+
#
|
2048
|
+
# @raise [Errors::TooManyAttemptsError] Raised when the configured
|
2049
|
+
# maximum number of attempts have been made, and the waiter is not
|
2050
|
+
# yet successful.
|
2051
|
+
#
|
2052
|
+
# @raise [Errors::UnexpectedError] Raised when an error is encounted
|
2053
|
+
# while polling for a resource that is not expected.
|
2054
|
+
#
|
2055
|
+
# @raise [Errors::NoSuchWaiterError] Raised when you request to wait
|
2056
|
+
# for an unknown state.
|
2057
|
+
#
|
2058
|
+
# @return [Boolean] Returns `true` if the waiter was successful.
|
2059
|
+
# @param [Symbol] waiter_name
|
2060
|
+
# @param [Hash] params ({})
|
2061
|
+
# @param [Hash] options ({})
|
2062
|
+
# @option options [Integer] :max_attempts
|
2063
|
+
# @option options [Integer] :delay
|
2064
|
+
# @option options [Proc] :before_attempt
|
2065
|
+
# @option options [Proc] :before_wait
|
2066
|
+
def wait_until(waiter_name, params = {}, options = {})
|
2067
|
+
w = waiter(waiter_name, options)
|
2068
|
+
yield(w.waiter) if block_given? # deprecated
|
2069
|
+
w.wait(params)
|
2070
|
+
end
|
2071
|
+
|
1957
2072
|
# @api private
|
1958
2073
|
# @deprecated
|
1959
2074
|
def waiter_names
|
1960
|
-
|
2075
|
+
waiters.keys
|
2076
|
+
end
|
2077
|
+
|
2078
|
+
private
|
2079
|
+
|
2080
|
+
# @param [Symbol] waiter_name
|
2081
|
+
# @param [Hash] options ({})
|
2082
|
+
def waiter(waiter_name, options = {})
|
2083
|
+
waiter_class = waiters[waiter_name]
|
2084
|
+
if waiter_class
|
2085
|
+
waiter_class.new(options.merge(client: self))
|
2086
|
+
else
|
2087
|
+
raise Aws::Waiters::Errors::NoSuchWaiterError.new(waiter_name, waiters.keys)
|
2088
|
+
end
|
2089
|
+
end
|
2090
|
+
|
2091
|
+
def waiters
|
2092
|
+
{
|
2093
|
+
contact_scheduled: Waiters::ContactScheduled
|
2094
|
+
}
|
1961
2095
|
end
|
1962
2096
|
|
1963
2097
|
class << self
|
@@ -47,6 +47,7 @@ module Aws::GroundStation
|
|
47
47
|
DataflowEndpoint = Shapes::StructureShape.new(name: 'DataflowEndpoint')
|
48
48
|
DataflowEndpointConfig = Shapes::StructureShape.new(name: 'DataflowEndpointConfig')
|
49
49
|
DataflowEndpointGroupArn = Shapes::StringShape.new(name: 'DataflowEndpointGroupArn')
|
50
|
+
DataflowEndpointGroupDurationInSeconds = Shapes::IntegerShape.new(name: 'DataflowEndpointGroupDurationInSeconds')
|
50
51
|
DataflowEndpointGroupIdResponse = Shapes::StructureShape.new(name: 'DataflowEndpointGroupIdResponse')
|
51
52
|
DataflowEndpointGroupList = Shapes::ListShape.new(name: 'DataflowEndpointGroupList')
|
52
53
|
DataflowEndpointListItem = Shapes::StructureShape.new(name: 'DataflowEndpointListItem')
|
@@ -263,6 +264,8 @@ module Aws::GroundStation
|
|
263
264
|
CreateConfigRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagsMap, location_name: "tags"))
|
264
265
|
CreateConfigRequest.struct_class = Types::CreateConfigRequest
|
265
266
|
|
267
|
+
CreateDataflowEndpointGroupRequest.add_member(:contact_post_pass_duration_seconds, Shapes::ShapeRef.new(shape: DataflowEndpointGroupDurationInSeconds, location_name: "contactPostPassDurationSeconds"))
|
268
|
+
CreateDataflowEndpointGroupRequest.add_member(:contact_pre_pass_duration_seconds, Shapes::ShapeRef.new(shape: DataflowEndpointGroupDurationInSeconds, location_name: "contactPrePassDurationSeconds"))
|
266
269
|
CreateDataflowEndpointGroupRequest.add_member(:endpoint_details, Shapes::ShapeRef.new(shape: EndpointDetailsList, required: true, location_name: "endpointDetails"))
|
267
270
|
CreateDataflowEndpointGroupRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagsMap, location_name: "tags"))
|
268
271
|
CreateDataflowEndpointGroupRequest.struct_class = Types::CreateDataflowEndpointGroupRequest
|
@@ -458,6 +461,8 @@ module Aws::GroundStation
|
|
458
461
|
GetDataflowEndpointGroupRequest.add_member(:dataflow_endpoint_group_id, Shapes::ShapeRef.new(shape: Uuid, required: true, location: "uri", location_name: "dataflowEndpointGroupId"))
|
459
462
|
GetDataflowEndpointGroupRequest.struct_class = Types::GetDataflowEndpointGroupRequest
|
460
463
|
|
464
|
+
GetDataflowEndpointGroupResponse.add_member(:contact_post_pass_duration_seconds, Shapes::ShapeRef.new(shape: DataflowEndpointGroupDurationInSeconds, location_name: "contactPostPassDurationSeconds"))
|
465
|
+
GetDataflowEndpointGroupResponse.add_member(:contact_pre_pass_duration_seconds, Shapes::ShapeRef.new(shape: DataflowEndpointGroupDurationInSeconds, location_name: "contactPrePassDurationSeconds"))
|
461
466
|
GetDataflowEndpointGroupResponse.add_member(:dataflow_endpoint_group_arn, Shapes::ShapeRef.new(shape: DataflowEndpointGroupArn, location_name: "dataflowEndpointGroupArn"))
|
462
467
|
GetDataflowEndpointGroupResponse.add_member(:dataflow_endpoint_group_id, Shapes::ShapeRef.new(shape: Uuid, location_name: "dataflowEndpointGroupId"))
|
463
468
|
GetDataflowEndpointGroupResponse.add_member(:endpoints_details, Shapes::ShapeRef.new(shape: EndpointDetailsList, location_name: "endpointsDetails"))
|
@@ -50,6 +50,9 @@ module Aws::GroundStation
|
|
50
50
|
|
51
51
|
def initialize(options = {})
|
52
52
|
self[:region] = options[:region]
|
53
|
+
if self[:region].nil?
|
54
|
+
raise ArgumentError, "Missing required EndpointParameter: :region"
|
55
|
+
end
|
53
56
|
self[:use_dual_stack] = options[:use_dual_stack]
|
54
57
|
self[:use_dual_stack] = false if self[:use_dual_stack].nil?
|
55
58
|
if self[:use_dual_stack].nil?
|
@@ -9,104 +9,43 @@
|
|
9
9
|
|
10
10
|
module Aws::GroundStation
|
11
11
|
class EndpointProvider
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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)
|
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://groundstation-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://groundstation-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://groundstation.#{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://groundstation.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
|
21
46
|
end
|
22
|
-
|
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
|
-
dCI6eyJ1cmwiOiJodHRwczovL2dyb3VuZHN0YXRpb24tZmlwcy57UmVnaW9u
|
77
|
-
fS57UGFydGl0aW9uUmVzdWx0I2R1YWxTdGFja0Ruc1N1ZmZpeH0iLCJwcm9w
|
78
|
-
ZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19
|
79
|
-
LHsiY29uZGl0aW9ucyI6W10sImVycm9yIjoiRklQUyBhbmQgRHVhbFN0YWNr
|
80
|
-
IGFyZSBlbmFibGVkLCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3Vw
|
81
|
-
cG9ydCBvbmUgb3IgYm90aCIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRp
|
82
|
-
b25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJV
|
83
|
-
c2VGSVBTIn0sdHJ1ZV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29u
|
84
|
-
ZGl0aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUs
|
85
|
-
eyJmbiI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1
|
86
|
-
bHQifSwic3VwcG9ydHNGSVBTIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVz
|
87
|
-
IjpbeyJjb25kaXRpb25zIjpbXSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3si
|
88
|
-
Y29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vZ3Jv
|
89
|
-
dW5kc3RhdGlvbi1maXBzLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5z
|
90
|
-
U3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUi
|
91
|
-
OiJlbmRwb2ludCJ9XX1dfSx7ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkZJ
|
92
|
-
UFMgaXMgZW5hYmxlZCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3Vw
|
93
|
-
cG9ydCBGSVBTIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOlt7
|
94
|
-
ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxT
|
95
|
-
dGFjayJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRp
|
96
|
-
dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsi
|
97
|
-
Zm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0
|
98
|
-
In0sInN1cHBvcnRzRHVhbFN0YWNrIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1
|
99
|
-
bGVzIjpbeyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0
|
100
|
-
cHM6Ly9ncm91bmRzdGF0aW9uLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQj
|
101
|
-
ZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJz
|
102
|
-
Ijp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25zIjpbXSwi
|
103
|
-
ZXJyb3IiOiJEdWFsU3RhY2sgaXMgZW5hYmxlZCBidXQgdGhpcyBwYXJ0aXRp
|
104
|
-
b24gZG9lcyBub3Qgc3VwcG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoiZXJyb3Ii
|
105
|
-
fV19LHsiY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBz
|
106
|
-
Oi8vZ3JvdW5kc3RhdGlvbi57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2Ru
|
107
|
-
c1N1ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBl
|
108
|
-
IjoiZW5kcG9pbnQifV19XX0=
|
109
|
-
|
110
|
-
JSON
|
111
50
|
end
|
112
51
|
end
|