@codluv/versionguard 0.3.0 → 0.5.0

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 (54) hide show
  1. package/dist/calver.d.ts +66 -22
  2. package/dist/calver.d.ts.map +1 -1
  3. package/dist/changelog.d.ts +52 -0
  4. package/dist/changelog.d.ts.map +1 -1
  5. package/dist/chunks/{index-BrZJDWya.js → index-CwOyEn5L.js} +904 -176
  6. package/dist/chunks/index-CwOyEn5L.js.map +1 -0
  7. package/dist/ckm/engine.d.ts +92 -0
  8. package/dist/ckm/engine.d.ts.map +1 -0
  9. package/dist/ckm/index.d.ts +32 -0
  10. package/dist/ckm/index.d.ts.map +1 -0
  11. package/dist/ckm/types.d.ts +168 -0
  12. package/dist/ckm/types.d.ts.map +1 -0
  13. package/dist/cli.d.ts.map +1 -1
  14. package/dist/cli.js +1333 -27
  15. package/dist/cli.js.map +1 -1
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/feedback/index.d.ts +1 -1
  18. package/dist/feedback/index.d.ts.map +1 -1
  19. package/dist/fix/index.d.ts +6 -1
  20. package/dist/fix/index.d.ts.map +1 -1
  21. package/dist/guard.d.ts +45 -1
  22. package/dist/guard.d.ts.map +1 -1
  23. package/dist/hooks.d.ts +14 -7
  24. package/dist/hooks.d.ts.map +1 -1
  25. package/dist/index.d.ts +4 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +38 -32
  28. package/dist/init-wizard.d.ts +68 -0
  29. package/dist/init-wizard.d.ts.map +1 -0
  30. package/dist/project-root.d.ts +74 -0
  31. package/dist/project-root.d.ts.map +1 -0
  32. package/dist/project.d.ts +23 -2
  33. package/dist/project.d.ts.map +1 -1
  34. package/dist/sources/git-tag.d.ts +29 -0
  35. package/dist/sources/git-tag.d.ts.map +1 -1
  36. package/dist/sources/json.d.ts +31 -0
  37. package/dist/sources/json.d.ts.map +1 -1
  38. package/dist/sources/regex.d.ts +30 -0
  39. package/dist/sources/regex.d.ts.map +1 -1
  40. package/dist/sources/resolve.d.ts +27 -8
  41. package/dist/sources/resolve.d.ts.map +1 -1
  42. package/dist/sources/toml.d.ts +36 -1
  43. package/dist/sources/toml.d.ts.map +1 -1
  44. package/dist/sources/utils.d.ts +73 -0
  45. package/dist/sources/utils.d.ts.map +1 -0
  46. package/dist/sources/version-file.d.ts +28 -1
  47. package/dist/sources/version-file.d.ts.map +1 -1
  48. package/dist/sources/yaml.d.ts +29 -0
  49. package/dist/sources/yaml.d.ts.map +1 -1
  50. package/dist/tag/index.d.ts.map +1 -1
  51. package/dist/types.d.ts +89 -4
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +3 -2
  54. package/dist/chunks/index-BrZJDWya.js.map +0 -1
package/dist/calver.d.ts CHANGED
@@ -1,9 +1,43 @@
1
1
  /**
2
2
  * Calendar version parsing, formatting, and comparison helpers.
3
3
  *
4
+ * @remarks
5
+ * Supports the full calver.org specification with all standard tokens:
6
+ * Year (`YYYY`, `YY`, `0Y`), Month (`MM`, `M`, `0M`), Week (`WW`, `0W`),
7
+ * Day (`DD`, `D`, `0D`), and Counter (`MICRO`/`PATCH`).
8
+ *
9
+ * `MICRO` is the CalVer-standard name for the counter segment.
10
+ * `PATCH` is accepted as a SemVer-familiar alias and behaves identically.
11
+ *
4
12
  * @packageDocumentation
5
13
  */
