@enspirit/emb 0.7.0 → 0.8.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.
- package/README.md +1 -1
- package/dist/src/cli/abstract/BaseCommand.js +2 -7
- package/dist/src/cli/commands/images/push.d.ts +1 -1
- package/dist/src/cli/commands/images/push.js +1 -0
- package/dist/src/cli/utils.d.ts +1 -0
- package/dist/src/cli/utils.js +7 -0
- package/dist/src/config/schema.d.ts +8 -0
- package/dist/src/config/schema.json +13 -0
- package/dist/src/docker/compose/client.d.ts +2 -1
- package/dist/src/docker/compose/client.js +18 -11
- package/dist/src/monorepo/monorepo.d.ts +1 -1
- package/dist/src/monorepo/monorepo.js +2 -2
- package/dist/src/monorepo/operations/tasks/RunTasksOperation.d.ts +1 -0
- package/dist/src/monorepo/operations/tasks/RunTasksOperation.js +29 -8
- package/oclif.manifest.json +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import { DockerComposeClient, getContext, setContext } from '../../index.js';
|
|
2
|
-
import { Command
|
|
2
|
+
import { Command } from '@oclif/core';
|
|
3
3
|
import Dockerode from 'dockerode';
|
|
4
4
|
import { loadConfig } from '../../config/index.js';
|
|
5
5
|
import { Monorepo } from '../../monorepo/monorepo.js';
|
|
6
|
-
|
|
7
|
-
const marker = Performance.mark(owner, name);
|
|
8
|
-
const res = await cb();
|
|
9
|
-
marker?.stop();
|
|
10
|
-
return res;
|
|
11
|
-
};
|
|
6
|
+
import { withMarker } from '../utils.js';
|
|
12
7
|
export class BaseCommand extends Command {
|
|
13
8
|
context;
|
|
14
9
|
async init() {
|
|
@@ -4,7 +4,7 @@ export default class ImagesPush extends FlavoredCommand<typeof ImagesPush> {
|
|
|
4
4
|
static enableJsonFlag: boolean;
|
|
5
5
|
static examples: string[];
|
|
6
6
|
static flags: {
|
|
7
|
-
registry: import("@oclif/core/interfaces").OptionFlag<string
|
|
7
|
+
registry: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
8
|
retag: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
9
|
};
|
|
10
10
|
run(): Promise<void>;
|
package/dist/src/cli/utils.d.ts
CHANGED
package/dist/src/cli/utils.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Performance } from '@oclif/core';
|
|
1
2
|
const DATE_UNITS = {
|
|
2
3
|
day: 86_400,
|
|
3
4
|
hour: 3600,
|
|
@@ -24,3 +25,9 @@ export const getTimeAgo = (timestamp) => {
|
|
|
24
25
|
const { value, unit } = getUnitAndValueDate(secondsElapsed);
|
|
25
26
|
return rtf.format(value, unit);
|
|
26
27
|
};
|
|
28
|
+
export const withMarker = async (owner, name, cb) => {
|
|
29
|
+
const marker = Performance.mark(owner, name);
|
|
30
|
+
const res = await cb();
|
|
31
|
+
marker?.stop();
|
|
32
|
+
return res;
|
|
33
|
+
};
|
|
@@ -18,6 +18,14 @@ export type TaskConfig = TaskConfig1 & {
|
|
|
18
18
|
vars?: {
|
|
19
19
|
[k: string]: string;
|
|
20
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* Ask for user confirmation before running task
|
|
23
|
+
*/
|
|
24
|
+
confirm?: {
|
|
25
|
+
message: string;
|
|
26
|
+
expect?: string;
|
|
27
|
+
[k: string]: unknown;
|
|
28
|
+
};
|
|
21
29
|
};
|
|
22
30
|
export type TaskConfig1 = {
|
|
23
31
|
[k: string]: unknown;
|
|
@@ -143,6 +143,19 @@
|
|
|
143
143
|
"additionalProperties": {
|
|
144
144
|
"type": "string"
|
|
145
145
|
}
|
|
146
|
+
},
|
|
147
|
+
"confirm": {
|
|
148
|
+
"type": "object",
|
|
149
|
+
"description": "Ask for user confirmation before running task",
|
|
150
|
+
"required": ["message"],
|
|
151
|
+
"properties": {
|
|
152
|
+
"message": {
|
|
153
|
+
"type": "string"
|
|
154
|
+
},
|
|
155
|
+
"expect": {
|
|
156
|
+
"type": "string"
|
|
157
|
+
}
|
|
158
|
+
}
|
|
146
159
|
}
|
|
147
160
|
},
|
|
148
161
|
"additionalProperties": false
|
|
@@ -16,9 +16,10 @@ export type GetContainerOptions = {
|
|
|
16
16
|
export declare const DefaultGetContainerOptions: GetContainerOptions;
|
|
17
17
|
export declare class DockerComposeClient {
|
|
18
18
|
protected monorepo: Monorepo;
|
|
19
|
-
protected
|
|
19
|
+
protected services?: ComposeServices;
|
|
20
20
|
constructor(monorepo: Monorepo);
|
|
21
21
|
init(): Promise<void>;
|
|
22
|
+
isService(component: string): boolean | undefined;
|
|
22
23
|
getContainer(serviceName: string, options?: Partial<GetContainerOptions>): Promise<string>;
|
|
23
24
|
private loadContainers;
|
|
24
25
|
}
|
|
@@ -5,17 +5,20 @@ export const DefaultGetContainerOptions = {
|
|
|
5
5
|
};
|
|
6
6
|
export class DockerComposeClient {
|
|
7
7
|
monorepo;
|
|
8
|
-
|
|
8
|
+
services;
|
|
9
9
|
constructor(monorepo) {
|
|
10
10
|
this.monorepo = monorepo;
|
|
11
11
|
}
|
|
12
12
|
async init() {
|
|
13
13
|
await this.loadContainers();
|
|
14
14
|
}
|
|
15
|
+
isService(component) {
|
|
16
|
+
return this.services?.has(component);
|
|
17
|
+
}
|
|
15
18
|
async getContainer(serviceName, options = DefaultGetContainerOptions) {
|
|
16
19
|
const getOptions = { ...DefaultGetContainerOptions, ...options };
|
|
17
20
|
await this.loadContainers();
|
|
18
|
-
const service = this.
|
|
21
|
+
const service = this.services?.get(serviceName);
|
|
19
22
|
if (!service) {
|
|
20
23
|
throw new Error(`No compose service found with name ${serviceName}`);
|
|
21
24
|
}
|
|
@@ -31,25 +34,29 @@ export class DockerComposeClient {
|
|
|
31
34
|
return containers[0].ID;
|
|
32
35
|
}
|
|
33
36
|
async loadContainers(force = false) {
|
|
34
|
-
if (this.
|
|
37
|
+
if (this.services && !force) {
|
|
35
38
|
return;
|
|
36
39
|
}
|
|
40
|
+
const { stdout: servicesOutput } = await execa({
|
|
41
|
+
cwd: this.monorepo.rootDir,
|
|
42
|
+
}) `docker compose config --services`;
|
|
43
|
+
const services = servicesOutput
|
|
44
|
+
.split('\n')
|
|
45
|
+
.map((l) => l.trim())
|
|
46
|
+
.reduce((services, name) => {
|
|
47
|
+
services.set(name, { name, containers: [] });
|
|
48
|
+
return services;
|
|
49
|
+
}, new Map());
|
|
37
50
|
const { stdout } = await execa({
|
|
38
51
|
cwd: this.monorepo.rootDir,
|
|
39
52
|
}) `docker compose ps -a --format json`;
|
|
40
|
-
this.
|
|
53
|
+
this.services = stdout
|
|
41
54
|
.split('\n')
|
|
42
55
|
.map((l) => JSON.parse(l))
|
|
43
56
|
.reduce((services, entry) => {
|
|
44
|
-
if (!services.has(entry.Service)) {
|
|
45
|
-
services.set(entry.Service, {
|
|
46
|
-
name: entry.Service,
|
|
47
|
-
containers: [],
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
57
|
const svc = services.get(entry.Service);
|
|
51
58
|
svc?.containers.push(entry);
|
|
52
59
|
return services;
|
|
53
|
-
},
|
|
60
|
+
}, services);
|
|
54
61
|
}
|
|
55
62
|
}
|
|
@@ -25,7 +25,7 @@ export declare class Monorepo {
|
|
|
25
25
|
get resources(): Array<ResourceInfo>;
|
|
26
26
|
resource(nameOrId: string): ResourceInfo;
|
|
27
27
|
get vars(): Record<string, unknown>;
|
|
28
|
-
expand<T extends Expandable>(toExpand: T, expander?: TemplateExpander): Promise<T extends string ? string : T extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: /*elided*/ any; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: /*elided*/ any; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : T extends { readonly [K_2 in keyof T]: Expandable; } ? { readonly [K_3 in keyof T]: T[K_3] extends infer T_1 ? T_1 extends T[K_3] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: /*elided*/ any; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : T_1 extends { readonly [K_5 in keyof T_1]: Expandable; } ? { readonly [K_6 in keyof T_1]: T_1[K_6] extends infer T_2 ? T_2 extends T_1[K_6] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : T_2 extends { readonly [K_7 in keyof T_2]: Expandable; } ? { readonly [K_8 in keyof T_2]: T_2[K_8] extends infer T_3 ? T_3 extends T_2[K_8] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : T_3 extends { readonly [K_9 in keyof T_3]: Expandable; } ? { readonly [K_10 in keyof T_3]: T_3[K_10] extends infer T_4 ? T_4 extends T_3[K_10] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : T_4 extends { readonly [K_11 in keyof T_4]: Expandable; } ? { readonly [K_12 in keyof T_4]: T_4[K_12] extends infer T_5 ? T_5 extends T_4[K_12] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : T_5 extends { readonly [K_13 in keyof T_5]: Expandable; } ? { readonly [K_14 in keyof T_5]: T_5[K_14] extends infer T_6 ? T_6 extends T_5[K_14] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : U)[] : T_6 extends { readonly [K_15 in keyof T_6]: Expandable; } ? { readonly [K_16 in keyof T_6]: T_6[K_16] extends infer T_7 ? T_7 extends T_6[K_16] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_8 ? T_8 extends U[K_1] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_8 ? T_8 extends U[K_1] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : U)[] : T_7 extends { readonly [K_17 in keyof T_7]: Expandable; } ? { readonly [K_18 in keyof T_7]: T_7[K_18] extends infer T_8 ? T_8 extends T_7[K_18] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_9 ? T_9 extends U[K_1] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : U)[] : T_8 extends { readonly [K_19 in keyof T_8]: Expandable; } ? { readonly [K_20 in keyof T_8]: T_8[K_20] extends infer T_9 ? T_9 extends T_8[K_20] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : T_9 extends { readonly [K_21 in keyof T_9]: Expandable; } ? { readonly [K_22 in keyof T_9]: T_9[K_22] extends infer T_10 ? T_10 extends T_9[K_22] ? T_10 extends string ? string : T_10 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_10 extends { readonly [K_23 in keyof T_10]: Expandable; } ? { readonly [K_24 in keyof T_10]: /*elided*/ any; } : T_10 : never : never; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : T>;
|
|
28
|
+
expand<T extends Expandable>(toExpand: T, vars?: Record<string, unknown>, expander?: TemplateExpander): Promise<T extends string ? string : T extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: /*elided*/ any; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: /*elided*/ any; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_1 ? T_1 extends U[K_1] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_1 extends { readonly [K_3 in keyof T_1]: Expandable; } ? { readonly [K_4 in keyof T_1]: T_1[K_4] extends infer T_2 ? T_2 extends T_1[K_4] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : U)[] : T extends { readonly [K_2 in keyof T]: Expandable; } ? { readonly [K_3 in keyof T]: T[K_3] extends infer T_1 ? T_1 extends T[K_3] ? T_1 extends string ? string : T_1 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: /*elided*/ any; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_2 ? T_2 extends U[K_1] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_2 extends { readonly [K_5 in keyof T_2]: Expandable; } ? { readonly [K_6 in keyof T_2]: T_2[K_6] extends infer T_3 ? T_3 extends T_2[K_6] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : U)[] : T_1 extends { readonly [K_5 in keyof T_1]: Expandable; } ? { readonly [K_6 in keyof T_1]: T_1[K_6] extends infer T_2 ? T_2 extends T_1[K_6] ? T_2 extends string ? string : T_2 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: /*elided*/ any; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_3 ? T_3 extends U[K_1] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_3 extends { readonly [K_7 in keyof T_3]: Expandable; } ? { readonly [K_8 in keyof T_3]: T_3[K_8] extends infer T_4 ? T_4 extends T_3[K_8] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : U)[] : T_2 extends { readonly [K_7 in keyof T_2]: Expandable; } ? { readonly [K_8 in keyof T_2]: T_2[K_8] extends infer T_3 ? T_3 extends T_2[K_8] ? T_3 extends string ? string : T_3 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: /*elided*/ any; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_4 ? T_4 extends U[K_1] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_4 extends { readonly [K_9 in keyof T_4]: Expandable; } ? { readonly [K_10 in keyof T_4]: T_4[K_10] extends infer T_5 ? T_5 extends T_4[K_10] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : U)[] : T_3 extends { readonly [K_9 in keyof T_3]: Expandable; } ? { readonly [K_10 in keyof T_3]: T_3[K_10] extends infer T_4 ? T_4 extends T_3[K_10] ? T_4 extends string ? string : T_4 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: /*elided*/ any; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_5 ? T_5 extends U[K_1] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_5 extends { readonly [K_11 in keyof T_5]: Expandable; } ? { readonly [K_12 in keyof T_5]: T_5[K_12] extends infer T_6 ? T_6 extends T_5[K_12] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : U)[] : T_4 extends { readonly [K_11 in keyof T_4]: Expandable; } ? { readonly [K_12 in keyof T_4]: T_4[K_12] extends infer T_5 ? T_5 extends T_4[K_12] ? T_5 extends string ? string : T_5 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: /*elided*/ any; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_6 ? T_6 extends U[K_1] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_6 extends { readonly [K_13 in keyof T_6]: Expandable; } ? { readonly [K_14 in keyof T_6]: T_6[K_14] extends infer T_7 ? T_7 extends T_6[K_14] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : U)[] : T_5 extends { readonly [K_13 in keyof T_5]: Expandable; } ? { readonly [K_14 in keyof T_5]: T_5[K_14] extends infer T_6 ? T_6 extends T_5[K_14] ? T_6 extends string ? string : T_6 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: /*elided*/ any; } : T_7 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : T_7 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_7 ? T_7 extends U[K_1] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_7 extends { readonly [K_15 in keyof T_7]: Expandable; } ? { readonly [K_16 in keyof T_7]: T_7[K_16] extends infer T_8 ? T_8 extends T_7[K_16] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : U)[] : T_6 extends { readonly [K_15 in keyof T_6]: Expandable; } ? { readonly [K_16 in keyof T_6]: T_6[K_16] extends infer T_7 ? T_7 extends T_6[K_16] ? T_7 extends string ? string : T_7 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_8 ? T_8 extends U[K_1] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: /*elided*/ any; } : T_8 : never : never; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_8 ? T_8 extends U[K_1] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? /*elided*/ any : U)[] : T_8 extends { readonly [K_17 in keyof T_8]: Expandable; } ? { readonly [K_18 in keyof T_8]: T_8[K_18] extends infer T_9 ? T_9 extends T_8[K_18] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : T_8 : never : never; } : U)[] : T_7 extends { readonly [K_17 in keyof T_7]: Expandable; } ? { readonly [K_18 in keyof T_7]: T_7[K_18] extends infer T_8 ? T_8 extends T_7[K_18] ? T_8 extends string ? string : T_8 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: U[K_1] extends infer T_9 ? T_9 extends U[K_1] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_9 extends { readonly [K_19 in keyof T_9]: Expandable; } ? { readonly [K_20 in keyof T_9]: /*elided*/ any; } : T_9 : never : never; } : U)[] : T_8 extends { readonly [K_19 in keyof T_8]: Expandable; } ? { readonly [K_20 in keyof T_8]: T_8[K_20] extends infer T_9 ? T_9 extends T_8[K_20] ? T_9 extends string ? string : T_9 extends readonly (infer U)[] ? readonly (U extends string ? string : U extends readonly (infer U)[] ? readonly /*elided*/ any[] : U extends { readonly [K in keyof U]: Expandable; } ? { readonly [K_1 in keyof U]: /*elided*/ any; } : U)[] : T_9 extends { readonly [K_21 in keyof T_9]: Expandable; } ? { readonly [K_22 in keyof T_9]: T_9[K_22] extends infer T_10 ? T_10 extends T_9[K_22] ? T_10 extends string ? string : T_10 extends readonly (infer U)[] ? readonly /*elided*/ any[] : T_10 extends { readonly [K_23 in keyof T_10]: Expandable; } ? { readonly [K_24 in keyof T_10]: /*elided*/ any; } : T_10 : never : never; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : T>;
|
|
29
29
|
private installStore;
|
|
30
30
|
private installEnv;
|
|
31
31
|
init(): Promise<Monorepo>;
|
|
@@ -96,12 +96,12 @@ export class Monorepo {
|
|
|
96
96
|
return this._config.vars;
|
|
97
97
|
}
|
|
98
98
|
// Helper to expand a record of strings
|
|
99
|
-
async expand(toExpand, expander = new TemplateExpander()) {
|
|
99
|
+
async expand(toExpand, vars, expander = new TemplateExpander()) {
|
|
100
100
|
const options = {
|
|
101
101
|
default: 'vars',
|
|
102
102
|
sources: {
|
|
103
103
|
env: process.env,
|
|
104
|
-
vars: this.vars,
|
|
104
|
+
vars: vars || this.vars,
|
|
105
105
|
},
|
|
106
106
|
};
|
|
107
107
|
return expander.expandRecord(toExpand, options);
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { getContext } from '../../../index.js';
|
|
2
|
+
import { input } from '@inquirer/prompts';
|
|
3
|
+
import { ListrInquirerPromptAdapter } from '@listr2/prompt-adapter-inquirer';
|
|
4
|
+
import { Listr } from 'listr2';
|
|
2
5
|
import { PassThrough } from 'node:stream';
|
|
3
6
|
import { ContainerExecOperation } from '../../../docker/index.js';
|
|
4
|
-
import { EMBCollection, findRunOrder
|
|
7
|
+
import { EMBCollection, findRunOrder } from '../../index.js';
|
|
5
8
|
import { ExecuteLocalCommandOperation } from '../index.js';
|
|
6
9
|
export var ExecutorType;
|
|
7
10
|
(function (ExecutorType) {
|
|
@@ -10,7 +13,7 @@ export var ExecutorType;
|
|
|
10
13
|
})(ExecutorType || (ExecutorType = {}));
|
|
11
14
|
export class RunTasksOperation {
|
|
12
15
|
async run(params) {
|
|
13
|
-
const { monorepo } = getContext();
|
|
16
|
+
const { monorepo, compose } = getContext();
|
|
14
17
|
// First ensure the selection is valid (user can use task IDs or names)
|
|
15
18
|
const collection = new EMBCollection(monorepo.tasks, {
|
|
16
19
|
idField: 'id',
|
|
@@ -19,8 +22,7 @@ export class RunTasksOperation {
|
|
|
19
22
|
const ordered = findRunOrder(params.tasks, collection, {
|
|
20
23
|
onAmbiguous: params.allMatching ? 'runAll' : 'error',
|
|
21
24
|
});
|
|
22
|
-
const
|
|
23
|
-
manager.add(ordered.map((task) => {
|
|
25
|
+
const tasks = new Listr(ordered.map((task) => {
|
|
24
26
|
return {
|
|
25
27
|
rendererOptions: {
|
|
26
28
|
persistentOutput: true,
|
|
@@ -29,10 +31,29 @@ export class RunTasksOperation {
|
|
|
29
31
|
if (!task.script) {
|
|
30
32
|
return;
|
|
31
33
|
}
|
|
34
|
+
const vars = await monorepo.expand(task.vars || {});
|
|
32
35
|
const executor = params.executor ??
|
|
33
|
-
(task.component
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
(task.component
|
|
37
|
+
? compose.isService(task.component)
|
|
38
|
+
? ExecutorType.container
|
|
39
|
+
: ExecutorType.local
|
|
40
|
+
: ExecutorType.local);
|
|
41
|
+
if (executor === ExecutorType.container &&
|
|
42
|
+
(!task.component || !compose.isService(task.component))) {
|
|
43
|
+
throw new Error('Cannot use the container executor with this task');
|
|
44
|
+
}
|
|
45
|
+
// Handle tasks that require confirmation
|
|
46
|
+
if (task.confirm) {
|
|
47
|
+
const expected = await monorepo.expand(task.confirm.expect || 'yes', vars);
|
|
48
|
+
const message = await monorepo.expand(task.confirm.message, vars);
|
|
49
|
+
const res = await listrTask
|
|
50
|
+
.prompt(ListrInquirerPromptAdapter)
|
|
51
|
+
.run(input, {
|
|
52
|
+
message: `${message} (type '${expected}' to continue)`,
|
|
53
|
+
});
|
|
54
|
+
if (res !== expected) {
|
|
55
|
+
throw new Error('Task canceled');
|
|
56
|
+
}
|
|
36
57
|
}
|
|
37
58
|
const tee = new PassThrough();
|
|
38
59
|
const logFile = await monorepo.store.createWriteStream(`logs/tasks/${task.id}.logs`);
|
|
@@ -53,7 +74,7 @@ export class RunTasksOperation {
|
|
|
53
74
|
title: `Running ${task.id}`,
|
|
54
75
|
};
|
|
55
76
|
}));
|
|
56
|
-
await
|
|
77
|
+
await tasks.run();
|
|
57
78
|
return ordered;
|
|
58
79
|
}
|
|
59
80
|
async runDocker(task, out) {
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enspirit/emb",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.8.1",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"monorepo",
|
|
7
7
|
"docker",
|
|
@@ -59,6 +59,8 @@
|
|
|
59
59
|
"find-up": "^7.0.0",
|
|
60
60
|
"glob": "^11.0.3",
|
|
61
61
|
"graphlib": "^2.1.8",
|
|
62
|
+
"@inquirer/prompts": "^7.8.3",
|
|
63
|
+
"@listr2/prompt-adapter-inquirer": "^3.0.2",
|
|
62
64
|
"listr2": "^9.0.1",
|
|
63
65
|
"luxon": "^3.7.1",
|
|
64
66
|
"protobufjs": "^7.5.3",
|