feat(smart-app): implement complete mobile app MVP

- App.tsx: full navigation (Auth stack + Main tabs with 5 screens)
- Auth: LoginScreen, RegisterScreen, ForgotPasswordScreen
- HomeScreen: dashboard with IoT metrics, weather widget, alerts, quick actions, sensors
- MapScreen: interactive map with layer toggles (6 layers)
- MarketplaceScreen: categories (6), products (5), search
- ChatScreen: AI chat with quick prompts (4), bot responses
- ProfileScreen: user info, stats, menu (9 items), logout
- AlertsScreen: alert list with severity, acknowledge
- SensorsScreen: sensor list with type filters (6 types), search
- ZonesScreen: zone cards with stats
- SettingsScreen: language picker (FR/EN/ES/DE), privacy, about
- Stores: iotStore (sensors, zones, alerts), notificationStore, uiStore + i18n
- Hooks: useSensors, useAlerts, useNotifications, useLocation
- Components: Card, Button, LoadingSpinner, ErrorBoundary, Header
- Services: iotService, notificationService (with axios API client)
- Utils: formatters (temp, AQI, noise, dates), validators (email, password, IBAN)
- Theme: colors.ts with full design system (Blue Ocean palette)
- Ditto: fixed MongoDB connection, new JWT secrets, official gateway image
This commit is contained in:
Eric FELIXINE
2026-06-01 18:00:35 -04:00
parent 08ca495bde
commit e30ae8ed09
35578 changed files with 3703534 additions and 43 deletions

View File

