aws-sdk-wafv2 1.45.0 → 1.47.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: 54da821c1d4dcf409e62899dbe4b01df619d2e5d6f1d7a96d35061adbec205cd
4
- data.tar.gz: 45129a1f5293aa98093c264facb0d2106897f5d885d454700f17ba991a635c2c
3
+ metadata.gz: 960b988b9949275485163b7947eb4b36cba6a408fa00fca07b1c0ea9382c0471
4
+ data.tar.gz: f56cbb0272a221a37c7b4cf29901cbc63cdc216f075eca3b2671d3ad04b2caff
5
5
  SHA512:
6
- metadata.gz: 6b9a2c54275691ea555d65a0cd43dbc759a6edbb12de7cabb71eeeef1739126fe7050f8104fbf631281362b665cea26fa02154cd96542282599ab66607d5eb87
7
- data.tar.gz: 83c8f9abe4447cf0762691a1f24c06d50cbb538e0eb5d159f408dca2f9536d87926e98b45752c2e9e81f30824f05ef0f7c52797b76062278e50d3a622b716bf7
6
+ metadata.gz: ddadf8ab33aed3c00d2c5fbd0444de6758abc6515824e7155cd4deceaf83970d21c6a04c2246f3a32a5f6be97d24a6c91d51c01a3cfe910a072e8555c2d81e1a
7
+ data.tar.gz: 292707fda25b8c3f6b4ad01abb84cdd68e01748691129cec6ed0272be226462d8fe6a0b7325ae57e7be53f42693cead9cd8a27824f0221d8302b2a9ac148e2c9
data/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.47.0 (2023-01-18)
5
+ ------------------
6
+
7
+ * Feature - Improved the visibility of the guidance for updating AWS WAF resources, such as web ACLs and rule groups.
8
+
9
+ * Issue - Replace runtime endpoint resolution approach with generated ruby code.
10
+
11
+ 1.46.0 (2022-12-12)
12
+ ------------------
13
+
14
+ * Feature - Documents the naming requirement for logging destinations that you use with web ACLs.
15
+
4
16
  1.45.0 (2022-11-07)
5
17
  ------------------
6
18
 
@@ -235,4 +247,4 @@ Unreleased Changes
235
247
  1.0.0 (2019-11-25)
236
248
  ------------------
237
249
 
238
- * Feature - Initial release of `aws-sdk-wafv2`.
250
+ * Feature - Initial release of `aws-sdk-wafv2`.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.45.0
1
+ 1.47.0
@@ -2199,6 +2199,9 @@ module Aws::WAFV2
2199
2199
  # Example JSON: `"TokenDomains": \{ "mywebsite.com",
2200
2200
  # "myotherwebsite.com" \}`
2201
2201
  #
2202
+ # Public suffixes aren't allowed. For example, you can't use `usa.gov`
2203
+ # or `co.uk` as token domains.
2204
+ #
2202
2205
  # @return [Types::CreateWebACLResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2203
2206
  #
2204
2207
  # * {Types::CreateWebACLResponse#summary #summary} => Types::WebACLSummary
@@ -4209,8 +4212,8 @@ module Aws::WAFV2
4209
4212
  # sample of requests.
4210
4213
  #
4211
4214
  # @option params [required, String] :rule_metric_name
4212
- # The metric name assigned to the `Rule` or `RuleGroup` for which you
4213
- # want a sample of requests.
4215
+ # The metric name assigned to the `Rule` or `RuleGroup` dimension for
4216
+ # which you want a sample of requests.
4214
4217
  #
4215
4218
  # @option params [required, String] :scope
4216
4219
  # Specifies whether this is for an Amazon CloudFront distribution or for
@@ -6647,6 +6650,21 @@ module Aws::WAFV2
6647
6650
  # Enables the specified LoggingConfiguration, to start logging from a
6648
6651
  # web ACL, according to the configuration provided.
6649
6652
  #
6653
+ # <note markdown="1"> This operation completely replaces any mutable specifications that you
6654
+ # already have for a logging configuration with the ones that you
6655
+ # provide to this call.
6656
+ #
6657
+ # To modify an existing logging configuration, do the following:
6658
+ #
6659
+ # 1. Retrieve it by calling GetLoggingConfiguration
6660
+ #
6661
+ # 2. Update its settings as needed
6662
+ #
6663
+ # 3. Provide the complete logging configuration specification to this
6664
+ # call
6665
+ #
6666
+ # </note>
6667
+ #
6650
6668
  # <note markdown="1"> You can define one logging destination per web ACL.
6651
6669
  #
6652
6670
  # </note>
@@ -6656,10 +6674,15 @@ module Aws::WAFV2
6656
6674
  #
