foreman_openscap 0.5.4 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +7 -7
  2. data/README.md +14 -0
  3. data/app/assets/javascripts/foreman_openscap/policy_edit.js +1 -1
  4. data/app/controllers/api/v2/compliance/policies_controller.rb +12 -9
  5. data/app/controllers/api/v2/compliance/scap_contents_controller.rb +4 -2
  6. data/app/controllers/concerns/foreman/controller/parameters/policy.rb +12 -0
  7. data/app/controllers/concerns/foreman/controller/parameters/policy_api.rb +21 -0
  8. data/app/controllers/concerns/foreman/controller/parameters/scap_content.rb +15 -0
  9. data/app/controllers/policies_controller.rb +7 -3
  10. data/app/controllers/scap_contents_controller.rb +4 -2
  11. data/app/helpers/{dashboard_helper.rb → compliance_dashboard_helper.rb} +2 -2
  12. data/app/helpers/policy_dashboard_helper.rb +9 -4
  13. data/app/models/concerns/foreman_openscap/host_extensions.rb +3 -5
  14. data/app/models/concerns/foreman_openscap/hostgroup_extensions.rb +1 -1
  15. data/app/models/concerns/foreman_openscap/log_extensions.rb +0 -1
  16. data/app/models/concerns/foreman_openscap/openscap_proxy_core_extensions.rb +1 -1
  17. data/app/models/concerns/foreman_openscap/openscap_proxy_extensions.rb +1 -2
  18. data/app/models/foreman_openscap/arf_report.rb +6 -4
  19. data/app/models/foreman_openscap/compliance_status.rb +3 -1
  20. data/app/models/foreman_openscap/policy.rb +62 -33
  21. data/app/models/foreman_openscap/scap_content.rb +1 -3
  22. data/app/views/arf_reports/_list.html.erb +1 -1
  23. data/app/views/arf_reports/show.html.erb +4 -4
  24. data/app/views/compliance_hosts/show.html.erb +1 -1
  25. data/app/views/dashboard/_compliance_host_reports_widget.html.erb +6 -6
  26. data/app/views/policies/index.html.erb +2 -2
  27. data/app/views/policies/steps/_schedule_form.html.erb +1 -1
  28. data/app/views/policies/steps/_step_form.html.erb +1 -0
  29. data/app/views/policies/welcome.html.erb +1 -1
  30. data/app/views/policy_dashboard/index.html.erb +2 -2
  31. data/app/views/scap_contents/index.html.erb +2 -2
  32. data/app/views/scap_contents/welcome.html.erb +1 -1
  33. data/db/migrate/20160830113437_remove_deleted_policy.rb +10 -0
  34. data/db/seeds.d/openscap_policy_notification.rb +2 -0
  35. data/lib/foreman_openscap/data_migration.rb +1 -1
  36. data/lib/foreman_openscap/engine.rb +11 -1
  37. data/lib/foreman_openscap/helper.rb +4 -8
  38. data/lib/foreman_openscap/version.rb +1 -1
  39. data/locale/Makefile +60 -0
  40. data/locale/de/LC_MESSAGES/foreman_openscap.mo +0 -0
  41. data/locale/de/foreman_openscap.po +616 -0
  42. data/locale/en_GB/LC_MESSAGES/foreman_openscap.mo +0 -0
  43. data/locale/en_GB/foreman_openscap.po +616 -0
  44. data/locale/es/LC_MESSAGES/foreman_openscap.mo +0 -0
  45. data/locale/es/foreman_openscap.po +616 -0
  46. data/locale/foreman_openscap.pot +873 -0
  47. data/locale/fr/LC_MESSAGES/foreman_openscap.mo +0 -0
  48. data/locale/fr/foreman_openscap.po +616 -0
  49. data/locale/gl/LC_MESSAGES/foreman_openscap.mo +0 -0
  50. data/locale/gl/foreman_openscap.po +616 -0
  51. data/locale/it/LC_MESSAGES/foreman_openscap.mo +0 -0
  52. data/locale/it/foreman_openscap.po +616 -0
  53. data/locale/ja/LC_MESSAGES/foreman_openscap.mo +0 -0
  54. data/locale/ja/foreman_openscap.po +616 -0
  55. data/locale/ko/LC_MESSAGES/foreman_openscap.mo +0 -0
  56. data/locale/ko/foreman_openscap.po +616 -0
  57. data/locale/pt_BR/LC_MESSAGES/foreman_openscap.mo +0 -0
  58. data/locale/pt_BR/foreman_openscap.po +616 -0
  59. data/locale/ru/LC_MESSAGES/foreman_openscap.mo +0 -0
  60. data/locale/ru/foreman_openscap.po +617 -0
  61. data/locale/sv_SE/LC_MESSAGES/foreman_openscap.mo +0 -0
  62. data/locale/sv_SE/foreman_openscap.po +616 -0
  63. data/locale/zanata.xml +29 -0
  64. data/locale/zh_CN/LC_MESSAGES/foreman_openscap.mo +0 -0
  65. data/locale/zh_CN/foreman_openscap.po +616 -0
  66. data/locale/zh_TW/LC_MESSAGES/foreman_openscap.mo +0 -0
  67. data/locale/zh_TW/foreman_openscap.po +616 -0
  68. data/test/factories/policy_factory.rb +2 -2
  69. data/test/functional/api/v2/compliance/policies_controller_test.rb +7 -3
  70. data/test/test_plugin_helper.rb +35 -37
  71. data/test/unit/concerns/openscap_proxy_extenstions_test.rb +21 -0
  72. data/test/unit/openscap_host_test.rb +3 -1
  73. data/test/unit/policy_test.rb +125 -0
  74. data/test/unit/scap_content_test.rb +5 -0
  75. metadata +231 -198