6
- import type { CalVer, CalVerFormat, ValidationResult } from './types';
14
+ import type { CalVer, CalVerFormat, SchemeRules, ValidationResult } from './types';
15
+ /**
16
+ * Validates that a CalVer format string is composed of valid tokens
17
+ * and follows structural rules.
18
+ *
19
+ * @remarks
20
+ * Structural rules enforced:
21
+ * - Must have at least 2 segments
22
+ * - First segment must be a year token
23
+ * - Week tokens and Month/Day tokens are mutually exclusive
24
+ * - Counter (MICRO/PATCH) can only appear as the last segment
25
+ *
26
+ * @param formatStr - Format string to validate.
27
+ * @returns `true` when the format is valid.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { isValidCalVerFormat } from 'versionguard';
32
+ *
33
+ * isValidCalVerFormat('YYYY.MM.MICRO'); // true
34
+ * isValidCalVerFormat('INVALID'); // false
35
+ * ```
36
+ *
37
+ * @public
38
+ * @since 0.3.0
39
+ */
40
+ export declare function isValidCalVerFormat(formatStr: string): formatStr is CalVerFormat;
7
41
  /**
8
42
  * Parsed token layout for a supported CalVer format string.
9
43
  *
@@ -15,11 +49,19 @@ export interface ParsedCalVerFormat {
15
49
  /**
16
50
  * Year token captured from the format string.
17
51
  */
18
- year: 'YYYY' | 'YY';
52
+ year: 'YYYY' | 'YY' | '0Y';
53
+ /**
54
+ * Month token captured from the format string when present.
55
+ *
56
+ * @defaultValue undefined
57
+ */
58
+ month?: 'MM' | 'M' | '0M';
19
59
  /**
20
- * Month token captured from the format string.
60
+ * Week token captured from the format string when present.
61
+ *
62
+ * @defaultValue undefined
21
63
  */
22
- month: 'MM' | 'M' | '0M';
64
+ week?: 'WW' | '0W';
23
65
  /**
24
66
  * Day token captured from the format string when present.
25
67
  *
@@ -27,18 +69,19 @@ export interface ParsedCalVerFormat {
27
69
  */
28
70
  day?: 'DD' | 'D' | '0D';
29
71
  /**
30
- * Patch token captured from the format string when present.
72
+ * Counter token captured from the format string when present.
73
+ * Both `MICRO` and `PATCH` map to the same numeric counter.
31
74
  *
32
75
  * @defaultValue undefined
33
76
  */
34
- patch?: 'PATCH';
77
+ counter?: 'MICRO' | 'PATCH';
35
78
  }
36
79
  /**
37
80
  * Breaks a CalVer format string into its component tokens.
38
81
  *
39
82
  * @remarks
40
83
  * This helper is used internally by parsing, formatting, and version generation helpers
41
- * to decide which date parts or patch counters are present in a given CalVer layout.
84
+ * to decide which date parts or counters are present in a given CalVer layout.
42
85
  *
43
86
  * @param calverFormat - Format string to inspect.
44
87
  * @returns The parsed token definition for the requested format.
@@ -47,8 +90,8 @@ export interface ParsedCalVerFormat {
47
90
  * ```ts
48
91
  * import { parseFormat } from 'versionguard';
49
92
  *
50
- * parseFormat('YYYY.MM.PATCH');
51
- * // => { year: 'YYYY', month: 'MM', patch: 'PATCH' }
93
+ * parseFormat('YYYY.MM.MICRO');
94
+ * // => { year: 'YYYY', month: 'MM', counter: 'MICRO' }
52
95
  * ```
53
96
  *
54
97
  * @public
@@ -92,7 +135,7 @@ export declare function getRegexForFormat(calverFormat: CalVerFormat): RegExp;
92
135
  * ```ts
93
136
  * import { parse } from 'versionguard';
94
137
  *
95
- * parse('2026.03.21', 'YYYY.0M.0D')?.month;
138
+ * parse('2026.3.0', 'YYYY.M.MICRO')?.month;
96
139
  * // => 3
97
140
  * ```
98
141
  *
@@ -111,20 +154,21 @@ export declare function parse(version: string, calverFormat: CalVerFormat): CalV
111
154
  * @param version - Version string to validate.
112
155
  * @param calverFormat - Format expected for the version string.
113
156
  * @param preventFutureDates - Whether future dates should be reported as errors.
157
+ * @param schemeRules - Optional scheme rules for modifier validation and segment count warnings.
114
158
  * @returns A validation result containing any discovered errors and the parsed version on success.
115
159
  *
116
160
  * @example
117
161
  * ```ts
118
162
  * import { validate } from 'versionguard';
119
163
  *
120
- * validate('2026.03.21', 'YYYY.0M.0D', false).valid;
164
+ * validate('2026.3.0', 'YYYY.M.MICRO', false).valid;
121
165
  * // => true
122
166
  * ```
123
167
  *
124
168
  * @public
125
169
  * @since 0.1.0
126
170
  */
