@matter/tools 0.12.2-alpha.0-20250201-eb5d40a2f → 0.12.3-alpha.0-20250203-34ba45cae

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 (225) hide show
  1. package/dist/cjs/ansi-text/chars.d.ts +11 -0
  2. package/dist/cjs/ansi-text/chars.d.ts.map +1 -0
  3. package/dist/cjs/ansi-text/chars.js +57 -0
  4. package/dist/cjs/ansi-text/chars.js.map +6 -0
  5. package/dist/cjs/ansi-text/consumer.d.ts +45 -0
  6. package/dist/cjs/ansi-text/consumer.d.ts.map +1 -0
  7. package/dist/cjs/ansi-text/consumer.js +22 -0
  8. package/dist/cjs/ansi-text/consumer.js.map +6 -0
  9. package/dist/cjs/ansi-text/contiguous-output-segment.d.ts +31 -0
  10. package/dist/cjs/ansi-text/contiguous-output-segment.d.ts.map +1 -0
  11. package/dist/cjs/ansi-text/contiguous-output-segment.js +156 -0
  12. package/dist/cjs/ansi-text/contiguous-output-segment.js.map +6 -0
  13. package/dist/cjs/ansi-text/index.d.ts +12 -0
  14. package/dist/cjs/ansi-text/index.d.ts.map +1 -0
  15. package/dist/cjs/ansi-text/index.js +29 -0
  16. package/dist/cjs/ansi-text/index.js.map +6 -0
  17. package/dist/cjs/ansi-text/printer.d.ts +24 -0
  18. package/dist/cjs/ansi-text/printer.d.ts.map +1 -0
  19. package/dist/cjs/ansi-text/printer.js +81 -0
  20. package/dist/cjs/ansi-text/printer.js.map +6 -0
  21. package/dist/cjs/ansi-text/producer.d.ts +17 -0
  22. package/dist/cjs/ansi-text/producer.d.ts.map +1 -0
  23. package/dist/cjs/ansi-text/producer.js +45 -0
  24. package/dist/cjs/ansi-text/producer.js.map +6 -0
  25. package/dist/cjs/ansi-text/screen.d.ts +13 -0
  26. package/dist/cjs/ansi-text/screen.d.ts.map +1 -0
  27. package/dist/cjs/ansi-text/screen.js +38 -0
  28. package/dist/cjs/ansi-text/screen.js.map +6 -0
  29. package/dist/cjs/ansi-text/sgr.d.ts +100 -0
  30. package/dist/cjs/ansi-text/sgr.d.ts.map +1 -0
  31. package/dist/cjs/ansi-text/sgr.js +140 -0
  32. package/dist/cjs/ansi-text/sgr.js.map +6 -0
  33. package/dist/cjs/ansi-text/std.d.ts +17 -0
  34. package/dist/cjs/ansi-text/std.d.ts.map +1 -0
  35. package/dist/cjs/ansi-text/std.js +43 -0
  36. package/dist/cjs/ansi-text/std.js.map +6 -0
  37. package/dist/cjs/ansi-text/style.d.ts +88 -0
  38. package/dist/cjs/ansi-text/style.d.ts.map +1 -0
  39. package/dist/cjs/ansi-text/style.js +257 -0
  40. package/dist/cjs/ansi-text/style.js.map +6 -0
  41. package/dist/cjs/ansi-text/text-builder.d.ts +78 -0
  42. package/dist/cjs/ansi-text/text-builder.d.ts.map +1 -0
  43. package/dist/cjs/ansi-text/text-builder.js +164 -0
  44. package/dist/cjs/ansi-text/text-builder.js.map +6 -0
  45. package/dist/cjs/ansi-text/text-writer.d.ts +30 -0
  46. package/dist/cjs/ansi-text/text-writer.d.ts.map +1 -0
  47. package/dist/cjs/ansi-text/text-writer.js +317 -0
  48. package/dist/cjs/ansi-text/text-writer.js.map +6 -0
  49. package/dist/cjs/ansi-text/token.d.ts +61 -0
  50. package/dist/cjs/ansi-text/token.d.ts.map +1 -0
  51. package/dist/cjs/ansi-text/token.js +22 -0
  52. package/dist/cjs/ansi-text/token.js.map +6 -0
  53. package/dist/cjs/ansi-text/tokenize.d.ts +11 -0
  54. package/dist/cjs/ansi-text/tokenize.d.ts.map +1 -0
  55. package/dist/cjs/ansi-text/tokenize.js +190 -0
  56. package/dist/cjs/ansi-text/tokenize.js.map +6 -0
  57. package/dist/cjs/ansi-text/truncator.d.ts +20 -0
  58. package/dist/cjs/ansi-text/truncator.d.ts.map +1 -0
  59. package/dist/cjs/ansi-text/truncator.js +72 -0
  60. package/dist/cjs/ansi-text/truncator.js.map +6 -0
  61. package/dist/cjs/ansi-text/visible-width-of.d.ts +10 -0
  62. package/dist/cjs/ansi-text/visible-width-of.d.ts.map +1 -0
  63. package/dist/cjs/ansi-text/visible-width-of.js +55 -0
  64. package/dist/cjs/ansi-text/visible-width-of.js.map +6 -0
  65. package/dist/cjs/ansi-text/wrapper.d.ts +34 -0
  66. package/dist/cjs/ansi-text/wrapper.d.ts.map +1 -0
  67. package/dist/cjs/ansi-text/wrapper.js +208 -0
  68. package/dist/cjs/ansi-text/wrapper.js.map +6 -0
  69. package/dist/cjs/building/cli.js +6 -6
  70. package/dist/cjs/building/cli.js.map +1 -1
  71. package/dist/cjs/building/graph.d.ts +2 -2
  72. package/dist/cjs/building/graph.d.ts.map +1 -1
  73. package/dist/cjs/building/graph.js.map +1 -1
  74. package/dist/cjs/building/project-builder.d.ts +38 -0
  75. package/dist/cjs/building/project-builder.d.ts.map +1 -0
  76. package/dist/cjs/building/project-builder.js +200 -0
  77. package/dist/cjs/building/project-builder.js.map +6 -0
  78. package/dist/cjs/building/tsconfig.js +1 -1
  79. package/dist/cjs/building/tsconfig.js.map +1 -1
  80. package/dist/cjs/index.d.ts +4 -6
  81. package/dist/cjs/index.d.ts.map +1 -1
  82. package/dist/cjs/index.js +4 -6
  83. package/dist/cjs/index.js.map +1 -1
  84. package/dist/cjs/running/ensure-compiled.js +2 -2
  85. package/dist/cjs/running/ensure-compiled.js.map +1 -1
  86. package/dist/cjs/util/commander.d.ts.map +1 -1
  87. package/dist/cjs/util/commander.js +4 -5
  88. package/dist/cjs/util/commander.js.map +2 -2
  89. package/dist/cjs/util/index.d.ts +1 -0
  90. package/dist/cjs/util/index.d.ts.map +1 -1
  91. package/dist/cjs/util/index.js +1 -0
  92. package/dist/cjs/util/index.js.map +1 -1
  93. package/dist/cjs/util/progress.d.ts +2 -2
  94. package/dist/cjs/util/progress.d.ts.map +1 -1
  95. package/dist/cjs/util/progress.js +25 -53
  96. package/dist/cjs/util/progress.js.map +2 -2
  97. package/dist/cjs/versioning/versioner.js +2 -12
  98. package/dist/cjs/versioning/versioner.js.map +2 -2
  99. package/dist/esm/ansi-text/chars.d.ts +11 -0
  100. package/dist/esm/ansi-text/chars.d.ts.map +1 -0
  101. package/dist/esm/ansi-text/chars.js +37 -0
  102. package/dist/esm/ansi-text/chars.js.map +6 -0
  103. package/dist/esm/ansi-text/consumer.d.ts +45 -0
  104. package/dist/esm/ansi-text/consumer.d.ts.map +1 -0
  105. package/dist/esm/ansi-text/consumer.js +6 -0
  106. package/dist/esm/ansi-text/consumer.js.map +6 -0
  107. package/dist/esm/ansi-text/contiguous-output-segment.d.ts +31 -0
  108. package/dist/esm/ansi-text/contiguous-output-segment.d.ts.map +1 -0
  109. package/dist/esm/ansi-text/contiguous-output-segment.js +136 -0
  110. package/dist/esm/ansi-text/contiguous-output-segment.js.map +6 -0
  111. package/dist/esm/ansi-text/index.d.ts +12 -0
  112. package/dist/esm/ansi-text/index.d.ts.map +1 -0
  113. package/dist/esm/ansi-text/index.js +12 -0
  114. package/dist/esm/ansi-text/index.js.map +6 -0
  115. package/dist/esm/ansi-text/printer.d.ts +24 -0
  116. package/dist/esm/ansi-text/printer.d.ts.map +1 -0
  117. package/dist/esm/ansi-text/printer.js +61 -0
  118. package/dist/esm/ansi-text/printer.js.map +6 -0
  119. package/dist/esm/ansi-text/producer.d.ts +17 -0
  120. package/dist/esm/ansi-text/producer.d.ts.map +1 -0
  121. package/dist/esm/ansi-text/producer.js +25 -0
  122. package/dist/esm/ansi-text/producer.js.map +6 -0
  123. package/dist/esm/ansi-text/screen.d.ts +13 -0
  124. package/dist/esm/ansi-text/screen.d.ts.map +1 -0
  125. package/dist/esm/ansi-text/screen.js +18 -0
  126. package/dist/esm/ansi-text/screen.js.map +6 -0
  127. package/dist/esm/ansi-text/sgr.d.ts +100 -0
  128. package/dist/esm/ansi-text/sgr.d.ts.map +1 -0
  129. package/dist/esm/ansi-text/sgr.js +120 -0
  130. package/dist/esm/ansi-text/sgr.js.map +6 -0
  131. package/dist/esm/ansi-text/std.d.ts +17 -0
  132. package/dist/esm/ansi-text/std.d.ts.map +1 -0
  133. package/dist/esm/ansi-text/std.js +23 -0
  134. package/dist/esm/ansi-text/std.js.map +6 -0
  135. package/dist/esm/ansi-text/style.d.ts +88 -0
  136. package/dist/esm/ansi-text/style.d.ts.map +1 -0
  137. package/dist/esm/ansi-text/style.js +245 -0
  138. package/dist/esm/ansi-text/style.js.map +6 -0
  139. package/dist/esm/ansi-text/text-builder.d.ts +78 -0
  140. package/dist/esm/ansi-text/text-builder.d.ts.map +1 -0
  141. package/dist/esm/ansi-text/text-builder.js +150 -0
  142. package/dist/esm/ansi-text/text-builder.js.map +6 -0
  143. package/dist/esm/ansi-text/text-writer.d.ts +30 -0
  144. package/dist/esm/ansi-text/text-writer.d.ts.map +1 -0
  145. package/dist/esm/ansi-text/text-writer.js +297 -0
  146. package/dist/esm/ansi-text/text-writer.js.map +6 -0
  147. package/dist/esm/ansi-text/token.d.ts +61 -0
  148. package/dist/esm/ansi-text/token.d.ts.map +1 -0
  149. package/dist/esm/ansi-text/token.js +6 -0
  150. package/dist/esm/ansi-text/token.js.map +6 -0
  151. package/dist/esm/ansi-text/tokenize.d.ts +11 -0
  152. package/dist/esm/ansi-text/tokenize.d.ts.map +1 -0
  153. package/dist/esm/ansi-text/tokenize.js +170 -0
  154. package/dist/esm/ansi-text/tokenize.js.map +6 -0
  155. package/dist/esm/ansi-text/truncator.d.ts +20 -0
  156. package/dist/esm/ansi-text/truncator.d.ts.map +1 -0
  157. package/dist/esm/ansi-text/truncator.js +52 -0
  158. package/dist/esm/ansi-text/truncator.js.map +6 -0
  159. package/dist/esm/ansi-text/visible-width-of.d.ts +10 -0
  160. package/dist/esm/ansi-text/visible-width-of.d.ts.map +1 -0
  161. package/dist/esm/ansi-text/visible-width-of.js +35 -0
  162. package/dist/esm/ansi-text/visible-width-of.js.map +6 -0
  163. package/dist/esm/ansi-text/wrapper.d.ts +34 -0
  164. package/dist/esm/ansi-text/wrapper.d.ts.map +1 -0
  165. package/dist/esm/ansi-text/wrapper.js +188 -0
  166. package/dist/esm/ansi-text/wrapper.js.map +6 -0
  167. package/dist/esm/building/cli.js +3 -3
  168. package/dist/esm/building/cli.js.map +1 -1
  169. package/dist/esm/building/graph.d.ts +2 -2
  170. package/dist/esm/building/graph.d.ts.map +1 -1
  171. package/dist/esm/building/graph.js +1 -1
  172. package/dist/esm/building/graph.js.map +1 -1
  173. package/dist/esm/building/project-builder.d.ts +38 -0
  174. package/dist/esm/building/project-builder.d.ts.map +1 -0
  175. package/dist/esm/building/project-builder.js +180 -0
  176. package/dist/esm/building/project-builder.js.map +6 -0
  177. package/dist/esm/building/tsconfig.js +2 -2
  178. package/dist/esm/building/tsconfig.js.map +1 -1
  179. package/dist/esm/index.d.ts +4 -6
  180. package/dist/esm/index.d.ts.map +1 -1
  181. package/dist/esm/index.js +5 -7
  182. package/dist/esm/index.js.map +1 -1
  183. package/dist/esm/running/ensure-compiled.js +3 -3
  184. package/dist/esm/running/ensure-compiled.js.map +1 -1
  185. package/dist/esm/util/commander.d.ts.map +1 -1
  186. package/dist/esm/util/commander.js +5 -6
  187. package/dist/esm/util/commander.js.map +1 -1
  188. package/dist/esm/util/index.d.ts +1 -0
  189. package/dist/esm/util/index.d.ts.map +1 -1
  190. package/dist/esm/util/index.js +2 -1
  191. package/dist/esm/util/index.js.map +1 -1
  192. package/dist/esm/util/progress.d.ts +2 -2
  193. package/dist/esm/util/progress.d.ts.map +1 -1
  194. package/dist/esm/util/progress.js +26 -44
  195. package/dist/esm/util/progress.js.map +1 -1
  196. package/dist/esm/versioning/versioner.js +3 -3
  197. package/dist/esm/versioning/versioner.js.map +1 -1
  198. package/package.json +11 -1
  199. package/src/ansi-text/chars.ts +31 -0
  200. package/src/ansi-text/consumer.ts +53 -0
  201. package/src/ansi-text/contiguous-output-segment.ts +181 -0
  202. package/src/ansi-text/index.ts +14 -0
  203. package/src/ansi-text/printer.ts +86 -0
  204. package/src/ansi-text/producer.ts +29 -0
  205. package/src/ansi-text/screen.ts +18 -0
  206. package/src/ansi-text/sgr.ts +154 -0
  207. package/src/ansi-text/std.ts +28 -0
  208. package/src/ansi-text/style.ts +369 -0
  209. package/src/ansi-text/text-builder.ts +261 -0
  210. package/src/ansi-text/text-writer.ts +363 -0
  211. package/src/ansi-text/token.ts +76 -0
  212. package/src/ansi-text/tokenize.ts +212 -0
  213. package/src/ansi-text/truncator.ts +63 -0
  214. package/src/ansi-text/visible-width-of.ts +39 -0
  215. package/src/ansi-text/wrapper.ts +244 -0
  216. package/src/building/cli.ts +2 -2
  217. package/src/building/graph.ts +2 -2
  218. package/src/building/project-builder.ts +230 -0
  219. package/src/building/tsconfig.ts +2 -4
  220. package/src/index.ts +4 -6
  221. package/src/running/ensure-compiled.ts +2 -2
  222. package/src/util/commander.ts +4 -6
  223. package/src/util/index.ts +1 -0
  224. package/src/util/progress.ts +24 -61
  225. package/src/versioning/versioner.ts +2 -2