@@ -0,0 +1,181 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.SegmentedButton = void 0;
var React = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
var _color = _interopRequireDefault(require("color"));
var _utils = require("./utils");
var _theming = require("../../core/theming");
var _Icon = _interopRequireDefault(require("../Icon"));
var _TouchableRipple = _interopRequireDefault(require("../TouchableRipple/TouchableRipple"));
var _Text = _interopRequireDefault(require("../Typography/Text"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
const SegmentedButtonItem = ({
checked,
accessibilityLabel,
disabled,
style,
labelStyle,
showSelectedCheck,
checkedColor,
uncheckedColor,
rippleColor: customRippleColor,
background,
icon,
testID,
label,
onPress,
segment,
density = 'regular',
theme: themeOverrides,
labelMaxFontSizeMultiplier,
hitSlop
}) => {
const theme = (0, _theming.useInternalTheme)(themeOverrides);
const checkScale = React.useRef(new _reactNative.Animated.Value(0)).current;
React.useEffect(() => {
if (!showSelectedCheck) {
return;
}
if (checked) {
_reactNative.Animated.spring(checkScale, {
toValue: 1,
useNativeDriver: true
}).start();
} else {
_reactNative.Animated.spring(checkScale, {
toValue: 0,
useNativeDriver: true
}).start();
}
}, [checked, checkScale, showSelectedCheck]);
const {
roundness,
isV3
} = theme;
const {
borderColor,
textColor,
borderWidth,
backgroundColor
} = (0, _utils.getSegmentedButtonColors)({
checked,
theme,
disabled,
checkedColor,
uncheckedColor
});
const borderRadius = (isV3 ? 5 : 1) * roundness;
const segmentBorderRadius = (0, _utils.getSegmentedButtonBorderRadius)({
theme,
segment
});
const rippleColor = customRippleColor || (0, _color.default)(textColor).alpha(0.12).rgb().string();
const showIcon = !icon ? false : label && checked ? !showSelectedCheck : true;
const showCheckedIcon = checked && showSelectedCheck;
const iconSize = isV3 ? 18 : 16;
const iconStyle = {
marginRight: label ? 5 : showCheckedIcon ? 3 : 0,
...(label && {
transform: [{
scale: checkScale.interpolate({
inputRange: [0, 1],
outputRange: [1, 0]
})
}]
})
};
const buttonStyle = {
backgroundColor,
borderColor,
borderWidth,
borderRadius,
...segmentBorderRadius
};
const paddingVertical = (0, _utils.getSegmentedButtonDensityPadding)({
density
});
const rippleStyle = {
borderRadius,
...segmentBorderRadius
};
const labelTextStyle = {
...(!isV3 ? {
textTransform: 'uppercase',
fontWeight: '500'
} : theme.fonts.labelLarge),
color: textColor
};
return /*#__PURE__*/React.createElement(_reactNative.View, {
style: [buttonStyle, styles.button, style]
}, /*#__PURE__*/React.createElement(_TouchableRipple.default, {
borderless: true,
onPress: onPress,
accessibilityLabel: accessibilityLabel,
accessibilityState: {
disabled,
checked
},
accessibilityRole: "button",
disabled: disabled,
rippleColor: rippleColor,
testID: testID,
style: rippleStyle,
background: background,
theme: theme,
hitSlop: hitSlop
}, /*#__PURE__*/React.createElement(_reactNative.View, {
style: [styles.content, {
paddingVertical
}]
}, showCheckedIcon ? /*#__PURE__*/React.createElement(_reactNative.Animated.View, {
testID: `${testID}-check-icon`,
style: [iconStyle, {
transform: [{
scale: checkScale
}]
}]
}, /*#__PURE__*/React.createElement(_Icon.default, {
source: 'check',
size: iconSize,
color: textColor
})) : null, showIcon ? /*#__PURE__*/React.createElement(_reactNative.Animated.View, {
testID: `${testID}-icon`,
style: iconStyle
}, /*#__PURE__*/React.createElement(_Icon.default, {
source: icon,
size: iconSize,
color: textColor
})) : null, /*#__PURE__*/React.createElement(_Text.default, {
variant: "labelLarge",
style: [styles.label, labelTextStyle, labelStyle],
selectable: false,
numberOfLines: 1,
maxFontSizeMultiplier: labelMaxFontSizeMultiplier,
testID: `${testID}-label`
}, label))));
};
exports.SegmentedButton = SegmentedButtonItem;
const styles = _reactNative.StyleSheet.create({
button: {
flex: 1,
minWidth: 76,
borderStyle: 'solid'
},
label: {
textAlign: 'center'
},
content: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
paddingVertical: 9,
paddingHorizontal: 16
}
});
var _default = exports.default = SegmentedButtonItem;
//# sourceMappingURL=SegmentedButtonItem.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,105 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.SegmentedButtons = void 0;
var React = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
var _SegmentedButtonItem = _interopRequireDefault(require("./SegmentedButtonItem"));
var _utils = require("./utils");
var _theming = require("../../core/theming");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
/**
* Segmented buttons can be used to select options, switch views or sort elements.</br>
*
* ## Usage
* ```js
* import * as React from 'react';
* import { SafeAreaView, StyleSheet } from 'react-native';
* import { SegmentedButtons } from 'react-native-paper';
*
* const MyComponent = () => {
* const [value, setValue] = React.useState('');
*
* return (
* <SafeAreaView style={styles.container}>
* <SegmentedButtons
* value={value}
* onValueChange={setValue}
* buttons={[
* {
* value: 'walk',
* label: 'Walking',
* },
* {
* value: 'train',
* label: 'Transit',
* },
* { value: 'drive', label: 'Driving' },
* ]}
* />
* </SafeAreaView>
* );
* };
*
* const styles = StyleSheet.create({
* container: {
* flex: 1,
* alignItems: 'center',
* },
* });
*
* export default MyComponent;
*```
*/
const SegmentedButtons = ({
value,
onValueChange,
buttons,
multiSelect,
density,
style,
theme: themeOverrides
}) => {
const theme = (0, _theming.useInternalTheme)(themeOverrides);
return /*#__PURE__*/React.createElement(_reactNative.View, {
style: [styles.row, style]
}, buttons.map((item, i) => {
const disabledChildStyle = (0, _utils.getDisabledSegmentedButtonStyle)({
theme,
buttons,
index: i
});
const segment = i === 0 ? 'first' : i === buttons.length - 1 ? 'last' : undefined;
const checked = multiSelect && Array.isArray(value) ? value.includes(item.value) : value === item.value;
const onPress = e => {
var _item$onPress;
(_item$onPress = item.onPress) === null || _item$onPress === void 0 || _item$onPress.call(item, e);
const nextValue = multiSelect && Array.isArray(value) ? checked ? value.filter(val => item.value !== val) : [...value, item.value] : item.value;
// @ts-expect-error: TS doesn't preserve types after destructuring, so the type isn't inferred correctly
onValueChange(nextValue);
};
return /*#__PURE__*/React.createElement(_SegmentedButtonItem.default, _extends({}, item, {
key: i,
checked: checked,
segment: segment,
density: density,
onPress: onPress,
style: [item.style, disabledChildStyle],
labelStyle: item.labelStyle,
theme: theme
}));
}));
};
exports.SegmentedButtons = SegmentedButtons;
const styles = _reactNative.StyleSheet.create({
row: {
flexDirection: 'row'
}
});
var _default = exports.default = SegmentedButtons; // @component-docs ignore-next-line
//# sourceMappingURL=SegmentedButtons.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["React","_interopRequireWildcard","require","_reactNative","_SegmentedButtonItem","_interopRequireDefault","_utils","_theming","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","SegmentedButtons","value","onValueChange","buttons","multiSelect","density","style","theme","themeOverrides","useInternalTheme","createElement","View","styles","row","map","item","disabledChildStyle","getDisabledSegmentedButtonStyle","index","segment","undefined","checked","Array","isArray","includes","onPress","_item$onPress","nextValue","filter","val","key","labelStyle","exports","StyleSheet","create","flexDirection","_default"],"sourceRoot":"../../../../src","sources":["components/SegmentedButtons/SegmentedButtons.tsx"],"mappings":"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","ignoreList":[]}

View File

@@ -0,0 +1,167 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getSegmentedButtonDensityPadding = exports.getSegmentedButtonColors = exports.getSegmentedButtonBorderRadius = exports.getDisabledSegmentedButtonStyle = void 0;
var _reactNative = require("react-native");
var _color = _interopRequireDefault(require("color"));
var _colors = require("../../styles/themes/v2/colors");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const DEFAULT_PADDING = 9;
const getSegmentedButtonDensityPadding = ({
density
}) => {
let padding = DEFAULT_PADDING;
switch (density) {
case 'small':
return padding - 2;
case 'medium':
return padding - 4;
case 'high':
return padding - 8;
default:
return padding;
}
};
exports.getSegmentedButtonDensityPadding = getSegmentedButtonDensityPadding;
const getDisabledSegmentedButtonStyle = ({
theme,
index,
buttons
}) => {
var _buttons$index, _buttons;
const width = getSegmentedButtonBorderWidth({
theme
});
const isDisabled = (_buttons$index = buttons[index]) === null || _buttons$index === void 0 ? void 0 : _buttons$index.disabled;
const isNextDisabled = (_buttons = buttons[index + 1]) === null || _buttons === void 0 ? void 0 : _buttons.disabled;
if (!isDisabled && isNextDisabled) {
return {
borderRightWidth: width
};
}
return {};
};
exports.getDisabledSegmentedButtonStyle = getDisabledSegmentedButtonStyle;
const getSegmentedButtonBorderRadius = ({
segment,
theme
}) => {
if (segment === 'first') {
return {
borderTopRightRadius: 0,
borderBottomRightRadius: 0,
...(theme.isV3 && {
borderEndWidth: 0
})
};
} else if (segment === 'last') {
return {
borderTopLeftRadius: 0,
borderBottomLeftRadius: 0
};
} else {
return {
borderRadius: 0,
...(theme.isV3 && {
borderEndWidth: 0
})
};
}
};
exports.getSegmentedButtonBorderRadius = getSegmentedButtonBorderRadius;
const getSegmentedButtonBackgroundColor = ({
checked,
theme
}) => {
if (checked) {
if (theme.isV3) {
return theme.colors.secondaryContainer;
} else {
return (0, _color.default)(theme.colors.primary).alpha(0.12).rgb().string();
}
}
return 'transparent';
};
const getSegmentedButtonBorderColor = ({
theme,
disabled,
checked
}) => {
if (theme.isV3) {
if (disabled) {
return theme.colors.surfaceDisabled;
}
return theme.colors.outline;
}
if (checked) {
return theme.colors.primary;
}
return (0, _color.default)(theme.dark ? _colors.white : _colors.black).alpha(0.29).rgb().string();
};
const getSegmentedButtonBorderWidth = ({
theme
}) => {
if (theme.isV3) {
return 1;
}
return _reactNative.StyleSheet.hairlineWidth;
};
const getSegmentedButtonTextColor = ({
theme,
disabled,
checked,
checkedColor,
uncheckedColor
}) => {
if (theme.isV3) {
if (disabled) {
return theme.colors.onSurfaceDisabled;
}
if (checked) {
return checkedColor ?? theme.colors.onSecondaryContainer;
}
return uncheckedColor ?? theme.colors.onSurface;
}
if (disabled) {
return theme.colors.disabled;
}
// Primary color is used for checked state too.
return theme.colors.primary;
};
const getSegmentedButtonColors = ({
theme,
disabled,
checked,
checkedColor,
uncheckedColor
}) => {
const backgroundColor = getSegmentedButtonBackgroundColor({
theme,
checked
});
const borderColor = getSegmentedButtonBorderColor({
theme,
disabled,
checked
});
const textColor = getSegmentedButtonTextColor({
theme,
disabled,
checked,
checkedColor,
uncheckedColor
});
const borderWidth = getSegmentedButtonBorderWidth({
theme
});
return {
backgroundColor,
borderColor,
textColor,
borderWidth
};
};
exports.getSegmentedButtonColors = getSegmentedButtonColors;
//# sourceMappingURL=utils.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["_reactNative","require","_color","_interopRequireDefault","_colors","e","__esModule","default","DEFAULT_PADDING","getSegmentedButtonDensityPadding","density","padding","exports","getDisabledSegmentedButtonStyle","theme","index","buttons","_buttons$index","_buttons","width","getSegmentedButtonBorderWidth","isDisabled","disabled","isNextDisabled","borderRightWidth","getSegmentedButtonBorderRadius","segment","borderTopRightRadius","borderBottomRightRadius","isV3","borderEndWidth","borderTopLeftRadius","borderBottomLeftRadius","borderRadius","getSegmentedButtonBackgroundColor","checked","colors","secondaryContainer","color","primary","alpha","rgb","string","getSegmentedButtonBorderColor","surfaceDisabled","outline","dark","white","black","StyleSheet","hairlineWidth","getSegmentedButtonTextColor","checkedColor","uncheckedColor","onSurfaceDisabled","onSecondaryContainer","onSurface","getSegmentedButtonColors","backgroundColor","borderColor","textColor","borderWidth"],"sourceRoot":"../../../../src","sources":["components/SegmentedButtons/utils.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,OAAA,GAAAH,OAAA;AAA6D,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAc7D,MAAMG,eAAe,GAAG,CAAC;AAElB,MAAMC,gCAAgC,GAAGA,CAAC;EAC/CC;AAGF,CAAC,KAAK;EACJ,IAAIC,OAAO,GAAGH,eAAe;EAE7B,QAAQE,OAAO;IACb,KAAK,OAAO;MACV,OAAOC,OAAO,GAAG,CAAC;IACpB,KAAK,QAAQ;MACX,OAAOA,OAAO,GAAG,CAAC;IACpB,KAAK,MAAM;MACT,OAAOA,OAAO,GAAG,CAAC;IACpB;MACE,OAAOA,OAAO;EAClB;AACF,CAAC;AAACC,OAAA,CAAAH,gCAAA,GAAAA,gCAAA;AAEK,MAAMI,+BAA+B,GAAGA,CAAC;EAC9CC,KAAK;EACLC,KAAK;EACLC;AAKF,CAAC,KAAgB;EAAA,IAAAC,cAAA,EAAAC,QAAA;EACf,MAAMC,KAAK,GAAGC,6BAA6B,CAAC;IAAEN;EAAM,CAAC,CAAC;EACtD,MAAMO,UAAU,IAAAJ,cAAA,GAAGD,OAAO,CAACD,KAAK,CAAC,cAAAE,cAAA,uBAAdA,cAAA,CAAgBK,QAAQ;EAC3C,MAAMC,cAAc,IAAAL,QAAA,GAAGF,OAAO,CAACD,KAAK,GAAG,CAAC,CAAC,cAAAG,QAAA,uBAAlBA,QAAA,CAAoBI,QAAQ;EAEnD,IAAI,CAACD,UAAU,IAAIE,cAAc,EAAE;IACjC,OAAO;MACLC,gBAAgB,EAAEL;IACpB,CAAC;EACH;EACA,OAAO,CAAC,CAAC;AACX,CAAC;AAACP,OAAA,CAAAC,+BAAA,GAAAA,+BAAA;AAEK,MAAMY,8BAA8B,GAAGA,CAAC;EAC7CC,OAAO;EACPZ;AAIF,CAAC,KAAgB;EACf,IAAIY,OAAO,KAAK,OAAO,EAAE;IACvB,OAAO;MACLC,oBAAoB,EAAE,CAAC;MACvBC,uBAAuB,EAAE,CAAC;MAC1B,IAAId,KAAK,CAACe,IAAI,IAAI;QAAEC,cAAc,EAAE;MAAE,CAAC;IACzC,CAAC;EACH,CAAC,MAAM,IAAIJ,OAAO,KAAK,MAAM,EAAE;IAC7B,OAAO;MACLK,mBAAmB,EAAE,CAAC;MACtBC,sBAAsB,EAAE;IAC1B,CAAC;EACH,CAAC,MAAM;IACL,OAAO;MACLC,YAAY,EAAE,CAAC;MACf,IAAInB,KAAK,CAACe,IAAI,IAAI;QAAEC,cAAc,EAAE;MAAE,CAAC;IACzC,CAAC;EACH;AACF,CAAC;AAAClB,OAAA,CAAAa,8BAAA,GAAAA,8BAAA;AAEF,MAAMS,iCAAiC,GAAGA,CAAC;EAAEC,OAAO;EAAErB;AAAiB,CAAC,KAAK;EAC3E,IAAIqB,OAAO,EAAE;IACX,IAAIrB,KAAK,CAACe,IAAI,EAAE;MACd,OAAOf,KAAK,CAACsB,MAAM,CAACC,kBAAkB;IACxC,CAAC,MAAM;MACL,OAAO,IAAAC,cAAK,EAACxB,KAAK,CAACsB,MAAM,CAACG,OAAO,CAAC,CAACC,KAAK,CAAC,IAAI,CAAC,CAACC,GAAG,CAAC,CAAC,CAACC,MAAM,CAAC,CAAC;IAC/D;EACF;EACA,OAAO,aAAa;AACtB,CAAC;AAED,MAAMC,6BAA6B,GAAGA,CAAC;EACrC7B,KAAK;EACLQ,QAAQ;EACRa;AACS,CAAC,KAAK;EACf,IAAIrB,KAAK,CAACe,IAAI,EAAE;IACd,IAAIP,QAAQ,EAAE;MACZ,OAAOR,KAAK,CAACsB,MAAM,CAACQ,eAAe;IACrC;IACA,OAAO9B,KAAK,CAACsB,MAAM,CAACS,OAAO;EAC7B;EACA,IAAIV,OAAO,EAAE;IACX,OAAOrB,KAAK,CAACsB,MAAM,CAACG,OAAO;EAC7B;EAEA,OAAO,IAAAD,cAAK,EAACxB,KAAK,CAACgC,IAAI,GAAGC,aAAK,GAAGC,aAAK,CAAC,CACrCR,KAAK,CAAC,IAAI,CAAC,CACXC,GAAG,CAAC,CAAC,CACLC,MAAM,CAAC,CAAC;AACb,CAAC;AAED,MAAMtB,6BAA6B,GAAGA,CAAC;EACrCN;AACuC,CAAC,KAAK;EAC7C,IAAIA,KAAK,CAACe,IAAI,EAAE;IACd,OAAO,CAAC;EACV;EAEA,OAAOoB,uBAAU,CAACC,aAAa;AACjC,CAAC;AAED,MAAMC,2BAA2B,GAAGA,CAAC;EACnCrC,KAAK;EACLQ,QAAQ;EACRa,OAAO;EACPiB,YAAY;EACZC;AACoB,CAAC,KAAK;EAC1B,IAAIvC,KAAK,CAACe,IAAI,EAAE;IACd,IAAIP,QAAQ,EAAE;MACZ,OAAOR,KAAK,CAACsB,MAAM,CAACkB,iBAAiB;IACvC;IACA,IAAInB,OAAO,EAAE;MACX,OAAOiB,YAAY,IAAItC,KAAK,CAACsB,MAAM,CAACmB,oBAAoB;IAC1D;IACA,OAAOF,cAAc,IAAIvC,KAAK,CAACsB,MAAM,CAACoB,SAAS;EACjD;EAEA,IAAIlC,QAAQ,EAAE;IACZ,OAAOR,KAAK,CAACsB,MAAM,CAACd,QAAQ;EAC9B;EACA;EACA,OAAOR,KAAK,CAACsB,MAAM,CAACG,OAAO;AAC7B,CAAC;AAEM,MAAMkB,wBAAwB,GAAGA,CAAC;EACvC3C,KAAK;EACLQ,QAAQ;EACRa,OAAO;EACPiB,YAAY;EACZC;AACoB,CAAC,KAAK;EAC1B,MAAMK,eAAe,GAAGxB,iCAAiC,CAAC;IACxDpB,KAAK;IACLqB;EACF,CAAC,CAAC;EACF,MAAMwB,WAAW,GAAGhB,6BAA6B,CAAC;IAChD7B,KAAK;IACLQ,QAAQ;IACRa;EACF,CAAC,CAAC;EACF,MAAMyB,SAAS,GAAGT,2BAA2B,CAAC;IAC5CrC,KAAK;IACLQ,QAAQ;IACRa,OAAO;IACPiB,YAAY;IACZC;EACF,CAAC,CAAC;EACF,MAAMQ,WAAW,GAAGzC,6BAA6B,CAAC;IAAEN;EAAM,CAAC,CAAC;EAE5D,OAAO;IAAE4C,eAAe;IAAEC,WAAW;IAAEC,SAAS;IAAEC;EAAY,CAAC;AACjE,CAAC;AAACjD,OAAA,CAAA6C,wBAAA,GAAAA,wBAAA","ignoreList":[]}