@bsb/base 9.0.5 → 9.1.1

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.
Files changed (196) hide show
  1. package/lib/base/BSBConfig.d.ts +3 -3
  2. package/lib/base/BSBConfig.js +9 -14
  3. package/lib/base/BSBConfig.js.map +1 -1
  4. package/lib/base/BSBEvents.d.ts +3 -3
  5. package/lib/base/BSBEvents.js +12 -17
  6. package/lib/base/BSBEvents.js.map +1 -1
  7. package/lib/base/BSBObservable.d.ts +4 -4
  8. package/lib/base/BSBObservable.js +17 -22
  9. package/lib/base/BSBObservable.js.map +1 -1
  10. package/lib/base/BSBService.d.ts +7 -8
  11. package/lib/base/BSBService.js +17 -22
  12. package/lib/base/BSBService.js.map +1 -1
  13. package/lib/base/BSBServiceClient.d.ts +4 -4
  14. package/lib/base/BSBServiceClient.js +12 -18
  15. package/lib/base/BSBServiceClient.js.map +1 -1
  16. package/lib/base/EventValidator.d.ts +16 -17
  17. package/lib/base/EventValidator.js +13 -34
  18. package/lib/base/EventValidator.js.map +1 -1
  19. package/lib/base/ObservableBackend.d.ts +2 -2
  20. package/lib/base/ObservableBackend.js +21 -26
  21. package/lib/base/ObservableBackend.js.map +1 -1
  22. package/lib/base/PluginConfig.d.ts +9 -5
  23. package/lib/base/PluginConfig.js +4 -11
  24. package/lib/base/PluginConfig.js.map +1 -1
  25. package/lib/base/PluginEvents.d.ts +4 -4
  26. package/lib/base/PluginEvents.js +4 -9
  27. package/lib/base/PluginEvents.js.map +1 -1
  28. package/lib/base/PluginObservable.d.ts +13 -14
  29. package/lib/base/PluginObservable.js +4 -8
  30. package/lib/base/PluginObservable.js.map +1 -1
  31. package/lib/base/ResourceContext.d.ts +1 -1
  32. package/lib/base/ResourceContext.js +1 -5
  33. package/lib/base/ResourceContext.js.map +1 -1
  34. package/lib/base/base.d.ts +3 -3
  35. package/lib/base/base.js +10 -18
  36. package/lib/base/base.js.map +1 -1
  37. package/lib/base/errorMessages.d.ts +1 -1
  38. package/lib/base/errorMessages.js +6 -11
  39. package/lib/base/errorMessages.js.map +1 -1
  40. package/lib/base/factory.d.ts +1 -1
  41. package/lib/base/factory.js +19 -22
  42. package/lib/base/factory.js.map +1 -1
  43. package/lib/base/functions.d.ts +19 -14
  44. package/lib/base/functions.js +19 -26
  45. package/lib/base/functions.js.map +1 -1
  46. package/lib/base/index.d.ts +18 -18
  47. package/lib/base/index.js +18 -37
  48. package/lib/base/index.js.map +1 -1
  49. package/lib/base/logFormatter.d.ts +1 -1
  50. package/lib/base/logFormatter.js +10 -14
  51. package/lib/base/logFormatter.js.map +1 -1
  52. package/lib/base/module-runtime.d.ts +3 -0
  53. package/lib/base/module-runtime.js +15 -0
  54. package/lib/base/module-runtime.js.map +1 -0
  55. package/lib/base/tools.d.ts +1 -1
  56. package/lib/base/tools.js +9 -13
  57. package/lib/base/tools.js.map +1 -1
  58. package/lib/cli.js +13 -12
  59. package/lib/cli.js.map +1 -1
  60. package/lib/dev.js +22 -11
  61. package/lib/dev.js.map +1 -1
  62. package/lib/index.d.ts +3 -3
  63. package/lib/index.js +3 -19
  64. package/lib/index.js.map +1 -1
  65. package/lib/interfaces/events.d.ts +2 -2
  66. package/lib/interfaces/events.js +1 -4
  67. package/lib/interfaces/events.js.map +1 -1
  68. package/lib/interfaces/index.d.ts +13 -12
  69. package/lib/interfaces/index.js +12 -32
  70. package/lib/interfaces/index.js.map +1 -1
  71. package/lib/interfaces/logging.d.ts +3 -3
  72. package/lib/interfaces/logging.js +1 -4
  73. package/lib/interfaces/logging.js.map +1 -1
  74. package/lib/interfaces/metrics.d.ts +2 -2
  75. package/lib/interfaces/metrics.js +1 -5
  76. package/lib/interfaces/metrics.js.map +1 -1
  77. package/lib/interfaces/observable-types.d.ts +1 -1
  78. package/lib/interfaces/observable-types.js +1 -4
  79. package/lib/interfaces/observable-types.js.map +1 -1
  80. package/lib/interfaces/observable.d.ts +8 -9
  81. package/lib/interfaces/observable.js +1 -2
  82. package/lib/interfaces/observable.js.map +1 -1
  83. package/lib/interfaces/options.d.ts +15 -6
  84. package/lib/interfaces/options.js +2 -5
  85. package/lib/interfaces/options.js.map +1 -1
  86. package/lib/interfaces/plugins.d.ts +2 -2
  87. package/lib/interfaces/plugins.js +1 -4
  88. package/lib/interfaces/plugins.js.map +1 -1
  89. package/lib/interfaces/result.js +8 -18
  90. package/lib/interfaces/result.js.map +1 -1
  91. package/lib/interfaces/schema-events.d.ts +4 -19
  92. package/lib/interfaces/schema-events.js +6 -13
  93. package/lib/interfaces/schema-events.js.map +1 -1
  94. package/lib/interfaces/schema-types.d.ts +32 -352
  95. package/lib/interfaces/schema-types.js +77 -512
  96. package/lib/interfaces/schema-types.js.map +1 -1
  97. package/lib/interfaces/service.d.ts +1 -1
  98. package/lib/interfaces/service.js +1 -2
  99. package/lib/interfaces/service.js.map +1 -1
  100. package/lib/interfaces/tools.js +8 -13
  101. package/lib/interfaces/tools.js.map +1 -1
  102. package/lib/plugins/config-default/index.d.ts +16 -14
  103. package/lib/plugins/config-default/index.js +66 -49
  104. package/lib/plugins/config-default/index.js.map +1 -1
  105. package/lib/plugins/config-default/interfaces.d.ts +1 -1
  106. package/lib/plugins/config-default/interfaces.js +1 -2
  107. package/lib/plugins/config-default/interfaces.js.map +1 -1
  108. package/lib/plugins/events-default/events/broadcast.d.ts +1 -1
  109. package/lib/plugins/events-default/events/broadcast.js +2 -6
  110. package/lib/plugins/events-default/events/broadcast.js.map +1 -1
  111. package/lib/plugins/events-default/events/emit.d.ts +1 -1
  112. package/lib/plugins/events-default/events/emit.js +4 -8
  113. package/lib/plugins/events-default/events/emit.js.map +1 -1
  114. package/lib/plugins/events-default/events/emitAndReturn.d.ts +1 -1
  115. package/lib/plugins/events-default/events/emitAndReturn.js +4 -8
  116. package/lib/plugins/events-default/events/emitAndReturn.js.map +1 -1
  117. package/lib/plugins/events-default/events/emitStreamAndReceiveStream.d.ts +1 -1
  118. package/lib/plugins/events-default/events/emitStreamAndReceiveStream.js +8 -12
  119. package/lib/plugins/events-default/events/emitStreamAndReceiveStream.js.map +1 -1
  120. package/lib/plugins/events-default/events/index.d.ts +4 -4
  121. package/lib/plugins/events-default/events/index.js +4 -11
  122. package/lib/plugins/events-default/events/index.js.map +1 -1
  123. package/lib/plugins/events-default/index.d.ts +5 -5
  124. package/lib/plugins/events-default/index.js +10 -14
  125. package/lib/plugins/events-default/index.js.map +1 -1
  126. package/lib/plugins/observable-default/index.d.ts +5 -5
  127. package/lib/plugins/observable-default/index.js +8 -12
  128. package/lib/plugins/observable-default/index.js.map +1 -1
  129. package/lib/plugins/service-benchmarkify/index.d.ts +69 -185
  130. package/lib/plugins/service-benchmarkify/index.js +39 -43
  131. package/lib/plugins/service-benchmarkify/index.js.map +1 -1
  132. package/lib/plugins/service-default0/index.d.ts +73 -171
  133. package/lib/plugins/service-default0/index.js +36 -40
  134. package/lib/plugins/service-default0/index.js.map +1 -1
  135. package/lib/plugins/service-default1/client.d.ts +3 -3
  136. package/lib/plugins/service-default1/client.js +2 -6
  137. package/lib/plugins/service-default1/client.js.map +1 -1
  138. package/lib/plugins/service-default1/index.d.ts +75 -177
  139. package/lib/plugins/service-default1/index.js +41 -45
  140. package/lib/plugins/service-default1/index.js.map +1 -1
  141. package/lib/plugins/service-default2/index.d.ts +89 -231
  142. package/lib/plugins/service-default2/index.js +47 -51
  143. package/lib/plugins/service-default2/index.js.map +1 -1
  144. package/lib/plugins/service-default3/index.d.ts +23 -51
  145. package/lib/plugins/service-default3/index.js +16 -20
  146. package/lib/plugins/service-default3/index.js.map +1 -1
  147. package/lib/plugins/service-default4/index.d.ts +13 -27
  148. package/lib/plugins/service-default4/index.js +12 -16
  149. package/lib/plugins/service-default4/index.js.map +1 -1
  150. package/lib/schemas/config-default.json +24 -16
  151. package/lib/schemas/config-default.plugin.json +24 -16
  152. package/lib/schemas/events-default.json +1 -1
  153. package/lib/schemas/events-default.plugin.json +1 -1
  154. package/lib/schemas/observable-default.json +15 -5
  155. package/lib/schemas/observable-default.plugin.json +15 -5
  156. package/lib/schemas/service-benchmarkify.json +232 -147
  157. package/lib/schemas/service-default0.json +205 -142
  158. package/lib/schemas/service-default1.json +245 -160
  159. package/lib/schemas/service-default2.json +270 -183
  160. package/lib/schemas/service-default3.json +78 -36
  161. package/lib/schemas/service-default4.json +45 -15
  162. package/lib/scripts/bsb-client-cli.js +9 -9
  163. package/lib/scripts/bsb-client-cli.js.map +1 -1
  164. package/lib/scripts/bsb-plugin-cli.js +48 -50
  165. package/lib/scripts/bsb-plugin-cli.js.map +1 -1
  166. package/lib/scripts/export-schemas.js +8 -10
  167. package/lib/scripts/export-schemas.js.map +1 -1
  168. package/lib/scripts/extract-schemas-from-source.js +73 -56
  169. package/lib/scripts/extract-schemas-from-source.js.map +1 -1
  170. package/lib/scripts/generate-client-types.d.ts +1 -16
  171. package/lib/scripts/generate-client-types.js +120 -313
  172. package/lib/scripts/generate-client-types.js.map +1 -1
  173. package/lib/scripts/generate-plugin-json.js +9 -10
  174. package/lib/scripts/generate-plugin-json.js.map +1 -1
  175. package/lib/serviceBase/config.d.ts +4 -4
  176. package/lib/serviceBase/config.js +33 -35
  177. package/lib/serviceBase/config.js.map +1 -1
  178. package/lib/serviceBase/events.d.ts +6 -6
  179. package/lib/serviceBase/events.js +42 -44
  180. package/lib/serviceBase/events.js.map +1 -1
  181. package/lib/serviceBase/index.d.ts +7 -7
  182. package/lib/serviceBase/index.js +7 -23
  183. package/lib/serviceBase/index.js.map +1 -1
  184. package/lib/serviceBase/observable.d.ts +5 -5
  185. package/lib/serviceBase/observable.js +21 -25
  186. package/lib/serviceBase/observable.js.map +1 -1
  187. package/lib/serviceBase/plugins.d.ts +3 -3
  188. package/lib/serviceBase/plugins.js +47 -53
  189. package/lib/serviceBase/plugins.js.map +1 -1
  190. package/lib/serviceBase/serviceBase.d.ts +3 -3
  191. package/lib/serviceBase/serviceBase.js +40 -44
  192. package/lib/serviceBase/serviceBase.js.map +1 -1
  193. package/lib/serviceBase/services.d.ts +6 -6
  194. package/lib/serviceBase/services.js +21 -22
  195. package/lib/serviceBase/services.js.map +1 -1
  196. package/package.json +18 -11