127
- export declare function validate(version: string, calverFormat: CalVerFormat, preventFutureDates?: boolean): ValidationResult;
171
+ export declare function validate(version: string, calverFormat: CalVerFormat, preventFutureDates?: boolean, schemeRules?: SchemeRules): ValidationResult;
128
172
  /**
129
173
  * Formats a parsed CalVer object back into a version string.
130
174
  *
@@ -153,8 +197,8 @@ export declare function format(version: CalVer): string;
153
197
  * Creates the current CalVer string for a format.
154
198
  *
155
199
  * @remarks
156
- * This helper derives its values from the provided date and initializes any patch token to `0`.
157
- * It is useful for generating a same-day baseline before incrementing patch-based formats.
200
+ * This helper derives its values from the provided date and initializes any counter to `0`.
201
+ * It is useful for generating a same-day baseline before incrementing counter-based formats.
158
202
  *
159
203
  * @param calverFormat - Format to generate.
160
204
  * @param now - Date used as the source for year, month, and day values.
@@ -164,7 +208,7 @@ export declare function format(version: CalVer): string;
164
208
  * ```ts
165
209
  * import { getCurrentVersion } from 'versionguard';
166
210
  *
167
- * getCurrentVersion('YYYY.MM.PATCH', new Date('2026-03-21T00:00:00Z'));
211
+ * getCurrentVersion('YYYY.M.MICRO', new Date('2026-03-21T00:00:00Z'));
168
212
  * // => '2026.3.0'
169
213
  * ```
170
214
  *
@@ -176,8 +220,8 @@ export declare function getCurrentVersion(calverFormat: CalVerFormat, now?: Date
176
220
  * Compares two CalVer strings using a shared format.
177
221
  *
178
222
  * @remarks
179
- * Comparison is performed component-by-component in year, month, day, then patch order.
180
- * Missing day and patch values are treated as `0` during comparison.
223
+ * Comparison is performed component-by-component in year, month, day, then counter order.
224
+ * Missing day and counter values are treated as `0` during comparison.
181
225
  *
182
226
  * @param a - Left-hand version string.
183
227
  * @param b - Right-hand version string.
@@ -188,7 +232,7 @@ export declare function getCurrentVersion(calverFormat: CalVerFormat, now?: Date
188
232
  * ```ts
189
233
  * import { compare } from 'versionguard';
190
234
  *
191
- * compare('2026.03.2', '2026.03.1', 'YYYY.MM.PATCH');
235
+ * compare('2026.3.2', '2026.3.1', 'YYYY.M.MICRO');
192
236
  * // => 1
193
237
  * ```
194
238
  *
@@ -200,8 +244,8 @@ export declare function compare(a: string, b: string, calverFormat: CalVerFormat
200
244
  * Increments a CalVer string.
201
245
  *
202
246
  * @remarks
203
- * Patch-based formats increment the existing patch number. Formats without a patch token are
204
- * promoted to a patch-based output by appending `.PATCH` semantics with an initial value of `0`.
247
+ * Counter-based formats increment the existing counter. Formats without a counter are
248
+ * promoted to a counter-based output by appending `.MICRO` with an initial value of `0`.
205
249
  *
206
250
  * @param version - Current version string.
207
251
  * @param calverFormat - Format used to parse the current version.
@@ -211,7 +255,7 @@ export declare function compare(a: string, b: string, calverFormat: CalVerFormat
211
255
  * ```ts
212
256
  * import { increment } from 'versionguard';
213
257
  *
214
- * increment('2026.03.1', 'YYYY.MM.PATCH');
258
+ * increment('2026.3.1', 'YYYY.M.MICRO');
215
259
  * // => '2026.3.2'
216
260
  * ```
217
261
  *
@@ -234,7 +278,7 @@ export declare function increment(version: string, calverFormat: CalVerFormat):
234
278
  * ```ts
235
279
  * import { getNextVersions } from 'versionguard';
236
280
  *
237
- * getNextVersions('2026.03.1', 'YYYY.MM.PATCH').length;
281
+ * getNextVersions('2026.3.1', 'YYYY.M.MICRO').length;
238
282
  * // => 2
239
283
  * ```
240
284
  *
@@ -1 +1 @@
1
- {"version":3,"file":"calver.d.ts","sourceRoot":"","sources":["../src/calver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAmB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpB;;OAEG;IACH,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAEzB;;;;OAIG;IACH,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAExB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,kBAAkB,CAkB1E;AAuBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAIpE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAmChF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAC1B,kBAAkB,GAAE,OAAc,GACjC,gBAAgB,CA0ElB;AAcD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAa9C;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAkB5F;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CAiBhF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CAsB7E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAE5F"}
1
+ {"version":3,"file":"calver.d.ts","sourceRoot":"","sources":["../src/calver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EAEZ,WAAW,EAEX,gBAAgB,EACjB,MAAM,SAAS,CAAC;AA8BjB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,IAAI,YAAY,CAoBhF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAE3B;;;;OAIG;IACH,KAAK,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAE1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEnB;;;;OAIG;IACH,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;IAExB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,kBAAkB,CAoB1E;AAyCD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAKpE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAqDhF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAC1B,kBAAkB,GAAE,OAAc,EAClC,WAAW,CAAC,EAAE,WAAW,GACxB,gBAAgB,CA6GlB;AAgBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsB9C;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAY5F;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CAiBhF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,CAqB7E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAE5F"}
@@ -80,4 +80,56 @@ export declare function getLatestVersion(changelogPath: string): string | null;
80
80
  * ```
81
81
  */
