ssh-picker 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,25 +1,165 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo, useState } from 'react';
2
+ import { useEffect, useMemo, useState } from 'react';
3
3
  import { Box, Text, useApp, useInput } from 'ink';
4
- export function Dashboard({ servers, onConnect, onFiles, onQuit }) {
4
+ const baseFormFields = [
5
+ { key: 'name', label: 'Name' },
6
+ { key: 'host', label: 'Host' },
7
+ { key: 'username', label: 'Username' },
8
+ { key: 'port', label: 'Port' },
9
+ { key: 'defaultRemotePath', label: 'Remote path' }
10
+ ];
11
+ function activeFormFields(form) {
12
+ const credentialFields = form.authType === 'private_key'
13
+ ? [
14
+ { key: 'privateKeyPath', label: 'Key path', optionalOnEdit: true },
15
+ { key: 'passphrase', label: 'Passphrase', secret: true, optionalOnEdit: true }
16
+ ]
17
+ : [{ key: 'password', label: 'Password', secret: true, optionalOnEdit: true }];
18
+ return [...baseFormFields.slice(0, 4), { key: 'authType', label: 'Auth' }, ...credentialFields, baseFormFields[4]];
19
+ }
20
+ const spinnerFrames = ['-', '\\', '|', '/'];
21
+ function emptyForm() {
22
+ return { name: '', host: '', username: '', port: 22, authType: 'password', password: '', privateKeyPath: '', passphrase: '', defaultRemotePath: '/home/' };
23
+ }
24
+ function editForm(server) {
25
+ return {
26
+ name: server.name,
27
+ host: server.host,
28
+ username: server.username,
29
+ port: server.port,
30
+ authType: server.authType,
31
+ password: '',
32
+ privateKeyPath: '',
33
+ passphrase: '',
34
+ defaultRemotePath: server.defaultRemotePath || `/home/${server.username}`
35
+ };
36
+ }
37
+ export function Dashboard({ servers, onConnect, onFiles, onTest, onAdd, onEdit, onDelete, onQuit, active = true, status }) {
5
38
  const { exit } = useApp();
6
39
  const [selected, setSelected] = useState(0);
7
40
  const [query, setQuery] = useState('');
8
- const [searching, setSearching] = useState(false);
41
+ const [mode, setMode] = useState('browse');
42
+ const [form, setForm] = useState(emptyForm());
43
+ const [fieldIndex, setFieldIndex] = useState(0);
44
+ const [busy, setBusy] = useState(null);
45
+ const [formError, setFormError] = useState(null);
46
+ const [spinner, setSpinner] = useState(0);
9
47
  const filtered = useMemo(() => {
10
48
  const q = query.trim().toLowerCase();
11
- return q ? servers.filter((server) => server.name.toLowerCase().includes(q) || server.host.toLowerCase().includes(q)) : servers;
49
+ return q ? servers.filter((server) => `${server.name} ${server.username} ${server.host}`.toLowerCase().includes(q)) : servers;
12
50
  }, [servers, query]);
13
- const current = filtered[Math.min(selected, Math.max(0, filtered.length - 1))];
51
+ const visibleSelected = Math.min(selected, Math.max(0, filtered.length - 1));
52
+ const current = filtered[visibleSelected];
53
+ const editing = mode === 'edit';
54
+ useEffect(() => {
55
+ if (!busy)
56
+ return;
57
+ const timer = setInterval(() => setSpinner((value) => value + 1), 120);
58
+ return () => clearInterval(timer);
59
+ }, [busy]);
60
+ const openAdd = () => {
61
+ setForm(emptyForm());
62
+ setFieldIndex(0);
63
+ setFormError(null);
64
+ setMode('add');
65
+ };
66
+ const openEdit = (server) => {
67
+ setForm(editForm(server));
68
+ setFieldIndex(0);
69
+ setFormError(null);
70
+ setMode('edit');
71
+ };
72
+ const closeMode = () => {
73
+ setMode('browse');
74
+ setBusy(null);
75
+ };
76
+ const setFormField = (value) => {
77
+ const field = formFields[fieldIndex]?.key;
78
+ if (!field)
79
+ return;
80
+ setFormError(null);
81
+ setForm((currentForm) => ({ ...currentForm, [field]: field === 'port' ? Number(value) || 0 : field === 'authType' ? normalizeAuthType(value) : value }));
82
+ };
83
+ const currentValue = () => String(form[formFields[fieldIndex]?.key ?? 'name']);
84
+ const appendInput = (input) => {
85
+ const field = formFields[fieldIndex]?.key;
86
+ if (field === 'port' && !/^\d+$/.test(input))
87
+ return;
88
+ if (field === 'authType') {
89
+ setFormField(input.toLowerCase() === 'k' ? 'private_key' : 'password');
90
+ return;
91
+ }
92
+ setFormField(currentValue() + input);
93
+ };
94
+ const deleteInput = () => {
95
+ setFormField(currentValue().slice(0, -1));
96
+ };
97
+ const submitForm = async () => {
98
+ const validation = validateForm(form, editing);
99
+ if (validation !== true) {
100
+ setFormError(validation);
101
+ return;
102
+ }
103
+ setBusy(mode === 'add' ? 'Saving server' : 'Updating server');
104
+ try {
105
+ if (mode === 'add')
106
+ await onAdd(form);
107
+ else if (mode === 'edit' && current)
108
+ await onEdit(current, form);
109
+ closeMode();
110
+ }
111
+ finally {
112
+ setBusy(null);
113
+ }
114
+ };
115
+ const nextField = () => {
116
+ if (fieldIndex < formFields.length - 1)
117
+ setFieldIndex((value) => value + 1);
118
+ else
119
+ void submitForm();
120
+ };
121
+ const formFields = activeFormFields(form);
14
122
  useInput((input, key) => {
15
- if (searching) {
16
- if (key.return || key.escape)
17
- setSearching(false);
123
+ if (busy)
124
+ return;
125
+ if (mode === 'search') {
126
+ if (key.return)
127
+ setMode('browse');
128
+ else if (key.escape) {
129
+ setQuery('');
130
+ setMode('browse');
131
+ }
18
132
  else if (key.backspace || key.delete)
19
133
  setQuery((value) => value.slice(0, -1));
20
- else if (input)
134
+ else if (input) {
21
135
  setQuery((value) => value + input);
22
- setSelected(0);
136
+ setSelected(0);
137
+ }
138
+ return;
139
+ }
140
+ if (mode === 'add' || mode === 'edit') {
141
+ if (key.escape)
142
+ closeMode();
143
+ else if (key.return || key.tab)
144
+ nextField();
145
+ else if (key.upArrow)
146
+ setFieldIndex((value) => Math.max(0, value - 1));
147
+ else if (key.downArrow)
148
+ setFieldIndex((value) => Math.min(formFields.length - 1, value + 1));
149
+ else if (key.backspace || key.delete)
150
+ deleteInput();
151
+ else if (input)
152
+ appendInput(input);
153
+ return;
154
+ }
155
+ if (mode === 'delete') {
156
+ if ((input === 'y' || input === 'Y') && current) {
157
+ setBusy('Deleting server');
158
+ void Promise.resolve(onDelete(current)).finally(() => closeMode());
159
+ }
160
+ else if (input === 'n' || input === 'N' || key.escape) {
161
+ closeMode();
162
+ }
23
163
  return;
24
164
  }
25
165
  if (key.upArrow)
@@ -30,13 +170,102 @@ export function Dashboard({ servers, onConnect, onFiles, onQuit }) {
30
170
  onConnect(current);
31
171
  if ((input === 'f' || input === 'F') && current)
32
172
  onFiles(current);
173
+ if ((input === 't' || input === 'T') && current) {
174
+ setBusy('Testing connection');
175
+ void Promise.resolve(onTest(current)).finally(() => setBusy(null));
176
+ }
177
+ if (input === 'a' || input === 'A')
178
+ openAdd();
179
+ if ((input === 'e' || input === 'E') && current)
180
+ openEdit(current);
181
+ if ((key.delete || key.backspace) && current)
182
+ setMode('delete');
33
183
  if (input === '/')
34
- setSearching(true);
184
+ setMode('search');
35
185
  if (input === 'q' || input === 'Q' || key.escape) {
36
186
  onQuit?.();
37
187
  exit();
38
188
  }
39
- });
40
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", paddingX: 1, children: [_jsxs(Box, { children: [_jsxs(Box, { width: "50%", flexDirection: "column", children: [_jsx(Text, { bold: true, children: "SSHP" }), filtered.length === 0 ? _jsx(Text, { color: "yellow", children: "No servers. Run sshp add." }) : filtered.map((server, index) => (_jsxs(Text, { color: index === selected ? 'cyan' : undefined, children: [index === selected ? '› ' : ' ', server.name, " ", _jsxs(Text, { dimColor: true, children: [server.username, "@", server.host, ":", server.port] })] }, server.id)))] }), _jsxs(Box, { width: "50%", flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Quick Actions" }), _jsx(Text, { children: "Enter Connect SSH" }), _jsx(Text, { children: "F File Manager" }), _jsx(Text, { children: "/ Search" }), _jsx(Text, { children: "Q/Esc Quit" })] })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: ["Search: ", searching ? query + '' : (query || 'press /')] }), _jsx(Text, { dimColor: true, children: "Vault: unlocked" })] })] }));
189
+ }, { isActive: active });
190
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", paddingX: 1, children: [_jsx(TopBar, { servers: servers.length, query: query }), _jsxs(Box, { marginTop: 1, children: [_jsx(ServerList, { servers: filtered, selected: visibleSelected }), _jsx(Box, { width: "64%", flexDirection: "column", paddingLeft: 2, children: mode === 'add' || mode === 'edit'
191
+ ? _jsx(ServerForm, { mode: mode, form: form, fieldIndex: fieldIndex, busy: busy, spinner: spinner, error: formError })
192
+ : mode === 'delete' && current
193
+ ? _jsx(DeleteConfirm, { server: current })
194
+ : _jsx(ServerDetails, { server: current }) })] }), _jsx(Footer, { mode: mode, status: status, busy: busy, spinner: spinner })] }));
195
+ }
196
+ function TopBar({ servers, query }) {
197
+ return _jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Text, { children: [_jsx(Text, { bold: true, color: "cyan", children: "SSHP" }), " ", _jsx(Text, { dimColor: true, children: "Vault unlocked" }), " ", _jsxs(Text, { dimColor: true, children: [servers, " server", servers === 1 ? '' : 's'] })] }), _jsxs(Text, { dimColor: true, children: [query ? `Search: /${query}` : '/ search', " A add server"] })] });
198
+ }
199
+ function ServerList({ servers, selected }) {
200
+ const height = 14;
201
+ const start = Math.min(Math.max(0, selected - Math.floor(height / 2)), Math.max(0, servers.length - height));
202
+ const visible = servers.slice(start, start + height);
203
+ return _jsxs(Box, { width: "36%", flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, children: [_jsxs(Text, { bold: true, color: "cyan", children: ["Servers ", _jsx(Text, { dimColor: true, children: servers.length ? `${start + 1}-${start + visible.length}/${servers.length}` : '0/0' })] }), servers.length === 0 ? (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "yellow", children: "No servers yet" }), _jsx(Text, { dimColor: true, children: "Press A to add your first host" })] })) : visible.map((server, index) => {
204
+ const absoluteIndex = start + index;
205
+ return _jsxs(Text, { color: absoluteIndex === selected ? 'cyan' : undefined, children: [absoluteIndex === selected ? '> ' : ' ', truncate(server.name, 28)] }, server.id);
206
+ })] });
207
+ }
208
+ function ServerDetails({ server }) {
209
+ if (!server) {
210
+ return _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: "Welcome" }), _jsx(Text, { children: "No server selected." }), _jsx(Text, { dimColor: true, children: "Press A to add a host." })] });
211
+ }
212
+ return _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: server.name }), _jsxs(Text, { children: [server.username, "@", server.host, ":", server.port] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Default remote" }), _jsx(Text, { children: server.defaultRemotePath || '~' })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Usage" }), _jsxs(Text, { children: [server.connectionCount, " connection", server.connectionCount === 1 ? '' : 's', " ", _jsxs(Text, { dimColor: true, children: ["Last: ", formatDate(server.lastConnectedAt)] })] })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: "Actions" }), _jsxs(Text, { children: [_jsx(Text, { color: "green", children: "Enter" }), " SSH ", _jsx(Text, { color: "green", children: "F" }), " Files ", _jsx(Text, { color: "green", children: "T" }), " Test"] }), _jsxs(Text, { children: [_jsx(Text, { color: "green", children: "E" }), " Edit ", _jsx(Text, { color: "green", children: "Del" }), " Delete ", _jsx(Text, { color: "green", children: "A" }), " Add"] })] })] });
213
+ }
214
+ function ServerForm({ mode, form, fieldIndex, busy, spinner, error }) {
215
+ const formFields = activeFormFields(form);
216
+ return _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: mode === 'add' ? 'Add server' : 'Edit server' }), _jsx(Text, { dimColor: true, children: mode === 'edit' ? 'Leave password empty to keep the current password.' : 'Follow the fields, then press Enter to save.' }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: formFields.map((field, index) => {
217
+ const value = form[field.key];
218
+ const visible = field.secret ? '*'.repeat(String(value).length) : String(value);
219
+ return _jsxs(Text, { color: index === fieldIndex ? 'cyan' : undefined, children: [index === fieldIndex ? '> ' : ' ', field.label, ": ", visible || (field.optionalOnEdit && mode === 'edit' ? '<keep current>' : '')] }, field.key);
220
+ }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: busy ? `${spinnerFrames[spinner % spinnerFrames.length]} ${busy}...` : 'Enter next/save Up/Down field Esc cancel' }) }), error ? _jsx(Text, { color: "yellow", children: error }) : null] });
221
+ }
222
+ function DeleteConfirm({ server }) {
223
+ return _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "red", children: "Delete server" }), _jsxs(Text, { children: ["Delete \"", server.name, "\"?"] }), _jsx(Text, { dimColor: true, children: "This removes the saved credentials from this vault." }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { children: [_jsx(Text, { color: "red", children: "Y" }), " confirm ", _jsx(Text, { color: "green", children: "N" }), " cancel"] }) })] });
224
+ }
225
+ function Footer({ mode, status, busy, spinner }) {
226
+ const help = mode === 'browse'
227
+ ? 'Up/Down select / search Q quit'
228
+ : mode === 'search'
229
+ ? 'Search servers Enter apply Esc clear'
230
+ : mode === 'delete'
231
+ ? 'Y confirm N/Esc cancel'
232
+ : 'Enter next/save Up/Down field Esc cancel';
233
+ return _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: help }), _jsx(Text, { color: statusColor(status), children: busy ? `${spinnerFrames[spinner % spinnerFrames.length]} ${busy}...` : `Status: ${status || 'Ready'}` })] });
234
+ }
235
+ function statusColor(status) {
236
+ if (!status)
237
+ return 'gray';
238
+ return status.toLowerCase().includes('failed') ? 'red' : 'green';
239
+ }
240
+ function validateForm(form, editing) {
241
+ if (!form.name.trim())
242
+ return 'Name is required.';
243
+ if (!form.host.trim())
244
+ return 'Host is required.';
245
+ if (!form.username.trim())
246
+ return 'Username is required.';
247
+ if (form.authType === 'password' && !editing && !form.password.trim())
248
+ return 'Password is required.';
249
+ if (form.authType === 'private_key' && !editing && !form.privateKeyPath.trim())
250
+ return 'Private key path is required.';
251
+ if (!form.defaultRemotePath.trim())
252
+ return 'Remote path is required.';
253
+ if (!Number.isInteger(form.port) || form.port <= 0 || form.port > 65_535)
254
+ return 'Port must be between 1 and 65535.';
255
+ return true;
256
+ }
257
+ function formatDate(value) {
258
+ if (!value)
259
+ return 'never';
260
+ return new Date(value).toLocaleString();
261
+ }
262
+ function truncate(value, maxLength) {
263
+ if (value.length <= maxLength)
264
+ return value;
265
+ return `${value.slice(0, Math.max(0, maxLength - 3))}...`;
266
+ }
267
+ function normalizeAuthType(value) {
268
+ const normalized = value.trim().toLowerCase().replace(/[- ]/g, '_');
269
+ return normalized === 'key' || normalized === 'private_key' ? 'private_key' : 'password';
41
270
  }
