@formant/formant-cli 0.2.0 → 0.3.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 +380 -116
- package/dist/commands/devices/streams.d.ts +3 -0
- package/dist/commands/devices/streams.js +71 -27
- package/dist/commands/devices/streams.js.map +1 -1
- package/dist/commands/ingest/batch.d.ts +21 -0
- package/dist/commands/ingest/batch.js +170 -0
- package/dist/commands/ingest/batch.js.map +1 -0
- package/dist/commands/ingest/bitset.d.ts +15 -0
- package/dist/commands/ingest/bitset.js +128 -0
- package/dist/commands/ingest/bitset.js.map +1 -0
- package/dist/commands/ingest/health.d.ts +15 -0
- package/dist/commands/ingest/health.js +94 -0
- package/dist/commands/ingest/health.js.map +1 -0
- package/dist/commands/ingest/image.d.ts +15 -0
- package/dist/commands/ingest/image.js +99 -0
- package/dist/commands/ingest/image.js.map +1 -0
- package/dist/commands/ingest/json.d.ts +16 -0
- package/dist/commands/ingest/json.js +92 -0
- package/dist/commands/ingest/json.js.map +1 -0
- package/dist/commands/ingest/numeric.d.ts +16 -0
- package/dist/commands/ingest/numeric.js +83 -0
- package/dist/commands/ingest/numeric.js.map +1 -0
- package/dist/commands/ingest/text.d.ts +16 -0
- package/dist/commands/ingest/text.js +80 -0
- package/dist/commands/ingest/text.js.map +1 -0
- package/dist/commands/ingest/video.d.ts +16 -0
- package/dist/commands/ingest/video.js +120 -0
- package/dist/commands/ingest/video.js.map +1 -0
- package/dist/commands/query/latest-values.d.ts +1 -0
- package/dist/commands/query/latest-values.js +41 -15
- package/dist/commands/query/latest-values.js.map +1 -1
- package/dist/help.js +103 -53
- package/dist/help.js.map +1 -1
- package/dist/lib/api.d.ts +1 -1
- package/dist/lib/api.js +3 -0
- package/dist/lib/api.js.map +1 -1
- package/oclif.manifest.json +1396 -590
- package/package.json +4 -1
|
@@ -8,7 +8,8 @@ Returns the most recent value for specified streams without needing to specify
|
|
|
8
8
|
a time range. Useful for checking current sensor readings.
|
|
9
9
|
|
|
10
10
|
Use --all-streams with a single device to automatically discover and query all
|
|
11
|
-
|
|
11
|
+
streams — both from the device configuration and from actual ingested data
|
|
12
|
+
(unconfigured streams included).`;
|
|
12
13
|
static examples = [
|
|
13
14
|
'<%= config.bin %> query latest-values --device <id> --stream battery_level',
|
|
14
15
|
'<%= config.bin %> query latest-values --device <id> --stream temperature --stream humidity',
|
|
@@ -17,7 +18,11 @@ configured streams from the device configuration.`;
|
|
|
17
18
|
];
|
|
18
19
|
static flags = {
|
|
19
20
|
'all-streams': Flags.boolean({
|
|
20
|
-
description: 'Query all
|
|
21
|
+
description: 'Query all streams for the device — from config and from ingested data (requires single --device)',
|
|
22
|
+
}),
|
|
23
|
+
days: Flags.integer({
|
|
24
|
+
default: 14,
|
|
25
|
+
description: 'How many days back to look for unconfigured streams when using --all-streams',
|
|
21
26
|
}),
|
|
22
27
|
device: Flags.string({
|
|
23
28
|
char: 'd',
|
|
@@ -34,32 +39,53 @@ configured streams from the device configuration.`;
|
|
|
34
39
|
static summary = 'Get latest stream values';
|
|
35
40
|
async run() {
|
|
36
41
|
let streamNames = this.flags.stream ?? [];
|
|
37
|
-
// If --all-streams, discover streams from
|
|
42
|
+
// If --all-streams, discover streams from both config and ingested data
|
|
38
43
|
if (this.flags['all-streams']) {
|
|
39
44
|
if (this.flags.device.length !== 1) {
|
|
40
45
|
this.error('--all-streams requires exactly one --device');
|
|
41
46
|
}
|
|
42
47
|
const deviceId = this.flags.device[0];
|
|
43
|
-
|
|
48
|
+
const discovered = new Set();
|
|
49
|
+
// ── Config-based discovery ──────────────────────────────────────────────
|
|
44
50
|
const device = await this.api('admin', `devices/${deviceId}`, {
|
|
45
51
|
method: 'GET',
|
|
46
52
|
});
|
|
47
53
|
const configVersion = device.desiredConfigurationVersion;
|
|
48
|
-
if (
|
|
49
|
-
this.
|
|
54
|
+
if (configVersion) {
|
|
55
|
+
const config = await this.api('admin', `devices/${deviceId}/configurations/${configVersion}`, { method: 'GET' });
|
|
56
|
+
const doc = config.document;
|
|
57
|
+
const telemetry = doc?.telemetry;
|
|
58
|
+
const configStreams = telemetry?.streams || [];
|
|
59
|
+
for (const s of configStreams) {
|
|
60
|
+
const name = s.name;
|
|
61
|
+
if (name)
|
|
62
|
+
discovered.add(name);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// ── Data-based discovery (metadata endpoint) ───────────────────────────
|
|
66
|
+
const since = new Date();
|
|
67
|
+
since.setDate(since.getDate() - this.flags.days);
|
|
68
|
+
try {
|
|
69
|
+
const metaResult = await this.api('query', 'metadata', {
|
|
70
|
+
body: {
|
|
71
|
+
deviceIds: [deviceId],
|
|
72
|
+
start: since.toISOString(),
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
for (const item of metaResult?.items ?? []) {
|
|
76
|
+
if (item.name)
|
|
77
|
+
discovered.add(item.name);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// metadata endpoint failure is non-fatal
|
|
50
82
|
}
|
|
51
|
-
|
|
52
|
-
const config = await this.api('admin', `devices/${deviceId}/configurations/${configVersion}`, { method: 'GET' });
|
|
53
|
-
// Parse stream names from config
|
|
54
|
-
const doc = config.document;
|
|
55
|
-
const telemetry = doc?.telemetry;
|
|
56
|
-
const streams = telemetry?.streams || [];
|
|
57
|
-
streamNames = streams.map((s) => s.name).filter(Boolean);
|
|
83
|
+
streamNames = [...discovered];
|
|
58
84
|
if (streamNames.length === 0) {
|
|
59
|
-
this.error('No streams
|
|
85
|
+
this.error('No streams found for this device (neither configured nor in ingested data)');
|
|
60
86
|
}
|
|
61
87
|
if (!this.jsonEnabled()) {
|
|
62
|
-
this.log(`\nDiscovered ${streamNames.length} streams
|
|
88
|
+
this.log(`\nDiscovered ${streamNames.length} streams (config + data, last ${this.flags.days}d).\n`);
|
|
63
89
|
}
|
|
64
90
|
}
|
|
65
91
|
if (streamNames.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"latest-values.js","sourceRoot":"","sources":["../../../src/commands/query/latest-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAc,WAAW,EAAC,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"latest-values.js","sourceRoot":"","sources":["../../../src/commands/query/latest-values.ts"],"names":[],"mappings":"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"}
|
package/dist/help.js
CHANGED
|
@@ -9,81 +9,131 @@ export default class FcliHelp extends Help {
|
|
|
9
9
|
██║ ╚██████╗███████╗██║
|
|
10
10
|
╚═╝ ╚═════╝╚══════╝╚═╝
|
|
11
11
|
|
|
12
|
+
ABOUT
|
|
13
|
+
Formant is a cloud platform for monitoring, operating, and analyzing robot fleets.
|
|
14
|
+
This CLI lets you interact with your robots, query telemetry data, trigger AI-powered
|
|
15
|
+
investigations, manage users and permissions, and automate fleet operations — all from
|
|
16
|
+
your terminal.
|
|
17
|
+
|
|
12
18
|
USAGE
|
|
13
19
|
$ fcli <command> [flags]
|
|
14
20
|
|
|
15
|
-
CONCEPTS
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
KEY CONCEPTS
|
|
22
|
+
Organization Your Formant account with users, devices, and settings
|
|
23
|
+
Device A robot, sensor, or IoT device in your fleet that sends telemetry
|
|
24
|
+
Event An important occurrence (alert, warning, error) emitted by a device
|
|
25
|
+
Signal A point of interest that triggers investigation or analysis
|
|
26
|
+
Investigation AI-powered workflow that analyzes device data and diagnoses issues
|
|
27
|
+
Stream Real-time telemetry data (battery, temperature, location, sensors)
|
|
28
|
+
Command Remote instruction sent to a device to perform an action
|
|
29
|
+
Fleet A logical group of devices (by location, type, or tags)
|
|
21
30
|
|
|
22
31
|
COMMANDS
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
org View and update your Formant organization
|
|
33
|
+
devices Create, list, tag, and manage robots/sensors in your fleet
|
|
34
|
+
events View and filter important events emitted by devices
|
|
35
|
+
query Retrieve historical telemetry data and latest sensor values
|
|
36
|
+
ingest Send telemetry data to devices via the Formant ingestion API
|
|
37
|
+
signals List, query, and analyze signals that trigger investigations
|
|
38
|
+
investigations Trigger, monitor, and analyze AI-powered diagnostic workflows
|
|
39
|
+
commands Send remote commands to devices and view command history
|
|
40
|
+
event-triggers Configure rules that automatically generate events and signals
|
|
41
|
+
users List and inspect users in your organization
|
|
42
|
+
fleets Manage device groups and organize your fleet
|
|
43
|
+
schedules Set up recurring tasks and one-time scheduled jobs
|
|
44
|
+
analytics Execute custom SQL queries against your analytics database
|
|
45
|
+
kv Store and retrieve metadata in the key-value store
|
|
35
46
|
help Display help for fcli
|
|
36
47
|
|
|
37
48
|
GLOBAL FLAGS
|
|
38
|
-
--dev Target the dev environment
|
|
39
|
-
--stage Target the stage environment
|
|
40
|
-
--json
|
|
41
|
-
-h, --help Show help for
|
|
49
|
+
--dev Target the dev environment (for testing)
|
|
50
|
+
--stage Target the stage environment (for staging)
|
|
51
|
+
--json Output raw JSON instead of formatted tables
|
|
52
|
+
-h, --help Show help for any command
|
|
42
53
|
|
|
43
54
|
AUTHENTICATION
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
55
|
+
Formant CLI uses service account credentials. Set these environment variables:
|
|
56
|
+
|
|
57
|
+
FORMANT_USER Your service account email (e.g., bot@org.iam.formant.io)
|
|
58
|
+
FORMANT_PASSWORD Your service account password
|
|
59
|
+
|
|
60
|
+
You can also create a .env file in your project directory with these values.
|
|
47
61
|
|
|
48
62
|
EXAMPLES
|
|
49
|
-
#
|
|
50
|
-
$ fcli
|
|
51
|
-
$ fcli
|
|
52
|
-
$ fcli devices config <device-id> --dev
|
|
63
|
+
# Organization management
|
|
64
|
+
$ fcli org get # View your org details
|
|
65
|
+
$ fcli org update --name "Acme Robotics" # Update org name
|
|
53
66
|
|
|
54
|
-
#
|
|
55
|
-
$ fcli
|
|
56
|
-
$ fcli
|
|
67
|
+
# Device management
|
|
68
|
+
$ fcli devices list --online # List all online devices
|
|
69
|
+
$ fcli devices list --tag location=warehouse # Filter by tags
|
|
70
|
+
$ fcli devices create --name "robot-001" # Create a new device
|
|
71
|
+
$ fcli devices tag <device-id> --key env --value prod # Add tags
|
|
72
|
+
$ fcli devices rename <device-id> --name "robot-new" # Rename a device
|
|
57
73
|
|
|
58
|
-
#
|
|
74
|
+
# Telemetry queries
|
|
59
75
|
$ fcli query --device <id> --stream battery_level --start 2026-01-01 --end 2026-01-02
|
|
76
|
+
$ fcli query latest-values --device <id> --stream battery_level
|
|
77
|
+
$ fcli devices streams <device-id> # List available streams
|
|
78
|
+
|
|
79
|
+
# Ingest telemetry data
|
|
80
|
+
$ fcli ingest numeric 42.5 --device <id> --stream battery_level
|
|
81
|
+
$ fcli ingest text "hello" --device <id> --stream status --tag env=prod
|
|
82
|
+
$ fcli ingest health operational --device <id> --stream health_status
|
|
83
|
+
$ fcli ingest batch --file payload.json # Batch ingest from file
|
|
84
|
+
|
|
85
|
+
# Events and monitoring
|
|
86
|
+
$ fcli events list --severity critical --limit 50 # View critical events
|
|
87
|
+
$ fcli events list --device <id> --start 2026-01-01 # Events for one device
|
|
88
|
+
$ fcli events get <event-id> # Get event details
|
|
89
|
+
|
|
90
|
+
# AI investigations
|
|
91
|
+
$ fcli investigations list # List all investigations
|
|
92
|
+
$ fcli investigations trigger <inv-id> <device-id> # Trigger an investigation
|
|
93
|
+
$ fcli investigations runs <inv-id> # View investigation runs
|
|
94
|
+
$ fcli investigations stats --start 2026-01-01 # Get investigation metrics
|
|
95
|
+
|
|
96
|
+
# Signals (investigation triggers)
|
|
97
|
+
$ fcli signals list --start 2026-01-01 --end 2026-02-01
|
|
98
|
+
$ fcli signals query --start 2026-01-01 # Query by time range
|
|
99
|
+
$ fcli signals count # Count signals by type
|
|
100
|
+
$ fcli signals get <signal-id> # Get signal details
|
|
101
|
+
|
|
102
|
+
# Remote commands
|
|
103
|
+
$ fcli commands list # List command templates
|
|
104
|
+
$ fcli commands for-device <device-id> # Commands for one device
|
|
105
|
+
$ fcli commands send <device-id> <template-id> --param speed=10
|
|
106
|
+
$ fcli commands history <device-id> # View command history
|
|
60
107
|
|
|
61
|
-
#
|
|
62
|
-
$ fcli
|
|
63
|
-
$ fcli
|
|
64
|
-
$ fcli signals get <signal-id> --trace --dev
|
|
108
|
+
# Event triggers (automation)
|
|
109
|
+
$ fcli event-triggers list # List all trigger rules
|
|
110
|
+
$ fcli event-triggers get <trigger-id> # View trigger details
|
|
65
111
|
|
|
66
|
-
#
|
|
67
|
-
$ fcli
|
|
68
|
-
$ fcli
|
|
69
|
-
$ fcli
|
|
112
|
+
# User and fleet management
|
|
113
|
+
$ fcli users list # List all users
|
|
114
|
+
$ fcli users get <user-id> # View user details
|
|
115
|
+
$ fcli fleets list # List device groups
|
|
116
|
+
$ fcli fleets get <fleet-id> # View fleet details
|
|
70
117
|
|
|
71
|
-
#
|
|
72
|
-
$ fcli
|
|
73
|
-
$ fcli
|
|
74
|
-
$ fcli commands send <device-id> <template-id> --param speed=5 --dev
|
|
118
|
+
# Analytics and data queries
|
|
119
|
+
$ fcli analytics tables # List available tables
|
|
120
|
+
$ fcli analytics query --sql "SELECT * FROM events LIMIT 10"
|
|
75
121
|
|
|
76
|
-
#
|
|
77
|
-
$ fcli
|
|
78
|
-
$ fcli
|
|
122
|
+
# Metadata storage
|
|
123
|
+
$ fcli kv list <device-id> # List all keys for device
|
|
124
|
+
$ fcli kv get <device-id> <key> # Get a value
|
|
125
|
+
$ fcli kv set <device-id> <key> <value> # Store a value
|
|
79
126
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
127
|
+
TIPS
|
|
128
|
+
• Use --json with any command to get machine-readable output for scripting
|
|
129
|
+
• Pipe output to jq for advanced JSON processing: fcli devices list --json | jq
|
|
130
|
+
• Set --dev or --stage to target non-production environments
|
|
131
|
+
• Use fcli <command> --help to see detailed help for any command
|
|
83
132
|
|
|
84
133
|
LEARN MORE
|
|
85
|
-
|
|
86
|
-
|
|
134
|
+
Documentation: https://formant.io/docs
|
|
135
|
+
Support: support@formant.io
|
|
136
|
+
GitHub: https://github.com/FormantIO/formant-cli
|
|
87
137
|
`;
|
|
88
138
|
this.log(output);
|
|
89
139
|
}
|
package/dist/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,IAAI;IACrB,KAAK,CAAC,YAAY;QACnC,MAAM,MAAM,GAAG;;qDAEkC,IAAI,CAAC,MAAM,CAAC,OAAO
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,IAAI;IACrB,KAAK,CAAC,YAAY;QACnC,MAAM,MAAM,GAAG;;qDAEkC,IAAI,CAAC,MAAM,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmIvE,CAAA;QAEG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAClB,CAAC;CACF"}
|
package/dist/lib/api.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Environment } from './config.js';
|
|
2
|
-
export type ApiTarget = 'admin' | 'query' | 'theopolis';
|
|
2
|
+
export type ApiTarget = 'admin' | 'ingest' | 'query' | 'theopolis';
|
|
3
3
|
interface RequestOptions {
|
|
4
4
|
body?: unknown;
|
|
5
5
|
method?: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT';
|
package/dist/lib/api.js
CHANGED
package/dist/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,OAAO,EAAC,MAAM,aAAa,CAAA;AACrD,OAAO,EAAC,KAAK,EAAC,MAAM,WAAW,CAAA;AAU/B,SAAS,YAAY,CAAC,GAAgB,EAAE,MAAiB;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACzB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,QAAQ,WAAW,CAAA;QACpC,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,QAAQ,aAAa,CAAA;QACtC,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO,GAAG,IAAI,CAAC,SAAS,MAAM,CAAA;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAgB,EAChB,MAAiB,EACjB,IAAY,EACZ,UAA0B,EAAE;IAE5B,MAAM,EAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAC,GAAG,OAAO,CAAA;IAC7D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IAE7B,IAAI,GAAG,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;IAChD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA;QACzC,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;IAChC,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;QAC3C,cAAc,EAAE,kBAAkB;KACnC,CAAA;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7C,OAAO;QACP,MAAM;KACP,CAAC,CAAA;IAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAC7B,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,MAAM,IAAI,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,wBAAwB;IACxB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,SAAc,CAAA;IAE7C,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAA;AAChC,CAAC"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,OAAO,EAAC,MAAM,aAAa,CAAA;AACrD,OAAO,EAAC,KAAK,EAAC,MAAM,WAAW,CAAA;AAU/B,SAAS,YAAY,CAAC,GAAgB,EAAE,MAAiB;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACzB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,QAAQ,WAAW,CAAA;QACpC,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,GAAG,IAAI,CAAC,QAAQ,YAAY,CAAA;QACrC,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,QAAQ,aAAa,CAAA;QACtC,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO,GAAG,IAAI,CAAC,SAAS,MAAM,CAAA;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAgB,EAChB,MAAiB,EACjB,IAAY,EACZ,UAA0B,EAAE;IAE5B,MAAM,EAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAC,GAAG,OAAO,CAAA;IAC7D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IAE7B,IAAI,GAAG,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAA;IAChD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA;QACzC,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;IAChC,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;QAC3C,cAAc,EAAE,kBAAkB;KACnC,CAAA;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7C,OAAO;QACP,MAAM;KACP,CAAC,CAAA;IAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAC7B,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,MAAM,IAAI,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,wBAAwB;IACxB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,SAAc,CAAA;IAE7C,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAA;AAChC,CAAC"}
|