@@ -1,29 +1,37 @@
1
1
  {
2
2
  "pluginName": "service-benchmarkify",
3
- "version": "9.0.5",
3
+ "version": "9.1.0",
4
4
  "events": {
5
5
  "benchmark.started": {
6
6
  "type": "fire-and-forget",
7
7
  "category": "emitEvents",
8
8
  "description": "Benchmark test started",
9
9
  "inputSchema": {
10
- "description": "Benchmark start parameters",
11
- "type": "object",
12
- "properties": {
13
- "name": {
14
- "description": "Benchmark name",
15
- "type": "string"
10
+ "anyvaliVersion": "1.0",
11
+ "schemaVersion": "1",
12
+ "root": {
13
+ "kind": "object",
14
+ "properties": {
15
+ "name": {
16
+ "kind": "string"
17
+ },
18
+ "timestamp": {
19
+ "kind": "string",
20
+ "format": "date-time"
21
+ }
16
22
  },
17
- "timestamp": {
18
- "description": "Start timestamp",
19
- "type": "string",
20
- "format": "datetime"
21
- }
23
+ "required": [
24
+ "name",
25
+ "timestamp"
26
+ ],
27
+ "unknownKeys": "strip"
22
28
  },
23
- "required": [
24
- "name",
25
- "timestamp"
26
- ]
29
+ "definitions": {},
30
+ "extensions": {
31
+ "bsb": {
32
+ "description": "Benchmark start parameters"
33
+ }
34
+ }
27
35
  },
28
36
  "outputSchema": null
29
37
  },
@@ -32,15 +40,27 @@
32
40
  "category": "onEvents",
33
41
  "description": "Trigger benchmark execution",
34
42
  "inputSchema": {
35
- "description": "Benchmark trigger parameters",
36
- "type": "object",
37
- "properties": {
38
- "testName": {
39
- "description": "Name of test to run",
40
- "type": "string"
41
- }
43
+ "anyvaliVersion": "1.0",
44
+ "schemaVersion": "1",
45
+ "root": {
46
+ "kind": "object",
47
+ "properties": {
48
+ "testName": {
49
+ "kind": "optional",
50
+ "inner": {
51
+ "kind": "string"
52
+ }
53
+ }
54
+ },
55
+ "required": [],
56
+ "unknownKeys": "strip"
42
57
  },
43
- "required": []
58
+ "definitions": {},
59
+ "extensions": {
60
+ "bsb": {
61
+ "description": "Benchmark trigger parameters"
62
+ }
63
+ }
44
64
  },
45
65
  "outputSchema": null
46
66
  },
@@ -49,43 +69,56 @@
49
69
  "category": "emitReturnableEvents",
50
70
  "description": "Request performance test execution",
51
71
  "inputSchema": {
52
- "description": "Performance test parameters",
53
- "type": "object",
54
- "properties": {
55
- "iterations": {
56
- "description": "Number of iterations to run",
57
- "type": "number",
58
- "format": "double"
72
+ "anyvaliVersion": "1.0",
73
+ "schemaVersion": "1",
74
+ "root": {
75
+ "kind": "object",
76
+ "properties": {
77
+ "iterations": {
78
+ "kind": "number"
79
+ },
80
+ "warmup": {
81
+ "kind": "bool"
82
+ }
59
83
  },
60
- "warmup": {
61
- "description": "Whether to run warmup iterations",
62
- "type": "boolean"
63
- }
84
+ "required": [
85
+ "iterations",
86
+ "warmup"
87
+ ],
88
+ "unknownKeys": "strip"
64
89
  },
65
- "required": [
66
- "iterations",
67
- "warmup"
68
- ]
90
+ "definitions": {},
91
+ "extensions": {
92
+ "bsb": {
93
+ "description": "Performance test parameters"
94
+ }
95
+ }
69
96
  },
70
97
  "outputSchema": {
71
- "description": "Performance test results",
72
- "type": "object",
73
- "properties": {
74
- "duration": {
75
- "description": "Test duration in milliseconds",
76
- "type": "number",
77
- "format": "double"
98
+ "anyvaliVersion": "1.0",
99
+ "schemaVersion": "1",
100
+ "root": {
101
+ "kind": "object",
102
+ "properties": {
103
+ "duration": {
104
+ "kind": "number"
105
+ },
106
+ "opsPerSecond": {
107
+ "kind": "number"
108
+ }
78
109
  },
79
- "opsPerSecond": {
80
- "description": "Operations per second",
81
- "type": "number",
82
- "format": "double"
83
- }
110
+ "required": [
111
+ "duration",
112
+ "opsPerSecond"
113
+ ],
114
+ "unknownKeys": "strip"
84
115
  },
85
- "required": [
86
- "duration",
87
- "opsPerSecond"
88
- ]
116
+ "definitions": {},
117
+ "extensions": {
118
+ "bsb": {
119
+ "description": "Performance test results"
120
+ }
121
+ }
89
122
  }
90
123
  },
91
124
  "add": {
@@ -93,29 +126,43 @@
93
126
  "category": "onReturnableEvents",
94
127
  "description": "Add two numbers",
95
128
  "inputSchema": {
96
- "description": "Add input parameters",
97
- "type": "object",
98
- "properties": {
99
- "a": {
100
- "description": "First number",
101
- "type": "number",
102
- "format": "double"
129
+ "anyvaliVersion": "1.0",
130
+ "schemaVersion": "1",
131
+ "root": {
132
+ "kind": "object",
133
+ "properties": {
134
+ "a": {
135
+ "kind": "number"
136
+ },
137
+ "b": {
138
+ "kind": "number"
139
+ }
103
140
  },
104
- "b": {
105
- "description": "Second number",
106
- "type": "number",
107
- "format": "double"
108
- }
141
+ "required": [
142
+ "a",
143
+ "b"
144
+ ],
145
+ "unknownKeys": "strip"
109
146
  },
110
- "required": [
111
- "a",
112
- "b"
113
- ]
147
+ "definitions": {},
148
+ "extensions": {
149
+ "bsb": {
150
+ "description": "Add input parameters"
151
+ }
152
+ }
114
153
  },
115
154
  "outputSchema": {
116
- "description": "Sum of numbers",
117
- "type": "number",
118
- "format": "double"
155
+ "anyvaliVersion": "1.0",
156
+ "schemaVersion": "1",
157
+ "root": {
158
+ "kind": "number"
159
+ },
160
+ "definitions": {},
161
+ "extensions": {
162
+ "bsb": {
163
+ "description": "Sum of numbers"
164
+ }
165
+ }
119
166
  }
120
167
  },
121
168
  "void": {
@@ -123,14 +170,33 @@
123
170
  "category": "onReturnableEvents",
124
171
  "description": "Void event for benchmarking",
125
172
  "inputSchema": {
126
- "description": "Empty parameters",
127
- "type": "object",
128
- "properties": {},
129
- "required": []
173
+ "anyvaliVersion": "1.0",
174
+ "schemaVersion": "1",
175
+ "root": {
176
+ "kind": "object",
177
+ "properties": {},
178
+ "required": [],
179
+ "unknownKeys": "strip"
180
+ },
181
+ "definitions": {},
182
+ "extensions": {
183
+ "bsb": {
184
+ "description": "Empty parameters"
185
+ }
186
+ }
130
187
  },
131
188
  "outputSchema": {
132
- "description": "void",
133
- "oneOf": []
189
+ "anyvaliVersion": "1.0",
190
+ "schemaVersion": "1",
191
+ "root": {
192
+ "kind": "unknown"
193
+ },
194
+ "definitions": {},
195
+ "extensions": {
196
+ "bsb": {
197
+ "description": "void"
198
+ }
199
+ }
134
200
  }
135
201
  },
136
202
  "benchmark.results": {
@@ -138,53 +204,55 @@
138
204
  "category": "emitBroadcast",
139
205
  "description": "Broadcast benchmark results to all interested parties",
140
206
  "inputSchema": {
141
- "description": "Benchmark results parameters",
142
- "type": "object",
143
- "properties": {
144
- "testName": {
145
- "description": "Test name",
146
- "type": "string"
147
- },
148
- "results": {
149
- "description": "Array of benchmark results",
150
- "type": "array",
151
- "items": {
152
- "description": "Benchmark result entry",
153
- "type": "object",
154
- "properties": {
155
- "operation": {
156
- "description": "Operation name",
157
- "type": "string"
207
+ "anyvaliVersion": "1.0",
208
+ "schemaVersion": "1",
209
+ "root": {
210
+ "kind": "object",
211
+ "properties": {
212
+ "testName": {
213
+ "kind": "string"
214
+ },
215
+ "results": {
216
+ "kind": "array",
217
+ "items": {
218
+ "kind": "object",
219
+ "properties": {
220
+ "operation": {
221
+ "kind": "string"
222
+ },
223
+ "opsPerSecond": {
224
+ "kind": "number"
225
+ },
226
+ "duration": {
227
+ "kind": "number"
228
+ }
158
229
  },
159
- "opsPerSecond": {
160
- "description": "Operations per second",
161
- "type": "number",
162
- "format": "double"
163
- },
164
- "duration": {
165
- "description": "Duration in milliseconds",
166
- "type": "number",
167
- "format": "double"
168
- }
169
- },
170
- "required": [
171
- "operation",
172
- "opsPerSecond",
173
- "duration"
174
- ]
230
+ "required": [
231
+ "operation",
232
+ "opsPerSecond",
233
+ "duration"
234
+ ],
235
+ "unknownKeys": "strip"
236
+ }
237
+ },
238
+ "timestamp": {
239
+ "kind": "string",
240
+ "format": "date-time"
175
241
  }
176
242
  },
177
- "timestamp": {
178
- "description": "Results timestamp",
179
- "type": "string",
180
- "format": "datetime"
181
- }
243
+ "required": [
244
+ "testName",
245
+ "results",
246
+ "timestamp"
247
+ ],
248
+ "unknownKeys": "strip"
182
249
  },
183
- "required": [
184
- "testName",
185
- "results",
186
- "timestamp"
187
- ]
250
+ "definitions": {},
251
+ "extensions": {
252
+ "bsb": {
253
+ "description": "Benchmark results parameters"
254
+ }
255
+ }
188
256
  },
189
257
  "outputSchema": null
190
258
  },
@@ -193,37 +261,54 @@
193
261
  "category": "onBroadcast",
194
262
  "description": "Listen for system load updates",
195
263
  "inputSchema": {
196
- "description": "System load parameters",
197
- "type": "object",
198
- "properties": {
199
- "cpuUsage": {
200
- "description": "CPU usage percentage",
201
- "type": "number",
202
- "format": "double"
203
- },
204
- "memoryUsage": {
205
- "description": "Memory usage percentage",
206
- "type": "number",
207
- "format": "double"
264
+ "anyvaliVersion": "1.0",
265
+ "schemaVersion": "1",
266
+ "root": {
267
+ "kind": "object",
268
+ "properties": {
269
+ "cpuUsage": {
270
+ "kind": "number"
271
+ },
272
+ "memoryUsage": {
273
+ "kind": "number"
274
+ },
275
+ "timestamp": {
276
+ "kind": "string",
277
+ "format": "date-time"
278
+ }
208
279
  },
209
- "timestamp": {
210
- "description": "Load measurement timestamp",
211
- "type": "string",
212
- "format": "datetime"
213
- }
280
+ "required": [
281
+ "cpuUsage",
282
+ "memoryUsage",
283
+ "timestamp"
284
+ ],
285
+ "unknownKeys": "strip"
214
286
  },
215
- "required": [
216
- "cpuUsage",
217
- "memoryUsage",
218
- "timestamp"
219
- ]
287
+ "definitions": {},
288
+ "extensions": {
289
+ "bsb": {
290
+ "description": "System load parameters"
291
+ }
292
+ }
220
293
  },
221
294
  "outputSchema": null
222
295
  }
223
296
  },
224
297
  "pluginType": "service",
225
298
  "configSchema": {
226
- "$schema": "https://json-schema.org/draft/2020-12/schema",
227
- "type": "null"
299
+ "anyvaliVersion": "1.0",
300
+ "schemaVersion": "1",
301
+ "root": {
302
+ "kind": "optional",
303
+ "inner": {
304
+ "kind": "object",
305
+ "properties": {},
306
+ "required": [],
307
+ "unknownKeys": "strip"
308
+ },
309
+ "default": {}
310
+ },
311
+ "definitions": {},
312
+ "extensions": {}
228
313
  }
229
314
  }