monaco-editor11 1.1.6 → 1.1.8

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 (98) hide show
  1. package/dist/abap-CrvW7_qN.mjs +1398 -0
  2. package/dist/apex-BAOI8p1v.mjs +327 -0
  3. package/dist/assets/html.worker-C8VxctEJ.js +470 -0
  4. package/dist/azcli-BlCk_UqW.mjs +68 -0
  5. package/dist/bat-DPoEelVx.mjs +100 -0
  6. package/dist/bicep-Cp1F394l.mjs +102 -0
  7. package/dist/cameligo-CWqtSlQs.mjs +174 -0
  8. package/dist/clojure-CKBp32Gf.mjs +761 -0
  9. package/dist/coffee-CDo6vc-J.mjs +232 -0
  10. package/dist/cpp-DokufPgf.mjs +389 -0
  11. package/dist/csharp-BQi3szM0.mjs +326 -0
  12. package/dist/csp-BSGtCCZ-.mjs +53 -0
  13. package/dist/css-DEPFDJfb.mjs +187 -0
  14. package/dist/cssMode-BQ5BKBAY.mjs +141 -0
  15. package/dist/cypher-DAb1vOxS.mjs +263 -0
  16. package/dist/dart-C8p4jewR.mjs +281 -0
  17. package/dist/dockerfile-DP0iLFPN.mjs +130 -0
  18. package/dist/ecl-BDQHA6fi.mjs +456 -0
  19. package/dist/elixir-D4II6kDM.mjs +569 -0
  20. package/dist/environment.d.ts +1 -1
  21. package/dist/flow9-StcnL-VB.mjs +142 -0
  22. package/dist/freemarker2-6GYcye2r.mjs +982 -0
  23. package/dist/fsharp-DdUVp3EN.mjs +217 -0
  24. package/dist/go-D1-I258M.mjs +218 -0
  25. package/dist/graphql-DWkL3f8U.mjs +151 -0
  26. package/dist/handlebars-5_7gZ3QS.mjs +412 -0
  27. package/dist/hcl-D_0MNifv.mjs +183 -0
  28. package/dist/html-2thNXsIu.mjs +301 -0
  29. package/dist/htmlMode-Dmqis0oY.mjs +152 -0
  30. package/dist/index-CiIcpngo.mjs +128785 -0
  31. package/dist/index.d.ts +1 -7
  32. package/dist/ini-C4I2-MT7.mjs +71 -0
  33. package/dist/java-OBvaP_SS.mjs +232 -0
  34. package/dist/javascript-DGu9heQ1.mjs +70 -0
  35. package/dist/jsonMode-BHf-60PU.mjs +577 -0
  36. package/dist/julia-BmDH8Kkf.mjs +511 -0
  37. package/dist/kotlin-Dhu5AGOD.mjs +252 -0
  38. package/dist/less-CzmjXREq.mjs +162 -0
  39. package/dist/lexon-CV2c4pN9.mjs +157 -0
  40. package/dist/liquid-B6d5eZ0w.mjs +233 -0
  41. package/dist/lspLanguageFeatures-CQ-4g5T6.mjs +1458 -0
  42. package/dist/lua-CFY5U8qF.mjs +162 -0
  43. package/dist/m3-BL_AnZVh.mjs +210 -0
  44. package/dist/markdown-CWKQPXCv.mjs +229 -0
  45. package/dist/mdx-Dc2EzqW9.mjs +158 -0
  46. package/dist/mips-ButYmJ5E.mjs +198 -0
  47. package/dist/monaco-editor11.css +1 -0
  48. package/dist/monaco-editor11.es.js +21 -58
  49. package/dist/monaco-editor11.umd.js +1234 -1
  50. package/dist/monacoeditorwork/css.worker.bundle.js +54271 -0
  51. package/dist/monacoeditorwork/editor.worker..bundle.js +14319 -0
  52. package/dist/monacoeditorwork/json.worker.bundle.js +22098 -0
  53. package/dist/monacoeditorwork/ts.worker.bundle.js +225960 -0
  54. package/dist/msdax-C3cnXqDh.mjs +375 -0
  55. package/dist/mysql-YlSHaf6G.mjs +878 -0
  56. package/dist/objective-c-Dwnlproe.mjs +183 -0
  57. package/dist/pascal-UzGbSWEN.mjs +251 -0
  58. package/dist/pascaligo-CslTgu68.mjs +164 -0
  59. package/dist/perl-oj6r_mgw.mjs +626 -0
  60. package/dist/pgsql-DSBO0Mev.mjs +851 -0
  61. package/dist/php-YzCD--7j.mjs +500 -0
  62. package/dist/pla-CmylB8vQ.mjs +137 -0
  63. package/dist/postiats-CLFW5gNY.mjs +907 -0
  64. package/dist/powerquery-CmOWUvlh.mjs +890 -0
  65. package/dist/powershell-fHQcmBLK.mjs +239 -0
  66. package/dist/protobuf-p5BArb-9.mjs +420 -0
  67. package/dist/pug-gVdUDvqf.mjs +402 -0
  68. package/dist/python-BN7PRYMW.mjs +294 -0
  69. package/dist/qsharp-DnrWSUlt.mjs +301 -0
  70. package/dist/r-Cv309K2z.mjs +243 -0
  71. package/dist/razor-amsYwW3e.mjs +543 -0
  72. package/dist/redis-DTcS4wMj.mjs +302 -0
  73. package/dist/redshift-hLxZVESM.mjs +809 -0
  74. package/dist/restructuredtext-C898lK4f.mjs +174 -0
  75. package/dist/ruby-CgKtnJIQ.mjs +511 -0
  76. package/dist/rust-bj8oxVnh.mjs +343 -0
  77. package/dist/sb-DWynz26l.mjs +115 -0
  78. package/dist/scala-BL5z1UEd.mjs +370 -0
  79. package/dist/scheme-DUJsH6VU.mjs +108 -0
  80. package/dist/scss-CxjmhvaL.mjs +262 -0
  81. package/dist/shell-D14Zs1dF.mjs +221 -0
  82. package/dist/solidity-WyRm-BGK.mjs +1367 -0
  83. package/dist/sophia-CKk-_Oa5.mjs +199 -0
  84. package/dist/sparql-DHtmINMZ.mjs +201 -0
  85. package/dist/sql-Dqaj5JHC.mjs +853 -0
  86. package/dist/st-Bj2IIaop.mjs +416 -0
  87. package/dist/swift-DwxP72iM.mjs +312 -0
  88. package/dist/systemverilog-D7wJfuql.mjs +576 -0
  89. package/dist/tcl-0ApMt-eC.mjs +232 -0
  90. package/dist/tsMode-CfGJAg8A.mjs +946 -0
  91. package/dist/twig-DxwbdmvQ.mjs +392 -0
  92. package/dist/typescript-BkqvjzTg.mjs +336 -0
  93. package/dist/typespec-Fd-JwSuS.mjs +117 -0
  94. package/dist/vb-CxuyYE1I.mjs +372 -0
  95. package/dist/wgsl-DoEGc31J.mjs +439 -0
  96. package/dist/xml-BE08lKLg.mjs +88 -0
  97. package/dist/yaml-DaPfb7D4.mjs +199 -0
  98. package/package.json +3 -2
