@substrat-run/connector-planima 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/mock.d.ts ADDED
@@ -0,0 +1,122 @@
1
+ import type { FetchLike } from '@substrat-run/kernel';
2
+ /**
3
+ * Planima in memory — the five reads the sweep makes, enough to run the whole inbound
4
+ * path without a provider account.
5
+ *
6
+ * **What a mock proves:** that our shape works — the bare-token header, the `page[…]`
7
+ * walk, the year window, the per-facility paging, the unchanged-hash skip, the
8
+ * rate-limit throttle. **What it cannot prove:** that our reading of Planima's API is
9
+ * correct. The mock IS our reading. Green here means *ready to check against a real
10
+ * account*, which is what `test/live.test.ts` does when a token is present.
11
+ *
12
+ * Three things it models strictly rather than conveniently, because each is a way a
13
+ * client can be wrong while every test passes:
14
+ *
15
+ * 1. **The `Authorization` header must be the bare token.** A `Bearer ` prefix is a 401
16
+ * here, as it is at Planima — a mock that accepted both would let the prefix ship.
17
+ * 2. **`page[limit]` is capped at 50 server-side, silently.** Asking for 500 returns 50
18
+ * and no error, so a client that trusts its own limit and stops after one page
19
+ * silently syncs a truncated plan.
20
+ * 3. **Nullable fields are sent as explicit `null`s**, not omitted. That is the
21
+ * distinction that broke `connector-fortnox` against a real company: `.optional()`
22
+ * permits an absent key while the provider sends a present null.
23
+ */
24
+ export interface PlanimaMockOptions {
25
+ token?: string;
26
+ organizations?: {
27
+ id: number;
28
+ name: string;
29
+ }[];
30
+ facilities?: MockFacility[];
31
+ buildings?: MockBuilding[];
32
+ components?: MockComponent[];
33
+ actions?: MockAction[];
34
+ /**
35
+ * Answer the first N requests with 429 and a `Retry-After`, then behave.
36
+ *
37
+ * Exists so a test can prove the client sits out a rate limit and completes, rather
38
+ * than surfacing the provider's backpressure as a failed sweep.
39
+ */
40
+ rateLimitFirst?: number;
41
+ retryAfterSeconds?: number;
42
+ }
43
+ export interface MockFacility {
44
+ id: number;
45
+ name: string;
46
+ organizationId: number;
47
+ address?: string | null;
48
+ zip_code?: string | null;
49
+ region?: string | null;
50
+ tags?: string[];
51
+ residential_area?: number | null;
52
+ non_residential_area?: number | null;
53
+ year_of_construction?: number | null;
54
+ description?: string | null;
55
+ }
56
+ export interface MockBuilding {
57
+ id: number;
58
+ name: string;
59
+ facility_id: number;
60
+ address?: string | null;
61
+ zip_code?: string | null;
62
+ region?: string | null;
63
+ year_of_construction?: number | null;
64
+ }
65
+ export interface MockComponent {
66
+ id: number;
67
+ name: string;
68
+ facility_id: number;
69
+ building_id?: number | null;
70
+ component?: string | null;
71
+ category?: string | null;
72
+ type?: string | null;
73
+ amount?: number | null;
74
+ unit?: string | null;
75
+ }
76
+ export interface MockAction {
77
+ id: number;
78
+ name: string;
79
+ facility_id: number;
80
+ year: number;
81
+ status: string;
82
+ amount?: number | null;
83
+ unit?: string | null;
84
+ unit_price?: number | null;
85
+ total_price?: number | null;
86
+ total_price_incl_vat?: number | null;
87
+ description?: string | null;
88
+ investment_rate?: number | null;
89
+ vat_rate?: number | null;
90
+ category?: string | null;
91
+ location?: string | null;
92
+ building?: string | null;
93
+ building_id?: number | null;
94
+ component_id?: number | null;
95
+ is_energy_saving?: boolean;
96
+ co2_equivalent?: number | null;
97
+ final_cost?: number | null;
98
+ tags?: string[];
99
+ project_id?: number | null;
100
+ }
101
+ export declare class PlanimaMock {
102
+ readonly apiBase = "https://api.planima.test";
103
+ private readonly token;
104
+ private readonly organizations;
105
+ private readonly facilities;
106
+ private readonly buildings;
107
+ private readonly components;
108
+ private readonly actions;
109
+ private readonly retryAfterSeconds;
110
+ /** Requests still to be answered with a 429, counting down. */
111
+ private rateLimited;
112
+ /** Every request path this mock served, in order — the assertion surface for paging. */
113
+ readonly requests: string[];
114
+ constructor(options?: PlanimaMockOptions);
115
+ /** Replace one action, so a test can make the plan change between sweeps. */
116
+ setAction(action: MockAction): void;
117
+ /** The `fetch` a `ConnectorConnection` is built around. */
118
+ get fetch(): FetchLike;
119
+ private facilityRow;
120
+ private actionRow;
121
+ }
122
+ //# sourceMappingURL=mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
package/dist/mock.js ADDED
@@ -0,0 +1,200 @@
1
+ import { PLANIMA_ACCEPT, PLANIMA_MAX_PAGE } from './api.js';
2
+ const json = (status, body, headers = {}) => {
3
+ const lower = new Map(Object.entries(headers).map(([k, v]) => [k.toLowerCase(), v]));
4
+ return {
5
+ ok: status >= 200 && status < 300,
6
+ status,
7
+ headers: { get: (name) => lower.get(name.toLowerCase()) ?? null },
8
+ text: async () => JSON.stringify(body),
9
+ };
10
+ };
11
+ export class PlanimaMock {
12
+ apiBase = 'https://api.planima.test';
13
+ token;
14
+ organizations;
15
+ facilities;
16
+ buildings;
17
+ components;
18
+ actions;
19
+ retryAfterSeconds;
20
+ /** Requests still to be answered with a 429, counting down. */
21
+ rateLimited;
22
+ /** Every request path this mock served, in order — the assertion surface for paging. */
23
+ requests = [];
24
+ constructor(options = {}) {
25
+ this.token = options.token ?? 'planima-test-token';
26
+ this.organizations = options.organizations ?? [{ id: 1, name: 'Bostads AB Exempel' }];
27
+ this.facilities = options.facilities ?? [];
28
+ this.buildings = options.buildings ?? [];
29
+ this.components = options.components ?? [];
30
+ this.actions = options.actions ?? [];
31
+ this.rateLimited = options.rateLimitFirst ?? 0;
32
+ this.retryAfterSeconds = options.retryAfterSeconds ?? 1;
33
+ }
34
+ /** Replace one action, so a test can make the plan change between sweeps. */
35
+ setAction(action) {
36
+ const i = this.actions.findIndex((a) => a.id === action.id);
37
+ if (i === -1)
38
+ this.actions.push(action);
39
+ else
40
+ this.actions[i] = action;
41
+ }
42
+ /** The `fetch` a `ConnectorConnection` is built around. */
43
+ get fetch() {
44
+ return (async (input, init) => {
45
+ const raw = typeof input === 'string' ? input : input.toString();
46
+ const url = new URL(raw);
47
+ this.requests.push(raw.slice(this.apiBase.length));
48
+ const headers = init?.headers ?? {};
49
+ const authorization = headerOf(headers, 'authorization');
50
+ const accept = headerOf(headers, 'accept');
51
+ // The bare token, exactly. `Bearer <token>` is a 401 here as it is at Planima —
52
+ // accepting both would let the prefix ship and fail on the first live call.
53
+ if (authorization !== this.token) {
54
+ return json(401, { error: 'Invalid API token' });
55
+ }
56
+ if (accept !== PLANIMA_ACCEPT) {
57
+ return json(406, { error: `Unsupported Accept header: ${String(accept)}` });
58
+ }
59
+ if (this.rateLimited > 0) {
60
+ this.rateLimited -= 1;
61
+ return json(429, { error: 'Rate limit exceeded' }, {
62
+ 'Retry-After': String(this.retryAfterSeconds),
63
+ 'RateLimit-Limit': '10',
64
+ 'RateLimit-Remaining': '0',
65
+ 'RateLimit-Reset': String(this.retryAfterSeconds),
66
+ });
67
+ }
68
+ const path = url.pathname;
69
+ // Silently capped, as Planima's is — a client that asks for 500 gets 50 and no
70
+ // hint that it was cut.
71
+ const limit = Math.min(Number(url.searchParams.get('page[limit]') ?? '20') || 20, PLANIMA_MAX_PAGE);
72
+ const offset = Number(url.searchParams.get('page[offset]') ?? '0') || 0;
73
+ if (path === '/organizations') {
74
+ return json(200, page(this.organizations.map(organizationRow), offset, limit));
75
+ }
76
+ if (path === '/facilities') {
77
+ const organizationId = url.searchParams.get('organization_id');
78
+ const rows = this.facilities
79
+ .filter((f) => organizationId === null || String(f.organizationId) === organizationId)
80
+ .map((f) => this.facilityRow(f));
81
+ return json(200, page(rows, offset, limit));
82
+ }
83
+ const buildingsMatch = /^\/facilities\/(\d+)\/buildings$/.exec(path);
84
+ if (buildingsMatch) {
85
+ const facilityId = Number(buildingsMatch[1]);
86
+ return json(200, page(this.buildings.filter((b) => b.facility_id === facilityId).map(buildingRow), offset, limit));
87
+ }
88
+ const componentsMatch = /^\/facilities\/(\d+)\/components$/.exec(path);
89
+ if (componentsMatch) {
90
+ const facilityId = Number(componentsMatch[1]);
91
+ return json(200, page(this.components.filter((c) => c.facility_id === facilityId).map(componentRow), offset, limit));
92
+ }
93
+ if (path === '/actions') {
94
+ const facilityId = url.searchParams.get('facility_id');
95
+ const startYear = url.searchParams.get('start_year');
96
+ const endYear = url.searchParams.get('end_year');
97
+ const rows = this.actions
98
+ .filter((a) => facilityId === null || String(a.facility_id) === facilityId)
99
+ .filter((a) => startYear === null || a.year >= Number(startYear))
100
+ .filter((a) => endYear === null || a.year <= Number(endYear))
101
+ .map((a) => this.actionRow(a));
102
+ return json(200, page(rows, offset, limit));
103
+ }
104
+ return json(404, { error: `No such Planima endpoint: ${path}` });
105
+ });
106
+ }
107
+ facilityRow(f) {
108
+ const organization = this.organizations.find((o) => o.id === f.organizationId);
109
+ return {
110
+ id: f.id,
111
+ name: f.name,
112
+ address: f.address ?? null,
113
+ zip_code: f.zip_code ?? null,
114
+ region: f.region ?? null,
115
+ tags: f.tags ?? [],
116
+ residential_area: f.residential_area ?? null,
117
+ non_residential_area: f.non_residential_area ?? null,
118
+ year_of_construction: f.year_of_construction ?? null,
119
+ description: f.description ?? null,
120
+ organization: organization ? organizationRow(organization) : null,
121
+ updated_at: '2026-01-15T10:00:00Z',
122
+ created_at: '2020-03-01T09:00:00Z',
123
+ };
124
+ }
125
+ actionRow(a) {
126
+ const facility = this.facilities.find((f) => f.id === a.facility_id);
127
+ return {
128
+ id: a.id,
129
+ name: a.name,
130
+ amount: a.amount ?? null,
131
+ unit: a.unit ?? null,
132
+ unit_price: a.unit_price ?? null,
133
+ total_price: a.total_price ?? null,
134
+ total_price_incl_vat: a.total_price_incl_vat ?? null,
135
+ year: a.year,
136
+ status: a.status,
137
+ description: a.description ?? null,
138
+ investment_rate: a.investment_rate ?? null,
139
+ vat_rate: a.vat_rate ?? null,
140
+ category: a.category ?? null,
141
+ location: a.location ?? null,
142
+ building: a.building ?? null,
143
+ building_id: a.building_id ?? null,
144
+ component_id: a.component_id ?? null,
145
+ is_energy_saving: a.is_energy_saving ?? false,
146
+ co2_equivalent: a.co2_equivalent ?? null,
147
+ final_cost: a.final_cost ?? null,
148
+ tags: a.tags ?? [],
149
+ facility: facility ? { id: facility.id, name: facility.name } : undefined,
150
+ project_id: a.project_id ?? null,
151
+ updated_at: '2026-02-01T08:30:00Z',
152
+ created_at: '2021-06-11T12:00:00Z',
153
+ };
154
+ }
155
+ }
156
+ const organizationRow = (o) => ({
157
+ id: o.id,
158
+ name: o.name,
159
+ facilities_url: `https://api.planima.test/facilities?organization_id=${o.id}`,
160
+ updated_at: '2026-01-02T00:00:00Z',
161
+ created_at: '2019-01-01T00:00:00Z',
162
+ });
163
+ const buildingRow = (b) => ({
164
+ id: b.id,
165
+ name: b.name,
166
+ address: b.address ?? null,
167
+ zip_code: b.zip_code ?? null,
168
+ region: b.region ?? null,
169
+ year_of_construction: b.year_of_construction ?? null,
170
+ facility_id: b.facility_id,
171
+ updated_at: '2026-01-10T00:00:00Z',
172
+ created_at: '2020-05-05T00:00:00Z',
173
+ });
174
+ const componentRow = (c) => ({
175
+ id: c.id,
176
+ name: c.name,
177
+ amount: c.amount ?? null,
178
+ building_id: c.building_id ?? null,
179
+ component: c.component ?? null,
180
+ unit: c.unit ?? null,
181
+ category: c.category ?? null,
182
+ type: c.type ?? null,
183
+ facility_id: c.facility_id,
184
+ updated_at: '2026-01-12T00:00:00Z',
185
+ created_at: '2020-05-06T00:00:00Z',
186
+ });
187
+ /** One page plus the metadata block, exactly as Planima wraps a list. */
188
+ const page = (rows, offset, limit) => ({
189
+ data: rows.slice(offset, offset + limit),
190
+ pagination: { total_count: rows.length, offset, limit },
191
+ });
192
+ /** Header lookup that does not care about case, as a real one would not. */
193
+ function headerOf(headers, name) {
194
+ for (const [k, v] of Object.entries(headers)) {
195
+ if (k.toLowerCase() === name)
196
+ return v;
197
+ }
198
+ return undefined;
199
+ }
200
+ //# sourceMappingURL=mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
package/dist/plan.d.ts ADDED
@@ -0,0 +1,141 @@
1
+ import { z } from 'zod';
2
+ import { moneyAmount } from '@substrat-run/contracts';
3
+ import type { PlanimaAction, PlanimaBuilding, PlanimaComponent, PlanimaFacility } from './api.js';
4
+ /**
5
+ * Provider rows → the neutral facts that cross into a scope.
6
+ *
7
+ * Two conversions happen here and nowhere else, and both are the kind of thing that is
8
+ * wrong forever if it is wrong once:
9
+ *
10
+ * 1. **Every number that is money becomes a decimal string.** Planima sends JSON
11
+ * numbers — `total_price: 125000.5` — and a JSON number is an IEEE double. Substrat
12
+ * money is decimal strings via `@substrat-run/contracts`, never floats (K-14), so
13
+ * the conversion belongs at the edge where the double arrives rather than in every
14
+ * consumer that later adds two of them up.
15
+ * 2. **`snake_case` becomes `camelCase`.** The provider's spelling stops at this file.
16
+ * A vertical reading `zip_code` off a payload has Planima's API shape leaking into
17
+ * its own vocabulary, and the day Planima renames a field, every consumer changes.
18
+ *
19
+ * What does NOT happen here is interpretation. A status stays whatever string arrived,
20
+ * a category stays a name, and nothing is mapped to a vertical's vocabulary — that is
21
+ * the consumer's layer, and a connector that did it would be a vertical wearing a
22
+ * connector's clothes.
23
+ */
24
+ /**
25
+ * A JSON number as a decimal string, at `moneyAmount`'s six-decimal ceiling.
26
+ *
27
+ * **It rounds, and that is a deliberate choice rather than an oversight.** `toFixed(6)`
28
+ * is half-away-from-zero at the sixth decimal, so `1.0000009` becomes `1.000001`. The
29
+ * alternative — refusing any value that does not round-trip — was considered and
30
+ * rejected, because it fails on data Planima legitimately sends: `investment_rate` is a
31
+ * computed fraction, and a third is `0.3333333333333333`. Refusing would take down a
32
+ * whole tenant's sync over a ratio, which is a far worse outcome than losing precision
33
+ * below the sixth decimal of a value that is either kronor (two decimals of real
34
+ * precision) or a ratio (where six is already more than anyone means).
35
+ *
36
+ * What that costs is worth naming: the rounded value is what lands AND what the content
37
+ * hash is computed over, so two plans differing only past the sixth decimal are one
38
+ * plan as far as this connector is concerned. For prices and ratios, they are.
39
+ *
40
+ * Trailing zeros are trimmed so `125000.50` and `125000.5` are the same string — the
41
+ * content hash is a change detector, and two spellings of one number would make an
42
+ * unchanged plan look changed on every sweep.
43
+ *
44
+ * Two inputs are refused rather than coerced, because both would produce a string that
45
+ * lies: a non-finite number has no decimal form at all, and `toFixed` switches to
46
+ * exponential notation at 1e21, which `moneyAmount`'s regex rejects downstream — far
47
+ * from here, with no clue which field caused it.
48
+ */
49
+ export declare function decimalOf(value: number, what: string): string;
50
+ /** A decimal string, in the same six-decimal shape money uses, for values that are not money. */
51
+ export declare const planimaDecimal: z.ZodString;
52
+ export declare const planimaFacilityFact: z.ZodObject<{
53
+ id: z.ZodNumber;
54
+ name: z.ZodString;
55
+ address: z.ZodNullable<z.ZodString>;
56
+ zipCode: z.ZodNullable<z.ZodString>;
57
+ region: z.ZodNullable<z.ZodString>;
58
+ tags: z.ZodArray<z.ZodString>;
59
+ residentialArea: z.ZodNullable<z.ZodString>;
60
+ nonResidentialArea: z.ZodNullable<z.ZodString>;
61
+ yearOfConstruction: z.ZodNullable<z.ZodNumber>;
62
+ description: z.ZodNullable<z.ZodString>;
63
+ }, z.core.$strip>;
64
+ export type PlanimaFacilityFact = z.infer<typeof planimaFacilityFact>;
65
+ export declare const planimaBuildingFact: z.ZodObject<{
66
+ id: z.ZodNumber;
67
+ facilityId: z.ZodNumber;
68
+ name: z.ZodString;
69
+ address: z.ZodNullable<z.ZodString>;
70
+ zipCode: z.ZodNullable<z.ZodString>;
71
+ region: z.ZodNullable<z.ZodString>;
72
+ yearOfConstruction: z.ZodNullable<z.ZodNumber>;
73
+ }, z.core.$strip>;
74
+ export type PlanimaBuildingFact = z.infer<typeof planimaBuildingFact>;
75
+ export declare const planimaComponentFact: z.ZodObject<{
76
+ id: z.ZodNumber;
77
+ facilityId: z.ZodNumber;
78
+ buildingId: z.ZodNullable<z.ZodNumber>;
79
+ name: z.ZodString;
80
+ component: z.ZodNullable<z.ZodString>;
81
+ category: z.ZodNullable<z.ZodString>;
82
+ type: z.ZodNullable<z.ZodString>;
83
+ amount: z.ZodNullable<z.ZodString>;
84
+ unit: z.ZodNullable<z.ZodString>;
85
+ }, z.core.$strip>;
86
+ export type PlanimaComponentFact = z.infer<typeof planimaComponentFact>;
87
+ export declare const planimaActionFact: z.ZodObject<{
88
+ id: z.ZodNumber;
89
+ facilityId: z.ZodNumber;
90
+ buildingId: z.ZodNullable<z.ZodNumber>;
91
+ componentId: z.ZodNullable<z.ZodNumber>;
92
+ projectId: z.ZodNullable<z.ZodNumber>;
93
+ name: z.ZodString;
94
+ year: z.ZodNumber;
95
+ status: z.ZodString;
96
+ description: z.ZodNullable<z.ZodString>;
97
+ amount: z.ZodNullable<z.ZodString>;
98
+ unit: z.ZodNullable<z.ZodString>;
99
+ unitPrice: z.ZodNullable<z.ZodObject<{
100
+ amount: z.core.$ZodBranded<z.ZodString, "MoneyAmount", "out">;
101
+ currency: z.core.$ZodBranded<z.ZodString, "CurrencyCode", "out">;
102
+ }, z.core.$strip>>;
103
+ totalPrice: z.ZodNullable<z.ZodObject<{
104
+ amount: z.core.$ZodBranded<z.ZodString, "MoneyAmount", "out">;
105
+ currency: z.core.$ZodBranded<z.ZodString, "CurrencyCode", "out">;
106
+ }, z.core.$strip>>;
107
+ totalPriceInclVat: z.ZodNullable<z.ZodObject<{
108
+ amount: z.core.$ZodBranded<z.ZodString, "MoneyAmount", "out">;
109
+ currency: z.core.$ZodBranded<z.ZodString, "CurrencyCode", "out">;
110
+ }, z.core.$strip>>;
111
+ finalCost: z.ZodNullable<z.ZodObject<{
112
+ amount: z.core.$ZodBranded<z.ZodString, "MoneyAmount", "out">;
113
+ currency: z.core.$ZodBranded<z.ZodString, "CurrencyCode", "out">;
114
+ }, z.core.$strip>>;
115
+ vatRate: z.ZodNullable<z.ZodString>;
116
+ investmentRate: z.ZodNullable<z.ZodString>;
117
+ isEnergySaving: z.ZodBoolean;
118
+ co2EquivalentKg: z.ZodNullable<z.ZodString>;
119
+ category: z.ZodNullable<z.ZodString>;
120
+ location: z.ZodNullable<z.ZodString>;
121
+ building: z.ZodNullable<z.ZodString>;
122
+ tags: z.ZodArray<z.ZodString>;
123
+ updatedAt: z.ZodNullable<z.ZodString>;
124
+ }, z.core.$strip>;
125
+ export type PlanimaActionFact = z.infer<typeof planimaActionFact>;
126
+ export declare const facilityFact: (row: PlanimaFacility) => PlanimaFacilityFact;
127
+ export declare const buildingFact: (row: PlanimaBuilding) => PlanimaBuildingFact;
128
+ export declare const componentFact: (row: PlanimaComponent) => PlanimaComponentFact;
129
+ export declare const actionFact: (row: PlanimaAction, currency: string) => PlanimaActionFact;
130
+ /**
131
+ * An action fact with the facility id filled in from the fetch that produced it.
132
+ *
133
+ * `Action.facility` is documented as present, but it is one optional nesting away from
134
+ * being absent, and a fact whose `facilityId` is `0` is worse than one that throws:
135
+ * it silently attaches a real action to a facility that does not exist. The caller
136
+ * always knows which facility it asked for, so it says so.
137
+ */
138
+ export declare const actionFactIn: (row: PlanimaAction, facilityId: number, currency: string) => PlanimaActionFact;
139
+ /** The moneyAmount brand, re-exported so a consumer can parse a bare amount without importing contracts twice. */
140
+ export { moneyAmount };
141
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAS,WAAW,EAAc,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAElG;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAY7D;AAeD,iGAAiG;AACjG,eAAO,MAAM,cAAc,aAA0C,CAAC;AAEtE,eAAO,MAAM,mBAAmB;;;;;;;;;;;iBAa9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,mBAAmB;;;;;;;;iBAQ9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAW/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwC5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAMlE,eAAO,MAAM,YAAY,QAAS,eAAe,KAAG,mBAWlD,CAAC;AAEH,eAAO,MAAM,YAAY,QAAS,eAAe,KAAG,mBAQlD,CAAC;AAEH,eAAO,MAAM,aAAa,QAAS,gBAAgB,KAAG,oBAUpD,CAAC;AAEH,eAAO,MAAM,UAAU,QAAS,aAAa,YAAY,MAAM,KAAG,iBA6BhE,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,QAAS,aAAa,cAAc,MAAM,YAAY,MAAM,KAAG,iBAGtF,CAAC;AAEH,kHAAkH;AAClH,OAAO,EAAE,WAAW,EAAE,CAAC"}