@@ -0,0 +1,245 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import {
7
+ Color,
8
+ ExtendedColor,
9
+ SgrCategory,
10
+ SgrOpcode,
11
+ SgrOpcodeBlock,
12
+ SgrOpcodeToCategory,
13
+ SgrOpcodeToUndoOpcode
14
+ } from "./sgr.js";
15
+ const codes = Symbol("codes");
16
+ const text = Symbol("text");
17
+ function Style(definition) {
18
+ if (definition instanceof Style) {
19
+ return definition;
20
+ }
21
+ const style = Object.create(Style.prototype);
22
+ style.styleDefinition = Style.definitionOf(definition);
23
+ return style;
24
+ }
25
+ ((Style2) => {
26
+ function opcodeOf(code) {
27
+ if (typeof code === "number") {
28
+ return code;
29
+ }
30
+ if (code === "") {
31
+ return 0;
32
+ }
33
+ const opcode = Number.parseInt(code);
34
+ if (Number.isNaN(opcode)) {
35
+ return void 0;
36
+ }
37
+ return opcode;
38
+ }
39
+ Style2.opcodeOf = opcodeOf;
40
+ function codesOf(definition) {
41
+ definition = textOf(definition);
42
+ if (definition === void 0) {
43
+ return [];
44
+ }
45
+ if (definition === "") {
46
+ return [0];
47
+ }
48
+ const parts = definition.split(";");
49
+ const codes2 = Array();
50
+ let pos = 0;
51
+ while (pos < parts.length) {
52
+ const part = parts[pos];
53
+ const opcode = opcodeOf(parts[pos]);
54
+ pos++;
55
+ let expectedParts;
56
+ switch (opcode) {
57
+ case SgrOpcodeBlock.fg + Color.extended:
58
+ case SgrOpcodeBlock.bg + Color.extended:
59
+ switch (opcodeOf(parts[pos])) {
60
+ case ExtendedColor.eightBit:
61
+ expectedParts = 3;
62
+ break;
63
+ case ExtendedColor.rgb:
64
+ expectedParts = 5;
65
+ break;
66
+ default:
67
+ expectedParts = 1;
68
+ break;
69
+ }
70
+ break;
71
+ case void 0:
72
+ continue;
73
+ default:
74
+ expectedParts = 0;
75
+ break;
76
+ }
77
+ let baseCode;
78
+ if (opcode.toString() === part) {
79
+ baseCode = opcode;
80
+ } else {
81
+ baseCode = part;
82
+ }
83
+ if (expectedParts) {
84
+ const codeCount = part.split(":").length;
85
+ if (codeCount < expectedParts) {
86
+ const argParts = expectedParts - codeCount;
87
+ codes2.push([baseCode, ...parts.slice(pos, pos + argParts)].join(";"));
88
+ pos += argParts;
89
+ continue;
90
+ }
91
+ }
92
+ codes2.push(baseCode);
93
+ }
94
+ return codes2;
95
+ }
96
+ Style2.codesOf = codesOf;
97
+ function textOf(definition) {
98
+ if (definition === void 0 || definition === "") {
99
+ return definition;
100
+ }
101
+ definition = definition.trim();
102
+ if (definition[0] === "\x1B" && definition[1] === "[") {
103
+ definition = definition.slice(2);
104
+ }
105
+ if (definition[definition.length - 1] === "m") {
106
+ definition = definition.slice(0, definition.length - 1);
107
+ }
108
+ return definition;
109
+ }
110
+ Style2.textOf = textOf;
111
+ function definitionOf(definition) {
112
+ if (definition !== void 0 && typeof definition !== "string" && !Array.isArray(definition)) {
113
+ return definition.styleDefinition;
114
+ }
115
+ return definition;
116
+ }
117
+ Style2.definitionOf = definitionOf;
118
+ })(Style || (Style = {}));
119
+ Style.prototype = {
120
+ get styleDefinition() {
121
+ if (this[codes] !== void 0) {
122
+ return this[codes];
123
+ }
124
+ if (this[text] !== void 0) {
125
+ return this[text];
126
+ }
127
+ },
128
+ set styleDefinition(definition) {
129
+ if (typeof definition === "function" || typeof definition === "object" && !Array.isArray(definition)) {
130
+ this.styleDefinition = definition.styleDefinition;
131
+ } else if (typeof definition === "string") {
132
+ this[text] = Style.textOf(definition);
133
+ this[codes] = void 0;
134
+ } else {
135
+ this[codes] = definition;
136
+ this[text] = void 0;
137
+ }
138
+ },
139
+ get styleCodes() {
140
+ if (this[codes] === void 0) {
141
+ this[codes] = Style.codesOf(this[text]);
142
+ }
143
+ return this[codes] ?? [];
144
+ },
145
+ get styleToken() {
146
+ return {
147
+ kind: "style",
148
+ // Do not use this because extension toString() may not do the correct thing
149
+ style: Style(this.styleDefinition)
150
+ };
151
+ },
152
+ get undoStyle() {
153
+ const codes2 = Array();
154
+ for (const code of this.styleCodes) {
155
+ const opcode = Style.opcodeOf(code);
156
+ if (opcode === void 0) {
157
+ continue;
158
+ }
159
+ const undo = SgrOpcodeToUndoOpcode[opcode];
160
+ if (undo === void 0) {
161
+ continue;
162
+ }
163
+ codes2.push(undo);
164
+ }
165
+ return Style(codes2);
166
+ },
167
+ toString() {
168
+ const codes2 = Array();
169
+ for (const code of this.styleCodes) {
170
+ const opcode = Style.opcodeOf(code);
171
+ if (opcode === void 0) {
172
+ continue;
173
+ }
174
+ codes2.push(code);
175
+ }
176
+ return `\x1B[${codes2.join(";")}m`;
177
+ },
178
+ addStyle(codes2) {
179
+ let categories = Array();
180
+ function processor(category, code) {
181
+ if (category === SgrCategory.reset) {
182
+ categories = [SgrOpcode.reset];
183
+ } else {
184
+ categories[category] = code;
185
+ }
186
+ }
187
+ this.evaluateStyle(processor);
188
+ codes2 = Style.definitionOf(codes2);
189
+ if (codes2 !== void 0) {
190
+ Style(codes2).evaluateStyle(processor);
191
+ }
192
+ return this.factory(
193
+ categories.filter((entry) => entry !== void 0),
194
+ this
195
+ );
196
+ },
197
+ diffStyle(other) {
198
+ let current = Array();
199
+ this.evaluateStyle((category, code) => {
200
+ if (category === SgrCategory.reset) {
201
+ current = [];
202
+ } else {
203
+ current[category] = code;
204
+ }
205
+ });
206
+ let target = [...current];
207
+ other.evaluateStyle((category, code) => {
208
+ if (category === SgrCategory.reset) {
209
+ current = [];
210
+ target = [SgrCategory.reset];
211
+ } else if (current[category] === code) {
212
+ target[category] = void 0;
213
+ } else {
214
+ target[category] = code;
215
+ }
216
+ });
217
+ return this.factory(
218
+ target.filter((entry) => entry !== void 0),
219
+ this
220
+ );
221
+ },
222
+ evaluateStyle(processor) {
223
+ for (const code of this.styleCodes) {
224
+ const opcode = Style.opcodeOf(code);
225
+ if (opcode !== void 0) {
226
+ const category = SgrOpcodeToCategory[opcode];
227
+ if (category !== void 0) {
228
+ processor(category, code);
229
+ }
230
+ }
231
+ }
232
+ },
233
+ get factory() {
234
+ return Style;
235
+ },
236
+ [Symbol.iterator]() {
237
+ return [{ kind: "style", style: this }][Symbol.iterator]();
238
+ }
239
+ };
240
+ Style.Inherit = Style();
241
+ Style.None = Style([0]);
242
+ export {
243
+ Style
244
+ };
245
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Fuc2ktdGV4dC9zdHlsZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjItMjAyNCBNYXR0ZXIuanMgQXV0aG9yc1xuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBQcm9kdWNlciB9IGZyb20gXCIuL3Byb2R1Y2VyLmpzXCI7XG5pbXBvcnQge1xuICAgIENvbG9yLFxuICAgIEV4dGVuZGVkQ29sb3IsXG4gICAgU2dyQ2F0ZWdvcnksXG4gICAgU2dyT3Bjb2RlLFxuICAgIFNnck9wY29kZUJsb2NrLFxuICAgIFNnck9wY29kZVRvQ2F0ZWdvcnksXG4gICAgU2dyT3Bjb2RlVG9VbmRvT3Bjb2RlLFxufSBmcm9tIFwiLi9zZ3IuanNcIjtcbmltcG9ydCB7IFRva2VuIH0gZnJvbSBcIi4vdG9rZW4uanNcIjtcblxuLyoqXG4gKiBBbiBpbW11dGFibGUgcmVwcmVzZW50YXRpb24gb2YgYW4gQU5TSSBDU0kgU0dSIHNlcXVlbmNlLCBhbHNvIGtub3duIGFzIHRoZSBcIkFtZXJpY2FuIE5hdGlvbmFsIFN0YW5kYXJkcyBJbnN0aXR1dGVcbiAqIENvbnRyb2wgU2VxdWVuY2UgSW50cm9kdWNlciBTZWxlY3QgR3JhcGhpYyBSZW5kaXRpb25cIi5cbiAqXG4gKiBJbXBsZW1lbnRlZCBsYXJnZWx5IGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZVxuICpcbiAqIFByb3ZpZGVzIGhpZ2ggbGV2ZWwgbG9naWMgZm9yIHBhcnNpbmcgYW5kIG1hbmlwdWxhdGluZyBzdHlsaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0eWxlIGV4dGVuZHMgUHJvZHVjZXIge1xuICAgIC8qKlxuICAgICAqIFRoZSBjdXJyZW50IGRlZmluaXRpb24sIGVpdGhlciB7QGxpbmsgY29kZXN9IG9yIHtAbGluayB0ZXh0fS5cbiAgICAgKi9cbiAgICBnZXQgc3R5bGVEZWZpbml0aW9uKCk6IFN0eWxlLkRlZmluaXRpb247XG5cbiAgICBzZXQgc3R5bGVEZWZpbml0aW9uKGRlZmluaXRpb246IFN0eWxlLklucHV0RGVmaW5pdGlvbiB8IFN0eWxlIHwgdW5kZWZpbmVkKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBsaXN0IG9mIGNvZGVzIGluIHRoaXMgc3R5bGUuXG4gICAgICovXG4gICAgc3R5bGVDb2RlczogKHN0cmluZyB8IG51bWJlcilbXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzdHlsZSBhcyBhIHN0eWxlIHRva2VuLlxuICAgICAqL1xuICAgIHN0eWxlVG9rZW46IFRva2VuO1xuXG4gICAgLyoqXG4gICAgICogQSBzdHlsZSB0aGF0IGRpc2FibGVzIHRoaXMgc3R5bGUuXG4gICAgICovXG4gICAgdW5kb1N0eWxlOiBTdHlsZTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSB0aGUgQU5TSSBlc2NhcGUgc2VxdWVuY2UgZm9yIHRoaXMgc3R5bGUuXG4gICAgICovXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbmV3IHN0eWxlIGJ5IGFkZGluZyBhZGRpdGlvbmFsIHN0eWxlIGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIGFkZFN0eWxlPFQgZXh0ZW5kcyBTdHlsZT4odGhpczogVCwgc3R5bGU6IFN0eWxlLklucHV0RGVmaW5pdGlvbiB8IFN0eWxlKTogVDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIHN0eWxlIHRoYXQgdHJhbnNpdGlvbnMgZnJvbSB0aGlzIHN0eWxlIHRvIGFub3RoZXIuXG4gICAgICovXG4gICAgZGlmZlN0eWxlPFQgZXh0ZW5kcyBTdHlsZT4odGhpczogVCwgb3RoZXI6IFN0eWxlKTogVDtcblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGUgYSBmdW5jdGlvbiBhZ2FpbnN0IGVhY2ggY29kZSBpbiB0aGlzIHN0eWxlJ3Mgc2VxdWVuY2UuXG4gICAgICovXG4gICAgZXZhbHVhdGVTdHlsZShwcm9jZXNzb3I6IChjYXRlZ29yeTogU2dyQ2F0ZWdvcnksIGNvZGU6IG51bWJlciB8IHN0cmluZykgPT4gdm9pZCk6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZmFjdG9yeSB1c2VkIHRvIGNyZWF0ZSB0aGlzIHN0eWxlLlxuICAgICAqL1xuICAgIGZhY3Rvcnk6IFN0eWxlLkZhY3Rvcnk7XG59XG5cbmNvbnN0IGNvZGVzID0gU3ltYm9sKFwiY29kZXNcIik7XG5jb25zdCB0ZXh0ID0gU3ltYm9sKFwidGV4dFwiKTtcblxuaW50ZXJmYWNlIEludGVybmFsU3R5bGUgZXh0ZW5kcyBTdHlsZSB7XG4gICAgW2NvZGVzXT86IChzdHJpbmcgfCBudW1iZXIpW107XG4gICAgW3RleHRdPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU3R5bGUoZGVmaW5pdGlvbj86IFN0eWxlLklucHV0RGVmaW5pdGlvbik6IFN0eWxlIHtcbiAgICBpZiAoZGVmaW5pdGlvbiBpbnN0YW5jZW9mIFN0eWxlKSB7XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IHN0eWxlID0gT2JqZWN0LmNyZWF0ZShTdHlsZS5wcm90b3R5cGUpIGFzIFN0eWxlO1xuXG4gICAgc3R5bGUuc3R5bGVEZWZpbml0aW9uID0gU3R5bGUuZGVmaW5pdGlvbk9mKGRlZmluaXRpb24pO1xuXG4gICAgcmV0dXJuIHN0eWxlO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFN0eWxlIHtcbiAgICBleHBvcnQgdHlwZSBGYWN0b3J5ID0gKGRlZmluaXRpb24/OiBEZWZpbml0aW9uIHwgU3R5bGUsIGRlcml2ZXNGcm9tPzogU3R5bGUpID0+IFN0eWxlO1xuICAgIGV4cG9ydCB0eXBlIERlZmluaXRpb24gPSB1bmRlZmluZWQgfCBzdHJpbmcgfCAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICAgIGV4cG9ydCB0eXBlIElucHV0RGVmaW5pdGlvbiA9IERlZmluaXRpb24gfCB7IHN0eWxlRGVmaW5pdGlvbjogRGVmaW5pdGlvbiB9O1xuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG9wY29kZU9mKGNvZGU6IG51bWJlciB8IHN0cmluZykge1xuICAgICAgICBpZiAodHlwZW9mIGNvZGUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm90ZSB3ZSBtdXN0IHVzZSBwYXJzZUludCBzbyB0cmFpbGluZyBwYXJhbWV0ZXJzIGFyZSBzdHJpcHBlZFxuICAgICAgICBjb25zdCBvcGNvZGUgPSBOdW1iZXIucGFyc2VJbnQoY29kZSk7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4ob3Bjb2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcGNvZGU7XG4gICAgfVxuXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGNvZGVzT2YoZGVmaW5pdGlvbj86IHN0cmluZyk6IChudW1iZXIgfCBzdHJpbmcpW10ge1xuICAgICAgICBkZWZpbml0aW9uID0gdGV4dE9mKGRlZmluaXRpb24pO1xuICAgICAgICBpZiAoZGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZmluaXRpb24gPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBbMF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJ0cyA9IGRlZmluaXRpb24uc3BsaXQoXCI7XCIpO1xuICAgICAgICBjb25zdCBjb2RlcyA9IEFycmF5PHN0cmluZyB8IG51bWJlcj4oKTtcbiAgICAgICAgbGV0IHBvcyA9IDA7XG4gICAgICAgIHdoaWxlIChwb3MgPCBwYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnQgPSBwYXJ0c1twb3NdO1xuICAgICAgICAgICAgY29uc3Qgb3Bjb2RlID0gb3Bjb2RlT2YocGFydHNbcG9zXSk7XG4gICAgICAgICAgICBwb3MrKztcblxuICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIGhvdyBtYW55IGFyZ3VtZW50cyB0aGUgY29kZSBoYXMuICBXZSBlbmNvZGUgdGhlc2UgYXMgYSBzaW5nbGUgdW5pdFxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkUGFydHM7XG4gICAgICAgICAgICBzd2l0Y2ggKG9wY29kZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgU2dyT3Bjb2RlQmxvY2suZmcgKyBDb2xvci5leHRlbmRlZDpcbiAgICAgICAgICAgICAgICBjYXNlIFNnck9wY29kZUJsb2NrLmJnICsgQ29sb3IuZXh0ZW5kZWQ6XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAob3Bjb2RlT2YocGFydHNbcG9zXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRXh0ZW5kZWRDb2xvci5laWdodEJpdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZFBhcnRzID0gMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFeHRlbmRlZENvbG9yLnJnYjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZFBhcnRzID0gNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3Qgc3VyZSB3aGF0IHRvIG1ha2Ugb2YgdGhpczsganVzdCBncmFiIHRoZSB0d28gcHJlZml4IGNvZGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRQYXJ0cyA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRQYXJ0cyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTdG9yZSB0aGUgb3JpZ2luYWwgY29kZSBhcyBhIG51bWJlciBpZiBpdCBpcyBlbmNvZGVkIGFzIGFuIGludGVnZXIgd2l0aG91dCBhcmd1bWVudHNcbiAgICAgICAgICAgIGxldCBiYXNlQ29kZTogbnVtYmVyIHwgc3RyaW5nO1xuICAgICAgICAgICAgaWYgKG9wY29kZS50b1N0cmluZygpID09PSBwYXJ0KSB7XG4gICAgICAgICAgICAgICAgYmFzZUNvZGUgPSBvcGNvZGU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJhc2VDb2RlID0gcGFydDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQXJndW1lbnRzIG1heSBiZSBlbmNvZGVkIGluIGEgc2luZ2xlIGNvZGUgd2l0aCBcIjpcIiBhcyBzZXBhcmF0b3IsIG9yIGFzIHNlcGFyYXRlIGNvZGVzIGlmIFwiO1wiIGlzXG4gICAgICAgICAgICAvLyB0aGUgc2VwYXJhdG9yLiAgVW5zdXJlIHdoZXJlIHdoaWNoIGlzIHN1cHBvcnRlZCBzbyB3ZSBqdXN0IGhhbmRsZSBib3RoXG4gICAgICAgICAgICBpZiAoZXhwZWN0ZWRQYXJ0cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVDb3VudCA9IHBhcnQuc3BsaXQoXCI6XCIpLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAoY29kZUNvdW50IDwgZXhwZWN0ZWRQYXJ0cykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBdCBsZWFzdCBzb21lIGFyZ3MgYXJlIGluIHN1YnNlcXVlbnQgY29kZXM7IGpvaW4gdGhlc2UgdG9nZXRoZXIgdXNpbmcgb3JpZ2luYWwgc2VwYXJhdG9yIHNvXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZXkgc2VyaWFsaXplIGluIG9yaWdpbmFsIGZvcm1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJnUGFydHMgPSBleHBlY3RlZFBhcnRzIC0gY29kZUNvdW50O1xuICAgICAgICAgICAgICAgICAgICBjb2Rlcy5wdXNoKFtiYXNlQ29kZSwgLi4ucGFydHMuc2xpY2UocG9zLCBwb3MgKyBhcmdQYXJ0cyldLmpvaW4oXCI7XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgcG9zICs9IGFyZ1BhcnRzO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE5vIGFyZ3Mgb3IgYWxsIGFyZ3MgZW5jb2RlZCB1c2luZyBcIjpcIiBzZXBhcmF0b3JcbiAgICAgICAgICAgIGNvZGVzLnB1c2goYmFzZUNvZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2RlcztcbiAgICB9XG5cbiAgICBleHBvcnQgZnVuY3Rpb24gdGV4dE9mKGRlZmluaXRpb24/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGRlZmluaXRpb24gPT09IHVuZGVmaW5lZCB8fCBkZWZpbml0aW9uID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBkZWZpbml0aW9uID0gZGVmaW5pdGlvbi50cmltKCk7XG4gICAgICAgIGlmIChkZWZpbml0aW9uWzBdID09PSBcIlxceDFiXCIgJiYgZGVmaW5pdGlvblsxXSA9PT0gXCJbXCIpIHtcbiAgICAgICAgICAgIGRlZmluaXRpb24gPSBkZWZpbml0aW9uLnNsaWNlKDIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWZpbml0aW9uW2RlZmluaXRpb24ubGVuZ3RoIC0gMV0gPT09IFwibVwiKSB7XG4gICAgICAgICAgICBkZWZpbml0aW9uID0gZGVmaW5pdGlvbi5zbGljZSgwLCBkZWZpbml0aW9uLmxlbmd0aCAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uO1xuICAgIH1cblxuICAgIGV4cG9ydCBmdW5jdGlvbiBkZWZpbml0aW9uT2YoZGVmaW5pdGlvbjogSW5wdXREZWZpbml0aW9uKTogRGVmaW5pdGlvbiB7XG4gICAgICAgIGlmIChkZWZpbml0aW9uICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGRlZmluaXRpb24gIT09IFwic3RyaW5nXCIgJiYgIUFycmF5LmlzQXJyYXkoZGVmaW5pdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZpbml0aW9uLnN0eWxlRGVmaW5pdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICB9XG5cbiAgICBkZWNsYXJlIGNvbnN0IEluaGVyaXQ6IFN0eWxlO1xuICAgIGRlY2xhcmUgY29uc3QgTm9uZTogU3R5bGU7XG59XG5cblN0eWxlLnByb3RvdHlwZSA9IHtcbiAgICBnZXQgc3R5bGVEZWZpbml0aW9uKCk6IFN0eWxlLkRlZmluaXRpb24ge1xuICAgICAgICBpZiAodGhpc1tjb2Rlc10gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbY29kZXNdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzW3RleHRdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzW3RleHRdO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIHNldCBzdHlsZURlZmluaXRpb24oZGVmaW5pdGlvbjogU3R5bGUuSW5wdXREZWZpbml0aW9uKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGVmaW5pdGlvbiA9PT0gXCJmdW5jdGlvblwiIHx8ICh0eXBlb2YgZGVmaW5pdGlvbiA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheShkZWZpbml0aW9uKSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVEZWZpbml0aW9uID0gZGVmaW5pdGlvbi5zdHlsZURlZmluaXRpb247XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGRlZmluaXRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHRoaXNbdGV4dF0gPSBTdHlsZS50ZXh0T2YoZGVmaW5pdGlvbik7XG4gICAgICAgICAgICB0aGlzW2NvZGVzXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXNbY29kZXNdID0gZGVmaW5pdGlvbjtcbiAgICAgICAgICAgIHRoaXNbdGV4dF0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgZ2V0IHN0eWxlQ29kZXMoKSB7XG4gICAgICAgIGlmICh0aGlzW2NvZGVzXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzW2NvZGVzXSA9IFN0eWxlLmNvZGVzT2YodGhpc1t0ZXh0XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNbY29kZXNdID8/IFtdO1xuICAgIH0sXG5cbiAgICBnZXQgc3R5bGVUb2tlbigpOiBUb2tlbiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiBcInN0eWxlXCIsXG5cbiAgICAgICAgICAgIC8vIERvIG5vdCB1c2UgdGhpcyBiZWNhdXNlIGV4dGVuc2lvbiB0b1N0cmluZygpIG1heSBub3QgZG8gdGhlIGNvcnJlY3QgdGhpbmdcbiAgICAgICAgICAgIHN0eWxlOiBTdHlsZSh0aGlzLnN0eWxlRGVmaW5pdGlvbiksXG4gICAgICAgIH07XG4gICAgfSxcblxuICAgIGdldCB1bmRvU3R5bGUoKSB7XG4gICAgICAgIGNvbnN0IGNvZGVzID0gQXJyYXk8bnVtYmVyPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvZGUgb2YgdGhpcy5zdHlsZUNvZGVzKSB7XG4gICAgICAgICAgICBjb25zdCBvcGNvZGUgPSBTdHlsZS5vcGNvZGVPZihjb2RlKTtcbiAgICAgICAgICAgIGlmIChvcGNvZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB1bmRvID0gU2dyT3Bjb2RlVG9VbmRvT3Bjb2RlW29wY29kZV07XG4gICAgICAgICAgICBpZiAodW5kbyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvZGVzLnB1c2godW5kbyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFN0eWxlKGNvZGVzKTtcbiAgICB9LFxuXG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIGNvbnN0IGNvZGVzID0gQXJyYXk8bnVtYmVyIHwgc3RyaW5nPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvZGUgb2YgdGhpcy5zdHlsZUNvZGVzKSB7XG4gICAgICAgICAgICBjb25zdCBvcGNvZGUgPSBTdHlsZS5vcGNvZGVPZihjb2RlKTtcbiAgICAgICAgICAgIGlmIChvcGNvZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb2Rlcy5wdXNoKGNvZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgXFx4MWJbJHtjb2Rlcy5qb2luKFwiO1wiKX1tYDtcbiAgICB9LFxuXG4gICAgYWRkU3R5bGU8VCBleHRlbmRzIFN0eWxlPih0aGlzOiBULCBjb2RlczogU3R5bGUuSW5wdXREZWZpbml0aW9uKTogVCB7XG4gICAgICAgIGxldCBjYXRlZ29yaWVzID0gQXJyYXk8bnVtYmVyIHwgc3RyaW5nPigpO1xuXG4gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NvcihjYXRlZ29yeTogU2dyQ2F0ZWdvcnksIGNvZGU6IG51bWJlciB8IHN0cmluZykge1xuICAgICAgICAgICAgaWYgKGNhdGVnb3J5ID09PSBTZ3JDYXRlZ29yeS5yZXNldCkge1xuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXMgPSBbU2dyT3Bjb2RlLnJlc2V0XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc1tjYXRlZ29yeV0gPSBjb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIG15IGNvZGVzXG4gICAgICAgIHRoaXMuZXZhbHVhdGVTdHlsZShwcm9jZXNzb3IpO1xuXG4gICAgICAgIC8vIE92ZXJ3cml0ZSB3aXRoIG5ldyBjb2Rlc1xuICAgICAgICBjb2RlcyA9IFN0eWxlLmRlZmluaXRpb25PZihjb2Rlcyk7XG4gICAgICAgIGlmIChjb2RlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBTdHlsZShjb2RlcykuZXZhbHVhdGVTdHlsZShwcm9jZXNzb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZmFjdG9yeShcbiAgICAgICAgICAgIGNhdGVnb3JpZXMuZmlsdGVyKGVudHJ5ID0+IGVudHJ5ICE9PSB1bmRlZmluZWQpLFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgKSBhcyBUO1xuICAgIH0sXG5cbiAgICBkaWZmU3R5bGU8VCBleHRlbmRzIFN0eWxlPih0aGlzOiBULCBvdGhlcjogU3R5bGUpOiBUIHtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBBcnJheTxudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAgICAgLy8gQ29sbGVjdCBjdXJyZW50IHN0eWxlcyBieSBjYXRlZ29yeS4gIFJlc2V0IGNsZWFycyBzdGF0ZVxuICAgICAgICB0aGlzLmV2YWx1YXRlU3R5bGUoKGNhdGVnb3J5OiBTZ3JDYXRlZ29yeSwgY29kZTogbnVtYmVyIHwgc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2F0ZWdvcnkgPT09IFNnckNhdGVnb3J5LnJlc2V0KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudCA9IFtdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50W2NhdGVnb3J5XSA9IGNvZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIENvbGxlY3QgdGFyZ2V0IHN0eWxlIGJ5IGNhdGVnb3J5LiAgUmVzZXQgY2xlYXJzIGN1cnJlbnQgKGJlY2F1c2UgaXRzIG5vIGxvbmdlciByZWxldmFudCkgYW5kIGFkZHMgdGhlXG4gICAgICAgIC8vIHJlc2V0IHdoaWNoIGFsd2F5cyBzZXJpYWxpemVzIGZpcnN0XG4gICAgICAgIGxldCB0YXJnZXQgPSBbLi4uY3VycmVudF07XG4gICAgICAgIG90aGVyLmV2YWx1YXRlU3R5bGUoKGNhdGVnb3J5LCBjb2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2F0ZWdvcnkgPT09IFNnckNhdGVnb3J5LnJlc2V0KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudCA9IFtdO1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IFtTZ3JDYXRlZ29yeS5yZXNldF07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRbY2F0ZWdvcnldID09PSBjb2RlKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2NhdGVnb3J5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2NhdGVnb3J5XSA9IGNvZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRhcmdldCBub3cgY29udGFpbnMgb25seSB0aG9zZSBjb2RlcyByZXF1aXJlZCB0byBwZXJmb3JtIHRyYW5zaXRpb25cbiAgICAgICAgcmV0dXJuIHRoaXMuZmFjdG9yeShcbiAgICAgICAgICAgIHRhcmdldC5maWx0ZXIoZW50cnkgPT4gZW50cnkgIT09IHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICApIGFzIFQ7XG4gICAgfSxcblxuICAgIGV2YWx1YXRlU3R5bGUocHJvY2Vzc29yOiAoY2F0ZWdvcnk6IFNnckNhdGVnb3J5LCBjb2RlOiBudW1iZXIgfCBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBjb2RlIG9mIHRoaXMuc3R5bGVDb2Rlcykge1xuICAgICAgICAgICAgY29uc3Qgb3Bjb2RlID0gU3R5bGUub3Bjb2RlT2YoY29kZSk7XG4gICAgICAgICAgICBpZiAob3Bjb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYXRlZ29yeSA9IFNnck9wY29kZVRvQ2F0ZWdvcnlbb3Bjb2RlXTtcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IoY2F0ZWdvcnksIGNvZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBnZXQgZmFjdG9yeSgpIHtcbiAgICAgICAgcmV0dXJuIFN0eWxlO1xuICAgIH0sXG5cbiAgICBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICAgICAgcmV0dXJuIFt7IGtpbmQ6IFwic3R5bGVcIiwgc3R5bGU6IHRoaXMgYXMgU3R5bGUgfSBzYXRpc2ZpZXMgVG9rZW5dW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgICB9LFxufSBzYXRpc2ZpZXMgUGljazxJbnRlcm5hbFN0eWxlLCBrZXlvZiBJbnRlcm5hbFN0eWxlPjtcblxuU3R5bGUuSW5oZXJpdCA9IFN0eWxlKCk7XG5TdHlsZS5Ob25lID0gU3R5bGUoWzBdKTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUFBLEVBQ0k7QUFBQSxF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
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/ansi-text/style.ts"],
4
+ "mappings": "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",
5
+ "names": ["Style", "codes"]
6
+ }
@@ -0,0 +1,78 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Producer } from "./producer.js";
7
+ import { Color, EightBitColor, RgbColor } from "./sgr.js";
8
+ import { Style } from "./style.js";
9
+ /**
10
+ * Convenience API for building ANSI text.
11
+ *
12
+ * Allows you to create ANSI escape sequences using e.g. `ansi.bright.yellow.bg.blue.blink`.
13
+ */
14
+ export interface TextBuilder extends Style {
15
+ (...text: Producer.Sequence): TextBuilder;
16
+ readonly state: TextBuilder.State;
17
+ readonly bg: TextBuilder;
18
+ readonly not: TextBuilder;
19
+ readonly reset: TextBuilder;
20
+ readonly bold: TextBuilder;
21
+ readonly dim: TextBuilder;
22
+ readonly bright: TextBuilder;
23
+ readonly italic: TextBuilder;
24
+ readonly underline: TextBuilder;
25
+ readonly doubleUnderline: TextBuilder;
26
+ readonly blink: TextBuilder;
27
+ readonly fastBlink: TextBuilder;
28
+ readonly invert: TextBuilder;
29
+ readonly conceal: TextBuilder;
30
+ readonly strike: TextBuilder;
31
+ readonly black: TextBuilder;
32
+ readonly red: TextBuilder;
33
+ readonly green: TextBuilder;
34
+ readonly yellow: TextBuilder;
35
+ readonly blue: TextBuilder;
36
+ readonly magenta: TextBuilder;
37
+ readonly cyan: TextBuilder;
38
+ readonly white: TextBuilder;
39
+ color(color: Color | EightBitColor | RgbColor): TextBuilder;
40
+ factory: TextBuilder.Factory;
41
+ }
42
+ export declare function TextBuilder(definition?: Style.InputDefinition | Style, derivesFrom?: Style, state?: TextBuilder.State): TextBuilder;
43
+ export declare namespace TextBuilder {
44
+ var prototype: any;
45
+ }
46
+ export declare namespace TextBuilder {
47
+ interface State {
48
+ /**
49
+ * If next build affects a color it will modify bg rather than fg.
50
+ */
51
+ readonly bg?: boolean;
52
+ /**
53
+ * If next build affects 8-bit color the color will render as bright.
54
+ */
55
+ readonly bright?: boolean;
56
+ /**
57
+ * If next build modifies ANSI styling its meaning is inverted.
58
+ */
59
+ readonly not?: boolean;
60
+ /**
61
+ * Serialization will include style reversion as the final token.
62
+ *
63
+ * Set after invoking builder as function, cleared when modifying style. This means that ansi.red("foo") is
64
+ * terminated but ansi.red("foo").green will render as a red "foo" and leave text styled green.
65
+ */
66
+ readonly revert?: boolean;
67
+ /**
68
+ * The serialization sequence. Populated by invoking builder as function.
69
+ */
70
+ readonly sequence?: Producer.Sequence;
71
+ }
72
+ type Factory = (definition?: Style.Definition | Style, derivesFrom?: Style, state?: TextBuilder.State) => TextBuilder;
73
+ }
74
+ /**
75
+ * Initial builder.
76
+ */
77
+ export declare const ansi: TextBuilder;
78
+ //# sourceMappingURL=text-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-builder.d.ts","sourceRoot":"","sources":["../../../src/ansi-text/text-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACH,KAAK,EACL,aAAa,EAEb,QAAQ,EAIX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,KAAK;IACtC,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC;IAE1C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;IAClC,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,GAAG,QAAQ,GAAG,WAAW,CAAC;IAE5D,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC;CAChC;AAED,wBAAgB,WAAW,CACvB,UAAU,CAAC,EAAE,KAAK,CAAC,eAAe,GAAG,KAAK,EAC1C,WAAW,CAAC,EAAE,KAAK,EACnB,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,eA4B5B;yBA/Be,WAAW;;;AAoK3B,yBAAiB,WAAW,CAAC;IACzB,UAAiB,KAAK;QAClB;;WAEG;QACH,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;QAEtB;;WAEG;QACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAE1B;;WAEG;QACH,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;QAEvB;;;;;WAKG;QACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAE1B;;WAEG;QACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC;KACzC;IAED,KAAY,OAAO,GAAG,CAClB,UAAU,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,EACrC,WAAW,CAAC,EAAE,KAAK,EACnB,KAAK,CAAC,EAAE,WAAW,CAAC,KAAK,KACxB,WAAW,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,aAAgB,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Producer } from "./producer.js";
7
+ import {
8
+ Color,
9
+ ExtendedColor,
10
+ SgrOpcode,
11
+ SgrOpcodeBlock,
12
+ SgrOpcodeToUndoOpcode
13
+ } from "./sgr.js";
14
+ import { Style } from "./style.js";
15
+ import { TextWriter } from "./text-writer.js";
16
+ function TextBuilder(definition, derivesFrom, state) {
17
+ if (derivesFrom instanceof TextBuilder) {
18
+ state = { ...derivesFrom.state, ...state };
19
+ } else if (state === void 0) {
20
+ state = {};
21
+ }
22
+ definition = Style.definitionOf(definition);
23
+ const self = function TextBuilderInstance(...text) {
24
+ const sequence = self.state.sequence ? [...self.state.sequence] : [];
25
+ if (self.styleDefinition?.length) {
26
+ sequence.push(self.styleToken);
27
+ }
28
+ sequence.push(...text);
29
+ return TextBuilder(self, self, { sequence, revert: true });
30
+ };
31
+ Object.setPrototypeOf(self, TextBuilder.prototype);
32
+ self.state = state;
33
+ if (definition !== void 0) {
34
+ self.styleDefinition = definition;
35
+ }
36
+ return self;
37
+ }
38
+ TextBuilder.prototype = Object.create(Style.prototype, {
39
+ bg: chmode({ bg: true }),
40
+ not: chmode({ not: true }),
41
+ bold: toggle("bold"),
42
+ dim: toggle("dim"),
43
+ bright: chmode({ bright: true }),
44
+ italic: toggle("italic"),
45
+ underline: toggle("underline"),
46
+ doubleUnderline: toggle("doubleUnderline"),
47
+ slowBlink: toggle("slowBlink"),
48
+ fastBlink: toggle("fastBlink"),
49
+ invert: toggle("invert"),
50
+ conceal: toggle("conceal"),
51
+ strike: toggle("strike"),
52
+ black: color("black"),
53
+ red: color("red"),
54
+ green: color("green"),
55
+ yellow: color("yellow"),
56
+ blue: color("blue"),
57
+ magenta: color("magenta"),
58
+ cyan: color("cyan"),
59
+ white: color("white"),
60
+ reset: {
61
+ get() {
62
+ return this.addStyle([0]);
63
+ }
64
+ },
65
+ color: {
66
+ value(color2) {
67
+ if (this.state.not) {
68
+ return this.addStyle([this.state.bg ? SgrOpcode.normalBg : SgrOpcode.normalFg]);
69
+ }
70
+ if (typeof color2 === "object") {
71
+ if ("color" in color2) {
72
+ return this.addStyle([Color.extended, ExtendedColor.eightBit, color2.color]);
73
+ }
74
+ return this.addStyle([Color.extended, ExtendedColor.rgb, color2.r ?? 0, color2.g ?? 0, color2.b ?? 0]);
75
+ }
76
+ const block = this.state.bg ? this.state.bright ? SgrOpcodeBlock.bgBright : SgrOpcodeBlock.bg : this.state.bright ? SgrOpcodeBlock.fgBright : SgrOpcodeBlock.fg;
77
+ return this.addStyle([block + color2]);
78
+ }
79
+ },
80
+ toString: {
81
+ value() {
82
+ let { sequence } = this.state;
83
+ if (!sequence) {
84
+ sequence = [this.styleToken];
85
+ }
86
+ if (this.state.revert) {
87
+ sequence = [...sequence, this.undoStyle.styleToken];
88
+ }
89
+ const parts = Array();
90
+ const writer = new TextWriter((part) => parts.push(part));
91
+ writer.write(...sequence);
92
+ writer.close();
93
+ return parts.join("");
94
+ }
95
+ },
96
+ [Symbol.iterator]: {
97
+ get() {
98
+ if (this.state.sequence === void 0) {
99
+ return {
100
+ next() {
101
+ return void 0;
102
+ },
103
+ done: true
104
+ };
105
+ }
106
+ let sequence = this.state.sequence;
107
+ if (this.state.revert) {
108
+ sequence = [...sequence, this.undoStyle.styleToken];
109
+ }
110
+ const iterable = Producer.of(sequence);
111
+ return iterable[Symbol.iterator].bind(iterable);
112
+ }
113
+ },
114
+ factory: {
115
+ value: TextBuilder
116
+ }
117
+ });
118
+ function chmode(state) {
119
+ return {
120
+ get() {
121
+ return TextBuilder(this, this, state);
122
+ }
123
+ };
124
+ }
125
+ function toggle(name) {
126
+ const on = SgrOpcode[name];
127
+ const off = SgrOpcodeToUndoOpcode[on];
128
+ if (off === void 0) {
129
+ throw new Error(`Can't toggle opcode ${on}`);
130
+ }
131
+ return {
132
+ get() {
133
+ return this.addStyle([this.state.not ? off : on]);
134
+ }
135
+ };
136
+ }
137
+ function color(color2) {
138
+ const opcode = Color[color2];
139
+ return {
140
+ get() {
141
+ return this.color(opcode);
142
+ }
143
+ };
144
+ }
145
+ const ansi = TextBuilder();
146
+ export {
147
+ TextBuilder,
148
+ ansi
149
+ };
150
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Fuc2ktdGV4dC90ZXh0LWJ1aWxkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIyLTIwMjQgTWF0dGVyLmpzIEF1dGhvcnNcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgUHJvZHVjZXIgfSBmcm9tIFwiLi9wcm9kdWNlci5qc1wiO1xuaW1wb3J0IHtcbiAgICBDb2xvcixcbiAgICBFaWdodEJpdENvbG9yLFxuICAgIEV4dGVuZGVkQ29sb3IsXG4gICAgUmdiQ29sb3IsXG4gICAgU2dyT3Bjb2RlLFxuICAgIFNnck9wY29kZUJsb2NrLFxuICAgIFNnck9wY29kZVRvVW5kb09wY29kZSxcbn0gZnJvbSBcIi4vc2dyLmpzXCI7XG5pbXBvcnQgeyBTdHlsZSB9IGZyb20gXCIuL3N0eWxlLmpzXCI7XG5pbXBvcnQgeyBUZXh0V3JpdGVyIH0gZnJvbSBcIi4vdGV4dC13cml0ZXIuanNcIjtcblxuLyoqXG4gKiBDb252ZW5pZW5jZSBBUEkgZm9yIGJ1aWxkaW5nIEFOU0kgdGV4dC5cbiAqXG4gKiBBbGxvd3MgeW91IHRvIGNyZWF0ZSBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMgdXNpbmcgZS5nLiBgYW5zaS5icmlnaHQueWVsbG93LmJnLmJsdWUuYmxpbmtgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRleHRCdWlsZGVyIGV4dGVuZHMgU3R5bGUge1xuICAgICguLi50ZXh0OiBQcm9kdWNlci5TZXF1ZW5jZSk6IFRleHRCdWlsZGVyO1xuXG4gICAgcmVhZG9ubHkgc3RhdGU6IFRleHRCdWlsZGVyLlN0YXRlO1xuICAgIHJlYWRvbmx5IGJnOiBUZXh0QnVpbGRlcjtcbiAgICByZWFkb25seSBub3Q6IFRleHRCdWlsZGVyO1xuICAgIHJlYWRvbmx5IHJlc2V0OiBUZXh0QnVpbGRlcjtcbiAgICByZWFkb25seSBib2xkOiBUZXh0QnVpbGRlcjtcbiAgICByZWFkb25seSBkaW06IFRleHRCdWlsZGVyO1xuICAgIHJlYWRvbmx5IGJyaWdodDogVGV4dEJ1aWxkZXI7XG4gICAgcmVhZG9ubHkgaXRhbGljOiBUZXh0QnVpbGRlcjtcbiAgICByZWFkb25seSB1bmRlcmxpbmU6IFRleHRCdWlsZGVyO1xuICAgIHJlYWRvbmx5IGRvdWJsZVVuZGVybGluZTogVGV4dEJ1aWxkZXI7XG4gICAgcmVhZG9ubHkgYmxpbms6IFRleHRCdWlsZGVyO1xuICAgIHJlYWRvbmx5IGZhc3RCbGluazogVGV4dEJ1aWxkZXI7XG4gICAgcmVhZG9ubHkgaW52ZXJ0OiBUZXh0QnVpbGRlcjtcbiAgICByZWFkb25seSBjb25jZWFsOiBUZXh0QnVpbGRlcjtcbiAgICByZWFkb25seSBzdHJpa2U6IFRleHRCdWlsZGVyO1xuICAgIHJlYWRvbmx5IGJsYWNrOiBUZXh0QnVpbGRlcjtcbiAgICByZWFkb25seSByZWQ6IFRleHRCdWlsZGVyO1xuICAgIHJlYWRvbmx5IGdyZWVuOiBUZXh0QnVpbGRlcjtcbiAgICByZWFkb25seSB5ZWxsb3c6IFRleHRCdWlsZGVyO1xuICAgIHJlYWRvbmx5IGJsdWU6IFRleHRCdWlsZGVyO1xuICAgIHJlYWRvbmx5IG1hZ2VudGE6IFRleHRCdWlsZGVyO1xuICAgIHJlYWRvbmx5IGN5YW46IFRleHRCdWlsZGVyO1xuICAgIHJlYWRvbmx5IHdoaXRlOiBUZXh0QnVpbGRlcjtcbiAgICBjb2xvcihjb2xvcjogQ29sb3IgfCBFaWdodEJpdENvbG9yIHwgUmdiQ29sb3IpOiBUZXh0QnVpbGRlcjtcblxuICAgIGZhY3Rvcnk6IFRleHRCdWlsZGVyLkZhY3Rvcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUZXh0QnVpbGRlcihcbiAgICBkZWZpbml0aW9uPzogU3R5bGUuSW5wdXREZWZpbml0aW9uIHwgU3R5bGUsXG4gICAgZGVyaXZlc0Zyb20/OiBTdHlsZSxcbiAgICBzdGF0ZT86IFRleHRCdWlsZGVyLlN0YXRlLFxuKSB7XG4gICAgaWYgKGRlcml2ZXNGcm9tIGluc3RhbmNlb2YgVGV4dEJ1aWxkZXIpIHtcbiAgICAgICAgc3RhdGUgPSB7IC4uLihkZXJpdmVzRnJvbSBhcyBUZXh0QnVpbGRlcikuc3RhdGUsIC4uLnN0YXRlIH07XG4gICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHN0YXRlID0ge307XG4gICAgfVxuXG4gICAgZGVmaW5pdGlvbiA9IFN0eWxlLmRlZmluaXRpb25PZihkZWZpbml0aW9uKTtcblxuICAgIGNvbnN0IHNlbGYgPSBmdW5jdGlvbiBUZXh0QnVpbGRlckluc3RhbmNlKC4uLnRleHQ6IFByb2R1Y2VyLlNlcXVlbmNlKSB7XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlID0gc2VsZi5zdGF0ZS5zZXF1ZW5jZSA/IFsuLi5zZWxmLnN0YXRlLnNlcXVlbmNlXSA6IFtdO1xuICAgICAgICBpZiAoc2VsZi5zdHlsZURlZmluaXRpb24/Lmxlbmd0aCkge1xuICAgICAgICAgICAgc2VxdWVuY2UucHVzaChzZWxmLnN0eWxlVG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIHNlcXVlbmNlLnB1c2goLi4udGV4dCk7XG4gICAgICAgIHJldHVybiBUZXh0QnVpbGRlcihzZWxmLCBzZWxmLCB7IHNlcXVlbmNlLCByZXZlcnQ6IHRydWUgfSk7XG4gICAgfSBhcyBUZXh0QnVpbGRlcjtcblxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihzZWxmLCBUZXh0QnVpbGRlci5wcm90b3R5cGUpO1xuXG4gICAgKHNlbGYgYXMgYW55KS5zdGF0ZSA9IHN0YXRlO1xuXG4gICAgaWYgKGRlZmluaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZWxmLnN0eWxlRGVmaW5pdGlvbiA9IGRlZmluaXRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGY7XG59XG5cblRleHRCdWlsZGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3R5bGUucHJvdG90eXBlLCB7XG4gICAgYmc6IGNobW9kZSh7IGJnOiB0cnVlIH0pLFxuICAgIG5vdDogY2htb2RlKHsgbm90OiB0cnVlIH0pLFxuICAgIGJvbGQ6IHRvZ2dsZShcImJvbGRcIiksXG4gICAgZGltOiB0b2dnbGUoXCJkaW1cIiksXG4gICAgYnJpZ2h0OiBjaG1vZGUoeyBicmlnaHQ6IHRydWUgfSksXG4gICAgaXRhbGljOiB0b2dnbGUoXCJpdGFsaWNcIiksXG4gICAgdW5kZXJsaW5lOiB0b2dnbGUoXCJ1bmRlcmxpbmVcIiksXG4gICAgZG91YmxlVW5kZXJsaW5lOiB0b2dnbGUoXCJkb3VibGVVbmRlcmxpbmVcIiksXG4gICAgc2xvd0JsaW5rOiB0b2dnbGUoXCJzbG93QmxpbmtcIiksXG4gICAgZmFzdEJsaW5rOiB0b2dnbGUoXCJmYXN0QmxpbmtcIiksXG4gICAgaW52ZXJ0OiB0b2dnbGUoXCJpbnZlcnRcIiksXG4gICAgY29uY2VhbDogdG9nZ2xlKFwiY29uY2VhbFwiKSxcbiAgICBzdHJpa2U6IHRvZ2dsZShcInN0cmlrZVwiKSxcbiAgICBibGFjazogY29sb3IoXCJibGFja1wiKSxcbiAgICByZWQ6IGNvbG9yKFwicmVkXCIpLFxuICAgIGdyZWVuOiBjb2xvcihcImdyZWVuXCIpLFxuICAgIHllbGxvdzogY29sb3IoXCJ5ZWxsb3dcIiksXG4gICAgYmx1ZTogY29sb3IoXCJibHVlXCIpLFxuICAgIG1hZ2VudGE6IGNvbG9yKFwibWFnZW50YVwiKSxcbiAgICBjeWFuOiBjb2xvcihcImN5YW5cIiksXG4gICAgd2hpdGU6IGNvbG9yKFwid2hpdGVcIiksXG5cbiAgICByZXNldDoge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMgYXMgVGV4dEJ1aWxkZXIpLmFkZFN0eWxlKFswXSk7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGNvbG9yOiB7XG4gICAgICAgIHZhbHVlKHRoaXM6IFRleHRCdWlsZGVyLCBjb2xvcjogQ29sb3IgfCBFaWdodEJpdENvbG9yIHwgUmdiQ29sb3IpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLm5vdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZFN0eWxlKFt0aGlzLnN0YXRlLmJnID8gU2dyT3Bjb2RlLm5vcm1hbEJnIDogU2dyT3Bjb2RlLm5vcm1hbEZnXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29sb3IgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoXCJjb2xvclwiIGluIGNvbG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZFN0eWxlKFtDb2xvci5leHRlbmRlZCwgRXh0ZW5kZWRDb2xvci5laWdodEJpdCwgY29sb3IuY29sb3JdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkU3R5bGUoW0NvbG9yLmV4dGVuZGVkLCBFeHRlbmRlZENvbG9yLnJnYiwgY29sb3IuciA/PyAwLCBjb2xvci5nID8/IDAsIGNvbG9yLmIgPz8gMF0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBibG9jayA9IHRoaXMuc3RhdGUuYmdcbiAgICAgICAgICAgICAgICA/IHRoaXMuc3RhdGUuYnJpZ2h0XG4gICAgICAgICAgICAgICAgICAgID8gU2dyT3Bjb2RlQmxvY2suYmdCcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgOiBTZ3JPcGNvZGVCbG9jay5iZ1xuICAgICAgICAgICAgICAgIDogdGhpcy5zdGF0ZS5icmlnaHRcbiAgICAgICAgICAgICAgICAgID8gU2dyT3Bjb2RlQmxvY2suZmdCcmlnaHRcbiAgICAgICAgICAgICAgICAgIDogU2dyT3Bjb2RlQmxvY2suZmc7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZFN0eWxlKFtibG9jayArIGNvbG9yXSk7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIHRvU3RyaW5nOiB7XG4gICAgICAgIHZhbHVlKHRoaXM6IFRleHRCdWlsZGVyKSB7XG4gICAgICAgICAgICBsZXQgeyBzZXF1ZW5jZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgIGlmICghc2VxdWVuY2UpIHtcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZSA9IFt0aGlzLnN0eWxlVG9rZW5dO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5yZXZlcnQpIHtcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZSA9IFsuLi5zZXF1ZW5jZSwgdGhpcy51bmRvU3R5bGUuc3R5bGVUb2tlbl07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgICAgICAgICBjb25zdCB3cml0ZXIgPSBuZXcgVGV4dFdyaXRlcihwYXJ0ID0+IHBhcnRzLnB1c2gocGFydCkpO1xuICAgICAgICAgICAgd3JpdGVyLndyaXRlKC4uLnNlcXVlbmNlKTtcbiAgICAgICAgICAgIHdyaXRlci5jbG9zZSgpO1xuXG4gICAgICAgICAgICByZXR1cm4gcGFydHMuam9pbihcIlwiKTtcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgW1N5bWJvbC5pdGVyYXRvcl06IHtcbiAgICAgICAgZ2V0KHRoaXM6IFRleHRCdWlsZGVyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5zZXF1ZW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICAgICAgZG9uZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHNlcXVlbmNlID0gdGhpcy5zdGF0ZS5zZXF1ZW5jZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLnJldmVydCkge1xuICAgICAgICAgICAgICAgIHNlcXVlbmNlID0gWy4uLnNlcXVlbmNlLCB0aGlzLnVuZG9TdHlsZS5zdHlsZVRva2VuXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGl0ZXJhYmxlID0gUHJvZHVjZXIub2Yoc2VxdWVuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0uYmluZChpdGVyYWJsZSk7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGZhY3Rvcnk6IHtcbiAgICAgICAgdmFsdWU6IFRleHRCdWlsZGVyLFxuICAgIH0sXG59KTtcblxuZnVuY3Rpb24gY2htb2RlKHN0YXRlPzogVGV4dEJ1aWxkZXIuU3RhdGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBnZXQodGhpczogVGV4dEJ1aWxkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBUZXh0QnVpbGRlcih0aGlzLCB0aGlzLCBzdGF0ZSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gdG9nZ2xlKG5hbWU6IGtleW9mIHR5cGVvZiBTZ3JPcGNvZGUpIHtcbiAgICBjb25zdCBvbiA9IFNnck9wY29kZVtuYW1lXTtcbiAgICBjb25zdCBvZmYgPSBTZ3JPcGNvZGVUb1VuZG9PcGNvZGVbb25dO1xuICAgIGlmIChvZmYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IHRvZ2dsZSBvcGNvZGUgJHtvbn1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXQodGhpczogVGV4dEJ1aWxkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZFN0eWxlKFt0aGlzLnN0YXRlLm5vdCA/IG9mZiA6IG9uXSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gY29sb3IoY29sb3I6IGtleW9mIHR5cGVvZiBDb2xvcikge1xuICAgIGNvbnN0IG9wY29kZSA9IENvbG9yW2NvbG9yXTtcbiAgICByZXR1cm4ge1xuICAgICAgICBnZXQodGhpczogVGV4dEJ1aWxkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbG9yKG9wY29kZSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBUZXh0QnVpbGRlciB7XG4gICAgZXhwb3J0IGludGVyZmFjZSBTdGF0ZSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBuZXh0IGJ1aWxkIGFmZmVjdHMgYSBjb2xvciBpdCB3aWxsIG1vZGlmeSBiZyByYXRoZXIgdGhhbiBmZy5cbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IGJnPzogYm9vbGVhbjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgbmV4dCBidWlsZCBhZmZlY3RzIDgtYml0IGNvbG9yIHRoZSBjb2xvciB3aWxsIHJlbmRlciBhcyBicmlnaHQuXG4gICAgICAgICAqL1xuICAgICAgICByZWFkb25seSBicmlnaHQ/OiBib29sZWFuO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBuZXh0IGJ1aWxkIG1vZGlmaWVzIEFOU0kgc3R5bGluZyBpdHMgbWVhbmluZyBpcyBpbnZlcnRlZC5cbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IG5vdD86IGJvb2xlYW47XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlcmlhbGl6YXRpb24gd2lsbCBpbmNsdWRlIHN0eWxlIHJldmVyc2lvbiBhcyB0aGUgZmluYWwgdG9rZW4uXG4gICAgICAgICAqXG4gICAgICAgICAqIFNldCBhZnRlciBpbnZva2luZyBidWlsZGVyIGFzIGZ1bmN0aW9uLCBjbGVhcmVkIHdoZW4gbW9kaWZ5aW5nIHN0eWxlLiAgVGhpcyBtZWFucyB0aGF0IGFuc2kucmVkKFwiZm9vXCIpIGlzXG4gICAgICAgICAqIHRlcm1pbmF0ZWQgYnV0IGFuc2kucmVkKFwiZm9vXCIpLmdyZWVuIHdpbGwgcmVuZGVyIGFzIGEgcmVkIFwiZm9vXCIgYW5kIGxlYXZlIHRleHQgc3R5bGVkIGdyZWVuLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhZG9ubHkgcmV2ZXJ0PzogYm9vbGVhbjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHNlcmlhbGl6YXRpb24gc2VxdWVuY2UuICBQb3B1bGF0ZWQgYnkgaW52b2tpbmcgYnVpbGRlciBhcyBmdW5jdGlvbi5cbiAgICAgICAgICovXG4gICAgICAgIHJlYWRvbmx5IHNlcXVlbmNlPzogUHJvZHVjZXIuU2VxdWVuY2U7XG4gICAgfVxuXG4gICAgZXhwb3J0IHR5cGUgRmFjdG9yeSA9IChcbiAgICAgICAgZGVmaW5pdGlvbj86IFN0eWxlLkRlZmluaXRpb24gfCBTdHlsZSxcbiAgICAgICAgZGVyaXZlc0Zyb20/OiBTdHlsZSxcbiAgICAgICAgc3RhdGU/OiBUZXh0QnVpbGRlci5TdGF0ZSxcbiAgICApID0+IFRleHRCdWlsZGVyO1xufVxuXG4vKipcbiAqIEluaXRpYWwgYnVpbGRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IGFuc2kgPSBUZXh0QnVpbGRlcigpO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLFNBQVMsZ0JBQWdCO0FBQ3pCO0FBQUEsRUFDSTtBQUFBLEVBRUE7QUFBQSxFQUVBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNHO0FBQ1AsU0FBUyxhQUFhO0FBQ3RCLFNBQVMsa0JBQWtCO0FBc0NwQixTQUFTLFlBQ1osWUFDQSxhQUNBLE9BQ0Y7QUFDRSxNQUFJLHVCQUF1QixhQUFhO0FBQ3BDLFlBQVEsRUFBRSxHQUFJLFlBQTRCLE9BQU8sR0FBRyxNQUFNO0FBQUEsRUFDOUQsV0FBVyxVQUFVLFFBQVc7QUFDNUIsWUFBUSxDQUFDO0FBQUEsRUFDYjtBQUVBLGVBQWEsTUFBTSxhQUFhLFVBQVU7QUFFMUMsUUFBTSxPQUFPLFNBQVMsdUJBQXVCLE1BQXlCO0FBQ2xFLFVBQU0sV0FBVyxLQUFLLE1BQU0sV0FBVyxDQUFDLEdBQUcsS0FBSyxNQUFNLFFBQVEsSUFBSSxD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
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/ansi-text/text-builder.ts"],
4
+ "mappings": "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",
5
+ "names": ["color"]
6
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2024 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Consumer } from "./consumer.js";
7
+ import { Producer } from "./producer.js";
8
+ /**
9
+ * Low-level text output with ANSI escape sequences, maintaining state regarding style and width of current line.
10
+ */
11
+ export declare class TextWriter implements Consumer {
12
+ #private;
13
+ tabWidth: number;
14
+ constructor(out: (text: string) => void, options?: Writer.Options);
15
+ get state(): Consumer.State;
16
+ write(...text: Producer.Sequence): void;
17
+ close(): void;
18
+ /**
19
+ * Reset styling.
20
+ */
21
+ reset(): void;
22
+ }
23
+ export declare namespace Writer {
24
+ interface Options {
25
+ tabWidth?: number;
26
+ terminalWidth?: number;
27
+ linePrefix?: string;
28
+ }
29
+ }
30
+ //# sourceMappingURL=text-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-writer.d.ts","sourceRoot":"","sources":["../../../src/ansi-text/text-writer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQzC;;GAEG;AACH,qBAAa,UAAW,YAAW,QAAQ;;IACvC,QAAQ,EAAE,MAAM,CAAC;gBAeL,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO;IAuMjE,IAAI,KAAK,mBAER;IAED,KAAK,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,QAAQ;IAMhC,KAAK;IAIL;;OAEG;IACH,KAAK;CAuGR;AAED,yBAAiB,MAAM,CAAC;IACpB,UAAiB,OAAO;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACvB;CACJ"}