@admin-layout/ai-chat-ext-browser 12.2.5-alpha.2 → 12.2.5-alpha.21
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/lib/components/MessageWidgets/MessageFlights.d.ts +27 -4
- package/lib/components/MessageWidgets/MessageFlights.d.ts.map +1 -1
- package/lib/components/MessageWidgets/MessageFlights.js +200 -65
- package/lib/components/MessageWidgets/MessageFlights.js.map +1 -1
- package/lib/components/MessageWidgets/MessageMedia.d.ts.map +1 -1
- package/lib/components/MessageWidgets/MessageMedia.js +4 -4
- package/lib/components/MessageWidgets/MessageMedia.js.map +1 -1
- package/lib/components/MessageWidgets/MessageResults.d.ts +54 -0
- package/lib/components/MessageWidgets/MessageResults.d.ts.map +1 -0
- package/lib/components/MessageWidgets/MessageResults.js +163 -0
- package/lib/components/MessageWidgets/MessageResults.js.map +1 -0
- package/lib/components/MessageWidgets/MessageTravel.d.ts +2 -0
- package/lib/components/MessageWidgets/MessageTravel.d.ts.map +1 -1
- package/lib/components/MessageWidgets/MessageTravel.js +15 -3
- package/lib/components/MessageWidgets/MessageTravel.js.map +1 -1
- package/lib/components/MessageWidgets/ResultCards.d.ts +19 -0
- package/lib/components/MessageWidgets/ResultCards.d.ts.map +1 -0
- package/lib/components/MessageWidgets/ResultCards.js +543 -0
- package/lib/components/MessageWidgets/ResultCards.js.map +1 -0
- package/lib/components/MessageWidgets/ResultRow.d.ts +57 -0
- package/lib/components/MessageWidgets/ResultRow.d.ts.map +1 -0
- package/lib/components/MessageWidgets/ResultRow.js +216 -0
- package/lib/components/MessageWidgets/ResultRow.js.map +1 -0
- package/lib/components/MessageWidgets/index.d.ts +6 -2
- package/lib/components/MessageWidgets/index.d.ts.map +1 -1
- package/lib/components/MessageWidgets/mediaUtils.d.ts.map +1 -1
- package/lib/components/MessageWidgets/mediaUtils.js +3 -10
- package/lib/components/MessageWidgets/mediaUtils.js.map +1 -1
- package/lib/components/index.d.ts +1 -1
- package/lib/components/index.d.ts.map +1 -1
- package/lib/index.d.ts +6 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/module.d.ts.map +1 -1
- package/lib/module.js +13 -1
- package/lib/module.js.map +1 -1
- package/lib/slot-fill/chat-settings-fill.js +1 -1
- package/lib/slot-fill/chat-settings-fill.js.map +1 -1
- package/lib/slot-fill/index.d.ts +4 -0
- package/lib/slot-fill/index.d.ts.map +1 -1
- package/lib/slot-fill/message-ai-assistant-fill.js +1 -1
- package/lib/slot-fill/message-ai-assistant-fill.js.map +1 -1
- package/lib/slot-fill/message-codeblock-fill.js +1 -1
- package/lib/slot-fill/message-codeblock-fill.js.map +1 -1
- package/lib/slot-fill/message-connector-fill.js +1 -1
- package/lib/slot-fill/message-connector-fill.js.map +1 -1
- package/lib/slot-fill/message-generic-fill.js +1 -1
- package/lib/slot-fill/message-generic-fill.js.map +1 -1
- package/lib/slot-fill/message-jobs-fill.d.ts +4 -0
- package/lib/slot-fill/message-jobs-fill.d.ts.map +1 -0
- package/lib/slot-fill/message-jobs-fill.js +6 -0
- package/lib/slot-fill/message-jobs-fill.js.map +1 -0
- package/lib/slot-fill/message-media-fill.js +1 -1
- package/lib/slot-fill/message-media-fill.js.map +1 -1
- package/lib/slot-fill/message-movies-fill.d.ts +4 -0
- package/lib/slot-fill/message-movies-fill.d.ts.map +1 -0
- package/lib/slot-fill/message-movies-fill.js +6 -0
- package/lib/slot-fill/message-movies-fill.js.map +1 -0
- package/lib/slot-fill/message-resume-fill.d.ts +4 -0
- package/lib/slot-fill/message-resume-fill.d.ts.map +1 -0
- package/lib/slot-fill/message-resume-fill.js +6 -0
- package/lib/slot-fill/message-resume-fill.js.map +1 -0
- package/lib/slot-fill/message-service-fill.js +1 -1
- package/lib/slot-fill/message-service-fill.js.map +1 -1
- package/lib/slot-fill/message-shopping-fill.d.ts +4 -0
- package/lib/slot-fill/message-shopping-fill.d.ts.map +1 -0
- package/lib/slot-fill/message-shopping-fill.js +6 -0
- package/lib/slot-fill/message-shopping-fill.js.map +1 -0
- package/lib/slot-fill/message-thinking-fill.js +1 -1
- package/lib/slot-fill/message-thinking-fill.js.map +1 -1
- package/lib/slot-fill/message-tooluse-fill.js +1 -1
- package/lib/slot-fill/message-tooluse-fill.js.map +1 -1
- package/lib/slot-fill/message-travel-fill.js +1 -1
- package/lib/slot-fill/message-travel-fill.js.map +1 -1
- package/lib/slot-fill/message-workflow-fill.js +1 -1
- package/lib/slot-fill/message-workflow-fill.js.map +1 -1
- package/lib/utils/mediaAttachment.d.ts +46 -0
- package/lib/utils/mediaAttachment.d.ts.map +1 -0
- package/lib/utils/mediaAttachment.js +135 -0
- package/lib/utils/mediaAttachment.js.map +1 -0
- package/lib/utils/parseWidgetPost.d.ts.map +1 -1
- package/lib/utils/parseWidgetPost.js +20 -10
- package/lib/utils/parseWidgetPost.js.map +1 -1
- package/package.json +3 -3
- package/lib/utils/parseWidgetPost.spec.d.ts +0 -2
- package/lib/utils/parseWidgetPost.spec.d.ts.map +0 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import React,{useMemo}from'react';import {FaBed}from'@react-icons/all-files/fa/FaBed.js';import {FaBus}from'@react-icons/all-files/fa/FaBus.js';import {FaCar}from'@react-icons/all-files/fa/FaCar.js';import {FaTrain}from'@react-icons/all-files/fa/FaTrain.js';import {FiBriefcase}from'@react-icons/all-files/fi/FiBriefcase.js';import {FiFilm}from'@react-icons/all-files/fi/FiFilm.js';import {FiShoppingBag}from'@react-icons/all-files/fi/FiShoppingBag.js';import {toResumeCard,toMovieCards,toProductCards,toGroundCards,toCarCards,toStayCards,travelResultKind,jobSummary,toJobCards,movieSummary,productSummary,groundSummary,carSummary,staySummary,sortResultCards}from'@admin-layout/client';import {ResumeCard,JobCard,MovieCard,ProductCard,GroundCard,CarCard,StayCard}from'./ResultCards.js';import {ResultRow}from'./ResultRow.js';const ICON = 'h-4 w-4';
|
|
2
|
+
const VERTICALS = {
|
|
3
|
+
stays: {
|
|
4
|
+
toCards: toStayCards,
|
|
5
|
+
summary: (a, c) => staySummary(a, c),
|
|
6
|
+
Card: StayCard,
|
|
7
|
+
icon: () => React.createElement(FaBed, {
|
|
8
|
+
className: ICON
|
|
9
|
+
}),
|
|
10
|
+
sorts: ['recommended', 'cheapest', 'rating']
|
|
11
|
+
},
|
|
12
|
+
cars: {
|
|
13
|
+
toCards: toCarCards,
|
|
14
|
+
summary: (a, c) => carSummary(a, c),
|
|
15
|
+
Card: CarCard,
|
|
16
|
+
icon: () => React.createElement(FaCar, {
|
|
17
|
+
className: ICON
|
|
18
|
+
}),
|
|
19
|
+
sorts: ['recommended', 'cheapest', 'rating']
|
|
20
|
+
},
|
|
21
|
+
ground: {
|
|
22
|
+
toCards: toGroundCards,
|
|
23
|
+
summary: (a, c) => groundSummary(a, c),
|
|
24
|
+
Card: GroundCard,
|
|
25
|
+
icon: (_a, c) => c[0]?.mode === 'bus' ? React.createElement(FaBus, {
|
|
26
|
+
className: ICON
|
|
27
|
+
}) : React.createElement(FaTrain, {
|
|
28
|
+
className: ICON
|
|
29
|
+
}),
|
|
30
|
+
sorts: ['recommended', 'cheapest', 'fastest', 'departure']
|
|
31
|
+
},
|
|
32
|
+
shopping: {
|
|
33
|
+
toCards: toProductCards,
|
|
34
|
+
summary: (a, c) => productSummary(a, c),
|
|
35
|
+
Card: ProductCard,
|
|
36
|
+
icon: () => React.createElement(FiShoppingBag, {
|
|
37
|
+
className: ICON
|
|
38
|
+
}),
|
|
39
|
+
sorts: ['recommended', 'cheapest', 'rating']
|
|
40
|
+
},
|
|
41
|
+
movies: {
|
|
42
|
+
toCards: toMovieCards,
|
|
43
|
+
summary: (a, c) => movieSummary(a, c),
|
|
44
|
+
Card: MovieCard,
|
|
45
|
+
icon: () => React.createElement(FiFilm, {
|
|
46
|
+
className: ICON
|
|
47
|
+
}),
|
|
48
|
+
sorts: ['recommended', 'rating']
|
|
49
|
+
},
|
|
50
|
+
jobs: {
|
|
51
|
+
toCards: a => toJobCards(a),
|
|
52
|
+
summary: (a, c) => jobSummary(a, c),
|
|
53
|
+
Card: JobCard,
|
|
54
|
+
icon: () => React.createElement(FiBriefcase, {
|
|
55
|
+
className: ICON
|
|
56
|
+
}),
|
|
57
|
+
sorts: ['recommended', 'newest']
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
/** Which vertical a travel attachment that is not flights belongs to. */
|
|
61
|
+
const travelVertical = a => {
|
|
62
|
+
const kind = travelResultKind(a);
|
|
63
|
+
return kind === 'car' ? 'cars' : kind === 'train' || kind === 'bus' ? 'ground' : 'stays';
|
|
64
|
+
};
|
|
65
|
+
const RESULT_SORT_LABELS = {
|
|
66
|
+
recommended: 'Top picks',
|
|
67
|
+
cheapest: 'Cheapest',
|
|
68
|
+
fastest: 'Fastest',
|
|
69
|
+
rating: 'Top rated',
|
|
70
|
+
departure: 'Departure',
|
|
71
|
+
newest: 'Newest'
|
|
72
|
+
};
|
|
73
|
+
const attachmentOf = message => message?.propsConfiguration?.contents?.attachment;
|
|
74
|
+
/** The chat row for one result vertical. */
|
|
75
|
+
const MessageResults = ({
|
|
76
|
+
message,
|
|
77
|
+
vertical,
|
|
78
|
+
attachment,
|
|
79
|
+
onMessageClick
|
|
80
|
+
}) => {
|
|
81
|
+
const a = attachment ?? attachmentOf(message);
|
|
82
|
+
const spec = VERTICALS[vertical];
|
|
83
|
+
const cards = useMemo(() => a ? spec.toCards(a) : [], [a, spec]);
|
|
84
|
+
const summary = useMemo(() => a ? spec.summary(a, cards) : null, [a, spec, cards]);
|
|
85
|
+
if (!a || !summary || cards.length === 0) return null;
|
|
86
|
+
const open = onMessageClick ? () => onMessageClick(message) : undefined;
|
|
87
|
+
const {
|
|
88
|
+
Card
|
|
89
|
+
} = spec;
|
|
90
|
+
return React.createElement(ResultRow, {
|
|
91
|
+
icon: spec.icon(a, cards),
|
|
92
|
+
title: summary.title,
|
|
93
|
+
subtitle: summary.subtitle,
|
|
94
|
+
picks: cards.length > 2 ? summary.picks : [],
|
|
95
|
+
count: summary.count,
|
|
96
|
+
onViewAll: open,
|
|
97
|
+
ariaLabel: summary.title
|
|
98
|
+
}, highlighted => cards.map(c => React.createElement(Card, {
|
|
99
|
+
key: c.key,
|
|
100
|
+
card: c,
|
|
101
|
+
onOpen: open,
|
|
102
|
+
highlighted: highlighted === c.key
|
|
103
|
+
})));
|
|
104
|
+
};
|
|
105
|
+
/** Every result as a full-width vertical list, for a side panel or a results page. */
|
|
106
|
+
const ResultCardList = ({
|
|
107
|
+
vertical,
|
|
108
|
+
attachment,
|
|
109
|
+
sort = 'recommended',
|
|
110
|
+
onOpen
|
|
111
|
+
}) => {
|
|
112
|
+
const spec = VERTICALS[vertical];
|
|
113
|
+
const cards = useMemo(() => spec.toCards(attachment), [attachment, spec]);
|
|
114
|
+
const ordered = useMemo(() => sortResultCards(cards, sort), [cards, sort]);
|
|
115
|
+
if (cards.length === 0) return null;
|
|
116
|
+
const {
|
|
117
|
+
Card
|
|
118
|
+
} = spec;
|
|
119
|
+
return React.createElement("ul", {
|
|
120
|
+
className: "space-y-3",
|
|
121
|
+
"aria-label": attachment.title || 'Results'
|
|
122
|
+
}, ordered.map(c => React.createElement("li", {
|
|
123
|
+
key: c.key
|
|
124
|
+
}, React.createElement(Card, {
|
|
125
|
+
card: c,
|
|
126
|
+
onOpen: onOpen,
|
|
127
|
+
fullWidth: true
|
|
128
|
+
}))));
|
|
129
|
+
};
|
|
130
|
+
/** The header strip for a side panel: the same summary the chat row shows. */
|
|
131
|
+
const resultSummaryOf = (vertical, attachment) => {
|
|
132
|
+
const spec = VERTICALS[vertical];
|
|
133
|
+
return spec.summary(attachment, spec.toCards(attachment));
|
|
134
|
+
};
|
|
135
|
+
const resultIconOf = (vertical, attachment) => {
|
|
136
|
+
const spec = VERTICALS[vertical];
|
|
137
|
+
return spec.icon(attachment, spec.toCards(attachment));
|
|
138
|
+
};
|
|
139
|
+
const MessageShopping = props => React.createElement(MessageResults, {
|
|
140
|
+
...props,
|
|
141
|
+
vertical: "shopping"
|
|
142
|
+
});
|
|
143
|
+
const MessageMovies = props => React.createElement(MessageResults, {
|
|
144
|
+
...props,
|
|
145
|
+
vertical: "movies"
|
|
146
|
+
});
|
|
147
|
+
const MessageJobs = props => React.createElement(MessageResults, {
|
|
148
|
+
...props,
|
|
149
|
+
vertical: "jobs"
|
|
150
|
+
});
|
|
151
|
+
/** The resume document card: one artifact, opened in the studio or downloaded. */
|
|
152
|
+
const MessageResume = ({
|
|
153
|
+
message,
|
|
154
|
+
onMessageClick
|
|
155
|
+
}) => {
|
|
156
|
+
const a = message?.propsConfiguration?.contents?.attachment;
|
|
157
|
+
const card = useMemo(() => toResumeCard(a), [a]);
|
|
158
|
+
if (!card) return null;
|
|
159
|
+
return React.createElement(ResumeCard, {
|
|
160
|
+
card: card,
|
|
161
|
+
onOpen: onMessageClick ? () => onMessageClick(message) : undefined
|
|
162
|
+
});
|
|
163
|
+
};export{MessageJobs,MessageMovies,MessageResults,MessageResume,MessageShopping,RESULT_SORT_LABELS,ResultCardList,VERTICALS,resultIconOf,resultSummaryOf,travelVertical};//# sourceMappingURL=MessageResults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageResults.js","sources":["../../../src/components/MessageWidgets/MessageResults.tsx"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export interface IMessageTravelProps {
|
|
|
5
5
|
index: number;
|
|
6
6
|
/** Fired when the card is clicked — the consumer opens the travel side panel. */
|
|
7
7
|
onMessageClick?: (ref: IPost) => void;
|
|
8
|
+
/** Render stays as the older compact list instead of the card row. */
|
|
9
|
+
legacyStayList?: boolean;
|
|
8
10
|
}
|
|
9
11
|
/**
|
|
10
12
|
* Travel listings card — summary + property rows from yantra-resortifi connector results.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageTravel.d.ts","sourceRoot":"","sources":["../../../src/components/MessageWidgets/MessageTravel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageTravel.d.ts","sourceRoot":"","sources":["../../../src/components/MessageWidgets/MessageTravel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAM/B,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IACtC,sEAAsE;IACtE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAuBD;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,mBAAmB,sBAyIvD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from'react';import {FiMapPin}from'@react-icons/all-files/fi/FiMapPin.js';import {FiStar}from'@react-icons/all-files/fi/FiStar.js';import {FiChevronRight}from'@react-icons/all-files/fi/FiChevronRight.js';import {MessageFlights}from'./MessageFlights.js';import {isFlightAttachment}from'@admin-layout/client';const LIST_PREVIEW = 5;
|
|
1
|
+
import React from'react';import {FiMapPin}from'@react-icons/all-files/fi/FiMapPin.js';import {FiStar}from'@react-icons/all-files/fi/FiStar.js';import {FiChevronRight}from'@react-icons/all-files/fi/FiChevronRight.js';import {MessageFlights}from'./MessageFlights.js';import {MessageResults,travelVertical}from'./MessageResults.js';import {isFlightAttachment}from'@admin-layout/client';const LIST_PREVIEW = 5;
|
|
2
2
|
const formatPrice = p => p.priceLabel ?? (typeof p.price === 'number' ? `$${Math.round(p.price)}` : undefined);
|
|
3
3
|
const formatSource = source => {
|
|
4
4
|
if (!source) return undefined;
|
|
@@ -19,7 +19,8 @@ const priceRange = a => {
|
|
|
19
19
|
const MessageTravel = props => {
|
|
20
20
|
const {
|
|
21
21
|
message,
|
|
22
|
-
onMessageClick
|
|
22
|
+
onMessageClick,
|
|
23
|
+
legacyStayList = false
|
|
23
24
|
} = props;
|
|
24
25
|
const {
|
|
25
26
|
attachment
|
|
@@ -27,7 +28,8 @@ const MessageTravel = props => {
|
|
|
27
28
|
if (!attachment || !Array.isArray(attachment.properties) || attachment.properties.length === 0) {
|
|
28
29
|
return null;
|
|
29
30
|
}
|
|
30
|
-
// Flight offers render as their own card row;
|
|
31
|
+
// Flight offers render as their own card row; stays, cars, trains and
|
|
32
|
+
// buses each get theirs from the shared result row.
|
|
31
33
|
if (isFlightAttachment(attachment)) {
|
|
32
34
|
return React.createElement(MessageFlights, {
|
|
33
35
|
message: message,
|
|
@@ -35,6 +37,16 @@ const MessageTravel = props => {
|
|
|
35
37
|
onMessageClick: onMessageClick
|
|
36
38
|
});
|
|
37
39
|
}
|
|
40
|
+
if (!legacyStayList) {
|
|
41
|
+
// Travel rows carry more than the interface names (operator, departTime ...).
|
|
42
|
+
const rows = attachment;
|
|
43
|
+
return React.createElement(MessageResults, {
|
|
44
|
+
message: message,
|
|
45
|
+
vertical: travelVertical(rows),
|
|
46
|
+
attachment: rows,
|
|
47
|
+
onMessageClick: onMessageClick
|
|
48
|
+
});
|
|
49
|
+
}
|
|
38
50
|
const properties = attachment.properties;
|
|
39
51
|
const count = attachment.totalCount ?? properties.length;
|
|
40
52
|
const city = attachment.city || properties.find(p => p.city)?.city;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageTravel.js","sources":["../../../src/components/MessageWidgets/MessageTravel.tsx"],"sourcesContent":[null],"names":[],"mappings":"+
|
|
1
|
+
{"version":3,"file":"MessageTravel.js","sources":["../../../src/components/MessageWidgets/MessageTravel.tsx"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { CarCardView, GroundCardView, JobCardView, MovieCardView, ProductCardView, ResumeCardView, StayCardView } from '@admin-layout/client';
|
|
3
|
+
export interface IResultCardProps<T> {
|
|
4
|
+
card: T;
|
|
5
|
+
onOpen?: () => void;
|
|
6
|
+
fullWidth?: boolean;
|
|
7
|
+
highlighted?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const StayCard: ({ card, onOpen, fullWidth, highlighted }: IResultCardProps<StayCardView>) => React.JSX.Element;
|
|
10
|
+
export declare const CarCard: ({ card, onOpen, fullWidth, highlighted }: IResultCardProps<CarCardView>) => React.JSX.Element;
|
|
11
|
+
export declare const GroundCard: ({ card, onOpen, fullWidth, highlighted }: IResultCardProps<GroundCardView>) => React.JSX.Element;
|
|
12
|
+
export declare const ProductCard: ({ card, onOpen, fullWidth, highlighted }: IResultCardProps<ProductCardView>) => React.JSX.Element;
|
|
13
|
+
export declare const MovieCard: ({ card, onOpen, fullWidth, highlighted }: IResultCardProps<MovieCardView>) => React.JSX.Element;
|
|
14
|
+
export declare const JobCard: ({ card, onOpen, fullWidth, highlighted }: IResultCardProps<JobCardView>) => React.JSX.Element;
|
|
15
|
+
export declare const ResumeCard: ({ card, onOpen }: {
|
|
16
|
+
card: ResumeCardView;
|
|
17
|
+
onOpen?: () => void;
|
|
18
|
+
}) => React.JSX.Element;
|
|
19
|
+
//# sourceMappingURL=ResultCards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResultCards.d.ts","sourceRoot":"","sources":["../../../src/components/MessageWidgets/ResultCards.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,KAAK,EACR,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACf,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,gBAAgB,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAiED,eAAO,MAAM,QAAQ,GAAI,0CAA0C,gBAAgB,CAAC,YAAY,CAAC,sBAuDhG,CAAC;AAIF,eAAO,MAAM,OAAO,GAAI,0CAA0C,gBAAgB,CAAC,WAAW,CAAC,sBAmE9F,CAAC;AAIF,eAAO,MAAM,UAAU,GAAI,0CAA0C,gBAAgB,CAAC,cAAc,CAAC,sBAgGpG,CAAC;AAIF,eAAO,MAAM,WAAW,GAAI,0CAA0C,gBAAgB,CAAC,eAAe,CAAC,sBAuDtG,CAAC;AAIF,eAAO,MAAM,SAAS,GAAI,0CAA0C,gBAAgB,CAAC,aAAa,CAAC,sBAyFlG,CAAC;AAkBF,eAAO,MAAM,OAAO,GAAI,0CAA0C,gBAAgB,CAAC,WAAW,CAAC,sBAyD9F,CAAC;AAMF,eAAO,MAAM,UAAU,GAAI,kBAAkB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,sBA4FzF,CAAC"}
|