rfbeam 0.2.2 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile.lock +3 -2
  4. data/README.md +71 -15
  5. data/lib/rfbeam/kld7/commands.rb +2 -2
  6. data/lib/rfbeam/kld7/device_data.rb +26 -0
  7. data/lib/rfbeam/kld7/parameters.rb +96 -0
  8. data/lib/rfbeam/version.rb +1 -1
  9. data/lib/rfbeam.rb +12 -11
  10. data/node_modules/.yarn-integrity +3 -3
  11. data/node_modules/@prettier/plugin-ruby/node_modules/.bin/prettier +1 -1
  12. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/LICENSE +5945 -0
  13. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/README.md +109 -0
  14. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/bin-prettier.js +62 -0
  15. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/cli.js +15136 -0
  16. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/doc.js +1473 -0
  17. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-angular.mjs +2 -0
  18. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-babel.mjs +29 -0
  19. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-espree.mjs +26 -0
  20. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-flow.mjs +35 -0
  21. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-glimmer.mjs +27 -0
  22. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-graphql.mjs +15 -0
  23. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-html.mjs +36 -0
  24. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-markdown.mjs +76 -0
  25. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-meriyah.mjs +19 -0
  26. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-postcss.mjs +76 -0
  27. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-typescript.mjs +257 -0
  28. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-yaml.mjs +150 -0
  29. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/standalone.mjs +116 -0
  30. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/index.js +37885 -0
  31. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/package.json +21 -0
  32. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-angular.js +2 -0
  33. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-babel.js +29 -0
  34. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-espree.js +26 -0
  35. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-flow.js +35 -0
  36. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-glimmer.js +27 -0
  37. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-graphql.js +15 -0
  38. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-html.js +36 -0
  39. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-markdown.js +76 -0
  40. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-meriyah.js +19 -0
  41. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-postcss.js +76 -0
  42. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-typescript.js +257 -0
  43. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-yaml.js +150 -0
  44. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/standalone.js +116 -0
  45. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/third-party.js +8978 -0
  46. data/node_modules/prettier/LICENSE +85 -60
  47. data/node_modules/prettier/README.md +3 -3
  48. data/node_modules/prettier/bin-prettier.js +3 -1
  49. data/node_modules/prettier/cli.js +414 -186
  50. data/node_modules/prettier/esm/parser-angular.mjs +1 -1
  51. data/node_modules/prettier/esm/parser-babel.mjs +21 -21
  52. data/node_modules/prettier/esm/parser-espree.mjs +20 -20
  53. data/node_modules/prettier/esm/parser-flow.mjs +26 -26
  54. data/node_modules/prettier/esm/parser-glimmer.mjs +4 -4
  55. data/node_modules/prettier/esm/parser-graphql.mjs +1 -1
  56. data/node_modules/prettier/esm/parser-html.mjs +16 -16
  57. data/node_modules/prettier/esm/parser-markdown.mjs +48 -48
  58. data/node_modules/prettier/esm/parser-meriyah.mjs +14 -14
  59. data/node_modules/prettier/esm/parser-postcss.mjs +57 -57
  60. data/node_modules/prettier/esm/parser-typescript.mjs +40 -248
  61. data/node_modules/prettier/esm/parser-yaml.mjs +13 -13
  62. data/node_modules/prettier/esm/standalone.mjs +77 -77
  63. data/node_modules/prettier/index.js +693 -342
  64. data/node_modules/prettier/package.json +1 -1
  65. data/node_modules/prettier/parser-babel.js +21 -21
  66. data/node_modules/prettier/parser-espree.js +20 -20
  67. data/node_modules/prettier/parser-flow.js +26 -26
  68. data/node_modules/prettier/parser-glimmer.js +3 -3
  69. data/node_modules/prettier/parser-html.js +20 -20
  70. data/node_modules/prettier/parser-markdown.js +47 -47
  71. data/node_modules/prettier/parser-meriyah.js +13 -13
  72. data/node_modules/prettier/parser-postcss.js +56 -56
  73. data/node_modules/prettier/parser-typescript.js +40 -248
  74. data/node_modules/prettier/parser-yaml.js +13 -13
  75. data/node_modules/prettier/standalone.js +73 -73
  76. data/node_modules/prettier/third-party.js +5 -5
  77. data/package.json +1 -1
  78. data/yarn.lock +6 -1
  79. metadata +37 -3
  80. data/rfbeam-0.2.1.gem +0 -0