42
271
  //# sourceMappingURL=Dashboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dashboard.js","sourceRoot":"","sources":["../../../src/tui/screens/Dashboard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Dashboard.js","sourceRoot":"","sources":["../../../src/tui/screens/Dashboard.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAiClD,MAAM,cAAc,GAAe;IACjC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9B,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9B,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACtC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9B,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,aAAa,EAAE;CACnD,CAAC;AAEF,SAAS,gBAAgB,CAAC,IAAsB;IAC9C,MAAM,gBAAgB,GAAe,IAAI,CAAC,QAAQ,KAAK,aAAa;QAClE,CAAC,CAAC;YACA,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE;YAClE,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC/E;QACD,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACrH,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAE5C,SAAS,SAAS;IAChB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;AAC7J,CAAC;AAED,SAAS,QAAQ,CAAC,MAAoB;IACpC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,EAAE;QAClB,UAAU,EAAE,EAAE;QACd,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,SAAS,MAAM,CAAC,QAAQ,EAAE;KAC1E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAkB;IACvI,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAO,QAAQ,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAmB,SAAS,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChI,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACrB,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,KAAK,MAAM,CAAC;IAEhC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvE,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACrB,aAAa,CAAC,CAAC,CAAC,CAAC;QACjB,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,MAAoB,EAAE,EAAE;QACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1B,aAAa,CAAC,CAAC,CAAC,CAAC;QACjB,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC;QAC1C,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3J,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC;IAE/E,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE;QACpC,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC;QAC1C,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO;QACrD,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QACD,YAAY,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,YAAY,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,YAAY,CAAC,UAAU,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,IAAI,IAAI,KAAK,KAAK;gBAAE,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;iBACjC,IAAI,IAAI,KAAK,MAAM,IAAI,OAAO;gBAAE,MAAM,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACjE,SAAS,EAAE,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;;YACvE,KAAK,UAAU,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE1C,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,IAAI;YAAE,OAAO;QAEjB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,MAAM;gBAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;iBAC7B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAAC,CAAC;iBACpD,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM;gBAAE,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzE,IAAI,KAAK,EAAE,CAAC;gBAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;gBAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACtC,IAAI,GAAG,CAAC,MAAM;gBAAE,SAAS,EAAE,CAAC;iBACvB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG;gBAAE,SAAS,EAAE,CAAC;iBACvC,IAAI,GAAG,CAAC,OAAO;gBAAE,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;iBAClE,IAAI,GAAG,CAAC,SAAS;gBAAE,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxF,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM;gBAAE,WAAW,EAAE,CAAC;iBAC/C,IAAI,KAAK;gBAAE,WAAW,CAAC,KAAK,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;gBAChD,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBAC3B,KAAK,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;YACrE,CAAC;iBAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACxD,SAAS,EAAE,CAAC;YACd,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,OAAO;YAAE,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,GAAG,CAAC,SAAS;YAAE,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACjG,IAAI,GAAG,CAAC,MAAM,IAAI,OAAO;YAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,OAAO;YAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;YAChD,OAAO,CAAC,oBAAoB,CAAC,CAAC;YAC9B,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG;YAAE,OAAO,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,OAAO;YAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO;YAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,KAAK,KAAK,GAAG;YAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,EAAE,EAAE,CAAC;YACX,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAEzB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,QAAQ,EAAE,CAAC,aACzD,KAAC,MAAM,IAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,GAAI,EACjD,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,UAAU,IAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,GAAI,EAC5D,KAAC,GAAG,IAAC,KAAK,EAAC,KAAK,EAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,YACnD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM;4BAChC,CAAC,CAAC,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,GAAI;4BAChH,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO;gCAC5B,CAAC,CAAC,KAAC,aAAa,IAAC,MAAM,EAAE,OAAO,GAAI;gCACpC,CAAC,CAAC,KAAC,aAAa,IAAC,MAAM,EAAE,OAAO,GAAI,GACpC,IACF,EACN,KAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAI,IAChE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAsC;IACpE,OAAO,MAAC,GAAG,IAAC,cAAc,EAAC,eAAe,aACxC,MAAC,IAAI,eAAC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,qBAAY,OAAC,KAAC,IAAI,IAAC,QAAQ,qCAAsB,OAAC,MAAC,IAAI,IAAC,QAAQ,mBAAE,OAAO,aAAS,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAQ,IAAO,EACtJ,MAAC,IAAI,IAAC,QAAQ,mBAAE,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,uBAAuB,IAC3E,CAAC;AACT,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAiD;IACtF,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;IACrD,OAAO,MAAC,GAAG,IAAC,KAAK,EAAC,KAAK,EAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,aAChG,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,yBAAS,KAAC,IAAI,IAAC,QAAQ,kBAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,GAAQ,IAAO,EACjJ,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACtB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,+BAAsB,EAC1C,KAAC,IAAI,IAAC,QAAQ,qDAAsC,IAChD,CACP,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChC,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,CAAC;gBACpC,OAAO,MAAC,IAAI,IAAiB,KAAK,EAAE,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,aAChF,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,KADpD,MAAM,CAAC,EAAE,CAEpB,CAAA;YACT,CAAC,CAAC,IACE,CAAC;AACT,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,MAAM,EAA6B;IAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,wBAAe,EACtC,KAAC,IAAI,sCAA2B,EAChC,KAAC,IAAI,IAAC,QAAQ,6CAA8B,IACxC,CAAC;IACT,CAAC;IAED,OAAO,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,MAAM,CAAC,IAAI,GAAQ,EAC5C,MAAC,IAAI,eAAE,MAAM,CAAC,QAAQ,OAAG,MAAM,CAAC,IAAI,OAAG,MAAM,CAAC,IAAI,IAAQ,EAC1D,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvC,KAAC,IAAI,IAAC,QAAQ,qCAAsB,EACpC,KAAC,IAAI,cAAE,MAAM,CAAC,iBAAiB,IAAI,GAAG,GAAQ,IAC1C,EACN,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvC,KAAC,IAAI,IAAC,QAAQ,4BAAa,EAC3B,MAAC,IAAI,eAAE,MAAM,CAAC,eAAe,iBAAa,MAAM,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAE,MAAC,IAAI,IAAC,QAAQ,6BAAQ,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,IAAQ,IAAO,IACtJ,EACN,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,wBAAe,EACtC,MAAC,IAAI,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,sBAAa,aAAO,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,kBAAS,eAAS,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,kBAAS,aAAY,EAC1H,MAAC,IAAI,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,kBAAS,iBAAW,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,oBAAW,eAAS,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,kBAAS,YAAW,IACvH,IACF,CAAC;AACT,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAA0H;IAC1L,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,GAAQ,EAC9E,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,8CAA8C,GAAQ,EAC/I,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACtC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChF,OAAO,MAAC,IAAI,IAAiB,KAAK,EAAE,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,aAC1E,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,QAAI,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,KADhH,KAAK,CAAC,GAAG,CAEpB,CAAC;gBACV,CAAC,CAAC,GACE,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,4CAA4C,GAAQ,GACvI,EACL,KAAK,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,KAAK,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC/C,CAAC;AACT,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,MAAM,EAA4B;IACzD,OAAO,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,KAAK,8BAAqB,EAC3C,MAAC,IAAI,4BAAU,MAAM,CAAC,IAAI,WAAU,EACpC,KAAC,IAAI,IAAC,QAAQ,0EAA2D,EACzE,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,MAAC,IAAI,eAAC,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,kBAAS,iBAAW,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,kBAAS,eAAc,GACjF,IACF,CAAC;AACT,CAAC;AAED,SAAS,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAgF;IAC3H,MAAM,IAAI,GAAG,IAAI,KAAK,QAAQ;QAC5B,CAAC,CAAC,kCAAkC;QACpC,CAAC,CAAC,IAAI,KAAK,QAAQ;YACjB,CAAC,CAAC,wCAAwC;YAC1C,CAAC,CAAC,IAAI,KAAK,QAAQ;gBACjB,CAAC,CAAC,yBAAyB;gBAC3B,CAAC,CAAC,4CAA4C,CAAC;IACrD,OAAO,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aAC9C,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,GAAQ,EAC5B,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,YAAG,IAAI,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,MAAM,IAAI,OAAO,EAAE,GAAQ,IAC5I,CAAC;AACT,CAAC;AAED,SAAS,WAAW,CAAC,MAAsB;IACzC,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3B,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AACnE,CAAC;AAED,SAAS,YAAY,CAAC,IAAsB,EAAE,OAAgB;IAC5D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,mBAAmB,CAAC;IAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,mBAAmB,CAAC;IAClD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,uBAAuB,CAAC;IAC1D,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,uBAAuB,CAAC;IACtG,IAAI,IAAI,CAAC,QAAQ,KAAK,aAAa,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,+BAA+B,CAAC;IACvH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAAE,OAAO,0BAA0B,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM;QAAE,OAAO,mCAAmC,CAAC;IACrH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,SAAiB;IAChD,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5D,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpE,OAAO,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;AAC3F,CAAC"}
@@ -3,5 +3,6 @@ export interface FileManagerProps {
3
3
  server: ServerRecord;
4
4
  vault: VaultContext;
5
5
  onBack: () => void;
6
+ exitOnBack?: boolean;
6
7
  }
7
- export declare function FileManager({ server, vault, onBack }: FileManagerProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare function FileManager({ server, vault, onBack, exitOnBack }: FileManagerProps): import("react/jsx-runtime").JSX.Element;