@@ -0,0 +1,616 @@
1
+ # Swedish translations for foreman_openscap package.
2
+ # Copyright (C) 2016 THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the foreman_openscap package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2016.
5
+ #
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: foreman_openscap 1.0.0\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "PO-Revision-Date: 2016-02-09 16:41-0500\n"
11
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12
+ "Language-Team: Swedish\n"
13
+ "Language: sv_SE\n"
14
+ "MIME-Version: 1.0\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
+ "\n"
19
+
20
+ msgid "%s - The following compliance reports are about to be changed"
21
+ msgstr ""
22
+
23
+ msgid "%s ago"
24
+ msgstr ""
25
+
26
+ msgid "%s compliance report by policy"
27
+ msgid_plural "%s compliance reports by policy"
28
+ msgstr[0] ""
29
+ msgstr[1] ""
30
+
31
+ msgid "%s latest report"
32
+ msgstr ""
33
+
34
+ msgid "%s reports over time"
35
+ msgstr ""
36
+
37
+ msgid "%{parameter} class parameter for class %{class} could not be configured."
38
+ msgstr ""
39
+
40
+ msgid "<b>Foreman</b> OpenSCAP summary"
41
+ msgstr ""
42
+
43
+ msgid "A compliance policy is defined by security professionals who specify desired settings (often in the form of a checklist) that are to be used in the computing environment. Compliance audit is a process of figuring out whether a given object follows all the rules written out in a compliance policy."
44
+ msgstr ""
45
+
46
+ msgid "A summary of reports for OpenSCAP policies"
47
+ msgstr ""
48
+
49
+ msgid "All messages"
50
+ msgstr ""
51
+
52
+ msgid "Apply policy to host groups"
53
+ msgstr ""
54
+
55
+ msgid "Assign Compliance Policy"
56
+ msgstr ""
57
+
58
+ msgid "Back"
59
+ msgstr ""
60
+
61
+ msgid "Cancel"
62
+ msgstr ""
63
+
64
+ msgid "Cannot generate HTML guide for %{scap_content}/%{profile}"
65
+ msgstr ""
66
+
67
+ msgid "Changed"
68
+ msgstr ""
69
+
70
+ msgid "Changed file does not include existing SCAP content profiles"
71
+ msgstr ""
72
+
73
+ msgid "Changed?"
74
+ msgstr ""
75
+
76
+ msgid "Choose existing SCAP Content"
77
+ msgstr ""
78
+
79
+ msgid "Choose period"
80
+ msgstr ""
81
+
82
+ msgid "Choose weekday"
83
+ msgstr ""
84
+
85
+ msgid "Compliance"
86
+ msgstr ""
87
+
88
+ msgid "Compliance Policies"
89
+ msgstr ""
90
+
91
+ msgid "Compliance Reports"
92
+ msgstr ""
93
+
94
+ msgid "Compliance Status"
95
+ msgstr ""
96
+
97
+ msgid "Compliance policy configuration"
98
+ msgstr ""
99
+
100
+ msgid "Compliance policy: %s"
101
+ msgstr ""
102
+
103
+ msgid "Compliance reports breakdown"
104
+ msgstr ""
105
+
106
+ msgid "Compliant"
107
+ msgstr ""
108
+
109
+ msgid "Compliant hosts"
110
+ msgstr ""
111
+
112
+ msgid "Compliant with the policy"
113
+ msgstr ""
114
+
115
+ msgid "Create SCAP content"
116
+ msgstr ""
117
+
118
+ msgid "Create a policy"
119
+ msgstr ""
120
+
121
+ msgid "Cron line does not consist of 5 parts separated by space"
122
+ msgstr ""
123
+
124
+ msgid "Date"
125
+ msgstr ""
126
+
127
+ msgid "Default XCCDF profile"
128
+ msgstr ""
129
+
130
+ msgid "Delete"
131
+ msgstr ""
132
+
133
+ msgid "Delete compliance policy %s with all the reports?"
134
+ msgstr ""
135
+
136
+ msgid "Delete compliance report for %s?"
137
+ msgstr ""
138
+
139
+ msgid "Delete reports"
140
+ msgstr ""
141
+
142
+ msgid "Deletes a policy"
143
+ msgstr ""
144
+
145
+ msgid "Deletes an ARF Report"
146
+ msgstr ""
147
+
148
+ msgid "Deletes an SCAP content"
149
+ msgstr ""
150
+
151
+ msgid "Description"
152
+ msgstr ""
153
+
154
+ msgid "Download"
155
+ msgstr ""
156
+
157
+ msgid "Download XML in bzip"
158
+ msgstr ""
159
+
160
+ msgid "Edit"
161
+ msgstr ""
162
+
163
+ msgid "Edit Compliance Policy"
164
+ msgstr ""
165
+
166
+ msgid "Edit SCAP Content"
167
+ msgstr ""
168
+
169
+ msgid "Failed"
170
+ msgstr ""
171
+
172
+ msgid "Failed and Othered"
173
+ msgstr ""
174
+
175
+ msgid "Failed only"
176
+ msgstr ""
177
+
178
+ msgid "Failed to delete %s compliance reports"
179
+ msgstr ""
180
+
181
+ msgid "Failed to delete ARF Report for host %{host_name} reported at %{reported_at}"
182
+ msgstr ""
183
+
184
+ msgid "Failed to downloaded ARF report as bzip: %s"
185
+ msgstr ""
186
+
187
+ msgid "Failed|F"
188
+ msgstr ""
189
+
190
+ msgid "File Upload"
191
+ msgstr ""
192
+
193
+ msgid "General"
194
+ msgstr ""
195
+
196
+ msgid "Help"
197
+ msgstr ""
198
+
199
+ msgid "Host"
200
+ msgstr ""
201
+
202
+ msgid "Host Breakdown Chart"
203
+ msgstr ""
204
+
205
+ msgid "Host Groups"
206
+ msgstr ""
207
+
208
+ msgid "Host compliance details"
209
+ msgstr ""
210
+
211
+ msgid "Host details"
212
+ msgstr ""
213
+
214
+ msgid "Host does not exist anymore"
215
+ msgstr ""
216
+
217
+ msgid "Host is deleted"
218
+ msgstr ""
219
+
220
+ msgid "Hostname"
221
+ msgstr ""
222
+
223
+ msgid "Hosts Breakdown"
224
+ msgstr ""
225
+
226
+ msgid "In Foreman, a compliance policy checklist is defined via %s, once SCAP content is present, you can create a policy, assign select host groups and schedule to run."
227
+ msgstr ""
228
+
229
+ msgid ""
230
+ "In Foreman, scap_contents represent the SCAP security guides on your hosts, and create SCAP profiles for you to assign to hosts / host groups\n"
231
+ " via %s"
232
+ msgstr ""
233
+
234
+ msgid "Incompliant"
235
+ msgstr ""
236
+
237
+ msgid "Incompliant hosts"
238
+ msgstr ""
239
+
240
+ msgid "Inconclusive"
241
+ msgstr ""
242
+
243
+ msgid "Inconclusive results"
244
+ msgstr ""
245
+
246
+ msgid "Latest compliance reports"
247
+ msgstr ""
248
+
249
+ msgid "Latest reports for policy: %s"
250
+ msgstr ""
251
+
252
+ msgid "List ARF reports"
253
+ msgstr ""
254
+
255
+ msgid "List SCAP contents"
256
+ msgstr ""
257
+
258
+ msgid "Loading..."
259
+ msgstr ""
260
+
261
+ msgid "Locations"
262
+ msgstr ""
263
+
264
+ msgid "Message"
265
+ msgstr ""
266
+
267
+ msgid "More details"
268
+ msgstr ""
269
+
270
+ msgid "Never audited"
271
+ msgstr ""
272
+
273
+ msgid "New Compliance Policy"
274
+ msgstr ""
275
+
276
+ msgid "New Compliance policy"
277
+ msgstr ""
278
+
279
+ msgid "New SCAP content"
280
+ msgstr ""
281
+
282
+ msgid "Next"
283
+ msgstr ""
284
+
285
+ msgid "No"
286
+ msgstr ""
287
+
288
+ msgid "No ARF reports for this policy"
289
+ msgstr ""
290
+
291
+ msgid "No Available Proxy to validate SCAP content"
292
+ msgstr ""
293
+
294
+ msgid "No OpenSCAP proxy found for %s"
295
+ msgstr ""
296
+
297
+ msgid "No Proxy with OpenSCAP features"
298
+ msgstr ""
299
+
300
+ msgid "No available proxy to validate. Returned with error: %s"
301
+ msgstr ""
302
+
303
+ msgid "No compliance policy selected."
304
+ msgstr ""
305
+
306
+ msgid "No compliance reports selected"
307
+ msgstr ""
308
+
309
+ msgid "No compliance reports were found."
310
+ msgstr ""
311
+
312
+ msgid "No hosts selected"
313
+ msgstr ""
314
+
315
+ msgid "No hosts were found."
316
+ msgstr ""
317
+
318
+ msgid "No report for this policy"
319
+ msgstr ""
320
+
321
+ msgid "No reports available"
322
+ msgstr ""
323
+
324
+ msgid "No valid OpenSCAP proxy server found."
325
+ msgstr ""
326
+
327
+ msgid "No valid policy ID provided"
328
+ msgstr ""
329
+
330
+ msgid "None!"
331
+ msgstr ""
332
+
333
+ msgid "Not audited"
334
+ msgstr ""
335
+
336
+ msgid "Not compliant with the policy"
337
+ msgstr ""
338
+
339
+ msgid "Nothing to show"
340
+ msgstr ""
341
+
342
+ msgid "Number of Events"
343
+ msgstr ""
344
+
345
+ msgid "Number of a day in month, note that not all months have same count of days"
346
+ msgstr ""
347
+
348
+ msgid "OpenSCAP Host reports widget"
349
+ msgstr ""
350
+
351
+ msgid "OpenSCAP Proxy"
352
+ msgstr ""
353
+
354
+ msgid "OpenSCAP Reports breakdown widget"
355
+ msgstr ""
356
+
357
+ msgid "Organizations"
358
+ msgstr ""
359
+
360
+ msgid "Other"
361
+ msgstr ""
362
+
363
+ msgid "Othered"
364
+ msgstr ""
365
+
366
+ msgid "Othered|O"
367
+ msgstr ""
368
+
369
+ msgid "Passed"
370
+ msgstr ""
371
+
372
+ msgid "Passed|P"
373
+ msgstr ""
374
+
375
+ msgid "Please Confirm"
376
+ msgstr ""
377
+
378
+ msgid "Policies"
379
+ msgstr ""
380
+
381
+ msgid "Policies with hosts:"
382
+ msgstr ""
383
+
384
+ msgid "Policy"
385
+ msgstr ""
386
+
387
+ msgid "Policy %s"
388
+ msgstr ""
389
+
390
+ msgid "Policy SCAP content ID"
391
+ msgstr ""
392
+
393
+ msgid "Policy SCAP content profile ID"
394
+ msgstr ""
395
+
396
+ msgid "Policy description"
397
+ msgstr ""
398
+
399
+ msgid "Policy name"
400
+ msgstr ""
401
+
402
+ msgid "Policy schedule period"
403
+ msgstr ""
404
+
405
+ msgid "Policy schedule weekday"
406
+ msgstr ""
407
+
408
+ msgid "Puppet class %{class} does not have %{parameter} class parameter."
409
+ msgstr ""
410
+
411
+ msgid "Puppet class 'foreman_scap_client' not found, make sure it is imported form Puppet master"
412
+ msgstr ""
413
+
414
+ msgid "Rationale"
415
+ msgstr ""
416
+
417
+ msgid "References"
418
+ msgstr ""
419
+
420
+ msgid "Report Metrics"
421
+ msgstr ""
422
+
423
+ msgid "Report Status"
424
+ msgstr ""
425
+
426
+ msgid "Reported At"
427
+ msgstr ""
428
+
429
+ msgid "Reported at %s"
430
+ msgstr ""
431
+
432
+ msgid "Reports"
433
+ msgstr ""
434
+
435
+ msgid "Required Puppet class %{class} is not found, please ensure it imported first."
436
+ msgstr ""
437
+
438
+ msgid "Resource"
439
+ msgstr ""
440
+
441
+ msgid "Result"
442
+ msgstr ""
443
+
444
+ msgid "SCAP Content"
445
+ msgstr ""
446
+
447
+ msgid "SCAP Contents"
448
+ msgstr ""
449
+
450
+ msgid "SCAP content"
451
+ msgstr ""
452
+
453
+ msgid "SCAP content configuration"
454
+ msgstr ""
455
+
456
+ msgid "SCAP content name"
457
+ msgstr ""
458
+
459
+ msgid "SCAP contents"
460
+ msgstr ""
461
+
462
+ msgid "SCAP policies summary"
463
+ msgstr ""
464
+
465
+ msgid "Schedule"
466
+ msgstr ""
467
+
468
+ msgid "Select Action"
469
+ msgstr ""
470
+
471
+ msgid "Select Compliance Policy"
472
+ msgstr ""
473
+
474
+ msgid "Select all items in this page"
475
+ msgstr ""
476
+
477
+ msgid "Severity"
478
+ msgstr ""
479
+
480
+ msgid "Show Guide"
481
+ msgstr ""
482
+
483
+ msgid "Show a policy's SCAP content"
484
+ msgstr ""
485
+
486
+ msgid "Show an ARF report"
487
+ msgstr ""
488
+
489
+ msgid "Show an SCAP content"
490
+ msgstr ""
491
+
492
+ msgid "Show log messages:"
493
+ msgstr ""
494
+
495
+ msgid "Something went wrong while selecting compliance reports - %s"
496
+ msgstr ""
497
+
498
+ msgid "Something went wrong while selecting hosts - %s"
499
+ msgstr ""
500
+
501
+ msgid "Source: Wikipedia %s"
502
+ msgstr ""
503
+
504
+ msgid "Status chart"
505
+ msgstr ""
506
+
507
+ msgid "Status table"
508
+ msgstr ""
509
+
510
+ msgid "Submit"
511
+ msgstr ""
512
+
513
+ msgid "Successfully deleted %s compliance reports"
514
+ msgstr ""
515
+
516
+ msgid "Successfully deleted ARF report."
517
+ msgstr ""
518
+
519
+ msgid "Summary from %{time} ago to now"
520
+ msgstr ""
521
+
522
+ msgid "Summary report from Foreman server at %{foreman_url}"
523
+ msgstr ""
524
+
525
+ msgid ""
526
+ "The Security Content Automation Protocol (SCAP), combines a number of open standards that are used to enumerate software flaws and\n"
527
+ " configuration issues related to security. They measure systems to find vulnerabilities and offer methods to score those findings in order\n"
528
+ " to evaluate the possible impact. It is a method for using those open standards for automated vulnerability management, measurement,\n"
529
+ " and policy compliance evaluation. "
530
+ msgstr ""
531
+
532
+ msgid "Total"
533
+ msgstr ""
534
+
535
+ msgid "Total hosts: %s"
536
+ msgstr ""
537
+
538
+ msgid "Total of one host"
539
+ msgid_plural "Total of %{hosts} hosts"
540
+ msgstr[0] ""
541
+ msgstr[1] ""
542
+
543
+ msgid "Unable to get HTML version of requested report from Smart Proxy"
544
+ msgstr ""
545
+
546
+ msgid "Unable to get XML version of requested report from Smart Proxy"
547
+ msgstr ""
548
+
549
+ msgid "Unassign Compliance Policy"
550
+ msgstr ""
551
+
552
+ msgid "Unknown Compliance status"
553
+ msgstr ""
554
+
555
+ msgid "Unsupported report status format"
556
+ msgstr ""
557
+
558
+ msgid "Update a policy"
559
+ msgstr ""
560
+
561
+ msgid "Update an SCAP content"
562
+ msgstr ""
563
+
564
+ msgid "Updated hosts: Assigned with compliance policy: %s"
565
+ msgstr ""
566
+
567
+ msgid "Updated hosts: Unassigned from compliance policy '%s'"
568
+ msgstr ""
569
+
570
+ msgid "Upload New SCAP Content"
571
+ msgstr ""
572
+
573
+ msgid "Upload SCAP DataStream file"
574
+ msgstr ""
575
+
576
+ msgid "Upload an ARF report"
577
+ msgstr ""
578
+
579
+ msgid "Upload new SCAP content file"
580
+ msgstr ""
581
+
582
+ msgid "View Report"
583
+ msgstr ""
584
+
585
+ msgid "View full report"
586
+ msgstr ""
587
+
588
+ msgid "XCCDF Profile"
589
+ msgstr ""
590
+
591
+ msgid "Yes"
592
+ msgstr ""
593
+
594
+ msgid "You can specify custom cron line, e.g. \"0 3 * * *\", separate each of 5 values by space"
595
+ msgstr ""
596
+
597
+ msgid "You must fill cron line"
598
+ msgstr ""
599
+
600
+ msgid "You must fill day of month"
601
+ msgstr ""
602
+
603
+ msgid "You must fill weekday"
604
+ msgstr ""
605
+
606
+ msgid "invalid type %s"
607
+ msgstr ""
608
+
609
+ msgid "items selected. Uncheck to Clear"
610
+ msgstr ""
611
+
612
+ msgid "read more"
613
+ msgstr ""
614
+
615
+ msgid "these Complianace reports"
616
+ msgstr ""
data/locale/zanata.xml ADDED
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <config xmlns="http://zanata.org/namespace/config/">
3
+ <url>https://translate.zanata.org/zanata/</url>
4
+ <project>foreman-openscap</project>
5
+ <project-version>master</project-version>
6
+
7
+ <project-type>podir</project-type>
8
+ <locales>
9
+ <locale>fr</locale>
10
+ <locale>it</locale>
11
+ <locale>ja</locale>
12
+ <locale>ko</locale>
13
+ <locale>gu</locale>
14
+ <locale>hi</locale>
15
+ <locale>mr</locale>
16
+ <locale>or</locale>
17
+ <locale>ru</locale>
18
+ <locale>te</locale>
19
+ <locale>pa</locale>
20
+ <locale>kn</locale>
21
+ <locale map-from="de">de-DE</locale>
22
+ <locale map-from="es">es-ES</locale>
23
+ <locale map-from="pt_BR">pt-BR</locale>
24
+ <locale map-from="bn">bn-IN</locale>
25
+ <locale map-from="ta">ta-IN</locale>
26
+ <locale map-from="zh_CN">zh-Hans-CN</locale>
27
+ <locale map-from="zh_TW">zh-Hant-TW</locale>
28
+ </locales>
29
+ </config>