@bytexbyte/nxtlinq-ai-agent-sdk 1.1.2 → 1.1.3
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/dist/api/nxtlinq-api.d.ts.map +1 -1
- package/dist/api/nxtlinq-api.js +23 -0
- package/dist/components/ChatBot.d.ts +1 -16
- package/dist/components/ChatBot.d.ts.map +1 -1
- package/dist/components/ChatBot.js +40 -19
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/types/ait-api.d.ts +26 -3
- package/dist/types/ait-api.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nxtlinq-api.d.ts","sourceRoot":"","sources":["../../src/api/nxtlinq-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK1C,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"nxtlinq-api.d.ts","sourceRoot":"","sources":["../../src/api/nxtlinq-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK1C,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,MAmJpE,CAAC"}
|
package/dist/api/nxtlinq-api.js
CHANGED
|
@@ -119,6 +119,29 @@ export const createNxtlinqApi = (apiKey, apiSecret) => {
|
|
|
119
119
|
return { error: error instanceof Error ? error.message : 'Failed to send message' };
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
|
+
},
|
|
123
|
+
permissions: {
|
|
124
|
+
getServicePermissions: async (params) => {
|
|
125
|
+
try {
|
|
126
|
+
const response = await fetch(`${AI_AGENT_API_HOST}/api/permissions/service/${params.serviceId}`, {
|
|
127
|
+
method: 'GET',
|
|
128
|
+
headers: {
|
|
129
|
+
'X-API-Key': apiKey,
|
|
130
|
+
'X-API-Secret': apiSecret,
|
|
131
|
+
'Content-Type': 'application/json',
|
|
132
|
+
...getAuthHeader()
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
if (!response.ok) {
|
|
136
|
+
throw new Error('Failed to fetch permissions');
|
|
137
|
+
}
|
|
138
|
+
return await response.json();
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
console.error('Failed to fetch permissions:', error);
|
|
142
|
+
return { error: error instanceof Error ? error.message : 'Failed to fetch permissions' };
|
|
143
|
+
}
|
|
144
|
+
}
|
|
122
145
|
}
|
|
123
146
|
};
|
|
124
147
|
};
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
id: string;
|
|
4
|
-
content: string;
|
|
5
|
-
role: 'user' | 'assistant';
|
|
6
|
-
timestamp: string;
|
|
7
|
-
button?: boolean;
|
|
8
|
-
error?: string;
|
|
9
|
-
}
|
|
2
|
+
import { Message } from '../types/ait-api';
|
|
10
3
|
export interface PresetMessage {
|
|
11
4
|
text: string;
|
|
12
5
|
autoSend?: boolean;
|
|
@@ -33,15 +26,7 @@ export interface AITMetadata {
|
|
|
33
26
|
permissions: string[];
|
|
34
27
|
issuedBy: string;
|
|
35
28
|
}
|
|
36
|
-
export interface AIT {
|
|
37
|
-
aitId: string;
|
|
38
|
-
controller: string;
|
|
39
|
-
metadata: AITMetadata;
|
|
40
|
-
metadataHash: string;
|
|
41
|
-
metadataCid: string;
|
|
42
|
-
}
|
|
43
29
|
export interface ChatBotProps {
|
|
44
|
-
projectId?: string;
|
|
45
30
|
onMessage?: (message: Message) => void;
|
|
46
31
|
onError?: (error: Error) => void;
|
|
47
32
|
onToolUse?: (toolUse: ToolUse) => Promise<Message | void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatBot.d.ts","sourceRoot":"","sources":["../../src/components/ChatBot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatBot.d.ts","sourceRoot":"","sources":["../../src/components/ChatBot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,OAAO,EAAkC,MAAM,kBAAkB,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC1D,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,SAAS,CAAC,CAAC;CAChB;AAsVD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA62B1C,CAAC"}
|
|
@@ -5,12 +5,26 @@ import { createNxtlinqApi } from '../api/nxtlinq-api';
|
|
|
5
5
|
import stringify from 'fast-json-stable-stringify';
|
|
6
6
|
import metakeepClient from '../core/metakeepClient';
|
|
7
7
|
import useLocalStorage from '../core/lib/useLocalStorage';
|
|
8
|
-
const PermissionForm = ({ hitAddress, permissions, setPermissions, setIsDisabled, onClose, onSave, onConnectWallet, onSignIn, isNeedSignInWithWallet, walletInfo, onVerifyWallet }) => {
|
|
9
|
-
const availablePermissions = [
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
const PermissionForm = ({ hitAddress, permissions, setPermissions, setIsDisabled, onClose, onSave, onConnectWallet, onSignIn, isNeedSignInWithWallet, walletInfo, onVerifyWallet, serviceId, nxtlinqApi }) => {
|
|
9
|
+
const [availablePermissions, setAvailablePermissions] = React.useState([]);
|
|
10
|
+
React.useEffect(() => {
|
|
11
|
+
const fetchPermissions = async () => {
|
|
12
|
+
if (!serviceId)
|
|
13
|
+
return;
|
|
14
|
+
try {
|
|
15
|
+
const result = await nxtlinqApi.permissions.getServicePermissions({ serviceId });
|
|
16
|
+
if ('error' in result) {
|
|
17
|
+
console.error('Failed to fetch permissions:', result.error);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
setAvailablePermissions(result.permissions);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error('Error fetching permissions:', error);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
fetchPermissions();
|
|
27
|
+
}, [serviceId, nxtlinqApi]);
|
|
14
28
|
const isWalletVerified = walletInfo?.id;
|
|
15
29
|
return (_jsxs("div", { style: {
|
|
16
30
|
backgroundColor: 'white',
|
|
@@ -199,7 +213,7 @@ const PermissionForm = ({ hitAddress, permissions, setPermissions, setIsDisabled
|
|
|
199
213
|
}
|
|
200
214
|
}, children: "Save" })] })] }))] }));
|
|
201
215
|
};
|
|
202
|
-
export const ChatBot = ({
|
|
216
|
+
export const ChatBot = ({ onMessage, onError, onToolUse, presetMessages = [], placeholder = 'Type a message...', className = '', maxRetries = 3, retryDelay = 1000, serviceId, apiKey, apiSecret, onVerifyWallet }) => {
|
|
203
217
|
const [messages, setMessages] = React.useState([]);
|
|
204
218
|
const [inputValue, setInputValue] = React.useState('');
|
|
205
219
|
const [isLoading, setIsLoading] = React.useState(false);
|
|
@@ -570,7 +584,8 @@ export const ChatBot = ({ projectId, onMessage, onError, onToolUse, presetMessag
|
|
|
570
584
|
setIsLoading(true);
|
|
571
585
|
const response = await nxtlinqApi.agent.sendMessage({
|
|
572
586
|
message: content,
|
|
573
|
-
|
|
587
|
+
apiKey,
|
|
588
|
+
apiSecret,
|
|
574
589
|
});
|
|
575
590
|
if ('error' in response) {
|
|
576
591
|
throw new Error(response.error);
|
|
@@ -587,12 +602,13 @@ export const ChatBot = ({ projectId, onMessage, onError, onToolUse, presetMessag
|
|
|
587
602
|
role: 'assistant',
|
|
588
603
|
timestamp: new Date().toISOString()
|
|
589
604
|
};
|
|
605
|
+
setMessages(prev => [...prev, message]);
|
|
590
606
|
return message;
|
|
591
607
|
}
|
|
592
608
|
}
|
|
593
609
|
const toolUseResult = await onToolUse(novaResponse.toolCall.toolUse);
|
|
594
610
|
if (toolUseResult) {
|
|
595
|
-
|
|
611
|
+
setMessages(prev => [...prev, toolUseResult]);
|
|
596
612
|
return toolUseResult;
|
|
597
613
|
}
|
|
598
614
|
}
|
|
@@ -608,7 +624,6 @@ export const ChatBot = ({ projectId, onMessage, onError, onToolUse, presetMessag
|
|
|
608
624
|
timestamp: new Date().toISOString()
|
|
609
625
|
};
|
|
610
626
|
setMessages(prev => [...prev, message]);
|
|
611
|
-
onMessage?.(message);
|
|
612
627
|
return message;
|
|
613
628
|
}
|
|
614
629
|
const defaultMessage = {
|
|
@@ -618,7 +633,6 @@ export const ChatBot = ({ projectId, onMessage, onError, onToolUse, presetMessag
|
|
|
618
633
|
timestamp: new Date().toISOString()
|
|
619
634
|
};
|
|
620
635
|
setMessages(prev => [...prev, defaultMessage]);
|
|
621
|
-
onMessage?.(defaultMessage);
|
|
622
636
|
return defaultMessage;
|
|
623
637
|
}
|
|
624
638
|
catch (error) {
|
|
@@ -650,17 +664,17 @@ export const ChatBot = ({ projectId, onMessage, onError, onToolUse, presetMessag
|
|
|
650
664
|
if (response.error) {
|
|
651
665
|
throw new Error(response.error);
|
|
652
666
|
}
|
|
653
|
-
setMessages(prev => [...prev, response]);
|
|
654
667
|
}
|
|
655
668
|
catch (error) {
|
|
656
669
|
console.error('Failed to send message:', error);
|
|
657
670
|
onError?.(error instanceof Error ? error : new Error('Failed to send message'));
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
671
|
+
const errorMessage = {
|
|
672
|
+
id: Date.now().toString(),
|
|
673
|
+
content: 'Sorry, there was an error processing your message. Please try again.',
|
|
674
|
+
role: 'assistant',
|
|
675
|
+
timestamp: new Date().toISOString()
|
|
676
|
+
};
|
|
677
|
+
setMessages(prev => [...prev, errorMessage]);
|
|
664
678
|
}
|
|
665
679
|
finally {
|
|
666
680
|
setIsLoading(false);
|
|
@@ -741,6 +755,13 @@ export const ChatBot = ({ projectId, onMessage, onError, onToolUse, presetMessag
|
|
|
741
755
|
isOpen
|
|
742
756
|
});
|
|
743
757
|
}, [hitAddress, isNeedSignInWithWallet, walletInfo, isOpen]);
|
|
758
|
+
// Add useEffect to monitor message changes
|
|
759
|
+
React.useEffect(() => {
|
|
760
|
+
if (messages.length > 0) {
|
|
761
|
+
const lastMessage = messages[messages.length - 1];
|
|
762
|
+
onMessage?.(lastMessage);
|
|
763
|
+
}
|
|
764
|
+
}, [messages, onMessage]);
|
|
744
765
|
return (_jsxs("div", { style: {
|
|
745
766
|
position: 'fixed',
|
|
746
767
|
bottom: '20px',
|
|
@@ -876,7 +897,7 @@ export const ChatBot = ({ projectId, onMessage, onError, onToolUse, presetMessag
|
|
|
876
897
|
alignItems: 'center',
|
|
877
898
|
justifyContent: 'center',
|
|
878
899
|
zIndex: 2000
|
|
879
|
-
}, children: _jsx(PermissionForm, { hitAddress: hitAddress, permissions: permissions, setPermissions: setPermissions, setIsDisabled: setIsDisabled, onClose: () => setShowPermissionForm(false), onConnectWallet: connectWallet, onSignIn: signInWallet, onSave: savePermissions, isNeedSignInWithWallet: isNeedSignInWithWallet, walletInfo: walletInfo, onVerifyWallet: handleVerifyWalletClick }) })), success && (_jsxs("div", { style: {
|
|
900
|
+
}, children: _jsx(PermissionForm, { hitAddress: hitAddress, permissions: permissions, setPermissions: setPermissions, setIsDisabled: setIsDisabled, onClose: () => setShowPermissionForm(false), onConnectWallet: connectWallet, onSignIn: signInWallet, onSave: savePermissions, isNeedSignInWithWallet: isNeedSignInWithWallet, walletInfo: walletInfo, onVerifyWallet: handleVerifyWalletClick, serviceId: serviceId, nxtlinqApi: nxtlinqApi }) })), success && (_jsxs("div", { style: {
|
|
880
901
|
position: 'fixed',
|
|
881
902
|
bottom: 100,
|
|
882
903
|
right: 40,
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export type { PresetMessage, ToolUse, ChatBotProps } from './components/ChatBot';
|
|
1
2
|
export { ChatBot } from './components/ChatBot';
|
|
2
|
-
export type { Message,
|
|
3
|
+
export type { Message, AIT, ServicePermission, AITApi } from './types/ait-api';
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/types/ait-api.d.ts
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
|
+
export interface Message {
|
|
2
|
+
id: string;
|
|
3
|
+
content: string;
|
|
4
|
+
role: 'user' | 'assistant';
|
|
5
|
+
timestamp: string;
|
|
6
|
+
button?: boolean;
|
|
7
|
+
error?: string;
|
|
8
|
+
}
|
|
1
9
|
export interface AIT {
|
|
2
10
|
aitId: string;
|
|
3
11
|
controller: string;
|
|
4
12
|
metadata: AITMetadata;
|
|
5
13
|
metadataHash: string;
|
|
6
14
|
metadataCid: string;
|
|
7
|
-
signature: string;
|
|
8
15
|
}
|
|
9
16
|
export interface AITMetadata {
|
|
10
17
|
model: string;
|
|
@@ -62,10 +69,16 @@ export interface MessageContext {
|
|
|
62
69
|
}
|
|
63
70
|
export interface SendMessageParams {
|
|
64
71
|
message: string;
|
|
65
|
-
|
|
72
|
+
apiKey: string;
|
|
73
|
+
apiSecret: string;
|
|
66
74
|
serviceId: string;
|
|
67
75
|
context: MessageContext;
|
|
68
76
|
}
|
|
77
|
+
export interface ServicePermission {
|
|
78
|
+
id: string;
|
|
79
|
+
label: string;
|
|
80
|
+
description: string;
|
|
81
|
+
}
|
|
69
82
|
export interface AITApi {
|
|
70
83
|
ait: {
|
|
71
84
|
getAITByServiceIdAndController: (params: {
|
|
@@ -113,12 +126,22 @@ export interface AITApi {
|
|
|
113
126
|
agent: {
|
|
114
127
|
sendMessage: (params: {
|
|
115
128
|
message: string;
|
|
116
|
-
|
|
129
|
+
apiKey: string;
|
|
130
|
+
apiSecret: string;
|
|
117
131
|
}) => Promise<{
|
|
118
132
|
reply: string;
|
|
119
133
|
} | {
|
|
120
134
|
error: string;
|
|
121
135
|
}>;
|
|
122
136
|
};
|
|
137
|
+
permissions: {
|
|
138
|
+
getServicePermissions: (params: {
|
|
139
|
+
serviceId: string;
|
|
140
|
+
}) => Promise<{
|
|
141
|
+
permissions: ServicePermission[];
|
|
142
|
+
} | {
|
|
143
|
+
error: string;
|
|
144
|
+
}>;
|
|
145
|
+
};
|
|
123
146
|
}
|
|
124
147
|
//# sourceMappingURL=ait-api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ait-api.d.ts","sourceRoot":"","sources":["../../src/types/ait-api.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ait-api.d.ts","sourceRoot":"","sources":["../../src/types/ait-api.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAqB,SAAQ,WAAW;CACxD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE;QACH,8BAA8B,EAAE,CAAC,MAAM,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3I,SAAS,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC7F,CAAC;IACF,MAAM,EAAE;QACN,YAAY,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACrG,SAAS,EAAE,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACpG,CAAC;IACF,QAAQ,EAAE;QACR,cAAc,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACzH,CAAC;IACF,IAAI,EAAE;QACJ,QAAQ,EAAE,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC5G,MAAM,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACxF,CAAC;IACF,KAAK,EAAE;QACL,WAAW,EAAE,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjI,CAAC;IACF,WAAW,EAAE;QACX,qBAAqB,EAAE,CAAC,MAAM,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC;YAAE,WAAW,EAAE,iBAAiB,EAAE,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC7H,CAAC;CACH"}
|