82
82
  export declare function addVersionEntry(changelogPath: string, version: string, date?: string): void;
83
+ /**
84
+ * Detects whether a changelog has been mangled by Changesets.
85
+ *
86
+ * @remarks
87
+ * Changesets prepends version content above the Keep a Changelog preamble,
88
+ * producing `## 0.4.0` (no brackets, no date) before the "All notable changes"
89
+ * paragraph. This function detects that pattern.
90
+ *
91
+ * @param changelogPath - Path to the changelog file.
92
+ * @returns `true` when the changelog appears to be mangled by Changesets.
93
+ *
94
+ * @example
95
+ * ```ts
96
+ * import { isChangesetMangled } from 'versionguard';
97
+ *
98
+ * if (isChangesetMangled('CHANGELOG.md')) {
99
+ * fixChangesetMangling('CHANGELOG.md');
100
+ * }
101
+ * ```
102
+ *
103
+ * @public
104
+ * @since 0.4.0
105
+ */
106
+ export declare function isChangesetMangled(changelogPath: string): boolean;
107
+ /**
108
+ * Fixes a Changesets-mangled changelog into proper Keep a Changelog format.
109
+ *
110
+ * @remarks
111
+ * This function:
112
+ * 1. Extracts the version number and content prepended by Changesets
113
+ * 2. Converts Changesets section names (Minor Changes, Patch Changes) to
114
+ * Keep a Changelog names (Added, Fixed)
115
+ * 3. Strips commit hashes from entry lines
116
+ * 4. Adds the date and brackets to the version header
117
+ * 5. Inserts the entry after `## [Unreleased]` in the correct position
118
+ * 6. Restores the preamble to its proper location
119
+ *
120
+ * @param changelogPath - Path to the changelog file to fix.
121
+ * @param date - Release date in `YYYY-MM-DD` format.
122
+ * @returns `true` when the file was modified, `false` when no fix was needed.
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * import { fixChangesetMangling } from 'versionguard';
127
+ *
128
+ * const fixed = fixChangesetMangling('CHANGELOG.md');
129
+ * ```
130
+ *
131
+ * @public
132
+ * @since 0.4.0
133
+ */
134
+ export declare function fixChangesetMangling(changelogPath: string, date?: string): boolean;
83
135
  //# sourceMappingURL=changelog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../src/changelog.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,OAAc,EACtB,YAAY,GAAE,OAAc,GAC3B,yBAAyB,CAgD3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQrE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAA8C,GACnD,IAAI,CAmBN"}
1
+ {"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../src/changelog.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,OAAc,EACtB,YAAY,GAAE,OAAc,GAC3B,yBAAyB,CAgD3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQrE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAA8C,GACnD,IAAI,CAmBN;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAMjE;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,EACrB,IAAI,GAAE,MAA8C,GACnD,OAAO,CAoET"}