@@ -0,0 +1,576 @@
1
+ const e = {
2
+ comments: {
3
+ lineComment: "//",
4
+ blockComment: ["/*", "*/"]
5
+ },
6
+ brackets: [
7
+ ["{", "}"],
8
+ ["[", "]"],
9
+ ["(", ")"],
10
+ ["begin", "end"],
11
+ ["case", "endcase"],
12
+ ["casex", "endcase"],
13
+ ["casez", "endcase"],
14
+ ["checker", "endchecker"],
15
+ ["class", "endclass"],
16
+ ["clocking", "endclocking"],
17
+ ["config", "endconfig"],
18
+ ["function", "endfunction"],
19
+ ["generate", "endgenerate"],
20
+ ["group", "endgroup"],
21
+ ["interface", "endinterface"],
22
+ ["module", "endmodule"],
23
+ ["package", "endpackage"],
24
+ ["primitive", "endprimitive"],
25
+ ["program", "endprogram"],
26
+ ["property", "endproperty"],
27
+ ["specify", "endspecify"],
28
+ ["sequence", "endsequence"],
29
+ ["table", "endtable"],
30
+ ["task", "endtask"]
31
+ ],
32
+ autoClosingPairs: [
33
+ { open: "[", close: "]" },
34
+ { open: "{", close: "}" },
35
+ { open: "(", close: ")" },
36
+ { open: "'", close: "'", notIn: ["string", "comment"] },
37
+ { open: '"', close: '"', notIn: ["string"] }
38
+ ],
39
+ surroundingPairs: [
40
+ { open: "{", close: "}" },
41
+ { open: "[", close: "]" },
42
+ { open: "(", close: ")" },
43
+ { open: '"', close: '"' },
44
+ { open: "'", close: "'" }
45
+ ],
46
+ folding: {
47
+ offSide: !1,
48
+ markers: {
49
+ start: new RegExp(
50
+ "^(?:\\s*|.*(?!\\/[\\/\\*])[^\\w])(?:begin|case(x|z)?|class|clocking|config|covergroup|function|generate|interface|module|package|primitive|property|program|sequence|specify|table|task)\\b"
51
+ ),
52
+ end: new RegExp(
53
+ "^(?:\\s*|.*(?!\\/[\\/\\*])[^\\w])(?:end|endcase|endclass|endclocking|endconfig|endgroup|endfunction|endgenerate|endinterface|endmodule|endpackage|endprimitive|endproperty|endprogram|endsequence|endspecify|endtable|endtask)\\b"
54
+ )
55
+ }
56
+ }
57
+ }, n = {
58
+ defaultToken: "",
59
+ tokenPostfix: ".sv",
60
+ brackets: [
61
+ { token: "delimiter.curly", open: "{", close: "}" },
62
+ { token: "delimiter.parenthesis", open: "(", close: ")" },
63
+ { token: "delimiter.square", open: "[", close: "]" },
64
+ { token: "delimiter.angle", open: "<", close: ">" }
65
+ ],
66
+ keywords: [
67
+ "accept_on",
68
+ "alias",
69
+ "always",
70
+ "always_comb",
71
+ "always_ff",
72
+ "always_latch",
73
+ "and",
74
+ "assert",
75
+ "assign",
76
+ "assume",
77
+ "automatic",
78
+ "before",
79
+ "begin",
80
+ "bind",
81
+ "bins",
82
+ "binsof",
83
+ "bit",
84
+ "break",
85
+ "buf",
86
+ "bufif0",
87
+ "bufif1",
88
+ "byte",
89
+ "case",
90
+ "casex",
91
+ "casez",
92
+ "cell",
93
+ "chandle",
94
+ "checker",
95
+ "class",
96
+ "clocking",
97
+ "cmos",
98
+ "config",
99
+ "const",
100
+ "constraint",
101
+ "context",
102
+ "continue",
103
+ "cover",
104
+ "covergroup",
105
+ "coverpoint",
106
+ "cross",
107
+ "deassign",
108
+ "default",
109
+ "defparam",
110
+ "design",
111
+ "disable",
112
+ "dist",
113
+ "do",
114
+ "edge",
115
+ "else",
116
+ "end",
117
+ "endcase",
118
+ "endchecker",
119
+ "endclass",
120
+ "endclocking",
121
+ "endconfig",
122
+ "endfunction",
123
+ "endgenerate",
124
+ "endgroup",
125
+ "endinterface",
126
+ "endmodule",
127
+ "endpackage",
128
+ "endprimitive",
129
+ "endprogram",
130
+ "endproperty",
131
+ "endspecify",
132
+ "endsequence",
133
+ "endtable",
134
+ "endtask",
135
+ "enum",
136
+ "event",
137
+ "eventually",
138
+ "expect",
139
+ "export",
140
+ "extends",
141
+ "extern",
142
+ "final",
143
+ "first_match",
144
+ "for",
145
+ "force",
146
+ "foreach",
147
+ "forever",
148
+ "fork",
149
+ "forkjoin",
150
+ "function",
151
+ "generate",
152
+ "genvar",
153
+ "global",
154
+ "highz0",
155
+ "highz1",
156
+ "if",
157
+ "iff",
158
+ "ifnone",
159
+ "ignore_bins",
160
+ "illegal_bins",
161
+ "implements",
162
+ "implies",
163
+ "import",
164
+ "incdir",
165
+ "include",
166
+ "initial",
167
+ "inout",
168
+ "input",
169
+ "inside",
170
+ "instance",
171
+ "int",
172
+ "integer",
173
+ "interconnect",
174
+ "interface",
175
+ "intersect",
176
+ "join",
177
+ "join_any",
178
+ "join_none",
179
+ "large",
180
+ "let",
181
+ "liblist",
182
+ "library",
183
+ "local",
184
+ "localparam",
185
+ "logic",
186
+ "longint",
187
+ "macromodule",
188
+ "matches",
189
+ "medium",
190
+ "modport",
191
+ "module",
192
+ "nand",
193
+ "negedge",
194
+ "nettype",
195
+ "new",
196
+ "nexttime",
197
+ "nmos",
198
+ "nor",
199
+ "noshowcancelled",
200
+ "not",
201
+ "notif0",
202
+ "notif1",
203
+ "null",
204
+ "or",
205
+ "output",
206
+ "package",
207
+ "packed",
208
+ "parameter",
209
+ "pmos",
210
+ "posedge",
211
+ "primitive",
212
+ "priority",
213
+ "program",
214
+ "property",
215
+ "protected",
216
+ "pull0",
217
+ "pull1",
218
+ "pulldown",
219
+ "pullup",
220
+ "pulsestyle_ondetect",
221
+ "pulsestyle_onevent",
222
+ "pure",
223
+ "rand",
224
+ "randc",
225
+ "randcase",
226
+ "randsequence",
227
+ "rcmos",
228
+ "real",
229
+ "realtime",
230
+ "ref",
231
+ "reg",
232
+ "reject_on",
233
+ "release",
234
+ "repeat",
235
+ "restrict",
236
+ "return",
237
+ "rnmos",
238
+ "rpmos",
239
+ "rtran",
240
+ "rtranif0",
241
+ "rtranif1",
242
+ "s_always",
243
+ "s_eventually",
244
+ "s_nexttime",
245
+ "s_until",
246
+ "s_until_with",
247
+ "scalared",
248
+ "sequence",
249
+ "shortint",
250
+ "shortreal",
251
+ "showcancelled",
252
+ "signed",
253
+ "small",
254
+ "soft",
255
+ "solve",
256
+ "specify",
257
+ "specparam",
258
+ "static",
259
+ "string",
260
+ "strong",
261
+ "strong0",
262
+ "strong1",
263
+ "struct",
264
+ "super",
265
+ "supply0",
266
+ "supply1",
267
+ "sync_accept_on",
268
+ "sync_reject_on",
269
+ "table",
270
+ "tagged",
271
+ "task",
272
+ "this",
273
+ "throughout",
274
+ "time",
275
+ "timeprecision",
276
+ "timeunit",
277
+ "tran",
278
+ "tranif0",
279
+ "tranif1",
280
+ "tri",
281
+ "tri0",
282
+ "tri1",
283
+ "triand",
284
+ "trior",
285
+ "trireg",
286
+ "type",
287
+ "typedef",
288
+ "union",
289
+ "unique",
290
+ "unique0",
291
+ "unsigned",
292
+ "until",
293
+ "until_with",
294
+ "untyped",
295
+ "use",
296
+ "uwire",
297
+ "var",
298
+ "vectored",
299
+ "virtual",
300
+ "void",
301
+ "wait",
302
+ "wait_order",
303
+ "wand",
304
+ "weak",
305
+ "weak0",
306
+ "weak1",
307
+ "while",
308
+ "wildcard",
309
+ "wire",
310
+ "with",
311
+ "within",
312
+ "wor",
313
+ "xnor",
314
+ "xor"
315
+ ],
316
+ builtin_gates: [
317
+ "and",
318
+ "nand",
319
+ "nor",
320
+ "or",
321
+ "xor",
322
+ "xnor",
323
+ "buf",
324
+ "not",
325
+ "bufif0",
326
+ "bufif1",
327
+ "notif1",
328
+ "notif0",
329
+ "cmos",
330
+ "nmos",
331
+ "pmos",
332
+ "rcmos",
333
+ "rnmos",
334
+ "rpmos",
335
+ "tran",
336
+ "tranif1",
337
+ "tranif0",
338
+ "rtran",
339
+ "rtranif1",
340
+ "rtranif0"
341
+ ],
342
+ operators: [
343
+ // assignment operators
344
+ "=",
345
+ "+=",
346
+ "-=",
347
+ "*=",
348
+ "/=",
349
+ "%=",
350
+ "&=",
351
+ "|=",
352
+ "^=",
353
+ "<<=",
354
+ ">>+",
355
+ "<<<=",
356
+ ">>>=",
357
+ // conditional expression
358
+ "?",
359
+ ":",
360
+ // Unary operators
361
+ "+",
362
+ "-",
363
+ "!",
364
+ "~",
365
+ "&",
366
+ "~&",
367
+ "|",
368
+ "~|",
369
+ "^",
370
+ "~^",
371
+ "^~",
372
+ //binary operators
373
+ "+",
374
+ "-",
375
+ "*",
376
+ "/",
377
+ "%",
378
+ "==",
379
+ "!=",
380
+ "===",
381
+ "!==",
382
+ "==?",
383
+ "!=?",
384
+ "&&",
385
+ "||",
386
+ "**",
387
+ "<",
388
+ "<=",
389
+ ">",
390
+ ">=",
391
+ "&",
392
+ "|",
393
+ "^",
394
+ ">>",
395
+ "<<",
396
+ ">>>",
397
+ "<<<",
398
+ // increment or decrement operator
399
+ "++",
400
+ "--",
401
+ //binary logical operator
402
+ "->",
403
+ "<->",
404
+ // binary set membership operator
405
+ "inside",
406
+ // binary distrubution operator
407
+ "dist",
408
+ "::",
409
+ "+:",
410
+ "-:",
411
+ "*>",
412
+ "&&&",
413
+ "|->",
414
+ "|=>",
415
+ "#=#"
416
+ ],
417
+ // we include these common regular expressions
418
+ symbols: /[=><!~?:&|+\-*\/\^%#]+/,
419
+ escapes: /%%|\\(?:[antvf\\"']|x[0-9A-Fa-f]{1,2}|[0-7]{1,3})/,
420
+ identifier: /(?:[a-zA-Z_][a-zA-Z0-9_$\.]*|\\\S+ )/,
421
+ systemcall: /[$][a-zA-Z0-9_]+/,
422
+ timeunits: /s|ms|us|ns|ps|fs/,
423
+ // The main tokenizer for our languages
424
+ tokenizer: {
425
+ root: [
426
+ // module instances
427
+ [
428
+ /^(\s*)(@identifier)/,
429
+ [
430
+ "",
431
+ {
432
+ cases: {
433
+ "@builtin_gates": {
434
+ token: "keyword.$2",
435
+ next: "@module_instance"
436
+ },
437
+ table: {
438
+ token: "keyword.$2",
439
+ next: "@table"
440
+ },
441
+ "@keywords": { token: "keyword.$2" },
442
+ "@default": {
443
+ token: "identifier",
444
+ next: "@module_instance"
445
+ }
446
+ }
447
+ }
448
+ ]
449
+ ],
450
+ // include statements
451
+ [/^\s*`include/, { token: "keyword.directive.include", next: "@include" }],
452
+ // Preprocessor directives
453
+ [/^\s*`\s*\w+/, "keyword"],
454
+ // identifiers and keywords
455
+ { include: "@identifier_or_keyword" },
456
+ // whitespace and comments
457
+ { include: "@whitespace" },
458
+ // (* attributes *).
459
+ [/\(\*.*\*\)/, "annotation"],
460
+ // Systemcall
461
+ [/@systemcall/, "variable.predefined"],
462
+ // delimiters and operators
463
+ [/[{}()\[\]]/, "@brackets"],
464
+ [/[<>](?!@symbols)/, "@brackets"],
465
+ [
466
+ /@symbols/,
467
+ {
468
+ cases: {
469
+ "@operators": "delimiter",
470
+ "@default": ""
471
+ }
472
+ }
473
+ ],
474
+ // numbers
475
+ { include: "@numbers" },
476
+ // delimiter: after number because of .\d floats
477
+ [/[;,.]/, "delimiter"],
478
+ // strings
479
+ { include: "@strings" }
480
+ ],
481
+ identifier_or_keyword: [
482
+ [
483
+ /@identifier/,
484
+ {
485
+ cases: {
486
+ "@keywords": { token: "keyword.$0" },
487
+ "@default": "identifier"
488
+ }
489
+ }
490
+ ]
491
+ ],
492
+ numbers: [
493
+ [/\d+?[\d_]*(?:\.[\d_]+)?[eE][\-+]?\d+/, "number.float"],
494
+ [/\d+?[\d_]*\.[\d_]+(?:\s*@timeunits)?/, "number.float"],
495
+ [/(?:\d+?[\d_]*\s*)?'[sS]?[dD]\s*[0-9xXzZ?]+?[0-9xXzZ?_]*/, "number"],
496
+ [/(?:\d+?[\d_]*\s*)?'[sS]?[bB]\s*[0-1xXzZ?]+?[0-1xXzZ?_]*/, "number.binary"],
497
+ [/(?:\d+?[\d_]*\s*)?'[sS]?[oO]\s*[0-7xXzZ?]+?[0-7xXzZ?_]*/, "number.octal"],
498
+ [/(?:\d+?[\d_]*\s*)?'[sS]?[hH]\s*[0-9a-fA-FxXzZ?]+?[0-9a-fA-FxXzZ?_]*/, "number.hex"],
499
+ [/1step/, "number"],
500
+ [/[\dxXzZ]+?[\dxXzZ_]*(?:\s*@timeunits)?/, "number"],
501
+ [/'[01xXzZ]+/, "number"]
502
+ ],
503
+ module_instance: [
504
+ { include: "@whitespace" },
505
+ [/(#?)(\()/, ["", { token: "@brackets", next: "@port_connection" }]],
506
+ [/@identifier\s*[;={}\[\],]/, { token: "@rematch", next: "@pop" }],
507
+ [/@symbols|[;={}\[\],]/, { token: "@rematch", next: "@pop" }],
508
+ [/@identifier/, "type"],
509
+ [/;/, "delimiter", "@pop"]
510
+ ],
511
+ port_connection: [
512
+ { include: "@identifier_or_keyword" },
513
+ { include: "@whitespace" },
514
+ [/@systemcall/, "variable.predefined"],
515
+ { include: "@numbers" },
516
+ { include: "@strings" },
517
+ [/[,]/, "delimiter"],
518
+ [/\(/, "@brackets", "@port_connection"],
519
+ [/\)/, "@brackets", "@pop"]
520
+ ],
521
+ whitespace: [
522
+ [/[ \t\r\n]+/, ""],
523
+ [/\/\*/, "comment", "@comment"],
524
+ [/\/\/.*$/, "comment"]
525
+ ],
526
+ comment: [
527
+ [/[^\/*]+/, "comment"],
528
+ [/\*\//, "comment", "@pop"],
529
+ [/[\/*]/, "comment"]
530
+ ],
531
+ strings: [
532
+ [/"([^"\\]|\\.)*$/, "string.invalid"],
533
+ // non-teminated string
534
+ [/"/, "string", "@string"]
535
+ ],
536
+ string: [
537
+ [/[^\\"]+/, "string"],
538
+ [/@escapes/, "string.escape"],
539
+ [/\\./, "string.escape.invalid"],
540
+ [/"/, "string", "@pop"]
541
+ ],
542
+ include: [
543
+ [
544
+ /(\s*)(")([\w*\/*]*)(.\w*)(")/,
545
+ [
546
+ "",
547
+ "string.include.identifier",
548
+ "string.include.identifier",
549
+ "string.include.identifier",
550
+ { token: "string.include.identifier", next: "@pop" }
551
+ ]
552
+ ],
553
+ [
554
+ /(\s*)(<)([\w*\/*]*)(.\w*)(>)/,
555
+ [
556
+ "",
557
+ "string.include.identifier",
558
+ "string.include.identifier",
559
+ "string.include.identifier",
560
+ { token: "string.include.identifier", next: "@pop" }
561
+ ]
562
+ ]
563
+ ],
564
+ table: [
565
+ { include: "@whitespace" },
566
+ [/[()]/, "@brackets"],
567
+ [/[:;]/, "delimiter"],
568
+ [/[01\-*?xXbBrRfFpPnN]/, "variable.predefined"],
569
+ ["endtable", "keyword.endtable", "@pop"]
570
+ ]
571
+ }
572
+ };
573
+ export {
574
+ e as conf,
575
+ n as language
576
+ };