6657
6675
  # 1. Create your logging destination. You can use an Amazon CloudWatch
6658
6676
  # Logs log group, an Amazon Simple Storage Service (Amazon S3)
6659
- # bucket, or an Amazon Kinesis Data Firehose. For information about
6660
- # configuring logging destinations and the permissions that are
6661
- # required for each, see [Logging web ACL traffic information][1] in
6662
- # the *WAF Developer Guide*.
6677
+ # bucket, or an Amazon Kinesis Data Firehose.
6678
+ #
6679
+ # The name that you give the destination must start with
6680
+ # `aws-waf-logs-`. Depending on the type of destination, you might
6681
+ # need to configure additional settings or permissions.
6682
+ #
6683
+ # For configuration requirements and pricing information for each
6684
+ # destination type, see [Logging web ACL traffic][1] in the *WAF
6685
+ # Developer Guide*.
6663
6686
  #
6664
6687
  # 2. Associate your logging destination to your web ACL using a
6665
6688
  # `PutLoggingConfiguration` request.
@@ -6674,15 +6697,6 @@ module Aws::WAFV2
6674
6697
  # For additional information about web ACL logging, see [Logging web ACL
6675
6698
  # traffic information][1] in the *WAF Developer Guide*.
6676
6699
  #
6677
- # <note markdown="1"> This operation completely replaces the mutable specifications that you
6678
- # already have for the logging configuration with the ones that you
6679
- # provide to this call. To modify the logging configuration, retrieve it
6680
- # by calling GetLoggingConfiguration, update the settings as needed, and
6681
- # then provide the complete logging configuration specification to this
6682
- # call.
6683
- #
6684
- # </note>
6685
- #
6686
6700
  #
6687
6701
  #
6688
6702
  # [1]: https://docs.aws.amazon.com/waf/latest/developerguide/logging.html
@@ -7060,9 +7074,15 @@ module Aws::WAFV2
7060
7074
  #
7061
7075
  # <note markdown="1"> This operation completely replaces the mutable specifications that you
7062
7076
  # already have for the IP set with the ones that you provide to this
7063
- # call. To modify the IP set, retrieve it by calling GetIPSet, update
7064
- # the settings as needed, and then provide the complete IP set
7065
- # specification to this call.
7077
+ # call.
7078
+ #
7079
+ # To modify an IP set, do the following:
7080
+ #
7081
+ # 1. Retrieve it by calling GetIPSet
7082
+ #
7083
+ # 2. Update its settings as needed
7084
+ #
7085
+ # 3. Provide the complete IP set specification to this call
7066
7086
  #
7067
7087
  # </note>
7068
7088
  #
@@ -7285,9 +7305,15 @@ module Aws::WAFV2
7285
7305
  #
7286
7306
  # <note markdown="1"> This operation completely replaces the mutable specifications that you
7287
7307
  # already have for the regex pattern set with the ones that you provide
7288
- # to this call. To modify the regex pattern set, retrieve it by calling
7289
- # GetRegexPatternSet, update the settings as needed, and then provide
7290
- # the complete regex pattern set specification to this call.
7308
+ # to this call.
7309
+ #
7310
+ # To modify a regex pattern set, do the following:
7311
+ #
7312
+ # 1. Retrieve it by calling GetRegexPatternSet
7313
+ #
7314
+ # 2. Update its settings as needed
7315
+ #
7316
+ # 3. Provide the complete regex pattern set specification to this call
7291
7317
  #
7292
7318
  # </note>
7293
7319
  #
@@ -7379,9 +7405,15 @@ module Aws::WAFV2
7379
7405
  #
7380
7406
  # <note markdown="1"> This operation completely replaces the mutable specifications that you
7381
7407
  # already have for the rule group with the ones that you provide to this
7382
- # call. To modify the rule group, retrieve it by calling GetRuleGroup,
7383
- # update the settings as needed, and then provide the complete rule
7384
- # group specification to this call.
7408
+ # call.
7409
+ #
7410
+ # To modify a rule group, do the following:
7411
+ #
7412
+ # 1. Retrieve it by calling GetRuleGroup
7413
+ #
7414
+ # 2. Update its settings as needed
7415
+ #
7416
+ # 3. Provide the complete rule group specification to this call
7385
7417
  #
7386
7418
  # </note>
7387
7419
  #
@@ -8161,6 +8193,20 @@ module Aws::WAFV2
8161
8193
  # continuous coverage to the resources that you have associated with the
8162
8194
  # web ACL.
8163
8195
  #