@@ -0,0 +1,1473 @@
1
+ (function (factory) {
2
+ if (typeof exports === "object" && typeof module === "object") {
3
+ module.exports = factory();
4
+ } else if (typeof define === "function" && define.amd) {
5
+ define(factory);
6
+ } else {
7
+ var root =
8
+ typeof globalThis !== "undefined"
9
+ ? globalThis
10
+ : typeof global !== "undefined"
11
+ ? global
12
+ : typeof self !== "undefined"
13
+ ? self
14
+ : this || {};
15
+ root.doc = factory();
16
+ }
17
+ })(function() {
18
+ "use strict";
19
+ var __getOwnPropNames = Object.getOwnPropertyNames;
20
+ var __commonJS = (cb, mod) => function __require() {
21
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
22
+ };
23
+
24
+ // dist/_doc.js.umd.js
25
+ var require_doc_js_umd = __commonJS({
26
+ "dist/_doc.js.umd.js"(exports, module) {
27
+ var __create = Object.create;
28
+ var __defProp = Object.defineProperty;
29
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
30
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
31
+ var __getProtoOf = Object.getPrototypeOf;
32
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
33
+ var __esm = (fn, res) => function __init() {
34
+ return fn && (res = (0, fn[__getOwnPropNames2(fn)[0]])(fn = 0)), res;
35
+ };
36
+ var __commonJS2 = (cb, mod) => function __require() {
37
+ return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = {
38
+ exports: {}
39
+ }).exports, mod), mod.exports;
40
+ };
41
+ var __export = (target, all) => {
42
+ for (var name in all)
43
+ __defProp(target, name, {
44
+ get: all[name],
45
+ enumerable: true
46
+ });
47
+ };
48
+ var __copyProps = (to, from, except, desc) => {
49
+ if (from && typeof from === "object" || typeof from === "function") {
50
+ for (let key of __getOwnPropNames2(from))
51
+ if (!__hasOwnProp.call(to, key) && key !== except)
52
+ __defProp(to, key, {
53
+ get: () => from[key],
54
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
55
+ });
56
+ }
57
+ return to;
58
+ };
59
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
60
+ value: mod,
61
+ enumerable: true
62
+ }) : target, mod));
63
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", {
64
+ value: true
65
+ }), mod);
66
+ var init_define_process = __esm({
67
+ "<define:process>"() {
68
+ }
69
+ });
70
+ var require_doc_builders = __commonJS2({
71
+ "src/document/doc-builders.js"(exports2, module2) {
72
+ "use strict";
73
+ init_define_process();
74
+ function concat(parts) {
75
+ if (false) {
76
+ for (const part of parts) {
77
+ assertDoc(part);
78
+ }
79
+ }
80
+ return {
81
+ type: "concat",
82
+ parts
83
+ };
84
+ }
85
+ function indent(contents) {
86
+ if (false) {
87
+ assertDoc(contents);
88
+ }
89
+ return {
90
+ type: "indent",
91
+ contents
92
+ };
93
+ }
94
+ function align(widthOrString, contents) {
95
+ if (false) {
96
+ assertDoc(contents);
97
+ }
98
+ return {
99
+ type: "align",
100
+ contents,
101
+ n: widthOrString
102
+ };
103
+ }
104
+ function group(contents) {
105
+ let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
106
+ if (false) {
107
+ assertDoc(contents);
108
+ }
109
+ return {
110
+ type: "group",
111
+ id: opts.id,
112
+ contents,
113
+ break: Boolean(opts.shouldBreak),
114
+ expandedStates: opts.expandedStates
115
+ };
116
+ }
117
+ function dedentToRoot(contents) {
118
+ return align(Number.NEGATIVE_INFINITY, contents);
119
+ }
120
+ function markAsRoot(contents) {
121
+ return align({
122
+ type: "root"
123
+ }, contents);
124
+ }
125
+ function dedent(contents) {
126
+ return align(-1, contents);
127
+ }
128
+ function conditionalGroup(states, opts) {
129
+ return group(states[0], Object.assign(Object.assign({}, opts), {}, {
130
+ expandedStates: states
131
+ }));
132
+ }
133
+ function fill(parts) {
134
+ if (false) {
135
+ for (const part of parts) {
136
+ assertDoc(part);
137
+ }
138
+ }
139
+ return {
140
+ type: "fill",
141
+ parts
142
+ };
143
+ }
144
+ function ifBreak(breakContents, flatContents) {
145
+ let opts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
146
+ if (false) {
147
+ if (breakContents) {
148
+ assertDoc(breakContents);
149
+ }
150
+ if (flatContents) {
151
+ assertDoc(flatContents);
152
+ }
153
+ }
154
+ return {
155
+ type: "if-break",
156
+ breakContents,
157
+ flatContents,
158
+ groupId: opts.groupId
159
+ };
160
+ }
161
+ function indentIfBreak(contents, opts) {
162
+ return {
163
+ type: "indent-if-break",
164
+ contents,
165
+ groupId: opts.groupId,
166
+ negate: opts.negate
167
+ };
168
+ }
169
+ function lineSuffix(contents) {
170
+ if (false) {
171
+ assertDoc(contents);
172
+ }
173
+ return {
174
+ type: "line-suffix",
175
+ contents
176
+ };
177
+ }
178
+ var lineSuffixBoundary = {
179
+ type: "line-suffix-boundary"
180
+ };
181
+ var breakParent = {
182
+ type: "break-parent"
183
+ };
184
+ var trim = {
185
+ type: "trim"
186
+ };
187
+ var hardlineWithoutBreakParent = {
188
+ type: "line",
189
+ hard: true
190
+ };
191
+ var literallineWithoutBreakParent = {
192
+ type: "line",
193
+ hard: true,
194
+ literal: true
195
+ };
196
+ var line = {
197
+ type: "line"
198
+ };
199
+ var softline = {
200
+ type: "line",
201
+ soft: true
202
+ };
203
+ var hardline = concat([hardlineWithoutBreakParent, breakParent]);
204
+ var literalline = concat([literallineWithoutBreakParent, breakParent]);
205
+ var cursor = {
206
+ type: "cursor",
207
+ placeholder: Symbol("cursor")
208
+ };
209
+ function join(sep, arr) {
210
+ const res = [];
211
+ for (let i = 0; i < arr.length; i++) {
212
+ if (i !== 0) {
213
+ res.push(sep);
214
+ }
215
+ res.push(arr[i]);
216
+ }
217
+ return concat(res);
218
+ }
219
+ function addAlignmentToDoc(doc, size, tabWidth) {
220
+ let aligned = doc;
221
+ if (size > 0) {
222
+ for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
223
+ aligned = indent(aligned);
224
+ }
225
+ aligned = align(size % tabWidth, aligned);
226
+ aligned = align(Number.NEGATIVE_INFINITY, aligned);
227
+ }
228
+ return aligned;
229
+ }
230
+ function label(label2, contents) {
231
+ return {
232
+ type: "label",
233
+ label: label2,
234
+ contents
235
+ };
236
+ }
237
+ module2.exports = {
238
+ concat,
239
+ join,
240
+ line,
241
+ softline,
242
+ hardline,
243
+ literalline,
244
+ group,
245
+ conditionalGroup,
246
+ fill,
247
+ lineSuffix,
248
+ lineSuffixBoundary,
249
+ cursor,
250
+ breakParent,
251
+ ifBreak,
252
+ trim,
253
+ indent,
254
+ indentIfBreak,
255
+ align,
256
+ addAlignmentToDoc,
257
+ markAsRoot,
258
+ dedentToRoot,
259
+ dedent,
260
+ hardlineWithoutBreakParent,
261
+ literallineWithoutBreakParent,
262
+ label
263
+ };
264
+ }
265
+ });
266
+ var require_end_of_line = __commonJS2({
267
+ "src/common/end-of-line.js"(exports2, module2) {
268
+ "use strict";
269
+ init_define_process();
270
+ function guessEndOfLine(text) {
271
+ const index = text.indexOf("\r");
272
+ if (index >= 0) {
273
+ return text.charAt(index + 1) === "\n" ? "crlf" : "cr";
274
+ }
275
+ return "lf";
276
+ }
277
+ function convertEndOfLineToChars(value) {
278
+ switch (value) {
279
+ case "cr":
280
+ return "\r";
281
+ case "crlf":
282
+ return "\r\n";
283
+ default:
284
+ return "\n";
285
+ }
286
+ }
287
+ function countEndOfLineChars(text, eol) {
288
+ let regex;
289
+ switch (eol) {
290
+ case "\n":
291
+ regex = /\n/g;
292
+ break;
293
+ case "\r":
294
+ regex = /\r/g;
295
+ break;
296
+ case "\r\n":
297
+ regex = /\r\n/g;
298
+ break;
299
+ default:
300
+ throw new Error(`Unexpected "eol" ${JSON.stringify(eol)}.`);
301
+ }
302
+ const endOfLines = text.match(regex);
303
+ return endOfLines ? endOfLines.length : 0;
304
+ }
305
+ function normalizeEndOfLine(text) {
306
+ return text.replace(/\r\n?/g, "\n");
307
+ }
308
+ module2.exports = {
309
+ guessEndOfLine,
310
+ convertEndOfLineToChars,
311
+ countEndOfLineChars,
312
+ normalizeEndOfLine
313
+ };
314
+ }
315
+ });
316
+ var require_get_last = __commonJS2({
317
+ "src/utils/get-last.js"(exports2, module2) {
318
+ "use strict";
319
+ init_define_process();
320
+ var getLast = (arr) => arr[arr.length - 1];
321
+ module2.exports = getLast;
322
+ }
323
+ });
324
+ function ansiRegex() {
325
+ let {
326
+ onlyFirst = false
327
+ } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
328
+ const pattern = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");
329
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
330
+ }
331
+ var init_ansi_regex = __esm({
332
+ "node_modules/strip-ansi/node_modules/ansi-regex/index.js"() {
333
+ init_define_process();
334
+ }
335
+ });
336
+ function stripAnsi(string) {
337
+ if (typeof string !== "string") {
338
+ throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
339
+ }
340
+ return string.replace(ansiRegex(), "");
341
+ }
342
+ var init_strip_ansi = __esm({
343
+ "node_modules/strip-ansi/index.js"() {
344
+ init_define_process();
345
+ init_ansi_regex();
346
+ }
347
+ });
348
+ function isFullwidthCodePoint(codePoint) {
349
+ if (!Number.isInteger(codePoint)) {
350
+ return false;
351
+ }
352
+ return codePoint >= 4352 && (codePoint <= 4447 || codePoint === 9001 || codePoint === 9002 || 11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || 12880 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65131 || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 262141);
353
+ }
354
+ var init_is_fullwidth_code_point = __esm({
355
+ "node_modules/is-fullwidth-code-point/index.js"() {
356
+ init_define_process();
357
+ }
358
+ });
359
+ var require_emoji_regex = __commonJS2({
360
+ "node_modules/emoji-regex/index.js"(exports2, module2) {
361
+ "use strict";
362
+ init_define_process();
363
+ module2.exports = function() {
364
+ return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
365
+ };
366
+ }
367
+ });
368
+ var string_width_exports = {};
369
+ __export(string_width_exports, {
370
+ default: () => stringWidth
371
+ });
372
+ function stringWidth(string) {
373
+ if (typeof string !== "string" || string.length === 0) {
374
+ return 0;
375
+ }
376
+ string = stripAnsi(string);
377
+ if (string.length === 0) {
378
+ return 0;
379
+ }
380
+ string = string.replace((0, import_emoji_regex.default)(), " ");
381
+ let width = 0;
382
+ for (let index = 0; index < string.length; index++) {
383
+ const codePoint = string.codePointAt(index);
384
+ if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
385
+ continue;
386
+ }
387
+ if (codePoint >= 768 && codePoint <= 879) {
388
+ continue;
389
+ }
390
+ if (codePoint > 65535) {
391
+ index++;
392
+ }
393
+ width += isFullwidthCodePoint(codePoint) ? 2 : 1;
394
+ }
395
+ return width;
396
+ }
397
+ var import_emoji_regex;
398
+ var init_string_width = __esm({
399
+ "node_modules/string-width/index.js"() {
400
+ init_define_process();
401
+ init_strip_ansi();
402
+ init_is_fullwidth_code_point();
403
+ import_emoji_regex = __toESM(require_emoji_regex());
404
+ }
405
+ });
406
+ var require_get_string_width = __commonJS2({
407
+ "src/utils/get-string-width.js"(exports2, module2) {
408
+ "use strict";
409
+ init_define_process();
410
+ var stringWidth2 = (init_string_width(), __toCommonJS(string_width_exports)).default;
411
+ var notAsciiRegex = /[^\x20-\x7F]/;
412
+ function getStringWidth(text) {
413
+ if (!text) {
414
+ return 0;
415
+ }
416
+ if (!notAsciiRegex.test(text)) {
417
+ return text.length;
418
+ }
419
+ return stringWidth2(text);
420
+ }
421
+ module2.exports = getStringWidth;
422
+ }
423
+ });
424
+ var require_doc_utils = __commonJS2({
425
+ "src/document/doc-utils.js"(exports2, module2) {
426
+ "use strict";
427
+ init_define_process();
428
+ var getLast = require_get_last();
429
+ var {
430
+ literalline,
431
+ join
432
+ } = require_doc_builders();
433
+ var isConcat = (doc) => Array.isArray(doc) || doc && doc.type === "concat";
434
+ var getDocParts = (doc) => {
435
+ if (Array.isArray(doc)) {
436
+ return doc;
437
+ }
438
+ if (doc.type !== "concat" && doc.type !== "fill") {
439
+ throw new Error("Expect doc type to be `concat` or `fill`.");
440
+ }
441
+ return doc.parts;
442
+ };
443
+ var traverseDocOnExitStackMarker = {};
444
+ function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
445
+ const docsStack = [doc];
446
+ while (docsStack.length > 0) {
447
+ const doc2 = docsStack.pop();
448
+ if (doc2 === traverseDocOnExitStackMarker) {
449
+ onExit(docsStack.pop());
450
+ continue;
451
+ }
452
+ if (onExit) {
453
+ docsStack.push(doc2, traverseDocOnExitStackMarker);
454
+ }
455
+ if (!onEnter || onEnter(doc2) !== false) {
456
+ if (isConcat(doc2) || doc2.type === "fill") {
457
+ const parts = getDocParts(doc2);
458
+ for (let ic = parts.length, i = ic - 1; i >= 0; --i) {
459
+ docsStack.push(parts[i]);
460
+ }
461
+ } else if (doc2.type === "if-break") {
462
+ if (doc2.flatContents) {
463
+ docsStack.push(doc2.flatContents);
464
+ }
465
+ if (doc2.breakContents) {
466
+ docsStack.push(doc2.breakContents);
467
+ }
468
+ } else if (doc2.type === "group" && doc2.expandedStates) {
469
+ if (shouldTraverseConditionalGroups) {
470
+ for (let ic = doc2.expandedStates.length, i = ic - 1; i >= 0; --i) {
471
+ docsStack.push(doc2.expandedStates[i]);
472
+ }
473
+ } else {
474
+ docsStack.push(doc2.contents);
475
+ }
476
+ } else if (doc2.contents) {
477
+ docsStack.push(doc2.contents);
478
+ }
479
+ }
480
+ }
481
+ }
482
+ function mapDoc(doc, cb) {
483
+ const mapped = /* @__PURE__ */ new Map();
484
+ return rec(doc);
485
+ function rec(doc2) {
486
+ if (mapped.has(doc2)) {
487
+ return mapped.get(doc2);
488
+ }
489
+ const result = process2(doc2);
490
+ mapped.set(doc2, result);
491
+ return result;
492
+ }
493
+ function process2(doc2) {
494
+ if (Array.isArray(doc2)) {
495
+ return cb(doc2.map(rec));
496
+ }
497
+ if (doc2.type === "concat" || doc2.type === "fill") {
498
+ const parts = doc2.parts.map(rec);
499
+ return cb(Object.assign(Object.assign({}, doc2), {}, {
500
+ parts
501
+ }));
502
+ }
503
+ if (doc2.type === "if-break") {
504
+ const breakContents = doc2.breakContents && rec(doc2.breakContents);
505
+ const flatContents = doc2.flatContents && rec(doc2.flatContents);
506
+ return cb(Object.assign(Object.assign({}, doc2), {}, {
507
+ breakContents,
508
+ flatContents
509
+ }));
510
+ }
511
+ if (doc2.type === "group" && doc2.expandedStates) {
512
+ const expandedStates = doc2.expandedStates.map(rec);
513
+ const contents = expandedStates[0];
514
+ return cb(Object.assign(Object.assign({}, doc2), {}, {
515
+ contents,
516
+ expandedStates
517
+ }));
518
+ }
519
+ if (doc2.contents) {
520
+ const contents = rec(doc2.contents);
521
+ return cb(Object.assign(Object.assign({}, doc2), {}, {
522
+ contents
523
+ }));
524
+ }
525
+ return cb(doc2);
526
+ }
527
+ }
528
+ function findInDoc(doc, fn, defaultValue) {
529
+ let result = defaultValue;
530
+ let hasStopped = false;
531
+ function findInDocOnEnterFn(doc2) {
532
+ const maybeResult = fn(doc2);
533
+ if (maybeResult !== void 0) {
534
+ hasStopped = true;
535
+ result = maybeResult;
536
+ }
537
+ if (hasStopped) {
538
+ return false;
539
+ }
540
+ }
541
+ traverseDoc(doc, findInDocOnEnterFn);
542
+ return result;
543
+ }
544
+ function willBreakFn(doc) {
545
+ if (doc.type === "group" && doc.break) {
546
+ return true;
547
+ }
548
+ if (doc.type === "line" && doc.hard) {
549
+ return true;
550
+ }
551
+ if (doc.type === "break-parent") {
552
+ return true;
553
+ }
554
+ }
555
+ function willBreak(doc) {
556
+ return findInDoc(doc, willBreakFn, false);
557
+ }
558
+ function breakParentGroup(groupStack) {
559
+ if (groupStack.length > 0) {
560
+ const parentGroup = getLast(groupStack);
561
+ if (!parentGroup.expandedStates && !parentGroup.break) {
562
+ parentGroup.break = "propagated";
563
+ }
564
+ }
565
+ return null;
566
+ }
567
+ function propagateBreaks(doc) {
568
+ const alreadyVisitedSet = /* @__PURE__ */ new Set();
569
+ const groupStack = [];
570
+ function propagateBreaksOnEnterFn(doc2) {
571
+ if (doc2.type === "break-parent") {
572
+ breakParentGroup(groupStack);
573
+ }
574
+ if (doc2.type === "group") {
575
+ groupStack.push(doc2);
576
+ if (alreadyVisitedSet.has(doc2)) {
577
+ return false;
578
+ }
579
+ alreadyVisitedSet.add(doc2);
580
+ }
581
+ }
582
+ function propagateBreaksOnExitFn(doc2) {
583
+ if (doc2.type === "group") {
584
+ const group = groupStack.pop();
585
+ if (group.break) {
586
+ breakParentGroup(groupStack);
587
+ }
588
+ }
589
+ }
590
+ traverseDoc(doc, propagateBreaksOnEnterFn, propagateBreaksOnExitFn, true);
591
+ }
592
+ function removeLinesFn(doc) {
593
+ if (doc.type === "line" && !doc.hard) {
594
+ return doc.soft ? "" : " ";
595
+ }
596
+ if (doc.type === "if-break") {
597
+ return doc.flatContents || "";
598
+ }
599
+ return doc;
600
+ }
601
+ function removeLines(doc) {
602
+ return mapDoc(doc, removeLinesFn);
603
+ }
604
+ var isHardline = (doc, nextDoc) => doc && doc.type === "line" && doc.hard && nextDoc && nextDoc.type === "break-parent";
605
+ function stripDocTrailingHardlineFromDoc(doc) {
606
+ if (!doc) {
607
+ return doc;
608
+ }
609
+ if (isConcat(doc) || doc.type === "fill") {
610
+ const parts = getDocParts(doc);
611
+ while (parts.length > 1 && isHardline(...parts.slice(-2))) {
612
+ parts.length -= 2;
613
+ }
614
+ if (parts.length > 0) {
615
+ const lastPart = stripDocTrailingHardlineFromDoc(getLast(parts));
616
+ parts[parts.length - 1] = lastPart;
617
+ }
618
+ return Array.isArray(doc) ? parts : Object.assign(Object.assign({}, doc), {}, {
619
+ parts
620
+ });
621
+ }
622
+ switch (doc.type) {
623
+ case "align":
624
+ case "indent":
625
+ case "indent-if-break":
626
+ case "group":
627
+ case "line-suffix":
628
+ case "label": {
629
+ const contents = stripDocTrailingHardlineFromDoc(doc.contents);
630
+ return Object.assign(Object.assign({}, doc), {}, {
631
+ contents
632
+ });
633
+ }
634
+ case "if-break": {
635
+ const breakContents = stripDocTrailingHardlineFromDoc(doc.breakContents);
636
+ const flatContents = stripDocTrailingHardlineFromDoc(doc.flatContents);
637
+ return Object.assign(Object.assign({}, doc), {}, {
638
+ breakContents,
639
+ flatContents
640
+ });
641
+ }
642
+ }
643
+ return doc;
644
+ }
645
+ function stripTrailingHardline(doc) {
646
+ return stripDocTrailingHardlineFromDoc(cleanDoc(doc));
647
+ }
648
+ function cleanDocFn(doc) {
649
+ switch (doc.type) {
650
+ case "fill":
651
+ if (doc.parts.every((part) => part === "")) {
652
+ return "";
653
+ }
654
+ break;
655
+ case "group":
656
+ if (!doc.contents && !doc.id && !doc.break && !doc.expandedStates) {
657
+ return "";
658
+ }
659
+ if (doc.contents.type === "group" && doc.contents.id === doc.id && doc.contents.break === doc.break && doc.contents.expandedStates === doc.expandedStates) {
660
+ return doc.contents;
661
+ }
662
+ break;
663
+ case "align":
664
+ case "indent":
665
+ case "indent-if-break":
666
+ case "line-suffix":
667
+ if (!doc.contents) {
668
+ return "";
669
+ }
670
+ break;
671
+ case "if-break":
672
+ if (!doc.flatContents && !doc.breakContents) {
673
+ return "";
674
+ }
675
+ break;
676
+ }
677
+ if (!isConcat(doc)) {
678
+ return doc;
679
+ }
680
+ const parts = [];
681
+ for (const part of getDocParts(doc)) {
682
+ if (!part) {
683
+ continue;
684
+ }
685
+ const [currentPart, ...restParts] = isConcat(part) ? getDocParts(part) : [part];
686
+ if (typeof currentPart === "string" && typeof getLast(parts) === "string") {
687
+ parts[parts.length - 1] += currentPart;
688
+ } else {
689
+ parts.push(currentPart);
690
+ }
691
+ parts.push(...restParts);
692
+ }
693
+ if (parts.length === 0) {
694
+ return "";
695
+ }
696
+ if (parts.length === 1) {
697
+ return parts[0];
698
+ }
699
+ return Array.isArray(doc) ? parts : Object.assign(Object.assign({}, doc), {}, {
700
+ parts
701
+ });
702
+ }
703
+ function cleanDoc(doc) {
704
+ return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc));
705
+ }
706
+ function normalizeParts(parts) {
707
+ const newParts = [];
708
+ const restParts = parts.filter(Boolean);
709
+ while (restParts.length > 0) {
710
+ const part = restParts.shift();
711
+ if (!part) {
712
+ continue;
713
+ }
714
+ if (isConcat(part)) {
715
+ restParts.unshift(...getDocParts(part));
716
+ continue;
717
+ }
718
+ if (newParts.length > 0 && typeof getLast(newParts) === "string" && typeof part === "string") {
719
+ newParts[newParts.length - 1] += part;
720
+ continue;
721
+ }
722
+ newParts.push(part);
723
+ }
724
+ return newParts;
725
+ }
726
+ function normalizeDoc(doc) {
727
+ return mapDoc(doc, (currentDoc) => {
728
+ if (Array.isArray(currentDoc)) {
729
+ return normalizeParts(currentDoc);
730
+ }
731
+ if (!currentDoc.parts) {
732
+ return currentDoc;
733
+ }
734
+ return Object.assign(Object.assign({}, currentDoc), {}, {
735
+ parts: normalizeParts(currentDoc.parts)
736
+ });
737
+ });
738
+ }
739
+ function replaceEndOfLine(doc) {
740
+ return mapDoc(doc, (currentDoc) => typeof currentDoc === "string" && currentDoc.includes("\n") ? replaceTextEndOfLine(currentDoc) : currentDoc);
741
+ }
742
+ function replaceTextEndOfLine(text) {
743
+ let replacement = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : literalline;
744
+ return join(replacement, text.split("\n")).parts;
745
+ }
746
+ function canBreakFn(doc) {
747
+ if (doc.type === "line") {
748
+ return true;
749
+ }
750
+ }
751
+ function canBreak(doc) {
752
+ return findInDoc(doc, canBreakFn, false);
753
+ }
754
+ module2.exports = {
755
+ isConcat,
756
+ getDocParts,
757
+ willBreak,
758
+ traverseDoc,
759
+ findInDoc,
760
+ mapDoc,
761
+ propagateBreaks,
762
+ removeLines,
763
+ stripTrailingHardline,
764
+ normalizeParts,
765
+ normalizeDoc,
766
+ cleanDoc,
767
+ replaceTextEndOfLine,
768
+ replaceEndOfLine,
769
+ canBreak
770
+ };
771
+ }
772
+ });
773
+ var require_doc_printer = __commonJS2({
774
+ "src/document/doc-printer.js"(exports2, module2) {
775
+ "use strict";
776
+ init_define_process();
777
+ var {
778
+ convertEndOfLineToChars
779
+ } = require_end_of_line();
780
+ var getLast = require_get_last();
781
+ var getStringWidth = require_get_string_width();
782
+ var {
783
+ fill,
784
+ cursor,
785
+ indent
786
+ } = require_doc_builders();
787
+ var {
788
+ isConcat,
789
+ getDocParts
790
+ } = require_doc_utils();
791
+ var groupModeMap;
792
+ var MODE_BREAK = 1;
793
+ var MODE_FLAT = 2;
794
+ function rootIndent() {
795
+ return {
796
+ value: "",
797
+ length: 0,
798
+ queue: []
799
+ };
800
+ }
801
+ function makeIndent(ind, options) {
802
+ return generateInd(ind, {
803
+ type: "indent"
804
+ }, options);
805
+ }
806
+ function makeAlign(indent2, widthOrDoc, options) {
807
+ if (widthOrDoc === Number.NEGATIVE_INFINITY) {
808
+ return indent2.root || rootIndent();
809
+ }
810
+ if (widthOrDoc < 0) {
811
+ return generateInd(indent2, {
812
+ type: "dedent"
813
+ }, options);
814
+ }
815
+ if (!widthOrDoc) {
816
+ return indent2;
817
+ }
818
+ if (widthOrDoc.type === "root") {
819
+ return Object.assign(Object.assign({}, indent2), {}, {
820
+ root: indent2
821
+ });
822
+ }
823
+ const alignType = typeof widthOrDoc === "string" ? "stringAlign" : "numberAlign";
824
+ return generateInd(indent2, {
825
+ type: alignType,
826
+ n: widthOrDoc
827
+ }, options);
828
+ }
829
+ function generateInd(ind, newPart, options) {
830
+ const queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : [...ind.queue, newPart];
831
+ let value = "";
832
+ let length = 0;
833
+ let lastTabs = 0;
834
+ let lastSpaces = 0;
835
+ for (const part of queue) {
836
+ switch (part.type) {
837
+ case "indent":
838
+ flush();
839
+ if (options.useTabs) {
840
+ addTabs(1);
841
+ } else {
842
+ addSpaces(options.tabWidth);
843
+ }
844
+ break;
845
+ case "stringAlign":
846
+ flush();
847
+ value += part.n;
848
+ length += part.n.length;
849
+ break;
850
+ case "numberAlign":
851
+ lastTabs += 1;
852
+ lastSpaces += part.n;
853
+ break;
854
+ default:
855
+ throw new Error(`Unexpected type '${part.type}'`);
856
+ }
857
+ }
858
+ flushSpaces();
859
+ return Object.assign(Object.assign({}, ind), {}, {
860
+ value,
861
+ length,
862
+ queue
863
+ });
864
+ function addTabs(count) {
865
+ value += " ".repeat(count);
866
+ length += options.tabWidth * count;
867
+ }
868
+ function addSpaces(count) {
869
+ value += " ".repeat(count);
870
+ length += count;
871
+ }
872
+ function flush() {
873
+ if (options.useTabs) {
874
+ flushTabs();
875
+ } else {
876
+ flushSpaces();
877
+ }
878
+ }
879
+ function flushTabs() {
880
+ if (lastTabs > 0) {
881
+ addTabs(lastTabs);
882
+ }
883
+ resetLast();
884
+ }
885
+ function flushSpaces() {
886
+ if (lastSpaces > 0) {
887
+ addSpaces(lastSpaces);
888
+ }
889
+ resetLast();
890
+ }
891
+ function resetLast() {
892
+ lastTabs = 0;
893
+ lastSpaces = 0;
894
+ }
895
+ }
896
+ function trim(out) {
897
+ if (out.length === 0) {
898
+ return 0;
899
+ }
900
+ let trimCount = 0;
901
+ while (out.length > 0 && typeof getLast(out) === "string" && /^[\t ]*$/.test(getLast(out))) {
902
+ trimCount += out.pop().length;
903
+ }
904
+ if (out.length > 0 && typeof getLast(out) === "string") {
905
+ const trimmed = getLast(out).replace(/[\t ]*$/, "");
906
+ trimCount += getLast(out).length - trimmed.length;
907
+ out[out.length - 1] = trimmed;
908
+ }
909
+ return trimCount;
910
+ }
911
+ function fits(next, restCommands, width, hasLineSuffix, mustBeFlat) {
912
+ let restIdx = restCommands.length;
913
+ const cmds = [next];
914
+ const out = [];
915
+ while (width >= 0) {
916
+ if (cmds.length === 0) {
917
+ if (restIdx === 0) {
918
+ return true;
919
+ }
920
+ cmds.push(restCommands[--restIdx]);
921
+ continue;
922
+ }
923
+ const {
924
+ mode,
925
+ doc
926
+ } = cmds.pop();
927
+ if (typeof doc === "string") {
928
+ out.push(doc);
929
+ width -= getStringWidth(doc);
930
+ } else if (isConcat(doc) || doc.type === "fill") {
931
+ const parts = getDocParts(doc);
932
+ for (let i = parts.length - 1; i >= 0; i--) {
933
+ cmds.push({
934
+ mode,
935
+ doc: parts[i]
936
+ });
937
+ }
938
+ } else {
939
+ switch (doc.type) {
940
+ case "indent":
941
+ case "align":
942
+ case "indent-if-break":
943
+ case "label":
944
+ cmds.push({
945
+ mode,
946
+ doc: doc.contents
947
+ });
948
+ break;
949
+ case "trim":
950
+ width += trim(out);
951
+ break;
952
+ case "group": {
953
+ if (mustBeFlat && doc.break) {
954
+ return false;
955
+ }
956
+ const groupMode = doc.break ? MODE_BREAK : mode;
957
+ const contents = doc.expandedStates && groupMode === MODE_BREAK ? getLast(doc.expandedStates) : doc.contents;
958
+ cmds.push({
959
+ mode: groupMode,
960
+ doc: contents
961
+ });
962
+ break;
963
+ }
964
+ case "if-break": {
965
+ const groupMode = doc.groupId ? groupModeMap[doc.groupId] || MODE_FLAT : mode;
966
+ const contents = groupMode === MODE_BREAK ? doc.breakContents : doc.flatContents;
967
+ if (contents) {
968
+ cmds.push({
969
+ mode,
970
+ doc: contents
971
+ });
972
+ }
973
+ break;
974
+ }
975
+ case "line":
976
+ if (mode === MODE_BREAK || doc.hard) {
977
+ return true;
978
+ }
979
+ if (!doc.soft) {
980
+ out.push(" ");
981
+ width--;
982
+ }
983
+ break;
984
+ case "line-suffix":
985
+ hasLineSuffix = true;
986
+ break;
987
+ case "line-suffix-boundary":
988
+ if (hasLineSuffix) {
989
+ return false;
990
+ }
991
+ break;
992
+ }
993
+ }
994
+ }
995
+ return false;
996
+ }
997
+ function printDocToString(doc, options) {
998
+ groupModeMap = {};
999
+ const width = options.printWidth;
1000
+ const newLine = convertEndOfLineToChars(options.endOfLine);
1001
+ let pos = 0;
1002
+ const cmds = [{
1003
+ ind: rootIndent(),
1004
+ mode: MODE_BREAK,
1005
+ doc
1006
+ }];
1007
+ const out = [];
1008
+ let shouldRemeasure = false;
1009
+ const lineSuffix = [];
1010
+ while (cmds.length > 0) {
1011
+ const {
1012
+ ind,
1013
+ mode,
1014
+ doc: doc2
1015
+ } = cmds.pop();
1016
+ if (typeof doc2 === "string") {
1017
+ const formatted = newLine !== "\n" ? doc2.replace(/\n/g, newLine) : doc2;
1018
+ out.push(formatted);
1019
+ pos += getStringWidth(formatted);
1020
+ } else if (isConcat(doc2)) {
1021
+ const parts = getDocParts(doc2);
1022
+ for (let i = parts.length - 1; i >= 0; i--) {
1023
+ cmds.push({
1024
+ ind,
1025
+ mode,
1026
+ doc: parts[i]
1027
+ });
1028
+ }
1029
+ } else {
1030
+ switch (doc2.type) {
1031
+ case "cursor":
1032
+ out.push(cursor.placeholder);
1033
+ break;
1034
+ case "indent":
1035
+ cmds.push({
1036
+ ind: makeIndent(ind, options),
1037
+ mode,
1038
+ doc: doc2.contents
1039
+ });
1040
+ break;
1041
+ case "align":
1042
+ cmds.push({
1043
+ ind: makeAlign(ind, doc2.n, options),
1044
+ mode,
1045
+ doc: doc2.contents
1046
+ });
1047
+ break;
1048
+ case "trim":
1049
+ pos -= trim(out);
1050
+ break;
1051
+ case "group":
1052
+ switch (mode) {
1053
+ case MODE_FLAT:
1054
+ if (!shouldRemeasure) {
1055
+ cmds.push({
1056
+ ind,
1057
+ mode: doc2.break ? MODE_BREAK : MODE_FLAT,
1058
+ doc: doc2.contents
1059
+ });
1060
+ break;
1061
+ }
1062
+ case MODE_BREAK: {
1063
+ shouldRemeasure = false;
1064
+ const next = {
1065
+ ind,
1066
+ mode: MODE_FLAT,
1067
+ doc: doc2.contents
1068
+ };
1069
+ const rem = width - pos;
1070
+ const hasLineSuffix = lineSuffix.length > 0;
1071
+ if (!doc2.break && fits(next, cmds, rem, hasLineSuffix)) {
1072
+ cmds.push(next);
1073
+ } else {
1074
+ if (doc2.expandedStates) {
1075
+ const mostExpanded = getLast(doc2.expandedStates);
1076
+ if (doc2.break) {
1077
+ cmds.push({
1078
+ ind,
1079
+ mode: MODE_BREAK,
1080
+ doc: mostExpanded
1081
+ });
1082
+ break;
1083
+ } else {
1084
+ for (let i = 1; i < doc2.expandedStates.length + 1; i++) {
1085
+ if (i >= doc2.expandedStates.length) {
1086
+ cmds.push({
1087
+ ind,
1088
+ mode: MODE_BREAK,
1089
+ doc: mostExpanded
1090
+ });
1091
+ break;
1092
+ } else {
1093
+ const state = doc2.expandedStates[i];
1094
+ const cmd = {
1095
+ ind,
1096
+ mode: MODE_FLAT,
1097
+ doc: state
1098
+ };
1099
+ if (fits(cmd, cmds, rem, hasLineSuffix)) {
1100
+ cmds.push(cmd);
1101
+ break;
1102
+ }
1103
+ }
1104
+ }
1105
+ }
1106
+ } else {
1107
+ cmds.push({
1108
+ ind,
1109
+ mode: MODE_BREAK,
1110
+ doc: doc2.contents
1111
+ });
1112
+ }
1113
+ }
1114
+ break;
1115
+ }
1116
+ }
1117
+ if (doc2.id) {
1118
+ groupModeMap[doc2.id] = getLast(cmds).mode;
1119
+ }
1120
+ break;
1121
+ case "fill": {
1122
+ const rem = width - pos;
1123
+ const {
1124
+ parts
1125
+ } = doc2;
1126
+ if (parts.length === 0) {
1127
+ break;
1128
+ }
1129
+ const [content, whitespace] = parts;
1130
+ const contentFlatCmd = {
1131
+ ind,
1132
+ mode: MODE_FLAT,
1133
+ doc: content
1134
+ };
1135
+ const contentBreakCmd = {
1136
+ ind,
1137
+ mode: MODE_BREAK,
1138
+ doc: content
1139
+ };
1140
+ const contentFits = fits(contentFlatCmd, [], rem, lineSuffix.length > 0, true);
1141
+ if (parts.length === 1) {
1142
+ if (contentFits) {
1143
+ cmds.push(contentFlatCmd);
1144
+ } else {
1145
+ cmds.push(contentBreakCmd);
1146
+ }
1147
+ break;
1148
+ }
1149
+ const whitespaceFlatCmd = {
1150
+ ind,
1151
+ mode: MODE_FLAT,
1152
+ doc: whitespace
1153
+ };
1154
+ const whitespaceBreakCmd = {
1155
+ ind,
1156
+ mode: MODE_BREAK,
1157
+ doc: whitespace
1158
+ };
1159
+ if (parts.length === 2) {
1160
+ if (contentFits) {
1161
+ cmds.push(whitespaceFlatCmd, contentFlatCmd);
1162
+ } else {
1163
+ cmds.push(whitespaceBreakCmd, contentBreakCmd);
1164
+ }
1165
+ break;
1166
+ }
1167
+ parts.splice(0, 2);
1168
+ const remainingCmd = {
1169
+ ind,
1170
+ mode,
1171
+ doc: fill(parts)
1172
+ };
1173
+ const secondContent = parts[0];
1174
+ const firstAndSecondContentFlatCmd = {
1175
+ ind,
1176
+ mode: MODE_FLAT,
1177
+ doc: [content, whitespace, secondContent]
1178
+ };
1179
+ const firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], rem, lineSuffix.length > 0, true);
1180
+ if (firstAndSecondContentFits) {
1181
+ cmds.push(remainingCmd, whitespaceFlatCmd, contentFlatCmd);
1182
+ } else if (contentFits) {
1183
+ cmds.push(remainingCmd, whitespaceBreakCmd, contentFlatCmd);
1184
+ } else {
1185
+ cmds.push(remainingCmd, whitespaceBreakCmd, contentBreakCmd);
1186
+ }
1187
+ break;
1188
+ }
1189
+ case "if-break":
1190
+ case "indent-if-break": {
1191
+ const groupMode = doc2.groupId ? groupModeMap[doc2.groupId] : mode;
1192
+ if (groupMode === MODE_BREAK) {
1193
+ const breakContents = doc2.type === "if-break" ? doc2.breakContents : doc2.negate ? doc2.contents : indent(doc2.contents);
1194
+ if (breakContents) {
1195
+ cmds.push({
1196
+ ind,
1197
+ mode,
1198
+ doc: breakContents
1199
+ });
1200
+ }
1201
+ }
1202
+ if (groupMode === MODE_FLAT) {
1203
+ const flatContents = doc2.type === "if-break" ? doc2.flatContents : doc2.negate ? indent(doc2.contents) : doc2.contents;
1204
+ if (flatContents) {
1205
+ cmds.push({
1206
+ ind,
1207
+ mode,
1208
+ doc: flatContents
1209
+ });
1210
+ }
1211
+ }
1212
+ break;
1213
+ }
1214
+ case "line-suffix":
1215
+ lineSuffix.push({
1216
+ ind,
1217
+ mode,
1218
+ doc: doc2.contents
1219
+ });
1220
+ break;
1221
+ case "line-suffix-boundary":
1222
+ if (lineSuffix.length > 0) {
1223
+ cmds.push({
1224
+ ind,
1225
+ mode,
1226
+ doc: {
1227
+ type: "line",
1228
+ hard: true
1229
+ }
1230
+ });
1231
+ }
1232
+ break;
1233
+ case "line":
1234
+ switch (mode) {
1235
+ case MODE_FLAT:
1236
+ if (!doc2.hard) {
1237
+ if (!doc2.soft) {
1238
+ out.push(" ");
1239
+ pos += 1;
1240
+ }
1241
+ break;
1242
+ } else {
1243
+ shouldRemeasure = true;
1244
+ }
1245
+ case MODE_BREAK:
1246
+ if (lineSuffix.length > 0) {
1247
+ cmds.push({
1248
+ ind,
1249
+ mode,
1250
+ doc: doc2
1251
+ }, ...lineSuffix.reverse());
1252
+ lineSuffix.length = 0;
1253
+ break;
1254
+ }
1255
+ if (doc2.literal) {
1256
+ if (ind.root) {
1257
+ out.push(newLine, ind.root.value);
1258
+ pos = ind.root.length;
1259
+ } else {
1260
+ out.push(newLine);
1261
+ pos = 0;
1262
+ }
1263
+ } else {
1264
+ pos -= trim(out);
1265
+ out.push(newLine + ind.value);
1266
+ pos = ind.length;
1267
+ }
1268
+ break;
1269
+ }
1270
+ break;
1271
+ case "label":
1272
+ cmds.push({
1273
+ ind,
1274
+ mode,
1275
+ doc: doc2.contents
1276
+ });
1277
+ break;
1278
+ default:
1279
+ }
1280
+ }
1281
+ if (cmds.length === 0 && lineSuffix.length > 0) {
1282
+ cmds.push(...lineSuffix.reverse());
1283
+ lineSuffix.length = 0;
1284
+ }
1285
+ }
1286
+ const cursorPlaceholderIndex = out.indexOf(cursor.placeholder);
1287
+ if (cursorPlaceholderIndex !== -1) {
1288
+ const otherCursorPlaceholderIndex = out.indexOf(cursor.placeholder, cursorPlaceholderIndex + 1);
1289
+ const beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
1290
+ const aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
1291
+ const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
1292
+ return {
1293
+ formatted: beforeCursor + aroundCursor + afterCursor,
1294
+ cursorNodeStart: beforeCursor.length,
1295
+ cursorNodeText: aroundCursor
1296
+ };
1297
+ }
1298
+ return {
1299
+ formatted: out.join("")
1300
+ };
1301
+ }
1302
+ module2.exports = {
1303
+ printDocToString
1304
+ };
1305
+ }
1306
+ });
1307
+ var require_doc_debug = __commonJS2({
1308
+ "src/document/doc-debug.js"(exports2, module2) {
1309
+ "use strict";
1310
+ init_define_process();
1311
+ var {
1312
+ isConcat,
1313
+ getDocParts
1314
+ } = require_doc_utils();
1315
+ function flattenDoc(doc) {
1316
+ if (!doc) {
1317
+ return "";
1318
+ }
1319
+ if (isConcat(doc)) {
1320
+ const res = [];
1321
+ for (const part of getDocParts(doc)) {
1322
+ if (isConcat(part)) {
1323
+ res.push(...flattenDoc(part).parts);
1324
+ } else {
1325
+ const flattened = flattenDoc(part);
1326
+ if (flattened !== "") {
1327
+ res.push(flattened);
1328
+ }
1329
+ }
1330
+ }
1331
+ return {
1332
+ type: "concat",
1333
+ parts: res
1334
+ };
1335
+ }
1336
+ if (doc.type === "if-break") {
1337
+ return Object.assign(Object.assign({}, doc), {}, {
1338
+ breakContents: flattenDoc(doc.breakContents),
1339
+ flatContents: flattenDoc(doc.flatContents)
1340
+ });
1341
+ }
1342
+ if (doc.type === "group") {
1343
+ return Object.assign(Object.assign({}, doc), {}, {
1344
+ contents: flattenDoc(doc.contents),
1345
+ expandedStates: doc.expandedStates && doc.expandedStates.map(flattenDoc)
1346
+ });
1347
+ }
1348
+ if (doc.type === "fill") {
1349
+ return {
1350
+ type: "fill",
1351
+ parts: doc.parts.map(flattenDoc)
1352
+ };
1353
+ }
1354
+ if (doc.contents) {
1355
+ return Object.assign(Object.assign({}, doc), {}, {
1356
+ contents: flattenDoc(doc.contents)
1357
+ });
1358
+ }
1359
+ return doc;
1360
+ }
1361
+ function printDocToDebug(doc) {
1362
+ const printedSymbols = /* @__PURE__ */ Object.create(null);
1363
+ const usedKeysForSymbols = /* @__PURE__ */ new Set();
1364
+ return printDoc(flattenDoc(doc));
1365
+ function printDoc(doc2, index, parentParts) {
1366
+ if (typeof doc2 === "string") {
1367
+ return JSON.stringify(doc2);
1368
+ }
1369
+ if (isConcat(doc2)) {
1370
+ const printed = getDocParts(doc2).map(printDoc).filter(Boolean);
1371
+ return printed.length === 1 ? printed[0] : `[${printed.join(", ")}]`;
1372
+ }
1373
+ if (doc2.type === "line") {
1374
+ const withBreakParent = Array.isArray(parentParts) && parentParts[index + 1] && parentParts[index + 1].type === "break-parent";
1375
+ if (doc2.literal) {
1376
+ return withBreakParent ? "literalline" : "literallineWithoutBreakParent";
1377
+ }
1378
+ if (doc2.hard) {
1379
+ return withBreakParent ? "hardline" : "hardlineWithoutBreakParent";
1380
+ }
1381
+ if (doc2.soft) {
1382
+ return "softline";
1383
+ }
1384
+ return "line";
1385
+ }
1386
+ if (doc2.type === "break-parent") {
1387
+ const afterHardline = Array.isArray(parentParts) && parentParts[index - 1] && parentParts[index - 1].type === "line" && parentParts[index - 1].hard;
1388
+ return afterHardline ? void 0 : "breakParent";
1389
+ }
1390
+ if (doc2.type === "trim") {
1391
+ return "trim";
1392
+ }
1393
+ if (doc2.type === "indent") {
1394
+ return "indent(" + printDoc(doc2.contents) + ")";
1395
+ }
1396
+ if (doc2.type === "align") {
1397
+ return doc2.n === Number.NEGATIVE_INFINITY ? "dedentToRoot(" + printDoc(doc2.contents) + ")" : doc2.n < 0 ? "dedent(" + printDoc(doc2.contents) + ")" : doc2.n.type === "root" ? "markAsRoot(" + printDoc(doc2.contents) + ")" : "align(" + JSON.stringify(doc2.n) + ", " + printDoc(doc2.contents) + ")";
1398
+ }
1399
+ if (doc2.type === "if-break") {
1400
+ return "ifBreak(" + printDoc(doc2.breakContents) + (doc2.flatContents ? ", " + printDoc(doc2.flatContents) : "") + (doc2.groupId ? (!doc2.flatContents ? ', ""' : "") + `, { groupId: ${printGroupId(doc2.groupId)} }` : "") + ")";
1401
+ }
1402
+ if (doc2.type === "indent-if-break") {
1403
+ const optionsParts = [];
1404
+ if (doc2.negate) {
1405
+ optionsParts.push("negate: true");
1406
+ }
1407
+ if (doc2.groupId) {
1408
+ optionsParts.push(`groupId: ${printGroupId(doc2.groupId)}`);
1409
+ }
1410
+ const options = optionsParts.length > 0 ? `, { ${optionsParts.join(", ")} }` : "";
1411
+ return `indentIfBreak(${printDoc(doc2.contents)}${options})`;
1412
+ }
1413
+ if (doc2.type === "group") {
1414
+ const optionsParts = [];
1415
+ if (doc2.break && doc2.break !== "propagated") {
1416
+ optionsParts.push("shouldBreak: true");
1417
+ }
1418
+ if (doc2.id) {
1419
+ optionsParts.push(`id: ${printGroupId(doc2.id)}`);
1420
+ }
1421
+ const options = optionsParts.length > 0 ? `, { ${optionsParts.join(", ")} }` : "";
1422
+ if (doc2.expandedStates) {
1423
+ return `conditionalGroup([${doc2.expandedStates.map((part) => printDoc(part)).join(",")}]${options})`;
1424
+ }
1425
+ return `group(${printDoc(doc2.contents)}${options})`;
1426
+ }
1427
+ if (doc2.type === "fill") {
1428
+ return `fill([${doc2.parts.map((part) => printDoc(part)).join(", ")}])`;
1429
+ }
1430
+ if (doc2.type === "line-suffix") {
1431
+ return "lineSuffix(" + printDoc(doc2.contents) + ")";
1432
+ }
1433
+ if (doc2.type === "line-suffix-boundary") {
1434
+ return "lineSuffixBoundary";
1435
+ }
1436
+ if (doc2.type === "label") {
1437
+ return `label(${JSON.stringify(doc2.label)}, ${printDoc(doc2.contents)})`;
1438
+ }
1439
+ throw new Error("Unknown doc type " + doc2.type);
1440
+ }
1441
+ function printGroupId(id) {
1442
+ if (typeof id !== "symbol") {
1443
+ return JSON.stringify(String(id));
1444
+ }
1445
+ if (id in printedSymbols) {
1446
+ return printedSymbols[id];
1447
+ }
1448
+ const prefix = String(id).slice(7, -1) || "symbol";
1449
+ for (let counter = 0; ; counter++) {
1450
+ const key = prefix + (counter > 0 ? ` #${counter}` : "");
1451
+ if (!usedKeysForSymbols.has(key)) {
1452
+ usedKeysForSymbols.add(key);
1453
+ return printedSymbols[id] = `Symbol.for(${JSON.stringify(key)})`;
1454
+ }
1455
+ }
1456
+ }
1457
+ }
1458
+ module2.exports = {
1459
+ printDocToDebug
1460
+ };
1461
+ }
1462
+ });
1463
+ init_define_process();
1464
+ module.exports = {
1465
+ builders: require_doc_builders(),
1466
+ printer: require_doc_printer(),
1467
+ utils: require_doc_utils(),
1468
+ debug: require_doc_debug()
1469
+ };
1470
+ }
1471
+ });
1472
+ return require_doc_js_umd();
1473
+ });