8196
+ # <note markdown="1"> This operation completely replaces the mutable specifications that you
8197
+ # already have for the web ACL with the ones that you provide to this
8198
+ # call.
8199
+ #
8200
+ # To modify a web ACL, do the following:
8201
+ #
8202
+ # 1. Retrieve it by calling GetWebACL
8203
+ #
8204
+ # 2. Update its settings as needed
8205
+ #
8206
+ # 3. Provide the complete web ACL specification to this call
8207
+ #
8208
+ # </note>
8209
+ #
8164
8210
  # When you make changes to web ACLs or web ACL components, like rules
8165
8211
  # and rule groups, WAF propagates the changes everywhere that the web
8166
8212
  # ACL and its components are stored and used. Your changes are applied
@@ -8175,14 +8221,6 @@ module Aws::WAFV2
8175
8221
  # change a web ACL that is already associated with a resource.
8176
8222
  # Generally, any inconsistencies of this type last only a few seconds.
8177
8223
  #
8178
- # <note markdown="1"> This operation completely replaces the mutable specifications that you
8179
- # already have for the web ACL with the ones that you provide to this
8180
- # call. To modify the web ACL, retrieve it by calling GetWebACL, update
8181
- # the settings as needed, and then provide the complete web ACL
8182
- # specification to this call.
8183
- #
8184
- # </note>
8185
- #
8186
8224
  # A web ACL defines a collection of rules to use to inspect and control
8187
8225
  # web requests. Each rule has an action defined (allow, block, or count)
8188
8226
  # for requests that match the statement of the rule. In the web ACL, you
@@ -8287,6 +8325,9 @@ module Aws::WAFV2
8287
8325
  # Example JSON: `"TokenDomains": \{ "mywebsite.com",
8288
8326
  # "myotherwebsite.com" \}`
8289
8327
  #
8328
+ # Public suffixes aren't allowed. For example, you can't use `usa.gov`
8329
+ # or `co.uk` as token domains.
8330
+ #
8290
8331
  # @return [Types::UpdateWebACLResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
8291
8332
  #
8292
8333
  # * {Types::UpdateWebACLResponse#next_lock_token #next_lock_token} => String
@@ -9021,7 +9062,7 @@ module Aws::WAFV2
9021
9062
  params: params,
9022
9063
  config: config)
9023
9064
  context[:gem_name] = 'aws-sdk-wafv2'
9024
- context[:gem_version] = '1.45.0'
9065
+ context[:gem_version] = '1.47.0'
9025
9066
  Seahorse::Client::Request.new(handlers, context)
9026
9067
  end
9027
9068
 
@@ -50,6 +50,9 @@ module Aws::WAFV2
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,103 +9,43 @@
9
9
 
10
10
  module Aws::WAFV2
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)
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://wafv2-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://wafv2-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://wafv2.#{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://wafv2.#{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
- dCI6eyJ1cmwiOiJodHRwczovL3dhZnYyLWZpcHMue1JlZ2lvbn0ue1BhcnRp
77
- dGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9IiwicHJvcGVydGllcyI6
78
- e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfSx7ImNvbmRp
79
- dGlvbnMiOltdLCJlcnJvciI6IkZJUFMgYW5kIER1YWxTdGFjayBhcmUgZW5h
80
- YmxlZCwgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgb25l
81
- IG9yIGJvdGgiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W3si
82
- Zm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQUyJ9
83
- LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMi
84
- Olt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4iOiJn
85
- ZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0sInN1
86
- cHBvcnRzRklQUyJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29u
87
- ZGl0aW9ucyI6W10sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlv
88
- bnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3dhZnYyLWZpcHMu
89
- e1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkbnNTdWZmaXh9IiwicHJvcGVy
90
- dGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfV19
91
- LHsiY29uZGl0aW9ucyI6W10sImVycm9yIjoiRklQUyBpcyBlbmFibGVkIGJ1
92
- dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IEZJUFMiLCJ0eXBl
93
- IjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJib29sZWFuRXF1
94
- YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRHVhbFN0YWNrIn0sdHJ1ZV19XSwi
95
- dHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJi
96
- b29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJh
97
- cmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNEdWFs
98
- U3RhY2siXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlv
99
- bnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3dhZnYyLntSZWdp
100
- b259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInBy
101
- b3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9
102
- XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJEdWFsU3RhY2sgaXMgZW5h
103
- YmxlZCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBEdWFs
104
- U3RhY2siLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W10sImVu
105
- ZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vd2FmdjIue1JlZ2lvbn0ue1BhcnRp
106
- dGlvblJlc3VsdCNkbnNTdWZmaXh9IiwicHJvcGVydGllcyI6e30sImhlYWRl
107
- cnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfV19
108
-
109
- JSON
110
50
  end
111
51
  end